rust D% rustc 1.48.0std؝-6bf3f16f340782cacoreƞ-3375e4f89d420e7acompiler_builtins-f74b197469e67088rustc_std_workspace_core扪ڹ8-5e0675f526ef5c6ballocץޯČ-1ebf406bd4ea5769libcɄ-dfbef8c525de0186unwindܽ݇!-bd645b20c6c7b56dcfg_ifшC-b9e1e523c0c29a77 hashbrownǰ-c6632ca171f954ddrustc_std_workspace_allocW-b5bfd0198c7b740drustc_demangleة-3ac2d0878c297d42 addr2lineƄ-12740563628e601fgimlin-0ac82a1e1820dd21object»-af517d7f13e7c960 miniz_oxide֕㵤 -a2ba33c985785afeadler˯-3f6e9f8f4afbea6d panic_unwindի-13f3099d50c21bc6libc-7fe86c0ce024a30ceG0Ҁ]62' ^ar2std:\M<'ZqcoresO 3R(.qw|}">"faMn3)D4bpmB)Qvee\3XGEbk}gy`z_0 YG=A<I^\ǒUc :s_7%dKs\_ 9n t}7|V2 =~S x *  1N؞[3 fjARB/2|j ۯEA,}'YOkxQ) Pb$ ݅]A0 ՍizВ{"lȘPl‰A=)8 distributions\E֏;p*fvPUrP W]Cx|ɂAްr]_exX+>1B# [TjMs)0=aY/sk(;ѝNAZ_hgezh]o7)\mQjN )}\0סݚ ZM򶿝 (zU Ednkx= sQ yۊb~6? "cr`e`p㾘rangez'ļP}l$$,ZV}Z=+$L#]t;E#i'V$ Fb])bʍb$:0D;$a;BRAķ|$?S^naջ`t⑈*XԮ*䑨L)J*new]qI)Z$&[XDYl-Sup;.ٗJ# E-sample{ `?Χ'/R3÷kz}\ZDNNq$9\Y<|^' i1Sup񢟘gSX諺1 ind_sampleZBӞX.cͿ3Rn #wCncn&L$ SampleRangeC0d*c 5construct_range0oj)=\5 sample_range# `]{ 7R 32P$'*-]$ integer_implN%^S$ float_implwJ;׽ 1C/1ugammakHgp]۔;f$Lܜ"n;d?lC;U!/ق69;z"q.M2P;h2?eo Zڹ;"8,~=;:wJ*[g#Y\2hp;Q@0 {S p;]9[oU1z; =LhC5.ۈf ;H- T[=WFnewJdŖtUPg痰;]Ҍ(R6QdHnew_raw$^ ʷ;X0`9QJnew_raw[}HĮC(-;$!_֘V/LsampleQmn6MR,+ z_3<^[;6JSEd9χOsampleTXS偐gEvxJnPR9?Q߹O;5aIqheXtzRsampleVR8Io;YRlhTnX{;2@8đ[ ind_sampleN ŀi2u#\R7nOē; xK3> Yuo'^new$%ov\t]b; s 7]n3rm!hr`sampleљ~&2~!3GaR=#q#; 3]:pJf(c ind_samplex] /^9dR0B[|||TQ; SFLxϺfnewء<'FbJdX; ?w_4HE6qahsamplep4Ʋ'7g!1iR^q^jMx ;$УU:.6k ind_sample~=^X/[lR]BD ?ɠ=;}9(qAFnnew z+foNh}];}M]_\[VDpsample1 t^p0سhrqRR=5[K~z.cE;~5CEZ=ghs ind_sampleD*g4 tRϓ~/B}WK'normalYTث4l.vhs/Lkdn 8+OvT<[ɤv:Mf Dp,vw|C&Ev,DhZl8bRnv)"*Ќ,:vف7@A~9Ko4vϰV&Eh]vQ74Y\xP.vOua(4BQGZ8randp10HHR8\^X7jpdf1r 9rFFR~: zero_case# RܵLtE.}vK1E2;|WpSnewum{5Tv;*'/sample7'SQpRMTX% z6v"3A*\0Z ind_sample/t> 4(PRv #cN&\nv+'+@ 3RnewF8V*JhSvh=(|Bw4/Usample6hWq ڐ߷RϗosF:bx3(vyɿFM/f` ind_sample{==;hoRw&{Oޜ.AD exponentialyJu3EΟܮyU_7DLc>'9!;{< M@|aW"FU^}5{>hZ5i5TIz7 lcpN%"eSd|'RY TzbtUu}w*`randɐ=N=-ѷR?hXU;l1pdf6-)& zero_caseHX7'褑!0oDNR [=Cο63u9 waa(zV(Gnew22oэIbem@gwi hsample+uϡuRRWIg6>3zQz9g- ind_sampleʣ~^h阴Rè3 [ziggurat_tables(y[r1 ϻ'*ZigTableyDظ` \֍nMgb ZIG_NORM_R`3/s_dR ZIG_NORM_X0Ms8"n +Y(Kq1 ZIG_NORM_F)~.T>#vwBp < $GFj ZIG_EXP_R؂<ˆ^ @ ZIG_EXP_XQeo|E c[a a ZIG_EXP_FLw*|bx {+{J@RSample}?Rq Support ^CsamplegQ-!DRF"I7 8=ƕBIndependentSample7f8 0L[SupportMHJMEZ ind_sampleWjʄdhV9(R&BZ g*{e:5D&iSup2 rj+.jYњz Q5Supٝb|MPFHclone9g{%h#fcQwAwWȪSupL@ =Nsampleklh-ʹTERnڵk.'J {+RzGSupekb\Laˮ\ ind_sampleZin| G7RCGN?{!G^T8RySup7m:z.saZnew#:ġ^.l宻wojƟ'a}MGW@Ѭg!TqQ:3쬽#ίnewj?-wo6b[[ Z 'auSw64{KlTiGTnOisample v^y-C#R'A|UdJĴ6ζK'_~2U'a=2a6!0}TMBf&P_ah ind_sample\Gl=)*~RF4[ds=ozigguratɮmaKBXRU{Iq0/e^P q,X(DZpo&SySCALE)YrGXǃjitterʚP;'sЫb4c_5~ k: 1Ėi;WBХ_gZ*|v=M{FMu1_;qz 6UCNL#(3A~;&32qjhyl*4B ٿ B;{ MEMORY_BLOCKS ŏA,MEMORY_BLOCKSIZE7HJ@;`r|[5J MEMORY_SIZEb*$s1wc+klK JitterRng7<}[h@_VdataL7Q'dfroundsW6K p?#S-timer&\!ȭ&w?NY prev_timeԁu<,c _lݎW last_deltaOc]ɹzM last_delta2,o.17Di{4mem_prev_index8.#9 [@rQmemV(jiқktF  \j[data_remainingk|ߴilfmtH'kW(p`lA:r/$ descriptionx%\ɒZ;%1Mijfmt6{NrWsɘW^/..5d } descriptiont^Ϯ pB@QU] JITTER_ROUNDSy5kL~\s۰wʍYTh&newX3.G`fPnew_with_timer.*(/æS ^B-7 set_rounds{ݓ)Uusrandom_loop_cntn2or[MBT lfsr_timec}+n^#b wlfsrOw2ˣپ memaccess:2P_* stuckRTI"imeasure_jitter0-;*g򙏬1 stir_poolkXN}*0<CONSTANT.Be>"cx}8= gen_entropy̫M8i test_timer!7T22d߯ TESTLOOPCOUNTMc ~A"Qd} CLEARCACHE'B)v9!P& #FACTOREsBeC%{ޭlog21rx!tā`'' timer_stats"-{/platform_J3j[I get_nstime@"|4l:-l+]GIMR;mOc)]wQq0>b{vwqd_1 black_boxq pW`#TW:$A:& $ >next_u32Xn xd<_next_u64 Pm< fill_bytesM 7̃Y\> 2v79fk? j._Qyos>%jӷpZѸR-%YgXe,k=0 Lňk>=8[f#iH ˌ)1fyCJckOsRng250$w? 3 .3W0v7PV.ŔHN!'pĐ(>new<\d')Ey/{r"\@next_u320MmJRשnext_u64"NK_#ao fill_bytes P2jId{N8X\fmtj--'.>] Snext_u32[Oy:l =2f8(Y\) xxM0f8 coX?bah=next_u64^ńㅸnud o5j5 3%:lL)J t3/:RX&|^imp&!hXgklibcuoCXC U?fEͷA47o]VZk!qӻ(fmΧ7JwwOꊭd0GhGQQDeh,pBTpH٧'$juґl.*$: JT ^ getrandoma^=3jBx |}]osyscallC$9z ( NR_GETRANDOM A`]U,;Zgetrandom_fill_bytesdstLuis_getrandom_available!69NuuuL=WFrP 5㘄"4y XI 5@0;H^i_t쩃-fs!ΞdW@|.[GCHECKER.,VoV 䣫I AVAILABLE=ꝰ_2GźӋ{.3~'#ō cT< f[OsRng !ۥ'Geinner0H81ar+Ѱ OsRngInnerԸL ZA=OsGetrandomRngD *=|e =$?3cX} OsReadRngӁ"?.8ӀhXlOM% Үa/UY*0 *$Q"T5pII3Dynew0Zzg_3!Ԏs>!next_u32Ho_+{next_u64o֩-U7c fill_bytesGuBtR %o_6read#F>wg@?k_U0XI/o1J`8*S/{koK8R:v|T7&-{WM`2>`za6esD;oPoԻ0TS]k:BY fill_bytesjH"{-fillBg)wT5?j reseedingRA>YezQ-PO%rKR)H(5 :*kQ uh|A |IeyAyDEFAULT_GENERATION_THRESHOLDIµjCCN9evaetc)XtnhR@;f/ҨRsdrT߼:D=newYM⑍VXkreseed_if_necessary,QHV|Q잦Իxtⱝk]1-RUrS~RsdrqlidÓrnext_u32֗,QQ¤next_u64Fyn xKj' fill_bytes9Z>bvKgy* a8{6~S?4ޥqR{3H-Oa8k|RsdrXa$;7reseed 7܀CN|f\ from_seedAnOɛ8#ReseederC2>tR) RPIM ?в_Gqmreseed Pܘm_<stWRhR%tYlhhreseedd}I'rZSK_QydefaultӰQ;.QseqY["˟h,6!~j++/ sample_iterq#-J_gLFTg5֏pibI0lVfRB^R:?kg sample_sliceJj'lt*[uRSP:v/^MT?]=|= ,~}ܭd06+ϐsample_slice_refvQ=t1ݷ3GG<sample_indices_inplaceTW;ܭn%vܛR^pkB"k7sample_indices_cacheJ\>MwrRlbozCI3dchachaɄO\YK81Y𹅝Qm?isaac_ q6.$(#^;&]x,!=/C?;«&hs rand_implsx[z-DM;=A7oۧT|^!z .q蘭ZzcIv2I#n.hI~- T(HG"!lWcq-!tGPf\v>1rand2k $H4P.RQd}fbDrbF4иrandD7/Vqn<R9˃}=&m"־T$[Aߢ#yrandQBC,#!Rvs<]bͳ4Yn[4%;Nrand+ig^4`WAk+Rem!&P]ae=SN:߭wpvȂnrandxbRVOC%$R9irandpTl^R#b Z$+randD7]_*uuRE^J>ݞS6U\Uғ0@randIV6_ܞ6R1JȱADCS VxnI0, quarter_roundқ{Sx+ š2z double_round/mR#corelSn+7Xk4 $lGqze+S0 Wm~a˴ÁWz6d 4V5\ new_unseededG] H:RE Dzb~ s set_counterVfTK}+init^v(.8d~eDb Xզa;cupdate$8 QP8u?+=itnext_u320P@;0di:c`K=ޞ]XbE'aLy_e)reseedW_iMWa !|C'exq+}? from_seed2Oi3,n~ -5&?=@dBUrandMf _FcaH8$RAaz#5.g+.ρ hݠ23hD^ tݻ0:isaac.*c ŰN$ I-/FS|ZE;ϣug>TJ@-N"K /V})2WNP4PM%}S6Xyv޼'qeހQke8j7%ՁLJw32;P֗;@9U@ RAND_SIZE_LENb%X.BBV RAND_SIZE?7 O>RAND_SIZE_USIZE1}4j]Hp'EMPTY^z/5@%k (z` i- _ַ1ڒGZ_7p new_unseededmSCU\FeNyJinit(f# eO;M؂mixyJz޼Kmemloopg[l0$1٦QcjDJk isaacQ*)k!R``_ZMIDPOINT3^ I/{)ind95x+rngstepp }Ji9edrngstepn29 &Xě w!3VA2_㩣)e go{Hclone[cV@|rT~`zݪʫKnext_u32w| Y5kqDIGudxGA:.'a޿areseed{h)K.KOl$ah$ y2(] from_seedXvkr[TY+%"MbxZrandshO_c<GRS 9ýj_]o1V.vj]fmtԔ ) risaac64=jj5nW1°\,q8  3sJ8%#H].J Q {Y new_unseededĹ{uf ̔-bM2uI#e.B;next_u32EWaM(CFm ų: OISj{reseedQe_[bVK// f6$C7~ S from_seed+Sw8,17[ /}J;@];Z̊V7Rrand6-e.zsSDRiR1T!s0lƱwmM7;qg[=3j6S?z"Nu`MGaaik-Rand(ꛁ_5҈|rand3JuN["R9V3aۜ-Rng?b @ڳPnext_u320}?A);next_u643b^;)Vnext_f32Vb JZ+.^3Jx@ UPPER_MASKKCغ'I"V LOWER_MASK}ոm Na= nnext_f64Uz1=Z UPPER_MASK#VeDM  LOWER_MASK v Wt fill_bytesx#;uKigen5{=y;gT}-7d:gen_iter^/D %ƻj'a\=[7͠"T뛨y!|VK gen_range2: =pg X&fTY}t6Hgen_weighted_boolZ7*pa؀PEgen_ascii_charsx˴R-0>'a]DcjwZJscchooseQY[ oyl'a"kėw ƞ fill_bytes^ E 18/;{ly!R\mrM]K/next_u32BS|<1 next_u64[LYQZnext_f32m/tL,4next_f64&OF fill_bytes\\8CjޣE[Ra3=5cQ'a,ղ1 gMNy|ETrLlĦ<)ItRbnleHrItemdihw|~nexth{'}X&Y1Q>^pm3\ 谻'aKʔS}LÔ:<RJ}Mc#e;vItem&[sXYz2|nextcRa-l4(GEN_ASCII_STR_CHARSETUSYMC SeedableRngO! kSeed0m)KccYPreseedt0\VN> from_seedWG#'+7H߱&%@B#݇new'ՌzI'h0}next_u32̚Xr\ next_u64ߥ48/D2d%x_K)*'a.D҄bm# #kreseedvLv_#K_ from_seedvu䯉'weak_rng)b2 ѐŌCjm> "_reseed Hgp8~THREAD_RNG_RESEED_THRESHOLD9-07ԝThreadRngInner `UQ[9Yw thread_rng;{5`>L;~GE1Yޤ cݜEdEjg+next_u32h"M|KD|next_u64߷]mJ߾V  fill_bytesJu&?GߪOrandom=#|7:i &Tvf(bf asamplellk_ՌTe׫+ͧVI4-cR ,'U_Īa?UM$Rangeh]4m9}Z6X1N`ܨ UlowT2Z䩱˳ rangeզ|?[nvʠ accept_zone֖*J#:H$gLӜ^u%/,_BHXw0;̅aFfmt5Cw#1it;$ H۝R>+X v,RK$YsbӮz SsXL|sZ@cloneI^#FMuч+X$iɎدW.O)&construct_range?,lՓe6=  sample_rangeOre3JRKf-6@&$s@"(+Aconstruct_rangey]Iu&kS  sample_range%hWq!1v4fURV L7$Xj>EH$?4h:q˟construct_range VHF[ՈyRb sample_range߄.ނ R_R.<$ m4fJ[pconstruct_rangeyݦ, C"s sample_range x*"g@vRɊB±J;$ ꙯+\|construct_range$@;XjK*&v sample_rangeu/>|e2TwRЕrvB(T$ #Z%NXEconstruct_range46b3 sample_rangeUF!s"'kR8i`n iq($ @6C32dBzconstruct_range-trconstruct_rangeak@IPpx sample_rangem~@0 ŠFc"REw|\ F4_$JJH* a.0construct_range + ŽQ sample_range-tR= )S:$$pmA_\(>construct_rangeBS䡫ۑ8  sample_rangeY?/,CdRZcA+$0b ء 1 construct_rangekr(*99[; sample_ranget>C%m?c"Rm 0U_96A;GammaݰW 9`2reprm#U=YϘUī;\-- SP%G,Jfmt bz{;}fQPueil;m j0z(# clone69_D&O; GammaRepr*}-^v=gbLargeȣ.cEY0Jq*ެnVZi0 >#?:2;SOne>}EHQ,īق$%Uy-+0vG0U\C*)Small}puJh(k/K*0-($zr<&60)^aH;@_ǛufmtsU(ۛ;3[4cn;; ôg7CgcloneDSy"p̩0?;GammaSmallShapeLBhۼx inv_shapehfGWC+s large_shapeCH|Sa?dm;Җ'>Ě%r;Tfmt~vԧ9;3J ;vfU+]S`A$nclone>raNs;GammaLargeShape]C)T}?dVscalerMeۡ܊cyNHt*GԀdx,0USrm;S[VCEnfmt`qQ?*;&+T8Da^;u",Y(Yދclone[ĩTp{Y)N; ChiSquared[|4V^ҝAbtrepr"EDJ]z@{;[DZlI4>Rfmt(10ϡM<?=;;Yu0뾣`3`; V[h)}cloneΫBl'r&Ì6;ChiSquaredReprޓ-<%J DoFExactlyOne3>+CgLW#{(:uDoFAnythingElse^%WImz16t!k?ARnU>0*>Д$RIH,;!ICxY[>3%;fmt^;29j! p";"=QM+FHo=;#`Z#9_V,ncloneKK5}1;FisherF!a4ރf numermw|✞ denomeihiP;Z dof_ratiom13Mצҫ9Xr;$`ۅPp=fmt0Ur4^[;%ȞڭᨸNX+;&_tLk clone v vs >ngcclone/c2:ʿ"v LogNormal^DI*/nnorm] p@e3Gv s_n+^>WYfmtnYB07lPv =xvm|9"A\nclone8 Z/^}Exp1̜n xyQ vܳuCLjNSLO0s$|~ cf)7snFvCfmtNő2Pxf"-}pw4dYs5Tp9u*54clone~.UҍzExp F&Ą.lambda_inversey3ö|@&gf)6A{fmtl8`j P.&ػX[Bh.' i'(=21&Q#clone#ǭ4X,{]KW RandSampleR^޸oSSup #6"*3v״_markerqeZ(nkPX rGSupAADg,>MfmtK7=k^Weightedt V<&8T BscwweightqM\C2item1&` OB~ _Z8.WSe8TVvIj41fmt ugm%r5  \~: /Tqclone_yÎ{b"ʴ Buӱc.T7$UO(WeightedChoicekꎱY6A!*'a%@Qsu+r))TlXIH>~items2 6S ̙Z weight_rangepRDXe#ZYOR Iݝ+m.Yg'aӍ+zSЙD;T/w9- Pffmt-G 2 TimerError:hq0Y 4:eNoTimerۆ2E &ezDknrNR,ӑM CoarseTimers$krz7D:9\B120u NotMonotonic Vע xV{`Ld/TinyVariantions)SYQt" k˲#cY TooManyStuckfz0~+ Bc{$΅of`w__Nonexhaustiveph[ˬ 9MΩkɭrcO%o/$of17-Ijkassert_receiver_is_total_eq;j(Eeq{lh!?Yj 33)Nw:^?eq.Mt|_% km5H:clone8 H_ e8 f*g;ChufmtPD 'fReadRng{Si Qj7RIjZA<\ 5reader08*(W^k _=Rq~kUA"L Rw1Osl>J6SC ֙v~cD_I}x@ͧ/F>SCALE\r*^((l2O 0q 7/-,randpBaF|f>lR,T+3Wk1M^}ϡX<v#V{cDwrand%icHwe4RYrLw/ S!7⩷4\iFJrandoQPK약$`Rkռu))f32_rand_impls౏xELa)a7m]hA d qdRO ]27/6K.NtյEDԯ(aمy Y|OK]'wSCALEwt:_N)(;>Ade@-盈randPeY?~R|[?u JБyM%`(2$\randU)ɤ#i"Rs\ Ԋ|#A&ֱIYUrandN^P ; Rޖ\F("Ɛޤ a#-KAƄTLv6Zrand(ǟIBIRdMS~"GB*ڑ/zF6_A0e&pWjrand4'*̓۹phR,_x-©80֮xy b6AX34؆4TWpsBѶp =(3CMCՔxaE?rand_ vBFDyR CPzdסШe+Ap#-EXc1XBĩ;sC,]'[~Fچ$D_3QeB83ArandU^`-؇17R6!K_CT牓F.赛j)1֔Ar7tj,)$BQ^ݽ7$f'qC*)nb4T2 DEYV꾆PrE=WGT|>j,RrandtBzW&;;Rz6c3 6Trxb$l{Ho AKS'ϢdBNMhLNڱX|C9%!Sj=~D좀װ_?OE !~9F;S}ORErand.~)DF;cRTxyi>C@(qtz2yFA>OڂP$(qBzo8tq5TC-'X9b;aDslXPUE .FZP(ǏSxM8iGGLdh?randHߣ?oRB6 g|juo]3[CT`;!{Ai tLj,B&W/tVT&C!Gn驠6Ms(ZNNH'I9q:u$8JP5K^f@rand-hOjR!;:װ )/t7OЙBAF&2@}O~BOd$vJ3xCdUJIrԒDPŕ64_#4"\EN_,ϐh;cһ\#CF@U ]1Gx2?'#z˂7~H!NE| _%9gI L@jڏJ/njLT ׏Ku <)D*5]rand.ԧE¬R͗FRdݨ)$2 =d AŚF>4@쳧4BZ@i%`C!\a} cDX~Ac EMԼShF׺ (^ YQGٔ, Ȱ2(?H)n[&tw-B}I T!CC^}Jե#ZKC1r~EOb0նt/oEL|b*P<{lrandDI5$>_P:t YRO gk/:(^Di"a-vTAudՍg.3&  գ$OFrand 2v^٘@RJ'Rnm_*,h ٻV b"e;Y}@# :@Tؙ9bāj#} h+;7t}yrandoUI@4`+yR #B*wFaM0@XS V~Ex>PZLz%Z@ٮ٥T0U=Xq DwCJŸj8Q rand2FJ "GAIRyqWk3`{ 9Z]1u; W9 H!ZHE]KTzJj7q+`| =-˸>bBNrandUcBOm4LRt弛&W96f?H 9y/(&ՅrUFѳX~WJTKlk㋵=}\P #NMXDrand7N NwR YP$Pe z >hֿ` S12DhɎpi~LT\6OCqQ g`ͅMsv+qrandω2㺳ӻaNT R\SEK+O7w= aK!e\yhd Ҵ| ,P*N~+Vȧ@ T3%{P͂j)} Z2#bҡw> rande @Tr)S@ Rzy< ͓$ V@ie9%Z !#"2[kk T:*VP"/ BV&{ ~dC randv )S |- R;bLNɱz]L Qti& G"&0W5~Y e] T 9O^atg: 8T]m~ Kd8 rand<|uAr#L R^gP  أ (.is).]#C\7H TGFT.(* u˫as rand3+vw>X R)  gц O¶ $nΓꅉ=}3uה TXF=*, ٕ},oT% rand͏@=1#T} R(Q "7 53F%<8!2S; Tdh(ܔ݃ @{9K%T4  randP}6?" #4 RcLl F} 8W Ne&81`RR T/OGl] .ru (r.m\21 randVtr b^wI@ RqsH?2`=c aCJ3w H'M&vTwR_%D-3 TpA9_ qH%޷+; randS[3=n R 2~2~s - KNUOV(.n^M&-f}GYi7oj** T`Nݺ݆=N Z]U`d8w6> rand A]|  Rc>u3ر)6v qZuwh lt.>j \:?6 TskxClxT\I nz7ށ-OQM randmYF3ƻ[$F RK]uQ%] +) lˆ^D/<4vV k0 Tͤ؅>lAt~s *.1"  rand?ey2?|iض` RJy?FGJ([Y $6> K0#Tw8Φ/#cA TJ:PQWt 8(xWg rand:^uZ  RL:<S'c  Axu()M<1/-l F TGƸP뎛 GK;lD randc퓹,fXpcZ R5 Mar'$% z PX\Ddd@2~LëobAn' Tft#H>WآG DOW<$2 rand:֏Opݰk0`A  RST ۄj }c p:3qVM\{xe8 T%){r1P qԗ2Gnf randy^x)RJ R.k9pUr{$e 73 y0W 6,̠5̼0dًJ+l& TΞͽH" E>*] Wy*˜gѝX rand&E8ߵۋNB"Q Ra`I>; /ʛa*Z6"T~v9fSd Tb|`3yo֕ kIԬ1 randt,jG RK YC(JO.L 7mx$TO+FSw T>Vbd&~ ĠR`+n7 randSCϒHFoR RH8RL W͹kt Ij g+j| randp릶P=v Rק%[| e3ß0q 9xK cSW TaA^C" 츜,{I%[ randd@~ee R(qu`{l- R?qWlsp[H9:}^KCߟHN+  TSPw0 dI9 x|רFn"f randzgxӦ*5:TA Rr^[ G4k6.ET1B ChaChaRng Q0u{ bufferZ@܎r93*& X~D;l?xq<^'̖t(ՏO 0HNA@ ag ƃ bƃnybVLۋ c)un I8fGpq/@,rىH/4=W7v97P{b XorShiftRngn+$'k x>3ȋS ? yxr H) Ѥ z Z$zg=8 1I wC A;;U  fmtdc' =:FMK|i_bQ ?} clone<~}~M- U\s;r`JڗFGHl Generator'jWUdf`7A 'a̤8 Vn6 WJb*n TD%HH{ "y RJA+J<-E rng^uIYTˣ*ؔw= _marker=_MOC{ a{158LpP] 'a苪]ˬ Tזirx;0 RY\{$~[8 fmtU/PQﯨwYTAsciiGeneratorZ:ܑF 'a7H.w37pԉ RLf8[>-h rng_-Ŋhn ֧j0}c]); 'av)Nf#'6 Rzi1= fmt-UM|;5EOpen01_7>)u,P® Mw%|ʵe F5. z!Í 0t_) tXC( B X'4EBl Fs\*ԕd-+( fmtGDZNeClosed01.;Sxtl&Q ^’D:b FxBIeK 0۴p[%YeWS?d ;ywQiF6 Fi%$ȿά] fmt*JߪYxStdRngl,gXs rngyCӕ G9 -Z:yJva fmtأ=XU DŅkz/qoo cloneym5QYj&?o/~SnCThreadRngReseederAIw4f$گ w rV9osO-q9;)V fmt9b:u2t ThreadRng:Q\$<Xf rngArx 1H;Nc'/ q fmtNye2Wxv3lMאl) cloneP ƞz,`trTHREAD_RNG_KEYia+{cP __init 'VSQ  __getitrq0.u7= __KEY5}40.K+}hQٝ7ĈMU8)mvٖԸy`Jm5>\QBz$)nInLJ-[c2—߰Ɩ&5(#39}x5 9&FӰq0"C%.(*_ 4 @n@w :(w''lM LA-h4 BE v{Ec>lVJ mp; =ETr]!f9 QGk,j oP9YW0}?1zx"\&}z.0ˠ⸫4(9|5*g¯ۺIh.|.HgȰSRw}K|ee.8~}''N~U q[(~?1e:x>~xPx`_P{Vpi9z+(>!* !bTOĚ5ج3+ͽ_n - eiv^M?8, r|jNғ1OJ 3]PzIAu4"nVTWuQ0ΰiwվgHw^UZ"n쫸Ӿ~ߢt%JכU`5m|m|DᭋMZ:&6|Dhvq\S|5_Wzt$cހk,K';]i/iF}c]^T, (Z9 Kc]nRb+.Kc6UkyϒVE,/]&_ڶ \ r(z쒊|lM|' laY|&xqd'q)% Rru6pwʬPPFC~;gh/tY7~4MF13<פJ{)gi1~;2:v]vж"Lx@?麸3 i;EE{m^Z'%Mm1O6xJlQV `ʖ6|;AoLE+' UmU/EYp}*^ZQ;c !܏DگM4$Tł˘NBeM-͜GM'qv96>6_-^]FkN1ゑ El¬X^IM&({$o@4.Tf]!˼LCQO>w8bкv$(gKr;:Z. R70Ġ[8EkVZuaNi>lW__E{aØAbˁ5=obn[h0%6Ei]1m_q#r6Y.ڕȘZlH,4҃0&HCŎ= V)d=|AQKgYA{icz$zX)䓠V?9@X4B~͛x C`ה^$N8L ̌J;ѕQHqcFI` q >>7*Q,\.?,a8`ǣ6$--K$PktMcf߸0 GQ_LH &\ ,}>9ha,`d-0.L\n(K;PQǤf/sڒt=yop&Y#7Mܳ7j΃gyp]@R~1<u鶏ёu S H ,z{#v2Hk^`:`󹸱I*?Yk3XdeƆ2qsnh/t*1A*m(yRU;ɬ!T蒌zmC0Z[/Uej+e32 dZq18KH_ 1٘ <̡!Zn'Ekf zd]GpJcb>M[o$tpI OaLG`H,Wi=I`)מLG[9yYbH狤UaNiS1ɯgPsŴZE GnB|)H=۟12"$()`.C See the `distributions` submodule for sampling random numbers fromF+ distributions like normal and exponential.. # Usage G This crate is [on crates.io](https://crates.io/crates/rand) and can beJJ used by adding `rand` to the dependencies in your project's `Cargo.toml`.M ```toml  [dependencies]  rand = "0.4"  ```   and this to your crate root:   ```rust  extern crate rand;  ```   # Thread-local RNG  G There is built-in support for a RNG associated with each thread stored JG in thread-local storage. This RNG can be accessed via `thread_rng`, or JC used implicitly via `random`. This RNG is normally randomly seeded FF from an operating-system source of randomness, e.g. `/dev/urandom` on ID Unix systems, and will automatically reseed itself from this source G( after generating 32 KiB of random data. +  # Cryptographic security  J An application that requires an entropy source for cryptographic purposes ML must use `OsRng`, which reads randomness from the source that the operatingOH system provides (e.g. `/dev/urandom` on Unixes or `CryptGenRandom()` onK Windows). L The other random number generators provided by this module are not suitableO for such purposes.K *Note*: many Unix systems provide `/dev/random` as well as `/dev/urandom`.N; This module uses `/dev/urandom` for the following reasons:>@ - On Linux, `/dev/random` may block if entropy pool is empty;CJ `/dev/urandom` will not block. This does not mean that `/dev/random`MM provides better output than `/dev/urandom`; the kernel internally runs aPM cryptographically secure pseudorandom number generator (CSPRNG) based onPC entropy pool for random number generation, so the "quality" ofFM `/dev/random` is not better than `/dev/urandom` in most cases. However,PM this means that `/dev/urandom` can yield somewhat predictable randomnessPG if the entropy pool is very small, such as immediately after firstJK booting. Linux 3.17 added the `getrandom(2)` system call which solvesNM the issue: it blocks if entropy pool is not initialized yet, but it doesPH not block once initialized. `OsRng` tries to use `getrandom(2)` ifKJ available, and use `/dev/urandom` fallback if not. If an applicationMM does not have `getrandom` and likely to be run soon after first booting,PL or on a system with very few entropy sources, one should consider usingO! `/dev/random` via `ReadRng`.$E - On some systems (e.g. FreeBSD, OpenBSD and Mac OS X) there is noHI difference between the two sources. (Also note that, on some systemsLK e.g. FreeBSD, both `/dev/random` and `/dev/urandom` may block once ifN$ the CSPRNG has not seeded yet.)' # Examples ```rust  use rand::Rng;" let mut rng = rand::thread_rng();% if rng.gen() { // random bool!E println!("i32: {}, u32: {}", rng.gen::(), rng.gen::())H } ``` ```rust + let tuple = rand::random::<(f64, char)>();. println!("{:?}", tuple) ``` ## Monte Carlo estimation of π#M For this example, imagine we have a square with sides of length 2 and a unitPL circle, both centered at the origin. Since the area of a unit circle is π, O we have:   ```text 6 (area of unit circle) / (area of square) = π / 4 9 ```!!M So if we sample many points randomly from the square, roughly π / 4 of them!P should be inside the circle." "K We can use the above fact to estimate the value of π: pick many points in"NJ the square at random, calculate the fraction that fall within the circle,"M! and multiply this fraction by 4.#$# ```#5 use rand::distributions::{IndependentSample, Range};#8$ fn main() {$( let between = Range::new(-1f64, 1.);$+% let mut rng = rand::thread_rng();$(% let total = 1_000_000;% let mut in_circle = 0;%% for _ in 0..total {%- let a = between.ind_sample(&mut rng);%0- let b = between.ind_sample(&mut rng);&0 if a*a + b*b <= 1. {& in_circle += 1;& }'  }''+ // prints something close to 3.14159...'.= println!("{}", 4. * (in_circle as f64) / (total as f64));'@ }( ```(( ## Monty Hall Problem((4 This is a simulation of the [Monty Hall Problem][]:(7)M > Suppose you're on a game show, and you're given the choice of three doors:)PK > Behind one door is a car; behind the others, goats. You pick a door, say)NH > No. 1, and the host, who knows what's behind the doors, opens another*KJ > door, say No. 3, which has a goat. He then says to you, "Do you want to*MC > pick door No. 2?" Is it to your advantage to switch your choice?+F,L The rather unintuitive answer is that you will have a 2/3 chance of winning,OJ if you switch and a 1/3 chance of winning if you don't, so it's better to,M switch.- -J This program will simulate the game show and with large enough simulation-M: steps it will indeed confirm that it is better to switch..=.F [Monty Hall Problem]: http://en.wikipedia.org/wiki/Monty_Hall_problem.I/ ```/ use rand::Rng;/5 use rand::distributions::{IndependentSample, Range};/8/ struct SimulationResult {/ win: bool,0 switch: bool,0 }006 // Run a single simulation of the Monty Hall problem.09; fn simulate(random_door: &Range, rng: &mut R)1>* -> SimulationResult {1-+ let car = random_door.ind_sample(rng);1.2" // This is our initial choice2%2 let mut choice = random_door.ind_sample(rng);253" // The game host opens a door3%1 let open = game_host_open(car, choice, rng);343 // Shall we switch?3 let switch = rng.gen();4 if switch {4, choice = switch_door(choice, open);4/ }4 4< SimulationResult { win: choice == car, switch: switch }4? }55J // Returns the door the game host opens given our choice and knowledge of5MJ // where the car is. The game host will never open the door with the car.6MG fn game_host_open(car: u32, choice: u32, rng: &mut R) -> u32 {6J. let choices = free_doors(&[car, choice]);711 rand::seq::sample_slice(rng, &choices, 1)[0]74 }88? // Returns the door we switch to, given our current choice and8B5 // the open door. There will only be one valid door.880 fn switch_door(choice: u32, open: u32) -> u32 {93# free_doors(&[choice, open])[0]9& }99- fn free_doors(blocked: &[u32]) -> Vec {906 (0..3).filter(|x| !blocked.contains(x)).collect():9 }:: fn main() {:B // The estimation will be more accurate with more simulations:E! let num_simulations = 10000;;$;& let mut rng = rand::thread_rng();;)( let random_door = Range::new(0, 3);<+<7 let (mut switch_wins, mut switch_losses) = (0, 0);<:3 let (mut keep_wins, mut keep_losses) = (0, 0);<6=< println!("Running {} simulations...", num_simulations);=?" for _ in 0..num_simulations {=%7 let result = simulate(&random_door, &mut rng);>:>, match (result.win, result.switch) {>/. (true, true) => switch_wins += 1,?1- (true, false) => keep_wins += 1,?01 (false, true) => switch_losses += 1,?40 (false, false) => keep_losses += 1,@3 }@  }@ @6 let total_switches = switch_wins + switch_losses;@9/ let total_keeps = keep_wins + keep_losses;A2AB println!("Switched door {} times with {} wins and {} losses",AE: total_switches, switch_wins, switch_losses);B=BD println!("Kept our choice {} times with {} wins and {} losses",BG3 total_keeps, keep_wins, keep_losses);C6CI // With a large number of simulations, the values should converge toCL% // 0.667 and 0.333 respectively.D(9 println!("Estimated chance to win if we switch: {}",D<: switch_wins as f32 / total_switches as f32);E=8 println!("Estimated chance to win if we don't: {}",E;5 keep_wins as f32 / total_keeps as f32);F8 }F ```FFdocFFH html_logo_urlF F9https://www.rust-lang.org/logos/rust-logo-128x128-blk.pngF;G html_favicon_urlGG%https://www.rust-lang.org/favicon.icoG'G html_root_urlH Hhttps://docs.rs/rand/0.4HFHdenyHHH missing_debug_implementationsHH'      P markerιȹ RngܹܹRandRangeGamma ChiSquared  FisherFĺĺStudentTͺͺNormal LogNormal  Expʻ P$ Sampling from random distributions.'F This is a generalization of `Rand` to allow parameters to control theIE exact properties of the generated values, e.g. the mean and standardHC deviation of a normal distribution. The `Sample` trait is the mostʷFA general, and allows for generating values that change some stateDC internally. The `IndependentSample` trait is for generating valuesָF" that do not need to record state.% !"#$;vػwڨmè$wڨmè$Rng$Sample$IndependentSample$л' Generating numbers between two others.ѧ*% &'()*-15 $,XX++˥5˥ ˥˥ lowhigh: Create a new `Range` instance that samples uniformly from=( `[low, high)`. Panics if `low >= high`.+ ,˥˥˥ť** ҳ< ҳ<ҳ< ҳ<ҳ< ҳ<ҳ< ҳ<ҳ<ڳ ڳڳڳ ڳ ˥˥ ڳ ҳ< ҳ<ô   ' 6˥ ' 1 &ӫ$Range::new called with `low >= high`$$$ Ĵô ôôô ôôô  ť˥˥ҳ<ڳ ˥ڳ'˥'˥ôôlowhigh ʹ$ȴ/SupSup..ʹ5Ҵ selfrng$Iinline  /R  հ-R00-հհѵѵƵ հƵԵԵ׵I   հ ѵself rngI ߵ$ڵ3Sup22ݯߵ selfrng$e 3հ 1R441ض$ض 7հض$eʶض$ض$selfrnge > The helper trait for types that have a sensible way to sampleA@ uniformly between two values. This should not be used directly,ȷC# and is only to facilitate `Range`.&67Self55Self˸˸lowܺhighɺ91 Construct the `Range` object that `sample_range`׸4< requires. This should not ever be called directly, only via?: `Range::new`, which will check that `low < high`, so thisԹ=+ function doesn't have to repeat the check..̺ 655rrng>> Sample a value from the given `Range` with the given `Rng` asA a source of randomness.λ 7հ 5R885Rng;Open01 ;Open01 ;StandardNormal;StandardNormal;IndependentSample;Sample;Exp;Large;Large;One;One;Small;Small; DoFExactlyOne ; DoFExactlyOne ;DoFAnythingElse;DoFAnythingElse;cfg featurestd߻% The Gamma and derived distributions.(<=>?@ A BCDEFHJLORUX[^`cfhknps;Gshapescale; Construct an object representing the `Gamma(shape, scale)`> distribution.( Panics if `shape <= 0` or `scale <= 0`.+inline  GFF:  :. .:. .:  :0 0:0//ͫ#ӫ!Gamma::new called with shape <= 0!!!/0        ?  11ͫ#ӫ!Gamma::new called with scale <= 0!!!1   ?     ?     One    && K &&& I &- Small-  - Large-      : :    -&---&--shapescalerepr ;Ishapescale;HH;Kshapescale;Ձ؁JJ;lMselfrng;̃Iσ MR  LRNNރLփك ̃I ރ   selfރ rng̃I;vPselfڄrng;ÄIƄ P ORQQՄÖ́Є ÄI Մ  selfՄ rngÄI;vSselfхrngׅ;I S RRTT̅RąDž I ̅ ׅ self̅ rngׅI;VselfʆrngІ; V URWWɆUĆ      Large        Small Oneɇɇև և ɇˇ  ˇه هه   !! ɆІ  ɇևselfɆrngІggg ;Yselfrng;ӈֈ Y XRZZX    ݉݉ ҉ ҉           9  ӈr 9 99݉999selfrnguӈ;\selfЊrng֊; \ [R]]ϊ[NJʊ ̋ۋ ۋۋ  ۋ   ՋՋ?         P Œ Ռ ٌ ٌٌٌ ٌ   Œ !ƍƍƍƍ؍f؍ ؍؍܍ϼ?܍܍?؍  ؍f؍f؍f؍f ؍f؍f؍f 2 !! ! Ս !)" #$$ #?$$%&&'()) (?))*++ +*  +'(**(%&''&)"#%%#2  "" ؍f ؎ ,؎-؎-.. ؎ ,-..- / /؎,//, ȋь0ϊ֊̋ۋ ۋ ՌٌٌƍՍ؍fՍ؍ Ս؍Ս܍ՍՍՍՍՍ2ՍՍՍ)Ս ՍՍՍՍՍՍՍՍю؎ ю؎юю selfϊrng֊xv_cbrt̋vՌ ux_sqr;Ö_kʗ> Create a new chi-squared distribution with degrees-of-freedomٖA `k`. Panics if `k < 0`.Ɨ _^^;ޙqaselfrng;I a `Rbb`ǚǚ ʚʚ͚I   ǚself rngI;Кdselfrng; d cReecڛ  ڛ   DoFAnythingElse       › œœ ؜ٜ    ̝a+ ڛ   selfrngnormg ;gmn4 Create a new `FisherF` distribution, with the given79 parameter. Panics if either `m` or `n` are not positive.< g×ff;ni××selfrng;٦Iܦ i ×hRjjh ×٦I ×  ×self rng٦I;l××selfrng;ӧ֧ l ×kRmmk7          Ĩ Ĩ7ĨĨȨ Ȩ H ը ըܨӧ H7HH HHH HHȨselfrngӧ;on8 Create a new Student t distribution with `n` degrees of; freedom. Panics if `n <= 0`.Ѭ  onn;oqselfrng;خIۮ q pRrrp خI   self rngخI;tselfrng;ӯ֯ t sRuusðİΰΰհ,հ%ְ ְ            հ%    հ, ΰ3ӯy ΰ3ΰΰ3հ,ΰ3հ%ΰ3ְΰ3ΰ3ΰ3selfrngnormӯRngvRandvOpen01 vOpen01 vziggurat vziggurat_tablesvSamplevIndependentSamplevcfg  featurestd& The normal and derived distributions.ܿ)wxyz {|}~v rng v  R   ۴        ۴۴۴۴۴۴rngxvinline     @ > x>  rnguv/inline  ³R ?          W           )  W W WWrnguxyx_ y_vmeanstd_dev> Construct a new `Normal` distribution with the given mean andA standard deviation. # Panics  Panics if `std_dev < 0`.inline   AAL LAL LGGMMͫ'ӫ%Normal::new called with `std_dev` < 0%%%MAGGmeanstd_devvmselfrngvI  R I   self rngIvselfrngv  R        _   selfrngnvmeanstd_dev= Construct a new `LogNormal` distribution with the given mean@ and standard deviation. # Panics  Panics if `std_dev < 0`.inline   DDQ QDQQ RRͫ*ӫ(LogNormal::new called with `std_dev` < 0(((R.  D...meanstd_devvpselfrngvI  R I   self rngIvselfrngv`  R   ݻ` selfrng`ȼ RngRandziggurat ziggurat_tablesSampleIndependentSamplecfg  featurestd The exponential distribution.!rng inline   ³R۴  ۴        ۴۴۴۴۴۴rngxinline    ݻ8  x8  rng_u0inline  ³R  2{222rng_u{lambda 5 Construct a new `Exp` with the given shape parameter8# `lambda`. Panics if `lambda <= 0`.&inline  <  < independent of all others, assuming the `Rng` used has this? property. SelfSupportself0 Generate a random value.  R %Supݯ M Supݯself !  ! self! SupݯselfrngI հ R հI  self rngI SupݯselfrngJ հR  հJ selfrngJ }Supݯ[ + +[[  'aT'aT items  Create a new `WeightedChoice`." Panics if: - `items` is empty - the total weight is 07 - the total weight is larger than a `u32` can contain.: 'a 'a G >  G` `G``   >  aaͫ*ӫ(WeightedChoice::new called with no items(((a  (7        )        S   Sc cSc Some    &    &     bbͫoӫLWeightedChoice::new called with a total weight larger than a u32 can containLLLb& Some   c    ,ddͫ5ӫ3WeightedChoice::new called with a total weight of 0333d   G  &   S  items running_totaliter __next valitemn 'a'aTselfrngG 'a R G    self rngG  'a'aTselfrng  'a R !  $              $  b    >                !    "#$$%$ %$     %        %      !  ! !  #%$&' #& '&#"# ""#'   ( $         %   Տ Տselfrng sample_weight idxmodifier i    rng symmetric x_tabf_tabpdf zero_case FC Sample a random number using the Ziggurat method (specifically theF= ZIGNOR variant from Doornik 2005). Most of the arguments are@ directly from the paper: * `rng`: source of randomness!Y * `symmetric`: whether this is a symmetric distribution, or one-sided with P(x < 0) = 0.\ * `X`: the $x_i$ abscissae.C * `F`: precomputed values of the PDF at the $x_i$, (i.e. $f(x_i)$)F8 * `F_DIFF`: precomputed values of $f(x_i) - f(x_{i+1})$;* * `pdf`: the probability density function-? * `zero_case`: manual sampling from the tail when we chose theB bottom box (i.e. i == 0)cfg featurestdinline always PZ³ɋɋԙٙRPZԙٙԙԙٙ³ٙ#   ށށ                              % %  @ ?%        ! !  !   !"" #" #"!#" $  % !$  %$!  !  ! :&& ;&߁܁܁܁܁ ܁ ܁ށށ;&D+;, -.// 0/ 0/ ;& ' '())**()(* ٙ'(*)('.0/ 1  2 .1  21. -.,34566 78 67 87656 9:;; <; <;:<; =  > :=  >=: 9:45995?@@@? @,34??4;,-33-ABBCDDCD ԙBCA  DCBD+ ,AA:6.,i+!"܁܁܁܁ ܁ ܁܁+ ˁ܁܁܁܁ ܁ ܁܁+āE ۴۴ԙٙ         Տ   ٙ iDi;i iiՏ  i,iiii iiՏ  iiii ԙii rng symmetric x_tabf_tabpdf zero_case bitsi f uxtest_x(1u64 << 53) as f64'  5 5 ''  'PRngfmtmem ptr  AtomicUsize  ATOMIC_USIZE_INIT OrderingPB Non-physical true random number generator based on timing jitter.E 64 @   32# ### MEMORY_BLOCKS * MEMORY_BLOCKSIZE <     <<Տ <   MEMORY_SIZE          J A true random number generator based on jitter in the CPU execution time,M" and jitter in memory access time.%D This is a true random number generator, as opposed to pseudo-randomGI generators. Random numbers generated by `JitterRng` can be seen as freshLJ entropy. A consequence is that is orders of magnitude slower than `OsRng`M' and PRNGs (about 10^3 .. 10^6 slower).*M There are very few situations where using this RNG is appropriate. Only veryPJ few applications require true entropy. A normal PRNG can be statisticallyML indistinguishable, and a cryptographic PRNG should also be as impossible toO predict. L Use of `JitterRng` is recommended for initializing cryptographic PRNGs whenO `OsRng` is not available. This implementation is based on#@ [Jitterentropy](http://www.chronox.de/jent.html) version 2.1.0.C      3selff`   2self    3selffh pcfg featurestd self @   6cfg featurestd66 6 Create a new `JitterRng`.& Makes use of `std::time` for a timer.)D During initialization CPU execution timing jitter is measured a fewGF hundred times. If this does not pass basic quality tests, an error isIE returned. The test result is cached to make subsequent calls faster.Hcfg featurestd timer  Create a new `JitterRng`.I A custom timer can be supplied, making it possible to use `JitterRng` inL `no_std` environments.* The timer must have nanosecond precision.-H This method is more low-level than `new()`. It is the responsibility ofKG the caller to run `test_timer` before using any numbers generated withJ1 `JitterRng`, and optionally call `set_rounds()`.4 selfroundslC Configures how many rounds are used to generate each 64-bit value.FD This must be greater than zero, and has a big impact on performanceG and output quality.F `new_with_timer` conservatively uses 64 rounds, but often less roundsIG can be used. The `test_timer()` function returns the minimum number ofJG rounds required for full strength (platform dependent), so one may useJ9 `rng.set_rounds(rng.test_timer()?);` or cache the value.<  selfn_bitsinline never selftime var_rounds $ inline never self var_rounds inline never self current_delta  self   self  inline  never self  self *G Basic quality tests on the timer, by measuring CPU timing jitter a fewJ hundred times.H If succesful, this will return the estimated number of rounds necessaryKG to collect 64 bits of entropy. Otherwise a `TimerError` with the causeJ! of the failure will be returned.$ self var_rounds B Statistical test: return the timer delta of one normal run of theE# `JitterEntropy` entropy collector.&F Setting `var_rounds` to `true` will execute the memory access and theIF CPU jitter noice sources a variable amount of times (just like a realI `JitterEntropy` round).C Setting `var_rounds` to `false` will execute the noice sources theFH minimal number of times. This can be used to measure the minimum amountKI of entropy one round of entropy collector can collect in the worst case.L # Example H Use `timer_stats` to run the [NIST SP 800-90B Entropy Estimation Suite]K< (https://github.com/usnistgov/SP800-90B_EntropyAssessment).?C This is the recommended way to test the quality of `JitterRng`. ItFG should be run before using the RNG on untested hardware, after changesJF that could effect how the code is optimised, and after major compilerI+ compiler changes, like a new LLVM version..H First generate two files `jitter_rng_var.bin` and `jitter_rng_var.min`.KI Execute `python noniid_main.py -v jitter_rng_var.bin 8`, and validate itL9 with `restart.py -v jitter_rng_var.bin 8 `.<I This number is the expected amount of entropy that is at least availableLG for each round of the entropy collector. This number should be greaterJ4 than the amount estimated with `64 / test_timer()`.ń7B Execute `python noniid_main.py -v -u 4 jitter_rng_var.bin 4`, andEJ validate it with `restart.py -v -u 4 jitter_rng_var.bin 4 `.ӅMG This number is the expected amount of entropy that is available in theJF last 4 bits of the timer delta after running noice sources. Note thatIF a value of 3.70 is the minimum estimated entropy for true randomness.‡IB Execute `python noniid_main.py -v -u 4 jitter_rng_var.bin 4`, andEJ validate it with `restart.py -v -u 4 jitter_rng_var.bin 4 `.MG This number is the expected amount of entropy that is available to theJI entropy collecter if both noice sources only run their minimal number ofLF times. This measures the absolute worst-case, and gives a lower boundԊI for the available entropy.ŋ ```rust,no_run͋ use rand::JitterRng; # use std::error::Error; # use std::fs::File; # use std::io::Write;nj #, # fn try_main() -> Result<(), Box> {/ fn get_nstime() -> u64 {- use std::time::{SystemTime, UNIX_EPOCH};č0E let dur = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();H8 // The correct way to calculate the current time isΎ;C // `dur.as_secs() * 1_000_000_000 + dur.subsec_nanos() as u64`FE // But this is faster, and the difference in terms of entropy isُH( // negligible (log2(10^9) == 29.9).+4 dur.as_secs() << 30 | dur.subsec_nanos() as u64֐7 }G // Do not initialize with `JitterRng::new`, but with `new_with_timer`.J> // 'new' always runst `test_timer`, and can therefore fail toAF // initialize. We want to be able to get the statistics even when theI // timer test fails.5 let mut rng = JitterRng::new_with_timer(get_nstime);8B // 1_000_000 results are required for the NIST SP 800-90B EntropyE // Estimation SuiteJ // FIXME: this number is smaller here, otherwise the Doc-test is too slowϔM const ROUNDS: usize = 10_000;!? let mut deltas_variable: Vec = Vec::with_capacity(ROUNDS);ǕB> let mut deltas_minimal: Vec = Vec::with_capacity(ROUNDS);AԖ for _ in 0..ROUNDS {ܖ7 deltas_variable.push(rng.timer_stats(true) as u8);:7 deltas_minimal.push(rng.timer_stats(false) as u8);: }F // Write out after the statistics collection loop, to not disturb theI // test results.ט> File::create("jitter_rng_var.bin")?.write(&deltas_variable)?;A= File::create("jitter_rng_min.bin")?.write(&deltas_minimal)?;@ # # Ok(())  # } # # fn main() { # try_main().unwrap();š # } ```cfg# featurestd ވdatatimeۈ( 7441392450524785545)׶Ȣg))) 300 100d3x  cfg$ featurestd ߞѝcfgѝ$ԝ؞ not՝؝מ anyٝܝ֞ target_osݝ macos target_os ios target_os windows  all՞ target_arch wasm32 notԞ target_os ƞ emscriptenȞ ϝ   dummy  TTɫɫɫɫ  ϫЫګګګ  ګdS ɫ ɫګdummyretself  self ? selfïdestɯ   Qiofmtmem Rng_Q QcfgQ%QQ featureQQstdQQ: Interfaces to the operating system provided random numberظ= generators.B A random number generator that retrieves randomness straight fromE( the operating system. Platform sources:+B - Unix-like systems (Linux, Android, Mac OSX): read directly fromEC `/dev/urandom`, or from `getrandom(2)` system call if available.F! - OpenBSD: calls `getentropy(2)`$3 - FreeBSD: uses the `kern.arandom` `sysctl(2)` mib6A - Windows: calls `RtlGenRandom`, exported from `advapi32.dll` asԼD `SystemFunction036`.@ - iOS: calls SecRandomCopyBytes as /dev/(u)random is sandboxed.C= - PNaCl: calls into the `nacl-irt-random-0.1` IRT interface.@E This usually does not block. On some systems (e.g. FreeBSD, OpenBSD,HB Max OS X, and modern Linux) this may block very early in the initE3 process, if the CSPRNG has not been seeded yet.[1]̿6? [1] See for a moreB in-depth discussion.   ίίίN Create a new `OsRng`. self 3  self 3 selfv? ݤ~3selff\  444fill_buf3cfg& not target_env sgx   ݸ888fill_buf3cfg' not target_env sgx иlibcnext_u32 next_u64 ioFile RngReadRng OsGetrandomRngOsGetrandomRng OsReadRng  OsReadRng  "cfg' all unix not target_os ios not target_os nacl not target_os freebsd  not target_os fuchsia  not target_os openbsd  not target_os redox buf ,cfg' all target_os linux any target_arch x86_64 target_arch x86 target_arch arm target_arch aarch64  target_arch powerpc  number 6 Y 318'cfg( target_arch x86_64'' 'v% 0            )                      -    0   - 0 # l    ѱѱ-   bufresult available err  *Some *l#cfg( all target_os linux any target_arch x86_64 target_arch x86 target_arch arm target_arch aarch64  target_arch powerpc  !)  )!!! ) 0000 003ί Q     OsReadRngί ίѱίίself   ίself  selfv ݤQio  Read  mem  Rng  `Q QcfgQ*QQ featureQQstdQQ1 A wrapper around any Read to treat it as an RNG. 4  R  r  X& Create a new `ReadRng` from a `Read`. )     )   X   ) r  X  R  self           )                            )  /ѱ                 >                 (     )ѱ                  self buf  self          )                          )                                 (    )                 self buf  self v  } ݤ       >     "                         "      V V  }       "     self v  } r buf  ; ݤ Q Default  Default  Rng   SeedableRng  qQ6 A wrapper around another RNG that reseeds it after it 9, generates a certain number of random bytes. /   32 * 1024  4C How many bytes of entropy the underling RNG is allowed to generate F before it is reseeded           4 4  4   RsdrRRsdr      rng generation_threshold reseeder 1 7 Create a new `ReseedingRng` with the given parameters. :  # Arguments  - * `rng`: the random number generator to use. 0U * `generation_threshold`: the number of bytes of entropy at which to reseed the RNG. X+ * `reseeder`: the reseeding object to use. .                               rng generation_threshold reseeder  self   > Reseed the internal RNG if the number of bytes that have been A generated exceed the threshold. #       1     1       #       #           b b          1     #    self       RRsdr   ň self      ʐ                           ̔  ̔    self  self      ʐ                           ̔  ̔    self  self dest    ʐ ݤ                     ) )  )                   ̔   ̔     )    self dest      հRsdr ĥ SSRRsdrۥ   հۥ  ĥ  ĥ հ ĥ  self     ۥ հĥ   ԥ          ĥ  ۥ   հ     հۥ           ĥ   ĥ   ĥ     f f              f    ԥ ĥ ۥ   ۥ ĥ  self rsdr seed   8 Create a new `ReseedingRng` from the given reseeder and ;< seed. This uses a default value for `generation_threshold`. ? ۥ հĥ ԥ   ĥ  ۥ      հۥ      հ     ĥ           ԥ ĥ ۥ  հ  ۥ  ĥ rsdr seed      ^@ Something that can be used to reseed an RNG via `ReseedingRng`. C  # Example   ```rust & use rand::{Rng, SeedableRng, StdRng}; )/ use rand::reseeding::{Reseeder, ReseedingRng}; 2 ' struct TickTockReseeder { tick: bool } *- impl Reseeder for TickTockReseeder { 0- fn reseed(&mut self, rng: &mut StdRng) { 0- let val = if self.tick {0} else {1}; 0 rng.reseed(&[val]);  self.tick = !self.tick; # }  }  fn main() { 0 let rsdr = TickTockReseeder { tick: true }; 3 ( let inner = StdRng::new().unwrap(); +6 let mut rng = ReseedingRng::new(inner, 10, rsdr); 9 B // this will repeat, because it gets reseeded very regularly. E? let s: String = rng.gen_ascii_chars().take(100).collect(); B println!("{}", s);؀  }   ``` SelfR self΁ rngԁ  " Reseed the given RNG.   հɁ   ӽ R   self rng  L   ӽ          L   * *  L  ӽ   self rng  L bӽ ӽ ۄ 7ބ  ӽ RRng  HashMapӜ 4 4R QcfgQ/QR anyQQR featureQQstdQQ featureQRallocRQ-9 Functions for randomly accessing and sampling sequences.՚ <    rng iterable amounṭ # : Randomly sample `amount` elements from a finite iterator.ĝ =  The following can be returned: "\ - `Ok`: `Vec` of `amount` non-repeating randomly sampled elements. The order is not random. _^ - `Err`: `Vec` of all the elements from `iterable` in sequential order. This happens when the aY length of `iterable` was less than `amount`. This is considered an error since exactly \+ `amount` elements is typically expected.Ƞ . I This implementation uses `O(len(iterable))` time and `O(amount)` memory. Lȡ  # Example̡ ڡ  ```rustޡ  use rand::{thread_rng, seq};   let mut rng = thread_rng(); = let sample = seq::sample_iter(&mut rng, 1..100, 5).unwrap(); @ println!("{:?}", sample);  ```  I  # TIR     (   (  * 6  4  5     Ȥ ( Ȥ  Ҥ 4Ҥ Ҥ ݤ      #    ,            ) (            )     Ū      ,  (     "           #           1 2 2  #21     4    )       (                 ) #        5      Some   5          5  6  ѧ  է !է ! " # $ $ %$   %$ % #% $ & & '#&  '#&% "' & #է ٧ ! " %٧  " ! ( ) * + +    +*%  )* + , ,    >),(%  , ) - ( - V . .(Some ƨ /ƨ 6ƨ ƨ / .'&  * ( 6( 6    5       0 0 Ok 0  0  2 1 3 3 Err 3  3 Ū Ū 4)Ū 4Ū Ū Ū ƪ Ū 4Ū Ū Ū 4  5  ! 5!" 6  # 6#$ ./ % ./ɨ /ب . V 6  #Ū 4Ū Ū   ٤     ͧ  -7 ޣ   ̣    ݤ   ,                            ѧ է    Տ  Տ  V  V    V  V  V   ƨ      Ū    rng iterable amounṭ iter  reservoirݤ iter __next val i elem kѧ  spot .                                 i slice   rng slice amount   q6 Randomly sample exactly `amount` values from `slice`.Ȫ 9 2 The values are non-repeating and in random order. 5 6 This implementation uses `O(amount)` time and memory. 9 ! Panics if `amount > slice.len()` $  # Example   ```rust  use rand::{thread_rng, seq};Ŭ   let mut rng = thread_rng(); ( let values = vec![5, 6, 1, 3, 4, 6, 7]; +; println!("{:?}", seq::sample_slice(&mut rng, &values, 3)); > ```  ³  #RT   ׮            >      (   (   ӯ  ӯ     #   ٯ  5    )        #       >           )  )7        5  (       1            n        ӯ  5   )          rng slice amount indices out    ߵ               ߵ     ߵ     i slice  ߵ  rng slice amount   l: Randomly sample exactly `amount` references from `slice`. = 6 The references are non-repeating and in random order. 9 6 This implementation uses `O(amount)` time and memory. 9ܱ ! Panics if `amount > slice.len()` $  # Example   ```rust  use rand::{thread_rng, seq}; Ȳ  let mut rng = thread_rng();̲ ( let values = vec![5, 6, 1, 3, 4, 6, 7]; +? println!("{:?}", seq::sample_slice_ref(&mut rng, &values, 3)); B ```۳  ³ 'a # 'aRT   ̴  ڴ               (   (         #    .   ̵ " ̵  ̵ ̵ ̵ ̵ ̵ ̵  ̵  ̵ ҵ ̵ Ե   Ե  ٵ ߵ ߵ ߵ ߵ   ̵ "۵  )    ۵     .ŵ  (#     ŵ *          ִ  gʒ     ڴ      . ʒ ؒ ̵ " ̵  ̵  ̵ ͂ ̵  ߵ  ߵ rng slice amount indicesڴ out    rng length amount ! c; Randomly sample exactly `amount` indices from `0..length`. > 2 The values are non-repeating and in random order. 5 6 This implementation uses `O(amount)` time and memory. 9 ` This method is used internally by the slice sampling methods, but it can sometimes be useful to cC have the indices themselves so this is provided as an alternative. F  Panics if `amount > length`  ³ R            b Ѻ                ||ͫ 6ӫ4`amount` must be less than or equal to `slice.len()`444|       )   )          +      +             ͹                +  +  +  )  )  ) rng length amount    rng length amount ! gJ Sample an amount of indices using an inplace partial fisher yates method. M V This allocates the entire `length` of indices and randomizes only the first `amount`. Y+ It then truncates to `amount` and returns. . Z This is better than using a HashMap "cache" when `amount >= length / 2` since it does not ]6 require allocating an extra cache and is much faster. 9 ³ R    t         t tt t     # ͫӫ"assertion failed: amount <= length?"""                   (                   (                  )             , - - . .   #-.,    Some                                       ! " # # $ $  #$"  !" $ # % & & ' '   &'% ' & %! ! % " ( ( ) * * + +  ܶ *+) + * )( ( )      . - ,N/N0 1 2 2   #21  2N01N3N3N/ 0N/ 3N3N0N4N4/ N 5N 5/ N6N7N 8N 84N 9N 95N7 89N9N8N6 7N7N6Q6Q5Q4R1R/ %ɧ%:ɧ%;ʧ$<PG=PG>PG?PGQPG ӫPG?QPG>?PG=>  ӫQ>ʧ$@ʧ$Aʧ$Bʧ$Cʧ$DQ EQ FQ F4Q EFQ GQ HQ H5Q GHʧ$D  Eʧ$D GGEQ IQ ID Q JQ JD ʧ$ KQ  LQ  LIQ  MQ  MQ  3     2ʧ$ ʧ$ 3 LMKʧ$ M Lʧ$ NQ  OQ  OJQ  PQ  PQ   ʧ$ ʧ$ OPNʧ$  P Oʧ$ C KN N KJIʧ$BCʧ$ABʧ$@A  Aʧ$ʧ$ 3=@<ʧ$@=ɧ%;<ɧ%:;B 1:B        VNʧ$R    t                            ͂   ͂           N  NN NN N͂ N N N N NNNNNN NN B ɧ%B ɧ%B ʧ$BǾ PGB PGB PGB ʧ$B  ʧ$B ʧ$B ʧ$B  ʧ$B Q B Q B Q B Q  Q  Q B ʧ$B Q B Q B ʧ$B Q B Q  PGrng length amount indices iter __next val i j tmp left_valN4 right_valN 5arg0Q  Iarg1Q  J PG ӫPGӫ-assertion failed: `(left == right)` left: `---PGӫ `, right: `  PGӫ`PGPG        VNʧ$ PG PGPG  rng length amount ! tR This method performs a partial fisher-yates on a range of indices using a HashMap U+ as a cache to record potential collisions. . Z The cache avoids allocating the entire `length` of values. This is especially useful when ]@ `amount <<< length`, i.e. select 3 non-repeating from 1_000_000 C ³ R   " t         t tt t         ͫӫ"assertion failed: amount <= length?"""                                                         N0N1 2 3 3   32    Some                                 4         Q  ! !Some  ! ! Q   " # $ $ % & & %&   $%#  % $ ' # ' " Q  ( (#Some  "( ( Q & #  )  *  *  +  +  ,  ,     *+,)   ,  +  *  ) -  .  .  /  /"   #./-   /  .  - "       3N12N4N4N0 1N0 4N4N1N5N50 N 6N 60 N 7N 8N  9N  95N  :N  :6N 8 9:N :N 9N 7 8N 8N 7Q 7Q6Q5R2R0 !%ɧ% ;ɧ% <ʧ$ =PG >PG ?PG @PG RPG PG @RPG ?@PG >?Ǿ Q ?ʧ$ Aʧ$ Bʧ$ Cʧ$ Dʧ$ EQ  FQ  GQ  G5Q  FGQ  HQ  IQ  I6Q  HIʧ$ E Fʧ$ E H H FQ  JQ  JE Q  KQ  KE ʧ$ LQ  MQ  MJQ  NQ  NQ   ʧ$ ʧ$ MNLʧ$ N Mʧ$ OQ  PQ  PKQ  QQ  QQ   ʧ$ ʧ$ PQOʧ$  Q Pʧ$ D LO O L K Jʧ$ CDʧ$ BCʧ$ AB  Bʧ$ ʧ$ >A= ʧ$ A >ɧ% <=ɧ% ;<B  ;B              Nʧ$ S    t   4                                        N NN NN N͂ N N N N NNNNNN NN B ɧ%B ɧ%B ʧ$BǾ PGB PGB PGB ʧ$B ʧ$B ʧ$B ʧ$B ʧ$B Q B Q B Q B Q  Q   Q  B ʧ$B Q B Q B ʧ$B Q B Q  PG rng length amount cache out iter __next val i j tmp e  !x  "x  (left_valN 5 right_valN  6arg0Q  Jarg1Q  K PG ӫPGӫ-assertion failed: `(left == right)` left: `---PGӫ `, right: `  PGӫ`PGPG            Nʧ$  PG PGPGR ChaChaRngS  SR[$ The ChaCha random number generator.S'SIsaacRngT T Isaac64RngT  T 2Sf# The ISAAC random number generator.S&T char  mem  Rand  Rng  bT6 The implementations of `Rand` for the built-in types. 9  rng    inline 4  ³R                                                rng   nrng   G inline 4  ³R               G      rng  G qrng   I inline 4  ³R               I      rng  I qrng   I inline 4  ³R               I      rng  I qrng   I inline 5  ³R        ȝ       I      rng  I rng    inline 5  ³R                                               rng   nrng   G inline 5  ³R               G      rng  G qrng   I inline 5  ³R               I      rng  I jrng   B inline 6  ³R            B    rng  B jrng   B inline 6  ³RÀ   ܀ ܀ ܀  ȝ     B΀  ܀ ܀ rng  B rng    inline 6  ³R     *             *   *       * Some        *       rng c    2097151 #   # #  # vrngÓ   M inline 6  ³Rȓ                     Mӓ Ó       rngÓ  M N ' inline 7 ™  ³Rҙ Ǚ ʙ   'ݙ ϙ  '   T  rng  ١ ͡ inline͡ 7ˡ ܡ  հ հ R         հ   Vբ  V      հ   Some   V  ١    V  V     rng ١ T ChaChaRng  IsaacRng   Isaac64Rng   XorShiftRng  nT F Pseudo random number generators are algorithms to produce *apparentlyұ I? random* numbers deterministically, and usually fairly quickly. B ߲ H So long as the algorithm is computationally secure, is initialised with KL sufficient entropy (i.e. unknown by an attacker), and its internal state is OA also protected (unknown to an attacker), the output will also be DF *computationally secure*. Computationally Secure Pseudo Random NumberŴ IE Generators (CSPRNGs) are thus suitable sources of random numbers for HK cryptography. There are a couple of gotchas here, however. First, the seedص NL used for initialisation must be unknown. Usually this should be provided by OH the operating system and should usually be secure, however this may not KG always be the case (especially soon after startup). Second, user-space÷ JL memory may be vulnerable, for example when written to swap space, and after OK forking a child process should reinitialise any user-space PRNGs. For this޸ NJ reason it may be preferable to source random numbers directly from the OS M for cryptographic applications. #  B PRNGs are also widely used for non-cryptographic uses: randomised EH algorithms, simulations, games. In these applications it is usually not KF important for numbers to be cryptographically *unguessable*, but even II distribution and independence from other samples (from the point of view LL of someone unaware of the algorithm used, at least) may still be important.ͼ OE Good PRNGs should satisfy these properties, but do not take them for H! granted; Wikipedia's article on  $^ [Pseudorandom number generators](https://en.wikipedia.org/wiki/Pseudorandom_number_generator) a( provides some background on this topic. +  H Care should be taken when seeding (initialising) PRNGs. Some PRNGs have KK short periods for some seeds. If one PRNG is seeded from another using the NI same algorithm, it is possible that both will yield the same sequence of L values (with some lag).  w m w m Rng   SeedableRng  Rand   $ The ChaCha random number generator. '      allow 7   bad_style m 8       16       20        STATE_WORDS        STATE_WORDS                     j  j  j          STATE_WORDS        STATE_WORDS        output input  D inline 7      q              (     D            )                      g     Some                                                                                           ! !   ! " # #   "#    "  "  $ $  $  $ # ! % & ' '  &' ( ) )  ()   &(%  ( & * *  *% % * ) ' + , - . .  -.   -  ,   - +, , / /  /+ + / . 0 1 2 2  12 3 4 4  34   130  3 1 5 5  50 0 5 4 2 6 7 8 8   78 9 : :  9:   796  9 7 ; ;   ;6 6 ; : 8 < = > ? ?   >?   > =  > <= = @ @   @< < @ ? A B C C  BC D E E   DE   BDA  D B F F  FA A F E C G H I I  HI J K K  JK   HJG  J H L L  LG G L K I M N O P P  OP   O N  O MN N Q Q  QM M Q P R S T T  ST U V V  UV   SUR  U S W W  WR R W V T X Y Z Z   YZ [ \ \  [\   Y[X  [ Y ] ]   ]X X ] \ Z ^ _ ` a a   `a   ` _  ` ^_ _ b b   b^ ^ b a c d e e   de f g g   fg   dfc  f d h h   hc c h g e i j k k  jk l m m   lm   jli  l j n n  ni i n m k o p q r r  qr   q  p  q op p s s  so o s r t u v v  uv w x x  wx   uwt  w u y y  yt t y x v z { | |   {| } ~ ~  }~   {}z  } {     z z  ~ |                                                                                                                                                                 !                          "                           #                       $                         %                         &                      '                          (                           )                      *                         +                         ,                      -                          .                           /                       0                         1                         2                      3                          4                           5                      6                         7                         8                      9                          :                           ;                       <                         =                         >                      ?                          @                           A                      B                         C                          D                        E                            F                           G                       H                         I                          J                        K                            L                           M                      N                         O                          P                        Q                           R                         S                       T                         U                          V                        W                           X                         Y                      Z                         [                         \                      ]                          ^                           _                       `                         a                         b                      c                          d                           e                      f             D    Ih         i     jlk I I         Some                   m          n    o           p        Ih  D ;  ; I @  @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            output input iter __next val  iter __next val i        v; Create an ChaCha random number generator using the default > fixed key of 8 zero words.   # Examples   ```rust  use rand::{Rng, ChaChaRng};  ( let mut ra = ChaChaRng::new_unseeded(); +! println!("{:?}", ra.next_u32()); $! println!("{:?}", ra.next_u32()); $ ```  F Since this equivalent to a RNG with a fixed seed, repeated executions IG of an unseeded RNG will produce the same result. This code sample will J consistently produce:   - 2917185654  - 2419978656   self  counter_low counter_high - , Sets the internal 128-bit ChaCha counter to /, a user-provided value. This permits jumping /= arbitrarily ahead (or backwards) in the pseudorandom stream. @ B Since the nonce words are used to extend the counter to 128 bits, ED users wishing to obtain the conventional ChaCha pseudorandom stream G? associated with a particular nonce can call this function with B arguments `0, desired_nonce`. !  # Examples   ```rust  use rand::{Rng, ChaChaRng};  ( let mut ra = ChaChaRng::new_unseeded(); +% ra.set_counter(0u64, 1234567890u64); (! println!("{:?}", ra.next_u32()); $! println!("{:?}", ra.next_u32()); $ ```     self key  @ Initializes `self.state` with the appropriate key and constants C < We deviate slightly from the ChaCha specification regarding ?< the nonce, which is used to extend the counter to 128 bits. ?; This is provably as strong as the original cipher, though, >: since any distinguishing attack on our variant also works =9 against ChaCha with a chosen-nonce. See the XSalsa20 [1] <4 security proof for a more involved example of this. 7  The modified word layout is:  ```text $ constant constant constant constant ' key key key key " key key key key "# counter counter counter counter & ``` 2 [1]: Daniel J. Bernstein. [*Extending the Salsa20 5- nonce.*](http://cr.yp.to/papers.html#xsalsa) 0  ܶ  self   2 Refill the internal output buffer (`self.buffer`) 5  ܶ    self    inline ;  ܶ         C C         C         %  % %    %    %                a           % %Տ self value         'a 'aself seed    'aܶ seed   u' Create a ChaCha generator from a seed, *+ obtained from a variable-length u32 array. ., Only up to 8 words are used; if less than 8 // words are used, the remaining are set to zero. 2 'a    other     ³ R                 >     (7     G            )                               Some               ݤ        G                G ;  ;                              other key iter __next val  word   slice  repeat  ' wӛ m wӛ m fmt ڛ Rng   SeedableRng  Rand   # The ISAAC random number generator.ƚ & allow <   non_camel_case_types        allow =   bad_style  8 ʜ ʜ   œ  Ӝ 1 << RAND_SIZE_LEN͜ *        ͜ *͜ *ޜ  ͜ *   1 << RAND_SIZE_LEN 2         2 2 Տ  2  RAND_SIZE_USIZEբ բ բ բ բ բ բ բ RAND_SIZE_USIZE           ΢ Ϣ Ϣ Ѣ ΢                {¢  {  {  {  {  {    ΢  Ϣ         k: Create an ISAAC random number generator using the default = fixed seed.  self use_rslĦ  E Initialises `self`. If `use_rsl` is true, then use the current value HA of `rsl` as a seed, otherwise construct one algorithmically (notե D randomly).     self   ' Refills the output buffer (`self.rsl`)Ҵ * inline >   a         µ µ   µ                                               >      (7                 )                                Some                        )         (             !  "  "  !"    )!    !  #   #  "             $  $ Some  %  %$  %  %  $  "    &  &  '  (  (&  )(   )(   ')  (Ĺ  *ʹ  +ʹ  +ʹ  ʹ   +  *ʹ ʹ  +  ,  -  .  .'  /  /  0./  0./  -0  /  .  1   2 -1  21-  , -  - &3 4 5 5 6 6*   564  6 5 7 8 9 9'ź :ź : ;9:  ;9: 8;ͺ :ͺ 9 <  = 8<  =<8 7Ӂ8 & & 473 &κ 7κ 4 *3κ 3Ϻ 8 > ? ;@ 1A B C D E E,    E D  E CD BC C F F  1ABFŷ Fŷ B ;G ; ;H AG ; HGA ;@ӁA I I   @I?  I @ J J   ?J>  J ? D A K K> L M M' N N OMN  OMN LO N M P  Q LP  QPL ӁLK K L˻ R ;S 1T U V Wл Xл Yл Y>л л ͆Yջ Xл  Y  ͆X W  X VW UV V Z Z  1TUZŷ Zŷ U ;[ ; ;\ T[ ; \[T! ;SӁT ] ],˻ ˻  S]R"˻  ] Sǻ R R W T ^ ^ _ ` `' a a b`a  b`a# _b a ` c  d _c  dc_$ Ӂ_^ ^ _ >  ,  *  '  e  f  f&  gf   gf %  eg  f˽ hѽ iѽ iѽ ѽ ͆i h&ѽ ѽ i j k l le m m nlm  nlm' kn m l o  p ko  pok( jӁk k &q r s s t th   str)  t s už vž wž we̾ x̾ xž ywxž  ywx*ž vyԾ xԾ w z  { vz  {zv+ uӁv & & ruq, &վ uվ r *qվ q־ v | } ;~ 1     j  ͆ -         1ŷ ŷ  ; ; ;  ; . ;~Ӂ     ~}/   ~     }|0   }    |   e     1         2 Ӂ  ҿ  ; 1   ׿ ׿ ׿ |׿ ׿ ͆ܿ 3׿    ͆ 4         1ŷ ŷ  ; ; ;  ; 5 ;Ӂ  jҿ ҿ  6ҿ   ο         e     7         8 Ӂ   | j h  e      &      9    Ĺ ʹ ʹ ʹ ʹ  :ʹ ʹ          ;         < Ӂ  &        =       ź ź    > ͺ ͺ       ? Ӂ & & @ &κ κ  *κ Ϻ    ; 1       ͆ A         1ŷ ŷ  ; ; ;  ; B ;Ӂ     C        D               E         F Ӂ  ˻  ; 1   л л л л л ͆ջ Gл    ͆ H         1ŷ ŷ  ; ; ;  ; I ;Ӂ  ˻ ˻  J˻   ǻ              K         L Ӂ             &      M    ˽ ѽ ѽ ѽ ѽ ͆ Nѽ ѽ          O         P Ӂ  &        Q    ž ž ž ̾ ̾ ž ž  Rž Ծ Ծ       S Ӂ & & T &վ վ  *վ ־    ; 1       ͆ U         1ŷ ŷ  ; ; ;  ; V ;Ӂ     W        X               Y         Z Ӂ  ҿ  ; 1   ׿ ׿ ׿ ׿ ׿ ͆ܿ [׿    ͆ \         1ŷ ŷ  ; ; ;  ; ] ;Ӂ  ҿ ҿ  ^ҿ   ο              _         ` Ӂ         &     ݷ               ǽ         ǽ                                                     Տ  Ĺ  ʹ      Տ    &      ź Տ      ; 1      ; ;      Տ    ˻  ; 1    л  л   ; ;     Տ      Տ  ˽  ѽ     Տ    &    ž ž ̾ Տž      ; 1      ; ;      Տ    ҿ  ; 1    ׿  ׿   ; ;     Տ      Տ  Ĺ  ʹ     Տ    &      ź Տ      ; 1      ; ;      Տ    ˻  ; 1    л  л   ; ;     Տ      Տ  ˽  ѽ     Տ    &    ž ž ̾ Տž      ; 1      ; ;      Տ    ҿ  ; 1    ׿  ׿   ; ;     Տ     self a b r  iter __next val  mr_offset  m2_offset iter __next  val  $i  &base  'mixĹ  *x ,y >base emix˽ hx jy |base mixĹ x y base mix˽ x y        ջ     ܿ     ջ     ܿ     RAND_SIZE_USIZE / 2 ,  Ҷ       Ҷ  , ,   ,   Q self   1     self    inline ?       \ \ \ \         \     t       t tt t               )  ) )   )   ͫӫ&assertion failed: self.cnt < RAND_SIZE&&& +Ӂ           t   +  +  +  ) )self       'a'aself seed    'aܓ seed   t> Create an ISAAC random number generator with a seed. This can A? be any length, although the maximum number of elements used is B7 256 and any more will be silently ignored. A generator :> constructed with a given seed will generate the same sequence A> of values as all other generators constructed with that seed. A 'aܓ other     ³R              Ӂ     >              3  =  3                                                        o       Ӂ            other ret ptr slice     3self f  _  щ  slice  repeat  ' w m w m fmt  Rng   SeedableRng  Rand   & The ISAAC-64 random number generator. )      allow B   bad_style m 8 "   " "  " 1 << RAND_SIZE_64_LEN 2         2 2 Տ  2   RAND_SIZE_64        RAND_SIZE_64                              w  wѧ wѧ wѧ wѧ wѧ   į ѧ  ѧ ѧ ѧ ѧ   $ p8 Create a 64-bit ISAAC random number generator using the ; default fixed seed.  self use_rsl  E Initialises `self`. If `use_rsl` is true, then use the current value HA of `rsl` as a seed, otherwise construct one algorithmically (not D randomly).     self   ' Refills the output buffer (`self.rsl`)Յ *    RAND_SIZE_64 / 2 *  Ƈ       Ƈ  * *   *  2       ׇ [(0, MIDPOINT), (MIDPOINT, 0)]ч B            ч Bч B߇   ч B   U self   3     self   D inline E          ʚ  њ ؚ  D       self  Dself    inline Eޚ       ^ ^ ^ ^ٛ ٛ ٛ ٛ ޛ ܵޛ    ^     t       t ttt "         ,  , ,   ,   ͫӫ)assertion failed: self.cnt < RAND_SIZE_64?))) .ѧ ͝  Ν      ٛ ٛ Տ t   . " .  , ,self     ҝ  'a 'aself seed    'a seedȤ   y> Create an ISAAC random number generator with a seed. This can A? be any length, although the maximum number of elements used is B7 256 and any more will be silently ignored. A generator :> constructed with a given seed will generate the same sequence A> of values as all other generators constructed with that seed. A 'a other  ץ ڥ  ³R ߥ        Ǧ ͦ ͦ ͦ ͦ ͦ   ѧӦ ͦ զ >ѧզ  ͦ          0   0  ŧ  ŧ  ŧ  ֧  ֧  ŧ ˧    ˧ ۧ  ۧ  ܧ          ѧ     ѧ     ѧ Ȩ Ȩ Ȩ Ȩ ̨ ޴Ѩ ̨ ը ֨  ץ   æ  l   Ǧ  ѧͦ ͦ  ͦ    ŧ ŧ ֧ ѧ ѧ ѧ Ȩ Ȩ other ret ptrǦ slice ץ    3self f  a    w m w m Rng   SeedableRng  Rand    Xorshift generators      8 Creates a new XorShiftRng instance which is not seeded. ; H The initial values of this RNG are constants, so all generators created KE by this function will yield the same stream of random numbers. It is HI highly recommended that this is created through `SeedableRng` instead of L this function   self    inline G                                                    ͆                   ͆                 )            Z                  self x t w_  4        self seed  @ Reseed an XorShiftRng. This will panic if `seed` is entirely 0. C   seed   C Create a new XorShiftRng. This will panic if `seed` is entirely 0. F  rng     ³R            F               F*                                   3  3  3  3                      F   \     F  F  F        3  3  3  3  3  3  3  3  rng tuple x  y  z  w_               \  aa6 A type that can be randomly generated using an `Rng`.T9U ## Built-in ImplementationsUUH This crate implements `Rand` for various primitive types. Assuming theUKK provided `Rng` is well-behaved, these implementations generate values withVN( the following ranges and distributions:V+WI * Integers (`i32`, `u32`, `isize`, `usize`, etc.): Uniformly distributedWL over all values of the type.W"I * `char`: Uniformly distributed over all Unicode scalar values, i.e. allWLA code points in the range `0...0x10_FFFF`, except for the rangeXD@ `0xD800...0xDFFF` (the surrogate code points). This includesYC# unassigned/reserved code points.Y&B * `bool`: Generates `false` or `true`, each with probability 0.5.YEG * Floating point types (`f32` and `f64`): Uniformly distributed in theZJJ half-open range `[0, 1)`. (The [`Open01`], [`Closed01`], [`Exp1`], and[MG [`StandardNormal`] wrapper types produce floating point numbers with[J( alternative ranges or distributions.)\+\ [`Open01`]: struct.Open01.html\"# [`Closed01`]: struct.Closed01.html\&5 [`Exp1`]: distributions/exponential/struct.Exp1.html]8D [`StandardNormal`]: distributions/normal/struct.StandardNormal.html]G^E The following aggregate types also implement `Rand` as long as their^H component types implement it:^!_E * Tuples and arrays: Each element of the tuple or array is generated_H6 independently, using its own `Rand` implementation._9J * `Option`: Returns `None` with probability 0.5; otherwise generates a`M$ random `T` and returns `Some(T)`.`'Selfaarngbb%G Generates a random instance of this type using the specified source ofaJ randomness.ab հ RbbbbbK A random number generator.bSelfselfd d Return the next random u32.bc= This rarely needs to be called directly, prefer `r.gen()` toc@ `r.next_u32()`.cd dselfg gi Return the next random u64.de: By default this is implemented in terms of `next_u32`. Ane=: implementation of this trait must provide at least one ofe=> these two methods. Similarly to `next_u32`, this rarely needsfA; to be called directly, prefer `r.gen()` to `r.next_u64()`.f>g gg ggggggg gggg g g g g gggg g gg g g ggg;gghgi g g g;g g;gg;gg;ؔgg g;gg;gg;ؔgselfg giselfr r7 Return the next random f32 selected from the half-openh: interval `[0, 1)`.hh: This uses a technique described by Saito and Matsumoto ath=9 MCQMC'08. Given that the IEEE floating point numbers arei<: uniformly distributed over [1,2), we generate a number ini=8 this range and then offset it onto the range [0,1). Ourj;6 choice of bits (masking v. shifting) is arbitrary andj9: should be immaterial for high quality generators. For lowk=8 quality generators (ex. LCG), prefer bitshifting due tok;/ correlation between sequential low order bits.l2l See:lD A PRNG specialized in double precision floating point numbers usinglG an affine transitionmmG * mJK * nNo= By default this is implemented in terms of `next_u32`, but ao@> random number generator which can generate numbers satisfyingoA= the requirements directly can overload this for performance.p@7 It is required that the return value lies in `[0, 1)`.p:q4 See `Closed01` for the closed interval `[0,1]`, andq7( `Open01` for the open interval `(0,1)`.q+r rssssssss sss ss+s ssssss stttt tttttrssLs rؔr sssؔsssst tselfr tmpsresultsrs s selfx x7 Return the next random f64 selected from the half-opent: interval `[0, 1)`.tu= By default this is implemented in terms of `next_u64`, but au@> random number generator which can generate numbers satisfyinguA= the requirements directly can overload this for performance.v@7 It is required that the return value lies in `[0, 1)`.v:w4 See `Closed01` for the closed interval `[0,1]`, andw7( `Open01` for the open interval `(0,1)`.w+x xyyyyyyyy yyy yy+y yyzzyy yzzzz z?zzzzxyyLy xؔx yyyؔyyyzz zselfx tmpyresultyxy y self͂destӂ Fill `dest` with random data.z!z= This has a default implementation in terms of `next_u64` andz@= `next_u32`, but should be overridden by implementations that{@8 offer a more efficient solution than just calling those{; methods repeatedly.||< This method does *not* have a requirement to bear any fixed|?> relationship to the other methods, for example, it does *not*}A; have to result in the same output as progressively filling}>> `dest` with `self.gen::()`, and any such behaviour should~A not be relied upon.~~< This method should guarantee that `dest` is entirely filled~?3 with new data, and may panic if this is impossible6? (e.g. reading past the end of a file that is being used as theB source of randomness).À # Example  ```rust  use rand::{thread_rng, Rng};  let mut v = [0u8; 13579];! thread_rng().fill_bytes(&mut v);$ println!("{:?}", &v[..]); ``` ݤȂ݅  >  (7        )          Some           ܈ ݈݈܈ Ԉ             مؔȂ ӂ݅ ӼӼ ӼӼӼؔ܈ ݈  selfȂ destӂcount݅ numiter__next valbyteself R( Return a random value of a `Rand` type.+ # Example  ```rust  use rand::{thread_rng, Rng};  let mut rng = thread_rng();Ê let x: u32 = rng.gen(); println!("{}", x);, println!("{:?}", rng.gen::<(f64, bool)>());/ ```֋inlineK always T ÌʌRؔ ؔself Rself B Return an iterator that will yield an infinite number of randomlyЌE generated items. # Example ͍ ```Ս use rand::{thread_rng, Rng};  let mut rng = thread_rng();> let x = rng.gen_iter::().take(10).collect::>();A println!("{:?}", x);7 println!("{:?}", rng.gen_iter::<(f64, bool)>().take(5):5 .collect::>());ԏ8 ```  'a 'aT5ؔ5 5 ǐؔ 5ؔself self̗lowҗhighڗ6 Generate a random value in the range [`low`, `high`).9% This is a convenience wrapper around(8 `distributions::Range`. If this function will be called;? repeatedly with the same arguments, one should use `Range`, asB; that will amortize the computations that allow for perfect>3 uniformity, as they only happen on initialization.6 # Panics ̔ Panics if `low >= high`.Ԕ # Example  ```rust  use rand::{thread_rng, Rng}; ̕ let mut rng = thread_rng();ԕ# let n: u32 = rng.gen_range(0, 10);& println!("{}", n);0 let m: f64 = rng.gen_range(-40.0f64, 1.3e5f64);3 println!("{}", m); ``` TǗ5   = ==== ====     = =   ʘʘ ՘ ՘ ՘՘ ژ ژژژ ʘʘ  ,    ʘͫ'ӫ%Rng.gen_range called with low >= high%%% ʘ ޘ ޘ   ʘ&         ؔǗ җڗ= ʘ& ʘʘ&ʘʘ&՘ʘ&ژʘ&ؔselfǗ lowҗhighڗselfnu+ Return a bool with a 1 in n chance of true. # Example ə ```rustљ  use rand::{thread_rng, Rng};  let mut rng = thread_rng();* println!("{}", rng.gen_weighted_bool(3));- ```  #########ƛƛƛ؛؛ƛ˛ ՛˛ޛٛٛ#uؔ ###ƛ#ؔƛ#؛self nuself B Return an iterator of random characters from the set A-Z,a-z,0-9.E # Example Ϝ ```rustל  use rand::{thread_rng, Rng}; C let s: String = thread_rng().gen_ascii_chars().take(10).collect();F println!("{}", s);ߝ ```  'a 'aӞؔ ؔ ؔself selfvalues' Return a random element from `values`.*$ Return `None` if `values` is empty.Ÿ' # Example  ``` use rand::{thread_rng, Rng}; $ let choices = [1, 2, 4, 8, 16, 32];ɠ' let mut rng = thread_rng();( println!("{:?}", rng.choose(&choices));+- assert_eq!(rng.choose(&choices[..0]), None);ɡ0 ```  'a  'aTԢ > }((ȣ  ȣ ȣ ȣ ϣ   ϣ}ӣ  ţ ԣ ԣ' '   '   ((.Some.֣}  ؔ  }} .(.(..ؔ.ȣ . ȣ''self valuesselfvalues< Return a mutable pointer to a random element from `values`.?$ Return `None` if `values` is empty.'  'a  'aTΥΥΥΥեե ޥ˥  ˥##Ŧ Ŧ Ŧ צ צ Ŧʦ  Ԧ  ʦڦ ڦ       # #)Some )ܦ ˥Wڀؔ   ˥Υ˥ Υ )ڀ#)ڀ#)Ŧ)ؔŦ)צself valueslenselfvalues" Shuffle a mutable slice in place.% This applies Durstenfeld's algorithm for the [Fisher–Yates shuffle](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm)( which produces an unbiased permutation.Ĩ+ # Example  ```rust  use rand::{thread_rng, Rng}; ˩ let mut rng = thread_rng();ө let mut y = [1, 2, 3]; rng.shuffle(&mut y); println!("{:?}", y); rng.shuffle(&mut y);Ъ println!("{:?}", y); ```   Tͫ   ֭ܭݭ  (       ŭ ŭŭŭɭŭ ɭŭ ɭ  ­  ʭ ʭ ( >   !˭ ˭ ˭ ̭֭ݫؔ  Տ(ؔŭŭՏŭself valuesir 1065353216 r#r r r#r#rr#r 8388607r!ssr!r!rr!x 4607182418800017408x+xx?x+x+xx+x 4503599627370495x(yyx(x(xx(  'aհ'aRself A 'aհ ®®®ˮ հˮ ԮۮA  ®®self Aself A 'aհ հ A self Aself A 'aհЯЯЯٯ հٯ A¯ ЯЯself Aself A 'aհ հ A self AselfɰdestϰS 'aհݤİ հSİ ϰselfİ destϰS cfgN featurestdUR˱self ձAر    ձA  self ձAself A IJIJIJͲȝ Ͳ ֲݲA IJIJself Aself A   A self Aself A ҳҳҳ۳ ۳ Aij ҳҳself AselfdestS ݤ ĴS self destS   'a)'aTR׷ܷself D 'a  SomeDٰ    self D  'aհ)'aRselfջ Ȼ˻ 'aհ  л 80/&& հĽĽ/ƽ , ƽ ͽ08ս>Some>ֽܽܽݽȻ ޻   հл >8>0>/>&>>>selfл ȻAb"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"A aaaa >aa aa  ھC A random number generator that can be explicitly seeded to produceF. the same stream of randomness multiple times.1SelfSeedSeedself# Reseed an RNG with the given seed.& # Example ƿ ```rustο & use rand::{Rng, SeedableRng, StdRng};޿) let seed: &[_] = &[1, 2, 3, 4];#4 let mut rng: StdRng = SeedableRng::from_seed(seed);7" println!("{}", rng.gen::());% rng.reseed(&[5, 6, 7, 8]);" println!("{}", rng.gen::());% ``` seed !& Create a new RNG with the given seed.) # Example  ```rust & use rand::{Rng, SeedableRng, StdRng};) let seed: &[_] = &[1, 2, 3, 4];#4 let mut rng: StdRng = SeedableRng::from_seed(seed);7" println!("{}", rng.gen::());% ```  / Create a randomly seeded instance of `StdRng`.25 This is a very expensive operation as it has to read88 randomness from the operating system and use this in an;? expensive seeding operation. If one is only generating a smallB? number of random numbers, or doesn't need the utmost speed forBA generating each number, `thread_rng` and/or `random` may be moreD appropriate.> Reading the randomness from the OS may fail, and any error isA. propagated via the `io::Result` return value.1cfgP featurestd ѱself AinlineP     A  self Aself AinlineP   A self A 'a 'aselfseed 'aseed  'a I Create a weak random number generator with a default algorithm and seed.LK It returns the fastest `Rng` algorithm currently available in Rust withoutNJ consideration for cryptography or security. If you require a specificallyMI seeded `Rng` for consistency over time you should pick one algorithm andL create the `Rng` yourself.> This will seed the generator with randomness from thread_rng.AcfgQ featurestd cfgQ featurestd selfrng   327680cfgQ featurestd000 IcfgQ featurestd         t   ; Retrieve the lazily-initialized thread-local random number>? generator, seeded by the system. Intended to be used in methodB2 chaining style, e.g. `thread_rng().gen::()`.5L After generating a certain amount of randomness, the RNG will reseed itselfOL from the operating system or, if the operating system RNG returns an error,O) a seed based on the current system time.,C The internal RNG used is platform and architecture dependent, evenFB if the operating system random number generator is rigged to giveE? the same sequence always. If absolute consistency is required,B; explicitly select an RNG, e.g. `IsaacRng` or `Isaac64Rng`.>cfgQ featurestd  cfgQ featurestdself N  self N selfbytesbinlineR  ݤ'    b   '' '  '   b   ' ''' '' '''self bytesb I Generates a random value using the thread-local random number generator.LK `random()` can generate various types of random things, and so may requireN5 type hinting to generate the specific type you want.8H This function uses the thread local random number generator. This meansKG that if you're calling `random()` in a loop, caching the generator canJ1 increase performance. An example is shown below.4 # Examples ``` let x = rand::random::();! println!("{}", x); let y = rand::random::();" println!("{}", y);+ if rand::random() { // generates a boolean.) println!("Better lucky than good!");, } ```2 Caching the thread local random number generator:5 ``` use rand::Rng; let mut v = vec![1, 2, 3]; for x in v.iter_mut() { *x = rand::random() }, // can be made faster by caching thread_rng/" let mut rng = rand::thread_rng();% for x in v.iter_mut() { *x = rng.gen(); } ```cfgR featurestdinlineR T      8  8  8          erngiterableamount#~, DEPRECATED: use `seq::sample_iter` instead./@ Randomly sample up to `amount` elements from a finite iterator.C3 The order of elements in the sample is not random.6 # Example  ```rust  use rand::{thread_rng, sample};# let mut rng = thread_rng();* let sample = sample(&mut rng, 1..100, 5);- println!("{:?}", sample); ```cfgR featurestdinlineR always  deprecated R since0.4.0 noterenamed to seq::sample_iter@0.4.0renamed to seq::sample_iter    TIR   '' 'F /    F 'FF FFrngiterableamount ȱ±D, Sample values uniformly between two bounds./ȩC This gives a uniform distribution (assuming the RNG used to sample̩F@ it is itself uniform & the `SampleRange` implementation for theC> given type is correct), even for edge cases like `low = 0u8`,תA@ `high = 170u8`, for which a naive modulo operation would returnCB numbers less than 85 with double the probability to those greaterݫE than 85. ; Types should attempt to sample in `[low, high)`, i.e., not>: including `high`, but this may be very difficult. All the=C primitive integer types satisfy this property, and the float typesF= normally satisfy it, but rounding may mean `high` can occur.@ # Example ˮ ```rustϮ 5 use rand::distributions::{IndependentSample, Range};ۮ8 fn main() {) let between = Range::new(10, 10000);,& let mut rng = rand::thread_rng();կ) let mut sum = 0; for _ in 0..1000 {- sum += between.ind_sample(&mut rng);0 }  println!("{}", sum); } ```ť*Xȱ$ѱѱ˥$ݱݱ˥$ ˥ $automatically_derivedSallowS unused_qualificationsť3ťX3˥selff$ ˥ ť ѱѱ˥ݱݱ˥˥  ӫRange  3    ѱ ѱ ѱ ѱӫlowѱ ѱѱѱѱѱѱѱѱ 3ֱ 1       ݱݱݱݱӫrangeݱݱݱݱݱݱݱݱݱӫ accept_zone   !! !  ! "" 1""# ť 2ѱݱ1آӫӫ ܣӫѱӫѱѱ ѱѱѱܣܣӫݱӫݱݱݱݱݱܣܣӫӫܣselff __self_0_0ѱ __self_0_1ݱ __self_0_2debug_trait_builder $automatically_derivedSallowS unused_qualificationsťťX˥ $automatically_derivedSallowS unused_qualificationsť ťX ˥self $inlineT ˥ť ѱѱ˥ݱݱ˥˥ѱѱѱѱѱѱѱ  ˥ѱֱݱݱ ݱ ݱ ݱ ݱݱ ݱ          ˥˥˥    ťŢѱݱ˥ѱѱѱ˥ݱݱݱ˥self __self_0_0ѱ __self_0_1ݱ __self_0_2$ 5lowhigh$ٿſinlineſTÿ ܿ ,        ,, mж,.              # #  #     ٿд ж,жж   #lowhighrange unsigned_max  zone ٿerrng$inlineU    дR     1       $     $   11 m   1  3   д 1$rrngv$ 5lowhigh$ٿſinlineſUÿ ܿ ,        ,, m,.              # #  #     ٿ ,   #lowhighrange unsigned_max  zone ٿerrng$inlineV    R     1       $     $   11 m   1  3    1$rrngv$ 5lowhigh$ٿſinlineſVÿ ܿ ,        ,,   ,.              # #  #     ٿ  ,     #lowhighrange unsigned_max  zone ٿerrng$inlineW    Rݤ     1       $     $   11 m   1  3    1$rrngv$ 5lowhigh$ٿſinlineſWÿ ܿ ,        ,, ѧѧ,.              # #  #     ٿ ѧ,ѧѧ   #lowhighrange unsigned_max  zone ٿerrng$inlineX    R    1       $     $   11 m׉   1  3    ׉1׉׉$rrngv$ 5lowhigh$ٿſinlineſYÿ ܿ ,        ,, mÐ,.              # #  #     ٿÎ Ð,ÐÐ   Տ#lowhighrange unsigned_max  zone ٿerrng$inlineY    ÎR     1       $     $   11 m   1  3   Î 1$rrngv$ 5lowhigh$ٿſinlineſZÿ ܿ  ,,,ʶ,.                     # #   #      ٿ ж,жж   #lowhighrange unsigned_max  zone ٿerrng$inlineZ    R     1      $          $   11 жж  1  3 ж1жж$rrngv$ 5lowhigh$ٿſinlineſ[ÿ ܿ  ,,,,.                     # #   #      ٿŸ ,   #lowhighrange unsigned_max  zone ٿerrng$inline[    ŸR    1      $          $   11   1  3 Ÿ1$rrngv$ 5lowhigh$ٿſinlineſ\ÿ ܿ  ,,,,.                     # #   #      ٿ  ,     #lowhighrange unsigned_max  zone ٿerrng$inline\    Rݤ     1      $          $   11   1  3 1  $rrngv$ 5lowhigh$ٿſinlineſ]ÿ ܿ  ,,,,.                     # #   #      ٿ ѧ,ѧѧ   #lowhighrange unsigned_max  zone ٿerrng$inline^    R    1      $          $   11 ѧѧ  1  3 ѧ1ѧѧ$rrngv$ 5lowhigh$ٿſinlineſ^ÿ ܿ  ,,,,.                     # #   #      ٿ Ð,ÐÐ   Տ#lowhighrange unsigned_max  zone ٿerrng$inline_    R    1      $          $   11 ÐÐ  1  3 Ð1ÐÐ$rrngv$ 5low high $  r rng $~   R                   "    ~    "  "  "  "  "  r rng ~ $!5low!high!$!! r!rng!$~! !  R!!!!!!!!!!!!! !!!!!"!!!!~! !!"!!"!!"!!"!!"!!r!rng!~!); The Gamma distribution `Gamma(shape, scale)` distribution.>- The density function of this distribution is0 ```text 2 f(x) = x^(k - 1) * exp(-x / θ) / (Γ(k) * θ^k)5 ```C where `Γ` is the Gamma function, `k` is the shape and `θ` is theF3 scale and both `k` and `θ` are strictly positive.6C The algorithm used is that described by Marsaglia & Tsang 2000[1],FA falling back to directly sampling from an Exponential for `shapeD= == 1`, and using the boosting technique described in [1] for@ `shape < 1`. # Example  ```rust 5 use rand::distributions::{IndependentSample, Gamma};8" let gamma = Gamma::new(2.0, 5.0);%3 let v = gamma.ind_sample(&mut rand::thread_rng());66 println!("{} is from a Gamma(2, 5) distribution", v);9 ```@ [1]: George Marsaglia and Wai Wan Tsang. 2000. "A Simple MethodC@ for Generating Gamma Variables" *ACM Trans. Math. Softw.* 26, 3C (September 2000),O 363-372. DOI:[10.1145/358407.358414](http://doi.acm.org/10.1145/358407.358414)RF;;""automatically_derived"`""allow"`"" unused_qualifications""3selff";"" ";##automatically_derived#a##allow#a## unused_qualifications##;$$automatically_derived$a$$allow$a$$ unused_qualifications$$ self ;$$inline$a$$ $$$$$$$self$$ ;W;;;; ; Large; ; One; ; Small;%%automatically_derived%a%%allow%a%% unused_qualifications%%3selff%;%%  %;&&automatically_derived&b&&allow&b&& unused_qualifications&&;''automatically_derived'b''allow'b'' unused_qualifications'' self ;''inline'b'' '''''''' 'self'';O= Gamma distribution where the shape parameter is less than 1.@B Note, samples from this require a compulsory floating-point `pow`E? call, which makes it significantly slower than sampling from aB@ gamma distribution where the shape parameter is greater than orC equal to 1.@ See `Gamma` for sampling from a Gamma distribution with generalC shape parameters.H; ; ;((automatically_derived(c((allow(c(( unused_qualifications((3selff(;(( (;))automatically_derived)c))allow)c)) unused_qualifications));**automatically_derived*c**allow*c** unused_qualifications** self ;**inline*c** ********self**;A? Gamma distribution where the shape parameter is larger than 1.B@ See `Gamma` for sampling from a Gamma distribution with generalC shape parameters.J; ;;;++automatically_derived+d++allow+d++ unused_qualifications++3selff+;++ +;,,automatically_derived,d,,allow,d,, unused_qualifications,,;--automatically_derived-d--allow-d-- unused_qualifications-- self ;--inline-d-- ---------self-- ߓ3D The chi-squared distribution `χ²(k)`, where `k` is the degrees ofG freedom.ُ B For `k > 0` integral, this distribution is the sum of the squaresE? of `k` independent standard normal random variables. For otherB/ `k`, this uses the equivalent characterisation2 `χ²(k) = Gamma(k/2, 2)`.ő # Exampleɑ ב ```rustۑ : use rand::distributions::{ChiSquared, IndependentSample};=! let chi = ChiSquared::new(11.0);$1 let v = chi.ind_sample(&mut rand::thread_rng());Β42 println!("{} is from a χ²(11) distribution", v)5 ```^;;ד2ד2automatically_derivedד2eד2ד2allowד2eד2ד2 unused_qualificationsד2ד23selfדfד2;ד2ד2 אד2;ѓ3ѓ3automatically_derivedѓ3eѓ3ѓ3allowѓ3eѓ3ѓ3 unused_qualificationsѓ3ѓ3;ʓ4ʓ4automatically_derivedʓ4fʓ4ʓ4allowʓ4fʓ4ʓ4 unused_qualificationsʓ4ʓ4 selfʓ ;ʓ4ʓ4inlineʓ4fʓ4ʓ4 אʓ4ʓ4ϓ4ʓ4ʓ4ʓ4ʓ4selfʓ4ʓ4 ;;;  ; ; ; DoFAnythingElse;55automatically_derived5f55allow5f55 unused_qualifications553selff5;55  5;66automatically_derived6f66allow6f66 unused_qualifications66;77automatically_derived7g77allow7g77 unused_qualifications77 self ;77inline7g77 777777 7self77% The Fisher F distribution `F(m, n)`.Н(? This distribution is equivalent to the ratio of two normalisedB< chi-squared distributions, that is, `F(m,n) = (χ²(m)/m) /? (χ²(n)/n)`. # Example  ```rust 7 use rand::distributions::{FisherF, IndependentSample};:! let f = FisherF::new(2.0, 32.0);$/ let v = f.ind_sample(&mut rand::thread_rng());23 println!("{} is from an F(2, 32) distribution", v)ˠ6 ```×f;;ءء;ߢߢ ;::automatically_derived:g::allow:g:: unused_qualifications::×3×selff:;:: :;;;automatically_derived;h;;allow;h;; unused_qualifications;;××;<<automatically_derived Implemented via the ZIGNOR variant[1] of the Ziggurat method.A@ [1]: Jurgen A. Doornik (2005). [*An Improved Ziggurat Method toC Generate Normal RandomB Samples*](http://www.doornik.com/research/ziggurat.pdf). NuffieldE College, Oxford # Example  ```rust 1 use rand::distributions::normal::StandardNormal;4( let StandardNormal(x) = rand::random();+ println!("{}", x); ```# ######vFFautomatically_derivedFiFFallowFiFF unused_qualificationsFF3selffFvFF  FvGGautomatically_derivedGjGGallowGjGG unused_qualificationsGGvHHautomatically_derivedHjHHallowHjHH unused_qualificationsHH self vHHinlineHjHH HHHHHH HselfHH6/ The normal distribution `N(mean, std_dev**2)`.29 This uses the ZIGNOR variant of the Ziggurat method, see<# `StandardNormal` for more details.& # Example  ```rust 6 use rand::distributions::{Normal, IndependentSample};9 // mean 2, standard deviation 3#$ let normal = Normal::new(2.0, 3.0);'4 let v = normal.ind_sample(&mut rand::thread_rng());71 println!("{} is from a N(2, 9) distribution", v)4 ```v v vIIautomatically_derivedIjIIallowIjII unused_qualificationsII3selffIvII IvJJautomatically_derivedJkJJallowJkJJ unused_qualificationsJJvKKautomatically_derivedKkKKallowKkKK unused_qualificationsKK self vKKinlineKkKK KKKKKKKKselfKK )6 The log-normal distribution `ln N(mean, std_dev**2)`.9; If `X` is log-normal distributed, then `ln(X)` is `N(mean,> std_dev**2)` distributed. # Example  ```rust 9 use rand::distributions::{LogNormal, IndependentSample};< // mean 2, standard deviation 3#+ let log_normal = LogNormal::new(2.0, 3.0);.8 let v = log_normal.ind_sample(&mut rand::thread_rng());;5 println!("{} is from an ln N(2, 9) distribution", v)8 ```v vNNautomatically_derivedNkNNallowNkNN unused_qualificationsNN3selffNvNN NvOOautomatically_derivedOlOOallowOlOO unused_qualificationsOOvPPautomatically_derivedPlPPallowPlPP unused_qualificationsPP self vPPinlinePlPP PPPPPPPselfPP= A wrapper around an `f64` to generate Exp(1) random numbers.@4 See `Exp` for the general exponential distribution.7B Implemented via the ZIGNOR variant[1] of the Ziggurat method. TheEB exact description in the paper was adjusted to use tables for theE- exponential distribution rather than normal.0@ [1]: Jurgen A. Doornik (2005). [*An Improved Ziggurat Method toC Generate Normal RandomB Samples*](http://www.doornik.com/research/ziggurat.pdf). NuffieldE College, Oxford # Example  ```rust , use rand::distributions::exponential::Exp1;/ let Exp1(x) = rand::random();! println!("{}", x); ``` SSautomatically_derivedSlSSallowSlSS unused_qualificationsSS3selffSSS  STTautomatically_derivedTmTTallowTmTT unused_qualificationsTTUUautomatically_derivedUmUUallowUmUU unused_qualificationsUU self UUinlineUmUU UUUUUU UselfUUq, The exponential distribution `Exp(lambda)`./9 This distribution has density function: `f(x) = lambda *< exp(-lambda * x)` for `x > 0`." # Example  ```rust 3 use rand::distributions::{Exp, IndependentSample};6 let exp = Exp::new(2.0);1 let v = exp.ind_sample(&mut rand::thread_rng());41 println!("{} is from a Exp(2) distribution", v);4 ```? `lambda` stored as `1/lambda`, since this is what we scale by.BVVautomatically_derivedVmVVallowVmVV unused_qualificationsVV3selffVVV ͅVWWautomatically_derivedWnWWallowWnWW unused_qualificationsWWXXautomatically_derivedXnXXallowXnXX unused_qualificationsXX self XXinlineXnXX ͅXXXXXXXselfXX  M= A wrapper for generating types that implement `Rand` via the@' `Sample` & `IndependentSample` traits.*Supݯ) [[automatically_derived[n[[allow[n[[ unused_qualifications[[3Supݯ3[selff[[[ [ )[)[[[[[[[ӫ RandSample  [[[[[[[[ [ )[ )[ )[ )[ӫ_marker)[ )[ )[ )[)[)[)[)[ )[  [ [[   [ [ [ [ [[[ [[[[[[[[[[[[[[[[آ[ )[آ[ӫ[ӫ[ܣ[ܣ[ӫ)[ӫ)[)[ ڰ)[)[ڰ)[[ܣ[self[f[ __self_0_0)[debug_trait_builder[ @ A value with a particular weight for use with `WeightedChoice`.CT" The numerical weight of this item% ( The actual item which is being weighted+ \\automatically_derived\o\\allow\o\\ unused_qualifications\\3T3\selff\\\  \ \\ \ \\\\\\\ӫWeighted\\\\\\\ \ \ \ \ \ \ӫweight?\ \ \\\\\\\ \\\    \\ \ \ \\\ \ \\\ \ \ \ \ӫitem \ \ \ \ \ \ \ \ \\\\\ \\\\\\\\\\\\\\\\\\\\\\\ \آ\ \ \آ\ӫ\ӫ\ܣ\ܣ\ӫ\ӫ\\ \\\ܣ\ܣ\ӫ \ӫ \ \  \ \ \\ܣ\self\f\ __self_0_0\ __self_0_1 \debug_trait_builder\ ]]automatically_derived]o]]allow]o]] unused_qualifications]] T ]self ]]inline]o]] ·] ]] ] ]]]]]]]]  ]] ] ] ]  ]  ]  ] ]   ] ]]]] ]]]]]]]] ]]] ]]]]]]]] ]] ]] ]self] __self_0_0] __self_0_1 ]] ^^automatically_derived^p^^allow^p^^ unused_qualifications^^T^ fH A distribution that selects from a finite collection of weighted items.KA Each item has an associated weight that influences how likely itD/ is to be chosen: higher weight is more likely.2< The `Clone` restriction is a limitation of the `Sample` and?D `IndependentSample` traits. Note that `&T` is (cheaply) `Clone` forGB all `T`, as is `u32`, so one can store references or indices intoE another vector. # Example  ```rust H use rand::distributions::{Weighted, WeightedChoice, IndependentSample};K8 let mut items = vec!(Weighted { weight: 2, item: 'a' },;8 Weighted { weight: 4, item: 'b' },;9 Weighted { weight: 1, item: 'c' });<* let wc = WeightedChoice::new(&mut items);-" let mut rng = rand::thread_rng();% for _ in 0..16 {< // on average prints 'a' 4 times, 'b' 8 and 'c' twice.?. println!("{}", wc.ind_sample(&mut rng));1 } ```'a'aT'a 'a  __automatically_derived_p__allow_p__ unused_qualifications__'a3'aT'a3_selff___ 'a _ __________ӫWeightedChoice_______ _ _ _ _ _ _ӫitems_ _ _______ ___    __ _ _ ___ _ _______ӫ weight_range  _____________ ________________________آ_ __آ_ӫ_ӫ_ܣ_ܣ_ӫ_ӫ__ ___ܣ_ܣ_ӫ_ӫ__ ____ܣ_self_f_ __self_0_0_ __self_0_1_debug_trait_builder_ 1 An error that can occur when `test_timer` fails.4 No timer available. . Timer too coarse to use as an entropy source.1   ' Timer is not monotonically increasing.*  ( Variations of deltas of time too small.+ 6 Too many stuck results (indicating no added entropy).9  docq hiddengggautomatically_derivedgqggallowgqgg unused_qualificationsgg self gginlinegqggdocgqgg hiddenggg gggggg gselfgg h h hautomatically_derived hr h hallow hr h h unused_qualifications h h self other h h hinline hr h h  h  h h h h h h h   hhh h h h h h h h h hh   h  h  h  h  h  h    h h  h  h  h h h  h hh  h  h h h h h hhhh h h h h h h  h h h h h h h h h h h h h h  h h h h h hself hother h __self_vi h __arg_1_vi h hiiautomatically_derivediriiallowirii unused_qualificationsii self iiinlineirii i iiiiii iiiiiiiiiiiiiiiiiiiiiiiiselfiijjautomatically_derivedjsjjallowjsjj unused_qualificationsjj3selffjjj j   'A An RNG that reads random bytes straight from a `Read`. This will D= work best with an infinite reader, but this is not required. @  # Panics  E It will panic if it there is insufficient data to fulfill a request. H  # Example   ```rust  use rand::{read, Rng};  ) let data = vec![1, 2, 3, 4, 5, 6, 7, 8]; ,- let mut rng = read::ReadRng::new(&data[..]); 0$ println!("{:x}", rng.gen::()); ' ``` R    v vautomatically_derived vu v vallow vu v v unused_qualifications v v3R 3 vself f v v v   v v v v v v v v vӫReadRng v v v v v v v v v  v v v  vӫreader? v v v v v v v v  v   v  v v    v v v v v v v v v v v v v v v v v v v v v v  vآ v  vآ vӫ vӫ vܣ vܣ vӫ vӫ v v  vː v v vܣ vself vf v __self_0_0 vdebug_trait_builder v    C A wrapper around any RNG which reseeds the underlying RNG after it F0 has generated a certain number of random bytes. 3 RRsdr         / Controls the behaviour when reseeding the RNG. 2     x xautomatically_derived xv x xallow xv x x unused_qualifications x x 3 RRsdr  x 3  xself f x x x     x x x x x x x x x  x x x x x  xӫ ReseedingRng  x  x x  x x x x x x  x x x xӫrng x  x x x x x x x x x x x    x x x x x x x x x x x x x x xӫgeneration_threshold? x x x x x x x x x x x x x x x x x x x x x x x x x x xӫbytes_generated x x x x! x" x" x!" x ! x  x  x x x x x x x" x! x x x# x$ x$ x% x& x& xӫreseeder x%& x' x( x) x* x* x)* x() x'( x( x x$%'# x x' x% x$ x* x) x& x# x+ x+ x x+ x x+ x x x x x x x x x x x x x, x   xآ x x  xۦ x   xآ xӫ xӫ xܣ xܣ xӫ xӫ x xː xː x xܣ xܣ xӫ xӫ x x ۦ x xۦ xܣ xܣ xӫ xӫ x x x xۦ xܣ xܣ xӫ xӫ x x  x x x xܣ xself xf x __self_0_0 x __self_0_1 x __self_0_2 x __self_0_3 xdebug_trait_builder x  : Reseed an RNG using a `Default` instance. This reseeds by =@ replacing the RNG with the result of a `Default::default` call. Cӽ  ӽ  y yautomatically_derived yw y yallow yw y y unused_qualifications y yӽ 3ӽ self f y y y  ӽ  y z zautomatically_derived zw z zallow zw z z unused_qualifications z zӽ ӽ  { {automatically_derived {x { {allow {x { { unused_qualifications { {ӽ  ӽ self   { {inline {x { { ӽ  { { { {ӽ { ӽ  {self { { Rand  Rngǃ ǃ Open01̃  ̃ Open01̃  ̃ Closed01ԃ  ԃ Closed01ԃ  ԃ =    (1u64 << 53) as f64 3    5    5   3 3    3 rng   ^2 Generate a floating point number in the half-openф 5 interval `[0,1)`.  0 See `Closed01` for the closed interval `[0,1]`,х 3, and `Open01` for the open interval `(0,1)`. /׆ inline׆ zՆ   ³R      Ŏ   ͇  ^    rng  ^ rng    inline z   ³RÈ    !    Ŏ      < !   )   Έ   ) ! )  )  ) rng   Nj  rng    inline z   ³R    *     Ŏ Í  Ѝ  ԍ ؍ ܍ ܍ ܍ C *   4      4 * 4  4  4  4܍ rng  ԍ ݍ ߎ Rand  Rngǃ ǃ Open01̃  ̃ Open01̃  ̃ Closed01ԃ  ԃ Closed01ԃ  ԃ >    (1u64 << 24) as f32 3           3 3    3 rng   ^2 Generate a floating point number in the half-openф 5 interval `[0,1)`.  0 See `Closed01` for the closed interval `[0,1]`,х 3, and `Open01` for the open interval `(0,1)`. /׆ inline׆ {Ն   ³R       ب  ͇  ^    rng  ^  rng    inline {   ³RÈ    !     ب      !   )   Έ   ) ! )  )  ) rng   Nj  rng    inline {   ³R    *      بÍ  Ѝ  ԍ ؍ ܍ ܍ ܍  *   4      4 * 4  4  4  4܍ rng  ԍ ݍ   AA ͕ _rng    inline {   հ R         հ      ǖ      _rng     BAB ͕  ͕ _rng    inline |    R                           ǖ          _rng      CABC ͕  ͕  ͕ _rng    inline |   R R                                      ǖ               _rng       DABCD ͕  ͕  ͕  ͕ _rng    inline }   R R                                                     ǖ                   _rng   Ú  ƚ  ɚ  ̚  Ϛ  EABCDE Ú ͕ ƚ ͕ ɚ ͕ ̚ ͕ Ϛ ͕ _rng    inline }   R R                                                                    ǖ                       _rng   ޚ       FABCDEF ޚ ͕  ͕  ͕  ͕  ͕  ͕ _rng    inline ~   R ӇR Ӈ Ӈ        Ӈ         Ӈ        Ӈ          Ӈ           Ӈ             Ӈ                      ǖ  Ӈ                         _rng          GABCDEFG ͕  ͕  ͕  ͕  ͕ Ɔ ׆͕  ͕ _rng    inline    R R                                                                                               ǖ                               _rng           HޣABCDEFGH ͕  ͕  ͕  ͕  ͕ Ɔ ׆͕  ͕  ͕ _rng    inline     R ޣR                                                                                                          ޣǖ                                   _rng    ě  Ǜ  ʛ  ͛  Л  ӛ  ֛  ٛ   I ABCDEFGHI  ͕ ě ͕ Ǜ ͕ ʛ ͕ ͛ ͕ ƆЛ ׆͕ ӛ ͕ ֛ ͕ ٛ ͕ _rng    inline      R  R                                                                                                                       ǖ                                       _rng               J ABCDEFGHIJ    ͕  ͕  ͕  ͕  ͕ Ɔ ׆͕  ͕  ͕  ͕  ͕ _rng    inline      R  R                                                                                                                                   ǖ                                           _rng                K ABCDEFGHIJ K     ͕  ͕  ͕  ͕  ͕ Ɔ ׆͕  ͕  ͕  ͕  ͕  ͕ _rng    inline      R  R                                                                                                                                               ǖ                                               _rng    œ  Ŝ  Ȝ  ˜  Μ  ќ  Ԝ  ל  ڜ  ݜ     L ABCDEFGHIJ K L      ͕ œ ͕ Ŝ ͕ Ȝ ͕ ˜ ͕ ƆΜ ׆͕ ќ ͕ Ԝ ͕ ל ͕ ڜ ͕ ݜ ͕  ͕ _rng    inline DŽ     R  R                                                                                                                                                           ǖ                                                   _rng   32        ܝ  T  _rng   s inline    հ R   A        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / 0 1 1   10/0  ,, 1 2 3 3   3212  .. 3 4 5 5   5434  00 5 6 7 7   7656  22 7 8 9 9   9878  44 9 : ; ;   ;:9:  66 ; < = =   =<;<  88 = > ? ?   ?>=>  :: ? @ A A   A@?@  <<" A *     "$&(*,.02468:<>@ @ > < : 8 6 4 2 0 . , * ( & $ "                  >> sBȞ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s 32 - 1    ŝ     ŝ     Տ  ܝ T  _rng   s inline    հ R   ?        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / 0 1 1   10/0  ,, 1 2 3 3   3212  .. 3 4 5 5   5434  00 5 6 7 7   7656  22 7 8 9 9   9878  44 9 : ; ;   ;:9:  66 ; < = =   =<;<  88 = > ? ?   ?>=>  ::! ? *    "$&(*,.02468:<> > < : 8 6 4 2 0 . , * ( & $ "                  << s@Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s  32 - 1 - 1     ŝ     ŝ   ŝ   ŝ      Տ Տ  ܝ T  _rng   s inline    հ R   =        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / 0 1 1   10/0  ,, 1 2 3 3   3212  .. 3 4 5 5   5434  00 5 6 7 7   7656  22 7 8 9 9   9878  44 9 : ; ;   ;:9:  66 ; < = =   =<;<  88 = *    "$&(*,.02468:< < : 8 6 4 2 0 . , * ( & $ "                  :: s>Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s 32 - 1 - 1 - 1      ŝ     ŝ   ŝ   ŝ   ŝ   ŝ       Տ Տ Տ  ܝ ֢T  _rng   s inline ۊ   հ R   ;        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / 0 1 1   10/0  ,, 1 2 3 3   3212  .. 3 4 5 5   5434  00 5 6 7 7   7656  22 7 8 9 9   9878  44 9 : ; ;   ;:9:  66 ; *    "$&(*,.02468: : 8 6 4 2 0 . , * ( & $ "                  88 s<Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s 32 - 1 - 1 - 1 - 1       ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ        Տ Տ Տ Տ  ܝ T  _rng   s inline    հ R   9        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / 0 1 1   10/0  ,, 1 2 3 3   3212  .. 3 4 5 5   5434  00 5 6 7 7   7656  22 7 8 9 9   9878  44 9 *    "$&(*,.02468 8 6 4 2 0 . , * ( & $ "                  66 s:Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s 32 - 1 - 1 - 1 - 1 - 1        ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ           Տ Տ Տ Տ Տ  ܝ   ÀT    _rng   s inline    հ  R     7        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / 0 1 1   10/0  ,, 1 2 3 3   3212  .. 3 4 5 5   5434  00 5 6 7 7   7656  22 7 *    "$&(*,.0246 6 4 2 0 . , * ( & $ "                  44 s8Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s 32 - 1 - 1 - 1 - 1 - 1 - 1         ŝ     ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ     ŝ    ŝ     ŝ    ŝ            Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline    հ   R      5        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / 0 1 1   10/0  ,, 1 2 3 3   3212  .. 3 4 5 5   5434  00 5 *    "$&(*,.024 4 2 0 . , * ( & $ "                  22 s6Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s 32 - 1 - 1 - 1 - 1 - 1 - 1 - 1          ŝ     ŝ   ŝ   ŝ    ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ            Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline    հ   R      3        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / 0 1 1   10/0  ,, 1 2 3 3   3212  .. 3 *    "$&(*,.02 2 0 . , * ( & $ "                  00 s4Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s "32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1"            ŝ     ŝ    ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ    ŝ   ŝ   ŝ   ŝ            Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline    հ   R      1        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / 0 1 1   10/0  ,, 1 *    "$&(*,.0 0 . , * ( & $ "                  .. s2Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s &32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1&             ŝ      ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ              Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline ٔ   հ   R      /        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - . / /   /.-.  ** / *    "$&(*,. . , * ( & $ "                  ,, s0Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s *32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1*              ŝ      ŝ       ŝ     ŝ     ŝ    ŝ     ŝ    ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ               Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline    հ   R      -        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + , - -   -,+,  (( - *    "$&(*, , * ( & $ "                  ** s.Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s .32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1.               ŝ      ŝ       ŝ     ŝ       ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ                Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   “T    _rng   s inline    հ   R      +        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) * + +   +*)*  && + *    "$&(* * ( & $ "                  (( s,Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s 232 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 12                ŝ      ŝ       ŝ     ŝ      ŝ    ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ                 Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline    հ   R      )        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' ( ) )   )('(  $$ ) *    "$&( ( & $ "                  && s*Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s 632 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 16                 ŝ      ŝ      ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ                  Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline    հ   R      '        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % & ' '   '&%&  "" ' *    "$& & $ "                  $$ s(Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s :32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1:                 ŝ     ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ                  Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline ˜   հ   R      %        s                                                                                                                                             ! !   !     ! " # #   #"!"   # $ % %   %$#$    % *    "$ $ "                  "" s&Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s >32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1>                  ŝ     ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ   ŝ   ŝ                   Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline    հ   R      #        s                                                                                                                                             ! !   !     ! " # #   #"!"   # *    " "                    s$Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s B32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1B                   ŝ     ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ                     Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline џ   հ   R      !        s                                                                                                                                             ! !   !     ! *                      s"Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s F32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1F                    ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  !  "                 Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   ՜T    _rng   s inline    հ   R              s                                                                                                                                            *                     s Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s J32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1J                     ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ      ŝ    ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  #  $                  Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline Ϣ   հ   R              s                                                                                                                                   *                    sȞ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s N32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1N                      ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ      ŝ    ŝ      ŝ    ŝ    ŝ   ŝ    ŝ   ŝ     ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  %  &                   Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   T    _rng   s inline    հ   R              s                                                                                                                          *                    s Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s V32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1V                       ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ      ŝ    ŝ      ŝ    ŝ      ŝ    ŝ     ŝ    ŝ     !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  '  (                    Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   ʝ T    _rng   s inline ť   հ   R              s                                                                                                                 *                   s Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s Z32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1Z                        ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ      ŝ    ŝ      ŝ    ŝ       ŝ     ŝ      ! ŝ   ! ŝ   ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  ' (ŝ   (ŝ  ( )ŝ   )ŝ  )  *                     Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ    T    _rng   s inline    հ   R              s                                                                                                        *                  s Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s ^32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1^                         ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ      ŝ    ŝ       ŝ     ŝ      ! ŝ   ! ŝ    ! " ŝ   " ŝ    " # ŝ   # ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  ' (ŝ   (ŝ  ( )ŝ   )ŝ  ) *ŝ   *ŝ  * +ŝ   +ŝ  +  ,                      Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ    T    _rng   s inline    հ   R              s                                                                                               *                 s Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s b32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1b                          ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ      ! ŝ   ! ŝ    ! " ŝ   " ŝ    " # ŝ   # ŝ    # $ ŝ   $ ŝ   $ % ŝ   % ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  ' (ŝ   (ŝ  ( )ŝ   )ŝ  ) *ŝ   *ŝ  * +ŝ   +ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  -  .                       Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   !T    _rng   s inline    հ   R              s                                                                                      *                s Ȟ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s f32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1f                           ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ     !ŝ   !ŝ   ! "ŝ   "ŝ    " # ŝ   # ŝ    # $ ŝ   $ ŝ    $ % ŝ   % ŝ   % & ŝ   & ŝ   & ' ŝ   ' ŝ  ' (ŝ   (ŝ  ( )ŝ   )ŝ  ) *ŝ   *ŝ  * +ŝ   +ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  /  0                        Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   !T    _rng   s inline    հ   R              s                                                                             *              sȞ   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s j32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1j                            ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ   ! "ŝ   "ŝ   " #ŝ   #ŝ   # $ŝ   $ŝ    $ % ŝ   % ŝ    % & ŝ   & ŝ   & ' ŝ   ' ŝ   ' ( ŝ   ( ŝ   ( ) ŝ   ) ŝ  ) *ŝ   *ŝ  * +ŝ   +ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1  2                         Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   !T    _rng   s inline ɬ   հ   R              s                                                                   *              sȞ   *  *  *  *  *  *  *  *  *  *  *  *  *  * _rng  s n32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1n                             ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ   " #ŝ   #ŝ   # $ŝ   $ŝ   $ %ŝ   %ŝ   % &ŝ   &ŝ    & ' ŝ   ' ŝ   ' ( ŝ   ( ŝ   ( ) ŝ   ) ŝ   ) * ŝ   * ŝ   * + ŝ   + ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1 2ŝ   2ŝ  2 3ŝ   3ŝ  3  4                          Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   "T    _rng   s inline    հ   R               s                                                        *            sȞ   *  *  *  *  *  *  *  *  *  *  *  * _rng  s r32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1r                              ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ   # $ŝ   $ŝ   $ %ŝ   %ŝ   % &ŝ   &ŝ   & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( ) ŝ   ) ŝ   ) * ŝ   * ŝ   * + ŝ   + ŝ   + , ŝ   , ŝ   , - ŝ   - ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1 2ŝ   2ŝ  2 3ŝ   3ŝ  3 4ŝ   4ŝ  4 5ŝ   5ŝ  5  6                           Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   "T    _rng   s inline    հ   R               s                                           *         s Ȟ   *  *  *  *  *  *  *  *  *  * _rng  s v32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1v                               ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ   $ %ŝ   %ŝ   % &ŝ   &ŝ   & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( )ŝ   )ŝ  ) *ŝ   *ŝ   * + ŝ   + ŝ   + , ŝ   , ŝ   , - ŝ   - ŝ   - . ŝ   . ŝ   . / ŝ   / ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1 2ŝ   2ŝ  2 3ŝ   3ŝ  3 4ŝ   4ŝ  4 5ŝ   5ŝ  5 6ŝ   6ŝ  6 7ŝ   7ŝ  7  8                            Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   "T    _rng   s inline Ͱ   հ   R               s                              *        s Ȟ   *  *  *  *  *  *  *  * _rng  s z32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1z                                ŝ     ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ   % &ŝ   &ŝ   & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( )ŝ   )ŝ   ) *ŝ   *ŝ  * +ŝ   +ŝ  + ,ŝ   ,ŝ   , - ŝ   - ŝ   - . ŝ   . ŝ   . / ŝ   / ŝ   / 0 ŝ   0 ŝ   0 1 ŝ   1 ŝ  1 2ŝ   2ŝ  2 3ŝ   3ŝ  3 4ŝ   4ŝ  4 5ŝ   5ŝ  5 6ŝ   6ŝ  6 7ŝ   7ŝ  7 8ŝ   8ŝ  8 9ŝ   9ŝ  9  :                             Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   ߑ#T    _rng   s inline    հ   R              s                   *       sȞ   *  *  *  *  *  * _rng  s ~32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1~                                 ŝ     ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ   & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( )ŝ   )ŝ   ) *ŝ   *ŝ   * +ŝ   +ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ   . / ŝ   / ŝ   / 0 ŝ   0 ŝ   0 1 ŝ   1 ŝ   1 2 ŝ   2 ŝ   2 3 ŝ   3 ŝ  3 4ŝ   4ŝ  4 5ŝ   5ŝ  5 6ŝ   6ŝ  6 7ŝ   7ŝ  7 8ŝ   8ŝ  8 9ŝ   9ŝ  9 :ŝ   :ŝ  : ;ŝ   ;ŝ  ;  <                              Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   ݹ#T    _rng   s inline    հ   R              s          *      sȞ   *  *  *  * _rng  s 32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1                                   ŝ     ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( )ŝ   )ŝ   ) *ŝ   *ŝ   * +ŝ   +ŝ   + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ   0 1 ŝ   1 ŝ   1 2 ŝ   2 ŝ   2 3 ŝ   3 ŝ   3 4 ŝ   4 ŝ   4 5 ŝ   5 ŝ  5 6ŝ   6ŝ  6 7ŝ   7ŝ  7 8ŝ   8ŝ  8 9ŝ   9ŝ  9 :ŝ   :ŝ  : ;ŝ   ;ŝ  ; <ŝ   <ŝ  < =ŝ   =ŝ  =  >                               Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ܝ   #T    _rng   s inline    հ   R               *    sȞ   *  * _rng  s ͟ 32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 !                                   ŝ      ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  ' (ŝ   (ŝ   ( )ŝ   )ŝ   ) *ŝ   *ŝ   * +ŝ   +ŝ   + ,ŝ   ,ŝ   , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1 2ŝ   2ŝ   2 3 ŝ   3 ŝ   3 4 ŝ   4 ŝ   4 5 ŝ   5 ŝ   5 6 ŝ   6 ŝ   6 7 ŝ   7 ŝ  7 8ŝ   8ŝ  8 9ŝ   9ŝ  9 :ŝ   :ŝ  : ;ŝ   ;ŝ  ; <ŝ   <ŝ  < =ŝ   =ŝ  = >ŝ   >ŝ  > ?ŝ   ?ŝ   ?  @                                Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ  ȟ `  $T  ͟ _rng   /  հ   R          /  _rng  / STATE_WORDS        STATE_WORDS         @ A random number generator that uses the ChaCha20 algorithm [1]. C 8 The ChaCha algorithm is widely accepted as suitable for ;= cryptographic purposes, but this implementation has not been @A verified as such. Prefer a generator like `OsRng` that defers to D8 the operating system for cases that need high security. ; - [1]: D. J. Bernstein, [*ChaCha, a variant of 0' Salsa20*](http://cr.yp.to/chacha.html) *                   automatically_derived   allow    unused_qualifications   3 self f           automatically_derived   allow    unused_qualifications     self    inline    $              self    automatically_derived ͷ  allow η   unused_qualifications    RAND_SIZE_USIZE        RAND_SIZE_USIZEܡ ܡ ܡ ܡ ܡ ܡ ܡ ܡ   < A random number generator that uses the ISAAC algorithm[1]. ? : The ISAAC algorithm is generally accepted as suitable for =; cryptographic purposes, but this implementation has not be >A verified as such. Prefer a generator like `OsRng` that defers to D8 the operating system for cases that need high security. ; > [1]: Bob Jenkins, [*ISAAC: A fast cryptographic random number A@ generator*](http://www.burtleburtle.net/bob/rand/isaacafa.html) C           ѡ ѡ                      automatically_derived   allow    unused_qualifications   RAND_SIZE_64        RAND_SIZE_64         < A random number generator that uses ISAAC-64[1], the 64-bit ? variant of the ISAAC algorithm. # : The ISAAC algorithm is generally accepted as suitable for =; cryptographic purposes, but this implementation has not be >A verified as such. Prefer a generator like `OsRng` that defers to D8 the operating system for cases that need high security. ; > [1]: Bob Jenkins, [*ISAAC: A fast cryptographic random number A@ generator*](http://www.burtleburtle.net/bob/rand/isaacafa.html) C      ѧ     ѧ     ѧ    ѧ    ѧ    automatically_derived   allow    unused_qualifications    V An Xorshift[1] random number  generator.  B The Xorshift algorithm is not suitable for cryptographic purposes E@ but is very fast. If you do not know for sure that it fits your CC requirements, use a more secure one such as `IsaacRng` or `OsRng`. F / [1]: Marsaglia, George (July 2003). ["Xorshift 2< RNGs"](http://www.jstatsoft.org/v08/i14/paper). *Journal of ?* Statistical Software*. Vol. 8 (Issue 14). - allow    missing_copy_implementations  &                   automatically_derived   allow    unused_qualifications   allow    missing_copy_implementations  & 3self f          automatically_derived   allow    unused_qualifications   allow    missing_copy_implementations  &  self    inline    $                                $            $           $                               $ $ $    $  $    $  $    $  $    $  $ self  __self_0_0  __self_0_1  __self_0_2  __self_0_3   Ƕ ʶ f7 Iterator which will generate a stream of random items.ȴ:A This iterator is created via the [`gen_iter`] method on [`Rng`].D̵- [`gen_iter`]: trait.Rng.html#method.gen_iterе0 [`Rng`]: trait.Rng.html   'a'a T R    Ƕʶ 'a̶$ֶֶֶ 'a  '   automatically_derivedallow unused_qualifications   'a3$'a T R     'a̶3selff  'a $   ֶֶ''ӫ Generator     ֶ ֶ ֶ ֶӫrngֶ ֶ ֶֶֶֶֶֶֶ          ''''ӫ_marker'''''''''  òآ ֶ 'آӫӫܣܣӫֶӫֶֶ $ֶ$ֶ$ֶܣܣӫ'ӫ'' $'$'$'ܣselff __self_0_0ֶ __self_0_1'debug_trait_builder غź;C Iterator which will continuously generate random ascii characters.FH This iterator is created via the [`gen_ascii_chars`] method on [`Rng`].Kʹ; [`gen_ascii_chars`]: trait.Rng.html#method.gen_ascii_charsι> [`Rng`]: trait.Rng.html   'aհ'a R    غհ 'aں$ 'aհ  automatically_derivedallow unused_qualifications   'aհ3$'a R   հ 'aں3հselff  'aհ $   ӫAsciiGenerator     ӫrng                آ آӫӫܣܣӫӫ $$$ܣselff __self_0_0debug_trait_builder  A A wrapper for generating floating point numbers uniformly in theD7 open interval `(0,1)` (not including either endpoint).:@ Use `Closed01` for the closed interval `[0,1]`, and the defaultC< `Rand` implementation for `f32` and `f64` for the half-open? `[0,1)`.  # Example  ```rust  use rand::{random, Open01};+ let Open01(val) = random::>();.% println!("f32 from (0,1): {}", val);( ```  FF  $$    $$$  $$$ automatically_derivedallow unused_qualifications $3$F  $3$selff $ $   $ӫOpen01? 3              1       1 $آ $1آӫӫ $$ $$$$selff __self_0_0debug_trait_builder  A A wrapper for generating floating point numbers uniformly in theD4 closed interval `[0,1]` (including both endpoints).7> Use `Open01` for the closed interval `(0,1)`, and the defaultA; `Rand` implementation of `f32` and `f64` for the half-open> `[0,1)`.  # Example  ```rust  use rand::{random, Closed01};!/ let Closed01(val) = random::>();2% println!("f32 from [0,1]: {}", val);( ```  $F  $$    $$$  $$$ automatically_derivedallow unused_qualifications $3$F  $$selff $ $   $ӫClosed01$             $      $ $آ$$آӫӫ$$$$$$selff __self_0_0debug_trait_builder,B The standard RNG. This is designed to be efficient on the currentE platform.   automatically_derivedallow unused_qualifications 3selff    automatically_derivedallow unused_qualifications  self inline %   selfautomatically_derivedallow unused_qualifications / Controls how the thread-local RNG is reseeded.2cfg featurestd   automatically_derivedallow unused_qualifications 3selff     > The thread-local RNG.cfg featurestd    automatically_derivedallow unused_qualifications 3selff    automatically_derivedallow unused_qualifications  self inline %                 self __self_0_0 { #[inline] fn __init() -> Rc> { { let r = match StdRng::new() { Ok(r) => r, Err(e) => { ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["No entropy available: "], &match (&e,) { (arg0,) => [::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Display::fmt)], })) } }; let rng = reseeding::ReseedingRng::new(r, THREAD_RNG_RESEED_THRESHOLD, ThreadRngReseeder); Rc::new(RefCell::new(rng)) } } unsafe fn __getit() -> ::std::option::Option<&'static Rc>> { #[thread_local] #[cfg(all(target_thread_local, not(all(target_arch = "wasm32", not(target_feature = "atomics"))),))] static __KEY: ::std::thread::__FastLocalKeyInner>> = ::std::thread::__FastLocalKeyInner::new(); #[allow(unused_unsafe)] unsafe { __KEY.get(__init) } } unsafe { ::std::thread::LocalKey::new(__getit) } } k      &   & k k M%  &Ի%  k΍ ˍ  inline         Errѱɧ%ɧ%ʧ$    ӫ     Ǿ  ʧ$ ʧ$ ʧ$ʧ$ʧ$ʧ$ʧ$ 3ѱ  ѱ ʧ$ʧ$ 3ѱʧ$  Ok   ʧ$ ʧ$ʧ$ ʧ$   ʧ$ʧ$   ʧ$ˍ   ɧ%ɧ%B B      ˍ  /ʧ$ ѱB ɧ%B ɧ%B ʧ$BǾ B%B%B ʧ$B  ʧ$B%ʧ$B%ʧ$Bʧ$BB ʧ$BB%%rrearg0rngˍ  ӫӫNo entropy available: ˍ  /ʧ$%%  :ʻ%   w  thread_local  Ő cfgŐ Ȑ ߑ  allɐ ̐ ޑ  target_thread_local   not  ˑ  all  ʑ  target_arch  wasm32   not  ɑ  target_feature  atomics ̑ Ð  * (  * w w% ' w  о  b         փ ̈́ ą   NJ                   MEMORY_SIZE         88ͲͲͲͲͲͲͲ4       8                    Ǚ   KEY_WORDS        KEY_WORDS        KEY_WORDS         KEY_WORDS        KEY_WORDS                              Տ i                         Տ i                  Տ i                  Տ i   'a       %  x                          Տ i                         Տ i                  Տ i                  Տ i  ˟ 'a%%%ۦ͟ џ ˟ П ͟   %˟ ۦ̟ x͟ ˟  ߥ 4         %                  %    x  4         %                 ڀ&    x              !                   32         32 - 1    ŝ     ŝ     Տ    32 - 1 - 1     ŝ     ŝ   ŝ   ŝ      Տ Տ   32 - 1 - 1 - 1      ŝ     ŝ   ŝ   ŝ   ŝ   ŝ       Տ Տ Տ   32 - 1 - 1 - 1 - 1       ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ        Տ Տ Տ Տ   32 - 1 - 1 - 1 - 1 - 1        ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ           Տ Տ Տ Տ Տ   32 - 1 - 1 - 1 - 1 - 1 - 1         ŝ     ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ     ŝ    ŝ     ŝ    ŝ            Տ Տ Տ Տ Տ Տ   32 - 1 - 1 - 1 - 1 - 1 - 1 - 1          ŝ     ŝ   ŝ   ŝ    ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ            Տ Տ Տ Տ Տ Տ Տ   "32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1"            ŝ     ŝ    ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ    ŝ   ŝ   ŝ   ŝ            Տ Տ Տ Տ Տ Տ Տ Տ   &32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1&             ŝ      ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ              Տ Տ Տ Տ Տ Տ Տ Տ Տ   *32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1*              ŝ      ŝ       ŝ     ŝ     ŝ    ŝ     ŝ    ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ               Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   .32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1.               ŝ      ŝ       ŝ     ŝ       ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ                Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   232 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 12                ŝ      ŝ       ŝ     ŝ      ŝ    ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ                 Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   632 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 16                 ŝ      ŝ      ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ                  Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   :32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1:                 ŝ     ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ                  Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   >32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1>                  ŝ     ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ   ŝ   ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ   ŝ   ŝ                   Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   B32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1B                   ŝ     ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ   ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ   ŝ   ŝ   ŝ   ŝ                     Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   F32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1F                    ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  !  "                 Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   J32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1J                     ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ      ŝ    ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  #  $                  Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   N32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1N                      ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ     ŝ    ŝ      ŝ    ŝ      ŝ    ŝ    ŝ   ŝ    ŝ   ŝ     ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  %  &                   Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   V32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1V                       ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ     ŝ    ŝ      ŝ    ŝ      ŝ    ŝ      ŝ    ŝ     ŝ    ŝ     !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  '  (                    Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   Z32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1Z                        ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ      ŝ    ŝ      ŝ    ŝ       ŝ     ŝ      ! ŝ   ! ŝ   ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  ' (ŝ   (ŝ  ( )ŝ   )ŝ  )  *                     Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   ^32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1^                         ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ      ŝ    ŝ       ŝ     ŝ      ! ŝ   ! ŝ    ! " ŝ   " ŝ    " # ŝ   # ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  ' (ŝ   (ŝ  ( )ŝ   )ŝ  ) *ŝ   *ŝ  * +ŝ   +ŝ  +  ,                      Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   b32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1b                          ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ     ŝ    ŝ      ! ŝ   ! ŝ    ! " ŝ   " ŝ    " # ŝ   # ŝ    # $ ŝ   $ ŝ   $ % ŝ   % ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  ' (ŝ   (ŝ  ( )ŝ   )ŝ  ) *ŝ   *ŝ  * +ŝ   +ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  -  .                       Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   f32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1f                           ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ     !ŝ   !ŝ   ! "ŝ   "ŝ    " # ŝ   # ŝ    # $ ŝ   $ ŝ    $ % ŝ   % ŝ   % & ŝ   & ŝ   & ' ŝ   ' ŝ  ' (ŝ   (ŝ  ( )ŝ   )ŝ  ) *ŝ   *ŝ  * +ŝ   +ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  /  0                        Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   j32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1j                            ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ   ! "ŝ   "ŝ   " #ŝ   #ŝ   # $ŝ   $ŝ    $ % ŝ   % ŝ    % & ŝ   & ŝ   & ' ŝ   ' ŝ   ' ( ŝ   ( ŝ   ( ) ŝ   ) ŝ  ) *ŝ   *ŝ  * +ŝ   +ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1  2                         Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   n32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1n                             ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ   " #ŝ   #ŝ   # $ŝ   $ŝ   $ %ŝ   %ŝ   % &ŝ   &ŝ    & ' ŝ   ' ŝ   ' ( ŝ   ( ŝ   ( ) ŝ   ) ŝ   ) * ŝ   * ŝ   * + ŝ   + ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1 2ŝ   2ŝ  2 3ŝ   3ŝ  3  4                          Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   r32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1r                              ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ   # $ŝ   $ŝ   $ %ŝ   %ŝ   % &ŝ   &ŝ   & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( ) ŝ   ) ŝ   ) * ŝ   * ŝ   * + ŝ   + ŝ   + , ŝ   , ŝ   , - ŝ   - ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1 2ŝ   2ŝ  2 3ŝ   3ŝ  3 4ŝ   4ŝ  4 5ŝ   5ŝ  5  6                           Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   v32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1v                               ŝ     ŝ   ŝ   ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ   $ %ŝ   %ŝ   % &ŝ   &ŝ   & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( )ŝ   )ŝ  ) *ŝ   *ŝ   * + ŝ   + ŝ   + , ŝ   , ŝ   , - ŝ   - ŝ   - . ŝ   . ŝ   . / ŝ   / ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1 2ŝ   2ŝ  2 3ŝ   3ŝ  3 4ŝ   4ŝ  4 5ŝ   5ŝ  5 6ŝ   6ŝ  6 7ŝ   7ŝ  7  8                            Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   z32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1z                                ŝ     ŝ   ŝ   ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ   % &ŝ   &ŝ   & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( )ŝ   )ŝ   ) *ŝ   *ŝ  * +ŝ   +ŝ  + ,ŝ   ,ŝ   , - ŝ   - ŝ   - . ŝ   . ŝ   . / ŝ   / ŝ   / 0 ŝ   0 ŝ   0 1 ŝ   1 ŝ  1 2ŝ   2ŝ  2 3ŝ   3ŝ  3 4ŝ   4ŝ  4 5ŝ   5ŝ  5 6ŝ   6ŝ  6 7ŝ   7ŝ  7 8ŝ   8ŝ  8 9ŝ   9ŝ  9  :                             Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   ~32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1~                                 ŝ     ŝ   ŝ   ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ   & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( )ŝ   )ŝ   ) *ŝ   *ŝ   * +ŝ   +ŝ  + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ   . / ŝ   / ŝ   / 0 ŝ   0 ŝ   0 1 ŝ   1 ŝ   1 2 ŝ   2 ŝ   2 3 ŝ   3 ŝ  3 4ŝ   4ŝ  4 5ŝ   5ŝ  5 6ŝ   6ŝ  6 7ŝ   7ŝ  7 8ŝ   8ŝ  8 9ŝ   9ŝ  9 :ŝ   :ŝ  : ;ŝ   ;ŝ  ;  <                              Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1                                   ŝ     ŝ    ŝ    ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ   ' (ŝ   (ŝ   ( )ŝ   )ŝ   ) *ŝ   *ŝ   * +ŝ   +ŝ   + ,ŝ   ,ŝ  , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ   0 1 ŝ   1 ŝ   1 2 ŝ   2 ŝ   2 3 ŝ   3 ŝ   3 4 ŝ   4 ŝ   4 5 ŝ   5 ŝ  5 6ŝ   6ŝ  6 7ŝ   7ŝ  7 8ŝ   8ŝ  8 9ŝ   9ŝ  9 :ŝ   :ŝ  : ;ŝ   ;ŝ  ; <ŝ   <ŝ  < =ŝ   =ŝ  =  >                               Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   32 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 !                                   ŝ      ŝ    !ŝ   !ŝ  ! "ŝ   "ŝ  " #ŝ   #ŝ  # $ŝ   $ŝ  $ %ŝ   %ŝ  % &ŝ   &ŝ  & 'ŝ   'ŝ  ' (ŝ   (ŝ   ( )ŝ   )ŝ   ) *ŝ   *ŝ   * +ŝ   +ŝ   + ,ŝ   ,ŝ   , -ŝ   -ŝ  - .ŝ   .ŝ  . /ŝ   /ŝ  / 0ŝ   0ŝ  0 1ŝ   1ŝ  1 2ŝ   2ŝ   2 3 ŝ   3 ŝ   3 4 ŝ   4 ŝ   4 5 ŝ   5 ŝ   5 6 ŝ   6 ŝ   6 7 ŝ   7 ŝ  7 8ŝ   8ŝ  8 9ŝ   9ŝ  9 :ŝ   :ŝ  : ;ŝ   ;ŝ  ; <ŝ   <ŝ  < =ŝ   =ŝ  = >ŝ   >ŝ  > ?ŝ   ?ŝ   ?  @                                Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ Տ   STATE_WORDS        STATE_WORDS       >ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789?>>******** 8+!i j]i Pni 2ci i hj *hj j (fj $'j ~/j 6 f  T 7j ?j 0Gj Oj /&Wj V]9%% )H)_j *+gj --K11oj 3R3wj 566j :V;1;L=y=6@u@j A0Bj `DAEDrEQFE0^]uv3væi  i Qoj ij fYj }j >@&Lmb"])d*iE{dj m` ) ~  c   w iK+qCk k kAh=l;wF_c|U! $# $$,x..%$%///0@0d00/;1Z1112e2 333455u5l 9l =@SABWCBCJCD:GJwJJKM#O)R RRRSVYY]D^7^^`=``aaaay0w8w@wGRZbݑl6ml l ml ;m  m Jzm $Sm %m b-m 5m 0^=m yEm pMm eXUm B&ܔgm Ηm ОFy$qn ңn o o ˬgvx߳s  t 9y?  u   7w EixQtUz { OV#$G} k$ &?&X~ ++,-&-..54e5b~ 56 z66 =Di EFFJjRWbi ei hi ~quewi |i i z /Leprzۖu0#՜ƞ*JQFЪibN_NʾDLT\~dW8+W    @V" J * 2 L : $9%]*B ..4J k88=R 2BmBBZ D!EnEb GLL^MM=NNO?PvPOQIQOQRPRmSSRTUUWWWXXYGZ[[\6\[\]P]]^_2bXbcMccdieeee2fefggth%ii)lJlkllImm(nno_qqq^rr=sstwwSx yNyyzr{}}}~~4 Ms,h ډ_\sِ}/ՓƔE8'zah[B/ 8fYwO5(4X 8Ľx :-{`hZ|+2eLxj Hs v| 19k  * % m  N)19A+ dlt|Ă ͂   ` ւ N !)19A߂ =EMU]emu}% $o$w$$$$$$$$$& ////////////1 2<;;;;;;;< <<<%<?> pIHII  Mab`r`a~ yww}yd x Ɛǎߎ(ԅ Nť· R r X|W` v _r F Kƙ 2,-3 0 2IBCI _XY` B unnQvڱ  ,p{8 |  h Of :' cN h ?@$ | : m  s# # J 8H,,8  |M@AM @ LbTgUb ! vii[w- ^. }}; << sL(J J .1Y Y OH̸h i MDx y *   1/ 4 Ś % "  N  z  g k f W  F g      * p q  = ^   g    ! ?w x  6 X z    ' < ~ " " " " " &$ + + , , , - 2 #5 2 4 5 5 6 : m= : G= > = > C C C }D D E XF G G G H H I I uJ J wK ] ^ +g \g :,#i l^i Rpi 4e i j jj ,jj j *h j &(j 0j 8 h  V 8j @j 2Hj Pj 1(Xj X_:%% )J)`j *+hj --M11pj 3T3xj 566j :X;2;N={=8@w@j A2Bj bDBEDwERFE1^]uv8v Ŧi "i Sqj kj hZj ~ j CE'Mng$_+f,jG}fj ob +   h   y kL-sHk k mGn>n=yHdeW! $#%$$,y..%)%///0B0f00/=1\1112g2 333455w5l 9l =@UA BYCCCKCDm {Fm rNm gYVm C+ޔlm Зm ҞH{&vn ԣn o o ͬl{} s t ;{A  u   8w Gn}SvVz { QX#$H} m$ &A&Y~ ++,-(-..54g5g~ 5; |66 =Di E FFJlRWbi ei hi qugwi |i i { 1Ngrt|ܖw2$ÙڜȞ,LSHҪkdñPaO̾EMU]fX:,Y    BX# L + 3 N ; %;%_*C ..4K m88=S 4BoBB[ D#EpEc GLL`MM?NNOAPxPOQKQOQRPRoSSTTUUWWXXXYIZ"[[\7\]\]R]]^_3bZbcOccdneeee4fefggvh'ii*lKllllKmm*nno`qqq`rr?sstwwUxyPyyzx{}}}~~6Nu.j a^tې1 ֓ȔG9){cj\H09hZyQ7 *6Z :ƽz <.ai[}-4gNzk Jt x} 6;m  , ' o  P*2:B- emu}ł ΂   b ׂ P "*2:B >FNV^fnv~' $p$x$$$$$$$$$& ////////////1 4<;;;;;;;<<<<&<A> rIH II  Oac`w`a ywwye } ȐȎ*Յ Pƥχ żS w YYa x % `t K MǙ 2,-3 5 4IB CI _X Y` G unnSv۱  -u}9 "! m Th ;) eO m @B% <r # u#%# O 8I,,8  ~M@"AM E NbTlUb ! vii]w- c. }}; A< xN)J J 06Y Y QIѸh i OIx y ,  21 5 ˚ + # # O  {  i m k Y # G h      , p q  > _   l    # @w x  7 Y {    ) > ~ " " " " " ($ + + , , , - 2 )5 2 4 5 5 6 : s= : H= > = > C C C D D E ZF G G G H H I I wJ J yK ] ^ -g ]g =-&i o_i Sqi 7h i j m j /mj j -k!j ')j 1j ; i  Y 9j Aj 3 Ij Qj 2+Yj [b;%%)M)aj *+ij --P11qj 3W3yj 566j :\;3;R=|=<@{@j A6Bj eDCEDxESFE2^]uv9v Ʀi #i  V tj nj k[j  j GI +Qrh(c/j0nK~gj pf /   l   z oM1wIk k nHrBrA}Lei[!$#)$%,}./%*%///0F0j00/A1]1112k2 3334#55{5l 9l =@VAB]CDCLCD=GJyJJKM)O/RRRRSVYY]J^9^^`C``aaaay2w:wBwJT\dr8p!l l sl Am m Pm *Ym 'm h/m 7m 6d?m Gm vOm kZWm G#,mm ї#m ֞L*wn أn o o Ѭp~ s t ?E  u   9w Kr~Ww"Wz  { U\#$I} q$&E&Z~ ++, -)-.. 54k5h~ 5< 66 =Di E FFJmRWbi ei hi quhwi |i i |"4Qjuwݖz5%ƙݜɞ/M"VKժneƱSbP;FNV^iY=-\   E[$ O , 4 Q < %>%b*D ..4L p88=T 7BrBB\ D&EsEd GLLcMMBNNODP{POQNQOQRPRrSSWTUUWWXXXYLZ%[[\:\`\]U]]^_6b]bcRccdqeeef7fefggyh*ii-lNlollNmm-nnocqqqcrrBsstwwXxySyyzy{}}}~~9Qx1mebxߐ5 ד˔J:,|fm]I1<k[|R8 +:^>ʽĿ~@/#bj_1 8kR~l Nu |~ :?q  0 + s  T+3;C1 fnv~Ƃ ς   f ؂ T #+3;C ?GOW_gow+ $q$y$$$$$$$$$& 0///////////1 8<;;;;;;;<<<<'<E> vIH II  Sad`x`a !ywwyf ~ ̐Ɏ.օ TǥЇ ƼT x Z]b | & ax L Qș 2,-3 6 8IB!CI _X Y ` H unnWvܱ .v: &" n Ul <- iP n AF& @s $ y#&# P 8J,,8  M@#AM F RbTmUb ! viiaw- d. }}; B< yR*J J 47Y Y UJҸh i SJx y 0  35 6 ̚ , ' $ S    m q l ] $ K l      0 p q  B c   m    ' Aw x  ; ]     - B ~ " " " " " +$ + + , , , . 2 *5 2 4 5 5 6 ; t= : I= > = > C C C D D E ]F G G G H H I I zJ J |K ] ^ 0g `g 435eEq*>^c%t#ry1   _  #92DA%&)S)*+-.F113]356699;G=>1@@A=BWD;EWEKF*^uvy/L\zta51Wxi$p6c@',n  Gv At  [  }  n S8}4H:gGr-J!$#$$,r..v///"0r0/61d111$2r223M4559=@@ARCTEGJKM0O$RSWY^?^^`I`i`a|y>0J+hiE ]&+tk`-L< הxКA&~ݭN]ڳe`Et:  [   @aLV~J$#%$%&L&+,.,-../55R6u66=;EEFHO bTzD[Kdwg lrLv y}(:Wp{}+͙c%~Q~˪uyYYV_3?R8?nE &G $g%*. /E4f88 >-ByBBD-EyEGLLiMM8NOOLPOQPQ!PRxSSMT0UUWWWXXYtZ[\ \@\V\]K]]^v_qG,{q64t]XI^.  IY$&/2-<s>kIJHaayy[IH ~243-II_7`uvZ^s5n#$89wMNGbbvw~)ôJH% <  - Y   t R  Q r     %  H i       A c     " o " " " 2$ + , , . 2 5 5 6 : O= = > C C C D D E SF G G H H I I J J K oM ] g Tg D-vZw>os6t4r.B p " _  #:82ah%%)S)*+--V113]3566:b;Y==B@@A=BkDIE~EZF9^uv̦ŧ)Ʃ\ztîrMO1Wx/i6p6tSn vm 6   r  \  u8}sNHyGRob!$#/$%,./%///"0p0/H1d111$2r2334*559=@[ABdCDDGJKM0O6RSVY]Q^^#`I``ayHwPj xu ( yGW0_n=k|rM) ؗ*ݞS1ޣ&׬v s t EL  v   Rx^})]z %&{ [c#%$O} w$&L&+,,-0-..'5r5666= DEFFJ#sR Wb ehq u ow}(:WÐp{}<͙ȝϞ  6T )\Q ܪuƫk ͱYh,ӾdoCcLbV X  %E%i*..#4w88=>ByBBD-EyEGLLiMMHNNOJPOQPQ!PRxSS]TUU WW XXXYRZ+[\ \@\f\][]]^_1@d DнʿF)e7>qX "VAGx83{\9  n \3$& 01@<M>~II[aa)yyԐ5\"d"X23@II_`u^v'.s4qMH##88MMZbbwhwY<][8 < 3 - Y   t x d + Q r     7  p q  H i     . Hw x  A c     4 I ~ ! " " " 2$ %+ , , . 2 5 5 6 ; O= > > "C C C D D E dF G G H I I I J J K ] ^ 8g hg yA&D-v;>os64B "  %)*-V13g66Y=B@AD]Ʃîr /6S l  ,y!$//"0p0H113 3*5AdCJ6R]Q^#`a.`CyW0n=|r<S1RL  R^[#&+, -.'56DE <M6)3$SycVX %.w8>BDqL0M%NNOJPQQ?S:TTWX~Y!Z[\]~^$bbc{dxeefag\hhlmnnOq0r%sswxy|z}v~k>dne moК/voq@ ĸJv74 " G\ \$ 0@<~I[a)yԐ\"2@I_u'.qH#8MZbw<][8  8 E  -  $  !   ! x# ?, t- 4 O6 = > C ND YE F G }H |I FJ QK E;.ww0 Dpt7z5x  C  # e  )8%&)Y)*#+-.X11!3c3668:;[=>D@@ACBIED~EZFE9^]uv?v5RƩbzŮtJMO7]~n 1o8v<k-2j t M| G  r   8u>Ok k .xN@Mk##$%`../%0%///(0L0x00/J1j111*2x23S4055l 9l =@BhCZEGJK#M6O:R#S W^S^^%`O`4e{HwwjP1{oY2&p,?~t) 2~sm ֚m U5}n ,o o ҭvkfs t KP  v a   TQxd]z \&{ ]*#+$O} %&R&+,-../+545n~ X6B 66@EF$HO#gTJ[Qd}glrRvy}.@]$v@әi8-W5{*_dY{Eg>EtZ  ,\ %m%*./K4{88>BBBBD3EEsLL2MoM%NN!OORPPO%QTQPQ%R'PAS~S:TT6UWWWXX~Y#ZzZ[\&\F\\%]]^^&bBbb"cc}dd|eeef=fecgg\hiXil9lZl{lmZmnn oSqoqq2ror%ss!twwwxyy~zz}}}x~~kg@]=É+f͏pe cēoהsי'Қ8H;|uw@| Ƹ.L/kDv9w42$AI{d_^e5!  ^`$& 02B<z>II J$ ]a`a +ywy ֐b ^ ÿͼO  $"- S  2-;3= BI(CI _Y>`O unv' )} 0u \ a su z Jz+ #-$W 8,%9  M*ANM \btUb! wiwk. }I< J >>ʴY _ٸi ]Q%y :  C Ӛ  3 * _   : { G r 9 W x       p q 0 N o   s     Hw x ) G i      v ~ ! " " z# 9$ A, , v- . 4 05 5 Q6 6 = z= U= > > C C PD D [E E F G G H H ~I I HJ J SK K ] =^ 8g i C<G! m 1A&b),+.1l37;:;>@LBGck /]t{A27y RL  =C}ER## %e.%}00o11/2}2\459=@gEG(K0MCO4S1W^^T`Fe{wĬY:x/5 ۚ$Ǥ5pk0s t P Hv o  nz a{ /9$i} %[& ,./5]66MEF-HOpTS[^dg lr[vy}.@Roϗv ed  NCNy 5 r%*/T48>BB8EEtM&OWPP*QYQQ*RS;UXZ*]^'cdfBfg]i_motr&tw"yz~lB0hA38Q|7  mlW (&T2>Jayo\H3IK`vŒɢn $29%Nbw,״P p q Yw x  { ~ O$ !. 95 6 = ? D E H J K B^ ;g :zw:8&  )*[1$36G@Bϩ4;  135JKRX^(`}[4r@~X8S  W`#&+..56,R0:-~i\^%.}8DBD5M(NNDS=TTXY&Z\]^bcdfg_hi mnn5r(ssxyz{~nshr՚C#ɸO<7'K (q@ $;0u<Ija8ykп1-2OI_ v6=!W#8MibwKljG = J     # - T6 > SD ^E F H KJ VK 3/\vLW[)b lVq}Ci> < 3 , C POR9$  C/Q&t)>+.1~37C:;#>@^B`v{BsODA \`  CL5Y^#$%j.//0011822f459=@vEG1K9MOOFS;W!^^[`le{ҬbC 8> -Ѥ?w{` y  j8E$%e&,.)/5g66WEF6HOyT_[hdg0lrvGy}#"7I[{ Ħ oês,]X!S` !G }%*(/f48->BBHEEwLM0OOaPP4QcQR4RSEUWXZ[7]^*b4cdefLfggi!llmoWqr0tww5yz}~vEOCkr|T@DKdyAwv g 8  ' d2 > !J by p\3I_`v֌ݢ 0$F99N cw@  d  > 5 .   " b$ S, 4. 4 C5 6 &= = ? C D E G H I J K I^ Lg OQFQ Rs:EC%H  1   D0R%&%)u)*?+-.f11/3367C:;^=#>R@@ B_BOEDE]FE<^]uvAv _cyש|!#Ȯ EvOQ>_p<COnDAj  \ `  t   CLQk k 5SY^m#$$%j.. /%2%///+0O0000M11118223g4;55!l 9l =@ByCxEGJ3K;MQO_RIS>W]#^d^^0`[`oe{wӬcD#!b;9y?F+  4um m -`Nn Ҥ@o o խxw{9s t `i  Tv z   _Yz gwz j){ h8#F$u} %%&f&+,-..)/A545p~ g6D 66DYEEF7HO%zT!`[jdg2lrvIy}%$9K]}4ZQ= 8Ħç!pêF-5s,^Yo"Sab !Hd %}%*.(/g488.>JBBBDHEEwLL=MM0NN0OOaPPO4QcQ PR4R*PLSSETTEUWWWXXY.ZZ[\(\H\\7]]^^*bEbb4ccddeeefLfengggh igi!lII#J& ra` b @ywy  s  ؿϼr  9$/ 5U  2-^3? WI*CI _Ya`Q vnv) >، Eߢw )^ø  "w  _|- #/2$Y 8,H9 M,A;NO qbvU c! wiwm. }BK< J S@Y t۸!i rS 'y O  f ՚  @ , l   E R t > Y       $p q 5 P |   u     bw x . J l     #  ~ " " " # e$ U, , - 6. 4 D5 5 \6 6 '= = X= > ? C C [D D fE E F G G H H I I SJ J ^K K ] I^ Lg i bY[1lZyU*K#I@N  7   _ Kp%&+))*]+-.l115336/7I:;d=,>X@@B}BUEDEcFEB^]uvGv&ݨ58:߮ϯ>ؽcUW!GhvBI^tMJj . k o  z   I[Wk k ;\ bm s%#$$ %p../8%///40X000 0S1112G223p4P55*l 9l =@BCEGJBKJM`ORXSGW]2^y^^6`d`e!|ۅ b)?hAW]L  91&,:~m n <f˟an ۤ^o o ۭ~#$&o|     e_my/nG#U$&+&&+),-..8/G545v~ p6J 66DvEEFEHO+T'o[dgPlrvgy}CԊ3HZlIÕO|{ C>Ӧ֧0yɪL%;Ʋ;Ts hu@\#h *fj!%%*.1/488L>PBBCEQEE}LLCMM6NN?OOjPPO=QlQPR=R3PRSSKTTTUWWWXXY4ZZ[\1\Q\\F]]^^0bNbbCccddeee&fUfetggmhivi'lElfll.m{m!nn*o]q{qqCrr6ss?twwwxDyyzz}}}~~|!Ki^ ΉRq؏ϐvГ3d43T/F) *Q1۸S]([FwuJEP35IX4#cC!e  `V%,'027=>IIBJ, a`+b Uywy  , ռ / N*5 J[ # 2#-}3E lI0CJ _Y`W )vnv/ S Z} >d  A}  t3 #5Q$_ 8,g9 M2AZNU b|U*c! 3wiws. }aQ< $ȠJ hF Y -'i Y+-y d   ۚ  I 2 u   K X z D b  &      ; Y    {     4 S u     )  O" " " # u$ }, , - F. 4 M5 5 q6 6 <= = a= > *? C C aD D lE E G G G H H I I YJ J dK K "] O^ Rg "i v" , H]DE]5-{@9V ua%&)t+.13F7K:;1>@BDEeFED^]uvIv(׫˭$UzCWYxj    | Yk k u *$./)&:%0u45/l 9l =BEGGKOMeO]SLW^eG|w&˓yVn t"!P3(.<m n Пn uo o "s (&u v   z 1D| L} &=/4x~ L 7JHP-T)t[dglrv~y}Z8M_qȕ ئ'@& mWa% /}/!%*6/48c>CEDOPqQBRYUZ^dZf{i/oDtwz iìX`zUL5KMlJ U'2?I[J. `Db wz  E ׼  , 7 ]  %-3G 2C)J Y`Y nv1   f  Z  15 7j$a ,9 4AsNW ~UCc!! iwu. }zS< J H%Y F)i [D/y !  ݚ 4  | ( xp r  } w Ay  =  z$ K. R5 6 = /? E K $] Q^ $i \Db$"x0  8C8%)*-E1 3590;F=0@AVD:EE]JFu)^.v vx~X|U?@k s  Z  k l \,yI$.u/+%515}9~l h=l @AC(GvJLO R|VY`/wQ{yߊmgD\*sjW,~֔m fn n p ~o M\gٳt u 9 6w ?Kj{ IF} D#W~ +45~ <JYRyVybrehdquFw| /^`hpږ"qxXMCVQ=D F $D*.3e8=,BDGO QQRU[u_befiotMxf{}YwyZ _p53(c<n$/;HjIa`} Gawc yƎӅ ĥ͇ HQ W_  ^ ř , 2B ,IX _nٱ u+7   9 M ]>#   4 m#G, 8@ vMT Fbi- v}; }'J Y (Gh Ix G  $03   ի   Q Y ݬ  q s Y  x Tz 3  + 2 5 : = C RF nM ] ]f i -FZn"6J^r  4H\p*>Rf|<Rr ';Ocw  / K _ {   4 J ^ }  % 9 Q e  : P d  = S n "6Pg*>^u4Ti~+B[z<Sw4Sr&Li)B^u3Kb{4Tk-BWl *Ic7Lp8[p&@_z?_{ 3Ri~0EZo , J j  !(!=!R!k!!!!!!!""-"L"b""""" #!#6#K#`#u###### $&$F$j$$$$$$$ %+%I%i%%%%%%%&&0&E&\&z&&&&&&'/'D'Y'n''''''((=(T(n(((((( )')C)b)))))))*-*E*Z*o******+%+:+`+x++++++",9,c,z,,,,,,-"-7-L-a-v-------.,.A.[.r......./-/D/Y/s///////0+0E0\0}0000001(1H1]1w111111 2$2@2U2j2222223%3@3U3j3333334*4?4`4z444444 5'5<5[5p55555556%6:6O6d6y666667)7>7S7h777777 8(8A8_8}888888 9"9>9S9r999999::-:B:W:l:::::: ;*;?;T;i;;;;;; <'<E<a<v<<<<<<=%=C=a=v====== >$>9>R>p>>>>>>>?%?C?X?m??????@@-@B@W@l@@@@@@ A(AHAhAAAAAAB4BLBcBBBBBBC1CHChCCCCCCCD,DJDhDDDDDD E+EIEiE}EEEEEE F#F:FTFnFFFFFG"G;GOGmGGGGGGH#H?HoHHHHHHI6IQIhIIIIIIIJ'JBJcJwJJJJJJJK,KQKsKKKKKKL5LWLnLLLLLLM;MRMfMMMMMMN6NJNoNNNNNOO.OSOuOOOOOOP7PYPpPPPPPPPQ2QMQbQyQQQQQQRR2RFRZRuRRRRRSS.SISmSSSSSSS T&TET_TsTTTTTTU*UOUdU{UUUUUUV"V=V\VpVVVVVVWW/WHW\WpWWWWWWXX/XJXeXXXXXXX Y*YDYXYqYYYYYYYZ(Z=ZRZmZZZZZZ[[<[U[r[[[[[[\"\6\M\f\z\\\\\\])]D]f]z]]]]]]^5^J^l^^^^^^_,_A_V_______`'`D`[`w``````a(aRawaaaaaab0bEb^bsbbbbbbcc0cKc`czccccccddAdVdkddddddd e e:eQefeeeeeee f f7fQfhf}ffffffgg6gMgdg~gggggghh7hNhchzhhhhhhii3iJiaixiiiiiijj1jHj_jvjjjjjjkk/kFk]ktkkkkkkll-lDl[lrlllllllm-mDmYmpmmmmmmmn(n?nVnpnnnnnnno&o=oTokooooooo p"prXrorrrrrrr s s7sLsfs}sssssstt.tEtZtttttttttu'uRfzʍލ.BVj~Ύ 2FZnҏ"6J^r֐&:Nbvȑݑ1F[pĒْ-BWlՓ)>Sh}є%:Ody͕ !6K`uɖޖ2G\qŗڗ.CXm֘*?Ti~ҙ&;PezΚ "7Lavʛߛ 3H]rƜۜ/DYnם+@Uj6J^r&:Nbv$8L`t.BVl ,Bb+?Sg{  ; O k  $ : N m  ) A U p  * @ T s  - C ^ r &@Wp.Ney $DYn2Kj ,Cg$Cbw<Yy2Ney#;Rk $D[x2G\q9So'<`u(K`y0Oj /Ok#BYn  5J_t : Z o !!-!B![!u!!!!!!!""<"R"o"""""#&#;#P#e#z######$6$Z$o$$$$$$$%9%Y%r%%%%%%%& &5&L&j&&&&&& ''4'I'^''''''(-(D(^(|(((((()3)R)p))))))**5*J*_*******+*+P+h++++++,),S,j,,,,,,,-'-<-Q-f-{------..1.K.b.w......//4/I/c/z//////0050L0m0000001181M1g1~111111202E2Z2o222222303E3Z3}3333334/4P4j44444445,5K5`5z55555566*6?6T6i6~666667.7C7X7z777777818O8m88888889.9C9b9w999999::2:G:\:q::::::;/;D;Y;{;;;;;;<5<Q<f<<<<<<==3=Q=f=~======>)>B>`>u>>>>>>??3?H?]?y??????@@2@G@\@u@@@@@@A8AXAvAAAAAB$BhShjhhhhhhhi#i:iQihiiiiiii j!j8jOjfj}jjjjjjkk6kMkdk{kkkkkkll4lKlblyllllllmm4mIm`mwmmmmmmnn/nFn`nwnnnnnnno-oDo[orooooooop,pCpXpmppppppp q q:qQqfq{qqqqqqrr.rHr_rtrrrrrrrs'sRfzʌތ.BVj~΍ 2FZnҎ"6J^r֏&:NbvƐڐ*>Rfz͑ !6K`uɒޒ2G\qœړ.CXm֔*?Ti~ҕ&;PezΖ "7Lavʗߗ 3H]rƘۘ/DYn™י+@UjӚ'<Qf{ϛ#8Mbw˜ 4I^sǝܝ0EZo7 7%7ѧ7%22= 222266 666 77777222222222222% ӫ,1ӫ ӫ   ӫ    #ѱ  2 2222ӫ ))  ?    2 2 2%%%1ӫ1ӫ1ӫ22  4      3   ӫ    2  ӫ2    23ѱ3ӫ2$7    2 2 2       2 2  2   2 2  2 2   2  2   2 2    %%%%%%%%%%%222G'U 7ί2ѱO%2U22U2)    2 2   2 2          2 2 2  2      2    2  2    2   2   2   2 2   2 2  2 2 2 2 2  2 2 2 2 2       ѧ    ѧ        ѧ        ѧ      ѧ       2 ѧ    2     2             ѧ   ѧ             ѧ 22222&&&&)2%)2%) ) %) %) %) %) %) %) %)22)22)22)22)22''  %  %  %  %  %    %  % 2% 2%2222222222220000HHHH2 > >ѧ>>>ѧ?>ѧ>>ѧ>> >>>>> >>>>>>>> >> >ѧ==7 777777ѧ7 666 6  63,%,%,%,%,%,%,ۦ%,%,%,%,,ӫ,,, ѧ,3,3,,3,  3, ,),,,,/ίѱ.ӫ//č3.ӫ3/3/ы@/ѱ/3332 33/ 332 33 3/ѱ22_KIgoѱ33č333 3 2 2ӫ2 22222222###$#####%2%2%2%2r2r2p222323322222222222 4( %((2(( %(22((2(22( %( %( %(22( %( (2((2( ( %(2(24% $-3-3--3-3- $,,,,ӫ0330č3033030033033030030330č3033033030330Н336ѧ6ѧ2$3n$3р&&ڃڃڃڃ ۃ1ӫ1ӫ ѧ  ''  % 2%  %  %  %    %  % 2%  %7  2cratecrate77corecrate cratecrateVVcorecorestdcratecrate&&corecore$crate]]corestdBcrate$crate$crate8|std$cratecrate--coredstdIcrate$cratestdcrate cratecore$cratecrate44corecrate cratecrate$crateSScorecore$crateMcrate;;core$cratecrate##corestd$crateZstdcore?crate$cratecrateBBcoreyycorecrate**coreastd$crateFcrate$cratecore$crateIIcorestd$cratecrate1stdhhcorecratecratecratePPcorecore$cratecratecorecrate crateWWcorecorecrate$cratevvcorecrate''core^^corestd$crateCcrate$cratePcrate$crateFFcore$cratecratecrateJcrate$cratecratecrate$crateMstdocratestd$cratecrate55corecrate crateVcrate$crateTTcorecorecrate<<core$cratecrate$$core$crate[[core$crate@crate$cratecrateCCcorecorezzcore$cratecrate++core*bstd$crateGcrate$cratecore$crateJJcore$cratecrate22coredcrateiicorecrate$cratecrateUcrate$crate"cratecorecore$cratecorecrate!crateXXcore=cratecratecrate((core__corecore$crateDcrate$crate$crateGGcorecore$cratecrate/std$crateKcrate$cratecrateTcrate$crateNNcorestdcore$cratecrate66corecrate cratecrate$crateUUcorecore$cratecorecrate$cratecrate%%core$crate\\corestd$crateAcrate$cratecorestd{{core$cratecrate,,core$crate+crateHcrate$cratecrateScrate}}$crateKKcore$cratecrate33corejjcorecratehhh$crate cratecrateRstdcorestd$cratecore::core$cratecrate""corecore$crate%cratecore>crate$cratecrateAAcorexxcorecrate))core)crate$crateEcrate$cratecoreQcrate$crateHHcorecore}}core$cratecratecrateccrate$crateggcorecrate$cratecratecrate$crateOOcorecore$crateCopy'=:core_intrinsicsderive_clone_copy% array_impl  trngstepn ˼ VindU˻ ޶ uCopy=:core_intrinsicsderive_clone_copy integer_impl 9Debug-xCcore_intrinsics3 h float_implsЎ 2 > array_impl  Copyt=:core_intrinsicsderive_clone_copyDebugxCcore_intrinsics3  array_impl  CopyY =:core_intrinsicsderive_clone_copy DebugxCcore_intrinsics3 float_impl: tuple_impl EDebugL xCcore_intrinsics3 $crate::__thread_local_innerx Bٌ thread_local_internalscfg_target_thread_local thread_localDebug!xCcore_intrinsics3 array_impl  memloop؂  dCopyѓ=:core_intrinsicsderive_clone_copyassert:! quarter_roundM / Debug$xCcore_intrinsics3 array_impl   Copy=:core_intrinsicsderive_clone_copyrngstepp ĸ SindT ޶ u DebugxCcore_intrinsics3 integer_impl 9panic)G`ӥlibstd_sys_internals  array_impl  NDebugqxCcore_intrinsics3:0 array_implK  $crate::assertWt!DebugxCcore_intrinsics3 integer_impl 9  tuple_impl  B array_impl  panic ALӥlibstd_sys_internals panicwӥlibstd_sys_internals * array_impl  panic:.ӥlibstd_sys_internals Clone7 6;core_intrinsicsderive_clone_copy  tuple_impl , I quarter_roundM /  Debug#xCcore_intrinsics3wderive;qderive '4derivef(derive«9derive Yderiveߓ3derive) debug_assert tu; thread_localˆ thread_local_internalsxderiverderive Vlderive#derivederiveWderive Ndebug_assert_eq ${{<derive 6derivesderiveq$derive#deriveO_ k 3 % ] 9  H 1 + U G r + ~ 6  f u t y  u -   $ M L ` @  T = S o a  ~ 7  X " > 9 x \ -  ` I m / P  B  : #  G 9 d  p ( X g f k ,  h   n V 1 i E $  7 r E 0 l  L  _ Q m # b  J Y X   Z z < ] %  O + J  w ? > w R 2 E a S    9 + | { y B  G i  L O ~ =  Z     H     '        ^  f h F a 6 2 ; @  < c @    3 f   N  {   a Z z $  8  u h  &  4 s  R 1 P 5 I & Y c %  k B %  {    H  x f V / m  ! y  8 K     H # ' ~ v  k o ~   I h   d  h 9 l [ X  {  G -  ; H  t  X  D  _ e  z $ o  } k 4  j b  W [ 2  u   ! ' 3  C  J    s  N .   f P/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/lib.rs{2vCQg F?#EB@A$+QOK;G/ KN ! KKGJH,NPLPO?DNQQGQQKOQLNQP%IMO( &"I /$QP  :Q!ON%9,)11  /A8QOLNGPN N>J9:?./&6&5 0 @NNK25C94'1:F%*,;7@&;02154 :3F>H7M)=><9TC4()GA0G.#')'$$$&/'"$;P,+* : LO,M#MED'FKNK,#'9HI"I:N(O*$EM#$BBFC$D?BAB@>B@7 LOSEFE?<0$,*?:?EFE?<0$41?:&EE@DFCFD;G%")" 0CGF@:!&GD%'( 0%$ 4 8J %$F?= Y>>-@GC;!%$+8 cF/3%$2 H,J%K Y%/, %,$05 V; D,b$6 *0%$ C"N(6 5$$$$0".$$$$0";E1$-=&GL?&6)5**GG2#+.(<*#* ..(<* &E;D@  /)E8B?  "3)F7=@GGIF6)6)>  $$/.>70NMONMB#39-= 1J&?C6PP-GFC?#?I&= 2LC#:$)$)10MO9LK5"#/-60& 0D7 $ .AJ#<, I%$(0" )(81$--5##)@-#  #?G/8#A"55:  ")(.4 )(.F  $" &" ""22 "<>> ";=> ">' "+1" ""* !$ .##&&5 3#&.  I#!0/=7 T==8: TJN GGG60(:*4.= 9111212%-.11112"1111112* .E%2.-E)2+E).)/,BD1BCCCEϹ`/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/distributions/range.rsV RUQenEA?#EB@A$+A 00GDBDF ?>GA 9-*1  -B0.E04N?7-BD' 9DB3>F C##B@ECDLFGEG)@)-J(4BF18@T !!#D'/J3  4 ' ) %#57S2M+>;B; .%&)+, % :<<<2M+>;B; `/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/distributions/gamma.rsbѕz/ҁN=A?#EB@A$")#-?1 6G7GEA 9&7:DDS:DA AFCDD!CD  C02CC%' :: <#F %56DG>F '!E6 ""N-7&H8 )C@ ;%37A/>'' N*7QF  <!33 @%%@%  N+7@< 40 ,%"&  ",%"&  "-%"&  ( -% $  )% $ Շڛقa/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/distributions/normal.rs'a}we4CA?#EB@A$*KA.6BDF 5,$4  :;CFE %;;;d !'**3=' :$(85F!4J N)7=%:? =$/<9E !7M7!N,7( 4$ 0%#'  "! 4%$(  &$喊Ňݪf/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/distributions/exponential.rsRB^/jwO|A?#EB@A$"KA8FF1DF 0"G*  ;? "33'0=# 755G =+%E-N&7)  4 &%26  ( '啐׺j/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/distributions/ziggurat_tables.rs[:x_03A?#EB@A$A5)2$]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]$]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]1#]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]#]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]˵儒~S/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/jitter.rsYbUԝH>A?#EB@A$DAPF C!$=N&HMN+QNP P$DNNM'A?&1)!G ;$5' 6/0>,97?NB; #;,*$(7".LNM4FG(P'E "Q2PO9=!#" I Q(Q KLNOOA0KDN N'8'N$M<0&## ;L#NMQN;20'5H*UIFI@******, MLMH#C%$1 +"IKNQKQLKPJMNQ0$C-#O@KB5L'3 %#?IJ+J660)#9NNNM1M?7#PQFB4I(6JIIHHEI.MMJMGK8MIMCNP2KJ$,F0E Q;./&* 'N;'"FO15 OPO)>OQPK)$!D)(%3C'"((()19OQ,5FLLD,798Q6PON; EMLK* 2 OMN/51'5 MP/21 K$42 P IEPQ= E< O1 OM79 :UDJ+NN KPQPDKON3PQAQO<JRONNJROQN#! 4!5M@KM0< OFN=JR&GF?? NFE  # =+$*,(!1I9(= $0 1*8' *8/ P̸O/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/os.rsp~BN5&Kɟ F?#EB@A$>  F,FG%7EDAIF7C (%88D;  6#3 6#3(#&&&& % #*''+.3C '0$0$0(0(0B '.++/39,46>C) #*''+.*I**9'..E*; *'.++/32",*<;37 (G: (G: 1;<  % %%G3 5G, (2 (2 1YZ   %, (2 (2 19G))#JG13`1   %, (2 (2 1H)#S::   ,43, (" (" 1%   %, (2 (2 1*   %02(, (2 (2 1N$G#TA8   %84I ;:K?D@U,,("EAV;L5S (2 (2 1-#GC8C$. C  ,G ($  ,"3U 3,O 3,O "ADB     C//0,333 <,333 &,,  .- ͏ū+V/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/reseeding.rsOzmw@L  A?#EB@A$:0G5G4# 78?5]3\8  F(,?1& @$$#$$#0$3"884"@DE/@  D *3+111 $ 4,:FC'>D;(#%< 2( " (* - ; O0  LL@B KG*G&+ L*N/L$ .ɷ̅P/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/seq.rs#wjQT%t  A?#EB@A$=E>5;+>#`b]/M ! A_#)422K2#,67  F8#:6:% ! ,?M<.;>::% ! ,C\<.4?6:dG RHbc-b^Q[[-4 2NZ/^:V%>1!- V/^D%J@.1&( '& "X) 0 "=IZ+47C.-  ( "6$"5;BBC@@A. 4$* 4E ."*1#G_N25.5(&*5/:*79M-QN. ŏW/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/rand_impls.rs4v/w6=n  F?#EB@A$:,*&& )***!+",*&& )***!+DL/@ F&D@6'(>EGD1>*@A"I 33+,FD8?% +!83!-CI=- ,!$'*-0-(17; #< q"0  -(( ((  %8?I F;$#6)6)  $#:+:+ 췥񄦡؝U/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/prng/mod.rs_ DpD@l 3 A?#EB@A$JCLPEJIOPLKPON$FLJMPI%b,LOM !#ҙ֚礘ҙX/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/prng/chacha.rseQ.:Ӗ&uq5  A?#EB@A$(@!]D28&""3BBBB88888888 G$*C#$0)) NO)# 44EJLG&$0-)) I88999HDDCBA<%,''+ :51'''' ) ":-"0.0.0.0$' ;0,'58 /3471 29%! )  O@@@B .>>@B O?GG& %J&>DHHHJDHHHJ.>*9+# HHHJ &?%: ੈϖ㜐W/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/prng/isaac.rsgpb`m"  A?#EB@A$'  +3@>?E<BD!! $ ""B( MI(#++++++++  #"E6666 :::: =2222 / %5Y 02$-#+9@-464$-#+9@-4646&%%& A"$& A>F1 F-EE,4/,F.EJ& FG?FF0 17M% ;#  #Q??@B 5==@B Q>GG& #5=IDRU7=.-DTTͨ⍺Y/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/prng/isaac64.rsO&פL4 w"  A?#EB@A$*#3@$>?E<BD + @*  MI(6 00++++++++  #"D6666 :::: <2222 / %3KZ 7;(1.5@!OQ5OAO(1.5@!OQ5OAO"!"" !A$$$& ?071,F.EJ& FG?FF2  3 7J% !;%  #QAA@B 5??@B Q@GG& #5?IDXYX07?.-DXYW0 5@%: Z/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6/src/prng/xorshift.rsխ<)OR vr e A?#EB@A$!FDG3@.'@PMQ+ $3-H+/EK2/I 29& #<ܠrandx86_64-unknown-linux-gnu-3c725cb16e223cccnN"$ o'5֒(,,,,XX,,,WX,,+,,44