From owner-FreeBSD-users-jp@jp.FreeBSD.org Mon Mar  2 19:57:57 2009
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id n22AvvX83603;
	Mon, 2 Mar 2009 19:57:57 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from po-out-1718.google.com (po-out-1718.google.com [72.14.252.159])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id n22Avut83597
	for <FreeBSD-users-jp@jp.freebsd.org>; Mon, 2 Mar 2009 19:57:56 +0900 (JST)
	(envelope-from annona2@gmail.com)
Received: by po-out-1718.google.com with SMTP id c31so6366824poi.0
        for <FreeBSD-users-jp@jp.freebsd.org>; Mon, 02 Mar 2009 02:57:55 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:received:message-id:date:from
         :to:subject:in-reply-to:references:user-agent:mime-version
         :content-type;
        bh=LYIGv/ZgsU7zkIwzEG4Lb/xt1MSV/0pIA6NWmDcpO9E=;
        b=NAeuRtRsK9qdFrzYzvZje/d5KR5weOKBMzUwoAzerAr7RxVlaqb+vdlP3ewg57Ma0e
         qhpadq4BrU49hr44p1Oj3ellxbeFq3lmZPSNMWuLISNzBNsJEVVva0nLAu1nLvL1rO5C
         zVjCnL2D28YU+p9w4LfrxKMT1sLRu6vh3vsKg=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:to:subject:in-reply-to:references:user-agent
         :mime-version:content-type;
        b=Jm9BvRbSxQqySmjRsVaZi+dE1A/FKUW5yloIgYNCe8faClZ28JqOpIun+h8UrIhdqy
         xERHbY3jDAXsAJjh+jgK4lmotOPINIHEqqb/fFwTPJNv7n4GWO1/XLA2q4qo5rqv/wZG
         0K7CIxr/afzmab/P29jQ+uwOdFSVBICVPxpRI=
Received: by 10.141.195.5 with SMTP id x5mr2866668rvp.168.1235991475277;
        Mon, 02 Mar 2009 02:57:55 -0800 (PST)
Received: from softbank219001162114.bbtec.net (softbank219001162114.bbtec.net [219.1.162.114])
        by mx.google.com with ESMTPS id b39sm7399957rvf.9.2009.03.02.02.57.52
        (version=TLSv1/SSLv3 cipher=RC4-MD5);
        Mon, 02 Mar 2009 02:57:54 -0800 (PST)
Received: from softbank219001162114.bbtec.net (localhost.tamago [127.0.0.1])
	by softbank219001162114.bbtec.net (8.14.3/8.14.3) with ESMTP id n22AuoPu001805
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Mon, 2 Mar 2009 19:56:51 +0900 (JST)
	(envelope-from annona2@gmail.com)
Message-Id: <200903021056.n22AuoPu001805@softbank219001162114.bbtec.net>
From: "G .Otsuji" <annona2@gmail.com>
To: FreeBSD-users-jp@jp.FreeBSD.org
In-Reply-To: <20090301185737.296751b0.nork@ninth-nine.com>
References: <200811022251.mA2MpLwh001847@localhost>	<20090228170231.234ec102.nork@ninth-nine.com>	<20090228173619.cbaf83a7.nork@ninth-nine.com>	<200903010909.n21990Qb002967@localhost>	<20090301184041.596a5acd.nork@ninth-nine.com>	<20090301185737.296751b0.nork@ninth-nine.com>
User-Agent: Wanderlust/2.15.6 (Almost Unreal) SEMI/1.14.6 (Maruoka)
 FLIM/1.14.8 (=?ISO-8859-4?Q?Shij=F2?=) APEL/10.7 Emacs/22.3
 (i386-portbld-freebsd7.1) MULE/5.0 (SAKAKI)
MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka")
Content-Type: multipart/mixed;
 boundary="Multipart_Mon_Mar__2_19:56:50_2009-1"
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Mon, 02 Mar 2009 19:56:50 +0900
X-Sequence: FreeBSD-users-jp 92164
Subject: [FreeBSD-users-jp 92164] Re: Phenom
 =?ISO-2022-JP?B?GyRCJEokSSROGyhC?= cpufreq
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: annona2@gmail.com
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+060209

--Multipart_Mon_Mar__2_19:56:50_2009-1
Content-Type: text/plain; charset=ISO-2022-JP

$BHxDT$G$9!#(B

hint.acpi_throttle.0.disabled="1"$B$r$I$&$K$+$7$?$$$N$G$9$,(B
acpi_throttle$B$,M-8z$K$G$-$J$$$N$G$J$s$H$b$J$H$3$m$G$9!#(B

$B$=$l$G4s$jF;$7$^$7$?!#(Bhwpstate.c$B$rE:IU$7$^$9!#(B

At Sun, 1 Mar 2009 18:57:37 +0900,
Norikatsu Shigemura <nork@ninth-nine.com> wrote:
> 
> $B=EB<K!9n$G$9!#(B
> 
> On Sun, 1 Mar 2009 18:40:41 +0900
> Norikatsu Shigemura <nork@ninth-nine.com> wrote:
> > 	1.466V $B$[$I$J$N$G$9$,!D!#!#$^$@E_$J$N$G(B 36 $B!n$H$+!#!#(B(^^;
> 
> 	$B$=$&$=$&!#(Bk8temp(4) $B$K$D$$$F$O:n<T$N(B rpaulo $B;a$KLd$$9g$o$;Cf$G$9!#(B
> 	$B$b$&$A$g$C$H%j%"%k%?%$%`$K29EY$r<h$j$?$$$H$3$m!#(B

1) sysctl$B$NN}=,$b7s$M$F!"$3$A$i$K4s$jF;$7$F$_$^$7$?!#(B
sysctl debug.hwpstate_temp
$B$G29EY$,=P$^$9!#(B
% sysctl debug.hwpstate_temp
debug.hwpstate_temp: 32.000
$B@];a(B1/8$BEY(B=0.125$BEY6h@Z$j$@$H$$$&$3$H$G>.?tE@0J2<;07eMQ0U$7$^$7$?!#(B

2) mW$B$b=P$k$h$&$K$7$F$_$^$7$?!#(B
% sysctl dev.cpu.0.freq_levels
dev.cpu.0.freq_levels: 2500/96000 1250/29000
$B$1$l$IE,Ev$J8+@Q$j$J$N$G$"$^$j?.MQ$7$J$$$G$/$@$5$$!#(B

3) COPYRIGHT$B$b(BBSD$B%i%$%;%s%9$K$7$F$_$^$7$?!#(B

4) $B$$$?$@$$$?2<$N%Q%C%A$r$$$l$F$_$^$7$?!#$9$3$72~JQ$7$F!#(B
> --- hwpstate.c.orig	2009-02-26 02:46:11.000000000 +0900
> +++ hwpstate.c	2009-02-27 02:54:04.000000000 +0900
> @@ -15,6 +15,8 @@
>  #include <sys/proc.h>
>  #include <dev/pci/pcivar.h>
>  #include <machine/md_var.h>
> +#include <machine/cputypes.h>
> +#include <machine/specialreg.h>
>  
>  #include <contrib/dev/acpica/acpi.h>
>  #include <dev/acpica/acpivar.h>
> @@ -238,14 +240,9 @@
>  			return (ENXIO);
>  	}
>  	sc = device_get_softc(dev);
> -	switch (cpu_id) {
> -	case 0x100f2A:		/* family 10h rev.DR-BA */
> -	case 0x100f22:		/* family 10h rev.DR-B2 */
> -	case 0x100f23:		/* family 10h rev.DR-B3 */
> -		break;
> -	default:
> +	if (cpu_vendor_id != CPU_VENDOR_AMD || AMD64_CPU_FAMILY(cpu_id) < 0x10)
>  		return (ENXIO);
> -	}
> +
>  	msr = rdmsr(MSR_AMD10H_LIMIT);
>  	sc->cfnum = AMD10H_GET_PSTATE_MAX_VAL(msr);
>  	if (sc->cfnum == 0) {

5)
At Mon, 02 Mar 2009 07:27:51 +0900,
"G .Otsuji" <annona2@gmail.com> wrote:
> acpi$B$r?($C$F$J$$$N$G(Bacpi_perf$B0MB8$r30$7$F$bBg>fIW$@$H$*$b$$$^$9!#(B
> $B$1$l$I(Bacpi_throttle$B$O7k6IG'<1$5$l$=$&$J$N$G!#(B
#if 0$B$G30$7$F$_$^$7$?!#(B
$B=i$a$K(Bacpi_perf$B$,$h$/$o$+$i$:!"$9$Y$F$N(Bcpufreq$B%I%i%$%P$,=q$$$F$$$?$N$G!"$J$s$+$4Mx1W$,$"$k$N$@$m$&$H;W$C$F(B
$B=q$$$F$_$?$s$G$9!#$d$C$Q$j30$9$Y$-$G$O$J$$$+$b$7$l$J$$$N$G!"(B#if 0$B$K$7$F$^$9!#$4$a$s$J$5$$!#(B

> $B?'!99M$($F$_$?$N$G$9$,!"(B
> 1) $BL>A0JQ$($?$$$G$9!#(Bpowernow$B$b(BP-state$B$@$7!"$=$7$F(B
> Cool`n'quiet K7,K8$B$b(Bpowernow$B$GI=<($5$l$k$N$G$9$,!"(BK10$B$G$O(BCool`n'Quiet 2.0,3.0$B$i$7$$$N$G(B
> cnq2$B$H$+(Bcnqk10$B$H$+(Bk10cnq$B$H$+(Bcnq$B$J$s$H$+$H$+$r9M$($F$O$_$?$N$G$9$,!#KvHx$K?t;z$O$I$&$J$s$@$m$&$H$b;W$C$?$j!#(B
$B$3$l$r9M$($?$N$G$9$,!"(B
hwPstate Enable bit$B$,$"$k>l9g$O$3$N%b%8%e!<%k$,M-8z2=$5$l$k$H$$$&$3$H$G(B
hwpstate$B$H$$$&L>A0$K$7$?$_$?$$$G$9!#(B
$BJQ$($J$/$F$b$$$$5$$b$7$F$-$^$7$?(B :-)$B!#(B

> 2) acpi_throttle$B$H$N7s$M9g$$$G$9!#(B
>  1 device_disable("acpi_throttle")$B$N$h$&$J$3$H$r$9$k$N$+!"$G$-$k$N$+!"(B
>  2 acpi_throttle$B$,M-8z2=$5$l$F$$$?$i(BENXIO$B$rJV$9$N$+!"(B
>  3 acpi_throttle$B$H6&B8$r?^$k$N$+!"(B
> $B$G$9!#6&B8$O$I$&$9$l$P$$$$$s$G$7$g$&!#(B
$B$3$l$O$I$&$K$+$7$?$$$N$G$9$,!"(B
acpi_throttle$B$,M-8z$K$G$-$J$$$N$G$J$s$H$b$J$H$3$m$G$9!#(B

> 3) $B%=!<%9$r(Bstyle(9)$B$K=`5r$7$?$$$G$9!#(BCOPYRIGHT$B$b!#(B
style(9)$B$KE:$C$?(Bemacs22$B$N@_Dj65$($F$/$@$5$$(B m(_ _)m
$B$H$F$bLLE]$G$9!#(B
 
$B?7$7$$(Bhwpsatet.c$B$rE:IU$$$?$7$^$9$N$G!"$h$m$7$/$*4j$$$7$^$9!#(B

G.Otsuji<annona2@gmail.com>


--Multipart_Mon_Mar__2_19:56:50_2009-1
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="hwpstate.c"
Content-Transfer-Encoding: base64

LyotCiAqIENvcHlyaWdodCAoYykgMjAwOC0yMDA5IEdlbiBPdHN1amkKICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRpbmcgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICogYXJlIG1ldDoKICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUmBg
QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCiAqIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFO
WQogKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKICogT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCiAqIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwKICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HCiAqIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQogKiBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICovCgovKgogKiBSZWZlcmVuY2U6CiAqICBSZXYgMy4yMCAgRmVicnVhcnkgMDQs
IDIwMDkgLSBCSU9TIGFuZCBLZXJuZWwgRGV2ZWxvcGVyJ3MgR3VpZGUoQktERykKICogIGZvciBB
TUQgRmFtaWx5IDEwaCBQcm9jZXNzb3JzCiAqLwoKLyoKICogbGV0IG1lIHNheSB0aGFua3MgdG8g
Zmx1ZmZsZXMubmV0LXNhbiBhbmQgdG8gb3RoZXJzLgogKi8KCiNpbmNsdWRlIDxzeXMvY2RlZnMu
aD4KX19GQlNESUQoIiRGcmVlQlNEJCIpOwoKI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgojaW5jbHVk
ZSA8c3lzL2J1cy5oPgojaW5jbHVkZSA8c3lzL2NwdS5oPgojaW5jbHVkZSA8c3lzL2tlcm5lbC5o
PgojaW5jbHVkZSA8c3lzL21vZHVsZS5oPgojaW5jbHVkZSA8c3lzL3Byb2MuaD4KI2luY2x1ZGUg
PHN5cy9zeXNjdGwuaD4KI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFyLmg+CiNpbmNsdWRlIDxtYWNo
aW5lL21kX3Zhci5oPgojaW5jbHVkZSA8bWFjaGluZS9jcHV0eXBlcy5oPgojaW5jbHVkZSA8bWFj
aGluZS9zcGVjaWFscmVnLmg+CgojaW5jbHVkZSA8Y29udHJpYi9kZXYvYWNwaWNhL2FjcGkuaD4K
I2luY2x1ZGUgPGRldi9hY3BpY2EvYWNwaXZhci5oPgoKI2luY2x1ZGUgImFjcGlfaWYuaCIKI2lu
Y2x1ZGUgImNwdWZyZXFfaWYuaCIKCiNkZWZpbmUgTVNSX0FNRDEwSF9MSU1JVCAgICAweGMwMDEw
MDYxCiNkZWZpbmUgTVNSX0FNRDEwSF9DT05UUk9MICAweGMwMDEwMDYyCiNkZWZpbmUgTVNSX0FN
RDEwSF9TVEFUVVMgICAweGMwMDEwMDYzCiNkZWZpbmUgTVNSX0FNRDEwSF9DT05GSUcgICAweGMw
MDEwMDY0CiNkZWZpbmUgQU1EMTBIX1BWSV9NT0RFICAgICAxCiNkZWZpbmUgQU1EMTBIX1NWSV9N
T0RFICAgICAwCiNkZWZpbmUgQU1EMTBIX01BWF9TVEFURVMgICAxNgoKLyogZm9yIE1TUl9BTUQx
MEhfTElNSVQgQzAwMV8wMDYxICovCiNkZWZpbmUgQU1EMTBIX0dFVF9QU1RBVEVfTUFYX1ZBTCht
c3IpICgoKG1zcikgPj4gNCkgJiAweEYpCi8qIGZvciBNU1JfQU1EMTBIX0NPTkZJRyBDMDAxXzAw
NjQ6NjggKi8KI2RlZmluZSBBTUQxMEhfQ1VSX1ZJRChtc3IpICAgICAgICAgICAgKCgobXNyKSA+
PiA5KSAmIDB4M0YpCiNkZWZpbmUgQU1EMTBIX0NVUl9ESUQobXNyKSAgICAgICAgICAgICgoKG1z
cikgPj4gNikgJiAweDA3KQojZGVmaW5lIEFNRDEwSF9DVVJfRklEKG1zcikgICAgICAgICAgICAo
KG1zcikgJiAweDNGKQovKiBmb3IgdGhlcm1hbCAqLwojZGVmaW5lIEFNRDEwSF9DVVJfVE1QKHRt
cCkgICAgICAgICAgICAoKCh0bXApID4+IDIxKSAmIDB4M0ZGKQoKLyoKICogc2V0dGluZyB0aGlz
IHRvIDAgY2FuIGh1c2ggdXAgdmVyYm9zZSBtZXNzYWdlcy4KICovCnN0YXRpYyBpbnQgaHdwc3Rh
dGVfdmVyYm9zZSA9IDE7CgpzdHJ1Y3QgaHdwc3RhdGVfc2V0dGluZyB7CgkvKiBDUFUgY2xvY2sg
aW4gTWh6IG9yIDEwMHRocyBvZiBhIHBlcmNlbnQuICovCglpbnQgZnJlcTsKCS8qIFZvbHRhZ2Ug
aW4gbVYuICovCglpbnQgdm9sdHM7CgkvKiBQb3dlciBjb25zdW1lZCBpbiBtVy4gKi8KCWludCBw
b3dlcjsKCS8qIFRyYW5zaXRpb24gbGF0ZW5jeSBpbiB1cy4gKi8KCWludCBsYXQ7CglpbnQgcHN0
YXRlX2lkOwoJLyogRHJpdmVyIHByb3ZpZGluZyB0aGlzIHNldHRpbmcuICovCglkZXZpY2VfdCBk
ZXY7Cn07CgpzdHJ1Y3QgaHdwc3RhdGVfc29mdGMgewoJZGV2aWNlX3QgZGV2OwoJc3RydWN0IGh3
cHN0YXRlX3NldHRpbmcgaHdwc3RhdGVfc2V0dGluZ3NbQU1EMTBIX01BWF9TVEFURVNdOwoJaW50
IGNmbnVtOwoJLyogZm9yIEFNRDEwSF9QVklfTU9ERSAvIEFNRDEwSF9TVklfTU9ERSAqLwoJaW50
IHZvbHRhZ2VfbW9kZTsKCWludCBjdXJwc3RhdGU7Cn07CgpzdGF0aWMgdm9pZCBod3BzdGF0ZV9p
ZGVudGlmeShkcml2ZXJfdCAqIGRyaXZlciwgZGV2aWNlX3QgcGFyZW50KTsKc3RhdGljIGludCBo
d3BzdGF0ZV9wcm9iZShkZXZpY2VfdCBkZXYpOwpzdGF0aWMgaW50IGh3cHN0YXRlX2F0dGFjaChk
ZXZpY2VfdCBkZXYpOwpzdGF0aWMgaW50IGh3cHN0YXRlX2RldGFjaChkZXZpY2VfdCBkZXYpOwpz
dGF0aWMgaW50IGh3cHN0YXRlX3NldChkZXZpY2VfdCBkZXYsIGNvbnN0IHN0cnVjdCBjZl9zZXR0
aW5nICpjZik7CnN0YXRpYyBpbnQgaHdwc3RhdGVfZ2V0KGRldmljZV90IGRldiwgc3RydWN0IGNm
X3NldHRpbmcgKmNmKTsKc3RhdGljIGludCBod3BzdGF0ZV9zZXR0aW5ncyhkZXZpY2VfdCBkZXYs
IHN0cnVjdCBjZl9zZXR0aW5nICpzZXRzLCBpbnQgKmNvdW50KTsKc3RhdGljIGludCBod3BzdGF0
ZV90eXBlKGRldmljZV90IGRldiwgaW50ICp0eXBlKTsKc3RhdGljIGludCBod3BzdGF0ZV9zaHV0
ZG93bihkZXZpY2VfdCBkZXYpOwpzdGF0aWMgaW50IGh3cHN0YXRlX2ZlYXR1cmVzKGRyaXZlcl90
ICogZHJpdmVyLCB1X2ludCAqIGZlYXR1cmVzKTsKc3RhdGljIGludCBod3BzdGF0ZV90ZW1wX3N5
c2N0bChTWVNDVExfSEFORExFUl9BUkdTKTsKCnN0YXRpYyBjaGFyIGh3cHN0YXRlX3RlbXBbMzBd
ID0gIiI7ClNZU0NUTF9QUk9DKF9kZWJ1ZywgT0lEX0FVVE8sIGh3cHN0YXRlX3RlbXAsIENUTFRZ
UEVfU1RSSU5HIHwgQ1RMRkxBR19SRCwKCTAsIDAsIGh3cHN0YXRlX3RlbXBfc3lzY3RsLCAiQSIs
ICJBTUQgazEwIGZhbWlseSBjcHUgdGVtcHJhdHVyZSIpOwoKc3RhdGljIGRldmljZV9tZXRob2Rf
dCBod3BzdGF0ZV9tZXRob2RzW10gPSB7CgkvKiBEZXZpY2UgaW50ZXJmYWNlICovCglERVZNRVRI
T0QoZGV2aWNlX2lkZW50aWZ5LCBod3BzdGF0ZV9pZGVudGlmeSksCglERVZNRVRIT0QoZGV2aWNl
X3Byb2JlLCBod3BzdGF0ZV9wcm9iZSksCglERVZNRVRIT0QoZGV2aWNlX2F0dGFjaCwgaHdwc3Rh
dGVfYXR0YWNoKSwKCURFVk1FVEhPRChkZXZpY2VfZGV0YWNoLCBod3BzdGF0ZV9kZXRhY2gpLAoJ
REVWTUVUSE9EKGRldmljZV9zaHV0ZG93biwgaHdwc3RhdGVfc2h1dGRvd24pLAoKCS8qIGNwdWZy
ZXEgaW50ZXJmYWNlICovCglERVZNRVRIT0QoY3B1ZnJlcV9kcnZfc2V0LCBod3BzdGF0ZV9zZXQp
LAoJREVWTUVUSE9EKGNwdWZyZXFfZHJ2X2dldCwgaHdwc3RhdGVfZ2V0KSwKCURFVk1FVEhPRChj
cHVmcmVxX2Rydl9zZXR0aW5ncywgaHdwc3RhdGVfc2V0dGluZ3MpLAoJREVWTUVUSE9EKGNwdWZy
ZXFfZHJ2X3R5cGUsIGh3cHN0YXRlX3R5cGUpLAoKCS8qIEFDUEkgaW50ZXJmYWNlICovCglERVZN
RVRIT0QoYWNwaV9nZXRfZmVhdHVyZXMsIGh3cHN0YXRlX2ZlYXR1cmVzKSwKCgl7MCwgMH0KfTsK
CnN0YXRpYyBkZXZjbGFzc190IGh3cHN0YXRlX2RldmNsYXNzOwpzdGF0aWMgZHJpdmVyX3QgaHdw
c3RhdGVfZHJpdmVyID0gewoJImh3cHN0YXRlIiwKCWh3cHN0YXRlX21ldGhvZHMsCglzaXplb2Yo
c3RydWN0IGh3cHN0YXRlX3NvZnRjKSwKfTsKRFJJVkVSX01PRFVMRShod3BzdGF0ZSwgY3B1LCBo
d3BzdGF0ZV9kcml2ZXIsIGh3cHN0YXRlX2RldmNsYXNzLCAwLCAwKTsKCnN0YXRpYyBpbnQKaHdw
c3RhdGVfdGVtcF9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJfQVJHUykKewoJZGV2aWNlX3QgRjM7Cgl1
aW50MzJfdCBGM3hBNDsKCXVpbnQzMl90IGN1cnRlbXB4ODsKCXVpbnQzMl90IGN1cnRlbXBfaTsK
CXVpbnQzMl90IGN1cnRlbXBfZDsKCWludCBlcnJvcjsKCUYzID0gcGNpX2ZpbmRfYnNmKDAsIDI0
LCAzKTsKCUYzeEE0ID0gcGNpX3JlYWRfY29uZmlnKEYzLCAweEE0LCA0KTsKCS8qIEYzeEE0IFJl
cG9ydGVkIFRlbXBlcmF0dXJlIENvbnRyb2wgUmVnaXN0ZXIgKFBhZ2UgMjU0KSAqLwoJY3VydGVt
cHg4ID0gQU1EMTBIX0NVUl9UTVAoRjN4QTQpOwoJY3VydGVtcF9pID0gY3VydGVtcHg4IC8gODsK
CWN1cnRlbXBfZCA9IChjdXJ0ZW1weDggJSA4KSAqIDEyNTsKCWlmIChjdXJ0ZW1wX2QgPT0gMCkg
ewoJCXNucHJpbnRmKGh3cHN0YXRlX3RlbXAsIHNpemVvZihod3BzdGF0ZV90ZW1wKSwgIiVkLjAw
MCIsIGN1cnRlbXBfaSk7Cgl9IGVsc2UgewoJCXNucHJpbnRmKGh3cHN0YXRlX3RlbXAsIHNpemVv
Zihod3BzdGF0ZV90ZW1wKSwgIiVkLiVkIiwgY3VydGVtcF9pLCBjdXJ0ZW1wX2QpOwoJfQoJZXJy
b3IgPSBzeXNjdGxfaGFuZGxlX3N0cmluZyhvaWRwLCBod3BzdGF0ZV90ZW1wLCBzaXplb2YoaHdw
c3RhdGVfdGVtcCksIHJlcSk7CglyZXR1cm4gKGVycm9yKTsKfQoKc3RhdGljIHZvaWQKaHdwc3Rh
dGVfZ290b19wc3RhdGUoZGV2aWNlX3QgZGV2LCBpbnQgcHN0YXRlKQp7CglzdHJ1Y3QgaHdwc3Rh
dGVfc29mdGMgKnNjOwoJdWludDY0X3QgbXNyOwoJaW50IGk7CglzYyA9IGRldmljZV9nZXRfc29m
dGMoZGV2KTsKCXNjLT5jdXJwc3RhdGUgPSBwc3RhdGU7Cgl3cm1zcihNU1JfQU1EMTBIX0NPTlRS
T0wsIHBzdGF0ZSk7Cglmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKCQltc3IgPSByZG1zcihN
U1JfQU1EMTBIX1NUQVRVUyk7CgkJaWYgKG1zciA9PSBwc3RhdGUpIHsKCQkJYnJlYWs7CgkJfQoJ
CURFTEFZKDEwMCk7Cgl9Cgltc3IgPSByZG1zcihNU1JfQU1EMTBIX1NUQVRVUyk7CglpZiAoaHdw
c3RhdGVfdmVyYm9zZSkKCQlkZXZpY2VfcHJpbnRmKGRldiwgIk5vdyBQJWQtc3RhdGUuXG4iLCAo
aW50KW1zcik7CglyZXR1cm47Cn0KCnN0YXRpYyBpbnQKaHdwc3RhdGVfc2V0KGRldmljZV90IGRl
diwgY29uc3Qgc3RydWN0IGNmX3NldHRpbmcgKmNmKQp7CglzdHJ1Y3QgaHdwc3RhdGVfc29mdGMg
KnNjOwoJc3RydWN0IGh3cHN0YXRlX3NldHRpbmcgKnNldDsKCWludCBpOwoJaWYgKGNmID09IE5V
TEwpCgkJcmV0dXJuIChFSU5WQUwpOwoJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CglzZXQg
PSBzYy0+aHdwc3RhdGVfc2V0dGluZ3M7Cglmb3IgKGkgPSAwOyBpIDwgc2MtPmNmbnVtOyBpKysp
CgkJaWYgKGNmLT5mcmVxID09IHNldFtpXS5mcmVxKQoJCQlicmVhazsKCWlmIChpID09IHNjLT5j
Zm51bSkKCQlyZXR1cm4gRUlOVkFMOwoJaWYgKGh3cHN0YXRlX3ZlcmJvc2UpCgkJZGV2aWNlX3By
aW50ZihkZXYsICJnb3RvIFAlZC1zdGF0ZVxuIiwgc2V0W2ldLnBzdGF0ZV9pZCk7CglzYy0+Y3Vy
cHN0YXRlID0gc2V0W2ldLnBzdGF0ZV9pZDsKCWh3cHN0YXRlX2dvdG9fcHN0YXRlKGRldiwgc2V0
W2ldLnBzdGF0ZV9pZCk7CglyZXR1cm4gKDApOwp9CgpzdGF0aWMgaW50Cmh3cHN0YXRlX2dldChk
ZXZpY2VfdCBkZXYsIHN0cnVjdCBjZl9zZXR0aW5nICpjZikKewoJc3RydWN0IGh3cHN0YXRlX3Nv
ZnRjICpzYzsKCXN0cnVjdCBod3BzdGF0ZV9zZXR0aW5nIHNldDsKCXNjID0gZGV2aWNlX2dldF9z
b2Z0YyhkZXYpOwoJaWYgKGNmID09IE5VTEwpCgkJcmV0dXJuIChFSU5WQUwpOwoJc2V0ID0gc2Mt
Pmh3cHN0YXRlX3NldHRpbmdzW3NjLT5jdXJwc3RhdGVdOwoJY2YtPmZyZXEgPSBzZXQuZnJlcTsK
CWNmLT52b2x0cyA9IHNldC52b2x0czsKCS8qCgkgKiBwc2V1ZG8gcG93ZXIgY2FsY3VsYXRpb24g
ICggW1ddID1+IFtIel0qW1ZdKltWXSApCgkgKi8KCWNmLT5wb3dlciA9IDIzMDAgKiAoc2V0LnZv
bHRzIC8gMTAwMCAqIHNldC52b2x0cyAvIDEwMDAgKiBzZXQuZnJlcSkgLyAxMDAwICogMTAwMDsK
CWNmLT5sYXQgPSAxNjsKCWNmLT5kZXYgPSBkZXY7CglyZXR1cm4gKDApOwp9CgpzdGF0aWMgaW50
Cmh3cHN0YXRlX3NldHRpbmdzKGRldmljZV90IGRldiwgc3RydWN0IGNmX3NldHRpbmcgKnNldHMs
IGludCAqY291bnQpCnsKCXN0cnVjdCBod3BzdGF0ZV9zb2Z0YyAqc2M7CglzdHJ1Y3QgaHdwc3Rh
dGVfc2V0dGluZyBzZXQ7CglpbnQgaTsKCWlmIChzZXRzID09IE5VTEwgfHwgY291bnQgPT0gTlVM
TCkKCQlyZXR1cm4gKEVJTlZBTCk7CglzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKCWlmICgq
Y291bnQgPCBzYy0+Y2ZudW0pCgkJcmV0dXJuIChFMkJJRyk7Cglmb3IgKGkgPSAwOyBpIDwgc2Mt
PmNmbnVtOyBpKyssIHNldHMrKykgewoJCXNldCA9IHNjLT5od3BzdGF0ZV9zZXR0aW5nc1tpXTsK
CQlzZXRzLT5mcmVxID0gc2V0LmZyZXE7CgkJc2V0cy0+dm9sdHMgPSBzZXQudm9sdHM7CgkJc2V0
cy0+cG93ZXIgPSBzZXQucG93ZXI7CgkJc2V0cy0+bGF0ID0gc2V0LmxhdDsKCQlzZXRzLT5kZXYg
PSBzZXQuZGV2OwoJfQoJKmNvdW50ID0gc2MtPmNmbnVtOwoJcmV0dXJuICgwKTsKfQoKc3RhdGlj
IGludApod3BzdGF0ZV90eXBlKGRldmljZV90IGRldiwgaW50ICp0eXBlKQp7CgoJaWYgKHR5cGUg
PT0gTlVMTCkKCQlyZXR1cm4gKEVJTlZBTCk7CgkqdHlwZSA9IENQVUZSRVFfVFlQRV9BQlNPTFVU
RTsKCXJldHVybiAoMCk7Cn0KCnN0YXRpYyBpbnQKaHdwc3RhdGVfaXNfY2FwYWJsZSh2b2lkKQp7
Cgl1X2ludCByZWdzWzRdOwoJaWYgKHN0cmNtcChjcHVfdmVuZG9yLCAiQXV0aGVudGljQU1EIikg
IT0gMCB8fAoJICAgIGNwdV9leHRoaWdoIDwgMHg4MDAwMDAwNykKCQlyZXR1cm4gKEZBTFNFKTsK
CWRvX2NwdWlkKDB4ODAwMDAwMDcsIHJlZ3MpOwoJLyogSHdQc3RhdGUgRW5hYmxlIGJpdCAqLwoJ
aWYgKHJlZ3NbM10gJiAweDgwKSB7CgkJcmV0dXJuIChUUlVFKTsKCX0KCXJldHVybiAoRkFMU0Up
Owp9CgpzdGF0aWMgdm9pZApod3BzdGF0ZV9pZGVudGlmeShkcml2ZXJfdCAqIGRyaXZlciwgZGV2
aWNlX3QgcGFyZW50KQp7CglkZXZpY2VfdCBjaGlsZDsKCWlmIChkZXZpY2VfZmluZF9jaGlsZChw
YXJlbnQsICJod3BzdGF0ZSIsIC0xKSAhPSBOVUxMKSB7CgkJcmV0dXJuOwoJfQoJaWYgKChjaGls
ZCA9IEJVU19BRERfQ0hJTEQocGFyZW50LCAxMCwgImh3cHN0YXRlIiwgLTEpKSA9PSBOVUxMKQoJ
CWRldmljZV9wcmludGYocGFyZW50LCAiaHdwc3RhdGU6IGFkZCBjaGlsZCBmYWlsZWRcbiIpOwp9
CgpzdGF0aWMgaW50Cmh3cHN0YXRlX3Byb2JlKGRldmljZV90IGRldikKewoJc3RydWN0IGh3cHN0
YXRlX3NvZnRjICpzYzsKCXVpbnQ2NF90IG1zcjsKI2lmIDAKCWRldmljZV90IHBlcmZfZGV2OwoJ
aW50IGVycm9yLCB0eXBlOwojZW5kaWYgLyogMCAqLwoJaWYgKHJlc291cmNlX2Rpc2FibGVkKCJo
d3BzdGF0ZSIsIDApKQoJCXJldHVybiAoRU5YSU8pOwoKCWlmIChod3BzdGF0ZV9pc19jYXBhYmxl
KCkgPT0gRkFMU0UpIHsKCQlyZXR1cm4gKEVOWElPKTsKCX0KCS8qIHRoaXMgbW9kdWxlIGRvZXNu
J3QgdXNlIGFjcGlfcGVyZiAoX1BTUykuICovCiNpZiAwCglwZXJmX2RldiA9IGRldmljZV9maW5k
X2NoaWxkKGRldmljZV9nZXRfcGFyZW50KGRldiksICJhY3BpX3BlcmYiLCAtMSk7CglpZiAocGVy
Zl9kZXYgJiYgZGV2aWNlX2lzX2F0dGFjaGVkKHBlcmZfZGV2KSkgewoJCWVycm9yID0gQ1BVRlJF
UV9EUlZfVFlQRShwZXJmX2RldiwgJnR5cGUpOwoJCWlmIChlcnJvciA9PSAwICYmICh0eXBlICYg
Q1BVRlJFUV9GTEFHX0lORk9fT05MWSkgPT0gMCkKCQkJcmV0dXJuIChFTlhJTyk7Cgl9CiNlbmRp
ZiAvKiAwICovCgoJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CiNpZiBfX0ZyZWVCU0RfdmVy
c2lvbiA+IDgwMDAwMAoJaWYgKGNwdV92ZW5kb3JfaWQgIT0gQ1BVX1ZFTkRPUl9BTUQgfHwgQU1E
NjRfQ1BVX0ZBTUlMWShjcHVfaWQpIDwgMHgxMCkKCQlyZXR1cm4gKEVOWElPKTsKI2Vsc2UgLyog
IV9fRnJlZUJTRF92ZXJzaW9uID4gODAwMDAwICovCglzd2l0Y2ggKGNwdV9pZCkgewoJY2FzZSAw
eDEwMGYyQTogLyogZmFtaWx5IDEwaCByZXYuRFItQkEgKi8KCWNhc2UgMHgxMDBmMjI6IC8qIGZh
bWlseSAxMGggcmV2LkRSLUIyICovCgljYXNlIDB4MTAwZjIzOiAvKiBmYW1pbHkgMTBoIHJldi5E
Ui1CMyAqLwoJY2FzZSAweDEwMGY0MjogLyogUGhlbm9tIElJICovCgkJYnJlYWs7CglkZWZhdWx0
OgoJCWRldmljZV9wcmludGYoZGV2LCJZb3VyIENQVUlEPSV4XG5hZGQgXCJjYXNlIDB4JXg6XCIg
bGluZSBwbGVhc2UgOi0pXG4iLGNwdV9pZCxjcHVfaWQpOwoJCXJldHVybiAoRU5YSU8pOwoJfQoj
ZW5kaWYgLyogX19GcmVlQlNEX3ZlcnNpb24gPiA4MDAwMDAgKi8KCgltc3IgPSByZG1zcihNU1Jf
QU1EMTBIX0xJTUlUKTsKCXNjLT5jZm51bSA9IEFNRDEwSF9HRVRfUFNUQVRFX01BWF9WQUwobXNy
KTsKCWlmIChzYy0+Y2ZudW0gPT0gMCkgewoJCWRldmljZV9wcmludGYoZGV2LCAiaGFyZHdhcmUt
cHN0YXRlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGJpb3MuXG4iKTsKCQlyZXR1cm4gRU5YSU87
Cgl9CglkZXZpY2Vfc2V0X2Rlc2MoZGV2LCAiQ29vbGBuJ1F1aWV0IDIuMCIpOwoJcmV0dXJuICgw
KTsKfQoKc3RhdGljIGludApod3BzdGF0ZV9hdHRhY2goZGV2aWNlX3QgZGV2KQp7CglzdHJ1Y3Qg
aHdwc3RhdGVfc29mdGMgKnNjOwoJc3RydWN0IGh3cHN0YXRlX3NldHRpbmcgKnNldDsKCWRldmlj
ZV90IEYzOwoJdWludDY0X3QgbXNyOwoJdWludDMyX3QgY2ZnOwoJaW50IGksIHZpZCwgZGlkLCBm
aWQ7CgoJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CgoJLyoKCSAqIGZvbGxvd2luZyAyNCBt
ZWFucyB0aGUgMXN0IGNwdS4gMjUtMzEgaW5zdGVhZCBvZiAyNCBpcyBNUCBzeXN0ZW0uCgkgKiBJ
IGRvbid0IGhhdmUgTVAgc3lzdGVtIC4gQnV0IG9ubHkgZm9yIHJlYWRpbmcgZnJvbSAxc3QgY3B1
LgoJICogc28gaWYgdGhlIHNhbWUgMipjcHUgLCA0KmNwdSAsb3IgOCpjcHUgLCB0aGlzIGNhbiB3
b3JrICwgSSB0aGluay4KCSAqLwoJRjMgPSBwY2lfZmluZF9ic2YoMCwgMjQsIDMpOwoJY2ZnID0g
cGNpX3JlYWRfY29uZmlnKEYzLCAweEEwLCA0KTsKCWlmIChjZmcgJiAweDEwKSB7CgkJaWYgKGh3
cHN0YXRlX3ZlcmJvc2UpCgkJCWRldmljZV9wcmludGYoZGV2LCAiUFZJIG1vZGVcbiIpOwoJCXNj
LT52b2x0YWdlX21vZGUgPSBBTUQxMEhfUFZJX01PREU7Cgl9IGVsc2UgewoJCWlmIChod3BzdGF0
ZV92ZXJib3NlKQoJCQlkZXZpY2VfcHJpbnRmKGRldiwgIlNWSSBtb2RlXG4iKTsKCQlzYy0+dm9s
dGFnZV9tb2RlID0gQU1EMTBIX1NWSV9NT0RFOwoJfQoJbXNyID0gcmRtc3IoTVNSX0FNRDEwSF9M
SU1JVCk7CglzYy0+Y2ZudW0gPSAxICsgQU1EMTBIX0dFVF9QU1RBVEVfTUFYX1ZBTChtc3IpOwoJ
aWYgKGh3cHN0YXRlX3ZlcmJvc2UpCgkJZGV2aWNlX3ByaW50ZihkZXYsICJ5b3UgaGF2ZSAlZCBQ
LXN0YXRlLlxuIiwgc2MtPmNmbnVtKTsKCXNldCA9IHNjLT5od3BzdGF0ZV9zZXR0aW5nczsKCWZv
ciAoaSA9IDA7IGkgPCBzYy0+Y2ZudW07IGkrKywgc2V0KyspIHsKCQltc3IgPSByZG1zcihNU1Jf
QU1EMTBIX0NPTkZJRyArIGkpOwoJCWlmICgobXNyICYgMHg4MDAwMDAwMDAwMDAwMDAwKSkgewoJ
CQl2aWQgPSBBTUQxMEhfQ1VSX1ZJRChtc3IpOwoJCQlkaWQgPSBBTUQxMEhfQ1VSX0RJRChtc3Ip
OwoJCQlmaWQgPSBBTUQxMEhfQ1VSX0ZJRChtc3IpOwoJCQlzZXQtPmZyZXEgPSAxMDAgKiAoZmlk
ICsgMHgxMCkgLyAoMSA8PCBkaWQpOwoJCQlpZiAoc2MtPnZvbHRhZ2VfbW9kZSA9PSBBTUQxMEhf
UFZJX01PREUpIHsKCQkJCS8qIDIuNC4xLjUuMiBQYXJhbGxlbCBWSUQgSW50ZXJmYWNlIChQVkkp
IEVuY29kaW5ncyAqLwoJCQkJaWYgKHZpZCA+PSAweDIwKQoJCQkJCXNldC0+dm9sdHMgPSAoNzYy
NSAtIDEyNSAqICh2aWQgLSAweDIwKSkgLyAxMDsKCQkJCWVsc2UKCQkJCQlzZXQtPnZvbHRzID0g
MTU1MCAtIDI1ICogdmlkOwoJCQl9IGVsc2UgewoJCQkJLyogMi40LjEuNS4zIFNlcmlhbCBWSUQg
SW50ZXJmYWNlIChTVkkpIEVuY29kaW5ncyAqLwoJCQkJaWYgKHZpZCA+PSAweDdDKQoJCQkJCXNl
dC0+dm9sdHMgPSAwOwoJCQkJZWxzZQoJCQkJCXNldC0+dm9sdHMgPSAoMTU1MDAgLSAxMjUgKiB2
aWQpIC8gMTA7CgkJCX0KCQkJaWYgKGh3cHN0YXRlX3ZlcmJvc2UpCgkJCQlkZXZpY2VfcHJpbnRm
KGRldiwgImZyZXE9JWRNSHogdm9sdHM9JWRtVlxuIiwgc2V0LT5mcmVxLCBzZXQtPnZvbHRzKTsK
CQkJc2V0LT5wc3RhdGVfaWQgPSBpOwoJCQkvKgoJCQkgKiBwc2V1ZG8gcG93ZXIgY2FsY3VsYXRp
b24gICggW1ddID1+IFtIel0qW1ZdKltWXSApCgkJCSAqIG15IGVudi4gaXMgMjUwME1IeiwxMzAw
bVYoUGhlbm9tIDk4NTBCRSkuCgkJCSAqIGFuZCBpdHMgVERQIGlzIDk1VyA9IDk1MDAwIG1XLgoJ
CQkgKiBhbmQgdGhlIGNvZWZmIDIzMDAgbWFrZXMgOTYwMDAgbVcgPSA5NlcuCgkJCSAqIHRoZSBj
b2VmZiBtYXkgZGlmZmVyICEKCQkJICovCgkJCXNldC0+cG93ZXIgPSAyMzAwICogKHNldC0+ZnJl
cSAqIHNldC0+dm9sdHMgLyAxMDAwMCAqIHNldC0+dm9sdHMgLyAxMDAwMCkgLyAxMDAwICogMTAw
MDsKCQkJc2V0LT5sYXQgPSAxNjsKCQkJc2V0LT5kZXYgPSBkZXY7CgkJfQoJfQoJY3B1ZnJlcV9y
ZWdpc3RlcihkZXYpOwoJaHdwc3RhdGVfZ290b19wc3RhdGUoZGV2LCAwKTsKCXJldHVybiAoMCk7
Cn0KCnN0YXRpYyBpbnQKaHdwc3RhdGVfZGV0YWNoKGRldmljZV90IGRldikKewoKCWh3cHN0YXRl
X2dvdG9fcHN0YXRlKGRldiwgMCk7CglyZXR1cm4gKGNwdWZyZXFfdW5yZWdpc3RlcihkZXYpKTsK
fQoKc3RhdGljIGludApod3BzdGF0ZV9zaHV0ZG93bihkZXZpY2VfdCBkZXYpCnsKCglod3BzdGF0
ZV9nb3RvX3BzdGF0ZShkZXYsIDApOwoJcmV0dXJuICgwKTsKfQoKc3RhdGljIGludApod3BzdGF0
ZV9mZWF0dXJlcyhkcml2ZXJfdCAqIGRyaXZlciwgdV9pbnQgKiBmZWF0dXJlcykKewoKCSpmZWF0
dXJlcyA9IEFDUElfQ0FQX1BFUkZfTVNSUzsKCXJldHVybiAoMCk7Cn0K

--Multipart_Mon_Mar__2_19:56:50_2009-1--
