<?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>6191</bug_id>
          
          <creation_ts>2005-12-21 21:56:06 -0800</creation_ts>
          <short_desc>RefPtr/PassRefPtr have a leak issue, operator== issues</short_desc>
          <delta_ts>2005-12-22 08:46:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>26331</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-21 21:56:06 -0800</bug_when>
    <thetext>I have a patch that fixes these things:

    1) adds a constructor that lets you mix PassRefPtr objects of compatible types
    2) optimizes PassRefPtr::adopt so it doesn&apos;t first set m_ptr to 0
    3) allows assignment of PassRefPtr objects from a RefPtr of any compatible type and vice versa
    4) fixes a leak in the type conversion operator that converts a PassRefPtr to one of another compatible 
type
    5) allows mixing compatible types in == and != for PassRefPtr and RefPtr
    6) removes extraneous const in == and != operator implementations (which was probably harmless)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26332</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-21 22:00:46 -0800</bug_when>
    <thetext>Marking P1 because of the potential leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26333</commentid>
    <comment_count>2</comment_count>
      <attachid>5212</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-21 22:02:02 -0800</bug_when>
    <thetext>Created attachment 5212
patch that fixes the issues described in the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26339</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-21 22:33:59 -0800</bug_when>
    <thetext>*** Bug 6165 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26361</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-12-22 02:34:16 -0800</bug_when>
    <thetext>Why this part: &quot;Remove non-template constructor that takes RefPtr [from PassRefPtr].&quot;

Other than that, all changes look great to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26364</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-12-22 02:57:49 -0800</bug_when>
    <thetext>r=me assuming you add a good explanation of why the PassRefPtr constructor that takes RefPtr was 
removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26375</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-22 07:31:40 -0800</bug_when>
    <thetext>Here&apos;s the rationale: There&apos;s still a template constructor that takes a RefPtr in PassRefPtr that should cover 
any RefPtr. I believe there&apos;s no need for a non-template constructor specifically for a RefPtr to the same 
class as the PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26376</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-22 07:34:41 -0800</bug_when>
    <thetext>I&apos;m not entirely clear in what situations it&apos;s helpful to have both a constructor and constructor template 
that overlap. I believe in the case of constructing a PassRefPtr from a RefPtr that the constructor template 
suffices by itself and we don&apos;t also need the non-template constructor.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5212</attachid>
            <date>2005-12-21 22:02:02 -0800</date>
            <delta_ts>2005-12-22 03:00:24 -0800</delta_ts>
            <desc>patch that fixes the issues described in the bug</desc>
            <filename>RefPtrPatch.txt</filename>
            <type>text/plain</type>
            <size>14521</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkxOQpkaWZmIC1wIC11IC1y
MS45MTkgQ2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjIgRGVjIDIwMDUgMDE6NDA6NTIgLTAwMDAJ
MS45MTkKKysrIENoYW5nZUxvZwkyMiBEZWMgMjAwNSAwNjowMjo1MyAtMDAwMApAQCAtMSwzICsx
LDMxIEBACisyMDA1LTEyLTIxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZpeCBodHRwOi8v
YnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTEKKyAgICAgICAgICBS
ZWZQdHIvUGFzc1JlZlB0ciBoYXZlIGEgbGVhayBpc3N1ZSwgb3BlcmF0b3I9PSBpc3N1ZXMKKwor
ICAgICAgICAqIGt4bWxjb3JlL1Bhc3NSZWZQdHIuaDoKKyAgICAgICAgKEtYTUxDb3JlOjpQYXNz
UmVmUHRyOjpQYXNzUmVmUHRyKTogUmVtb3ZlIG5vbi10ZW1wbGF0ZSBjb25zdHJ1Y3RvciB0aGF0
IHRha2VzIFJlZlB0ci4KKyAgICAgICAgQWRkIHRlbXBsYXRlIGNvbnN0cnVjdG9yIHRoYXQgdGFr
ZXMgUGFzc1JlZlB0ciYuCisgICAgICAgIChLWE1MQ29yZTo6UGFzc1JlZlB0cjo6YWRvcHQpOiBV
c2UgUGFzc1JlZlB0cl9SZWYgdG8gYXZvaWQgc2V0dGluZyBwb2ludGVyIGZpcnN0IHRvCisgICAg
ICAgIDAgYW5kIHRoZW4gdG8gdGhlIHBvaW50ZXIuCisgICAgICAgIChLWE1MQ29yZTo6UGFzc1Jl
ZlB0cjo6b3BlcmF0b3I9KTogQWRkZWQgdGVtcGxhdGUgdmVyc2lvbiB0aGF0IHRha2UgUGFzc1Jl
ZlB0ciYgYW5kCisgICAgICAgIFJlZlB0ciBwYXJhbWV0ZXJzLgorICAgICAgICAoS1hNTENvcmU6
OlBhc3NSZWZQdHI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8VT4pOiBDaGFuZ2VkIHRvIGZpeCBsZWFr
IC0tIG9sZCB2ZXJzaW9uCisgICAgICAgIHdvdWxkIHJlbGVhc2UgYW5kIHRoZW4gcmVmLgorICAg
ICAgICAoS1hNTENvcmU6Om9wZXJhdG9yPT0pOiBNYWtlIHRlbXBsYXRlcyBoYXZlIHR3byBwYXJh
bWV0ZXJzIHNvIHlvdSBjYW4gbWl4IHR5cGVzLgorICAgICAgICBBbHNvIHJlbW92ZSB1bm5lZWRl
ZCBjb25zdCBpbiByYXcgcG9pbnRlciB2ZXJzaW9ucy4KKyAgICAgICAgKEtYTUxDb3JlOjpvcGVy
YXRvciE9KTogRGl0dG8uCisKKyAgICAgICAgKiBreG1sY29yZS9SZWZQdHIuaDoKKyAgICAgICAg
KEtYTUxDb3JlOjpSZWZQdHI6OlJlZlB0cik6IEFkZCB0ZW1wbGF0ZSBjb25zdHJ1Y3RvciB0aGF0
IHRha2VzIFBhc3NSZWZQdHIuCisgICAgICAgIChLWE1MQ29yZTo6UmVmUHRyOjpvcGVyYXRvcj0p
OiBBZGQgdGVtcGxhdGUgYXNzaWdubWVudCBvcGVyYXRvcnMgdGhhdCB0YWtlCisgICAgICAgIFJl
ZlB0ciBhbmQgUGFzc1JlZlB0ci4KKyAgICAgICAgKEtYTUxDb3JlOjpvcGVyYXRvcj09KTogTWFr
ZSB0ZW1wbGF0ZXMgaGF2ZSB0d28gcGFyYW1ldGVycyBzbyB5b3UgY2FuIG1peCB0eXBlcy4KKyAg
ICAgICAgQWxzbyByZW1vdmUgdW5uZWVkZWQgY29uc3QgaW4gcmF3IHBvaW50ZXIgdmVyc2lvbnMu
CisgICAgICAgIChLWE1MQ29yZTo6b3BlcmF0b3IhPSk6IERpdHRvLgorCiAyMDA1LTEyLTIxICBU
aW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CkluZGV4OiBreG1sY29yZS9QYXNzUmVm
UHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2t4bWxj
b3JlL1Bhc3NSZWZQdHIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIx
LjUga3htbGNvcmUvUGFzc1JlZlB0ci5oCi0tLSBreG1sY29yZS9QYXNzUmVmUHRyLmgJMjAgRGVj
IDIwMDUgMjA6MTI6NDggLTAwMDAJMS41CisrKyBreG1sY29yZS9QYXNzUmVmUHRyLmgJMjIgRGVj
IDIwMDUgMDY6MDI6NTMgLTAwMDAKQEAgLTQzLDggKzQzLDggQEAgbmFtZXNwYWNlIEtYTUxDb3Jl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFBhc3NSZWZQdHIoKSA6IG1fcHRyKDApIHt9CiAgICAg
ICAgIFBhc3NSZWZQdHIoVCAqcHRyKSA6IG1fcHRyKHB0cikgeyBpZiAocHRyKSBwdHItPnJlZigp
OyB9Ci0gICAgICAgIFBhc3NSZWZQdHIoY29uc3QgUmVmUHRyPFQ+JiBvKSA6IG1fcHRyKG8uZ2V0
KCkpIHsgaWYgKFQgKnB0ciA9IG1fcHRyKSBwdHItPnJlZigpOyB9CiAgICAgICAgIFBhc3NSZWZQ
dHIoUGFzc1JlZlB0ciYgbykgOiBtX3B0cihvLnJlbGVhc2UoKSkge30KKyAgICAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHIoUGFzc1JlZlB0cjxVPiYgbykgOiBtX3B0cihvLnJl
bGVhc2UoKSkgeyB9CiAKICAgICAgICAgflBhc3NSZWZQdHIoKSB7IGlmIChUICpwdHIgPSBtX3B0
cikgcHRyLT5kZXJlZigpOyB9CiAgICAgICAgIApAQCAtNTUsMTEgKzU1LDEwIEBAIG5hbWVzcGFj
ZSBLWE1MQ29yZSB7CiAKICAgICAgICAgVCAqcmVsZWFzZSgpIHsgVCAqdG1wID0gbV9wdHI7IG1f
cHRyID0gMDsgcmV0dXJuIHRtcDsgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFQ+IGFk
b3B0KFQgKnB0cikgCi0gICAgICAgIHsgCi0gICAgICAgICAgICBQYXNzUmVmUHRyIHJlc3VsdDsg
Ci0gICAgICAgICAgICByZXN1bHQubV9wdHIgPSBwdHI7IAotICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsgCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgUGFzc1JlZlB0cjxU
PiBhZG9wdChVKiBwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIFBhc3NSZWZQdHIgcmVzdWx0
KChQYXNzUmVmUHRyX1JlZjxUPihwdHIpKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biAqbV9wdHI7IH0KQEAgLTcxLDkgKzcwLDEwIEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAg
ICAgIHR5cGVkZWYgVCogKFBhc3NSZWZQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKSgpIGNvbnN0
OwogICAgICAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9wdHIgPyAmUGFzc1JlZlB0cjo6Z2V0IDogMDsgfQogICAgICAgICAKLSAgICAgICAgUGFzc1Jl
ZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxUPiYpOwogICAgICAgICBQYXNzUmVmUHRyJiBv
cGVyYXRvcj0oVCAqKTsKICAgICAgICAgUGFzc1JlZlB0ciYgb3BlcmF0b3I9KFBhc3NSZWZQdHIm
KTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHImIG9wZXJhdG9yPShQ
YXNzUmVmUHRyPFU+Jik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBQYXNzUmVmUHRy
JiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7CiAKICAgICAgICAgUGFzc1JlZlB0cihQYXNz
UmVmUHRyX1JlZjxUPiByZWYpIDogbV9wdHIocmVmLm1fcHRyKSB7IH0KICAgICAgIApAQCAtODUs
MjMgKzg1LDE0IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICBv
cGVyYXRvciBQYXNzUmVmUHRyX1JlZjxVPigpCi0gICAgICAgIHsgCi0gICAgICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cl9SZWY8VT4ocmVsZWFzZSgpKTsgCi0gICAgICAgIH0KLQotICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICBvcGVyYXRvciBQYXNzUmVmUHRyPFU+KCkKLSAg
ICAgICAgeyAKLSAgICAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFU+KHRoaXMtPnJlbGVhc2Uo
KSk7IAotICAgICAgICB9CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBvcGVyYXRvciBQ
YXNzUmVmUHRyX1JlZjxVPigpIHsgcmV0dXJuIFBhc3NSZWZQdHJfUmVmPFU+KHJlbGVhc2UoKSk7
IH0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IG9wZXJhdG9yIFBhc3NSZWZQdHI8VT4o
KSB7IHJldHVybiBQYXNzUmVmUHRyX1JlZjxVPihyZWxlYXNlKCkpOyB9CiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFQgKm1fcHRyOwogICAgIH07CiAgICAgCi0gICAgdGVtcGxhdGUg
PGNsYXNzIFQ+IGlubGluZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0o
Y29uc3QgUmVmUHRyPFQ+JiBvKSAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRv
cj0oY29uc3QgUmVmUHRyPFU+JiBvKSAKICAgICB7CiAgICAgICAgIFQgKm9wdHIgPSBvLm1fcHRy
OwogICAgICAgICBpZiAob3B0cikKQEAgLTExMiw3ICsxMDMsNyBAQCBuYW1lc3BhY2UgS1hNTENv
cmUgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDxj
bGFzcyBUPiBpbmxpbmUgUGFzc1JlZlB0cjxUPiYgUGFzc1JlZlB0cjxUPjo6b3BlcmF0b3I9KFQg
Km9wdHIpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzUmVmUHRyPFQ+JiBQ
YXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oVCogb3B0cikKICAgICB7CiAgICAgICAgIGlmIChvcHRy
KQogICAgICAgICAgICAgb3B0ci0+cmVmKCk7CkBAIC0xMjIsNyArMTEzLDE2IEBAIG5hbWVzcGFj
ZSBLWE1MQ29yZSB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVD4gaW5saW5lIFBhc3NSZWZQdHI8VD4mIFBhc3NSZWZQdHI8VD46Om9wZXJhdG9y
PShQYXNzUmVmUHRyPFQ+JiByZWYpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBQ
YXNzUmVmUHRyPFQ+JiBQYXNzUmVmUHRyPFQ+OjpvcGVyYXRvcj0oUGFzc1JlZlB0cjxUPiYgcmVm
KQorICAgIHsKKyAgICAgICAgVCAqb3B0ciA9IHJlZi5yZWxlYXNlKCk7CisgICAgICAgIGlmIChU
ICpwdHIgPSBtX3B0cikKKyAgICAgICAgICAgIHB0ci0+ZGVyZWYoKTsKKyAgICAgICAgbV9wdHIg
PSBvcHRyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8VD4m
IFBhc3NSZWZQdHI8VD46Om9wZXJhdG9yPShQYXNzUmVmUHRyPFU+JiByZWYpCiAgICAgewogICAg
ICAgICBUICpvcHRyID0gcmVmLnJlbGVhc2UoKTsKICAgICAgICAgaWYgKFQgKnB0ciA9IG1fcHRy
KQpAQCAtMTMxLDYyICsxMzEsNjIgQEAgbmFtZXNwYWNlIEtYTUxDb3JlIHsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNzUmVmUHRyPFQ+
JiBiKSAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBi
KSAKICAgICB7IAogICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyAKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNz
UmVmUHRyPFQ+JiBhLCBjb25zdCBSZWZQdHI8VD4mIGIpIAorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8
VD4mIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikgCiAgICAgeyAKICAgICAgICAgcmV0dXJuIGEuZ2V0
KCkgPT0gYi5nZXQoKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBjb25zdCBQYXNzUmVmUHRyPFQ+JiBi
KSAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSZWZQdHI8VD4mIGEsIGNvbnN0IFBhc3NSZWZQdHI8VT4mIGIpIAogICAg
IHsgCiAgICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7IAogICAgIH0KIAotICAgIHRl
bXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8
VD4mIGEsIGNvbnN0IFQgKmIpIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIFUqIGIpIAog
ICAgIHsgCiAgICAgICAgIHJldHVybiBhLmdldCgpID09IGI7IAogICAgIH0KICAgICAKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUICphLCBjb25z
dCBQYXNzUmVmUHRyPFQ+JiBiKSAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAK
ICAgICB7CiAgICAgICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAogICAgIH0KICAgICAKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzUmVmUHRy
PFQ+JiBhLCBjb25zdCBQYXNzUmVmUHRyPFQ+JiBiKSAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzUmVmUHRyPFQ+
JiBhLCBjb25zdCBQYXNzUmVmUHRyPFU+JiBiKSAKICAgICB7IAogICAgICAgICByZXR1cm4gYS5n
ZXQoKSAhPSBiLmdldCgpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYXNzUmVmUHRyPFQ+JiBhLCBjb25zdCBSZWZQdHI8VD4m
IGIpIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikgCiAg
ICAgeyAKICAgICAgICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCiAgICAgfQogCi0gICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+
JiBhLCBjb25zdCBQYXNzUmVmUHRyPFQ+JiBiKSAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VD4mIGEsIGNv
bnN0IFBhc3NSZWZQdHI8VT4mIGIpIAogICAgIHsgCiAgICAgICAgIHJldHVybiBhLmdldCgpICE9
IGIuZ2V0KCk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFBhc3NSZWZQdHI8VD4mIGEsIGNvbnN0IFQgKmIpCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UGFzc1JlZlB0cjxUPiYgYSwgVSogYikKICAgICB7CiAgICAgICAgIHJldHVybiBhLmdldCgpICE9
IGI7IAogICAgIH0KIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFQgKmEsIGNvbnN0IFBhc3NSZWZQdHI8VD4mIGIpIAorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0
IFBhc3NSZWZQdHI8VT4mIGIpIAogICAgIHsgCiAgICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7
IAogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIFBh
c3NSZWZQdHI8VD4gc3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKSAK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWZQdHI8
VD4gc3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBQYXNzUmVmUHRyPFU+JiBwKSAKICAgICB7IAog
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUPjo6YWRvcHQoc3RhdGljX2Nhc3Q8VCAqPihwLnJl
bGVhc2UoKSkpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4gaW5s
aW5lIFBhc3NSZWZQdHI8VD4gY29uc3RfcG9pbnRlcl9jYXN0KGNvbnN0IFBhc3NSZWZQdHI8VT4m
IHApIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1Jl
ZlB0cjxUPiBjb25zdF9wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgCiAgICAg
eyAKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VD46OmFkb3B0KGNvbnN0X2Nhc3Q8VCAqPihw
LnJlbGVhc2UoKSkpOyAKICAgICB9CkluZGV4OiBreG1sY29yZS9SZWZQdHIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva3htbGNvcmUvUmVmUHRyLmgsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC1wIC11IC1yMS43IGt4bWxjb3JlL1JlZlB0ci5o
Ci0tLSBreG1sY29yZS9SZWZQdHIuaAkyMCBEZWMgMjAwNSAyMDoxMjo0OCAtMDAwMAkxLjcKKysr
IGt4bWxjb3JlL1JlZlB0ci5oCTIyIERlYyAyMDA1IDA2OjAyOjUzIC0wMDAwCkBAIC0yNSwxOSAr
MjUsMjEgQEAKIAogbmFtZXNwYWNlIEtYTUxDb3JlIHsKIAotICAgIHRlbXBsYXRlIDxjbGFzcyBU
PiBjbGFzcyBQYXNzUmVmUHRyOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBQYXNzUmVm
UHRyX1JlZjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cl9SZWY7CiAKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUmVmUHRyCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFJlZlB0cgogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlZlB0cigpIDogbV9wdHIo
MCkge30KICAgICAgICAgUmVmUHRyKFQgKnB0cikgOiBtX3B0cihwdHIpIHsgaWYgKHB0cikgcHRy
LT5yZWYoKTsgfQogICAgICAgICBSZWZQdHIoY29uc3QgUmVmUHRyJiBvKSA6IG1fcHRyKG8ubV9w
dHIpIHsgaWYgKFQgKnB0ciA9IG1fcHRyKSBwdHItPnJlZigpOyB9CisgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVPiBSZWZQdHIoUGFzc1JlZlB0cjxVPiYpOworICAgICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4gUmVmUHRyKFBhc3NSZWZQdHJfUmVmPFU+KTsKIAogICAgICAgICB+UmVmUHRy
KCkgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+ZGVyZWYoKTsgfQogICAgICAgICAKLSAgICAg
ICAgdGVtcGxhdGUgPGNsYXNzIFU+IFJlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8pIDogbV9wdHIo
by5nZXQoKSkgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0KKyAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFU+IFJlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8pIDogbV9wdHIoby5n
ZXQoKSkgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+cmVmKCk7IH0KICAgICAgICAgCiAgICAg
ICAgIFQgKmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CiAgICAgICAgIApAQCAtNTQsMzMg
KzU2LDczIEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAgICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9
KFQgKik7CiAgICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9KFBhc3NSZWZQdHI8VD4mKTsKICAgICAg
ICAgUmVmUHRyJiBvcGVyYXRvcj0oUGFzc1JlZlB0cl9SZWY8VD4pOworICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFU+Jik7CisgICAg
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShQYXNzUmVmUHRyPFU+
Jik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShQYXNz
UmVmUHRyX1JlZjxVPik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBUICptX3B0cjsKICAgICB9
OwogICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3Bl
cmF0b3I9KGNvbnN0IFJlZlB0cjxUPiYgbykgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHRl
bXBsYXRlIDx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+OjpSZWZQdHIoUGFzc1JlZlB0cl9S
ZWY8VT4gcmVmKQorICAgICAgICA6IG1fcHRyKHJlZi5tX3B0cikKKyAgICB7CisgICAgfQorICAg
IAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gaW5saW5l
IFJlZlB0cjxUPjo6UmVmUHRyKFBhc3NSZWZQdHI8VT4mIG8pCisgICAgICAgIDogbV9wdHIoby5y
ZWxlYXNlKCkpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBSZWZQ
dHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxUPiYgbykKKyAgICB7Cisg
ICAgICAgIFQgKm9wdHIgPSBvLm1fcHRyOworICAgICAgICBpZiAob3B0cikKKyAgICAgICAgICAg
IG9wdHItPnJlZigpOworICAgICAgICBpZiAobV9wdHIpCisgICAgICAgICAgICBtX3B0ci0+ZGVy
ZWYoKTsKKyAgICAgICAgbV9wdHIgPSBvcHRyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4g
UmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mIG8pCiAgICAg
ewogICAgICAgICBUICpvcHRyID0gby5tX3B0cjsKICAgICAgICAgaWYgKG9wdHIpCiAgICAgICAg
ICAgICBvcHRyLT5yZWYoKTsKLSAgICAgICAgaWYgKFQgKnB0ciA9IG1fcHRyKQotICAgICAgICAg
ICAgcHRyLT5kZXJlZigpOworICAgICAgICBpZiAobV9wdHIpCisgICAgICAgICAgICBtX3B0ci0+
ZGVyZWYoKTsKICAgICAgICAgbV9wdHIgPSBvcHRyOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQogICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQ
dHI8VD46Om9wZXJhdG9yPShUICpvcHRyKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxp
bmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShUKiBvcHRyKQogICAgIHsKICAgICAg
ICAgaWYgKG9wdHIpCiAgICAgICAgICAgICBvcHRyLT5yZWYoKTsKLSAgICAgICAgaWYgKFQgKnB0
ciA9IG1fcHRyKQotICAgICAgICAgICAgcHRyLT5kZXJlZigpOworICAgICAgICBpZiAobV9wdHIp
CisgICAgICAgICAgICBtX3B0ci0+ZGVyZWYoKTsKICAgICAgICAgbV9wdHIgPSBvcHRyOwogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KFBhc3NSZWZQdHJfUmVmPFQ+IHJlZikK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGlubGluZSBS
ZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KFBhc3NSZWZQdHJfUmVmPFU+IHJlZikKKyAg
ICB7CisgICAgICAgIGlmIChtX3B0cikKKyAgICAgICAgICAgIG1fcHRyLT5kZXJlZigpOworICAg
ICAgICBtX3B0ciA9IHJlZi5tX3B0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAg
ICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+
OjpvcGVyYXRvcj0oUGFzc1JlZlB0cjxUPiYgbykKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikK
KyAgICAgICAgICAgIG1fcHRyLT5kZXJlZigpOworICAgICAgICBtX3B0ciA9IG8ucmVsZWFzZSgp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KFBhc3NSZWZQdHJfUmVm
PFQ+IHJlZikKICAgICB7CiAgICAgICAgIGlmIChtX3B0cikKICAgICAgICAgICAgIG1fcHRyLT5k
ZXJlZigpOwpAQCAtODgsNTAgKzEzMCw1MCBAQCBuYW1lc3BhY2UgS1hNTENvcmUgewogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxp
bmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShQYXNzUmVmUHRyPFQ+JiBvKSAKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQ
dHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KFBhc3NSZWZQdHI8VT4mIG8pCiAgICAgewotICAg
ICAgICBpZiAoVCAqcHRyID0gbV9wdHIpCi0gICAgICAgICAgICBwdHItPmRlcmVmKCk7CisgICAg
ICAgIGlmIChtX3B0cikKKyAgICAgICAgICAgIG1fcHRyLT5kZXJlZigpOwogICAgICAgICBtX3B0
ciA9IG8ucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVt
cGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBh
LCBjb25zdCBSZWZQdHI8VD4mIGIpIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgUmVm
UHRyPFU+JiBiKQogICAgIHsgCiAgICAgICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7IAog
ICAgIH0KIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgVCAqYikgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQ+JiBhLCBV
KiBiKQogICAgIHsgCiAgICAgICAgIHJldHVybiBhLmdldCgpID09IGI7IAogICAgIH0KICAgICAK
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUICph
LCBjb25zdCBSZWZQdHI8VD4mIGIpIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikgCiAg
ICAgewogICAgICAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKICAgICB9CiAgICAgCi0gICAgdGVt
cGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQ+JiBh
LCBjb25zdCBSZWZQdHI8VD4mIGIpIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgUmVm
UHRyPFU+JiBiKQogICAgIHsgCiAgICAgICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IAog
ICAgIH0KIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFJlZlB0cjxUPiYgYSwgY29uc3QgVCAqYikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VD4mIGEsIFUq
IGIpCiAgICAgewogICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUICphLCBjb25z
dCBSZWZQdHI8VD4mIGIpIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IFJlZlB0cjxVPiYgYikKICAgICB7IAog
ICAgICAgICByZXR1cm4gYSAhPSBiLmdldCgpOyAKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUg
PGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBSZWZQdHI8VD4gc3RhdGljX3BvaW50ZXJfY2FzdChj
b25zdCBSZWZQdHI8VT4mIHApIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgUmVmUHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUmVmUHRyPFU+JiBw
KQogICAgIHsgCiAgICAgICAgIHJldHVybiBSZWZQdHI8VD4oc3RhdGljX2Nhc3Q8VCAqPihwLmdl
dCgpKSk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUg
UmVmUHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHApIAorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+IGNvbnN0X3Bv
aW50ZXJfY2FzdChjb25zdCBSZWZQdHI8VT4mIHApCiAgICAgeyAKICAgICAgICAgcmV0dXJuIFJl
ZlB0cjxUPihjb25zdF9jYXN0PFQgKj4ocC5nZXQoKSkpOyAKICAgICB9Cg==
</data>
<flag name="review"
          id="1059"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>