1301 lines
42 KiB
Plaintext
1301 lines
42 KiB
Plaintext
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
PC Yarn - offline news storage and reading system
|
|||
|
|
|||
|
Copyright 1995 by Chin Huang
|
|||
|
|
|||
|
Permission to copy and distribute this material for any purpose and
|
|||
|
without fee is hereby granted, provided that the above copyright notice
|
|||
|
and this permission notice appear in all copies. The author makes no
|
|||
|
representations about the accuracy or suitability of this material for
|
|||
|
any purpose. It is provided "as is", without any express or implied
|
|||
|
warranties. The author will assume no liability for damages either from
|
|||
|
the direct use of this product or as a consequence of the use of this
|
|||
|
product.
|
|||
|
|
|||
|
|
|||
|
INTRODUCTION
|
|||
|
|
|||
|
PC Yarn is a suite of programs for your personal computer, used to store
|
|||
|
and read USENET news and mail downloaded from a USENET host.
|
|||
|
|
|||
|
FEATURES
|
|||
|
|
|||
|
- An import program inserts USENET articles into a "news base" from
|
|||
|
Simple Offline USENET Packet (SOUP) format. For each newsgroup, you
|
|||
|
specify the number of days to keep articles, after which, an expire
|
|||
|
program deletes them. However, articles containing an Expires: header
|
|||
|
are deleted on the date specified in the header.
|
|||
|
|
|||
|
- The news base stores only one copy of a cross-posted article. The
|
|||
|
news base implementation stores multiple articles per file.
|
|||
|
|
|||
|
- A mail filter moves incoming mail to specific folders or deletes
|
|||
|
incoming mail based on user defined rules.
|
|||
|
|
|||
|
- The Yarn news reader presents articles in threads arranged by
|
|||
|
Message-ID and References headers. The reader program generates SOUP
|
|||
|
reply packets.
|
|||
|
|
|||
|
- Score files contain rules to score articles based on matching text
|
|||
|
found in the article. The reader can be set up to not show articles
|
|||
|
having scores below a certain threshold.
|
|||
|
|
|||
|
- Multiple users are supported by storing separate configuration files
|
|||
|
for each user.
|
|||
|
|
|||
|
SYSTEM REQUIREMENTS
|
|||
|
|
|||
|
- MS-DOS 3.0 or higher
|
|||
|
|
|||
|
- compression software such as PKZIP and PKUNZIP
|
|||
|
|
|||
|
- 80186 compatible CPU or better. An 80386 compatible CPU or better is
|
|||
|
required to run the 32-bit DOS extender programs.
|
|||
|
|
|||
|
- a lot of hard disk storage, depending on how much news you want to
|
|||
|
keep. For example, the author subscribes to 120 newsgroups including
|
|||
|
some binaries and sources groups, keeping most articles for 7 days.
|
|||
|
|
|||
|
|
|||
|
1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
The amount of disk space used is 40 megabytes.
|
|||
|
|
|||
|
|
|||
|
INSTALLATION
|
|||
|
|
|||
|
INSTALL YARN DIRECTORY
|
|||
|
|
|||
|
Unpack the files from the Yarn distribution into a directory. Run the
|
|||
|
command
|
|||
|
|
|||
|
english [drive:]directory
|
|||
|
|
|||
|
where [drive:]directory specifies where to install the Yarn data
|
|||
|
directory. This directory is created if it doesn't already exist.
|
|||
|
Choose a disk drive with a lot of free space because the news base will
|
|||
|
be stored here. In this document, this directory will be called the
|
|||
|
%YARN% directory.
|
|||
|
|
|||
|
SET UP USER DIRECTORY
|
|||
|
|
|||
|
To set up a user directory where Yarn will store your user information,
|
|||
|
run the command
|
|||
|
|
|||
|
adduser
|
|||
|
|
|||
|
A form appears in which you fill in the required user information.
|
|||
|
|
|||
|
+ Add User ------------------------------------------------------------+
|
|||
|
| |
|
|||
|
| Home directory: C:\JIM |
|
|||
|
| |
|
|||
|
| User ID: jsmith |
|
|||
|
| |
|
|||
|
| Host system: netcom.com |
|
|||
|
| |
|
|||
|
| User's full name: Jim Smith |
|
|||
|
| |
|
|||
|
| Editor program: edit |
|
|||
|
| |
|
|||
|
| Reply packet file: C:\UPLOAD\IOXR.ZIP |
|
|||
|
| |
|
|||
|
+----------------------------------------------------------------------+
|
|||
|
|
|||
|
Home directory
|
|||
|
Specify the directory where Yarn will store your user information.
|
|||
|
This directory is created if it doesn't already exist. In this
|
|||
|
document, this directory will be called the %HOME% directory.
|
|||
|
|
|||
|
User ID
|
|||
|
Set this to your login name on the host from which you download and
|
|||
|
upload USENET news.
|
|||
|
|
|||
|
Host system
|
|||
|
Set this to the full domain name of your host.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
User's full name
|
|||
|
Set this to your full name. This is the name that appears in
|
|||
|
parentheses on the From: header in messages you send.
|
|||
|
|
|||
|
Editor program
|
|||
|
Set the name of the editor program to run when you send messages.
|
|||
|
|
|||
|
Reply packet file
|
|||
|
Specify the full path of the SOUP reply packet file where your
|
|||
|
outgoing messages are stored. If the reply packet file does not
|
|||
|
exist, it is created when you post an article or send a mail message
|
|||
|
from the reader program. When you exit the reader program, the
|
|||
|
reply packet is ready to upload to your host.
|
|||
|
|
|||
|
The program writes the user information to a configuration file named
|
|||
|
%HOME%\yarn\config. This document refers to other configuration settings
|
|||
|
also stored in this file. If you want to change those settings, you have
|
|||
|
to edit the configuration file with a text editor.
|
|||
|
|
|||
|
SET TIME ZONE
|
|||
|
|
|||
|
Set the environment variable TZ to your time zone. The format of the TZ
|
|||
|
string is
|
|||
|
|
|||
|
zzz[+/-]h[h][ddd]
|
|||
|
|
|||
|
zzz is a three character field representing the name of the time zone.
|
|||
|
|
|||
|
[+/-]h[h] is an optionally signed number representing the local time
|
|||
|
zone's difference from Greenwich Mean Time (GMT) in hours. Positive
|
|||
|
numbers adjust westward from GMT. Negative numbers adjust eastward from
|
|||
|
GMT.
|
|||
|
|
|||
|
ddd is an optional three character field that represents the name of the
|
|||
|
local time zone's daylight saving time.
|
|||
|
|
|||
|
If no TZ environment variable is set, a default TZ=EST5EDT is assumed.
|
|||
|
|
|||
|
UPDATE SYSTEM FILES
|
|||
|
|
|||
|
Ensure the FILES setting in the CONFIG.SYS file is set to
|
|||
|
|
|||
|
FILES=20
|
|||
|
|
|||
|
or higher. If there is no FILES setting, then add it.
|
|||
|
|
|||
|
Put these SET commands in the AUTOEXEC.BAT file to ensure the environment
|
|||
|
settings persist after the next time you reboot your system. (If you are
|
|||
|
installing Yarn for OS/2, put the SET commands in the CONFIG.SYS file
|
|||
|
instead.) Use the settings determined above for the values appearing to
|
|||
|
the right of the equal signs.
|
|||
|
|
|||
|
SET YARN=C:\YARN
|
|||
|
SET HOME=C:\JIM
|
|||
|
SET TZ=EST5EDT
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
SET UP OTHER USERS
|
|||
|
|
|||
|
To set up another user, run the adduser command, and specify a different
|
|||
|
home directory. To run Yarn as that user, set the HOME environment
|
|||
|
variable to the user's home directory.
|
|||
|
|
|||
|
ENVIRONMENT
|
|||
|
|
|||
|
These enviroment variables modify the behaviour of Yarn if they are set.
|
|||
|
|
|||
|
EDITOR Specifies the external editor program, overriding the editor
|
|||
|
specified in the configuration file.
|
|||
|
|
|||
|
LOGDIR Sets the user's home directory. If LOGDIR is not set, the home
|
|||
|
directory is set from the HOME environment variable.
|
|||
|
|
|||
|
TMP Specifies a directory where temporary working files are stored.
|
|||
|
The default is %YARN%\temp.
|
|||
|
|
|||
|
YARNRC Specifies an alternate configuration file to read instead of
|
|||
|
the default %HOME%\yarn\config.
|
|||
|
|
|||
|
HOW TO ADD MIME SUPPORT
|
|||
|
|
|||
|
Yarn supports the decoding of Multimedia Internet Mail Extension (MIME)
|
|||
|
messages by running an external MIME processing program. One such
|
|||
|
program is metamail. A DOS port of metamail is available from
|
|||
|
|
|||
|
ftp://thumper.bellcore.com/pub/nsb/
|
|||
|
|
|||
|
An OS/2 port of metamail is available from
|
|||
|
|
|||
|
ftp://ftp-os2.nmsu.edu/os2/unix/
|
|||
|
|
|||
|
Put this setting in the Yarn configuration file, assuming you installed
|
|||
|
the metamail executable in a directory in your PATH:
|
|||
|
|
|||
|
decode-mime=metamail %f
|
|||
|
|
|||
|
|
|||
|
HOW TO ADD PGP SUPPORT
|
|||
|
|
|||
|
Yarn contains hooks to external cryptographic programs. The standard
|
|||
|
Yarn distribution is set up to run Pretty Good Privacy (PGP). Ensure
|
|||
|
that the PGP executable is in the execution PATH. Uncomment the "secret-
|
|||
|
sign", "encrypt", "decrypt" and "decrypt-view" lines in the Yarn
|
|||
|
configuration file. Yarn is now configured to use the PGP privacy and
|
|||
|
authentication functions.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
4
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
OPERATION
|
|||
|
|
|||
|
IMPORT NEWS AND MAIL
|
|||
|
|
|||
|
To import messages from SOUP format, run
|
|||
|
|
|||
|
import <file>
|
|||
|
|
|||
|
where <file> is the path of the SOUP file. The import program takes
|
|||
|
these options.
|
|||
|
|
|||
|
-n Do not delete the packet file.
|
|||
|
|
|||
|
-q Operate in quiet mode. Do not list the imported newsgroup
|
|||
|
names.
|
|||
|
|
|||
|
-r Import rnews batch or UNIX mailbox files instead of SOUP files.
|
|||
|
|
|||
|
-u [directory]
|
|||
|
Assume the files from a SOUP packet have already been unpacked
|
|||
|
into the current directory and import messages from those
|
|||
|
files. If the optional directory is specified, then import
|
|||
|
from the files in that directory.
|
|||
|
|
|||
|
SET EXPIRY OF NEWSGROUPS
|
|||
|
|
|||
|
Two settings are associated with each newsgroup. One is the number of
|
|||
|
days that articles in the newsgroup will be kept before the expire
|
|||
|
program deletes them. The other is the absolute maximum number of days
|
|||
|
that articles with an Expires: header will be kept. The Expires: header
|
|||
|
may contain a date far in the future, but the article will be kept only
|
|||
|
for the specified number of days.
|
|||
|
|
|||
|
When the import program finds a newsgroup in the packet that is not
|
|||
|
already in the news base, it adds the newsgroup with keep days and
|
|||
|
maximum keep days settings specified from the configuration file. The
|
|||
|
"keep" and "max-keep" settings specify the keep days and maximum keep
|
|||
|
days respectively. For example, if the configuration file contains the
|
|||
|
settings
|
|||
|
|
|||
|
keep=7
|
|||
|
max-keep=30
|
|||
|
|
|||
|
then articles are normally kept in the newsgroup for 7 days and
|
|||
|
absolutely not more than 30 days.
|
|||
|
|
|||
|
You can set the keep days of individual newsgroups. Run the command
|
|||
|
|
|||
|
newgroup <name> <keepDays> [<maxDays>]
|
|||
|
|
|||
|
where <name> is the newsgroup name and <keepDays> is the number of days
|
|||
|
that articles in the newsgroup will be kept before the expire program
|
|||
|
deletes them. The optional parameter <maxDays> is the absolute maximum
|
|||
|
number of days that articles containing an Expires: header will be kept.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
5
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
Instead of naming a newsgroup on the command line, you can specify a text
|
|||
|
file containing a list of newsgroup names. Every newsgroup listed in the
|
|||
|
file is assigned the keep days value.
|
|||
|
|
|||
|
newgroup @<file> <keepDays> [<maxDays>]
|
|||
|
|
|||
|
|
|||
|
EXPIRE NEWS
|
|||
|
|
|||
|
Periodically run the expire program to delete old articles from the news
|
|||
|
base. To expire old articles from all newsgroups, run the command
|
|||
|
|
|||
|
expire -o
|
|||
|
|
|||
|
To expire old articles from specific newsgroups, list the newsgroups on
|
|||
|
the command line. For example:
|
|||
|
|
|||
|
expire -o comp.answers news.answers
|
|||
|
|
|||
|
To delete all read articles in all newsgroups, run
|
|||
|
|
|||
|
expire -r
|
|||
|
|
|||
|
To delete read articles from specific newsgroups, run expire with the -r
|
|||
|
option and list the newsgroups on the command line. For example:
|
|||
|
|
|||
|
expire -r comp.answers news.answers
|
|||
|
|
|||
|
The program may expire newsgroups in addition to the newsgroups you
|
|||
|
specified if an expired article was crossposted to multiple newsgroups.
|
|||
|
|
|||
|
You can specify a text file containing a list of newsgroups to expire.
|
|||
|
Run expire with the argument
|
|||
|
|
|||
|
@<file>
|
|||
|
|
|||
|
on the command line, where <file> is the file path.
|
|||
|
|
|||
|
The expire program accepts these options:
|
|||
|
|
|||
|
-d <n> Assume it is <n> days in the future. Use this option to expire
|
|||
|
articles before they normally would have been expired.
|
|||
|
|
|||
|
-n Do not actually delete any articles. Used for testing.
|
|||
|
|
|||
|
-o Delete old articles.
|
|||
|
|
|||
|
-q Operate in quiet mode. Display fewer messages than usual.
|
|||
|
|
|||
|
-r Delete read articles.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
6
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
REMOVE NEWSGROUP
|
|||
|
|
|||
|
To remove a newsgroup from the news base, run the command
|
|||
|
|
|||
|
rmgroup <name>
|
|||
|
|
|||
|
where <name> is the newsgroup name.
|
|||
|
|
|||
|
USING THE MAIL FILTER
|
|||
|
|
|||
|
The mail filter looks at incoming mail messages and processes the
|
|||
|
messages based on a set of rules you define. You can set up a rule that
|
|||
|
automatically moves messages you receive from a mailing list to a
|
|||
|
specific folder. Or, you can automatically delete messages from a
|
|||
|
specific user so that you don't even see messages from that user.
|
|||
|
|
|||
|
Run the filter program to set up the filter rules. A list of filter
|
|||
|
rules appears. To add a filter rule, press the [Ins] key. The mail rule
|
|||
|
form appears.
|
|||
|
|
|||
|
+ Mail Rule ----------------------------------------------------------+
|
|||
|
| |
|
|||
|
| Rule name: Yarn Mailing List |
|
|||
|
| |
|
|||
|
| Search in: ( ) From Search for: yarn-list |
|
|||
|
| (*) To Match case: No |
|
|||
|
| ( ) Subject |
|
|||
|
| ( ) Header |
|
|||
|
| ( ) Body |
|
|||
|
| ( ) Header and body |
|
|||
|
| |
|
|||
|
| Action: (*) Move to folder/newsgroup: list.yarn |
|
|||
|
| ( ) Delete |
|
|||
|
| |
|
|||
|
+---------------------------------------------------------------------+
|
|||
|
|
|||
|
Rule name
|
|||
|
Enter a name for the rule. Filter rules are processed in sorted
|
|||
|
order by rule name. Each rule is checked in turn until a match is
|
|||
|
found. If no rules match, the message is moved to the INBOX folder.
|
|||
|
|
|||
|
Search in
|
|||
|
Select where to search. If you select "To", then the To: and Cc:
|
|||
|
headers are searched.
|
|||
|
|
|||
|
Search for
|
|||
|
Enter the string to search for in the selected header.
|
|||
|
|
|||
|
Match case
|
|||
|
Set the field to Yes if you want the search to be case sensitive.
|
|||
|
|
|||
|
Action
|
|||
|
Select "Move to folder/newsgroup" if you want to move the message to
|
|||
|
a specific folder or newsgroup. If the specified name is a
|
|||
|
newsgroup in the news base, the message is moved to the newsgroup,
|
|||
|
otherwise the message is moved to the named folder. Select "Delete"
|
|||
|
|
|||
|
|
|||
|
7
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
if you want to automatically delete the message.
|
|||
|
|
|||
|
The mail filter allows you to automatically transfer messages from a
|
|||
|
mailing list into a newsgroup. You can also set up Yarn to send any
|
|||
|
posts you make to that newsgroup back to the mailing list. For example,
|
|||
|
suppose you want to filter messages from the Yarn mailing list into a
|
|||
|
newsgroup. Run the command
|
|||
|
|
|||
|
newgroup list.yarn 7 30 yarn-list@lists.colorado.edu
|
|||
|
|
|||
|
to create a newsgroup named list.yarn. Set up a mail filter rule to move
|
|||
|
messages from the mailing list into the newsgroup. Now when you post a
|
|||
|
message to the list.yarn newsgroup, it is mailed to the list address
|
|||
|
yarn-list@lists.colorado.edu.
|
|||
|
|
|||
|
READ NEWS
|
|||
|
|
|||
|
Run the yarn program to read news and mail. The yarnx program uses a DOS
|
|||
|
extender, which uses the CPU's memory management functions to give the
|
|||
|
program access to much more memory than conventional DOS programs. It
|
|||
|
requires an 80386 compatible CPU or better. With more available memory,
|
|||
|
the program can list much more articles in a newsgroup.
|
|||
|
|
|||
|
The reader program operates in several modes -- the newsgroup selection
|
|||
|
level, the article selection level, and the article reading level.
|
|||
|
|
|||
|
In the newsgroup selection level, yarn displays a window listing the
|
|||
|
newsgroups you are subscribed to along with the number of unread articles
|
|||
|
in each newsgroup. You can subscribe, unsubscribe or rearrange the order
|
|||
|
of newsgroups in this list. Press the [Ins] key to subscribe to a
|
|||
|
newsgroup. This brings up a list of unsubscribed newsgroups. To make a
|
|||
|
selection, use the arrow keys to move the highlight to the newsgroup, and
|
|||
|
then press the [Enter] key. The selected newsgroup is inserted into the
|
|||
|
subscribed newsgroup list. Press the [Del] key to unsubscribe from the
|
|||
|
highlighted newsgroup. To move a newsgroup in the list, press the [Del]
|
|||
|
key to remove it, position the highlight to the desired location, then
|
|||
|
press the [Ins] key and reinsert the newsgroup.
|
|||
|
|
|||
|
By selecting a newsgroup, you go to the article selection level, where
|
|||
|
yarn presents a list of the subjects of each article. A subject
|
|||
|
beginning with the greater than (>) symbol indicates an article belonging
|
|||
|
to the thread above it in the list, but the author of the article changed
|
|||
|
the subject. You can select an article to read from this list, taking
|
|||
|
you to the article reading level.
|
|||
|
|
|||
|
USING SCORE FILES
|
|||
|
|
|||
|
Score files contain rules used to automatically calculate a numeric rank,
|
|||
|
called a score, for news articles. You can set up the reader so it
|
|||
|
doesn't show articles having scores less than a threshold score. A
|
|||
|
global score file contains rules applied in all newsgroups. Each
|
|||
|
newsgroup can have a separate score file containing rules that are also
|
|||
|
applied in that newsgroup.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
8
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
A rule in a score file has the format
|
|||
|
|
|||
|
<points> <where> <string>
|
|||
|
|
|||
|
where
|
|||
|
|
|||
|
<points>
|
|||
|
is the number of points added or subtracted if the rule matches the
|
|||
|
article. It is a positive or negative number. An article's score
|
|||
|
is the total points of all matching rules in the global score file
|
|||
|
and the newsgroup score file.
|
|||
|
|
|||
|
<where>
|
|||
|
names an article header to search, such as "From:", "Subject:" or
|
|||
|
"Message-ID:". You can name any header that might appear in an
|
|||
|
article header. You can also specify two special options. The
|
|||
|
"Header" option searches the entire article header. The "Body"
|
|||
|
option searches the article body. Searching the "From:", "Subject:"
|
|||
|
and "Message-ID:" fields is significantly faster than the other
|
|||
|
search options.
|
|||
|
|
|||
|
<string>
|
|||
|
is the string to search for. All searches are case-insensitive. If
|
|||
|
the optional keyword "pattern" appears between <points> and <where>,
|
|||
|
the string is interpreted as a regular expression.
|
|||
|
|
|||
|
A score file entry in the form
|
|||
|
|
|||
|
killthreshold <n>
|
|||
|
|
|||
|
sets the kill threshold to <n> points. The default kill threshold is 0.
|
|||
|
Articles having scores less that this threshold are marked as already
|
|||
|
read, and you normally will not see them.
|
|||
|
|
|||
|
Blank lines and lines beginning with the # character are ignored.
|
|||
|
|
|||
|
Here is an example score file that the author uses for the
|
|||
|
alt.usenet.offline-reader newsgroup.
|
|||
|
|
|||
|
# I have little interest in Forte Agent.
|
|||
|
-1 Subject: Agent
|
|||
|
-1 Subject: Forte
|
|||
|
-1 pattern Subject: \bFA\b
|
|||
|
|
|||
|
# But I am interested in Yarn and SOUP.
|
|||
|
10 Subject: Yarn
|
|||
|
5 Subject: SOUP
|
|||
|
|
|||
|
Press [Shift-E] at the newsgroup selection level to edit the global score
|
|||
|
file. This starts your configured editor program on the global score
|
|||
|
file. Press [Shift-E] while inside a newsgroup to edit the score file
|
|||
|
specific to the newsgroup.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
9
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
NEWSGROUP SELECTION LEVEL
|
|||
|
|
|||
|
These commands are available in the newsgroup selection level.
|
|||
|
|
|||
|
Down Arrow, Ctrl-N
|
|||
|
Move to the next newsgroup.
|
|||
|
|
|||
|
Up Arrow, Ctrl-P
|
|||
|
Move to the previous newsgroup.
|
|||
|
|
|||
|
Tab, N
|
|||
|
Move to the next newsgroup that contains unread articles.
|
|||
|
|
|||
|
Shift-Tab, P
|
|||
|
Move to the previous newsgroup that contains unread articles.
|
|||
|
|
|||
|
Home Move to first newsgroup.
|
|||
|
|
|||
|
End Move to last newsgroup.
|
|||
|
|
|||
|
/ Search forward for newsgroup name containing matching text.
|
|||
|
|
|||
|
? Search backward for newsgroup name containing matching text.
|
|||
|
|
|||
|
; Continue forward search.
|
|||
|
|
|||
|
: Continue backward search.
|
|||
|
|
|||
|
Space, Right Arrow
|
|||
|
Go to the article selection level, listing only unread articles.
|
|||
|
|
|||
|
Enter
|
|||
|
Go to the article selection level, listing all articles.
|
|||
|
|
|||
|
Ins, +
|
|||
|
Subscribe to a newsgroup and insert the newsgroup at the current
|
|||
|
position.
|
|||
|
|
|||
|
Del, -
|
|||
|
Unsubscribe from the highlighted newsgroup.
|
|||
|
|
|||
|
A Post an article to the highlighted newsgroup.
|
|||
|
|
|||
|
M Send mail message.
|
|||
|
|
|||
|
C Mark all articles in the highlighted newsgroup as read.
|
|||
|
|
|||
|
E Edit the global score file.
|
|||
|
|
|||
|
O Save unread articles in the highlighted newsgroup to a folder.
|
|||
|
|
|||
|
S Save unread articles in the highlighted newsgroup to a file. The
|
|||
|
program prompts for a file name. If you don't give a full path
|
|||
|
name, the file is stored in the directory %HOME%\news.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
10
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
W Same as the 'S' command, except omit the article headers.
|
|||
|
|
|||
|
! Run command shell. Type "exit" to return to Yarn.
|
|||
|
|
|||
|
F2, Ctrl-L
|
|||
|
List address book.
|
|||
|
|
|||
|
Esc Exit program
|
|||
|
|
|||
|
ARTICLE SELECTION LEVEL
|
|||
|
|
|||
|
These commands are available in the article selection level.
|
|||
|
|
|||
|
Down Arrow, Ctrl-N
|
|||
|
Move to the next article.
|
|||
|
|
|||
|
Up Arrow, Ctrl-P
|
|||
|
Move to the previous article.
|
|||
|
|
|||
|
Tab, N
|
|||
|
Move to the first article of the next thread.
|
|||
|
|
|||
|
Shift-Tab, P
|
|||
|
Move backwards to the previous article beginning a thread.
|
|||
|
|
|||
|
Home Move to first article.
|
|||
|
|
|||
|
End Move to last article.
|
|||
|
|
|||
|
/ Search forward for article containing matching text.
|
|||
|
|
|||
|
? Search backward for article containing matching text.
|
|||
|
|
|||
|
; Continue forward search.
|
|||
|
|
|||
|
: Continue backward search.
|
|||
|
|
|||
|
Space, Right Arrow
|
|||
|
Read the article.
|
|||
|
|
|||
|
Del, -
|
|||
|
Mark the article as read and go to the next unread article.
|
|||
|
|
|||
|
Ins, +
|
|||
|
Mark the article as unread.
|
|||
|
|
|||
|
O Save the current article through to the last article in the thread
|
|||
|
to a folder.
|
|||
|
|
|||
|
S Save the current article through to the last article in the thread
|
|||
|
to a file. The program prompts for a file name. If you don't give
|
|||
|
a full path name, the file is stored in the directory %HOME%\news.
|
|||
|
|
|||
|
W Same as the 'S' command, except omit the article headers.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
11
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
B Extract uuencoded file from the current article.
|
|||
|
|
|||
|
K Mark the current article through to the last article in the thread
|
|||
|
as read.
|
|||
|
|
|||
|
U Mark the current article through to the last article in the thread
|
|||
|
as unread.
|
|||
|
|
|||
|
C Mark all articles in the newsgroup as read.
|
|||
|
|
|||
|
E Edit the newsgroup score file.
|
|||
|
|
|||
|
A Post an article to the newsgroup.
|
|||
|
|
|||
|
M Send mail message.
|
|||
|
|
|||
|
L Toggle short, medium or long subject list.
|
|||
|
|
|||
|
T Sort articles by arrival, subject or score order.
|
|||
|
|
|||
|
V Toggle listing of all articles or unread articles.
|
|||
|
|
|||
|
! Run command shell. Type "exit" to return to Yarn.
|
|||
|
|
|||
|
| Run a program, piping the article into the program's standard input.
|
|||
|
If you put %f on the command line, it is replaced with the name of a
|
|||
|
temporary file containing the article, and the article will not be
|
|||
|
piped into the standard input.
|
|||
|
|
|||
|
F2, Ctrl-L
|
|||
|
List address book.
|
|||
|
|
|||
|
F3, Ctrl-A
|
|||
|
Add the author of the current message to the address book.
|
|||
|
|
|||
|
Esc, Left Arrow
|
|||
|
Return to the newsgroup selection level.
|
|||
|
|
|||
|
ARTICLE READING LEVEL
|
|||
|
|
|||
|
These commands are available in the article reading level.
|
|||
|
|
|||
|
Down Arrow, Enter
|
|||
|
Scroll one line down.
|
|||
|
|
|||
|
Up Arrow
|
|||
|
Scroll one line up.
|
|||
|
|
|||
|
PgDn Show next page.
|
|||
|
|
|||
|
Space
|
|||
|
Show next page. If at the end of an article, go to the next unread
|
|||
|
article.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
12
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
PgUp, b
|
|||
|
Show previous page.
|
|||
|
|
|||
|
Home Go to top of article.
|
|||
|
|
|||
|
g Search article for matching text.
|
|||
|
|
|||
|
G Continue search in article.
|
|||
|
|
|||
|
Ctrl-G
|
|||
|
Search for the next line beginning with "Subject:". You can use
|
|||
|
this command to search for the next message in a message digest.
|
|||
|
|
|||
|
/ Search forward for article containing matching text.
|
|||
|
|
|||
|
? Search backward for article containing matching text.
|
|||
|
|
|||
|
; Continue forward search.
|
|||
|
|
|||
|
: Continue backward search.
|
|||
|
|
|||
|
n, Right Arrow
|
|||
|
Mark the article as read and show the next unread article.
|
|||
|
|
|||
|
N Show next article.
|
|||
|
|
|||
|
p Show previous unread article.
|
|||
|
|
|||
|
P Show previous article.
|
|||
|
|
|||
|
a, A Post an article to the newsgroup.
|
|||
|
|
|||
|
f Post a followup article.
|
|||
|
|
|||
|
F Post a followup article, quoting the original article.
|
|||
|
|
|||
|
r Mail a reply to the author of the article.
|
|||
|
|
|||
|
R Mail a reply, quoting the original article.
|
|||
|
|
|||
|
m Mail (forward) the article to someone.
|
|||
|
|
|||
|
M Compose a mail message.
|
|||
|
|
|||
|
o Save the article to a folder.
|
|||
|
|
|||
|
s Save the article to a file. The program prompts for a file name.
|
|||
|
If you don't give a full path name, the file is stored in the
|
|||
|
directory %HOME%\news.
|
|||
|
|
|||
|
w Same as the 's' command, except omit article headers.
|
|||
|
|
|||
|
B Extract uuencoded file from the article.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
13
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
x ROT13 decrypt the article.
|
|||
|
|
|||
|
X Decrypt the article by running the external cryptography program
|
|||
|
specified in the Yarn configuration.
|
|||
|
|
|||
|
k, Del
|
|||
|
Mark the article as read.
|
|||
|
|
|||
|
K Mark this article and the rest of the articles in the thread as
|
|||
|
read.
|
|||
|
|
|||
|
u, Ins
|
|||
|
Mark the article as unread.
|
|||
|
|
|||
|
U Mark this article and the rest of the articles in the thread as
|
|||
|
unread.
|
|||
|
|
|||
|
C Mark all the articles in the newsgroup as read.
|
|||
|
|
|||
|
E Edit the newsgroup score file.
|
|||
|
|
|||
|
v Toggle verbose headers.
|
|||
|
|
|||
|
c Cancel the article. You must be the author to be able to cancel the
|
|||
|
article.
|
|||
|
|
|||
|
z Supersede the article. You must be the author to be able to
|
|||
|
supersede the article.
|
|||
|
|
|||
|
Z Same as the 'z' command, except you start with a copy of the
|
|||
|
original article in the editor.
|
|||
|
|
|||
|
! Run command shell. Type "exit" to return to Yarn.
|
|||
|
|
|||
|
| Run a program, piping the article into the program's standard input.
|
|||
|
If you put %f on the command line, it is replaced with the name of a
|
|||
|
temporary file containing the article, and the article will not be
|
|||
|
piped into the standard input.
|
|||
|
|
|||
|
F2, Ctrl-L
|
|||
|
List address book.
|
|||
|
|
|||
|
F3, Ctrl-A
|
|||
|
Add the author of the current message to the address book.
|
|||
|
|
|||
|
Esc, Left Arrow
|
|||
|
Return to the article selection level.
|
|||
|
|
|||
|
q Return to the newsgroup selection level.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
14
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
READ MAIL
|
|||
|
|
|||
|
To list your incoming mail messages, press [Shift-I] at the newsgroup
|
|||
|
selection level.
|
|||
|
|
|||
|
You can send new mail by pressing [Shift-M]. A form pops up, asking you
|
|||
|
to enter the destination mail address and subject for the message you
|
|||
|
want to send. If you press the [F2] key while the cursor is in the mail
|
|||
|
address field, the address book pops up. You can select an entry from
|
|||
|
the address book by moving the highlight with the arrow keys and pressing
|
|||
|
the [Enter] key.
|
|||
|
|
|||
|
Press [Shift-F] at the newsgroup selection level to bring up a list of
|
|||
|
folders. You can select a folder to read from this list.
|
|||
|
|
|||
|
If you start yarn with the -m option, you go directly to reading your
|
|||
|
received mail and skip reading news. If you start yarn with the -f
|
|||
|
option, you go directly to the folder list and skip reading news.
|
|||
|
|
|||
|
EDIT REPLIES
|
|||
|
|
|||
|
The Yarn reader allows you to edit the messages in the reply packet. At
|
|||
|
the newsgroup selection level, press [Shift-R] to display a list of
|
|||
|
folders in the reply packet. The reply packet may contain up to two
|
|||
|
folders, ``mail'' which holds outgoing mail messages, and ``news'' which
|
|||
|
holds outgoing USENET articles.
|
|||
|
|
|||
|
By selecting a folder, you go to the message selection level, where the
|
|||
|
program lists the messages in the folder. Press the [Del] key to delete
|
|||
|
the currently highlighted message. Press [Shift-E] to edit the message.
|
|||
|
|
|||
|
To view a message, select it from the message selection level. While a
|
|||
|
message is displayed, pressing the 'd' key deletes the message. Press
|
|||
|
the 'e' key to edit the message.
|
|||
|
|
|||
|
If you start yarn with the -r option, you go directly to the replies list
|
|||
|
and skip reading news.
|
|||
|
|
|||
|
USING THE ADDRESS BOOK
|
|||
|
|
|||
|
The address book is used to conveniently retrieve mail addresses. An
|
|||
|
address book entry consists of an alias and an address. An alias is a
|
|||
|
word representing a address or a list of addresses. If an alias appears
|
|||
|
in a To:, Cc:, or Bcc: header, it is replaced with the corresponding
|
|||
|
address(es) when the message is sent.
|
|||
|
|
|||
|
To list the address book, press [F2] at the newsgroup selection level.
|
|||
|
To add an address book entry, press the [Ins] key. A form appears in
|
|||
|
which you enter the alias and address. To specify a list of addresses,
|
|||
|
enter the addresses in the Address: field, separating them with a comma.
|
|||
|
|
|||
|
While you are reading a message, you can capture the mail address of the
|
|||
|
message author and add it to the address book by pressing the [F3] key.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
15
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
YARN OPTION SUMMARY
|
|||
|
|
|||
|
The yarn program accepts these options:
|
|||
|
|
|||
|
-b Output to the display using BIOS calls instead of direct screen
|
|||
|
writes.
|
|||
|
|
|||
|
-f List folders. Do not read news.
|
|||
|
|
|||
|
-m List mail. Do not read news.
|
|||
|
|
|||
|
-r List replies. Do not read news.
|
|||
|
|
|||
|
-s Disable the '!' run shell command.
|
|||
|
|
|||
|
REGULAR EXPRESSIONS
|
|||
|
|
|||
|
The search functions use regular expressions to specify the pattern to
|
|||
|
match.
|
|||
|
|
|||
|
A \b matches a word boundary.
|
|||
|
|
|||
|
A ^ matches the beginning of the buffer.
|
|||
|
|
|||
|
A $ matches the end of the buffer.
|
|||
|
|
|||
|
A . matches any character.
|
|||
|
|
|||
|
A single character with no special meaning matches that character.
|
|||
|
|
|||
|
A string enclosed in brackets [] matches any single character in that
|
|||
|
string. Ranges of ASCII character codes may be abbreviated as 'a-z0-9'.
|
|||
|
A left bracket ] may occur only as the first character of the string. A
|
|||
|
literal - must be placed where it can't be mistaken as a range indicator.
|
|||
|
If the first character is the caret ^ then any character not in the
|
|||
|
string will match.
|
|||
|
|
|||
|
A regular expression followed by * matches a sequence of 0 or more
|
|||
|
matches of the regular expression.
|
|||
|
|
|||
|
A regular expression followed by + matches a sequence of 1 or more
|
|||
|
matches of the regular expression.
|
|||
|
|
|||
|
A regular expression followed by ? matches a sequence of 0 or 1 matches
|
|||
|
of the regular expression.
|
|||
|
|
|||
|
Two adjacent (concatenated) regular expressions match a match of the
|
|||
|
first followed by a match of the second.
|
|||
|
|
|||
|
Two regular expressions separated by | match either a match for the first
|
|||
|
or a match for the second.
|
|||
|
|
|||
|
A regular expression enclosed in parentheses matches a match for the
|
|||
|
regular expression.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
16
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
The order of precedence of operators at the same parenthesis level is []
|
|||
|
then *+? then concatenation then |.
|
|||
|
|
|||
|
QUESTIONS AND ANSWERS
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: How do I create SOUP files on my UNIX host?
|
|||
|
|
|||
|
The uqwk program creates and processes SOUP files on your UNIX host. It
|
|||
|
is available by anonymous FTP from ftp.gte.com in the /pub/uqwk
|
|||
|
directory.
|
|||
|
|
|||
|
To create a SOUP download packet, named "down.zip" in this example, run
|
|||
|
these commands on your UNIX host:
|
|||
|
|
|||
|
uqwk +n +x +L
|
|||
|
zip -m down.zip AREAS *.MSG
|
|||
|
|
|||
|
Download the down.zip file to your PC. Run this command on your PC to
|
|||
|
insert the messages into the Yarn news base:
|
|||
|
|
|||
|
import down.zip
|
|||
|
|
|||
|
When you send mail or post articles, the Yarn reader creates a SOUP reply
|
|||
|
packet, named "up.zip" in this example. Upload the up.zip file to your
|
|||
|
UNIX host. Run these commands on your UNIX host to send the messages in
|
|||
|
the reply packet:
|
|||
|
|
|||
|
unzip -U up.zip
|
|||
|
uqwk -m -n +L -RREPLIES
|
|||
|
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: The newsgroup selection list showed a number of the unread articles
|
|||
|
in a newsgroup. When I selected the newsgroup by pressing the space bar,
|
|||
|
the article selection list had less articles than that number.
|
|||
|
|
|||
|
When you read an article that was cross-posted to multiple newsgroups,
|
|||
|
that article is marked as read in all the newsgroups to which it was
|
|||
|
cross-posted. The newsgroup you selected contains cross-posted articles
|
|||
|
that you already read in another newsgroup. The program counts the true
|
|||
|
number of unread articles when you select the newsgroup.
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: After running "expire -o", I reduced the keep days for a newsgroup
|
|||
|
and ran "expire -o" again, but it didn't delete any more articles.
|
|||
|
|
|||
|
Each article is assigned an expiry date after which it is deleted. The
|
|||
|
"expire -o" command deletes articles having an expiry date older than the
|
|||
|
current date. The article storage scheme requires that an article's
|
|||
|
expiry date be set when the article is imported into the news base. Once
|
|||
|
imported, the article's expiry date cannot be changed. When you change
|
|||
|
the keep days for a newsgroup, you only change how long you keep
|
|||
|
|
|||
|
|
|||
|
17
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
subsequently imported articles. You don't affect the expiry dates of
|
|||
|
articles already in the news base.
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: What is the junk newsgroup?
|
|||
|
|
|||
|
When the import program finds an article that doesn't belong to any of
|
|||
|
the newsgroups in the news base, it tosses the article into the junk
|
|||
|
newsgroup. This usually shouldn't happen with properly configured
|
|||
|
software.
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: How do I configure Yarn for OS/2 to run the MS-DOS version of PKZIP
|
|||
|
and PKUNZIP?
|
|||
|
|
|||
|
Put these settings in your configuration file, adjusting the drive and
|
|||
|
path appropriately.
|
|||
|
|
|||
|
compress=cmd.exe /c c:\path\pkzip -m %f %d\*.*
|
|||
|
uncompress=cmd.exe /c c:\path\pkunzip -o %f %d
|
|||
|
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: How do I configure Yarn to use InfoZip's zip and unzip programs?
|
|||
|
|
|||
|
Put these settings in the configuration file.
|
|||
|
|
|||
|
compress=zip -kjm %f %d/*
|
|||
|
uncompress=unzip -o %f
|
|||
|
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: How do I print an article from the reader program?
|
|||
|
|
|||
|
Use the save to file command. When prompted for a file name, enter the
|
|||
|
name
|
|||
|
|
|||
|
prn
|
|||
|
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: How do I cross-post an article to more than one newsgroup?
|
|||
|
|
|||
|
While you are editing the article, add the newsgroups where you want to
|
|||
|
cross-post to the Newsgroups: line. Separate the newsgroups with commas.
|
|||
|
Do not put any spaces between the newsgroups.
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
18
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
Subject: The program aborted with the error message "history file is corrupt".
|
|||
|
|
|||
|
The history file is an critical part of the news base. It contains the
|
|||
|
location where each article is stored. If the history file becomes
|
|||
|
corrupted, some articles may become inaccessible.
|
|||
|
|
|||
|
The rebuild program is a utility that rebuilds the history file by
|
|||
|
scanning all the articles in the news base. If the files containing the
|
|||
|
articles are intact, rebuild should restore the links to every article in
|
|||
|
the news base. To repair the history file, first run the chkdsk command
|
|||
|
to fix any file system errors, then run the command
|
|||
|
|
|||
|
rebuild -h
|
|||
|
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: The program aborted with the error message "dbm file is corrupt:
|
|||
|
%YARN%\supersed" or "dbm file is corrupt: %HOME%\yarn\readart".
|
|||
|
|
|||
|
These files aren't so critical and can be deleted if they become
|
|||
|
corrupted. First run the chkdsk command to fix any file system errors,
|
|||
|
then delete the supersed.* files in the %YARN% directory or delete the
|
|||
|
readart.* files in the %HOME%\yarn directory respectively.
|
|||
|
|
|||
|
------------------------------
|
|||
|
|
|||
|
Subject: Is there a Yarn mailing list?
|
|||
|
|
|||
|
Yes, to subscribe to the mailing list, mail a message to
|
|||
|
listproc@lists.colorado.edu. The body of the message should be the line
|
|||
|
|
|||
|
subscribe yarn-list Your Full Name
|
|||
|
|
|||
|
assuming Your Full Name is your full name. If it isn't, substitute your
|
|||
|
own name.
|
|||
|
|
|||
|
FILES
|
|||
|
|
|||
|
%HOME%\mail Folder directory
|
|||
|
%HOME%\news Default save directory
|
|||
|
%HOME%\replies Reply work directory
|
|||
|
%HOME%\yarn User configuration directory
|
|||
|
%HOME%\yarn\scores Score file directory
|
|||
|
%HOME%\yarn\scores\global Global score file
|
|||
|
%HOME%\yarn\addrbook Address book file
|
|||
|
%HOME%\yarn\config User configuration file
|
|||
|
%HOME%\yarn\filter Mail filter configuration file
|
|||
|
%HOME%\yarn\newsrc Newsgroup subscription file
|
|||
|
%HOME%\yarn\readart.* Read cross-posted article lookup table
|
|||
|
|
|||
|
%YARN%\active Active newsgroup file
|
|||
|
%YARN%\global System-wide configuration file
|
|||
|
%YARN%\history.* Article history lookup table
|
|||
|
%YARN%\supersed.* Superseded article lookup table
|
|||
|
%YARN%\overview Article overview directory
|
|||
|
|
|||
|
|
|||
|
19
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PC Yarn User Manual - version 0.88
|
|||
|
|
|||
|
|
|||
|
%YARN%\news Article spool file directory
|
|||
|
|
|||
|
|
|||
|
ACKNOWLEDGEMENTS
|
|||
|
|
|||
|
The MS-DOS yarn.exe program uses the SPAWNO routines by Ralf Brown to
|
|||
|
minimize memory use while shelling to DOS and running other programs.
|
|||
|
|
|||
|
The MS-DOS yarnx.exe program uses PMODE for Watcom C/C++, a DOS extender
|
|||
|
written by Charles Scheffold and Thomas Pytel.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
20
|
|||
|
|