id3 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,197 @@
1
+
2
+ ===========================
3
+ Comparison of ID3v2 Frames:
4
+ ===========================
5
+
6
+ This document contains a side-by-side comparison over the frames used
7
+ in the 3 different versions of the informal ID3v2 standard:
8
+ v2.2.0, v2.3.0 and v2.4.0
9
+
10
+ This document is a compilation of information which is available in the
11
+ documents listed below. The original documents Copyright notices apply.
12
+
13
+ ID3 v1.0 : http://www.id3.org/id3v1.html
14
+ ID3 v1.1 : http://www.egr.uri.edu/~kovacsp/mp3/ID3-Tag.html
15
+
16
+
17
+ ID3v2 2.0: http://www.id3.org/id3v2-00.txt
18
+ ID3v2 3.0: http://www.id3.org/id3v2.3.0.txt
19
+ ID3v2 4.0: http://www.id3.org/id3v2.4.0-changes.txt
20
+ http://www.id3.org/id3v2.4.0-structure.txt
21
+ http://www.id3.org/id3v2.4.0-frames.txt
22
+
23
+ Please refer to the original documents listed above, for any information
24
+ regarding the ID3v2 standards.
25
+
26
+
27
+ Author: Tilo Sloboda, Thu, 17 Oct 2002 00:26:54 -0700
28
+
29
+
30
+ References:
31
+ id3lib-3.8.0 id3lib-3.8.0/include/id3/globals.h
32
+
33
+ NOTE: the symbolic names used in the leftmost column are derived
34
+ from the names used in id3lib-3.8.0
35
+ The symbolic name CRYPTEDMETA is not part of id3lib-3.8.0
36
+
37
+ Legend:
38
+
39
+ -- : depreciated frame
40
+
41
+ -> : replaced by (all frames listed before this one are replaced)
42
+
43
+
44
+
45
+ ================================================================================
46
+ ID3v2 version
47
+ symbolic names 2.0 3.0 4.0 comments
48
+ ================================================================================
49
+
50
+ CONTENTGROUP TT1 TIT1 TIT1 content group description
51
+ TITLE TT2 TIT2 TIT2 title/songname/content description
52
+ SUBTITLE TT3 TIT3 TIT3 subtitle/description refinement
53
+
54
+ LEADARTIST TP1 TPE1 TPE1 lead performer(s)/soloist(s)
55
+ BAND TP2 TPE2 TPE2 band/orchestra/accompaniment
56
+ CONDUCTOR TP3 TPE3 TPE3 conductor/performer refinement
57
+ MIXARTIST TP4 TPE4 TPE4 interpreted, remixed, modified by
58
+
59
+ COMPOSER TCM TCOM TCOM composer
60
+ LYRICIST TXT` TEXT TEXT lyricist/text writer
61
+
62
+ LANGUAGE TLA TLAN TLAN language(s)
63
+ CONTENTTYPE TCO TCON TCON content type
64
+
65
+ ALBUM TAL TALB TALB album/movie/show title
66
+
67
+ TRACKNUM TRK TRCK TRCK track number/position in set
68
+ PARTINSET TPA TPOS TPOS part of set
69
+
70
+ ISRC TRC TSRC TSRC international standard recording code
71
+
72
+ --------------------------------------------------------------------------------
73
+ DATE TDA TDAT date
74
+ YEAR TYE TYER year
75
+ TIME TIM TIME time
76
+ RECORDINGDATES TRD TRDA recording dates
77
+ RECORDINGTIME -> TDRC recording time
78
+ --------------------------------------------------------------------------------
79
+ ORIGYEAR TOR TORY original release year
80
+ ORIGRELEASETIME -> TDOR original release time
81
+ --------------------------------------------------------------------------------
82
+
83
+ BPM TBP TBPM TBPM beats per minute
84
+
85
+ MEDIATYPE TMT TMED TMED media type
86
+ FILETYPE TFT TFLT TFLT file type
87
+ COPYRIGHT TCR TCOP TCOP copyright message
88
+
89
+ PUBLISHER TPB TPUB TPUB pblisher
90
+ ENCODEDBY TEN TENC TENC encoded by
91
+ ENCODERSETTINGS TSS TSSE TSSE software/hardware + settings for encoding
92
+
93
+ SONGLEN TLE TLEN TLEN length (ms)
94
+ --------------------------------------------------------------------------------
95
+ SIZE TSI TSIZ -- size (bytes)
96
+ --------------------------------------------------------------------------------
97
+
98
+ PLAYLISTDELAY TDY TDLY TDLY playlist delay
99
+ INITIALKEY TKE TKEY TKEY initial key
100
+
101
+ ORIGALBUM TOT TOAL TOAL original album/movie/show title
102
+ ORIGFILENAME TOF TOFN TOFN original filename
103
+ ORIGARTIST TOA TOPE TOPE original artist(s)/performer(s)
104
+ ORIGLYRICIST TOL TOLY TOLY original lyricist(s)/text writer(s)
105
+
106
+ FILEOWNER TOWN TOWN file owner/licensee
107
+ NETRADIOSTATION TRSN TRSN internet radio station name
108
+ NETRADIOOWNER TRSO TRSO internet radio station owner
109
+
110
+ SETSUBTITLE TSST set subtitle
111
+ MOOD TMOO mood
112
+ PRODUCEDNOTICE TPRO produced notice
113
+ ENCODINGTIME TDEN encoding time
114
+ RELEASETIME TDRL release time
115
+ TAGGINGTIME TDTG tagging time
116
+
117
+ ALBUMSORTORDER TSOA album sort order
118
+ PERFORMERSORTORDER TSOP performer sort order
119
+ TITLESORTORDER TSOT title sort order
120
+
121
+ USERTEXT TXX TXXX TXXX user defined text information frame
122
+
123
+
124
+ WWWAUDIOFILE WAF WOAF WOAF official audio file webpage
125
+ WWWARTIST WAR WOAR WOAR official artist/performer webpage
126
+ WWWAUDIOSOURCE WAS WOAS WOAS official audion source webpage
127
+ WWWCOMMERCIALINFO WCM WCOM WCOM commercial information
128
+ WWWCOPYRIGHT WCP WCOP WCOP copyright/legal information
129
+ WWWPUBLISHER WPB WPUB WPUB publishers official webpage
130
+
131
+ WWWRADIOPAGE WORS WORS official internet radio station homepage
132
+ WWWPAYMENT WPAY WPAY payment
133
+
134
+ WWWUSER WXX WXXX WXXX user defined URL link frame
135
+
136
+ --------------------------------------------------------------------------------
137
+ INVOLVEDPEOPLE IPL IPLS involved people list
138
+ MUSICIANCREDITLIST -> TMCL musician credits list
139
+ INVOLVEDPEOPLE2 -> TIPL involved people list
140
+ --------------------------------------------------------------------------------
141
+
142
+ UNSYNCEDLYRICS ULT USLT USLT unsynchronised lyrics/text transcription
143
+ COMMENT COM COMM COMM comments
144
+
145
+ TERMSOFUSE USER USER terms of use
146
+
147
+
148
+ ================================================================================
149
+ ID3v2 version
150
+ symbolic names 2.0 3.0 4.0 comments
151
+ ================================================================================
152
+
153
+ CDID MCI MCDI MCDI music CD identifier
154
+ EVENTTIMING ETC ETCO ETCO event timing codes
155
+ MPEGLOOKUP MLL MLLT MLLT MPEG location lookup table
156
+
157
+ SYNCEDTEMPO STC SYTC SYTC synchronised tempo codes
158
+ SYNCEDLYRICS SLT SYLT SYLT synchronised lyrics/text
159
+
160
+ --------------------------------------------------------------------------------
161
+ VOLUMEADJ RVA RVAD relative volume adjustment
162
+ VOLUMEADJ2 -> RVA2 relative volume adjustment (2)
163
+ --------------------------------------------------------------------------------
164
+ EQUALIZATION EQU EQUA equalization
165
+ EQUALIZATION2 -> EQU2 equalization (2)
166
+ --------------------------------------------------------------------------------
167
+
168
+ REVERB REV RVRB RVRB reverb
169
+ PICTURE PIC APIC APIC attached picture
170
+ GENERALOBJECT GEO GEOB GEOB general encapsulated object
171
+
172
+ PLAYCOUNTER CNT PCNT PCNT play counter
173
+ POPULARIMETER POP POPM POPM popularimeter
174
+
175
+ BUFFERSIZE BUF RBUF RBUF recommended buffer size
176
+
177
+ CRYPTEDMETA CRM encrypted meta frame
178
+ AUDIOCRYPTO CRA AENC AENC audio encryption
179
+
180
+ LINKEDINFO LNK LINK LINK linked information
181
+
182
+ POSITIONSYNC POSS POSS position synchronisation frame
183
+
184
+ COMMERCIAL COMR COMR commercial frame
185
+ CRYPTOREG ENCR ENCR encryption method registration
186
+ GROUPINGREG GRID GRID group indentification registration
187
+ PRIVATE PRIV PRIV private frame
188
+
189
+ OWNERSHIP OWNE ownership frame
190
+ SIGNATURE SIGN signature frame
191
+ SEEKFRAME SEEK seek frame
192
+ AUDIOSEEKPOINT ASPI audio seek point index
193
+
194
+ ================================================================================
195
+ ID3v2 version
196
+ symbolic names 2.0 3.0 4.0 comments
197
+ ================================================================================
@@ -0,0 +1,60 @@
1
+ ===========================
2
+ Overview of ID3v2 Frames:
3
+ ===========================
4
+
5
+
6
+ This document contains a comparison over the frames used in the 3 different
7
+ versions of the informal ID3v2 standard: v2.2.0, v2.3.0 and v2.4.0
8
+
9
+ This document is a compilation of information which is available in the
10
+ documents listed below, and therefore does not have a Copyright by itself.
11
+ The original documents Copyright notices apply.
12
+
13
+ Content: Copyright (C) Martin Nilsson 1998, 2000
14
+
15
+ Please refer to the original documents listed below, for any information
16
+ regarding the ID3v2 standards.
17
+
18
+
19
+
20
+ Compiled by: Tilo Sloboda, Thu, 17 Oct 2002 00:26:54 -0700
21
+
22
+
23
+ Sources:
24
+ ID3v2 2.0: http://www.id3.org/id3v2-00.txt
25
+ ID3v2 3.0: http://www.id3.org/id3v2.3.0.txt
26
+ ID3v2 4.0: http://www.id3.org/id3v2.4.0-changes.txt
27
+ http://www.id3.org/id3v2.4.0-structure.txt
28
+ http://www.id3.org/id3v2.4.0-frames.txt
29
+
30
+
31
+ ================================================================================
32
+ ID3V22_HEADER: "ID3" $02 $00 $C0 $7F $7F $7F $7F
33
+
34
+ ID3V22_FRAME_HEADER: "XXX" $SS $SS $SS
35
+
36
+ ID3V22_TEXT_FRAME1: $01 <textstring> ($00 (00))
37
+
38
+ ID3V22_TEXT_FRAME2: <textstring> ($00 (00))
39
+
40
+ ID3V22_TEXT_FRAME3: $01 <textstring> ($00 (00))
41
+ <textstring> ($00 (00))
42
+
43
+ ID3V22_BINARY_FRAME1: <binary data>
44
+
45
+
46
+ ================================================================================
47
+ ID3V23_HEADER: "ID3" $03 $00 $C0 $7F $7F $7F $7F
48
+
49
+ ID3V23_FRAME_HEADER: "XXXX" $SS $SS $SS $SS $FF $FF
50
+
51
+
52
+ ================================================================================
53
+ ID3V24_HEADER: "ID3" $04 $00 $F0 $7F $7F $7F $7F
54
+
55
+ ID3V24_FRAME_HEADER: "XXXX" $7F $7F $7F $7F $FF $FF
56
+
57
+
58
+ ================================================================================
59
+
60
+
@@ -0,0 +1,146 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head>
3
+
4
+
5
+
6
+
7
+
8
+ <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
9
+ <title>Module ID3</title>
10
+
11
+ </head>
12
+ <body><br>
13
+
14
+
15
+
16
+
17
+
18
+
19
+ <br>
20
+
21
+
22
+
23
+
24
+
25
+
26
+ <br>
27
+
28
+
29
+
30
+
31
+
32
+
33
+ <h3>Module ID3</h3>
34
+
35
+
36
+ This module models provides methods, constants and classes to handle
37
+ ID3 version 1.x and version 2.x tags for audio files.
38
+ <P>
39
+
40
+
41
+
42
+
43
+
44
+
45
+ <br>
46
+
47
+
48
+
49
+
50
+
51
+ <h4>
52
+ Provided Functionality:
53
+ </h4>
54
+
55
+
56
+
57
+
58
+
59
+ <ul>
60
+
61
+
62
+
63
+
64
+
65
+
66
+ <li>Reads and parses audio files for ID3-tags</li>
67
+ <li>Writes audio files and attaches ID3-tags to them&nbsp;&nbsp;&nbsp; # not yet implemented<br>
68
+ </li>
69
+
70
+
71
+ <li>Provides both high-level and low-level classes for handling files with ID3-tags<br>
72
+ </li>
73
+ </ul>
74
+
75
+
76
+
77
+
78
+
79
+ <h4><br>
80
+ </h4>
81
+ <h4>Module Constants:</h4>
82
+
83
+ <ul>
84
+
85
+ <li>
86
+ ID3::SUPPORTED_SYMBOLS[version]</li>
87
+ </ul>
88
+
89
+
90
+ <h4>Module Methods:</h4>
91
+
92
+ <ul>
93
+
94
+ <li>ID3.hasID3v1tag?(filename)</li>
95
+ <li>ID3.hasID3v2tag?(filename)</li>
96
+ <li>ID3.hasID3tag?(filename)</li>
97
+ <li>ID3.removeID3v1tag(filename)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
98
+ # ID3v1 tags aren't really very useful - that's why there is a special
99
+ method to remove them<br>
100
+ </li>
101
+ </ul>
102
+
103
+
104
+
105
+
106
+ <h4>Classes:</h4>
107
+
108
+
109
+
110
+
111
+
112
+
113
+ <ul>
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ <li><a href="Class_AudioFile.html">ID3::AudioFile</a><br>
122
+ </li><li><a href="Class_Tag1.html">ID3::Tag1</a></li><li><a href="Class_Tag2.html">ID3::Tag2</a></li>
123
+ <li><a href="Class_Frame.html">ID3::Frame</a><br>
124
+ </li>
125
+
126
+
127
+ </ul>
128
+
129
+ <br>
130
+
131
+
132
+
133
+
134
+ <h4>Examples:</h4>
135
+
136
+
137
+
138
+
139
+ <pre> &gt; require 'id3'<br> =&gt; true<br><br> &gt; ID3.hasID3tag?("mp3/a.mp3")<br> =&gt; "1.0 2.3.0"<br><br> &gt; ID3.hasID3tag?("mp3/b.mp3")<br> =&gt; "2.2.0"<br><br> &gt; ID3.hasID3tag?("mp3/c.mp3")<br> =&gt; "1.1"<br><br> &gt; ID3.hasID3tag?("mp3/d.mp3")<br> =&gt; "1.1 2.3.0"<br><br> &gt; `cp mp3/d.mp3 mp3/delete.mp3`<br> =&gt; true<br><br> &gt; ID3.hasID3tag?("mp3/delete.mp3")<br> =&gt; "1.1 2.3.0"<br> &gt; ID3.removeID3v1tag("mp3/delete.mp3")<br> =&gt; true<br> &gt; ID3.hasID3tag?("mp3/delete.mp3")<br> =&gt; "2.3.0"<br><br> &gt; version = ID3.hasID3v2tag?("mp3/b.mp3")<br> =&gt; "2.3.0"<br><br> &gt; ID3::SUPPORTED_SYMBOLS[version].keys<br> =&gt; ["PICTURE", "FILEOWNER", "CONDUCTOR", "EVENTTIMING", "DATE", "CRYPTOREG", "COMMENT", "POPULARIMETER", "GROUPINGREG", "PUBLISHER", "COPYRIGHT", "EQUALIZATION", "NETRADIOSTATION", "ORIGFILENAME", "WWWPUBLISHER", "BUFFERSIZE", "PLAYCOUNTER", "ISRC", "LYRICIST", "RECORDINGDATES", "SIZE", "INVOLVEDPEOPLE", "POSITIONSYNC", "WWWCOMMERCIALINFO", "PLAYLISTDELAY", "ORIGLYRICIST", "ALBUM", "SYNCEDLYRICS", "CONTENTTYPE", "SONGLEN", "MEDIATYPE", "WWWPAYMENT", "REVERB", "COMPOSER", "LINKEDINFO", "CONTENTGROUP", "BPM", "ORIGYEAR", "ORIGARTIST", "UNIQUEFILEID", "USERTEXT", "FILETYPE", "TIME", "PRIVATE", "SUBTITLE", "TERMSOFUSE", "BAND", "WWWCOPYRIGHT", "YEAR", "INITIALKEY", "SYNCEDTEMPO", "PARTINSET", "WWWUSER", "AUDIOCRYPTO", "MPEGLOOKUP", "VOLUMEADJ", "ORIGALBUM", "CDID", "ENCODEDBY", "WWWAUDIOFILE", "COMMERCIAL", "TITLE", "MIXARTIST", "NETRADIOOWNER", "TRACKNUM", "WWWAUDIOSOURCE", "GENERALOBJECT", "WWWRADIOPAGE", "LANGUAGE", "ENCODERSETTINGS", "WWWARTIST", "ARTIST", "UNSYNCEDLYRICS"]<br><br><br><br></pre>
140
+
141
+
142
+
143
+
144
+
145
+
146
+ </body></html>
data/docs/id3.html ADDED
@@ -0,0 +1,245 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head>
3
+ <title>id3.rb - ID3 Library for Ruby</title>
4
+
5
+
6
+
7
+ </head>
8
+ <body><br>
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+ <center>
17
+ <h1><font color="#ff0000">Pre-Beta Release</font><br>
18
+ </h1>
19
+ <h1>id3.rb - ID3 Library for Ruby<br><font size="-3">by Tilo Sloboda &lt;tools-NOSPAM@unixgods.org&gt;<br>
20
+ </font></h1>
21
+
22
+ </center>
23
+
24
+
25
+
26
+
27
+
28
+ <h3><font color="#ff0000">Feedback Needed</font></h3>
29
+
30
+
31
+
32
+ Currently I would like to get feedback on the interface, classes, methods provided by the ID3-library.
33
+ <p>
34
+ Please send me <a href="mailto:tools-NOSPAM@unixgods.org">email</a> and let me know what you think..<br>
35
+ </p>
36
+
37
+ <p><br>
38
+ <br>
39
+ </p>
40
+
41
+ <h3>Introduction</h3>
42
+
43
+
44
+
45
+
46
+
47
+
48
+ The aim of this ID3 library for Ruby is to do a full <b>native Ruby
49
+ implementation </b>of ID3 version 1.x and version 2.x , without any use of
50
+ binary libraries, which other implementations need to have installed
51
+ separately.&nbsp;&nbsp;&nbsp; e.g. other implementations just act as a
52
+ wrapper around a binary library - I beleive that this is not as
53
+ portable as a Ruby library should be.<br>
54
+
55
+
56
+
57
+
58
+
59
+ Another aim of this implementation is to provide the user with a
60
+ uniform API, which tries to hide the details of the different ID3 standards,
61
+ therefore making it (hopefully) easier to use.<br>
62
+
63
+ &nbsp;<br>
64
+
65
+
66
+ <h3>Supported Versions</h3>
67
+
68
+
69
+ ID3 v1.0 , v1.1 , v2.2.x , v2.3.x and v2.4.x<br>
70
+
71
+
72
+ <br>
73
+
74
+
75
+
76
+
77
+
78
+ <h3>ID3 Library Overview</h3>
79
+
80
+
81
+
82
+
83
+
84
+ The library provides the <a href="Module_ID3.html">Module ID3</a> , which provides some module methods, as well as three simple classes to the user:&nbsp;&nbsp;
85
+ <a href="Class_AudioFile.html">AudioFile</a>, <a href="Class_Tag1.html">Tag1</a> and <a href="Class_Tag2.html">Tag2</a>, to handle files which contain ID3-tags.<br>
86
+
87
+
88
+
89
+ <br>
90
+
91
+
92
+
93
+ The ID3-standards are overloaded with specially coded frames, which are different for each of the binary frames<font color="#ff0000"><sup>1</sup></font>.This
94
+ library does not attempt to fully decode each and every frame type, but
95
+ rather deals with the main frame types, such as text and web-frames,
96
+ and in case of the binary frames hands the contents of the frames to
97
+ the user verbatim.&nbsp; If the user chooses to modify or write any of
98
+ those binary frames, the user is expected to know what s/he is doing,
99
+ and how to code/de-code the binary contents, otherwise expect:&nbsp;
100
+ "garbage in --&gt; crash!"&nbsp; of the application which tries to make
101
+ sense of such frames later..&nbsp; However, if an ID3-tag contains
102
+ binary frames, the user can expect that those are handed verbatim to
103
+ the user and that it is safe to write them back 'as is' to a
104
+ new/modified ID3-tag of the same audio file. In some cases the user may
105
+ choose to delete some of the binary frames, that should be possible
106
+ without problems.&nbsp;&nbsp; <br>
107
+
108
+
109
+
110
+
111
+
112
+ <br>
113
+
114
+
115
+
116
+
117
+ <h3>Download</h3>
118
+
119
+
120
+ <br>
121
+
122
+
123
+ <br>
124
+
125
+
126
+ <h3>Known Problems</h3>
127
+
128
+
129
+ Some ID3v2 frames may appear more than once in an ID3-tag!&nbsp; e.g.
130
+ TXXX and WXXX. I haven't come across any actual examples for this,
131
+ therefore didn't see the necessity to implement this.&nbsp;&nbsp;
132
+ Currently there is no support for this.&nbsp; If you come across such
133
+ cases, please let me know.. <br>
134
+
135
+
136
+ <br>
137
+
138
+
139
+
140
+
141
+
142
+
143
+ <h3>
144
+
145
+
146
+ Documentation</h3>
147
+
148
+ The main id3.rb documentation is here.<br>
149
+
150
+
151
+ <br>
152
+
153
+
154
+ I complied a comparison between the different <a href="http://www.unixgods.org/%7Etilo/ID3/docs/ID3_comparison.html">ID3-versions</a>, I hope it's helpful.<br>
155
+
156
+
157
+ <br>
158
+
159
+
160
+ <h3>Disclaimer / Author's Rant</h3>
161
+
162
+
163
+ Please feel free to send me "constructive feedback"&nbsp;
164
+ anytime.&nbsp;&nbsp; If you're missing functionality, or you think
165
+ something should be done different, please let me know! I'm always open
166
+ for suggestions. Thank you!<br>
167
+
168
+
169
+ <br>
170
+
171
+
172
+ IMHO the ID3 version2.x standards are pretty pretty messy... they are
173
+ bloated and&nbsp; overloaded with useless frame-types and
174
+ side-effects...&nbsp;&nbsp; The worst is ID3 v2.4.0!&nbsp; I haven't
175
+ seen any actual v2.4.x tags yet, if you have examples, please send them
176
+ to me. I suspect that the reason why I didn't find any v2.4.x tags
177
+ anywhere is because the "2.4.x standard" is just too complicated, so
178
+ nobody is using it..&nbsp; proove me wrong and email examples to me ;-)<br>
179
+
180
+
181
+ <br>
182
+
183
+
184
+ Last not least: Please don't complain about the "quality" of the
185
+ ID3-standard to me.. I'm certainly most sympathetic with your pain, but
186
+ not the right person to complain to.. ;-)<br>
187
+
188
+
189
+
190
+
191
+ <br>
192
+
193
+
194
+
195
+
196
+ <h3>License</h3>
197
+
198
+
199
+
200
+
201
+ Freely available under the terms of the OpenSource "Artistic License" in combination with the Addendum A (below)<br>
202
+
203
+
204
+
205
+
206
+ In case you did not get a copy of the license along with the software,
207
+ it is also available at:&nbsp;&nbsp;
208
+ http://www.unixgods.org/~tilo/artistic-license.html<br>
209
+
210
+
211
+
212
+
213
+ <p>
214
+ <font color="red">
215
+
216
+ Addendum A. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
217
+ DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
218
+ </font></p>
219
+
220
+
221
+
222
+ <p>
223
+ <font color="red">IN NO EVENT WILL THE COPYRIGHT HOLDERS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
224
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
225
+ LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR USELESS OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
226
+ THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDERS OR OTHER PARTY HAS BEEN ADVISED OF
227
+ THE POSSIBILITY OF SUCH DAMAGES.<br>
228
+ </font></p>
229
+
230
+
231
+
232
+ <p>_________<br><font color="#ff0000">
233
+ 1</font>:&nbsp; who came up with all those special frame types? Cheez! KISS!&nbsp; (Keep It Simple, Stupid!)<br>
234
+
235
+ </p>
236
+
237
+
238
+
239
+ <p>
240
+
241
+ </p>
242
+
243
+
244
+
245
+ </body></html>