$ od -c -N 50000 [Indigo]<Spruce>12>sources>spruceutils.sr!1 0000000 / / S p r u c e U t i l s . B 0000020 c p l - - U t i l i t i e s 0000040 ( s w a p p a b l e i n S 0000060 p r i n t ) \r / / E r r o r s 0000100 1 0 0 ( o l d S p r u c e 0000120 ) , 2 5 0 0 \r \r / / g e t " 0000140 S p r u c e . D " \r g e t " s 0000160 p r u c e F o n t . d " \r g e t 0000200 " s p r u c e d o c . d " \r g 0000220 e t " s p r u c e m i s c . d 0000240 " \r g e t " S p r u c e f i l 0000260 e s . D " \r g e t " A l t o f 0000300 i l e S y s . D " \r g e t " P 0000320 r e s s F i l e . D " \r \r c o m 0000340 p i l e i f n e w n a m e S 0000360 p r u c e S w t h e n [ m 0000400 a n i f e s t [ S p r u c e 0000420 S w = t r u e ] ] \r m a 0000440 n i f e s t S p r i n t S w 0000460 = n o t S p r u c e S w \r \r 0000500 / / d e f i n e d h e r e \r 0000520 e x t e r n a l \r \t [ \r \t C o m 0000540 m e n t \r \t D b l S h i f t \r \t 0000560 D i s a b l e C o m m e n t s \r 0000600 \t E n a b l e C o m m e n t s \r 0000620 \t F i l l I n N a m e s \r \t F i 0000640 n d E r r o r M e s s a g e \r \t 0000660 F o r E a c h \r \t F S G e t \r \t 0000700 F S G e t X \r \t F S I n i t \r \t 0000720 F S P u t \r \t P a g e T o P \0 006 0000740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0000760 \0 \0 001 336 \0 \0 \0 \0 9 | 001 | 366 357 370 366 0001000 o s \r \t P o s T o P a g e \r \t R 0001020 p a g e T o V p a g e \r \t W s s 0001040 \r / / S p r i n t o n l y : 0001060 \r \t E m e r g e n c y A v e r t 0001100 e d / / f u n c t i o n t 0001120 h a t t r i e s t o a v e 0001140 r t s t o r a g e e m e r g 0001160 e n c y , a n d r e p o r t 0001200 s s u c c e s s \r \t E m e r g 0001220 e n c y O v e r / / f u n c 0001240 t i o n t h a t r e s t o r 0001260 e s e m e r g e n c y r e a 0001300 c t i o n c a p a b i l i t y 0001320 \r \t e m e r g e n c y S t o r a 0001340 g e / / i f t h i s s t 0001360 a t i c i s 0 , E m e r g 0001400 e n c y A v e r t e d w i l l 0001420 f a i l . \r \t ] \r \r / / i n 0001440 c o m i n g p r o c e d u r e 0001460 s \r e x t e r n a l \r \t [ \r 0001500 / / O S \r \t C l o s e s \r \t D 0001520 e f a u l t A r g s \r \t E n d o 0001540 f s \r \t F i l e L e n g t h \r \t 0001560 G e t s \r \t M o v e B l o c k \r 0001600 \t P u t s \r \t R e t u r n F r o 0001620 m \r \t S e t B l o c k \r \t S y s 0001640 E r r \r \r / / S p r u c e 0001660 F i l e s , S p r u c e S t r 0001700 e a m s \r \t C u r r e n t P o s 0001720 \r \t F i l e L e n g \r \t I n \0 006 0001740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0001760 \0 \0 001 336 376 \0 \0 \0 7 | 001 | 366 357 370 366 0002000 i t S p r u c e F i l e \r \t R e 0002020 s e t S p r u c e F i l e \r \t S 0002040 e t u p W i n d o w S t r e a m 0002060 \r \t W i n d o w C r e a t e S t 0002100 r e a m \r \t W i n d o w R e a d 0002120 B l o c k \r \t W i n d o w S e t 0002140 P o s i t i o n \r \t W i n d o w 0002160 W r i t e B y t e \r \r / / 0002200 S p r u c e U t i l s R e s \r \t 0002220 M a x ; M i n ; M u l D i v 0002240 \r \t S p r u c e E r r o r \r \r 0002260 / / S p r u c e M l \r \t D o 0002300 u b l e S u b \r \t D o u b l e A 0002320 d d \r \t U g t \r \t D o u b l e C 0002340 o p \r \r / / A l l o c \r \t 0002360 A d d T o Z o n e \r \t A l l o c 0002400 a t e \r \t F r e e \r \t I n i t i 0002420 a l i z e Z o n e \r \r / / 0002440 Q u e u e s \r \t D e q u e u e \r 0002460 \r / / S t r i n g U t i l s \r 0002500 \t S t r i n g C o m p a r e \r \r 0002520 / / T e m p l a t e \r \t P 0002540 u t T e m p l a t e \r \t ] \r \r / 0002560 / i n c o m i n g s t a t i 0002600 c s \r e x t e r n a l \r \t [ \r \t 0002620 c o m m e n t F r e e \r \t c o m 0002640 m e n t s \r \t D e b u g S y s t 0002660 e m \r \t E r r o r F i l e \r \t n 0002700 u m C o m m e n t s \r \t s y s D 0002720 i s k \r \t V e r b o s e \r \t \0 006 0002740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0002760 \0 \0 001 336 374 \0 \0 \0 5 | 001 | 366 357 370 366 0003000 F S T r a p \r \t S p r u c e Z o 0003020 n e ; O v e r l a y T o p ; 0003040 P e r m a n e n t B o t t o m \r 0003060 \t M o r e L o w ; M o r e H i 0003100 g h / / ( S p r u c e O n 0003120 l y ) \r \t ] \r \r c o m p i l e i 0003140 f S p r i n t S w t h e n \r 0003160 \t [ s t a t i c [ e m e r 0003200 g e n c y S t o r a g e ] \r \t 0003220 m a n i f e s t [ E S 0003240 t o r a g e S i z e = 1 5 0 0003260 0 ] ] / / o n e l a r 0003300 g e s t d i s k b u f f e r 0003320 + a l i t t l e \r \r / / 0003340 P r o c e d u r e s \r \r l e t 0003360 P o s T o P a g e ( p o s , p 0003400 P a g e , p C h a r s , i t 0003420 e m S i z e , s p r u c e F i 0003440 l e ) b e \r \t [ \r \t / / p o 0003460 s i n t e r p r e t e d i n 0003500 t e r m s o f i t e m S i 0003520 z e \r \t l e t l n I S = i 0003540 t e m S i z e - 1 / / l n 0003560 i t e m S i z e \r \t l e t l n 0003600 E P P = ( s p r u c e F i l 0003620 e > > S P r u c e F i l e . l n 0003640 P a g e S i z e + 1 ) - l n I S 0003660 / / l n e n t r i e s / p 0003700 a g e \r \t @ p P a g e = p o 0003720 s > > F P O S . m s A d d r \0 006 0003740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0003760 \0 \0 001 336 372 \0 \0 \0 3 | 001 | 366 357 370 366 0004000 l s h i f t ( 1 6 - l n E P 0004020 P ) + \r \t p o s > > F P 0004040 O S . l s A d d r r s h i f t 0004060 l n E P P + 1 \r \t @ p C h a r 0004100 s = ( p o s > > F P O S . l 0004120 s A d d r & ( - 1 r s h i 0004140 f t ( 1 6 - l n E P P ) ) ) 0004160 l s h i f t l n I S \r \t ] \r \r 0004200 a n d P a g e T o P o s ( p o 0004220 s , p a g e , c h a r s , 0004240 i t e m S i z e , s p r u c e 0004260 F i l e ) = v a l o f \r \t [ 0004300 \r \t / / p r o d u c e p o s 0004320 i n t e r m s o f i t e 0004340 m S i z e \r \t l e t l n I S 0004360 = i t e m S i z e - 1 / / 0004400 l n i t e m S i z e \r \t l e t 0004420 l n E P P = ( s p r u c e 0004440 F i l e > > S P r u c e F i l e 0004460 . l n P a g e S i z e + 1 ) - l 0004500 n I S / / l n e n t r i e 0004520 s / p a g e \r \t p a g e = p 0004540 a g e - 1 / / A l t o f i 0004560 l e s s t a r t p a g e 1 0004600 \r \t p o s > > F P O S . m s A d 0004620 d r = p a g e r s h i f t 0004640 ( 1 6 - l n E P P ) \r \t p o s 0004660 > > F P O S . l s A d d r = 0004700 p a g e l s h i f t l n E P 0004720 P \r \t p a g e , c h a r s \0 006 0004740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0004760 \0 \0 001 336 370 \0 \0 \0 1 | 001 | 366 357 370 366 0005000 = 0 , c h a r s r s h i 0005020 f t l n I S \r \t D o u b l e A 0005040 d d ( p o s , l v p a g e ) 0005060 \t / / M a y o v e r f l o w 0005100 a n d i n c r e m e n t m 0005120 s A d d r 2 - 2 2 - 7 8 \r \t r 0005140 e s u l t i s p o s > > F P O 0005160 S . l s A d d r \r \t ] \r \r a n d 0005200 F S I n i t ( ) b e \r 0005220 [ \r / / M a x i m u m 0005240 s i z e o f a n i n d i 0005260 v i d u a l b l o c k i s 0005300 3 2 K . B u t w e c a n 0005320 g i v e t w o b l o c k s \r 0005340 / / t o F S p a c 0005360 k a g e . T h e y w i l l 0005400 n e v e r b e m e r g e d 0005420 . \r l e t l e n = P e 0005440 r m a n e n t B o t t o m - O v 0005460 e r l a y T o p - 1 \r l 0005500 e t f l e n = l e n \r 0005520 i f U g t ( f l e n , # 7 7 0005540 7 7 6 ) t h e n f l e n = # 0005560 7 7 7 7 6 \r S p r u c e 0005600 Z o n e = I n i t i a l i z e Z 0005620 o n e ( O v e r l a y T o p + 1 0005640 , f l e n , S y s E r r , 0005660 ( ( D e b u g S y s t e m & # 1 0005700 0 0 0 0 ) n e 0 ? S y s E 0005720 r r , 0 ) ) \r i f \0 006 0005740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0005760 \0 \0 001 336 366 \0 \0 \0 / | 001 | 366 357 370 366 0006000 l e n - f l e n g r 3 0 t 0006020 h e n \r \t [ \r \t l e t b = O v 0006040 e r l a y T o p + 1 + f l e n + 0006060 1 0 \r \t A d d T o Z o n e ( S p 0006100 r u c e Z o n e , b , l e n 0006120 - f l e n - 1 0 ) \r \t ] \r 0006140 / / C l i e n t m a y h 0006160 a v e a n o t h e r h u n k 0006200 o f u s a b l e s p a c e 0006220 l y i n g a r o u n d \r 0006240 c o m p i l e t e s t S p 0006260 r u c e S w t h e n [ i f 0006300 M o r e L o w t h e n A d 0006320 d T o Z o n e ( S p r u c e Z o 0006340 n e , M o r e L o w , M o r 0006360 e H i g h - M o r e L o w ) ] 0006400 \r o r [ e m e r 0006420 g e n c y S t o r a g e = F 0006440 S G e t ( E S t o r a g e S i z 0006460 e ) ] \r ] \r \r a n d 0006500 F S G e t ( S i z e , z 0006520 o n e , v a l u e ; n u m a 0006540 r g s n a ) = v a l o f \r 0006560 [ \r \t D e f a u l t A r g s ( 0006600 l v n a , 1 , S p r u c e 0006620 Z o n e , - 2 ) \r \t l e t p 0006640 t r = A l l o c a t e ( z o n e 0006660 , S i z e , - 1 ) \r \t u n l 0006700 e s s p t r r e s u l t i s 0006720 0 \r \t i f p t r e q \0 006 0006740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0006760 \0 \0 001 336 364 \0 \0 \0 - | 001 | 366 357 370 366 0007000 F S T r a p t h e n S p r u 0007020 c e E r r o r ( 1 0 3 ) \r \t i f 0007040 v a l u e n e - 2 t h e 0007060 n S e t B l o c k ( p t r , v 0007100 a l u e , S i z e ) \r \t r e s u 0007120 l t i s p t r \r ] \r \r a n d 0007140 F S G e t X ( S i z e , z 0007160 o n e , v a l u e ; n u m a 0007200 r g s n a ) = v a l o f \r 0007220 [ \r \t D e f a u l t A r g s ( 0007240 l v n a , 1 , S p r u c e 0007260 Z o n e , - 2 ) \r \t l e t p 0007300 = F S G e t ( S i z e , z o n 0007320 e , v a l u e ) \r \t i f p 0007340 e q 0 t h e n \r \t \t [ \r \t 0007360 \t c o m p i l e i f S p r i n 0007400 t S w t h e n [ i f E m 0007420 e r g e n c y A v e r t e d ( z 0007440 o n e ) l o o p ] \r \t \t S p 0007460 r u c e E r r o r ( 1 0 4 ) \r \t 0007500 \t ] \r \t r e s u l t i s p \r 0007520 ] r e p e a t \r \r a n d F S 0007540 P u t ( p t r , z o n e ; n 0007560 u m a r g s n a ) = v a l 0007600 o f \r [ \r \t i f p t r e 0007620 q F S T r a p t h e n S p 0007640 r u c e E r r o r ( 1 0 3 ) \r \t 0007660 F r e e ( ( n a < 2 ? S p 0007700 r u c e Z o n e , z o n e ) , 0007720 p t r ) \r \t r e s u l t i \0 006 0007740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0007760 \0 \0 001 336 362 \0 \0 \0 + | 001 | 366 357 370 366 0010000 s 0 \r ] \r \r a n d E m e r 0010020 g e n c y A v e r t e d ( z o n 0010040 e ) = v a l o f \r \t [ c o 0010060 m p i l e i f S p r i n t S w 0010100 t h e n [ \r \t i f e m e r 0010120 g e n c y S t o r a g e e q 0010140 0 % z o n e n e S p r u 0010160 c e Z o n e r e s u l t i s 0010200 f a l s e \r \t e m e r g e n c y 0010220 S t o r a g e = F S P u t ( 0010240 e m e r g e n c y S t o r a g e 0010260 ) / / 0 \r \t r e s u l t i s 0010300 t r u e \r \t ] ] \r \r a n d 0010320 D b l S h i f t ( d b l w o r d 0010340 l v , a m o u n t ) = v a l 0010360 o f \r [ \r \t t e s t a m o u 0010400 n t l s 0 t h e n \t / / L 0010420 e f t s h i f t \r \t [ \r \t 0010440 a m o u n t = - a m o u n t 0010460 \r \t l e t t e m p = ( d 0010500 b l w o r d l v ! 1 ) r s h i 0010520 f t ( 1 6 - a m o u n t ) \r \t 0010540 @ d b l w o r d l v = ( @ 0010560 d b l w o r d l v l s h i f t 0010600 a m o u n t ) + t e m p \r \t 0010620 d b l w o r d l v ! 1 = ( d 0010640 b l w o r d l v ! 1 ) l s h i 0010660 f t a m o u n t \r \t ] \r \t o 0010700 r \r \t [ \r \t l e t t e 0010720 m p = @ d b l w o r d l v \0 006 0010740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0010760 \0 \0 001 336 360 \0 \0 \0 ) | 001 | 366 357 370 366 0011000 l s h i f t ( 1 6 - a m o u n 0011020 t ) \r \t @ d b l w o r d l 0011040 v = @ d b l w o r d l v r s h 0011060 i f t a m o u n t \r \t d 0011100 b l w o r d l v ! 1 = ( ( d b l 0011120 w o r d l v ! 1 ) r s h i f t 0011140 a m o u n t ) + t e m p \r \t 0011160 ] \r \t r e s u l t i s d b l w 0011200 o r d l v ! 1 \t / / l o w o r 0011220 d e r 1 6 b i t s \r ] \r \r 0011240 a n d R p a g e T o V p a g e 0011260 ( s p r u c e F i l e , p a g 0011300 e N u m b e r ) = v a l o f 0011320 \r \t [ \r \t / / T h e i n v e 0011340 r s e , V p a g e T o R p a g 0011360 e , i s i n S p r u c e F 0011400 i l e s M l . a s m \r \t / / G 0011420 i v e n p a g e N u m b e r 0011440 w i t h i n s p r u c e F i l 0011460 e ' s s u p e r F i l e , d 0011500 e t e r m i n e i t s \r \t / / 0011520 l o g i c a l p o s i t 0011540 i o n w i t h i n s p r u c 0011560 e F i l e . D o n o t c o 0011600 m p l a i n i f t h e \r \t / 0011620 / r e s u l t i s l a 0011640 r g e r t h a n s p r u c e 0011660 F i l e . n u m P a g e s ( g 0011700 a r b a g e f o r b a c k w 0011720 a r d s f i l e ) \r \t i f \0 006 0011740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0011760 \0 \0 001 336 356 \0 \0 \0 ' | 001 | 366 357 370 366 0012000 p a g e N u m b e r l e 0 0012020 % p a g e N u m b e r > 0012040 s p r u c e F i l e > > S P r u 0012060 c e F i l e . m a x P a g e s 0012100 t h e n \r \t \t S p r u c e E r r 0012120 o r ( 2 5 0 0 ) \r \t l e t r e 0012140 s u l t = p a g e N u m b e 0012160 r - s p r u c e F i l e > > 0012200 S P r u c e F i l e . o f f S e 0012220 t \r \t i f r e s u l t l e 0012240 0 t h e n r e s u l t = 0012260 r e s u l t + s p r u c e F i l 0012300 e > > S P r u c e F i l e . m a 0012320 x P a g e s \r \t i f s p r u c 0012340 e F i l e > > S P r u c e F i l 0012360 e . b a c k w a r d s t h e n 0012400 \r \t r e s u l t = s p 0012420 r u c e F i l e > > S P r u c e 0012440 F i l e . n u m P a g e s + 1 - 0012460 r e s u l t \r \t r e s u l t i s 0012500 r e s u l t \r \t ] \r \r a n d 0012520 F i l l I n N a m e s ( s , d 0012540 o c , f i l e , p D o c D i 0012560 r ; n u m a r g s n a ) = 0012600 v a l o f \r [ \r 0012620 / / O b t a i n c r e a t 0012640 o r a n d f i l e n a m e 0012660 s t r i n g s f r o m p r 0012700 e s s f i l e \r / / 0012720 s n e 0 : s i s a \0 006 0012740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0012760 \0 \0 001 336 354 \0 \0 \0 % | 001 | 366 357 370 366 0013000 s t r e a m \r / / s 0013020 e q 0 : m u s t o p e n 0013040 a s t r e a m o n f i l 0013060 e \r / / r e s u l t s 0013100 t o p r o p e r p l a c e 0013120 s i n d o c > > D o c G . . 0013140 . . \r / / r e t u r n 0013160 s 0 i f a l l i s w e 0013200 l l , e l s e S p r u c e 0013220 E r r o r c o d e \r / 0013240 / i f p D o c D i r a r g 0013260 i s p r e s e n t , p l a 0013300 c e s P r e s s D o c u m e 0013320 n t D i r . p o i n t e r 0013340 i n @ p D o c D i r \r 0013360 l e t p r e s s L e n g t h 0013400 = v e c 1 \r l e t 0013420 n e w S t r e a m = s e q 0013440 0 \r u n l e s s n e 0013460 w S t r e a m d o f i l e 0013500 = s > > S S . s p r u c e F i 0013520 l e \r i f ( F i l e L 0013540 e n g ( f i l e , p r e s s L 0013560 e n g t h , c h a r I t e m ) 0013600 & 1 ) n e 0 r e s u l t i 0013620 s 6 1 1 / / o d d l e n 0013640 g t h f i l e \r i f 0013660 n e w S t r e a m t h e n s 0013700 = W i n d o w C r e a t e S 0013720 t r e a m ( f i l e , k s \0 006 0013740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0013760 \0 \0 001 336 352 \0 \0 \0 # | 001 | 366 357 370 366 0014000 T y p e R e a d O n l y ) \r 0014020 l e t D o c D i r = F S G 0014040 e t X ( P r e s s R e c o r d S 0014060 i z e + 3 ) / / ~ ~ k n o 0014100 w n t o b e s i z e o f 0014120 f i l e b u f f e r , r e 0014140 d u c e s t h r a s h i n g \r 0014160 l e t r e s u l t = 0014200 v a l o f \r \t [ \r \t F i l e L 0014220 e n g ( s > > S S . s p r u c e 0014240 F i l e , p r e s s L e n g t 0014260 h , w o r d I t e m ) \r \t D o 0014300 u b l e S u b ( p r e s s L e n 0014320 g t h , t a b l e [ 0 ; P 0014340 r e s s R e c o r d S i z e ] 0014360 ) \r \t i f p r e s s L e n g t 0014400 h ! 0 l s 0 r e s u l t i 0014420 s 6 0 0 \r \r \t W i n d o w S e 0014440 t P o s i t i o n ( s , p r e 0014460 s s L e n g t h ) \t / / G e t 0014500 t o d o c d i r . \r \t W i n 0014520 d o w R e a d B l o c k ( s , 0014540 D o c D i r , P r e s s R e c 0014560 o r d S i z e ) \r \r \t u n l e s 0014600 s D o c D i r > > D D V . P a 0014620 s s w d e q P r e s s P a s 0014640 s w d r e s u l t i s 6 0 2 0014660 \r \t i f ( l v d o c > > D o 0014700 c G . C r e a t S t r ) > > S T 0014720 R . l e n g t h e q 0 \0 006 0014740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0014760 \0 \0 001 336 350 \0 \0 \0 ! | 001 | 366 357 370 366 0015000 d o \t \t \t / / u n l e s s f 0015020 i l l e d b y P l i s t \r \t 0015040 \t [ M o v e A n d S u p p r e 0015060 s s ( l v d o c > > D o c G . 0015100 C r e a t S t r , l v D o c 0015120 D i r > > D D V . C r e a t S t 0015140 r , s i z e D o c G . C r e 0015160 a t S t r / 8 ) ] \r \t c o m p 0015200 i l e i f S p r u c e S w t 0015220 h e n [ / / t h e s e a 0015240 r e E L a n d D L , o r 0015260 s o m e t h i n g , i n 0015300 S p r i n t ! ! ! \r \t \t d o c > 0015320 > D o c G . n P a r t s = M 0015340 a x ( D o c D i r > > D D V . n 0015360 P a r t s - 1 , 1 ) / / e 0015400 s t . , f o r i n f o r m i 0015420 n g u s e r , \r \t \t d o c > > 0015440 D o c G . w a i t T i m e = 0015460 1 / / \t \t c o m p u t i n g 0015500 p r i o r i t y \r \t \t i f S 0015520 t r i n g C o m p a r e ( l v 0015540 d o c > > D o c G . C r e a t S 0015560 t r , l v d o c > > D o c G 0015600 . B y S t r ) e q 0 d o 0015620 \r \t \t \t [ ( l v d o c > > D 0015640 o c G . B y S t r ) > > S T R . 0015660 l e n g t h = 0 ] \t \t / / 0015700 o m i t B Y i f s a m e 0015720 a s F O R \r \t \t ] \r \t D \0 006 0015740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0015760 \0 \0 001 336 346 \0 \0 \0 037 | 001 | 366 357 370 366 0016000 o u b l e C o p ( l v d o c > 0016020 > D o c G . d a t e , l v D 0016040 o c D i r > > D D V . d a t e ) 0016060 \r \t M o v e A n d S u p p r e s 0016100 s ( l v d o c > > D o c G . F 0016120 i l e S t r , l v D o c D i 0016140 r > > D D V . F i l e S t r , 0016160 s i z e D o c G . F i l e S t 0016200 r / 8 ) \r \t M o v e A n d S u p 0016220 p r e s s ( l v d o c > > D o 0016240 c G . D a t e S t r , l v D 0016260 o c D i r > > D D V . D a t e S 0016300 t r , s i z e D o c G . D a 0016320 t e S t r / 8 ) \r \t r e s u l t 0016340 i s 0 \r \t ] \r i f n 0016360 e w S t r e a m t h e n C l 0016400 o s e s ( s ) \r t e s t 0016420 n a g e 4 t h e n @ p 0016440 D o c D i r = D o c D i r 0016460 o r F S P u t ( D o c D i r ) 0016500 \r r e s u l t i s r e 0016520 s u l t \r ] \r \r a n d 0016540 M o v e A n d S u p p r e s s ( 0016560 d S t r , s S t r , l i m i 0016600 t ) b e \r \t [ / / m o v e 0016620 u p t o l i m i t c h a 0016640 r s f r o m s S t r t o 0016660 d S t r , s u p p r e s s i n 0016700 g t r a i l i n g b l a n k 0016720 s \r \t l e t l e n = M \0 006 0016740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0016760 \0 \0 001 336 344 \0 \0 \0 035 | 001 | 366 357 370 366 0017000 i n ( l i m i t - 1 , s S t r 0017020 > > S T R I N G . l e n g t h ) 0017040 ; u n l e s s l e n r e t 0017060 u r n \r \t f o r i = l e n b 0017100 y - 1 t o 1 d o [ l 0017120 e n = i ; u n l e s s s 0017140 S t r > > S T R I N G . c h a r 0017160 ^ i e q $ * S b r e a k 0017200 ] \r \t M o v e B l o c k ( d S t 0017220 r , s S t r , l e n / 2 + 1 0017240 ) \r \t d S t r > > S T R I N G . 0017260 l e n g t h = l e n \r \t ] \r 0017300 \r a n d W s s ( s , s t r ) 0017320 b e f o r i = 1 t o 0017340 s t r > > S T R I N G . l e n 0017360 g t h d o P u t s ( s , s 0017400 t r > > S T R I N G . c h a r ^ 0017420 i ) \r \r / / E r r o r m e s 0017440 s a g e e x t r a c t e r - 0017460 - d e r i v e d f r o m S 0017500 W A T . \r / / F i n d E r r o 0017520 r M e s s a g e ( e r r o r V e 0017540 c , s t r , l e n S t r , 0017560 f a t a l [ t r u e ] ) \r / / 0017600 s p r u c e F i l e d e s 0017620 c r i b e s S p r u c e . E r 0017640 r o r s \r / / e r r o r v e 0017660 c = a p o i n t e r t o 0017700 t a b l e [ e r r C o d e 0017720 ; p 1 ; p 2 ; p 3 ; \0 006 0017740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0017760 \0 \0 001 336 342 \0 \0 \0 033 | 001 | 366 357 370 366 0020000 . . . ] \r / / T h e r e 0020020 s u l t g o e s i n s t r 0020040 - - l e n S t r i s l e 0020060 n g t h o f s t r i n w 0020100 o r d s \r / / T h e h 0020120 i g h o r d e r b i t o f 0020140 e r r c o d e i s i g n o 0020160 r e d \r / / - - s o 0020200 r e a l l y e r r o r n u 0020220 m b e r s r u n f r o m 0 0020240 t o 3 2 0 0 0 \r / / \r / / 0020260 A n e r r o r m e s s a g e 0020300 i n t h e f i l e i s : 0020320 \r / / 1 . A n u n s i g n 0020340 e d d e c i m a l n u m b e 0020360 r . \r / / 2 . O p t i o n a 0020400 l l y f o l l o w e d b y 0020420 C , M , o r L ( i g n o 0020440 r e d ) \r / / 3 . F o l l o 0020460 w e d b y a s p a c e . \r 0020500 / / 4 . F o l l o w e d b 0020520 y t h e m e s s a g e t e 0020540 x t . T o g e t a p a 0020560 r a m e t e r f o r m a t t e 0020600 d , \r / / \t g i v e $ \r / / \t 0020620 f o l l o w e d b y a s i 0020640 n g l e d i g i t s p e c i 0020660 f y i n g t h e p a r a m e 0020700 t e r # ( 1 , 2 , . . . ) \r 0020720 / / \t f o l l o w e d b y \0 006 0020740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0020760 \0 \0 001 336 340 \0 \0 \0 031 | 001 | 366 357 370 366 0021000 h o w t o p r i n t ( o 0021020 = o c t a l ; d = d e c i m a 0021040 l ; s = B C P L s t r i n g 0021060 ) \r / / 5 . E n d t h e 0021100 m e s s a g e t e x t w i t 0021120 h $ $ \r / / T h i s f u n 0021140 c t i o n q u i t s a f t e 0021160 r t h e f i r s t e r r o 0021200 r m e s s a g e l i n e . 0021220 I t r e t u r n s t h e r 0021240 e s u l t \r / / " U n k 0021260 n o w n E r r o r " i f i 0021300 t d o e s n o t l o c a t 0021320 e t h e e r r o r c o d e 0021340 . I t d o e s n o t i n 0021360 c l u d e \r / / a c a 0021400 r r i a g e r e t u r n i n 0021420 t h e r e s u l t . I t 0021440 q u i t e s e a r l y i f 0021460 s t r i s n o t b i g e 0021500 n o u g h . \r / / I f f a t 0021520 a l , i n c l u d e t h e 0021540 e r r o r c o d e i n t h 0021560 e m e s s a g e , a l o n g 0021600 w i t h t h e m e s s a g 0021620 e i t s e l f . \r / / A l w 0021640 a y s r e t u r n s t r u e 0021660 , i f i t r e t u r n s 0021700 u n d e r i t s o w n p o 0021720 w e r . A n e r r o r \0 006 0021740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0021760 \0 \0 001 336 336 \0 \0 \0 027 | 001 | 366 357 370 366 0022000 p r o c e d u r e \r / / \t m a y 0022020 s u b s t i t u t e a f a 0022040 l s e r e t u r n \r \r a n d 0022060 F i n d E r r o r M e s s a g e 0022100 ( e r r o r V e c , s t r , 0022120 l e n S t r , f a t a l ; n 0022140 u m a r g s n a ) = v a l 0022160 o f \r [ \r i f n a < 4 t h e 0022200 n f a t a l = t r u e \r l 0022220 e t Q u i t ( s ) b e [ 0022240 C l o s e s ( s > > F S x . p a 0022260 r 1 ) ; F S P u t ( s ) ; R 0022300 e t u r n F r o m ( F i n d E r 0022320 r o r M e s s a g e , t r u e 0022340 ) ] \r I n i t S p r u c e F i 0022360 l e ( E r r o r F i l e , 1 , 0022400 3 ) \r l e t s = W i n d o 0022420 w C r e a t e S t r e a m ( E r 0022440 r o r F i l e , k s T y p e R 0022460 e a d O n l y , c h a r I t e 0022500 m ) \r / / s e t u p m e m 0022520 o r y s t r e a m f o r P 0022540 u t T e m p l a t e \r l e t m 0022560 S = F S G e t X ( l F S x , 0022600 S p r u c e Z o n e , 0 ) \r 0022620 m S > > F S x . p u t s = W 0022640 i n d o w W r i t e B y t e \r m 0022660 S > > F S x . p u t O v e r f l 0022700 o w = Q u i t \r m S > > F S 0022720 x . p a r 1 = s / / \0 006 0022740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0022760 \0 \0 001 336 334 \0 \0 \0 025 | 001 | 366 357 370 366 0023000 s a v e w h e r e Q u i t 0023020 c a n g e t a t i t \r S e 0023040 t u p W i n d o w S t r e a m ( 0023060 m S , s t r , 1 , l e n S 0023100 t r * 2 ) \r l e t e r r C o d 0023120 e = e r r o r V e c ! 0 & # 7 7 0023140 7 7 7 \r l e t f o u n d = 0023160 f a l s e \r s t r > > S T R . l 0023200 e n g t h = l e n S t r * 2 0023220 - 1 \r u n t i l E n d o f s ( 0023240 s ) d o \r [ \r 0023260 l e t n = 0 \r l e t 0023300 c = n i l \r l e t m e 0023320 s s a g e = f a l s e \r 0023340 u n t i l E n d o f s ( s ) 0023360 d o \r \t [ \r \t c = G e t s ( s ) 0023400 \r \t t e s t c g e $ 0 & 0023420 c l e $ 9 t h e n n = 0023440 n * 1 0 + c - $ 0 o r b r e 0023460 a k \r \t ] \r i f n e 0023500 q e r r C o d e t h e n \r \t 0023520 [ \r \t f o u n d = t r u e \r \t i 0023540 f f a t a l t h e n P u t 0023560 T e m p l a t e ( m S , " [ $ 0023600 D ] " , e r r C o d e ) / 0023620 / A c t u a l c o d e c a 0023640 u s i n g e r r . - - f o 0023660 r m a i n t . p e r s o n n 0023700 e l \r \t w h i l e E n d o f s 0023720 ( s ) e q 0 & c n \0 006 0023740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0023760 \0 \0 001 336 332 \0 \0 \0 023 | 001 | 366 357 370 366 0024000 e $ * s d o c = G e t 0024020 s ( s ) \r \t u n t i l E n d o 0024040 f s ( s ) d o \r \t [ \r \t 0024060 c = G e t s ( s ) \r \t 0024100 i f c e q $ * N b r e 0024120 a k \r \t t e s t c e q 0024140 $ $ t h e n \r \t \t [ \r \t \t l 0024160 e t i = G e t s ( s ) \r \t \t i 0024200 f i e q $ $ t h e n b 0024220 r e a k \t / / e n d o f m e 0024240 s s a g e \r \t \t l e t s p e c 0024260 = v e c 1 \r \t \t s p e c ! 0024300 0 = 2 l s h i f t 8 + 0024320 $ $ \r \t \t c = G e t s ( s 0024340 ) \r \t \t c o m p i l e i f S p 0024360 r i n t S w t h e n [ i f 0024400 c e q $ f t h e n [ \r 0024420 \t \t l e t f n = e r r o 0024440 r V e c ! ( i - $ 0 ) \r \t \t t 0024460 e s t f n > > F N . f a c e 0024500 l e 1 7 \r \t \t i f 0024520 s o \r \t \t P u t T 0024540 e m p l a t e ( m S , " $ S $ 0024560 D $ S " , l v f n > > F N . n 0024600 a m e , M u l D i v ( f n > > F 0024620 N . s i z + 3 , 7 2 , 2 5 4 0024640 0 ) , s e l e c t o n f n > 0024660 > F N . f a c e i n t o [ 0024700 c a s e 0 : " " ; c a s e 0024720 1 : " I " ; c a s e \0 006 0024740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0024760 \0 \0 001 336 330 \0 \0 \0 021 | 001 | 366 357 370 366 0025000 2 : " B " ; c a s e 3 : 0025020 " B I " ; d e f a u l t : " 0025040 ? " ] ) \r \t \t i f 0025060 n o t / / F u n n y T E X 0025100 - s t y l e f a c e \r \t \t 0025120 P u t T e m p l a t 0025140 e ( m S , " $ S $ D a t $ D 0025160 m i " , l v f n > > F N . n a 0025200 m e , ( 2 5 4 - f n > > F N . f 0025220 a c e ) / 2 , f n > > F N . s i 0025240 z ) \r \t \t i f f n > > F N . 0025260 r o t a t i o n t h e n P u 0025300 t T e m p l a t e ( m S , " ( 0025320 r o t $ D ) " , f n > > F N 0025340 . r o t a t i o n / 6 0 ) \r \t \t 0025360 l o o p \r \t \t ] ] \r \t \t i 0025400 f c e q $ F t h e n c 0025420 = $ O / / F i l e c a 0025440 l l j u s t p r i n t s f 0025460 i l e i n d e x i n o c t 0025500 a l , f o r n o w \r \t \t s p 0025520 e c ! 1 = c l s h i f t 0025540 8 \r \t \t P u t T e m p l a t e ( 0025560 m S , s p e c , e r r o r V 0025600 e c ! ( i - $ 0 ) ) \r \t \t ] \r \t 0025620 o r P u t s ( m S , c 0025640 ) \r \t ] \r \t b r e a k / 0025660 / f r o m m a i n s e a r 0025700 c h l o o p \r \t ] \r u 0025720 n t i l E n d o f s ( s ) \0 006 0025740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0025760 \0 \0 001 336 326 \0 \0 \0 017 | 001 | 366 357 370 366 0026000 % ( c e q $ $ & G e 0026020 t s ( s ) e q $ $ ) d o 0026040 c = G e t s ( s ) \r 0026060 ] \r u n l e s s f o u n d d 0026100 o W s s ( m S , " U n k n o w 0026120 n E r r o r " ) \r s t r > > S 0026140 T R . l e n g t h = C u r r 0026160 e n t P o s ( m S ) - 1 \r F S P 0026200 u t ( m S ) \r C l o s e s ( s ) 0026220 \r R e s e t S p r u c e F i l e 0026240 ( E r r o r F i l e ) \r r e s u 0026260 l t i s t r u e \r ] \r \r c o m 0026300 p i l e i f S p r i n t S w 0026320 t h e n [ \r \r l e t C o m m 0026340 e n t ( s t r , i n s i s t ) 0026360 b e \r \t [ \r \t u n l e s s s 0026400 t r & c o m m e n t s & 0026420 c o m m e n t F r e e r e t u 0026440 r n \r \t i f n u m C o m m e n 0026460 t s g e m a x C o m m e n t 0026500 s t h e n \r \t \t [ \r \t \t u n l 0026520 e s s i n s i s t r e t u r 0026540 n / / s t o p w i t h t 0026560 h e c o m m e n t s a l r e 0026600 a d y \r \t \t n u m C o m m e n t 0026620 s = m a x C o m m e n t s - 0026640 2 / / t h r o w o u t l 0026660 a s t t w o t o m a k e 0026700 r o o m \r \t \t c o m m e n t F r 0026720 e e = c o m m e n t s ! \0 006 0026740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0026760 \0 \0 001 336 324 \0 \0 \0 \r | 001 | 366 357 370 366 0027000 ( m a x C o m m e n t s - 1 ) \r 0027020 \t \t C o m m e n t ( " . . . m 0027040 o r e p r o b l e m s n o t 0027060 l i s t e d . . . " , t r 0027100 u e ) \r \t \t ] \r \t l e t l e n 0027120 = s t r > > S T R . l e n g 0027140 t h / 2 + 1 \r \t l e t e n d 0027160 = c o m m e n t F r e e + l e 0027200 n \r \t i f e n d > m a x C 0027220 o m m e n t W o r d s + m a x C 0027240 o m m e n t s + 1 r e t u r n 0027260 / / o u t o f s p a c e 0027300 ; t h r o w u p h a n d s 0027320 a n d q u i t \r \t n u m C o 0027340 m m e n t s = n u m C o m m 0027360 e n t s + 1 \r \t c o m m e n t s 0027400 ! n u m C o m m e n t s = c 0027420 o m m e n t F r e e \r \t M o v e 0027440 B l o c k ( c o m m e n t s + c 0027460 o m m e n t F r e e , s t r , 0027500 l e n ) \r \t c o m m e n t F r 0027520 e e = e n d \r \t ] \r \r a n d 0027540 D i s a b l e C o m m e n t s 0027560 ( ) b e c o m m e n t F r e 0027600 e = 0 / / n o m o r e 0027620 w i l l b e a d d e d \r \r 0027640 a n d E n a b l e C o m m e n 0027660 t s ( ) b e \r \t [ \r \t c o m m 0027700 e n t s = F S G e t X ( m a 0027720 x C o m m e n t s + m a x C \0 006 0027740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0027760 \0 \0 001 336 322 \0 \0 \0 \v | 001 | 366 357 370 366 0030000 o m m e n t W o r d s + 1 , S p 0030020 r u c e Z o n e , 0 ) / / 0030040 n e v e r r e l e a s e d \r \t 0030060 n u m C o m m e n t s = - 1 0030100 \r \t c o m m e n t F r e e = 0030120 m a x C o m m e n t s + 1 \r \t C 0030140 o m m e n t ( " P r o b l e m s 0030160 e n c o u n t e r e d : " ) 0030200 / / n o w n u m C o m m e n 0030220 t s = 0 - - w o n ' t 0030240 t r i g g e r u n l e s s > 0030260 0 \r \t ] \r \r a n d E m e r g e 0030300 n c y O v e r ( ) b e u n l 0030320 e s s e m e r g e n c y S t o 0030340 r a g e d o e m e r g e n c 0030360 y S t o r a g e = F S G e t 0030400 ( E S t o r a g e S i z e ) \r \r 0030420 ] / / S p r i n t S w \r \r c 0030440 o m p i l e i f S p r u c e S 0030460 w t h e n [ \r l e t F o r 0030500 E a c h ( q , p r o c , p A 0030520 r g ) = v a l o f \r \t [ \r \t 0030540 l e t n e x t E l t = @ q 0030560 \r \t w h i l e n e x t E l t 0030600 d o \r \t [ \r \t l e t 0030620 e l t = n e x t E l t \r \t 0030640 n e x t E l t = @ n e 0030660 x t E l t \r \t l e t r e 0030700 s = p r o c ( e l t , p A 0030720 r g ) \r \t s w i t c h \0 006 0030740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0030760 \0 \0 001 336 320 \0 \0 \0 \t | 001 | 366 357 370 366 0031000 o n r e s i n t o \r \t 0031020 [ \r \t c a s e 0031040 1 : D e q u e u e ( q ) ; 0031060 e n d c a s e \r \t c 0031100 a s e 2 : D e q u e u e ( q 0031120 ) ; F S P u t ( e l t ) ; e 0031140 n d c a s e / / a s s u m e 0031160 s S p r u c e Z o n e \r \t 0031200 c a s e 3 : r e s u 0031220 l t i s e l t \r \t 0031240 / / c a s e 0 : \r \t 0031260 d e f a u l t : e n d c a 0031300 s e \r \t ] \r \t 0031320 ] \r \t r e s u l t i s 0 \r \t ] 0031340 \r \r ] / / S p r u c e S w \r 0031360 \r \r / / J a n u a r y 2 0 , 0031400 1 9 7 8 1 1 : 5 1 P M , 0031420 v a s t r e o r g . , s h 0031440 a r e w i t h S p r u c e U 0031460 t i l s R e s \r / / F e b r u 0031500 a r y 2 2 , 1 9 7 8 5 : 0031520 3 6 P M , P a g e T o P o s 0031540 b u g ! ! ! ! v 5 . ( 2 , 5 0031560 ) \r / / M a r c h 1 1 , 1 0031600 9 7 8 1 : 5 4 P M , m e 0031620 m o r y u s a g e m i c r o 0031640 o p t i m i z a t i o n \r / / 0031660 M a y 9 , 1 9 7 8 1 1 : 0031700 1 5 A M , c o p y D D V . 0031720 d a t e i n t o D o c G \0 006 0031740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0031760 \0 \0 001 336 316 \0 \0 \0 \a | 001 | 366 357 370 366 0032000 . d a t e \r / / M a y 1 5 , 0032020 1 9 7 8 1 0 : 0 4 P M , 0032040 i m p r o v e b r e a k p 0032060 a g e c o m m e n t s a l 0032100 o t \r / / S e p t e m b e r 0032120 1 , 1 9 7 8 1 0 : 4 8 A 0032140 M , a d d c o d e i t s e 0032160 l f t o r e s u l t o f 0032200 F i n d E r r o r M e s s a g e 0032220 \r / / S e p t e m b e r 4 , 0032240 1 9 7 8 3 : 2 5 P M , 0032260 s u p p r e s s t r a i l i n 0032300 g b l a n k s i n F i l l 0032320 I n N a m e s \r / / S e p t e 0032340 m b e r 5 , 1 9 7 8 8 : 0032360 5 8 P M , a d d e s t i m 0032400 a e d n P a g e s ( n P a r 0032420 t s ) , i n i t i a l w a i 0032440 t i n g t i m e i n F i l 0032460 l I n N a m e s \r / / S e p t 0032500 e m b e r 1 8 , 1 9 7 8 0032520 9 : 5 3 A M , C r e a t e F 0032540 P R D - > S p r u c e I n U 0032560 t i l \r / / S e p t e m b e r 0032600 2 2 , 1 9 7 8 2 : 2 6 0032620 P M , i n c l u d e m e s s 0032640 a g e # i n e r r o r m 0032660 e s s a g e o n l y i f s 0032700 e r i o u s \r / / O c t o b e 0032720 r 1 6 , 1 9 7 8 9 : \0 006 0032740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0032760 \0 \0 001 336 314 \0 \0 \0 005 | 001 | 366 357 370 366 0033000 3 4 A M , m o d i f y i n 0033020 t e r f a c e s f o r f a s 0033040 t f i l e s \r / / O c t o b 0033060 e r 1 9 , 1 9 7 8 1 1 : 0033100 1 6 A M , ( S p r u c e o 0033120 n l y ) F S I n i t a d d s 0033140 s e g m e n t b e t w e e n 0033160 M o r e L o w a n d M o r 0033200 e H i g h \r / / \t \t i f M o r 0033220 e L o w i s n o n - z e r o 0033240 - - a n e x t r a c l i 0033260 e n t - s u p p l i e d h u n 0033300 k o f m e m o r y \r / / \t \t 0033320 ( u s e d i n S p r u c e I 0033340 n s t a l l t o g e t m e 0033360 m o r y f o r d o i n g t 0033400 h e i n s t a l l a t i o n 0033420 - - u g h ) \r / / O c t o b 0033440 e r 2 4 , 1 9 7 8 1 : 3 0033460 4 P M , a d d e m e r g e 0033500 n c y s t o r a g e m a n a 0033520 g e m e n t \r / / N o v e m b 0033540 e r 1 0 , 1 9 7 8 2 : 2 0033560 8 P M , a d d $ n f c a 0033600 s e t o e r r o r m e s s 0033620 a g e : f o n t d e s c r i 0033640 p t i o n \r / / J u l y 3 1 0033660 , 1 9 7 9 1 0 : 5 9 A M 0033700 , p a r e g e t ~ ~ . d 0033720 s o d i c t i o n a r y \0 006 0033740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0033760 \0 \0 001 336 312 \0 \0 \0 003 | 001 | 366 357 370 366 0034000 w o n ' t b e t o o b i g 0034020 \r / / A u g u s t 7 , 1 9 0034040 7 9 3 : 5 1 P M , F i l 0034060 l I n N a m e s : d o n ' t 0034100 g e t c r e a t o r f r o m 0034120 p r e s s f i l e i f a l 0034140 r e a d y f i l l e d i n \r 0034160 / / A u g u s t 1 5 , 1 9 0034200 7 9 1 : 3 9 P M , o m i 0034220 t B y i f s a m e a s 0034240 c r e a t o r ( S p r u c e 0034260 o n l y ) \r / / S e p t e m b 0034300 e r 1 3 , 1 9 7 9 4 : 2 0034320 4 P M , f i x i t \r / / 0034340 J a n u a r y 2 7 , 1 9 8 1 0034360 1 2 : 4 5 P M , a d d e 0034400 d T E X - s t y l e f a c e 0034420 s t o f o n t e r r o r 0034440 m s g ( S p r i n t o n l y 0034460 ) \r / / J a n u a r y 2 8 , 0034500 1 9 8 1 1 2 : 4 5 P M , 0034520 r e a d j u s t e d f o n t 0034540 e r r o r m s g ( S p r i 0034560 n t o n l y ) \r / / \r \0 \0 \0 \0 0034600 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0034720 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 006 0034740 020 @ 377 v 037 \0 \a \0 035 \0 \0 ( \0 \0 @ 0034760 \0 \0 001 | 310 \0 \0 \0 001 | 001 | 366 357 370 366 0035000