mersenneforum.org  

Go Back   mersenneforum.org > Factoring Projects > YAFU

Reply
 
Thread Tools
Old 2018-07-19, 00:11   #463
VictordeHolland
 
VictordeHolland's Avatar
 
"Victor de Hollander"
Aug 2011
the Netherlands

100100101102 Posts
Default

Quote:
Originally Posted by swellman View Post
Thanks to all for confirming the bug is gone in later versions of Yafu.

Anybody got an executable of the latest Yafu (Win) on a non-bleeding edge cpu? The steps laid out by B^2 scare me a bit, though I will attempt it if necessary.
This one not new enough? (WIP branch r373)
http://www.mersenneforum.org/showpos...8&postcount=25
VictordeHolland is offline   Reply With Quote
Old 2018-07-19, 12:08   #464
swellman
 
swellman's Avatar
 
Jun 2012

22×3×241 Posts
Default

Thank you!
swellman is online now   Reply With Quote
Old 2018-07-21, 02:11   #465
VBCurtis
 
VBCurtis's Avatar
 
"Curtis"
Feb 2005
Riverside, CA

41·109 Posts
Default

Quote:
Originally Posted by Xyzzy View Post
How many watts does one of those use running flat out?

Running Ubuntu 18.04, kill-a-watt reads 90W idle, 350W with 20 threads of CADO, and 390W with 40 threads of CADO. I haven't gotten CUDA installed yet, so I don't have wattage for the old quadro.
If msieve-matrix-solving or any other non-GPU task uses appreciably more power (say, 420W or more), I'll let you know.
VBCurtis is offline   Reply With Quote
Old 2018-07-28, 00:49   #466
swellman
 
swellman's Avatar
 
Jun 2012

22×3×241 Posts
Default

Quote:
Originally Posted by VictordeHolland View Post
This one not new enough? (WIP branch r373)
http://www.mersenneforum.org/showpos...8&postcount=25
Rocks!
swellman is online now   Reply With Quote
Old 2019-01-10, 22:49   #467
VictordeHolland
 
VictordeHolland's Avatar
 
"Victor de Hollander"
Aug 2011
the Netherlands

100100101102 Posts
Default yafu376+msieve1028 Polysearch deadine per coefficient too large on a C120?

Code:
01/10/19 23:28:35 v1.35-beta @ Supermicro-X9DRL-iF, System/Build Info:
Using GMP-ECM 7.0.5-dev, Powered by GMP 6.1.2
detected        Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz
detected L1 = 32768 bytes, L2 = 20971520 bytes, CL = 64 bytes
measured cpu frequency ~= 1999.915240
using 1 random witnesses for Rabin-Miller PRP checks

===============================================================
======= Welcome to YAFU (Yet Another Factoring Utility) =======
=======             bbuhrow@gmail.com                   =======
=======     Type help at any time, or quit to quit      =======
===============================================================
cached 78498 primes. pmax = 999983


>> nfs(227010481295437363334259960947493668895875336466084780038173258247009162675779735389791151574049166747880487470296548479)
nfs: commencing nfs on c120: 227010481295437363334259960947493668895875336466084780038173258247009162675779735389791151574049166747880487470296548479
nfs: searching for brent special forms...
nfs: searching for homogeneous cunningham special forms...
nfs: searching for XYYXF special forms...
nfs: couldn't find special form
nfs: commencing polynomial search over range: 8192 - 8442
nfs: commencing polynomial search over range: 8692 - 8942
nfs: commencing polynomial search over range: 8942 - 9192
nfs: commencing polynomial search over range: 9192 - 9442
nfs: commencing polynomial search over range: 9442 - 9692
nfs: commencing polynomial search over range: 10442 - 10692
nfs: commencing polynomial search over range: 10192 - 10442
nfs: commencing polynomial search over range: 11442 - 11692
nfs: commencing polynomial search over range: 11942 - 12192
nfs: commencing polynomial search over range: 11692 - 11942
nfs: commencing polynomial search over range: 11192 - 11442
nfs: commencing polynomial search over range: 9942 - 10192
nfs: commencing polynomial search over range: 12442 - 12692
nfs: commencing polynomial search over range: 12942 - 13192
nfs: commencing polynomial search over range: 13192 - 13442
nfs: commencing polynomial search over range: 13692 - 13942
nfs: commencing polynomial search over range: 13442 - 13692
nfs: commencing polynomial search over range: 9692 - 9942
nfs: commencing polynomial search over range: 12192 - 12442
nfs: commencing polynomial search over range: 12692 - 12942
nfs: commencing polynomial search over range: 10692 - 10942
nfs: commencing polynomial search over range: 14442 - 14692
nfs: commencing polynomial search over range: 8442 - 8692
nfs: commencing polynomial search over range: 10942 - 11192
nfs: commencing polynomial search over range: 14192 - 14442
nfs: commencing polynomial search over range: 13942 - 14192
nfs: commencing polynomial search over range: 14692 - 14942
nfs: commencing polynomial search over range: 14942 - 15192
nfs: commencing polynomial search over range: 15692 - 15942
nfs: commencing polynomial search over range: 15192 - 15442
nfs: commencing polynomial search over range: 15442 - 15692
nfs: commencing polynomial search over range: 15942 - 16192
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
deadline: 8640000 CPU-seconds per coefficient
coeff 12180 specialq 1 - 72504683 other 1014 - 2433
It takes very long to poly search on a c120.
With the default parameters:
nfs(a120digitnumber) only a few coeffs are done in 15mins. Somehow the deadline per coefficient seems way too high?

In the end it finds a few polys.

Code:
save 1.964811e-11 -6.9653 224848.77 2.848045e-10 rroots 5
save 1.927938e-11 -6.4808 123886.85 2.845866e-10 rroots 3
save 1.903205e-11 -6.1052 113493.47 2.830937e-10 rroots 3
save 2.143278e-11 -6.6286 119879.16 3.009189e-10 rroots 5
save 2.017982e-11 -5.5322 44129.01 2.945106e-10 rroots 5
VictordeHolland is offline   Reply With Quote
Old 2019-01-12, 03:20   #468
bsquared
 
bsquared's Avatar
 
"Ben"
Feb 2007

64158 Posts
Default

Quote:
Originally Posted by VictordeHolland View Post
It takes very long to poly search on a c120.
With the default parameters:
nfs(a120digitnumber) only a few coeffs are done in 15mins. Somehow the deadline per coefficient seems way too high?
I guess I'm not following exactly. Your post shows that it searched leading coefficient range from 8192 to over 16000, so it searched 8000-ish coefficients.

Quote:
Originally Posted by VictordeHolland View Post

In the end it finds a few polys.
Did you look in the resulting nfs.dat.p file? That has all of the polynomials that it found. (It's deleted when the job finishes though.) In the test I just did (on linux), with 12 threads over 21 minutes it found 1200 polynomials. I'm running again on windows after a fresh compile with an updated msieve (svn 1028). Not done yet, but it's looking similar so far to the linux run.

Is 15-20 minutes too much for a c120? I've not kept up with this as much lately so I'd be happy to adjust the deadlines if they are not right.
bsquared is offline   Reply With Quote
Old 2019-01-12, 03:39   #469
bsquared
 
bsquared's Avatar
 
"Ben"
Feb 2007

13×257 Posts
Default

Quote:
Originally Posted by bsquared View Post
Is 15-20 minutes too much for a c120? I've not kept up with this as much lately so I'd be happy to adjust the deadlines if they are not right.
Actually I see the deadline for a c120 is 4 hours. It stopped in 20 minutes because I ran with 12 threads.

Here is the deadline table:

Code:
static const poly_deadline_t time_limits[] = {
//      bits, seconds
        {248, 1 * 60},		// 74 digits
        {264, 2 * 60},		// 80 digits
	{304, 6 * 60},		// 92 digits
	{320, 15 * 60},		// 97 digits
	{348, 30 * 60},		// 105 digits
	{365, 1 * 3600},	// 110 digits
	{383, 2 * 3600},	// 116 digits
	{399, 4 * 3600},	// 120 digits
	{416, 8 * 3600},	// 126 digits
	{433, 16 * 3600},	// 131 digits
	{449, 32 * 3600},	// 135 digits
	{466, 64 * 3600},	// 140 digits
	{482, 100 * 3600},	// 146 digits
	{498, 200 * 3600},	// 150 digits
	{514, 300 * 3600},	// 155 digits
};
bsquared is offline   Reply With Quote
Old 2019-01-12, 03:52   #470
bsquared
 
bsquared's Avatar
 
"Ben"
Feb 2007

13×257 Posts
Default

I should maybe also (re-)mention that if you don't want to search for a fixed time, you can use the -psearch option with either min,avg, or good as a qualifier. yafu will stop when it finds a {min,avg,good} poly for the input number.

min,avg,good are chosen based on Batalov's heuristic.

-psearch min --> uses a multiplier of 1 to that fit
-psearch avg --> uses a multipler of 1.036
-psearch good --> uses a multiplier of 1.072

Just now, with that c120, I found a "min" poly of score = 2.937000e-010 in 3 minutes (8 threads), after searching a range of only a thousand coefficients or so. That actually just barely missed being qualified "avg".

On the start of the job the heuristic said the following, so the poly fits in the range expected:
nfs: expecting degree 5 poly E from 2.87e-010 to > 3.30e-010

best poly:
# norm 2.039066e-011 alpha -6.282017 e 2.937e-010 rroots 5
n: 227010481295437363334259960947493668895875336466084780038173258247009162675779735389791151574049166747880487470296548479
skew: 95431.04
c0: -46602088970638410228907101375
c1: 643792960629014034531255
c2: 64059317395932803683
c3: 49937622929009
c4: -7589830536
c5: 9108
Y0: -120039626008868252603764
Y1: 93171618323

Last fiddled with by bsquared on 2019-01-12 at 04:20
bsquared is offline   Reply With Quote
Old 2019-02-03, 16:52   #471
VictordeHolland
 
VictordeHolland's Avatar
 
"Victor de Hollander"
Aug 2011
the Netherlands

2·587 Posts
Default

Sorry, for being vague and not replying sooner.
Yes, I did indeed mean that YAFU was spending too much time in polysearch in relation to the whole factorization. This is especially prevalent for smaller composites.
But this could also be caused by me using a 16core/32 threads machine (Ubuntu).

For instance with RSA-120
Code:
02/03/19 14:41:16 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing nfs on c120: 227010481295437363334259960947493668895875336466084780038173258247009162675779735389791151574049166747880487470296548479
02/03/19 14:41:16 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing poly selection with 32 threads
02/03/19 14:41:16 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: setting deadline of 13500 seconds
02/03/19 14:41:16 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: expecting degree 5 poly E from 2.87e-10 to > 3.30e-10
02/03/19 14:41:16 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: searching for min quality poly E > 2.87e-10
02/03/19 15:27:25 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: completed 80 ranges of size 50 in 2768.6909 seconds
02/03/19 15:27:25 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: best poly = # norm 2.225654e-11 alpha -6.557326 e 3.097e-10 rroots 5
02/03/19 15:27:25 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:29:12 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:30:59 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:32:46 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:34:27 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:36:21 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:38:04 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:39:51 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:41:37 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:43:26 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:45:18 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:47:07 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:48:56 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:50:45 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:52:30 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:54:25 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:56:17 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:58:09 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 15:59:55 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:01:41 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:03:30 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:05:24 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:07:17 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:09:10 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:11:04 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:12:58 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:14:45 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:16:35 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:18:19 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:20:12 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:22:05 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:23:55 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:25:48 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:27:39 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:29:28 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:31:23 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:33:22 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:35:10 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:37:11 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing msieve filtering
02/03/19 16:40:33 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: raising min_rels by 5.00 percent to 10631389
02/03/19 16:40:33 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:42:24 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing lattice sieving with 32 threads
02/03/19 16:44:20 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing msieve filtering
02/03/19 16:48:21 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing msieve linear algebra
02/03/19 16:57:21 v1.35-beta @ Supermicro-Xeon-E5-2650, nfs: commencing msieve sqrt
02/03/19 16:59:22 v1.35-beta @ Supermicro-Xeon-E5-2650, prp60 = 693342667110830181197325401899700641361965863127336680673013
02/03/19 16:59:22 v1.35-beta @ Supermicro-Xeon-E5-2650, prp60 = 327414555693498015751146303749141488063642403240171463406883
 02/03/19 16:59:22 v1.35-beta @ Supermicro-Xeon-E5-2650, NFS elapsed time = 8286.1046 seconds.
It was spending 2769 seconds in polysearch.
2769/8286 = 33.4% of the time. It should've been about 10-15% of the time.

Quote:
Originally Posted by bsquared View Post
I should maybe also (re-)mention that if you don't want to search for a fixed time, you can use the -psearch option with either min,avg, or good as a qualifier. yafu will stop when it finds a {min,avg,good} poly for the input number.

min,avg,good are chosen based on Batalov's heuristic.

-psearch min --> uses a multiplier of 1 to that fit
-psearch avg --> uses a multipler of 1.036
-psearch good --> uses a multiplier of 1.072
I wasn't aware of that option, I'll try that and see if it helps!
VictordeHolland is offline   Reply With Quote
Old 2019-02-08, 16:01   #472
unconnected
 
unconnected's Avatar
 
May 2009
Russia, Moscow

1001110010002 Posts
Default

YAFU doesn't want to work in non-interactive mode anymore
For example, I try to run
Code:
nohup ./yafu "siqs(293419538711649676999906520094386008543357306311770882385495238269039165018900436212239)" > /dev/null &
and it quits immediately with error code 0. Without nohup it is working good.


nohup.out
Quote:
missing variable indicator (@) in input expression
ignoring any input expression: interpreting batchfile lines as input expressions


fgets returned null; done processing batchfile

Last fiddled with by unconnected on 2019-02-08 at 16:08
unconnected is online now   Reply With Quote
Old 2019-11-13, 11:53   #473
unconnected
 
unconnected's Avatar
 
May 2009
Russia, Moscow

23×313 Posts
Default

While use YAFU v.1.35-beta for batch factoring it always crashes after factoring ~400 numbers.


Used options: ./yafu "factor(@)" -batchfile list -pretest 25 -of out.txt -ou uf.txt -op pr.txt -threads 4


Output:
Code:
=== Starting work on batchfile expression ===
factor(5021087590407124764178007739509945482906763851099037519643121525646762264313367379245411902455705415)
=============================================
fac: factoring 5021087590407124764178007739509945482906763851099037519643121525646762264313367379245411902455705415
fac: using pretesting plan: normal
fac: custom pretesting limit is: 25
fac: using tune info for qs/gnfs crossover
div: primes less than 10000
fmt: 1000000 iterations
rho: x^2 + 3, starting 1000 iterations on C99 
rho: x^2 + 2, starting 1000 iterations on C99 
rho: x^2 + 1, starting 1000 iterations on C99 
pm1: starting B1 = 150K, B2 = gmp-ecm default on C99
ecm: 30/30 curves on C99, B1=2K, B2=gmp-ecm default
ecm: 74/74 curves on C99, B1=11K, B2=gmp-ecm default
fopen error: Too many open files
could not open factor.log for appending
11/13/19 14:37:36 v1.35-beta @ supercomp, current ECM pretesting depth: 15.18
11/13/19 14:37:36 v1.35-beta @ supercomp, scheduled 74 curves at B1=11000 toward target pretesting depth of 25.00
Segmentation fault (core dumped)
$dmesg | tail
Code:
[65250.281298] yafu[17356]: segfault at 0 ip 00000000005eb0e4 sp 00007ffdbdb86320 error 4 in yafu[400000+38d000]
[65250.281309] Code: 33 0c 25 28 00 00 00 89 f0 75 0a 48 81 c4 d8 00 00 00 5b 5d c3 e8 fc 11 05 00 66 2e 0f 1f 84 00 00 00 00 00 66 90 41 54 55 53 <8b> 07 48 89 fb f6 c4 20 0f 85 a6 00 00 00 89 c2 81 e2 00 80 00 00
YAFU version:
Code:
$ ./yafu


11/13/19 14:39:39 v1.35-beta @ supercomp, System/Build Info: 
Using GMP-ECM 7.0.4, Powered by GMP 6.1.2
detected Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz
detected L1 = 32768 bytes, L2 = 8388608 bytes, CL = 64 bytes
measured cpu frequency ~= 2111.997520
@bsquared, let me know if you need any additional info on this. And please review previous message. I'd like to use YAFU in 'fire-and-forget' mode rather than interactive but it didn't works anymore.

Last fiddled with by unconnected on 2019-11-13 at 11:54
unconnected is online now   Reply With Quote
Reply

Thread Tools


Similar Threads
Thread Thread Starter Forum Replies Last Post
Running YAFU via Aliqueit doesn't find yafu.ini EdH YAFU 8 2018-03-14 17:22
Where to report bugs Matt Software 1 2007-02-20 19:13
Possible Prime95 bugs JuanTutors Software 9 2006-09-24 21:22
RMA 1.7 beta bugs TTn 15k Search 2 2004-11-24 22:11
RMA 1.6 fixes LLR bugs! TTn 15k Search 16 2004-06-16 01:22

All times are UTC. The time now is 02:47.

Wed Nov 25 02:47:46 UTC 2020 up 75 days, 23:58, 4 users, load averages: 1.39, 1.32, 1.32

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.

This forum has received and complied with 0 (zero) government requests for information.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.
A copy of the license is included in the FAQ.