$ od -c -N 50000 [Indigo]<AltoSource>GRAPEVINESOURCES.DM!3
0000000 377 \0 \0 G r a p e v i n e . d e c
0000020 l \0 373 230 \t 322 315 \0 \0 376 001 \0 377 y / /
0000040 G r a p e v i n e . d e c l
0000060 - - d e f i n i t i o n s f
0000100 o r c l i e n t s o f G r
0000120 a p e v i n e p a c k a g e \r
0000140 / / C o p y r i g h t X e r
0000160 o x C o r p o r a t i o n 1
0000200 9 8 1 \r / / L a s t m o d i
0000220 f i e d O c t o b e r 3 0 ,
0000240 1 9 8 1 2 : 0 9 P M b
0000260 y T a f t \r \r / / - - - - - -
0000300 - - - - - - - - - - - - - - - -
*
0000400 - - - - - - \r s t r u c t u r e
0000420 R N a m e : / / R e 376 001
0000440 \0 & 200 g i s t e r e d N a m e
0000460 - - r e a l l y j u s t
0000500 a S t r i n g \r / / - - - - -
0000520 - - - - - - - - - - - - - - - -
*
0000620 - - - - - - - \r [ l e n
0000640 g t h b y t e ; c h a r ^ 1
0000660 , 1 b y t e ] \r m a n i f e
0000700 s t m a x R N a m e L e n g t
0000720 h = 6 4 \r \r / / - - - - - -
0000740 - - - - - - - - - - - - - - - -
*
0001040 - - - 376 001 \0 236 E - - - \r s t r u
0001060 c t u r e P a s s w o r d ^ 0
0001100 , 7 : b y t e / / R e p
0001120 r e s e n t a t i o n o f i
0001140 n d i v i d u a l ' s e n c r
0001160 y p t i o n k e y \r / / - - -
0001200 - - - - - - - - - - - - - - - -
*
0001300 - - - - - - - - - \r m a n i f e
0001320 s t l e n P a s s w o r d =
0001340 s i z e P a s s w o r d / 1
0001360 6 \r \r / / - - - - - - - - - - -
0001400 - - - - - - - - - - - - - - - -
*
0001440 - - - - - - - - 376 001 \0 B 243 - - -
0001460 - - - - - - - - - - - - - - - -
0001500 - - - - - - \r s t r u c t u r e
0001520 T i m e S t a m p : / /
0001540 G r a p e v i n e t i m e s
0001560 t a m p \r / / - - - - - - - - -
0001600 - - - - - - - - - - - - - - - -
*
0001700 - - - \r [ \r n e t b y t e \r h
0001720 o s t b y t e \r t i m e w o
0001740 r d 2 \r ] \r m a n i f e s t
0001760 l e n T i m e S t a m p = s
0002000 i z e T i m e S t a m p / 1 6
0002020 \r \r / / - - - - - - - - - - - -
0002040 - - - - - - - - - - - - - 376 001 \0
0002060 203 K - - - - - - - - - - - - - -
0002100 - - - - - - - - - - - - - - - -
*
0002140 - - - - - \r s t r u c t u r e
0002160 R L i s t : / / L i s t
0002200 o f R N a m e s - - h e a
0002220 d e r w o r d \r / / - - - - -
0002240 - - - - - - - - - - - - - - - -
*
0002340 - - - - - - - \r [ \r s t a m p
0002360 @ T i m e S t a m p \r q u e u e
0002400 : \t \t / / q u e u e o f R
0002420 I t e m s \r [ h e a d w
0002440 o r d ; t a i l w o r d ]
0002460 \r ] 376 001 \0 C 252 \r m a n i f e s t
0002500 l e n R L i s t = s i z e
0002520 R L i s t / 1 6 \r \r / / - - -
0002540 - - - - - - - - - - - - - - - -
*
0002640 - - - - - - - - - \r s t r u c t
0002660 u r e R I t e m : / / R
0002700 N a m e I t e m \r / / - - - -
0002720 - - - - - - - - - - - - - - - -
*
0003020 - - - - - - - - \r [ \r n e x t
0003040 w o r d \t / / - > n e x t
0003060 R I t e m , 376 001 \0 307 236 o r z
0003100 e r o t o e n d l i s t \r
0003120 r N a m e @ R N a m e \t / /
0003140 R N a m e \r ] \r \r m a n i f e s
0003160 t \r [ \r / / R e s u l t / e r
0003200 r o r c o d e s r e t u r n
0003220 e d b y G r a p e v i n e N
0003240 a m e I n f o p r o c e d u r
0003260 e s . \r / / N o t a l l c
0003300 o d e s c a n b e r e t u
0003320 r n e d b y a l l p r o c
0003340 e d u r e s ; s e e i n d i
0003360 v i d u a l \r / / d e s c r i
0003400 p t i o n s . \r e c N o C h a n
0003420 g e = 2 2 7 0 \t / / u n c
0003440 h a n g e d f r o m p r e v
0003460 i o u s l o o k u p 376 001 \0 265
0003500 203 ( c a n o n l y a r i s e
0003520 \r \t \t \t / / w h e n a n e
0003540 x p l i c i t s t a m p w a
0003560 s p a s s e d i n ) \r e c G
0003600 r o u p = 2 2 7 1 \t \t / /
0003620 R N a m e i s a g r o u p
0003640 \r e c I n d i v i d u a l =
0003660 2 2 7 2 \t / / R N a m e i s
0003700 a n i n d i v i d u a l \r e
0003720 c B a d R N a m e = 2 2 7 3
0003740 \t / / R N a m e d o e s n
0003760 o t e x i s t \r e c A l l D o
0004000 w n = 2 2 7 4 \t / / c a n
0004020 ' t c o n t a c t a n y R
0004040 - S e r v e r f o r r e g i
0004060 s t r y \r e c B a d P a s s w o
0004100 r 376 \0 214 267 r d = 2 2 7 5 \t /
0004120 / b a d p a s s w o r d \r e
0004140 c I s M e m b e r = 2 2 7 6
0004160 \t / / i n d i v i d u a l i
0004200 s a m e m b e r o f g r
0004220 o u p \r e c I s N o t M e m b e
0004240 r = 2 2 7 7 \t / / i n d i
0004260 v i d u a l i s n o t a
0004300 m e m b e r o f g r o u p \r
0004320 ] \r 377 \0 \0 G r a p e v i n e I n
0004340 t e r n a l . d e c l \0 373 230 c O
0004360 5 \0 \0 376 001 \0 l E / / G r a p e
0004400 v i n e I n t e r n a l . d e c
0004420 l \r / / C o p y r i g h t X
0004440 e r o x C o r p o r a t i o n
0004460 1 9 8 1 \r / / L a s t m o
0004500 d i f i e d J a n u a r y 6
0004520 , 1 9 8 2 1 1 : 1 2 A M
0004540 b y T a f t \r \r \r s t r u c
0004560 t u r e G U S : / / G r
0004600 a p e v i n e U s e r S t a
0004620 t e \r [ \r s t r e a m w o r d
0004640 \t \t / / B S P s t r e a m
0004660 t o r e g i s t r a t i o n
0004700 s e r v e r \r i n U s e w o r
0004720 d \t \t / / n o n z e r o i f
0004740 s t r e a m i n u s e \r z
0004760 o n e w o r d 376 001 \0 s 006 \t \t /
0005000 / z o n e f o r G r a p e
0005020 v i n e p a c k a g e s t o
0005040 r a g e a l l o c a t i o n \r
0005060 s o c k e t H i g h w o r d \t
0005100 \t / / h i g h w o r d t o
0005120 u s e f o r R S e r v e r
0005140 s o c k e t n u m b e r s \r
0005160 ] \r m a n i f e s t l e n G U
0005200 S = s i z e G U S / 1 6 \r
0005220 \r m a n i f e s t \r [ \r / / I
0005240 n t e r n a l e r r o r c o
0005260 d e s - - c l i e n t s s
0005300 h o u l d n e v e r s e e
0005320 t h e s e \r e c B a d P r o t o
0005340 c o l = 2 2 8 5 \t / / p r
0005360 o t o c o l e r r o r , 376 001 \0
0005400 254 374 c a l l e d w i t h E
0005420 r r o r s o n s t r e a m \r
0005440 \r / / R e t u r n C o d e f
0005460 o r B S P s t r e a m f a
0005500 i l u r e - - n o t i n
0005520 s e t a c t u a l l y r e t
0005540 u r n e d b y G V \r r c S t
0005560 r e a m F a i l e d = 3 7 7
0005600 B \r r n S t r e a m F a i l e d
0005620 = 3 7 7 B \r \r / / T i m e
0005640 o u t s \r i n i t i a l T i m e
0005660 o u t = 1 5 0 0 \t / / 1 5
0005700 s e c o n d s f o r i n i
0005720 t i a l R F C t o R - S e
0005740 r v e r \r d a t a T i m e o u t
0005760 = 1 2 0 0 0 \t / / 2 m i
0006000 n u 376 \0 ^ 247 034 t e s f o r r
0006020 e q u e s t / r e s p o n s e
0006040 t o c o m p l e t e \r c l o s
0006060 e T i m e o u t = 1 0 0 0 \t
0006100 / / 1 0 s e c o n d s t
0006120 o c l o s e c o n n e c t i
0006140 o n \r ] \r 377 \0 \0 G r a p e v i n
0006160 e P r o t o c o l . d e c l \0 373
0006200 230 ` 303 307 \0 \0 376 001 \0 \a ^ / / G r
0006220 a p e v i n e P r o t o c o l .
0006240 d e c l \r / / C o p y r i g h
0006260 t X e r o x C o r p o r a t
0006300 i o n 1 9 8 1 , 1 9 8 2 \r /
0006320 / L a s t m o d i f i e d
0006340 J a n u a r y 4 , 1 9 8 2
0006360 1 2 : 3 2 P M b y T a f
0006400 t \r \r / / A t t h e m o m
0006420 e n t , t h i s f i l e c
0006440 o n t a i n s o n l y t h o
0006460 s e d e f i n i t i o n s h
0006500 a v i n g t o d o \r / / w
0006520 i t h R - S e r v e r l o c
0006540 a t i o n , a u t h e n t i c
0006560 a t i o n , a n d g r o u p
0006600 m e m b e r s h i p 376 001 \0 356 n
0006620 . \r \r m a n i f e s t \r [ \r / /
0006640 E c h o p r o t o c o l -
0006660 - f o r p o l l i n g G r
0006700 a p e v i n e s e r v e r s
0006720 o n s o c R e g S e r v e r P
0006740 o l l i n g \r p t E c h o M e
0006760 = 1 \r p t I m A n E c h o =
0007000 2 \r \r / / G r a p e v i n e
0007020 s e r v e r s o c k e t s \r
0007040 s o c R e g S e r v e r E n q u
0007060 i r y = 5 0 B \r s o c R e g
0007100 S e r v e r S p a r e = 5 1
0007120 B \r s o c R e g S e r v e r P o
0007140 l l i n g = 5 2 B \r \r / /
0007160 R e t u r n c o d e s \r r c D
0007200 o n e = 0 \t \t / / o p e r
0007220 376 001 \0 336 374 a t i o n s u c c e
0007240 e d e d \r r c N o C h a n g e
0007260 = 1 \t \t / / e n q u i r y :
0007300 g i v e n s t a m p w a s
0007320 s t i l l v a l i d \r r c B
0007340 a d O p e r a t i o n = 4 \t
0007360 / / b a d o p e r a t i o n
0007400 n u m b e r \r r c B a d P r o
0007420 t o c o l = 5 \t / / p r o
0007440 t o c o l v i o l a t i o n \r
0007460 r c B a d R N a m e = 6 \t \t
0007500 / / R N a m e d o e s n o
0007520 t e x i s t o r h a s w
0007540 r o n g t y p e \r r c B a d P
0007560 a s s w o r d = 7 \t / / w
0007600 h a t i t s a y s \r r c W r
0007620 o n g S e 376 001 \0 016 @ r v e r =
0007640 8 \t / / t h e R N a m e '
0007660 s r e g i s t r y i s n o
0007700 t i n t h i s R - S e r v
0007720 e r \r r c A l l D o w n = 9
0007740 \t \t / / r e m o t e R - S e
0007760 r v e r w a s d o w n f o
0010000 r A C L e n q u i r y \r \r /
0010020 / R N a m e t y p e s \r r n
0010040 G r o u p = 0 \t \t / / g r
0010060 o u p o f n a m e s \r r n I
0010100 n d i v i d u a l = 1 \t / /
0010120 p e r s o n o r m a c h i
0010140 n e \r r n N o t F o u n d =
0010160 2 \t \t / / t h e R N a m e
0010200 d o e s n o t e x i s t \r r
0010220 n D e a d = 3 \t 376 001 \0 X 304 \t
0010240 / / t h e R N a m e h a s
0010260 b e e n d e l e t e d f r
0010300 o m t h e d a t a b a s e
0010320 \r ] \r \r s t r u c t u r e R e
0010340 t u r n C o d e : / / R e
0010360 t u r n e d f r o m a l l
0010400 R - S e r v e r o p e r a t i
0010420 o n s \r [ c o d e b y
0010440 t e ; t y p e b y t e ] \r
0010460 \f \r m a n i f e s t / / R
0010500 - S e r v e r o p e r a t i o
0010520 n c o d e s \r [ \r / / O p e
0010540 r a t i o n s \t \t a r g u m e n
0010560 t s \t \t r e s u l t s \r \r o p N
0010600 o O p = 0 \t / / \t n o n e \t
0010620 \t \t n o n e \r \r o p R e a d M 376
0010640 001 \0 7 223 e m b e r s = 2
0010660 / / \t R N a m e , s t a m p \t
0010700 \t c o d e = d o n e , s t a m
0010720 p , R - L i s t \r \t \t / / \t \t
0010740 \t \t c o d e = n o C h a n g e \r
0010760 \t \t / / \t \t \t \t c o d e = b a d
0011000 R N a m e ( # g r o u p ) \r \t
0011020 \t / / \t \t \t \t c o d e = w r o n
0011040 g S e r v e r \r \r o p R e a d O
0011060 w n e r s = 3 / / \t R N
0011100 a m e , s t a m p \t \t c o d e
0011120 = d o n e , s t a m p , R -
0011140 L i s t \r \t \t / / \t \t \t \t c o d
0011160 e = n o C h a n g e \r \t \t / / \t
0011200 \t \t \t c o d e = b a d R N a m e
0011220 ( # g r o u p ) \r \t \t / / \t \t
0011240 \t \t c o 376 001 \0 \n 305 d e = w r o n
0011260 g S e r v e r \r \r o p R e a d F
0011300 r i e n d s = 4 / / \t R
0011320 N a m e , s t a m p \t \t c o d
0011340 e = d o n e , s t a m p , R
0011360 - L i s t \r \t \t / / \t \t \t \t c o
0011400 d e = n o C h a n g e \r \t \t / /
0011420 \t \t \t \t c o d e = b a d R N a m
0011440 e ( # g r o u p ) \r \t \t / / \t
0011460 \t \t \t c o d e = w r o n g S e r
0011500 v e r \r \r o p R e a d C o n n e
0011520 c t = 7 / / \t R N a m e
0011540 \t \t \t c o d e = d o n e , c o
0011560 n n e c t \r \t \t / / \t \t \t \t c o
0011600 d e = b a d R N a m e ( # i n
0011620 d i v i d u a l ) \r \t \t / / \t \t
0011640 \t \t c o d e = w r 376 001 \0 \0 363 o n
0011660 g S e r v e r \r \r o p R e a d R
0011700 e m a r k = 8 / / \t R N
0011720 a m e \t \t \t c o d e = d o n e ,
0011740 r e m a r k \r \t \t / / \t \t \t \t
0011760 c o d e = b a d R N a m e ( #
0012000 g r o u p ) \r \t \t / / \t \t \t \t c
0012020 o d e = w r o n g S e r v e r \r
0012040 \r o p A u t h e n t i c a t e
0012060 = 9 / / \t R N a m e , P a
0012100 s s w o r d \t \t c o d e = d o n
0012120 e \r \t \t / / \t \t \t \t c o d e = b
0012140 a d P a s s w o r d \r \t \t / / \t
0012160 \t \t \t c o d e = b a d R N a m e
0012200 ( # i n d i v i d u a l ) \r \t
0012220 \t / / \t \t \t \t c o d e = w r o n
0012240 g S e r v e r \r \r o p I s I 376 001
0012260 \0 l 352 n L i s t = 4 6 / /
0012300 G r o u p , M e m b e r ,
0012320 w h o , l i s t , c o v e r
0012340 a g e \r \t \t / / \t \t \t \t c o d e
0012360 = d o n e , m e m b e r s h i
0012400 p \r \t \t / / \t \t \t \t c o d e = b
0012420 a d R N a m e ( # g r o u p )
0012440 \r \t \t / / \t \t \t \t c o d e = w r
0012460 o n g S e r v e r \r \t / / G r
0012500 o u p a n d M e m b e r a
0012520 r e R N a m e s . \r \t / / w
0012540 h o , l i s t , a n d c o
0012560 v e r a g e a r e s e n t
0012600 a s 8 - b i t b y t e s . \r
0012620 \t / / T h e f o l l o w i n
0012640 g d e f i n i t i o n s a r
0012660 e f 376 001 \0 277 C o r c o n s t
0012700 r u c t i n g I s I n A C L '
0012720 s \r \t / / " d e s c r i p t o
0012740 r " a r g u m e n t , w h i
0012760 c h c o n s i s t s o f w
0013000 h o , l i s t , a n d c o
0013020 v e r a g e \r \t / / p a c k e
0013040 d i n t o o n e w o r d .
0013060 \r \t d I t s e l f = 0 l s
0013100 h i f t 8 ; d I t s R e g i
0013120 s t r y = 1 l s h i f t
0013140 8 \t \t \t / / w h o \r \t d M e m
0013160 b e r = 0 l s h i f t 4
0013200 ; d O w n e r = 1 l s h
0013220 i f t 4 ; d F r i e n d =
0013240 2 l s h i f t 4 \t / / l
0013260 i s t \r \t d D i 376 \0 202 230 031 r e c
0013300 t = 0 ; d C l o s u r e
0013320 = 1 ; d U p A r r o w =
0013340 2 \t \t \t \t / / c o v e r a g e
0013360 \r ] \r \r s t r u c t u r e L i
0013400 s t D e s c : [ b l a n k
0013420 b i t 4 ; w h o b i t 4
0013440 ; l i s t b i t 4 ; c o
0013460 v e r a g e b i t 4 ] \r 377
0013500 \0 \0 G r a p e v i n e E n q u i
0013520 r e . b c p l \0 373 233 225 340 226 \0 \0 376
0013540 001 \0 264 + / / G r a p e v i n e
0013560 E n q u i r e . b c p l \r / /
0013600 C o p y r i g h t X e r o x
0013620 C o r p o r a t i o n 1 9 8 1
0013640 , 1 9 8 3 \r / / L a s t m
0013660 o d i f i e d S e p t e m b e
0013700 r 1 9 , 1 9 8 3 9 : 4 1
0013720 A M b y T a f t \r \r g e t
0013740 " G r a p e v i n e . d e c l
0013760 " \r g e t " G r a p e v i n e
0014000 P r o t o c o l . d e c l " \r g
0014020 e t " G r a p e v i n e I n t
0014040 e r n a l . d e c l " \r g e t
0014060 " S t r e a m s . d " \r \r e x t
0014100 e r n a l \r [ \r / / o u t g o
0014120 i n g p r o c e d u r e s \r E
0014140 n q u i 376 001 \0 376 224 r e ; E n q
0014160 u i r e W i t h S t a m p \r \r /
0014200 / i n c o m i n g p r o c e
0014220 d u r e s \r S e n d W o r d ;
0014240 S e n d R N a m e ; R e c e i
0014260 v e W o r d ; F i n d S e r v
0014300 e r ; G V C r e a t e S t r e
0014320 a m \r G V C l a i m S t r e a m
0014340 ; G V R e l e a s e S t r e a
0014360 m ; B S P W r i t e B l o c k
0014400 ; B S P F o r c e O u t p u t
0014420 \r E x t r a c t S u b s t r i n
0014440 g ; C o n c a t e n a t e S t
0014460 r i n g s \r D e f a u l t A r g
0014500 s ; B l o c k ; M y F r a m
0014520 e ; F r e e \r \r / / i n c o
0014540 m i n g s t a t 376 001 \0 335 002 i c
0014560 s \r @ g u s ; o f f s e t B S
0014600 P S t r \r ] \r \r / / - - - - - -
0014620 - - - - - - - - - - - - - - - -
*
0014720 - - - - - - \r l e t E n q u i
0014740 r e W i t h S t a m p ( s t r e
0014760 a m , o p , n a m e , s t
0015000 a m p ; n u m a r g s n a )
0015020 = v a l o f \r / / - - - - -
0015040 - - - - - - - - - - - - - - - -
*
0015140 - - - - - - - \r / / S e n 376 001
0015160 \0 264 245 d s a n e n q u i r y
0015200 o f t h e f o r m [ o p
0015220 , n a m e , s t a m p ] a
0015240 n d r e t u r n s t h e \r /
0015260 / r e s u l t i n g r e t u
0015300 r n C o d e . T h e d e f
0015320 a u l t s t a m p u s e d
0015340 i s n u l l . \r [ \r l e t d
0015360 e f a u l t S t a m p = t a
0015400 b l e [ 0 ; 0 ; 0 ] \r
0015420 D e f a u l t A r g s ( l v n
0015440 a , - 3 , d e f a u l t S t
0015460 a m p ) \r S e n d W o r d ( s t
0015500 r e a m , o p ) / / o p
0015520 \r S e n d R N a m e ( s t r e a
0015540 m , n a m e ) / / n a m
0015560 e \r B 376 001 \0 351 @ S P W r i t e B
0015600 l o c k ( s t r e a m , s t a
0015620 m p , 0 , 2 * l e n T i m e
0015640 S t a m p ) / / s t a m p
0015660 \r B S P F o r c e O u t p u t (
0015700 s t r e a m - o f f s e t B S P
0015720 S t r , t r u e ) \r r e s u l
0015740 t i s R e c e i v e W o r d (
0015760 s t r e a m ) / / r e t u
0016000 r n C o d e \r ] \r \f \r / / - - -
0016020 - - - - - - - - - - - - - - - -
*
0016120 - - - - - - - - - \r a n d E n
0016140 q u i r e ( n a m e , p r o c
0016160 , a r g ) = 376 001 \0 ' } v a
0016200 l o f \r / / - - - - - - - - - -
0016220 - - - - - - - - - - - - - - - -
*
0016320 - - \r / / O p e n s a B S
0016340 P s t r e a m t o a r e
0016360 g i s t r a t i o n s e r v e
0016400 r t h a t h a s a c o p
0016420 y o f t h e r e g i s t r
0016440 y \r / / f o r n a m e ( a
0016460 n R N a m e ) , a n d t h
0016500 e n c a l l s P r o c ( s t
0016520 r e a m , n a m e , a r g )
0016540 . \r / / P r o c s h o u l d
0016560 r e t u r n a R e t 376 001 \0
0016600 307 : u r n C o d e d e s c r i
0016620 b i n g t h e o u t c o m e
0016640 ; a n y a d d i t i o n a l
0016660 \r / / r e s u l t s m a y
0016700 b e c o m m u n i c a t e d
0016720 v i a s t o r a g e p o i n
0016740 t e d t o b y a r g . \r /
0016760 / N o t e t h a t p r o c
0017000 m a y b e c a l l e d m
0017020 o r e t h a n o n c e , s
0017040 i n c e t h e f i r s t r
0017060 e g i s t r a t i o n \r / / s
0017100 e r v e r w e t a l k t o
0017120 m a y n o t h a v e t h
0017140 e r e q u i r e d i n f o r
0017160 m a t i o n , o r t h e c
0017200 o n 376 001 \0 5 360 n e c t i o n \r /
0017220 / m a y f a i l i n t h
0017240 e m i d d l e . A l s o ,
0017260 a n y s t r e a m e r r o
0017300 r s o n s t r e a m c a u
0017320 s e c o n t r o l \r / / t o
0017340 b e r i p p e d a w a y
0017360 f r o m p r o c , s o p r
0017400 o c m u s t n o t a c q u
0017420 i r e a n y r e s o u r c e
0017440 s n o t \r / / k n o w n t
0017460 o t h e c a l l e r o f
0017500 E n q u i r e . \r / / R e t u
0017520 r n s t h e R e t u r n C o
0017540 d e r e t u r n e d b y p
0017560 r o c i f p r o c w a s
0017600 c a l l e d 376 001 \0 316 D s u c c
0017620 e s s f u l l y , \r / / o r
0017640 a l o c a l l y - m a n u f a
0017660 c t u r e d R e t u r n C o d
0017700 e o t h e r w i s e . \r [ \r l
0017720 e t d o t = 0 \r f o r i
0017740 = 1 t o n a m e > > R N
0017760 a m e . l e n g t h d o \r
0020000 i f n a m e > > R N a m e .
0020020 c h a r ^ i e q $ . t h e
0020040 n d o t = i \r i f d o t
0020060 e q 0 r e s u l t i s r
0020100 c B a d R N a m e l s h i f t
0020120 8 / / m i s s i n g "
0020140 . " i n R N a m e \r \r / /
0020160 f o r r e g i s t r y N A ,
0020200 t h e g r o u p n 376 001 \0 4
0020220 z a m e d N A . G V e n u m
0020240 e r a t e s i t s R - S e r
0020260 v e r s \r l e t z o n e =
0020300 g u s > > G U S . z o n e \r l e
0020320 t r e g i s t r y = C o n
0020340 c a t e n a t e S t r i n g s (
0020360 E x t r a c t S u b s t r i n g
0020400 ( n a m e , d o t + 1 , 0 ,
0020420 z o n e ) , \r " . G V " ,
0020440 t r u e , f a l s e , z o n
0020460 e ) \r \r / / I f w e a l r
0020500 e a d y h a v e a s t r e
0020520 a m o p e n , t r y i t
0020540 f i r s t . T h a t i s ,
0020560 a s k t h e R - S e r v e
0020600 r \r / / w e a r e c u r r
0020620 e 376 001 \0 313 ( n t l y c o n n e
0020640 c t e d t o t o p e r f o
0020660 r m t h e e n q u i r y .
0020700 I f t h a t s u c c e e d
0020720 s , \r / / w e a r e d o n
0020740 e ; i f n o t , w e m u
0020760 s t g o t h r o u g h t h
0021000 e R - S e r v e r l o c a t
0021020 i o n a l g o r i t h m . \r l
0021040 e t r e t u r n C o d e =
0021060 n i l \r G V C l a i m S t r e a
0021100 m ( ) \r i f g u s > > G U S .
0021120 s t r e a m n e 0 t h e n
0021140 \r [ \r g u s > > G U
0021160 S . s t r e a m > > S T . p a r
0021200 1 = M y F r a m e ( ) \r
0021220 r e t u r 376 001 \0 024 321 n C o d e
0021240 = p r o c ( g u s > > G U S
0021260 . s t r e a m , n a m e , a
0021300 r g ) \r ] \r G V R e l e a
0021320 s e S t r e a m ( ) \r \f \r / /
0021340 E n q u i r e ( c o n t ' d )
0021360 \r \r / / T h e e n q u i r y
0021400 p r o c e s s c o n s i s t
0021420 s o f t w o m a i n s t
0021440 a g e s : \r / / s t a g e 0
0021460 : F i n d A N Y R - S e r
0021500 v e r a n d a s k i t t
0021520 o l o o k u p n a m e ;
0021540 i f t h i s s u c c e e d s
0021560 \r / / \t t h e n w e
0021600 a r e d o n e . \r / / s t
0021620 a g e 1 : f i n d 376 001 \0 216 q
0021640 t h e R - S e r v e r f o
0021660 r N A . G V a n d a s k
0021700 i t t o l o o k u p n a
0021720 m e . \r / / F i n d S e r v e
0021740 r w o u l d d o t h e c
0021760 o m p l e t e r e g i s t r y
0022000 l o c a t i o n p r o t o c
0022020 o l i f w e \r / / s i m p
0022040 l y p a s s e d i t N A .
0022060 G V . H o w e v e r , w e
0022100 e m p l o y t h e f o l l
0022120 o w i n g o p t i m i z a t i
0022140 o n : \r / / i f w e d o n
0022160 ' t c u r r e n t l y h a v
0022200 e a n o p e n s t r e a m
0022220 , w e f i r s t a s k \r /
0022240 376 001 \0 ; 233 / F i n d S e r v e
0022260 r t o o p e n a s t r e
0022300 a m t o A N Y R - S e r v
0022320 e r , a n d w e p r e s e
0022340 n t n a m e \r / / t o t h
0022360 a t s e r v e r i n t h e
0022400 h o p e t h a t t h e s
0022420 e r v e r h a s a c o p y
0022440 o f n a m e ' s \r / / r e
0022460 g i s t r y . O n l y i f
0022500 t h i s f a i l s d o w
0022520 e a s k F i n d S e r v e r
0022540 t o g o t h r o u g h \r /
0022560 / t h e c o m p l e t e p
0022600 r o t o c o l f o r l o c a
0022620 t i n g r e g i s t r y - -
0022640 b u t 376 001 \0 356 257 b y t h i
0022660 s t i m e w e \r / / h a v
0022700 e a l r e a d y e s t a b l
0022720 i s h e d a s t r e a m t
0022740 o S O M E R - S e r v e r ,
0022760 s o t h e f i r s t p a
0023000 r t \r / / o f t h e R - S
0023020 e r v e r l o c a t i o n p
0023040 r o t o c o l w i l l n o t
0023060 n e e d t o b e r e p e
0023100 a t e d . \r \r / / N o t e :
0023120 i f t h e r e w a s a c
0023140 a c h e d s t r e a m , a n
0023160 d t h e s t r e a m i s
0023200 s t i l l a l i v e , a n d
0023220 \r / / p r o c d i d N O T
0023240 r e t u r n W r 376 001 \0 274 266 o
0023260 n g S e r v e r , t h e n w
0023300 e a r e a l r e a d y c o
0023320 n n e c t e d t o t h e \r /
0023340 / c o r r e c t s e r v e r
0023360 a n d r e c e i v e d t h
0023400 e r e s p o n s e w e d e
0023420 s e r v e d ; f i r s t S t a
0023440 g e = 2 \r / / b y p a s s e s
0023460 a l l t h e R - S e r v e
0023500 r l o c a t i o n p r o t o
0023520 c o l i n t h i s c a s e
0023540 . \r l e t f i r s t S t a g e
0023560 = g u s > > G U S . s t r e
0023600 a m e q 0 ? 0 , \r r e t
0023620 u r n C o d e < < R e t u r n C
0023640 o d e . c o d e e q r c W 376
0023660 001 \0 336 377 r o n g S e r v e r ?
0023700 1 , 2 \r f o r s t a g e =
0023720 f i r s t S t a g e t o 1
0023740 d o \r [ \r / / S
0023760 t a g e 0 : t r y t o f
0024000 i n d A N Y R - S e r v e r
0024020 , a n d o p e n a s t r
0024040 e a m t o i t . \r / /
0024060 S t a g e 1 : t r y t o
0024100 f i n d t h e c o r r e c
0024120 t R - S e r v e r , a n d
0024140 o p e n a s t r e a m t o
0024160 i t . \r / / I n s t
0024200 a g e 0 , t h e c a l l
0024220 o f F i n d S e r v e r d o
0024240 e s n ' t c a l l u s b a
0024260 c k \r 376 001 \0 356 t / / r e
0024300 c u r s i v e l y , b e c a u
0024320 s e F i n d S e r v e r l o
0024340 c a t e s r e g i s t r y G
0024360 V b y \r / / c o n s u
0024400 l t i n g a N a m e L o o
0024420 k u p S e r v e r o r b y
0024440 b r o a d c a s t i n g . \r
0024460 / / I n s t a g e 1 ,
0024500 F i n d S e r v e r m a y
0024520 c a l l u s b a c k r e c
0024540 u r s i v e l y w h i l e \r
0024560 / / e x p a n d i n g N
0024600 A . G V a n d o b t a i n i
0024620 n g c o n n e c t s i t e s
0024640 . \r l e t e c = F i
0024660 n d S e r v e r ( 376 001 \0 236 K ( s
0024700 t a g e e q 0 ? " G r a p
0024720 e v i n e R S e r v e r " , r
0024740 e g i s t r y ) , \r s o
0024760 c R e g S e r v e r P o l l i n
0025000 g , G V C r e a t e S t r e a
0025020 m ) \r t e s t e c n e
0025040 0 \r i f s o \r
0025060 [ \r \t / / u n
0025100 a b l e t o c o n t a c t
0025120 a n y r e g i s t r a t i o n
0025140 s e r v e r ( s t a g e 0
0025160 ) \r \t / / o r a n y s e
0025200 r v e r f o r r e g i s t r
0025220 y ( s t a g e 1 ) . I n
0025240 b o t h c a s e s t h i s
0025260 i s f a t a l . \r 376 001
0025300 \0 253 305 r e t u r n C
0025320 o d e < < R e t u r n C o d e .
0025340 c o d e = e c e q e c B
0025360 a d R N a m e ? r c B a d R N
0025400 a m e , r c A l l D o w n \r \t
0025420 b r e a k \r \t ] \r
0025440 i f n o t \r
0025460 [ \r \t / / s u c c e s s f u
0025500 l l y o p e n e d a s t r
0025520 e a m t o s o m e R - S e
0025540 r v e r ( s t a g e 0 ) o
0025560 r t o s o m e \r
0025600 / / R - S e r v e r f
0025620 o r r e g i s t r y ( s t a
0025640 g e 1 ) . N o w a t t e
0025660 m p t t o p e r f o r m t
0025700 h e 376 001 \0 ) 005 e n q u i r y .
0025720 \r G V C l a i
0025740 m S t r e a m ( ) \r \t g u s >
0025760 > G U S . s t r e a m > > S T .
0026000 p a r 1 = M y F r a m e ( )
0026020 \r \t r e t u r n C o d e =
0026040 p r o c ( g u s > > G U S . s t
0026060 r e a m , n a m e , a r g )
0026100 \r G V R e l e
0026120 a s e S t r e a m ( ) \r \t \r \t
0026140 / / I f t h e s e r v e
0026160 r d o e s n o t k n o w
0026200 a b o u t n a m e a n d t
0026220 h i s i s s t a g e 0 , \r
0026240 \t / / g o a r o u n d a
0026260 g a i n . I n a l l o t
0026300 h e r c a s e 376 001 \0 240 243 s w
0026320 e a r e f i n i s h e d . \r
0026340 \t / / A W r o n g S e r v
0026360 e r e r r o r i n s t a g
0026400 e 1 i n d i c a t e s a n
0026420 i n c o n s i s t e n c y \r \t
0026440 / / i n t h e d a t a
0026460 b a s e ; c o n v e r t t h
0026500 i s t o B a d N a m e . \r \t
0026520 t e s t r e t u r n C o d e
0026540 < < R e t u r n C o d e . c o d
0026560 e e q r c W r o n g S e r v
0026600 e r \r \t i f s o r e t
0026620 u r n C o d e < < R e t u r n C
0026640 o d e . c o d e = r c B a d
0026660 R N a m e \r \t i f n o t
0026700 b r e a k \r \t ] \r 376 \0 /
0026720 221 276 ] \r \r F r e e ( z o n e ,
0026740 r e g i s t r y ) \r r e s u l
0026760 t i s r e t u r n C o d e \r ]
0027000 \r 377 \0 \0 G r a p e v i n e L o c
0027020 a t e . b c p l \0 373 233 225 337 D \0 \0
0027040 376 001 \0 \f 364 / / G r a p e v i n
0027060 e L o c a t e . b c p l \r / /
0027100 C o p y r i g h t X e r o x
0027120 C o r p o r a t i o n 1 9 8 1
0027140 , 1 9 8 2 , 1 9 8 3 \r / /
0027160 L a s t m o d i f i e d S e
0027200 p t e m b e r 1 9 , 1 9 8 3
0027220 9 : 3 7 A M b y T a f
0027240 t \r \r g e t " P u p 0 . d e c
0027260 l " \r g e t " P u p 1 . d e c
0027300 l " \r g e t " G r a p e v i n
0027320 e . d e c l " \r g e t " G r a
0027340 p e v i n e P r o t o c o l . d
0027360 e c l " \r g e t " G r a p e v
0027400 i n e I n t e r n a l . d e c l
0027420 " \r \r e x t e r n a l \r [ \r / /
0027440 o u t g 376 001 \0 035 [ o i n g p
0027460 r o c e d u r e s \r F i n d S e
0027500 r v e r \r \r / / i n c o m i n
0027520 g p r o c e d u r e s \r R e a
0027540 d R L i s t ; D e s t r o y R
0027560 L i s t ; R e a d R S t r i n
0027600 g ; G V C r e a t e S t r e a
0027620 m \r O p e n L e v e l 1 S o c k
0027640 e t ; C l o s e L e v e l 1 S
0027660 o c k e t ; C o m p l e t e P
0027700 u p \r G e t P B I ; R e l e a
0027720 s e P B I ; S e t P u p D P o
0027740 r t ; L o c a t e N e t \r E n
0027760 u m e r a t e P u p A d d r e s
0030000 s e s \r I n i t i a l i z e C o
0030020 n t e x t ; E n q u e u e ;
0030040 D e q u e u e ; U 376 001 \0 346 x n
0030060 q u e u e ; Q u e u e L e n g
0030100 t h \r S t r i n g C o m p a r e
0030120 \r B l o c k ; D i s m i s s ;
0030140 S e t T i m e r ; T i m e r
0030160 H a s E x p i r e d \r A l l o c
0030200 a t e ; F r e e ; M o v e B
0030220 l o c k ; Z e r o \r \r / / i
0030240 n c o m i n g s t a t i c s \r
0030260 @ g u s ; p u p C t x Q ; n
0030300 d b Q \r ] \r \r s t r u c t u r e
0030320 A R e c : \t / / A T a b l e
0030340 r e c o r d f o r R - S e
0030360 r v e r p r o b i n g \r [ \r r
0030400 e q u e s t P o r t @ P o r t
0030420 / / p o r t t o p r o d
0030440 \r h o p s w o r d \t / / d 376
0030460 001 \0 023 006 i s t a n c e f r o m
0030500 h e r e ; z e r o i f p
0030520 r e S o r t e d \r / / T h e
0030540 r e p l y P o r t d o e s n '
0030560 t h a v e a n y t h i n g
0030600 t o d o w i t h t h e c
0030620 o r r e s p o n d i n g r e q
0030640 u e s t P o r t . \r / / T h e
0030660 y a r e k e p t i n t h
0030700 e s a m e d a t a s t r u
0030720 c t u r e i n o r d e r t
0030740 o a v o i d h a v i n g t
0030760 w o s e p a r a t e \r / / t
0031000 a b l e s . ( T h e n u m
0031020 b e r o f p o t e n t i a l
0031040 r e p l i e s i s e s s e
0031060 n t i a 376 001 \0 236 026 l l y t h e
0031100 s a m e a s \r / / t h e
0031120 n u m b e r o f r e q u e s
0031140 t s . ) \r r e p l y P o r t @
0031160 P o r t \r ] \r m a n i f e s t
0031200 l e n A R e c = s i z e A
0031220 R e c / 1 6 \r \r s t r u c t u r
0031240 e A T a b l e : / / A d d
0031260 r e s s t a b l e f o r R
0031300 - S e r v e r p r o b i n g \r
0031320 [ \r c o u n t w o r d \t / /
0031340 n u m b e r o f A R e c s \r
0031360 m a x C o u n t w o r d \t / /
0031400 m a x i m u m n u m b e r
0031420 o f A R e c s t h a t w i
0031440 l l f i t i n A T a b l e
0031460 \r p r e S o r t e 376 001 \0 c O d
0031500 w o r d \t / / t r u e i f f
0031520 A R e c s a r e a l r e a
0031540 d y s o r t e d b y h o p
0031560 c o u n t \r n R e p l i e s
0031600 w o r d \t / / n u m b e r o
0031620 f r e p l i e s r e c e i v
0031640 e d \r r e c ^ 0 , 0 @ A R e c
0031660 \r ] \r m a n i f e s t l e n A
0031700 T a b l e H e a d e r = o f
0031720 f s e t A T a b l e . r e c /
0031740 1 6 \r \f \r / / - - - - - - - - -
0031760 - - - - - - - - - - - - - - - -
*
0032060 - - - \r l e t F i n d S e 376 001
0032100 \0 5 241 r v e r ( s e r v i c e N
0032120 a m e , p o l l i n g S o c k
0032140 e t , p r o c , a r g ) =
0032160 v a l o f \r / / - - - - - - -
0032200 - - - - - - - - - - - - - - - -
*
0032300 - - - - - \r / / A t t e m p t
0032320 s t o f i n d a n i n s
0032340 t a n c e o f t h e s e r
0032360 v i c e w i t h t h e s p
0032400 e c i f i e d n a m e . \r / /
0032420 I f s e r v i c e N a m e
0032440 c o n t a i n s a " . " ,
0032460 t r e a t s i t a s a n
0032500 R N a 376 001 \0 H 345 m e ( w h i c
0032520 h m u s t b e \r / / a G
0032540 r a p e v i n e g r o u p )
0032560 a n d a t t e m p t s t o
0032600 l o c a t e t h e n e a r e
0032620 s t f u n c t i o n i n g i
0032640 n s t a n c e \r / / o f t h
0032660 e s e r v i c e a m o n g
0032700 t h e g r o u p ' s m e m b
0032720 e r s ( w h i c h m u s t
0032740 b e i n d i v i d u a l s \r /
0032760 / w h o s e c o n n e c t
0033000 s i t e s a r e v a l i d
0033020 P u p a d d r e s s c o n s
0033040 t a n t s ) . \r / / I f s e
0033060 r v i c e N a m e d o e s n
0033100 o t c o n t a 376 001 \0 A 225 i n
0033120 a " . " , t r e a t s i t
0033140 a s a n N L S n a m e
0033160 a n d \r / / a t t e m p t s
0033200 t o l o c a t e t h e n e
0033220 a r e s t f u n c t i o n i n
0033240 g i n s t a n c e o f t h
0033260 e s e r v i c e w i t h o u
0033300 t \r / / c o n s u l t i n g
0033320 G r a p e v i n e ( a l o c
0033340 a l b r o a d c a s t i s
0033360 a l s o i s s u e d ) . \r / /
0033400 I n e i t h e r c a s e ,
0033420 f o r e a c h p o t e n t
0033440 i a l i n s t a n c e o f
0033460 t h e s e r v i c e , c a l
0033500 l s p r o c ( p o r t , 376 001 \0
0033520 _ p a r g ) , \r / / w h i c
0033540 h s h o u l d a t t e m p t
0033560 t o o p e n a c o n n e
0033600 c t i o n t o t h e g i v
0033620 e n p o r t a n d r e t u
0033640 r n t r u e \r / / i f s u
0033660 c c e s s f u l a n d f a l
0033700 s e i f n o t ( a r g m
0033720 a y b e u s e d t o c o
0033740 m m u n i c a t e a d d i t i
0033760 o n a l \r / / p a r a m e t e
0034000 r s a n d / o r r e s u l t
0034020 s ) . P r o c s h o u l d
0034040 a t l e a s t d e f a u l
0034060 t a n d p e r h a p s \r / /
0034100 u n c o n d i t i o n a l l y
0034120 s 376 001 \0 371 350 e t t h e p o
0034140 r t ' s s o c k e t f i e l
0034160 d t o t h e a p p r o p r
0034200 i a t e w e l l - k n o w n \r
0034220 / / s o c k e t n u m b e r
0034240 b e f o r e u s i n g i t
0034260 , s i n c e i n g e n e r
0034300 a l t h e s e r v i c e s
0034320 o c k e t i s d i s t i n c
0034340 t \r / / f r o m t h e p o
0034360 l l i n g s o c k e t . N
0034400 o t e t h a t p r o c w i
0034420 l l b e c a l l e d r e p
0034440 e a t e d l y u n t i l e i
0034460 t h e r \r / / i t r e t u r
0034500 n s t r u e o r t h e l
0034520 i s t o f 376 001 \0 370 & p o t e
0034540 n t i a l i n s t a n c e s
0034560 i s e x h a u s t e d . \r \r /
0034600 / I f F i n d S e r v e r
0034620 i s s u c c e s s f u l , i
0034640 t r e t u r n s z e r o ;
0034660 i f u n s u c c e s s f u l ,
0034700 i t r e t u r n s o n e
0034720 o f \r / / e c B a d R N a m e
0034740 ( t h e r e i s n o s u
0034760 c h s e r v i c e ) o r e
0035000 c A l l D o w n ( c a n ' t
0035020 c o n t a c t a n y i n s t
0035040 a n c e o f \r / / t h e s
0035060 e r v i c e ) . \r \r / / T h e
0035100 s e r v i c e t o b e l
0035120 o c a t e d m u s t 376 001 \0 312
0035140 204 r e s p o n d t o E c h o
0035160 M e r e q u e s t s o n a
0035200 w e l l - k n o w n \r / / s
0035220 o c k e t , t h e l o w 1
0035240 6 b i t s o f w h i c h
0035260 a r e g i v e n a s p o l
0035300 l i n g S o c k e t a n d t
0035320 h e \r / / h i g h 1 6 b i
0035340 t s o f w h i c h a r e
0035360 g u s > > G U S . s o c k e t H
0035400 i g h ( z e r o e x c e p t
0035420 w h e n t e s t i n g ) .
0035440 A n y \r / / s e r v i c e
0035460 ( G r a p e v i n e o r n o
0035500 n - G r a p e v i n e ) o b e
0035520 y i n g t h i s c o n v e n
0035540 t 376 001 \0 l 033 i o n m a y b e
0035560 l o c a t e d , \r / / r e g
0035600 a r d l e s s o f w h e t h
0035620 e r i t i s n a m e d b
0035640 y a n R N a m e o r a n
0035660 N L S n a m e . \r \r / / T
0035700 h e c a l l e r i s a s s
0035720 u m e d N O T t o h a v e
0035740 d o n e a G V C l a i m S
0035760 t r e a m ( ) , s i n c e F
0036000 i n d S e r v e r m a y \r / /
0036020 c a l l t h e G r a p e v
0036040 i n e p a c k a g e r e c u
0036060 r s i v e l y t o r e a d
0036100 g r o u p m e m b e r s h i p
0036120 s a n d s u c h . \r / / I
0036140 f p r o c 376 001 \0 = @ m a n i
0036160 p u l a t e s t h e s t r e
0036200 a m t h e n i t m u s t
0036220 c a l l G V C l a i m S t r e
0036240 a m i n t e r n a l l y . \r [
0036260 \r l e t z o n e = g u s >
0036300 > G U S . z o n e \r l e t e c
0036320 = e c A l l D o w n \r \r / /
0036340 s e e w h a t k i n d o
0036360 f n a m e , a n d s e t
0036400 u p s o m e d e f a u l t s
0036420 \r i f S t r i n g C o m p a r
0036440 e ( s e r v i c e N a m e , "
0036460 G V . G V " ) e q 0 t h e
0036500 n \r / / p r e v e n t
0036520 i n f i n i t e r e c u r s i
0036540 o n i n t h e G 376 001 \0 204 242
0036560 r a p e v i n e n a m e s p
0036600 a c e . ( T h i s s h o u
0036620 l d \r / / n o t a c t
0036640 u a l l y h a p p e n , b u
0036660 t t h i s t e s t i s h
0036700 e r e a n y w a y f o r s
0036720 a f e t y . ) \r s e r v i
0036740 c e N a m e = " G r a p e v
0036760 i n e R S e r v e r " \r l e t
0037000 h a v e R N a m e = f a l s
0037020 e \r f o r i = 1 t o s
0037040 e r v i c e N a m e > > S t r i
0037060 n g . l e n g t h d o \r
0037100 i f s e r v i c e N a m e > >
0037120 S t r i n g . c h a r ^ i e q
0037140 $ . t h e n [ h a v e R
0037160 376 001 \0 227 004 N a m e = t r u e
0037200 ; b r e a k ] \r \f \r / / F
0037220 i n d S e r v e r ( c o n t '
0037240 d ) \r \r / / o b t a i n t a
0037260 b l e o f c o n n e c t p
0037300 o r t s f o r s e r v i c e
0037320 \r l e t a T a b l e = 0 \r
0037340 t e s t h a v e R N a m e \r
0037360 i f n o t \r [
0037400 / / O b t a i n l i s t o
0037420 f a d d r e s s e s b y l
0037440 o o k i n g u p s e r v i c
0037460 e N a m e a s a n N L S -
0037500 n a m e , \r / / a
0037520 n d a l s o b y b r o a d
0037540 c a s t i n g . \r m
0037560 a n i f e 376 001 \0 361 377 s t m a x
0037600 A d d r s = 1 0 / / w
0037620 e ' l l t a k e t h e 1 0
0037640 c l o s e s t \r m
0037660 a n i f e s t l e n A T a b l
0037700 e = l e n A T a b l e H e a
0037720 d e r + m a x A d d r s * l
0037740 e n A R e c \r a T a
0037760 b l e = A l l o c a t e ( z
0040000 o n e , l e n A T a b l e ) ;
0040020 Z e r o ( a T a b l e , l e
0040040 n A T a b l e ) \r a
0040060 T a b l e > > A T a b l e . m a
0040100 x C o u n t = m a x A d d r
0040120 s \r / / F i r s t
0040140 r e q u e s t w i l l b e
0040160 a l o c a l b 376 001 \0 . 003 r
0040200 o a d c a s t . \r /
0040220 / R e m a i n i n g r e q u
0040240 e s t s w i l l b e t o
0040260 p o r t s r e g i s t e r e d
0040300 i n N L S . \r /
0040320 / N o t e t h a t E n u m
0040340 e r a t e P u p A d d r e s s e
0040360 s g i v e s t h e m c l o
0040400 s e s t f i r s t . \r
0040420 a T a b l e > > A T a b l e
0040440 . p r e S o r t e d = t r u
0040460 e \r A c c u m u l a
0040500 t e G V P o r t ( t a b l e [
0040520 0 ; 0 ; 0 ] , a T a b
0040540 l e ) \r E n u m e r
0040560 a t e P u p A d d r e s s e s 376
0040600 001 \0 020 a ( s e r v i c e N a m e
0040620 , A c c u m u l a t e G V P o
0040640 r t , a T a b l e ) \r
0040660 ] \r i f s o \r
0040700 [ / / o b t a i n t h
0040720 e l i s t b y e n u m e r
0040740 a t i n g s e r v i c e N a m
0040760 e a s a G r a p e v i n e
0041000 g r o u p \r / /
0041020 a n d t h e n o b t a i n i
0041040 n g t h e c o n n e c t s
0041060 i t e f o r e a c h m e m
0041100 b e r . \r l e t r
0041120 L i s t = R e a d R L i s t
0041140 ( s e r v i c e N a m e , o p
0041160 R e a d M e m b e r s , l v
0041200 e c ) \r 376 001 \0 246 224 i
0041220 f r L i s t n e 0 t h e
0041240 n \r [ \r
0041260 l e t c o u n t
0041300 = Q u e u e L e n g t h ( l v
0041320 r L i s t > > R L i s t . q u
0041340 e u e ) \r l e
0041360 t l e n A T a b l e = l e
0041400 n A T a b l e H e a d e r +
0041420 c o u n t * l e n A R e c \r
0041440 a T a b l e =
0041460 A l l o c a t e ( z o n e , l
0041500 e n A T a b l e ) ; Z e r o (
0041520 a T a b l e , l e n A T a b l
0041540 e ) \r a T a b
0041560 l e > > A T a b l e . m a x C o
0041600 u n t = c o u 376 001 \0 226 @ n t
0041620 \r l e t r I
0041640 t e m = r L i s t > > R L i
0041660 s t . q u e u e . h e a d \r
0041700 w h i l e r I t
0041720 e m n e 0 d o \r
0041740 [ / / g e t
0041760 c o n n e c t s i t e s t r
0042000 i n g f o r m e m b e r a
0042020 n d c o n v e r t t o a d
0042040 d r e s s \r \t l e t c
0042060 o n n e c t = R e a d R S t
0042100 r i n g ( l v r I t e m > > R
0042120 I t e m . r N a m e , o p R e
0042140 a d C o n n e c t ) \r \t
0042160 i f c o n n e c t n e 0
0042200 t h e n \r \t [ 376 001
0042220 \0 5 321 \r
0042240 / / s u p p r e s s u
0042260 s u a l r e a c h a b i l i t
0042300 y c h e c k , s i n c e w
0042320 e w i l l d o o u r o w
0042340 n \r
0042360 / / c o m p u t a t i o n
0042400 b a s e d o n h o p c o u
0042420 n t s l a t e r o n . \r \t
0042440 l e t p o r t =
0042460 v e c l e n P o r t \r \t
0042500 i f E n u m e r a t
0042520 e P u p A d d r e s s e s ( c o
0042540 n n e c t , 0 , p o r t ,
0042560 t r u e ) e q 0 t h e n \r
0042600 \t A c c u m
0042620 u l a 376 001 \0 365 ( t e G V P o r t
0042640 ( p o r t , a T a b l e , n
0042660 i l ) \r \t F r e e
0042700 ( z o n e , c o n n e c t ) \r
0042720 \t ] \r \t r
0042740 I t e m = r I t e m > > R I
0042760 t e m . n e x t \r \t ] \r
0043000 D e s t r o y
0043020 R L i s t ( r L i s t ) \r
0043040 ] \r ] \r
0043060 \r i f a T a b l e e q 0
0043100 r e s u l t i s e c / /
0043120 e c B a d R N a m e o r e c
0043140 A l l D o w n \r \f \r / / F i n
0043160 d S e r v e r ( c o n t ' d )
0043200 \r \r / / N o w t h i n g s
0043220 s t a r t t o 376 001 \0 & i g e
0043240 t t r i c k y . . . \r / / S
0043260 e n d E c h o p a c k e t s
0043300 t o e a c h s o c k e t
0043320 i n a T a b l e , i n o r
0043340 d e r o f h o p c o u n t
0043360 s o a s \r / / t o b i a
0043400 s t h e c h o i c e t o
0043420 n e a r b y s e r v e r s .
0043440 A s r e p l i e s c o m e
0043460 b a c k f r o m e a c h \r
0043500 / / s e r v e r , a t t e m
0043520 p t t o e s t a b l i s h
0043540 a b y t e s t r e a m t o
0043560 t h a t s e r v e r ; a n
0043600 d t e r m i n a t e \r / / t
0043620 h e p o l l i n g p r 376 001 \0
0043640 : 266 o c e s s a s s o o n
0043660 a s t h i s i s s u c c e
0043700 s s f u l . \r / / T h i s i
0043720 s d o n e b y t h r e e
0043740 p r o c e s s e s i n o r d
0043760 e r t o p r e v e n t d e
0044000 a d l o c k s d u e t o \r /
0044020 / h o g g i n g P B I s .
0044040 T h e P r o d d e r s e n
0044060 d s o u t E c h o M e P u
0044100 p s t o t h e a d d r e s
0044120 s e s i n \r / / t h e t a
0044140 b l e . T h e S l u r p e
0044160 r r e c e i v e s t h e I
0044200 A m E c h o r e s p o n s e s
0044220 , a n d m a r k s t h e \r
0044240 / / 376 001 \0 252 \a t a b l e .
0044260 M e a n w h i l e , t h e o
0044300 r i g i n a l p r o c e s s
0044320 r e a d s t h e t a b l e
0044340 a n d a t t e m p t s t o \r
0044360 / / e s t a b l i s h c o n
0044400 n e c t i o n s t o t h e
0044420 m a r k e d a d d r e s s e s
0044440 . \r \r l e t s o c = v e c
0044460 l e n P u p S o c \r O p e n L
0044500 e v e l 1 S o c k e t ( s o c ,
0044520 0 , 0 , t r u e ) / /
0044540 t r a n s i e n t d e f a u
0044560 l t l o c a l s o c k e t \r
0044600 l e t n R o u t e s F o u n d
0044620 = 0 \r \r f o r t r y =
0044640 1 t o 4 376 001 \0 004 274 d o
0044660 / / t r y t h e w h o l e
0044700 p r o c e s s u p t o 4
0044720 t i m e s \r [ \r u
0044740 n l e s s n R o u t e s F o u
0044760 n d e q a T a b l e > > A T
0045000 a b l e . c o u n t % a T a
0045020 b l e > > A T a b l e . p r e S
0045040 o r t e d d o \r /
0045060 / t r y t o g e t a l l
0045100 t h e h o p c o u n t s .
0045120 N o t e : h o p c o u n
0045140 t s w e r e i n i t i a l i
0045160 z e d \r / / t o
0045200 z e r o i f p r e S o r t e
0045220 d , m a x H o p s + 1 o t h
0045240 e r w i s e . \r 376 001 \0 373
0045260 Z f o r r o u t e T r y
0045300 = 0 t o 1 0 d o \r
0045320 [ \r
0045340 l e t d o n t P r o b e =
0045360 ( r o u t e T r y & 1 )
0045400 e q 0 \r f o
0045420 r i = 0 t o a T a b l
0045440 e > > A T a b l e . c o u n t -
0045460 1 d o \r
0045500 [ \r l
0045520 e t a R e c = l v a T a
0045540 b l e > > A T a b l e . r e c ^
0045560 i \r i f
0045600 a R e c > > A R e c . h o p s
0045620 g r m a x H o p s t h e n
0045640 \r
0045660 [ 376 001 \0 021 b \r
0045700 l e t r t e =
0045720 L o c a t e N e t ( a R e c > >
0045740 A R e c . r e q u e s t P o r t
0045760 . n e t , d o n t P r o b e )
0046000 \r
0046020 i f r t e n e 0 t h e n
0046040 \r \t [ \r \t
0046060 a R e c > > A
0046100 R e c . h o p s = r t e > >
0046120 R T E . h o p s \r \t
0046140 i f a R e c > > A R e
0046160 c . h o p s l e m a x H o p
0046200 s t h e n n R o u t e s F o
0046220 u n d = n R o u t e s F o u
0046240 n d + 1 \r \t
0046260 ] \r \t 376 001 \0 255 ; ]
0046300 \r ] \r
0046320 i f n R o u t
0046340 e s F o u n d e q a T a b l
0046360 e > > A T a b l e . c o u n t
0046400 % \r \t n R o u t e s F o u n
0046420 d g r 0 & r o u t e T r
0046440 y g e 2 t h e n b r e a
0046460 k \r u n l e s
0046500 s d o n t P r o b e d o D
0046520 i s m i s s ( 1 0 0 ) \r
0046540 ] \r \r a T a b l
0046560 e > > A T a b l e . n R e p l i
0046600 e s = 0 / / n o r e
0046620 p l i e s y e t \r l e t
0046640 n e x t R e p l y T o E x a m
0046660 i n e = 0 \r \r 376 001 \0 \n }
0046700 / / c r e a t e P r o d d
0046720 e r & S l u r p e r p r o
0046740 c e s s e s \r l e t c t
0046760 x T a b l e = v e c 1 \r
0047000 f o r i = 0 t o 1
0047020 d o \r [ \r
0047040 l e t c t x = I n i t
0047060 i a l i z e C o n t e x t ( A l
0047100 l o c a t e ( z o n e , 1 5 0
0047120 ) , 1 5 0 , \r (
0047140 i e q 0 ? P r o d d e r ,
0047160 S l u r p e r ) , 3 ) \r
0047200 c t x ! 3 = a T a b
0047220 l e ; c t x ! 4 = s o c
0047240 / / a r g s n e e d e d
0047260 b y P r o d d e r & S l u
0047300 376 001 \0 362 210 r p e r \r
0047320 c t x ! 5 = p o l l i n g S
0047340 o c k e t / / a r g n e
0047360 e d e d b y P r o d d e r
0047400 o n l y \r E n q u e
0047420 u e ( p u p C t x Q , c t x )
0047440 \r c t x T a b l e !
0047460 i = c t x \r ] \r
0047500 \f \r / / F i n d S e r v e r
0047520 ( c o n t ' d ) \r \r / /
0047540 c o l l e c t r e s p o n s e
0047560 s p r o d u c e d b y P r
0047600 o d d e r & S l u r p e r \r
0047620 [ / / r e p e a
0047640 t \r / / w a i t
0047660 f o r r e p l y t o b e
0047700 r e t u r 376 001 \0 307 T n e d b y
0047720 S l u r p e r \r l
0047740 e t t i m e r = n i l ;
0047760 S e t T i m e r ( l v t i m e
0050000 r , 1 5 0 ) / / 1 . 5
0050020 s e c o n d s \r D i
0050040 s m i s s ( 1 ) r e p e a t u
0050060 n t i l a T a b l e > > A T a
0050100 b l e . n R e p l i e s g r
0050120 n e x t R e p l y T o E x a m i
0050140 n e % \r T i m e
0050160 r H a s E x p i r e d ( l v t
0050200 i m e r ) \r i f a
0050220 T a b l e > > A T a b l e . n R
0050240 e p l i e s e q n e x t R e
0050260 p l y T o E x a m i n e t h e
0050300 n b r e a k / 376 001 \0 034 273 /
0050320 t i m e d o u t \r \r
0050340 / / h a v e a c a n d
0050360 i d a t e s e r v e r ; t r
0050400 y t o a c c e s s i t . \r
0050420 l e t p o r t =
0050440 l v a T a b l e > > A T a b
0050460 l e . r e c ^ n e x t R e p l y
0050500 T o E x a m i n e . r e p l y P
0050520 o r t \r n e x t R e
0050540 p l y T o E x a m i n e = n
0050560 e x t R e p l y T o E x a m i n
0050600 e + 1 \r i f p r o
0050620 c ( p o r t , a r g ) t h e
0050640 n [ e c = 0 ; b r e a
0050660 k ] / / s u c c e s s f
0050700 u l l y a c c e s s e d s 376
0050720 001 \0 351 ! e r v i c e \r
0050740 ] r e p e a t \r \r / /
0050760 d e s t r o y P r o d d e r
0051000 & S l u r p e r p r o c e
0051020 s s e s \r f o r i =
0051040 0 t o 1 d o \r
0051060 [ U n q u e u e ( p u p C t x
0051100 Q , c t x T a b l e ! i ) ;
0051120 F r e e ( z o n e , c t x T a
0051140 b l e ! i ) ] \r \r i f
0051160 e c e q 0 t h e n b r e
0051200 a k / / s u c c e s s f u
0051220 l l y o p e n e d s t r e a
0051240 m \r ] \r \r C l o s e L e v
0051260 e l 1 S o c k e t ( s o c ) \r F
0051300 r e e ( z o n e , a T a b l e
0051320 ) \r \r r 376 001 \0 6 242 e s u l t i s
0051340 e c / / z e r o ( s u
0051360 c c e s s f u l ) o r e c A
0051400 l l D o w n \r ] \r \r / / - - - -
0051420 - - - - - - - - - - - - - - - -
*
0051520 - - - - - - - - \r a n d A c c
0051540 u m u l a t e G V P o r t ( p o
0051560 r t , a T a b l e , n i l ;
0051600 n u m a r g s n a ) = v
0051620 a l o f \r / / - - - - - - - - -
0051640 - - - - - - - - - - - - - - - -
*
0051720 - - - - - - - - - 376 001 \0 i Q - -
0051740 - - - - - - - - \r / / 2 - a r
0051760 g u m e n t c a l l i s f
0052000 r o m N L S e x p a n s i o
0052020 n : d o n ' t a c c u m u l
0052040 a t e s p e c i f i c a d d
0052060 r e s s e s o n \r / / t h e
0052100 d i r e c t l y - c o n n e c
0052120 t e d n e t w o r k , s i n
0052140 c e t h e y w i l l b e
0052160 r e a c h e d b y t h e i
0052200 n i t i a l b r o a d c a s t
0052220 . \r / / 3 - a r g u m e n t
0052240 c a l l i s f r o m R - N
0052260 a m e e x p a n s i o n : s
0052300 e t h o p s f i e l d t o
0052320 m a x H o p s + 1 . \r [ \r 376 001
0052340 \0 323 g l e t c o u n t = a
0052360 T a b l e > > A T a b l e . c o
0052400 u n t \r i f c o u n t e q
0052420 a T a b l e > > A T a b l e . m
0052440 a x C o u n t r e s u l t i s
0052460 t r u e \r l e t a R e c =
0052500 l v a T a b l e > > A T a b
0052520 l e . r e c ^ c o u n t \r t e s
0052540 t n a e q 2 \r i f s
0052560 o i f p o r t > > P o r t .
0052600 n e t e q ( n d b Q ! 0 ) >
0052620 > N D B . l o c a l N e t & \r
0052640 p o r t > > P o r
0052660 t . h o s t n e 0 t h e n
0052700 r e s u l t i s f a l s e \r
0052720 i f n o t a R e c > > A
0052740 R e c 376 001 \0 252 022 . h o p s =
0052760 m a x H o p s + 1 \r M o v e B l
0053000 o c k ( l v a R e c > > A R e
0053020 c . r e q u e s t P o r t , p
0053040 o r t , l e n P o r t ) \r a T
0053060 a b l e > > A T a b l e . c o u
0053100 n t = c o u n t + 1 \r r e s
0053120 u l t i s f a l s e \r ] \r \f \r
0053140 / / P r o d d e r a n d S
0053160 l u r p e r n e e d n o t
0053200 b e O E P s , b e c a u s e
0053220 t h e p r o c e s s e s t
0053240 h a t e x e c u t e \r / / t
0053260 h e m e x i s t o n l y d
0053300 u r i n g t h e l i f e t i
0053320 m e o f F i n d S e r v e r
0053340 , w h i c h 376 001 \0 211 K i s
0053360 i n t h e \r / / s a m e m
0053400 o d u l e a s t h e s e . \r
0053420 \r / / - - - - - - - - - - - - -
0053440 - - - - - - - - - - - - - - - -
*
0053520 - - - - - - - - - - - - - - - \r
0053540 a n d P r o d d e r ( c t x )
0053560 b e \r / / - - - - - - - - - -
0053600 - - - - - - - - - - - - - - - -
*
0053700 - - \r [ \r l e t a T a b l e
0053720 = c t x ! 3 \r l e t s o c
0053740 = c t x ! 4 \r l e t p 376 001 \0
0053760 035 331 o l l i n g S o c k e t =
0054000 c t x ! 5 \r \r m a n i f e s t
0054020 l a s t H o p s = 3 /
0054040 / t r e a t > 3 h o p s
0054060 a s e q u i v a l e n t t o
0054100 3 \r f o r h o p s = 0
0054120 t o l a s t H o p s d o \r
0054140 f o r i = 0 t o a
0054160 T a b l e > > A T a b l e . c o
0054200 u n t - 1 d o \r [
0054220 \r l e t a R e c
0054240 = l v a T a b l e > > A T a
0054260 b l e . r e c ^ i \r
0054300 i f a R e c > > A R e c . h o
0054320 p s e q h o p s % \r
0054340 ( h o p s e q l a s
0054360 t H 376 001 \0 250 q o p s & a R e
0054400 c > > A R e c . h o p s g r
0054420 h o p s \r & a
0054440 R e c > > A R e c . h o p s l
0054460 e m a x H o p s ) t h e n \r
0054500 [ \r \t l e t
0054520 p b i = G e t P B I ( s o
0054540 c ) \r \t S e t P u p D P o r t
0054560 ( p b i , l v a R e c > > A
0054600 R e c . r e q u e s t P o r t )
0054620 \r \t p b i > > P B I . p u p .
0054640 d P o r t . s o c k e t ^ 1 =
0054660 g u s > > G U S . s o c k e t
0054700 H i g h \r \t p b i > > P B I .
0054720 p u p . d P o r t . s o c k e t
0054740 ^ 2 = p o l l i n g S o c k
0054760 e t \r \t C o 376 001 \0 347 L m p l e
0055000 t e P u p ( p b i , p t E c h
0055020 o M e , p u p O v B y t e s )
0055040 \r \t / / s p a c e r e q u
0055060 e s t s 1 0 0 m s a p a r
0055100 t s o a s t o f a v o r
0055120 e a r l i e r \r \t / / r e
0055140 q u e s t s a n d a v o i d
0055160 h o g g i n g P B I s . \r \t
0055200 D i s m i s s ( 1 0 ) \r \t ]
0055220 \r ] \r \r B l o c k (
0055240 ) r e p e a t \r ] \r \r / / - -
0055260 - - - - - - - - - - - - - - - -
*
0055360 - - - - - - - - - - \r a 376 001 \0 027
0055400 223 n d S l u r p e r ( c t x )
0055420 b e \r / / - - - - - - - - - -
0055440 - - - - - - - - - - - - - - - -
*
0055540 - - \r [ \r l e t a T a b l e
0055560 = c t x ! 3 \r l e t s o c
0055600 = c t x ! 4 \r \r [ / /
0055620 r e p e a t \r B l o c k
0055640 ( ) r e p e a t u n t i l s
0055660 o c > > P u p S o c . i Q . h e
0055700 a d n e 0 \r l e t p
0055720 b i = D e q u e u e ( l v
0055740 s o c > > P u p S o c . i Q ) \r
0055760 i f p b i > > P B I . p
0056000 u 376 001 \0 h 257 p . t y p e e q
0056020 p t I m A n E c h o t h e n \r
0056040 [ \r l e
0056060 t i = a T a b l e > > A T
0056100 a b l e . n R e p l i e s \r
0056120 i f i u l s a T a
0056140 b l e > > A T a b l e . c o u n
0056160 t t h e n \r
0056200 [ \r \t l e t a R e c = l
0056220 v a T a b l e > > A T a b l e
0056240 . r e c ^ i \r \t M o v e B l o
0056260 c k ( l v a R e c > > A R e c
0056300 . r e p l y P o r t , l v p
0056320 b i > > P B I . p u p . s P o r
0056340 t , l e n P o r t ) \r
0056360 a T a b l e > > A T a
0056400 b l e . n R 376 \0 : 344 V e p l i e
0056420 s = i + 1 \r \t ] \r
0056440 ] \r R e l e a s e P B
0056460 I ( p b i ) \r ] r e p e
0056500 a t \r ] \r 377 \0 \0 G r a p e v i n
0056520 e N a m e I n f o . b c p l \0 373
0056540 230 ` 306 s \0 \0 376 001 \0 257 367 / / G r
0056560 a p e v i n e N a m e I n f o .
0056600 b c p l \r / / C o p y r i g h
0056620 t X e r o x C o r p o r a t
0056640 i o n 1 9 8 1 \r / / L a s t
0056660 m o d i f i e d J a n u a r
0056700 y 4 , 1 9 8 2 1 2 : 5 2
0056720 P M b y T a f t \r \r g e t
0056740 " G r a p e v i n e . d e c l
0056760 " \r g e t " G r a p e v i n e
0057000 P r o t o c o l . d e c l " \r g
0057020 e t " G r a p e v i n e I n t
0057040 e r n a l . d e c l " \r \r e x t
0057060 e r n a l \r [ \r / / o u t g o
0057100 i n g p r o c e d u r e s \r I
0057120 s M e m b e r C l o s u r e ;
0057140 I s I n A C L ; R e 376 001 \0 207 :
0057160 a d R L i s t ; R e a d R S t
0057200 r i n g ; A u t h e n t i c a
0057220 t e \r \r / / i n c o m i n g
0057240 p r o c e d u r e s \r S e n d W
0057260 o r d ; S e n d R N a m e ;
0057300 R e c e i v e W o r d ; R e c
0057320 e i v e R N a m e ; R e c e i
0057340 v e R L i s t \r E n q u i r e ;
0057360 E n q u i r e W i t h S t a m
0057400 p \r B S P W r i t e B l o c k ;
0057420 B S P F o r c e O u t p u t \r
0057440 G e t s ; P u t s ; D e f a
0057460 u l t A r g s ; F r e e \r \r /
0057500 / i n c o m i n g s t a t i
0057520 c s \r o f f s e t B S P S t r \r
0057540 ] \r \r / / - - - - - - - - - - -
0057560 376 001 \0 273 \b - - - - - - - - - - -
0057600 - - - - - - - - - - - - - - - -
*
0057660 - - - - - - \r l e t I s M e m
0057700 b e r C l o s u r e ( g r o u p
0057720 , m e m b e r ) = \r / / - -
0057740 - - - - - - - - - - - - - - - -
*
0060040 - - - - - - - - - - \r / / D e
0060060 t e r m i n e s w h e t h e r
0060100 m e m b e r a p p e a r s
0060120 a n y w h e r e i n t h e
0060140 t r e e t h a t r e s u l t
0060160 s f r o 376 001 \0 l } m \r / / e
0060200 x p a n d i n g g r o u p ;
0060220 s e e I s I n A C L f o r
0060240 d e t a i l s . \r I s I n
0060260 A C L ( g r o u p , m e m b e
0060300 r , d I t s e l f + d M e m b
0060320 e r + d C l o s u r e ) \r \r / /
0060340 - - - - - - - - - - - - - - - -
*
0060440 - - - - - - - - - - - - \r a n d
0060460 I s I n A C L ( n a m e , m
0060500 e m b e r , d e s c r i p t o
0060520 r ) = v a l o f \r / / - - -
0060540 - - - - - - - - - - - - - - - -
0060560 - - - - - - - - - - 376 001 \0 o 324 -
0060600 - - - - - - - - - - - - - - - -
*
0060640 - - - - - - - - - - - - - - \r /
0060660 / D e t e r m i n e s m e m
0060700 b e r s h i p i n a n A C
0060720 L , a s s p e c i f i e d
0060740 b y d e s c r i p t o r , w
0060760 h i c h i s a n y \r / / c
0061000 o m b i n a t i o n o f : {
0061020 d I t s e l f | d I t s R e g i
0061040 s t r y } + { d M e m b e r
0061060 | d O w n e r | d F r i e n d }
0061100 + \r / / { d D i r e c t
0061120 | d C l o s u r e | d U p A r r
0061140 o w } \r / / n a m e i d e n
0061160 t i f i e s t h e A C L ; 376
0061200 001 \0 215 030 m e m b e r i s t
0061220 h e n a m e b e i n g t e
0061240 s t e d f o r m e m b e r s
0061260 h i p ; \r / / b o t h a r e
0061300 R N a m e s . R e t u r n
0061320 s o n e o f t h e f o l
0061340 l o w i n g : \r / / e c I s M
0061360 e m b e r \t \t m e m b e r i s
0061400 i n t h e A C L \r / / e
0061420 c I s N o t M e m b e r \t m e m
0061440 b e r i s n o t i n t h
0061460 e A C L \r / / e c B a d R N
0061500 a m e \t \t n a m e d o e s n
0061520 o t e x i s t o r i s o
0061540 f w r o n g t y p e f o r
0061560 o p \r / / e c A l l D o w n
0061600 \t \t c a 376 001 \0 253 341 n ' t c o n
0061620 t a c t a n y R - S e r v e
0061640 r f o r n a m e ' s r e g
0061660 i s t r y \r [ \r l e t r e s
0061700 = n i l / / m e m b e r
0061720 , d e s c r i p t o r , a n
0061740 d r e s m u s t b e c o
0061760 n s e c u t i v e i n f r a
0062000 m e \r l e t r e t u r n C o d
0062020 e = E n q u i r e ( n a m e
0062040 , I s I n A C L W o r k , l
0062060 v m e m b e r ) \r r e s u l t
0062100 i s s e l e c t o n r e t u
0062120 r n C o d e < < R e t u r n C o
0062140 d e . c o d e i n t o \r
0062160 [ \r c a s e r c D o n e
0062200 : r e s e q 376 001 \0 W 006 0 ?
0062220 e c I s N o t M e m b e r ,
0062240 e c I s M e m b e r \r c a
0062260 s e r c B a d R N a m e : e
0062300 c B a d R N a m e \r d e f
0062320 a u l t : e c A l l D o w n \r
0062340 ] \r ] \r \r / / - - - - - -
0062360 - - - - - - - - - - - - - - - -
*
0062460 - - - - - - \r a n d I s I n A
0062500 C L W o r k ( s t r e a m , g
0062520 r o u p , l v M e m b e r )
0062540 = v a l o f \r / / - - - - - -
0062560 - - - - - - - - - - - - - - - -
0062600 - - - - - - - - - - - - - - 376 001
0062620 \0 ^ 236 - - - - - - - - - - - - -
0062640 - - - - - - - - - - - - - - - -
0062660 - - - - - - - - - - - \r / / L
0062700 o c a l p r o c e d u r e u
0062720 s e d b y I s I n A C L . \r
0062740 [ \r S e n d W o r d ( s t r e a
0062760 m , o p I s I n L i s t )
0063000 / / o p \r S e n d R N a m e (
0063020 s t r e a m , g r o u p )
0063040 / / g r o u p \r S e n d R N a
0063060 m e ( s t r e a m , l v M e m
0063100 b e r ! 0 ) / / m e m b e
0063120 r \r l e t d e s c r i p t o r
0063140 = l v M e m b e r ! 1 \r P u
0063160 t s ( s t r e a m , d e s c r
0063200 i p t o r < < L i s t D e s c .
0063220 w h o 376 001 \0 a 323 ) \r P u t s ( s
0063240 t r e a m , d e s c r i p t o
0063260 r < < L i s t D e s c . l i s t
0063300 ) \r P u t s ( s t r e a m , d
0063320 e s c r i p t o r < < L i s t D
0063340 e s c . c o v e r a g e ) \r B S
0063360 P F o r c e O u t p u t ( s t r
0063400 e a m - o f f s e t B S P S t r
0063420 , t r u e ) \r l e t r e t u
0063440 r n C o d e = R e c e i v e
0063460 W o r d ( s t r e a m ) \r i f
0063500 r e t u r n C o d e < < R e t u
0063520 r n C o d e . c o d e e q r
0063540 c D o n e t h e n \r l v
0063560 M e m b e r ! 2 = G e t s (
0063600 s t r e a m , d a t a T i m e
0063620 o u t ) \r r e s 376 001 \0 O 373 u l t
0063640 i s r e t u r n C o d e \r ] \r
0063660 \f \r / / - - - - - - - - - - - -
0063700 - - - - - - - - - - - - - - - -
*
0064000 \r a n d R e a d R L i s t ( n
0064020 a m e , o p , l v E C ; n
0064040 u m a r g s n a ) = v a l
0064060 o f \r / / - - - - - - - - - - -
0064100 - - - - - - - - - - - - - - - -
*
0064200 - \r / / R e a d s a l i s
0064220 t a s s o c i a t e d 376 001 \0
0064240 254 027 w i t h n a m e ( a n
0064260 R N a m e ) a s s p e c i f
0064300 i e d b y o p , w h i c h
0064320 \r / / m a y b e o n e o
0064340 f o p R e a d { M e m b e r s
0064360 | O w n e r s | F r i e n d s }
0064400 . I f s u c c e s s f u l
0064420 , r e t u r n s \r / / a n
0064440 R L i s t , w h i c h t h e
0064460 c a l l e r m u s t d e s
0064500 t r o y ( b y c a l l i n g
0064520 D e s t r o y R L i s t ) w
0064540 h e n \r / / d o n e w i t h
0064560 i t . I f u n s u c c e
0064600 s s f u l , s t o r e s a n
0064620 e r r o r c o d e i n @
0064640 l v 376 001 \0 210 L E C ( i f \r / /
0064660 s u p p l i e d ) a n d r
0064700 e t u r n s z e r o . T h
0064720 e e r r o r c o d e s a r
0064740 e : \r / / e c B a d R N a m e
0064760 \t \t n a m e d o e s n o t
0065000 e x i s t o r i s o f w
0065020 r o n g t y p e f o r o p
0065040 \r / / e c A l l D o w n \t \t c
0065060 a n ' t c o n t a c t a n y
0065100 R - S e r v e r f o r n a
0065120 m e ' s r e g i s t r y \r [ \r
0065140 D e f a u l t A r g s ( l v n
0065160 a , - 2 , l v n a ) \r l e
0065200 t r L i s t = 0 / /
0065220 a t o p + 3 i n f r a m e
0065240 \r l e t r e 376 001 \0 x 266 t u r n
0065260 C o d e = E n q u i r e ( n
0065300 a m e , R e a d R L i s t W o
0065320 r k , l v o p ) \r i f r L
0065340 i s t e q 0 t h e n \r
0065360 @ l v E C = r e t u r n C
0065400 o d e < < R e t u r n C o d e .
0065420 c o d e e q r c B a d R N a
0065440 m e ? e c B a d R N a m e ,
0065460 e c A l l D o w n \r r e s u l t
0065500 i s r L i s t \r ] \r \r / / - -
0065520 - - - - - - - - - - - - - - - -
*
0065620 - - - - - - - - - - \r a n d R
0065640 e a d R L i s t W o r k 376 001 \0 032
0065660 236 ( s t r e a m , n a m e ,
0065700 l v O p ) = v a l o f \r / /
0065720 - - - - - - - - - - - - - - - -
*
0066020 - - - - - - - - - - - - \r / /
0066040 L o c a l p r o c e d u r e
0066060 u s e d b y R e a d R L i s
0066100 t . \r [ \r l e t r e t u r n C
0066120 o d e = E n q u i r e W i t
0066140 h S t a m p ( s t r e a m , l
0066160 v O p ! 0 , n a m e ) \r i f
0066200 r e t u r n C o d e < < R e t u
0066220 r n C o d e . c o d e e q r
0066240 c D o n e t h e n l v O p !
0066260 3 376 001 \0 316 w = R e c e i v e
0066300 R L i s t ( s t r e a m ) \r r e
0066320 s u l t i s r e t u r n C o d
0066340 e \r ] \r \r / / - - - - - - - - -
0066360 - - - - - - - - - - - - - - - -
*
0066460 - - - \r a n d R e a d R S t r
0066500 i n g ( n a m e , o p , l v
0066520 E C ; n u m a r g s n a )
0066540 = v a l o f \r / / - - - - - -
0066560 - - - - - - - - - - - - - - - -
*
0066660 - - - - - - 376 001 \0 036 355 \r / / R
0066700 e a d s a s t r i n g a s
0066720 s o c i a t e d w i t h n a
0066740 m e ( a n R N a m e ) a s
0066760 s p e c i f i e d b y o p
0067000 , w h i c h \r / / m a y b
0067020 e o p R e a d C o n n e c t
0067040 o r o p R e a d R e m a r k .
0067060 I f s u c c e s s f u l ,
0067100 r e t u r n s \r / / a s t
0067120 r i n g , w h i c h t h e
0067140 c a l l e r m u s t f r e e
0067160 t o g u s > > G U S . z o n
0067200 e w h e n \r / / d o n e w
0067220 i t h i t . I f u n s u
0067240 c c e s s f u l , s t o r e s
0067260 a n e r r o r c 376 001 \0 v j
0067300 o d e i n @ l v E C ( i f
0067320 \r / / s u p p l i e d ) a n
0067340 d r e t u r n s z e r o .
0067360 T h e e r r o r c o d e s
0067400 a r e : \r / / e c B a d R N
0067420 a m e \t \t n a m e d o e s n
0067440 o t e x i s t o r i s o
0067460 f w r o n g t y p e f o r
0067500 o p \r / / e c A l l D o w n
0067520 \t \t c a n ' t c o n t a c t
0067540 a n y R - S e r v e r f o r
0067560 n a m e ' s r e g i s t r y
0067600 \r [ \r D e f a u l t A r g s ( l
0067620 v n a , - 2 , l v n a )
0067640 \r l e t s t r i n g = 0
0067660 / / a t o p + 3 i n f
0067700 376 001 \0 311 256 r a m e \r l e t r e
0067720 t u r n C o d e = E n q u i
0067740 r e ( n a m e , R e a d R S t
0067760 r i n g W o r k , l v o p )
0070000 \r i f s t r i n g e q 0
0070020 t h e n \r @ l v E C =
0070040 r e t u r n C o d e < < R e t u
0070060 r n C o d e . c o d e e q r
0070100 c B a d R N a m e ? e c B a d
0070120 R N a m e , e c A l l D o w n
0070140 \r r e s u l t i s s t r i n g
0070160 \r ] \r \r / / - - - - - - - - - -
0070200 - - - - - - - - - - - - - - - -
*
0070300 - - \r a n 376 001 \0 I W d R e a d
0070320 R S t r i n g W o r k ( s t r e
0070340 a m , n a m e , l v O p )
0070360 = v a l o f \r / / - - - - - -
0070400 - - - - - - - - - - - - - - - -
*
0070500 - - - - - - \r / / L o c a l
0070520 p r o c e d u r e u s e d b
0070540 y R e a d R S t r i n g . \r [
0070560 \r l e t r e t u r n C o d e
0070600 = E n q u i r e W i t h S t a
0070620 m p ( s t r e a m , l v O p !
0070640 0 , n a m e ) \r i f r e t u
0070660 r n C o d e < < R e t u r n C o
0070700 d e . c o d e e q 376 001 \0 [ 314
0070720 r c D o n e t h e n l v O p
0070740 ! 3 = R e c e i v e R N a m
0070760 e ( s t r e a m , 0 ) \r r e s
0071000 u l t i s r e t u r n C o d e
0071020 \r ] \r \f \r / / - - - - - - - - -
0071040 - - - - - - - - - - - - - - - -
*
0071140 - - - \r a n d A u t h e n t i
0071160 c a t e ( n a m e , p a s s w
0071200 o r d ) = v a l o f \r / / -
0071220 - - - - - - - - - - - - - - - -
*
0071300 - - - - - - - - - - - - - - - 376
0071320 001 \0 001 240 - - - - - - - - - - - -
0071340 \r / / C h e c k s n a m e
0071360 ( a n R N a m e ) a n d p
0071400 a s s w o r d ( a 6 4 - b i
0071420 t k e y , d e r i v e d f
0071440 r o m a p a s s w o r d \r /
0071460 / s t r i n g b y c a l l
0071500 i n g M a k e K e y ) . R
0071520 e t u r n s o n e o f t h
0071540 e f o l l o w i n g : \r / /
0071560 e c I n d i v i d u a l \t \t s u
0071600 c c e s s f u l l y a u t h e
0071620 n t i c a t e d i n d i v i d
0071640 u a l \r / / e c B a d P a s s
0071660 w o r d \t i n c o r r e c t p
0071700 a s s w o r d \r / / e c B a d
0071720 R N a m 376 001 \0 021 020 e \t \t n a m e
0071740 d o e s n o t e x i s t
0071760 o r i s n o t a n i n d
0072000 i v i d u a l \r / / e c A l l
0072020 D o w n \t \t c a n ' t c o n t
0072040 a c t a n y R - S e r v e r
0072060 f o r n a m e ' s r e g i
0072100 s t r y \r [ \r l e t r e t u r
0072120 n C o d e = E n q u i r e (
0072140 n a m e , A u t h e n t i c a
0072160 t e W o r k , p a s s w o r d
0072200 ) \r r e s u l t i s s e l e c
0072220 t o n r e t u r n C o d e < <
0072240 R e t u r n C o d e . c o d e
0072260 i n t o \r [ \r c a s
0072300 e r c D o n e : e c I n d i
0072320 v i d u a l \r 376 001 \0 177 ) c
0072340 a s e r c B a d P a s s w o r
0072360 d : e c B a d P a s s w o r d
0072400 \r c a s e r c B a d R N
0072420 a m e : e c B a d R N a m e \r
0072440 d e f a u l t : e c A l
0072460 l D o w n \r ] \r ] \r \r / /
0072500 - - - - - - - - - - - - - - - -
*
0072600 - - - - - - - - - - - - \r a n d
0072620 A u t h e n t i c a t e W o r
0072640 k ( s t r e a m , n a m e ,
0072660 p a s s w o r d ) = v a l o
0072700 f \r / / - - - - - - - - - - - -
0072720 - - - - - - - - - - - - - - 376 001
0072740 \0 373 224 - - - - - - - - - - - - -
0072760 - - - - - - - - - - - - - - - -
*
0073020 - - - - - \r / / L o c a l p
0073040 r o c e d u r e u s e d b y
0073060 A u t h e n t i c a t e . \r [
0073100 \r S e n d W o r d ( s t r e a m
0073120 , o p A u t h e n t i c a t e
0073140 ) \r S e n d R N a m e ( s t r e
0073160 a m , n a m e ) \r B S P W r i
0073200 t e B l o c k ( s t r e a m ,
0073220 p a s s w o r d , 0 , 2 * l
0073240 e n P a s s w o r d ) \r B S P F
0073260 o r c e O u t p u t ( s t r e a
0073300 m - o f f s e t B S P S t r ,
0073320 t r u e ) \r r e s u l t i s R
0073340 e c e 376 \0 022 o 331 i v e W o r d (
0073360 s t r e a m ) \r ] \r 377 \0 \0 G r a
0073400 p e v i n e P r o t o c o l . b
0073420 c p l \0 373 233 225 345 9 \0 \0 376 001 \0 373 200
0073440 / / G r a p e v i n e P r o t
0073460 o c o l . b c p l \r / / C o p
0073500 y r i g h t X e r o x C o r
0073520 p o r a t i o n 1 9 8 1 , 1
0073540 9 8 3 \r / / L a s t m o d i
0073560 f i e d S e p t e m b e r 1
0073600 9 , 1 9 8 3 9 : 3 4 A M
0073620 b y T a f t \r \r g e t " P
0073640 u p 0 . d e c l " \r g e t " P
0073660 u p 1 . d e c l " \r g e t " G
0073700 r a p e v i n e . d e c l " \r g
0073720 e t " G r a p e v i n e P r o
0073740 t o c o l . d e c l " \r g e t
0073760 " G r a p e v i n e I n t e r n
0074000 a l . d e c l " \r g e t " S t
0074020 r e a m s . d " \r \r e x t e r n
0074040 376 001 \0 232 034 a l \r [ \r / / o u t
0074060 g o i n g p r o c e d u r e s
0074100 \r I n i t G r a p e v i n e ;
0074120 M a k e K e y \r G V C r e a t e
0074140 S t r e a m ; G V D e s t r o
0074160 y S t r e a m ; G V C l a i m
0074200 S t r e a m ; G V R e l e a s
0074220 e S t r e a m \r R e c e i v e W
0074240 o r d ; S e n d W o r d ; R
0074260 e c e i v e R N a m e ; S e n
0074300 d R N a m e \r R e c e i v e R L
0074320 i s t ; D e s t r o y R L i s
0074340 t \r \r / / f o r O E P d e
0074360 c l a r a t i o n o n l y : \r
0074400 G V S t r e a m E r r o r \r \r /
0074420 / i n c o m i n g p r o c e
0074440 d u r e s 376 001 \0 317 346 \r O p e n L
0074460 e v e l 1 S o c k e t ; C l o
0074500 s e L e v e l 1 S o c k e t \r O
0074520 p e n R T P S o c k e t ; C r
0074540 e a t e B S P S t r e a m ; C
0074560 l o s e B S P S o c k e t \r B S
0074600 P R e a d B l o c k ; B S P W
0074620 r i t e B l o c k \r E n q u e u
0074640 e ; D e q u e u e ; B l o c
0074660 k \r G e t s ; P u t s ; E r
0074700 r o r s \r A l l o c a t e ; F
0074720 r e e ; Z e r o ; M o v e B
0074740 l o c k ; M y F r a m e ; G
0074760 o t o F r a m e \r \r / / o u t
0075000 g o i n g s t a t i c s \r @ g
0075020 u s \r \r / / i n c o m i n g
0075040 s t a t i c s \r o f 376 001 \0 334 - f
0075060 s e t B S P S t r ; l B S P S
0075100 o c ; C t x R u n n i n g \r ]
0075120 \r \r s t a t i c @ g u s =
0075140 0 / / G r a p e v i n e
0075160 U s e r S t a t e \r \r / / - -
0075200 - - - - - - - - - - - - - - - -
*
0075300 - - - - - - - - - - \r l e t I
0075320 n i t G r a p e v i n e ( z o n
0075340 e , t e s t i n g ; n u m a
0075360 r g s n a ) b e \r / / - - -
0075400 - - - - - - - - - - - - - - - -
*
0075440 - - - - - - - - - - - - - - - 376
0075460 001 \0 210 226 - - - - - - - - - - - -
0075500 - - - - - - - - - - - - - - \r /
0075520 / I f t e s t i n g t h e
0075540 n u s e t h e R - S e r v
0075560 e r t e s t i n g s o c k e
0075600 t s ( 1 i n t h e h i g
0075620 h w o r d ) \r / / r a t h e
0075640 r t h a n t h e n o r m a
0075660 l s o c k e t s . \r / / M a
0075700 y b e c a l l e d m u l t
0075720 i p l e t i m e s t o c h
0075740 a n g e t h e t e s t i n g
0075760 m o d e . \r [ \r i f g u s
0076000 e q 0 t h e n \r [ \r
0076020 g u s = A l l o c a t e
0076040 ( z o n e , l e n G U S ) ;
0076060 Z e r o 376 001 \0 353 241 ( g u s , l
0076100 e n G U S ) \r g u s > > G
0076120 U S . z o n e = z o n e \r
0076140 ] \r g u s > > G U S . s o c
0076160 k e t H i g h = n a g r
0076200 1 & t e s t i n g ? 1 ,
0076220 0 \r G V D e s t r o y S t r e a
0076240 m ( ) / / i n c a s e
0076260 c h a n g e d t e s t i n g
0076300 m o d e \r ] \r \r / / - - - - - -
0076320 - - - - - - - - - - - - - - - -
*
0076420 - - - - - - \r a n d M a k e K
0076440 e y ( s t r i n g , k e y )
0076460 b e \r / / - - - - 376 001 \0 8 374 - -
0076500 - - - - - - - - - - - - - - - -
*
0076600 - - - - - - \r / / C o n v e r
0076620 t s p a s s w o r d s t r i
0076640 n g t o 6 4 - b i t e n c
0076660 r y p t i o n k e y . \r [ \r s
0076700 t r u c t u r e P S t r i n g
0076720 : [ l e n g t h b y t e ;
0076740 c h a r ^ 0 , 0 b y t e ]
0076760 / / z e r o - o r i g i n
0077000 s t r i n g \r Z e r o ( k e y
0077020 , l e n P a s s w o r d ) \r f
0077040 o r i = 0 t o s t r i
0077060 n g > > P S t r i n g . l e 376 001
0077100 \0 a 031 n g t h - 1 d o \r
0077120 [ \r l e t j = i r
0077140 e m 8 \r l e t c =
0077160 s t r i n g > > P S t r i n g .
0077200 c h a r ^ i \r i f c g
0077220 e $ A & c l e $ Z t
0077240 h e n c = c + ( $ a - $ A
0077260 ) \r k e y > > P a s s w o
0077300 r d ^ j = k e y > > P a s s
0077320 w o r d ^ j x o r ( c l s
0077340 h i f t 1 ) \r ] \r ] \r \f
0077360 \r / / - - - - - - - - - - - - -
0077400 - - - - - - - - - - - - - - - -
*
0077460 - - - - - - - - - - - - - - - \r
0077500 a n d 376 001 \0 340 204 G V C r e a t
0077520 e S t r e a m ( p o r t ) =
0077540 v a l o f \r / / - - - - - - - -
0077560 - - - - - - - - - - - - - - - -
*
0077660 - - - - \r / / F i r s t c l
0077700 o s e s c u r r e n t l y - o
0077720 p e n s t r e a m i f t h
0077740 e r e i s o n e . \r / / T
0077760 h e n a t t e m p t s t o
0100000 o p e n a s t r e a m t o
0100020 p o r t . I f s u c c e
0100040 s s f u l , p u t s s t r e
0100060 a m i n \r / / g u s > > G U
0100100 S . s t r e a m 376 001 \0 370 222 .
0100120 R e t u r n s t r u e i f f
0100140 s u c c e s s f u l . \r / /
0100160 T h e s o c k e t p o r t i
0100200 o n o f p o r t i s i g
0100220 n o r e d ; t h e r e g i s
0100240 t r a t i o n s e r v e r e
0100260 n q u i r y \r / / s o c k e t
0100300 i s a l w a y s u s e d
0100320 ( a n d i s s t o r e d i
0100340 n t o t h e p o r t t h a
0100360 t w a s p a s s e d i n )
0100400 . \r [ \r G V D e s t r o y S t r
0100420 e a m ( ) \r G V C l a i m S t r
0100440 e a m ( ) \r l e t s o c =
0100460 A l l o c a t e ( g u s > > G U
0100500 S . z o n e , l B S P S 376 001 \0
0100520 321 254 o c ) \r p o r t > > P o r t
0100540 . s o c k e t ^ 1 = g u s >
0100560 > G U S . s o c k e t H i g h
0100600 / / z e r o e x c e p t
0100620 w h e n t e s t i n g \r p o r
0100640 t > > P o r t . s o c k e t ^ 2
0100660 = s o c R e g S e r v e r E
0100700 n q u i r y \r O p e n L e v e l
0100720 1 S o c k e t ( s o c , 0 ,
0100740 p o r t ) \r l e t r e s u l t
0100760 = O p e n R T P S o c k e t
0101000 ( s o c , 0 , 0 , 0 , 0
0101020 , i n i t i a l T i m e o u t
0101040 ) \r t e s t r e s u l t \r
0101060 i f s o \r [ \r
0101100 g u s > > G U S . s t r
0101120 e a 376 001 \0 200 W m = C r e a t
0101140 e B S P S t r e a m ( s o c ) \r
0101160 g u s > > G U S . s
0101200 t r e a m > > S T . e r r o r
0101220 = G V S t r e a m E r r o r \r
0101240 ] \r i f n o t
0101260 \r [ C l o s e L e
0101300 v e l 1 S o c k e t ( s o c ) ;
0101320 F r e e ( g u s > > G U S . z
0101340 o n e , s o c ) ] \r G V R e
0101360 l e a s e S t r e a m ( ) \r r e
0101400 s u l t i s r e s u l t \r ] \r
0101420 \r / / - - - - - - - - - - - - -
0101440 - - - - - - - - - - - - - - - -
*
0101520 - - - - - - - 376 001 \0 [ 342 - - - -
0101540 - - - - \r a n d G V D e s t r
0101560 o y S t r e a m ( ) b e \r / /
0101600 - - - - - - - - - - - - - - - -
*
0101700 - - - - - - - - - - - - \r / /
0101720 C l o s e s a n d d e s t r
0101740 o y s t h e c u r r e n t l
0101760 y - o p e n s t r e a m i f
0102000 t h e r e i s o n e . \r [
0102020 \r G V C l a i m S t r e a m ( )
0102040 \r i f g u s > > G U S . s t r
0102060 e a m n e 0 t h e n \r
0102100 [ \r l e t s o c =
0102120 g u s > > G U S . s t r 376 001 \0 t
0102140 A e a m - o f f s e t B S P S t
0102160 r \r C l o s e B S P S o c
0102200 k e t ( s o c , c l o s e T i
0102220 m e o u t ) \r F r e e ( g
0102240 u s > > G U S . z o n e , s o
0102260 c ) \r ] \r g u s > > G U S
0102300 . s t r e a m = 0 \r G V R e
0102320 l e a s e S t r e a m ( ) \r ] \r
0102340 \r / / - - - - - - - - - - - - -
0102360 - - - - - - - - - - - - - - - -
*
0102440 - - - - - - - - - - - - - - - \r
0102460 a n d G V C l a i m S t r e a
0102500 m ( ) b e \r / / - - - - - - -
0102520 - - - - - - - - - - - - - - - -
0102540 - 376 001 \0 347 365 - - - - - - - - - -
0102560 - - - - - - - - - - - - - - - -
*
0102620 - - - - - - - - - - \r / / O b
0102640 t a i n s a l o c k o n
0102660 t h e s t r e a m - - m u
0102700 s t b e d o n e p r i o r
0102720 t o a n y s t r e a m o
0102740 p e r a t i o n . \r [ \r w h i l
0102760 e g u s > > G U S . i n U s e
0103000 d o B l o c k ( ) \r g u s >
0103020 > G U S . i n U s e = C t x
0103040 R u n n i n g \r ] \r \r / / - - -
0103060 - - - - - - - - - - - - - - - -
*
0103140 - - - - - - 376 001 \0 V z - - - - -
0103160 - - - - - - - - - - - - - - \r a
0103200 n d G V R e l e a s e S t r e
0103220 a m ( ) b e g u s > > G U S
0103240 . i n U s e = 0 \r / / - - -
0103260 - - - - - - - - - - - - - - - -
*
0103360 - - - - - - - - - \r / / R e l
0103400 e a s e s t h e l o c k o
0103420 n t h e s t r e a m . \r \f \r
0103440 / / - - - - - - - - - - - - - -
0103460 - - - - - - - - - - - - - - - -
*
0103540 - - - - - - - - - - - 376 001 \0 271 253
0103560 - - - \r a n d G V S t r e a m
0103600 E r r o r ( s t r e a m , e c
0103620 ) b e \r / / - - - - - - - - -
0103640 - - - - - - - - - - - - - - - -
*
0103740 - - - \r / / T h e s t r e a
0103760 m e r r o r r o u t i n e
0104000 c a l l e d o n t h e B S
0104020 P s t r e a m t o t h e
0104040 G r a p e v i n e s e r v e r
0104060 . \r / / D e s t r o y s t h
0104100 e s t r e a m a n d r e t
0104120 u r n s t o t h e f r a m
0104140 e s p e c i f i e d i n S
0104160 376 001 \0 370 ? T . p a r 1 , \r / /
0104200 w h i c h h a d b e t t e r
0104220 b e o n t h e c a l l
0104240 s t a c k ! T h e v a l u
0104260 e - 1 i s r e t u r n e d
0104300 ; t h i s \r / / m u s t b
0104320 e d i s t i n g u i s h a b l
0104340 e a s a n e x c e p t i o
0104360 n a l r e s u l t b y t h
0104400 e c o d e f o r t h e \r /
0104420 / f r a m e t h a t i s
0104440 r e t u r n e d t o . \r [ \r l
0104460 e t f r a m e = s t r e a
0104500 m > > S T . p a r 1 \r l e t s
0104520 o c = g u s > > G U S . s t
0104540 r e a m - o f f s e t B S P S t
0104560 r \r C l o 376 001 \0 235 : s e B S P S
0104600 o c k e t ( s o c , 0 ) /
0104620 / a b o r t i t \r F r e e (
0104640 g u s > > G U S . z o n e , s
0104660 o c ) \r g u s > > G U S . s t r
0104700 e a m = 0 \r G o t o F r a m
0104720 e ( f r a m e , - 1 ) / /
0104740 c o d e = r c S t r e a m
0104760 F a i l e d , t y p e = r
0105000 n S t r e a m F a i l e d \r ] \r
0105020 \r / / - - - - - - - - - - - - -
0105040 - - - - - - - - - - - - - - - -
*
0105120 - - - - - - - - - - - - - - - \r
0105140 a n d R e c e i v e W o r d (
0105160 s t r e a m ) = 376 001 \0 025 230 v
0105200 a l o f \r / / - - - - - - - - -
0105220 - - - - - - - - - - - - - - - -
*
0105320 - - - \r [ \r l e t l = G e
0105340 t s ( s t r e a m , d a t a T
0105360 i m e o u t ) \r r e s u l t i s
0105400 l l s h i f t 8 + G e
0105420 t s ( s t r e a m , d a t a T
0105440 i m e o u t ) \r ] \r \r / / - - -
0105460 - - - - - - - - - - - - - - - -
*
0105560 - - - - - - - - - \r a n d S 376
0105600 001 \0 0 i e n d W o r d ( s t r e
0105620 a m , w ) b e \r / / - - - -
0105640 - - - - - - - - - - - - - - - -
*
0105740 - - - - - - - - \r [ \r P u t s (
0105760 s t r e a m , w r s h i f t
0106000 8 , d a t a T i m e o u t )
0106020 \r P u t s ( s t r e a m , w ,
0106040 d a t a T i m e o u t ) \r ] \r
0106060 \r / / - - - - - - - - - - - - -
0106100 - - - - - - - - - - - - - - - -
*
0106160 - - - - - - - - - - - - - - - \r
0106200 a n d 376 001 \0 352 V R e c e i v e
0106220 R N a m e ( s t r e a m , o v
0106240 e r h e a d W o r d s ) = v
0106260 a l o f \r / / - - - - - - - - -
0106300 - - - - - - - - - - - - - - - -
*
0106400 - - - \r / / R e a d s a M
0106420 e s a s t r i n g f r o m
0106440 s t r e a m , a n d r e t u
0106460 r n s t h e r e s u l t a
0106500 s \r / / e i t h e r a n R
0106520 N a m e ( o v e r h e a d W o
0106540 r d s = 0 ) o r a n R
0106560 I t e m ( o v e r h e a d W o
0106600 r d s = 1 ) . 376 001 \0 275 243 \r /
0106620 / C a l l s E r r o r s ( s
0106640 t r e a m , e c B a d P r o t
0106660 o c o l ) i f a n y t h i n
0106700 g b a d h a p p e n s . \r [
0106720 \r l e t l e n g t h = R e
0106740 c e i v e W o r d ( s t r e a m
0106760 ) / / l e n g t h \r i f
0107000 l e n g t h u g r m a x R N
0107020 a m e L e n g t h t h e n E
0107040 r r o r s ( s t r e a m , e c
0107060 B a d P r o t o c o l ) \r R e c
0107100 e i v e W o r d ( s t r e a m )
0107120 / / m a x L e n g t h (
0107140 i g n o r e d ) \r \r l e t s a
0107160 v e d E r r o r P o i n t =
0107200 s t r e a m > > S T . p a r 376 001
0107220 \0 c Q 1 \r s t r e a m > > S T .
0107240 p a r 1 = M y F r a m e ( )
0107260 \r \r / / G r a p e v i n e a
0107300 l w a y s s e n d s a n e
0107320 v e n n u m b e r o f b y
0107340 t e s , e v e n i f t h e
0107360 s t r i n g \r / / l e n g t
0107400 h i s o d d . M a k e
0107420 t h e R N a m e o n e w o
0107440 r d t o o l o n g t o a
0107460 c c o m o d a t e i t . \r l e
0107500 t r I t e m = A l l o c a
0107520 t e ( g u s > > G U S . z o n e
0107540 , o v e r h e a d W o r d s
0107560 + ( l e n g t h + 3 ) r s h
0107600 i f t 1 ) \r l e t r N a m e
0107620 = 376 001 \0 350 245 r I t e m + o v
0107640 e r h e a d W o r d s \r r N a m
0107660 e > > R N a m e . l e n g t h
0107700 = l e n g t h \r i f B S P R
0107720 e a d B l o c k ( s t r e a m ,
0107740 r N a m e , 1 , ( l e n g
0107760 t h + 1 ) & - 2 , d a t a T i
0110000 m e o u t ) e q - 1 t h e
0110020 n \r [ F r e e ( g u s >
0110040 > G U S . z o n e , r I t e m
0110060 ) ; G o t o F r a m e ( s a v
0110100 e d E r r o r P o i n t , - 1
0110120 ) ] \r \r s t r e a m > > S T .
0110140 p a r 1 = s a v e d E r r o
0110160 r P o i n t \r r e s u l t i s
0110200 r I t e m \r ] \r \f \r / / - - - -
0110220 - - - - - - - - 376 001 \0 377 204 - - -
0110240 - - - - - - - - - - - - - - - -
*
0110320 - - - - - - - - - - - - - \r a n
0110340 d S e n d R N a m e ( s t r e
0110360 a m , r N a m e ) b e \r / /
0110400 - - - - - - - - - - - - - - - -
*
0110500 - - - - - - - - - - - - \r / /
0110520 W r i t e s r N a m e ( a
0110540 B C P L s t r i n g ) a s
0110560 a M e s a s t r i n g o n
0110600 s t r e a m . \r [ \r S e n d W
0110620 o r d ( s t r e a m , r 376 001 \0
0110640 303 270 N a m e > > R N a m e . l e
0110660 n g t h ) / / l e n g t h
0110700 \r S e n d W o r d ( s t r e a m
0110720 , 0 ) / / m a x L e n g
0110740 t h ( i g n o r e d ) \r B S P
0110760 W r i t e B l o c k ( s t r e a
0111000 m , r N a m e , 1 , ( r N
0111020 a m e > > R N a m e . l e n g t
0111040 h + 1 ) & - 2 , / / t e x t
0111060 & p a d d i n g \r d a t a
0111100 T i m e o u t ) \r ] \r \r / / - -
0111120 - - - - - - - - - - - - - - - -
*
0111220 - - - - - - - - - - \r a n d R
0111240 e c 376 001 \0 035 216 e i v e R L i s t
0111260 ( s t r e a m ) = v a l o f
0111300 \r / / - - - - - - - - - - - - -
0111320 - - - - - - - - - - - - - - - -
*
0111400 - - - - - - - - - - - - - - - \r
0111420 [ \r l e t s t a m p = v e
0111440 c l e n T i m e S t a m p \r B
0111460 S P R e a d B l o c k ( s t r e
0111500 a m , s t a m p , 0 , 2 *
0111520 l e n T i m e S t a m p , d a
0111540 t a T i m e o u t ) \r l e t w
0111560 o r d s = R e c e i v e W o
0111600 r d ( s t r e a m ) \r \r l e t
0111620 s a v e d E r r o r P o i n t
0111640 = s t r e a 376 001 \0 345 : m > > S
0111660 T . p a r 1 \r s t r e a m > > S
0111700 T . p a r 1 = M y F r a m e
0111720 ( ) \r \r l e t r L i s t =
0111740 A l l o c a t e ( g u s > > G U
0111760 S . z o n e , l e n R L i s t
0112000 ) \r Z e r o ( r L i s t , l e
0112020 n R L i s t ) \r M o v e B l o c
0112040 k ( l v r L i s t > > R L i s
0112060 t . s t a m p , s t a m p ,
0112100 l e n T i m e S t a m p ) \r \r w
0112120 h i l e w o r d s u g r 0
0112140 d o \r [ \r l e t
0112160 r I t e m = R e c e i v e R
0112200 N a m e ( s t r e a m , 1 ) \r
0112220 i f r I t e m e q -
0112240 1 t h e n \r 376 001 \0 ;
0112260 374 [ D e s t r o y R L i s t
0112300 ( r L i s t ) ; G o t o F r a
0112320 m e ( s a v e d E r r o r P o i
0112340 n t , - 1 ) ] \r E n q
0112360 u e u e ( l v r L i s t > > R
0112400 L i s t . q u e u e , r I t e
0112420 m ) \r w o r d s = w o
0112440 r d s - ( r I t e m > > R I
0112460 t e m . r N a m e . l e n g t h
0112500 + 5 ) r s h i f t 1 \r
0112520 ] \r \r s t r e a m > > S T . p a
0112540 r 1 = s a v e d E r r o r P
0112560 o i n t \r r e s u l t i s r L
0112600 i s t \r ] \r \r / / - - - - - - -
0112620 - - - - - - - - - - - - - - - -
*
0112660 - 376 001 \0 k 7 - - - - - - - - - -
0112700 - - - - - - - - - - - - - - - -
0112720 - - - - - - - - - - \r a n d D
0112740 e s t r o y R L i s t ( r L i s
0112760 t ) b e \r / / - - - - - - - -
0113000 - - - - - - - - - - - - - - - -
*
0113100 - - - - \r [ \r w h i l e r L i
0113120 s t > > R L i s t . q u e u e .
0113140 h e a d n e 0 d o \r
0113160 F r e e ( g u s > > G U S . z o
0113200 n e , D e q u e u e ( l v r
0113220 L i s t > > R L i s t . q u e u
0113240 e ) ) \r F r e e ( g u s > > G U
0113260 S . z o n e 376 \0 \v 211 p , r L i
0113300 s t ) \r ] \r 377 \0 \0 G r a p e v i
0113320 n e O E P . b c p l \0 373 233 225 332 V
0113340 \0 \0 376 001 \0 \f 311 / / G r a p e v
0113360 i n e O E P . b c p l - - O
0113400 v e r l a y E n t r y P o i
0113420 n t s f o r G r a p e v i n
0113440 e p a c k a g e \r / / C o p
0113460 y r i g h t X e r o x C o r
0113500 p o r a t i o n 1 9 8 1 , 1
0113520 9 8 3 \r / / L a s t m o d i
0113540 f i e d S e p t e m b e r 1
0113560 9 , 1 9 8 3 9 : 2 0 A M
0113600 b y T a f t \r \r e x t e r n
0113620 a l \r [ \r / / o u t g o i n g
0113640 p r o c e d u r e s \r I n i t
0113660 G r a p e v i n e O E P \r \r / /
0113700 i n c o m i n g p r o c e d
0113720 u r e s \r D e c l a r e O E P ;
0113740 G V S t r e 376 001 \0 355 247 a m E r
0113760 r o r ; G V C r e a t e S t r
0114000 e a m \r ] \r \r \r / / - - - - - -
0114020 - - - - - - - - - - - - - - - -
*
0114120 - - - - - - \r l e t I n i t G
0114140 r a p e v i n e O E P ( o e v )
0114160 b e \r / / - - - - - - - - - -
0114200 - - - - - - - - - - - - - - - -
*
0114300 - - \r [ \r D e c l a r e O E P (
0114320 o e v , l v G V S t r e a m
0114340 E r r o r , l v G V 376 \0 020 312
0114360 250 C r e a t e S t r e a m ) \r ]
0114400 \r 377 \0 \0 G r a p e v i n e T e s
0114420 t . b c p l \0 373 233 227 ` X \0 \0 376 001
0114440 \0 027 l / / G r a p e v i n e T
0114460 e s t . b c p l \r / / L a s t
0114500 m o d i f i e d S e p t e m
0114520 b e r 2 0 , 1 9 8 3 1 :
0114540 0 4 P M b y T a f t \r \r g
0114560 e t " G r a p e v i n e . d e
0114600 c l " \r g e t " G r a p e v i
0114620 n e P r o t o c o l . d e c l "
0114640 \r g e t " P u p 0 . d e c l "
0114660 \r g e t " S t r e a m s . d "
0114700 \r \r e x t e r n a l \r [ \r I n i
0114720 t P u p L e v e l 1 ; I n i t
0114740 G r a p e v i n e ; G V D e s
0114760 t r o y S t r e a m \r I s I n A
0115000 C L ; A u t h e n t i c a t e
0115020 ; R e a d R L i s t ; D e s
0115040 t r o 376 001 \0 ` 355 y R L i s t ;
0115060 M a k e K e y ; F i n d S e r
0115100 v e r \r I n i t i a l i z e C o
0115120 n t e x t ; C a l l C o n t e
0115140 x t L i s t \r I n i t C m d ;
0115160 G e t S t r i n g ; C r e a t
0115200 e K e y w o r d T a b l e ; I
0115220 n s e r t K e y w o r d ; G e
0115240 t K e y w o r d ; G e t N u m
0115260 b e r ; C o n f i r m \r D e s
0115300 t r o y K e y w o r d T a b l e
0115320 ; E n a b l e C a t c h ; E
0115340 n d C a t c h ; D i s a b l e
0115360 C a t c h ; D e f a u l t P h
0115400 r a s e \r C r e a t e D i s p l
0115420 a y S t r e a m ; S h o w D i
0115440 s p l a y S t r 376 001 \0 355 337 e a m
0115460 \r I n i t i a l i z e Z o n e ;
0115500 A l l o c a t e ; F r e e \r
0115520 P u t s ; C l o s e s ; W s
0115540 ; W s s ; P u t T e m p l a
0115560 t e ; E n q u e u e ; Q u e
0115600 u e L e n g t h ; E x t r a c
0115620 t S u b s t r i n g \r S y s E r
0115640 r ; F a l s e P r e d i c a t
0115660 e ; B l o c k ; I d l e \r d
0115700 s p ; s y s Z o n e ; l v S
0115720 y s Z o n e ; l v I d l e \r ]
0115740 \r \r s t a t i c \r [ \r c t x Q ;
0115760 u n d e r l y i n g Z o n e ;
0116000 d e f a u l t G r o u p ; d
0116020 e f a u l t M e m b e r ; d e
0116040 f a u l t S e r v e r \r t 376 001 \0
0116060 210 3 e s t i n g = f a l s e
0116100 \r ] \r \r s t r u c t u r e M y
0116120 Z o n e : \r [ \r @ Z N \r u n d e
0116140 r l y i n g Z o n e w o r d \r
0116160 b l o c k s A l l o c a t e d
0116200 w o r d \r ] \r m a n i f e s t
0116220 l e n M y Z o n e = s i z e
0116240 M y Z o n e / 1 6 \r \r / / - -
0116260 - - - - - - - - - - - - - - - -
*
0116360 - - - - - - - - - \r l e t T e
0116400 s t ( ) b e \r / / - - - - - -
0116420 - - - - - - - - - - - - - - - -
*
0116460 - - 376 001 \0 362 245 - - - - - - - - -
0116500 - - - - - - - - - - - - - - - -
0116520 - - - - - - - - - - \r [ \r W s (
0116540 " * n G r a p e v i n e T e s t
0116560 o f S e p t e m b e r 2 0
0116600 , 1 9 8 3 " ) \r l e t v =
0116620 v e c 1 0 0 0 0 \r l e t m
0116640 y Z o n e = v e c l e n M
0116660 y Z o n e \r m y Z o n e > > M y
0116700 Z o n e . A l l o c a t e =
0116720 M y A l l o c a t e ; m y Z o
0116740 n e > > M y Z o n e . F r e e
0116760 = M y F r e e \r m y Z o n e >
0117000 > M y Z o n e . u n d e r l y i
0117020 n g Z o n e = I n i t i a l
0117040 i z e Z o n e ( v , 1 0 0 0 0
0117060 , S y s E r 376 001 \0 c 324 r , 0
0117100 ) \r m y Z o n e > > M y Z o n e
0117120 . b l o c k s A l l o c a t e d
0117140 = 0 \r s y s Z o n e = m
0117160 y Z o n e ; @ l v S y s Z o n
0117200 e = m y Z o n e \r l e t v
0117220 = v e c 1 ; c t x Q =
0117240 v ; c t x Q ! 0 = 0 \r \r
0117260 l e t v = v e c 2 0 0 0
0117300 0 \r d s p = C r e a t e D i
0117320 s p l a y S t r e a m ( 4 0 ,
0117340 v , 2 0 0 0 0 ) \r S h o w D i
0117360 s p l a y S t r e a m ( d s p )
0117400 \r \r I n i t P u p L e v e l 1 (
0117420 s y s Z o n e , c t x Q , 1
0117440 0 ) \r \r E n q u e u e ( c t x Q
0117460 , I n i t i a l i z e 376 001 \0 307
0117500 320 C o n t e x t ( A l l o c a t
0117520 e ( s y s Z o n e , 1 0 0 0 )
0117540 , 1 0 0 0 , M a i n ) ) \r \r
0117560 @ l v I d l e = B l o c k \r
0117600 \r C a l l C o n t e x t L i s t
0117620 ( c t x Q ! 0 ) r e p e a t \r
0117640 ] \r \r / / - - - - - - - - - - -
0117660 - - - - - - - - - - - - - - - -
*
0117760 \r a n d M a i n ( c t x ) b
0120000 e \r / / - - - - - - - - - - - -
0120020 - - - - - - - - - - - - - - - -
*
0120100 - 376 001 \0 374 B - - - - - - - - - -
0120120 - - - - \r [ \r I n i t G r a p e
0120140 v i n e ( s y s Z o n e ) \r l e
0120160 t k t = C r e a t e K e y
0120200 w o r d T a b l e ( 1 0 ) \r I n
0120220 s e r t K e y w o r d ( k t ,
0120240 " I s " ) ! 0 = I s C m d \r
0120260 I n s e r t K e y w o r d ( k t
0120300 , " R e g i s t r y " ) ! 0
0120320 = R e g i s t r y C m d \r I n
0120340 s e r t K e y w o r d ( k t ,
0120360 " A u t h e n t i c a t e " ) !
0120400 0 = A u t h e n t i c a t e
0120420 C m d \r I n s e r t K e y w o r
0120440 d ( k t , " R e a d " ) ! 0
0120460 = R e a d C m d \r I n s e r t
0120500 K e y w o r 376 001 \0 & 357 d ( k t ,
0120520 " F i n d " ) ! 0 = F i n
0120540 d C m d \r I n s e r t K e y w o
0120560 r d ( k t , " Q u i t " ) ! 0
0120600 = Q u i t \r I n s e r t K e
0120620 y w o r d ( k t , " Z o n e C
0120640 o u n t " ) ! 0 = Z o n e C
0120660 o u n t C m d \r I n s e r t K e
0120700 y w o r d ( k t , " T e s t i
0120720 n g " ) ! 0 = T e s t i n g
0120740 C m d \r I n s e r t K e y w o r
0120760 d ( k t , " C l o s e " ) ! 0
0121000 = G V D e s t r o y S t r e
0121020 a m \r \r d e f a u l t G r o u p
0121040 = E x t r a c t S u b s t r
0121060 i n g ( " " ) \r d e f a u l t M
0121100 e m b e r = E x t 376 001 \0 314 204
0121120 r a c t S u b s t r i n g ( " "
0121140 ) \r d e f a u l t S e r v e r
0121160 = E x t r a c t S u b s t r i
0121200 n g ( " " ) \r \r [ / /
0121220 r e p e a t \r l e t c s
0121240 = I n i t C m d ( 1 0 0 ,
0121260 1 0 ) \r i f c s n e
0121300 0 t h e n \r [ \r
0121320 W s s ( c s , " * n
0121340 > " ) \r l e t p
0121360 r o c = G e t K e y w o r d
0121400 ( c s , k t ) ! 0 \r
0121420 p r o c ( c s ) \r
0121440 C l o s e s ( c s ) \r
0121460 ] \r ] r e p e a t \r ]
0121500 \r \r / / - - - - - - - - - - - -
0121520 376 001 \0 n & - - - - - - - - - - -
0121540 - - - - - - - - - - - - - - - -
*
0121620 - - - - \r a n d Q u i t ( c s
0121640 ) b e \r / / - - - - - - - - -
0121660 - - - - - - - - - - - - - - - -
*
0121760 - - \r [ \r C l o s e s ( d s p )
0122000 \r G V D e s t r o y S t r e a m
0122020 ( ) \r @ l v I d l e = I d l
0122040 e \r f i n i s h \r ] \r \r / / - -
0122060 - - - - - - - - - - - - - - - -
*
0122120 - - - - - 376 001 \0 004 [ - - - - - -
0122140 - - - - - - - - - - - - - - - -
0122160 - - - - - - - - - - - - - - \r a
0122200 n d T e s t i n g C m d ( c s
0122220 ) b e \r / / - - - - - - - - -
0122240 - - - - - - - - - - - - - - - -
*
0122340 - - \r [ \r W s s ( c s , ( t e
0122360 s t i n g ? " d i s a b l e
0122400 " , " e n a b l e " ) ) \r i
0122420 f C o n f i r m ( c s ) t h
0122440 e n t e s t i n g = n o t
0122460 t e s t i n g \r I n i t G r a
0122500 p e v i n e ( n i l , t e s t
0122520 i n g ) \r ] \r \r / / 376 001 \0 271 3 -
0122540 - - - - - - - - - - - - - - - -
*
0122640 - - - - - - - - - - \r a n d Z
0122660 o n e C o u n t C m d ( c s )
0122700 b e \r / / - - - - - - - - - - -
0122720 - - - - - - - - - - - - - - - -
*
0123020 \r P u t T e m p l a t e (
0123040 d s p , " = $ U D b l o
0123060 c k s a l l o c a t e d " ,
0123100 s y s Z o n e > > M y Z o n e .
0123120 b l o c k s A l l o c a t e d 376
0123140 001 \0 021 362 ) \r \r / / - - - - - - -
0123160 - - - - - - - - - - - - - - - -
*
0123260 - - - - \r a n d I s C m d ( c
0123300 s , n i l ; n u m a r g s
0123320 n a ) b e \r / / - - - - - - -
0123340 - - - - - - - - - - - - - - - -
*
0123440 - - - - \r [ \r l e t d e s c
0123460 = n a e q 1 ? d I t s e
0123500 l f , d I t s R e g i s t r y
0123520 \r d e s c = d e s c % (
0123540 t a b l 376 001 \0 v 374 e [ d M e
0123560 m b e r ; d O w n e r ; d F
0123600 r i e n d ] ) ! \r (
0123620 S e l e c t K e y w o r d ( c s
0123640 , " M e m b e r " , " O w n
0123660 e r " , " F r i e n d " ) - 1
0123700 ) \r d e s c = d e s c %
0123720 ( t a b l e [ d D i r e c t
0123740 ; d C l o s u r e ; d U p A
0123760 r r o w ] ) ! \r ( S
0124000 e l e c t K e y w o r d ( c s ,
0124020 " D i r e c t " , " C l o s
0124040 u r e " , " U p A r r o w " )
0124060 - 1 ) \r W s s ( c s , " ( g
0124100 r o u p ) " ) \r l e t g r o
0124120 u p = G e t D e f a u l t e
0124140 d S t r i n g ( c 376 001 \0 240 302 s ,
0124160 l v d e f a u l t G r o u p
0124200 ) \r W s s ( c s , " ( m e m
0124220 b e r ) " ) \r l e t m e m b
0124240 e r = G e t D e f a u l t e
0124260 d S t r i n g ( c s , l v d
0124300 e f a u l t M e m b e r ) \r l e
0124320 t e c = I s I n A C L ( g
0124340 r o u p , m e m b e r , d e
0124360 s c ) \r D i s p l a y G r a p e
0124400 v i n e E C ( e c ) \r F r e e (
0124420 s y s Z o n e , g r o u p ) \r
0124440 F r e e ( s y s Z o n e , m e
0124460 m b e r ) \r ] \r \r / / - - - - -
0124500 - - - - - - - - - - - - - - - -
*
0124540 - - - - - - - - - - - - - - 376 001
0124560 \0 235 200 - - - - - - - - - - - - -
0124600 - - - - - - - - - - - \r a n d
0124620 R e g i s t r y C m d ( c s )
0124640 b e I s C m d ( c s , n i l
0124660 ) \r / / - - - - - - - - - - - -
0124700 - - - - - - - - - - - - - - - -
*
0124760 - - - - - - - - - - - - - - - \r
0125000 \r / / - - - - - - - - - - - - -
0125020 - - - - - - - - - - - - - - - -
*
0125100 - - - - - - - - - - - - - - \r a
0125120 n d A u t h e n t i c a t e C
0125140 m d ( c s ) b e \r / / - - - -
0125160 - - - 376 001 \0 \f 345 - - - - - - - -
0125200 - - - - - - - - - - - - - - - -
*
0125260 - - - - - - - - - - - - \r [ \r W
0125300 s s ( c s , " ( n a m e )
0125320 " ) \r l e t n a m e = G e
0125340 t D e f a u l t e d S t r i n g
0125360 ( c s , l v d e f a u l t M
0125400 e m b e r ) \r W s s ( c s , "
0125420 ( p a s s w o r d ) " ) \r l
0125440 e t p a s s w o r d = G e
0125460 t S t r i n g ( c s , 0 , 0
0125500 , 0 , F a l s e P r e d i c
0125520 a t e ) \r l e t k e y = v
0125540 e c l e n P a s s w o r d \r M
0125560 a k e K e y ( p 376 001 \0 213 ~ a s s
0125600 w o r d , k e y ) \r l e t e
0125620 c = A u t h e n t i c a t e
0125640 ( n a m e , k e y ) \r D i s p
0125660 l a y G r a p e v i n e E C ( e
0125700 c ) \r F r e e ( s y s Z o n e ,
0125720 n a m e ) \r F r e e ( s y s Z
0125740 o n e , p a s s w o r d ) \r ]
0125760 \r \r / / - - - - - - - - - - - -
0126000 - - - - - - - - - - - - - - - -
*
0126060 - - - - - - - - - - - - - - - \r
0126100 a n d R e a d C m d ( c s )
0126120 b e \r / / - - - - - - - - - - -
0126140 - - - - - - - - - - - - - - - -
0126160 - - - - - - - - - - - - - 376 001 \0
0126200 375 271 - - - - - - - - - - - - - -
0126220 - - - - - - - - - - - - - - - -
0126240 - - - - - \r [ \r l e t o p =
0126260 ( t a b l e [ o p R e a d
0126300 M e m b e r s ; o p R e a d O
0126320 w n e r s ; o p R e a d F r i
0126340 e n d s ] ) ! \r ( S
0126360 e l e c t K e y w o r d ( c s ,
0126400 " M e m b e r s " , " O w n
0126420 e r s " , " F r i e n d s " )
0126440 - 1 ) \r W s s ( c s , " ( o
0126460 f g r o u p ) " ) \r l e t
0126500 g r o u p = G e t D e f a u
0126520 l t e d S t r i n g ( c s , l
0126540 v d e f a u l t G r o u p ) \r
0126560 l e t e c = n i l \r l e t
0126600 r 376 001 \0 221 303 L i s t = R e
0126620 a d R L i s t ( g r o u p , o
0126640 p , l v e c ) \r t e s t r
0126660 L i s t n e 0 \r i f s
0126700 o \r [ \r
0126720 P u t T e m p l a t e ( d s p ,
0126740 " = ( $ D ) " , Q u e
0126760 u e L e n g t h ( l v r L i s
0127000 t > > R L i s t . q u e u e ) )
0127020 \r l e t r I t e m
0127040 = r L i s t > > R L i s t .
0127060 q u e u e . h e a d \r
0127100 w h i l e r I t e m n e
0127120 0 d o \r [
0127140 P u t T e m p l a t e ( d s p ,
0127160 " $ S " , l v r I t e m
0127200 > > R I t e m 376 001 \0 _ 271 . r N a
0127220 m e ) ; r I t e m = r I t
0127240 e m > > R I t e m . n e x t ]
0127260 \r D e s t r o y R L
0127300 i s t ( r L i s t ) \r
0127320 ] \r i f n o t D i s p
0127340 l a y G r a p e v i n e E C ( e
0127360 c ) \r F r e e ( s y s Z o n e ,
0127400 g r o u p ) \r ] \r \r / / - - -
0127420 - - - - - - - - - - - - - - - -
*
0127520 - - - - - - - - \r a n d F i n
0127540 d C m d ( c s ) b e \r / / - -
0127560 - - - - - - - - - - - - - - - -
0127600 - - - - - - - - - - - - 376 001 \0 365
0127620 222 - - - - - - - - - - - - - - -
0127640 - - - - - - - - - - - - - - - -
0127660 - - - - - - - - - - - - - - \r [
0127700 \r W s s ( c s , " ( s e r v
0127720 e r n a m e ) " ) \r l e t
0127740 n a m e = G e t D e f a u l
0127760 t e d S t r i n g ( c s , l v
0130000 d e f a u l t S e r v e r ) \r
0130020 W s s ( c s , " ( p o l l i
0130040 n g s o c k e t n u m b e r
0130060 ) " ) \r l e t p o l l i n g
0130100 S o c k e t = G e t N u m b
0130120 e r ( c s , 8 ) \r l e t e c
0130140 = F i n d S e r v e r ( n a
0130160 m e , p o l l i n g S o c k e
0130200 t , P r i n t P o r t ) \r i f
0130220 376 001 \0 365 | e c n e 0 t h
0130240 e n D i s p l a y G r a p e v
0130260 i n e E C ( e c ) \r ] \r \r / / -
0130300 - - - - - - - - - - - - - - - -
*
0130400 - - - - - - - - - - \r a n d P
0130420 r i n t P o r t ( p o r t ) =
0130440 v a l o f \r / / - - - - - - -
0130460 - - - - - - - - - - - - - - - -
*
0130560 - - - - \r [ \r P u t T e m p l a
0130600 t e ( d s p , " [ $ O # $ O
0130620 # $ U E O ] 376 001 \0 361 Y " , p o
0130640 r t > > P o r t . n e t , p o
0130660 r t > > P o r t . h o s t , l
0130700 v p o r t > > P o r t . s o c
0130720 k e t ) \r r e s u l t i s t r
0130740 u e / / s t o p a t f
0130760 i r s t s e r v e r e n u m
0131000 e r a t e d \r ] \r \r / / - - - -
0131020 - - - - - - - - - - - - - - - -
*
0131120 - - - - - - - \r a n d D i s p
0131140 l a y G r a p e v i n e E C ( e
0131160 c ) b e \r / / - - - - - - - -
0131200 - - - - - - - - - - - - - - - -
0131220 - - - - - - - - - - - 376 001 \0 273 252
0131240 - - - - - - - - - - - - - - - -
*
0131300 - - - - - - - - \r [ \r P u t T e
0131320 m p l a t e ( d s p , " - -
0131340 $ S " , s e l e c t o n e
0131360 c i n t o \r [ \r c
0131400 a s e e c N o C h a n g e :
0131420 " N o C h a n g e " \r c a
0131440 s e e c G r o u p : " G r o
0131460 u p " \r c a s e e c I n
0131500 d i v i d u a l : " I n d i v
0131520 i d u a l " \r c a s e e
0131540 c B a d R N a m e : " B a d R
0131560 N a m e " \r c a s e e c
0131600 A l l D o w n : " A l l D o w
0131620 n " \r c a s e e c B a d
0131640 376 001 \0 274 m P a s s w o r d : "
0131660 B a d P a s s w o r d " \r
0131700 c a s e e c I s M e m b e r :
0131720 " I s M e m b e r " \r c
0131740 a s e e c I s N o t M e m b e
0131760 r : " I s N o t M e m b e r "
0132000 \r d e f a u l t : " u n
0132020 k n o w n e r r o r c o d e
0132040 " \r ] ) \r ] \r \r / / - - -
0132060 - - - - - - - - - - - - - - - -
*
0132160 - - - - - - - - \r a n d M y A
0132200 l l o c a t e ( z o n e , w o
0132220 r d s ) = v a l o f \r / / -
0132240 - - - - - 376 001 \0 323 217 - - - - - -
0132260 - - - - - - - - - - - - - - - -
*
0132340 - - - - - - - - - - - - - - - \r
0132360 [ \r z o n e > > M y Z o n e . b
0132400 l o c k s A l l o c a t e d =
0132420 z o n e > > M y Z o n e . b l
0132440 o c k s A l l o c a t e d + 1 \r
0132460 r e s u l t i s A l l o c a t
0132500 e ( z o n e > > M y Z o n e . u
0132520 n d e r l y i n g Z o n e , w
0132540 o r d s ) \r ] \r \r / / - - - - -
0132560 - - - - - - - - - - - - - - - -
*
0132640 - - - - - - - - - - 376 001 \0 s 305 -
0132660 - - - - - - - - - - - \r a n d
0132700 M y F r e e ( z o n e , b l o
0132720 c k ) = v a l o f \r / / - -
0132740 - - - - - - - - - - - - - - - -
*
0133040 - - - - - - - - - \r [ \r z o n e
0133060 > > M y Z o n e . b l o c k s A
0133100 l l o c a t e d = z o n e >
0133120 > M y Z o n e . b l o c k s A l
0133140 l o c a t e d - 1 \r r e s u l t
0133160 i s F r e e ( z o n e > > M y
0133200 Z o n e . u n d e r l y i n g Z
0133220 o n e , b l o c k ) \r ] \r \r /
0133240 / - - - - - - - - - - - - - - 376
0133260 001 \0 321 x - - - - - - - - - - - -
0133300 - - - - - - - - - - - - - - - -
*
0133360 - \r a n d S e l e c t K e y w
0133400 o r d ( c s , k e y 1 , n i
0133420 l , n i l , n i l , n i l
0133440 , n i l , n i l , n i l ,
0133460 n i l , n i l ; \r n
0133500 u m a r g s n a ) = v a l
0133520 o f \r / / - - - - - - - - - - -
0133540 - - - - - - - - - - - - - - - -
*
0133640 \r / / T a k e s a l i s t
0133660 o f 376 001 \0 Y I u p t o 1
0133700 0 k e y w o r d s , c a l l
0133720 s G e t K e y w o r d w i t
0133740 h t h a t l i s t , \r / /
0133760 a n d r e t u r n s t h e
0134000 i n d e x ( 1 - 1 0 ) o f
0134020 t h e o n e m a t c h i n
0134040 g t h e w o r d t y p e d
0134060 i n . \r / / K e y w o r d
0134100 a r g u m e n t s m a y b e
0134120 o m i t t e d b y s u p p
0134140 l y i n g z e r o i n s o
0134160 m e a r g u m e n t \r / /
0134200 p o s i t i o n s ; t h i s
0134220 p e r m i t s k e y w o r d s
0134240 t o b e i n c l u d e d
0134260 c o n d i t i o n 376 001 \0 326 311 a l
0134300 l y . \r [ \r P u t s ( c s , $
0134320 * s ) \r l e t k t = n i l
0134340 \r i f E n a b l e C a t c h (
0134360 c s ) t h e n [ D e s t r
0134400 o y K e y w o r d T a b l e ( k
0134420 t ) ; E n d C a t c h ( c s )
0134440 ] \r k t = C r e a t e K e
0134460 y w o r d T a b l e ( 1 0 ) \r f
0134500 o r i = 1 t o n a - 1
0134520 d o i f ( l v c s ) ! i
0134540 n e 0 t h e n I n s e r
0134560 t K e y w o r d ( k t , ( l v
0134600 c s ) ! i ) ! 0 = i \r l e
0134620 t w h i c h = G e t K e y
0134640 w o r d ( c s , k t ) ! 0 \r D
0134660 e s t r o y K e y w o r d T 376 001
0134700 \0 034 301 a b l e ( k t ) \r D i s a
0134720 b l e C a t c h ( c s ) \r r e s
0134740 u l t i s w h i c h \r ] \r \r /
0134760 / - - - - - - - - - - - - - - -
0135000 - - - - - - - - - - - - - - - -
*
0135060 - - - - - - - - - - - - \r a n d
0135100 G e t D e f a u l t e d S t r
0135120 i n g ( c s , l v D e f a u l
0135140 t S t r i n g ) = v a l o f
0135160 \r / / - - - - - - - - - - - - -
0135200 - - - - - - - - - - - - - - - -
*
0135260 - - - - - - - - - - - - - - \r [
0135300 \r D e 376 \0 233 226 g f a u l t P h r
0135320 a s e ( c s , @ l v D e f a u
0135340 l t S t r i n g ) \r l e t r e
0135360 s u l t = G e t S t r i n g
0135400 ( c s ) \r F r e e ( s y s Z o n
0135420 e , @ l v D e f a u l t S t r
0135440 i n g ) \r @ l v D e f a u l t S
0135460 t r i n g = E x t r a c t S
0135500 u b s t r i n g ( r e s u l t )
0135520 \r r e s u l t i s r e s u l t
0135540 \r ] \r 377 \0 \0 C o m p i l e G r a
0135560 p e v i n e . c m \0 373 233 224 341 > \0
0135600 \0 376 \0 206 ( } B c p l / f o G r
0135620 a p e v i n e E n q u i r e . b
0135640 c p l G r a p e v i n e L o c
0135660 a t e . b c p l G r a p e v i
0135700 n e N a m e I n f o . b c p l
0135720 G r a p e v i n e P r o t o c o
0135740 l . b c p l G r a p e v i n e
0135760 O E P . b c p l G r a p e v i
0136000 n e T e s t . b c p l \r 377 \0 \0 L
0136020 o a d G r a p e v i n e T e s t
0136040 . c m \0 373 233 224 341 035 \0 \0 376 001 \0 371 250
0136060 B l d r 6 0 0 / W G r a p e
0136100 v i n e T e s t G r a p e v i
0136120 n e E n q u i r e G r a p e v
0136140 i n e L o c a t e G r a p e v
0136160 i n e N a m e I n f o G r a p
0136200 e v i n e P r o t o c o l P u
0136220 p B S P O p e n C l o s e P u
0136240 p B S P P r o t P u p B S P S
0136260 t r e a m s P u p B S P B l o
0136300 c k P u p B S P a P u p R T
0136320 P O p e n C l o s e P u p R T
0136340 P P u p N e t D i r L o o k u
0136360 p P u p 1 O p e n C l o s e
0136400 P u p 1 b P u p A l 1 a P u
0136420 p R o u t e P u p A l E t h b
0136440 P u p A l E t h a C o n t e
0136460 376 \0 300 340 x t C o n t e x t I
0136500 n i t I n t e r r u p t A l
0136520 t o Q u e u e A l t o T i m e
0136540 r C m d S c a n C m d S c a
0136560 n E d i t C m d S c a n A u x
0136600 C m d S c a n D i s p l a y
0136620 K e y w o r d K e y w o r d I
0136640 n i t S t r i n g U t i l A
0136660 l t o B y t e B l t T e m p l
0136700 a t e P u p 1 I n i t P u p
0136720 D u m m y G a t e P u p A l E
0136740 t h I n i t I n t e r r u p t
0136760 I n i t \r 377 \0 \0 R e l e a s e G
0137000 r a p e v i n e . c m \0 373 233 224 341
0137020 202 \0 \0 376 \0 342 C x F T P M a x c
0137040 ^ \r c o n n e c t / c A l
0137060 t o d u m p / c G r a p e v
0137100 i n e . d m @ G r a p e v i n
0137120 e B R s @ ^ \r c o n n e c t
0137140 / c A l t o S o u r c e d u
0137160 m p / c G r a p e v i n e S o
0137200 u r c e s . d m @ G r a p e v
0137220 i n e @ \r \r F T P I n d i g o
0137240 c o n n e c t / c G r a p e
0137260 v i n e d i r / c G r a p e
0137300 v i n e > t e s t ^ \r s t o
0137320 r e / c G r a p e v i n e T e
0137340 s t . r u n G r a p e v i n e
0137360 T e s t . s y m s \r 377 \0 \0 G r a
0137400 p e v i n e B R s . c m \0 373 230 \t
0137420 265 251 \0 \0 376 \0 p 357 ` G r a p e v i
0137440 n e . d e c l G r a p e v i n
0137460 e E n q u i r e . b r G r a p
0137500 e v i n e L o c a t e . b r G
0137520 r a p e v i n e N a m e I n f o
0137540 . b r G r a p e v i n e P r o
0137560 t o c o l . b r G r a p e v i
0137600 n e O E P . b r 377 \0 \0 G r a p
0137620 e v i n e . c m \0 373 233 224 341 210 \0 \0
0137640 376 001 \0 s y G r a p e v i n e . d
0137660 e c l G r a p e v i n e I n t
0137700 e r n a l . d e c l G r a p e
0137720 v i n e P r o t o c o l . d e c
0137740 l G r a p e v i n e E n q u i
0137760 r e . b c p l G r a p e v i n
0140000 e L o c a t e . b c p l G r a
0140020 p e v i n e N a m e I n f o . b
0140040 c p l G r a p e v i n e P r o
0140060 t o c o l . b c p l G r a p e
0140100 v i n e O E P . b c p l G r a
0140120 p e v i n e T e s t . b c p l
0140140 C o m p i l e G r a p e v i n e
0140160 . c m L o a d G r a p e v i n
0140200 e T e s t . c m R e l e a s e
0140220 G r a p e v i n e . c m G r a
0140240 p e v i n 376 \0 025 223 256 e B R s . c
0140260 m G r a p e v i n e . c m 374
0140300