rust#rustc 1.72.0 (5680fa18f 2023-08-23) }ޱL{ :-8f88c761e33f2651ՆQ4-46a989d0e2cef827e$ɛDp>-b114db70ea0690b1rustc_std_workspace_core ūu sR-13da980d6c74fec5YnFmZܝ--649be05783c8912epWĪ9/-f002c8f83a289c4b &c~~*ĽVa-682387162b570769cfg_ifz$kdgK!--05a2cedbb78c1d4f miniz_oxidePnzn )m-9c3df673b2797081adlerA%lon  2-c6afbee8d1102512 hashbrown8*^| -356231f77d1e268arustc_std_workspace_allocL%gqG-80ed5799bf463787 std_detecta^Ʒc -1bccb7a942e1b311rustc_demanglekŗ,N/ST%L)-bc6864da821ce9a2 addr2line2Ȃ']51:.-4930b3dc482158f7gimli~2)F25˼-65bea4bb6af40828object^]UVW-919f89587cbed68dmemchrk/YO+-c6624cb4360306cdBhnge],Q-f9018f9cee1cc5fflogmc$x-13e3634f7ef0e600dogged persistent DVec+  Persistent" """"" ""##### ##$$$$% $$&&&&& &&----- --11111 11   tests  PersistentUnificationTable====== ==  snapshot_vec DreverseVecLikepushreserveSnapshotVecStorage$ SnapshotVec&&V&L& &undo_log&_marker----Snapshot2S2 value_count2snapshotSnapshotVecDelegate6Value6Undo6::::<????DDwith_logF'aFIII with_capacity MMMUMMgetMget_mutM UUUU in_snapshotUrecordUUsetUset_allUupdate^OP ````start_snapshot`actions_since_snapshot` rollback_tof `commit iiiii ooootttttzzzzextend UndoLogsnum_open_snapshotsclearI  Snapshots has_changesRNoUndo <assert_open_snapshotRollbackundo_lenunify backing_vec     KeyUnificationStoreBasetagUnificationStoreMutreset_unificationsFUnificationStorevalues_since_snapshotK<!!   !!!!!     UnifyKey from_index order_roots UnifyValue unify_values EqUnifyValue%UnificationStorage!UnificationTableStorage!InPlaceUnificationTable!!new_varredirectroot!vars_since_snapshotvaluenew_key  inlined_get_root_key uninlined_get_root_key update_value unify_roots redirect_root  !try_probe_valueK1!?*K2 union_value*unioned**find* unify_var_var**unify_var_value*  probe_value*inlined_probe_value* % %UndoLogNewElem  SetElem   Other  VecLog  InPlace! !!Delegate !  ! ! !NoError_dummy VarValue!parent(rank ! !!!UnificationTable <777777777!7"7#717171797Q7R7S7T7Y7Z7[7\7]7] ^7^7d7e7e7f7h7n7s7y7~777777777777777777777 77777777 7777777777777 777777777 77777777777 7777777777777777777777777777777 77777777777777777777777777777777777777777777776G- -  - AԝJ&&* +,4# i$=444buf040bW`(=7666Global 7C\ w=>=>= 7444=040bW`(7>?G&&* +,4# i$=@@@@@@8&&* +,4# i$=@./ i@=>@=6  7BB Qu./ i@BGBBBBBBB@ 7BB. Ut!@@GCCCCCC@/  6PDDGD6D1 te]. UtD444=040bW`(00(1G4CD>?- -  - AԝJDBG00jj FFFFGF1 te]GHH? {-P-&t&&o&i&&z&:&4&     4G608 6     -=8  Other    G   H   -@  NewElemM  M  M  -@  ->   SetElemM  M      M   H            'w? z*  =  GGGEGEGEG EGEG=EQ ! >S   @ M M  S S  > M M M  S  L M M  T   __self_0 T __self_1  T  > >=  Q? = =  > undo  Q  -L  9= -@  5>>  5>>    A%assertion failed: Vec::len(self) == i%%M  -@ ->   >@         g=@?V =S @ {-P> @ >@>> >L? V v u  5>>H?V > HY5@_5  4>>K?V @  K  5?>!H?  ? ?e  H 5?>"5@ e ?e5  4?>#K?e @e   K    SnapshotVec M  H J valuesM  @   MJ E  y   undo_logM@Myj ! E1Q  @R EE DebugStructEEE EE has_fieldsED˄mymymJmJmM MM  @ M M @! !  @! "" @"! &=@@ PhantomData<ɏ=""!>!@!@! @"!%%  @%%C$4@%$4(>(u &=Vp)F&&&* +,4# i$=Vr'AV& r&V(& &&** 4>*** r** &=>rp++)L)&&* +,4# i$=>r*@)>*r*c)),I,, I?,,Q+<@, &&* +,4# i$?IB+ I,++<,I,, I ?,,,,,-R,Y ?, x,@, y,x,@,,,,,Y/I// Iy///// /S.i ?/  x. @. y/ I/@//. ..i1I11 I?11T0?0|0 @0 ?1}10  additional0 02@22  @- -  - AԝJ?2 2Y2I2 &&* +,4# i$?I@2n222I 3 33 3333  YI?@3 33!@3 333  ?3!3 @ 33 32333 3!Z2 ?3 2 ?8233?3! @3!3 Ņ332 action22 44444I44w44I44444 I?4 4 44  4 45  @5 5  ? 5 5   5553555 [34@43 ?4@4x4?4}4?444?5 5 5 @553 elem4437777777I77{ 777 7  7 777 787   ?  78777 @77   7 7 8,@8888 ?8,8  88 88868 8 8 88 8,\67?76 @6?6?7|7 }7}7@77?77n7?8,8,8?8886 6new_elem6old_elem76:@:: : : :: I::{ :: :; V? ; :+;  9NNIterMutNMNMNM-bD?; :+:+ 8 Enumerate))məA3:+:+ :z:+ :+:+ 9 :+:+ :+ : @|@: |; ; ;;  impl FnMut(usize) -> D::Value@ ;:+;  ;:z;;;I;<w<; @;@;; 8 J;((m@;;;X;;; 9;; ; ;@<  < ! < < Ě !< << \I?@<<<<9<]9:z;9;X<:"?:9 ʚ9 ::n::+:+:}:}:}::+ {-P:+ :+S:z@:|:?; ʚ; ;;;@;x;; {-P@; ;S;X@;?<?< < < 9  new_elems9 :+ :slot:;;9=======@== = => I>>{ >> >  >  >#>#> ?>>, @>> ?>,>  >??????I??{ ???? ? ?$ ?$?$?$? |  ?$???<?? ? ? >,^<>w?=< @<==n=?>z>#}>}>@>>?>,>,>?>??$??$|? }?}?@????< <op=><A@AA @=AA@AA @=AAv 2@=Bd@2245߾]|˱@ @@ @AnA˱AA@ @B8@C˱B8C @=C*B8CeB  =B lB BB8nB8 ˱CBBBD@D7@D  g=@@B ? @D˱D7D  @=g=@@BD)DfCDe?DC CD?D7D7D ˱DC C DCDDgD DD  DD  F'@F˱F'F @=FFhEr?FF F?F'F'˱FF FErH@HH @ >HHHnGC ܻG lGHnHGGCI@II @ܻIIIsIO ܻII III IOKK R@=@K KKyJJSJ lJ@JSKJJJJLL S@=@LLL~LZ_L L @L_LL LLZ N N N N N@NNٰ NN@NNNNN 8@> NO @OOٰ  OO OO  Y@=A  O O OW AP P P @P0P 9==@ =? POWP A=Map/8X    P8PMPP OWMNO?N AM M@N nN?NNN@O nOO AO?OW AOWP0P@P @P PM iterableM initial_lenN  final_lenO MP  =PP=P P@PPPR@RR @RR@RR @RQ &=@@pRRQQ@QlQ@RnR@RnRQQT T U-LU U LUTT-@T  =TT-@T->T T >TT =TU =UUSTT*U  =SRSST @T@TST>T TULU STT_T_US B@K @K   8    B B?   2  98B   ?   ? 2    undos       B   ?   B   V    _ref__self BB B  B  B   B BBQ@Q BB??  B  V? BB3? ?  3  BB?   % B 00 VB 1 z B0  B0%z BBg BBg) BB))})} BBV   V! '  BBimpl FnOnce() -> R '!?      storage  !!!  BB!"!X?!! !! ! !!X""@""7@" B"""7##"?# B# B## _undo#"##?## # #$ 444=040bW`(B>$ $  $ $@$# B##B# B#$  $ @$S$## # #VecLogM $  $ logM $  $ M $ $num_open_snapshotsM $ @ $  $ M # # H # # # Q # #R #M #M $ M $  $ M $M $S $S $ # # #% % 4B% $R B%@%$wB$% $w&@&%M@&&&%M&&& 5B>& '&@?& B& B&?& && V&&@''' 5B>''@'@''Z?'' ?''' 'Z(() 5B>))@(")(k(( s-w(@((@)(((k))@) @))  CxKĮ@))*)l  B))))))@))))l*@*@*@*@*@@++++*: +*** @*@++* *  ,    ,   (     +  B OffWarnInfopTrace1h.g     p}[у+    =  =  =        =   =          =  =,*,Bǃ M@,*  M,@,, G@,= G(G formatterG1 2 7e==  == G  =  >) >Bǃ MMM #   MM    )  ,$- ,$, B ,--- --@-"-" -,---- ǃ??--!-.! .."@-" "-".'$.'.. 5B>'&... >B&%..'. B$%#. ..(@/@.(@/@.@(@/,/.+///,  -.'+  --?,+ ǃ++   =       σ у ? IpiecesEEE4&w\NF=,؉= @==,S,  {-P #?,$,$- -"@--@-- ǃ--"@--@.?.' .'B. {-PB...Ɋ >,σ  /+  ++lvl   - +  у>> ena::undo_log M> = > ena::undo_log M,,]/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ena-0.14.2/src/undo_log.rs]]M,, > >  Ɋ >ˊ =M>M> >, M, rollback_to( M,)M,,  ,,,    у      σ  у    (   " Bσ  "  = = =  =  =    = =/ !/ B/  !/@//Ȉ/= ==؉==   => >BɊ#     0$0 0$0 00@0 2@22@$2 2 $2$2Z(assertion failed: snapshot.undo_len == 0((M$222222@3@2@3@2@@3/ #?// /  =  σу?=/ ؉===/S/#?0$0$0 @022@2$2?222Ɋ>/ σ / / / у>> ena::undo_log M>= > ena::undo_log M/']/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ena-0.14.2/src/undo_log.rs]]M/'>> Ɋ>ˊ=M>M>>/  M/ commit(M/ )M/ /  / / /   у   σ у  44444@4#&4, 4,&4,&4,Z5assertion failed: self.log.len() >= snapshot.undo_len55M&4,4 @4  5@(4$  4$ (4$(4$Z-assertion failed: self.num_open_snapshots > 0--M (4$53 ?3334,4#@44@4&4,4$4@4(4$33366 6  @6 665@ B55@56 65key55@888  BB888E?8  B8 B8ƹ8 8 V88E 9M 9* 5&&* +,4# i$D@@* 5* 5 * 5*  D@@* * C*  C* * 5 * 5* * + + InPlaceM+ 5+ 5valuesM+ 5+ 5+ 5M+ +  H+ + + Q+ ټ+ R+ M+ M+ 5M+ 5 + 5+ 5+ + +  CD@@? D@@dCd Q@D@8@ټ8( D@@&impl FnMut(u32) -> VarValue F ( ]@D@D@@? C  ?( ( (   F @( _ref__value [@D@ W? F@ (W## T@D@a? @?## num_new_valuesa ^@D@ ? @  dD@@[2245߾]|@F  [!!  fD@@f? ?!! f hD@@\? ? \@  C  @{ ټ @@ {  @Q F ټ@ Q-o<ɏD-- ---D- D-- ---..DelegateM...M..M...Q..R.M.M. .....  .?  E ?  .! E&&* +,4# i$DE?! ! F! "!g?! E! F!?!  ! ! V!!g  {-P aa_valuebb_value )))) ))))) B)) BBB)* ** ** ** **    *% B)** ((    'wB)))) ))B))* B**B**value1)value2)( 00 D00 D00 00  DD00 01 01 01 01  01  01    01  01 0001010101D01 0101  0101 01010100  00 00 00 0100  D00 00 01 010101 01 01 00 00 00 10 D10 10  D10 111111 1111 11 10 D1010F1010D10 10 111111  11 1010 2020VarValueM20 20 parentM20 D20 M2121valueM21 21 M21  21 rankM21  21   21   M2020 H  202020Q2020R20M20M20 M20 20 M21M2121M21 M21  21 21 20202039 H39 39  H39 38 H3838H38 H38H39  H39 38384848UnificationTableM49 49 valuesM49 H49 49 M4848484848Q4848R48M48M49 M49  49 49 48484859 59  H59 58 H5858H58H59 58AA  DAAAA_FA DAAA(AA_Bt DCAFB DAAB0A(A1BACDCC??C FC DCC toCC?DD D DD ClCl?DC DDC 1D(DClH%EH%H FDrHHV DrH . UtDrIF1 te]G>F rFHV&&* +,4# i$DrH%H%F FFKK  HKKK4HKK4NHNN HNMv Ho<ɏHNMy{HM  HM HN HNM M8 8 8 8 6( 8 8 8 Hσ8 8 8 8 =8 =8 =888 8 = 8 =8  88 88 =8 =PPHP PP HP:P:P:P GM :P:= :=:=؉:=:=   :=88>8>HɊ8# 88  8P*HPPPP*P  H PPOP P 8 O8 ?OO O8  =8 8 88σ8у8?8:=P؉:=:=:=:P M:PMP88#?P*̄P*PɊ8>Pσ8 PO O8 O8 у<><> ena::unify M<>8= >> ena::unify MO%^/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ena-0.14.2/src/unify/mod.rs^^MO%8>8>8 Ɋ8>ˊ8=M<>M<>8>P MPMP: rollback_to()MPP8 PPP8 8 у8 8 8 σ8 у8 8 E E E E C( E E E HσE E E E =E =E =EEE E = E =E  EE EE =E =RRHR RR׈RGRGRGR GRG= G=G=؉G=G=   G=EE>E>HɊE# EE  ER%HRRRR%R H RRQR R E QE ?RQ QE  =E E EEσEуE?EG=R؉G=G=G=GRGRMREE#?R%̄R%RɊE>RσE RQ QE QE уI>I> ena::unify MI>E= K> ena::unify MR ^/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ena-0.14.2/src/unify/mod.rs^^MR E>E>E ɊE>ˊE=MI>MI>E>R MRMR : commit() MRRE RRRE E уE E E σE уE E T5HTT5T HT)T @TT&T HT&U  @U  U$U U$TL  UST  J;((mT S STT5 TT&T@T U$U@U SSrangeTSVHVV HVVV<@VVVVV<X HX X X XX@X!X! H@X!X"XWd 00(1G4CWWWX!X @XX  X WWWdZ%ZZ%ZZHZZZZZ Z ZZ [/ H[ [%[[ [[   [[/[ H  [#P( R  R $R HσR R $R R =R =R =R RR R = R =RRR RR =R =[#[H[#[[׈ [T[T[T[ T[T[T[T[ GT[T= T=T=؉T=T=T=R R>"R>HɊR#! RR "!R[\Y[[%RYZZR &ZY HY@ZZZZ @Z?[/̄[/[[[R  =R R RRσRуR?RT=[؉T= @T=T=T[T[M[T[T[RR#ɊR>[σR [Y (YZZR  YR уV>V> ena::unify MV>R= X> ena::unify M[2^/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ena-0.14.2/src/unify/mod.rs^^M[29R>R>R ɊR>ˊR=MV>MV>R>[ M[M[: created new key: M[[R [[[R R уR R R σR уR R ]!H]!] H]]]a?]] @] ?]!̄]!]  num_new_keys] ]a_H`` Himpl FnMut(S::Key) -> S::Value  __ HH_aaa__?__ _ ?_̄_``_ (_ _```` ``  ` `  ` aa```a```K ` ````` `aa``(_`(`` eeee He eeee eefh f g f%f H f g  g gg   gg gg g HB  ?g7g  HHBg2h h heeffee eeeeeeeffgggg?g7ggge vide_e'f root_keyf ehhghg?gg ghg(gfg_ref__root_keyjj Hjjijji ii iijk,$k,k,$k,k,Hk k kkk@k$kk k,k H k ]( _   _ #_ Hσ_ _  # _ _ = _ =_ =_ ___ =  _ = _____ = _ =k"kHk"alalal alllll l alalal G ala= a=a=؉a=a= a=_ _>!_>HɊ_# __! _ljll$_j_ %?jj jj?k,̄k,@kk k k_  =_ _ __σ_у_?_a=k؉a=a=a=alalal allll__#Ɋ_>kσ_ lj jj_  j_ уc>c> ena::unify Mc>_= e> ena::unify Mk=^/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ena-0.14.2/src/unify/mod.rs^^Mk=t_>_>_ Ɋ_>ˊ_=Mc>Mc>_>k MkUpdated variable Mk to Mkk_ kkk_ _ у_ _ _ σ_ у_ _ 7l al l al j( l l `l Hσl l `1l l =l =l =l ll 1l = l =l  ll  1ll = l =p_pH M@p_npnpnp1npnpnpnp 1npn= n=n=؉n=n= 1n=ll>^l>HɊl# ll^ 21lpqpq 1q pqq qq  1q qr"r%r&rr%&$1r r#$r'r*r+rr*+)1r r()qq "#'(!1qq, !q,(q-!q .!t1-t2tt1201tt0x?Y3x?Y?Y3t 6.t7tt6751ty?Y4 5?Y4y?Yy?YZ%assertion failed: redirected == key_b%%M81y?Yt9t9u/ty'u :uu :u1u /:ty'|?Y;|?Y?Y;v>-v?vv>?=1v}?Y< =?Y<}?Y}?YZ#assertion failed: new_root == key_b##M@1}?Y?YA?Y?YA# v D.vEvvDEC!1v?YB C?YB#"?Y?YZ%assertion failed: redirected == key_a%%MF1?YvGvG%$w/vy'w Hww Hw&1w /Hvy'xJ/x K.xL-x ax x Mx=x  HJKLMI31x8xNxN*)zPzQz az z Ry3y PQRO41y.zSzS,+{U{V{ a{ { W{3{ UVWT51{.| Z|| Z|-1| YZ|[|\| a| | ]|7| Y[\]X61|2}o }/}a/0l x=.y3.{3.|7.o l p q stb?po opp l  =l l llσlуl?ln=p؉n=n=n=npnpnpnpll#pppqqqqq {-Pqr rrrrr҉rrrrSqqq tttt?Y?Ytt ty?Ytu ?Y?Yvvv}?Y?Y?Yvv v?Yvw ?x=xx xx x?y3zzz z?{3{{{ ?|7| | ||| Ɋl>pσl } o key_aokey_bp new_valuep l rank_aprank_bqnew_rootq- redirectedq .new_rankt/o l уp>p> ena::unify Mp>l= r> ena::unify Mp5^/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ena-0.14.2/src/unify/mod.rs^^Mp5l>l>l Ɋl>ˊl=Mp>Mp>l>p Mp unify(key_a= Mp, key_b=Mp)Mppl pppl l уl l l σl уl l p pp pրOրO HBp  HHBk  ЁR ЁR ЁRЁR HB s  HHB  n ?    ?pրOրO?s ̙ЁRЁR  old_root_key  new_root_key    % րO?րO׀?% րOold_root_value׀ț րO_ref__new_root_key ( ЁR?̙ЁRс?( ЁRnew_root_valueс ЁR_ref__new_rank  *!ΆÆȆȆ ކކކ ކކ     s  {-PɅ  00(1G4CΆކ ކid_  H**' C?GЉ? ?'   'w?G a_idb_idЉōʍ Hʍō(?ӌ ތ?ō(ōӌ ތ(ŏ ŏŏ ŏŏʏ Hʏ ŏ ؏ݏ Hݏ ؏ŏ"ŏ"ŏ"Ŏ Ŏ ܎ ŏŏ؏؏܎ өŎ  Aΐ Ð Ð! ! !  ɔ!ΔΔ !       ֕ ??&     E  EFF    'w FF F FlF FF   Ԗ*ٖ  Hٖ%Ŗc   'w,kFŖ    'w?F і. ??  ! ŖŖFF" l c utyFӺESŖŖF?Ԗ*  өөroot_aroot_b combined Ŗ F  !         Й.Й   Й.Й/Й/ͺ  Й/Й/ Й/Й/lЙ/Й/Й/ HB  ?4  HHB /Й/cЙ/  Й/ҚҚҚ ǚ ??ҚҚҚ ӚҚ Қ Қ ęЙ/Й/ șЙ/ӺЙ.SЙ/?4Қ өө(ș  Й/   ? node(ș(Ĝ HĜ~  ~ ̞ўў    ÝnÞR  Ǟ ǞÝ  H       I Iˣˣ I  ˣ I HIĢ     I  ڢڢII I  H  ˣ ţ  H I I  H ͤӢD   'wHΡݡSSSHxڢHI x xx   'wIˣSIHΡݡ_ڢ  _err  =  = @    =  = @    =  = @ >    =  = @ >    =  = L    =  = L   DD DD A An implementation of union-find. See the `unify` module for moreD details.  ` A utility class for implementing "snapshottable" things; a snapshottable data structure permitsc` you to take a snapshot (via `start_snapshot`) and then, after making some changes, elect eithercB to rollback to the start of the snapshot or commit those changes.EV This vector is intended to be used as part of an abstraction, not serve as a completeYZ abstraction on its own. As such, while it will roll back most changes on its own, it also]_ supports a `get_mut` operation that gives you an arbitrary mutable pointer into the vector. TobY ensure that any changes you make this with this pointer are rolled back, you must invoke\[ `record` to record any changes you make and also supplying a delegate capable of reversing^ those changes.  $&26 %o o mem          . - - - - - -           1         K= 6= =   ' 7 7==?  = V C>'7 7>=? =VRyy?6?#7 7?? ?7 7@ ?#7 7@? ? $>"7 7>>? =7 7>@ ="7 7>@? = ,7  ?!"#"7 7??? !7?7 7?@ "7?"7 7?@? #7? 3%%= '()()'@6@@= @4# i$*+,6>A &&@ &&@&&p1./00./ G@ G@ @1:777 7@ 7GGGEGEGEG EGEG=EQ ! >S7Q-- 1=@@-33H2245߾]|H߾]|45 22@ 22H6667897897 8  66 66>7 7444=040bW`(ҏ>?66 9 Å b;<=<=;     @ @ @>      !!@:: >=@@"V@AB@AB""#"" #ϒ#@C""""##$Y Creates a new `SnapshotVec`. If `L` is set to `()` then most mutating functions will not#\Y be accessible without calling `with_log` and supplying a compatibly `UndoLogs` instance.$\%@?? C=@@%2EE%%=F%%&U Creates a `SnapshotVec` using the `undo_log`, allowing mutating methods to be called%X&G G=r&&* +,4# i$= G>rDHH&Dr&r=' F=r&&&&&&)IJKJK)))r)vL)))))&) @vII L=ru)+CNOPPNOI++B+I?+ +xQRST++++++++7 7x@M+M QI?B+,,,7 7x@ 7?M,M RI?B,,.8X Returns a mutable pointer into the vec; whatever changes you make here cannot be undone-[U automatically, so you should be sure call `record()` with some sort of suitable undo-X action.. .7 7x@ 7?M.M SI?B..0,9 Reserve space for new values, just like an ordinary vec./<07 7x@?M0M TI?B0~0 1YVWXXVW1111 1@1YZ[\]^11111122 7 7U2U22)27 7Ņ?U2U ZI?@2Å23/37 7?@U3U [I?@3467[ Updates the element at the given index. The old value will saved (and perhaps restored) if5^ a snapshot is active.667 7@??U6U66ӓ69G8 Updates all elements. Potentially more efficient -- but8;< otherwise equivalent to -- invoking `set` for each element.9?97 7ʚ?U͙9Uʚ:ʚ:ʚ?: ]I?@ʚ99 C 7 7@?`C` f=@@CCDfggggfE9= Commits all changes since the last snapshot. Of course, theyD@8 can still be undone if there is a snapshot further out.E;F7 7@?`F` h=@@FFFRjklljkFGGFG @mnFFGGGGG GiiܻGG7 7@ 7ܻiGi n=@@GHUpqrpqrHHHHH @sHHHHHHI*I 7 7@ 7ܻoIo s=@@IIYuvwuvwIIJII @xyIIIIJJJ Jtt>J*J7 7@@ 7>tJt y=@@JJK\{|}|}{KKKKK @~KKKKKKL6L 7 7@@ 7>zLz ~=@@LLLiLMLM 8@>MALLMMMXM7 7A?MM8N8>N =@MMMMP²PAPPPPQ @Q@Q@PPPPPPQQ7 7@@Q =@@QS1SS>SLS=SSSS7 7==S =SU BU UBU U?V#V7 7444=040bW`(B>??V X Module which contains the snapshot/rollback functionality of the `ena` data structures.[\X For most usecases this is just an internal implementation detail. However if many `ena``[J data structures are used snapshotted simultaneously it is possible to useMV `UnificationTableStorage`/`SnapshotVecStorage` instead and use a custom `UndoLogs`YC type capable of recording the actions of all used data structures.FY Since the `*Storage` variants do not have an undo log `with_log` must be called with the\) unified log before any mutating actions.,^ A trait which allows undo actions (`T`) to be pushed which can be used to rollback actio at aa later time if needed.` The undo actions themselves are opaque to `UndoLogs`, only specified `Rollback` implementationsc6 need to know what an action is and how to reverse it.9B0 True if a snapshot has started, false otherwise3 7 7 B&4 How many open snapshots this undo log currently has77 7@ ] Pushes a new "undo item" onto the undo log. This method is invoked when some action is taken`[ (e.g., a variable is unified). It records the info needed to reverse that action should an ^$ enclosing snapshot be rolleod back. ' 7 7B?  V  % Removes all items from the undo log. ( 7 7?  B  c& Extends the undo log with many undos. ) 7 7?   8 8B  B     ² (  BB B        7 7B  BB %7 7B@ BB7 7BB? BBV7 7B? BBc7 7B?B88B BB#u A trait which extends `UndoLogs` to allow snapshots to be done at specific points. Each snapshot can then be used toxR rollback any changes to an underlying data structures if they were not desirable.UO Each snapshot must be consumed linearly with either `rollback_to` or `commit`.R B   8D Returns true if `self` has made any changes since snapshot started.G 77 7 7 BDG Returns the slice of actions that were taken since the snapshot began.J77 7 7 7/W Starts a new snapshot. That snapshot must eventually either be committed via a call toZ\ commit or rollback via rollback_to. Snapshots can be nested (i.e., you can start a snapshot_W whilst another snapshot is in progress) but you must then commit or rollback the innerZE snapshot before attempting to commit or rollback the outer snapshot.H7 7 BuB Rollback (undo) the changes made to `storage` since the snapshot.E 7 7?B ? ? B/F Commit: keep the changes that have been made since the snapshot beganI7 7? B%7BB B 8 77 7B 7BB 7BBC77 7B 7 7 7BB.7 7B 7BBu 7 7B?   B ? ?  7BB     !.!7 7B?! 7BB!!""BQu""B"B"B"""%"7 7B@" B""#7 7BB?# B####7 7B?# B#$$B$$$$B B%!%B%%%%%7 7B@& B&&&7 7BB?& B&V&''7 7B?' B''"'B''( ((8( 77 7B 7BB( B(()=)77 7B 7 7) B))*(*7 7B* B*+n+ 7 7Bǃ?++ǃ+B, ǃ?+ ǃ?+ Bǃ+ ++++/(/7 7B?/ B//33B3333377 7B 7?3335,5B555 5B5!57 7B@ 7B5 B557v A trait implemented for storage types (like `SnapshotVecStorage`) which can be rolled back using actions of type `U`.6y7777777 7?7 7V77$777BB8 C7777887 7CB?8 7BB8V89? Snapshots are tokens that should be created/consumed linearly.8B9s-w::@ @ Union-find implementation. The main type is `UnificationTable`.CB You can define your own type for the *keys* in the table, but youE@ must implement `UnifyKey` for that type. The assumption is thatC; keys will be newtyped integers, hence we require that they> implement `Copy`.B Keys can have values associated with them. The assumption is thatEB these values are cheaply cloneable (ideally, `Copy`), and some ofE@ the interfaces are oriented around that assumption. If you justCA want the classical "union-find" algorithm where you group thingsD) into sets, use the `Value` type of `()`.,A When you have keys with non-trivial values, you must also defineD? how those values can be merged. As part of doing this, you can B> define the "error" type to return on error; if errors are not A? possible, use `NoError` (an uninstantiable struct). Using this BB type also unlocks various more ergonomic methods (e.g., `union()` E in place of `unify_var_var()`). # C The best way to see how it is used is to read the `tests.rs` file; F search for e.g. `UnitKey`. p Gp G  sv -  . / .          #           EoZ oZ v| .$$ 05 EMZ kvp||1  '  !HO< Largely internal trait implemented by the unification table?= backing store types. The most common such type is `InPlace`,@7 which indicates a standard, mutable unification table.:@/@00(1G4C/У( '7 7@   3P7 7?&!ޣ (/7 7ޣ? (-7 7@? c7 7@ ? ī7ī 7ޣ 7ī?  ī /       / 7 7    4 7 7?     / 7 7?     K 77 7 7    a!DD@DϒCC D@@7!ҲCD 7 7C@ D@@6!Ҳ@F"CS7 7C?&!00(1G4CC D@@(².7 7C͹? D@@(,7 7C@? D@@c7 7C@? 7 7͹ 7?  D@@3!Ҳ@F#C .7 7CC D@@3 7 7C? D@@.7 7C? D@@J77 7C 7 D@@4!ҲC F-7 7C@ 7F D@@9!D F ? + 7 7E??  D Z!  E  !5!7 7EF?! D!V! j      4? This trait is implemented by any type that can serve as a typeBB variable. We call such variables *unification keys*. For example,EA this trait is implemented by `IntVid`, which represents integralD variables.A Each key type has an associated value type `V`. For example, forD; `IntVid`, this is `Option`, representing some>* (possibly not yet known) sort of integer.-C Clients are expected to provide implementations of this trait; youF, can see some examples in the `test` module./G   7 7   _ = You should return first the key that should be used as root,@; then the other key (that will then point to the new root).>? NB. The only reason to implement this method is if you want toB= control what value is returned from `find()`. In general, it@; is better to let the unification table determine the root,>? since overriding the rank can cause execution time to increaseB dramatically. 77 7 7 #? Trait implemented for **values** associated with a unificationBC key. This trait defines how to merge the values from two keys thatFC are unioned together. This merging can be fallible. If you attemptFC to union two keys whose values cannot be merged, then the error isF0 propagated up and the two keys are not unioned.3= This crate provides implementations of `UnifyValue` for `()`@C (which is infallible) and `Option` (where `T: UnifyValue`). TheFC option implementation merges two sum-values using the `UnifyValue`F implementation of `T`.@ See also `EqUnifyValue`, which is a convenience trait for casesC@ where the "merge" operation succeeds only if the two values areC equal.  ! ! = Defines the type to return when merging of two values fails.@; If merging is infallible, use the special struct `NoError` >; found in this crate, which unlocks various more convenient >" methods on the unification table.!%!"K: Given two values, produce a new value that combines them.!=+ If that is not possible, produce an error."." 77 7 7   'w" ""'*B A convenient helper for unification values which must be equal or#EB else an error occurs. For example, if you are unifying types in a#EB simple functional language, this may be appropriate, since (e.g.)$EA you can't unify a type variable bound to `int` with one bound to$D< `float` (but you can unify two type variables both bound to%? `int`).% &A Any type which implements `EqUnifyValue` automatially implements&DA `UnifyValue`; if the two values are equal, merging is permitted.&DA Otherwise, the error `(v1, v2)` is returned, where `v1` and `v2`'D are the two unequal values.'( (((((((&(B( B((( ((J( 77 7B 7B   'wBB) B))99!9E999#9!:E::;4 A unification table that uses an "in-place" vector.:7;!;;.< ;Ҳ;1 te]C;;;.;E< <./ i@F?(B At any time, users may snapshot a unification table. The changes>EE made during the snapshot may either be *committed* or *rolled back*.>H??H?y{??@@@@@!@@F@@A2ADF DA(AA<ADF0A(A1BCC7 7FD?C DCCC.C7 7F?C DD1D(DD"!DEEDDF[ Creates a `UnificationTable` using an external `undo_log`, allowing mutating methods to beE^, called if `L` does not implement `UndoLogs`F/F Er1 te]. UtD ErFFrFG" DrFFFFFFJ;JJHKHJJKKH HK-KKHKKM)4 Starts a new snapshot. Each snapshot must be eitherL74 rolled back or committed in a "LIFO" (stack) order.L7M7 7HM HMO43 Reverses all changes since the last snapshot. AlsoN64 removes any keys that have been created since then.N7O 7 7H?O HOOQ/P@Q;Q7 7H?Q HQQSJ@ Returns the keys of all variables created since the `snapshot`.RCS77 7H 7S HSSU1UUHUUV+ Returns the number of keys created so far.U.V7 7H@V HVW1W7 7H 7WWWX0XHXHXXY4X7* Creates a fresh key with the given value.Y-Y7 7HY HY(Y].: Reserve memory for `num_new_keys` to be created. Does not\=> actually create the new keys; you must then invoke `new_key`.\A]7 7H@?] H]] _O? Clears all unifications that have been performed, resetting to]B< the initial state. The values of each variable are given by^? the closure.__7 7H?____ H_(_`²e9e7 7Heeeg²i;i7 7Hiiijhj 7 7H?jj7 7k7?k HjjjjjoLo 7 7H?ooopp  7 7H? ț  ր²Ё²̙!I ////////////////////////////////////////////////////////////////////////L Public API! HσH؃  ( H{f Obtains current value for key without any pointer chasing; may return `None` if key has been union'd.i H {-P * H!!   'ٗ HЉ9 Unions two keys without the possibility of failure; only<: applicable when unify values use `NoError` as their error= type.‰ ׉7 7H?**݉ÊGΊ Hө݉݉z= Unions a key and a value without the possibility of failure;@? only applicable when unify values use `NoError` as their errorBÞ Ì 7 7H?*ӌĠό H،ތ(όόŎqC Given two keys, indicates whether they have been unioned together.F̎7 7H**܎ĠԎؠ؎ HөԎԎ؎؎F- Given a key, returns the (current) root key.07 7H*ĠÐ8 Unions together two variables, merging their values. Ifđ;; merging the values fails, the error is propagated and this> method has no effect.ǒ 7 7H**Ġؠϓөl= Sets the value of the key `a_id` to `b`, attempting to merge@ with the previous value.З7 7H*Ġ՘ө²M< Returns the current value for the given key. If the key hasٚ?> been union'd, this will give the value from the current root.A 7 7H*Ġ HÝUʝ7 7H*Ġޝޝޝ? G6 77 7? 7? ,I H G 77 7H 7Hѡ IΡݡ (   =AԝJ@=@>=L=   + New variable with given index was created. .  =  @= =  @ > Variable with given index was changed *from* the given value. A  =  @>= =  @  >  Extensible set of actions   =  L= =  L   '  G=  G> GL =    777 7= 7GGGEGEGEG EGEG=EQ ! >S7Q  =  # A basic undo log.###B/ i@##$ $$$@###(##B#B####7 7BB# B# # # #) ##GB #B## # #777 7B 7GGGEGEGEG EGEG=EQ ! >S7Q # B# # 1 Backing store for an in-place unification table. 4 Not typically used directly.  !  . $ Ҳ CUt   . E $  5 * * * +* 5!   D*  * Ҳ * C      * * 7 7CC*  D@@ + + + ++ 6!   GD+  + Ҳ + C      + + 777 7C 7GGGEGEGEG EGEG=EQ ! >S7Q+  D@@ + , !D6PDD D,,,,,7!D,D---,-8!-D--7 7DD- D...,.9!.D..777 7D 7GGGEGEGEG EGEG=EQ ! >S7Q. D.+/ A struct which can never be instantiated. Used*2) for the error type for infallible cases.+,+Gjj + +?/+/+/+-/+:G/+/+777 7G 7GGGEGEGEG EGEG=EQ ! >S7Q/+ +/+0 = Value of a unification key. We implement Tarjan's union-find+@? algorithm: when two keys are unified, one of them is converted,B@ into a "redirect" pointing at the other. These redirects form a,CC DAG: the roots of the DAG (nodes that are not redirected) are each-FA associated with a value of type `V` and a rank. The rank is used-DB to keep the DAG relatively balanced, which helps keep the running.E? time of the algorithm under control. For more information, see/B< ./?0!00FG4C000 0D111 100 00 00 -00 ;!00F0000 00 00 -00 ;!0DD00 000 F0000 00 77 7F 7F00 D0 00 101010.10<!010010F0010107 7FF10 D0202020.20=!0200G20F002020777 7F 7GGGEGEGEG EGEG=EQ ! >S7Q20 D02084I Table of unification keys and their values. You must define a key type K2LS that implements the `UnifyKey` trait. Unification tables can be used in two-modes:2V3M - in-place (`UnificationTable>` or `InPlaceUnificationTable`):3PC - This is the standard mutable mode, where the array is modified3F in place.4H - To do backtracking, you can employ the `snapshot` and `rollback_to`4K methods.5U - persistent (`UnificationTable>` or `PersistentUnificationTable`):5XH - In this mode, we use a persistent vector to store the data, so that6K, cloning the table is an O(1) operation.6/I - This implies that ordinary operations are quite a bit slower though.7LK - Requires the `persistent` feature be selected in your Cargo.toml file.7N888Hte]889 9H383838/38>8H388H8838387 7HH38 H8484848/48?8GH488H884848777 7H 7GGGEGEGEG EGEG=EQ ! >S7Q48 H848585858058@8588H885858H H +,.022369::=<@BBCFGIJLMQSV       !"##&&'(())*+++/335778&&     && !""))CCMOQSSVWY]___eikjoӌ܎ѡ   # # # #* + + + -.../+/+/+00001020202038484848?DIMU`gV"jY gV"jzogV"jڰ(0gV"jTmQgV"jTVgV"jd\寝gV"jVwa _gV"j+gV"jzbi)gV"jP>N`gV"jL$AygV"jriBxGgV"jy3EmgV"j.W,p&gV"j2gV"ji3;gV"jp%YgV"j;C,gV"j) sgV"j(1>gV"jv9|8gV"j(ŠgV"j~+LgV"j4D(g gV"j gV"j[ -ngV"j32vgV"jaBmlgV"j9W`gV"jtqgV"j:~v|gV"j Q( gV"jJ•NnUgV"jBgV"jv sgV"j\I쑍;gV"jZ-TwgV"jAiܞgV"jV *VgV"j ({gV"j ։9agV"j n.IgV"jFzgV"jwrɳgV"j}Tڟ0>gV"jt4R/zgV"j19_ZgV"jC[vWLgV"j-wmfgV"jFPGmgV"jh|cgV"jBdfgV"jIj gV"jQgV"jҀR gV"j2-)$gV"jQ:-"ŎgV"jJǡgV"j+rgV"jwЖgV"jk-IlgV"jO٘gV"j\ɟ QgV"j5+mLgV"jg+z~XgV"j}*gV"j(Ϩh'gV"jzlXgV"j50fLgV"j#' ǫgV"j˻gV"j-?'gV"j 84gV"j }VAgV"js gV"j3oϑ gV"j$K.FgV"jyݍ1c(gV"jP9+/gV"jJ~JgV"j6+n&ggV"jE/fogV"jfd4gV"jA 3\gV"j6{.ogV"jr]@gV"j`Tٷ]gV"jA8XHgV"jtVUJgV"jiNKǦgV"jp Y[gV"ju]gV"j`jʣwBgV"jpdgV"j"#HgV"jP׈ gV"j+exgV"j^QgV"jŢس]gV"jo)A YgV"jmgV"jNS}>##gV"j"[gV"j@ggV"j?ؒglgV"j"}懭gV"jjgV"jЃw8gV"j9Ce gV"jn@km2ĪgV"jxDlTgV"jm(gV"jaӌ;ncYgV"j76zgV"j)qL8EygV"jӘ1EqgV"jҘP{gV"jkggV"jw ^agV"j0HkgV"j?T*kGgV"j=(gV"jJy -gV"jC7"QgV"j@RUgV"jp܈gV"jUc6?,gV"j>2Z9ŧgV"jbԵ\gV"jo8b* gV"jhͮgV"jO7fgV"jqTgV"j/lWD6gV"jxAG}sgV"j⤪فgV"j%U:1gV"jx*gV"jъvgV"jQ0gV"jQFzugV"jf_J.rDgV"jDb gV"jc>{ gV"jdgV"jYSgV"jEMgV"jq gV"jܭ^AgV"jnOgV"j? /cVgV"j!KgV"j`gV"j%%RgV"j{<2igV"jhR4gV"jkg>>WgV"jB EgV"jn_@gV"jN҂LAgV"j ѝCOgV"jSigV"je+gV"j6@gV"jFu 3gV"jl-<:gV"j "lPYgV"jef/gV"jvH gV"j(0gV"jzLٛgV"j~$" gV"jLd;rgV"jDAgV"jJhηJgV"j)}gV"j*/ṅegV"j%:/gV"jBVgV"jMU>}gV"j98NӅgV"jUFk>gV"j՟ލggV"j%3 ehxgV"jRC/gV"jb#{gV"j LSh"8gV"j>+7,gV"j9gV"jQX0AgV"jhd}GgV"j(쳾gV"j-gV"jM­jgV"jdggV"jãHgV"jކjgV"jh؍gV"jRPgV"jP]eF@gV"juVgV"jR>ÔgV"j8e˘$LgV"jԂU$gV"j4Ӿ.\gV"jaAS,gV"jc /gV"jmKiw4gV"j \:gV"jkLgV"j[gV"j=NdgV"jZB*TAgV"jDh!GgV"j=/|gV"jPXEFgV"j_xԢ0_gV"j|:`gV"j/)#!hgV"ji]?bܺgV"jM0~!gV"j@".%gV"jygV"jr]n7gV"j #gV"j?mgV"jj O,k{gV"jAV64gV"jYYjvgV"jR,=ǡRgV"jJ>l3?gV"j_,=gV"jCZ5;@gV"j=gV"jcwֱYgV"j9%G$g$gV"jpc`JgV"j;xIgV"jU< gV"jX&DgV"jq5R"gV"j!'!ֺgV"jՙ_gV"jUהgV"j6|Vh~gV"j̊-gV"jvi%gV"jH2gV"jLva(gV"j"|VF)gV"jPnm#HgV"j259Z gV"j1EbLgV"je`\gV"jOC?'gV"j P D,gV"j]?-~gV"jku!zgV"jBdgV"jKȔ1L2gV"j3UI&AgV"j9rgV"jduPgV"jb\]gV"j^PgV"jx;}YgV"j":gV"j2; \(=gV"j^ʦgV"jM=gV"jTHgV"jgV"j/\`{gV"jpjgV"jsgV"j!gV"j}qgV"j5 |^lgV"jfWsgV"j sfFgV"jqy:gV"j 6MgV"j)sgV"j}Q}gV"j]E=JtnpgV"j?[SgV"j k(LgV"jK6WgV"jΗͲ7N-gV"j8pCBgV"jmK$TgV"jZ'iۋ-gV"j$hgV"j`{gV"jTMgV"jxÌbgV"j CgV"jDzɡgV"j[s+(YgV"jFpgV"j~aզ6wQgV"jY<5gV"jz$fD%gV"jX'^LgV"j]6 gV"j͆ }gV"jbqgV"j// gV"j[OgV"j?Q˅'`gV"j}AѥgV"jYgV"j*3EXxgV"j$agV"jc]aJgV"j>rgV"jbо#gV"jׂ9NgV"j} l#gV"j-gV"j8$bgV"jS.歸LgV"jMIgV"jrgV"j< ]o pgV"js:gV"j;V#gV"j 0IǙgV"jͻ$w0gV"j"!#C7QgV"jPq Sb&zgV"j35gV"jl QEgV"jgV"js"ߑV7gV"j\J 2gV"jq=gV"j& YgV"jXz1hgV"j$FNy gV"j{{Ϙr)gV"j,ϧ$'8JgV"jWaa7lgV"jFg`ԘgV"jOgV"j~bgV"j@Վ)y_gV"j0Z]R,gV"jqM98퐰gV"jxǔ gV"jKD~dGgV"jcungV"jOȮGrgV"j wxgV"jīhAgV"j/TbhRgV"jI̜gV"j~{q7tgV"j{AZgV"j3?G,gV"jgA`_gV"j[ *cVgV"j1'1gV"jf<3ZgV"jý:gV"j3{gV"jw1U̾?gV"jFL'6gV"j0&-ppgV"j xgV"j4Vp9rgV"jA gV"jo.ߔqgV"jM|DHMgV"jJwL$gV"jRg0vMgV"j%gV"jJxV*9gV"j rbgV"j ZgV"j IgV"j7Fn{gV"j6c>gV"j3ugV"j`ugV"jKC_JgV"j,w{TgV"jxtgV"jRH7ZgV"j~ұ+gV"j bТ7gV"j_)oRgV"j'gV"jv>=gV"j13k gV"j"suSo*gV"jSJ gV"jTLqgV"jc|lgV"jlg(gV"j HngV"j{JGcGqؑsN7: > 6U7 l<<,=y==>&???>@@@_AA'BBBFC3DPDmDD_EGFFFGGGGVH+IjI/J8KKLxMMNNdOPeQ2RRRgS_TUVWXXXgYaZ[0[[N\\m]]^^*__``a%bbbc.cLcc vf;hhqijhkllymmLnn+op r(rrsu&wwxx4yy1z\{{-|||C}}}~i~~,y\y'xm܅ra%EFb~ܒ{@x_ECaÜɟSà3p ]{G =Y;nױ XwDӶ.Bcڹ.fxڽjG.w\4DG. Z*h6~()n:Xv$Ee8SP;!B&ssAT< =v7:>DGbf hqM 0ȑe_Fp<\=>@ACEFGGHIhKEM@NQSWZ\#]i^_wa{bch1mqHx{]|}G~ ƃO>YБmigw$;)J8"FSdkQ%~X                                    "                                                  ###       !                    7:<==>:??R@@AA;BBBNC9DVDsDsEOFFG GGGG?I KKMNOQP QFRR STTUWXXZ[D[b\s]]^_abc4c`cafgh,ijkkmm`nn?oeqrr^s`uvwxxHyyEzp{{|||W}}}~~@ p;9g-!Lh!T(Ö"YIg˛%ϟgנGvc[^Cm˨*y ^JոHiBjڿ\p[Bhb-.1Ft@^*Kd}':Ly y:Q.6;7?7C7O7;; <<"<.<6<B<N<Z<f<<<&=]=s==>> ???"@8@@@YAAA!BBB)C?CCCD-DJDgDDE-ECEYEAFFFFG|GGGPHHHI%IdIIIJ)J2KiKKLLLFM\MrMMDNZNpNNN^OP_QQRR,RRRaSYTUVVWWmWWWWXXaY[ZZZZ [*[[\\2\H\\%];]Q]g]]]j^^^^$____{```yaaaab}bbb c(cFccpfh5hhkijbkdlzll;mGm]msmmFnn%oopqr"rrsu w wwTxjxxx.yy+z@{V{{{'|c|y||=}}}}~M~c~~&sV]sۂ !ʃrQgօ@Vl[{ǍӍߍPZdkuˏ׏)?@\x֒u: rܗY)?'=[zޚo {؞ßM-(>TjAWu+AȤԤ7S4hѱ<Rq>o̶ķܷ(&<]~Թ(`P\rԽNdA(qV.>A'Sc{r #Ld|H`/~_w!h#,h4Rp?_2M4J5<  |mWm%;N6!7Zp "*2:BJRZbjr (08@HPX`hpx $,4<DLTjrz 6>FNV^fnv~&.DLT\dlt} (08@HPX`hpx=7A7I7:;<<<(<4<<<H<T<`<n<<<.=c=y==>>&???(@>@@@aAAA'BBB/CHCCDD3DPDmDDE3EIE_EIFFFFGGGGXHHHI+IlIIJJJ:KoKKLLLLMbMxMMJN`NvNNN=PPgQQRR2RRRSTUVV]WsWWWXXYcZZZZ[0[[ \"\8\N\\+]A]W]m]]^p^^^^,____``aaaa'bbbbc.cLc[fg%hwhiqjkkjllAmMmcmymmLnn+op_qq rxrJsLuuwxwwZxpxxx4yy1zF{\{{|/|i|||C}}}}!~S~i~~,y\cy'ЃWmޅF\r3aٍ͍ 'U_ipzŏяݏ/Fb~ܒ{@xa/E-CauޞɟSà3.DZp G]{1G¤ΤڤX=Ys BXwDuʷϸ,BcĹڹ.hVVbzĽڽTƿHy\wpG.njSyMzSkO~f*o+2n:X=$EYt$:Pw !c&Fs]s+bu]4'=`v (08@HPX`hpx&.6>FNV^fnv~ "*2:BJRZpx&<DLT\dlt| $,4JRZbjr{&.6>FNV^fnv~<< =D=p==>>?h??@5@@@=AAAAhBBCS7TBUVVVjWWWWdXXZY9ZZZZ [#[~[[\/\E\\\8]N]d]}]]3^}^^^_S___```aaaab?bbbc!c?ccg2hh[ijIkkwllmZmpmm%nnoopqrrrsujvwwxgx}xxyy zzS{{{ |G|v||}}}} ~9~`~~mUۀAāp݃S'dSiAt<7Ws7ԓm 1S:&<n$:TrÚWƝI,ڟ2 ;Qgߢ#Tnܣ>tN&t OiaɶN׷9Uvѹ^̺9oѽ.a, SA+9|Kx ay],vr-tB}I['KiU7Xqn9I21G4{gT%j 8z0!uR4~6mg3Ap<<<0=i===>>Y???.@q@@.AcAAAYBBB5CRCC D!D;DXDuDD#E9EOEFQFFFG!GGG"HZHHIIJInII JJK\\\1]G]]]t]]^v^^^^.____```aaaa)bbbbc5ccg+hhKij9kkplllSmimmnnnbopfqqrrsu;vwww`xvxxxyylzL{{{|1|o||}t}}}~#~Y~~~]Eˀ1ioփC]Lb:j5"Mi"uޔNC*c 5d3Jh{ќG*П"|4J`wϢ Mḍ7z_DרdzH_ K{¶з׸2KlʹT)jh|ʽZ|C{1$R~lqZrVU%DR m,v3QuA_?p-N [^"v*@*eWM|wc|1d w_w<-n  f~`,:z>BG hqKYSӧ0ش<=Z==?l??@@@AAABlBB'CCD*DHDeDDE#FyFFFG5HHWII%KfKLCMM>NN@OPAQQyRRBS;TUyVQWWhXX^Y=ZZ'[[\\!]]]g^__Z``ua bybbc&cDcch`ijNkBll/mm*nn oorsuvwFxx yyz {{{%|[||#}}}~E~~ rZF3‚ăX<Cy&Œ ϕX—?sYwȚe\˝uߟ7"9s'+y6n"mٷ Z{ cѺ>4D1XF!>iPVQ;1{Hb_$`,Pn<]"sm79lV;#5&hV<=>;??S@@AA:U)Ė#Z̛&hؠH\n̨+!ָEkۿ]s^Eic./2Ge~;M;R/<=>=??T@@AA>BBwEGCIKKMNOUPQKRRSTUUWXX ZH[f\]^_abach/ijkkmmdnnDorascuvwxLyyKzt{||Y}}~~B t?V+Ŗ$]Л) k۠K]oͨ,"F mܿ^t_Fng33Hh<S0<=>,??D@@AA-BBeEG1IJK~MNNCPP8RRRSTUWXXXY6[T\]^_`abRc}hiwj kklmmRnn1o~rPsRuv~wx:yy7zb{|||I}}o~~2b- sxF~KÜYɠ9M_}4\̿Nb}vDM4 uZT6 8V,C |y&09w ~ (!/!9!C!M!!!!!! ""E### !!`!!!!"L#z#######<r=>7@A>CCD,D,EBEXEFHI$IIJ(J~KL[MqMYNoNNQR+RVlWWWZZ [\1\G\:]P]f]^^^__`aaab4hyl\mrmprwixxU{x|}b~r ߃fUk> (>&<Ÿ=SiV@Q˶÷۷';ӹqӽc-z"c{_.v3Il:6oi5CZ*,+/0"112V34<7\889;;0=o>N?@BEJRWY,Z[3\*]]^~_B`d/efhi.k(llmzn+oo#qrsstuvvzz/{ ||~u€Oԛ,٠phN)KhgYYIcCB + 6_#@)=**-]344%v5x #5ߪ۸ 34[56*+/0 112T34:7Z889;;.=m>L?@BE JRWY*Z[.\(]]^|_@`d-efhi,kllmxn)oo!qrsstuvvvz-{ ||~sdĕқ *נnfL'ݪIfeWGA@7ku 4]#>)8**-[334Z5X*3xz!6}ٸ++/0!112U34;7[889;;/=n>M?@BEJRWY+Z[2\)]]^}_A`d.efhi-k'llmyn*oo"qrsstuvvvz.{ ||~teŕӛ +ؠogM(ުJgfXHBA8l* 5^#?)<**-\3445Y*4xz"|6~ڸ==?w??@@HAB{BB0F=HdI2KLMNMOPNQ|RROS>TUVWuXXJZ[\]_i`bbchcijZkRlm>nnoorsuvwyy#z%{{|+}}~~zbNCʂ`ŅφΒ)ܕa˗H֚jٝE4*fٺF?9`N-usS-4K *{E$t=.n>6Ggq>LFƧ#˴# R S _    o789         789FGFGFG##### ## 7:l<,==?_AFCDGFGVHjI8KLMeQVaZ[\^*_`%bbYfgl]qw{-|}~܅1%_ V͸fxw~() ;WruaD`s[2CF{Rm{dIvCF{FaoX=j (,3:HOZaosz  ' . 5 < K S e t     ' ; ? F M U \ f t {    3 E I V Z a h o v }     $ , 4 8 @ H L T \ d k {    . 6 > Q Y a i r z    (08=EMU]emu}$).38=BGLQdinsx}19AIRjrz&+3;CKPX`hpx %-5GObt| )19AIQYafn} (0=BJYain/7AFNV^emw !)DLQYafnv~ (-5=BJRaiqy '6DIQaiw !).6=CIOU[agmsy  '.5<CJQX_fmt{ &-4;BGNU\cjqx#*18?FMT[bipw~$+29@GNU\cjqxCF{T|~fLyUII<11xnn6++2*&aVVPJ>>B8=227,, mcc]($NEVKK||>338--jypp0bXXZR {{H::?449.. neef_% TGG}xx@55zrrrl://1 `TTI<<~ww6;005** laa$& Cuq>Y#gV"jÞSXYmcore_intrinsicsderive_clone_copygV"jg]՟"  gV"jS4d<id>Y#gV"jyz:+x|?YgV"je>L]W>Y#gV"j}͊{d)gV"j8mbLQJ>Y#gV"jl'j\IR & gV"jk imE=>Y#gV"jt5P"0:#Y)gV"j.K $crate::cfg?YY$gV"jIƌ i8%d  gV"jPɷ'؝->Y#gV"jpPH>ކgV"j G!!>Y#gV"jSDI, l =gV"j9-̊UGp  fmt_helpers_for_deriveGGgV"jE rX =gV"j['*S> Y)gV"j,`:zgV"jk%eQ? Y)gV"ja տPGp  GGgV"jxfOk?YgV"j}%/E =gV"j'k=& gV"jXCQsOgV"jUU/'& gV"jlNҥ]]/gV"jPt8"b gV"juD!F  gV"j,^/!;)Vx?YgV"jKlN@p#  GGgV"j6Bʘ$2gV"jMGj0"Y)gV"jH{.ë$crate::assertw?YYgeneric_assert_internals&gV"jvȝzFJ0 =\  gV"j,oqk2 gV"j2Ol/vgV"jVg e^2 gV"j;*D5egV"jZwtUYQ2 gV"j|xxe -"gV"jX3%WMD2 gV"j16+9%4,Y &gV"jg$k4gV"j7`R6A72 gV"jm Cto>Y#gV"jd;vkp   GGgV"j߯*Й/  gV"j'Fy8Ghb>Y#gV"jp'vV)2 gV"jf ժtgV"j#2*l\U>Y#gV"jR> # 2 gV"j('(4$gV"jt_ XPH>Y#gV"j9h̒uPO%& gV"j!/э;gV"j:΃D;>Y#gV"jr {?YY &gV"jFp0  GGgV"jт(,>Y#gV"jlMgzgV"jK΀F3D >Y#gV"jetρ _ =gV"jw>V-"gV"j^yH/@  Y)gV"jt:gV"j_vXmgV"jjKbi%d  gV"j 7Oe}?YgV"jnìjY8 =gV"j}*[2& gV"jK9Xh=gV"jE5,,& gV"jBlv ?YY &gV"j#D;p8  GGgV"jѠS~gV"jÙ\tgV"jȊǤui#%d  gV"jv0gV"jCh%+Y)gV"jg:+gV"j"BԍmY &gV"jS^KidH w?YY$gV"jcΡp+  GGgV"j`?+U?YgV"jK)eR =gV"jT)V1~p5& gV"j}"%  =gV"jYL2Y &gV"j3gV"jU 6sm=Y fmt_internalsgV"jΕI2Mi %d  gV"jn$ %Ŗ  gV"j,">g`=Y gV"jJ.y?YgV"jX=vd[S=Y gV"jVy7n&4,gV"j6)FOF=Y gV"j毧޺i8 Y)gV"jq r;XgV"jvUC9=Y gV"jë7)T {?YY$gV"ji0%d  gV"jA&ԁ|+=Y gV"jxgV"j* =Y gV"jA+ggV"jK_ڴ54$Y &gV"jk27gV"j>;dKE={wwuqqkA7B8hb,[S  QJMD{D;|~}xrlZRtog`]W+!YQ PHC9smf_idNE-e^*)\U OF__log_module_pathrk>gV"jbf{j($ gV"j:[h__log_format_args*=gV"jSŗ2Gf^>gV"jhVMQ]($ gV"jҺ $ =gV"jl$ZQ>gV"j-\ debug_assertv">YgV"jS.gV"j ]C($ gV"jd~!VB7>gV"jAh8U\6($ gV"jrl>gV"j kʼneBQ*>gV"jFޓf_>gV"j2mE96 ($ gV"j޸z(im >gV"j&l&,ZR>gV"jH: ($ gV"j+?t">YgV"j+ 0 ƞNE>gV"j)%Z5B8>gV"j w&rl=gV"jJJ*>gV"jM؆Uf_=gV"jk68h >gV"j-{ZR=gV"jɳuv >YgV"j sFNE=gV"j[A+4B8=gV"jc}e]fhghefyg hRi~fhx7iheo;g~zheinfgieeffghhheTffgAhh~@fghi~.fdi~fhe~ffVg~h ffMgfg]%i~vfgg~_heT2g~Vh~8hhfge$fghh[iffpghIif_g~h@ifgh.iffDg~heK'ggqheBgg8i~.gg$h~f}~Jhr~Iffg/hhe7ffg&hmixvmyktwnczq ~#vRmxoZ|St%k w^nz)lfxos2X}ulcEsS}Ru/l{rivmyp}ukwoIr#j|tUk9q^#|!tjցcqdƃ{sjq&π1l{sFj\p„͂zzriUyp|tkwnz%rE~Tvmx|tPwn>zqu-mxo{sjv9ny?q}ulBxho{vsxjvnyp}ualx7lgV"j̊-gV"j, LgV"jG?N; 4 +gV"j 84gV"jDAgV"jRP4gV"jYSgV"jMIgV"j "lPYgV"jPnm#HŇgV"j$T=_gV"j#)xgV"j~+LgV"j ,H|hgV"j[ -ngV"jk-Il<gV"j'ʦu.2xJgV"j-_HzgV"jip/@gV"j// gV"jSf3CgV"jYw4CtwgV"j0NʧgV"j~aզ6wQgV"jH&y6 &gV"j9 84NigV"j;&NgV"jr]n{gV"jvyvTgV"jxCn{{hgV"j}qϡgV"j[s+(YgV"jN҂LA gV"j5 |^lgV"jxEFgV"jUQ2L}gV"jLl!GgV"j^]OڇgV"j[Ӌ|,gV"j6|Vh~gV"jduPgV"j3oϑ gV"j?ؒglgV"j(Ϩh'gV"j`gV"jKĔWgV"jбU'gV"jRT܅gV"j }cgV"jcؙ0uAgV"jZB*TABgV"j{AZOgV"jҀR 6gV"j.gV"j HngV"j sfFgV"jpإ,7gV"j=NdAgV"jڪOvgV"jbqgV"j^gV"jhP.H\gV"j }VAgV"j-wmf0gV"jTHgV"jp`Q(gV"jJxVgV"jCo`gV"jhOegV"jZ-Tw$gV"j8e˘$L8gV"jn`gV"j Τ$gV"jv>=gV"jdg0gV"jpc`JygV"jBdf3gV"jB EgV"jo.ߔq]gV"jLva(gV"jpժTgV"jՖFogV"jY֥mցgV"j_,=tgV"jIo_gV"j3{VgV"j]6 gV"je`\NJgV"j2gV"j6@gV"j.W,p& gV"jzlXgV"j\J 20gV"j “(FugV"j#' ǫgV"j&(gV"j`ugV"jЃw8gV"j} l#gV"jTVgV"j?DgV"jfd4gV"jUהgV"jYgV"jTLqgV"j9^gV"j^PgV"j%vgV"jQتgV"j4GpggV"jU< {gV"jv9|8gV"j} g/ggV"j{ q ngV"jo)A YgV"j9Ce gV"jxAG}sgV"jFu 3gV"j÷%&gV"j IgV"j%agV"jp Y[gV"j)}gV"j4Vp9r[gV"j|)6DgV"jq2iagV"j3UgV"j*H:gV"j*z5kigV"jxel"pIgV"j/)#!hHgV"j$ahgV"j$1o%MgV"j,ϧ$'8J6gV"j/iH?)Q7 gV"jSV - agV"j@".%KgV"j082MqgV"jA 3\gV"j76zgV"j 6MgV"jqM98퐰=gV"j ։9a(gV"jFL'6XgV"jC?NgV"jaƠ@_ gV"jS)-A j$agV"jaBmlgV"j/lWD6gV"jFz*gV"jVIHgV"jULE*zgV"jEMgV"jO٘=gV"j2DQ9WgV"jP=RIgV"jl QEgV"j.YgV"j>2Z9ŧgV"jbԵ\gV"j\_cgV"j AobjkgV"jh|c2gV"jhd}G,gV"jz$fD%gV"jgA`_QgV"jDh!GCgV"j"l]gV"jnrgV"j< ]o pgV"jtqgV"j]XtY(gV"jRg0vM`gV"jVwa _gV"jhwy㧏gV"jx*gV"jQFzugV"j;xIzgV"j wxJgV"j7Fn{gV"jM0~!JgV"jxtѐgV"jku!zgV"jӘ1EqgV"jP넥y`gV"jy3Em gV"jyLgV"j!ψ2qgV"jܭ^AgV"jRC/&gV"jFNmJgV"j259Z gV"jTmQgV"j}AѥgV"j\I쑍;#gV"j(a gV"j@Վ)y_;gV"jDb gV"jīhAKgV"jɴ gV"jzbi)gV"jն6gV"j%%RgV"j}Q}gV"j\gV"j}Tڟ0>,gV"j$9?.VDgV"jX&D|gV"j^QgV"j`jʣwBgV"j98NӅ"gV"jԂU$9gV"jI̜MgV"jR윕9ggV"j6c>gV"j⤪فgV"js:gV"jA \gV"j;C,gV"j: 9RgV"jcwֱYwgV"j5gV"j$FNy 4gV"j'RwYgV"j-.gV"jkL?gV"j35gV"jso<gV"j=nbgV"j5tzŽ A|gV"j*оUBQgV"j!gV"j) sgV"jp܈gV"jވuD?gV"j#U2=4ogV"jDzɡögV"jM=gV"ju]ҺgV"j`=gV"j'gV"jϥMmgV"j(睇-gV"j~ұ+gV"j Q( gV"jQ5gV"j [gV"j O^gV"jyݍ1c(gV"j\Mx gV"jh؍3gV"jdgV"j2; \(=gV"j:a~gV"jeߡ|*gV"jq=1gV"j& Y2gV"jPXEFEgV"jdyWYgV"j1g>LgV"jS.歸LgV"jCZ5;@ugV"jXz1h3gV"j)qL8EygV"je+gV"j?mngV"j+exgV"jef/gV"j":gV"jL$Ay gV"j[@gV"j>WgV"jJǡ9gV"jlg(gV"jIj 4gV"jw ^agV"j32vgV"j?:-gV"j6+n&ggV"jmgV"j ({'gV"jʭFuQgV"j"|VF)gV"jڰ(0gV"j$agV"j1'1SgV"j0&-ppYgV"jYtgV"j"[gV"j P D,gV"j!'!ֺ~gV"j2-)$7gV"jvi%gV"j5|f'LPgV"jJy -gV"jf_J.rDgV"j[@-/4 gV"j50fLgV"jH{1SggV"jf<3ZTgV"j:24^gV"jAV64pgV"jΗͲ7N-ǭgV"j~{q7tNgV"jaӌ;ncYgV"jŶ0N` gV"jfptARUgV"j.AMcgV"j8pCBgV"jVE:_gV"jտF,gV"jQ0gV"jq5R"}gV"j[Ss]gV"jqTgV"jtVUJgV"jTMgV"j!TdgV"jT3T^lgV"j ZވgV"j]lgV"jb\]gV"jJ_zRgV"jFg`Ԙ8gV"jkhaڹڠgV"jo8b* gV"jԄ$Mb^ugV"jpdgV"jP]eF@5gV"j.K#eVgV"jPq Sb&zgV"j LSh"8(gV"j/TbhRLgV"j grgV"jkggV"jn@km2ĪgV"j n.I)gV"jrgV"jz uht xgV"j/Kzr gV"j`{gV"j:~v|gV"jJ•NnU gV"j%:/gV"j9*gV"jކj2gV"jllygV"j!{ZgV"jW6ω XgV"jъvgV"j/gV"jt >nHgV"j՟ލg$gV"j61WK~GgV"jb/gV"jÑgV"jt4R/z-gV"jrN gV"j;>QgV"jý:UgV"j(ŠgV"jQ:-"Ŏ8gV"jSigV"jŗso*>.gV"jV *V&gV"jY'+`gV"jqy:¥gV"j \:>gV"jBV gV"j8Y2[gV"jJ~JgV"jCղ$KgV"j(쳾-gV"jO7fgV"j[ *cVRgV"j\сgV"j4Ӿ.\:gV"jB!gV"j}*gV"j~b:gV"jArb~gV"j˚'FgV"jw"XgV"j rbgV"jMU>}!gV"jzEgV"jKD~dG?gV"jw1U̾?WgV"jg+z~XgV"jhͮgV"juV6gV"j@RUgV"jߖYӂgV"j_)oRgV"j*(ZagV"jC7"QgV"j!Gc{gV"jۢgV"j!KgV"j"`߾ggV"j{A4@gV"j[PudgV"jc|lƛgV"j[pX,VgV"j(1>gV"j6r3UgV"jjgV"j܆gV"j^ʦgV"j͆ }gV"jAiܞ%gV"jBI)gV"jGcfgV"jQVmHgV"jM­j/gV"j$K.FgV"jc]aJgV"j?s2SgV"j+r:gV"jYYjvqgV"jY<5gV"jՙ_gV"jL gV"j?7bgV"jW+7gV"jzhgV"j'-CgV"j:"?LcgV"j gV"j! E\gV"jSJ gV"jUc6?,gV"jOC?'gV"js کgV"jJ>l3?sgV"jI"gV"j񩕹sEigV"jP׈ ׾gV"jvgV"j #mgV"ji3;gV"jp%YgV"j(0gV"jR,=ǡRrgV"j<gV"jO9gV"j"#HgV"jb#{'gV"jgI$^ZgV"j9%G$g$xgV"jmK$TgV"j$3UgV"j4D(g gV"jͻ$w0gV"jőCk'U'%gV"j>*9gV"jj O,k{ogV"j]?-~gV"ja<t-dpgV"j? /cVgV"jgro#G gV"j%U:1gV"jht2sFgV"j{<2igV"jKn4K܂YgV"jb1S/cgV"jH2gV"j13k gV"j?-8s-OgV"jk"/9:gV"jׂ9NgV"j:&gV"j6bO_@ gV"jP<gV"j2ftB:+2gV"j3LAgV"j(<~gV"j ѝCOgV"j"!#C7QgV"j޳C.wgV"jFpgV"j3UI&AgV"j0vJVgV"jiNKǦgV"jKȔ1L2֐gV"jY O^FgV"jҘP{gV"j*HP gV"j"suSo*gV"jk~UAgV"jK6WجgV"j*3EXxgV"jRH7ZgV"jXT[!gV"j?[SgV"j鶡^gV"j19_Z.gV"j/\`{gV"jWaa7l7gV"jLd;rgV"j%3 ehx%gV"jE/fogV"j'wpdCvigV"jMlh kgV"jZ'iۋ-gV"jݠ,ecggV"j2)k74tgV"jxDlTgV"jUFk>#gV"jNhnnSgV"jzogV"jt_$k#gV"jcנqsgV"jֵ2lOjjgV"jC[vWL/gV"jvw,gV"jriBxG gV"j,w{TgV"j B7|mfgV"j&_ }crgV"jB/}3SgV"jP9+/gV"j?T*kGgV"j8`gV"j+gV"jw\kWgV"jaAS,;gV"j?Q˅'`gV"jc /<gV"jDx4UgV"j85(egV"j­ώ[{]gV"jjڎGgV"js"ߑV7/gV"j sQ;4LgV"j;V#gV"j zז+xsgV"j[FBsgV"j|:`GgV"j}qGgV"j2+}OmgV"jۊ O*egV"jeuBgV"jg@gV"j{ gV"j_xԢ0_FgV"jpjgV"jO K!gV"j2kICgV"jƹĝ%vgV"j"QŸ/ەgV"jZ#vgV"j˻gV"jOȮGrIgV"jR>Ô7gV"jŢس]gV"jsm搲gV"jwЖ;gV"j3] gV"j3ugV"jNS}>##gV"j)sקgV"j xZgV"j"{fgV"j-?'gV"jA8XHgV"jnOgV"jmKiw4=gV"j{{Ϙr)5gV"jk3s;}gV"j~$" gV"jãH1gV"js ^gV"jб2gV"jbо#gV"jgV"j'miˈw\gV"j k(LgV"jf@?#gV"j^6]jgV"jJhηJgV"jʴ ~gV"jg4gV"j bТ7gV"j_ <gV"j>+7,)gV"j`Tٷ]gV"jzLٛgV"j=/|DgV"jx;}YgV"jޯggV"jX'^<gV"jd\寝gV"j"}懭gV"jfWsgV"j 0IǙgV"jgV"j皳FgV"jv7F ,MgV"jܟCGngV"jFPGm1gV"j'fgV"j{:PgV"jJJsgV"jV36.gV"jۚ}gV"jKC_JgV"j9W`gV"j# gV"j2LgV"j=v!Np|@vcsP$,b\q>76<$i_:e('[ #Gt^SK8`nVD} [Hm$)P@H_@F$V`to ErU =z g 6"I#{D?t`6ga*k[EL]^7D\;fJyvtA"H2ujXfb1rh)Y'W&b3M3"fpU\ktvcGP,tDUv:QKuG8NC;U3i L9U]G-{|B*48jM%@L^B.=&Xb|kk6OEp\iL|$^xSnm?#/# XdUdE^Ew/SZ_<=mh=806Kb % Rg/R]gX|]Q+"Q!B]g@gzLEPCM_&R! DOaZi]mdO(`vw@rzpY+&& 4<6<U[u$v7 Pby n;B3E:k8 A^HNE~D3-gcC,30*pOiFC &vsoC`Lm:{ I=Q)9zU$s>*|56=jt xBP=g(glGATabI%^G+QkdUb,Fv"#,ufv0(|Y%RW:crrnSMOQ5K^SGV/S 1E"z ym"k;|,a)yI$@ewq ~?a+JQ#A?pE{B~jM| wc'(K @YkW{GZl%h]^t!Np|@vX/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ena-0.14.2/src/lib.rs &pP;%4pA?#EB@A$E / f{B_0<<0.4 ;<;/4E@6*/HQKU43!878+3<2;%<9< BF5+GDV-6$* =4DF&GJ@! !F" E L=B'8 +6GGEAGDS?--C&& F324%24%K$B-A$>AEE GBG1;3 ;6 M"1nF # "0AB8 (1EG8 (2KB +5, (@CX  88 _7E!R  8E>DF3 %F; 0%L=/N(RJ&& rO2^rfta/home/steffen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ena-0.14.2/src/snapshot_vec.rs .wFhQqM%FhA?#EB@A$ddFZ^c]_7+3F"N."F..% S((%))!-))!6@<2 A(+/B0# C:e"*" Yaa5]K !&" L-+*" F!3%`]?)A3:)\$$0 / 6%  .  c>Q): @DN*O*,+ 7 #)@: .#*@,6 ^AE'AE@@1U%X1\1_=P) *-&+ K B)-" 2&8. #+