! / 0 0 0 0 8 ` // 68 ` rand_core-3af13fe8574a9eb1.rand_core.e84e7b233e4c2a07-cgu.0.rcgu.o/ lib.rmeta/ 0 0 0 644 139936 ` ELF> !@@GNUÀrust ‚#rustc 1.98.1 (48a229cea 2026-09-01)ÁûÊÆÍRLñ.åSÛAúwjL-df1bddb45adbe94bÁ±ò‰<å%Z‰>¸64‡ËV`-2d2ab9fb0fe1def5ÁŠûÀ GeneratorÁ´generateÁõ ƒ ñƒõ“Šƒ ˜   reconstructÁ “Šƒ ÷ set_indexÁreset_and_skipÁ word_offsetÁremaining_resultsÁ next_wordÁ&Š&ƒ& &next_u64_from_u32Á+“+Š+ƒ+ + fill_bytesÁ0 utilsÁ222next_u64_via_u32Á5Ž2fill_bytes_via_next_wordÁ7�7“7impl FnMut() -> ResultÁ2next_word_via_fillÁ;“;Ž2 read_wordsÁ>“>Š> >  seedable_rngÁCCCC SeedableRngÁGSeedÁG from_seedÁG seed_from_u64ÁGfrom_rngÁKŽG try_from_rngÁMŽGforkÁGtry_forkÁCpcg32ÁQ QMULÁQINCÁ unwrap_errÁUUUUUZŽZErrorÁZ try_next_u32ÁZ try_next_u64ÁZtry_fill_bytesÁU panic_msgÁ`impl core::error::ErrorÁUbŽUd'rÁdŽdreÁg'bÁwordÁiWordÁiiisealedÁmSealedÁnBytesÁn from_le_bytesÁn to_le_bytesÁn�n into_usizeÁmtË u t× të t�t„ m{Ë | {× {ë {�{„ RngÁ„next_u32Á„next_u64Á„ŽˆŽˆþ ˆŽ ˆŽ CryptoRngÁŽŽTryRngÁ�í�ù�Œ�Ÿ•Ž•í•ù•Œ•Ÿ TryCryptoRngÁœŽRngCoreÁŸŽ TryRngCoreÁ¡í£Ž£íBlockRngÁ¦ƒ¦resultsÁ¦ûªƒªŽ> U UnwrapErrÁ® ®Ž®óU²Ž²ñUµŽµ>U¸Ž¸ŽU»ŽU½Ž½ÝUÀŽU Ž•U ÅŽÅÆÇÿ 8 8 8 8¬888888 8!8"8#8$8%8*808085878;8>8K8M8O8P8Q8´8´8´8º8¿8Ä8Ä8Ç8Ç8]8^8_8_8…8†8‡8‡8Š8‹8Œ8Œ8’8“8”8”8˜8™8š8š8Gjn„��›ž¡…¦¦¤ ¨¼ ©ûR+—ìt?† ƒŸg§€#§Ÿg®®¯ê ±ó øÈ}PçûªŽöþ…þù þÌþ�Çþ÷±þþûhþ�þ›þjjn˜n¡„­�­�­›­ž­¡­ª¦¸® ¦²®¦µ®»®½®À®Â®Å®Z®•b®œklt{ˆŽŸ£…yŸg€# öù Ì�Ç÷±ûh�› j n„�ž¡í ü M¬ØÍ L¨  ô4³ð Y�œ  Ý) †Û>FXþ Ý"D †Ý8A(ì ¦Ýð ñ)V¬e§p §zÛ ÛÝÚ Ýä§±ðKµÛ©üìCäìR ×gìh TýÄðHT¤Ý Ÿg™Ò ´d¨èÜ4œgÌ– ®üìh  ¹dÿ¼½ ÓÚü«¯ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwéĤĤŤí Ñâó:½ÖàM\ÖÃ,² €g€gŠ‚gê ûcƒgbufÁûcØ«q¢1È¡¹ ¨d¨d DebugStructÁ«dñ�d¬dÇ �d­d has_fieldsÁ�d»1âî¦9èÏt²s´{ª.ç6ÚñŸ�ĶçªiÄÍ’ïL©ÝŒ¸Ûü©!Q ÝO:¼³ É ÊÑüŒEéž §L”ér ݲ Û¢&JÃ!¢dû!  ÷“(Œú!Š Š"„¢" L rý"[Š °"5T•"‚Ì#•Ì#Š- ®Ì#Š»Ì#ì•" ±"$Ç"Ô¼" ¦ƒ Õ"Ü" Û"ü»!¡üè!t¦¦¤ ¨¼ ©ûR+—ìt?† ý$\Ò!ý$$Æ!ý"Š\ì!ý"Îý"�\ý$îû9¼ 7³—Ì#Š“Ì#ŠŸÌ#Š÷"1¾#ðý$þ \®%d½% U÷"Œ¼%Š Ì%ÜÚ%¼Ú%¦Ì#Š1 ,ˆ&Ü�&×Ì#ŠLÀ& <¹&  …ßjg   ý"ÅŠ›j 7Ì#Š% Tú& `Ì#sÌ#Š-  ŒÌ#Š™Ì#üú&! š' Ô®' <¹'$Â'0 ¦ý$ Ç'ü©'  Å™Ö% È' Ò' ô' ú' $ç' Å™Ö%1/7û'QüÛ$ ý±›6jÏ  ènU›jå Ì#Š]Λjø Ì#Š]Û›jK ð›j=Ùœjýãœ9j7 Ì#Šý°�8j-Í�j !mÆj ý"›jýª&jýØ.j  ˆ) ‡jv ç�jýª�>j  ñ�j öjg È& ý£ú i   Æyý" %¸ú i¾ú i 2 ì& ¤‡'  Q ¾#,•' & ¼üª%Ñü„&ÏýŠjsgš+ý"ÌýÌý¾Îý‚É>�ÌIFëTÌ#Šïý˜Yjçný"Œ0ýËj,gýÍš«j«oý"}ÜjýÕœ�jýÁÇjëný"èý¼Ìjý—qjý”ù ¶iøxý"üÊ&"řǙș­É™Ê™àË™óG*¤�R{9 Ö%d“%ý$$î$ ˆ)Œ÷$ž&�ý"�XÌ#XÌ#(éü¹&3†) ž&ý"ÏÃÖ%Tž&Tý$H†)4�Ì#/ ˆ)¿3è-úè-ïûÛļ W÷Ýò ô%Ì#Š �&Ì#ŠtÌ#Š€Ì#Š ÷"  ³wý"fÖ4¼”&¾#½ý$®ý$´Ö4]—›jÖ4)Ö4Á,aÖ4]„�jÿ.2|é*ì Ì#ì Ì#Š3 ì Ì#Šì Ì#až&äé*ì  sý"�dù* „+‹+ üÆ*EÌ#,Ù* Ö%,Ï*ý"Üâ<ùÌ#ŠÌ#в6�¤™, ì ¾#,§,%|‡,ì Ì#ì Ì#Š- ì Ì#Šì Ì#ü‡,&ž& ¬,´,!ü§+�éÌ+ Ö%L´+Ì#,¿+ý"äÀ!÷%S û+Ì#ŠñÌ#ŠüÌ#Š ¸[ɇT]¾#B 4©0dÃ0 irì ¾#ì Ì#Šs—,€1ì Ì#Š# …1L�1ý$Œ£1ž&ü�1%ì  ý$O:Üš1p ø0ì �:ì Üì $ ´1 µ1dÄ1 ~ ‡ì ¾#~  ¢×1‰ ì Ì#ì Ì#е  ì Ì#Šì Ì#‰ž&‡Ê Š ì Ì#ì Ì#Š>  ì Ì#Šì Ì# ž&  > "üñ/æ!ý"Šý$‹9!ý"Šý$� é›0™9L‡0Ì# ’0�ôé+ ý$lï2Zý"T1ý"c@[¤_¾ „1Ì#Š Í0Ì#Š›Ì#Š‹Ì#Š—Ì#Š¿Ì#НÌ#Š»Ì#Šé;è�:¿�:ɾ#�:Õ¾#<Ò3HOì Ì#ì Ì#Š{ ì Ì#Šì Ì# ó3ì Ì#üã3"  „4‹4òž&’ì ²6�ŒòTæ3ì Ì#Š##ü”3wüÁ3JÉ ý"Šý$XÌ#,±3ú6,§3{ý"ºÁ ÷,Å3q ï3Ì#ŠóÌ#ŠÿÌ#в6˜,¹7<Æ7,3ì Ì#ì Ì#Š_ ì Ì#Šì Ì#Žž&.ì ²6¸)(ªdØ7ž&eúgg ª2ź—j ì Ì#Š%ýá—6jì Á,Uò—jì Ì#Š]þ—jì Ì#Š]‹˜jG  ˜j=‰™j ý“™9j ì Ì#ŠýÜ™4j -õ™j   ! }éj  ý"Àj ýÏ&j  ýý.j ˆ) ¬j v �šj ýÚ™6j  ™šj �hg ì7 ò7ó7$ üƒ7püµ7>å  ý"Šý$�ý¸g\g”+ý"Œ0ŠLä7ýÕIjãný"Œ0ýíg!gý‰——jªoý"]�jý…™•jýäÉjéný"rýßÎjý¼qjª2$¦7ú6,œ7Ì#D ž&—ý"s z ª2•ƒTÌ# ˆ)èÊLåœIÑœIÆm÷µMß Ì#Šë Ì#в6„ Ö4]Ç—jÖ4¦Ö4™Á,ÛÖ4]´™j ,  3  ì Ì#ì Ì#Š_  ì Ì#Šì Ì# �9L 9ý$Œ³9ž&ü 9%ì é;J5ܪ9 Ä9 Å9LÓ9ì Ì#ü„9c¡ æ9,Š:œý9 ì Ì#Š  ì Ì#Š;ž& �:L©:  ì Ì#¸  Á ì ¾# ¸ Ü  ž&¢ ì ²6 ,� œ  T‡9,‡9ì Ì#Š7@  ì Ì#Šì Ì#  ž&   ²: È:%ü³8•üÞ8êüñ9WS ý"Šý$<ó8P !ý"Šý$¤Ÿ:ý" Ò8™9LÄ8Ì#Lâ8 Ì# 馋@äï2ÒÌ#C6Ì#èý"¡¨ý"�i÷m�,õ9ìRÌ#Š‘Ì#Š�Ì#ŠÌ#ŠÌ#Šî Ì#ŠÞÌ#ŠêÌ#Šé;y²6Ó�:ø ¾#7,‰<krì Ì#ì Ì#Šž ì Ì#Šì Ì# œ„=ì Ì#Š ì Ì#Š; ˜ŠL·=ì Ì#¼ª=ì Ì#Š ì Ì#Š;ÂW Á=¬Ï=ì Ì#üà<¾ œˆ> ì Ì#Š  ì Ì#Š; ÂWL©>  ƒŒ¼>  ÂWü©>%ì  ßY R : ܳ> Í> Î> |á> ì Ì#Šì Ì#0ÂWlþ>ì Ì#Tœ?ì Ì#Š# <¹? |×?ì Ì#ì Ì#Š- ì Ì#Šì Ì# [ÂWlø?ì Ì#ü™?{  “@  �@ÌtÙ Ñ…ïj  ì ÿÿÿÿÌ#, 6ÂW|Èi‡à^ Ì#‰‡Ý^ ÀœÌ#£ä£ä¤äTryFromIntErrorÁ¥äó ¬q£:{ a ‡í^ÄÈì  Ó_Ì#±^« DØ ßolã<,ë<ì Ì#Šì Ì#3D ÃÂWÁ¬Ê@lË@iŒÏ ¡#ì   Þ@lâ@>  ¡üÊ@%  î@ ô@õ@ ï Ô ì Ì#Šì Ì#ù… k/  Àœ˜±^ì ±^ù…ìj° I…€l  ˜i…ýk  Àœ˜±^ …‰l U  …›l ¼Ù ì  Ó_˜±^ Dè*üÐ;¥ü…<ðü§<ÎüÂ<³„ ˜ŠßY<–<ü�MzÌýßðJ”јÌ#TÍù‡’^j�¹�’ñ”È!˜ŠßY¤¬@ü©Qy¦b ÑÌ#˜TÝ ù…¥j… Ú¸] ùŒ€ê‰¶|‰¶M¡÷; ¦¦¤ ¨¼ ©ûR+—ìt?† ßYLé;Ì# Ì#l«<hÌ#h¿Ì#sS˜ÖÝé^ ßY¢ ÂW�Ù˜¡¨¡a¡a¡+˜þÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÌ#±^Ì#˜OÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw˜±^Ö Õ ˜P ~÷�  new_indexÁ�loÁ4Ç< hiÁ4Ï< ë<Ì#Š •>Ì#Š~Ì#ŠŠÌ#ŠÐÌ#ŠÜÌ#Š ¥?Ì#ŠRÌ#Š^Ì#ŠÓ Ì#Šß Ì#Šp Ì#Š| Ì#Š-Ì#Š-Ì#ŠºÌ#ŠªÌ#жÌ#ŠI…ôj¤£˜iŒ¿Ù¤¡iŒØ££˜iŒŽ¤£˜iŒ§Ú¤¡DÙ¤¡?££˜:¤£˜5Ú¤¡�ZB •_Á�:I�cÅ�:Éš‡T]�:Éœ‡T]�:�:2d¦B µBì Ì#- &- 'ì Ì#ì Ì#Š- 'ì Ì#Šì Ì#¬ìBDìBT÷B*; €CT“C,“C   ì Ì#Š7 œC L°C  ý$ŒÃC  ž&ü°C%ì é; J 5 ܺC ÔC ÕC LçCì Ì#ü�Co¡  þCTÃD dÔDDÕD ( ( ( ÷D<‰Ed“Ež&, E</C/ª2;0B0ì Ì#Š^0TþE4‹F,’FAB…¸À*@Åï¥1ì  öJ²Œ²ŒZipÁµŒ—ÍJ¶Œ˜ÍJ·Œ÷ÍJ¸Œ¶ÍJÉ by­]ò ëªëªChunksExactMutÁóo請 óoðª chunk_sizeÁóoñª_markerÁóo9Wè¿p¹ �p�pIterÁ pí óo¡p end_or_lenÁóo¢pžsóoÛê2ÝЫý"ÇsÆt%‚¥@ `,þI ŒäI   !äI " "% ì  qý""-! lèIJ ! ôI "ÔäI ì  ¥oý" Ât „ DöI ýI  Q‚ÙÞ^K[ K[ì Ì#-K[.- „J ! TšJ ì Ì#ñ Å[]  öJ  ›K  ¥K ì Êì ¥KMP]MPì ¾#h]0MÅ !üêAá - &ž&¥ ì ²6&-ÅÌ &üæBÀ±ì Á,ÊÝð)±( **3+>,>,3-Z-, Âtm.v.-‰+ Âv.* .3-¯,¹+¯+Ò*üÐD'ì  òwÂt„ÐDì §ý"Ì#$òD ´áDì Á,ýì Ì#Šúì Ì#Š÷1;õ0è2ì Ì#ŠÙ4à4/ø5Ø54œIÔ6Ò65Ï3 ˆ)62Ì6@5Ë4¦/ §E}�ži9å¢7Å÷¢8mïVb!< ïVb!<3ÅåVb!8 <®®«°¿ ”3¯f*²Û�ˆ) üVb!<½—™b"=m—™b">ý¥$b#> 8¿3&"=>è- ­™b">ý�™"b"7 =®®«°¿ ”3¯f*²Û�ý" ®™b"= •¢8M‡¢ì ªý"å¢Ð‹$9 2œIý„G¢Ͳ¢:e´¢;Ö&; 7è-ý羌':;2 È¢;A9:œI Ê¢:hýÚ.¢  �pý"79ì „!„!…! PhantomDataÁo$z�é - ý" —¢7 94ÂE4ËE ßEüËE!ì  ÞQÇsÆt|ËEdßEŒÛE ­ü],D ­”]+C †"À*?+B2A –Fåü¥4ì  ùJìrÇsÆtéìQ ÂvÔ�1ý"Šý$§ƒéUÿé駃éUÿ²ƒ%Š¥ì é%�¥ì ¡ƒ –¥H!œù­�]]-ì  Ê[řǙș­É™Ê™àË™óG*¤�R{9 Ì#º„ì ±š²š³š~´šµšNeÁ¶š·šMatchÁ¨±vXç]!­®]AQ­´]BY­À]ì řǙș­É™Ê™àË™óG*¤�R{9 ‰¥‰¥ ArgumentsÁ‹¥templateÁûcŒ¥Çûcg‡@#éó á­Í]E„mÖ“n.É­® ],F ,)^éÞ_0G 0G?àÌ#y^éÞ_0DG ^÷Þ_0GU,F],D -¨À*@Ì#-¯À*? *?@º„ ÈÀ*@1­à ]+A?]æ!À+C +C Å™Ì#9­è ]+BCé,Dï,F.F?�Гn.F œ„GŒ±Gì §ý"Ì#ì¥G ÁGTäG4èGLQo¶2¦5IAo¼2¦5I�QoÚ2¦6Jyoç2¦6JœIIoÉ4¦7ì ªý"$"oñ4¦7Kýã1!œ9K JÌ#Ao¥5¦8K#) o¡9¦7Kì 7(ùoÁ;C¦7MùoÈ;<¦7N 7N J�±@Q Iè-uï‰b?RÊAR Nè-ýÞ‰b?MQR ü‰b?Rn7M&% oƒ<¦7N oÈ<¦7Mì 7( !7N7MQo—>¦7Oýȼ(bBS BSQì Ì#ý¾¼3bBO S� ð¼bBS©oŒ>¦7�O o >¦7OùoÆ4ò ¦7'‰o¶@¦7PÕŸ‰bDTMè'ŒFT IœIå�‰bDPT ¸‰bDT¹o±@¦7 Å™Ô�P oÇ@¦7P oç@¦6J 5IcQjLÝGàÔ�4ÚH^ ©ƒ ‡I t‹I ^,®I  ì Ì#)  Ÿ6J¥5IýQLP C J Q X  ( Ÿ ù‚˜ý$^;LKì Ì#ùoÍ8>¦8œI LœIÚ7K¯7' ïtjJVýÜu4jJW-õujJX JXJ\$L\X Ât9$NW Âv\JJ\ �vjJXýÚu6jJWJW ìvjJUïOì  ÆyÂt^ /ï²JVì J,]×vjJZ JZý°v3jJì Á,ì Ì#UÁvjEÍvjZLY= ‚žà^K[m‘tjJ,K[½ÙtjJU]åtjJV JVJUV/JU+*• ! wP 'ì Ì#Šì Ì#1ÒPž&]êP] ÊKËK0Q6ü¢B© üÀB‹ ü�D™ü¿Dçü…E¡ü¾EèüúE¬üïG­üËHÑüƒI™ ù ÿ Œ] ù Þ Ÿ] æ ý"Šý$<ÕBýøj•Ùý"̘DÆçnÂtŒ0â«oÂtõü ënÂt3 ,å$”+ý"Œ0ŠLŸE%ãný"Œ0% %ªoý"3%:%G%éný"ç#^%j%ýÝ�Giìwý"4©Eýˆ�¢­pý"ˆ ýÂÖ¢ýá·¢ý㯢ýþU‡bň)² ý‚˜µbÔˆ)ý"5�¢ýÖ|ûb"ψ)Eœ™b"ýàÏ`‹Ûý"½“¢ýäÝÙ‹$ßý" $NÏý"E¸¢ý–´ø ŒŽý"EÁ¢ý¥„Y¤�RÉsDÒE�RÈtDãEý‚…À�Qìr,ý£äÀ**ù­ÿ Œ]+*ù­Þ Ÿ],*ýÈ’Çn,úXÌ#ï *õò“n..ù^ÄÞ6_/Á²Eˆ”n.ý·V¥*æJÇsÆt]½À*ý�ñ„¤æQìr²ƒü¬FJýùñe¤2èQ§ƒ²ƒ=öò¤2ýŒ’¥2èJÇsÆt顃�íò¤2ùoó0õ¦ª©ý"D ùo²2¶¦55ùoÖ2’¦65ùoí4µ¦75ý¥.çœ7‡ý"1o‚5¦5ý˜@œ9€ý"ée÷1œ9ù‚³ù¡^8ë§�oú8¦5ý¬*ñƒ;Ç9®î$ƒ;ù˜ƒâ[<Á°ù˜êä4<C8ßý"ùoß8,¦5ý±‰Rb7 ý"n 5§?Ïý"Eã‰b?½?Ïý"Eõ‰b?ý°¹Éb7Úý"1o›>¦5ïBÏý"Eà¼bBý¯‡’b7Ðý"Yo¼@¦5#DÏý"E¤‰bDý´'CŒDíý"e­‰bDý§ðC¢„tÂt„áH% ãnÂtàýàýÆâý’ür 1¡z÷Ì#œýîŒNjH¡oÂt3%Hý”sßjI�oÂteª�jIù‚ÈÛá^Jé§ý¡t(jJG%JénÂt÷J^%LLj%ML7 øxÂtüÓI1!ý"Šý$„´K_é—B™9LüA©ƒ$‡BÌ#žÌ#LÄB&Ì#&Ì#ëÌ#ëéw‹@µï2£És©ƒÌ#ÈtÞ’LÞÌ#Íìr²Çs²Æt«Ì#” ìr—Ì#æ řǙș­É™Ê™àË™óG*¤�R{9 Ô�÷ Ô�‡ Ì#] N éüÊI: Âv†½¤' ¸v’¸všý"” Ì#A € ] ì¤I Š ] �…! â ] ý"- -  ±Ì#  Âv3·¥>ÅzZÅzmª2#3#i#Ì#¿#ÊLç#ÊLò#œI$œI!$�Mˆ~KœIUç¢è-è-ÊLd!è- "¿3 "º„%*Ì#º„!* º„*ñ¦ï*º„*×*u*=ó“n.Ì#Ü0éµèò¤2�Š5œIr6Ì#87Ì#¡oö8¦55�ý 5�g 5Ô�í 5è-mÞ‰b?è-ø ?è-€ BœI D3 JÌ#2 J Âvw J²¨v J¶ JÌ#Õ JõKñ‘$Lý"MP©ƒ¹ pdestÁxread_lenÁ#÷‰ß$‘Dì §ý"Ì#chunksÁ‚ srcÁBzippedÁ num_chunksÁð䨆 dest_remÁDÏH ^¤u left_valÁá # right_valÁê $¦ê %  ãÌ#Š-Ì#Š-Ì#Šý˜p •§ý"Ì#ãªý"Rªý"[Ì#ŠwÌ#ŠwÌ#Š" ³wÂtäé;0·{j¡‚ÿ«Oõub²v¸v–ÿ«TÙJ Ê[Ì#Ì#ù �]]¸v·²6¥ÿ«ýÿ«Ýÿ«ðÁ,±ÿ«Ö4/&Ö4’#Ö4¥#Á,i#Ö4J&Ö4]Ì¢´„‡ærYìr ýò¤�ƒA ì¨é®ˆ%ƒÿ«Ü ÿ«d Á,S Ç’ï�:†¾#M ,·F©ƒ¾FÔ�ÔÚFŒÚFÚF%ì õu(lÞFE êFcì ²vlDìF óFïì Ç’ ï ôFõF'üµF@C1 üÄF17øxÂtüÊF+ éÃF ²ƒU§ƒd¶F©ƒ‡Ô�w½¤gѤh¸vpý"jchunkÁÂ䨶¸õu§²vµ¸v¸v Ç’ï  ¸˜&Æ”Æ ì  ’­ÆtÊ;%η UÈ· ì ˜(ò8 4  žŸ  ”¸  €‘­5­¸   Àœ¸Ä¬©^—¯fà³Õš¸  ÊüÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw…´à³˜ ³¸  ˜&Ø'Ø [¹´ÇÎE¿»u¹»ì # Ú» €à³•à» Àœ¡à³ ñ»ZaÀ Úì  ä·  ¯˜Åê·  Êü¹´˜ �¸ Ë3œÆm˜¿+¡‘ ä�”ò  ì ¯²ò töŽ• €à³…Œ Àœ…´à³p Êü¹´˜!@(„ )„   [¹´ov ì 5 €à³ Àœ¡à³õü³ †ëì  ¯˜ Êü¹´˜ e% œò m˜É- ¡�l� L�  ì  í`+    › ŒŒ Àœ¡à³ œ áèç5ü›„ü´kåüà? ý�·Ä×`˜à³ýá·!  ý�¸$  Š,‰¶ô¼ý캗Ü`¡à³à³IåÖ»ýÑé$”Éà³m今×`˜à³„-‰¶ôèzÜ`¡à³à³MtpÉà³jÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¡à³¬× ­Ç¡PÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^¹´˜¡ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw˜à³ó¹´]˜4¡ÞÀ®·Á¹´p˜U¡1¡1-á· ˜Ú à³± ¹´’ 5Ö»à³r¥@˜à³í¹´Î<೪ÝrngÁ�®äÆ @ޝûÆ L Ž5 Šm,Ù¤¡i,££˜e,¤£˜a,Ú¤¡¡,Ù¤¡�,££˜™,¤£˜•,Ú¤¡¯²‹ ¯²‡�:W,�:S,�:c,�:_,!T‘üž$ì ·{žì §“Ì#t³ ü¢  X*Õ5±Ø¤ e ó¢ ·¥}Äó¢ Ì#�éøiUðøi+ì  ÿ `+õ)z ,)w ,)Œ¡Ô¡ì  ¥oýÅÂv4 D³ ºï2ì Ç’   ï ¼ * ø*È{� `-– \– L–   ì  Š#‚é4ì éGP   f 1¯ 41¬ 41 ° lÛ Ï  dÏ ì ˆÈ* DÓ Ú *=>*=>0ì Ì#:*=> ï üï� 4õ Àœé�ì é ü ýu ÎZü‚û%ݬúi&‘Þi!%¿Éi&Õ¿Éi!&Åzýÿ=(Ÿ'ýÃ')š"' Âv!ýù=.Ÿ"' ¦>Ÿ'eÅâi$¢&#$!½Óâi% %s$(n*( Âv$%i$#(d$( êâi% $ ‰ãi!ð& õúi Óó¢ýÞóN¢·¥%…ô¢   #müó¢ ˆô¢ ]—ô¢ Å™©ƒ" ¬ô¢»Â,Ì੃F\õLõ  ì ÈÉ )ì é<E—MT 4Ò@©ƒUÿ!i30@tó 0 ô,+û,+€ÕËë.,ò., Àœ…´ÕË+Ö. ÊüÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw…´ÕËýÅ,Ô.,Û,+¸)+€,€   [ŒÒç-î/Ò/- Ï//-ì ï//Í/.Ô/. €ÕËË0 ÀœéÕË.È/.m/t-³ �Üãì  Ó,*Ú,*¯ýÅÒ- ÊüŒÒýÅ*Ð,*æ).dõ mýÅ‹Ú ñøì  qýÅ ¡l¥¶c43j43€ÕËZ64a64 Àœ…´ÕË3E6 ÊüŒÒýÅ4ð64÷43 1-¡ .¡  [ŒÒ1 58 7î75ë775ì  77é76ð76€ÕËç8 ÀœéÕË6ä76· 7¾ 5³ @ ¼ ì  ç42î42¯ýÅæ5 ÊüŒÒýÅ2ä42( 1& d– mýÅÔ– ì øÕ. l£ R$<9P$<:M$<;T$<;k$<?$>?;ñ‘=$@: Âv?0–$<?M$<;K$<:b$<:I$<8ïAì Ç’@ ïô$<9ì <C$<=J$<=B$<ì Á,ì Ì#?$0=$=‡$<y$=$=>8$<O$=>7$<85$<9<$<9R$<809d$<8 é Å  § 7B@ü�ð ' üëX-4;üȵüŒd @ G N 1 ¾#ÙýÅ ý’O,¡–PÇs ýø×E¤–TÉs) ý…ò®¢‰tÂt: ýƒøùi”xÂtý¯ó%¢ýĶÞn˜X©ƒ©ƒ©ƒŠtÂtí`ŽßřǙș­É™Ê™àË™óG*¤�R{9 ©ƒUÿ ·¥ýÕóX¢}è·n²ŠtÂtí`©ßüß%ó·nýîó>¢ý‹Ýÿi’xÂt ýïÝ›iý�ÞýiýˆÉWiÞwÂteœÞiýí7ŸÇvÂtå„âiÄ!Ç9¢î$ƒ¿!Á°¹!“%ÙÂtuè;Ÿý´œM•ãÂt}—<ŸýÉÅt‹íÂtŠ ýµ&¹š!ßÂvÂtížÆ‹!0$ŽÂtEÉâiÁÇvÂtý²â9i€"$Ǽ$u"%Á°o"%I&$ÙÂt¶$²$ãÂt¬$¨$íÂt, $¢)ßÂvÂtœ)×!„tÂt„Ùñ×`ýÅÕË<í,,é,,ÔÜ`éÕËÕËfÏ//Ì0ÉÕËÇ/7øxÂtü‘+ýÐ!Di ´wÂtT÷x ×`ýÅÕËñ t44p44[ Ü`éÕËÕËV77S8ÉÕËN7% ãnÂt© º ‰":¡oÂt3%:…";�oÂt�";~"<é§w"<G%<énÂtk*<^%>>j%?>7 øxÂtü¾+AÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwéÕËlù©ƒ³ÎÉlÇÉsúÇs\Õ±ßÄ©ƒû ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^ŒÒýÅ|ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwýÅÕË‹  ÎÉ� ŒÒ% ýÅ éü‹1½¤Ñ ŽÈíŽÈöŽÈ] êç^Äè^ é_ŒÒg ýÅL éüº/½¤½¤íÑé ©ƒÌ#ñþßï ·¥M�ò¢óÌ#ñ·¥ü Åz©ƒâ©ƒ0ÅzËÌ#¹·¥…¿Éi·¥(·¥1$j,ýÅB,ÕË,ŒÒú,h/ÕË×/ /Ì#p 3­4ýÅ…4ÕË\4ŒÒ=4«7ÕË7M7V,<Ì#U,<²¨™-<²¨˜-<Ø,<Ì#÷,<á:=ñ‘$>©ƒ dstÁá³åÒ¨å�©¾°äŽï Æ \  Ž<  » Ì @Ž Æ q ŽY ÜŒ!§ýÅÌ#�!§ÂtÌ#ýÞœ!•¨ÂtÌ#Â!§ÂtÌ#%¨ÂtÌ#·{²ÈɃøÕ¯ˆÈ¦ŽÈFÈÉøÕÑ ˆÈwÿ«LÞŽÈ!ÎÉìÎÉóŽÈ6ŽÈ†ÎÉÿ«u›ß ¡¸nÿ«UùÝi ̫顈%ƒ ©«é¢ˆ%ƒ�ð Ç’ïÿ«¦ÿ«H.ÿ«Ð.Á,¿.Ç’ï <‘!”¥! ì ì  ÷¸v2ø1½!!ü½! dÐ!Ð!ì  ¨¸vÂv1 DÔ! Û!\ì  ”޽!t äÁ!— í ê  ì  û! Ìä! Àœý"‘™ò ü! þ!ÿ!üµ Ê<L  5  <  €„ó,  3  Àœ…´„ó   ÊüÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw…´„óé      1Ý!2Ý! [ÍôHO  ì /   €„ó Àœý"„ó ÎÕ³ Þ!ö ç+1¬ç!ø!  ì  2ì  pý" @ Q; Kü�!r\cjü½!!J×`é„óµEA,Ü`ý"„ó„óß'  $ É„ó ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwý"„óœó  ™òã ¸v­ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^ÍôéÇÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwé„ó©ƒ ¸vÍôý".¸v.ZŸ„óE$Íô&$” „ó# 6# ÚÂ/‹áÆ …Ž ì 鞎ñ ßñÈ“òØø÷иvó¸vù„­$½w• å¥w•ì  °Âv3# Æ ] ü] ”]<Ý$„è$ ì ¾#ì Ì# ö$5`ù�]]ì ¿¬ì �…!®]Q´]YÀ]ì ††áÍ]P¬ç$Š û$4†% ü�% ì  ñwÂt�%ì §ý"Ì#t % ä“%tÉ% É%     †) Ë% •º¢i ¯4¢ ÅÁ4¢ ]ÝYb! ÝYb! µÓYb !ˆ~ èYb!Â>"Ì>#Ö># ¿3Â>"#è-ö>#? "�A?" ß4¢ M×;¢ ì ªý" â% Ð3É%  ø3µ%½$*0�Š¥ì  õJ²Œ²ŒøqµŒ—ÍJ¶Œ˜ÍJ·Œ÷ÍJ¸Œ¶ÍJÉ by­]òµpµpIterMutÁ¸pí óo¹pësóoºpžsóo¥hECØ8Gý"áªáª ChunksExactÁ䪬óo媻 óo檇sóoœå‘û¥ÇIÂt¾ƒ�„%˜¥1xº%à ý"½¤®…,¿%ଅ½¤<ò%”†&ì ì Žñ -3ñ& ÷& û& ü&d¢&¢&ì ßñ) D¦& ­&ïì Ç’ ï ê&äÏ& ñ&ÕÛáçáüÛ#¡: J  Àw•1à ]9è ] >ý"Šì¤É® ]Q¼ ] !2¥¥á‹ ì Ì#Šè-ýÔ;K¢ eˆ<¢  Ö>  è-º? ì Ì#Š œ<¢  L ý®<.¢ µpý"ì „!„!…!±€o$z�é -®… ë<¢ I  Ö% ÔÉ%ì  ÞQ¾ƒ�„ ³ 4Ü% \Ø%ÃÐ  Å&¬Ö&ç&ì 2ì ø÷< M>@ùÿ Œ]ùÞ Ÿ]üÙ$£ü‚%ú^eüî%„ýŸv¦•ÛÂvq;Ùý"Êýý¡Uiíwý"TÍ%ýÎ3ž ¢ Åpý"® ýŒ4ࢠ ý«4Á¢  ý³;³¢  ýàX‘b ƈ)Ø ¨: Ôˆ)ý"5Ú4¢ £:ψ)Ÿ:�: ßý"Ýã;¢ Ì: Ïý"EŒ<¢ : Žý"E•<¢ �–Pæ‚¢ý×L¥åJ¾ƒ�„½7øxÂt´¯&$ž&4•$½¤†$줵Ì#e ‘Ì#�Ëž& ý" �„uæ‚ ¾ƒ>†)>ï2Fæ‚PřǙș­É™Ê™àË™óG*¤�R{9 ¬…ž 悪›®…;½¤¸výéü¢&#©ƒšÒû›ý"¸v줸2²¨x �Û ˆ~Ù è-U·;¢ è-[ ¿3êè-Â>¿3Ì> ä¨tÉ©A€ ]Ý©IŠ ]¦!â ]ì �…“ì© Ò¨ý  �¹ï E¾°'‹ä£>ý"Šì¤n4§ý"Ì#9 ªý" ¾#' ¿¬ì Úÿz ­‹­Žñkßñø÷f¸v€Òý¬ Ö4]–4¢à‚. ǒ$Œ¿$ Ùž&\k>Á줈Ì#W—D²%¬½%ì ì  ÷Hô9Dà%lë%$ë%ì  ¨°–Âv2 Dð% ÷%üë%!ì ·{hì Ì# Š& œù% Œ&ø4–&Y H4£&Þ(å(Û(â(·¥ô(Ù(à(Ì#Ö( Ó( ê( ü(  lè'Œ×'¼ý>/,ùb­ò#^4,ì -•L-ôQX¡ùb½Ö#^5,ì ó¾oäTv¡¡ ¥?/,T‚@0-ü�@0.¼�@0/l‘@0000ì í`+0/ 0 ¦@00K0./ì í` ­@0/ü�@&0-.˜ ´@0.¿@11lÅ@1212ì ;í`¤Å@112˜ Ø@12 ã@23ù{î©!^6ì  ‚¬˜-!{‡ª^1 {�ª^35$›(ì ¬‹(ì  IôB ! Ÿ( ¥(¦(üû$«(8 ;L( I(F(C(Åz@( <( Âv8( 4( 1(º?.(5(Ÿ(!›( ! Âv—(!“(!0(7(.() ,( )(%(·¥ ( '( ( ( (  Å™©ƒ(È,Ï,,š&੃”Ñ&  ŒÒ& “!"’&"ì -•L-ôQX¡�'"ì ó¾oäTv¡¡ˆ!",°?!#4¸?!#�"$œ"%š"&™"' "'#ì í`Ä"& '#š"'ä"%&ì í`š"&™"$%˜—"%–#(•#)œ#)#ì ;í`•#()˜”#)“$*’(ì à›$‡(ƒ* ´7* 4*Æ)}.„.4î&$‚';©ƒ2).+;t¥'+¡{«Ó ^+  *ÂtÌ# ™A$*#("$!#     ½¤ï-ì Ç’    ï ã& ä&  ×ݧ ²9 3ø£ 23¦11¬0-0#:4#:4½¤á:>9á:>9+ì Ì#á:>9 @H=6JH=7JH=74@H=:$?:7ñ‘=$A6 Âv:+@H=:�H=7™H=6�H=6°H=5�$:4 ô'ïBì Ç’;   ïI=ì Á,ì Ì#6I+>Iì Ì#úH8 ISI>9aI=SI>9rI=5rI=5+ì Ì#rI=5 ö'ü¡'`JC ü®%øüÜ%Ê·¾üø&®£%–PÇsÑŸ%–TÉsåš%‰tÂtÎ1”%”xÂt�%Š%˜XŽß©ƒ›ß%%  Ä- ŠtÂtí`©ßüß% %   % ’xÂt/ %%û$ÞwÂt÷$ô$ÇvÂtï$°FÇì$¦FÁ° FzJÙÂtç$ä$ãÂtß$Ü$íÂta/×$ßÂvÂtÒ$þHŽÂtÎ$Œ%ÇvÂtÌ$HGÇ„%>GÁ°8GÅJÙÂt%|%ãÂtw%t%íÂtù/o%ßÂvÂtj%ü€=šQ�ü¬?î!!üþ?œ"!ü»@_#!üß@;$!ùbìñn^!µ¥Œƒ?!ùbüÕn^!±¥Œ•?!ù{©©q^$¶£Œò@!ù{¶Æ l^%«¤l‹A!ù{–Ÿ®^)ã9{ƒÇ ^)ù{àÑ ë^)­¤i{‹Ç ^)sG„tÂt„‡'7øxÂtüÁ&#?%´wÂtT©' Q. //0/1/þ2/û/µ¥õ/ó/±¥í/ë2¶£å/ã3«¤Ý/Û7ãÔ7Ï7­¤È7å$”+Ât© Ì#Ó %:ãnÂt© %:H;¡oÂt3%;H<�oÂt H< H=é§H=G%=énÂt@H=^%??j%@?7øxÂtüÆ'0<ô$Ÿ%¡LŒ%°–ù És» ©ƒ¼  °–À ÇsL£&±ß1 ©ƒ9 éü»&)½¤- ø£9 ø£4 éüÂ'4½¤è Ȳé ø£ò °–} , ©ƒd6Ì#B6þß@2·¥Q$@6 Ì#>6 ·¥I2 Åzj3©ƒ/)©ƒ}(Åz3Ì#3·¥M$·¥r3·¥{3¡| !¡£ !˜2 "¡2 !¡1 !¡1 !˜à #¡à !˜� $Ì#Ç1.¡Ì /˜z 0¡z /¡y /¡y /˜ 1¡ /˜Ø 2½¤#:rI=²¨@H=²¨JH=I=á:>ñ‘$?©ƒ* ƒüseedÁý�Ã�¾°* » ü&;» –E§ÂtÌ#ù#¨ÂtÌ#¶E§ÂtÌ#$¨ÂtÌ#�?S¡¢?T¡S¡T¡ª–§÷–h·{ÿ«Lë'Àœ— °–p ÿ«W8›ßâ#ÿ«ß#ŽðÙ#�ðÑ#�ðØ#à›3Ç’ïÿ«z3à›Hÿ«{Iÿ«úHÁ,IÇ’ïD’3¬�3ì ì ª–-lË3$Ë3ì ÷–)DÐ3 ×3ì¼3ì  ‡™ò¼3lÌÀ3 Ù3$ó3ì ¬ã3ì Àœ> ÷3 ý3þ3üÒ2¬"2K3üŽ3pô$ÿ2€úï2°–‚驃Y޲Z°–ç™ÚÂ>ö´Ä¦ª–Ï÷–¤й`Àœ°–á Dô5¬ÿ5 ì ì ª–-ø7ž6"üž6!l±6$±6ì ÷–) D¶6 ½6Tì “òž6d ì¢6‡ ±E ®E  ì  á6 ÌÊ6 Àœô„ó â6 è6é6ü›5Î<L  ñE øE €„óèE ïE Àœ…´„ó ÓE ÊüÍôé }E „E ® 7¿68¿6 [ÍôÝä{E xE ì ˜E vE }E €„ótE Àœô„óqE cj³ À6£• ç+1¬Í6$Ý6  ì  2ì Àœ < MM ôüð5yX_füž6"¯B×`é„óFªB¦B‘BÜ`ô„ó„ópŒB  ‰B É„ó„B ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwô„ó´Ï5€ú¿5°–7•úîú©ƒ޲Íôlô„°–…^_A„óIÍôæHTA „óÃG öG ÚÂ�ö´ÈÆ ÜŽ{ì 颪–ò÷–´“òÄÀœ'°–ø°–ÿ¤•9ì  Kôô$¤9%¯9OüÏ8`ô$å8òL×8 ,ôÆrÄÁ<ì  Môô$Ô<%ß<Püß;€ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwô‘ôÌù;òLë; ‡óÇÍüý>).,ý>Bì -•L-ôQX¡ “?Eì ó¾oäTv¡¡@üô>2WÏÎkjhg n ì í`’  h ²ì í`hg˜ed c j ì ;í`c  ˜b a `ì à›U Q ‚o  ø£^ e lsšAQ ïäàÜÙÖµ¥Ñϱ¥Êȶ£ÃÁ«¤¼ºã´°­¤ª ø£<�= ¡,‰=¡w¡¤¡w¡Ó˜b¡b¡a¡a˜ó¡ó˜Àƒdƒ# xorshiftedÁÀrotÁ@ ®  1` S¡_ T¡à›)Ì#4Á-•L-ôQX¡0x5851_F42D_4C95_7F2DÁó¾oäTv¡¡0xA176_54E4_6FBE_17F3Á(– ­&2ª(Ãì  çgì  Ü&o3Ç È´aàl þvê}ªÈ  ­Õ¶ÒÝ¢œ¯¹´Òª ºÑÌ(– ì  ÷­%8Ê ®­ÐÑ·7þB­sP™Ó„(– ­"ì  †­9A(Ó ®­× غ=þHœÒP­�¶Ò¥hr¿ÔÂâ¿àéœÒ%/(– ­ ­3ì  ù±­­NS[š íÄHä œÒœÒ¶Ò¨¶Ò°6î CMïÖÚ(– ­ì  üh­ÿ9 ïIšóÇ-é8œÒ@ ÆØK¶Ò‘\ƒis½Ø»¬º4º­$ì ¯².tÁ ΔÐ%ÀŒUºŒ- áè@ óŒ €à³ýŽHB±ì  `à³ì % ÖŒ ¯˜-ÜŒ Àœ˜…´ àŒ “�UùŒ Àœ˜…´ì …´ ‚� ]üùoý´‹àÇ_˜à³…´«Û]uÓŒ¥ïŒŽ#«Û«Ûà³-ýŒÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw˜…´Ä— þL‰·ÁTÊÀU-ÓŒ˜‡à³Ý…´¥A¯² «Ûr«Û﬽ 4½ ­$ì  “­3tÄ  Ñ ”Ó ¿¼' ä ë ùºÁ€à³¸ì «Ûì Ô°·¯¡® Àœ¡…´«¨¥ Àœ¡…´ì …´¢«^üüo Ç_¡à³…´«Û9›˜šŽ#«Û«Û´Ý“ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¡…´Äš  ÞLŒ î¿(ÊÀ)Ž¡à³h…´0?þÅßq«Ûý«ÛzÔÑ 4Ñ ­$ì  ”­3ç œØ  ê ”ì QN' ý „ ‹LS€à³Jì «Ûì fÃÌ_üÿ …ÂÇ_éà³…´«Ûɼ¹»Ž#«Û«Û´Ý´ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwé…´¼¯  ÞL‘ ©ƒœ ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwéà³ÊÀ à³Ý…´¥““ì—`Ðäj«Û�«Ûþ ùŽ"`:ø ù:Ž"`(:÷   ù¸æÇaù¸™"a k> ?  ®®«°¿ ”3¯f*²Û�éù¸šìa ¸´a �Ã!a ì  ¥gÄ ïê €g€gŠ‚gê ûcƒg‹ûcØ«q¢1È¡àBÿ¹¸Ûa  ‹ê €g€gŠ‚gê ûcƒg‹ûcØ«q¢1È¡àÿ ¸…a i —¤ ì „!„!…!±€o$z�é - é ¸¬ a   ù¸» ýa §¤ ¸· a  §¤§¤ArgumentÁ©¤‚¡f‹0mÖ”49d :¯`elżù     ì  ÂtÌ#+®®«°¿ ”3¯f*²Û�Ât¥Üù   ®®«°¿ ”3¯f*²Û�Úíý¦ùL  ‰¥  ñù   ÷ùñ@`ì  ´[�" ÿ üˆ x` «²ýé ta§fïêÂù¸°ÖaøKÅïêÙ¸™aLÔïêé1¸µa-LÏïê?LýÐ÷ª ‹gÌ#+Ì#T…´T¶ ïê• ˆ” ïê•ÚíÌ#�Úí› Êò²—¤™¤ PlaceholderÁš¤�¡f›¤ formatterÁ¡fœ¤ _lifetimeÁ¡f�¤ž¤CountÁŸ¤ó¡fÑ&þ<Š$«Æ+‹ê'âëÚôêÖ ïêb>êîû°ï¡errÁ"Ç™¾ò¾òǰ$©ðjïêHéê=4Ž€úŒ„ ®€ú›gü¨s®®¯ê ±ó øÈ}Pçûª€ú¤Ç èõd¶€ú hÌ#4Á©{Áö ^ ˜�wü°_ù{¤æ „^±¤Ôëù{Œõ Ö^³¤Ñ{ƒç ^ù{ó�­^Á£ù{õæ )^˜$Øø£,ÁbytesÁ�5* ø£…xü²S!%«¤¼ä%ã%%­¤ %ø£\ʘ$Á ` .(.(.ì ÿÿÿÿÌ#(.A0úz0 Àœ˜±^ì ±^¦0µ0µ0˜Î0 Àœ˜±^î0¦011ì �c .51yç1–1ÑÌ#˜22Ú¸Ã1˜$ÆÌ#·¡h .(.˜µ0Ž#ç195¤£˜�c1y.�.�.Ì#š. ÀœÌ#±^û./ì •_y.,/3/êz…1–1јÌ#¬1²1�¹Ã1Ì#,´˜$«·gy.Ì#�.…1•_/Ì#8Á©bÁö ^ ¡¬ ~üÍ _ùb¤æ „^ç¥Ôˆ ùbŒõ Ö^é¥Ñbƒç ^ùbó�­^÷¤ùbõæ )^¡$õ ÂtÌ#,Þ ýö Š¡b«Ó ^ ½ÿ¢ üÏ Sùb¶Æ l^᥼� ùb–Ÿ®^ù¤9bƒÇ ^ùbàÑ ë^ã¥ib‹Ç ^½ÿ\ç ¡$Þ  ytö iˆà^ ¡‰ˆÝ^ Àœ¡±^ ˆí^¼ö ì  Ó_¡±^jD…  Œ — €üÆ Q–1ÑÌ#¡Tú ùˆ’^jݸÃ1¡$ã Ì#Ô ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¡±^2¡2Žn»ý� |å i‰à^ Ì#‰‰Ý^ ÀœÌ#±^ ‰í^Äå ì •_aDõ  ü ‡ �üº M–1Ñ¡Ì#Tê ù‰’^j“¹Ã1Ì#,Ñ ¡$È ·g×Ì#Öf•_¬œÛ ì ¯²$Ûtà-ÌÕì ! €¯˜ ‘˜Šü­kTý˜ÇÊÀL¹Äݾ,ý–"®‚W¯²õœÚ ì Åß$Útß-ÌÔì ! ÿ¯¡ �—‹ü¬kTü¡ÆÊÀL¸Ôâ¾,ü–"®‚WÅßõÄäì Ðä$äøœé,ôÞì !¨Œü«}éÓÊÀL¹©ƒÄõæŸ4‹x,“ì0\ÐäÙ„Å= ì  ê"­$Å=\Ê=üÅ=ì  ’Ý"­VtÖ= ã=ê=˜ü„=fÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw˜‘ºŒÄ¢=ÊÀL”= ºŒ”‡Œ´Œñ„¿> ì ‡Œ$¿>\Ä>ü¿>ì  “ºŒJtÐ> Ý>ä>™üþ=fÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¡Ï�Äœ>ÊÀLŽ>ë�鈇ŒߎÞ„Ê? ì ‡Œ$Ê?\Ï?üÊ?$ì  ”ºŒJê?œÛ? í?ô?šüø>|ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwéÏ�¼¨?ÊÀLŠ?©ƒ•?ë�ú“ì! ‡Œ%÷�ýüö ®­¯+þ6­=D     2CUi„��›ž¡ûDerefMutÁD±é" InfallibleÁTӸĒ\ÂG‚ê Lã®ƒê ¯ƒü#îPü#/, Áøã ü_&ã # rand_core: core random number generation traits
[![crate][crate-badge]][crate-link] [![Docs][docs-image]][docs-link] [![Apache2/MIT licensed][license-image]][license-link] [![Build Status][build-image]][build-link]
This crate provides a collection of traits used by implementations of Random Number Generation (RNG) algorithms. Additionally, it includes helper utilities that assist with the implementation of these traits. Note that the traits focus solely on the core RNG functionality. Most users should prefer the [`rand`] crate, which offers more advanced RNG capabilities built on these core traits, such as sampling from restricted ranges, generating floating-point numbers, list permutations, and more. [`rand`]: https://docs.rs/rand ## License The crate is licensed under either of: * [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) * [MIT license](http://opensource.org/licenses/MIT) at your option. [//]: # (badges) [crate-badge]: https://img.shields.io/crates/v/rand_core.svg [crate-link]: https://crates.io/crates/rand_core [docs-image]: https://docs.rs/rand_core/badge.svg [docs-link]: https://docs.rs/rand_core [license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg [build-image]: https://github.com/rust-random/rand_core/actions/workflows/test.yml/badge.svg?branch=master [license-link]: #license [build-link]: https://github.com/rust-random/rand_core/actions/workflows/test.yml?query=branch:master Áü†š%https://www.rust-lang.org/favicon.icoÁ„ã9https://www.rust-lang.org/logos/rust-logo-128x128-blk.pngÁl’2CUi„��›ž¡ûKž“Eé"¹“;¸Ä’:G‚ê 9®ƒê J¯ƒ²µ¸œ¦§ÌÄ‘làü,) The [`Generator`] trait and [`BlockRng`]Á-�ü1MJ Trait [`Generator`] may be implemented by block-generators; that is PRNGsÁü<9 whose output is a *block* of words, such as `[u32; 16]`.Á¼�üÀNK The struct [`BlockRng`] wraps such a [`Generator`] together with an outputÁü�KH buffer and implements several methods (e.g. [`BlockRng::next_word`]) toÁüÛLI assist in the implementation of [`TryRng`]. Note that (unlike in earlierÁü¨NK versions of `rand_core`) [`BlockRng`] itself does not implement [`TryRng`]Áü÷MJ since in practice we found it was always beneficial to use a wrapper typeÁ´Å over [`BlockRng`].ÁÜ�là # ExampleÁî�<ò ```Áüú" use core::convert::Infallible;Áü�.+ use rand_core::{Rng, SeedableRng, TryRng};ÁüÌ0- use rand_core::block::{Generator, BlockRng};Áý�´� struct MyRngCore {Áô˜ // Generator state ...ÁÌ· # state: [u32; 8],Á,Ñ }Á×�üÛ" impl Generator for MyRngCore {Áüþ type Output = [u32; 8];Áž�ü¢;8 fn generate(&mut self, output: &mut Self::Output) {ÁüÞ-* // Write a new block to output...ÁüŒ" # *output = self.state;ÁL¯ }Á,¹ïª¿�üÃ)& // Our RNG is a wrapper over BlockRngÁüí*' pub struct MyRng(BlockRng);Á˜ �üœ  impl SeedableRng for MyRng {Áì½  type Seed = [u8; 32];ÁüÛ 0- fn from_seed(seed: Self::Seed) -> Self {ÁüŒ " let core = MyRngCore {Á´¯  // ...ÁüÆ <9 # state: rand_core::utils::read_words(&seed),Átƒ };Áü’ &# MyRng(BlockRng::new(core))ÁL¹ ’­,à ïªÉ �ÜÍ  impl TryRng for MyRng {Áüé  type Error = Infallible;ÁŠ �ŒŽ  #[inline]Áü  ?< fn try_next_u32(&mut self) -> Result {Áüà " Ok(self.0.next_word())ÁLƒ ’­� �Œ‘ ’²ü£ ?< fn try_next_u64(&mut self) -> Result {Áüã *' Ok(self.0.next_u64_from_u32())ÁLŽ’­˜�Œœ’²ü®RO fn try_fill_bytes(&mut self, bytes: &mut [u8]) -> Result<(), Infallible> {Áü�(% Ok(self.0.fill_bytes(bytes))ÁLª’­,´ïªº�ü¾85 // And if applicable: impl TryCryptoRng for MyRng {}Á÷�üû*' let mut rng = MyRng::seed_from_u64(0);Áü¦0- println!("First value: {}", rng.next_u32());Áü×-* # assert_eq!(rng.next_u32(), 1171109249);Á<…ͨ��ì‘ [`TryRng`]: crate::TryRngÁü¯'$ [`SeedableRng`]: crate::SeedableRngÁ,覞 $êj4ñúûc”Ü)LôœŸô€ A random (block) generatorÁL©ÿÆôüŸÐüºüº! þÆ‚d¾²» \¾¤¹ The output type.ÁÒ�üÚ_\ For use with [`rand_core::block`](crate::block) code this must be `[u32; _]` or `[u64; _]`.Á4Ãü´2üÐ%" Generate a new block of `output`.Áú�ü‚-* This must fill `output` with random data.ÁD·ÉÊ Éô Ê‚éBÿ À ô$Åð 4Ëü -ôì Destruct the output bufferÁ��ü—EB This method is called on [`Drop`] of the [`Self::Output`] buffer.Áüá,) The default implementation does nothing.Á$£ËÌ Ëô Ì‚éBÿ ¨ ô$­ð � üÝGƒ  þÆÝ âÝL�ŸgÝT™§ g-/ü«6®ÎÏРΧ Ï€g€gŠ‚gê ûcƒg‹ûcØ«q¢1È¡ÐàBÿ  ² Ý$³ñ,üÞ'ƒ—Á ã§ÁLæ§�#”Œ$�Ñ Ñ§éBÿ ” Ý$™üÕR“Šƒ ý$ž&|Š ŠÌ#tíþÆý$ ýjý"$Ýöý"<äý$Ô€ þÆý" ÚÖ%  c óÌ#[]ü»!"ü® =: Create a new `BlockRng` from an existing RNG implementingÁüð 85 `Generator`. Results will be generated on first use.ÁÂ!ý$Ö%Bÿ ý"Šý$û˜üÛ$Düâ";8 Reconstruct from a core and a remaining-results buffer.Á¢#�üª#DA This may be used to deserialize using a `core` and the output ofÁüó#  [`Self::remaining_results`].Á˜$�ü $63 Returns `None` if `remaining_results` is too long.Á\â$Òý$ Òˆ)Ó1Bÿ Š% ý"Šý$û¤›°üÿ'H“ŠƒÛÄ|ª(ìÄt�(úÄ �(ŠÅ$‡(§ÅÔ (µÅ „(Ö% !"#$%@ “(Ì#@BÄÆ*,É*Ó ÓÖ%Ì#Bÿ Ï* ý"Šý$$Ð*ü§+%Lª+Ô ÔÖ%Ì#éBÿ ´+ !ý"Šý$$¹+÷(üñ/*üº,=: Re-generate buffer contents, skipping the first `n` wordsÁü,�ü„-C@ Existing buffer contents are discarded. A new set of results isÁüÌ-GD generated (either immediately or when next required). The first `n`Áü˜.IF words are skipped (this may be used to set a specific word position).Áæ.�dî. # PanicsÁÿ.�ü‡/GD This method will panic if `n >= N` where `N` is the buffer size (inÁ\Ó/ words).Átø/Õ ÕÖ%Ì#éBÿ ‡0 "ý"Šý$$Œ0¤oü”3"üÝ1A> Get the number of words consumed since the start of the blockÁ£2�ü«2FC The result is in the range `0..N` where `N` is the buffer size (inÁ\ö2îÏ\›3Ö ÖÖ%Ì#Bÿ §3 #ý"Šý$$¨3üƒ7'ü‘40- Access the unused part of the results bufferÁÆ4�üÎ4FC The length of the returned slice is guaranteed to be less than theÁü™5EB length of `::Output` (i.e. less than `N` whereÁ¼ã5 `Output = [W; N]`).Áÿ5�ü‡6=: This is a low-level interface intended for serialization.ÁüÉ6'$ Results are not marked as consumed.ÁŒŠ7× ×Ö% ׈)Bÿ œ7 $ý"Šý$$�7ü³8 üù7'$ Generate the next word (e.g. `u32`)ÁLº8Ø ØÖ%ý"Bÿ Ä8 %ý"Šý$$É8üÌ:AŠ'ƒ('( ßYÂWŒî:þÆßY á:ßYää:ŠÌ#tÑ:×e* ×:Ì#-/üÐ;*ü”;)& Generate a `u64` from two `u32` wordsÁŒ×;Ù Ù×e¡Bÿ& é;& *ŠßY$î;üù@H“,Š-ƒ.,-.ÛÄ|¤AìÄt‡AúÄ —AŠÅ$�A§ÅÔšAµÅ þ@Ö%0  6 �AÌ#68üêA-|ÈA Fill `dest`ÁTñAÚÛ ÚÖ% ÛÂvéBÿ+ üA+ 0ý"Šý$$�B†¨”PtµF0�1�1�110²ƒlïü)& Utilties to aid trait implementationsÁ*�”. ## PortabilityÁA�üENK For cross-platform reproducibility, Little-Endian order (least-significantÁü”JG part first) has been chosen as the standard for inter-type conversion.ÁüßHE For example, [`next_u64_via_u32`] generates two `u32` values `x, y`,Áü¨! then outputs `(y << 32) | x`.ÁÊ�üÎLI Byte-swapping (like the std `to_le` functions) is only needed to convertÁü›EB to/from byte sequences, and since its purpose is reproducibility,ÁüáDA non-reproducible sources (e.g. `OsRng`) need not bother with it.Á¦�ôª ## Implementing [`TryRng`]ÁÉ�üÍKH Usually an implementation of [`TryRng`] will implement one of the threeÁü™LI methods over its internal source. The following helpers are provided forÁüæ" the remaining implementations.Á‰�Ô� **`fn try_next_u32`:**Áü¨  - `self.next_u64() as u32`ÁüÉ(% - `(self.next_u64() >> 32) as u32`Áüò1. - [next_word_via_fill][](self)Á¤�Ô¨ **`fn try_next_u64`:**ÁüÃ/, - [next_u64_via_u32][](self)Áüó1šå¥�ä© **`fn try_fill_bytes`:**ÁüÆ=: - [fill_bytes_via_next_word][](self, dest)Á„ �üˆ # ## Implementing [`SeedableRng`]Á¬ �ü° KH In many cases, [`SeedableRng::Seed`] must be converted to `[u32; _]` orÁüü 41 `[u64; _]`. [`read_words`] may be used for this.Á± �üµ 'ѸüÝ 30 [`SeedableRng::Seed`]: crate::SeedableRng::SeedÁ‘ �t•  ## ExampleÁ¤ �ü¨ NK We demonstrate a simple multiplicative congruential generator (MCG), takenÁü÷ JG from M.E. O'Neill's blog post [Does It Beat the Minimal Standard?][0].Á �üÆ PM [0]: https://www.pcg-random.org/posts/does-it-beat-the-minimal-standard.htmlÁ— �<› ͨü£ "Þ¨üÆ 52 use rand_core::{Rng, SeedableRng, TryRng, utils};Áü �ä€ pub struct Mcg128(u128);Á��ü¡! impl SeedableRng for Mcg128 {Áìà type Seed = [u8; 16];Áá�Œå’²ü÷0�¯ü¨MJ // Always use little-endian byte order to ensure portable resultsÁüö+( Self(u128::from_le_bytes(seed))ÁL¢’­,¬ïª²�ä¶ impl TryRng for Mcg128 {ÁüÓ ݱô�Œø’²üŠ?­²üÊ.+ Ok((self.next_u64() >> 32) as u32)ÁLù’­ƒ�Œ‡’²ü™?ȳüÙMJ self.0 = self.0.wrapping_mul(0x0fc94e3bf4e9ab32866458cd56f5e605);Áü§%" Ok((self.0 >> 64) as u64)ÁLÍ’­×�ŒÛ’²üíPM fn try_fill_bytes(&mut self, dst: &mut [u8]) -> Result<(), Infallible> {Áü¾HE utils::fill_bytes_via_next_word(dst, || self.try_next_u64())ÁL‡’­,‘ïª,— #Áü�.+ # let mut rng = Mcg128::seed_from_u64(42);ÁüÌ-* # assert_eq!(rng.next_u32(), 3443086493);Áüú63 # assert_eq!(rng.next_u64(), 3462997187007721903);Áì± # let mut buf = [0u8; 5];ÁüÏ # rng.fill_bytes(&mut buf);Áüï-* # assert_eq!(buf, [154, 23, 43, 68, 75]);Á<�ͨ,÷57;>å 4±�23ž $Îj4lª$ŒÁü›QüÕ;8 Generate a `u64` using `next_u32`, little-endian order.Á„¢Ü Ü­î¿BÿŽ66 ÌÿÆ­4¿�­4¶ 5­ÚÂÐ_ ³ü‚„ü¡+( Fill `dst` with bytes using `next_word`ÁÍ�üÑA> This may be used to implement `fill_bytes` over `next_u32` orÁü“KH `next_u64`. Words are used in order of generation. The last word may beÁÄß partially discarded.ÁĉÝ ÝÂvÎÉ׿Bÿ�8“9‚:89: ¸þÆÕË ¢þÆýÅ ¥þÆÎÉäÖjýÅ$¨ˆ#ÎÉé¼Û�#ÎÉéÄèdæ 7ÕËýÅÎÉ“ì7s³LË�{}wyüµ Qüÿ52 Generate a `u32` or `u64` word using `fill_bytes`Á”¼ Þ Þ™ò¤ùBÿ“<Ž==< è µÅ Ï þÆ™ò Ø ŠÅ$Ò �™ò4Û  ;ý"™òÚ‡|@B<>üÛ#@ü�"-* Reads an array of words from a byte sliceÁ¯"�ü³"GD Words are read from `src` in order, using LE conversion from bytes.Áû"�dÿ"üÎŒ#�ü�#85 Panics if `size_of_val(src) != size_of::<[W; N]>()`.ÁTâ#ß ßÂvž&Bÿ“?Š@?@ ‹$µÅ í#ìÄtö#ŠÅ$ð# >ý"Šä¨µy)+. ü#Ì#„ÿdƒGQó  „CEå 4�CF,$&ä‘ü<9 A random number generator that can be explicitly seeded.ÁX�ü\EB This trait encapsulates the low-level functionality common to allÁü¢GD pseudo-random number generators (PRNGs, or algorithmic generators).Áê�üîMJ A generator implementing `SeedableRng` will usually be deterministic, butÁü¼NK beware that portability and reproducibility of results **is not implied**.Áü‹OL Refer to documentation of the generator, noting that generators named afterÁüÛIF a specific algorithm are usually tested for reproducibility against aÁü¥KH reference vector, while `SmallRng` and `StdRng` specifically opt out ofÁüñ reproducibility guarantees.Á\›GGþÆô,¨Gô‰ô‰HIJKMOPHIJKMOPþư–üÿ7…°–,Šö°–<’£°–Âv\œ¦°–Âv\ª°ŠOŠDÒŠ:âŠ-õŠ MKIOPJüÿ6ü´KH Seed type, which is restricted to types mutably-dereferenceable as `u8`Áü„1. arrays (we recommend `[u8; N]` for some `N`).Áº�üÂKH It is recommended to seed PRNGs with a seed of at least circa 100 bits,Áü’LI which means an array of `[u8; 12]` or greater to avoid picking RNGs withÁüã" partially overlapping periods.ÁŠ�ü’JG For cryptographic RNG's a seed of 256 bits is recommended, `[u8; 32]`.Áá�é�üñ:7 # Implementing `SeedableRng` for RNGs with large seedsÁ° �ü¸ LI Note that [`Default`] is not implemented for large arrays `[u8; N]` withÁü‰ JG `N` > 32. To be able to implement the traits required by `SeedableRng`ÁüØ DA for RNGs with such large seeds, the newtype pattern can be used:Á¡ �<© ͨüµ  use rand_core::SeedableRng;ÁÙ �Äá  const N: usize = 64;Á¤þ  #[derive(Clone)]Áü— &# pub struct MyRngSeed(pub [u8; N]);ÁÌ  # #[allow(dead_code)]Áüà  pub struct MyRng(MyRngSeed);Á… �ü�  impl Default for MyRngSeed {Áü² # fn default() -> MyRngSeed {ÁìÚ  MyRngSeed([0; N])ÁLü ’­,Šïª”�üœ$! impl AsRef<[u8]> for MyRngSeed {ÁüÅ# fn as_ref(&self) -> &[u8] {Áœí &self.0ÁL…’­,“ïª��ü¥$! impl AsMut<[u8]> for MyRngSeed {ÁüÎ+( fn as_mut(&mut self) -> &mut [u8] {Á¼þ &mut self.0ÁLš’­,¨ïª²�üº ±®ôß type Seed = MyRngSeed;Á‚�üŠ0- fn from_seed(seed: MyRngSeed) -> MyRng {Á¼¿ MyRng(seed)ÁLÛ’­,éïª<óͨ$„GGüÁ'ü¼+( Create a new PRNG using the given seed.Áì�üôHE PRNG implementations are allowed to assume that bits in the seed areÁüÁHE well distributed. That means usually that the number of one and zeroÁüŽMJ bits are roughly equal, and values like 0, 1 and (size - 1) are unlikely.ÁüàHE Note that many non-cryptographic PRNGs will show poor quality outputÁü­KH if this is not adhered to. If you wish to seed from simple numbers, useÁäý `seed_from_u64` instead.Áž�ü¦KH All PRNG implementations should be reproducible unless otherwise noted:ÁüöHE given a fixed `seed`, the same sequence of output should be producedÁüÃLI on all runs, library versions and architectures (e.g. check endianness).Áü”KH Any "value-breaking" changes to the generator should require bumping atÁüä<9 least the minor version and documentation of the change.Á¥�ü­C@ It is not required that this function yield the same state as aÁüõLI reference implementation of the PRNG given equivalent seed; if necessaryÁüÆ>; another constructor replicating behaviour from a referenceÁü‰  implementation can be added.Á®�ü¶JG PRNG implementations should make sure `from_seed` never panics. In theÁü…HE case that some special values (like an all zero seed) are not viableÁüÒIF seeds it is preferable to map these to alternative constant value(s),Áü KH for example `0xBAD5EEDu32` or `0x0DDB1A5E5BAD5EEDu64` ("odd biases? badÁüðLI seed"). This is assuming only a small number of values must be rejected.ÁLİ–ôBÿGGÀœö´$Îüû$(üî)& Create a new PRNG using a `u64` seed.Áœ�ü¤JG This is a convenience-wrapper around `from_seed` to allow constructionÁüóLI of any `SeedableRng` from a simple `u64` value. It is designed such thatÁüÄ HE low Hamming Weight numbers like 0 and 1 can be used and should stillÁü‘!DA result in good, independent seeds to the PRNG which is returned.ÁÚ!�üâ!LI This **is not suitable for cryptography**, as should be clear given thatÁü³"# the input size is only 64 bits.ÁÛ"�üã"HE Implementations for PRNGs *may* provide their own implementations ofÁü°#KH this function, but the default implementation should be good enough forÁü€$JG all purposes. *Changing* the implementation of this function should beÁüÏ$'$ considered a value-breaking change.Álþ$¡ôBÿGG Jôƒ,�%üÒ21ü¬(63 Create a new PRNG seeded from an infallible `Rng`.Áç(�üï(LI This may be useful when needing to rapidly seed many PRNGs from a masterÁüÀ)LI PRNG, and to allow forking of PRNGs. It may be considered deterministic.Á‘*�ü™*JG The master PRNG should be at least as high quality as the child PRNGs.Áüè*DA When seeding non-cryptographic child PRNGs, we recommend using aÁü±+GD different algorithm for the master PRNG (ideally a CSPRNG) to avoidÁüý+GD correlations between the child PRNGs. If this is not possible (e.g.ÁüÉ,JG forking using small non-crypto PRNGs) ensure that your PRNG has a goodÁü˜-IF mixing function on the output or consider use of a hash function withÁ„æ- `from_seed`.Áû-�üƒ.JG Note that seeding `XorShiftRng` from another `XorShiftRng` provides anÁüÒ.FC extreme example of what can go wrong: the new PRNG will be a cloneÁ”�/ of the parent.Á´/�ü¼/JG PRNG implementations are allowed to assume that a good RNG is providedÁü‹0JG for seeding, and that it is cryptographically secure when appropriate.ÁüÚ0GD As of `rand` 0.7 / `rand_core` 0.5, implementations overriding thisÁü¦1EB method should ensure the implementation satisfies reproducibilityÁüð1.+ (in prior versions this was not required).Á£2�ü«2" [`rand`]: https://docs.rs/randÁDÕ2à à™òôBÿGŽLL ô2GÿÆ™ò4ç2„™òá2 Kô™òÚÂ| Þ2ü›5Jü„4?< Create a new PRNG seeded from a potentially fallible `Rng`.ÁÈ4�üÐ4FC See [`from_rng`][SeedableRng::from_rng] docs for more information.Ádž5á á™ò‰ÄBÿGŽNN Ä5G‚º4·5îÿ4®5 Mô™òÚÂö{ «5üÏ87”ï6 Fork this PRNGÁ†7�üŽ7NK This creates a new PRNG from the current one by initializing a new one andÁüá7$! seeding it from the current one.ÁŠ8�ü’885 This is useful when initializing a PRNG for a threadÁ$Ò8â âôôBÿG ×8G„ô‚9 Oô$Ü8üß;S”µ9€¼Ì9�üÔ9N¨¼ü§:$€½Ð:�üØ:96 This is useful when initializing a PRNG for a thread.Á–;�üž;<9 This is the failable equivalent to [`SeedableRng::fork`]ÁDâ;ã ãô®ÈBÿG ë;G�ô4«< Pô$ð;ü€=$,ƒ=Cä 䡸£Bÿ �= Qƒ(z ¢=Ì#t«=±=C¡t×=Ý=C¡t‘T•`®¯¹“T ¸ÄUW¾ d›UXå 4&�UY,:<(*üŸ'Ž[[þÆ­ ¤Ýù4§þ\]^_‘’“”]_^02TÍ,ÒZZ…´üù6düî îþÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw˜‘þBÿZ ‰Z ]­$Žüü6dÿï ïþÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¡êÅBÿZ Œ Z ^­$‘ üÿ Gt‚ ðñ ðþ ñÂvÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwéêÅBÿZ ‘ Z _­$– “ì™püˆ 8L‹ Uïê…´BÿÄaaþÆï꼚 �ïꔟ  `ïêÅóÀk$&ü‚ 3Žcc†Ä ‡ ›­dŠ þüº 1ñeŽfef‚º4Ï îÿ4Æ ®®¯ê ±ó øÈ}Pçûª ñ™òg¿  à ü¨Müò  Reborrow with a new lifetimeÁ— �üŸ KH Rust allows references like `&T` or `&mut T` to be "reborrowed" throughÁüï PM coercion: essentially, the pointer is copied under a new, shorter, lifetime.ÁüÄIF Until rfcs#1403 lands, reborrows on user types require a method call.Á¯ Š òÊ®®¯ê ±ó øÈ}Pçûª Š ™òBÿdŠ hhdñŠ ò gñ™òŠ $¾²D¡$¥jmôvü.+ A marker trait for supported "word" types.ÁG�üK*' This is implemented for: `u32`, `u64`.Á$€jjüºüv!nôt†jüº'ÖÐüº3ÖÐ+Œ™˜Œ®¡TÄ4Èinü‹I4•nnüºü‹Èöô<�ù ô$§³ôÌ#t®Ìô¿ûhô„ÄnüºiçÑ^öÑU…ÒI—Ò@¦Ò7üº�çÑ‚öÑy…Òm—Òd¦Ò[opqrsopqrsþÆoô,õö¡Ó<룡ÓÂv\ý¦¡ÓÂv\‹™Ó>°Ó4ÀÓ'ÓÓprsqüß7,ännü¡-l¤¡ÓôBÿnn pôýö,²ü×$\Úô¡ÓBÿnn qô$æü…"TˆÌ#ôBÿnn rôŽ“ì°T³ôÌ#Bÿnn sô$¾œÙ˜uwxyzopqrsywzxT÷,üttø£ ‰Ì#ü°,l³o˜˜Bÿtt wýöØoü²#\µ˜©×Bÿtt x~oü©!T¬Ì#˜Bÿtt yŽenä�T ˜Ì#Bÿtt z™mœö¡|~€�opqrs�€~T” ,™ {{½ÿ ¦ Ì#üÍ ,lÐ o¡¡Bÿ{{ ~ýöXmüÏ #\Ò ¡„ÚBÿ{{ ålüÆ !TÉ Ì#¡Bÿ{{ €Ž(läº T½ ¡Ì#Bÿ{{ �kÌ´�c¬×ƒcüÑ )üï1. Trait for infallible random number generatorsÁ¡�ü¥A> `Rng` is a sub-trait of [`TryRng`] for infallible generators.Áç�”ë # RequirementsÁþ�ü‚63 See [`TryRng`#Requirements] which also apply here.Á¹�\½ # UsageÁÉ�üÍGD The [`rand`] crate provides higher level functionality, for exampleÁü•NK generation of floating-point values, uniform ranged sampling and shufflingÁüäOL sequences. In particular, [`rand::RngExt`] is an extension trait over `Rng`Áü´OL providing many of the methods one might expect to be able to use on an RNG.Á„�Ĉ # Implementing `Rng`Á¡�ü¥VS Implement [`TryRng`] with type Error = [core::convert::Infallible][].Áü�ü€ # [`rand`]: https://docs.rs/rand/Áü¤ HE [`rand::RngExt`]: https://docs.rs/rand/latest/rand/trait.RngExt.htmlÁüí # [`fill_bytes`]: Rng::fill_bytesÁü‘  [`next_u32`]: Rng::next_u32Áü±  [`next_u64`]: Rng::next_u64ÁÛ „„üºüÑ ‚íÁÔà ‘ô…´”ç „üº7íÁ3Òä&üºIíÁEÒä8…†‡…†‡‡…†ô§ ü� ! Return the next random `u32`.ÁDª ò òô˜Bÿ„ ³ „ …ô$¸ ôñ üË ! Return the next random `u64`.ÁDô ó óô¡Bÿ„ ý „ †ô$‚ ü¨)ü• ! Fill `dest` with random data.Á» �üà ?< This method should guarantee that `dest` is entirely filledÁü‡ 63 with new data, and may panic if this is impossibleÁü B? (e.g. reading past the end of a file that is being used as theÁÔ‰ source of randomness).ÁT«ôõ ôô õÂvéBÿ„ ¶„ ‡ô$»“ìÁüÕCމ‰‘­…´”ûÝùÔôÍù4‘­Š‹Œ…†‡Š‹Œ Úì­D°ö ö­˜Bÿˆ ¹ˆ Š­$¾ì¬D¯÷ ÷­¡Bÿˆ ¸ˆ ‹­$½ü«(T®øù ø­ ùÂvéBÿˆ ¹ˆ Œ­$¾“ìBqü•;ü¬=: A marker trait for securely unpredictable infallible RNGsÁê�üî[X This is a convenient trait alias for [TryCryptoRng].ÁüÊJG It is equivalent to the trait sum [Rng] + [TryCryptoRng].ÁLŸ��üºü•>³¿ª›ôü° Ò䔽�üº;³¿8¨ð/Òä,üºS³¿P¨ðGÒäDüÕJŽ��÷ꔃ�Êüö Íù4™­ Ú„î7ü¤C@ Base trait for random number generators and random data sourcesÁè�üìOL This trait provides a base interface designed to support efficient usage ofÁü¼MJ (`u32`, `u64`) word generators, block generators and random data sources.ÁüŠNK There is no required relationship between the output of each method or anyÁüÙOL requirement to use all generated random bits; for example an implementationÁü©PM of [`try_fill_bytes`](Self::try_fill_bytes) may discard some generated bytesÁüú41 to avoid storing a partially used word or block.Á¯�”³›ÜÆ�ÔÊ ### Quality and lengthÁå�üéLI Implementions should produce bits uniformly: each output value should beÁü¶HE equally likely, without observable patterns in successive outputs orÁüÿOL between the output streams of multiple instances of an implementation usingÁüÏGD different seeds or streams (where supported by the implementation).Á—�ü›LI Pathological implementations (e.g. constant or counting generators whichÁüèNK rarely change some bits) may cause issues in consumers of random data, forÁü·LI example dead-locks in rejection samplers and obviously non-random outputÁü„NK (e.g. a counting generator may result in apparently-constant output from aÁüÓ! uniform-ranged distribution).Áõ�üùNK Cryptographically unpredictable output is not a requirement of this trait,ÁüÈ-* but is a requirement of [`TryCryptoRng`].Áö�üúPM In practice, most implementations are pseudo-random number generators with aÁüË JG finite *period* or *cycle length*, and (among non-cryptographic PRNGs)Áü–!C@ statistical anomalies may appear long before a cycle occurs. AnÁüÚ!HE implementation should ensure its period is sufficiently long that noÁü£"LI anomalies are likely to appear in usage and/or document its limitations.Áð"�üô"NK For more on PRNG quality and period, see [The Rust Rand Book: Quality][0].ÁÃ#�üÇ#C@ [0]: https://rust-random.github.io/book/guide-rngs.html#qualityÁ‹$�¼�$ ### ReproducibilityÁ§$�ü«$LI Algorithmic generators implementing [`SeedableRng`] should normally haveÁüø$OL *portable, reproducible* output, i.e. fix Endianness when converting valuesÁüÈ%LI to avoid platform differences, and avoid making any changes which affectÁü•&KH output (except by communicating that the release has breaking changes).Áüá&63 See also [The Rust Rand Book: Reproducibility][1].Á˜'�üœ'=: [1]: https://rust-random.github.io/book/crate-reprod.htmlÁÚ'�\Þ'ŽÝê'�üî'GD Often, usage of the infallible trait [`Rng`] or its extension traitÁü¶(>; [`rand::RngExt`] is preferred to direct usage of `TryRng`.Áüø(ZW Many implementations of `TryRng` (those with type Error = [Infallible][])ÁüÓ)QN already implement [`Rng`]; in other cases [`UnwrapErr`] may be used to obtainÁü¥*! an implementation of [`Rng`].ÁÇ*�ÜË* # Implementing `TryRng`Áç*�üë*OL Most algorithmic generators (i.e. pseudo-random number generators or PRNGs)Áü»+PM never fail; in this case type `Error` should be [`Infallible`]; in this caseÁüŒ,JG trait `Rng` is implemented automatically. Cycling is not considered anÁT×, error.Áâ,�üæ,;8 Small PRNGs often yield either `u32` or `u64` natively.Áü¢-OL Module [`crate::utils`] provides utilities to help implement other methods.Áò-�üö-GD Byte sources may implement [`try_fill_bytes`](Self::try_fill_bytes)Ál¾. natively.ÁüÌ.OàŒœ/�ü /PM Block generators (which produce `[u32; N]` or `[u64; N]` for some fixed `N`)Áüñ/30 should make use of the [`crate::block`] module.Á¥0�ü©0! With regards to other traits:ÁË0�üÏ0LI - **Do not** implement [`Default`] for seedable pseudorandom generators,Áüœ1FC though the trait may be implemented for stateless interfaces andÁôã1 auto-seeding generators.Áü‚2PM - **Do** implement [`SeedableRng`] for seedable pseudorandom generators. SeeÁüÓ20- [Reproducibility](#reproducibility) above.Áü„3OL - Implement [`Clone`] for non-cryptographic PRNGs but consider not doing soÁüÔ3OL for cryptographic generators to avoid the risk of key-stream duplication.Áü¤4NK - **Do not** implement [`Copy`] since accidental copies may cause repeatedÁló4 values.Áü�5LI - Implement [`Debug`](core::fmt::Debug), except that cryptographic PRNGsÁüÎ5PM should use a custom implementation which avoids leaking internal state (orÁüŸ6/, the subset of this derived from the key).ÁüÏ6QN - [`Eq`] and [`PartialEq`] could be implemented, but are probably not useful.Á¡7�ü¥7HÜá4ø7��üºüî7”�üºüº"‘’“”‘’“”þÆ€Éü¡9�€É”­9˙ݙ“’”ô¡9ü…82/ The type returned in the event of a RNG error.Á¼8�üÄ8XU Use type [`Infallible`] (re-exported by `rand_core`) for infallible implementations.Á,¦9��üì97üÆ9!Åädï9ú úôÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw˜€ÉBÿ� ü9� ’ô$�:üÎ:7ü¨:!ÆådÑ:û ûôÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¡€ÉBÿ� Þ:� “ô$ã:ü¸;HüŠ;)& Fill `dst` entirely with random data.Át»;üý üô ýÂvÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwé€ÉBÿ� Ê;� ”ô$Ï;“ìÕ;ü„<;Ž––†Ä ‰<é"­DŒ<�ºŒ4¸<­—˜™š‘’“”˜š™NPTÆ<,Ë<••Ï�ü„=6d‡=þ þ­·ÁBÿ• ”=• ˜­$™=üþ=6d�>ÿ ÿ­î¿Bÿ• Ž>• ™­$“>üø>Gtû>€� €­ �ÂvåçBÿ• Š?• š­$�?“컈ôŠKüø?B? A marker trait over [`TryRng`] for securely unpredictable RNGsÁ»@�ü¿@LI This marker trait indicates that the implementing generator is intended,ÁüŒAKH when correctly seeded and protected from side-channel attacks such as aÁüØAOL leaking of state, to be a cryptographically secure generator. This trait isÁü¨BKH provided as a tool to aid review of cryptographic code, but does not byÁüôB@= itself guarantee suitability for cryptographic applications.ÁµC�ü¹CPM Formally, a CSPRNG (Cryptographically Secure Pseudo-Random Number Generator)ÁüŠDNK should satisfy an additional property over other generators: assuming thatÁüÙDKH the generator has been appropriately seeded and has unknown state, thenÁü¥E52 given the first *k* bits of an algorithm's outputÁüÛEKH sequence, it should not be possible using polynomial-time algorithms toÁü§FIF predict the next bit with probability significantly greater than 50%.ÁñF�üõFOL An optional property of CSPRNGs is backtracking resistance: if the CSPRNG'sÁüÅGMJ state is revealed, it will not be computationally-feasible to reconstructÁü“HFC prior output values. This property is not required by `CryptoRng`.ÁÚH�üÞHIF Implementors of `TryCryptoRng` should only implement [`Default`] if aÁü¨IJG default-constructed instance is itself a secure generator, for exampleÁüóI96 [`getrandom::SysRng`] which is a stateless interface.Á­J�ü±JXU [`getrandom::SysRng`]: https://docs.rs/getrandom/latest/getrandom/struct.SysRng.htmlÁd”K››üºüŠK!íÁ4¢K›üº#íÁ üº/íÁ,ü­KBŽ��†Ä ²K× DµK›ºŒdãK­!´ÂMüôKa^ DEPRECATED: stub trait to print a deprecation warning and aid discovering that [`Rng`] is theÁ„ÖL replacement.Á0.10.0Áuse `Rng` insteadÁœ¬Mü†M;<ÌM„²޲žžüºÌÂM³¿ÕMžüº"³¿ üº.³¿,ÔñMŽ  †Ä öM„­ùM­ääOü�Nda DEPRECATED: stub trait to print a deprecation warning and aid discovering that [`TryRng`] is theÁ„õNñ±„²use `TryRng` insteadÁ´ËOü¥O>TîO„²Ü´¡¡üºüäOXíÁ4úO¡üº#íÁ üº/íÁ,¢¢þÆ¢ôü›P�ï¶”§Pç¶€·ô›P|‡P Error type.Á, P„²Ü´Õ¡¡üÒP ޤ¤†Ä ×PÝù4ÚP­¥¢TùP,þP££à³üô!üñ/, RNG functionality for a block [`Generator`]Á¡�ü¥LI This type encompasses a [`Generator`] [`core`](Self::core) and a buffer.ÁüòLI It provides optimized implementations of methods required by an [`Rng`].Á¿�üÃNK All values are consumed in-order of generation. No whole words (e.g. `u32`Áü’NK or `u64`) are discarded, though where a word is partially used (e.g. for aÁüáNK byte-fill whose length is not a multiple of the word size) the rest of theÁ´° word is discarded.ÁÇ�¼Ë [`Rng`]: crate::RngÁDÿƒ§§—Á ˆ§ÁL‹§R+—ìt?† ¨©)+”œ<œ¦¦Û\þü´EB The *core* part of the RNG, implementing the `generate` function.Á$‚¦¦ÝO  ƒ««—Áڅ݈§Áè…ÛO §¬†¬O O Í Í§§Bÿªìª ¬ÝO ¯–ü0QN Wrapper around [`TryRng`] implementation which implements [`Rng`][crate::Rng]Áü‚%" by panicking on potential errors.Á¨�t¬ # ExamplesÁ»�\¿ ```rustÁüË.+ # use rand_core::{UnwrapErr, TryRng, Rng};Áüú,) fn with_try_rng(mut rng: R) {Áü§! // rng does not impl Rng:ÁüÉ+( let _ = rng.try_next_u32(); // okayÁüõ+( // let _ = rng.next_u32(); // errorÁ¡�ü¥$! // An adapter borrowing rng:ÁüÊ/, let _ = UnwrapErr(&mut rng).next_u32();Áú�üþ! // An adapter moving rng:Áü %" let mut rng = UnwrapErr(rng);ÁüÆ let _ = rng.next_u32();Á,æïªì�üðC@ fn call_with_unsized_try_rng(rng: &mut R) {Áü´1. // R is unsized, thus we must use &mut R:Áüæ%§ÄüŒÖÄ,¬ïª<²ͨL�ް°†Ä ‹Ýù4ŽþøÈ}Pçûª¯±­þBÿ­šT­þBÿ®® ¯­km,–®®­,¨Ž³³†Ä±Ÿg­‹Ýù¿þ´ g´×Ù,¨,¨åæç åþ æ€g€gŠ‚gê ûcƒg‹ûcØ«q¢1È¡çàBÿ²Ã² ´­,¨œ,¨-©Ž¶¶†Ä·ö­‹ÝùÆþ·÷·ßâ-©-©þBÿµµ ·­Ø©Ž¹¹†ÄH…­‹ÝùWþº†ºpsةةè èþþBÿ¸Ó¸ º­Ø© ÚŽ¼¼†Ä÷ù ­‹ÝùþsªŽ¾¾†ÄEÌ­‹ÝùTþ¿Î¿mpsªsªsªsªé éþéBÿ½à½ ¿­sª4«ŽÁÁ†Ä÷±­­‹Ýù"þ034«ŽÃÆÄa�ÐGÝùfþÄù±Ä€ƒ4«4«êë êþ ëþBÿÂä ĭ4«î 4«Ô«ŽÆÆ†Äûh­‹Ýù+þÇühÇDGÔ«Ô«ìí ìþ íÆØéBÿÅÿÈÈïÅþÆÆØÔ«ƒiÆØÔ« Ç­ÆØÔ«ƒÔ«Ô«Ô«¸Šì Óì  ‰ì »ì  ì  ˆì ¾ì LÈì ˆì …ì „ì ¿ƒì ‡�ì s€ì ‡~ì ý}ì ó|ì è{ì �Bì ¡mì økì ­jì þhì †Mì NLì áJì ­Iì QIì 9ì ?ì ,¨ì ì òì òì øì (ì .ì ÕGì 4Gì ‚Fì ¡ ì Í7ì R7ì Á5ì Æì û4ì «4ì I4ì Éì µì ì ì Ú;ì 0ì Þì {ì š?ì &+d¥ MIT licenseÁ"http://opensource.org/licenses/MITÁ2https://docs.rs/rand/latest/rand/trait.RngExt.htmlÁcore::fmt::DebugÁ¢g core::fmtÁgetrandom::SysRngÁrandÁó å �Apache License, Version 2.0Á�*http://www.apache.org/licenses/LICENSE-2.0ÁØÕ�Öcore::convert::InfallibleÁ¸ÄûReproducibilityÁÆÖáÖûcó „¶Ëhttps://docs.rs/randÁ�×�Â× rand::RngExtÁ�Öû crate::utilsÁ¦ØÆÖŸgWhttps://github.com/rust-random/rand_core/actions/workflows/test.yml?query=branch:masterÁ¶àØ�×https://docs.rs/rand/ÁŠÙe‰4https://rust-random.github.io/book/crate-reprod.htmlÁªÙ¦Øê rø Build StatusÁÌÙàØTryRng#RequirementsÁ¹ÚŠÙ¶÷±#The Rust Rand Book: ReproducibilityÁãÚ’ê ªÙ2req¢g~ÏApache2/MIT licensedÁ·ÛÌÙÔÛ¹Ú¾ 2https://rust-random.github.io/book/guide-rngs.htmlÁƒÜ’ãÚê ®röe…q~https://docs.rs/rand_coreÁåÜ·ÛÔÛThe Rust Rand Book: QualityÁ›Ý¾ ƒÜ’Goú q~ÌDocsÁ‹ÞåÜ;https://img.shields.io/badge/license-Apache2.0/MIT-blue.svgÁSelf::try_fill_bytesÁ¾ ›»Þ›Ýo"https://crates.io/crates/rand_coreÁ”ß‹Þ#https://docs.rs/rand_core/badge.svgÁ©ß Rng::next_u64Áéß»Þ=https://docs.rs/getrandom/latest/getrandom/struct.SysRng.htmlÁoù œà”ß-https://img.shields.io/crates/v/rand_core.svgÁÏà Rng::next_u32Á©ßýà†éß¹“›áœà[https://github.com/rust-random/rand_core/actions/workflows/test.yml/badge.svg?branch=masterÁòáÏàRng::fill_bytesÁªâ…ý๓Ÿ crate::blockÁ getrandomÁ›áèÕåâòá core::convertÁÑ㇪⟹“¸Ä�äïÖ’ä…×å ØÕèÕåâý×¼äÑãŸ�äáÖïÖ’ä…×ó å û�Â×ý×¼äò6±DropÁ€#rand_core::blockÁSelf::remaining_resultsÁ�ä Self::OutputÁBlockRng::next_wordÁ crate::TryRngÁ� Self::coreÁó å ¤ crate::SeedableRngÁ rand_coreÁû crate::RngÁ´æ±‘æŸæ�äÖæçæ–çÿæ¤ ¦´çå Ëçûó ±æç´æ‘æŸæ�äÖæçæÿæ´çG¤ å Ëçû–çó æç„$"Does It Beat the Minimal Standard?Á¥ ;Ghttps://www.pcg-random.org/posts/does-it-beat-the-minimal-standard.htmlÁ·å �´çÕ’SeedableRng::SeedÁcrate::SeedableRng::SeedÁ HÌ¥ÚéŠê·´çå ùê’ÕÌ >�ëÚéŠê¥· 5´çGå Ì’Õ 7ùê�ëÓàØSeedableRng::from_rngÁ’röSeedableRng::forkÁOàØÓÕì’ýìràØÓÕìK’Gýìrø æçå æç„ó å ó å �æçó jŠP³¯¿´´ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²�jŠP³¯¿´´ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²„�GŠP³¯¿´´ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²›�ŠP³¯¿´´ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²é"G„��›ž¡ŠP³¯¿´´ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²BlockRngcoreassertion failed: n < Nƒÿƒÿ UnwrapErr +(rand_core::UnwrapErr: failed to unwrap: À+àòïòúò˜ó§ó¶óÆó*L>#{Nè$à_˜ËߚŸÆÚZyO&òƾ(‘ð­:)‘ºz³5õ¹tw†i�O|p/Ý ï�Å‘é?fs�›Ý!$¹Û7<Ì�ú ޶ßäu.ïÔÓ�èöŽ\ RYs*x…³!ÛYë�ƒ4|‡œâ2ÛI¥¡…í–ûwbË 3‘(ã_áVf`ø�?êY’ö~³²¹Âq£ÏÈÓ‘"á�ŒÖxSÕ†+¨Bà÷!g}Uf9ÖÄyópÒµ¯ÂVýF>?x ¼}ñ\¯ñÀ]=(_ñ0£šêÑ"ôè�ŒB©¶+ÜľÁS™M>Žl ~Âêg\Ò*vvÐßñÖNÏ|^ø×ŽJL�lNßÙ^öš»ÃNs*'ÎóÀâ†V¡PͦœMBAÂþC¼™à¢¿Ô߈ÿô©,‰WÍHÙb˜õ†I(ö ç+•_¤í˶š§sÁ:éî”�¯§`Q±uF�±¶">6‰»öÉ@ˆ &hÈSXy.’1j‰ì� T°ºœv-eôÃ}_+ŠÿènR6ݤóúÝp†‹dþÆL*„�O`ŒJ ¼èü]I)s?•3xMö\Š”kW¹“¹2&ô\9™ƒ«Ód™¼½h`´M`f5Ù;¨åëÊõÞÛ3}éV¯öðò�q5•�o!ë†ä”îLpPàFž&\) Ïv‡v' ~/¸|¶•…ÁX5´…¸ëRiŠDŸ…ǘ+� Ž·`MzxÉÒÕÛs7V÷Üÿ@Þoc,üHTP0ê?À EynS^ú:e…•ؽä*t†á;ö#cÀè›¶Ë(Xìp`Í’­É¶£hBZÕ8ɤ)X·mcÙºäÐÁ�“Tn¬ÀKŸå•â/_Ò ZæΆ[¾:c„ëð’$Н¤‡E±<ö#ÖÏwC9MÔ¼ @ýÆè$\}qÛè^·¶äÉø¹ †=¹äloÔ3ƒaL%q¥GüÆ®=¹k%•ö¤½xNe2f‹O�Õ!^W\]çÏK³�s�™œžß~9¶!ŽüíïÈ‚MωƒwX²Ì¿‚a!>oI’íIÀa†2¼;šÈ3½n:©…OÑÙC–q¡“; ™H.š™¯Å‘-Ñ!qjê�³6ûXo憦@#A8]F™o¦å0³RWPÌ>o~w% ¦ñ*FS|(ýúÏ«†Là²ó¸± ÂÌE±RÑ ’ú³Ñêȧ룫ÖU»{ñ¬èºîOŒ•`J  9ã»RM_/.C1Y€lD½Ýn¡&€°¯fÁ¸à0+èèÐWÞív/ÈsÏ`^¥a ìÌw>S…yþ ¥va]ŒO9jм¶ëGF ©;ÌåJÖ=ùÎûëïh¹Ì9öÔu�Í"ÏŒÎX¨€¤ãî‚�|c`v´TTɼo×Í¿EA±¬ô}’!o" ÞíïòwCTãq„¬ÅäóYWòâ7Â$q;·Y®þy(âñÛ.wÄ謳W×D›GÛ/äÒõ0,w#TëÏ,õ� 9áÊy•_ÅZøûC…¥»¨¤½àöT€§®lRF“Ý22¨×꘾dOzƒ ¤¥¸�ŸYp«�¼ùõé87f›k¥¬ù©ëÛζÀ4Í�G­<{}vžƒMÒÆIš«ÿ€Ê fek^€uêó@>Yq:vô ôHÇXɘ=­²1 ΚQKÊKÉ9§!¹cìd·*Çš}]/�ºIù“SÑžBþñCÆ[8`ƒáRx"†ˆý/<ãJ™•}Š¿JNõ­y3 ʈ ÌÒ†KNù½Æ)û` ¨“­/Ñš{Ù„µaŃÕýjpÅž%T66kÇõu ,‹ Z¶EöWG tìF÷†(d0?@ჲ'IÏ&Ã2Q8¼ýìÁÀ×ÿ NÒí³Z'‡—VÍ9 PCåLûîâ,ºX,\£uËò؃BÍñ×Ñi£y@ƒ £-4� È�ý´“Í�ØãA/+˜üÜ÷‘èL\Ñ{ûãä¸ ‹Ç§£÷ä0#¿¿‹Çë"îQO.UìÒh7×õ8,>ùÄô}Å„�*™»ý),| º5•¦ÕæPÛRgVá> @IegÖÏ€ M4aš¤ÞX´›é  Ñî*¨aï]ÉìjY%Vt¦mýQ½û‹€:“È´ŸM¬°@Eƒ•kÐÊèÌ9º‘Ë”¤w(ý¦b±|´¯[°Cú�¹„ ~œ>ð>,è 3 ÓîÞ¾ÂÄŽ*Ü‘¿æNz|ظ7Z\åð¼vÄq‹>@¤/ïôâå •xìÐN°)ŠŠm Úø\ºó˜›¥ðu{ŒöNZi‹ºEÏjÓ¡,n7$3ÖM°ËSœN†±–7•¥Œ ;sØfÁØ€Äîl1—®Ø?>•‘˜Þ,rU¢N°ÝÕÆ»òø}Tàˆ{*³„í š~×0Egç¦S‚³­ ˨uþõ•—™zßµ…ì·‚_5«÷öhŸ5r†™Æú0 M.g2 €û—6°šó? ´¯äo¾�aK”±Aš&ÕÀv[x‹à;×册:ãU˜ºå…W]m uYð5Ý?þììÛ+Jà)¯°âýó÷M‡¥y¡PÆw¡Ê®AǨ6„h�¨A'µBZ6“ ¯1ݯ)JLæZAÝe)lL[Ý”ô'Å(ö1Ñ7-LXwYÉZ$Ýš(é(2é73LXƒYÕZÐjÔjØÐ�܈ûQ!ÊKÑOÑVÑ]KѭܹܳÜTÝüÝÛÞÿßaàáVáªárâGãÄäYå¹å" æ`èséeëõëtìíŽíîeYî¯ûµû¼û�ü³þ¯ÿGxz~„ C3K šÉöTŽ ê þ !]!_!c!g!n!Ò!ë!™"@#$}$À$H%0'='("(3(A(“)©)í)/*p*°*æ*+S+�+Ì+,A,i,®,ë,(-d-k-s-:2»2=3Ý4P5¦5ý5m68OY8ŒLNMN¾NµO1PLP¤PüPlQ/X|X”YØY [][¡[¼ [i^ƒ^ê^O_£_êcdUde_e—eðeFf”fíf^g°ghkhÄhÇ Ð~Ü*Ý„ûO !8' (;( )289L)X�YáZ-ÝEà;áFâ&åWìdí§Ÿ!­$+% ((.()¼*, 258;8AL÷O)XjX�YÆYãZˆ[R^1_”c9dAeÒe�fÏf�gág¦h                                '          ÆÐ}ÜæÜê݆ޫßyànáãtäqåÑåè,éë®ë¿ì¾íƒûü©ý ÿÂM^9 àpI† B ¦ î !!Ö!"±"X#$˜&6'¸'9(G(—)Á)*G*ˆ*ê*&+k+¨+ä+E,�,Æ,-@-¨1}2þ2„4h5¾567úK:MtM,N O5PdP¼PQ×W1Y‚Z<[¥[^m^Ö^f_Qc·cìcldvef!ghÛh ÊBÑHÑKÑRÑYѩܯܵÜPÝ÷ÝÖÞúßOà\à áEáRá¥áKâXâ`âmâBã¿ä3å@åHåUå´åæ[èné`ëðëZìbìoìýìgítí|í‰íîaî«û±û·ûzü‰ü‡þ”þ¡þ®þ�ÿ�ÿªÿ.;Cux|€>F •µÄâñO‰ × æ ú !Z!]!a!e!i!Á!Î!æ!”";#û#k$x$®$»$.%4%C%&',':' ((/(<(Ž)¤)è)**l*¬*â*ú* +N+‹+È+,=,U,d,©,æ,$-`-g-n-62·283Ø4=5L5¢5ø5h68<8K8ˆLIMN¹N°O P-PGPŸP÷PhQ*XkXxX�YÇYÔY[X[�[�[·[X^e^^ç^=_L_ _žcÙcæcýcEdRdeMe\e”eÞeíeAf‚f‘fÛfêf[gžg­gîgýghh²hÁhaipivi}iƒiŠi�i–i�i¤iªi°i¶i¼iÂiÈiÎiÔiÚiàiçiíióiùiÿij jjjj#j)j/j5j;jAjGjMjSjYj_jejljrjxj~j…j‹j‘j—jžj¤jªj°j·j½jÃjÉjEÑOÑVÑyܭܳÜâÜæÝnÞ“ßQàaàGáVáMâZâbâûâ\ä5åBåJåYå¹åøçéüê–ë\ìdì§ìiíví~í¦íû¯ûµûü~ü‘ý‰þ–þ£þòþ’ÿŸÿª0=Iz~Z5 ÈX1¹næñ* Ž ê þ !_!c!g!Ã!Ò!ë!™"@#$m$°$2%8%€&*'2'´'5(C(“)©)í)/*p*æ*+S+�+Ì+A,i,®,ë,(-d-k-¤1e2æ2l4A5P5¦5ý5{7@8öK6M\MNñN"P1PLP¤PüPÓWmX-YÉY~Z8[’[¡[^Z^i^Ò^@_O_Mc¡cÛcêcGdUdPe_eáeðe…fÞf g¡gñghµhÄhdisizi€i‡i�i“iši¡i§i­i³i¹i¿iÅiËiÑi×iÝiäiêiðiöiüijjjjj j&j,j2j8j>jDjJjPjVj\jbjijojuj{j‚jˆjŽj”j›j¡j§j­j´jºjÀjÆjÍj2YƒZ=[ùÜóݼÞáßàYàôà'áOá“áØáUâjâ'ã�äòä=åRå™åûå9èSéEëÕëìlìåì0íqí†íöíZîJü†üùý‘þžþ«þJÿšÿ§ÿÿ8qB ó‚}Á»î.h Ê á ö  !ƒ!Ë!ß!‚")#á#8$u$’$¸$à$@%ö&Ë'(*(Z( )Ô)*Y*š*¸*ó*+>+}+¹+õ+,N,_,™,Ø,-Q-½1£2$3»4ô4I5Ž5ä5L6”78H8LDMíM¥N“OÌO*P?P‹PãPLQìWFXuXSY«YÑY¤ZS[t[š[¯[)^b^x^à^_I_�_hcÊcãcöcdOdédeYe‡e°eêe.f_fŽf­fçfHgwgªgÉgúgNh„h¾h$imiçÜëݰÞÕßàSàèàáIá‡á¬áOâdâã‘äÆä7åLå�åïå-èGé9ëÉë÷ëfìÙìíkí€íêí1î3ü€üÈý‹þ˜þ¥þ&ÿ”ÿ¡ÿÜ2_: ëzd»¢è"\ À Û ð !p!Å!×!v"#Õ#%$o$$²$Â$:%ã&¹'($(H(˜)Ì)*Q*’*²*ë*þ*6+u+±+í+ ,F,Y,‘,Ð, -I-©1–23®4ß4C5�5×5?6€7 8B8ûK;MàM˜N†O·O$P6P~PÖP?QØW1XoX?Y–YËY�ZJ[_[”[¦[^\^o^×^î^C__ScÁcÝcícdIdÛd eSe~e›eäe fJfˆf˜fáf:gbg¤g´gôg@hoh¸higiÀÞåßCàøà9á—áDâ^â+ã¡ä$åFå�åÿå=èWéIëÙëUì`ìéìbízíúí^îkügþ}ÿA÷†¢ÏA{ Ì ã ø  !�!ã!†"-#å#[$«$ò$ '(,(Ø)*]*ž*º*÷*+B+�+½+ù+,R,a,�,Ü,-U-¨2)3À45“5é5Q698òMªN˜OõODP�PèPQQhXÄY†[´[;^}^å^/_’_zcÑcûc7dîd?eŒeÐe3ffÍfMg›gßgSh¤hHi‡Þ¬ßzàoáãuäsåÓåè-éë¯ëÀì¿íüªý ÿÃáqJ‡ C ¨ "²"Y#$™&Â)*H*‰*'+l+©+å+‚,Ç,-A-~2ÿ2…4i5¿56uM-N OeP½PQ^g_Rc¸cmdwef"ghÜhˆÞ­ß{àpáãxävåÖåè0éë²ëÂìÂíü­ý ÿÅârL‰ D ¨ "³"Z#$œ&Ã)*I*Š*'+l+©+å+‚,Ç,-A-23†4j5À56vM.N OfP¾PQh_–c¹cndxe f#ghÞhrÞ—ßeàZáÿâ`ä]å½åüçéëšë«ìªíîü•ýöþ®Ì\5rõ. ’ ï!�"D#$„&­)ñ)3*t*+W+”+Ð+m,²,ï,,-i2ê2p4T5ª56`MNõNPP¨PQR_£cXdbeóe ghÇhe o   & / 8 B L V ` j " y µ ¿ É Ó Ý è ö Ý[àQáWâlâ?åTånìsíˆíˆü“þ þ­þœÿ©ÿ:ƒÃðÍ!w$º$B%ã'´(ä1K5¿7J8L,PÿWwXeYÓY·Zœ[d^K_åcQd[eìe�féf¬gügÀhoiB  ýà(+K™k G"W&Ž*ý5�V‡XNbáw!~}м›º�ã¢b£<¤Z¬¯Ÿ±#´ºæº›»,¼®½´¾r¿ À…ÁŠÂŠÃŠÄpŠƸǼ æ§©�©]ª¯ª”«ïÈ‚§–§¾§Òº ¾º ûÞ&)I—i E"U&Œ*û5V…XLbßw~Šº›¸�á¢`£:¤€§¯�±!´ºÐº™»*¼¬½ž¾p¿ÀƒÁˆÂˆÃˆÄnŞƶÇíÈ ÿ¨Ž©[ª­ª’«X¬» üß'*J˜j F"V&�*ü5€V†XMbàw ~Š»›¹�â¢a£;¤�§¯ž±"´ºÑºš»+¼­½Ÿ¾q¿À„Á‰Â‰Ã‰ÄoÅŸÆ·ÇîÈ @É©�©\ª®ª“«Y¬Ïc�§£§Ë§ßº­¾“§§§Ï§ãº±¾ÇÞìßÿàžá;ã±ä­åæMègéYëéëöì îrüwþˆÿ&ú�­ÚH‚ Ð �"4#ì#c$'ß)#*d*¥*F+…+Á+ý+¡,à,-Z-°213È4›5ñ5Y6úM²N O˜PðPYQš_öd”e;fUg[hTiV^Ý„ä'µ(å1À7LXfY¸ZÄÐwÜàÜÿßáªáÄäõëí}ûGX!n!}$À$0'²'("(3(A(°*,¢1Ý4y78ôKµOÑW/X+Y”Y|Z][ ^ì^Kcde™eHf–f`g²gmhJ^‰c=^|cˆ‹’–šž¥©­½ÄÓÚÞåìð÷þ "&8<@GNUY`p…—¯¿ÃÊÑÕíñøÿ +/3JQpw~¡ºÁÈÙàçëï  +;O^exŠ™¥©³½ÎÒÖÚÞâéõ0@^bimv}†�𥩭ºÇÓçù '.5<@GKRY`gkoy‰™¡¥­µ½ÅÕÙáîöþ"*2:MQYgks„Œ�˜ ¯·ÆÎÒÚâæöû #+26>FJRV^fjrv~†Š’𢍮´ºÁÇÍÓÙßåëñ÷ý !'-39?EKRY`gnu|ƒŠ�–œ¢©°·¾ÅÌÓÚáèïöý M^Œc0ÝGÝHÝFà<áHâIâ,å-å.å/å0å1åXìeí®%&'()*£!¨!­!²!,%)})~))€)Á*Å*É*Í*Ñ*,,",&,*,&2'2(2!5&5+5ILxLyLzLÿOP PPåZŠ[3_;dCeÔeÑfãg¨hAÉFÉHÉJÉLÉNÉNÉPÉRÉRÉRÉTÉTÉWÉXÉYÉZÉ[É]É]É^É^É^ÉiÉkÉmÉoÉqÉsÉuÉwÉwÉwÉyÉ{É{É{É{É{É|É|É|ÉDÉ`ÉbÉcÉeÉgÉgÉÕj sØtHvävâ(x/"wš"w#xu"xå +c,IÝKàAáJâ2åYìfí+·!­$-% ((.(�)Õ*.,)2058;8{LP)XjX�YÆY[�[8_@dHeÙe�fÖf�gég­h)š™ê²Ÿ·/Ò 5%(+›ì². ·1çË 496Ø $'†¾¥Á·  º *0ä þ»ù#&ì ì $crate::panic::panic_2021Á øÇ 7¥Â`panic_internalsÁÏ¢[ˆZ*L>#{NèÌ`â^“Ù É„ã…ÿ‚]´œ*L>#{Nè&H‘k²V[: Ý!ì úûè*L>#{NèV~T~²?<ì *L>#{Nè¡þªšDóo� ¿6ì úûè*L>#{NèTM§T’É$crate::assertÁɇT]�±ù]core_intrinsicsÁ•Öƒgeneric_assert_internalsÁ±œ*L>#{NèßM+‡ q,Ã}©Ø šØfmt_helpers_for_deriveÁ¢g¡g*L>#{NèÉžÒÕ½yÙ.t]ì úûè*L>#{Nè{ÈC)Úo$Úu‚‚´šØderive_clone_copy_internalsÁú Ì *L>#{Nè—D"j/H�¸7jì úûè*L>#{NèQK„uÁ‘¼‘$ïuÔ=‰šØ�i€i*L>#{Nè%…N +ÐÅ ¡ì úûè*L>#{Nèóƒv6ä’NôähÅŽñ]©œ*L>#{NèMp[ÏîCò¼{ì úûè*L>#{Nè½U¬ê´ûDÇÚtø0šØ•Öƒ³Ø±œ*L>#{Nè1úJ+0Òü–&Yì *L>#{NèÍ‹¬Qt¢Éüº;@´œ*L>#{NèÒܨÇÎôN|!¡ì úûè*L>#{Nèþ²fYmyÊ5 Øì úûè*L>#{Nè&ÚUt1[ÈI$crate::assert_eqÁá ò[]µŽ ]•Ö�‹*L>#{Nèg™ºømå¸ge,Ó}”V¯šØýÙð‰â*L>#{Nè¶·$BmͧµüÈ{ì *L>#{Nèaf �ÅÜʶLä�ÀO_šØ¢Ë¾*L>#{Nè‰x)£sŒ��Klì úûè*L>#{Nèã:,MU»Tì ì Ü *L>#{NèÈÃìLy8]µ$crate::const_format_argsÁùŽ"`õÄ–] fmt_internalsÁfmt_arguments_from_strÁŸœ*L>#{NèË9}­tõÚ¡üµ%½ì *L>#{Nè¦S¼*Mm1Ûü¢$1¼•Ö�‹*L>#{Nèìñ =H©¬þe,캚ØýÙð‰â*L>#{NèúÁbà³:—ˆ %´ì ñà�á*L>#{NèÁ¹s A÷ÎÑ $crate::cfgÁñ Å[]…‘Š]¬œ*L>#{NèÖ{(Õ‹ˆÎj[ì úûè*L>#{Nè¤Ä6‚;¿c¾r<Ê�ÄlšØøô*L>#{NèçbT”ªÞÍd „ì úûè*L>#{NèÃGêÚ,¥µÐ~àeöi_šØderive_eq_internalsÁ¢ŒÏ¾*L>#{Nè)=æüÑvû4 €ì úûè*L>#{NèDan:ã÷ï%å² æ²ö üÇ 7•Ú]ƒŒ‹*L>#{Nè&_]›‚<   debug_assertÁü×+&ÍœS]ƒ‘‹*L>#{Nè]žnkXâWOdebug_assert_eqÁüºJ*å„[]’‹*L>#{Nèñïá…sâ¼ò©êâé}êÎò†êêÀòê êKêê¶ê\êêºêdêêÒòíé’êê²êXêê¾ê`ê êÙéŠê$ê/ê÷éŽê9êGê êÊòOêûé›êxê­êhê�êñé¤ê3ê=êsêÄòæéÖò(ê–êBêÝémêSêÂêðÇíFëó#îPóÜð…îÜòñõëtñïjìÞñUïäì?òµïdíæê@ð¤ë±ñàî·ìò�ï7íŽòìï™íöívë¶ð`î³îÇëGñÖê0ðæífë@óPîóÿð£îó7ñZì¡ñEï§ìò€ï'í~òÜï‰í6ë¦ð·ëÎñþîÔì/ò¥ïTí¬ò ð·íî”ëÌðuîÐîåëdñ°4ODHT ·Þô}Å„�*˭ɶ£hBZT…¥»¨¤½à˜Mö\Š”kW<ì� T°º5ö¤½xNe2c€¤ãî‚�‰ ,‹ Z¶E¶=­²1 ΚQ¦|p/Ý *³„í š~×î>?x ¼Þív/Ès€ýìÁÀ×» ÌÒ†KN°!qjê�³oöT€§®l™ØfÁØ€Äé•_ÅZøûC—â,ºX,¿@ýÆè$\}]³W×D›“òø}Tàˆ{íÆw¡Ê®Aÿ¿‹Çë"îQÈ„ëð’$НZÉ@ˆ &hÈS3òƾ(‘ðÕ8ɤ)X·mU RYs*x…³ •ؽä*tP™»ý),|ÌìÐN°)ŠŠm⹓¹2&ô\=Nõ­y3 ʈ¯,n7$3ÖM°æ÷öhŸ5r†™ó €û—6°šõÛ7<Ì�ú ¤‡E±<ö#Ö[~œ>ð>,è ÛBþñCÆ[«oI’íIÀa†já> @IegÏͦœMBAÂ%ÏwC9MÔ¼ \ÿ NÒí³¼”îLpPàFDËSœN†±–çÆú0 M.g2ôc,üHTP0êM¶•…ÁX5´GÅäóYW�]m uYð5ÝûæΆ[¾:cY&ÕÀv[x‹ø@#A8]F™oq ¥va]ŒOƒå•â/_Ò ZX fek^€uê£WÍHÙb˜õ(†(d0?¸ ~Âêg\Ò*+ŠÿènR6Ý76ûXo憦p¤óúÝp†‹d8š»ÃNs*'Î#öWG tìF÷·§`Q±uF�1ñÛ.wÄ謒Nz|ظ7ÞA±¬ô}’!ŒãJ™•}Š¿J®@ჲ'I¹óÀâ†V¡P$Éø¹ †=¹_à;×册:ãùÍ"ÏŒÎX¨ˆ¥ðu{ŒöNZä7•¥Œ ;sèû‹€:“È´ŸÕ º5•¦ÕæÍZ'‡—VÍ9½îl1—®Ø?êõ•—™zßñO`ŒJ ¼èü:I¥¡…íƒ ¤¥¸�ŸœJà)¯°âýý¦å0³RWPr|c`v´TTÉŠ¦b±|´¯[ÙOÝŠ>¶š§/� Ž·`MzJqÛè^·¶ä^­:)‘ºz³5Z\åð¼vÄqßÓd™¼½h`´?¨×꘾dOz›pÒµ¯ÂVýFó¸± ÂÌEv©¶+Üľòâ7Â$q;�ô ôHÇXɘ¥–ûwbË 3‘w#TëÏ,õ•i‹ºEÏjÓ¡åO.UìÒh7×ÉUf9ÖÄyóÏ|^ø×ŽJ!RF“Ý22šš¤ÞX´›Ñ�™œžß~9¶f ޶ßäu. ÈÓ‘"á�4|‡œâ2ÛþC¼™à¢¿&cÙºäÐÁ�V PCåLûî¾8`ƒáRx¬>•‘˜Þ,rUëüÜ÷‘èL\ÑÅïÔÓ�èöŽ\ êÑ"ôè�ŒBà0+èèÐWaï]ÉìjY%Ó÷'¢qí#â-é  Ñî*¨Ò3 ÓîÞ¾ÜsÁ:éî”�¯0V¯öðò�qB\£uËò؃BÀ}ñ\¯ñÀ]=(_ñ0£š?þììÛ+ünS^ú:e…Où½Æ)û` ¨±ÆIš«ÿ€Ê¢7V÷Üÿ@ÞoLäloÔ3`¥¬ù©ëÛΟ!ŽüíïÈgVt¦mýQ½ÔU˜ºå…Wú›¶Ë(R…¸ëRHwCTãq„¬Ž³Ñêȧë£xs�›Ý!$¹Yp«�¼ù�$à_˜Ë߀°¯fÁ¸~ØãA/+˜Ä?À EyNqZG�Ä+KÊKÉ9§§q¡“; ™H.m5•�o!ë†äC*L>#{Nè†á;ö#cÀèQƒaL%q¥Gaž&\) ÏvEþÆL*„�9š}]/�º©“­/Ѳ_/.C1Y€l|Ï&Ã2Q8¼º§£÷ä0#¿Çƒ £-4� È‹>@¤/ïôà±¶">6‰»ö2'µBZ6“ ¯ÁS™M>Žl]I)s?•3x;M¬°@Eƒ•Ö\]çÏK³�seúÏ«†Là²uÖÏ€ M4aÐìÌw>S…yþ‚ó@>Yq:v¤šŸÆÚZyO&Xìp`Í’S!¹cìd·*Ǩõé87f›kžPÛRgVÎǨ6„h�¨Ao�D~iÕ².Íñ×Ñi£y@Á%T66kÇõuµD½Ýn¡&}ÕýjpÅž´Ì>o~w% ¦sŒÖxSÕ†«ÖU»{ñ¬èyñ*FS|(ýt‡v' ~/¸|FÏ`^¥a �âå •xá²Ì¿‚a!>iF]؃YKö,9™ƒ«>iŠDŸ…ǘ+Iõ¹tw†i�Oµ…ì·‚_5«ò‚MωƒwXhºîOŒ•`JzXy.’1j‰4Iù“SÑžª¾�aK”±Aš÷!ÛYë�ƒ ¶À4Í�G­< {}vžƒMÒ¡‘Ë”¤w(ýØó÷M‡¥y¡Pþ0Egç¦S‚ï³­ ˨uþðó? ´¯äoöš{Ù„µaѳ9jм¶ëG„{ûãä¸ ‹ÇÆüÆ®=¹k%•b°Cú�¹„ Ú Úø\ºó˜›ã“Tn¬ÀKŸW~³²¹Âq£Ïš™¯Å‘-Ñn2¼;šÈ3½nkF ©;ÌåJÖ…�ý´“Í�ÃkÐÊèÌ9º×:©…OÑÙC–lxÉÒÕÛsK±RÑ ’úw¹Ì9öÔu�‡f‹O�Õ!^WdGÛ/äÒõ0,”¼o×Í¿E‹M`f5Ù;¨å@ëÊõÞÛ3}éAÂÄŽ*Ü‘¿æÝ¢N°ÝÕÆ»ìvvÐßñÖN L�lNßÙ^ö"(ã_áVf� 9áÊy–  9ã»RM{ï�Å‘é?f`ø�?êY’ö•_¤íËùÄÊ=ùÎûëïh†"†ˆý/<­·Y®þy(â‘ÿÿÿ-p+]F"(k^ 'ÿYÿÿ6ÿÿbÿ!>M= ÿ ÿÿ)ÿx6Y:6ÿÿÿÿ.DXLMÿÿÿÿÿ}kÿÿÿÿ-ÿÿÿÿÿC3ÿÿaYKÿuÿÿÿZ+n17 -uÿzÿÿÿÿÿÿÿÿÿnS2ÿÿg{HÿVÿÿÿÿ%ÿÿÿÿ$ÿÿ(\qÿÿÿT-9ÿÿÿÿOÿsÿÿÿÿÿÿÿ~vÿÿÿOÿÿÿÿÿÿÿÿÿ~ÿÿÿ(d-S=rÿÿ8Z=ÿÿÿ# _ÿLÿÿÿHÿÿÿPÿkÿÿÿy%ÿÿÿÿÿM[Gm_Gw<*h.!+q _W8!MÿÿÿÿBTÿÿÿe7ÿÿÿgd^+ÿÿÿÿÿÿÿ)ÿVQ\|o\L<ÿbSÿÿrÿtt#ÿÿÿ;Fÿÿÿÿ] 6^_d{Wÿÿÿÿÿÿ6<ÿ{U'Uÿ,ÿÿ%ÿÿÿÿÿDOMÿÿÿÿÿÿÿÿiÿÿÿÿ~(ÿÿÿÿÿÿÿÿÿÿÿÿ7A ÿcJMÿÿÿÿÿgÿÿhÿÿ7ÿÿÿk]ÿÿK9} +"ÿrÿts]ÿ'{3<&ÿÿÿÿÿ3{ÿÿ&yÿÿÿÿÿ/D>ÿbÿ4ÿqÿÿÿÿ-p+]F"(k^ X/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/block.rsÁK/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1ÁX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/block.rsÁ ¨Ûp1só*d¬7âv§JÎKÎK´-N=OLMON#/1# <.# *+!1#=' !@# @+ S) 9+1.(d*27#J140MMOOO$JO#=%'%*+UB=)-'#@I%;K-)5A/- K.NM%,00BHLNL1 /FK)"+5KJB,.",'&3 )#D.1"&*#&3"& #.K4&&72F8<+_!+,J8(P @ ’¬�‘¨‚,ú%gÜQ�©­W/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/word.rsÁK/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1ÁW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/word.rsÁ `L„ÐJ+IüåC&�#ªd� � B/+" 6PA6-+&7' .$ ,$ '% 7' .$ ,$ '% z†<ñ\ÜÎUkÜX˜k†¥BX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/utils.rsÁK/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1ÁX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/utils.rsÁ ûẦLf�ÀùÊä�J¢2=ý&ý&—*OKI"MFELM#!)202>$L5(4OKQ#6"1N, !@/ @N& QI /.7 .< TA,,,BL -1; ;'.9 6T0'.H 9C7)354-&åÓ6!š( ‚O¨ØbÌIÆ_/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/seedable_rng.rsÁK/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1Á_/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/seedable_rng.rsÁ ëgLR€«Ù‰w{_¬®Üu›A›AÎ=FHNOPJL P6PQ'O?QOI $+%%(" )( )0 %#5 <0MMRMP!PMQPAHQC%OMNPQ,.OQMIQ(MPO,/.:!7 )B ;QQOILLONOKOOLJ3'8.'DKQ.,"S)= S)>A8 !',,E+89=$*í¹€;þV øâFËe ]/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/unwrap_err.rsÁK/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1Á]/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/unwrap_err.rsÁ ¨›ðIs®ÿV]Uˆó“ žžF/R& /-",,%0"& D2& <(*=1=1N6;<74%PUN8 ‡ùjŸø‘'ãtÍu?vwV/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/lib.rsÁK/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1ÁV/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rand_core-0.10.1/src/lib.rsÁ —ZK»‰æ¾·�ïB38’Q’Q�#0 'Q?# #2B7 HOPPW$I$ ,&#&#&D;G.,$$ $$ /) >\K?NDPNOPQ5MIPHMOMO"O.QKDIMODMPML7> H?[R"PQK #{NèͼR ‹Û‹ÞÀ‚À£�£¯¯¢¢ªª¯ëV®ÈÈȲȣ²È£¢èƪ‚ÞÈ‚‚Ø‚††£ÉéÉÛÈÛÈØÈèÈØÆØŒÉÈÛ°�~àÈü�È�°�~~üüÈè§õ¢ÆæÒ¯¯�‚�„¯È�ØÈØVV‚®~úƹˆ7«7¥¥ãNrust-end-file.note.gnu.property.shstrtab.strtab.symtab.rmeta@ .€`i &Ð è é 5lib.rmeta-link/ 0 0 0 644 656 ` ELF>@@GNUÀBrand_core-3af13fe8574a9eb1.rand_core.e84e7b233e4c2a07-cgu.0.rcgu.oÁrust-end-file.note.gnu.property.rmeta-link.shstrtab.strtab.symtab@ €`R2¸*Ð Ñ:/0 0 0 0 644 632 ` ELF>ø@@rustc version 1.98.1 (48a229cea 2026-09-01)0ñÿ.text.comment.note.GNU-stack.strtab.symtabrand_core.e84e7b233e4c2a07-cgu.0  Q@0@-m(p0