<?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>25294</bug_id>
          
          <creation_ts>2009-04-20 07:42:57 -0700</creation_ts>
          <short_desc>All WebKit/win classes should return COMPtrs from their static constructor members</short_desc>
          <delta_ts>2010-06-10 19:31:45 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adachan</cc>
    
    <cc>sfalken</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>118104</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-04-20 07:42:57 -0700</bug_when>
    <thetext>All classes in WebKit/win should return COMPtrs from their static constructor members (e.g., createInstance()). This will help prevent memory leaks/crashes caused by incorrect ref-count management.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118105</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-04-20 07:43:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/6803127&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118113</commentid>
    <comment_count>2</comment_count>
      <attachid>29616</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-04-20 08:05:57 -0700</bug_when>
    <thetext>Created attachment 29616
patch for MemoryStream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118125</commentid>
    <comment_count>3</comment_count>
      <attachid>29616</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-20 09:19:39 -0700</bug_when>
    <thetext>Comment on attachment 29616
patch for MemoryStream

&gt;  HRESULT STDMETHODCALLTYPE MemoryStream::Clone( 
&gt;      /* [out] */ IStream** ppstm)
&gt;  {
&gt; -    *ppstm = MemoryStream::createInstance(m_buffer);
&gt; +    *ppstm = MemoryStream::createInstance(m_buffer).releaseRef();
&gt; +    // FIXME: MSDN says we should be returning STG_E_INSUFFICIENT_MEMORY instead of E_OUTOFMEMORY here.
&gt;      return (*ppstm) ? S_OK : E_OUTOFMEMORY;

Why not copyRefTo here?

&gt; -    COMPtr&lt;IStream&gt; stream(AdoptCOM, MemoryStream::createInstance(buffer.release()));
&gt; +    COMPtr&lt;MemoryStream&gt; stream = MemoryStream::createInstance(buffer.release());
&gt;      m_view-&gt;didReceiveData(stream.get());

Would this read better without the local variable?

&gt; -    COMPtr&lt;MemoryStream&gt; result(AdoptCOM, MemoryStream::createInstance(SharedBuffer::wrapCFData(historyData.get())));
&gt; +    COMPtr&lt;MemoryStream&gt; result = MemoryStream::createInstance(SharedBuffer::wrapCFData(historyData.get()));
&gt;      return result.copyRefTo(stream);

Would this read better without the local variable?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118126</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-04-20 09:23:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 29616 [review])
&gt; &gt;  HRESULT STDMETHODCALLTYPE MemoryStream::Clone( 
&gt; &gt;      /* [out] */ IStream** ppstm)
&gt; &gt;  {
&gt; &gt; -    *ppstm = MemoryStream::createInstance(m_buffer);
&gt; &gt; +    *ppstm = MemoryStream::createInstance(m_buffer).releaseRef();
&gt; &gt; +    // FIXME: MSDN says we should be returning STG_E_INSUFFICIENT_MEMORY instead of E_OUTOFMEMORY here.
&gt; &gt;      return (*ppstm) ? S_OK : E_OUTOFMEMORY;
&gt; 
&gt; Why not copyRefTo here?

I originally thought that copyRefTo&apos;s behavior was incompatible with the existing behavior of this function. But now I see that it isn&apos;t. I will change to use copyRefTo.

&gt; &gt; -    COMPtr&lt;IStream&gt; stream(AdoptCOM, MemoryStream::createInstance(buffer.release()));
&gt; &gt; +    COMPtr&lt;MemoryStream&gt; stream = MemoryStream::createInstance(buffer.release());
&gt; &gt;      m_view-&gt;didReceiveData(stream.get());
&gt; 
&gt; Would this read better without the local variable?

Probably. I&apos;ll remove the variable.

&gt; &gt; -    COMPtr&lt;MemoryStream&gt; result(AdoptCOM, MemoryStream::createInstance(SharedBuffer::wrapCFData(historyData.get())));
&gt; &gt; +    COMPtr&lt;MemoryStream&gt; result = MemoryStream::createInstance(SharedBuffer::wrapCFData(historyData.get()));
&gt; &gt;      return result.copyRefTo(stream);
&gt; 
&gt; Would this read better without the local variable?

Maybe. I&apos;ll remove the variable and see how it looks.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118217</commentid>
    <comment_count>5</comment_count>
      <attachid>29616</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-04-20 20:43:09 -0700</bug_when>
    <thetext>Comment on attachment 29616
patch for MemoryStream

Landed as r42692</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160856</commentid>
    <comment_count>6</comment_count>
      <attachid>42574</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-11-05 10:09:46 -0800</bug_when>
    <thetext>Created attachment 42574
Make CFDictionaryPropertyBag::createInstance return a COMPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160860</commentid>
    <comment_count>7</comment_count>
      <attachid>42574</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-11-05 10:17:48 -0800</bug_when>
    <thetext>Comment on attachment 42574
Make CFDictionaryPropertyBag::createInstance return a COMPtr

Landed as r50567 &lt;http://trac.webkit.org/changeset/50567&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29616</attachid>
            <date>2009-04-20 08:05:57 -0700</date>
            <delta_ts>2010-06-10 19:31:45 -0700</delta_ts>
            <desc>patch for MemoryStream</desc>
            <filename>0001--Change-MemoryStream-createInstance-to-retur.patch</filename>
            <type>text/plain</type>
            <size>8228</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBkOTEzMjA4ZThjMmYyN2UxOWQ0ZWM1MDU5ODQ2ZWE2NmI0ZmQ4OTEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBN
b24sIDIwIEFwciAyMDA5IDExOjA1OjI4IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gICAgICAgICBD
aGFuZ2UgTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSB0byByZXR1cm4gYSBDT01QdHIKCiAg
ICAgICAgUGFydCBvZiBCdWcgMjUyOTQ6IEFsbCBXZWJLaXQvd2luIGNsYXNzZXMgc2hvdWxkIHJl
dHVybiBDT01QdHJzIGZyb20KICAgICAgICB0aGVpciBzdGF0aWMgY29uc3RydWN0b3IgbWVtYmVy
cwogICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUyOTQ+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICAqIE1lbW9yeVN0
cmVhbS5jcHA6CiAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOiBDaGFuZ2Vk
IHRvIHJldHVybiBhIENPTVB0ci4KICAgICAgICAoTWVtb3J5U3RyZWFtOjpDbG9uZSk6IFVwZGF0
ZWQgZm9yIGNyZWF0ZUluc3RhbmNlIGNoYW5nZS4KICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOiBD
aGFuZ2VkIGNyZWF0ZUluc3RhbmNlIHRvIHJldHVybiBhIENPTVB0ci4KCiAgICAgICAgKiBXZWJB
cmNoaXZlLmNwcDoKICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CiAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHA6CiAgICAgICAgKEVtYmVkZGVkV2lkZ2V0OjpkaWRS
ZWNlaXZlRGF0YSk6CiAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKICAgICAgICAoV2ViRGF0
YVNvdXJjZTo6ZGF0YSk6CiAgICAgICAgKiBXZWJIaXN0b3J5LmNwcDoKICAgICAgICAoV2ViSGlz
dG9yeTo6ZGF0YSk6CiAgICAgICAgKiBXZWJJY29uRmV0Y2hlci5jcHA6CiAgICAgICAgKFdlYklj
b25GZXRjaGVyQ2xpZW50OjpmaW5pc2hlZEZldGNoaW5nSWNvbik6CiAgICAgICAgKiBXZWJSZXNv
dXJjZS5jcHA6CiAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CiAgICAgICAg
VXBkYXRlZCBmb3IgY2hhbmdlcyB0byBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlLgotLS0K
IFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArKysr
KysrKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L3dpbi9NZW1vcnlTdHJlYW0uY3BwICAgICAg
ICAgICAgICAgICAgfCAgICA5ICsrKy0tLS0KIFdlYktpdC93aW4vTWVtb3J5U3RyZWFtLmggICAg
ICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcCAgICAg
ICAgICAgICAgICAgICAgfCAgICA0ICstLQogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJl
ZGRlZFdpZGdldC5jcHAgfCAgICAyICstCiBXZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwICAg
ICAgICAgICAgICAgICB8ICAgIDMgKy0KIFdlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMiArLQogV2ViS2l0L3dpbi9XZWJJY29uRmV0Y2hlci5jcHAgICAg
ICAgICAgICAgICAgfCAgICAyICstCiBXZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcCAgICAgICAg
ICAgICAgICAgICB8ICAgIDMgKy0KIDkgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwg
MTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCA4MGFhZTI5Li40OWZiZThlIDEwMDY0NAotLS0gYS9XZWJL
aXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0
IEBACiAyMDA5LTA0LTIwICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAorICAgICAg
ICBDaGFuZ2UgTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSB0byByZXR1cm4gYSBDT01QdHIK
KworICAgICAgICBQYXJ0IG9mIEJ1ZyAyNTI5NDogQWxsIFdlYktpdC93aW4gY2xhc3NlcyBzaG91
bGQgcmV0dXJuIENPTVB0cnMgZnJvbQorICAgICAgICB0aGVpciBzdGF0aWMgY29uc3RydWN0b3Ig
bWVtYmVycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1Mjk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFu
Y2UpOiBDaGFuZ2VkIHRvIHJldHVybiBhIENPTVB0ci4KKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6
Q2xvbmUpOiBVcGRhdGVkIGZvciBjcmVhdGVJbnN0YW5jZSBjaGFuZ2UuCisgICAgICAgICogTWVt
b3J5U3RyZWFtLmg6IENoYW5nZWQgY3JlYXRlSW5zdGFuY2UgdG8gcmV0dXJuIGEgQ09NUHRyLgor
CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHA6CisgICAgICAgIChF
bWJlZGRlZFdpZGdldDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViSGlzdG9y
eS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5OjpkYXRhKToKKyAgICAgICAgKiBXZWJJY29uRmV0
Y2hlci5jcHA6CisgICAgICAgIChXZWJJY29uRmV0Y2hlckNsaWVudDo6ZmluaXNoZWRGZXRjaGlu
Z0ljb24pOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNl
OjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgIFVwZGF0ZWQgZm9yIGNoYW5nZXMgdG8gTWVtb3J5
U3RyZWFtOjpjcmVhdGVJbnN0YW5jZS4KKworMjAwOS0wNC0yMCAgQWRhbSBSb2JlbiAgPGFyb2Jl
bkBhcHBsZS5jb20+CisKICAgICAgICAgRml4IEJ1ZyAyNTI5NTogUmVtb3ZlIFdlYktpdC93aW4g
Y29kZSB0aGF0IHdhcyB1c2VkIGZvciBEcm9zZXJhCiAgICAgICAgIHN1cHBvcnQKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvV2ViS2l0L3dpbi9NZW1vcnlTdHJl
YW0uY3BwCmluZGV4IGFjOTVlMGYuLmE0ZDVjMzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vTWVt
b3J5U3RyZWFtLmNwcAorKysgYi9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTQ3LDEx
ICs0Nyw5IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNv
dW50LnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLU1lbW9yeVN0cmVhbSogTWVtb3J5U3Ry
ZWFtOjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQorQ09N
UHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQogewotICAgIE1lbW9yeVN0cmVhbSogaW5zdGFuY2UgPSBu
ZXcgTWVtb3J5U3RyZWFtKGJ1ZmZlcik7Ci0gICAgaW5zdGFuY2UtPkFkZFJlZigpOwotICAgIHJl
dHVybiBpbnN0YW5jZTsKKyAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShidWZmZXIpOwogfQog
CiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yNTUsNiArMjUzLDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBNZW1vcnlTdHJlYW06OlN0YXQoCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIE1lbW9yeVN0cmVhbTo6Q2xvbmUoIAogICAgIC8qIFtvdXRdICovIElTdHJlYW0qKiBwcHN0
bSkKIHsKLSAgICAqcHBzdG0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fYnVmZmVy
KTsKKyAgICAqcHBzdG0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fYnVmZmVyKS5y
ZWxlYXNlUmVmKCk7CisgICAgLy8gRklYTUU6IE1TRE4gc2F5cyB3ZSBzaG91bGQgYmUgcmV0dXJu
aW5nIFNUR19FX0lOU1VGRklDSUVOVF9NRU1PUlkgaW5zdGVhZCBvZiBFX09VVE9GTUVNT1JZIGhl
cmUuCiAgICAgcmV0dXJuICgqcHBzdG0pID8gU19PSyA6IEVfT1VUT0ZNRU1PUlk7CiB9CmRpZmYg
LS1naXQgYS9XZWJLaXQvd2luL01lbW9yeVN0cmVhbS5oIGIvV2ViS2l0L3dpbi9NZW1vcnlTdHJl
YW0uaAppbmRleCAyMmNhMGY0Li43ZDZlMjllIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL01lbW9y
eVN0cmVhbS5oCisrKyBiL1dlYktpdC93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2luY2x1ZGUgPG9iamlkbC5oPgogCi0jaW5jbHVkZSAiQ09NUHRyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2luY2x1ZGUgPFdURi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8V1RGL1JlZlB0ci5oPgpAQCAt
MzYsNyArMzYsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIDogcHVibGljIElTdHJlYW0KIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgTWVtb3J5U3RyZWFtKiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3Rh
bmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIpOworICAgIHN0YXRp
YyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKTsKIAogcHJvdGVjdGVkOgogICAgIE1lbW9yeVN0cmVhbShQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vV2ViQXJjaGl2ZS5jcHAgYi9XZWJLaXQvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4
IDIxYjg2MGMuLjQyM2YxOTggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQXJjaGl2ZS5jcHAK
KysrIGIvV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTUwLDcgKzE1MCw1IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQXJjaGl2ZTo6ZGF0YSgKIAogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIo
Y2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCi0gICAgKnN0
cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoYnVmZmVyKTsKLQotICAgIHJldHVy
biBTX09LOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKGJ1ZmZlciku
Y29weVJlZlRvKHN0cmVhbSk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L0VtYmVkZGVkV2lkZ2V0LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRk
ZWRXaWRnZXQuY3BwCmluZGV4IDk1MmJjMDMuLmQwMzMwMDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuY3BwCisrKyBiL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBF
bWJlZGRlZFdpZGdldDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsNCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGxlbmd0aCkpOw0KIA0KLSAgICBDT01QdHI8SVN0cmVhbT4gc3RyZWFtKEFkb3B0
Q09NLCBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKGJ1ZmZlci5yZWxlYXNlKCkpKTsNCisg
ICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gc3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0
YW5jZShidWZmZXIucmVsZWFzZSgpKTsNCiAgICAgbV92aWV3LT5kaWRSZWNlaXZlRGF0YShzdHJl
YW0uZ2V0KCkpOw0KIH0NCiANCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwIGIvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCAyNTI3MGNjLi42NDE0YmRh
IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1dlYktpdC93
aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3MSw4ICsxNzEsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OmRhdGEoCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgICpzdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpOwotICAgIHJldHVybiBTX09LOwor
ICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKCAKZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vV2ViSGlzdG9yeS5jcHAgYi9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDFk
N2I0ZTkuLjBjMjJmYWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAKKysr
IGIvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIEhSRVNVTFQg
V2ViSGlzdG9yeTo6ZGF0YShJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghaGlzdG9yeURhdGEp
CiAgICAgICAgIHJldHVybiBTX09LOwogCi0gICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gcmVzdWx0
KEFkb3B0Q09NLCBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFNoYXJlZEJ1ZmZlcjo6d3Jh
cENGRGF0YShoaXN0b3J5RGF0YS5nZXQoKSkpKTsKKyAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBy
ZXN1bHQgPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFNoYXJlZEJ1ZmZlcjo6d3JhcENG
RGF0YShoaXN0b3J5RGF0YS5nZXQoKSkpOwogICAgIHJldHVybiByZXN1bHQuY29weVJlZlRvKHN0
cmVhbSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViSWNvbkZldGNoZXIuY3BwIGIv
V2ViS2l0L3dpbi9XZWJJY29uRmV0Y2hlci5jcHAKaW5kZXggOTlkMWUyNC4uZmJjNDZhZiAxMDA2
NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJJY29uRmV0Y2hlci5jcHAKKysrIGIvV2ViS2l0L3dpbi9X
ZWJJY29uRmV0Y2hlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHsNCiAgICAg
ICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbTsNCiAgICAgICAgIGlmIChpY29u
RGF0YSkNCi0gICAgICAgICAgICBtZW1vcnlTdHJlYW0uYWRvcHRSZWYoTWVtb3J5U3RyZWFtOjpj
cmVhdGVJbnN0YW5jZShpY29uRGF0YSkpOw0KKyAgICAgICAgICAgIG1lbW9yeVN0cmVhbSA9IE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoaWNvbkRhdGEpOw0KIA0KICAgICAgICAgbV9kZWxl
Z2F0ZS0+ZmluaXNoZWRMb2FkaW5nSWNvbihtX2ZldGNoZXIsIG1lbW9yeVN0cmVhbS5nZXQoKSk7
DQogDQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9XZWJLaXQvd2lu
L1dlYlJlc291cmNlLmNwcAppbmRleCAzYzIwODdmLi5kMDJiY2M1IDEwMDY0NAotLS0gYS9XZWJL
aXQvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9XZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcApA
QCAtNTgsOCArNTgsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKIAogV2ViUmVzb3Vy
Y2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7Ci0gICAgQ09NUHRyPElTdHJlYW0+IG1lbW9yeVN0cmVhbTsKLSAgICBtZW1vcnlTdHJlYW0u
YWRvcHRSZWYoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShkYXRhKSk7CisgICAgQ09NUHRy
PE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShkYXRhKTsKIAogICAgIFdlYlJlc291cmNlKiBpbnN0YW5jZSA9IG5ldyBXZWJSZXNvdXJjZSht
ZW1vcnlTdHJlYW0uZ2V0KCksIHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5taW1lVHlwZSgpLCBy
ZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRk
UmVmKCk7Ci0tIAoxLjYuMi4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42574</attachid>
            <date>2009-11-05 10:09:46 -0800</date>
            <delta_ts>2009-11-05 10:17:48 -0800</delta_ts>
            <desc>Make CFDictionaryPropertyBag::createInstance return a COMPtr</desc>
            <filename>bug-25294-20091105131002.patch</filename>
            <type>text/plain</type>
            <size>18275</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIvV2Vi
S2l0L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5kZXggMzI0NTdmMS4uZjRmYjVi
MyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysr
IGIvV2ViS2l0L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKIC8vIENGRGljdGlvbmFyeVByb3BlcnR5QmFnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZygpCi06IG1fcmVmQ291bnQoMSkKKzogbV9yZWZDb3VudCgwKQogewog
ICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50LmFkZCgiQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWciKTsKQEAgLTQ1LDEwICs0NSw5IEBAIENGRGljdGlvbmFyeVByb3BlcnR5QmFn
Ojp+Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKQogICAgIGdDbGFzc05hbWVDb3VudC5yZW1vdmUo
IkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CiB9CiAKLUNGRGljdGlvbmFyeVByb3BlcnR5QmFn
KiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKQorQ09NUHRyPENGRGlj
dGlvbmFyeVByb3BlcnR5QmFnPiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFu
Y2UoKQogewotICAgIENGRGljdGlvbmFyeVByb3BlcnR5QmFnKiBpbnN0YW5jZSA9IG5ldyBDRkRp
Y3Rpb25hcnlQcm9wZXJ0eUJhZygpOwotICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICByZXR1cm4g
bmV3IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOwogfQogCiB2b2lkIENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnOjpzZXREaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuaCBiL1dlYktp
dC93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuaAppbmRleCAyMzc2M2IzLi4zY2FjNDY0IDEw
MDY0NAotLS0gYS9XZWJLaXQvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmgKKysrIGIvV2Vi
S2l0L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDQyICsyMywzNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZ19ICi0jZGVmaW5lIENGRGljdGlvbmFyeVByb3BlcnR5QmFnX0gKKyNpZm5k
ZWYgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWdfaAorI2RlZmluZSBDRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZ19oCiAKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi1j
bGFzcyBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyA6IHB1YmxpYyBJUHJvcGVydHlCYWcKLXsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcqIGNyZWF0ZUluc3RhbmNl
KCk7Ci1wcm90ZWN0ZWQ6Ci0gICAgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKTsKLSAgICB+Q0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWcoKTsKK3R5cGVkZWYgc3RydWN0IF9fQ0ZEaWN0aW9uYXJ5KiBD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmOwogCitjbGFzcyBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyA6
IHB1YmxpYyBJUHJvcGVydHlCYWcgewogcHVibGljOgotICAgIC8vIElVbmtub3duCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlk
LCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBF
IEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVh
c2Uodm9pZCk7CisgICAgc3RhdGljIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gY3Jl
YXRlSW5zdGFuY2UoKTsKIAotICAgIC8vIElQcm9wZXJ0eUJhZwotICAgIHZpcnR1YWwgLyogW2xv
Y2FsXSAqLyBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFJlYWQoIAotICAgICAgICAvKiBbaW5d
ICovIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwKLSAgICAgICAgLyogW291dF1baW5dICovIFZBUklB
TlQgKnBWYXIsCi0gICAgICAgIC8qIFtpbl0gKi8gSUVycm9yTG9nICpwRXJyb3JMb2cpOwotICAg
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV3JpdGUoIAotICAg
ICAgICAvKiBbaW5dICovIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwKLSAgICAgICAgLyogW2luXSAq
LyBWQVJJQU5UICpwVmFyKTsKKyAgICAvLyBJVW5rbm93bgorICAgIHZpcnR1YWwgVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBSZWxlYXNlKCk7CiAKICAgICB2b2lkIHNldERpY3Rpb25hcnkoQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBkaWN0aW9uYXJ5KTsKICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnkoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpOwor
ICAgIH5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCwgdm9pZCoqIHBwdk9iamVjdCk7
CisKKyAgICAvLyBJUHJvcGVydHlCYWcKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUmVhZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQqLCBJRXJyb3JMb2cqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV3JpdGUoTFBDT0xFU1RSIHBz
elByb3BOYW1lLCBWQVJJQU5UKik7CisKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFy
eVJlZj4gbV9kaWN0aW9uYXJ5OwogICAgIFVMT05HIG1fcmVmQ291bnQ7CiB9OwogCi0jZW5kaWYK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisjZW5kaWYgLy8gQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWdfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCA0ZmM4MGVkLi4yOGM0ZTc5IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDA5
LTExLTA1ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIENG
RGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSByZXR1cm4gYSBDT01QdHIKKwor
ICAgICAgICBJIGFsc28gY2xlYW5lZCB1cCBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZydzIGNsYXNz
IGRlY2xhcmF0aW9uIGEgbGl0dGxlCisgICAgICAgIHdoaWxlIEkgd2FzIGF0IGl0LgorCisgICAg
ICAgIFBhcnQgb2YgPGh0dHA6Ly93ZWJraXQub3JnL2IvMjUyOTQ+IDxyZGFyOi8vcHJvYmxlbS82
ODAzMTI3PiBBbGwKKyAgICAgICAgV2ViS2l0L3dpbiBjbGFzc2VzIHNob3VsZCByZXR1cm4gQ09N
UHRycyBmcm9tIHRoZWlyIHN0YXRpYyBjb25zdHJ1Y3RvcgorICAgICAgICBtZW1iZXJzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZy5jcHA6CisgICAgICAgIChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Q0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWcpOiBDaGFuZ2VkIHRvCisgICAgICAgIGluaXRpYWxpemUgbV9y
ZWZDb3VudCB0byAwLiBtX3JlZkNvdW50IGdldHMgaW5jcmVhc2VkIHRvIDEgYnkKKyAgICAgICAg
Y3JlYXRlSW5zdGFuY2UuCisgICAgICAgIChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRl
SW5zdGFuY2UpOiBDaGFuZ2VkIHRvIHJldHVybiBhIENPTVB0ci4KKworICAgICAgICAqIENGRGlj
dGlvbmFyeVByb3BlcnR5QmFnLmg6CisgICAgICAgICAgLSBVcGRhdGVkIGNvcHlyaWdodCB5ZWFy
cworICAgICAgICAgIC0gRml4ZWQgaGVhZGVyIGd1YXJkIHRvIG1hdGNoIGN1cnJlbnQgc3R5bGUK
KyAgICAgICAgICAtIFJlcGxhY2VkICNpbmNsdWRlIG9mIENvcmVGb3VuZGF0aW9uLmggd2l0aCBm
b3J3YXJkLWRlY2xhcmF0aW9uIG9mCisgICAgICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVm
CisgICAgICAgICAgLSBBZGRlZCAjaW5jbHVkZSBvZiBDT01QdHIuaAorICAgICAgICAgIC0gRml4
ZWQgb3BlbmluZyBicmFjZSBwbGFjZW1lbnQgaW4gY2xhc3MgZGVjbGFyYXRpb24KKyAgICAgICAg
ICAtIE1hZGUgY3JlYXRlSW5zdGFuY2UgcmV0dXJuIGEgQ09NUHRyCisgICAgICAgICAgLSBNYWRl
IGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgcHJpdmF0ZQorICAgICAgICAgIC0gTWFkZSBRdWVyeUlu
dGVyZmFjZSBhbmQgSVByb3BlcnR5QmFnIGZ1bmN0aW9ucyBwcml2YXRlCisgICAgICAgICAgLSBS
ZW1vdmVkIHVubmVjZXNzYXJ5IHBhcmFtZXRlciBuYW1lcyBhbmQgTUlETCBjb21tZW50cworCisg
ICAgICAgICogV2ViQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ2FjaGU6OnN0YXRpc3RpY3MpOiBV
cGRhdGVkIGZvciBjaGFuZ2UgdG8KKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNy
ZWF0ZUluc3RhbmNlLiBOb3cgdXNlcyByZWxlYXNlUmVmIHRvIHBsYWNlCisgICAgICAgIHRoZSBJ
UHJvcGVydHlCYWcgcG9pbnRlcnMgaW50byB0aGUgcyBhcnJheS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKToKKyAgICAgICAgKiBXZWJE
YXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRj
aERpZE1vZGlmeURhdGFiYXNlKToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJGcmFtZTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAgICAgIFVwZGF0ZWQgZm9yIGNo
YW5nZSB0byBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UuCisKKyAgICAg
ICAgKiBXZWJIaXN0b3J5LmNwcDogUmVtb3ZlZCByZWxlYXNlVXNlckluZm8sIHdoaWNoIGlzIG5v
IGxvbmdlciBuZWVkZWQuCisgICAgICAgIFRoYXQgZnVuY3Rpb24gd2FzIGFsc28gZG9pbmcgYW4g
dW5uZWNlc3NhcnkgY2FsbCB0byBzZXREaWN0aW9uYXJ5KDApLgorICAgICAgICAoY3JlYXRlVXNl
ckluZm9Gcm9tQXJyYXkpOgorICAgICAgICAoY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0p
OgorICAgICAgICBDaGFuZ2VkIHRvIHJldHVybiBDT01QdHIuCisKKyAgICAgICAgKFdlYkhpc3Rv
cnk6OmxvYWRGcm9tVVJMKTogVXBkYXRlZCBmb3IgY2hhbmdlIHRvCisgICAgICAgIENGRGljdGlv
bmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZS4KKworICAgICAgICAoV2ViSGlzdG9yeTo6
cmVtb3ZlQWxsSXRlbXMpOiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8KKyAgICAgICAgQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlLCB3aGljaCBmaXhlZCBhIGxlYWshIFdlIGhh
ZAorICAgICAgICBmb3Jnb3R0ZW4gdG8gY2FsbCByZWxlYXNlVXNlckluZm8gaGVyZS4KKworICAg
ICAgICAoV2ViSGlzdG9yeTo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJIaXN0b3J5OjphZGRJ
dGVtKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OnZpc2l0ZWRVUkwpOgorICAgICAgICAqIFdlYklj
b25EYXRhYmFzZS5jcHA6CisgICAgICAgIChwb3N0RGlkQWRkSWNvbk5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIFVwZGF0ZWQgZm9yIGNoYW5nZSB0byBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3Jl
YXRlSW5zdGFuY2UuCisKKyAgICAgICAgKiBXZWJLaXRDbGFzc0ZhY3RvcnkuY3BwOgorICAgICAg
ICAocmVsZWFzZVJlZkZyb21DcmVhdGVJbnN0YW5jZSk6IEFkZGVkIHRoaXMgb3ZlcmxvYWRlZCBm
dW5jdGlvbgorICAgICAgICB0ZW1wbGF0ZSB0byBhYnN0cmFjdCBhd2F5IHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gY3JlYXRlSW5zdGFuY2UKKyAgICAgICAgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGEg
cmVmJ2QgcG9pbnRlciBhbmQgY3JlYXRlSW5zdGFuY2UgZnVuY3Rpb25zCisgICAgICAgIHRoYXQg
cmV0dXJuIGEgQ09NUHRyLgorICAgICAgICAoV2ViS2l0Q2xhc3NGYWN0b3J5OjpDcmVhdGVJbnN0
YW5jZSk6IENoYW5nZWQgdG8gdXNlCisgICAgICAgIHJlbGVhc2VSZWZGcm9tQ3JlYXRlSW5zdGFu
Y2UuCisKIDIwMDktMTEtMDMgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEZhbGtlbmJ1cmcuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL1dlYkNhY2hlLmNwcCBiL1dlYktpdC93aW4vV2ViQ2FjaGUuY3BwCmluZGV4IGM3
MzUxYjAuLmQ4MmZjNDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ2FjaGUuY3BwCisrKyBi
L1dlYktpdC93aW4vV2ViQ2FjaGUuY3BwCkBAIC0xMjksOSArMTI5LDkgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJDYWNoZTo6c3RhdGlzdGljcygKICAgICB2YWx1ZS5hZG9wdENGKENG
TnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZzdGF0LnNjcmlwdHMuY291bnQpKTsK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBzY3JpcHRzS2V5LCB2
YWx1ZS5nZXQoKSk7CiAKLSAgICBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyogcHJvcEJhZyA9IENG
RGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOworICAgIENPTVB0cjxDRkRp
Y3Rpb25hcnlQcm9wZXJ0eUJhZz4gcHJvcEJhZyA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpj
cmVhdGVJbnN0YW5jZSgpOwogICAgIHByb3BCYWctPnNldERpY3Rpb25hcnkoZGljdGlvbmFyeS5n
ZXQoKSk7Ci0gICAgc1swXSA9IHByb3BCYWc7CisgICAgc1swXSA9IHByb3BCYWcucmVsZWFzZVJl
ZigpOwogCiAgICAgZGljdGlvbmFyeS5hZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
MCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOwogCkBAIC0xNTMsNyArMTUzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJDYWNoZTo6c3RhdGlzdGljcygKIAogICAgIHByb3BCYWcgPSBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsKICAgICBwcm9wQmFnLT5zZXREaWN0aW9u
YXJ5KGRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIHNbMV0gPSBwcm9wQmFnOworICAgIHNbMV0gPSBw
cm9wQmFnLnJlbGVhc2VSZWYoKTsKIAogICAgIGRpY3Rpb25hcnkuYWRvcHRDRihDRkRpY3Rpb25h
cnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtD
RlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIApAQCAtMTc1LDcgKzE3NSw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ2FjaGU6OnN0YXRpc3RpY3MoCiAKICAgICBwcm9w
QmFnID0gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CiAgICAgcHJv
cEJhZy0+c2V0RGljdGlvbmFyeShkaWN0aW9uYXJ5LmdldCgpKTsKLSAgICBzWzJdID0gcHJvcEJh
ZzsKKyAgICBzWzJdID0gcHJvcEJhZy5yZWxlYXNlUmVmKCk7CiAKICAgICBkaWN0aW9uYXJ5LmFk
b3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKQEAgLTE5
Nyw3ICsxOTcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNhY2hlOjpzdGF0aXN0
aWNzKAogCiAgICAgcHJvcEJhZyA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0
YW5jZSgpOwogICAgIHByb3BCYWctPnNldERpY3Rpb25hcnkoZGljdGlvbmFyeS5nZXQoKSk7Ci0g
ICAgc1szXSA9IHByb3BCYWc7CisgICAgc1szXSA9IHByb3BCYWcucmVsZWFzZVJlZigpOwogCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDJhM2JmM2MuLjBlYzNmNDMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03
NDcsNyArNzQ3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWls
VG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICAgICAgfQogICAgIH0K
IAotICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm9CYWcoQWRvcHRD
T00sIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpKTsKKyAgICBDT01Q
dHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHVzZXJJbmZvQmFnID0gQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CiAgICAgdXNlckluZm9CYWctPnNldERpY3Rpb25h
cnkodXNlckluZm8uZ2V0KCkpOwogIAogICAgIGludCBlcnJvckNvZGUgPSAwOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvV2ViS2l0L3dpbi9XZWJEYXRh
YmFzZU1hbmFnZXIuY3BwCmluZGV4IGE1MzE5OTcuLjk4OWYzM2MgMTAwNjQ0Ci0tLSBhL1dlYktp
dC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdAog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIGRhdGFiYXNlTmFtZS5jcmVh
dGVDRlN0cmluZygpKTsKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwg
ZGF0YWJhc2VOYW1lS2V5LCBzdHIuZ2V0KCkpOwogCi0gICAgQ09NUHRyPENGRGljdGlvbmFyeVBy
b3BlcnR5QmFnPiB1c2VySW5mb0JhZyhBZG9wdENPTSwgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6
OmNyZWF0ZUluc3RhbmNlKCkpOworICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4g
dXNlckluZm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsK
ICAgICB1c2VySW5mb0JhZy0+c2V0RGljdGlvbmFyeSh1c2VySW5mby5nZXQoKSk7CiAKICAgICBu
b3RpZnlDZW50ZXItPnBvc3ROb3RpZmljYXRpb25OYW1lKGRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2lu
TmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHVzZXJJbmZvQmFnLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5k
ZXggMGExZjZkMC4uMWU2NGQxYSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAK
KysrIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3IEBAIFBhc3NS
ZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiBwbHVnaW5TaXplLCBICiAgICAgaWYgKEZBSUxFRChkLT53ZWJWaWV3LT5yZXNvdXJjZUxv
YWREZWxlZ2F0ZSgmcmVzb3VyY2VMb2FkRGVsZWdhdGUpKSkKICAgICAgICAgcmV0dXJuIHBsdWdp
blZpZXc7CiAKLSAgICBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHVzZXJJbmZvQmFn
KEFkb3B0Q09NLCBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKSk7Cisg
ICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiB1c2VySW5mb0JhZyA9IENGRGljdGlv
bmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwogCiAgICAgUmVzb3VyY2VFcnJvciBy
ZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9ySmF2YVVu
YXZhaWxhYmxlLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgIENPTVB0cjxJV2ViRXJyb3I+IGVy
cm9yKEFkb3B0Q09NLCBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFuY2UocmVzb3VyY2VFcnJvciwgdXNl
ckluZm9CYWcuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAg
Yi9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IGRlYjc1ZTUuLjUzODNhMGMgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJIaXN0
b3J5LmNwcApAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgYm9vbCBhcmVFcXVhbE9yQ2xvc2UoZG91
YmxlIGQxLCBkb3VibGUgZDIpCiAgICAgcmV0dXJuIChkaWZmIDwgLjAwMDAwMSAmJiBkaWZmID4g
LS4wMDAwMDEpOwogfQogCi1zdGF0aWMgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcqIGNyZWF0ZVVz
ZXJJbmZvRnJvbUFycmF5KEJTVFIgbm90aWZpY2F0aW9uU3RyLCBDRkFycmF5UmVmIGFycmF5SXRl
bSkKK3N0YXRpYyBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZv
RnJvbUFycmF5KEJTVFIgbm90aWZpY2F0aW9uU3RyLCBDRkFycmF5UmVmIGFycmF5SXRlbSkKIHsK
ICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENG
LCAKICAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CkBA
IC0xMDQsMjggKzEwNCwxOSBAQCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcqIGNyZWF0
ZVVzZXJJbmZvRnJvbUFycmF5KEJTVFIgbm90aWZpY2F0aW9uU3RyLCBDRgogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4ga2V5KEFkb3B0Q0YsIE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZT
dHJpbmdSZWYobm90aWZpY2F0aW9uU3RyKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGlj
dGlvbmFyeS5nZXQoKSwga2V5LmdldCgpLCBhcnJheUl0ZW0pOwogCi0gICAgQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWcqIHJlc3VsdCA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0
YW5jZSgpOworICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gcmVzdWx0ID0gQ0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CiAgICAgcmVzdWx0LT5zZXRE
aWN0aW9uYXJ5KGRpY3Rpb25hcnkuZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0
YXRpYyBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyogY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0
ZW0oQlNUUiBub3RpZmljYXRpb25TdHIsIElXZWJIaXN0b3J5SXRlbSogaXRlbSkKK3N0YXRpYyBD
T01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZvRnJvbUhpc3RvcnlJ
dGVtKEJTVFIgbm90aWZpY2F0aW9uU3RyLCBJV2ViSGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAg
Ly8gcmVmZXJlbmNlIGNvdW50aW5nIG9mIGl0ZW0gYWRkZWQgdG8gdGhlIGFycmF5IGlzIG1hbmFn
ZWQgYnkgdGhlIENGQXJyYXkgdmFsdWUgY2FsbGJhY2tzCiAgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IGl0ZW1MaXN0KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikgJml0
ZW0sIDEsICZNYXJzaGFsbGluZ0hlbHBlcnM6OmtJVW5rbm93bkFycmF5Q2FsbEJhY2tzKSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcqIGluZm8gPSBjcmVhdGVVc2VySW5mb0Zyb21BcnJh
eShub3RpZmljYXRpb25TdHIsIGl0ZW1MaXN0LmdldCgpKTsKKyAgICBDT01QdHI8Q0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWc+IGluZm8gPSBjcmVhdGVVc2VySW5mb0Zyb21BcnJheShub3RpZmljYXRp
b25TdHIsIGl0ZW1MaXN0LmdldCgpKTsKICAgICByZXR1cm4gaW5mbzsKIH0KIAotc3RhdGljIHZv
aWQgcmVsZWFzZVVzZXJJbmZvKENGRGljdGlvbmFyeVByb3BlcnR5QmFnKiB1c2VySW5mbykKLXsK
LSAgICAvLyBmcmVlIHRoZSBkaWN0aW9uYXJ5Ci0gICAgdXNlckluZm8tPnNldERpY3Rpb25hcnko
MCk7Ci0gICAgaW50IHJlc3VsdCA9IHVzZXJJbmZvLT5SZWxlYXNlKCk7Ci0gICAgKHZvaWQpcmVz
dWx0OwotICAgIEFTU0VSVChyZXN1bHQgPT0gMCk7ICAgLy8gbWFrZSBzdXJlIG5vIG9uZSBlbHNl
IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSB1c2VySW5mby4KLX0KLQogLy8gV2ViSGlzdG9yeSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkKQEAgLTI2NCw5ICsyNTUsOCBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rvcnk6OmxvYWRGcm9tVVJMKAogICAgICAg
ICBnb3RvIGV4aXQ7CiAKICAgICBpZiAoQ0ZBcnJheUdldENvdW50KGRpc2NhcmRlZEl0ZW1zLmdl
dCgpKSA+IDApIHsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcqIHVzZXJJbmZvID0g
Y3JlYXRlVXNlckluZm9Gcm9tQXJyYXkoZ2V0Tm90aWZpY2F0aW9uU3RyaW5nKGtXZWJIaXN0b3J5
SXRlbXNEaXNjYXJkZWRXaGlsZUxvYWRpbmdOb3RpZmljYXRpb24pLCBkaXNjYXJkZWRJdGVtcy5n
ZXQoKSk7Ci0gICAgICAgIGhyID0gcG9zdE5vdGlmaWNhdGlvbihrV2ViSGlzdG9yeUl0ZW1zRGlz
Y2FyZGVkV2hpbGVMb2FkaW5nTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7Ci0gICAgICAgIHJlbGVh
c2VVc2VySW5mbyh1c2VySW5mbyk7CisgICAgICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZz4gdXNlckluZm8gPSBjcmVhdGVVc2VySW5mb0Zyb21BcnJheShnZXROb3RpZmljYXRpb25T
dHJpbmcoa1dlYkhpc3RvcnlJdGVtc0Rpc2NhcmRlZFdoaWxlTG9hZGluZ05vdGlmaWNhdGlvbiks
IGRpc2NhcmRlZEl0ZW1zLmdldCgpKTsKKyAgICAgICAgaHIgPSBwb3N0Tm90aWZpY2F0aW9uKGtX
ZWJIaXN0b3J5SXRlbXNEaXNjYXJkZWRXaGlsZUxvYWRpbmdOb3RpZmljYXRpb24sIHVzZXJJbmZv
LmdldCgpKTsKICAgICAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgICAgICBnb3RvIGV4aXQ7
CiAgICAgfQpAQCAtNDY1LDggKzQ1NSw4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
SGlzdG9yeTo6cmVtb3ZlQWxsSXRlbXMoIHZvaWQpCiAKICAgICBQYWdlR3JvdXA6OnJlbW92ZUFs
bFZpc2l0ZWRMaW5rcygpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcqIHVzZXJJbmZv
ID0gY3JlYXRlVXNlckluZm9Gcm9tQXJyYXkoZ2V0Tm90aWZpY2F0aW9uU3RyaW5nKGtXZWJIaXN0
b3J5QWxsSXRlbXNSZW1vdmVkTm90aWZpY2F0aW9uKSwgYWxsSXRlbXMuZ2V0KCkpOwotICAgIHJl
dHVybiBwb3N0Tm90aWZpY2F0aW9uKGtXZWJIaXN0b3J5QWxsSXRlbXNSZW1vdmVkTm90aWZpY2F0
aW9uLCB1c2VySW5mbyk7CisgICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiB1c2Vy
SW5mbyA9IGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KGdldE5vdGlmaWNhdGlvblN0cmluZyhrV2Vi
SGlzdG9yeUFsbEl0ZW1zUmVtb3ZlZE5vdGlmaWNhdGlvbiksIGFsbEl0ZW1zLmdldCgpKTsKKyAg
ICByZXR1cm4gcG9zdE5vdGlmaWNhdGlvbihrV2ViSGlzdG9yeUFsbEl0ZW1zUmVtb3ZlZE5vdGlm
aWNhdGlvbiwgdXNlckluZm8uZ2V0KCkpOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkhpc3Rvcnk6Om9yZGVyZWRMYXN0VmlzaXRlZERheXMoIApAQCAtNjQ0LDEwICs2MzQsOSBA
QCBIUkVTVUxUIFdlYkhpc3Rvcnk6OnJlbW92ZUl0ZW0oSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSkK
ICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogCi0gICAgQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWcqIHVzZXJJbmZvID0gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0o
CisgICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiB1c2VySW5mbyA9IGNyZWF0ZVVz
ZXJJbmZvRnJvbUhpc3RvcnlJdGVtKAogICAgICAgICBnZXROb3RpZmljYXRpb25TdHJpbmcoa1dl
Ykhpc3RvcnlJdGVtc1JlbW92ZWROb3RpZmljYXRpb24pLCBlbnRyeSk7Ci0gICAgaHIgPSBwb3N0
Tm90aWZpY2F0aW9uKGtXZWJIaXN0b3J5SXRlbXNSZW1vdmVkTm90aWZpY2F0aW9uLCB1c2VySW5m
byk7Ci0gICAgcmVsZWFzZVVzZXJJbmZvKHVzZXJJbmZvKTsKKyAgICBociA9IHBvc3ROb3RpZmlj
YXRpb24oa1dlYkhpc3RvcnlJdGVtc1JlbW92ZWROb3RpZmljYXRpb24sIHVzZXJJbmZvLmdldCgp
KTsKIAogICAgIHJldHVybiBocjsKIH0KQEAgLTY5NSwxMCArNjg0LDkgQEAgSFJFU1VMVCBXZWJI
aXN0b3J5OjphZGRJdGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnksIGJvb2wgZGlzY2FyZER1cGxp
Y2F0ZSwgYm9vbCoKIAogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG1fZW50cmllc0J5VVJMLmdl
dCgpLCB1cmxTdHJpbmcuZ2V0KCksIGVudHJ5KTsKIAotICAgIENGRGljdGlvbmFyeVByb3BlcnR5
QmFnKiB1c2VySW5mbyA9IGNyZWF0ZVVzZXJJbmZvRnJvbUhpc3RvcnlJdGVtKAorICAgIENPTVB0
cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm8gPSBjcmVhdGVVc2VySW5mb0Zyb21I
aXN0b3J5SXRlbSgKICAgICAgICAgZ2V0Tm90aWZpY2F0aW9uU3RyaW5nKGtXZWJIaXN0b3J5SXRl
bXNBZGRlZE5vdGlmaWNhdGlvbiksIGVudHJ5KTsKLSAgICBociA9IHBvc3ROb3RpZmljYXRpb24o
a1dlYkhpc3RvcnlJdGVtc0FkZGVkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7Ci0gICAgcmVsZWFz
ZVVzZXJJbmZvKHVzZXJJbmZvKTsKKyAgICBociA9IHBvc3ROb3RpZmljYXRpb24oa1dlYkhpc3Rv
cnlJdGVtc0FkZGVkTm90aWZpY2F0aW9uLCB1c2VySW5mby5nZXQoKSk7CiAKICAgICBpZiAoYWRk
ZWQpCiAgICAgICAgICphZGRlZCA9IHRydWU7CkBAIC03NTQsMTAgKzc0Miw5IEBAIHZvaWQgV2Vi
SGlzdG9yeTo6dmlzaXRlZFVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IFN0cmluZyYKICAgICBDT01QdHI8V2ViSGlzdG9yeUl0ZW0+IGl0ZW0oUXVlcnksIGVu
dHJ5KTsKICAgICBpdGVtLT5oaXN0b3J5SXRlbSgpLT5zZXRSZWRpcmVjdFVSTHMoMCk7CiAKLSAg
ICBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyogdXNlckluZm8gPSBjcmVhdGVVc2VySW5mb0Zyb21I
aXN0b3J5SXRlbSgKKyAgICBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHVzZXJJbmZv
ID0gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oCiAgICAgICAgIGdldE5vdGlmaWNhdGlv
blN0cmluZyhrV2ViSGlzdG9yeUl0ZW1zQWRkZWROb3RpZmljYXRpb24pLCBlbnRyeSk7Ci0gICAg
cG9zdE5vdGlmaWNhdGlvbihrV2ViSGlzdG9yeUl0ZW1zQWRkZWROb3RpZmljYXRpb24sIHVzZXJJ
bmZvKTsKLSAgICByZWxlYXNlVXNlckluZm8odXNlckluZm8pOworICAgIHBvc3ROb3RpZmljYXRp
b24oa1dlYkhpc3RvcnlJdGVtc0FkZGVkTm90aWZpY2F0aW9uLCB1c2VySW5mby5nZXQoKSk7CiB9
CiAKIEhSRVNVTFQgV2ViSGlzdG9yeTo6aXRlbUZvclVSTFN0cmluZygKZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcCBiL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNl
LmNwcAppbmRleCAzMTVkYjllLi45Yjg3YzJiIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYklj
b25EYXRhYmFzZS5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCkBAIC0z
NTgsNyArMzU4LDcgQEAgc3RhdGljIHZvaWQgcG9zdERpZEFkZEljb25Ob3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJiBwYWdlVVJMLCBXZWJJY29uRGF0YWJhc2UqIGkKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHVybChBZG9wdENGLCBwYWdlVVJMLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIFdlYkljb25EYXRhYmFzZTo6aWNv
bkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKSwgdXJsLmdldCgpKTsKIAotICAg
IENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm8oQWRvcHRDT00sIENGRGlj
dGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpKTsKKyAgICBDT01QdHI8Q0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWc+IHVzZXJJbmZvID0gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNy
ZWF0ZUluc3RhbmNlKCk7CiAgICAgdXNlckluZm8tPnNldERpY3Rpb25hcnkoZGljdGlvbmFyeS5n
ZXQoKSk7CiAKICAgICBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZnlDZW50ZXIgPSBXZWJO
b3RpZmljYXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwIGIvV2ViS2l0L3dpbi9XZWJLaXRDbGFz
c0ZhY3RvcnkuY3BwCmluZGV4IGMyMTQzYjUuLjI3YjA1M2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYktpdENsYXNzRmFj
dG9yeS5jcHAKQEAgLTEyNiw2ICsxMjYsMTkgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
S2l0Q2xhc3NGYWN0b3J5OjpSZWxlYXNlKHZvaWQpCiAgICAgcmV0dXJuIG5ld1JlZjsKIH0KIAor
Ly8gRklYTUU6IFJlbW92ZSB0aGVzZSBmdW5jdGlvbnMgb25jZSBhbGwgY3JlYXRlSW5zdGFuY2Uo
KSBmdW5jdGlvbnMgcmV0dXJuIENPTVB0ci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGlj
IFQqIHJlbGVhc2VSZWZGcm9tQ3JlYXRlSW5zdGFuY2UoVCogb2JqZWN0KQoreworICAgIHJldHVy
biBvYmplY3Q7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIFQqIHJlbGVhc2VS
ZWZGcm9tQ3JlYXRlSW5zdGFuY2UoQ09NUHRyPFQ+IG9iamVjdCkKK3sKKyAgICByZXR1cm4gb2Jq
ZWN0LnJlbGVhc2VSZWYoKTsKK30KKwogLy8gSUNsYXNzRmFjdG9yeSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYktpdENsYXNzRmFjdG9yeTo6Q3JlYXRlSW5zdGFuY2UoSVVu
a25vd24qIHBVbmtPdXRlciwgUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCkBAIC0xMzgs
NyArMTUxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJLaXRDbGFzc0ZhY3Rvcnk6
OkNyZWF0ZUluc3RhbmNlKElVbmtub3duKiBwVW5rT3V0ZXIKIAogI2RlZmluZSBJTklUSUFMSVpF
X0lGX0NMQVNTKGNscykgXAogICAgIGlmIChJc0VxdWFsR1VJRChtX3RhcmdldENsYXNzLCBDTFNJ
RF8jI2NscykpIFwKLSAgICAgICAgdW5rbm93biA9IHN0YXRpY19jYXN0PEkjI2Nscyo+KGNsczo6
Y3JlYXRlSW5zdGFuY2UoKSk7IFwKKyAgICAgICAgdW5rbm93biA9IHN0YXRpY19jYXN0PEkjI2Ns
cyo+KHJlbGVhc2VSZWZGcm9tQ3JlYXRlSW5zdGFuY2UoY2xzOjpjcmVhdGVJbnN0YW5jZSgpKSk7
IFwKICAgICBlbHNlIFwKICAgICAvLyBlbmQgb2YgbWFjcm8=
</data>

          </attachment>
      

    </bug>

</bugzilla>