summaryrefslogtreecommitdiff
path: root/test/dummy/tmp/cache/assets/CFA/7F0/sprockets%2Fdda8b0015ab3657095e3a88002bfe403
blob: d60fbd0911a5c83c67960cfc85f351308f3eb112 (plain)
ofshex dumpascii
0000 04 08 6f 3a 20 41 63 74 69 76 65 53 75 70 70 6f 72 74 3a 3a 43 61 63 68 65 3a 3a 45 6e 74 72 79 ..o:.ActiveSupport::Cache::Entry
0020 09 3a 10 40 63 72 65 61 74 65 64 5f 61 74 66 19 31 33 34 37 39 37 35 38 38 35 2e 37 31 33 30 35 .:.@created_atf.1347975885.71305
0040 32 00 a2 a5 3a 0b 40 76 61 6c 75 65 22 02 92 4d 04 08 7b 11 22 16 64 65 70 65 6e 64 65 6e 63 79 2...:.@value"..M..{.".dependency
0060 5f 64 69 67 65 73 74 22 25 31 38 37 32 39 34 38 34 32 31 33 32 65 62 36 62 38 35 33 34 37 35 37 _digest"%187294842132eb6b8534757
0080 36 34 30 37 39 30 39 32 63 22 0b 6c 65 6e 67 74 68 69 02 0d 4b 22 0b 73 6f 75 72 63 65 22 02 0d 64079092c".lengthi..K".source"..
00a0 4b 2f 2a 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 33 2d 32 30 30 35 20 20 K/*..*.Copyright.(c).2003-2005..
00c0 54 6f 6d 20 57 75 0a 20 2a 20 41 6c 6c 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 2e 0a 20 Tom.Wu..*.All.Rights.Reserved...
00e0 2a 0a 20 2a 20 50 65 72 6d 69 73 73 69 6f 6e 20 69 73 20 68 65 72 65 62 79 20 67 72 61 6e 74 65 *..*.Permission.is.hereby.grante
0100 64 2c 20 66 72 65 65 20 6f 66 20 63 68 61 72 67 65 2c 20 74 6f 20 61 6e 79 20 70 65 72 73 6f 6e d,.free.of.charge,.to.any.person
0120 20 6f 62 74 61 69 6e 69 6e 67 0a 20 2a 20 61 20 63 6f 70 79 20 6f 66 20 74 68 69 73 20 73 6f 66 .obtaining..*.a.copy.of.this.sof
0140 74 77 61 72 65 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64 20 64 6f 63 75 6d 65 6e 74 61 74 69 tware.and.associated.documentati
0160 6f 6e 20 66 69 6c 65 73 20 28 74 68 65 0a 20 2a 20 22 53 6f 66 74 77 61 72 65 22 29 2c 20 74 6f on.files.(the..*."Software"),.to
0180 20 64 65 61 6c 20 69 6e 20 74 68 65 20 53 6f 66 74 77 61 72 65 20 77 69 74 68 6f 75 74 20 72 65 .deal.in.the.Software.without.re
01a0 73 74 72 69 63 74 69 6f 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 0a 20 2a 20 77 69 74 68 6f 75 74 20 striction,.including..*.without.
01c0 6c 69 6d 69 74 61 74 69 6f 6e 20 74 68 65 20 72 69 67 68 74 73 20 74 6f 20 75 73 65 2c 20 63 6f limitation.the.rights.to.use,.co
01e0 70 79 2c 20 6d 6f 64 69 66 79 2c 20 6d 65 72 67 65 2c 20 70 75 62 6c 69 73 68 2c 0a 20 2a 20 64 py,.modify,.merge,.publish,..*.d
0200 69 73 74 72 69 62 75 74 65 2c 20 73 75 62 6c 69 63 65 6e 73 65 2c 20 61 6e 64 2f 6f 72 20 73 65 istribute,.sublicense,.and/or.se
0220 6c 6c 20 63 6f 70 69 65 73 20 6f 66 20 74 68 65 20 53 6f 66 74 77 61 72 65 2c 20 61 6e 64 20 74 ll.copies.of.the.Software,.and.t
0240 6f 0a 20 2a 20 70 65 72 6d 69 74 20 70 65 72 73 6f 6e 73 20 74 6f 20 77 68 6f 6d 20 74 68 65 20 o..*.permit.persons.to.whom.the.
0260 53 6f 66 74 77 61 72 65 20 69 73 20 66 75 72 6e 69 73 68 65 64 20 74 6f 20 64 6f 20 73 6f 2c 20 Software.is.furnished.to.do.so,.
0280 73 75 62 6a 65 63 74 20 74 6f 0a 20 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 64 subject.to..*.the.following.cond
02a0 69 74 69 6f 6e 73 3a 0a 20 2a 0a 20 2a 20 54 68 65 20 61 62 6f 76 65 20 63 6f 70 79 72 69 67 68 itions:..*..*.The.above.copyrigh
02c0 74 20 6e 6f 74 69 63 65 20 61 6e 64 20 74 68 69 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 6e 6f 74 t.notice.and.this.permission.not
02e0 69 63 65 20 73 68 61 6c 6c 20 62 65 0a 20 2a 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 61 6c 6c 20 ice.shall.be..*.included.in.all.
0300 63 6f 70 69 65 73 20 6f 72 20 73 75 62 73 74 61 6e 74 69 61 6c 20 70 6f 72 74 69 6f 6e 73 20 6f copies.or.substantial.portions.o
0320 66 20 74 68 65 20 53 6f 66 74 77 61 72 65 2e 0a 20 2a 0a 20 2a 20 54 48 45 20 53 4f 46 54 57 41 f.the.Software...*..*.THE.SOFTWA
0340 52 45 20 49 53 20 50 52 4f 56 49 44 45 44 20 22 41 53 2d 49 53 22 20 41 4e 44 20 57 49 54 48 4f RE.IS.PROVIDED."AS-IS".AND.WITHO
0360 55 54 20 57 41 52 52 41 4e 54 59 20 4f 46 20 41 4e 59 20 4b 49 4e 44 2c 20 0a 20 2a 20 45 58 50 UT.WARRANTY.OF.ANY.KIND,...*.EXP
0380 52 45 53 53 2c 20 49 4d 50 4c 49 45 44 20 4f 52 20 4f 54 48 45 52 57 49 53 45 2c 20 49 4e 43 4c RESS,.IMPLIED.OR.OTHERWISE,.INCL
03a0 55 44 49 4e 47 20 57 49 54 48 4f 55 54 20 4c 49 4d 49 54 41 54 49 4f 4e 2c 20 41 4e 59 20 0a 20 UDING.WITHOUT.LIMITATION,.ANY...
03c0 2a 20 57 41 52 52 41 4e 54 59 20 4f 46 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 4f 52 *.WARRANTY.OF.MERCHANTABILITY.OR
03e0 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 .FITNESS.FOR.A.PARTICULAR.PURPOS
0400 45 2e 20 20 0a 20 2a 0a 20 2a 20 49 4e 20 4e 4f 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 54 4f 4d E.....*..*.IN.NO.EVENT.SHALL.TOM
0420 20 57 55 20 42 45 20 4c 49 41 42 4c 45 20 46 4f 52 20 41 4e 59 20 53 50 45 43 49 41 4c 2c 20 49 .WU.BE.LIABLE.FOR.ANY.SPECIAL,.I
0440 4e 43 49 44 45 4e 54 41 4c 2c 0a 20 2a 20 49 4e 44 49 52 45 43 54 20 4f 52 20 43 4f 4e 53 45 51 NCIDENTAL,..*.INDIRECT.OR.CONSEQ
0460 55 45 4e 54 49 41 4c 20 44 41 4d 41 47 45 53 20 4f 46 20 41 4e 59 20 4b 49 4e 44 2c 20 4f 52 20 UENTIAL.DAMAGES.OF.ANY.KIND,.OR.
0480 41 4e 59 20 44 41 4d 41 47 45 53 20 57 48 41 54 53 4f 45 56 45 52 0a 20 2a 20 52 45 53 55 4c 54 ANY.DAMAGES.WHATSOEVER..*.RESULT
04a0 49 4e 47 20 46 52 4f 4d 20 4c 4f 53 53 20 4f 46 20 55 53 45 2c 20 44 41 54 41 20 4f 52 20 50 52 ING.FROM.LOSS.OF.USE,.DATA.OR.PR
04c0 4f 46 49 54 53 2c 20 57 48 45 54 48 45 52 20 4f 52 20 4e 4f 54 20 41 44 56 49 53 45 44 20 4f 46 OFITS,.WHETHER.OR.NOT.ADVISED.OF
04e0 0a 20 2a 20 54 48 45 20 50 4f 53 53 49 42 49 4c 49 54 59 20 4f 46 20 44 41 4d 41 47 45 2c 20 41 ..*.THE.POSSIBILITY.OF.DAMAGE,.A
0500 4e 44 20 4f 4e 20 41 4e 59 20 54 48 45 4f 52 59 20 4f 46 20 4c 49 41 42 49 4c 49 54 59 2c 20 41 ND.ON.ANY.THEORY.OF.LIABILITY,.A
0520 52 49 53 49 4e 47 20 4f 55 54 0a 20 2a 20 4f 46 20 4f 52 20 49 4e 20 43 4f 4e 4e 45 43 54 49 4f RISING.OUT..*.OF.OR.IN.CONNECTIO
0540 4e 20 57 49 54 48 20 54 48 45 20 55 53 45 20 4f 52 20 50 45 52 46 4f 52 4d 41 4e 43 45 20 4f 46 N.WITH.THE.USE.OR.PERFORMANCE.OF
0560 20 54 48 49 53 20 53 4f 46 54 57 41 52 45 2e 0a 20 2a 0a 20 2a 20 49 6e 20 61 64 64 69 74 69 6f .THIS.SOFTWARE...*..*.In.additio
0580 6e 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 64 69 74 69 6f 6e 20 61 70 70 6c 69 n,.the.following.condition.appli
05a0 65 73 3a 0a 20 2a 0a 20 2a 20 41 6c 6c 20 72 65 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 6d 75 es:..*..*.All.redistributions.mu
05c0 73 74 20 72 65 74 61 69 6e 20 61 6e 20 69 6e 74 61 63 74 20 63 6f 70 79 20 6f 66 20 74 68 69 73 st.retain.an.intact.copy.of.this
05e0 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 69 63 65 0a 20 2a 20 61 6e 64 20 64 69 73 63 6c 61 69 .copyright.notice..*.and.disclai
0600 6d 65 72 2e 0a 20 2a 2f 0a 0a 2f 2f 20 45 78 74 65 6e 64 65 64 20 4a 61 76 61 53 63 72 69 70 74 mer...*/..//.Extended.JavaScript
0620 20 42 4e 20 66 75 6e 63 74 69 6f 6e 73 2c 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 52 53 41 20 .BN.functions,.required.for.RSA.
0640 70 72 69 76 61 74 65 20 6f 70 73 2e 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 0a 66 75 6e 63 74 69 private.ops...//.(public).functi
0660 6f 6e 20 62 6e 43 6c 6f 6e 65 28 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 20 74 68 on.bnClone().{.var.r.=.nbi();.th
0680 69 73 2e 63 6f 70 79 54 6f 28 72 29 3b 20 72 65 74 75 72 6e 20 72 3b 20 7d 0a 0a 2f 2f 20 28 70 is.copyTo(r);.return.r;.}..//.(p
06a0 75 62 6c 69 63 29 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 61 73 20 69 6e 74 65 67 65 72 0a 66 ublic).return.value.as.integer.f
06c0 75 6e 63 74 69 6f 6e 20 62 6e 49 6e 74 56 61 6c 75 65 28 29 20 7b 0a 20 20 69 66 28 74 68 69 73 unction.bnIntValue().{...if(this
06e0 2e 73 20 3c 20 30 29 20 7b 0a 20 20 20 20 69 66 28 74 68 69 73 2e 74 20 3d 3d 20 31 29 20 72 65 .s.<.0).{.....if(this.t.==.1).re
0700 74 75 72 6e 20 74 68 69 73 5b 30 5d 2d 74 68 69 73 2e 44 56 3b 0a 20 20 20 20 65 6c 73 65 20 69 turn.this[0]-this.DV;.....else.i
0720 66 28 74 68 69 73 2e 74 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 7d 0a 20 20 f(this.t.==.0).return.-1;...}...
0740 65 6c 73 65 20 69 66 28 74 68 69 73 2e 74 20 3d 3d 20 31 29 20 72 65 74 75 72 6e 20 74 68 69 73 else.if(this.t.==.1).return.this
0760 5b 30 5d 3b 0a 20 20 65 6c 73 65 20 69 66 28 74 68 69 73 2e 74 20 3d 3d 20 30 29 20 72 65 74 75 [0];...else.if(this.t.==.0).retu
0780 72 6e 20 30 3b 0a 20 20 2f 2f 20 61 73 73 75 6d 65 73 20 31 36 20 3c 20 44 42 20 3c 20 33 32 0a rn.0;...//.assumes.16.<.DB.<.32.
07a0 20 20 72 65 74 75 72 6e 20 28 28 74 68 69 73 5b 31 5d 26 28 28 31 3c 3c 28 33 32 2d 74 68 69 73 ..return.((this[1]&((1<<(32-this
07c0 2e 44 42 29 29 2d 31 29 29 3c 3c 74 68 69 73 2e 44 42 29 7c 74 68 69 73 5b 30 5d 3b 0a 7d 0a 0a .DB))-1))<<this.DB)|this[0];.}..
07e0 2f 2f 20 28 70 75 62 6c 69 63 29 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 61 73 20 62 79 74 65 //.(public).return.value.as.byte
0800 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 42 79 74 65 56 61 6c 75 65 28 29 20 7b 20 72 65 74 75 72 6e .function.bnByteValue().{.return
0820 20 28 74 68 69 73 2e 74 3d 3d 30 29 3f 74 68 69 73 2e 73 3a 28 74 68 69 73 5b 30 5d 3c 3c 32 34 .(this.t==0)?this.s:(this[0]<<24
0840 29 3e 3e 32 34 3b 20 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 72 65 74 75 72 6e 20 76 61 6c )>>24;.}..//.(public).return.val
0860 75 65 20 61 73 20 73 68 6f 72 74 20 28 61 73 73 75 6d 65 73 20 44 42 3e 3d 31 36 29 0a 66 75 6e ue.as.short.(assumes.DB>=16).fun
0880 63 74 69 6f 6e 20 62 6e 53 68 6f 72 74 56 61 6c 75 65 28 29 20 7b 20 72 65 74 75 72 6e 20 28 74 ction.bnShortValue().{.return.(t
08a0 68 69 73 2e 74 3d 3d 30 29 3f 74 68 69 73 2e 73 3a 28 74 68 69 73 5b 30 5d 3c 3c 31 36 29 3e 3e his.t==0)?this.s:(this[0]<<16)>>
08c0 31 36 3b 20 7d 0a 0a 2f 2f 20 28 70 72 6f 74 65 63 74 65 64 29 20 72 65 74 75 72 6e 20 78 20 73 16;.}..//.(protected).return.x.s
08e0 2e 74 2e 20 72 5e 78 20 3c 20 44 56 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 70 43 68 75 6e 6b 53 69 .t..r^x.<.DV.function.bnpChunkSi
0900 7a 65 28 72 29 20 7b 20 72 65 74 75 72 6e 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 4d 61 74 68 2e 4c ze(r).{.return.Math.floor(Math.L
0920 4e 32 2a 74 68 69 73 2e 44 42 2f 4d 61 74 68 2e 6c 6f 67 28 72 29 29 3b 20 7d 0a 0a 2f 2f 20 28 N2*this.DB/Math.log(r));.}..//.(
0940 70 75 62 6c 69 63 29 20 30 20 69 66 20 74 68 69 73 20 3d 3d 20 30 2c 20 31 20 69 66 20 74 68 69 public).0.if.this.==.0,.1.if.thi
0960 73 20 3e 20 30 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 53 69 67 4e 75 6d 28 29 20 7b 0a 20 20 69 66 s.>.0.function.bnSigNum().{...if
0980 28 74 68 69 73 2e 73 20 3c 20 30 29 20 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 65 6c 73 65 20 69 (this.s.<.0).return.-1;...else.i
09a0 66 28 74 68 69 73 2e 74 20 3c 3d 20 30 20 7c 7c 20 28 74 68 69 73 2e 74 20 3d 3d 20 31 20 26 26 f(this.t.<=.0.||.(this.t.==.1.&&
09c0 20 74 68 69 73 5b 30 5d 20 3c 3d 20 30 29 29 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 65 6c 73 65 .this[0].<=.0)).return.0;...else
09e0 20 72 65 74 75 72 6e 20 31 3b 0a 7d 0a 0a 2f 2f 20 28 70 72 6f 74 65 63 74 65 64 29 20 63 6f 6e .return.1;.}..//.(protected).con
0a00 76 65 72 74 20 74 6f 20 72 61 64 69 78 20 73 74 72 69 6e 67 0a 66 75 6e 63 74 69 6f 6e 20 62 6e vert.to.radix.string.function.bn
0a20 70 54 6f 52 61 64 69 78 28 62 29 20 7b 0a 20 20 69 66 28 62 20 3d 3d 20 6e 75 6c 6c 29 20 62 20 pToRadix(b).{...if(b.==.null).b.
0a40 3d 20 31 30 3b 0a 20 20 69 66 28 74 68 69 73 2e 73 69 67 6e 75 6d 28 29 20 3d 3d 20 30 20 7c 7c =.10;...if(this.signum().==.0.||
0a60 20 62 20 3c 20 32 20 7c 7c 20 62 20 3e 20 33 36 29 20 72 65 74 75 72 6e 20 22 30 22 3b 0a 20 20 .b.<.2.||.b.>.36).return."0";...
0a80 76 61 72 20 63 73 20 3d 20 74 68 69 73 2e 63 68 75 6e 6b 53 69 7a 65 28 62 29 3b 0a 20 20 76 61 var.cs.=.this.chunkSize(b);...va
0aa0 72 20 61 20 3d 20 4d 61 74 68 2e 70 6f 77 28 62 2c 63 73 29 3b 0a 20 20 76 61 72 20 64 20 3d 20 r.a.=.Math.pow(b,cs);...var.d.=.
0ac0 6e 62 76 28 61 29 2c 20 79 20 3d 20 6e 62 69 28 29 2c 20 7a 20 3d 20 6e 62 69 28 29 2c 20 72 20 nbv(a),.y.=.nbi(),.z.=.nbi(),.r.
0ae0 3d 20 22 22 3b 0a 20 20 74 68 69 73 2e 64 69 76 52 65 6d 54 6f 28 64 2c 79 2c 7a 29 3b 0a 20 20 =."";...this.divRemTo(d,y,z);...
0b00 77 68 69 6c 65 28 79 2e 73 69 67 6e 75 6d 28 29 20 3e 20 30 29 20 7b 0a 20 20 20 20 72 20 3d 20 while(y.signum().>.0).{.....r.=.
0b20 28 61 2b 7a 2e 69 6e 74 56 61 6c 75 65 28 29 29 2e 74 6f 53 74 72 69 6e 67 28 62 29 2e 73 75 62 (a+z.intValue()).toString(b).sub
0b40 73 74 72 28 31 29 20 2b 20 72 3b 0a 20 20 20 20 79 2e 64 69 76 52 65 6d 54 6f 28 64 2c 79 2c 7a str(1).+.r;.....y.divRemTo(d,y,z
0b60 29 3b 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 7a 2e 69 6e 74 56 61 6c 75 65 28 29 2e 74 6f 53 );...}...return.z.intValue().toS
0b80 74 72 69 6e 67 28 62 29 20 2b 20 72 3b 0a 7d 0a 0a 2f 2f 20 28 70 72 6f 74 65 63 74 65 64 29 20 tring(b).+.r;.}..//.(protected).
0ba0 63 6f 6e 76 65 72 74 20 66 72 6f 6d 20 72 61 64 69 78 20 73 74 72 69 6e 67 0a 66 75 6e 63 74 69 convert.from.radix.string.functi
0bc0 6f 6e 20 62 6e 70 46 72 6f 6d 52 61 64 69 78 28 73 2c 62 29 20 7b 0a 20 20 74 68 69 73 2e 66 72 on.bnpFromRadix(s,b).{...this.fr
0be0 6f 6d 49 6e 74 28 30 29 3b 0a 20 20 69 66 28 62 20 3d 3d 20 6e 75 6c 6c 29 20 62 20 3d 20 31 30 omInt(0);...if(b.==.null).b.=.10
0c00 3b 0a 20 20 76 61 72 20 63 73 20 3d 20 74 68 69 73 2e 63 68 75 6e 6b 53 69 7a 65 28 62 29 3b 0a ;...var.cs.=.this.chunkSize(b);.
0c20 20 20 76 61 72 20 64 20 3d 20 4d 61 74 68 2e 70 6f 77 28 62 2c 63 73 29 2c 20 6d 69 20 3d 20 66 ..var.d.=.Math.pow(b,cs),.mi.=.f
0c40 61 6c 73 65 2c 20 6a 20 3d 20 30 2c 20 77 20 3d 20 30 3b 0a 20 20 66 6f 72 28 76 61 72 20 69 20 alse,.j.=.0,.w.=.0;...for(var.i.
0c60 3d 20 30 3b 20 69 20 3c 20 73 2e 6c 65 6e 67 74 68 3b 20 2b 2b 69 29 20 7b 0a 20 20 20 20 76 61 =.0;.i.<.s.length;.++i).{.....va
0c80 72 20 78 20 3d 20 69 6e 74 41 74 28 73 2c 69 29 3b 0a 20 20 20 20 69 66 28 78 20 3c 20 30 29 20 r.x.=.intAt(s,i);.....if(x.<.0).
0ca0 7b 0a 20 20 20 20 20 20 69 66 28 73 2e 63 68 61 72 41 74 28 69 29 20 3d 3d 20 22 2d 22 20 26 26 {.......if(s.charAt(i).==."-".&&
0cc0 20 74 68 69 73 2e 73 69 67 6e 75 6d 28 29 20 3d 3d 20 30 29 20 6d 69 20 3d 20 74 72 75 65 3b 0a .this.signum().==.0).mi.=.true;.
0ce0 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 77 20 3d 20 62 2a ......continue;.....}.....w.=.b*
0d00 77 2b 78 3b 0a 20 20 20 20 69 66 28 2b 2b 6a 20 3e 3d 20 63 73 29 20 7b 0a 20 20 20 20 20 20 74 w+x;.....if(++j.>=.cs).{.......t
0d20 68 69 73 2e 64 4d 75 6c 74 69 70 6c 79 28 64 29 3b 0a 20 20 20 20 20 20 74 68 69 73 2e 64 41 64 his.dMultiply(d);.......this.dAd
0d40 64 4f 66 66 73 65 74 28 77 2c 30 29 3b 0a 20 20 20 20 20 20 6a 20 3d 20 30 3b 0a 20 20 20 20 20 dOffset(w,0);.......j.=.0;......
0d60 20 77 20 3d 20 30 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 69 66 28 6a 20 3e 20 30 29 20 7b 0a .w.=.0;.....}...}...if(j.>.0).{.
0d80 20 20 20 20 74 68 69 73 2e 64 4d 75 6c 74 69 70 6c 79 28 4d 61 74 68 2e 70 6f 77 28 62 2c 6a 29 ....this.dMultiply(Math.pow(b,j)
0da0 29 3b 0a 20 20 20 20 74 68 69 73 2e 64 41 64 64 4f 66 66 73 65 74 28 77 2c 30 29 3b 0a 20 20 7d );.....this.dAddOffset(w,0);...}
0dc0 0a 20 20 69 66 28 6d 69 29 20 42 69 67 49 6e 74 65 67 65 72 2e 5a 45 52 4f 2e 73 75 62 54 6f 28 ...if(mi).BigInteger.ZERO.subTo(
0de0 74 68 69 73 2c 74 68 69 73 29 3b 0a 7d 0a 0a 2f 2f 20 28 70 72 6f 74 65 63 74 65 64 29 20 61 6c this,this);.}..//.(protected).al
0e00 74 65 72 6e 61 74 65 20 63 6f 6e 73 74 72 75 63 74 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 70 ternate.constructor.function.bnp
0e20 46 72 6f 6d 4e 75 6d 62 65 72 28 61 2c 62 2c 63 29 20 7b 0a 20 20 69 66 28 22 6e 75 6d 62 65 72 FromNumber(a,b,c).{...if("number
0e40 22 20 3d 3d 20 74 79 70 65 6f 66 20 62 29 20 7b 0a 20 20 20 20 2f 2f 20 6e 65 77 20 42 69 67 49 ".==.typeof.b).{.....//.new.BigI
0e60 6e 74 65 67 65 72 28 69 6e 74 2c 69 6e 74 2c 52 4e 47 29 0a 20 20 20 20 69 66 28 61 20 3c 20 32 nteger(int,int,RNG).....if(a.<.2
0e80 29 20 74 68 69 73 2e 66 72 6f 6d 49 6e 74 28 31 29 3b 0a 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 ).this.fromInt(1);.....else.{...
0ea0 20 20 20 20 74 68 69 73 2e 66 72 6f 6d 4e 75 6d 62 65 72 28 61 2c 63 29 3b 0a 20 20 20 20 20 20 ....this.fromNumber(a,c);.......
0ec0 69 66 28 21 74 68 69 73 2e 74 65 73 74 42 69 74 28 61 2d 31 29 29 09 2f 2f 20 66 6f 72 63 65 20 if(!this.testBit(a-1)).//.force.
0ee0 4d 53 42 20 73 65 74 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 69 74 77 69 73 65 54 6f 28 42 MSB.set.........this.bitwiseTo(B
0f00 69 67 49 6e 74 65 67 65 72 2e 4f 4e 45 2e 73 68 69 66 74 4c 65 66 74 28 61 2d 31 29 2c 6f 70 5f igInteger.ONE.shiftLeft(a-1),op_
0f20 6f 72 2c 74 68 69 73 29 3b 0a 20 20 20 20 20 20 69 66 28 74 68 69 73 2e 69 73 45 76 65 6e 28 29 or,this);.......if(this.isEven()
0f40 29 20 74 68 69 73 2e 64 41 64 64 4f 66 66 73 65 74 28 31 2c 30 29 3b 20 2f 2f 20 66 6f 72 63 65 ).this.dAddOffset(1,0);.//.force
0f60 20 6f 64 64 0a 20 20 20 20 20 20 77 68 69 6c 65 28 21 74 68 69 73 2e 69 73 50 72 6f 62 61 62 6c .odd.......while(!this.isProbabl
0f80 65 50 72 69 6d 65 28 62 29 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 41 64 64 4f 66 ePrime(b)).{.........this.dAddOf
0fa0 66 73 65 74 28 32 2c 30 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 74 68 69 73 2e 62 69 74 4c 65 fset(2,0);.........if(this.bitLe
0fc0 6e 67 74 68 28 29 20 3e 20 61 29 20 74 68 69 73 2e 73 75 62 54 6f 28 42 69 67 49 6e 74 65 67 65 ngth().>.a).this.subTo(BigIntege
0fe0 72 2e 4f 4e 45 2e 73 68 69 66 74 4c 65 66 74 28 61 2d 31 29 2c 74 68 69 73 29 3b 0a 20 20 20 20 r.ONE.shiftLeft(a-1),this);.....
1000 20 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 2f 2f 20 6e 65 ..}.....}...}...else.{.....//.ne
1020 77 20 42 69 67 49 6e 74 65 67 65 72 28 69 6e 74 2c 52 4e 47 29 0a 20 20 20 20 76 61 72 20 78 20 w.BigInteger(int,RNG).....var.x.
1040 3d 20 6e 65 77 20 41 72 72 61 79 28 29 2c 20 74 20 3d 20 61 26 37 3b 0a 20 20 20 20 78 2e 6c 65 =.new.Array(),.t.=.a&7;.....x.le
1060 6e 67 74 68 20 3d 20 28 61 3e 3e 33 29 2b 31 3b 0a 20 20 20 20 62 2e 6e 65 78 74 42 79 74 65 73 ngth.=.(a>>3)+1;.....b.nextBytes
1080 28 78 29 3b 0a 20 20 20 20 69 66 28 74 20 3e 20 30 29 20 78 5b 30 5d 20 26 3d 20 28 28 31 3c 3c (x);.....if(t.>.0).x[0].&=.((1<<
10a0 74 29 2d 31 29 3b 20 65 6c 73 65 20 78 5b 30 5d 20 3d 20 30 3b 0a 20 20 20 20 74 68 69 73 2e 66 t)-1);.else.x[0].=.0;.....this.f
10c0 72 6f 6d 53 74 72 69 6e 67 28 78 2c 32 35 36 29 3b 0a 20 20 7d 0a 7d 0a 0a 2f 2f 20 28 70 75 62 romString(x,256);...}.}..//.(pub
10e0 6c 69 63 29 20 63 6f 6e 76 65 72 74 20 74 6f 20 62 69 67 65 6e 64 69 61 6e 20 62 79 74 65 20 61 lic).convert.to.bigendian.byte.a
1100 72 72 61 79 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 54 6f 42 79 74 65 41 72 72 61 79 28 29 20 7b 0a rray.function.bnToByteArray().{.
1120 20 20 76 61 72 20 69 20 3d 20 74 68 69 73 2e 74 2c 20 72 20 3d 20 6e 65 77 20 41 72 72 61 79 28 ..var.i.=.this.t,.r.=.new.Array(
1140 29 3b 0a 20 20 72 5b 30 5d 20 3d 20 74 68 69 73 2e 73 3b 0a 20 20 76 61 72 20 70 20 3d 20 74 68 );...r[0].=.this.s;...var.p.=.th
1160 69 73 2e 44 42 2d 28 69 2a 74 68 69 73 2e 44 42 29 25 38 2c 20 64 2c 20 6b 20 3d 20 30 3b 0a 20 is.DB-(i*this.DB)%8,.d,.k.=.0;..
1180 20 69 66 28 69 2d 2d 20 3e 20 30 29 20 7b 0a 20 20 20 20 69 66 28 70 20 3c 20 74 68 69 73 2e 44 .if(i--.>.0).{.....if(p.<.this.D
11a0 42 20 26 26 20 28 64 20 3d 20 74 68 69 73 5b 69 5d 3e 3e 70 29 20 21 3d 20 28 74 68 69 73 2e 73 B.&&.(d.=.this[i]>>p).!=.(this.s
11c0 26 74 68 69 73 2e 44 4d 29 3e 3e 70 29 0a 20 20 20 20 20 20 72 5b 6b 2b 2b 5d 20 3d 20 64 7c 28 &this.DM)>>p).......r[k++].=.d|(
11e0 74 68 69 73 2e 73 3c 3c 28 74 68 69 73 2e 44 42 2d 70 29 29 3b 0a 20 20 20 20 77 68 69 6c 65 28 this.s<<(this.DB-p));.....while(
1200 69 20 3e 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 69 66 28 70 20 3c 20 38 29 20 7b 0a 20 20 20 20 i.>=.0).{.......if(p.<.8).{.....
1220 20 20 20 20 64 20 3d 20 28 74 68 69 73 5b 69 5d 26 28 28 31 3c 3c 70 29 2d 31 29 29 3c 3c 28 38 ....d.=.(this[i]&((1<<p)-1))<<(8
1240 2d 70 29 3b 0a 20 20 20 20 20 20 20 20 64 20 7c 3d 20 74 68 69 73 5b 2d 2d 69 5d 3e 3e 28 70 2b -p);.........d.|=.this[--i]>>(p+
1260 3d 74 68 69 73 2e 44 42 2d 38 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 65 6c 73 65 20 =this.DB-8);.......}.......else.
1280 7b 0a 20 20 20 20 20 20 20 20 64 20 3d 20 28 74 68 69 73 5b 69 5d 3e 3e 28 70 2d 3d 38 29 29 26 {.........d.=.(this[i]>>(p-=8))&
12a0 30 78 66 66 3b 0a 20 20 20 20 20 20 20 20 69 66 28 70 20 3c 3d 20 30 29 20 7b 20 70 20 2b 3d 20 0xff;.........if(p.<=.0).{.p.+=.
12c0 74 68 69 73 2e 44 42 3b 20 2d 2d 69 3b 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 69 66 this.DB;.--i;.}.......}.......if
12e0 28 28 64 26 30 78 38 30 29 20 21 3d 20 30 29 20 64 20 7c 3d 20 2d 32 35 36 3b 0a 20 20 20 20 20 ((d&0x80).!=.0).d.|=.-256;......
1300 20 69 66 28 6b 20 3d 3d 20 30 20 26 26 20 28 74 68 69 73 2e 73 26 30 78 38 30 29 20 21 3d 20 28 .if(k.==.0.&&.(this.s&0x80).!=.(
1320 64 26 30 78 38 30 29 29 20 2b 2b 6b 3b 0a 20 20 20 20 20 20 69 66 28 6b 20 3e 20 30 20 7c 7c 20 d&0x80)).++k;.......if(k.>.0.||.
1340 64 20 21 3d 20 74 68 69 73 2e 73 29 20 72 5b 6b 2b 2b 5d 20 3d 20 64 3b 0a 20 20 20 20 7d 0a 20 d.!=.this.s).r[k++].=.d;.....}..
1360 20 7d 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 45 71 75 .}...return.r;.}..function.bnEqu
1380 61 6c 73 28 61 29 20 7b 20 72 65 74 75 72 6e 28 74 68 69 73 2e 63 6f 6d 70 61 72 65 54 6f 28 61 als(a).{.return(this.compareTo(a
13a0 29 3d 3d 30 29 3b 20 7d 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 4d 69 6e 28 61 29 20 7b 20 72 65 74 )==0);.}.function.bnMin(a).{.ret
13c0 75 72 6e 28 74 68 69 73 2e 63 6f 6d 70 61 72 65 54 6f 28 61 29 3c 30 29 3f 74 68 69 73 3a 61 3b urn(this.compareTo(a)<0)?this:a;
13e0 20 7d 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 4d 61 78 28 61 29 20 7b 20 72 65 74 75 72 6e 28 74 68 .}.function.bnMax(a).{.return(th
1400 69 73 2e 63 6f 6d 70 61 72 65 54 6f 28 61 29 3e 30 29 3f 74 68 69 73 3a 61 3b 20 7d 0a 0a 2f 2f is.compareTo(a)>0)?this:a;.}..//
1420 20 28 70 72 6f 74 65 63 74 65 64 29 20 72 20 3d 20 74 68 69 73 20 6f 70 20 61 20 28 62 69 74 77 .(protected).r.=.this.op.a.(bitw
1440 69 73 65 29 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 70 42 69 74 77 69 73 65 54 6f 28 61 2c 6f 70 2c ise).function.bnpBitwiseTo(a,op,
1460 72 29 20 7b 0a 20 20 76 61 72 20 69 2c 20 66 2c 20 6d 20 3d 20 4d 61 74 68 2e 6d 69 6e 28 61 2e r).{...var.i,.f,.m.=.Math.min(a.
1480 74 2c 74 68 69 73 2e 74 29 3b 0a 20 20 66 6f 72 28 69 20 3d 20 30 3b 20 69 20 3c 20 6d 3b 20 2b t,this.t);...for(i.=.0;.i.<.m;.+
14a0 2b 69 29 20 72 5b 69 5d 20 3d 20 6f 70 28 74 68 69 73 5b 69 5d 2c 61 5b 69 5d 29 3b 0a 20 20 69 +i).r[i].=.op(this[i],a[i]);...i
14c0 66 28 61 2e 74 20 3c 20 74 68 69 73 2e 74 29 20 7b 0a 20 20 20 20 66 20 3d 20 61 2e 73 26 74 68 f(a.t.<.this.t).{.....f.=.a.s&th
14e0 69 73 2e 44 4d 3b 0a 20 20 20 20 66 6f 72 28 69 20 3d 20 6d 3b 20 69 20 3c 20 74 68 69 73 2e 74 is.DM;.....for(i.=.m;.i.<.this.t
1500 3b 20 2b 2b 69 29 20 72 5b 69 5d 20 3d 20 6f 70 28 74 68 69 73 5b 69 5d 2c 66 29 3b 0a 20 20 20 ;.++i).r[i].=.op(this[i],f);....
1520 20 72 2e 74 20 3d 20 74 68 69 73 2e 74 3b 0a 20 20 7d 0a 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 .r.t.=.this.t;...}...else.{.....
1540 66 20 3d 20 74 68 69 73 2e 73 26 74 68 69 73 2e 44 4d 3b 0a 20 20 20 20 66 6f 72 28 69 20 3d 20 f.=.this.s&this.DM;.....for(i.=.
1560 6d 3b 20 69 20 3c 20 61 2e 74 3b 20 2b 2b 69 29 20 72 5b 69 5d 20 3d 20 6f 70 28 66 2c 61 5b 69 m;.i.<.a.t;.++i).r[i].=.op(f,a[i
1580 5d 29 3b 0a 20 20 20 20 72 2e 74 20 3d 20 61 2e 74 3b 0a 20 20 7d 0a 20 20 72 2e 73 20 3d 20 6f ]);.....r.t.=.a.t;...}...r.s.=.o
15a0 70 28 74 68 69 73 2e 73 2c 61 2e 73 29 3b 0a 20 20 72 2e 63 6c 61 6d 70 28 29 3b 0a 7d 0a 0a 2f p(this.s,a.s);...r.clamp();.}../
15c0 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 26 20 61 0a 66 75 6e 63 74 69 6f 6e 20 6f 70 5f /.(public).this.&.a.function.op_
15e0 61 6e 64 28 78 2c 79 29 20 7b 20 72 65 74 75 72 6e 20 78 26 79 3b 20 7d 0a 66 75 6e 63 74 69 6f and(x,y).{.return.x&y;.}.functio
1600 6e 20 62 6e 41 6e 64 28 61 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 20 74 68 69 73 n.bnAnd(a).{.var.r.=.nbi();.this
1620 2e 62 69 74 77 69 73 65 54 6f 28 61 2c 6f 70 5f 61 6e 64 2c 72 29 3b 20 72 65 74 75 72 6e 20 72 .bitwiseTo(a,op_and,r);.return.r
1640 3b 20 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 7c 20 61 0a 66 75 6e 63 74 69 ;.}..//.(public).this.|.a.functi
1660 6f 6e 20 6f 70 5f 6f 72 28 78 2c 79 29 20 7b 20 72 65 74 75 72 6e 20 78 7c 79 3b 20 7d 0a 66 75 on.op_or(x,y).{.return.x|y;.}.fu
1680 6e 63 74 69 6f 6e 20 62 6e 4f 72 28 61 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 20 nction.bnOr(a).{.var.r.=.nbi();.
16a0 74 68 69 73 2e 62 69 74 77 69 73 65 54 6f 28 61 2c 6f 70 5f 6f 72 2c 72 29 3b 20 72 65 74 75 72 this.bitwiseTo(a,op_or,r);.retur
16c0 6e 20 72 3b 20 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 5e 20 61 0a 66 75 6e n.r;.}..//.(public).this.^.a.fun
16e0 63 74 69 6f 6e 20 6f 70 5f 78 6f 72 28 78 2c 79 29 20 7b 20 72 65 74 75 72 6e 20 78 5e 79 3b 20 ction.op_xor(x,y).{.return.x^y;.
1700 7d 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 58 6f 72 28 61 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 }.function.bnXor(a).{.var.r.=.nb
1720 69 28 29 3b 20 74 68 69 73 2e 62 69 74 77 69 73 65 54 6f 28 61 2c 6f 70 5f 78 6f 72 2c 72 29 3b i();.this.bitwiseTo(a,op_xor,r);
1740 20 72 65 74 75 72 6e 20 72 3b 20 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 26 .return.r;.}..//.(public).this.&
1760 20 7e 61 0a 66 75 6e 63 74 69 6f 6e 20 6f 70 5f 61 6e 64 6e 6f 74 28 78 2c 79 29 20 7b 20 72 65 .~a.function.op_andnot(x,y).{.re
1780 74 75 72 6e 20 78 26 7e 79 3b 20 7d 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 41 6e 64 4e 6f 74 28 61 turn.x&~y;.}.function.bnAndNot(a
17a0 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 20 74 68 69 73 2e 62 69 74 77 69 73 65 54 ).{.var.r.=.nbi();.this.bitwiseT
17c0 6f 28 61 2c 6f 70 5f 61 6e 64 6e 6f 74 2c 72 29 3b 20 72 65 74 75 72 6e 20 72 3b 20 7d 0a 0a 2f o(a,op_andnot,r);.return.r;.}../
17e0 2f 20 28 70 75 62 6c 69 63 29 20 7e 74 68 69 73 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 4e 6f 74 28 /.(public).~this.function.bnNot(
1800 29 20 7b 0a 20 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 0a 20 20 66 6f 72 28 76 61 72 20 69 ).{...var.r.=.nbi();...for(var.i
1820 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 2e 74 3b 20 2b 2b 69 29 20 72 5b 69 5d 20 3d 20 74 68 .=.0;.i.<.this.t;.++i).r[i].=.th
1840 69 73 2e 44 4d 26 7e 74 68 69 73 5b 69 5d 3b 0a 20 20 72 2e 74 20 3d 20 74 68 69 73 2e 74 3b 0a is.DM&~this[i];...r.t.=.this.t;.
1860 20 20 72 2e 73 20 3d 20 7e 74 68 69 73 2e 73 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a ..r.s.=.~this.s;...return.r;.}..
1880 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 3c 3c 20 6e 0a 66 75 6e 63 74 69 6f 6e 20 62 //.(public).this.<<.n.function.b
18a0 6e 53 68 69 66 74 4c 65 66 74 28 6e 29 20 7b 0a 20 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b nShiftLeft(n).{...var.r.=.nbi();
18c0 0a 20 20 69 66 28 6e 20 3c 20 30 29 20 74 68 69 73 2e 72 53 68 69 66 74 54 6f 28 2d 6e 2c 72 29 ...if(n.<.0).this.rShiftTo(-n,r)
18e0 3b 20 65 6c 73 65 20 74 68 69 73 2e 6c 53 68 69 66 74 54 6f 28 6e 2c 72 29 3b 0a 20 20 72 65 74 ;.else.this.lShiftTo(n,r);...ret
1900 75 72 6e 20 72 3b 0a 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 3e 3e 20 6e 0a urn.r;.}..//.(public).this.>>.n.
1920 66 75 6e 63 74 69 6f 6e 20 62 6e 53 68 69 66 74 52 69 67 68 74 28 6e 29 20 7b 0a 20 20 76 61 72 function.bnShiftRight(n).{...var
1940 20 72 20 3d 20 6e 62 69 28 29 3b 0a 20 20 69 66 28 6e 20 3c 20 30 29 20 74 68 69 73 2e 6c 53 68 .r.=.nbi();...if(n.<.0).this.lSh
1960 69 66 74 54 6f 28 2d 6e 2c 72 29 3b 20 65 6c 73 65 20 74 68 69 73 2e 72 53 68 69 66 74 54 6f 28 iftTo(-n,r);.else.this.rShiftTo(
1980 6e 2c 72 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 2f 2f 20 72 65 74 75 72 6e 20 69 n,r);...return.r;.}..//.return.i
19a0 6e 64 65 78 20 6f 66 20 6c 6f 77 65 73 74 20 31 2d 62 69 74 20 69 6e 20 78 2c 20 78 20 3c 20 32 ndex.of.lowest.1-bit.in.x,.x.<.2
19c0 5e 33 31 0a 66 75 6e 63 74 69 6f 6e 20 6c 62 69 74 28 78 29 20 7b 0a 20 20 69 66 28 78 20 3d 3d ^31.function.lbit(x).{...if(x.==
19e0 20 30 29 20 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 76 61 72 20 72 20 3d 20 30 3b 0a 20 20 69 66 .0).return.-1;...var.r.=.0;...if
1a00 28 28 78 26 30 78 66 66 66 66 29 20 3d 3d 20 30 29 20 7b 20 78 20 3e 3e 3d 20 31 36 3b 20 72 20 ((x&0xffff).==.0).{.x.>>=.16;.r.
1a20 2b 3d 20 31 36 3b 20 7d 0a 20 20 69 66 28 28 78 26 30 78 66 66 29 20 3d 3d 20 30 29 20 7b 20 78 +=.16;.}...if((x&0xff).==.0).{.x
1a40 20 3e 3e 3d 20 38 3b 20 72 20 2b 3d 20 38 3b 20 7d 0a 20 20 69 66 28 28 78 26 30 78 66 29 20 3d .>>=.8;.r.+=.8;.}...if((x&0xf).=
1a60 3d 20 30 29 20 7b 20 78 20 3e 3e 3d 20 34 3b 20 72 20 2b 3d 20 34 3b 20 7d 0a 20 20 69 66 28 28 =.0).{.x.>>=.4;.r.+=.4;.}...if((
1a80 78 26 33 29 20 3d 3d 20 30 29 20 7b 20 78 20 3e 3e 3d 20 32 3b 20 72 20 2b 3d 20 32 3b 20 7d 0a x&3).==.0).{.x.>>=.2;.r.+=.2;.}.
1aa0 20 20 69 66 28 28 78 26 31 29 20 3d 3d 20 30 29 20 2b 2b 72 3b 0a 20 20 72 65 74 75 72 6e 20 72 ..if((x&1).==.0).++r;...return.r
1ac0 3b 0a 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 72 65 74 75 72 6e 73 20 69 6e 64 65 78 20 6f ;.}..//.(public).returns.index.o
1ae0 66 20 6c 6f 77 65 73 74 20 31 2d 62 69 74 20 28 6f 72 20 2d 31 20 69 66 20 6e 6f 6e 65 29 0a 66 f.lowest.1-bit.(or.-1.if.none).f
1b00 75 6e 63 74 69 6f 6e 20 62 6e 47 65 74 4c 6f 77 65 73 74 53 65 74 42 69 74 28 29 20 7b 0a 20 20 unction.bnGetLowestSetBit().{...
1b20 66 6f 72 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 2e 74 3b 20 2b 2b 69 29 0a for(var.i.=.0;.i.<.this.t;.++i).
1b40 20 20 20 20 69 66 28 74 68 69 73 5b 69 5d 20 21 3d 20 30 29 20 72 65 74 75 72 6e 20 69 2a 74 68 ....if(this[i].!=.0).return.i*th
1b60 69 73 2e 44 42 2b 6c 62 69 74 28 74 68 69 73 5b 69 5d 29 3b 0a 20 20 69 66 28 74 68 69 73 2e 73 is.DB+lbit(this[i]);...if(this.s
1b80 20 3c 20 30 29 20 72 65 74 75 72 6e 20 74 68 69 73 2e 74 2a 74 68 69 73 2e 44 42 3b 0a 20 20 72 .<.0).return.this.t*this.DB;...r
1ba0 65 74 75 72 6e 20 2d 31 3b 0a 7d 0a 0a 2f 2f 20 72 65 74 75 72 6e 20 6e 75 6d 62 65 72 20 6f 66 eturn.-1;.}..//.return.number.of
1bc0 20 31 20 62 69 74 73 20 69 6e 20 78 0a 66 75 6e 63 74 69 6f 6e 20 63 62 69 74 28 78 29 20 7b 0a .1.bits.in.x.function.cbit(x).{.
1be0 20 20 76 61 72 20 72 20 3d 20 30 3b 0a 20 20 77 68 69 6c 65 28 78 20 21 3d 20 30 29 20 7b 20 78 ..var.r.=.0;...while(x.!=.0).{.x
1c00 20 26 3d 20 78 2d 31 3b 20 2b 2b 72 3b 20 7d 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 2f .&=.x-1;.++r;.}...return.r;.}../
1c20 2f 20 28 70 75 62 6c 69 63 29 20 72 65 74 75 72 6e 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 74 20 /.(public).return.number.of.set.
1c40 62 69 74 73 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 42 69 74 43 6f 75 6e 74 28 29 20 7b 0a 20 20 76 bits.function.bnBitCount().{...v
1c60 61 72 20 72 20 3d 20 30 2c 20 78 20 3d 20 74 68 69 73 2e 73 26 74 68 69 73 2e 44 4d 3b 0a 20 20 ar.r.=.0,.x.=.this.s&this.DM;...
1c80 66 6f 72 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 2e 74 3b 20 2b 2b 69 29 20 for(var.i.=.0;.i.<.this.t;.++i).
1ca0 72 20 2b 3d 20 63 62 69 74 28 74 68 69 73 5b 69 5d 5e 78 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 r.+=.cbit(this[i]^x);...return.r
1cc0 3b 0a 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 72 75 65 20 69 66 66 20 6e 74 68 20 62 69 ;.}..//.(public).true.iff.nth.bi
1ce0 74 20 69 73 20 73 65 74 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 54 65 73 74 42 69 74 28 6e 29 20 7b t.is.set.function.bnTestBit(n).{
1d00 0a 20 20 76 61 72 20 6a 20 3d 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 6e 2f 74 68 69 73 2e 44 42 29 ...var.j.=.Math.floor(n/this.DB)
1d20 3b 0a 20 20 69 66 28 6a 20 3e 3d 20 74 68 69 73 2e 74 29 20 72 65 74 75 72 6e 28 74 68 69 73 2e ;...if(j.>=.this.t).return(this.
1d40 73 21 3d 30 29 3b 0a 20 20 72 65 74 75 72 6e 28 28 74 68 69 73 5b 6a 5d 26 28 31 3c 3c 28 6e 25 s!=0);...return((this[j]&(1<<(n%
1d60 74 68 69 73 2e 44 42 29 29 29 21 3d 30 29 3b 0a 7d 0a 0a 2f 2f 20 28 70 72 6f 74 65 63 74 65 64 this.DB)))!=0);.}..//.(protected
1d80 29 20 74 68 69 73 20 6f 70 20 28 31 3c 3c 6e 29 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 70 43 68 61 ).this.op.(1<<n).function.bnpCha
1da0 6e 67 65 42 69 74 28 6e 2c 6f 70 29 20 7b 0a 20 20 76 61 72 20 72 20 3d 20 42 69 67 49 6e 74 65 ngeBit(n,op).{...var.r.=.BigInte
1dc0 67 65 72 2e 4f 4e 45 2e 73 68 69 66 74 4c 65 66 74 28 6e 29 3b 0a 20 20 74 68 69 73 2e 62 69 74 ger.ONE.shiftLeft(n);...this.bit
1de0 77 69 73 65 54 6f 28 72 2c 6f 70 2c 72 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 2f wiseTo(r,op,r);...return.r;.}../
1e00 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 7c 20 28 31 3c 3c 6e 29 0a 66 75 6e 63 74 69 6f /.(public).this.|.(1<<n).functio
1e20 6e 20 62 6e 53 65 74 42 69 74 28 6e 29 20 7b 20 72 65 74 75 72 6e 20 74 68 69 73 2e 63 68 61 6e n.bnSetBit(n).{.return.this.chan
1e40 67 65 42 69 74 28 6e 2c 6f 70 5f 6f 72 29 3b 20 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 geBit(n,op_or);.}..//.(public).t
1e60 68 69 73 20 26 20 7e 28 31 3c 3c 6e 29 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 43 6c 65 61 72 42 69 his.&.~(1<<n).function.bnClearBi
1e80 74 28 6e 29 20 7b 20 72 65 74 75 72 6e 20 74 68 69 73 2e 63 68 61 6e 67 65 42 69 74 28 6e 2c 6f t(n).{.return.this.changeBit(n,o
1ea0 70 5f 61 6e 64 6e 6f 74 29 3b 20 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 5e p_andnot);.}..//.(public).this.^
1ec0 20 28 31 3c 3c 6e 29 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 46 6c 69 70 42 69 74 28 6e 29 20 7b 20 .(1<<n).function.bnFlipBit(n).{.
1ee0 72 65 74 75 72 6e 20 74 68 69 73 2e 63 68 61 6e 67 65 42 69 74 28 6e 2c 6f 70 5f 78 6f 72 29 3b return.this.changeBit(n,op_xor);
1f00 20 7d 0a 0a 2f 2f 20 28 70 72 6f 74 65 63 74 65 64 29 20 72 20 3d 20 74 68 69 73 20 2b 20 61 0a .}..//.(protected).r.=.this.+.a.
1f20 66 75 6e 63 74 69 6f 6e 20 62 6e 70 41 64 64 54 6f 28 61 2c 72 29 20 7b 0a 20 20 76 61 72 20 69 function.bnpAddTo(a,r).{...var.i
1f40 20 3d 20 30 2c 20 63 20 3d 20 30 2c 20 6d 20 3d 20 4d 61 74 68 2e 6d 69 6e 28 61 2e 74 2c 74 68 .=.0,.c.=.0,.m.=.Math.min(a.t,th
1f60 69 73 2e 74 29 3b 0a 20 20 77 68 69 6c 65 28 69 20 3c 20 6d 29 20 7b 0a 20 20 20 20 63 20 2b 3d is.t);...while(i.<.m).{.....c.+=
1f80 20 74 68 69 73 5b 69 5d 2b 61 5b 69 5d 3b 0a 20 20 20 20 72 5b 69 2b 2b 5d 20 3d 20 63 26 74 68 .this[i]+a[i];.....r[i++].=.c&th
1fa0 69 73 2e 44 4d 3b 0a 20 20 20 20 63 20 3e 3e 3d 20 74 68 69 73 2e 44 42 3b 0a 20 20 7d 0a 20 20 is.DM;.....c.>>=.this.DB;...}...
1fc0 69 66 28 61 2e 74 20 3c 20 74 68 69 73 2e 74 29 20 7b 0a 20 20 20 20 63 20 2b 3d 20 61 2e 73 3b if(a.t.<.this.t).{.....c.+=.a.s;
1fe0 0a 20 20 20 20 77 68 69 6c 65 28 69 20 3c 20 74 68 69 73 2e 74 29 20 7b 0a 20 20 20 20 20 20 63 .....while(i.<.this.t).{.......c
2000 20 2b 3d 20 74 68 69 73 5b 69 5d 3b 0a 20 20 20 20 20 20 72 5b 69 2b 2b 5d 20 3d 20 63 26 74 68 .+=.this[i];.......r[i++].=.c&th
2020 69 73 2e 44 4d 3b 0a 20 20 20 20 20 20 63 20 3e 3e 3d 20 74 68 69 73 2e 44 42 3b 0a 20 20 20 20 is.DM;.......c.>>=.this.DB;.....
2040 7d 0a 20 20 20 20 63 20 2b 3d 20 74 68 69 73 2e 73 3b 0a 20 20 7d 0a 20 20 65 6c 73 65 20 7b 0a }.....c.+=.this.s;...}...else.{.
2060 20 20 20 20 63 20 2b 3d 20 74 68 69 73 2e 73 3b 0a 20 20 20 20 77 68 69 6c 65 28 69 20 3c 20 61 ....c.+=.this.s;.....while(i.<.a
2080 2e 74 29 20 7b 0a 20 20 20 20 20 20 63 20 2b 3d 20 61 5b 69 5d 3b 0a 20 20 20 20 20 20 72 5b 69 .t).{.......c.+=.a[i];.......r[i
20a0 2b 2b 5d 20 3d 20 63 26 74 68 69 73 2e 44 4d 3b 0a 20 20 20 20 20 20 63 20 3e 3e 3d 20 74 68 69 ++].=.c&this.DM;.......c.>>=.thi
20c0 73 2e 44 42 3b 0a 20 20 20 20 7d 0a 20 20 20 20 63 20 2b 3d 20 61 2e 73 3b 0a 20 20 7d 0a 20 20 s.DB;.....}.....c.+=.a.s;...}...
20e0 72 2e 73 20 3d 20 28 63 3c 30 29 3f 2d 31 3a 30 3b 0a 20 20 69 66 28 63 20 3e 20 30 29 20 72 5b r.s.=.(c<0)?-1:0;...if(c.>.0).r[
2100 69 2b 2b 5d 20 3d 20 63 3b 0a 20 20 65 6c 73 65 20 69 66 28 63 20 3c 20 2d 31 29 20 72 5b 69 2b i++].=.c;...else.if(c.<.-1).r[i+
2120 2b 5d 20 3d 20 74 68 69 73 2e 44 56 2b 63 3b 0a 20 20 72 2e 74 20 3d 20 69 3b 0a 20 20 72 2e 63 +].=.this.DV+c;...r.t.=.i;...r.c
2140 6c 61 6d 70 28 29 3b 0a 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 2b 20 61 0a lamp();.}..//.(public).this.+.a.
2160 66 75 6e 63 74 69 6f 6e 20 62 6e 41 64 64 28 61 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 function.bnAdd(a).{.var.r.=.nbi(
2180 29 3b 20 74 68 69 73 2e 61 64 64 54 6f 28 61 2c 72 29 3b 20 72 65 74 75 72 6e 20 72 3b 20 7d 0a );.this.addTo(a,r);.return.r;.}.
21a0 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 2d 20 61 0a 66 75 6e 63 74 69 6f 6e 20 62 .//.(public).this.-.a.function.b
21c0 6e 53 75 62 74 72 61 63 74 28 61 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 20 74 68 nSubtract(a).{.var.r.=.nbi();.th
21e0 69 73 2e 73 75 62 54 6f 28 61 2c 72 29 3b 20 72 65 74 75 72 6e 20 72 3b 20 7d 0a 0a 2f 2f 20 28 is.subTo(a,r);.return.r;.}..//.(
2200 70 75 62 6c 69 63 29 20 74 68 69 73 20 2a 20 61 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 4d 75 6c 74 public).this.*.a.function.bnMult
2220 69 70 6c 79 28 61 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 20 74 68 69 73 2e 6d 75 iply(a).{.var.r.=.nbi();.this.mu
2240 6c 74 69 70 6c 79 54 6f 28 61 2c 72 29 3b 20 72 65 74 75 72 6e 20 72 3b 20 7d 0a 0a 2f 2f 20 28 ltiplyTo(a,r);.return.r;.}..//.(
2260 70 75 62 6c 69 63 29 20 74 68 69 73 20 2f 20 61 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 44 69 76 69 public).this./.a.function.bnDivi
2280 64 65 28 61 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 20 74 68 69 73 2e 64 69 76 52 de(a).{.var.r.=.nbi();.this.divR
22a0 65 6d 54 6f 28 61 2c 72 2c 6e 75 6c 6c 29 3b 20 72 65 74 75 72 6e 20 72 3b 20 7d 0a 0a 2f 2f 20 emTo(a,r,null);.return.r;.}..//.
22c0 28 70 75 62 6c 69 63 29 20 74 68 69 73 20 25 20 61 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 52 65 6d (public).this.%.a.function.bnRem
22e0 61 69 6e 64 65 72 28 61 29 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 20 74 68 69 73 2e ainder(a).{.var.r.=.nbi();.this.
2300 64 69 76 52 65 6d 54 6f 28 61 2c 6e 75 6c 6c 2c 72 29 3b 20 72 65 74 75 72 6e 20 72 3b 20 7d 0a divRemTo(a,null,r);.return.r;.}.
2320 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 5b 74 68 69 73 2f 61 2c 74 68 69 73 25 61 5d 0a 66 75 6e .//.(public).[this/a,this%a].fun
2340 63 74 69 6f 6e 20 62 6e 44 69 76 69 64 65 41 6e 64 52 65 6d 61 69 6e 64 65 72 28 61 29 20 7b 0a ction.bnDivideAndRemainder(a).{.
2360 20 20 76 61 72 20 71 20 3d 20 6e 62 69 28 29 2c 20 72 20 3d 20 6e 62 69 28 29 3b 0a 20 20 74 68 ..var.q.=.nbi(),.r.=.nbi();...th
2380 69 73 2e 64 69 76 52 65 6d 54 6f 28 61 2c 71 2c 72 29 3b 0a 20 20 72 65 74 75 72 6e 20 6e 65 77 is.divRemTo(a,q,r);...return.new
23a0 20 41 72 72 61 79 28 71 2c 72 29 3b 0a 7d 0a 0a 2f 2f 20 28 70 72 6f 74 65 63 74 65 64 29 20 74 .Array(q,r);.}..//.(protected).t
23c0 68 69 73 20 2a 3d 20 6e 2c 20 74 68 69 73 20 3e 3d 20 30 2c 20 31 20 3c 20 6e 20 3c 20 44 56 0a his.*=.n,.this.>=.0,.1.<.n.<.DV.
23e0 66 75 6e 63 74 69 6f 6e 20 62 6e 70 44 4d 75 6c 74 69 70 6c 79 28 6e 29 20 7b 0a 20 20 74 68 69 function.bnpDMultiply(n).{...thi
2400 73 5b 74 68 69 73 2e 74 5d 20 3d 20 74 68 69 73 2e 61 6d 28 30 2c 6e 2d 31 2c 74 68 69 73 2c 30 s[this.t].=.this.am(0,n-1,this,0
2420 2c 30 2c 74 68 69 73 2e 74 29 3b 0a 20 20 2b 2b 74 68 69 73 2e 74 3b 0a 20 20 74 68 69 73 2e 63 ,0,this.t);...++this.t;...this.c
2440 6c 61 6d 70 28 29 3b 0a 7d 0a 0a 2f 2f 20 28 70 72 6f 74 65 63 74 65 64 29 20 74 68 69 73 20 2b lamp();.}..//.(protected).this.+
2460 3d 20 6e 20 3c 3c 20 77 20 77 6f 72 64 73 2c 20 74 68 69 73 20 3e 3d 20 30 0a 66 75 6e 63 74 69 =.n.<<.w.words,.this.>=.0.functi
2480 6f 6e 20 62 6e 70 44 41 64 64 4f 66 66 73 65 74 28 6e 2c 77 29 20 7b 0a 20 20 77 68 69 6c 65 28 on.bnpDAddOffset(n,w).{...while(
24a0 74 68 69 73 2e 74 20 3c 3d 20 77 29 20 74 68 69 73 5b 74 68 69 73 2e 74 2b 2b 5d 20 3d 20 30 3b this.t.<=.w).this[this.t++].=.0;
24c0 0a 20 20 74 68 69 73 5b 77 5d 20 2b 3d 20 6e 3b 0a 20 20 77 68 69 6c 65 28 74 68 69 73 5b 77 5d ...this[w].+=.n;...while(this[w]
24e0 20 3e 3d 20 74 68 69 73 2e 44 56 29 20 7b 0a 20 20 20 20 74 68 69 73 5b 77 5d 20 2d 3d 20 74 68 .>=.this.DV).{.....this[w].-=.th
2500 69 73 2e 44 56 3b 0a 20 20 20 20 69 66 28 2b 2b 77 20 3e 3d 20 74 68 69 73 2e 74 29 20 74 68 69 is.DV;.....if(++w.>=.this.t).thi
2520 73 5b 74 68 69 73 2e 74 2b 2b 5d 20 3d 20 30 3b 0a 20 20 20 20 2b 2b 74 68 69 73 5b 77 5d 3b 0a s[this.t++].=.0;.....++this[w];.
2540 20 20 7d 0a 7d 0a 0a 2f 2f 20 41 20 22 6e 75 6c 6c 22 20 72 65 64 75 63 65 72 0a 66 75 6e 63 74 ..}.}..//.A."null".reducer.funct
2560 69 6f 6e 20 4e 75 6c 6c 45 78 70 28 29 20 7b 7d 0a 66 75 6e 63 74 69 6f 6e 20 6e 4e 6f 70 28 78 ion.NullExp().{}.function.nNop(x
2580 29 20 7b 20 72 65 74 75 72 6e 20 78 3b 20 7d 0a 66 75 6e 63 74 69 6f 6e 20 6e 4d 75 6c 54 6f 28 ).{.return.x;.}.function.nMulTo(
25a0 78 2c 79 2c 72 29 20 7b 20 78 2e 6d 75 6c 74 69 70 6c 79 54 6f 28 79 2c 72 29 3b 20 7d 0a 66 75 x,y,r).{.x.multiplyTo(y,r);.}.fu
25c0 6e 63 74 69 6f 6e 20 6e 53 71 72 54 6f 28 78 2c 72 29 20 7b 20 78 2e 73 71 75 61 72 65 54 6f 28 nction.nSqrTo(x,r).{.x.squareTo(
25e0 72 29 3b 20 7d 0a 0a 4e 75 6c 6c 45 78 70 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6f 6e 76 65 72 74 r);.}..NullExp.prototype.convert
2600 20 3d 20 6e 4e 6f 70 3b 0a 4e 75 6c 6c 45 78 70 2e 70 72 6f 74 6f 74 79 70 65 2e 72 65 76 65 72 .=.nNop;.NullExp.prototype.rever
2620 74 20 3d 20 6e 4e 6f 70 3b 0a 4e 75 6c 6c 45 78 70 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 75 6c 54 t.=.nNop;.NullExp.prototype.mulT
2640 6f 20 3d 20 6e 4d 75 6c 54 6f 3b 0a 4e 75 6c 6c 45 78 70 2e 70 72 6f 74 6f 74 79 70 65 2e 73 71 o.=.nMulTo;.NullExp.prototype.sq
2660 72 54 6f 20 3d 20 6e 53 71 72 54 6f 3b 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 5e rTo.=.nSqrTo;..//.(public).this^
2680 65 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 50 6f 77 28 65 29 20 7b 20 72 65 74 75 72 6e 20 74 68 69 e.function.bnPow(e).{.return.thi
26a0 73 2e 65 78 70 28 65 2c 6e 65 77 20 4e 75 6c 6c 45 78 70 28 29 29 3b 20 7d 0a 0a 2f 2f 20 28 70 s.exp(e,new.NullExp());.}..//.(p
26c0 72 6f 74 65 63 74 65 64 29 20 72 20 3d 20 6c 6f 77 65 72 20 6e 20 77 6f 72 64 73 20 6f 66 20 22 rotected).r.=.lower.n.words.of."
26e0 74 68 69 73 20 2a 20 61 22 2c 20 61 2e 74 20 3c 3d 20 6e 0a 2f 2f 20 22 74 68 69 73 22 20 73 68 this.*.a",.a.t.<=.n.//."this".sh
2700 6f 75 6c 64 20 62 65 20 74 68 65 20 6c 61 72 67 65 72 20 6f 6e 65 20 69 66 20 61 70 70 72 6f 70 ould.be.the.larger.one.if.approp
2720 72 69 61 74 65 2e 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 70 4d 75 6c 74 69 70 6c 79 4c 6f 77 65 72 riate..function.bnpMultiplyLower
2740 54 6f 28 61 2c 6e 2c 72 29 20 7b 0a 20 20 76 61 72 20 69 20 3d 20 4d 61 74 68 2e 6d 69 6e 28 74 To(a,n,r).{...var.i.=.Math.min(t
2760 68 69 73 2e 74 2b 61 2e 74 2c 6e 29 3b 0a 20 20 72 2e 73 20 3d 20 30 3b 20 2f 2f 20 61 73 73 75 his.t+a.t,n);...r.s.=.0;.//.assu
2780 6d 65 73 20 61 2c 74 68 69 73 20 3e 3d 20 30 0a 20 20 72 2e 74 20 3d 20 69 3b 0a 20 20 77 68 69 mes.a,this.>=.0...r.t.=.i;...whi
27a0 6c 65 28 69 20 3e 20 30 29 20 72 5b 2d 2d 69 5d 20 3d 20 30 3b 0a 20 20 76 61 72 20 6a 3b 0a 20 le(i.>.0).r[--i].=.0;...var.j;..
27c0 20 66 6f 72 28 6a 20 3d 20 72 2e 74 2d 74 68 69 73 2e 74 3b 20 69 20 3c 20 6a 3b 20 2b 2b 69 29 .for(j.=.r.t-this.t;.i.<.j;.++i)
27e0 20 72 5b 69 2b 74 68 69 73 2e 74 5d 20 3d 20 74 68 69 73 2e 61 6d 28 30 2c 61 5b 69 5d 2c 72 2c .r[i+this.t].=.this.am(0,a[i],r,
2800 69 2c 30 2c 74 68 69 73 2e 74 29 3b 0a 20 20 66 6f 72 28 6a 20 3d 20 4d 61 74 68 2e 6d 69 6e 28 i,0,this.t);...for(j.=.Math.min(
2820 61 2e 74 2c 6e 29 3b 20 69 20 3c 20 6a 3b 20 2b 2b 69 29 20 74 68 69 73 2e 61 6d 28 30 2c 61 5b a.t,n);.i.<.j;.++i).this.am(0,a[
2840 69 5d 2c 72 2c 69 2c 30 2c 6e 2d 69 29 3b 0a 20 20 72 2e 63 6c 61 6d 70 28 29 3b 0a 7d 0a 0a 2f i],r,i,0,n-i);...r.clamp();.}../
2860 2f 20 28 70 72 6f 74 65 63 74 65 64 29 20 72 20 3d 20 22 74 68 69 73 20 2a 20 61 22 20 77 69 74 /.(protected).r.=."this.*.a".wit
2880 68 6f 75 74 20 6c 6f 77 65 72 20 6e 20 77 6f 72 64 73 2c 20 6e 20 3e 20 30 0a 2f 2f 20 22 74 68 hout.lower.n.words,.n.>.0.//."th
28a0 69 73 22 20 73 68 6f 75 6c 64 20 62 65 20 74 68 65 20 6c 61 72 67 65 72 20 6f 6e 65 20 69 66 20 is".should.be.the.larger.one.if.
28c0 61 70 70 72 6f 70 72 69 61 74 65 2e 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 70 4d 75 6c 74 69 70 6c appropriate..function.bnpMultipl
28e0 79 55 70 70 65 72 54 6f 28 61 2c 6e 2c 72 29 20 7b 0a 20 20 2d 2d 6e 3b 0a 20 20 76 61 72 20 69 yUpperTo(a,n,r).{...--n;...var.i
2900 20 3d 20 72 2e 74 20 3d 20 74 68 69 73 2e 74 2b 61 2e 74 2d 6e 3b 0a 20 20 72 2e 73 20 3d 20 30 .=.r.t.=.this.t+a.t-n;...r.s.=.0
2920 3b 20 2f 2f 20 61 73 73 75 6d 65 73 20 61 2c 74 68 69 73 20 3e 3d 20 30 0a 20 20 77 68 69 6c 65 ;.//.assumes.a,this.>=.0...while
2940 28 2d 2d 69 20 3e 3d 20 30 29 20 72 5b 69 5d 20 3d 20 30 3b 0a 20 20 66 6f 72 28 69 20 3d 20 4d (--i.>=.0).r[i].=.0;...for(i.=.M
2960 61 74 68 2e 6d 61 78 28 6e 2d 74 68 69 73 2e 74 2c 30 29 3b 20 69 20 3c 20 61 2e 74 3b 20 2b 2b ath.max(n-this.t,0);.i.<.a.t;.++
2980 69 29 0a 20 20 20 20 72 5b 74 68 69 73 2e 74 2b 69 2d 6e 5d 20 3d 20 74 68 69 73 2e 61 6d 28 6e i).....r[this.t+i-n].=.this.am(n
29a0 2d 69 2c 61 5b 69 5d 2c 72 2c 30 2c 30 2c 74 68 69 73 2e 74 2b 69 2d 6e 29 3b 0a 20 20 72 2e 63 -i,a[i],r,0,0,this.t+i-n);...r.c
29c0 6c 61 6d 70 28 29 3b 0a 20 20 72 2e 64 72 53 68 69 66 74 54 6f 28 31 2c 72 29 3b 0a 7d 0a 0a 2f lamp();...r.drShiftTo(1,r);.}../
29e0 2f 20 42 61 72 72 65 74 74 20 6d 6f 64 75 6c 61 72 20 72 65 64 75 63 74 69 6f 6e 0a 66 75 6e 63 /.Barrett.modular.reduction.func
2a00 74 69 6f 6e 20 42 61 72 72 65 74 74 28 6d 29 20 7b 0a 20 20 2f 2f 20 73 65 74 75 70 20 42 61 72 tion.Barrett(m).{...//.setup.Bar
2a20 72 65 74 74 0a 20 20 74 68 69 73 2e 72 32 20 3d 20 6e 62 69 28 29 3b 0a 20 20 74 68 69 73 2e 71 rett...this.r2.=.nbi();...this.q
2a40 33 20 3d 20 6e 62 69 28 29 3b 0a 20 20 42 69 67 49 6e 74 65 67 65 72 2e 4f 4e 45 2e 64 6c 53 68 3.=.nbi();...BigInteger.ONE.dlSh
2a60 69 66 74 54 6f 28 32 2a 6d 2e 74 2c 74 68 69 73 2e 72 32 29 3b 0a 20 20 74 68 69 73 2e 6d 75 20 iftTo(2*m.t,this.r2);...this.mu.
2a80 3d 20 74 68 69 73 2e 72 32 2e 64 69 76 69 64 65 28 6d 29 3b 0a 20 20 74 68 69 73 2e 6d 20 3d 20 =.this.r2.divide(m);...this.m.=.
2aa0 6d 3b 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 62 61 72 72 65 74 74 43 6f 6e 76 65 72 74 28 78 29 m;.}..function.barrettConvert(x)
2ac0 20 7b 0a 20 20 69 66 28 78 2e 73 20 3c 20 30 20 7c 7c 20 78 2e 74 20 3e 20 32 2a 74 68 69 73 2e .{...if(x.s.<.0.||.x.t.>.2*this.
2ae0 6d 2e 74 29 20 72 65 74 75 72 6e 20 78 2e 6d 6f 64 28 74 68 69 73 2e 6d 29 3b 0a 20 20 65 6c 73 m.t).return.x.mod(this.m);...els
2b00 65 20 69 66 28 78 2e 63 6f 6d 70 61 72 65 54 6f 28 74 68 69 73 2e 6d 29 20 3c 20 30 29 20 72 65 e.if(x.compareTo(this.m).<.0).re
2b20 74 75 72 6e 20 78 3b 0a 20 20 65 6c 73 65 20 7b 20 76 61 72 20 72 20 3d 20 6e 62 69 28 29 3b 20 turn.x;...else.{.var.r.=.nbi();.
2b40 78 2e 63 6f 70 79 54 6f 28 72 29 3b 20 74 68 69 73 2e 72 65 64 75 63 65 28 72 29 3b 20 72 65 74 x.copyTo(r);.this.reduce(r);.ret
2b60 75 72 6e 20 72 3b 20 7d 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 62 61 72 72 65 74 74 52 65 76 65 urn.r;.}.}..function.barrettReve
2b80 72 74 28 78 29 20 7b 20 72 65 74 75 72 6e 20 78 3b 20 7d 0a 0a 2f 2f 20 78 20 3d 20 78 20 6d 6f rt(x).{.return.x;.}..//.x.=.x.mo
2ba0 64 20 6d 20 28 48 41 43 20 31 34 2e 34 32 29 0a 66 75 6e 63 74 69 6f 6e 20 62 61 72 72 65 74 74 d.m.(HAC.14.42).function.barrett
2bc0 52 65 64 75 63 65 28 78 29 20 7b 0a 20 20 78 2e 64 72 53 68 69 66 74 54 6f 28 74 68 69 73 2e 6d Reduce(x).{...x.drShiftTo(this.m
2be0 2e 74 2d 31 2c 74 68 69 73 2e 72 32 29 3b 0a 20 20 69 66 28 78 2e 74 20 3e 20 74 68 69 73 2e 6d .t-1,this.r2);...if(x.t.>.this.m
2c00 2e 74 2b 31 29 20 7b 20 78 2e 74 20 3d 20 74 68 69 73 2e 6d 2e 74 2b 31 3b 20 78 2e 63 6c 61 6d .t+1).{.x.t.=.this.m.t+1;.x.clam
2c20 70 28 29 3b 20 7d 0a 20 20 74 68 69 73 2e 6d 75 2e 6d 75 6c 74 69 70 6c 79 55 70 70 65 72 54 6f p();.}...this.mu.multiplyUpperTo
2c40 28 74 68 69 73 2e 72 32 2c 74 68 69 73 2e 6d 2e 74 2b 31 2c 74 68 69 73 2e 71 33 29 3b 0a 20 20 (this.r2,this.m.t+1,this.q3);...
2c60 74 68 69 73 2e 6d 2e 6d 75 6c 74 69 70 6c 79 4c 6f 77 65 72 54 6f 28 74 68 69 73 2e 71 33 2c 74 this.m.multiplyLowerTo(this.q3,t
2c80 68 69 73 2e 6d 2e 74 2b 31 2c 74 68 69 73 2e 72 32 29 3b 0a 20 20 77 68 69 6c 65 28 78 2e 63 6f his.m.t+1,this.r2);...while(x.co
2ca0 6d 70 61 72 65 54 6f 28 74 68 69 73 2e 72 32 29 20 3c 20 30 29 20 78 2e 64 41 64 64 4f 66 66 73 mpareTo(this.r2).<.0).x.dAddOffs
2cc0 65 74 28 31 2c 74 68 69 73 2e 6d 2e 74 2b 31 29 3b 0a 20 20 78 2e 73 75 62 54 6f 28 74 68 69 73 et(1,this.m.t+1);...x.subTo(this
2ce0 2e 72 32 2c 78 29 3b 0a 20 20 77 68 69 6c 65 28 78 2e 63 6f 6d 70 61 72 65 54 6f 28 74 68 69 73 .r2,x);...while(x.compareTo(this
2d00 2e 6d 29 20 3e 3d 20 30 29 20 78 2e 73 75 62 54 6f 28 74 68 69 73 2e 6d 2c 78 29 3b 0a 7d 0a 0a .m).>=.0).x.subTo(this.m,x);.}..
2d20 2f 2f 20 72 20 3d 20 78 5e 32 20 6d 6f 64 20 6d 3b 20 78 20 21 3d 20 72 0a 66 75 6e 63 74 69 6f //.r.=.x^2.mod.m;.x.!=.r.functio
2d40 6e 20 62 61 72 72 65 74 74 53 71 72 54 6f 28 78 2c 72 29 20 7b 20 78 2e 73 71 75 61 72 65 54 6f n.barrettSqrTo(x,r).{.x.squareTo
2d60 28 72 29 3b 20 74 68 69 73 2e 72 65 64 75 63 65 28 72 29 3b 20 7d 0a 0a 2f 2f 20 72 20 3d 20 78 (r);.this.reduce(r);.}..//.r.=.x
2d80 2a 79 20 6d 6f 64 20 6d 3b 20 78 2c 79 20 21 3d 20 72 0a 66 75 6e 63 74 69 6f 6e 20 62 61 72 72 *y.mod.m;.x,y.!=.r.function.barr
2da0 65 74 74 4d 75 6c 54 6f 28 78 2c 79 2c 72 29 20 7b 20 78 2e 6d 75 6c 74 69 70 6c 79 54 6f 28 79 ettMulTo(x,y,r).{.x.multiplyTo(y
2dc0 2c 72 29 3b 20 74 68 69 73 2e 72 65 64 75 63 65 28 72 29 3b 20 7d 0a 0a 42 61 72 72 65 74 74 2e ,r);.this.reduce(r);.}..Barrett.
2de0 70 72 6f 74 6f 74 79 70 65 2e 63 6f 6e 76 65 72 74 20 3d 20 62 61 72 72 65 74 74 43 6f 6e 76 65 prototype.convert.=.barrettConve
2e00 72 74 3b 0a 42 61 72 72 65 74 74 2e 70 72 6f 74 6f 74 79 70 65 2e 72 65 76 65 72 74 20 3d 20 62 rt;.Barrett.prototype.revert.=.b
2e20 61 72 72 65 74 74 52 65 76 65 72 74 3b 0a 42 61 72 72 65 74 74 2e 70 72 6f 74 6f 74 79 70 65 2e arrettRevert;.Barrett.prototype.
2e40 72 65 64 75 63 65 20 3d 20 62 61 72 72 65 74 74 52 65 64 75 63 65 3b 0a 42 61 72 72 65 74 74 2e reduce.=.barrettReduce;.Barrett.
2e60 70 72 6f 74 6f 74 79 70 65 2e 6d 75 6c 54 6f 20 3d 20 62 61 72 72 65 74 74 4d 75 6c 54 6f 3b 0a prototype.mulTo.=.barrettMulTo;.
2e80 42 61 72 72 65 74 74 2e 70 72 6f 74 6f 74 79 70 65 2e 73 71 72 54 6f 20 3d 20 62 61 72 72 65 74 Barrett.prototype.sqrTo.=.barret
2ea0 74 53 71 72 54 6f 3b 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 68 69 73 5e 65 20 25 20 6d 20 tSqrTo;..//.(public).this^e.%.m.
2ec0 28 48 41 43 20 31 34 2e 38 35 29 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 4d 6f 64 50 6f 77 28 65 2c (HAC.14.85).function.bnModPow(e,
2ee0 6d 29 20 7b 0a 20 20 76 61 72 20 69 20 3d 20 65 2e 62 69 74 4c 65 6e 67 74 68 28 29 2c 20 6b 2c m).{...var.i.=.e.bitLength(),.k,
2f00 20 72 20 3d 20 6e 62 76 28 31 29 2c 20 7a 3b 0a 20 20 69 66 28 69 20 3c 3d 20 30 29 20 72 65 74 .r.=.nbv(1),.z;...if(i.<=.0).ret
2f20 75 72 6e 20 72 3b 0a 20 20 65 6c 73 65 20 69 66 28 69 20 3c 20 31 38 29 20 6b 20 3d 20 31 3b 0a urn.r;...else.if(i.<.18).k.=.1;.
2f40 20 20 65 6c 73 65 20 69 66 28 69 20 3c 20 34 38 29 20 6b 20 3d 20 33 3b 0a 20 20 65 6c 73 65 20 ..else.if(i.<.48).k.=.3;...else.
2f60 69 66 28 69 20 3c 20 31 34 34 29 20 6b 20 3d 20 34 3b 0a 20 20 65 6c 73 65 20 69 66 28 69 20 3c if(i.<.144).k.=.4;...else.if(i.<
2f80 20 37 36 38 29 20 6b 20 3d 20 35 3b 0a 20 20 65 6c 73 65 20 6b 20 3d 20 36 3b 0a 20 20 69 66 28 .768).k.=.5;...else.k.=.6;...if(
2fa0 69 20 3c 20 38 29 0a 20 20 20 20 7a 20 3d 20 6e 65 77 20 43 6c 61 73 73 69 63 28 6d 29 3b 0a 20 i.<.8).....z.=.new.Classic(m);..
2fc0 20 65 6c 73 65 20 69 66 28 6d 2e 69 73 45 76 65 6e 28 29 29 0a 20 20 20 20 7a 20 3d 20 6e 65 77 .else.if(m.isEven()).....z.=.new
2fe0 20 42 61 72 72 65 74 74 28 6d 29 3b 0a 20 20 65 6c 73 65 0a 20 20 20 20 7a 20 3d 20 6e 65 77 20 .Barrett(m);...else.....z.=.new.
3000 4d 6f 6e 74 67 6f 6d 65 72 79 28 6d 29 3b 0a 0a 20 20 2f 2f 20 70 72 65 63 6f 6d 70 75 74 61 74 Montgomery(m);....//.precomputat
3020 69 6f 6e 0a 20 20 76 61 72 20 67 20 3d 20 6e 65 77 20 41 72 72 61 79 28 29 2c 20 6e 20 3d 20 33 ion...var.g.=.new.Array(),.n.=.3
3040 2c 20 6b 31 20 3d 20 6b 2d 31 2c 20 6b 6d 20 3d 20 28 31 3c 3c 6b 29 2d 31 3b 0a 20 20 67 5b 31 ,.k1.=.k-1,.km.=.(1<<k)-1;...g[1
3060 5d 20 3d 20 7a 2e 63 6f 6e 76 65 72 74 28 74 68 69 73 29 3b 0a 20 20 69 66 28 6b 20 3e 20 31 29 ].=.z.convert(this);...if(k.>.1)
3080 20 7b 0a 20 20 20 20 76 61 72 20 67 32 20 3d 20 6e 62 69 28 29 3b 0a 20 20 20 20 7a 2e 73 71 72 .{.....var.g2.=.nbi();.....z.sqr
30a0 54 6f 28 67 5b 31 5d 2c 67 32 29 3b 0a 20 20 20 20 77 68 69 6c 65 28 6e 20 3c 3d 20 6b 6d 29 20 To(g[1],g2);.....while(n.<=.km).
30c0 7b 0a 20 20 20 20 20 20 67 5b 6e 5d 20 3d 20 6e 62 69 28 29 3b 0a 20 20 20 20 20 20 7a 2e 6d 75 {.......g[n].=.nbi();.......z.mu
30e0 6c 54 6f 28 67 32 2c 67 5b 6e 2d 32 5d 2c 67 5b 6e 5d 29 3b 0a 20 20 20 20 20 20 6e 20 2b 3d 20 lTo(g2,g[n-2],g[n]);.......n.+=.
3100 32 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a 20 20 76 61 72 20 6a 20 3d 20 65 2e 74 2d 31 2c 20 77 2;.....}...}....var.j.=.e.t-1,.w
3120 2c 20 69 73 31 20 3d 20 74 72 75 65 2c 20 72 32 20 3d 20 6e 62 69 28 29 2c 20 74 3b 0a 20 20 69 ,.is1.=.true,.r2.=.nbi(),.t;...i
3140 20 3d 20 6e 62 69 74 73 28 65 5b 6a 5d 29 2d 31 3b 0a 20 20 77 68 69 6c 65 28 6a 20 3e 3d 20 30 .=.nbits(e[j])-1;...while(j.>=.0
3160 29 20 7b 0a 20 20 20 20 69 66 28 69 20 3e 3d 20 6b 31 29 20 77 20 3d 20 28 65 5b 6a 5d 3e 3e 28 ).{.....if(i.>=.k1).w.=.(e[j]>>(
3180 69 2d 6b 31 29 29 26 6b 6d 3b 0a 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 77 20 3d 20 i-k1))&km;.....else.{.......w.=.
31a0 28 65 5b 6a 5d 26 28 28 31 3c 3c 28 69 2b 31 29 29 2d 31 29 29 3c 3c 28 6b 31 2d 69 29 3b 0a 20 (e[j]&((1<<(i+1))-1))<<(k1-i);..
31c0 20 20 20 20 20 69 66 28 6a 20 3e 20 30 29 20 77 20 7c 3d 20 65 5b 6a 2d 31 5d 3e 3e 28 74 68 69 .....if(j.>.0).w.|=.e[j-1]>>(thi
31e0 73 2e 44 42 2b 69 2d 6b 31 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6e 20 3d 20 6b 3b 0a 20 20 s.DB+i-k1);.....}......n.=.k;...
3200 20 20 77 68 69 6c 65 28 28 77 26 31 29 20 3d 3d 20 30 29 20 7b 20 77 20 3e 3e 3d 20 31 3b 20 2d ..while((w&1).==.0).{.w.>>=.1;.-
3220 2d 6e 3b 20 7d 0a 20 20 20 20 69 66 28 28 69 20 2d 3d 20 6e 29 20 3c 20 30 29 20 7b 20 69 20 2b -n;.}.....if((i.-=.n).<.0).{.i.+
3240 3d 20 74 68 69 73 2e 44 42 3b 20 2d 2d 6a 3b 20 7d 0a 20 20 20 20 69 66 28 69 73 31 29 20 7b 09 =.this.DB;.--j;.}.....if(is1).{.
3260 2f 2f 20 72 65 74 20 3d 3d 20 31 2c 20 64 6f 6e 27 74 20 62 6f 74 68 65 72 20 73 71 75 61 72 69 //.ret.==.1,.don't.bother.squari
3280 6e 67 20 6f 72 20 6d 75 6c 74 69 70 6c 79 69 6e 67 20 69 74 0a 20 20 20 20 20 20 67 5b 77 5d 2e ng.or.multiplying.it.......g[w].
32a0 63 6f 70 79 54 6f 28 72 29 3b 0a 20 20 20 20 20 20 69 73 31 20 3d 20 66 61 6c 73 65 3b 0a 20 20 copyTo(r);.......is1.=.false;...
32c0 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 77 68 69 6c 65 28 6e 20 3e 20 31 ..}.....else.{.......while(n.>.1
32e0 29 20 7b 20 7a 2e 73 71 72 54 6f 28 72 2c 72 32 29 3b 20 7a 2e 73 71 72 54 6f 28 72 32 2c 72 29 ).{.z.sqrTo(r,r2);.z.sqrTo(r2,r)
3300 3b 20 6e 20 2d 3d 20 32 3b 20 7d 0a 20 20 20 20 20 20 69 66 28 6e 20 3e 20 30 29 20 7a 2e 73 71 ;.n.-=.2;.}.......if(n.>.0).z.sq
3320 72 54 6f 28 72 2c 72 32 29 3b 20 65 6c 73 65 20 7b 20 74 20 3d 20 72 3b 20 72 20 3d 20 72 32 3b rTo(r,r2);.else.{.t.=.r;.r.=.r2;
3340 20 72 32 20 3d 20 74 3b 20 7d 0a 20 20 20 20 20 20 7a 2e 6d 75 6c 54 6f 28 72 32 2c 67 5b 77 5d .r2.=.t;.}.......z.mulTo(r2,g[w]
3360 2c 72 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 77 68 69 6c 65 28 6a 20 3e 3d 20 30 20 26 26 20 ,r);.....}......while(j.>=.0.&&.
3380 28 65 5b 6a 5d 26 28 31 3c 3c 69 29 29 20 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 7a 2e 73 71 (e[j]&(1<<i)).==.0).{.......z.sq
33a0 72 54 6f 28 72 2c 72 32 29 3b 20 74 20 3d 20 72 3b 20 72 20 3d 20 72 32 3b 20 72 32 20 3d 20 74 rTo(r,r2);.t.=.r;.r.=.r2;.r2.=.t
33c0 3b 0a 20 20 20 20 20 20 69 66 28 2d 2d 69 20 3c 20 30 29 20 7b 20 69 20 3d 20 74 68 69 73 2e 44 ;.......if(--i.<.0).{.i.=.this.D
33e0 42 2d 31 3b 20 2d 2d 6a 3b 20 7d 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 7a B-1;.--j;.}.....}...}...return.z
3400 2e 72 65 76 65 72 74 28 72 29 3b 0a 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 67 63 64 28 74 .revert(r);.}..//.(public).gcd(t
3420 68 69 73 2c 61 29 20 28 48 41 43 20 31 34 2e 35 34 29 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 47 43 his,a).(HAC.14.54).function.bnGC
3440 44 28 61 29 20 7b 0a 20 20 76 61 72 20 78 20 3d 20 28 74 68 69 73 2e 73 3c 30 29 3f 74 68 69 73 D(a).{...var.x.=.(this.s<0)?this
3460 2e 6e 65 67 61 74 65 28 29 3a 74 68 69 73 2e 63 6c 6f 6e 65 28 29 3b 0a 20 20 76 61 72 20 79 20 .negate():this.clone();...var.y.
3480 3d 20 28 61 2e 73 3c 30 29 3f 61 2e 6e 65 67 61 74 65 28 29 3a 61 2e 63 6c 6f 6e 65 28 29 3b 0a =.(a.s<0)?a.negate():a.clone();.
34a0 20 20 69 66 28 78 2e 63 6f 6d 70 61 72 65 54 6f 28 79 29 20 3c 20 30 29 20 7b 20 76 61 72 20 74 ..if(x.compareTo(y).<.0).{.var.t
34c0 20 3d 20 78 3b 20 78 20 3d 20 79 3b 20 79 20 3d 20 74 3b 20 7d 0a 20 20 76 61 72 20 69 20 3d 20 .=.x;.x.=.y;.y.=.t;.}...var.i.=.
34e0 78 2e 67 65 74 4c 6f 77 65 73 74 53 65 74 42 69 74 28 29 2c 20 67 20 3d 20 79 2e 67 65 74 4c 6f x.getLowestSetBit(),.g.=.y.getLo
3500 77 65 73 74 53 65 74 42 69 74 28 29 3b 0a 20 20 69 66 28 67 20 3c 20 30 29 20 72 65 74 75 72 6e westSetBit();...if(g.<.0).return
3520 20 78 3b 0a 20 20 69 66 28 69 20 3c 20 67 29 20 67 20 3d 20 69 3b 0a 20 20 69 66 28 67 20 3e 20 .x;...if(i.<.g).g.=.i;...if(g.>.
3540 30 29 20 7b 0a 20 20 20 20 78 2e 72 53 68 69 66 74 54 6f 28 67 2c 78 29 3b 0a 20 20 20 20 79 2e 0).{.....x.rShiftTo(g,x);.....y.
3560 72 53 68 69 66 74 54 6f 28 67 2c 79 29 3b 0a 20 20 7d 0a 20 20 77 68 69 6c 65 28 78 2e 73 69 67 rShiftTo(g,y);...}...while(x.sig
3580 6e 75 6d 28 29 20 3e 20 30 29 20 7b 0a 20 20 20 20 69 66 28 28 69 20 3d 20 78 2e 67 65 74 4c 6f num().>.0).{.....if((i.=.x.getLo
35a0 77 65 73 74 53 65 74 42 69 74 28 29 29 20 3e 20 30 29 20 78 2e 72 53 68 69 66 74 54 6f 28 69 2c westSetBit()).>.0).x.rShiftTo(i,
35c0 78 29 3b 0a 20 20 20 20 69 66 28 28 69 20 3d 20 79 2e 67 65 74 4c 6f 77 65 73 74 53 65 74 42 69 x);.....if((i.=.y.getLowestSetBi
35e0 74 28 29 29 20 3e 20 30 29 20 79 2e 72 53 68 69 66 74 54 6f 28 69 2c 79 29 3b 0a 20 20 20 20 69 t()).>.0).y.rShiftTo(i,y);.....i
3600 66 28 78 2e 63 6f 6d 70 61 72 65 54 6f 28 79 29 20 3e 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 78 f(x.compareTo(y).>=.0).{.......x
3620 2e 73 75 62 54 6f 28 79 2c 78 29 3b 0a 20 20 20 20 20 20 78 2e 72 53 68 69 66 74 54 6f 28 31 2c .subTo(y,x);.......x.rShiftTo(1,
3640 78 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 79 2e 73 75 62 x);.....}.....else.{.......y.sub
3660 54 6f 28 78 2c 79 29 3b 0a 20 20 20 20 20 20 79 2e 72 53 68 69 66 74 54 6f 28 31 2c 79 29 3b 0a To(x,y);.......y.rShiftTo(1,y);.
3680 20 20 20 20 7d 0a 20 20 7d 0a 20 20 69 66 28 67 20 3e 20 30 29 20 79 2e 6c 53 68 69 66 74 54 6f ....}...}...if(g.>.0).y.lShiftTo
36a0 28 67 2c 79 29 3b 0a 20 20 72 65 74 75 72 6e 20 79 3b 0a 7d 0a 0a 2f 2f 20 28 70 72 6f 74 65 63 (g,y);...return.y;.}..//.(protec
36c0 74 65 64 29 20 74 68 69 73 20 25 20 6e 2c 20 6e 20 3c 20 32 5e 32 36 0a 66 75 6e 63 74 69 6f 6e ted).this.%.n,.n.<.2^26.function
36e0 20 62 6e 70 4d 6f 64 49 6e 74 28 6e 29 20 7b 0a 20 20 69 66 28 6e 20 3c 3d 20 30 29 20 72 65 74 .bnpModInt(n).{...if(n.<=.0).ret
3700 75 72 6e 20 30 3b 0a 20 20 76 61 72 20 64 20 3d 20 74 68 69 73 2e 44 56 25 6e 2c 20 72 20 3d 20 urn.0;...var.d.=.this.DV%n,.r.=.
3720 28 74 68 69 73 2e 73 3c 30 29 3f 6e 2d 31 3a 30 3b 0a 20 20 69 66 28 74 68 69 73 2e 74 20 3e 20 (this.s<0)?n-1:0;...if(this.t.>.
3740 30 29 0a 20 20 20 20 69 66 28 64 20 3d 3d 20 30 29 20 72 20 3d 20 74 68 69 73 5b 30 5d 25 6e 3b 0).....if(d.==.0).r.=.this[0]%n;
3760 0a 20 20 20 20 65 6c 73 65 20 66 6f 72 28 76 61 72 20 69 20 3d 20 74 68 69 73 2e 74 2d 31 3b 20 .....else.for(var.i.=.this.t-1;.
3780 69 20 3e 3d 20 30 3b 20 2d 2d 69 29 20 72 20 3d 20 28 64 2a 72 2b 74 68 69 73 5b 69 5d 29 25 6e i.>=.0;.--i).r.=.(d*r+this[i])%n
37a0 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 31 2f 74 ;...return.r;.}..//.(public).1/t
37c0 68 69 73 20 25 20 6d 20 28 48 41 43 20 31 34 2e 36 31 29 0a 66 75 6e 63 74 69 6f 6e 20 62 6e 4d his.%.m.(HAC.14.61).function.bnM
37e0 6f 64 49 6e 76 65 72 73 65 28 6d 29 20 7b 0a 20 20 76 61 72 20 61 63 20 3d 20 6d 2e 69 73 45 76 odInverse(m).{...var.ac.=.m.isEv
3800 65 6e 28 29 3b 0a 20 20 69 66 28 28 74 68 69 73 2e 69 73 45 76 65 6e 28 29 20 26 26 20 61 63 29 en();...if((this.isEven().&&.ac)
3820 20 7c 7c 20 6d 2e 73 69 67 6e 75 6d 28 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 42 69 67 49 .||.m.signum().==.0).return.BigI
3840 6e 74 65 67 65 72 2e 5a 45 52 4f 3b 0a 20 20 76 61 72 20 75 20 3d 20 6d 2e 63 6c 6f 6e 65 28 29 nteger.ZERO;...var.u.=.m.clone()
3860 2c 20 76 20 3d 20 74 68 69 73 2e 63 6c 6f 6e 65 28 29 3b 0a 20 20 76 61 72 20 61 20 3d 20 6e 62 ,.v.=.this.clone();...var.a.=.nb
3880 76 28 31 29 2c 20 62 20 3d 20 6e 62 76 28 30 29 2c 20 63 20 3d 20 6e 62 76 28 30 29 2c 20 64 20 v(1),.b.=.nbv(0),.c.=.nbv(0),.d.
38a0 3d 20 6e 62 76 28 31 29 3b 0a 20 20 77 68 69 6c 65 28 75 2e 73 69 67 6e 75 6d 28 29 20 21 3d 20 =.nbv(1);...while(u.signum().!=.
38c0 30 29 20 7b 0a 20 20 20 20 77 68 69 6c 65 28 75 2e 69 73 45 76 65 6e 28 29 29 20 7b 0a 20 20 20 0).{.....while(u.isEven()).{....
38e0 20 20 20 75 2e 72 53 68 69 66 74 54 6f 28 31 2c 75 29 3b 0a 20 20 20 20 20 20 69 66 28 61 63 29 ...u.rShiftTo(1,u);.......if(ac)
3900 20 7b 0a 20 20 20 20 20 20 20 20 69 66 28 21 61 2e 69 73 45 76 65 6e 28 29 20 7c 7c 20 21 62 2e .{.........if(!a.isEven().||.!b.
3920 69 73 45 76 65 6e 28 29 29 20 7b 20 61 2e 61 64 64 54 6f 28 74 68 69 73 2c 61 29 3b 20 62 2e 73 isEven()).{.a.addTo(this,a);.b.s
3940 75 62 54 6f 28 6d 2c 62 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 61 2e 72 53 68 69 66 74 54 6f 28 ubTo(m,b);.}.........a.rShiftTo(
3960 31 2c 61 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66 28 21 62 2e 69 1,a);.......}.......else.if(!b.i
3980 73 45 76 65 6e 28 29 29 20 62 2e 73 75 62 54 6f 28 6d 2c 62 29 3b 0a 20 20 20 20 20 20 62 2e 72 sEven()).b.subTo(m,b);.......b.r
39a0 53 68 69 66 74 54 6f 28 31 2c 62 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 77 68 69 6c 65 28 76 2e ShiftTo(1,b);.....}.....while(v.
39c0 69 73 45 76 65 6e 28 29 29 20 7b 0a 20 20 20 20 20 20 76 2e 72 53 68 69 66 74 54 6f 28 31 2c 76 isEven()).{.......v.rShiftTo(1,v
39e0 29 3b 0a 20 20 20 20 20 20 69 66 28 61 63 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 28 21 63 2e );.......if(ac).{.........if(!c.
3a00 69 73 45 76 65 6e 28 29 20 7c 7c 20 21 64 2e 69 73 45 76 65 6e 28 29 29 20 7b 20 63 2e 61 64 64 isEven().||.!d.isEven()).{.c.add
3a20 54 6f 28 74 68 69 73 2c 63 29 3b 20 64 2e 73 75 62 54 6f 28 6d 2c 64 29 3b 20 7d 0a 20 20 20 20 To(this,c);.d.subTo(m,d);.}.....
3a40 20 20 20 20 63 2e 72 53 68 69 66 74 54 6f 28 31 2c 63 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 ....c.rShiftTo(1,c);.......}....
3a60 20 20 20 65 6c 73 65 20 69 66 28 21 64 2e 69 73 45 76 65 6e 28 29 29 20 64 2e 73 75 62 54 6f 28 ...else.if(!d.isEven()).d.subTo(
3a80 6d 2c 64 29 3b 0a 20 20 20 20 20 20 64 2e 72 53 68 69 66 74 54 6f 28 31 2c 64 29 3b 0a 20 20 20 m,d);.......d.rShiftTo(1,d);....
3aa0 20 7d 0a 20 20 20 20 69 66 28 75 2e 63 6f 6d 70 61 72 65 54 6f 28 76 29 20 3e 3d 20 30 29 20 7b .}.....if(u.compareTo(v).>=.0).{
3ac0 0a 20 20 20 20 20 20 75 2e 73 75 62 54 6f 28 76 2c 75 29 3b 0a 20 20 20 20 20 20 69 66 28 61 63 .......u.subTo(v,u);.......if(ac
3ae0 29 20 61 2e 73 75 62 54 6f 28 63 2c 61 29 3b 0a 20 20 20 20 20 20 62 2e 73 75 62 54 6f 28 64 2c ).a.subTo(c,a);.......b.subTo(d,
3b00 62 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 76 2e 73 75 62 b);.....}.....else.{.......v.sub
3b20 54 6f 28 75 2c 76 29 3b 0a 20 20 20 20 20 20 69 66 28 61 63 29 20 63 2e 73 75 62 54 6f 28 61 2c To(u,v);.......if(ac).c.subTo(a,
3b40 63 29 3b 0a 20 20 20 20 20 20 64 2e 73 75 62 54 6f 28 62 2c 64 29 3b 0a 20 20 20 20 7d 0a 20 20 c);.......d.subTo(b,d);.....}...
3b60 7d 0a 20 20 69 66 28 76 2e 63 6f 6d 70 61 72 65 54 6f 28 42 69 67 49 6e 74 65 67 65 72 2e 4f 4e }...if(v.compareTo(BigInteger.ON
3b80 45 29 20 21 3d 20 30 29 20 72 65 74 75 72 6e 20 42 69 67 49 6e 74 65 67 65 72 2e 5a 45 52 4f 3b E).!=.0).return.BigInteger.ZERO;
3ba0 0a 20 20 69 66 28 64 2e 63 6f 6d 70 61 72 65 54 6f 28 6d 29 20 3e 3d 20 30 29 20 72 65 74 75 72 ...if(d.compareTo(m).>=.0).retur
3bc0 6e 20 64 2e 73 75 62 74 72 61 63 74 28 6d 29 3b 0a 20 20 69 66 28 64 2e 73 69 67 6e 75 6d 28 29 n.d.subtract(m);...if(d.signum()
3be0 20 3c 20 30 29 20 64 2e 61 64 64 54 6f 28 6d 2c 64 29 3b 20 65 6c 73 65 20 72 65 74 75 72 6e 20 .<.0).d.addTo(m,d);.else.return.
3c00 64 3b 0a 20 20 69 66 28 64 2e 73 69 67 6e 75 6d 28 29 20 3c 20 30 29 20 72 65 74 75 72 6e 20 64 d;...if(d.signum().<.0).return.d
3c20 2e 61 64 64 28 6d 29 3b 20 65 6c 73 65 20 72 65 74 75 72 6e 20 64 3b 0a 7d 0a 0a 76 61 72 20 6c .add(m);.else.return.d;.}..var.l
3c40 6f 77 70 72 69 6d 65 73 20 3d 20 5b 32 2c 33 2c 35 2c 37 2c 31 31 2c 31 33 2c 31 37 2c 31 39 2c owprimes.=.[2,3,5,7,11,13,17,19,
3c60 32 33 2c 32 39 2c 33 31 2c 33 37 2c 34 31 2c 34 33 2c 34 37 2c 35 33 2c 35 39 2c 36 31 2c 36 37 23,29,31,37,41,43,47,53,59,61,67
3c80 2c 37 31 2c 37 33 2c 37 39 2c 38 33 2c 38 39 2c 39 37 2c 31 30 31 2c 31 30 33 2c 31 30 37 2c 31 ,71,73,79,83,89,97,101,103,107,1
3ca0 30 39 2c 31 31 33 2c 31 32 37 2c 31 33 31 2c 31 33 37 2c 31 33 39 2c 31 34 39 2c 31 35 31 2c 31 09,113,127,131,137,139,149,151,1
3cc0 35 37 2c 31 36 33 2c 31 36 37 2c 31 37 33 2c 31 37 39 2c 31 38 31 2c 31 39 31 2c 31 39 33 2c 31 57,163,167,173,179,181,191,193,1
3ce0 39 37 2c 31 39 39 2c 32 31 31 2c 32 32 33 2c 32 32 37 2c 32 32 39 2c 32 33 33 2c 32 33 39 2c 32 97,199,211,223,227,229,233,239,2
3d00 34 31 2c 32 35 31 2c 32 35 37 2c 32 36 33 2c 32 36 39 2c 32 37 31 2c 32 37 37 2c 32 38 31 2c 32 41,251,257,263,269,271,277,281,2
3d20 38 33 2c 32 39 33 2c 33 30 37 2c 33 31 31 2c 33 31 33 2c 33 31 37 2c 33 33 31 2c 33 33 37 2c 33 83,293,307,311,313,317,331,337,3
3d40 34 37 2c 33 34 39 2c 33 35 33 2c 33 35 39 2c 33 36 37 2c 33 37 33 2c 33 37 39 2c 33 38 33 2c 33 47,349,353,359,367,373,379,383,3
3d60 38 39 2c 33 39 37 2c 34 30 31 2c 34 30 39 2c 34 31 39 2c 34 32 31 2c 34 33 31 2c 34 33 33 2c 34 89,397,401,409,419,421,431,433,4
3d80 33 39 2c 34 34 33 2c 34 34 39 2c 34 35 37 2c 34 36 31 2c 34 36 33 2c 34 36 37 2c 34 37 39 2c 34 39,443,449,457,461,463,467,479,4
3da0 38 37 2c 34 39 31 2c 34 39 39 2c 35 30 33 2c 35 30 39 5d 3b 0a 76 61 72 20 6c 70 6c 69 6d 20 3d 87,491,499,503,509];.var.lplim.=
3dc0 20 28 31 3c 3c 32 36 29 2f 6c 6f 77 70 72 69 6d 65 73 5b 6c 6f 77 70 72 69 6d 65 73 2e 6c 65 6e .(1<<26)/lowprimes[lowprimes.len
3de0 67 74 68 2d 31 5d 3b 0a 0a 2f 2f 20 28 70 75 62 6c 69 63 29 20 74 65 73 74 20 70 72 69 6d 61 6c gth-1];..//.(public).test.primal
3e00 69 74 79 20 77 69 74 68 20 63 65 72 74 61 69 6e 74 79 20 3e 3d 20 31 2d 2e 35 5e 74 0a 66 75 6e ity.with.certainty.>=.1-.5^t.fun
3e20 63 74 69 6f 6e 20 62 6e 49 73 50 72 6f 62 61 62 6c 65 50 72 69 6d 65 28 74 29 20 7b 0a 20 20 76 ction.bnIsProbablePrime(t).{...v
3e40 61 72 20 69 2c 20 78 20 3d 20 74 68 69 73 2e 61 62 73 28 29 3b 0a 20 20 69 66 28 78 2e 74 20 3d ar.i,.x.=.this.abs();...if(x.t.=
3e60 3d 20 31 20 26 26 20 78 5b 30 5d 20 3c 3d 20 6c 6f 77 70 72 69 6d 65 73 5b 6c 6f 77 70 72 69 6d =.1.&&.x[0].<=.lowprimes[lowprim
3e80 65 73 2e 6c 65 6e 67 74 68 2d 31 5d 29 20 7b 0a 20 20 20 20 66 6f 72 28 69 20 3d 20 30 3b 20 69 es.length-1]).{.....for(i.=.0;.i
3ea0 20 3c 20 6c 6f 77 70 72 69 6d 65 73 2e 6c 65 6e 67 74 68 3b 20 2b 2b 69 29 0a 20 20 20 20 20 20 .<.lowprimes.length;.++i).......
3ec0 69 66 28 78 5b 30 5d 20 3d 3d 20 6c 6f 77 70 72 69 6d 65 73 5b 69 5d 29 20 72 65 74 75 72 6e 20 if(x[0].==.lowprimes[i]).return.
3ee0 74 72 75 65 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 7d 0a 20 20 69 66 true;.....return.false;...}...if
3f00 28 78 2e 69 73 45 76 65 6e 28 29 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 69 20 3d (x.isEven()).return.false;...i.=
3f20 20 31 3b 0a 20 20 77 68 69 6c 65 28 69 20 3c 20 6c 6f 77 70 72 69 6d 65 73 2e 6c 65 6e 67 74 68 .1;...while(i.<.lowprimes.length
3f40 29 20 7b 0a 20 20 20 20 76 61 72 20 6d 20 3d 20 6c 6f 77 70 72 69 6d 65 73 5b 69 5d 2c 20 6a 20 ).{.....var.m.=.lowprimes[i],.j.
3f60 3d 20 69 2b 31 3b 0a 20 20 20 20 77 68 69 6c 65 28 6a 20 3c 20 6c 6f 77 70 72 69 6d 65 73 2e 6c =.i+1;.....while(j.<.lowprimes.l
3f80 65 6e 67 74 68 20 26 26 20 6d 20 3c 20 6c 70 6c 69 6d 29 20 6d 20 2a 3d 20 6c 6f 77 70 72 69 6d ength.&&.m.<.lplim).m.*=.lowprim
3fa0 65 73 5b 6a 2b 2b 5d 3b 0a 20 20 20 20 6d 20 3d 20 78 2e 6d 6f 64 49 6e 74 28 6d 29 3b 0a 20 20 es[j++];.....m.=.x.modInt(m);...
3fc0 20 20 77 68 69 6c 65 28 69 20 3c 20 6a 29 20 69 66 28 6d 25 6c 6f 77 70 72 69 6d 65 73 5b 69 2b ..while(i.<.j).if(m%lowprimes[i+
3fe0 2b 5d 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 7d 0a 20 20 72 65 74 +].==.0).return.false;...}...ret
4000 75 72 6e 20 78 2e 6d 69 6c 6c 65 72 52 61 62 69 6e 28 74 29 3b 0a 7d 0a 0a 2f 2f 20 28 70 72 6f urn.x.millerRabin(t);.}..//.(pro
4020 74 65 63 74 65 64 29 20 74 72 75 65 20 69 66 20 70 72 6f 62 61 62 6c 79 20 70 72 69 6d 65 20 28 tected).true.if.probably.prime.(
4040 48 41 43 20 34 2e 32 34 2c 20 4d 69 6c 6c 65 72 2d 52 61 62 69 6e 29 0a 66 75 6e 63 74 69 6f 6e HAC.4.24,.Miller-Rabin).function
4060 20 62 6e 70 4d 69 6c 6c 65 72 52 61 62 69 6e 28 74 29 20 7b 0a 20 20 76 61 72 20 6e 31 20 3d 20 .bnpMillerRabin(t).{...var.n1.=.
4080 74 68 69 73 2e 73 75 62 74 72 61 63 74 28 42 69 67 49 6e 74 65 67 65 72 2e 4f 4e 45 29 3b 0a 20 this.subtract(BigInteger.ONE);..
40a0 20 76 61 72 20 6b 20 3d 20 6e 31 2e 67 65 74 4c 6f 77 65 73 74 53 65 74 42 69 74 28 29 3b 0a 20 .var.k.=.n1.getLowestSetBit();..
40c0 20 69 66 28 6b 20 3c 3d 20 30 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 76 61 72 20 .if(k.<=.0).return.false;...var.
40e0 72 20 3d 20 6e 31 2e 73 68 69 66 74 52 69 67 68 74 28 6b 29 3b 0a 20 20 74 20 3d 20 28 74 2b 31 r.=.n1.shiftRight(k);...t.=.(t+1
4100 29 3e 3e 31 3b 0a 20 20 69 66 28 74 20 3e 20 6c 6f 77 70 72 69 6d 65 73 2e 6c 65 6e 67 74 68 29 )>>1;...if(t.>.lowprimes.length)
4120 20 74 20 3d 20 6c 6f 77 70 72 69 6d 65 73 2e 6c 65 6e 67 74 68 3b 0a 20 20 76 61 72 20 61 20 3d .t.=.lowprimes.length;...var.a.=
4140 20 6e 62 69 28 29 3b 0a 20 20 66 6f 72 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 74 3b 20 .nbi();...for(var.i.=.0;.i.<.t;.
4160 2b 2b 69 29 20 7b 0a 20 20 20 20 61 2e 66 72 6f 6d 49 6e 74 28 6c 6f 77 70 72 69 6d 65 73 5b 69 ++i).{.....a.fromInt(lowprimes[i
4180 5d 29 3b 0a 20 20 20 20 76 61 72 20 79 20 3d 20 61 2e 6d 6f 64 50 6f 77 28 72 2c 74 68 69 73 29 ]);.....var.y.=.a.modPow(r,this)
41a0 3b 0a 20 20 20 20 69 66 28 79 2e 63 6f 6d 70 61 72 65 54 6f 28 42 69 67 49 6e 74 65 67 65 72 2e ;.....if(y.compareTo(BigInteger.
41c0 4f 4e 45 29 20 21 3d 20 30 20 26 26 20 79 2e 63 6f 6d 70 61 72 65 54 6f 28 6e 31 29 20 21 3d 20 ONE).!=.0.&&.y.compareTo(n1).!=.
41e0 30 29 20 7b 0a 20 20 20 20 20 20 76 61 72 20 6a 20 3d 20 31 3b 0a 20 20 20 20 20 20 77 68 69 6c 0).{.......var.j.=.1;.......whil
4200 65 28 6a 2b 2b 20 3c 20 6b 20 26 26 20 79 2e 63 6f 6d 70 61 72 65 54 6f 28 6e 31 29 20 21 3d 20 e(j++.<.k.&&.y.compareTo(n1).!=.
4220 30 29 20 7b 0a 20 20 20 20 20 20 20 20 79 20 3d 20 79 2e 6d 6f 64 50 6f 77 49 6e 74 28 32 2c 74 0).{.........y.=.y.modPowInt(2,t
4240 68 69 73 29 3b 0a 20 20 20 20 20 20 20 20 69 66 28 79 2e 63 6f 6d 70 61 72 65 54 6f 28 42 69 67 his);.........if(y.compareTo(Big
4260 49 6e 74 65 67 65 72 2e 4f 4e 45 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b Integer.ONE).==.0).return.false;
4280 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 69 66 28 79 2e 63 6f 6d 70 61 72 65 54 6f 28 6e 31 .......}.......if(y.compareTo(n1
42a0 29 20 21 3d 20 30 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a ).!=.0).return.false;.....}...}.
42c0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 7d 0a 0a 2f 2f 20 70 72 6f 74 65 63 74 65 64 0a 42 ..return.true;.}..//.protected.B
42e0 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 63 68 75 6e 6b 53 69 7a 65 20 3d 20 igInteger.prototype.chunkSize.=.
4300 62 6e 70 43 68 75 6e 6b 53 69 7a 65 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 bnpChunkSize;.BigInteger.prototy
4320 70 65 2e 74 6f 52 61 64 69 78 20 3d 20 62 6e 70 54 6f 52 61 64 69 78 3b 0a 42 69 67 49 6e 74 65 pe.toRadix.=.bnpToRadix;.BigInte
4340 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 66 72 6f 6d 52 61 64 69 78 20 3d 20 62 6e 70 46 72 6f ger.prototype.fromRadix.=.bnpFro
4360 6d 52 61 64 69 78 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 66 72 6f mRadix;.BigInteger.prototype.fro
4380 6d 4e 75 6d 62 65 72 20 3d 20 62 6e 70 46 72 6f 6d 4e 75 6d 62 65 72 3b 0a 42 69 67 49 6e 74 65 mNumber.=.bnpFromNumber;.BigInte
43a0 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 62 69 74 77 69 73 65 54 6f 20 3d 20 62 6e 70 42 69 74 ger.prototype.bitwiseTo.=.bnpBit
43c0 77 69 73 65 54 6f 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 63 68 61 wiseTo;.BigInteger.prototype.cha
43e0 6e 67 65 42 69 74 20 3d 20 62 6e 70 43 68 61 6e 67 65 42 69 74 3b 0a 42 69 67 49 6e 74 65 67 65 ngeBit.=.bnpChangeBit;.BigIntege
4400 72 2e 70 72 6f 74 6f 74 79 70 65 2e 61 64 64 54 6f 20 3d 20 62 6e 70 41 64 64 54 6f 3b 0a 42 69 r.prototype.addTo.=.bnpAddTo;.Bi
4420 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 4d 75 6c 74 69 70 6c 79 20 3d 20 62 gInteger.prototype.dMultiply.=.b
4440 6e 70 44 4d 75 6c 74 69 70 6c 79 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 npDMultiply;.BigInteger.prototyp
4460 65 2e 64 41 64 64 4f 66 66 73 65 74 20 3d 20 62 6e 70 44 41 64 64 4f 66 66 73 65 74 3b 0a 42 69 e.dAddOffset.=.bnpDAddOffset;.Bi
4480 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 75 6c 74 69 70 6c 79 4c 6f 77 65 72 gInteger.prototype.multiplyLower
44a0 54 6f 20 3d 20 62 6e 70 4d 75 6c 74 69 70 6c 79 4c 6f 77 65 72 54 6f 3b 0a 42 69 67 49 6e 74 65 To.=.bnpMultiplyLowerTo;.BigInte
44c0 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 75 6c 74 69 70 6c 79 55 70 70 65 72 54 6f 20 3d 20 ger.prototype.multiplyUpperTo.=.
44e0 62 6e 70 4d 75 6c 74 69 70 6c 79 55 70 70 65 72 54 6f 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 bnpMultiplyUpperTo;.BigInteger.p
4500 72 6f 74 6f 74 79 70 65 2e 6d 6f 64 49 6e 74 20 3d 20 62 6e 70 4d 6f 64 49 6e 74 3b 0a 42 69 67 rototype.modInt.=.bnpModInt;.Big
4520 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 69 6c 6c 65 72 52 61 62 69 6e 20 3d 20 Integer.prototype.millerRabin.=.
4540 62 6e 70 4d 69 6c 6c 65 72 52 61 62 69 6e 3b 0a 0a 2f 2f 20 70 75 62 6c 69 63 0a 42 69 67 49 6e bnpMillerRabin;..//.public.BigIn
4560 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6c 6f 6e 65 20 3d 20 62 6e 43 6c 6f 6e 65 3b teger.prototype.clone.=.bnClone;
4580 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 69 6e 74 56 61 6c 75 65 20 3d .BigInteger.prototype.intValue.=
45a0 20 62 6e 49 6e 74 56 61 6c 75 65 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 .bnIntValue;.BigInteger.prototyp
45c0 65 2e 62 79 74 65 56 61 6c 75 65 20 3d 20 62 6e 42 79 74 65 56 61 6c 75 65 3b 0a 42 69 67 49 6e e.byteValue.=.bnByteValue;.BigIn
45e0 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 68 6f 72 74 56 61 6c 75 65 20 3d 20 62 6e 53 teger.prototype.shortValue.=.bnS
4600 68 6f 72 74 56 61 6c 75 65 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e hortValue;.BigInteger.prototype.
4620 73 69 67 6e 75 6d 20 3d 20 62 6e 53 69 67 4e 75 6d 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 signum.=.bnSigNum;.BigInteger.pr
4640 6f 74 6f 74 79 70 65 2e 74 6f 42 79 74 65 41 72 72 61 79 20 3d 20 62 6e 54 6f 42 79 74 65 41 72 ototype.toByteArray.=.bnToByteAr
4660 72 61 79 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 65 71 75 61 6c 73 ray;.BigInteger.prototype.equals
4680 20 3d 20 62 6e 45 71 75 61 6c 73 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 .=.bnEquals;.BigInteger.prototyp
46a0 65 2e 6d 69 6e 20 3d 20 62 6e 4d 69 6e 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 e.min.=.bnMin;.BigInteger.protot
46c0 79 70 65 2e 6d 61 78 20 3d 20 62 6e 4d 61 78 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 ype.max.=.bnMax;.BigInteger.prot
46e0 6f 74 79 70 65 2e 61 6e 64 20 3d 20 62 6e 41 6e 64 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 otype.and.=.bnAnd;.BigInteger.pr
4700 6f 74 6f 74 79 70 65 2e 6f 72 20 3d 20 62 6e 4f 72 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 ototype.or.=.bnOr;.BigInteger.pr
4720 6f 74 6f 74 79 70 65 2e 78 6f 72 20 3d 20 62 6e 58 6f 72 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e ototype.xor.=.bnXor;.BigInteger.
4740 70 72 6f 74 6f 74 79 70 65 2e 61 6e 64 4e 6f 74 20 3d 20 62 6e 41 6e 64 4e 6f 74 3b 0a 42 69 67 prototype.andNot.=.bnAndNot;.Big
4760 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6e 6f 74 20 3d 20 62 6e 4e 6f 74 3b 0a 42 Integer.prototype.not.=.bnNot;.B
4780 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 68 69 66 74 4c 65 66 74 20 3d 20 igInteger.prototype.shiftLeft.=.
47a0 62 6e 53 68 69 66 74 4c 65 66 74 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 bnShiftLeft;.BigInteger.prototyp
47c0 65 2e 73 68 69 66 74 52 69 67 68 74 20 3d 20 62 6e 53 68 69 66 74 52 69 67 68 74 3b 0a 42 69 67 e.shiftRight.=.bnShiftRight;.Big
47e0 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 67 65 74 4c 6f 77 65 73 74 53 65 74 42 69 Integer.prototype.getLowestSetBi
4800 74 20 3d 20 62 6e 47 65 74 4c 6f 77 65 73 74 53 65 74 42 69 74 3b 0a 42 69 67 49 6e 74 65 67 65 t.=.bnGetLowestSetBit;.BigIntege
4820 72 2e 70 72 6f 74 6f 74 79 70 65 2e 62 69 74 43 6f 75 6e 74 20 3d 20 62 6e 42 69 74 43 6f 75 6e r.prototype.bitCount.=.bnBitCoun
4840 74 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 74 65 73 74 42 69 74 20 t;.BigInteger.prototype.testBit.
4860 3d 20 62 6e 54 65 73 74 42 69 74 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 =.bnTestBit;.BigInteger.prototyp
4880 65 2e 73 65 74 42 69 74 20 3d 20 62 6e 53 65 74 42 69 74 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e e.setBit.=.bnSetBit;.BigInteger.
48a0 70 72 6f 74 6f 74 79 70 65 2e 63 6c 65 61 72 42 69 74 20 3d 20 62 6e 43 6c 65 61 72 42 69 74 3b prototype.clearBit.=.bnClearBit;
48c0 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 66 6c 69 70 42 69 74 20 3d 20 .BigInteger.prototype.flipBit.=.
48e0 62 6e 46 6c 69 70 42 69 74 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e bnFlipBit;.BigInteger.prototype.
4900 61 64 64 20 3d 20 62 6e 41 64 64 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 add.=.bnAdd;.BigInteger.prototyp
4920 65 2e 73 75 62 74 72 61 63 74 20 3d 20 62 6e 53 75 62 74 72 61 63 74 3b 0a 42 69 67 49 6e 74 65 e.subtract.=.bnSubtract;.BigInte
4940 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 75 6c 74 69 70 6c 79 20 3d 20 62 6e 4d 75 6c 74 69 ger.prototype.multiply.=.bnMulti
4960 70 6c 79 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 76 69 64 65 ply;.BigInteger.prototype.divide
4980 20 3d 20 62 6e 44 69 76 69 64 65 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 .=.bnDivide;.BigInteger.prototyp
49a0 65 2e 72 65 6d 61 69 6e 64 65 72 20 3d 20 62 6e 52 65 6d 61 69 6e 64 65 72 3b 0a 42 69 67 49 6e e.remainder.=.bnRemainder;.BigIn
49c0 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 76 69 64 65 41 6e 64 52 65 6d 61 69 6e 64 teger.prototype.divideAndRemaind
49e0 65 72 20 3d 20 62 6e 44 69 76 69 64 65 41 6e 64 52 65 6d 61 69 6e 64 65 72 3b 0a 42 69 67 49 6e er.=.bnDivideAndRemainder;.BigIn
4a00 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 6f 64 50 6f 77 20 3d 20 62 6e 4d 6f 64 50 6f teger.prototype.modPow.=.bnModPo
4a20 77 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 6f 64 49 6e 76 65 72 w;.BigInteger.prototype.modInver
4a40 73 65 20 3d 20 62 6e 4d 6f 64 49 6e 76 65 72 73 65 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e 70 72 se.=.bnModInverse;.BigInteger.pr
4a60 6f 74 6f 74 79 70 65 2e 70 6f 77 20 3d 20 62 6e 50 6f 77 3b 0a 42 69 67 49 6e 74 65 67 65 72 2e ototype.pow.=.bnPow;.BigInteger.
4a80 70 72 6f 74 6f 74 79 70 65 2e 67 63 64 20 3d 20 62 6e 47 43 44 3b 0a 42 69 67 49 6e 74 65 67 65 prototype.gcd.=.bnGCD;.BigIntege
4aa0 72 2e 70 72 6f 74 6f 74 79 70 65 2e 69 73 50 72 6f 62 61 62 6c 65 50 72 69 6d 65 20 3d 20 62 6e r.prototype.isProbablePrime.=.bn
4ac0 49 73 50 72 6f 62 61 62 6c 65 50 72 69 6d 65 3b 0a 0a 2f 2f 20 42 69 67 49 6e 74 65 67 65 72 20 IsProbablePrime;..//.BigInteger.
4ae0 69 6e 74 65 72 66 61 63 65 73 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 6a 73 interfaces.not.implemented.in.js
4b00 62 6e 3a 0a 0a 2f 2f 20 42 69 67 49 6e 74 65 67 65 72 28 69 6e 74 20 73 69 67 6e 75 6d 2c 20 62 bn:..//.BigInteger(int.signum,.b
4b20 79 74 65 5b 5d 20 6d 61 67 6e 69 74 75 64 65 29 0a 2f 2f 20 64 6f 75 62 6c 65 20 64 6f 75 62 6c yte[].magnitude).//.double.doubl
4b40 65 56 61 6c 75 65 28 29 0a 2f 2f 20 66 6c 6f 61 74 20 66 6c 6f 61 74 56 61 6c 75 65 28 29 0a 2f eValue().//.float.floatValue()./
4b60 2f 20 69 6e 74 20 68 61 73 68 43 6f 64 65 28 29 0a 2f 2f 20 6c 6f 6e 67 20 6c 6f 6e 67 56 61 6c /.int.hashCode().//.long.longVal
4b80 75 65 28 29 0a 2f 2f 20 73 74 61 74 69 63 20 42 69 67 49 6e 74 65 67 65 72 20 76 61 6c 75 65 4f ue().//.static.BigInteger.valueO
4ba0 66 28 6c 6f 6e 67 20 76 61 6c 29 0a 3b 0a 22 0d 5f 76 65 72 73 69 6f 6e 22 25 39 66 33 62 39 35 f(long.val).;."._version"%9f3b95
4bc0 64 64 37 65 61 33 30 33 30 64 63 33 35 39 38 35 63 30 61 38 30 32 30 38 36 32 22 15 64 65 70 65 dd7ea3030dc35985c0a8020862".depe
4be0 6e 64 65 6e 63 79 5f 70 61 74 68 73 5b 06 7b 08 22 0a 6d 74 69 6d 65 22 1e 32 30 31 32 2d 30 39 ndency_paths[.{.".mtime".2012-09
4c00 2d 31 38 54 31 35 3a 34 30 3a 35 38 2b 30 32 3a 30 30 22 09 70 61 74 68 22 4c 2f 6f 6c 64 76 61 -18T15:40:58+02:00".path"L/oldva
4c20 72 2f 73 72 63 2f 6c 65 61 70 2f 6c 65 61 70 5f 77 65 62 5f 75 73 65 72 73 2f 61 70 70 2f 61 73 r/src/leap/leap_web_users/app/as
4c40 73 65 74 73 2f 6a 61 76 61 73 63 72 69 70 74 73 2f 73 72 70 2f 6c 69 62 2f 6a 73 62 6e 32 2e 6a sets/javascripts/srp/lib/jsbn2.j
4c60 73 22 0b 64 69 67 65 73 74 22 25 61 37 30 36 39 30 36 31 66 30 66 31 31 63 61 39 37 30 32 65 66 s".digest"%a7069061f0f11ca9702ef
4c80 37 36 62 34 38 34 65 31 39 38 39 22 13 72 65 71 75 69 72 65 64 5f 70 61 74 68 73 5b 06 22 4c 2f 76b484e1989".required_paths[."L/
4ca0 6f 6c 64 76 61 72 2f 73 72 63 2f 6c 65 61 70 2f 6c 65 61 70 5f 77 65 62 5f 75 73 65 72 73 2f 61 oldvar/src/leap/leap_web_users/a
4cc0 70 70 2f 61 73 73 65 74 73 2f 6a 61 76 61 73 63 72 69 70 74 73 2f 73 72 70 2f 6c 69 62 2f 6a 73 pp/assets/javascripts/srp/lib/js
4ce0 62 6e 32 2e 6a 73 22 0a 6d 74 69 6d 65 22 1e 32 30 31 32 2d 30 39 2d 31 38 54 31 35 3a 34 30 3a bn2.js".mtime".2012-09-18T15:40:
4d00 35 38 2b 30 32 3a 30 30 22 11 6c 6f 67 69 63 61 6c 5f 70 61 74 68 22 15 73 72 70 2f 6c 69 62 2f 58+02:00".logical_path".srp/lib/
4d20 6a 73 62 6e 32 2e 6a 73 22 0a 63 6c 61 73 73 22 13 50 72 6f 63 65 73 73 65 64 41 73 73 65 74 22 jsbn2.js".class".ProcessedAsset"
4d40 11 63 6f 6e 74 65 6e 74 5f 74 79 70 65 22 1b 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 61 76 61 73 .content_type".application/javas
4d60 63 72 69 70 74 22 0b 64 69 67 65 73 74 22 25 61 36 36 61 38 61 31 34 39 33 62 35 35 34 30 65 35 cript".digest"%a66a8a1493b5540e5
4d80 38 32 61 65 34 36 62 61 63 33 35 30 32 34 31 22 0d 70 61 74 68 6e 61 6d 65 22 4c 2f 6f 6c 64 76 82ae46bac350241".pathname"L/oldv
4da0 61 72 2f 73 72 63 2f 6c 65 61 70 2f 6c 65 61 70 5f 77 65 62 5f 75 73 65 72 73 2f 61 70 70 2f 61 ar/src/leap/leap_web_users/app/a
4dc0 73 73 65 74 73 2f 6a 61 76 61 73 63 72 69 70 74 73 2f 73 72 70 2f 6c 69 62 2f 6a 73 62 6e 32 2e ssets/javascripts/srp/lib/jsbn2.
4de0 6a 73 3a 10 40 65 78 70 69 72 65 73 5f 69 6e 30 3a 10 40 63 6f 6d 70 72 65 73 73 65 64 46 js:.@expires_in0:.@compressedF