<?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>121237</bug_id>
          
          <creation_ts>2013-09-12 10:45:01 -0700</creation_ts>
          <short_desc>SharedBuffer::createNSData should return a RetainPtr&lt;NSData&gt;</short_desc>
          <delta_ts>2014-07-23 16:30:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>psolanki</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>928375</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-12 10:45:01 -0700</bug_when>
    <thetext>SharedBuffer::createNSData should return a RetainPtr&lt;NSData&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928398</commentid>
    <comment_count>1</comment_count>
      <attachid>211451</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-12 11:21:18 -0700</bug_when>
    <thetext>Created attachment 211451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928405</commentid>
    <comment_count>2</comment_count>
      <attachid>211451</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-12 11:31:08 -0700</bug_when>
    <thetext>Comment on attachment 211451
Patch

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

You said you fixed two leaks. I saw the mention of one in the ChangeLog but didn’t spot it, nor the other one. Also, patch did not apply.

&gt; Source/WebCore/loader/ResourceBuffer.h:79
&gt; +    SharedBuffer::NSDataRetainPtr createNSData();

The name SharedBuffer::NSDataRetainPtr does not make it clear why RetainPtr&lt;NSData&gt; is not used; would be better if the name made that clear. And not really sure this type should be a member of SharedBuffer. It doesn’t seem to be an issue that’s specific to that class, even if we are only using it there for now.

Your name suggestion NSDataRetainPtrWithoutImplicitConversionOperator is good.

&gt; Source/WebCore/loader/archive/ArchiveFactory.cpp:67
&gt; +    mimeTypes.set(&quot;application/x-webarchive&quot;, static_cast&lt;RawDataCreationFunction*&gt;(&amp;archiveFactoryCreate&lt;LegacyWebArchive&gt;));

I don’t know why this cast is needed, nor why it’s safe. Change log doesn’t say.

&gt; Source/WebCore/platform/SharedBuffer.h:68
&gt; +    // Once both Mac and iOS builds with this change we can change the return type to be RetainPtr&lt;NSData&gt;.

Comment should say something like &quot;because this mistake is unlikely in new code, although a real worry during the transition&quot;.

&gt; Source/WebCore/platform/mac/SharedBufferMac.mm:101
&gt; +    return adoptNS(static_cast&lt;NSData *&gt;([[WebCoreSharedBufferData alloc] initWithSharedBuffer:this]));

Why is the cast to NSData * needed?

&gt; Source/WebKit/mac/WebView/WebDataSource.mm:408
&gt; -    return [mainResourceData-&gt;createNSData() autorelease];
&gt; +    return [mainResourceData-&gt;createNSData().leakRef() autorelease];

Does RetainPtr need a leakRef/autorelease function of some sort?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928406</commentid>
    <comment_count>3</comment_count>
      <attachid>211451</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-12 11:37:32 -0700</bug_when>
    <thetext>Comment on attachment 211451
Patch

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

&gt;&gt; Source/WebKit/mac/WebView/WebDataSource.mm:408
&gt;&gt; +    return [mainResourceData-&gt;createNSData().leakRef() autorelease];
&gt; 
&gt; Does RetainPtr need a leakRef/autorelease function of some sort?

Probably would want to name it autorelease() and then have to decide if it’s legal on CF types or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928434</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-12 12:42:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 211451 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=211451&amp;action=review
&gt; 
&gt; You said you fixed two leaks. I saw the mention of one in the ChangeLog but didn’t spot it, nor the other one. Also, patch did not apply.

One was in -[WebHTMLView namesOfPromisedFilesDroppedAtDestination:], the other one was PDFDocumentImage::createPDFDocument.

&gt; 
&gt; &gt; Source/WebCore/loader/archive/ArchiveFactory.cpp:67
&gt; &gt; +    mimeTypes.set(&quot;application/x-webarchive&quot;, static_cast&lt;RawDataCreationFunction*&gt;(&amp;archiveFactoryCreate&lt;LegacyWebArchive&gt;));
&gt; 
&gt; I don’t know why this cast is needed, nor why it’s safe. Change log doesn’t say.

I’ll remove this.

&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.h:68
&gt; &gt; +    // Once both Mac and iOS builds with this change we can change the return type to be RetainPtr&lt;NSData&gt;.
&gt; 
&gt; Comment should say something like &quot;because this mistake is unlikely in new code, although a real worry during the transition&quot;.
&gt; 
&gt; &gt; Source/WebCore/platform/mac/SharedBufferMac.mm:101
&gt; &gt; +    return adoptNS(static_cast&lt;NSData *&gt;([[WebCoreSharedBufferData alloc] initWithSharedBuffer:this]));
&gt; 
&gt; Why is the cast to NSData * needed?

It’s because I didn’t make the NSDataRetainPtrWithoutImplicitConversionOperator constructor work on any RetainPtr that can be converted to RetainPtr&lt;NSData&gt;. I’ll fix that.

&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebDataSource.mm:408
&gt; &gt; -    return [mainResourceData-&gt;createNSData() autorelease];
&gt; &gt; +    return [mainResourceData-&gt;createNSData().leakRef() autorelease];
&gt; 
&gt; Does RetainPtr need a leakRef/autorelease function of some sort?

If this pattern is common enough, then maybe!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928441</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-12 12:53:15 -0700</bug_when>
    <thetext>Committed r155641: &lt;http://trac.webkit.org/changeset/155641&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001460</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-16 19:45:11 -0700</bug_when>
    <thetext>Is it time to get rid of NSDataRetainPtrWithoutImplicitConversionOperator? Getting rid of it makes https://bugs.webkit.org/show_bug.cgi?id=131782 easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001634</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-04-17 11:51:12 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Is it time to get rid of NSDataRetainPtrWithoutImplicitConversionOperator? Getting rid of it makes https://bugs.webkit.org/show_bug.cgi?id=131782 easier.

Absolutely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024378</commentid>
    <comment_count>8</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-07-23 16:30:53 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Is it time to get rid of NSDataRetainPtrWithoutImplicitConversionOperator? Getting rid of it makes https://bugs.webkit.org/show_bug.cgi?id=131782 easier.
&gt; 
&gt; Absolutely.

https://bugs.webkit.org/show_bug.cgi?id=135219</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211451</attachid>
            <date>2013-09-12 11:21:18 -0700</date>
            <delta_ts>2013-09-12 11:37:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121237-20130912112116.patch</filename>
            <type>text/plain</type>
            <size>20828</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYzMmNmNTdhNzA1YTI1
ZjBkMDQ5ODk4ZmQ4N2E1YjJkZTk1ODJlZi4uMzNiN2Q0YTVhNWI1MzJhNzdhYzFlM2RkYmIxMmU3
MmVkMDViNWZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDEzLTA5LTEyICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgU2hhcmVkQnVmZmVy
OjpjcmVhdGVOU0RhdGEgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cjxOU0RhdGE+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEyMzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIG1lbW9y
eSBtYW5hZ2VtZW50IGNsZWFyZWQgYW5kIGZpeGVzIGEgbGVhayBpbiBQREZEb2N1bWVudEltYWdl
OjpjcmVhdGVQREZEb2N1bWVudC4KKyAgICAgICAgV2UgdXNlIGEgUmV0YWluUHRyIHN1YmNsYXNz
IGFzIGEgc3RvcGdhcCBtZWFzdXJlIHRvIHByZXZlbnQgY29kZSB0aGF0IGRvZXMgW2J1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkgYXV0b3JlbGVhc2VdCisgICAgICAgIGZyb20gY29tcGlsaW5nIGFuZCBj
cmFzaGluZyBkdWUgdG8gdGhlIE5TRGF0YSBvYmplY3QgYmVpbmcgb3ZlcnJlbGVhc2VkLgorCisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlQnVmZmVyLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZU1JTUVUeXBl
cyk6CisgICAgICAgICogbG9hZGVyL21hYy9SZXNvdXJjZUJ1ZmZlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlQnVmZmVyOjpjcmVhdGVOU0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpOU0RhdGFS
ZXRhaW5QdHI6Ok5TRGF0YVJldGFpblB0cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVu
dEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgICgtW1dlYkhUTUxDb252ZXJ0ZXIgX2FkZEF0dGFjaG1lbnRG
b3JFbGVtZW50OlVSTDpuZWVkc1BhcmFncmFwaDp1c2VQbGFjZWhvbGRlcjpdKToKKyAgICAgICAg
KGZpbGVXcmFwcGVyRm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRGcmFnbWVudFdp
dGhSVEYpOgorICAgICAgICAoV2ViQ29yZTo6ZnJhZ21lbnRGcm9tV2ViQXJjaGl2ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1NoYXJlZEJ1ZmZlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKToKKworMjAxMy0wOS0xMiAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IHNob3VsZCByZXR1cm4gUmV0YWluUHRyPENGRGF0YVJlZj4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTIzMAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NTJlMDc2ZjcyN2I2ZmM5OGIzZTkzZDA4MzMxOGNkYzIzNzBmZTc4Zi4uMzFhZGU1Yjk2MmE5ZjZh
ZWM0ZDUwN2UxZWJjYzgzODJlOGRjNWZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDEzLTA5LTEyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisK
KyAgICAgICAgU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgc2hvdWxkIHJldHVybiBhIFJldGFp
blB0cjxOU0RhdGE+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjEyMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgZm9yIFdlYkNvcmUgY2hhbmdlcy4gVGhpcyBhbHNvIGZpeGVzIGEgbGVhayB3
aGVyZSB3ZSdkIGNyZWF0ZSBhbiBOU0ZpbGVXcmFwcGVyIGZyb20gTlNEYXRhIGJ1dCBuZXZlciBy
ZWxlYXNlIHRoZSBkYXRhLgorCisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgor
ICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRv
Y3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlv
bjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFd
KToKKwogMjAxMy0wOS0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2hhbmdlIGRlYnVnIGhvb2tzIHRvIHBhc3Mgc291cmNlSUQgYW5kIHBvc2l0aW9uIGluZm8g
dmlhIHRoZSBEZWJ1Z2dlckNhbGxGcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMTViM2QwYWNjYjlhNDdk
NTA1MmFjZWZmNWRiODczOTM3YjhmYTYzLi5kODQyYTA4NjdmYjkxNjczNGRlMTY5OGVkMGU2NjVl
MDdiYWI2MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTMtMDktMTIgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSBzaG91bGQgcmV0dXJuIGEgUmV0YWluUHRyPE5TRGF0YT4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTIzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29y
ZSBjaGFuZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSk6CisgICAg
ICAgICgtW1dLVmlldyBfc2V0UHJvbWlzZWREYXRhOldlYkNvcmU6OndpdGhGaWxlTmFtZTp3aXRo
RXh0ZW5zaW9uOndpdGhUaXRsZTp3aXRoVVJMOndpdGhWaXNpYmxlVVJMOndpdGhBcmNoaXZlOldl
YkNvcmU6OmZvclBhc3RlYm9hcmQ6XSk6CisgICAgICAgICgtW1dLVmlldyBuYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOl0pOgorCisyMDEzLTA5LTEyICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgU2hhcmVkQnVmZmVyOjpjcmVh
dGVDRkRhdGEgc2hvdWxkIHJldHVybiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMjMwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQnVmZmVyLmgKaW5kZXggYWUwNTQyYmQ3NmFjOWJjNTAwMWMzY2EwZjQx
OWViMjQ3NmZmYjAxNy4uZTM3NDU0ZTkyODBhMTk3OTQzMGRhYzRhZDRmMGE0ZGUwZjRjZTRiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmgKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogICAgIFBhc3NPd25QdHI8UHVyZ2VhYmxlQnVmZmVyPiByZWxlYXNlUHVyZ2VhYmxl
QnVmZmVyKCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgTlNEYXRhICpjcmVhdGVOU0RhdGEo
KTsKKyAgICBTaGFyZWRCdWZmZXI6Ok5TRGF0YVJldGFpblB0ciBjcmVhdGVOU0RhdGEoKTsKICNl
bmRpZgogI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNw
cAppbmRleCBmYmJiYWExZjY4NGQ2OGNiMGY0NTliMjZiYzQ3ZmI5OGQxYWRhNTc5Li4yYTVhZWU4
YTg3NDBhMGUxMTM4NDI4NjI0YjA4YzllMzNjYzFlOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0
YXRpYyBBcmNoaXZlTUlNRVR5cGVzTWFwJiBhcmNoaXZlTUlNRVR5cGVzKCkKICAgICAgICAgcmV0
dXJuIG1pbWVUeXBlczsKIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgJiYgVVNFKENGKQotICAg
IG1pbWVUeXBlcy5zZXQoImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIsIGFyY2hpdmVGYWN0b3J5
Q3JlYXRlPExlZ2FjeVdlYkFyY2hpdmU+KTsKKyAgICBtaW1lVHlwZXMuc2V0KCJhcHBsaWNhdGlv
bi94LXdlYmFyY2hpdmUiLCBzdGF0aWNfY2FzdDxSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbio+KCZh
cmNoaXZlRmFjdG9yeUNyZWF0ZTxMZWdhY3lXZWJBcmNoaXZlPikpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKE1IVE1MKQogICAgIG1pbWVUeXBlcy5zZXQoIm11bHRpcGFydC9yZWxhdGVkIiwgYXJjaGl2
ZUZhY3RvcnlDcmVhdGU8TUhUTUxBcmNoaXZlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL1Jlc291cmNlQnVmZmVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21h
Yy9SZXNvdXJjZUJ1ZmZlci5tbQppbmRleCAxM2UwY2IwODg3NzcwMWJlMzM5OTM1ODEyYWM4MmE1
NTczNGY4NDM1Li42NTdhYWZiNDYyMzIxYjFmNmJhMGFjZTRlOGU4MzJiZTNhYzk5NDVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlQnVmZmVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VCdWZmZXIubW0KQEAgLTI4LDcgKzI4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OU0RhdGEqIFJlc291cmNlQnVmZmVyOjpj
cmVhdGVOU0RhdGEoKQorU2hhcmVkQnVmZmVyOjpOU0RhdGFSZXRhaW5QdHIgUmVzb3VyY2VCdWZm
ZXI6OmNyZWF0ZU5TRGF0YSgpCiB7CiAgICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLT5jcmVhdGVO
U0RhdGEoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZDdh
OTM1NWVhYzYzMzlhZWQ2YTZlNmZlNjAxNWMxYjY4ODQyNDZhNC4uM2JiOWUwN2RmZjNhZDcxMGU5
ODhiMDliZTY0ZTQ1NTdiNmZmMGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKQEAgLTYzLDcgKzYzLDIwIEBAIHB1YmxpYzoKICAgICB+U2hhcmVkQnVmZmVyKCk7CiAg
ICAgCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIE5TRGF0YSAqY3JlYXRlTlNEYXRhKCk7CisgICAg
Ly8gRklYTUU6IFRoaXMgY2xhc3MgZXhpc3RzIGFzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgc28g
dGhhdCBjb2RlIHRoYXQgZG9lczoKKyAgICAvLyBbYnVmZmVyLT5jcmVhdGVOU0RhdGEoKSBhdXRv
cmVsZWFzZV0gd2lsbCBmYWlsIHRvIGNvbXBpbGUuCisgICAgLy8gT25jZSBib3RoIE1hYyBhbmQg
aU9TIGJ1aWxkcyB3aXRoIHRoaXMgY2hhbmdlIHdlIGNhbiBjaGFuZ2UgdGhlIHJldHVybiB0eXBl
IHRvIGJlIFJldGFpblB0cjxOU0RhdGE+LgorICAgIGNsYXNzIE5TRGF0YVJldGFpblB0ciA6IHB1
YmxpYyBSZXRhaW5QdHI8TlNEYXRhKj4geworICAgIHB1YmxpYzoKKyAgICAgICAgTlNEYXRhUmV0
YWluUHRyKFJldGFpblB0cjxOU0RhdGEqPiYmIG90aGVyKQorICAgICAgICAgICAgOiBSZXRhaW5Q
dHI8TlNEYXRhKj4oc3RkOjptb3ZlKG90aGVyKSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgZXhwbGljaXQgb3BlcmF0b3IgUHRyVHlwZSgpID0gZGVsZXRlOworICAgIH07CisKKyAg
ICBOU0RhdGFSZXRhaW5QdHIgY3JlYXRlTlNEYXRhKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiB3cmFwTlNEYXRhKE5TRGF0YSAqZGF0YSk7CiAjZW5kaWYKICNpZiBVU0Uo
Q0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERG
RG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDk4YThkN2FlMDQ5MWFmOThhNTAyZDFjYjVl
ZmY5YzEwYTJhZDZiNjAuLmM1Mjk3MmU2YmU2OTBmZGI2ZDA2NjQ1MTRjY2ZmZjllNTIwM2Q4MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0g
ICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW1tnZXRQREZEb2N1bWVudENsYXNzKCkgYWxsb2NdIGlu
aXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFk
b3B0TlMoW1tnZXRQREZEb2N1bWVudENsYXNzKCkgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29t
cHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMTA5YTFmOGU0NTQ2NDZlOGVjOGE3Nzk2NjBkZTZlOGVl
MzFlNDAxNC4uMGUwNTJkYjQ4YTZiNzVkMzJjMjhhY2ZjODVmNmE5YWIzN2RjNTVkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTgwMyw3ICs4
MDMsNyBAQCBzdGF0aWMgaW5saW5lIE5TU2hhZG93ICpfc2hhZG93Rm9yU2hhZG93U3R5bGUoTlNT
dHJpbmcgKnNoYWRvd1N0eWxlKQogICAgICAgICBpZiAoZmxhZyAmJiByZXNvdXJjZSAmJiBtaW1l
VHlwZSA9PSAidGV4dC9odG1sIikKICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwogICAgICAg
ICBpZiAocmVzb3VyY2UgJiYgIW5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBmaWxlV3JhcHBlciA9
IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpbcmVz
b3VyY2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkgYXV0b3JlbGVhc2VdXSBhdXRvcmVsZWFzZV07
CisgICAgICAgICAgICBmaWxlV3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0gYXV0b3JlbGVhc2VdOwogICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJl
ZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE3MzEsNyArMTczMSw3IEBAIHN0YXRpYyBOU0ZpbGVXcmFw
cGVyICpmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciAqZGF0YVNvdXJjZSwgTlNVUkwg
KlVSTCkKICAgICAKICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFT
b3VyY2UtPnN1YnJlc291cmNlKFVSTCk7CiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIE5T
RmlsZVdyYXBwZXIgKndyYXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6W3Jlc291cmNlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpIGF1dG9y
ZWxlYXNlXV0gYXV0b3JlbGVhc2VdOworICAgICAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0g
W1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291
cmNlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiAgICAgICAg
IE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVu
YW1lKCk7CiAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAg
ICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJj
ZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMWRiOWY5MDNjMmZkMTIxNjZhOGI0ZDNiNzUw
ODRhZmRjYTlkNjJiYS4uMmNhODViNjljMjk4YTYxMTU5MGM2YzNiNzc0MWY5Y2MwZjYzNjY3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTIy
Nyw5ICsyMjcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwm
IHBhc3RlYm9hcmRVUkwpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25z
dCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBOU0RhdGEgKmRhdGEg
PSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKLSAgICBOU0Zp
bGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOmRhdGFdIGF1dG9yZWxlYXNlXTsKLSAgICBbZGF0YSByZWxlYXNlXTsK
KyAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVy
cmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdl
LnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJu
IHdyYXBwZXI7CiB9CkBAIC0yODUsNyArMjgzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBh
c3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0
cmluZyhOU1JURkRQYm9hcmRUeXBlKSkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGEgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1
ZmZlckZvclR5cGUoTlNSVEZEUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKLSAgICAg
ICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6W2RhdGEtPmNyZWF0ZU5TRGF0YSgpIGF1dG9yZWxl
YXNlXSBkb2N1bWVudEF0dHJpYnV0ZXM6TlVMTF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBh
dHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpO
VUxMXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnBsYWluVGV4dCA9IFthdHRyaWJ1dGVkU3Ry
aW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
Mjk0LDcgKzI5Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0
JiB0ZXh0KQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1JURlBib2FyZFR5cGUp
KSkgewogICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZShOU1JURlBib2Fy
ZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1
dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEY6W2RhdGEtPmNyZWF0ZU5TRGF0YSgpIGF1dG9yZWxlYXNlXSBkb2N1bWVudEF0dHJpYnV0ZXM6
TlVMTF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6ZGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOk5VTExdKSkgewogICAgICAgICAgICAgICAg
IHRleHQucGxhaW5UZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0zNDksMTIgKzM0NywxMiBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50V2l0aFJURihGcmFt
ZSogZnJhbWUsIE5TU3RyaQogICAgIGlmIChwYXN0ZWJvYXJkVHlwZSA9PSBOU1JURkRQYm9hcmRU
eXBlKSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUoTlNSVEZEUGJvYXJk
VHlwZSwgcGFzdGVib3JkTmFtZSk7CiAgICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAgc3Ry
aW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpbZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkgYXV0b3JlbGVhc2VdIGRvY3VtZW50QXR0cmlidXRlczpOVUxMXTsKKyAgICAg
ICAgICAgIHN0cmluZyA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOk5VTExdOwogICAg
IH0KICAgICBpZiAoc3RyaW5nID09IG5pbCkgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZm
ZXJGb3JUeXBlKE5TUlRGUGJvYXJkVHlwZSwgcGFzdGVib3JkTmFtZSk7CiAgICAgICAgIGlmIChk
YXRhKQotICAgICAgICAgICAgc3RyaW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGOltkYXRhLT5jcmVhdGVOU0RhdGEoKSBhdXRvcmVsZWFzZV0gZG9jdW1lbnRBdHRy
aWJ1dGVzOk5VTExdOworICAgICAgICAgICAgc3RyaW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpOVUxMXTsKICAgICB9CiAgICAgaWYgKHN0cmluZyA9PSBuaWwpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC00MDQsNyArNDAyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnRGcm9tV2ViQXJjaGl2ZShGcmFtZSogZnJhbWUsIFBhc3NSZWYKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmNhblNo
b3dNSU1FVHlwZUFzSFRNTChNSU1FVHlwZSkpIHsKLSAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBtYXJrdXBTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpb
bWFpblJlc291cmNlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpIGF1dG9yZWxlYXNlXSBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1h
cmt1cFN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOm1haW5S
ZXNvdXJjZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10pOwogICAgICAgICAvLyBGSVhNRTogc2VlbXMgcG9vciBmb3JtIHRvIGRvIHRo
aXMgYXMgYSBzaWRlIGVmZmVjdCBvZiBnZXR0aW5nIGEgZG9jdW1lbnQgZnJhZ21lbnQKICAgICAg
ICAgaWYgKERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKSkKICAgICAgICAgICAgIGxvYWRlci0+YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhjb3Jl
QXJjaGl2ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCA1M2E0MGFhZTdmMWQxZmJhY2M0YzE4ZTQwMzdm
NTlmNDBkMDQ0NjA3Li40MGI0MWU4ODBlZjRhNTQ5NTBlNTFmYTYzYzBjNzJhMmUxZGRlYWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KQEAgLTEzNiw3ICsxMzYsNyBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKIAogbG9uZyBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKLSAgICBCT09MIGRpZFdy
aXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgc2V0RGF0YTpidWZmZXIgPyBbYnVmZmVyLT5j
cmVhdGVOU0RhdGEoKSBhdXRvcmVsZWFzZV0gOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07
CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8g
YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBl
XTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJu
IGNoYW5nZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2hhcmVkQnVmZmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NoYXJlZEJ1
ZmZlck1hYy5tbQppbmRleCA0NzUxNWIzYjIwYjEzZGZmZDljMmQ3ZGY3MDE0Yjc3ZDA4ZmJlMWRi
Li5lMGM5MTYzYzZlYzE3ZDZmN2RmNzJiODYxMzY1ZDU4OTBlODQ0NzE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2hhcmVkQnVmZmVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFyZWRCdWZmZXJNYWMubW0KQEAgLTk2LDkgKzk2LDkg
QEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShOU0Rh
dGEgKm5zRGF0YSkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcigoQ0ZEYXRh
UmVmKW5zRGF0YSkpOwogfQogCi1OU0RhdGEgKlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkK
K1NoYXJlZEJ1ZmZlcjo6TlNEYXRhUmV0YWluUHRyIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
KCkKIHsgICAgCi0gICAgcmV0dXJuIFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGlu
aXRXaXRoU2hhcmVkQnVmZmVyOnRoaXNdOworICAgIHJldHVybiBhZG9wdE5TKHN0YXRpY19jYXN0
PE5TRGF0YSAqPihbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aFNoYXJl
ZEJ1ZmZlcjp0aGlzXSkpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUNGRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0KaW5kZXggZWMwNWRkMmU2Mzg4ZGE0Y2RiYzc2NjJkMjczODAyZWQ2OTljODI3Ni4uYzVmMmMy
NzQ3MGQ3ZDEwOTAyMzQ0MGIxOTM0NjZjYjJhZDU0MzI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDA1LDcgKzQwNSw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywg
Q2xhc3Mgb2JqQ0NsCiAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
ID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAg
aWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBb
bWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBbbWFpblJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkubGVha1JlZigpIGF1dG9yZWxlYXNl
XTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tCmluZGV4IDZiNTM4YjgxNWYzNTZiMmE1ODViYmY1NTg5NDQ2MGZmYTRjNmNhZTUuLjlmMDlk
ZDQ5YmY0MDg2MDU3ODJiZTg1YTEyOGU2NTI2ODcwZmI0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzcsOSArMjM3
LDcgQEAgc3RhdGljIE5TTXV0YWJsZUFycmF5ICpuZXdBcnJheUJ5Q29uY2F0ZW5hdGluZ0FycmF5
cyhOU0FycmF5ICpmaXJzdCwgTlNBcnJheSAqc2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxh
eWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCiAgICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFy
c2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+
cGFyc2VkQXJjaGl2ZURhdGEoKTsKLSAgICAgICAgTlNEYXRhICpuc0RhdGEgPSBwYXJzZWRBcmNo
aXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKSA6IG5pbDsKLSAgICAg
ICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpuc0Rh
dGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgICAgICBbbnNEYXRhIHJlbGVh
c2VdOworICAgICAgICBOU1N0cmluZyAqcmVzdWx0ID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICAgICAg
cmV0dXJuIFtyZXN1bHQgYXV0b3JlbGVhc2VdOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggZDRmMjUyNWRkY2Q2N2IzOGEwODQwMmY3NDBmMDA1
ZDdlOTY0ZjhiZi4uMGIyYTYyZDgxOTliZmY3NGU1N2M4NDdiMzdmM2M5OTVhYmFkM2E1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNjUyLDEwICszNjUy
LDkgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc0V4dGVuc2lvbk9yRXF1aXZhbGVudChOU1N0cmluZyAq
ZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24KICAgICAKICAgICBpZiAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2UqIHRpZmZSZXNvdXJjZSA9IFtzZWxmIHByb21pc2VkRHJhZ1RJRkZEYXRhU291cmNl
XSkgewogICAgICAgICBpZiAoUmVzb3VyY2VCdWZmZXIgKmJ1ZmZlciA9IHN0YXRpY19jYXN0PENh
Y2hlZFJlc291cmNlKj4odGlmZlJlc291cmNlKS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAgICAg
ICAgICAgTlNEYXRhICpkYXRhID0gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAg
IE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gdGlmZlJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJM
UmVzcG9uc2UoKTsKICAgICAgICAgICAgIGRyYWdnaW5nSW1hZ2VVUkwgPSBbcmVzcG9uc2UgVVJM
XTsKLSAgICAgICAgICAgIHdyYXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgd3Jh
cHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiAgICAgICAgICAg
ICBOU1N0cmluZyogZmlsZW5hbWUgPSBbcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWVdOwogICAg
ICAgICAgICAgTlNTdHJpbmcqIHRydWVFeHRlbnNpb24odGlmZlJlc291cmNlLT5pbWFnZSgpLT5m
aWxlbmFtZUV4dGVuc2lvbigpKTsKICAgICAgICAgICAgIGlmICghbWF0Y2hlc0V4dGVuc2lvbk9y
RXF1aXZhbGVudChmaWxlbmFtZSwgdHJ1ZUV4dGVuc2lvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCBlNDI1OThhOGVmMjg0YThiM2U1NmFkZmVkNjhiZmI2
MmE5ZWMxMmE2Li5hNGVjMzUzMTVhZmQ0YmY0NWRjMmM1ZGU2NDcyMGEzMTYwN2M5MGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE3NSw3ICsxNzUsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5ID0gICAgICAg
ICAgQCJXZWJSZXNvdXJjZVJlc3BvbnNlIgogICAgIAogICAgIGlmIChyZXNvdXJjZSkgewogICAg
ICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKSkKLSAgICAgICAgICAgIGRhdGEgPSBbcmVzb3VyY2Ut
PmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkgYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpOwogICAgICAgICB1cmwgPSBy
ZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7
CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKQEAgLTIw
OSw3ICsyMDksNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJSZXNvdXJjZVJlc3BvbnNl
S2V5ID0gICAgICAgICAgQCJXZWJSZXNvdXJjZVJlc3BvbnNlIgogICAgICAgICByZXR1cm4gbmls
OwogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBbX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLT5jcmVh
dGVOU0RhdGEoKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmxlYWtSZWYoKSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKE5TVVJMICopVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KaW5kZXggNjIwOTU5NjJjZmE0MzljZDhkYmY2ZDI0NDY3NTQ4NmZiZGIwYjU0ZC4uNzdlZDcw
YzZmOWNiOWU5N2Q0NWNlOWIyZjZhMWE1ZGEzMzc1ZDljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtNjYxLDcgKzY2MSw3IEBAIFdFQkNPUkVfQ09N
TUFORCh5YW5rQW5kU2VsZWN0KQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOl9k
YXRhLT5fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6TlNTdHJp
bmdQYm9hcmRUeXBlXTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBfZGF0YS0+X3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERh
dGE6YnVmZmVyID8gW2J1ZmZlci0+Y3JlYXRlTlNEYXRhKCkgYXV0b3JlbGVhc2VdIDogbmlsIGZv
clR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOworICAgICAgICAgICAgW3Bhc3RlYm9hcmQg
c2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5
cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJu
IFlFUzsKQEAgLTI3OTEsNyArMjc5MSw3IEBAIHN0YXRpYyBib29sIG1hdGNoZXNFeHRlbnNpb25P
ckVxdWl2YWxlbnQoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uCiAgICAg
W3Bhc3RlYm9hcmQgc2V0UHJvcGVydHlMaXN0OltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpleHRl
bnNpb25dIGZvclR5cGU6TlNGaWxlc1Byb21pc2VQYm9hcmRUeXBlXTsKIAogICAgIGlmIChhcmNo
aXZlQnVmZmVyKQotICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOlthcmNoaXZlQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKSBhdXRvcmVsZWFzZV0gZm9yVHlwZTpQYXN0ZWJvYXJkVHlwZXM6OldlYkFy
Y2hpdmVQYm9hcmRUeXBlXTsKKyAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTphcmNoaXZlQnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOlBhc3RlYm9hcmRUeXBlczo6V2ViQXJj
aGl2ZVBib2FyZFR5cGVdOwogCiAgICAgX2RhdGEtPl9wcm9taXNlZEltYWdlID0gaW1hZ2U7CiAg
ICAgX2RhdGEtPl9wcm9taXNlZEZpbGVuYW1lID0gZmlsZW5hbWU7CkBAIC0yODU5LDkgKzI4NTks
OSBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3Ry
aW5nICpwYXRoKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgCiAgICAgaWYgKF9k
YXRhLT5fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gYWRvcHROUyhfZGF0YS0+X3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpOworICAgICAgICBkYXRhID0gX2Rh
dGEtPl9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFw
cGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpkYXRhLmdldCgpXSk7Ci0gICAgICAgIFt3cmFwcGVyLmdldCgpIHNldFByZWZlcnJl
ZEZpbGVuYW1lOl9kYXRhLT5fcHJvbWlzZWRGaWxlbmFtZV07CisgICAgICAgIFt3cmFwcGVyIHNl
dFByZWZlcnJlZEZpbGVuYW1lOl9kYXRhLT5fcHJvbWlzZWRGaWxlbmFtZV07CiAgICAgfQogICAg
IAogICAgIGlmICghd3JhcHBlcikgewo=
</data>
<flag name="review"
          id="233552"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>