<?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>77751</bug_id>
          
          <creation_ts>2012-02-03 10:37:55 -0800</creation_ts>
          <short_desc>[BlackBerry] Upstream BlackBerry WebCoreSupport ClientExtension and GeolocationControllerClientBlackBerry classes</short_desc>
          <delta_ts>2012-02-04 01:24:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>73144</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jacky Jiang">jkjiang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>manyoso</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>548836</commentid>
    <comment_count>0</comment_count>
    <who name="Jacky Jiang">jkjiang</who>
    <bug_when>2012-02-03 10:37:55 -0800</bug_when>
    <thetext>Upstream BlackBerry WebCoreSupport ClientExtension and GeolocationControllerClientBlackBerry classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548877</commentid>
    <comment_count>1</comment_count>
      <attachid>125369</attachid>
    <who name="Jacky Jiang">jkjiang</who>
    <bug_when>2012-02-03 11:19:44 -0800</bug_when>
    <thetext>Created attachment 125369
Patch

Note: this patch includes the self review diff with the local repo, which is in the local repo webkit/b3011d25da9ab740bac3eed65c94021b14576499.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548920</commentid>
    <comment_count>2</comment_count>
      <attachid>125369</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-02-03 11:53:14 -0800</bug_when>
    <thetext>Comment on attachment 125369
Patch

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

Some things to check and improve still.

&gt; Source/WebKit/blackberry/WebCoreSupport/ClientExtension.cpp:2
&gt; + * Copyright (C) 2010, 2011 Research In Motion Limited. All rights reserved.

These all probably need 2012 Copyright if they are changed in 2012.

&gt; Source/WebKit/blackberry/WebCoreSupport/ClientExtension.cpp:30
&gt; +#include &lt;wtf/OwnArrayPtr.h&gt;

Is this needed?

&gt; Source/WebKit/blackberry/WebCoreSupport/ClientExtension.cpp:35
&gt; +using namespace std;

Are all of these needed?

&gt; Source/WebKit/blackberry/WebCoreSupport/ClientExtension.cpp:55
&gt; +        string retVal = client-&gt;invokeClientJavaScriptCallback(strArgs, argumentCount).utf8();

You should be able to combine the below if and retVal.

&gt; Source/WebKit/blackberry/WebCoreSupport/GeolocationControllerClientBlackBerry.cpp:26
&gt; +#include &quot;GeolocationPosition.h&quot;

Can this be removed?

&gt; Source/WebKit/blackberry/WebCoreSupport/GeolocationControllerClientBlackBerry.cpp:27
&gt; +#include &quot;NotImplemented.h&quot;

Can this be removed?

&gt; Source/WebKit/blackberry/WebCoreSupport/GeolocationControllerClientBlackBerry.h:30
&gt; +class GeolocationControllerClientBlackBerry : public WebCore::GeolocationClient, public BlackBerry::Platform::GeoTrackerListener {

You don&apos;t need WebCore:: since it is in the WebCore namespace.

&gt; Source/WebKit/blackberry/WebCoreSupport/GeolocationControllerClientBlackBerry.h:37
&gt; +    virtual WebCore::GeolocationPosition* lastPosition();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548992</commentid>
    <comment_count>3</comment_count>
      <attachid>125393</attachid>
    <who name="Jacky Jiang">jkjiang</who>
    <bug_when>2012-02-03 13:09:32 -0800</bug_when>
    <thetext>Created attachment 125393
Patch

Updated the patch according to Rob&apos;s review except combining retVal and removing some of the using namespace in ClientExtension.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549075</commentid>
    <comment_count>4</comment_count>
      <attachid>125393</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-02-03 14:24:35 -0800</bug_when>
    <thetext>Comment on attachment 125393
Patch

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

This is almost perfect, just needs the early return style.

&gt; Source/WebKit/blackberry/WebCoreSupport/ClientExtension.cpp:39
&gt; +    JSValueRef jsRetVal = JSValueMakeUndefined(ctx);

This code should look better with early return if argumentCount &lt;= 0, which is webkit style, can you do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549084</commentid>
    <comment_count>5</comment_count>
      <attachid>125393</attachid>
    <who name="Jacky Jiang">jkjiang</who>
    <bug_when>2012-02-03 14:30:36 -0800</bug_when>
    <thetext>Comment on attachment 125393
Patch

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

&gt;&gt; Source/WebKit/blackberry/WebCoreSupport/ClientExtension.cpp:39
&gt;&gt; +    JSValueRef jsRetVal = JSValueMakeUndefined(ctx);
&gt; 
&gt; This code should look better with early return if argumentCount &lt;= 0, which is webkit style, can you do that?

Ok, I will do it, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549135</commentid>
    <comment_count>6</comment_count>
      <attachid>125427</attachid>
    <who name="Jacky Jiang">jkjiang</who>
    <bug_when>2012-02-03 14:56:26 -0800</bug_when>
    <thetext>Created attachment 125427
Patch

Update the patch according to the early return suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549138</commentid>
    <comment_count>7</comment_count>
      <attachid>125427</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-02-03 14:59:33 -0800</bug_when>
    <thetext>Comment on attachment 125427
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549391</commentid>
    <comment_count>8</comment_count>
      <attachid>125427</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-04 01:24:25 -0800</bug_when>
    <thetext>Comment on attachment 125427
Patch

Clearing flags on attachment: 125427

Committed r106731: &lt;http://trac.webkit.org/changeset/106731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549392</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-04 01:24:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125369</attachid>
            <date>2012-02-03 11:19:44 -0800</date>
            <delta_ts>2012-02-03 13:09:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77751-20120203091941.patch</filename>
            <type>text/plain</type>
            <size>14188</size>
            <attacher name="Jacky Jiang">jkjiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmYzlhZGY3YTBiZjM4NDI4
MjI4ZTdjNjM2YWY3NzJiYzU3MTE0MzYuLjNjYzBlNDMyMzRlYmUxYmEwMjUwOWUyMmMzM2M1ZjU4
N2RlZTMwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDItMDMgIEphY2t5IEpp
YW5nICA8emhhamlhbmdAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJlYW0g
QmxhY2tCZXJyeSBXZWJDb3JlU3VwcG9ydCBDbGllbnRFeHRlbnNpb24gYW5kIEdlb2xvY2F0aW9u
Q29udHJvbGxlckNsaWVudEJsYWNrQmVycnkgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIHVwc3RyZWFtLCBubyBuZXcgdGVzdHMu
CisKKyAgICAgICAgKiBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5j
cHA6IEFkZGVkLgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0
ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvR2Vv
bG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAq
IGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Qmxh
Y2tCZXJyeS5oOiBBZGRlZC4KKwogMjAxMi0wMS0xMSAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0By
aW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBBU1NFUlQgZmFpbHVyZSBpbiBCYWNraW5n
U3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DbGllbnRFeHRlbnNpb24uY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGIzMzU2N2ZlN2M3NzUzOTNlOGM3YjYxNjE5MzY3OWY5ZTk1ZWMyNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9D
bGllbnRFeHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDbGllbnRFeHRlbnNpb24uaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiV2Vi
UGFnZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTVmFsdWVSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+Cisj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorCit1c2luZyBu
YW1lc3BhY2UgV1RGOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ug
QmxhY2tCZXJyeTo6V2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworc3RhdGljIEpTVmFs
dWVSZWYgY2xpZW50RXh0ZW5zaW9uTWV0aG9kKAorICAgIEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uT2JqZWN0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LAorICAgIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgSlNWYWx1ZVJlZiBqc1JldFZhbCA9IEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7CisKKyAgICBpZiAoYXJndW1lbnRDb3VudCA+IDApIHsKKyAgICAgICAgY2hh
cioqIHN0ckFyZ3MgPSBuZXcgY2hhcipbYXJndW1lbnRDb3VudF07CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpIHsKKyAgICAgICAgICAgIEpTU3Ry
aW5nUmVmIHN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY3R4LCBhcmd1bWVudHNbaV0sIDAp
OworICAgICAgICAgICAgc2l6ZV90IHNpemVVVEY4ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKHN0cmluZyk7CisgICAgICAgICAgICBzdHJBcmdzW2ldID0gbmV3IGNoYXJbc2l6
ZVVURjhdOworICAgICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIHN0ckFy
Z3NbaV0sIHNpemVVVEY4KTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzdHJpbmcpOwor
ICAgICAgICB9CisKKyAgICAgICAgV2ViUGFnZUNsaWVudCogY2xpZW50ID0gcmVpbnRlcnByZXRf
Y2FzdDxXZWJQYWdlQ2xpZW50Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKwor
ICAgICAgICBzdHJpbmcgcmV0VmFsID0gY2xpZW50LT5pbnZva2VDbGllbnRKYXZhU2NyaXB0Q2Fs
bGJhY2soc3RyQXJncywgYXJndW1lbnRDb3VudCkudXRmOCgpOworCisgICAgICAgIGlmICghcmV0
VmFsLmVtcHR5KCkpCisgICAgICAgICAgICBqc1JldFZhbCA9IEpTVmFsdWVNYWtlU3RyaW5nKGN0
eCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmV0VmFsLmNfc3RyKCkpKTsKKworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQorICAgICAg
ICAgICAgZGVsZXRlW10gc3RyQXJnc1tpXTsKKyAgICAgICAgZGVsZXRlW10gc3RyQXJnczsKKyAg
ICB9CisKKyAgICByZXR1cm4ganNSZXRWYWw7Cit9CisKK3N0YXRpYyB2b2lkIGNsaWVudEV4dGVu
c2lvbkluaXRpYWxpemUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7
Cit9CisKK3N0YXRpYyB2b2lkIGNsaWVudEV4dGVuc2lvbkZpbmFsaXplKEpTT2JqZWN0UmVmIG9i
amVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKK30KKworc3RhdGljIEpTU3RhdGlj
RnVuY3Rpb24gY2xpZW50RXh0ZW5zaW9uU3RhdGljRnVuY3Rpb25zW10gPSB7CisgICAgeyAiY2Fs
bEV4dGVuc2lvbk1ldGhvZCIsIGNsaWVudEV4dGVuc2lvbk1ldGhvZCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVOb25lIH0sCisgICAgeyAwLCAwLCAwIH0KK307CisKK3N0YXRpYyBKU1N0YXRpY1ZhbHVl
IGNsaWVudEV4dGVuc2lvblN0YXRpY1ZhbHVlc1tdID0geworICAgIHsgMCwgMCwgMCwgMCB9Cit9
OworCisvLyBGSVhNRTogUmV2aXNpdCB0aGUgY3JlYXRpb24gb2YgdGhpcyBjbGFzcyBhbmQgbWFr
ZSBzdXJlIHRoaXMgaXMgdGhlIGJlc3Qgd2F5IHRvIGFwcHJvYWNoIGl0Lgordm9pZCBhdHRhY2hF
eHRlbnNpb25PYmplY3RUb0ZyYW1lKEZyYW1lKiBmcmFtZSwgV2ViUGFnZUNsaWVudCogY2xpZW50
KQoreworICAgIEpTQzo6SlNMb2NrIGxvY2soSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwor
CisgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT53aW5kb3coKTsKKworICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gd2luZG93LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDb250ZXh0UmVmIHNjcmlwdEN0
eCA9IHRvUmVmKGV4ZWMpOworCisgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbiA9IGtK
U0NsYXNzRGVmaW5pdGlvbkVtcHR5OworICAgIGRlZmluaXRpb24uc3RhdGljVmFsdWVzID0gY2xp
ZW50RXh0ZW5zaW9uU3RhdGljVmFsdWVzOworICAgIGRlZmluaXRpb24uc3RhdGljRnVuY3Rpb25z
ID0gY2xpZW50RXh0ZW5zaW9uU3RhdGljRnVuY3Rpb25zOworICAgIGRlZmluaXRpb24uaW5pdGlh
bGl6ZSA9IGNsaWVudEV4dGVuc2lvbkluaXRpYWxpemU7CisgICAgZGVmaW5pdGlvbi5maW5hbGl6
ZSA9IGNsaWVudEV4dGVuc2lvbkZpbmFsaXplOworICAgIEpTQ2xhc3NSZWYgY2xpZW50Q2xhc3Mg
PSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKKworICAgIEpTT2JqZWN0UmVmIGNsaWVudENs
YXNzT2JqZWN0ID0gSlNPYmplY3RNYWtlKHNjcmlwdEN0eCwgY2xpZW50Q2xhc3MsIDApOworICAg
IEpTT2JqZWN0U2V0UHJpdmF0ZShjbGllbnRDbGFzc09iamVjdCwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oY2xpZW50KSk7CisKKyAgICBKU0M6OlVTdHJpbmcgbmFtZSgicW54Iik7CisKKyAgICBK
U0M6OlB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIHdpbmRvdy0+cHV0KHdpbmRvdywgZXhlYywg
SlNDOjpJZGVudGlmaWVyKGV4ZWMsIG5hbWUpLCB0b0pTKGNsaWVudENsYXNzT2JqZWN0KSwgc2xv
dCk7CisKKyAgICBKU0NsYXNzUmVsZWFzZShjbGllbnRDbGFzcyk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2E3NTYxNmE4MWQ1YmU2MGQzNmQ5NzE0MTA4NzJiZGEyN2YzOWY0NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9DbGllbnRFeHRlbnNpb24uaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgQ2xpZW50RXh0ZW5zaW9uX2gKKyNk
ZWZpbmUgQ2xpZW50RXh0ZW5zaW9uX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJh
bWU7Cit9CisKK25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgV2ViUGFnZUNsaWVudDsKK30KK30KKwordm9pZCBhdHRhY2hFeHRlbnNpb25PYmplY3RUb0Zy
YW1lKFdlYkNvcmU6OkZyYW1lKiwgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ2xpZW50Kik7
CisKKyNlbmRpZiAvLyBDbGllbnRFeHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJs
YWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0dl
b2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZmQ1
MDdlMzA0ZGVjZTc2ZTA3YzY5NWUxY2U4NzNiYjU0MzIxYjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnkuaCIKKworI2luY2x1
ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiR2VvbG9j
YXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgorI2luY2x1
ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZV9wLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitHZW9sb2NhdGlvbkNvbnRyb2xs
ZXJDbGllbnRCbGFja0JlcnJ5OjpHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5
KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSogd2ViUGFnZSkKKyAgICA6IG1fd2ViUGFnZSh3
ZWJQYWdlKQorICAgICwgbV90cmFja2VyKDApCisgICAgLCBtX2FjY3VyYWN5KGZhbHNlKQorewor
fQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnk6Omdlb2xvY2F0
aW9uRGVzdHJveWVkKCkKK3sKKyAgICBpZiAobV90cmFja2VyKQorICAgICAgICBtX3RyYWNrZXIt
PmRlc3Ryb3koKTsKKyAgICBkZWxldGUgdGhpczsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXJDbGllbnRCbGFja0JlcnJ5OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBpZiAobV90cmFj
a2VyKQorICAgICAgICBtX3RyYWNrZXItPnJlc3VtZSgpOworICAgIGVsc2UKKyAgICAgICAgbV90
cmFja2VyID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlb1RyYWNrZXI6OmNyZWF0ZSh0aGlzLCAw
LCBtX2FjY3VyYWN5LCAtMSwgLTEpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlckNs
aWVudEJsYWNrQmVycnk6OnN0b3BVcGRhdGluZygpCit7CisgICAgaWYgKG1fdHJhY2tlcikKKyAg
ICAgICAgbV90cmFja2VyLT5zdXNwZW5kKCk7Cit9CisKK0dlb2xvY2F0aW9uUG9zaXRpb24qIEdl
b2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnk6Omxhc3RQb3NpdGlvbigpCit7Cisg
ICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlckNsaWVudEJsYWNrQmVycnk6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBs
b2NhdGlvbikKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBsb2NhdGlvbi0+ZnJhbWUoKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgbV93ZWJQYWdlLT5kLT5tX3BhZ2UtPmNo
cm9tZSgpLT5yZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoZnJhbWUsIGxvY2F0
aW9uKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5Ojpj
YW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgRnJh
bWUqIGZyYW1lID0gbG9jYXRpb24tPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fd2ViUGFnZS0+ZC0+bV9wYWdlLT5jaHJvbWUoKS0+Y2FuY2VsR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKGZyYW1lLCBsb2NhdGlvbik7Cit9CisKK3Zv
aWQgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeTo6b25Mb2NhdGlvblVwZGF0
ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlLCBib29sIGFsdGl0dWRlVmFsaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgYWx0aXR1ZGVBY2N1cmFjeVZhbGlkLCBkb3Vi
bGUgc3BlZWQsIGJvb2wgc3BlZWRWYWxpZCwgZG91YmxlIGhlYWRpbmcsIGJvb2wgaGVhZGluZ1Zh
bGlkKQoreworICAgIG1fbGFzdFBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRl
KHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIGFsdGl0dWRlVmFsaWQs
IGFsdGl0dWRlLCBhbHRpdHVkZUFjY3VyYWN5VmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSwgaGVhZGluZ1ZhbGlk
LCBoZWFkaW5nLCBzcGVlZFZhbGlkLCBzcGVlZCk7CisgICAgbV93ZWJQYWdlLT5kLT5tX3BhZ2Ut
Pmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5wb3NpdGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24u
Z2V0KCkpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnk6
Om9uTG9jYXRpb25FcnJvcihjb25zdCBjaGFyKiBlcnJvclN0cikKK3sKKyAgICBSZWZQdHI8R2Vv
bG9jYXRpb25FcnJvcj4gZXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvclN0cikp
OworICAgIG1fd2ViUGFnZS0+ZC0+bV9wYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+ZXJy
b3JPY2N1cnJlZChlcnJvci5nZXQoKSk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVy
Q2xpZW50QmxhY2tCZXJyeTo6b25QZXJtaXNzaW9uKHZvaWQqIGNvbnRleHQsIGJvb2wgaXNBbGxv
d2VkKQoreworICAgIEdlb2xvY2F0aW9uKiBwb3NpdGlvbiA9IHN0YXRpY19jYXN0PEdlb2xvY2F0
aW9uKj4oY29udGV4dCk7CisgICAgcG9zaXRpb24tPnNldElzQWxsb3dlZChpc0FsbG93ZWQpOwor
fQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnk6OnNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShib29sIG5ld0FjY3VyYWN5KQoreworICAgIGlmIChtX2FjY3VyYWN5ID09
IG5ld0FjY3VyYWN5KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fdHJhY2tlcikgeworICAg
ICAgICBtX3RyYWNrZXItPmRlc3Ryb3koKTsKKyAgICAgICAgbV90cmFja2VyID0gQmxhY2tCZXJy
eTo6UGxhdGZvcm06Okdlb1RyYWNrZXI6OmNyZWF0ZSh0aGlzLCAwLCBuZXdBY2N1cmFjeSwgLTEs
IC0xKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5LmggYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50QmxhY2tCZXJyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4N2VlY2FmYTgwZWVkMzYzZGEyMGRj
YjRmYTU5YTUwNDZmZDZiMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJy
eS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2lmbmRlZiBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5
X2gKKyNkZWZpbmUgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeV9oCisKKyNp
bmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR2VvVHJhY2tl
ci5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdlb1RyYWNrZXJMaXN0ZW5lci5oPgor
I2luY2x1ZGUgPEdlb2xvY2F0aW9uQ2xpZW50Lmg+CisjaW5jbHVkZSA8R2VvbG9jYXRpb25Qb3Np
dGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9uQ29udHJv
bGxlckNsaWVudEJsYWNrQmVycnkgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQs
IHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R2VvVHJhY2tlckxpc3RlbmVyIHsKK3B1Ymxp
YzoKKyAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5KEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZSopOworCisgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJv
eWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uKiBsYXN0UG9zaXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlv
biopOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChHZW9sb2NhdGlv
biopOworCisgICAgdmlydHVhbCB2b2lkIG9uTG9jYXRpb25VcGRhdGUoZG91YmxlIHRpbWVzdGFt
cCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGRv
dWJsZSBhbHRpdHVkZSwgYm9vbCBhbHRpdHVkZVZhbGlkLCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFj
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsdGl0dWRlQWNjdXJh
Y3lWYWxpZCwgZG91YmxlIHNwZWVkLCBib29sIHNwZWVkVmFsaWQsIGRvdWJsZSBoZWFkaW5nLCBi
b29sIGhlYWRpbmdWYWxpZCk7CisgICAgdmlydHVhbCB2b2lkIG9uTG9jYXRpb25FcnJvcihjb25z
dCBjaGFyKiBlcnJvcik7CisgICAgdmlydHVhbCB2b2lkIG9uUGVybWlzc2lvbih2b2lkKiBjb250
ZXh0LCBib29sIGlzQWxsb3dlZCk7CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlb1RyYWNr
ZXIqIHRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrZXI7IH0KKworcHJpdmF0ZToKKyAg
ICBCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqIG1fd2ViUGFnZTsKKyAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R2VvVHJhY2tlciogbV90cmFja2VyOworICAgIFJlZlB0cjxHZW9sb2NhdGlv
blBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKKyAgICBib29sIG1fYWNjdXJhY3k7Cit9OworfQor
CisjZW5kaWYgLy8gR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125393</attachid>
            <date>2012-02-03 13:09:32 -0800</date>
            <delta_ts>2012-02-03 14:56:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77751-20120203110930.patch</filename>
            <type>text/plain</type>
            <size>14069</size>
            <attacher name="Jacky Jiang">jkjiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmYzlhZGY3YTBiZjM4NDI4
MjI4ZTdjNjM2YWY3NzJiYzU3MTE0MzYuLjNjYzBlNDMyMzRlYmUxYmEwMjUwOWUyMmMzM2M1ZjU4
N2RlZTMwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDItMDMgIEphY2t5IEpp
YW5nICA8emhhamlhbmdAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJlYW0g
QmxhY2tCZXJyeSBXZWJDb3JlU3VwcG9ydCBDbGllbnRFeHRlbnNpb24gYW5kIEdlb2xvY2F0aW9u
Q29udHJvbGxlckNsaWVudEJsYWNrQmVycnkgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIHVwc3RyZWFtLCBubyBuZXcgdGVzdHMu
CisKKyAgICAgICAgKiBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5j
cHA6IEFkZGVkLgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0
ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvR2Vv
bG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAq
IGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Qmxh
Y2tCZXJyeS5oOiBBZGRlZC4KKwogMjAxMi0wMS0xMSAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0By
aW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBBU1NFUlQgZmFpbHVyZSBpbiBCYWNraW5n
U3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DbGllbnRFeHRlbnNpb24uY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGEwYzVkYTEyNzBhMmEzNTFiNGI5N2UyYzYyMzhlOGUzMThiMzE3YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9D
bGllbnRFeHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDbGllbnRFeHRlbnNpb24uaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTVmFsdWVSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Lmg+CisjaW5jbHVkZSA8c3RyaW5nPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5n
IG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitz
dGF0aWMgSlNWYWx1ZVJlZiBjbGllbnRFeHRlbnNpb25NZXRob2QoCisgICAgSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb25PYmplY3QsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
CisgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU1ZhbHVlUmVmIGpzUmV0VmFsID0gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKworICAgIGlmIChhcmd1bWVudENvdW50ID4gMCkgewor
ICAgICAgICBjaGFyKiogc3RyQXJncyA9IG5ldyBjaGFyKlthcmd1bWVudENvdW50XTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgeworICAgICAg
ICAgICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjdHgsIGFyZ3Vt
ZW50c1tpXSwgMCk7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZVVURjggPSBKU1N0cmluZ0dldE1h
eGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKKyAgICAgICAgICAgIHN0ckFyZ3NbaV0gPSBu
ZXcgY2hhcltzaXplVVRGOF07CisgICAgICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHN0
cmluZywgc3RyQXJnc1tpXSwgc2l6ZVVURjgpOworICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNl
KHN0cmluZyk7CisgICAgICAgIH0KKworICAgICAgICBXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBy
ZWludGVycHJldF9jYXN0PFdlYlBhZ2VDbGllbnQqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOworICAgICAgICBzdHJpbmcgcmV0VmFsID0gY2xpZW50LT5pbnZva2VDbGllbnRKYXZh
U2NyaXB0Q2FsbGJhY2soc3RyQXJncywgYXJndW1lbnRDb3VudCkudXRmOCgpOworICAgICAgICBp
ZiAoIXJldFZhbC5lbXB0eSgpKQorICAgICAgICAgICAganNSZXRWYWwgPSBKU1ZhbHVlTWFrZVN0
cmluZyhjdHgsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJldFZhbC5jX3N0cigpKSk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkK
KyAgICAgICAgICAgIGRlbGV0ZVtdIHN0ckFyZ3NbaV07CisgICAgICAgIGRlbGV0ZVtdIHN0ckFy
Z3M7CisgICAgfQorCisgICAgcmV0dXJuIGpzUmV0VmFsOworfQorCitzdGF0aWMgdm9pZCBjbGll
bnRFeHRlbnNpb25Jbml0aWFsaXplKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBv
YmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShv
YmplY3QpOworfQorCitzdGF0aWMgdm9pZCBjbGllbnRFeHRlbnNpb25GaW5hbGl6ZShKU09iamVj
dFJlZiBvYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7Cit9CisKK3N0YXRpYyBK
U1N0YXRpY0Z1bmN0aW9uIGNsaWVudEV4dGVuc2lvblN0YXRpY0Z1bmN0aW9uc1tdID0geworICAg
IHsgImNhbGxFeHRlbnNpb25NZXRob2QiLCBjbGllbnRFeHRlbnNpb25NZXRob2QsIGtKU1Byb3Bl
cnR5QXR0cmlidXRlTm9uZSB9LAorICAgIHsgMCwgMCwgMCB9Cit9OworCitzdGF0aWMgSlNTdGF0
aWNWYWx1ZSBjbGllbnRFeHRlbnNpb25TdGF0aWNWYWx1ZXNbXSA9IHsKKyAgICB7IDAsIDAsIDAs
IDAgfQorfTsKKworLy8gRklYTUU6IFJldmlzaXQgdGhlIGNyZWF0aW9uIG9mIHRoaXMgY2xhc3Mg
YW5kIG1ha2Ugc3VyZSB0aGlzIGlzIHRoZSBiZXN0IHdheSB0byBhcHByb2FjaCBpdC4KK3ZvaWQg
YXR0YWNoRXh0ZW5zaW9uT2JqZWN0VG9GcmFtZShGcmFtZSogZnJhbWUsIFdlYlBhZ2VDbGllbnQq
IGNsaWVudCkKK3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKKworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBmcmFtZS0+c2NyaXB0KCktPndpbmRv
d1NoZWxsKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCk7CisKKyAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFsRXhlYygpOworICAgIEpTQ29udGV4dFJlZiBz
Y3JpcHRDdHggPSB0b1JlZihleGVjKTsKKworICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRp
b24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKKyAgICBkZWZpbml0aW9uLnN0YXRpY1ZhbHVl
cyA9IGNsaWVudEV4dGVuc2lvblN0YXRpY1ZhbHVlczsKKyAgICBkZWZpbml0aW9uLnN0YXRpY0Z1
bmN0aW9ucyA9IGNsaWVudEV4dGVuc2lvblN0YXRpY0Z1bmN0aW9uczsKKyAgICBkZWZpbml0aW9u
LmluaXRpYWxpemUgPSBjbGllbnRFeHRlbnNpb25Jbml0aWFsaXplOworICAgIGRlZmluaXRpb24u
ZmluYWxpemUgPSBjbGllbnRFeHRlbnNpb25GaW5hbGl6ZTsKKyAgICBKU0NsYXNzUmVmIGNsaWVu
dENsYXNzID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7CisKKyAgICBKU09iamVjdFJlZiBj
bGllbnRDbGFzc09iamVjdCA9IEpTT2JqZWN0TWFrZShzY3JpcHRDdHgsIGNsaWVudENsYXNzLCAw
KTsKKyAgICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50Q2xhc3NPYmplY3QsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGNsaWVudCkpOworCisgICAgSlNDOjpVU3RyaW5nIG5hbWUoInFueCIpOwor
CisgICAgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICB3aW5kb3ctPnB1dCh3aW5kb3cs
IGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCBuYW1lKSwgdG9KUyhjbGllbnRDbGFzc09iamVj
dCksIHNsb3QpOworCisgICAgSlNDbGFzc1JlbGVhc2UoY2xpZW50Q2xhc3MpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVu
c2lvbi5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4
dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhNzU2MTZhODFkNWJlNjBkMzZkOTcxNDEwODcyYmRhMjdm
MzlmNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIENsaWVudEV4dGVuc2lv
bl9oCisjZGVmaW5lIENsaWVudEV4dGVuc2lvbl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIEZyYW1lOworfQorCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYlBhZ2VDbGllbnQ7Cit9Cit9CisKK3ZvaWQgYXR0YWNoRXh0ZW5zaW9uT2Jq
ZWN0VG9GcmFtZShXZWJDb3JlOjpGcmFtZSosIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNs
aWVudCopOworCisjZW5kaWYgLy8gQ2xpZW50RXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNDdiYjk4MWRkMWFlMWIyMTMzYjViYjgxZjYxMGI5Mzg4MmM4MjAzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9u
Q29udHJvbGxlckNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5
LmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2lu
Y2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uRXJy
b3IuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
IldlYlBhZ2VfcC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworR2VvbG9jYXRpb25D
b250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeTo6R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Qmxh
Y2tCZXJyeShCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqIHdlYlBhZ2UpCisgICAgOiBtX3dl
YlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1fdHJhY2tlcigwKQorICAgICwgbV9hY2N1cmFjeShmYWxz
ZSkKK3sKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5Ojpn
ZW9sb2NhdGlvbkRlc3Ryb3llZCgpCit7CisgICAgaWYgKG1fdHJhY2tlcikKKyAgICAgICAgbV90
cmFja2VyLT5kZXN0cm95KCk7CisgICAgZGVsZXRlIHRoaXM7Cit9CisKK3ZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeTo6c3RhcnRVcGRhdGluZygpCit7CisgICAgaWYg
KG1fdHJhY2tlcikKKyAgICAgICAgbV90cmFja2VyLT5yZXN1bWUoKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fdHJhY2tlciA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZW9UcmFja2VyOjpjcmVhdGUo
dGhpcywgMCwgbV9hY2N1cmFjeSwgLTEsIC0xKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXJDbGllbnRCbGFja0JlcnJ5OjpzdG9wVXBkYXRpbmcoKQoreworICAgIGlmIChtX3RyYWNr
ZXIpCisgICAgICAgIG1fdHJhY2tlci0+c3VzcGVuZCgpOworfQorCitHZW9sb2NhdGlvblBvc2l0
aW9uKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5OjpsYXN0UG9zaXRpb24o
KQoreworICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbi5nZXQoKTsKK30KKwordm9pZCBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2Nh
dGlvbiogbG9jYXRpb24pCit7CisgICAgRnJhbWUqIGZyYW1lID0gbG9jYXRpb24tPmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fd2ViUGFnZS0+ZC0+bV9w
YWdlLT5jaHJvbWUoKS0+cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKGZyYW1l
LCBsb2NhdGlvbik7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tC
ZXJyeTo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qIGxvY2F0aW9uKQorewor
ICAgIEZyYW1lKiBmcmFtZSA9IGxvY2F0aW9uLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX3dlYlBhZ2UtPmQtPm1fcGFnZS0+Y2hyb21lKCktPmNhbmNl
bEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShmcmFtZSwgbG9jYXRpb24pOwor
fQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnk6Om9uTG9jYXRp
b25VcGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0
dWRlLCBkb3VibGUgYWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBhbHRpdHVkZVZhbGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIGFsdGl0dWRlQWNjdXJhY3lWYWxp
ZCwgZG91YmxlIHNwZWVkLCBib29sIHNwZWVkVmFsaWQsIGRvdWJsZSBoZWFkaW5nLCBib29sIGhl
YWRpbmdWYWxpZCkKK3sKKyAgICBtX2xhc3RQb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBhbHRpdHVk
ZVZhbGlkLCBhbHRpdHVkZSwgYWx0aXR1ZGVBY2N1cmFjeVZhbGlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGl0dWRlQWNjdXJhY3ksIGhlYWRp
bmdWYWxpZCwgaGVhZGluZywgc3BlZWRWYWxpZCwgc3BlZWQpOworICAgIG1fd2ViUGFnZS0+ZC0+
bV9wYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+cG9zaXRpb25DaGFuZ2VkKG1fbGFzdFBv
c2l0aW9uLmdldCgpKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFj
a0JlcnJ5OjpvbkxvY2F0aW9uRXJyb3IoY29uc3QgY2hhciogZXJyb3JTdHIpCit7CisgICAgUmVm
UHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKEdl
b2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIFN0cmluZzo6ZnJvbVVURjgoZXJy
b3JTdHIpKTsKKyAgICBtX3dlYlBhZ2UtPmQtPm1fcGFnZS0+Z2VvbG9jYXRpb25Db250cm9sbGVy
KCktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlckNsaWVudEJsYWNrQmVycnk6Om9uUGVybWlzc2lvbih2b2lkKiBjb250ZXh0LCBib29s
IGlzQWxsb3dlZCkKK3sKKyAgICBHZW9sb2NhdGlvbiogcG9zaXRpb24gPSBzdGF0aWNfY2FzdDxH
ZW9sb2NhdGlvbio+KGNvbnRleHQpOworICAgIHBvc2l0aW9uLT5zZXRJc0FsbG93ZWQoaXNBbGxv
d2VkKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5Ojpz
ZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBuZXdBY2N1cmFjeSkKK3sKKyAgICBpZiAobV9hY2N1
cmFjeSA9PSBuZXdBY2N1cmFjeSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3RyYWNrZXIp
IHsKKyAgICAgICAgbV90cmFja2VyLT5kZXN0cm95KCk7CisgICAgICAgIG1fdHJhY2tlciA9IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpHZW9UcmFja2VyOjpjcmVhdGUodGhpcywgMCwgbmV3QWNjdXJh
Y3ksIC0xLCAtMSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJy
eS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9u
Q29udHJvbGxlckNsaWVudEJsYWNrQmVycnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGIwOTVkZDRkZDE4MDA1
MjYyYTA4NWE5ZTFhMTUxYTQwNTZmYTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJs
YWNrQmVycnkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xp
ZW50QmxhY2tCZXJyeV9oCisjZGVmaW5lIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNr
QmVycnlfaAorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0
Zm9ybUdlb1RyYWNrZXIuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HZW9UcmFja2Vy
TGlzdGVuZXIuaD4KKyNpbmNsdWRlIDxHZW9sb2NhdGlvbkNsaWVudC5oPgorI2luY2x1ZGUgPEdl
b2xvY2F0aW9uUG9zaXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHZW9s
b2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5IDogcHVibGljIEdlb2xvY2F0aW9uQ2xp
ZW50LCBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlb1RyYWNrZXJMaXN0ZW5lciB7Citw
dWJsaWM6CisgICAgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeShCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2UqKTsKKworICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRl
c3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVh
bCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZpcnR1YWwgR2VvbG9jYXRpb25Qb3NpdGlvbiog
bGFzdFBvc2l0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShi
b29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qKTsK
KworICAgIHZpcnR1YWwgdm9pZCBvbkxvY2F0aW9uVXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRv
dWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBkb3VibGUg
YWx0aXR1ZGUsIGJvb2wgYWx0aXR1ZGVWYWxpZCwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbHRpdHVkZUFjY3VyYWN5VmFs
aWQsIGRvdWJsZSBzcGVlZCwgYm9vbCBzcGVlZFZhbGlkLCBkb3VibGUgaGVhZGluZywgYm9vbCBo
ZWFkaW5nVmFsaWQpOworICAgIHZpcnR1YWwgdm9pZCBvbkxvY2F0aW9uRXJyb3IoY29uc3QgY2hh
ciogZXJyb3IpOworICAgIHZpcnR1YWwgdm9pZCBvblBlcm1pc3Npb24odm9pZCogY29udGV4dCwg
Ym9vbCBpc0FsbG93ZWQpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZW9UcmFja2VyKiB0
cmFja2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmFja2VyOyB9CisKK3ByaXZhdGU6CisgICAgQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiBtX3dlYlBhZ2U7CisgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06Okdlb1RyYWNrZXIqIG1fdHJhY2tlcjsKKyAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3Np
dGlvbj4gbV9sYXN0UG9zaXRpb247CisgICAgYm9vbCBtX2FjY3VyYWN5OworfTsKK30KKworI2Vu
ZGlmIC8vIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnlfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125427</attachid>
            <date>2012-02-03 14:56:26 -0800</date>
            <delta_ts>2012-02-04 01:24:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77751-20120203125623.patch</filename>
            <type>text/plain</type>
            <size>14027</size>
            <attacher name="Jacky Jiang">jkjiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmYzlhZGY3YTBiZjM4NDI4
MjI4ZTdjNjM2YWY3NzJiYzU3MTE0MzYuLjNjYzBlNDMyMzRlYmUxYmEwMjUwOWUyMmMzM2M1ZjU4
N2RlZTMwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDItMDMgIEphY2t5IEpp
YW5nICA8emhhamlhbmdAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJlYW0g
QmxhY2tCZXJyeSBXZWJDb3JlU3VwcG9ydCBDbGllbnRFeHRlbnNpb24gYW5kIEdlb2xvY2F0aW9u
Q29udHJvbGxlckNsaWVudEJsYWNrQmVycnkgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIHVwc3RyZWFtLCBubyBuZXcgdGVzdHMu
CisKKyAgICAgICAgKiBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5j
cHA6IEFkZGVkLgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0
ZW5zaW9uLmg6IEFkZGVkLgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvR2Vv
bG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAq
IGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Qmxh
Y2tCZXJyeS5oOiBBZGRlZC4KKwogMjAxMi0wMS0xMSAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0By
aW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBBU1NFUlQgZmFpbHVyZSBpbiBCYWNraW5n
U3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DbGllbnRFeHRlbnNpb24uY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDNkN2I2MmI5ODYyMGIyNDM1MGE4ZThmNGM3MWEwNzNlYjMzMTNjNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9D
bGllbnRFeHRlbnNpb24uY3BwCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDbGllbnRFeHRlbnNpb24uaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTVmFsdWVSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Lmg+CisjaW5jbHVkZSA8c3RyaW5nPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5n
IG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitz
dGF0aWMgSlNWYWx1ZVJlZiBjbGllbnRFeHRlbnNpb25NZXRob2QoCisgICAgSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb25PYmplY3QsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
CisgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU1ZhbHVlUmVmIGpzUmV0VmFsID0gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8PSAwKQorICAg
ICAgICByZXR1cm4ganNSZXRWYWw7CisKKyAgICBjaGFyKiogc3RyQXJncyA9IG5ldyBjaGFyKlth
cmd1bWVudENvdW50XTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgKytpKSB7CisgICAgICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY3R4LCBhcmd1bWVudHNbaV0sIDApOworICAgICAgICBzaXplX3Qgc2l6ZVVURjggPSBKU1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKKyAgICAgICAgc3RyQXJnc1tp
XSA9IG5ldyBjaGFyW3NpemVVVEY4XTsKKyAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhz
dHJpbmcsIHN0ckFyZ3NbaV0sIHNpemVVVEY4KTsKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHN0
cmluZyk7CisgICAgfQorCisgICAgV2ViUGFnZUNsaWVudCogY2xpZW50ID0gcmVpbnRlcnByZXRf
Y2FzdDxXZWJQYWdlQ2xpZW50Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAg
ICBzdHJpbmcgcmV0VmFsID0gY2xpZW50LT5pbnZva2VDbGllbnRKYXZhU2NyaXB0Q2FsbGJhY2so
c3RyQXJncywgYXJndW1lbnRDb3VudCkudXRmOCgpOworICAgIGlmICghcmV0VmFsLmVtcHR5KCkp
CisgICAgICAgIGpzUmV0VmFsID0gSlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhyZXRWYWwuY19zdHIoKSkpOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKKyAgICAgICAgZGVsZXRlW10gc3RyQXJnc1tp
XTsKKyAgICBkZWxldGVbXSBzdHJBcmdzOworCisgICAgcmV0dXJuIGpzUmV0VmFsOworfQorCitz
dGF0aWMgdm9pZCBjbGllbnRFeHRlbnNpb25Jbml0aWFsaXplKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAg
IFVOVVNFRF9QQVJBTShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCBjbGllbnRFeHRlbnNpb25G
aW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7
Cit9CisKK3N0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIGNsaWVudEV4dGVuc2lvblN0YXRpY0Z1bmN0
aW9uc1tdID0geworICAgIHsgImNhbGxFeHRlbnNpb25NZXRob2QiLCBjbGllbnRFeHRlbnNpb25N
ZXRob2QsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAgIHsgMCwgMCwgMCB9Cit9Owor
CitzdGF0aWMgSlNTdGF0aWNWYWx1ZSBjbGllbnRFeHRlbnNpb25TdGF0aWNWYWx1ZXNbXSA9IHsK
KyAgICB7IDAsIDAsIDAsIDAgfQorfTsKKworLy8gRklYTUU6IFJldmlzaXQgdGhlIGNyZWF0aW9u
IG9mIHRoaXMgY2xhc3MgYW5kIG1ha2Ugc3VyZSB0aGlzIGlzIHRoZSBiZXN0IHdheSB0byBhcHBy
b2FjaCBpdC4KK3ZvaWQgYXR0YWNoRXh0ZW5zaW9uT2JqZWN0VG9GcmFtZShGcmFtZSogZnJhbWUs
IFdlYlBhZ2VDbGllbnQqIGNsaWVudCkKK3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6U2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBmcmFtZS0+
c2NyaXB0KCktPndpbmRvd1NoZWxsKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCk7
CisKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFsRXhlYygpOworICAg
IEpTQ29udGV4dFJlZiBzY3JpcHRDdHggPSB0b1JlZihleGVjKTsKKworICAgIEpTQ2xhc3NEZWZp
bml0aW9uIGRlZmluaXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKKyAgICBkZWZpbml0
aW9uLnN0YXRpY1ZhbHVlcyA9IGNsaWVudEV4dGVuc2lvblN0YXRpY1ZhbHVlczsKKyAgICBkZWZp
bml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9IGNsaWVudEV4dGVuc2lvblN0YXRpY0Z1bmN0aW9uczsK
KyAgICBkZWZpbml0aW9uLmluaXRpYWxpemUgPSBjbGllbnRFeHRlbnNpb25Jbml0aWFsaXplOwor
ICAgIGRlZmluaXRpb24uZmluYWxpemUgPSBjbGllbnRFeHRlbnNpb25GaW5hbGl6ZTsKKyAgICBK
U0NsYXNzUmVmIGNsaWVudENsYXNzID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7CisKKyAg
ICBKU09iamVjdFJlZiBjbGllbnRDbGFzc09iamVjdCA9IEpTT2JqZWN0TWFrZShzY3JpcHRDdHgs
IGNsaWVudENsYXNzLCAwKTsKKyAgICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50Q2xhc3NPYmpl
Y3QsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNsaWVudCkpOworCisgICAgSlNDOjpVU3RyaW5n
IG5hbWUoInFueCIpOworCisgICAgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICB3aW5k
b3ctPnB1dCh3aW5kb3csIGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCBuYW1lKSwgdG9KUyhj
bGllbnRDbGFzc09iamVjdCksIHNsb3QpOworCisgICAgSlNDbGFzc1JlbGVhc2UoY2xpZW50Q2xh
c3MpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0NsaWVudEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0NsaWVudEV4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhNzU2MTZhODFkNWJlNjBkMzZk
OTcxNDEwODcyYmRhMjdmMzlmNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmgKQEAgLTAsMCArMSwzNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVm
IENsaWVudEV4dGVuc2lvbl9oCisjZGVmaW5lIENsaWVudEV4dGVuc2lvbl9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworfQorCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7Citu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2VDbGllbnQ7Cit9Cit9CisKK3ZvaWQgYXR0
YWNoRXh0ZW5zaW9uT2JqZWN0VG9GcmFtZShXZWJDb3JlOjpGcmFtZSosIEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViUGFnZUNsaWVudCopOworCisjZW5kaWYgLy8gQ2xpZW50RXh0ZW5zaW9uX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNDdiYjk4MWRkMWFlMWIyMTMzYjViYjgxZjYxMGI5Mzg4MmM4MjAz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEs
MTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnRCbGFja0JlcnJ5LmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJHZW9s
b2NhdGlvbi5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VfcC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeTo6R2VvbG9jYXRpb25Db250
cm9sbGVyQ2xpZW50QmxhY2tCZXJyeShCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqIHdlYlBh
Z2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1fdHJhY2tlcigwKQorICAgICwg
bV9hY2N1cmFjeShmYWxzZSkKK3sKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGll
bnRCbGFja0JlcnJ5OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCgpCit7CisgICAgaWYgKG1fdHJhY2tl
cikKKyAgICAgICAgbV90cmFja2VyLT5kZXN0cm95KCk7CisgICAgZGVsZXRlIHRoaXM7Cit9CisK
K3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeTo6c3RhcnRVcGRhdGlu
ZygpCit7CisgICAgaWYgKG1fdHJhY2tlcikKKyAgICAgICAgbV90cmFja2VyLT5yZXN1bWUoKTsK
KyAgICBlbHNlCisgICAgICAgIG1fdHJhY2tlciA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZW9U
cmFja2VyOjpjcmVhdGUodGhpcywgMCwgbV9hY2N1cmFjeSwgLTEsIC0xKTsKK30KKwordm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5OjpzdG9wVXBkYXRpbmcoKQorewor
ICAgIGlmIChtX3RyYWNrZXIpCisgICAgICAgIG1fdHJhY2tlci0+c3VzcGVuZCgpOworfQorCitH
ZW9sb2NhdGlvblBvc2l0aW9uKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5
OjpsYXN0UG9zaXRpb24oKQoreworICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbi5nZXQoKTsKK30K
Kwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0UGVy
bWlzc2lvbihHZW9sb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgRnJhbWUqIGZyYW1lID0gbG9j
YXRpb24tPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
d2ViUGFnZS0+ZC0+bV9wYWdlLT5jaHJvbWUoKS0+cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lv
bkZvckZyYW1lKGZyYW1lLCBsb2NhdGlvbik7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50QmxhY2tCZXJyeTo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24q
IGxvY2F0aW9uKQoreworICAgIEZyYW1lKiBmcmFtZSA9IGxvY2F0aW9uLT5mcmFtZSgpOworICAg
IGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dlYlBhZ2UtPmQtPm1fcGFnZS0+
Y2hyb21lKCktPmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShmcmFt
ZSwgbG9jYXRpb24pOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNr
QmVycnk6Om9uTG9jYXRpb25VcGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRl
LCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZSwgYm9v
bCBhbHRpdHVkZVZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIGFsdGl0
dWRlQWNjdXJhY3lWYWxpZCwgZG91YmxlIHNwZWVkLCBib29sIHNwZWVkVmFsaWQsIGRvdWJsZSBo
ZWFkaW5nLCBib29sIGhlYWRpbmdWYWxpZCkKK3sKKyAgICBtX2xhc3RQb3NpdGlvbiA9IEdlb2xv
Y2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFj
Y3VyYWN5LCBhbHRpdHVkZVZhbGlkLCBhbHRpdHVkZSwgYWx0aXR1ZGVBY2N1cmFjeVZhbGlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGl0dWRl
QWNjdXJhY3ksIGhlYWRpbmdWYWxpZCwgaGVhZGluZywgc3BlZWRWYWxpZCwgc3BlZWQpOworICAg
IG1fd2ViUGFnZS0+ZC0+bV9wYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+cG9zaXRpb25D
aGFuZ2VkKG1fbGFzdFBvc2l0aW9uLmdldCgpKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXJDbGllbnRCbGFja0JlcnJ5OjpvbkxvY2F0aW9uRXJyb3IoY29uc3QgY2hhciogZXJyb3JT
dHIpCit7CisgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yID0gR2VvbG9jYXRpb25F
cnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIFN0cmlu
Zzo6ZnJvbVVURjgoZXJyb3JTdHIpKTsKKyAgICBtX3dlYlBhZ2UtPmQtPm1fcGFnZS0+Z2VvbG9j
YXRpb25Db250cm9sbGVyKCktPmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOworfQorCit2b2lk
IEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnk6Om9uUGVybWlzc2lvbih2b2lk
KiBjb250ZXh0LCBib29sIGlzQWxsb3dlZCkKK3sKKyAgICBHZW9sb2NhdGlvbiogcG9zaXRpb24g
PSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvbio+KGNvbnRleHQpOworICAgIHBvc2l0aW9uLT5zZXRJ
c0FsbG93ZWQoaXNBbGxvd2VkKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGll
bnRCbGFja0JlcnJ5OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBuZXdBY2N1cmFjeSkKK3sK
KyAgICBpZiAobV9hY2N1cmFjeSA9PSBuZXdBY2N1cmFjeSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX3RyYWNrZXIpIHsKKyAgICAgICAgbV90cmFja2VyLT5kZXN0cm95KCk7CisgICAgICAg
IG1fdHJhY2tlciA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZW9UcmFja2VyOjpjcmVhdGUodGhp
cywgMCwgbmV3QWNjdXJhY3ksIC0xLCAtMSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25Db250cm9sbGVy
Q2xpZW50QmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVycnkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NGIwOTVkZDRkZDE4MDA1MjYyYTA4NWE5ZTFhMTUxYTQwNTZmYTMyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ29u
dHJvbGxlckNsaWVudEJsYWNrQmVycnkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgR2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50QmxhY2tCZXJyeV9oCisjZGVmaW5lIEdlb2xvY2F0aW9uQ29udHJv
bGxlckNsaWVudEJsYWNrQmVycnlfaAorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
PEJsYWNrQmVycnlQbGF0Zm9ybUdlb1RyYWNrZXIuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxh
dGZvcm1HZW9UcmFja2VyTGlzdGVuZXIuaD4KKyNpbmNsdWRlIDxHZW9sb2NhdGlvbkNsaWVudC5o
PgorI2luY2x1ZGUgPEdlb2xvY2F0aW9uUG9zaXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnRCbGFja0JlcnJ5IDogcHVibGlj
IEdlb2xvY2F0aW9uQ2xpZW50LCBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlb1RyYWNr
ZXJMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Qmxh
Y2tCZXJyeShCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5n
KCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZpcnR1YWwgR2VvbG9j
YXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24o
R2VvbG9jYXRpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3Qo
R2VvbG9jYXRpb24qKTsKKworICAgIHZpcnR1YWwgdm9pZCBvbkxvY2F0aW9uVXBkYXRlKGRvdWJs
ZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5LCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgYWx0aXR1ZGVWYWxpZCwgZG91YmxlIGFsdGl0
dWRlQWNjdXJhY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbHRp
dHVkZUFjY3VyYWN5VmFsaWQsIGRvdWJsZSBzcGVlZCwgYm9vbCBzcGVlZFZhbGlkLCBkb3VibGUg
aGVhZGluZywgYm9vbCBoZWFkaW5nVmFsaWQpOworICAgIHZpcnR1YWwgdm9pZCBvbkxvY2F0aW9u
RXJyb3IoY29uc3QgY2hhciogZXJyb3IpOworICAgIHZpcnR1YWwgdm9pZCBvblBlcm1pc3Npb24o
dm9pZCogY29udGV4dCwgYm9vbCBpc0FsbG93ZWQpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHZW9UcmFja2VyKiB0cmFja2VyKCkgY29uc3QgeyByZXR1cm4gbV90cmFja2VyOyB9CisKK3By
aXZhdGU6CisgICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiBtX3dlYlBhZ2U7CisgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlb1RyYWNrZXIqIG1fdHJhY2tlcjsKKyAgICBSZWZQdHI8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CisgICAgYm9vbCBtX2FjY3VyYWN5
OworfTsKK30KKworI2VuZGlmIC8vIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudEJsYWNrQmVy
cnlfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>