<?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>109032</bug_id>
          
          <creation_ts>2013-02-06 02:37:27 -0800</creation_ts>
          <short_desc>[WK2][Unix][Refactoring] Get rid of socket creation code duplicates</short_desc>
          <delta_ts>2013-07-04 17:03:17 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>110978</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108832</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826261</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-06 02:37:27 -0800</bug_when>
    <thetext>The socket creation code is duplicated in a lot places, let&apos;s get rid of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826265</commentid>
    <comment_count>1</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2013-02-06 02:45:55 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; The socket creation code is duplicated in a lot places, let&apos;s get rid of that.

What socket creation code are you referring to here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826377</commentid>
    <comment_count>2</comment_count>
      <attachid>186838</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-06 05:55:43 -0800</bug_when>
    <thetext>Created attachment 186838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826381</commentid>
    <comment_count>3</comment_count>
      <attachid>186838</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-06 06:05:55 -0800</bug_when>
    <thetext>Comment on attachment 186838
Patch

Attachment 186838 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16389253</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826419</commentid>
    <comment_count>4</comment_count>
      <attachid>186849</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-06 07:07:01 -0800</bug_when>
    <thetext>Created attachment 186849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828548</commentid>
    <comment_count>5</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-08 07:18:36 -0800</bug_when>
    <thetext>Anybody? Although we have owners I think it&apos;s better if somebody how is a maintainer of an affected port would do an informal review first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828570</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-08 07:48:35 -0800</bug_when>
    <thetext>Carlos, the one who would know the most about this code, is on vacation until Monday. Do you think you could get a review from him then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828576</commentid>
    <comment_count>7</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-08 07:52:55 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Carlos, the one who would know the most about this code, is on vacation until Monday. Do you think you could get a review from him then?

Sure, that&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828996</commentid>
    <comment_count>8</comment_count>
      <attachid>186849</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-09 03:16:24 -0800</bug_when>
    <thetext>Comment on attachment 186849
Patch

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

This is a great cleanup, thanks!. Every time I see that code duplicated I think we should refactor it. I have a couple of questions, though.

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:142
&gt; +        while (fcntl(sockets[0], F_SETFD, FD_CLOEXEC) == -1) {

I guess this should be sockets[i].

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:162
&gt; -    RefPtr&lt;WebProcessConnection&gt; connection = WebProcessConnection::create(sockets[1]);
&gt; +    RefPtr&lt;WebProcessConnection&gt; connection = WebProcessConnection::create(serverIdentifier);

Is there any reason why you are doing the opposite of what the previous code did? serverIdentifier is sockets[0], it doesn&apos;t really matter, since both sockets are indistinguishable, but I&apos;m curious.

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:165
&gt; -    CoreIPC::Attachment clientSocket(sockets[0]);
&gt; +    CoreIPC::Attachment clientSocket(clientIdentifier);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829039</commentid>
    <comment_count>9</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-09 09:01:51 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 186849 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186849&amp;action=review
&gt; 
&gt; This is a great cleanup, thanks!. Every time I see that code duplicated I think we should refactor it. I have a couple of questions, though.
&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:142
&gt; &gt; +        while (fcntl(sockets[0], F_SETFD, FD_CLOEXEC) == -1) {
&gt; 
&gt; I guess this should be sockets[i].

Oops. Sure, will fix.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:162
&gt; &gt; -    RefPtr&lt;WebProcessConnection&gt; connection = WebProcessConnection::create(sockets[1]);
&gt; &gt; +    RefPtr&lt;WebProcessConnection&gt; connection = WebProcessConnection::create(serverIdentifier);
&gt; 
&gt; Is there any reason why you are doing the opposite of what the previous code did? serverIdentifier is sockets[0], it doesn&apos;t really matter, since both sockets are indistinguishable, but I&apos;m curious.

No reason, just I was finding it more straightforward to assign the first one to the first argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829119</commentid>
    <comment_count>10</comment_count>
      <attachid>187444</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-09 13:43:45 -0800</bug_when>
    <thetext>Created attachment 187444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829456</commentid>
    <comment_count>11</comment_count>
      <attachid>187444</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-10 23:55:49 -0800</bug_when>
    <thetext>Comment on attachment 187444
Patch

LGTM, thanks! We need an owner to r+ this, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838817</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-21 14:04:27 -0800</bug_when>
    <thetext>Anders should look at this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843028</commentid>
    <comment_count>13</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-27 07:10:49 -0800</bug_when>
    <thetext>As requested in https://bugs.webkit.org/show_bug.cgi?id=110093#c6 I am going to unify these ipc stuff across every port.

*** This bug has been marked as a duplicate of bug 110978 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186838</attachid>
            <date>2013-02-06 05:55:43 -0800</date>
            <delta_ts>2013-02-06 07:06:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109032-20130206145212.patch</filename>
            <type>text/plain</type>
            <size>20003</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjNmNGJiZWMxZTQ1YjFi
ZDMwM2Q3NDUwZDMyNjMwN2QwNGNlMDk1NS4uY2I0ZjgyNzE3YzM3NjU2YjVlZDVkZjM1Nzc2MDk1
MDUyNDljMjk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAyLTA2ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXVtVbml4XVtS
ZWZhY3RvcmluZ10gR2V0IHJpZCBvZiBzb2NrZXQgY3JlYXRpb24gY29kZSBkdXBsaWNhdGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwMzIKKwor
ICAgICAgICBNb3ZlIHRoZSBzb2NrZXRwYWlyIGNyZWF0aW9uIHJlbGF0ZWQgbG9naWMgdG8gQ29u
bmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMuCisgICAgICAgIE9uIFdp
bmRvd3Mgd2UgYWxyZWFkeSBoYXZlIHRoaXMgc3RhdGljIG1ldGhvZCBzbyBpdCB3YXMgaGFuZHkg
Zm9yIHRoaXMgcHVycG9zZS4KKyAgICAgICAgVGhlIHBhdGNoIG1hZGVzIHRoZSBmb2xsb3dpbmcg
Y2hhbmdlcyBhcGFydCBmcm9tIHJlZmFjdG9yaW5nOgorICAgICAgICAxLiBOZXZlciB1c2UgU09D
S19ER1JBTS4gSW4gdGhlIHBhc3Qgd2UgaGF2ZSBzb21lIGRlYmF0ZXMgYWJvdXQgdGhpcyBhbmQg
dGhlIGdlbmVyYWwKKyAgICAgICAgYWR2aWNlIGZyb20gdGhlIEFwcGxlIGZvbGtzIHdhcyB0byBh
bHdheXMgdXNlIGEgc3RyZWFtIHNvY2tldCB0byBiZSBhYmxlIHRvIGRldGVjdCBlcnJvcnMuCisg
ICAgICAgIFNpbmNlIG9uIG5ld2VyIGtlcm5lbHMgd2UgaGF2ZSBTT0NLX1NFUVBBQ0tFVCBhbnl3
YXkgd2hpY2ggaGF2ZSBib3RoIHRoZSBhZHZhbnRhZ2VzIG9mIGEKKyAgICAgICAgc3RyZWFtIGFu
ZCBhIGRhdGFncmFtIGNoYW5uZWwsIHdlIGNhbiBtYWtlIGEgY29tcHJvbWlzZSBvbiB0aGF0Lgor
ICAgICAgICAyLiBVbmlmeSB0aGUgd2F5IG9mIGRyb3BwaW5nIHVubmVlZGVkIHNvY2tldCBwZXJt
aXNzaW9ucy4gV2UgY2FuIGFsd2F5cyBzZXQgdGhlIEZEX0NMT0VYRUMKKyAgICAgICAgZmxhZyBv
biB0aGUgc29ja2V0cyBpbiB0aGUgcGFyZW50LCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNsb3Nl
IHRoZSBzZXJ2ZXIgc29ja2V0IGluIHRoZSBjaGlsZAorICAgICAgICBhZnRlciBhIGZvcmsuIEFs
c28gd2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgaW4gY2xvc2luZyB0aGUgY2hpbGQgc29ja2V0IGlu
IHRoZSBwYXJlbnQgcHJvY2VzcworICAgICAgICB3aGVuIHBvc3NpYmxlLiBUaGlzIHdhcyB0aGVy
ZSBhdCBzYW1lIHBsYWNlcyBhbmQgbWlzc2luZyBhdCBvdGhlcnMuIEZ1cnRoZXJtb3JlIEkgYWRk
ZWQgYW5vdGhlcgorICAgICAgICBoZWxwZXIgdG8gY2xvc2UgdGhlIHNvY2tldCwgYmVjYXVzZSBj
bG9zZSBzaG91bGQgYmUgY2hlY2tlZCBmb3IgaW50ZXJydXB0LgorCisgICAgICAgIDMuIEFsd2F5
cyBtYWtlIHN1cmUgdG8gY2hlY2sgaW50ZXJydXB0cyBvbiBzeXNjYWxscyB3aGVyZSBpdCBpcyBu
ZWNlc3NhcnkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKENvbm5lY3Rpb24p
OgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6Cisg
ICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjbG9zZVNvY2tldCk6IEhlbHBlciBmb3IgY2xv
c2luZyBhIHNvY2tldC4KKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6Q29u
bmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMpOgorICAgICAgICAqIFBs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y2hpbGRTZXR1cEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Y2hpbGRGaW5pc2hlZEZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorCiAy
MDEzLTAyLTA1ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbV0syXVtFRkxdIFNldCB1cCBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCAxZDljMmE0NWQyMjliMDgxMWY3Y2JmZWEw
MWUwZmU3MDkyYmQ4OGE5Li44NThkMjg1M2VlNGEwN2UwOTAzNzcxMWIxOTg5ODRkYzFiOTcxNDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAt
MTM5LDYgKzEzOSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxs
KElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gIWlkZW50aWZpZXI7IH0KICNlbGlmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHR5cGVkZWYgaW50IElkZW50aWZpZXI7CisgICAg
c3RhdGljIGJvb2wgY3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSWRlbnRpZmllciYg
c2VydmVySWRlbnRpZmllciwgSWRlbnRpZmllciYgY2xpZW50SWRlbnRpZmllcik7CisgICAgc3Rh
dGljIHZvaWQgY2xvc2VTb2NrZXQoSWRlbnRpZmllcik7CiAgICAgc3RhdGljIGJvb2wgaWRlbnRp
ZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggYzZhMTg2ZWUxOWUxN2E1MWJiMjlmMDIxNDgw
MWJjMzdiYjA4MjM1OC4uZTA2YTBiODZiMzA3NTkwZWMyMjUyOGU3N2IzZGFkMDhiZDkwNDY5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwCkBAIC00NSw2ICs0NSwxMyBAQAogI2luY2x1ZGUgPGdsaWIuaD4KICNl
bmRpZgogCisvLyBPbiBRTlggU09DS19TRVFQQUNLRVQgZG9lcyBub3Qgd29yayAoYWx0aG91Z2gg
aXQgaXMgZGVmaW5lZCksIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTU1NTMuCisjaWYgZGVmaW5lZChTT0NLX1NFUVBBQ0tFVCkgJiYgIU9TKFFOWCkKKyNkZWZp
bmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKKyNlbHNlCisjZGVmaW5lIFNPQ0tFVF9UWVBF
IFNPQ0tfU1RSRUFNCisjZW5kaWYKKwogbmFtZXNwYWNlIENvcmVJUEMgewogCiBzdGF0aWMgY29u
c3Qgc2l6ZV90IG1lc3NhZ2VNYXhTaXplID0gNDA5NjsKQEAgLTExOCw2ICsxMjUsMzQgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNOdWxsOwogfTsKIAordm9pZCBDb25uZWN0aW9uOjpjbG9zZVNv
Y2tldChDb25uZWN0aW9uOjpJZGVudGlmaWVyIHNvY2tldCkKK3sKKyAgICBjb25zdCB1bnNpZ25l
ZCBrTWF4UmV0cmllcyA9IDE2OworICAgIGZvciAodW5zaWduZWQgcmV0cmllcyA9IDA7IHJldHJp
ZXMgPCBrTWF4UmV0cmllcyAmJiBjbG9zZShzb2NrZXQpID09IC0xICYmIGVycm5vID09IEVJTlRS
OyArK3JldHJpZXMpIHsgfQorfQorCitib29sIENvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENs
aWVudElkZW50aWZpZXJzKENvbm5lY3Rpb246OklkZW50aWZpZXImIHNlcnZlcklkZW50aWZpZXIs
IENvbm5lY3Rpb246OklkZW50aWZpZXImIGNsaWVudElkZW50aWZpZXIpCit7CisgICAgaW50IHNv
Y2tldHNbMl07CisgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNv
Y2tldHMpID09IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBBdm9pZCBleHBv
c2luZyB0aGUgc2VydmVyIHNvY2tldCBmb3IgdGhlIGNoaWxkIHByb2Nlc3Mgb3IgdGhlIGNsaWVu
dCBzb2NrZXQgdG8gYW55IGZ1dHVyZSBjaGlsZC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgMjsgKytpKSB7CisgICAgICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBGX1NFVEZELCBG
RF9DTE9FWEVDKSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Cisg
ICAgICAgICAgICAgICAgY2xvc2VTb2NrZXQoc29ja2V0c1swXSk7CisgICAgICAgICAgICAgICAg
Y2xvc2VTb2NrZXQoc29ja2V0c1sxXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgc2VydmVySWRlbnRpZmllciA9
IHNvY2tldHNbMF07CisgICAgY2xpZW50SWRlbnRpZmllciA9IHNvY2tldHNbMV07CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1Jbml0aWFsaXplKElkZW50
aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBtX3NvY2tldERlc2NyaXB0b3IgPSBpZGVudGlmaWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKaW5k
ZXggMjBkMDk0YWZiMmJkYTY5MmVmYjBlYWQ5N2UxNjk1YjZlZjUwZTk3Mi4uMGM3MWYwYmM4OGUy
NDg1MjFkN2JmMmE2MjFhMmIzMmU3MjU0NDFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCkBAIC00MywyNCArNDMsNiBAQAogI2luY2x1ZGUg
PGNydF9leHRlcm5zLmg+CiAjZW5kaWYKIAotI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQot
I2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvcmVz
b3VyY2UuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0K
LSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tF
VAotI2Vsc2UKLSNpZiBQTEFURk9STShHVEspCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RS
RUFNCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX0RHUkFNCi0jZW5kaWYKLSNlbmRp
ZiAvLyBTT0NLX1NFUVBBQ0tFVAotI2VuZGlmIC8vIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQot
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNzMs
MzYgKzE1NSwxNCBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCkKICAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwg
TUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oY2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uKSwgMCk7CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBpbnQgc29j
a2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29j
a2V0cykgPT0gLTEpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHBsdWdpbiBwcm9jZXNzIHNv
Y2tldCB0byB0aGUgd2ViIHByb2Nlc3MuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZf
U0VURkQsIEZEX0NMT0VYRUMpICA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIp
IHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUg
KGNsb3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAg
ICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBl
eHBvc2UgdGhlIHdlYiBwcm9jZXNzIHNvY2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nl
c3Nlcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykg
PT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9
PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29j
a2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
c2VydmVySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcjsKKyAgICBib29sIHN1Y2Nlc3MgPSBD
b3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhzZXJ2
ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nl
c3MsIHN1Y2Nlc3MpOwogCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0
aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzb2NrZXRzWzFdKTsKKyAgICBSZWZQ
dHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlKHNlcnZlcklkZW50aWZpZXIpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50
IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVu
dFNvY2tldChjbGllbnRJZGVudGlmaWVyKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uKSwgMCk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9j
ZXNzLmNwcAppbmRleCBlNTZjMTVlOTMyNWVlYzQyNTk5NmJkNzJjMDg2MzNhOWE2NzdkYTU5Li5j
MmRlYWZhOTU2YjBhYzk5ZTZhYjkxYjA5NGE0MWM0MTE3YmYyYmY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vz
cy5jcHAKQEAgLTQwLDI0ICs0MCw2IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRp
ZgogCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNp
bmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5
cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2lmZGVmIFNPQ0tfU0VRUEFDS0VU
Ci0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2lmIFBMQVRGT1JN
KEdUSykKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNP
Q0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCi0j
ZW5kaWYgLy8gVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEzMSwzNiArMTEzLDE0IEBAIHZvaWQgU2hh
cmVkV29ya2VyUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIENvcmVJ
UEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01B
S0VfU0VORCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihj
bGllbnRQb3J0KSwgMCk7CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBpbnQg
c29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwg
c29ja2V0cykgPT0gLTEpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHNoYXJlZCB3b3JrZXIg
cHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAgIHdoaWxlIChmY250bChzb2Nr
ZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5v
ICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9
Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0g
RUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gRG9uJ3QgZXhwb3NlIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc29ja2V0IHRvIHBvc3Np
YmxlIGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBG
X1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIp
IHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUg
KGNsb3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAg
ICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZWZQdHI8V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlKHNvY2tldHNbMV0pOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2Vy
dmVySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcjsKKyAgICBib29sIHN1Y2Nlc3MgPSBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhzZXJ2ZXJJ
ZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3Ms
IHN1Y2Nlc3MpOworCisgICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9u
ID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzZXJ2ZXJJZGVudGlmaWVyKTsKICAgICBt
X3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwogCi0g
ICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0c1swXSk7CisgICAgQ29y
ZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoY2xpZW50SWRlbnRpZmllcik7CiAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAwKTsK
ICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAppbmRl
eCBiYmQ4YmEzMTZkMDhmZDM3NzZiYWI2ZmViZjMxMDM2N2IwMzAwODdjLi4zZGZmNWVkNDQwNTky
MTI5MjRlZWQwYmFkNDI4NjcyNWQ4ZGZhMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCkBA
IC0zNiwxMSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBQcm9jZXNzTGF1bmNo
ZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2Nr
ZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBzb2NrZXRzKSA8IDApIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlm
aWVyOworICAgIGJvb2wgc3VjY2VzcyA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZl
ckFuZENsaWVudElkZW50aWZpZXJzKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIp
OworICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICBDU3RyaW5nIGV4
ZWN1dGFibGVQYXRoLCBwbHVnaW5QYXRoOwogICAgIHN3aXRjaCAobV9sYXVuY2hPcHRpb25zLnBy
b2Nlc3NUeXBlKSB7CkBAIC02NCw3ICs2Miw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKICAgICB9CiAKICAgICBjaGFyIHNvY2tldFs1XTsKLSAgICBzbnByaW50Zihz
b2NrZXQsIHNpemVvZihzb2NrZXQpLCAiJWQiLCBzb2NrZXRzWzBdKTsKKyAgICBzbnByaW50Zihz
b2NrZXQsIHNpemVvZihzb2NrZXQpLCAiJWQiLCBjbGllbnRJZGVudGlmaWVyKTsKIAogI2lmbmRl
ZiBOREVCVUcKICAgICBDU3RyaW5nIHByZWZpeGVkRXhlY3V0YWJsZVBhdGg7CkBAIC04MCw3ICs3
OCw2IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAvLyB0aGUg
Zm9yaygpIGRvZXNuJ3QgaW5oZXJpdCB0aGUgcnVubmluZyB0aHJlYWRzLgogICAgIHBpZF90IHBp
ZCA9IGZvcmsoKTsKICAgICBpZiAoIXBpZCkgeyAvLyBDaGlsZCBwcm9jZXNzLgotICAgICAgICBj
bG9zZShzb2NrZXRzWzFdKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGlmICghcHJlZml4ZWRF
eGVjdXRhYmxlUGF0aC5pc051bGwoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
bm90IGNvcnJlY3QgYmVjYXVzZSBpdCBpbnZva2VzIHRoZSBzaGVsbApAQCAtOTUsMTAgKzkyLDEw
IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICNlbmRpZgogICAgICAg
ICBleGVjbChleGVjdXRhYmxlUGF0aC5kYXRhKCksIGV4ZWN1dGFibGVQYXRoLmRhdGEoKSwgc29j
a2V0LCBwbHVnaW5QYXRoLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KDApKTsKICAgICB9IGVs
c2UgaWYgKHBpZCA+IDApIHsgLy8gcGFyZW50IHByb2Nlc3M7Ci0gICAgICAgIGNsb3NlKHNvY2tl
dHNbMF0pOworICAgICAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpjbG9zZVNvY2tldChjbGllbnRJ
ZGVudGlmaWVyKTsKICAgICAgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsKICAgICAgICAg
Ly8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8g
dGhlIG1haW4gcnVuIGxvb3AuCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmlu
ZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQs
IHNvY2tldHNbMV0pKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQ
cm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBpZCwgc2Vy
dmVySWRlbnRpZmllcikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKaW5kZXggN2M3ZjAz
YWFkZWViNDBkNzI0ZTY4MGJmNzY5NDE2ODFlM2FmOWU4Mi4uMDlmMDkxMGVmMjhhMTY3MDc5NThk
YjA1ZjI4ZGQ5NWY0ODhlM2ZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcApAQCAtNDUsMjEg
KzQ1LDEyIEBACiAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiAjZW5kaWYKIAotI2lmZGVmIFNPQ0tf
U0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2Rl
ZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHZvaWQgY2hpbGRTZXR1cEZ1
bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIGludCBzb2NrZXQgPSBHUE9JTlRFUl9U
T19JTlQodXNlckRhdGEpOwotICAgIGNsb3NlKHNvY2tldCk7Ci0KICAgICAvLyBNYWtlIGNoaWxk
IHByb2Nlc3MgaW5oZXJpdCBwYXJlbnQncyBsb2NhbGUuCiAgICAgZ19zZXRlbnYoIkxDX0FMTCIs
IHNldGxvY2FsZShMQ19BTEwsIDApLCBUUlVFKTsKIH0KQEAgLTY5LDE5ICs2MCwxNCBAQCBzdGF0
aWMgdm9pZCBjaGlsZEZpbmlzaGVkRnVuY3Rpb24oR1BpZCwgZ2ludCBzdGF0dXMsIGdwb2ludGVy
IHVzZXJEYXRhKQogICAgIGlmIChXSUZFWElURUQoc3RhdHVzKSAmJiAhV0VYSVRTVEFUVVMoc3Rh
dHVzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2xvc2UoR1BPSU5URVJfVE9fSU5UKHVzZXJE
YXRhKSk7CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y2xvc2VTb2NrZXQoR1BPSU5URVJfVE9f
SU5UKHVzZXJEYXRhKSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KCkKIHsKLSAgICBHUGlkIHBpZCA9IDA7Ci0KLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAo
c29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPCAwKSB7Ci0gICAg
ICAgIGdfcHJpbnRlcnIoIkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQ6ICVzLlxuIiwgZ19zdHJl
cnJvcihlcnJubykpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHNlcnZlcklk
ZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXI7CisgICAgYm9vbCBzdWNjZXNzID0gQ29yZUlQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoc2VydmVySWRlbnRp
ZmllciwgY2xpZW50SWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNj
ZXNzKTsKIAogICAgIFN0cmluZyBleGVjdXRhYmxlUGF0aCwgcGx1Z2luUGF0aDsKICAgICBDU3Ry
aW5nIHJlYWxFeGVjdXRhYmxlUGF0aCwgcmVhbFBsdWdpblBhdGg7CkBAIC05NCwyOSArODAsMzAg
QEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIH0KIAogICAgIHJl
YWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0
aCk7Ci0gICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2Nr
ZXRzWzBdKSk7CisgICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQi
LCBjbGllbnRJZGVudGlmaWVyKSk7CiAgICAgY2hhciogYXJndls0XTsKICAgICBhcmd2WzBdID0g
Y29uc3RfY2FzdDxjaGFyKj4ocmVhbEV4ZWN1dGFibGVQYXRoLmRhdGEoKSk7CiAgICAgYXJndlsx
XSA9IHNvY2tldC5nZXQoKTsKICAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbFBs
dWdpblBhdGguZGF0YSgpKTsKICAgICBhcmd2WzNdID0gMDsKIAorICAgIEdQaWQgcGlkID0gMDsK
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaW50IHNwYXduRmxhZ3MgPSBHX1NQQVdO
X0xFQVZFX0RFU0NSSVBUT1JTX09QRU4gfCBHX1NQQVdOX0RPX05PVF9SRUFQX0NISUxEOwotICAg
IGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBzdGF0aWNfY2FzdDxHU3Bhd25GbGFncz4o
c3Bhd25GbGFncyksIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tldHNb
MV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CisgICAgaWYgKCFnX3NwYXduX2FzeW5jKDAs
IGFyZ3YsIDAsIHN0YXRpY19jYXN0PEdTcGF3bkZsYWdzPihzcGF3bkZsYWdzKSwgY2hpbGRTZXR1
cEZ1bmN0aW9uLCAwLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAgICAgIGdfcHJpbnRl
cnIoIlVuYWJsZSB0byBmb3JrIGEgbmV3IFdlYlByb2Nlc3M6ICVzLlxuIiwgZXJyb3ItPm1lc3Nh
Z2UpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBjbG9zZShz
b2NrZXRzWzBdKTsKKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpjbG9zZVNvY2tldChjbGllbnRJ
ZGVudGlmaWVyKTsKICAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcGlkOwogCiAgICAgLy8gTW9u
aXRvciB0aGUgY2hpbGQgcHJvY2VzcywgaXQgY2FsbHMgd2FpdHBpZCB0byBwcmV2ZW50IHRoZSBj
aGlsZCBwcm9jZXNzIGZyb20gYmVjb21taW5nIGEgem9tYmllLAogICAgIC8vIGFuZCBpdCBhbGxv
d3MgdXMgdG8gY2xvc2UgdGhlIHNvY2tldCB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGNyYXNoZXMu
Ci0gICAgZ19jaGlsZF93YXRjaF9hZGQobV9wcm9jZXNzSWRlbnRpZmllciwgY2hpbGRGaW5pc2hl
ZEZ1bmN0aW9uLCBHSU5UX1RPX1BPSU5URVIoc29ja2V0c1sxXSkpOworICAgIGdfY2hpbGRfd2F0
Y2hfYWRkKG1fcHJvY2Vzc0lkZW50aWZpZXIsIGNoaWxkRmluaXNoZWRGdW5jdGlvbiwgR0lOVF9U
T19QT0lOVEVSKHNlcnZlcklkZW50aWZpZXIpKTsKIAogICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxh
dW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgot
ICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRG
aW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRz
WzFdKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNo
ZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lkZW50aWZpZXIs
IHNlcnZlcklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnRlcm1pbmF0
ZVByb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKaW5kZXggMzZiM2NkYmFlN2RhYTkxZjRhMDMz
ZTdmNzhhNTI0Y2UyMTgwMzkzYy4uNjg3NDg2M2E1M2RmNGM5ODFkNzU0YTVjNTliZGYyMjZiNDgz
OGFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1By
b2Nlc3NMYXVuY2hlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCkBAIC0zNywyMSArMzcsMTIgQEAKICNpbmNsdWRl
IDxRU3RyaW5nPgogI2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SdW5Mb29wLmg+CisjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAotI2lmIGRlZmluZWQoUV9PU19VTklYKQotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8
ZmNudGwuaD4KLSNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNs
dWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3Nv
Y2tldC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KICNpZiBkZWZpbmVkKFFfT1Nf
TElOVVgpCiAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CkBAIC03
MiwxMyArNjMsNiBAQAogZXh0ZXJuICJDIiBrZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3Rl
cjIobWFjaF9wb3J0X3QsIG5hbWVfdCwgbWFjaF9wb3J0X3QsIHVpbnQ2NF90KTsKICNlbmRpZgog
Ci0vLyBmb3IgUU5YIHdlIG5lZWQgU09DS19ER1JBTSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1MwotI2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYm
ICFkZWZpbmVkKFFfT1NfTUFDWCkgJiYgIU9TKFFOWCkKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09D
S19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRp
ZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
NDEsMzYgKzEyNSwxOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAg
ICAgQVNTRVJUX1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsKIAogICAgIGNvbW1hbmRM
aW5lID0gY29tbWFuZExpbmUuYXJnKHNlcnZpY2VOYW1lKTsKLSNlbGlmIE9TKFdJTkRPV1MpCisj
ZWxzZQogICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdG9yLCBjbGll
bnRJZGVudGlmaWVyOwogICAgIGlmICghQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVy
QW5kQ2xpZW50SWRlbnRpZmllcnMoY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyKSkgewogICAg
ICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaGVyZT8KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHF1
bG9uZ2xvbmcoY2xpZW50SWRlbnRpZmllcikpOworI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gRW5z
dXJlIHRoYXQgdGhlIGNoaWxkIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGNsaWVudCBpZGVudGlmaWVy
LgogICAgIDo6U2V0SGFuZGxlSW5mb3JtYXRpb24oY2xpZW50SWRlbnRpZmllciwgSEFORExFX0ZM
QUdfSU5IRVJJVCwgSEFORExFX0ZMQUdfSU5IRVJJVCk7Ci0jZWxzZQotICAgIGludCBzb2NrZXRz
WzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRz
KSA9PSAtMSkgewotICAgICAgICBxRGVidWcoKSA8PCAiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxl
ZCB3aXRoIGVycm5vOiIgPDwgZXJybm87Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB1aSBzb2Nr
ZXQgdG8gdGhlIHdlYiBwcm9jZXNzCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VU
RkQsIEZEX0NMT0VYRUMpICA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNs
b3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAg
IHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbnQgY29ubmVjdG9y
ID0gc29ja2V0c1sxXTsKLSAgICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhzb2NrZXRz
WzBdKTsKICNlbmRpZgorI2VuZGlmIC8vIE9TKERBUldJTgogCiAjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQogICAgIGlmIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUGx1Z2luUHJv
Y2VzcykKQEAgLTE5NCwxOCArMTYwLDkgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MoKQogICAgIHdlYlByb2Nlc3NPclNVSURIZWxwZXItPnN0YXJ0KGNvbW1hbmRMaW5lKTsK
ICNlbmRpZgogCi0jaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikKLSAgICAvLyBEb24ndCBleHBv
c2UgdGhlIHdlYiBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMKLSAgICB3
aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAg
ICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIGRlbGV0ZSB3ZWJQcm9jZXNzT3JTVUlESGVscGVyOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAoIXdlYlBy
b2Nlc3NPclNVSURIZWxwZXItPndhaXRGb3JTdGFydGVkKCkpIHsKKyAgICBib29sIHN0YXJ0ZWQg
PSB3ZWJQcm9jZXNzT3JTVUlESGVscGVyLT53YWl0Rm9yU3RhcnRlZCgpOworICAgIENvcmVJUEM6
OkNvbm5lY3Rpb246OmNsb3NlU29ja2V0KGNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghc3Rh
cnRlZCkgewogICAgICAgICBxRGVidWcoKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IiA8PCBjb21tYW5k
TGluZTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjaWYgT1MoREFSV0lOKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186849</attachid>
            <date>2013-02-06 07:07:01 -0800</date>
            <delta_ts>2013-02-09 13:43:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109032-20130206160330.patch</filename>
            <type>text/plain</type>
            <size>19918</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWM5MzMxMjAxY2U3MjJl
OGQ4NDg4MjAyNDcxYzc2NmRmYzExOTE3OC4uNmVlZGU0NThlYmY1NDVjODMyNzQ3ZjA5ZjIwNTU0
NThmY2Y5NDU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTAyLTA2ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXVtVbml4XVtS
ZWZhY3RvcmluZ10gR2V0IHJpZCBvZiBzb2NrZXQgY3JlYXRpb24gY29kZSBkdXBsaWNhdGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwMzIKKwor
ICAgICAgICBNb3ZlIHRoZSBzb2NrZXRwYWlyIGNyZWF0aW9uIHJlbGF0ZWQgbG9naWMgdG8gQ29u
bmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMuCisgICAgICAgIE9uIFdp
bmRvd3Mgd2UgYWxyZWFkeSBoYXZlIHRoaXMgc3RhdGljIG1ldGhvZCBzbyBpdCB3YXMgaGFuZHkg
Zm9yIHRoaXMgcHVycG9zZS4KKyAgICAgICAgVGhlIHBhdGNoIG1hZGVzIHRoZSBmb2xsb3dpbmcg
Y2hhbmdlcyBhcGFydCBmcm9tIHJlZmFjdG9yaW5nOgorICAgICAgICAxLiBOZXZlciB1c2UgU09D
S19ER1JBTS4gSW4gdGhlIHBhc3Qgd2UgaGF2ZSBzb21lIGRlYmF0ZXMgYWJvdXQgdGhpcyBhbmQg
dGhlIGdlbmVyYWwKKyAgICAgICAgYWR2aWNlIGZyb20gdGhlIEFwcGxlIGZvbGtzIHdhcyB0byBh
bHdheXMgdXNlIGEgc3RyZWFtIHNvY2tldCB0byBiZSBhYmxlIHRvIGRldGVjdCBlcnJvcnMuCisg
ICAgICAgIFNpbmNlIG9uIG5ld2VyIGtlcm5lbHMgd2UgaGF2ZSBTT0NLX1NFUVBBQ0tFVCBhbnl3
YXkgd2hpY2ggaGF2ZSBib3RoIHRoZSBhZHZhbnRhZ2VzIG9mIGEKKyAgICAgICAgc3RyZWFtIGFu
ZCBhIGRhdGFncmFtIGNoYW5uZWwsIHdlIGNhbiBtYWtlIGEgY29tcHJvbWlzZSBvbiB0aGF0Lgor
ICAgICAgICAyLiBVbmlmeSB0aGUgd2F5IG9mIGRyb3BwaW5nIHVubmVlZGVkIHNvY2tldCBwZXJt
aXNzaW9ucy4gV2UgY2FuIGFsd2F5cyBzZXQgdGhlIEZEX0NMT0VYRUMKKyAgICAgICAgZmxhZyBv
biB0aGUgc29ja2V0cyBpbiB0aGUgcGFyZW50LCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNsb3Nl
IHRoZSBzZXJ2ZXIgc29ja2V0IGluIHRoZSBjaGlsZAorICAgICAgICBhZnRlciBhIGZvcmsuIEFs
c28gd2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgaW4gY2xvc2luZyB0aGUgY2hpbGQgc29ja2V0IGlu
IHRoZSBwYXJlbnQgcHJvY2VzcworICAgICAgICB3aGVuIHBvc3NpYmxlLiBUaGlzIHdhcyB0aGVy
ZSBhdCBzYW1lIHBsYWNlcyBhbmQgbWlzc2luZyBhdCBvdGhlcnMuIEZ1cnRoZXJtb3JlIEkgYWRk
ZWQgYW5vdGhlcgorICAgICAgICBoZWxwZXIgdG8gY2xvc2UgdGhlIHNvY2tldCwgYmVjYXVzZSBj
bG9zZSBzaG91bGQgYmUgY2hlY2tlZCBmb3IgaW50ZXJydXB0LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0
aW9uLmg6CisgICAgICAgIChDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6
Y2xvc2VTb2NrZXQpOiBIZWxwZXIgZm9yIGNsb3NpbmcgYSBzb2NrZXQuCisgICAgICAgIChDb3Jl
SVBDKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVu
dElkZW50aWZpZXJzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgICogU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzczo6Y3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vz
c0xhdW5jaGVyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVu
Y2hlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNoaWxkU2V0dXBGdW5jdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OmNoaWxkRmluaXNoZWRGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKwogMjAxMy0wMi0wNSAgU2ltb24gSGF1c21hbm4gIDxz
aW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIFJlcGxhY2UgbW9y
ZSB1c2VzIG9mIFdlYlBhZ2VQcm94eSB3aXRoIFdLUGFnZSBpbiBRUXVpY2tXZWJWaWV3CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDFkOWMyYTQ1
ZDIyOWIwODExZjdjYmZlYTAxZTBmZTcwOTJiZDg4YTkuLjg1OGQyODUzZWU0YTA3ZTA5MDM3NzEx
YjE5ODk4NGRjMWI5NzE0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
Q29ubmVjdGlvbi5oCkBAIC0xMzksNiArMTM5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiAhaWRlbnRp
ZmllcjsgfQogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgdHlwZWRlZiBpbnQg
SWRlbnRpZmllcjsKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlm
aWVycyhJZGVudGlmaWVyJiBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyJiBjbGllbnRJZGVu
dGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBjbG9zZVNvY2tldChJZGVudGlmaWVyKTsKICAgICBz
dGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1
cm4gIWlkZW50aWZpZXI7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBjNmExODZlZTE5
ZTE3YTUxYmIyOWYwMjE0ODAxYmMzN2JiMDgyMzU4Li5lMDZhMGI4NmIzMDc1OTBlYzIyNTI4ZTc3
YjNkYWQwOGJkOTA0NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBACiAjaW5j
bHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKKy8vIE9uIFFOWCBTT0NLX1NFUVBBQ0tFVCBkb2VzIG5v
dCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZpbmVkKSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4KKyNpZiBkZWZpbmVkKFNPQ0tfU0VRUEFDS0VUKSAm
JiAhT1MoUU5YKQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAorI2Vsc2UKKyNk
ZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNlbmRpZgorCiBuYW1lc3BhY2UgQ29yZUlQ
QyB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWVzc2FnZU1heFNpemUgPSA0MDk2OwpAQCAtMTE4
LDYgKzEyNSwzNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc051bGw7CiB9OwogCit2b2lkIENv
bm5lY3Rpb246OmNsb3NlU29ja2V0KENvbm5lY3Rpb246OklkZW50aWZpZXIgc29ja2V0KQorewor
ICAgIGNvbnN0IHVuc2lnbmVkIGtNYXhSZXRyaWVzID0gMTY7CisgICAgZm9yICh1bnNpZ25lZCBy
ZXRyaWVzID0gMDsgcmV0cmllcyA8IGtNYXhSZXRyaWVzICYmIGNsb3NlKHNvY2tldCkgPT0gLTEg
JiYgZXJybm8gPT0gRUlOVFI7ICsrcmV0cmllcykgeyB9Cit9CisKK2Jvb2wgQ29ubmVjdGlvbjo6
Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoQ29ubmVjdGlvbjo6SWRlbnRpZmllciYg
c2VydmVySWRlbnRpZmllciwgQ29ubmVjdGlvbjo6SWRlbnRpZmllciYgY2xpZW50SWRlbnRpZmll
cikKK3sKKyAgICBpbnQgc29ja2V0c1syXTsKKyAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBT
T0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIEF2b2lkIGV4cG9zaW5nIHRoZSBzZXJ2ZXIgc29ja2V0IGZvciB0aGUgY2hpbGQgcHJv
Y2VzcyBvciB0aGUgY2xpZW50IHNvY2tldCB0byBhbnkgZnV0dXJlIGNoaWxkLgorICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgICAgd2hpbGUgKGZjbnRsKHNvY2tl
dHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoZXJy
bm8gIT0gRUlOVFIpIHsKKyAgICAgICAgICAgICAgICBjbG9zZVNvY2tldChzb2NrZXRzWzBdKTsK
KyAgICAgICAgICAgICAgICBjbG9zZVNvY2tldChzb2NrZXRzWzFdKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBz
ZXJ2ZXJJZGVudGlmaWVyID0gc29ja2V0c1swXTsKKyAgICBjbGllbnRJZGVudGlmaWVyID0gc29j
a2V0c1sxXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9y
bUluaXRpYWxpemUoSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIG1fc29ja2V0RGVzY3Jp
cHRvciA9IGlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Qcm9jZXNzLmNwcAppbmRleCAyMGQwOTRhZmIyYmRhNjkyZWZiMGVhZDk3ZTE2OTViNmVmNTBl
OTcyLi4wYzcxZjBiYzg4ZTI0ODUyMWQ3YmYyYTYyMWEyYjMyZTcyNTQ0MWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTQzLDI0ICs0
Myw2IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgogCi0jaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgot
I2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNs
dWRlIDx1bmlzdGQuaD4KLQotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgU09D
S0VUX1RZUEUgU09DS19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdS
QU0KLSNlbmRpZgotI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCi0jZW5kaWYgLy8gVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTE3MywzNiArMTU1LDE0IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9y
dChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CiAgICAgcGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9u
b3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pLCAwKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNP
Q0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA9PSAtMSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUg
cGx1Z2luIHByb2Nlc3Mgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNu
dGwoc29ja2V0c1sxXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlm
IChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlO
VFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVy
cm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgd2ViIHByb2Nlc3Mgc29ja2V0IHRvIHBvc3NpYmxl
IGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBGX1NF
VEZELCBGRF9DTE9FWEVDKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNs
b3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAg
IHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9CisgICAgQ29yZUlQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyOworICAg
IGJvb2wgc3VjY2VzcyA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVu
dElkZW50aWZpZXJzKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpOworICAgIEFT
U0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tl
dHNbMV0pOworICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc2VydmVySWRlbnRpZmllcik7CiAgICAgbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAotICAgIENv
cmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldHNbMF0pOworICAgIENvcmVJUEM6
OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KGNsaWVudElkZW50aWZpZXIpOwogICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50U29ja2V0LCBtX3N1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pLCAwKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hh
cmVkV29ya2VyUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNz
L1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCmluZGV4IGU1NmMxNWU5MzI1ZWVjNDI1OTk2YmQ3MmMw
ODYzM2E5YTY3N2RhNTkuLmMyZGVhZmE5NTZiMGFjOTllNmFiOTFiMDk0YTQxYzQxMTdiZjJiZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29y
a2VyUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9T
aGFyZWRXb3JrZXJQcm9jZXNzLmNwcApAQCAtNDAsMjQgKzQwLDYgQEAKICNpbmNsdWRlIDxjcnRf
ZXh0ZXJucy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSNpbmNs
dWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3lzL3Jlc291cmNl
Lmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaWZk
ZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNl
bHNlCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQot
I2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19ER1JBTQotI2VuZGlmCi0jZW5kaWYgLy8g
U09DS19TRVFQQUNLRVQKLSNlbmRpZiAvLyBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLQogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTMxLDM2ICsx
MTMsMTQgQEAgdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbigpCiAgICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQs
IE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgs
IFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA9PSAtMSkgewotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0
aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHNvY2tldCB0byB0aGUgd2ViIHByb2Nlc3MuCi0gICAg
d2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VURkQsIEZEX0NMT0VYRUMpICA9PSAtMSkgewot
ICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVy
cm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9
PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vz
cyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMuCi0gICAgd2hpbGUgKGZj
bnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKSB7Ci0gICAgICAgIGlm
IChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlO
VFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVy
cm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nl
c3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0c1sxXSk7CisgICAgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyOworICAgIGJv
b2wgc3VjY2VzcyA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVudElk
ZW50aWZpZXJzKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpOworICAgIEFTU0VS
VF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CisKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNlcnZlcklk
ZW50aWZpZXIpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9u
LnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2Nr
ZXRzWzBdKTsKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChjbGllbnRJZGVu
dGlmaWVyKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpT
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNs
aWVudFNvY2tldCksIDApOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1
bmNoZXJFZmwuY3BwCmluZGV4IDNhMzYzMzQ3ZjhlY2FiYzM1Mjc1ZmVjMGI2NTEzYjBhMzRjMjI4
ODEuLmY5YjNiYWNlNmVhMTZiZTgzYjQ5ZTk0ZWNmZWI3MDFiYzhhYjQ5YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NM
YXVuY2hlckVmbC5jcHAKQEAgLTM2LDExICszNiw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgaW50IHNvY2tldHNb
Ml07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJFQU0sIDAsIHNvY2tldHMp
IDwgMCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHNlcnZlcklkZW50aWZp
ZXIsIGNsaWVudElkZW50aWZpZXI7CisgICAgYm9vbCBzdWNjZXNzID0gQ29yZUlQQzo6Q29ubmVj
dGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoc2VydmVySWRlbnRpZmllciwg
Y2xpZW50SWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsK
IAogICAgIENTdHJpbmcgZXhlY3V0YWJsZVBhdGgsIHBsdWdpblBhdGg7CiAgICAgc3dpdGNoICht
X2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUpIHsKQEAgLTU5LDcgKzU3LDcgQEAgdm9pZCBQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIH0KIAogICAgIGNoYXIgc29ja2V0WzVd
OwotICAgIHNucHJpbnRmKHNvY2tldCwgc2l6ZW9mKHNvY2tldCksICIlZCIsIHNvY2tldHNbMF0p
OworICAgIHNucHJpbnRmKHNvY2tldCwgc2l6ZW9mKHNvY2tldCksICIlZCIsIGNsaWVudElkZW50
aWZpZXIpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIENTdHJpbmcgcHJlZml4ZWRFeGVjdXRhYmxl
UGF0aDsKQEAgLTc1LDcgKzczLDYgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQogICAgIC8vIHRoZSBmb3JrKCkgZG9lc24ndCBpbmhlcml0IHRoZSBydW5uaW5nIHRocmVh
ZHMuCiAgICAgcGlkX3QgcGlkID0gZm9yaygpOwogICAgIGlmICghcGlkKSB7IC8vIENoaWxkIHBy
b2Nlc3MuCi0gICAgICAgIGNsb3NlKHNvY2tldHNbMV0pOwogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgaWYgKCFwcmVmaXhlZEV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGludm9rZXMgdGhlIHNoZWxs
CkBAIC05MCwxMCArODcsMTAgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogI2VuZGlmCiAgICAgICAgIGV4ZWNsKGV4ZWN1dGFibGVQYXRoLmRhdGEoKSwgZXhlY3V0YWJs
ZVBhdGguZGF0YSgpLCBzb2NrZXQsIHBsdWdpblBhdGguZGF0YSgpLCBzdGF0aWNfY2FzdDxjaGFy
Kj4oMCkpOwogICAgIH0gZWxzZSBpZiAocGlkID4gMCkgeyAvLyBwYXJlbnQgcHJvY2VzczsKLSAg
ICAgICAgY2xvc2Uoc29ja2V0c1swXSk7CisgICAgICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OmNs
b3NlU29ja2V0KGNsaWVudElkZW50aWZpZXIpOwogICAgICAgICBtX3Byb2Nlc3NJZGVudGlmaWVy
ID0gcGlkOwogICAgICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3Ms
IG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1By
b2Nlc3MsIHRoaXMsIHBpZCwgc29ja2V0c1sxXSkpOworICAgICAgICBSdW5Mb29wOjptYWluKCkt
PmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vz
cywgdGhpcywgcGlkLCBzZXJ2ZXJJZGVudGlmaWVyKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3Rr
LmNwcAppbmRleCA3YzdmMDNhYWRlZWI0MGQ3MjRlNjgwYmY3Njk0MTY4MWUzYWY5ZTgyLi4wOWYw
OTEwZWYyOGExNjcwNzk1OGRiMDVmMjhkZDk1ZjQ4OGUzZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJH
dGsuY3BwCkBAIC00NSwyMSArNDUsMTIgQEAKICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KICNlbmRp
ZgogCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQ
QUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZW5kaWYKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMg
dm9pZCBjaGlsZFNldHVwRnVuY3Rpb24oZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgaW50IHNv
Y2tldCA9IEdQT0lOVEVSX1RPX0lOVCh1c2VyRGF0YSk7Ci0gICAgY2xvc2Uoc29ja2V0KTsKLQog
ICAgIC8vIE1ha2UgY2hpbGQgcHJvY2VzcyBpbmhlcml0IHBhcmVudCdzIGxvY2FsZS4KICAgICBn
X3NldGVudigiTENfQUxMIiwgc2V0bG9jYWxlKExDX0FMTCwgMCksIFRSVUUpOwogfQpAQCAtNjks
MTkgKzYwLDE0IEBAIHN0YXRpYyB2b2lkIGNoaWxkRmluaXNoZWRGdW5jdGlvbihHUGlkLCBnaW50
IHN0YXR1cywgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgaWYgKFdJRkVYSVRFRChzdGF0dXMpICYm
ICFXRVhJVFNUQVRVUyhzdGF0dXMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjbG9zZShHUE9J
TlRFUl9UT19JTlQodXNlckRhdGEpKTsKKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpjbG9zZVNv
Y2tldChHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpKTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNo
ZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIEdQaWQgcGlkID0gMDsKLQotICAgIGludCBzb2Nr
ZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2Nr
ZXRzKSA8IDApIHsKLSAgICAgICAgZ19wcmludGVycigiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxl
ZDogJXMuXG4iLCBnX3N0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgc2VydmVySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcjsKKyAgICBib29sIHN1
Y2Nlc3MgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlm
aWVycyhzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwogCiAgICAgU3RyaW5nIGV4ZWN1dGFibGVQYXRoLCBwbHVn
aW5QYXRoOwogICAgIENTdHJpbmcgcmVhbEV4ZWN1dGFibGVQYXRoLCByZWFsUGx1Z2luUGF0aDsK
QEAgLTk0LDI5ICs4MCwzMCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgfQogCiAgICAgcmVhbEV4ZWN1dGFibGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGV4ZWN1dGFibGVQYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBf
cHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKKyAgICBHT3duUHRyPGdjaGFyPiBzb2NrZXQoZ19z
dHJkdXBfcHJpbnRmKCIlZCIsIGNsaWVudElkZW50aWZpZXIpKTsKICAgICBjaGFyKiBhcmd2WzRd
OwogICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihyZWFsRXhlY3V0YWJsZVBhdGguZGF0
YSgpKTsKICAgICBhcmd2WzFdID0gc29ja2V0LmdldCgpOwogICAgIGFyZ3ZbMl0gPSBjb25zdF9j
YXN0PGNoYXIqPihyZWFsUGx1Z2luUGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbM10gPSAwOwogCisg
ICAgR1BpZCBwaWQgPSAwOwogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpbnQgc3Bh
d25GbGFncyA9IEdfU1BBV05fTEVBVkVfREVTQ1JJUFRPUlNfT1BFTiB8IEdfU1BBV05fRE9fTk9U
X1JFQVBfQ0hJTEQ7Ci0gICAgaWYgKCFnX3NwYXduX2FzeW5jKDAsIGFyZ3YsIDAsIHN0YXRpY19j
YXN0PEdTcGF3bkZsYWdzPihzcGF3bkZsYWdzKSwgY2hpbGRTZXR1cEZ1bmN0aW9uLCBHSU5UX1RP
X1BPSU5URVIoc29ja2V0c1sxXSksICZwaWQsICZlcnJvci5vdXRQdHIoKSkpIHsKKyAgICBpZiAo
IWdfc3Bhd25fYXN5bmMoMCwgYXJndiwgMCwgc3RhdGljX2Nhc3Q8R1NwYXduRmxhZ3M+KHNwYXdu
RmxhZ3MpLCBjaGlsZFNldHVwRnVuY3Rpb24sIDAsICZwaWQsICZlcnJvci5vdXRQdHIoKSkpIHsK
ICAgICAgICAgZ19wcmludGVycigiVW5hYmxlIHRvIGZvcmsgYSBuZXcgV2ViUHJvY2VzczogJXMu
XG4iLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAotICAgIGNsb3NlKHNvY2tldHNbMF0pOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OmNs
b3NlU29ja2V0KGNsaWVudElkZW50aWZpZXIpOwogICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBw
aWQ7CiAKICAgICAvLyBNb25pdG9yIHRoZSBjaGlsZCBwcm9jZXNzLCBpdCBjYWxscyB3YWl0cGlk
IHRvIHByZXZlbnQgdGhlIGNoaWxkIHByb2Nlc3MgZnJvbSBiZWNvbW1pbmcgYSB6b21iaWUsCiAg
ICAgLy8gYW5kIGl0IGFsbG93cyB1cyB0byBjbG9zZSB0aGUgc29ja2V0IHdoZW4gdGhlIGNoaWxk
IHByb2Nlc3MgY3Jhc2hlcy4KLSAgICBnX2NoaWxkX3dhdGNoX2FkZChtX3Byb2Nlc3NJZGVudGlm
aWVyLCBjaGlsZEZpbmlzaGVkRnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSk7
CisgICAgZ19jaGlsZF93YXRjaF9hZGQobV9wcm9jZXNzSWRlbnRpZmllciwgY2hpbGRGaW5pc2hl
ZEZ1bmN0aW9uLCBHSU5UX1RPX1BPSU5URVIoc2VydmVySWRlbnRpZmllcikpOwogCiAgICAgLy8g
V2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhl
IG1haW4gcnVuIGxvb3AuCi0gICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9j
ZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lk
ZW50aWZpZXIsIHNvY2tldHNbMV0pKTsKKyAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJp
bmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgbV9w
cm9jZXNzSWRlbnRpZmllciwgc2VydmVySWRlbnRpZmllcikpOwogfQogCiB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAppbmRleCAzNmIz
Y2RiYWU3ZGFhOTFmNGEwMzNlN2Y3OGE1MjRjZTIxODAzOTNjLi45NzFmZDgxZGI5OTYyMzAzMGFk
MWFlYTIyZGJhY2ViN2UxY2MxZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKQEAgLTM3LDE5ICsz
NywxNCBAQAogI2luY2x1ZGUgPFFTdHJpbmc+CiAjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgZGVmaW5lZChRX09TX1VOSVgpCi0jaW5jbHVkZSA8ZXJy
bm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5oPgotI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4K
LSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIAog
I2lmIGRlZmluZWQoUV9PU19MSU5VWCkKQEAgLTcyLDEzICs2Nyw2IEBACiBleHRlcm4gIkMiIGtl
cm5fcmV0dXJuX3QgYm9vdHN0cmFwX3JlZ2lzdGVyMihtYWNoX3BvcnRfdCwgbmFtZV90LCBtYWNo
X3BvcnRfdCwgdWludDY0X3QpOwogI2VuZGlmCiAKLS8vIGZvciBRTlggd2UgbmVlZCBTT0NLX0RH
UkFNLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTUzCi0j
aWYgZGVmaW5lZChTT0NLX1NFUVBBQ0tFVCkgJiYgIWRlZmluZWQoUV9PU19NQUNYKSAmJiAhT1Mo
UU5YKQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNkZWZpbmUg
U09DS0VUX1RZUEUgU09DS19ER1JBTQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE0MSwzNiArMTI5LDE4IEBAIHZvaWQgUHJvY2Vz
c0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBBU1NFUlRfVU5VU0VEKGtyLCBrciA9PSBL
RVJOX1NVQ0NFU1MpOwogCiAgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoc2Vydmlj
ZU5hbWUpOwotI2VsaWYgT1MoV0lORE9XUykKKyNlbHNlCiAgICAgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0b3IsIGNsaWVudElkZW50aWZpZXI7CiAgICAgaWYgKCFDb3Jl
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhjb25uZWN0
b3IsIGNsaWVudElkZW50aWZpZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB3
ZSBkbyBoZXJlPwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgY29t
bWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcocXVsb25nbG9uZyhjbGllbnRJZGVudGlmaWVyKSk7
CisjaWYgT1MoV0lORE9XUykKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgY2hpbGQgcHJvY2VzcyBp
bmhlcml0cyB0aGUgY2xpZW50IGlkZW50aWZpZXIuCiAgICAgOjpTZXRIYW5kbGVJbmZvcm1hdGlv
bihjbGllbnRJZGVudGlmaWVyLCBIQU5ETEVfRkxBR19JTkhFUklULCBIQU5ETEVfRkxBR19JTkhF
UklUKTsKLSNlbHNlCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZf
VU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIHFEZWJ1Zygp
IDw8ICJDcmVhdGlvbiBvZiBzb2NrZXQgZmFpbGVkIHdpdGggZXJybm86IiA8PCBlcnJubzsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBEb24ndCBleHBvc2UgdGhlIHVpIHNvY2tldCB0byB0aGUgd2ViIHByb2Nlc3MKLSAgICB3
aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0g
ICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJy
bm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09
IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGludCBjb25uZWN0b3IgPSBzb2NrZXRzWzFdOwotICAgIGNvbW1hbmRM
aW5lID0gY29tbWFuZExpbmUuYXJnKHNvY2tldHNbMF0pOwogI2VuZGlmCisjZW5kaWYgLy8gT1Mo
REFSV0lOCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgaWYgKG1fbGF1bmNoT3B0
aW9ucy5wcm9jZXNzVHlwZSA9PSBQbHVnaW5Qcm9jZXNzKQpAQCAtMTk0LDE4ICsxNjQsOSBAQCB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgd2ViUHJvY2Vzc09yU1VJ
REhlbHBlci0+c3RhcnQoY29tbWFuZExpbmUpOwogI2VuZGlmCiAKLSNpZiBPUyhVTklYKSAmJiAh
T1MoREFSV0lOKQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgd2ViIHNvY2tldCB0byBwb3NzaWJs
ZSBmdXR1cmUgd2ViIHByb2Nlc3NlcwotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBGX1NF
VEZELCBGRF9DTE9FWEVDKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgZGVsZXRlIHdl
YlByb2Nlc3NPclNVSURIZWxwZXI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0jZW5kaWYKLQotICAgIGlmICghd2ViUHJvY2Vzc09yU1VJREhlbHBlci0+d2FpdEZvclN0
YXJ0ZWQoKSkgeworICAgIGJvb2wgc3RhcnRlZCA9IHdlYlByb2Nlc3NPclNVSURIZWxwZXItPndh
aXRGb3JTdGFydGVkKCk7CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y2xvc2VTb2NrZXQoY2xp
ZW50SWRlbnRpZmllcik7CisgICAgaWYgKCFzdGFydGVkKSB7CiAgICAgICAgIHFEZWJ1ZygpIDw8
ICJGYWlsZWQgdG8gc3RhcnQiIDw8IGNvbW1hbmRMaW5lOwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICNpZiBPUyhEQVJXSU4pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187444</attachid>
            <date>2013-02-09 13:43:45 -0800</date>
            <delta_ts>2013-02-27 07:33:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109032-20130209224018.patch</filename>
            <type>text/plain</type>
            <size>19889</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDAxNDZmZjU3ODY5OTQ1
MGQ4ODE2YmQ1NjhhYmEzMjM1OTRlM2VhZi4uYTc1ZmI2MDUxNTU3M2U4ZmI3N2E3OGZlMzI2NjUz
NWJiNjk4YmVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTAyLTA5ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXVtVbml4XVtS
ZWZhY3RvcmluZ10gR2V0IHJpZCBvZiBzb2NrZXQgY3JlYXRpb24gY29kZSBkdXBsaWNhdGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwMzIKKwor
ICAgICAgICBNb3ZlIHRoZSBzb2NrZXRwYWlyIGNyZWF0aW9uIHJlbGF0ZWQgbG9naWMgdG8gQ29u
bmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMuCisgICAgICAgIE9uIFdp
bmRvd3Mgd2UgYWxyZWFkeSBoYXZlIHRoaXMgc3RhdGljIG1ldGhvZCBzbyBpdCB3YXMgaGFuZHkg
Zm9yIHRoaXMgcHVycG9zZS4KKyAgICAgICAgVGhlIHBhdGNoIG1hZGVzIHRoZSBmb2xsb3dpbmcg
Y2hhbmdlcyBhcGFydCBmcm9tIHJlZmFjdG9yaW5nOgorICAgICAgICAxLiBOZXZlciB1c2UgU09D
S19ER1JBTS4gSW4gdGhlIHBhc3Qgd2UgaGF2ZSBzb21lIGRlYmF0ZXMgYWJvdXQgdGhpcyBhbmQg
dGhlIGdlbmVyYWwKKyAgICAgICAgYWR2aWNlIGZyb20gdGhlIEFwcGxlIGZvbGtzIHdhcyB0byBh
bHdheXMgdXNlIGEgc3RyZWFtIHNvY2tldCB0byBiZSBhYmxlIHRvIGRldGVjdCBlcnJvcnMuCisg
ICAgICAgIFNpbmNlIG9uIG5ld2VyIGtlcm5lbHMgd2UgaGF2ZSBTT0NLX1NFUVBBQ0tFVCBhbnl3
YXkgd2hpY2ggaGF2ZSBib3RoIHRoZSBhZHZhbnRhZ2VzIG9mIGEKKyAgICAgICAgc3RyZWFtIGFu
ZCBhIGRhdGFncmFtIGNoYW5uZWwsIHdlIGNhbiBtYWtlIGEgY29tcHJvbWlzZSBvbiB0aGF0Lgor
ICAgICAgICAyLiBVbmlmeSB0aGUgd2F5IG9mIGRyb3BwaW5nIHVubmVlZGVkIHNvY2tldCBwZXJt
aXNzaW9ucy4gV2UgY2FuIGFsd2F5cyBzZXQgdGhlIEZEX0NMT0VYRUMKKyAgICAgICAgZmxhZyBv
biB0aGUgc29ja2V0cyBpbiB0aGUgcGFyZW50LCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNsb3Nl
IHRoZSBzZXJ2ZXIgc29ja2V0IGluIHRoZSBjaGlsZAorICAgICAgICBhZnRlciBhIGZvcmsuIEFs
c28gd2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgaW4gY2xvc2luZyB0aGUgY2hpbGQgc29ja2V0IGlu
IHRoZSBwYXJlbnQgcHJvY2VzcworICAgICAgICB3aGVuIHBvc3NpYmxlLiBUaGlzIHdhcyB0aGVy
ZSBhdCBzYW1lIHBsYWNlcyBhbmQgbWlzc2luZyBhdCBvdGhlcnMuIEZ1cnRoZXJtb3JlIEkgYWRk
ZWQgYW5vdGhlcgorICAgICAgICBoZWxwZXIgdG8gY2xvc2UgdGhlIHNvY2tldCwgYmVjYXVzZSBj
bG9zZSBzaG91bGQgYmUgY2hlY2tlZCBmb3IgaW50ZXJydXB0LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0
aW9uLmg6CisgICAgICAgIChDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6
Y2xvc2VTb2NrZXQpOiBIZWxwZXIgZm9yIGNsb3NpbmcgYSBzb2NrZXQuCisgICAgICAgIChDb3Jl
SVBDKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVu
dElkZW50aWZpZXJzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgICogU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkV29ya2VyUHJvY2Vzczo6Y3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vz
c0xhdW5jaGVyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVu
Y2hlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNoaWxkU2V0dXBGdW5jdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OmNoaWxkRmluaXNoZWRGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKwogMjAxMy0wMi0wOCAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBBU1NFUlQgd2hlbiB0aGUgV2ViIENvbnRlbnQgUHJv
Y2VzcyBjcmFzaGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCmluZGV4IDFkOWMyYTQ1ZDIyOWIwODExZjdjYmZlYTAxZTBmZTcwOTJiZDg4YTkuLjg1OGQy
ODUzZWU0YTA3ZTA5MDM3NzExYjE5ODk4NGRjMWI5NzE0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBAIC0xMzksNiArMTM5LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVy
KSB7IHJldHVybiAhaWRlbnRpZmllcjsgfQogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
CiAgICAgdHlwZWRlZiBpbnQgSWRlbnRpZmllcjsKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVTZXJ2
ZXJBbmRDbGllbnRJZGVudGlmaWVycyhJZGVudGlmaWVyJiBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVu
dGlmaWVyJiBjbGllbnRJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBjbG9zZVNvY2tldChJ
ZGVudGlmaWVyKTsKICAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIg
aWRlbnRpZmllcikgeyByZXR1cm4gIWlkZW50aWZpZXI7IH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNw
cAppbmRleCBjNmExODZlZTE5ZTE3YTUxYmIyOWYwMjE0ODAxYmMzN2JiMDgyMzU4Li5kNzczMDgy
NmIyNDhlZDg2MjBiMjU1Yzc2NTA1MjI1MWE1MDc2YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQ1
LDYgKzQ1LDEzIEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKKy8vIE9uIFFOWCBTT0NL
X1NFUVBBQ0tFVCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZpbmVkKSwgc2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4KKyNpZiBkZWZpbmVk
KFNPQ0tfU0VRUEFDS0VUKSAmJiAhT1MoUU5YKQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NF
UVBBQ0tFVAorI2Vsc2UKKyNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNlbmRpZgor
CiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWVzc2FnZU1heFNp
emUgPSA0MDk2OwpAQCAtMTE4LDYgKzEyNSwzNSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc051
bGw7CiB9OwogCit2b2lkIENvbm5lY3Rpb246OmNsb3NlU29ja2V0KENvbm5lY3Rpb246OklkZW50
aWZpZXIgc29ja2V0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGtNYXhSZXRyaWVzID0gMTY7Cisg
ICAgZm9yICh1bnNpZ25lZCByZXRyaWVzID0gMDsgcmV0cmllcyA8IGtNYXhSZXRyaWVzICYmIGNs
b3NlKHNvY2tldCkgPT0gLTE7ICsrcmV0cmllcykKKyAgICAgICAgQVNTRVJUKGVycm5vID09IEVJ
TlRSKTsKK30KKworYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlm
aWVycyhDb25uZWN0aW9uOjpJZGVudGlmaWVyJiBzZXJ2ZXJJZGVudGlmaWVyLCBDb25uZWN0aW9u
OjpJZGVudGlmaWVyJiBjbGllbnRJZGVudGlmaWVyKQoreworICAgIGludCBzb2NrZXRzWzJdOwor
ICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA9PSAt
MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQXZvaWQgZXhwb3NpbmcgdGhlIHNl
cnZlciBzb2NrZXQgdG8gdGhlIGNoaWxkIHByb2Nlc3Mgb3IgdGhlIGNsaWVudCBzb2NrZXQgdG8g
YW55IGZ1dHVyZSBjaGlsZC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7
CisgICAgICAgIHdoaWxlIChmY250bChzb2NrZXRzW2ldLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9
PSAtMSkgeworICAgICAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICAg
ICAgY2xvc2VTb2NrZXQoc29ja2V0c1swXSk7CisgICAgICAgICAgICAgICAgY2xvc2VTb2NrZXQo
c29ja2V0c1sxXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgc2VydmVySWRlbnRpZmllciA9IHNvY2tldHNbMF07
CisgICAgY2xpZW50SWRlbnRpZmllciA9IHNvY2tldHNbMV07CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKICAgICBtX3NvY2tldERlc2NyaXB0b3IgPSBpZGVudGlmaWVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKaW5kZXggMjBkMDk0YWZi
MmJkYTY5MmVmYjBlYWQ5N2UxNjk1YjZlZjUwZTk3Mi4uMGM3MWYwYmM4OGUyNDg1MjFkN2JmMmE2
MjFhMmIzMmU3MjU0NDFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Qcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpblByb2Nlc3MuY3BwCkBAIC00MywyNCArNDMsNiBAQAogI2luY2x1ZGUgPGNydF9leHRlcm5z
Lmg+CiAjZW5kaWYKIAotI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotI2luY2x1ZGUgPGVy
cm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSNp
bmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLSNpZmRlZiBTT0NL
X1NFUVBBQ0tFVAotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNp
ZiBQTEFURk9STShHVEspCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQot
I2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX0RHUkFNCi0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NF
UVBBQ0tFVAotI2VuZGlmIC8vIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNzMsMzYgKzE1NSwxNCBA
QCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICBD
b3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NQUtFX1NFTkQpOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xp
ZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7
CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBpbnQgc29ja2V0c1syXTsKLSAg
ICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEp
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHBsdWdpbiBwcm9jZXNzIHNvY2tldCB0byB0aGUg
d2ViIHByb2Nlc3MuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VURkQsIEZEX0NM
T0VYRUMpICA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tl
dHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHdoaWxlIChj
bG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdl
YiBwcm9jZXNzIHNvY2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3Nlcy4KLSAgICB3
aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAg
ICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJu
byA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0g
LTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVySWRlbnRp
ZmllciwgY2xpZW50SWRlbnRpZmllcjsKKyAgICBib29sIHN1Y2Nlc3MgPSBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhzZXJ2ZXJJZGVudGlmaWVy
LCBjbGllbnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3Mp
OwogCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzb2NrZXRzWzFdKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vz
c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNl
cnZlcklkZW50aWZpZXIpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25u
ZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tl
dChzb2NrZXRzWzBdKTsKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChjbGll
bnRJZGVudGlmaWVyKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNs
aWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwg
MCk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAppbmRl
eCBlNTZjMTVlOTMyNWVlYzQyNTk5NmJkNzJjMDg2MzNhOWE2NzdkYTU5Li5jMmRlYWZhOTU2YjBh
Yzk5ZTZhYjkxYjA5NGE0MWM0MTE3YmYyYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKQEAgLTQw
LDI0ICs0MCw2IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgogCi0jaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250
bC5oPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4K
LSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNP
Q0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZp
bmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNP
Q0tfREdSQU0KLSNlbmRpZgotI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCi0jZW5kaWYgLy8gVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTEzMSwzNiArMTEzLDE0IEBAIHZvaWQgU2hhcmVkV29ya2VyUHJv
Y2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIENvcmVJUEM6OkF0dGFjaG1l
bnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CiAg
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwg
MCk7CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBpbnQgc29ja2V0c1syXTsK
LSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0g
LTEpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzb2Nr
ZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NF
VEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChj
bG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAg
ICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhw
b3NlIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3
ZWIgcHJvY2Vzc2VzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBGX1NFVEZELCBGRF9D
TE9FWEVDKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tl
dHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHdoaWxlIChj
bG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNb
MV0pOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVySWRlbnRpZmll
ciwgY2xpZW50SWRlbnRpZmllcjsKKyAgICBib29sIHN1Y2Nlc3MgPSBDb3JlSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhzZXJ2ZXJJZGVudGlmaWVyLCBj
bGllbnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwor
CisgICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmNyZWF0ZShzZXJ2ZXJJZGVudGlmaWVyKTsKICAgICBtX3dlYlByb2Nlc3ND
b25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwogCi0gICAgQ29yZUlQQzo6
QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0c1swXSk7CisgICAgQ29yZUlQQzo6QXR0YWNo
bWVudCBjbGllbnRTb2NrZXQoY2xpZW50SWRlbnRpZmllcik7CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAwKTsKICNlbHNlCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAppbmRleCAzYTM2MzM0N2Y4
ZWNhYmMzNTI3NWZlYzBiNjUxM2IwYTM0YzIyODgxLi5mOWIzYmFjZTZlYTE2YmU4M2I0OWU5NGVj
ZmViNzAxYmM4YWI0OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCkBAIC0zNiwxMSArMzYs
OSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MoKQogewotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VO
SVgsIFNPQ0tfU1RSRUFNLCAwLCBzb2NrZXRzKSA8IDApIHsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyOworICAgIGJv
b2wgc3VjY2VzcyA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVudElk
ZW50aWZpZXJzKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpOworICAgIEFTU0VS
VF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRo
LCBwbHVnaW5QYXRoOwogICAgIHN3aXRjaCAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSB7
CkBAIC01OSw3ICs1Nyw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkK
ICAgICB9CiAKICAgICBjaGFyIHNvY2tldFs1XTsKLSAgICBzbnByaW50Zihzb2NrZXQsIHNpemVv
Zihzb2NrZXQpLCAiJWQiLCBzb2NrZXRzWzBdKTsKKyAgICBzbnByaW50Zihzb2NrZXQsIHNpemVv
Zihzb2NrZXQpLCAiJWQiLCBjbGllbnRJZGVudGlmaWVyKTsKIAogI2lmbmRlZiBOREVCVUcKICAg
ICBDU3RyaW5nIHByZWZpeGVkRXhlY3V0YWJsZVBhdGg7CkBAIC03NSw3ICs3Myw2IEBAIHZvaWQg
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAvLyB0aGUgZm9yaygpIGRvZXNu
J3QgaW5oZXJpdCB0aGUgcnVubmluZyB0aHJlYWRzLgogICAgIHBpZF90IHBpZCA9IGZvcmsoKTsK
ICAgICBpZiAoIXBpZCkgeyAvLyBDaGlsZCBwcm9jZXNzLgotICAgICAgICBjbG9zZShzb2NrZXRz
WzFdKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGlmICghcHJlZml4ZWRFeGVjdXRhYmxlUGF0
aC5pc051bGwoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3Qg
YmVjYXVzZSBpdCBpbnZva2VzIHRoZSBzaGVsbApAQCAtOTAsMTAgKzg3LDEwIEBAIHZvaWQgUHJv
Y2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICNlbmRpZgogICAgICAgICBleGVjbChleGVj
dXRhYmxlUGF0aC5kYXRhKCksIGV4ZWN1dGFibGVQYXRoLmRhdGEoKSwgc29ja2V0LCBwbHVnaW5Q
YXRoLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KDApKTsKICAgICB9IGVsc2UgaWYgKHBpZCA+
IDApIHsgLy8gcGFyZW50IHByb2Nlc3M7Ci0gICAgICAgIGNsb3NlKHNvY2tldHNbMF0pOworICAg
ICAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpjbG9zZVNvY2tldChjbGllbnRJZGVudGlmaWVyKTsK
ICAgICAgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsKICAgICAgICAgLy8gV2UndmUgZmlu
aXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVu
IGxvb3AuCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xh
dW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNbMV0p
KTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNo
ZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBpZCwgc2VydmVySWRlbnRpZmll
cikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
Z3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKaW5kZXggN2M3ZjAzYWFkZWViNDBkNzI0
ZTY4MGJmNzY5NDE2ODFlM2FmOWU4Mi4uMDlmMDkxMGVmMjhhMTY3MDc5NThkYjA1ZjI4ZGQ5NWY0
ODhlM2ZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcApAQCAtNDUsMjEgKzQ1LDEyIEBACiAj
aW5jbHVkZSA8c3lzL3ByY3RsLmg+CiAjZW5kaWYKIAotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0j
ZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2RlZmluZSBTT0NLRVRf
VFlQRSBTT0NLX1NUUkVBTQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHZvaWQgY2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2lu
dGVyIHVzZXJEYXRhKQogewotICAgIGludCBzb2NrZXQgPSBHUE9JTlRFUl9UT19JTlQodXNlckRh
dGEpOwotICAgIGNsb3NlKHNvY2tldCk7Ci0KICAgICAvLyBNYWtlIGNoaWxkIHByb2Nlc3MgaW5o
ZXJpdCBwYXJlbnQncyBsb2NhbGUuCiAgICAgZ19zZXRlbnYoIkxDX0FMTCIsIHNldGxvY2FsZShM
Q19BTEwsIDApLCBUUlVFKTsKIH0KQEAgLTY5LDE5ICs2MCwxNCBAQCBzdGF0aWMgdm9pZCBjaGls
ZEZpbmlzaGVkRnVuY3Rpb24oR1BpZCwgZ2ludCBzdGF0dXMsIGdwb2ludGVyIHVzZXJEYXRhKQog
ICAgIGlmIChXSUZFWElURUQoc3RhdHVzKSAmJiAhV0VYSVRTVEFUVVMoc3RhdHVzKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgY2xvc2UoR1BPSU5URVJfVE9fSU5UKHVzZXJEYXRhKSk7CisgICAg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Y2xvc2VTb2NrZXQoR1BPSU5URVJfVE9fSU5UKHVzZXJEYXRh
KSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICBH
UGlkIHBpZCA9IDA7Ci0KLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihB
Rl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPCAwKSB7Ci0gICAgICAgIGdfcHJpbnRl
cnIoIkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQ6ICVzLlxuIiwgZ19zdHJlcnJvcihlcnJubykp
OwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHNlcnZlcklkZW50aWZpZXIsIGNs
aWVudElkZW50aWZpZXI7CisgICAgYm9vbCBzdWNjZXNzID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6
Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoc2VydmVySWRlbnRpZmllciwgY2xpZW50
SWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAg
IFN0cmluZyBleGVjdXRhYmxlUGF0aCwgcGx1Z2luUGF0aDsKICAgICBDU3RyaW5nIHJlYWxFeGVj
dXRhYmxlUGF0aCwgcmVhbFBsdWdpblBhdGg7CkBAIC05NCwyOSArODAsMzAgQEAgdm9pZCBQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIH0KIAogICAgIHJlYWxFeGVjdXRhYmxl
UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7Ci0gICAgR093
blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2NrZXRzWzBdKSk7Cisg
ICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBjbGllbnRJZGVu
dGlmaWVyKSk7CiAgICAgY2hhciogYXJndls0XTsKICAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxj
aGFyKj4ocmVhbEV4ZWN1dGFibGVQYXRoLmRhdGEoKSk7CiAgICAgYXJndlsxXSA9IHNvY2tldC5n
ZXQoKTsKICAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbFBsdWdpblBhdGguZGF0
YSgpKTsKICAgICBhcmd2WzNdID0gMDsKIAorICAgIEdQaWQgcGlkID0gMDsKICAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgaW50IHNwYXduRmxhZ3MgPSBHX1NQQVdOX0xFQVZFX0RFU0NS
SVBUT1JTX09QRU4gfCBHX1NQQVdOX0RPX05PVF9SRUFQX0NISUxEOwotICAgIGlmICghZ19zcGF3
bl9hc3luYygwLCBhcmd2LCAwLCBzdGF0aWNfY2FzdDxHU3Bhd25GbGFncz4oc3Bhd25GbGFncyks
IGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tldHNbMV0pLCAmcGlkLCAm
ZXJyb3Iub3V0UHRyKCkpKSB7CisgICAgaWYgKCFnX3NwYXduX2FzeW5jKDAsIGFyZ3YsIDAsIHN0
YXRpY19jYXN0PEdTcGF3bkZsYWdzPihzcGF3bkZsYWdzKSwgY2hpbGRTZXR1cEZ1bmN0aW9uLCAw
LCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAgICAgIGdfcHJpbnRlcnIoIlVuYWJsZSB0
byBmb3JrIGEgbmV3IFdlYlByb2Nlc3M6ICVzLlxuIiwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBjbG9zZShzb2NrZXRzWzBdKTsK
KyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpjbG9zZVNvY2tldChjbGllbnRJZGVudGlmaWVyKTsK
ICAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcGlkOwogCiAgICAgLy8gTW9uaXRvciB0aGUgY2hp
bGQgcHJvY2VzcywgaXQgY2FsbHMgd2FpdHBpZCB0byBwcmV2ZW50IHRoZSBjaGlsZCBwcm9jZXNz
IGZyb20gYmVjb21taW5nIGEgem9tYmllLAogICAgIC8vIGFuZCBpdCBhbGxvd3MgdXMgdG8gY2xv
c2UgdGhlIHNvY2tldCB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGNyYXNoZXMuCi0gICAgZ19jaGls
ZF93YXRjaF9hZGQobV9wcm9jZXNzSWRlbnRpZmllciwgY2hpbGRGaW5pc2hlZEZ1bmN0aW9uLCBH
SU5UX1RPX1BPSU5URVIoc29ja2V0c1sxXSkpOworICAgIGdfY2hpbGRfd2F0Y2hfYWRkKG1fcHJv
Y2Vzc0lkZW50aWZpZXIsIGNoaWxkRmluaXNoZWRGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKHNl
cnZlcklkZW50aWZpZXIpKTsKIAogICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUg
cHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgIFJ1bkxvb3A6
Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hp
bmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRzWzFdKSk7CisgICAg
UnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlz
aExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIHNlcnZlcklkZW50
aWZpZXIpKTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnRlcm1pbmF0ZVByb2Nlc3MoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NM
YXVuY2hlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9j
ZXNzTGF1bmNoZXJRdC5jcHAKaW5kZXggMzZiM2NkYmFlN2RhYTkxZjRhMDMzZTdmNzhhNTI0Y2Uy
MTgwMzkzYy4uOTcxZmQ4MWRiOTk2MjMwMzBhZDFhZWEyMmRiYWNlYjdlMWNjMWQ1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hl
clF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vz
c0xhdW5jaGVyUXQuY3BwCkBAIC0zNywxOSArMzcsMTQgQEAKICNpbmNsdWRlIDxRU3RyaW5nPgog
I2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+
CisjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIGRlZmlu
ZWQoUV9PU19VTklYKQotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNp
bmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDxzdHJpbmc+
CiAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFFfT1NfTElOVVgpCkBAIC03
MiwxMyArNjcsNiBAQAogZXh0ZXJuICJDIiBrZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3Rl
cjIobWFjaF9wb3J0X3QsIG5hbWVfdCwgbWFjaF9wb3J0X3QsIHVpbnQ2NF90KTsKICNlbmRpZgog
Ci0vLyBmb3IgUU5YIHdlIG5lZWQgU09DS19ER1JBTSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1MwotI2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYm
ICFkZWZpbmVkKFFfT1NfTUFDWCkgJiYgIU9TKFFOWCkKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09D
S19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRp
ZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
NDEsMzYgKzEyOSwxOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAg
ICAgQVNTRVJUX1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsKIAogICAgIGNvbW1hbmRM
aW5lID0gY29tbWFuZExpbmUuYXJnKHNlcnZpY2VOYW1lKTsKLSNlbGlmIE9TKFdJTkRPV1MpCisj
ZWxzZQogICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdG9yLCBjbGll
bnRJZGVudGlmaWVyOwogICAgIGlmICghQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVy
QW5kQ2xpZW50SWRlbnRpZmllcnMoY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyKSkgewogICAg
ICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaGVyZT8KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHF1
bG9uZ2xvbmcoY2xpZW50SWRlbnRpZmllcikpOworI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gRW5z
dXJlIHRoYXQgdGhlIGNoaWxkIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGNsaWVudCBpZGVudGlmaWVy
LgogICAgIDo6U2V0SGFuZGxlSW5mb3JtYXRpb24oY2xpZW50SWRlbnRpZmllciwgSEFORExFX0ZM
QUdfSU5IRVJJVCwgSEFORExFX0ZMQUdfSU5IRVJJVCk7Ci0jZWxzZQotICAgIGludCBzb2NrZXRz
WzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRz
KSA9PSAtMSkgewotICAgICAgICBxRGVidWcoKSA8PCAiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxl
ZCB3aXRoIGVycm5vOiIgPDwgZXJybm87Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB1aSBzb2Nr
ZXQgdG8gdGhlIHdlYiBwcm9jZXNzCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VU
RkQsIEZEX0NMT0VYRUMpICA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNs
b3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAg
IHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbnQgY29ubmVjdG9y
ID0gc29ja2V0c1sxXTsKLSAgICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhzb2NrZXRz
WzBdKTsKICNlbmRpZgorI2VuZGlmIC8vIE9TKERBUldJTgogCiAjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQogICAgIGlmIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUGx1Z2luUHJv
Y2VzcykKQEAgLTE5NCwxOCArMTY0LDkgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MoKQogICAgIHdlYlByb2Nlc3NPclNVSURIZWxwZXItPnN0YXJ0KGNvbW1hbmRMaW5lKTsK
ICNlbmRpZgogCi0jaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikKLSAgICAvLyBEb24ndCBleHBv
c2UgdGhlIHdlYiBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMKLSAgICB3
aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAg
ICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIGRlbGV0ZSB3ZWJQcm9jZXNzT3JTVUlESGVscGVyOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAoIXdlYlBy
b2Nlc3NPclNVSURIZWxwZXItPndhaXRGb3JTdGFydGVkKCkpIHsKKyAgICBib29sIHN0YXJ0ZWQg
PSB3ZWJQcm9jZXNzT3JTVUlESGVscGVyLT53YWl0Rm9yU3RhcnRlZCgpOworICAgIENvcmVJUEM6
OkNvbm5lY3Rpb246OmNsb3NlU29ja2V0KGNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghc3Rh
cnRlZCkgewogICAgICAgICBxRGVidWcoKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IiA8PCBjb21tYW5k
TGluZTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjaWYgT1MoREFSV0lOKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>