2IMGRVLW@@@ @ 8L xC)pJJJJ IH(ȱH:=IH[H`@H^H 2 9 @   I/H`JLNGȄBȄF aK ' faaFF  RJm# KKJ qJ )J ۈJJm  JFȱJGJKaȄM ' 5aaNNJFLGJ`a  XL LG &PRODOS`DaElH$?EGvѶK+`L XX LU ŠϠĠӥS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8RNT.TOOL221/"' @[READMEFIRSTP Q ET#)INSTALLERKg! [ [TOOL221DEMO] #p.DOCUMENTATIONg "MUSICh "SOURCECODEi "SCRIPTSjQ+"SYSTEMk'" NinjaTracker player (c) 2015 by Ninjaforce ___________________________________________________________________________ Hello, Antoine Vignau and Olivier Zardini, founders of Brutal Deluxe Software, are proud to introduce the "NinjaTracker" Tool221 to the Apple IIgs community. Based on Olivier Goguel's "Soundsmith player" Tool219, this new tool set includes Ninjaforce's "NinjaTracker" player. The "NinjaTracker" player is based on the file format of the SoundSmith program with the addition of Amiga modules sound effects. Please, open the Documentation folder for more information. The SourceCode folder contains the source code of the tool set and of the demo program, as well as a macro file for Merlin 16/32 users. Visit our friends' website at: - FTA: http://www.freetoolsassociation.com/ - Ninjaforce: http://www.ninjaforce.com/ ___________________________________________________________________________ Installation Manual 1/ Double-click the "Installer" program. 2/ Select your startup disk 3/ Install the NinjaTracker Tool221 script onto your boot disk. The following file is copied onto your startup disk: - System:Tools:Tool221 4/ Restart your computer. ___________________________________________________________________________ Minimum System Requirements The program requires at least 16KB of free memory. It has been tested on Apple IIgs ROM 01 & ROM 3 versions. It is compatible with System 5.x and above. ___________________________________________________________________________ Limited Warranty Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Brutal Deluxe assumes no responsability for damages resulting from the use of the program. In no event will Brutal Deluxe be liable for any loss or profit or any other commercial damage, including but not limited to special, indicental, consequential, or other damages. ___________________________________________________________________________ Contacts Commercial Contact_________________________________________________ For any questions regarding a disk update or anything commercial nature, please visit our website at the following address: Internet: http://www.brutaldeluxe.fr/ Technical Contact_________________________________________________ If you want to get some technical information or if you have problems using this software, please contact the authors of the program at the following addresses: Mail: Brutal Deluxe Software 56 rue Corneille 78150 Le Chesnay FRANCE Internet: antoine@brutaldeluxe.fr olivier@brutaldeluxe.frY >>t  p  B[SW@`UUDD40$xH FH MHHCT <BT<I <2| !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\,C ~ExpressLoadN'H,~directhG@,mainDH,>~direct?@,;mainNCopyright Apple Computer, Inc. 1987-1990 Apple IIGS Installer V1.2V1.00V1.10K{^"*)#Hh`h`````"hZ" ) `" 0BB1c0"   o   "  (" " ")` ^ 4"H"h ^"HH ^H " ;[j+hfhhjiH^H@^H"y :"""``"HH"h^h^^ɀ@jiHH^H"nn";E8H#``44````"h"᭍^H"9" ""᭍^HjiH"d^HjiH" I^H" 6" '"^HjiH", H *"hbhbh Haa"`>L@\XH LAbout the Installer...\VH .>L File \H LQuit\*QqH .>L Edit \DH LUndo\V*ZzH LCut\*XxH LCopy\*CcH LPaste\V*VvH LClear\H HH-" "HH-" "HH-" ""H"h*"`) 5V`-/%'13"E> +dHH^H "h7h9HH^H "hX`hZ`"a +֭0 0"A"H"h SCRIPT e ȾHJOV`-i/iHڭZ`HX`H"Z`HX`H (h\`h^`\`m- ^`m/-i-/i/0 0%)'+0 0;m%i%m''Hڭ9H7H"9H7H (hh m) m+ 0;;Ȁ0ȢH)Xh)R @3"V` 8 +*%)'+V` mV`1m%%m''Hڭ9H7H"9H7H (hh HHm1 m3Hڭ+H)H+" ȥ  55V` )e i eȀʭ9H7H "9H7H (hR`hT`Z`HX`H "Z`HX`H (h\`h^`T`HR`H^`H\`HV`:H"ozV`:H"R`T` 00`8` 1:SCRIPTS:^N+ " v l l l l l%e2>eKWe]ienznzI~~I v]a laO fbnbubzbEbJbObZb33333333 K^[ U'"HH"7"c:"="g:"="Ki:"``"lc:"="lg:"="~i:"``" "#,m^HH"o^)HH"q^)HH":"BB",d`0"HiH:"bb" HiH:"#b#b"0"+:"Y="D:"Y="m:"=" /+k ;[K,d`0HHU"i#H::H:" )@8qq8HHiHH ";" H H"(-0"."HHT"6"2 )(7"."HHT"6"+ ;i k( ( R2R2HH== "zHH""(" R2R2"11E R2R2 + 2 2Hbb"hiH#b#b"hiHHHHWHUH[HYH]HaH_H " hhip9H7H (h!h#V` HHHH "hH (hh 4ȷHHHH-- "hH (hh 4ȷHHHH^^mm2H 2H "hhdd `8` &f`1^d`HH""dd ,^P f` /,^p ,+HNs^s^"h Eк " v2 + U',d`06U"αHiH:"R2R2"iU"ιHiH:"__"3`^)u^  " "`<" > +`" >HHb`H``H "h``hb`M``R```i m\`m^` ^0^^>0"?"}AX"BR""C7k" @"X?8 $^9k" @"/D,8 $^&k" @"K8n> > >"?,d` U'6H > >"? > $h8`,>J 1,t8a>a>0>a>a>5>"H]>]>"h > $`Ozgw>>n( `" >`8H8H"ᜀ88`0>>^0`Reading Writing &OHH"HH<< "hX8 H" ] b H{,z80 {Hk8|8JHhhH &"h0 Ⱦhh08 +H {Hh8k 3H8H8 H88"` HH H0 : K&^^KK:Kȷ K K0 KK0 8K :ʈʎK0^ ^ ʎK0K KWH (hihi0K K0 J0K K08 0 J+ 88"8(F D +8M0 HKH0H HK#HHK)iiHڭ^H " hh +K K h KhK hhH (hihi0KK0 J 88"8!FD 88 +8A8!9"!9"!9 -98  v8x8v8KKh h0hKh 0h hh `8`8H8H (hh )~k,t80"?@88,t8"HH"8hKhK08HH"zKKKKRRHHZڭ^HHH "z +888H8H "ᭂ8H8H (hh 8H8H "ᭆ8H8H (h;;h;;*V,t8A*V)@$9^9^9" 9 n] R $^ P]*V@ +99999" 9e88e 88"888 +邏8989"988 +i99"S8 +c88HH^H "[9h]9 +.H (h8S9h8U9"@"888 +"S0^H^:^Ȁ^0^8^8" 888 +邕0h^08Q9"AW9"#Q9 S9iS9U9iU9W9"#Q9]9H[9H";e8e 8)ie8e 8 >W,t80"@"A R)<:0=:<:0)8m8):0::09^9^9" 9 n]*Vv99999" 9<:H<:H" G88 +Ă>,t80"@" X;88 +d; F;f;H;h;J;j;L;l;N;R;R;Z;;;" ;L888 +R̈́;R͂;R͂;R;R8nR" ;88 +邂l;" ;88 +]8R;R;͊;;8nRh;;;;;;;m;;;;m;;;;;;" ;88 +" ;88 +9^9^9" 91" @;E88 +,t80"A" ;88 +u,R S;;;;;;;" ;88 +9" ;88 +l;c" ;88 +;;<;;;;" ;88 +" ;88 +邴:H:H" G88 +݂D8 +;88 8 8 : 88"8&D88 +䪭8+ H8H88 h8h Ν8 ) 8 IH8 88H8H"HS" Sh(k,^PpY)X^)4)^)^ @^"H"hSH1"SS" " "" S" S" SSS S" S" SSS" S" S``;;;899999" 9" ;LM88 +˂9^9^9" 9;;;;" ;88 +邼" ;88 +邢9^9^9" 9" ;88 +Ђol;`99999" 9" ;88 +Ђ-9^9^9" 9" ;88 +Ђ;;;;;;;;R;R;;;;;;<99999" 9" ;LM88 +˂9^9^9" 9;;;;" ;88 +M" ;88 +39^9^9" 9" ;88 +Ђ`.V.V4W WVV)i8n4W W0.V̯V1.Va{)ߍ8Va{)͟8ۭ.VͯV0`08`),V`): 0::-32W0a{)Ȍ0W2W,V Ȍ2W0W݂6W)H6W,4W0=99.V.V9)H+"0: /08W:W8ȷ)_>8 )__ʊ h?>?>>?> K;8[' n)+' );i&'+hhhhhk-nnnnapppqpplppp p 5q q p bqU" bqS" Dw F sZڀYtYt iH H " pnn "pp&"F: nq"nn&"``` p p#ȥ%)d):8:Z iHȊzЈ ):ȀȥF qddH nq"hFi 8 < >>wB{iH"eiDHHHFH "h<w@H"h,< p8 iJJ)2 4 ȗ ȗȗHHHH2H 8 H "@HH "h(hȗ` p q` p#%ȗ q n`````` iH :::H:"`)` ` ppp` `""""`6"8"H"h) ,"`z{i HZ`zHHHZ iHcȷ`*HH"` p r rd Ls ]s H sh sH"h ur(ȷ) 0n`< p(ȷ 0HH"i,iH bq bq" ""`< pi,iHHH" bq bq "` 5q q< p bqU" bqS"De F: sZڀYtYt iH H " pnn "pp&" nq"nn&" De `{iH "`d< pDe  0  0`F De ͩ``:< pDe  De  H"h)  bqV"` ) t) AtCt``wutuGvuv# 0 30 3333331333333330 333303030333330 0 YUU  )vHd "zHHHHZH "hvhhh$ȷ kwkw)H vh)ww-wHI-wvhvCwwvswȷuwȷ:wwȷ:yw?wH"h)ޭୱ έЭҭԭ֭حڭ܂H chȷ󪈈ކ୅H chȷ } eΆР҆Ԡ ֆؠ چܥ8pI>ލ ΍Ѝҍԍ֍؍ڍ܍H chޗȥ󭅀H ch } e·Зҗȥԗ֗ȥؗ ڗȥܗ{i+;ik ;8[i8pI׭٭ AH chȷ񪈈׆٭H chȷ 8pIܭޭ AH chȷ񪈈܆ޭH chȷ dѧ)ͧ)ϥ8pIͅ˂υ˥8pI 0 % ɨ)ӥɨ)ե8apI 0 z8pI 0% 8 8apI 0 z8pI 0% 8 ɂ8pIтт х  % 8pI {i+;ik ;8[iߥeߠ8"z d 8pI  p8pIHH"|h8pIH"|h8pI0  "zߥeߠ8މ d "z{i+;ik ;8[i8ߥJߥeߥ8pI: "~8pI*"z"z"z: "~{i+;ik]nh`t`z` `R`n`4``ar {N^A+Qw AUYfbcgnbquubzbEbJbObZbx``=Bbb#bMqaR2R2= R2,R2=bV#b3-j^mCs^}R2_(%1)I=`Ube sw`Ec3-p96 %=U`1`Idam!!-#$K$$$$$%$&.&,/&7='^'-(8(R2J(m(_@)`)b)R2))#b*_*********+*`*`+a+(+(+k.+^+4+7V+Z+l++p++t++x+++d+`+d+++k-,jeL,Ze,,,,,,,-,)-,`-Ye-i5-A-A-kl-nep-xet-ex-e|-e-e-e-e-f-$f-8f-Bf-Vf-of-f-f-f-f-f-g-'g-=g-Lg-eg-{g-g-g-g-g-#h-Oh-ph-h-h-h-i...,/.7//:/J/>/b/B/z/V/`n/`/ta/Q0/10Y0A011i1i1Nj1j1j1{1+22-22O2%2Q221P3-323#24444444^5^5_\5_5^5^6&6h6>6v6`6D6~6666i7n7p7^z7^89)9_9B;:\;<:;<:;:;:=> =>1=>a.>aB>]>k>w>o>>>`>>?<?Ik)@kb@|?|@y@?@f?DAo?A^A8ABA8 BB9B8_B9B8B9CCCCCCCCCDC|iDkiD+D+DldD9oD9D3HDGE^F9PFGGhH3HI^I8YJ8J!9J!9L^L9L9L9M8=M9dMSM8MSN^N8@NQ9bNQ9O^&O9GO9RO9]O<:hOGOX;O;$P;IP;P;P;P^P9 Q@;1Q;mQ;Q;Q;Q;Q; R:RGpR8RSSSSSSSSSSSSSSST9 T9T;8T^CT9YT;sT;T^T9T;T9T9T;U^U9U;oU9zU9U;U^U9U;U;V^ V9V;DW.VWWVX9X.VbX8W]8]8]8^P<*^s^nnYtnnnpnnrYtsnsp-snAtwuEttItuMtGvQtuUtvwkwyswyvEyswKyv|ywy9wyswyvywUbqw} Uims~ +/FJau (+6KOZos+!&-18@DOSW[_cfkntz} CFS\behkntw{~  $(,/3>BFJNQUY]amv{{!%@JPTerv GJP[^dgk")/49@ORYhknt2 !(6AEJX_m| $,/2AOa{  &*59=D|!%37BEHLS]cguy"  #(+.19>DGOS^dos' 69CGMSV_jnqty| -03 u})-4?CFRUfnx #(+17EVY $-IMZ^ehl""&1>AGQU`cgk~"$'*/@CFNQTWfilt|  #'+ov~'08;>ADGJNR[^ag{~0 !$036>ADJMTW_irz 1:=H]aehorv|) *158;>ADIUX]behkpsvy|  #/ALUkpw~ .1;LQjmp & *036:EIMVZeimqtx{" !$,/25DGJRZmsv ).18HNQWZgk,03>ADJWZ`oru}/ +.19PSV_bfinrx~&#8;>FKSVY\_betwz "%6=@EOch|.4GTW!!$'/25;HKNQ`cfz}/ "%(0369|>t  G*pNinjaTracker player demo _____________________________^abcd :  : HH "ELv  Ԡ͠ˮ  v #H堺  Gqv Ӡ ϠԠҠ ϠŠHH"bhh;8 [+;irB ˠխҮ # #@ǝ " ~ "H "h  )ɀɠ rk    Ǡ`   Ǡ `   `: i H c`0.)4#)#0(*"")` @` @ `  @` @ K0d>(JJJHJJJhH }"KhJJ) }"Kd8hh02)ߏ2kh H`:E)' ɍ O  שi`8 icHڭcZH ) hJJzhih:8`666&>&>&>>8>&8&&&88 8000&>&~ ~`0 ~fff~~`~~~`x`~ff~``~~`~~~f~~`0 ~f~f~~f~`` 0 0>> 0 > 8????????f>f>||>fff>~>~~>|f<ff~ff~~```f~f66f~f~~fffn~vff>f6f|<`>~ffff<fff<fff~ff<><000<>>1/Music/Arnesune1/Music/BlueIntro1/Music/ConradŠ٠ŠϠ٠Ġ٠BHZ 4 "Fatal System Error : $Hz 4E Ccfioz} $jmy 2;@X[f*2'B@HH;_f_________________ A demo program of the Tool221 "NinjaTracker" built from FTA's demo of the SoundSmith toolset. Credits go to FTA & Ninjaforce Brutal Deluxe Software, 2015DOCUMENTATIONv ' '/FTN.D5.07.NINJAl 1"1'g-MODFORMAT.TXTx'K- g[TOOL221.DOCP0ET gMUSICv ' '(ARNESUNEյLv99h*ARNESUNE.W99h)BLUEINTRO,vV  h+BLUEINTRO.WC  h&CONRADae  h(CONRAD.W9  hSOURCECODEv ' '.NINJATRACKER.SF::i.TOOL221.MACS.SE:#i)TOOL221.SI$E;@i(NTDATA.Sm'i*NTPLAYER.S,ATdi-TOOL221DEMO.SZtiSCRIPTSvQ+' 'TOOL221?i')jSYSTEMv''  'TOOLS'"kmnopqrstuvwNinjaTracker SoundSmith file format ___________________________________ File Type: $D5 (213) Auxiliary Type: $0007 The File Format SoundSmith sequences consist of a 600 byte header, followed by three equally-sized blocks containing the notes in the sequence, the effects to be applied to the notes, and parameters for the effects. The file concludes with 30 bytes of stereo information. The Header signature (+000) 6 Bytes ASCII bytes "SONGOK". An identifier to SoundSmith that the file is not corrupted. length (+006) Word The length of each of the three equally-sized blocks that follow the header (Main, Effects1, and Effects2). tempo (+008) Word The tempo for the song. A note is played each tempo/50th of a second (see the "Playing the Music" section in this Note). instBlock1 (+020) InstBlock The instrument parameters for the first instrument. instBlock2 (+050) InstBlock The instrument parameters for the second instrument. ... instBlock15 (+440) InstBlock The instrument parameters for the fifteenth instrument. musLength (+470) Word Length of the music in SSBlocks. musList (+472) 128 Bytes List of SSBlocks to play. Each block is identified by one byte (i.e., 0 3 5 2 2 n means play block 0, block 3 block 5, block 2, block 2, and block n respectively). An SSBlock is 896 Bytes (64 * 14 bytes). The Main block is composed if SSBlocks. An InstBlock is a 30-byte block of instrument parameters defined as follows: instName (+000) String ASCII name of the instrument to be used. If this is less than 22 bytes (21 characters plus the length byte), it must be padded to take 22 bytes. reserved (+022) Word Reserved, set to zero. volume (+024) Word Volume for this instrument. Although this is a word parameter, legal values range from 0 to 255. reserved (+026) Word Used by NinjaTracker: The low byte of this word specifies the type of the instrument: $00 - unlooped instrument $01 - looped instrument, this instr. is only the header to play. The loop itself is the next instrument after this one. Headers are only saved when the header size is $100 or greater. $02 - the loop itself. MODCON copies loops behind each other till the sample will sound best. The high byte of this word is the finetune value, just like in a MOD. reserved (+028) Word Reserved, set to zero. The Main block The main part of the file consists of three equally-sized blocks. The length of each of the three parts is given by the Length field in the header; the entire Main block is 3*Length bytes long. Bytes in each block are related to each other positionally. For example, the first byte of the Effects1 and Effects2 blocks contain the effects to be applied to the note in the first byte of the Notes block. The first block is the Notes block. Each byte is a MIDI Note number representing the note to play. NinjaTracker does not support previous Soundsmith commands, such as STP. The second block is the Effects1 block. The high nibble of each byte determines which instrument should be used to play the note in the corresponding byte of the Notes block. The low nibble of each byte contains a value to be used by each effect. This value corresponds to the standard ProTracker Amiga effect command. The third block is the Effects2 block, and contains values to be used for the effects listed in the bytes of the Effects1 block. This value corresponds to the standard ProTracker Amiga effect byte. Stereo Data The file ends with 30 bytes of stereo data. The data is in 15 words, one for each instrument. A value of $0000 indicates the instrument uses the right channel; a value of $FFFF indicates the left channel. The first word corresponds to the first instrument, and so on. yz{|}~Noisetracker/Soundtracker/Protracker Module Format -------------------------------------------------- Credits: Lars Hamre, Norman Lin, Mark Cox, Peter Hanning, Steinar Midtskogen, Marc Espie, and Thomas Meyer (All numbers below are given in decimal) 3rd Revision Module Format: # Bytes Description ------- ----------- 20 The module's title, padded with null (\0) bytes. Original Protracker wrote letters only in uppercase. (Data repeated for each sample 1-15 or 1-31) 22 Sample's name, padded with null bytes. If a name begins with a '#', it is assumed not to be an instrument name, and is probably a message. 2 Sample length in words (1 word = 2 bytes). The first word of the sample is overwritten by the tracker, so a length of 1 still means an empty sample. See below for sample format. 1 Lowest four bits represent a signed nibble (-8..7) which is the finetune value for the sample. Each finetune step changes the note 1/8th of a semitone. Implemented by switching to a different table of period-values for each finetune value. 1 Volume of sample. Legal values are 0..64. Volume is the linear difference between sound intensities. 64 is full volume, and the change in decibels can be calculated with 20*log10(Vol/64) 2 Start of sample repeat offset in words. Once the sample has been played all of the way through, it will loop if the repeat length is greater than one. It repeats by jumping to this position in the sample and playing for the repeat length, then jumping back to this position, and playing for the repeat length, etc. 2 Length of sample repeat in words. Only loop if greater than 1. (End of this sample's data.. each sample uses the same format and they are stored sequentially) N.B. All 2 byte lengths are stored with the Hi-byte first, as is usual on the Amiga (big-endian format). 1 Number of song positions (ie. number of patterns played throughout the song). Legal values are 1..128 1 Historically set to 127, but can be safely ignored. Noisetracker uses this byte to indicate restart position - this has been made redundant by the 'Position Jump' effect. 128 Pattern table: patterns to play in each song position (0..127) Each byte has a legal value of 0..63 (note the Protracker exception below). The highest value in this table is the highest pattern stored, no patterns above this value are stored. (4) The four letters "M.K." These are the initials of Unknown/D.O.C. who changed the format so it could handle 31 samples (sorry.. they were not inserted by Mahoney & Kaktus). Startrekker puts "FLT4" or "FLT8" here to indicate the # of channels. If there are more than 64 patterns, Protracker will put "M!K!" here. You might also find: "6CHN" or "8CHN" which indicate 6 or 8 channels respectively. If no letters are here, then this is the start of the pattern data, and only 15 samples were present. (Data repeated for each pattern:) 1024 Pattern data for each pattern (starting at 0). (Each pattern has same format and is stored in numerical order. See below for pattern format) (Data repeated for each sample:) xxxxxx The maximum size of a sample is 65535 words. Each sample is stored as a collection of bytes (length of a sample was given previously in the module). Each byte is a signed value (-128 ..127) which is the channel data. When a sample is played at a pitch of C2 (see below for pitches), about 8287 bytes of sample data are sent to the channel per second. Multiply the rate by the twelfth root of 2 (=1.0595) for each semitone increase in pitch eg. moving the pitch up 1 octave doubles the rate. The data is stored in the order it is played (eg. first byte is first byte played). The first word of the sample data is used to hold repeat information, and will overwrite any sample data that is there (but it is probably safer to set it to 0). The rate given above (8287) conveys an inaccurate picture of the module-format - in reality it is different for different Amigas. As the routines for playing were written to run off certain interrupts, for different Amiga computers the rate to send data to the channel will be different. For PAL machines the clock rate is 7093789.2 Hz and for NTSC machines it is 7159090.5 Hz. When the clock rate is divided by twice the period number for the pitch it will give the rate to send the data to the channel, eg. for a PAL machine sending a note at C2 (period 428), the rate is 7093789.2/856 ~= 8287.1369 (Each sample is stored sequentially) Pattern Format: Each pattern is divided into 64 divisions. By allocating different tempos for each pattern and spacing the notes across different amounts of divisions, different bar sizes can be accommodated. Each division contains the data for each channel (1..4) stored after each other. Channels 1 and 4 are on the left, and channels 2 and 3 are on the right. In the case of more channels: channels 5 and 8 are on the left, and channels 6 and 7 are on the right, etc. Each channel's data in the division has an identical format which consists of 2 words (4 bytes). Divisions are numbered 0..63. Each division may be divided into a number of ticks (see 'set speed' effect below). Channel Data: (the four bytes of channel data in a pattern division) 7654-3210 7654-3210 7654-3210 7654-3210 wwww xxxxxxxxxxxxxx yyyy zzzzzzzzzzzzzz wwwwyyyy (8 bits) is the sample for this channel/division xxxxxxxxxxxx (12 bits) is the sample's period (or effect parameter) zzzzzzzzzzzz (12 bits) is the effect for this channel/division If there is to be no new sample to be played at this division on this channel, then the old sample on this channel will continue, or at least be "remembered" for any effects. If the sample is 0, then the previous sample on that channel is used. Only one sample may play on a channel at a time, so playing a new sample will cancel an old one - even if there has been no data supplied for the new sample. Though, if you are using a "silence" sample (ie. no data, only used to turn off other samples) it is polite to set its default volume to 0. To determine what pitch the sample is to be played on, look up the period in a table, such as the one below (for finetune 0). If the period is 0, then the previous period on that channel is used. Unfortunately, some modules do not use these exact values. It is best to do a binary- search (unless you use the period as the offset of an array of notes.. expensive), especially if you plan to use periods outside the "standard" range. Periods are the internal representation of the pitch, so effects that alter pitch (eg. sliding) alter the period value (see "effects" below). C C# D D# E F F# G G# A A# B Octave 1: 856, 808, 762, 720, 678, 640, 604, 570, 538, 508, 480, 453 Octave 2: 428, 404, 381, 360, 339, 320, 302, 285, 269, 254, 240, 226 Octave 3: 214, 202, 190, 180, 170, 160, 151, 143, 135, 127, 120, 113 Octave 0:1712,1616,1525,1440,1357,1281,1209,1141,1077,1017, 961, 907 Octave 4: 107, 101, 95, 90, 85, 80, 76, 71, 67, 64, 60, 57 Octaves 0 and 4 are NOT standard, so don't rely on every tracker being able to play them, or even not crashing if being given them - it's just nice that if you can code it, to allow them to be read. Effects: Effects are written as groups of 4 bits, eg. 1871 = 7 * 256 + 4 * 16 + 15 = [7][4][15]. The high nibble (4 bits) usually determines the effect, but if it is [14], then the second nibble is used as well. [0]: Arpeggio Where [0][x][y] means "play note, note+x semitones, note+y semitones, then return to original note". The fluctuations are carried out evenly spaced in one pattern division. They are usually used to simulate chords, but this doesn't work too well. They are also used to produce heavy vibrato. A major chord is when x=4, y=7. A minor chord is when x=3, y=7. [1]: Slide up Where [1][x][y] means "smoothly decrease the period of current sample by x*16+y after each tick in the division". The ticks/division are set with the 'set speed' effect (see below). If the period of the note being played is z, then the final period will be z - (x*16 + y)*(ticks - 1). As the slide rate depends on the speed, changing the speed will change the slide. You cannot slide beyond the note B3 (period 113). [2]: Slide down Where [2][x][y] means "smoothly increase the period of current sample by x*16+y after each tick in the division". Similar to [1], but lowers the pitch. You cannot slide beyond the note C1 (period 856). [3]: Slide to note Where [3][x][y] means "smoothly change the period of current sample by x*16+y after each tick in the division, never sliding beyond current period". The period-length in this channel's division is a parameter to this effect, and hence is not played. Sliding to a note is similar to effects [1] and [2], but the slide will not go beyond the given period, and the direction is implied by that period. If x and y are both 0, then the old slide will continue. [4]: Vibrato Where [4][x][y] means "oscillate the sample pitch using a particular waveform with amplitude y/16 semitones, such that (x * ticks)/64 cycles occur in the division". The waveform is set using effect [14][4]. By placing vibrato effects on consecutive divisions, the vibrato effect can be maintained. If either x or y are 0, then the old vibrato values will be used. [5]: Continue 'Slide to note', but also do Volume slide Where [5][x][y] means "either slide the volume up x*(ticks - 1) or slide the volume down y*(ticks - 1), at the same time as continuing the last 'Slide to note'". It is illegal for both x and y to be non-zero. You cannot slide outside the volume range 0..64. The period-length in this channel's division is a parameter to this effect, and hence is not played. [6]: Continue 'Vibrato', but also do Volume slide Where [6][x][y] means "either slide the volume up x*(ticks - 1) or slide the volume down y*(ticks - 1), at the same time as continuing the last 'Vibrato'". It is illegal for both x and y to be non-zero. You cannot slide outside the volume range 0..64. [7]: Tremolo Where [7][x][y] means "oscillate the sample volume using a particular waveform with amplitude y*(ticks - 1), such that (x * ticks)/64 cycles occur in the division". The waveform is set using effect [14][7]. Similar to [4]. [8]: -- Unused -- [9]: Set sample offset Where [9][x][y] means "play the sample from offset x*4096 + y*256". The offset is measured in words. If no sample is given, yet one is still playing on this channel, it should be retriggered to the new offset using the current volume. [10]: Volume slide Where [10][x][y] means "either slide the volume up x*(ticks - 1) or slide the volume down y*(ticks - 1)". If both x and y are non-zero, then the y value is ignored (assumed to be 0). You cannot slide outside the volume range 0..64. [11]: Position Jump Where [11][x][y] means "stop the pattern after this division, and continue the song at song-position x*16+y". This shifts the 'pattern-cursor' in the pattern table (see above). Legal values for x*16+y are from 0 to 127. [12]: Set volume Where [12][x][y] means "set current sample's volume to x*16+y". Legal volumes are 0..64. [13]: Pattern Break Where [13][x][y] means "stop the pattern after this division, and continue the song at the next pattern at division x*10+y" (the 10 is not a typo). Legal divisions are from 0 to 63 (note Protracker exception above). [14][0]: Set filter on/off Where [14][0][x] means "set sound filter ON if x is 0, and OFF is x is 1". This is a hardware command for some Amigas, so if you don't understand it, it is better not to use it. [14][1]: Fineslide up Where [14][1][x] means "decrement the period of the current sample by x". The incrementing takes place at the beginning of the division, and hence there is no actual sliding. You cannot slide beyond the note B3 (period 113). [14][2]: Fineslide down Where [14][2][x] means "increment the period of the current sample by x". Similar to [14][1] but shifts the pitch down. You cannot slide beyond the note C1 (period 856). [14][3]: Set glissando on/off Where [14][3][x] means "set glissando ON if x is 1, OFF if x is 0". Used in conjunction with [3] ('Slide to note'). If glissando is on, then 'Slide to note' will slide in semitones, otherwise will perform the default smooth slide. [14][4]: Set vibrato waveform Where [14][4][x] means "set the waveform of succeeding 'vibrato' effects to wave #x". [4] is the 'vibrato' effect. Possible values for x are: 0 - sine (default) /\ /\ (2 cycles shown) 4 (without retrigger) \/ \/ 1 - ramp down | \ | \ 5 (without retrigger) \ | \ | 2 - square ,--, ,--, 6 (without retrigger) '--' '--' 3 - random: a random choice of one of the above. 7 (without retrigger) If the waveform is selected "without retrigger", then it will not be retriggered from the beginning at the start of each new note. [14][5]: Set finetune value Where [14][5][x] means "sets the finetune value of the current sample to the signed nibble x". x has legal values of 0..15, corresponding to signed nibbles 0..7,-8..-1 (see start of text for more info on finetune values). [14][6]: Loop pattern Where [14][6][x] means "set the start of a loop to this division if x is 0, otherwise after this division, jump back to the start of a loop and play it another x times before continuing". If the start of the loop was not set, it will default to the start of the current pattern. Hence 'loop pattern' cannot be performed across multiple patterns. Note that loops do not support nesting, and you may generate an infinite loop if you try to nest 'loop pattern's. [14][7]: Set tremolo waveform Where [14][7][x] means "set the waveform of succeeding 'tremolo' effects to wave #x". Similar to [14][4], but alters effect [7] - the 'tremolo' effect. [14][8]: -- Unused -- [14][9]: Retrigger sample Where [14][9][x] means "trigger current sample every x ticks in this division". If x is 0, then no retriggering is done (acts as if no effect was chosen), otherwise the retriggering begins on the first tick and then x ticks after that, etc. [14][10]: Fine volume slide up Where [14][10][x] means "increment the volume of the current sample by x". The incrementing takes place at the beginning of the division, and hence there is no sliding. You cannot slide beyond volume 64. [14][11]: Fine volume slide down Where [14][11][x] means "decrement the volume of the current sample by x". Similar to [14][10] but lowers volume. You cannot slide beyond volume 0. [14][12]: Cut sample Where [14][12][x] means "after the current sample has been played for x ticks in this division, its volume will be set to 0". This implies that if x is 0, then you will not hear any of the sample. If you wish to insert "silence" in a pattern, it is better to use a "silence"-sample (see above) due to the lack of proper support for this effect. [14][13]: Delay sample Where [14][13][x] means "do not start this division's sample for the first x ticks in this division, play the sample after this". This implies that if x is 0, then you will hear no delay, but actually there will be a VERY small delay. Note that this effect only influences a sample if it was started in this division. [14][14]: Delay pattern Where [14][14][x] means "after this division there will be a delay equivalent to the time taken to play x divisions after which the pattern will be resumed". The delay only relates to the interpreting of new divisions, and all effects and previous notes continue during delay. [14][15]: Invert loop Where [14][15][x] means "if x is greater than 0, then play the current sample's loop upside down at speed x". Each byte in the sample's loop will have its sign changed (negated). It will only work if the sample's loop (defined previously) is not too big. The speed is based on an internal table. [15]: Set speed Where [15][x][y] means "set speed to x*16+y". Though it is nowhere near that simple. Let z = x*16+y. Depending on what values z takes, different units of speed are set, there being two: ticks/division and beats/minute (though this one is only a label and not strictly true). If z=0, then what should technically happen is that the module stops, but in practice it is treated as if z=1, because there is already a method for stopping the module (running out of patterns). If z<=32, then it means "set ticks/division to z" otherwise it means "set beats/minute to z" (convention says that this should read "If z<32.." but there are some composers out there that defy conventions). Default values are 6 ticks/division, and 125 beats/minute (4 divisions = 1 beat). The beats/minute tag is only meaningful for 6 ticks/division. To get a more accurate view of how things work, use the following formula: 24 * beats/minute divisions/minute = ----------------- ticks/division Hence divisions/minute range from 24.75 to 6120, eg. to get a value of 2000 divisions/minute use 3 ticks/division and 250 beats/minute. If multiple "set speed" effects are performed in a single division, the ones on higher-numbered channels take precedence over the ones on lower-numbered channels. This effect has a large number of different implementations, but the one described here has the widest usage. N.B. This document should be fairly accurate now, but as the module format is more of an observation than a standard, a couple of effects cannot be relied upon to act exactly the same from tracker to tracker (especially if the tracker is not for the Amiga). It is probably better to use this document as a guide rather than as a hard-and-fast definition of the module format. Oh.. and yes, I would normally give bytes as hex values, but it is easier to understand a consistent notation. Andrew Scott (Adrenalin Software), INTERNET:ascott@tartarus.uwa.edu.au Author of MIDIMOD (MOD to MIDI converter), PTMID (MIDI to MOD converter) W!8Tool 221 ($DD) (NinjaTracker Player or NT) NTBootInit ($01DD) Parameters: The stack is not affected by this call. There are no input or output parameters. Errors: None An application must never make this call. NTStartUp ($02DD) Parameters: previous contents Stack before call: MemId: Word Stack after call : previous contents Errors: $DD01 NT already started up NTStartup initializes the NT. This call installs a sound interrupt driven task (using oscillator #30) that allows to change the m>x>t  8p, Tzbx#SW@usic tempo and handle the sound effects. Therefore, you should startup this tool just before playing a music and shut it down when it is finished if speed is critical for your application. NT is not compatible with other sequencer tools like SynthLab because it uses all the available oscillators. NTShutDown ($03DD) Parameters: The stack is not affected by this call. There are no input or output parameters. Errors: None NTShutdown stops the music, frees the memory allocated for the musics and stops the sound interrupts. NTVersion ($04DD) Parameters: previous contents Stack before call: space: Word previous contents Stack after call : VersionInfo: Word Errors: None Returns the version number of the NinjaTracker player. Example $0100 = 1.0. NTReset ($05DD) Parameters: The stack is not affected by this call. There are no input or output parameters. Errors: None An application must never make this call. NTStatus ($06DD) Parameters: previous contents Stack before call: space: Word previous contents Stack after call : Status: Word (Boolean; True if active) Errors: None Indicates whether the SoundTrack player is active. Returns True ($0001) if active or ($0000) else. NTLoadOneMusic ($09DD) Parameters: previous contents Stack before call: Filename: Pointer Stack after call : previous contents Errors: $DD02 NT not started up $DD04 Not a SoundSmith music. Loads the music and its wavebank. The wavebank must be created using the Save Sound file option (don't forget to set the file format to GS SoundSmith in the preferences dialog box) and must have the same name as the music and end with .W. Example: Music name= Alf Wavebank name= Alf.W Once the music is loaded, the wavebank is copied into the DOC ram and the memory it was using is freed. You should use this call when you just need to play a single music. Otherwise use the Batch call. NTPlayMusic ($0ADD) Parameters: previous contents Stack before call: LoopMode: Boolean Stack after call : previous contents Errors: $DD02 NT not started up $DD03 There is no initialized music. Plays the last selected music which is the last music loaded by NTLoadOneMusic or the one selected by NTSelectBatchMusic. LoopMode indicates if the music player should restart the music when it is finished ($0001 = True) or not ($0000 = False). Example: load and play a music that loops. In assembly language: pea ^FileName pea FileName ldx #$09DD jsl $E10000 ; _NTLoadOneMusic _Err pea $0001 ldx #$0ADD jsl $E10000 ; _NTPlayMusic _Err ... FileName str '1/MusicFile' In Pascal : NTLoadOneMusic('1/MusicFile'); NTPlayMusic(True); NTStopMusic ($0BDD) Parameters: The stack is not affected by this call. There are no input or output parameters. Errors: None Stops the music. NTGetEndOfMusic ($0CDD) Parameters: Stack before call: previous contents previous contents Stack after call : FinishedFlag: Word (Boolean) Errors: None Returns True ($0001) if music ended (even if it loops). NTAddToBatch ($0DDD) Parameters: previous contents Stack before call: Filename: Pointer BatchNb: Integer Stack after call : previous contents Errors: $DD02 NT not started up $DD05 There is already a music in BatchNb $DD06 Illegal BatchNb Loads a music and its wavebank in memory and gives it a reference number which must between 1 and 25. Unlike with NTLoadOneMusic, you will have to select a music using NTSelectBatch to play it. NTSelectBatch ($0EDD) Parameters: previous contents Stack before call: BatchNb: Integer Stack after call : previous contents Errors: $DD06 Illegal BatchNb $DD07 There is no music with BatchNb Selects the next music to play. NTSelectBatch stops the music if there is one playing and frees the memory allocated by NTLoadOneMusic if you used that call to play the music (however you should not mix calls to NTLoadOneMusic and NTAddToBatch). Example : Load and play two musics. In assembly language: pea ^FileName1 pea FileName1 pea #1 ; Music #1 ldx #$0CDD jsl $E10000 ; _NTAddToBatch _Err pea ^FileName2 pea FileName2 pea #2 ; Music #2 ldx #$0CDD jsl $E10000 ; _NTAddToBatch _Err pea #1 ldx #$0DDD ; _NTSelectBatch jsl $E10000 _Err pea #0 ; False ldx #$0ADD ; _NTPlayMusic jsl $E10000 _Err ; Play music #1 ]lp pea #0 ldx #$0CDD jsl $E10000 pla beq ]lp ; loop until the music ends. pea #2 ; select music #2 ldx #$0DDD ; _NTSelectBatch jsl $E10000 _Err pea #0 ; False ldx #$0ADD ; _NTPlayMusic jsl $E10000 _Err ; Play music #2 FileName1 str '1/Music1' Filename2 str '1/Music2' In Pascal : NTAddToBatch('1/Music1',1); NTAddToBatch('1/Music2',2); NTSelectBatch(1); NTPlayMusic(False); While not NTGetEndOfMusic; NTSelectBatch(2); NTPlayMusic(False); NTKillBatch ($0FDD) Parameters: previous contents Stack before call: BatchNb: Integer Stack after call : previous contents Errors: $DD02 NT not started up $DD06 Illegal BatchNb $DD07 There is no music with BatchNb Frees the memory allocated for the music BatchNb and removes it from the music list. If that music was playing, it stops it. If you set BatchNb to 0, all the musics are removed. NTGetPlayingMusic ($10DD) Parameters: Stack before call: previous contents previous contents Stack after call : MusicNb: Word Errors: None Returns -1 ($FFFF) if no music is playing, 0 if the music was loaded using NTLoadOneMusic or otherwise its BatchNum. NTPlayBatch ($11DD) Parameters: previous contents Stack before call: List: Pointer Stack after call : previous contents Errors: $DD02 NT not started up $DD08 Illegal sequence Allows to play a sequence of musics. Therefore you need to define a list of words (Integers) that contains the numbers of the musics to play. A list must end with a 0 ( End ) or -1 ($FFFF if you want the sequence to loop). Example : Play musics 1 and 2, repeat music 2, continue playing music 3, and start over. In assembly language : pea ^BatchList pea BatchList ldx #$11DD jsl $E10000 _Err BatchList da 1,2,2,3,$FFFF In Pascal, you must use a pointer to an Array of Integer. But you don't need to care about that since the TPtrTListe type has already been defined. Program Soundtrack; Use NT; Var Liste : TPtrTListe; Begin NTStartup(Id); New(Liste); ... NTAddToBatch('1/Music1',1); NTAddToBatch('1/Music2',2); NTAddToBatch('1/Music3',3); Liste^[1]:= 1; Liste^[2]:=2; Liste^[3]:=2; Liste^[4]:=3; Liste^[5]:=-1; NTPlayBatch(Liste); ... NTShutDown; End. NTGetTrackVu ($12DD) Parameters: Stack before call: previous contents previous contents Stack after call : VuMetre Table Address: Pointer Errors: None Returns the address in RAM of table containing 16-bit pseudo-volumes (values contained between $0000 and $00FF) for each of the used tracks and instruments. The $20 first values correspond to the volume of the 14 tracks (there are four unused bytes) and the $20 next ones to the volume of each instrument. The volume values are updated each time a new note is played. The table allows to draw on the screen VuMetres that show the volumes of the instruments or the tracks volume. See the demo program for more information. NTPauseMusic ($13DD) Parameters: The stack is not affected by this call. There are no input or output parameters. Errors: None Even if you don't believe it, this call stops the music... You can resume it by using NTContinueMusic. NTContinueMusic ($14DD) Parameters: The stack is not affected by this call. There are no input or output parameters. Errors: None Resumes a music where it had been paused using NTPauseMusic. %.  >                D$SONGOK1NNNNNNNNN &&&22&2&2&&22&&0$0$$0&&&22&2&2&&22&&5)5$$0&&2&222&222&222&&2222&22&220$202$$202&&2&222&222&222&&2222&22&225)252$$202&&&2&222&222&222&&&2222&22&&220$20&2$$202&&&2&222&222&222&&&2222&22&&225)25&2$$202&&&2&222&222&222&&&2222&22&&220$20&2$$202&&5$)22$0$220$2$20-2$2$4$2020024$2$0$22.4.20"2"24$2$0$224020020$24$2$2$22040202$0$2-23'2+'2"2$2$0$220$2$2002$2$0$220002$2$0$22..2"2"2$2$$2202020$2$2$$2200202$+$223'2-'2"2$2&5&2&224&25&2224&2&7&24227224&2&7&2420702$2$2&2&&2&2222222&2&2&8&22272222&&2725)2)2$72&2&5&2&220&22&2220&2&+&22222+&2&&220+02$2$2+&2&&2&2222222&2&2&&2222222&&225)2)2$2&2&&22&2&222&2&&22222&2&&22002$2$2&2&&2222222&2&2&&2222222&&225)2)2$2&2&&22&2&222&2&&22222&2&&22002$2$2&2&&2222222&2&2&&2222222&&225)2)2$2&2$$22$2$202$2$$22002$2$$22..2"2"2$2$$2202020$2$2$$2200202$$223'2'2"2$2$$22$2$202$2$$22002$2$$22..2"2"2$2$$2202020$2$2$$2200202$$223'2'2"2$2&5&224&25&2224&2&7&2224227&2&&2420702$2$427&2&&2222222&2&2&8&22272222&&2725)2)2$72&2&5&220&22&2220&2&&&22222&&2&&220&02$2$2&&2&&2222222&2&2&&2222222&&225)2)2$$2&2$0$220$2$20-2$2$4$2020024$2$0$22.4.20"2"24$2$00224020020$24$2$2$22040202$0$2-23'2+'2"2$2$0$220$2$2002$2$0$220002$2$0$22..2"2"2$2$$2&5$&2222222&22222&22022$22&2222222&22222&22522$22&2222222&22222&22022$22&2222222&22222&22522$22&52222222&22222&22022$22&2222222&222522&7225522$222&32222222&22222&22022$22&22222222&3222222&0225222$.22$02222022$22022$22.22"22$2222022$220022$2223022"-22$.2222022$22022$22.22"22$2-.-+-)&5&22&2&222&2&&22222&2&&22002$2$2&2&&2222222&2&2&&22252222&7&2255)2)2$22&2&3&22&2&222&2&&22222&2&&22002$2$2&2&&22222222&2&2&3&22222222&0&2252)2)2$.2&2$0$22$2$202$2$$22002$2$$22..2"2"2$2$$2202020$2$2$$22000202$2$2230'2'2"-2$2$.$22$2$202$2$$22002$2$$22..2"2"2$2$$2202020-$2$2$.$220-0202$+$223-'2'2")2$2&&&22&2&222&2&&22222&2&&22002$2$2&2&&2222222&2&2&&2222222&&225")2)2$$2&2&&&22&2&222&2&&22222&2&&22002$2$2&2&&2*JJz* *z*J* p* *@**JJz* *z*J* p* *  @* *JJJz*z *zJ*zJ* Jp*z *J@*z*JJJz*z *zJ*zJ* Jp*z *J@*z*JJJz*z *zJ*zJ* Jp*z *J@*z*JJJz*z *zJ*zJ* Jp*z *J@*z*JJJz*z *zJ*zJ* Jp*z *J@*z zzJzJP <0 <@` <pP<J 0J<zPz <`PJ 0J<P <0< `<pP <J@0J <zPz@> `pPJ <J`P <0 <` <P <J0J <zPz <`PJ0J< P<0<`<P<J0J<zpPz<`PJ>J` PJ <z 0 < ` < P,<J,0,<p,P,<,` P@0<PJ<z0<`< P<J 0 <pP,> `P@,< ` PJ<z 0 < ` < P<J 0,<pP <,`P@ 0,<PJ <z0<`<P<J0<pP<`P@>`P<0<`<P<J0J<zPz<`PJ0J<P<0<`<P<J0J<zPz>`PJ<J`P<0<`<P<J0J<zPz<`PJ0J<P<0<`<P<J0J<zPz<`PJ>J`P<0<`<P<J0J<zPz<`PJ0J<P<0<`<P<J0J<zPz>`PJ<J`P<0<`<P<J0J<zPz<`PJ0J<P<0<`<P<J0J<zPz<`PJ>J`P <@0p< `<pP <J|0J|<z Pz|<|` PJ|0J|< P<0<`<P<J@0J <zPzL> `PJL<J `pP<p0< `<pP<J 0J|<zPz <|`PJ 0J|<P <0<`<P<J0J<zPz<`PJ>J`P <0 <@` <pP<J 0J<zPz <`PJ 0J<P <0< `<pP <J@0J <zPz@> `pPJ <J`P <0 <` <P <J0J <zPz <`PJ0J< P zzJJ0<0<0<0<J0J<z0z<0<J0J<0<0<0<0<J0J<z0z<0<J0J<0<0<0<0<J0J<z0z<0<J0J<0<0<0<0<J0J<z0z<0<J0J<0 < 0 < 0 <0<J0J<z0z<0<J0J<0<0< 0 < 0 <J0J<zJ0zJ<z0z<J0J<p0 < 0 < 0 <0<J0J<z0z<0<J0J< 0 < 0 <@0 <0 <J@0J <zp0z <0 <Jp0J <0 < 0 < 0 <0<J0J<z0z<0<J0J<0<0< 0 < 0 <J0J<zJ0zJ<z0z<J0J<p0 < 0 < 0 <0<J0J<z0z<0<J0J< 0 @  @ p p P < 0 < ` <P<J0J<zPz<`PJ0J<P<0< ` < P <J0J<zJPzJ>z`zPJ<J`pP < 0 < ` <P<J0J<zPz<`PJ0J< P < 0 <@` <P <J@0J <zpPz <` PJp>J `P < 0 < ` <P<J0J<zPz<`PJ0J<P<0< ` < P <J0J<zJPzJ>z`zPJ<J`pP < 0 < ` <P<J0J<zPz<`PJ0J< P < 0 <@` <P <J@0J <zpPz <` PJp>J `pP< 0< `< P<J 0J<z Pz< `PJ 0J< P< 0< `< P<J 0J<z Pz>`PJ@<J`pP< 0< `< P<J 0J<z Pz< `PJ 0J< P  p     p      p      p      p      p      p        p    "      p         p    "     p     p   "  p  p "  p     p   "     p         p   "     p         p   "     p         p   "     p         p   "     p         p   "     p         p    "      p         p    "    p        p        p        p       0@ p       0 p           0@ p     0   p       0@ p       0 p           0@ p     0    0@ p   "    0 p            0@ p   " 0    p        0@ p   "    0 p            0@ p   " 0    p         p   "     p         p   "   A péX aݐl9Gul<F_N (hǃR)5NSpuùlcXLNA6 %1EVc]]]]\KA6%,Ki}ԵyL0)5EWd}̿}~mcXG6(, ##0,,,   %1NSd}˻zcB ,1Nfsϻ~~mmcXLNAE::%# ##0///////////?GRc]iuп~dB004NSdsѻ~~mrmmmmcfff[]]\\\\\\KP?::),,  ######0,,//////////?GRPa]srϻy~dV:#,KVds̿}KwmW]]]\\KPPPPNA:=:)/, ###0/?GS_ifprпé}~dV:#:EWpʹznp[_NGAEBBEEEFFBB599966+/+( #1/1=HMְͿùЛytxyV:RL,t׼l`UUU`rŦlU;));Urűrf``flxȼZ`O;2))28HUlżZ)@` W r\L 477?HHoЭp|D.&%$(_ǨH7w@0;_Ȭh/wzX[ls`g~p,GȩX_ȩtl93wxxKco`hzȴ̽tPp;v׸мxWdK4/% ?xp?x /€?H_Ҁ;p<@O`|lwSh?gԹH[rLCP_hgP_@pA_`%?W̔bSP0KwڐWѰ`#Oobe^h:>2)ORĚ`58,?_ʬwtcjS\@?goҸp$/_zhj8'gd]o}PER:I8MmodpdSb@3PgtgTg`_p*_H/Soqx`0+W`:IAWTZQJM_ywp:*'wn~D7N1_8MJSYF_t{ozdDH4OwFWxh('O]`EF$;opkpT*OxD7gxT69-5?odLSfD7yZB@?K_dPHMDFGڰhm|H/ID[ndg@7_gkdO3auJxyQmϻVdikG:TVBUgpfWRF;I]nlyr{pVXoɳ}hstʭnjornwtdaVPfx}IE|yyxw|~fW]cgZeeR_}wf{tTU~uzv{{qn~x|kop~yzz{zlm{}kp}{{|yxqw|zsuzqx}~|qyvyurpflwryxy~zxumlu{~x||~|}|wv{}zvv|~}{}~|}zz{|}uy`]qoevkp_yf\gjh  ?w W o@//@zHl?|}ŠاС`sH_0 7//((? ?D{ппЯPHO_0+'P5$0J ?{@W?k`_vp˜װ࿴רЙz`fw^VSkdP%hX @PKN('  " 0 + >  /##,?0'?8=K?ZSX9f_b_PwepMczH__LjƨϤ͐͢ة˴̧АʬĚУմֈp{ppguptKze`U[d?4WHP)@7$$   +<)09F6TbSXUvriiƺ±tynboc]_gaTUVXDHQR4A6O@:>?;D@86;,/??71IO@0:GCH5MNHFFYNOU^T]N[aZ\dkl^ttqntvwv{zzzx|tyx{~~}~~~|~}|~}|~|}~}z}|{{||z}|~|}}~|}~}~~}}~}~~~~~}}~~~|}}}~|~~~}}}~~}}}}~~~~~~|zzyx~}}~z~yjbv|qqYYlwglzyYxzZYn}vYYll~}Ylyt|zljZZOYˎYOOlZFzbbwYZ=}~zYYF>ll|vzvzwmY˓llYtv|x~pmZzYlZvdZvvzqyvv~vm}zjm}||vbTJ~JHlvlmZ}lewkZgbOZZllYT|mZZYlsldS|vJdb~v`YvdXllb}zmY~~vlbg`Gd}mg_qVd|t~dmvlbbzp}rdglv}mlyltm~}zqvemllr~rwmxvww|~lgflvzvrvtm~~}lvllllyvggw}ggxzzjt~~~~mh|ymvx|vqvrm~}zrp|zspvy~tzxv|~~q}~vszz~|vmwzvzp~~~|z~~~zq~~~}wqvszs|vrzqwzyzvztqwwv~|qt|x~zvw}~vv|xvy~wt|yvvx~}zzwyz}yx}xy}t}~}w||zwx|x~}}zzx~y}~zy}~~zy|zxyzy}z||yzzzy|~~|}y|z~z|zz~}}|zzy||~}z}|~|}|~||~|~~|~~||~~}~}}}|          $$ !"#$%&'()*+,-./0123456789:;<=>?@ABSONGOKNNNNNN!!9!9-9-!99-9-!!9!9-9-!99-9-!99+9+!99+9+!99+9+!99+9+!99&9&!99&9&!99&9&!99&9&!99(9(!99(9(!$$+9+!$9+$ $,0$-5$9)95)9-$$0$5)9-)9)$0-$0)9))9$$$)$-))9$)9&$)$-&9&&9)$0$-$2&9&&9-$/2$5&9-&92$-$5$9&95&97$+;$2+97+9/$$2$++9/+9&$/+$#+9&+9$$#$&+09+9($+$/(9((9+$/$/$4(9+(9/$-4$7(9/(97$+$;$4($/($0!!-09!09-409--0!$0949--09-00!!49!-09-09-4!$-0909-49--0!+09009+29++0!$0929++09+00!+9/09+29++!$/09209++09+/2!)29-29&29&)2!$-929&)29&-2!29)29&-9&2!$)29-29&229&)/!(/9+/9(09((/!$+909((/9(+/!&9+/9+/9+&!$+9+/9 &9,+0$!4!09!40$!40!20!29!0$$20$40+209+40+4$+0+209+40)22$2529&42$5242$59&42$&//$//9(-/$/2/9+/+/9+0-95995-9059-)09-09)$9)-)9$9&9)-9&)09-29&-/9259-2-9599597+9;297/92+9/&/9+#9&9#&099(9+/9(+/9/49+9/-9479/7+9;49/92-!$-!---4-!$-$-+4-$+2---$!$-2--$--!$-!----!$2--+4-+$2--$-4!$-2--$-2/$//++2/$+$/2$/4+/$$/)-/+$/---&$&-$+&--$0-$0-&$-0$-&$0-$-($0!-95)995)-!90)59-))!09-0)9)$!9)-))9$9&!9)&-9&&)!09-&29&&-!/925&9-2!-959&95&97!+9;2+97+/!92++9/+&!/9+#+9&!9#&+09+9(!9+/(9((+!/9/(49+(9/!-947(9/7!+9;4(9/(90$05$59)995)59-$-$0$05)59-)-9)$)-$-0)09)))9$$$$)$)-)-9$)$9&$&)$)-&-9&&&9)$)$-$-2&29&&&9-$-2$25&59-&-92$2$5$59&995&597$7;$;2+297+79/$/$2$2+++9/+/9&$&+$+#+#9&+&9$$#$#&+&9+9($(+$+/(/9(((9+$+$/$/4(49+(+9/$/4$47(79/(/97$7$;$;4(4$/(/@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@<@<@,@0,@<@<@P`@P@P@ P@ P0PP@ P@ P`@P@P@ P@ P0PP@` P@ P@P@P@ P@ P`0PP@ P@ P`@P@P@ P@ P`0PP@ P@ P`@P@P@ P@ P0PP@ P@ P`@P@P@ P@ P0PP@` P@ P@P@P@ P@ P`0PP@ P@ P`@P@P@ P@ P`0PP@0P@0P@PP,@P,@PP,@PP0P,P,@PP,@PP@P,@PP,@P,@P0PP,P,@P,@PP@PP,@PP,@P,@PP0P,P,@PP,@PP@P,@PP,@P,@P0PP,PP,@PP,@PP@PP,@PP,@P,@PP0P,P,@PP,@PP@P,@PP,@P,@P0PP,PP,@PP,@PP@PP,@PP,@P,@PP0P,P,@PP,@PP@P,@PP,@P,@P0P,@P,@P,@PP@`LP L`P@`PL`PLa LP@`P@`P@`P L`P@`LPL`P L`P@`P@aL`P @`P@`PL`P@` @`PLdP@PLP @`P@`LaP @P@P @P` PP PP PP PP` PP PP PP` P P PP PP` PP PP` PP PP` PP P P` PP PP PP PP` PP PP PP` P P PP PP` PP P P` PP PP` PP P `P@P@P@@`P@0@P@`P@`P@P@0PaP@PP@P@P@@@0`@@`@`@`@0`@`@@@@`@0@@`@`@@@0@`@@@@@0@@0`@`@0`0@`@0@`@0@`@0@0P` P@P P@P P@P P@P` PP@ PP PP@` P P P@P P@P` P@P P@P` PP@ PP` PP@ P@ P` PP@ P@P P@P P@P` PP@ PP PP@` P@ P PP@ P@P` P@P P@ P` PP@ PP` PP@ P@ PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P0P@P 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ @@II I0I II I0I II I0I II I0I GG G0G GG G0G '' '0' '' '0' 77 707 77 707 77 707 77 707 XX X0X XX X0X 88 808 88 808 IIIII IIIIII IIIIIGGGGGGGGGGG GGGGG7777777777777777XXXXXXXX88888888777777777777777788888888888888888888888888888888XXXXXXXXXXXXXXXXDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`cwurttsuqqqqqr{yixtsussysqqqqqsjswssussqsqqqqrsbwtsstsrgrqrqqsyzgwsstsshksrsrrshovsstsrPosrsrss]ststtrnAqsssssy]usrusrXAssssssicusrusqDAstssstXgtrsus`@BtutsswRktqsurH@CtutstpUosqtuh>ACuuuuuZVqsquuP>ADuuuuwPWsrquq@?BDsvvutNYsqru`>@CDqwwv`L[sqstH?ACEkwwwQL]sqsfB@ADE_xxxLL_rrsPAABDE]xyhKLcrrjABABDEWyyRKMgsrRBBBCEFQy}zKKPmspACBBDEFOyjJKSosXACBCDFFOzXIKYqqBACCDEFFO{LIK_r`?BCCDEFGOpHILgrE?CCDEEFHS`HJOmd=ACCDEFFHWPHIWqJ=BCCEEFFH_HHI_i=?BCCEFFGIwGHMkP=@CCDFFFHK`FHUl@>ACCDGFFIMLGH_X=?BCCEGFGJWFGMiB=@BBDFFEHKkFHY`==ABCEGFFILhFIeE@@BDFFFILs¿F_Z8>@CDFFFJLsSkI8<>>ACEFEHKO`dh89==?BDEFFIK]XkP6<=>@CDEFFJLoci<8<<>ACEFFHKOpi\5:<=@BDEGFIK[hiD6<<=@BDEFGJLiid58<<>ACDFFHKNsiP5:<ACDFHHKMhiD59:ABDFHIJLfo<49:<>ABDFIIKSew25:;=@ACEGJIL_c`26;;=@BCEHJJMic¿D38;<>ABDFIJKSlk@49;ABDGIKM_tje@9;<>ACDHIKNsw|heD:<ACFHIKNtKgiib=<>ADGHJLW`Kiijh==AEGHJL_CE_lmmo@>BFGHJLhCIgmmop=>DFGIKMHDNkmmpp=@EGHIK_CDUlmnpp=AEGHJL`DF_mooqm>CFHIKQHDIgmnpqhACFHIKkDERlnoqqdBEGHIM`DF[mopqq`BEGHJ_PEIfmopqpPCFHIKwxEFSmmpqqqIDGHIWdEG^mnprqqDEGHJoTELimoqrqpCEHISyHFWmmprqrdDFHIkjFIemmqrqsRDGHN}zÈ6P{NcpV|skwbs~eRsxhd{wpv]^XUMJKHFFILSV_eoxưqsg\SM@<5.+%"%)08ALW`ozȾsi^ULG6/'&'+98DMVZfp{ʿ{pkaXSJB:3-*!!(&027ADLS[clrv|xxvttrponkkhgedcaa``_\][[XXXWTWTTSSQQPSPPOMOMMOPQSUX\\aejpsx~Ŀ|tlhaZTOIC>92.)$!!%)-28>DIQV]dkrx~{xuspliheb`_~~}|{zzyzzz{|}}~~~~}|{zzzyyxyyyz{|~}{zyxxxxxyyyzzz{|~~~~~~yuomlou{|rkhhjkllkjlqxtf[WY^gid\XZbnx\EAFNV`dZKJS`oĻrF09CDHVaL6ETZjʾĿh=,49:BPZV,6LUdyͻkJ%,455CMU2'DM[mο|]/).0,9DLM3EO`qƺҽkM'*,*-9DL3 7DUctлӰi3+-+'0OWdwűʜK9:1.1>IT>(053@HXM&+7KTO[q²lbPB47AOY:$1>SOR]uڹsiUB4RaM$-?PSIQe]{Ĺ_B;@Yf8*/DTONRZY~װfDShb',?NVFQHHgШoIBYmC,0EQSHL>HwθwHHbo4,6HTMO?LWFL2=]}ɳõRUkT./DPWD>/Ap~ĠɿV[aI-6FTOA61H{ôızŎZ]^?,=MXF947[~͙\Rb6-CRX:42:myԥYT\+4GTN/40FywۡL]N';MY:.71U~||L^;,AQT(/74j~vU[&3IU@&32?yxZL$9MS.+7/V}x~ԗ^7'BPI#082evВX(-HO:"24=rpyؚE'5KG,)51I|vux~ܗ=%:I>'060X~ew{9(=B9#133djp{t1-<;7&4-;p[~ܶ^.+.12(2-Edl{ʪ[5/1<;::CUj~ʼW6-3B=B=N_s|ĻM2,8H=DEWh|yG00DHNOLZhx}SEJLRQS`m|{uOLNOUPXdr}kSRSTYU^iw}~hVTUWZXamy|gYYY[\[fq}~|{e[[\\\]it{}xd`__^``mw|ueba`^bcny}|rhedb`dgr{|}qjgecbfjt||}qligedhmv}}}~}rnkhffjox~}}{rnkifhkry}~zsomjgkntz~ytpnkimou{~zuqnkknpv|yurnmmpsx}xtqonoqsw|~yvrpoqquy~}xuqppqrvz~}yusrrrtx{|xttsrrtw{~{wvutssux{zwvutttvy|~zxwvutuwz||zywvutvwz}~{zywvutvx{~}|{yxwvvwy{}|{zyxvvwy|~~}|{zyxxyz}~~}}|{{yyyz{~}}}|{{{zyz{}~~}}||{{zz{{~~}}}||{{{z{{|~}}}}|||||||}~~~}}}||||{|}~}~}}}}}}||||}~~~~~~~}}}}||}~~~~~}}}|||||~~~~~~~~}}}}}}}~~~~~~}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~9Ugl`]eoGj`)~dv]~pJio~g~~\Wok{ooXxlqatvug|}b|Qzx{zu~rw|z~g}|qpyL||^{|}ozbwbV|1zv}|\fwswiz_Mbzlx{jqc}ngw||kriln{svvvqzp~xumplfxmor|qz}|}~{{~|q~s|~z~ov}}{v~~|t}tn}|}}~~uv{~}x}~}|~{yrx~~y}z}{v}}|ʀʁί˺рˀ耀£z{{zqu @P 9=-w FpH3΢:x/`>SAZavD3',:/E`ƒƌܨerU\/$iG5O S5ű돨ϻgPx=_r~ϱvwS BRϓx>E)o`ȰQ2l ^+:6z,^iRoۤf;Z /?!^hیkX? C! ,5@>&UԲiѫcD6(#f=9+>=onaؓ)7geZ{^>0I_P|wg|HKj}F67U(oko`gЬ~emksaKGJ9FBP,FkHXhԣz}pS[MlW&5ewp9vSTCIl3JSak"jq[zέqb5}(_qliH+1Dzs8c^rњ|b7-?4)grnd2 Q5PeT#_lA*,0y~}a5Bq`;vݿ\yx`VUe}֜^7!^;EftDzʛHsrqKE>CvPOdhh~taSrܼyrEO2mjZsskRDTJnƵɋf|fg;. '/6lsmvLpnU>*auhqq;ɑx?VrvV{vKjsTSHA_j|~rx{svoiwi_{]JMPbzÙhwy^hR|V09S2lbWAxyˉULuRZ]vcdTgeUrnxd^wutaqjgq~ztnvhC]}jdwsiZWLMopH_caMflvndt{\yZOjn_Z^`ef~ytf|e]mx~[l[VSL;LHM_`t`wNm~|lC]fA=}pm}i~xbawaqub0P^{g[Mq~^txiz{t|}ibXjd~ma}eWQM_|wxqZbKB.=KVy~~xxy}zyhegsni~y|xok`ee_w~{xnyogddbuO?ABCEGHu  #%'),.014679;=>?ACDFGIJLNOPQSTUWXYZ\\^_`abcdefggijklmnnppqrstuuvwxxyyz{{83578:;=>?@ABDDFGGIIJKLMNOPPQRSSTUVVWXXYYZZ[[' !#%'*,-013`K  #%'*,.02568:?@ACDEFGHIJKLMNOOPQRSTTUVVT  !#%(*,.6   #&'*,.12478;<>@BCEGIJLNOPRSUWXYZ\]^`abcdfggijklmnppqrstuU,,.0135689:<=>?@ACDEFGHIJKLMNNOPQRRSTUVVWXT !#&',mH "$')+.01468:<>?ACEGHJLNOQRTUWXY[]^``acdeggijklmopprsstvwN5478:;<>??ABDEFGGHILMMNOPPQRSTTUVWWYZZ[[\U$  #%(*,/149a¿e0 "%'*,.12578<=>ACEFHJKMOPQSTVWYZ[]^^`bbdefghijklmnnoqrrstuuvwxxyz{{{~ҵkVSSUVVWXYYZ[\\]^^_```abcccdeeeffgghhhhiii\D455555666666779:;=?@BDEFHIKLMOOQRTUW_tp\LEDFHIJLMNPQSTUVWXY[[]^__aaccdefgghiijklmmnnoopqrrrsstuuvvvwwxxxyyzz{{{||||}}~~|ussssttttuuuvvvvwwwxxxxxyyyyyzzzzz{{{{{{zvsppppppqqqqrsssttuuvvvwwwxxxyyyyzzz{{}     $ $00$$$$bcdefghijklmnopqrstuvwxyz{|}~SONGOKBNN@NN@NNN` N@ NNNNNNN 12$220202-2-0+0+-&-&+$+$&!&!$$!/$!$!!$&$&!)!)&+&+)-)-+0+0-2-2015052424525240402-2-0+0+-)-)+&+&),$)$&!&!$$!!!!$$!)!)$$$$)&)&$012$22202&20-20-&+0-+2&-+&2$+&$&!&$!&$!0/$!$2!&$!&$!&&)!&)2+&)+2-)+-&0+-0&2-02015025242&542542&04202-20-2+0-+&)-+)&&+)&0,$)&$2!&&$!$!&!!!2$02!&2)$2$22$0)&2&$$&2252220&2&2-20$2+22-!2&+-2$!&$2!$02$!&2$322!&$&2&2!$2)22&!2+)-2-!+$200-$2200&2552224&5&2224$20222!2-0-2+!-$2)+02&$)&2$0&22!&$&22!$2!22!2$!-2)!$$2$0)$2&0$&2)5'22$&)&2)2$222)!2'-2!'$2$02$$&2'322&'&2$2$222$!2'-2!'$2$0$20$&2)5'22$&)&2)2$222)!2'-2!'$2$02$$&2'022&'&2$2$222$!2'-2!'$2$0$20$&28522&&22$27225!20-2!0$25027$5&2637225&7&232$2/220!20-23!$200$230&245522&&22$222!2-2!$202$&2)022'&&2)2$2$22!2'-2$!$2$0$2'0&245522&&22$222!2-2!$202$&2322&&22$222!23-2!$20$2503&20522&&22$222!2-2!$202$&2022&&22$222!2-2!$20$20&2)5'22$&)&2)2$222)!2'-2!'$2$02$$&2'322&'&2$2$222$!2'-2!'$2$0$20$&2)5'22$&)&2)2$222)!2'-2!'$2$02$$&2'022&'&2$2$222$!2'2-2!2'$2$0$202$&2522&&2525$27225!268-2!7$287025$3&20322&3&2023$2-22.!2-2!$20$20&225&22&2&2&2$2222&!22-2&!$22&022$&&220022-&2&202-$22220!2-2-20!-$2200$2-02&245522&&22$222!2-2!$202$&2322&&22$222!23-2!$20$2507"2817.2"5"2.3"20.2"2.23"0"20.3"23.0$2-32.02$$20$202$2202$$2)0'02$$2'&2252220&2&2-)20$2+522-!2&+-2$!&$2!$02$!&2$322!&$&2&'2!$2)322&!2+)-2-!+$20-022$0"2512.24"5"22%.4"201.22"2-0.2+"-"2).+"2&.)$2$3&02!$$$2'0!$2!302!2$!-2)!$$2$0)$2&0$&22)225220&22)&2-2205$2+)22-!2&52+-2$)!2&$2!52$02)$2!&2$'2322!&2$'&2&22!3$2)'22&!2+32)-2-'!2+$2032-022'$20"25%221.24"25%"22.241"20%.22"2-120.2+%"2-"2)1.2+"2&%.2)$2$'2&302!$2$'$202!3$2!'02!2$32!-2)'!2$$2$302)$2&'02$&22)225220&22)&2-2205$2+)22-!2&52+-2$)!2&$2!52$02)$2!&2$'2322!&2$'&2&22!3$2)'22&!2+32)-2-'!2+$2032-022'$20"25%221.24"25%"22.241"20%.22"2-120.2+%"2-"2)1.2+"2&%.2)$2$'2&302!$2$'$202!3$2!'02!2$32!'-2)3!2$'$2$302)'$2&302$22&522)&2225&2&)22&25&2)22&225&2)22&2&522)&2)&2522&)22&222&2&22&2&222&22&222&2$22&&2)&2+2222&222&2&22&2&222&22&222&2&22&2$&222&22&2222&&222&22&2&2222&2222&&222&22&2&22&)22&2)22&2&'22)&2&2'22&)22&2)22&2&'22)&2)&2'22&)22&2)22&2&'22)&2&2'22&)22&2)22&2$'22&)&2)&2+'22)22&2)22&2&'22)&2&2'22&)22&2)22&2&'22)&2$&2'22&)22&22)22&&2'22)&22&2&22&222222&2)5222'&2&2$)20$2"522-!2+-2!&$2$02$!&23$22&$&2'2!$2 322&!2")-2$!+$2'-02)$0"2,12.2+"5"2)%.4"2'1.22"2$0.2""-"2 .+"2.)$23&02$$$2'0!$2302$!2!-2 !$$20)$20$&2)5222'&2&2$)20$2"522-!2+-2!&$2$02$!&23$22&$&2'2!$2 322&!2")-2$!+$2'-02)$0"2,12.2,","22%.,"2'1.2)"2-..2""2,."2).'&2,5+22)&,&2+)2)$2,522+!2)2-25!$25025$&2))22522'&22)&2$2205$2")22-!252+-2)!2&$252$02)$2!&2'2$322&2$'&222!3$2 '22&!2"32)-2$'!2+$2'32-02)'$20"2,%221.2+"25%"2).241"2'%.22"2$120.2"%"2-"2 1.2+"2%.2)$2'2&302$2$'$202!3$2'02$!232!-2 '!2$$2302)$2'02$&2))22522'&22)&2$2205$2")22-!252+-2)!2&$252$02)$2!&2'2$322&2$'&222!3$2 '22&!2"32)-2$'!2+$2'32-02)'$20"2,%221.2+"25%"2).241"2'%.22"2$120.2"%"2-"2 1.2+"2%.2)$2'2&302$2'$2&023$2'02&!232-2&'!2$2302&$2'02'22)5&2)5)5)z|z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z |zJ| z|Jz |z | z |*z |Jz |z |z*| z|z |z | z |*z |Jz |z |zJ| z|Jz |z | z |*z |Jz |z |z*| z|z |zP ܊ zS zS zS ?zZ ZzZ ZzZZzZ Z0zZ Z0zZ ZzZ ZzZ Z0zj jzj jzjjzj j0zj j0zj jzjjzj j0zZ ZzZ ZzZZzZ Z0zZ Z0zZ ZzZ ZzZ Z0zZ ZzZ ZzZZzZ Z0zZ Z0zZ ZzZZzZ Z0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z0j jj jj jj j0j j0j jj jj j0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z?Z ZZ ZZZZ Z0Z Z0Z ZЙZ ZZ Z0j jj jЙjjj j0j j0j jАjjj j0Z ZZ ZZZZ Z0Z Z0Z ZZ ZZ Z0Z ZZ ZМZZZ Z0Z Z0Z ZАZZZ Z0Z ZZ ZZZZ Z0Z Z0Z ZZ ZZ Z0j jj jjjj j0j j0j jjjj j0Z ZZ ZZZZ Z0Z Z0Z ZZ ZZ Z0Z ZZ ZZZZ Z0Z Z0Z ZZZZ Z0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z0j jj jj jj j0j j0j jj jj j0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z0Z ZZ ZZ ZZ ZZ ZZ ZZ Z0Z Z0Z ZZ ZЙZZZ Z0Z Z0Z ZМZ ZZ Z0j jj jМj jj j0j j0j jjjj j0zZ zZzZ ZЊZZZ zZ0zZ Z0Z ZzZ zZZ zZ0zZ zZzZ ZЊZZZ zZ0zZ Z0Z ZЌZZZ Z0Z ZZ ZZZZ Z0Z Z0Z ZZ ZZ Z0j jj jjjj j0j j0j jjjj j0j jj jjjj j0j j0j jАjjj jБj ܓjj jjjj j0j j0j jj jjj0zZ ZzZ ZzP zT 0zZ Z0zZ ZzZ ZzZ Z0zj jzj jz` zd 0zj j0zj jzj jzj j0zj jzj jz` zd 0zj j0zj jzjjzj j0zj jzj jz` zd 0zj j0zj jzjjzj j?zP Sz S0z SzS 0zS zS 0zS zS 0z` cz c0z czc 0zc zc 0zc zc 0z` cz c0z czc 0zc zc 0zc zc 0z` cz c0z czc 0zc zc 0zc zc 0zP Sz S0z SzS 0zS zS 0zS zS 0z` cz c0z czc 0zc zc 0zc zc 0z` cz c0z czc 0zc zc 0zc zc 0z` cz c0z czc zc ܊czc ܊czc܊czb ܊*0PJ  ** J *0J  *0* J<*0J ** J 0*J 0 **J<*0J** J *0J *0* J<*0J* z*zJ0 *zJz0* z*zJ< *?ZJ Z Z*Zj* ZJ Zj*0ZJ Z Z*0Zj* ZJ<Zj*0ZJ Z Z*Zj* ZJ Z0j*ZJ Z0 Z*Zj*ZJ<Zj*0ZJZZ*Zj* ZJ Zj*0ZJ Z Z*0Zj* ZJ<Zj*0ZJZZ* Zzj*zZJZ0 z  0Z ZZ ZP T 0Z Z0Z ZZ ZZ Z0j jj j` d 0j j0j jj jj j0j jj j` d 0j j0j jjjj j0j jj j` d 0j j0j jjjj j0Z ZZ ZP T 0Z Z0Z ZZ ZZ Z0j jj j` d 0j j0j jj jj j0j jj jЀ` d 0j j0j jjjj j0Z ZZ ZP  T Z Z0Z Z Z Z0Z ZP ܀S S0 SS 0S S 0S S 0` c c0 cc 0c c 0c c 0` c c0 cc 0c c 0c c 0` c c0 cc 0c c 0c c ?P S S SS 0S S S S 0` c c cc 0c c c c 0` c c cc 0c c c c 0` c cЀ cc 0c 0c < c܀ 0c P S \   7777777777777777GGGGGGGGGGGGGGGG7777777777777777777777777777777777777777077777777GGGGGG GG0GGGGGGGG77777777077777777777777 7707 0                     ((  3 33" "           ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` @(@@(@@@ @       (   0     0   (           (   0     0   ¢ ¢ ¢ ¢ ¢ ¢     0 ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ``(``@@@п԰`T,/79@?@3_{謿_ HOQ@?0GF07+?/H_ +?P|/F?[m`PԚϸohgh@Nh$(DhW@O7tQgЩπwO@O`?wp@H[@P/<L8?(70BW?Kzte{РȿyߟпఏڳɠȀ?аK_0_0`?H;8;( (,*03@ ?o`?p[Pg૳ϰ쐗sPTo}`7@W@9;8H2?^H3g ''?/ O ?0/_@ 'LS@ D1//PP0+UZR[`/kWȷϯֺӺШc_{@_pwo!H?twH\@_?*I`% <)40/@?@?@ ,0&'/PQY0OtdP_€mȟȫпМuoGB[|K`eS`HOP@_P+X > 00#(? 8&/\0R ?PFO`3=5kY4/_XWPZeAF?{PoPwD?ogg߸ɠpOdXfTV@(>WP_`Tg`7QP8740707P00/|(/_@,0#;8._X8IOjMZ_lfg{pgζϴؠșЈwpvaotpor`_gS`POs@-?P:A@Rpt|L@DJUflptvy}~~egkpv|xfmmv|z~lgZIRXw~|}|yC.U`˱|FFHIN;Rkpx|yVTXRBpvy|vYOTVkȷm`eefbLRTZ`gvTC04:>FvnY815LSFXv_adfhR|wp^\bghgmpsdkpseNP88=Cex~֙z|zJ:==CHMTY~ȲtTDIC,4=sgVLUw~mstw|~pqsv|~XRzhINRT[bhtêadF((;Z^ensv`RU>2*Umv„~e^bdgkVsx~|knpVV\akpppZTVZ_dgTOe˹|<688=CHNZ~}pZ^^VfdJRXrymknbMRDZlahpgkmqvy~~jkOUS;;>Cesxɼh^A>CDG408NgɘppnlRNG2:Ddy~mss~r~ty~lpqvx|v_ehetŹYHLMPU[`gnҲJGC.NTV_ekx~wxwwkTC*"AMkŦxejmppv~kehSNTXyqVNNOSVZ\FFOZ~ʱZUR77;>DJRv}~eskkngTl[bPNTZZb}z^_eflqv|ng;04B_bgpv|ĜxZ[\ZF@7",5UdԴkkTJORSS\bt_`brh~sssYZ\^bfkptfZbvʴzV>ACFLPV^lѴz_IhjkpeRY^fp^RB4<[jmrtx|lpzG8=Cfmpx~ƽ̠f__`aLCHIOUF=VgNLNOR>:Iejsvkwtejsevyx``dfknrw|xslgkllRRV[`gpг|SLmmmpVV\agnnpePVXZ`RYqv|~g_d[_mptzabeenrx||d`_b_FHLNTZ`gq֘rsttdO:1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@Dfzxnqx0K_@OгbWmj0 $ /?IWkzt´ndc`W_XT]bihRQ[fbXS]HG^PD:130( %4?HA;:8(-)*,5A4(**) )    (("$'$"#/8>?FDGOPSckheidcowljw{ro¼ztwsd]SMOQNLA;;8(($  $ % +HA<42488<:CIMMOPKOWYYZ]ckmnssvwuqlsw~}yvtqrpqwzvsrnlecmmjjooqprqryyuy}}~}}}y{zuwywy{{}xtpmkkkhghgmmlmrspgejjimosnoqrszzyzyzzy{}yy{|{{}~~{{{y{{xwyvuvuswywusoooqqpoonqsnoqqspoonkhigfmlkmlkqsuwzzz{{}{{zz{zzyvssvtsuvvwy{|{yywwvvwuvwxssrmkkgmmmlkgijgfgkjjfdcb_^a_[YWY][]\[\]beediilmqvwvw{|{{{{||yy{wvwyzywwuvupoqnkmqpoljkjfgggffb`]__][\\[Z[WUW[\ZYVWYXVW[ZZ[[_ababaaaadghijnqqssrrrsssw|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxicPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RwXXPPHH@@$$88dd``  00  $$((    !"#$%&'()*+,-./0123456789:;<=>?@ABCD***************************** * * * NinjaTracker Player * * * * based on * * * * SoundSmith Player v0.95 * * (c) 1990 * * * * Huibert AALBERS * * & * * Olivier GOGUEL. * * & * * Jesse Blue * * * ***************************** ORG $0f0000 *------------------------------- SonREG = $e1C03E SonDATA = $e1C03D SonCTRL = $e1C03C * Parms. bra Init_Sound Reference_Freq = $F0 ; Interrupt Frequence Music_File dlw $100000 ; Music Adr Wave dlw $120000 ; Wave Adr Nb_Track = 14 ; Nb defined Tracks Nb_PlayedTrack = 8 ; Nb played Tracks Init_Sound = * sei phb phk plb clc xce rep #$30 lng ;patch all wave ptrs lda Wave ;+2 clc adc #2 sta wpatch001+1 sep #$30 sht lda Wave+2 adc #0 sta wpatch001+3 rep #$30 lng lda Wave ;+0 sta wpatch002+1 sep #$30 sht lda Wave+2 sta wpatch002+3 rep #$30 lng lda Wave ;+$10022 clc adc #$0022 sta wpatch003+1 sep #$30 sht lda Wave+2 adc #$01 sta wpatch003+3 rep #$30 lng lda Wave ;+$1005e clc adc #$005e sta wpatch004+1 sep #$30 sht lda Wave+2 adc #$01 sta wpatch004+3 rep #$30 lng clc xce sep #$30 sht lda #%01100000 sta SonCTRL lda #0 sta $E1C03E sta $E1C03F rep #$10 x16 ldx #0 wpatch001 = * ]ICI ldal Wave+2,x sta SonDATA inx cpx #0 bne ]ICI stz Performing rep #$30 lng ;patch all pointers lda Music_File ;+6 clc adc #6 sta mpatch001+1 sta mpatch002+1 sta mpatch003+1 sta mpatch004+1 sep #$30 sht lda Music_File+2 adc #0 sta mpatch001+3 sta mpatch002+3 sta mpatch003+3 sta mpatch004+3 rep #$30 lng lda Music_File ;+470 clc adc #470 sta mpatch005+1 sta mpatch013+1 sep #$30 sht lda Music_File+2 adc #0 sta mpatch005+3 sta mpatch013+3 rep #$30 lng lda Music_File ;+472 clc adc #472 sta mpatch006+1 sta mpatch012+1 sta mpatch014+1 sep #$30 sht lda Music_File+2 adc #0 sta mpatch006+3 sta mpatch012+3 sta mpatch014+3 rep #$30 lng lda Music_File ;+8 clc adc #8 sta mpatch007+1 sep #$30 sht lda Music_File+2 adc #0 sta mpatch007+3 rep #$30 lng lda Music_File ;+0 sta mpatch008+1 sep #$30 sht lda Music_File+2 sta mpatch008+3 rep #$30 lng lda Music_File ;+2 clc adc #2 sta mpatch009+1 sep #$30 sht lda Music_File+2 adc #0 sta mpatch009+3 rep #$30 lng lda Music_File ;+3 clc adc #3 sta mpatch010+1 sep #$30 sht lda Music_File+2 adc #0 sta mpatch010+3 rep #$30 lng lda Music_File ;+600 clc adc #600 sta mpatch011+1 sep #$30 sht lda Music_File+2 adc #0 sta mpatch011+3 rep #$30 lng ldx #0 ]lp STZ Clear_Deb,X INX INX CPX #Clear_End-Clear_Deb bcc ]lp lda #$5c sta $e1002c phk phk pla and #$ff00 sta $e1002c+2 lda #SoundIRQrtn sta $e1002c+1 sep #$30 sht lda #$00 sta SonCTRL LDA #Reference_Freq STA Freq_L LDA #== i>==i>=i>=б(k0#0x<0)<i> =(kh8k xKH "hh;8[;i8"X"#.0<i>=== `<>?=0,.\܏, .0<*">+"=)<0""x+Xk xKxY[ F0<0)<᩾>===0,.  "H"|(+kkxk8" k Fx [dd+kx0#.0<0)<i>=i>=(`kkK [x݀i݀d݀_ : $&(*ܣ ) ;" 2$& :t$t&"  (*+  hhhk )  Hח  ) )::  h`K [x݂ ݂y݂s]: $&(*$t$&t& Fdd"r*t*H(t(H"Z " Fdd +hkK [x݀a F  : $&(*Ȁ݀-%HH" "+ hhkK [x݀Z F  ݀I݀D: $&(* H $&(*  +hkK [x݀a F dd ) M" " 4 :*" ! H "+ hhk K[x݂݂| #|")~"a(""ȷ) ")",Z%ȷ)$ȷ) $i ԩ#.+hkS U  hhkv x  hhkSONG ȷOK8$`` ` "" "Zd d"`$ڵHHtt"5hi` " `" H h8`HH H HH "hh " H" h8`" `0`<>?0x" )" i i  =  wiXez% i i"HH%h:iPh:i>%  iX~ w  w  ``` K0[0<)<>==)>JRz#J <0 )$=z#i>%=z#i>:%)= #Ll|#|"|"͈"L|"0 " )" |#|#Lv L~# |# ~#" |#)z"""JJJJ: Z%J# $#|# #^# )g )P|# "# |#"|# m|##" H)JJJJm#<;"h)m#<;" L |#" LH |#" |# # ڪ } hL 4 5 >C   )H)JJJ h)L hLH|# ##h##LH|# ##h##LI ## ##L )BH)  h)JJJ |# :$Z$ z$$## #kZ$:$|# ## #Q H|# h)$ $~# $* #0 ~# |# nm#&#"$I ###:$ ) < |# nm#&#" I ###:$ )  ) Ɂ#~#L|# z# <0 )ᮎ#==  H|# #:$h) )  |#  ##! )JJJ |#  ## H|# :$h) )  |#  ## )JJJ |#  ## H|# #h) )  |#  ##w )JJJ |#  ##W )"|# ## #:$5 )@  8 ?(" ):"?("~#Cz"8|# #B#z# <0 )ᮎ#== "L |# #B#~#"L |# z# <)==) =z#i>==) =|#" )JJJJ:͊"L# l#%#%)#j#)#|# z% # ##%#%)#j#)#|# z% # #|# ## $f#) ##) ##%#%) ## #j$#)#|# z%# #|# #~# |# nm#"n## %N#ʀ|# 8"J͎## 8"# X"J͎## X" <0 )ᭌ#==z#i >᭍#==z#i@>ᮎ#==z#i>᭄#=ᭈ#=z#i>ᭅ#=ᭉ#=z#i>ᭆ#=|# #I #=᭐# $|# #$#%#:% "|#|#Lv "i"("("@Ll("""~"i)" m " W##V|")~"(""ȷ) ")",Z%i #.0+(k60d͢HH" "퀽dd F0|#|#"LUJm|#m|#m|#|# "0) n}^#n#|# """|# z#<0 )᭘#==z#i >᭙#==L0|# #L #}"" #0"&# &#" #"0&# &#" #"n# |# z#<0 )᭘#==z#i >᭙#==Lb|# :$r$"y(n#z$}$@$ |# z#<0 )᭘#==z#i >᭙#== |# #B#8###N#}B#Ɂ#B#|# z#B#)x" <0 )x"==0|#|#L  #&*-148;?BFIMPTW[^beilpswz~ $0<HT`lx  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRSSSSSSSSSSTTTTTTTTTUUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZ[[[[[[[[[\\\\\\\\]]]]]]]]^^^^^^^^_______````````aaaaaaabbbbbbbcccccccdddddddeeeeeeeffffffggggggghhhhhhiiiiiiijjjjjjkkkkkkllllllmmmmmnnnnnnoooooopppppqqqqqqrrrrrssssstttttuuuuuvvvvvwwwwwxxxxxyyyyyzzzz{{{{{||||}}}}}~~~~      "#$%'()*,-.01245689;<=?@BCEFHJKMNPRSUWXZ\]_acefhjlnprtvxz|~  $(-16:?DINSX]bhmsy~dh@*\4Xz 8L`t(yQ=1)#(h(h( h (!h!!!                    >^<iW 5CFIM\v0 $.7:CHKNQZ]cfkqty~' '2ITgj, ,3>HSX]beilotw| !&+?=0i0i0ic 0ie 0iu 0iw 0i0i000i0i0i0i0iX0i0\,KKh).-0<>ṩ=0iXo i o i  oiXm)HH(h:iPh:d _X0k)W)  ,))Z ziѩ` `` K<)<>==)>JRJ <0 )<᭸i>4=᭸i>R=᭸i>p)= LP LV 0 Z ) L L    )JJJJ: J   )g )P   m H)JJJJm<;h)m<; L  LH    ڪhL?@IN%! )H)JJJ h)LhLH H8hLH Hh8LI8HL )BH) h)JJJ x8Hkx 8HQ H h)X X X*H0   md,XIH8x ) <  md,IH8x )  ) ɁL  <0 )<᭸i@> ==  H Hxh))  8!)JJJ 8 H xh))  8)JJJ 8 H Hh))  8w)JJJ 8W ) 8Hx5 )@  8? ):?C8  <0 )<᭸i@> == L L  <)<᭸i>==) =᭸i>==) =ᬺ )JJJJ:L  ) )   ) )     f) ) )   $)     m, Nʀ <0 )<᭸>==᭸i >==᭸i@> ==᭸i>==᭸i>==᭸i>=᭺ I =  4Rp L i@LP ) mm')) >0<0)<᜸i>=᭸8i>=᭸i0+k0L Jmmm 0) }  <0 )<᭸>==᭸i >==Lp 0 HL H},,H0,d d,H,0d d,H,  <0 )<᭸>==᭸i >==L  xr ,y}@  <0 )<᭸>==᭸i >==  8888N}Ɂ  ) <0 )<᭸i@>᭶==0L[  #&*-148;?BFIMPTW[^beilpswz~ $0<HT`lx  "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRSSSSSSSSSSTTTTTTTTTUUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZ[[[[[[[[[\\\\\\\\]]]]]]]]^^^^^^^^_______````````aaaaaaabbbbbbbcccccccdddddddeeeeeeeffffffggggggghhhhhhiiiiiiijjjjjjkkkkkkllllllmmmmmnnnnnnoooooopppppqqqqqqrrrrrssssstttttuuuuuvvvvvwwwwwxxxxxyyyyyzzzz{{{{{||||}}}}}~~~~      "#$%'()*,-.01245689;<=?@BCEFHJKMNPRSUWXZ\]_acefhjlnprtvxz|~  $(-16:?DINSX]bhmsy~dh@*\4Xz 8L`t(yQ=1)#&f&f&f&f                    >^<CONVERTEDv1 ' '*ARNESUNE.W99,ARNESUNE.SSMLv99+BLUEINTRO.WP  -BLUEINTRO.SSMn,vV  (CONRAD.W9  *CONRAD.SSMe   A péX aݐl9Gul<F_N (hǃR)5NSpuùlcXLNA6 %1EVc]]]]\KA6%,Ki}ԵyL0)5EWd}̿}~mcXG6(, ##0,,,   %1NSd}˻zcB ,1Nfsϻ~~mmcXLNAE::%# ##0///////////?GRc]iuп~dB004NSdsѻ~~mrmmmmcfff[]]\\\\\\KP?::),,  ######0,,//////////?GRPa]srϻy~dV:#,KVds̿}KwmW]]]\\KPPPPNA:=:)/, ###0/?GS_ifprпé}~dV:#:EWpʹznp[_NGAEBBEEEFFBB599966+/+( #1/1=HMְͿùЛytxyV:RL,t׼l`UUU`rŦlU;));Urűrf``flxȼZ`O;2))28HUlżZ)@` W r\L 477?HHoЭp|D.&%$(_ǨH7w@0;_Ȭh/wzX[ls`g~p,GȩX_ȩtl93wxxKco`hzȴ̽tPp;v׸мxWdK4/% ?xp?x /€?H_Ҁ;p<@O`|lwSh?gԹH[rLCP_hgP_@pA_`%?W̔bSP0KwڐWѰ`#Oobe^h:>2)ORĚ`58,?_ʬwtcjS\@?goҸp$/_zhj8'gd]o}PER:I8MmodpdSb@3PgtgTg`_p*_H/Soqx`0+W`:IAWTZQJM_ywp:*'wn~D7N1_8MJSYF_t{ozdDH4OwFWxh('O]`EF$;opkpT*OxD7gxT69-5?odLSfD7yZB@?K_dPHMDFGڰhm|H/ID[ndg@7_gkdO3auJxyQmϻVdikG:TVBUgpfWRF;I]nlyr{pVXoɳ}hstʭnjornwtdaVPfx}IE|yyxw|~fW]cgZeeR_}wf{tTU~uzv{{qn~x|kop~yzz{zlm{}kp}{{|yxqw|zsuzqx}~|qyvyurpflwryxy~zxumlu{~x||~|}|wv{}zvv|~}{}~|}zz{|}uy`]qoevkp_yf\gjh  ?w W o@//@zHl?|}ŠاС`sH_0 7//((? ?D{ппЯPHO_0+'P5$0J ?{@W?k`_vp˜װ࿴רЙz`fw^VSkdP%hX @PKN('  " 0 + >  /##,?0'?8=K?ZSX9f_b_PwepMczH__LjƨϤ͐͢ة˴̧АʬĚУմֈp{ppguptKze`U[d?4WHP)@7$$   +<)09F6TbSXUvriiƺ±tynboc]_gaTUVXDHQR4A6O@:>?;D@86;,/??71IO@0:GCH5MNHFFYNOU^T]N[aZ\dkl^ttqntvwv{zzzx|tyx{~~}~~~|~}|~}|~|}~}z}|{{||z}|~|}}~|}~}~~}}~}~~~~~}}~~~|}}}~|~~~}}}~~}}}}~~~~~~|zzyx~}}~z~yjbv|qqYYlwglzyYxzZYn}vYYll~}Ylyt|zljZZOYˎYOOlZFzbbwYZ=}~zYYF>ll|vzvzwmY˓llYtv|x~pmZzYlZvdZvvzqyvv~vm}zjm}||vbTJ~JHlvlmZ}lewkZgbOZZllYT|mZZYlsldS|vJdb~v`YvdXllb}zmY~~vlbg`Gd}mg_qVd|t~dmvlbbzp}rdglv}mlyltm~}zqvemllr~rwmxvww|~lgflvzvrvtm~~}lvllllyvggw}ggxzzjt~~~~mh|ymvx|vqvrm~}zrp|zspvy~tzxv|~~q}~vszz~|vmwzvzp~~~|z~~~zq~~~}wqvszs|vrzqwzyzvztqwwv~|qt|x~zvw}~vv|xvy~wt|yvvx~}zzwyz}yx}xy}t}~}w||zwx|x~}}zzx~y}~zy}~~zy|zxyzy}z||yzzzy|~~|}y|z~z|zz~}}|zzy||~}z}|~|}|~||~|~~|~~||~~}~}}}|          $$  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOSONGOK1NNNNNNNNN &&&22&2&2&&22&&0$0$$0&&&22&2&2&&22&&5)5$$0&&2&222&222&222&&2222&22&220$202$$202&&2&222&222&222&&2222&22&225)252$$202&&&2&222&222&222&&&2222&22&&220$20&2$$202&&&2&222&222&222&&&2222&22&&225)25&2$$202&&&2&222&222&222&&&2222&22&&220$20&2$$202&&5$)22$0$220$2$20-2$2$4$2020024$2$0$22.4.20"2"24$2$0$224020020$24$2$2$22040202$0$2-23'2+'2"2$2$0$220$2$2002$2$0$220002$2$0$22..2"2"2$2$$2202020$2$2$$2200202$+$223'2-'2"2$2&5&2&224&25&2224&2&7&24227224&2&7&2420702$2$2&2&&2&2222222&2&2&8&22272222&&2725)2)2$72&2&5&2&220&22&2220&2&+&22222+&2&&220+02$2$2+&2&&2&2222222&2&2&&2222222&&225)2)2$2&2&&22&2&222&2&&22222&2&&22002$2$2&2&&2222222&2&2&&2222222&&225)2)2$2&2&&22&2&222&2&&22222&2&&22002$2$2&2&&2222222&2&2&&2222222&&225)2)2$2&2$$22$2$202$2$$22002$2$$22..2"2"2$2$$2202020$2$2$$2200202$$223'2'2"2$2$$22$2$202$2$$22002$2$$22..2"2"2$2$$2202020$2$2$$2200202$$223'2'2"2$2&5&224&25&2224&2&7&2224227&2&&2420702$2$427&2&&2222222&2&2&8&22272222&&2725)2)2$72&2&5&220&22&2220&2&&&22222&&2&&220&02$2$2&&2&&2222222&2&2&&2222222&&225)2)2$$2&2$0$220$2$20-2$2$4$2020024$2$0$22.4.20"2"24$2$00224020020$24$2$2$22040202$0$2-23'2+'2"2$2$0$220$2$2002$2$0$220002$2$0$22..2"2"2$2$$2&5$&2222222&22222&22022$22&2222222&22222&22522$22&2222222&22222&22022$22&2222222&22222&22522$22&52222222&22222&22022$22&2222222&222522&7225522$222&32222222&22222&22022$22&22222222&3222222&0225222$.22$02222022$22022$22.22"22$2222022$220022$2223022"-22$.2222022$22022$22.22"22$2-.-+-)&5&22&2&222&2&&22222&2&&22002$2$2&2&&2222222&2&2&&22252222&7&2255)2)2$22&2&3&22&2&222&2&&22222&2&&22002$2$2&2&&22222222&2&2&3&22222222&0&2252)2)2$.2&2$0$22$2$202$2$$22002$2$$22..2"2"2$2$$2202020$2$2$$22000202$2$2230'2'2"-2$2$.$22$2$202$2$$22002$2$$22..2"2"2$2$$2202020-$2$2$.$220-0202$+$223-'2'2")2$2&&&22&2&222&2&&22222&2&&22002$2$2&2&&2222222&2&2&&2222222&&225")2)2$$2&2&&&22&2&222&2&&22222&2&&22002$2$2&2&&2*JJz* *z*J* p* *@**JJz* *z*J* p* *  @* *JJJz*z *zJ*zJ* Jp*z *J@*z*JJJz*z *zJ*zJ* Jp*z *J@*z*JJJz*z *zJ*zJ* Jp*z *J@*z*JJJz*z *zJ*zJ* Jp*z *J@*z*JJJz*z *zJ*zJ* Jp*z *J@*z zzJzJP <0 <@` <pP<J 0J<zPz <`PJ 0J<P <0< `<pP <J@0J <zPz@> `pPJ <J`P <0 <` <P <J0J <zPz <`PJ0J< P<0<`<P<J0J<zpPz<`PJ>J` PJ <z 0 < ` < P,<J,0,<p,P,<,` P@0<PJ<z0<`< P<J 0 <pP,> `P@,< ` PJ<z 0 < ` < P<J 0,<pP <,`P@ 0,<PJ <z0<`<P<J0<pP<`P@>`P<0<`<P<J0J<zPz<`PJ0J<P<0<`<P<J0J<zPz>`PJ<J`P<0<`<P<J0J<zPz<`PJ0J<P<0<`<P<J0J<zPz<`PJ>J`P<0<`<P<J0J<zPz<`PJ0J<P<0<`<P<J0J<zPz>`PJ<J`P<0<`<P<J0J<zPz<`PJ0J<P<0<`<P<J0J<zPz<`PJ>J`P <@0p< `<pP <J|0J|<z Pz|<|` PJ|0J|< P<0<`<P<J@0J <zPzL> `PJL<J `pP<p0< `<pP<J 0J|<zPz <|`PJ 0J|<P <0<`<P<J0J<zPz<`PJ>J`P <0 <@` <pP<J 0J<zPz <`PJ 0J<P <0< `<pP <J@0J <zPz@> `pPJ <J`P <0 <` <P <J0J <zPz <`PJ0J< P zzJJ0<0<0<0<J0J<z0z<0<J0J<0<0<0<0<J0J<z0z<0<J0J<0<0<0<0<J0J<z0z<0<J0J<0<0<0<0<J0J<z0z<0<J0J<0 < 0 < 0 <0<J0J<z0z<0<J0J<0<0< 0 < 0 <J0J<zJ0zJ<z0z<J0J<p0 < 0 < 0 <0<J0J<z0z<0<J0J< 0 < 0 <@0 <0 <J@0J <zp0z <0 <Jp0J <0 < 0 < 0 <0<J0J<z0z<0<J0J<0<0< 0 < 0 <J0J<zJ0zJ<z0z<J0J<p0 < 0 < 0 <0<J0J<z0z<0<J0J< 0 @  @ p p P < 0 < ` <P<J0J<zPz<`PJ0J<P<0< ` < P <J0J<zJPzJ>z`zPJ<J`pP < 0 < ` <P<J0J<zPz<`PJ0J< P < 0 <@` <P <J@0J <zpPz <` PJp>J `P < 0 < ` <P<J0J<zPz<`PJ0J<P<0< ` < P <J0J<zJPzJ>z`zPJ<J`pP < 0 < ` <P<J0J<zPz<`PJ0J< P < 0 <@` <P <J@0J <zpPz <` PJp>J `pP< 0< `< P<J 0J<z Pz< `PJ 0J< P< 0< `< P<J 0J<z Pz>`PJ@<J`pP< 0< `< P<J 0J<z Pz< `PJ 0J< P  p     p      p      p      p      p      p        p    "      p         p    "     p     p   "  p  p "  p     p   "     p         p   "     p         p   "     p         p   "     p         p   "     p         p   "     p         p    "      p         p    "    p        p        p        p       0@ p       0 p           0@ p     0   p       0@ p       0 p           0@ p     0    0@ p   "    0 p            0@ p   " 0    p        0@ p   "    0 p            0@ p   " 0    p         p   "     p         p   " QRSTUVWXYZ[\]^_`abcdefghijklmcwurttsuqqqqqr{yixtsussysqqqqqsjswssussqsqqqqrsbwtsstsrgrqrqqsyzgwsstsshksrsrrshovsstsrPosrsrss]ststtrnAqsssssy]usrusrXAssssssicusrusqDAstssstXgtrsus`@BtutsswRktqsurH@CtutstpUosqtuh>ACuuuuuZVqsquuP>ADuuuuwPWsrquq@?BDsvvutNYsqru`>@CDqwwv`L[sqstH?ACEkwwwQL]sqsfB@ADE_xxxLL_rrsPAABDE]xyhKLcrrjABABDEWyyRKMgsrRBBBCEFQy}zKKPmspACBBDEFOyjJKSosXACBCDFFOzXIKYqqBACCDEFFO{LIK_r`?BCCDEFGOpHILgrE?CCDEEFHS`HJOmd=ACCDEFFHWPHIWqJ=BCCEEFFH_HHI_i=?BCCEFFGIwGHMkP=@CCDFFFHK`FHUl@>ACCDGFFIMLGH_X=?BCCEGFGJWFGMiB=@BBDFFEHKkFHY`==ABCEGFFILhFIeE@@BDFFFILs¿F_Z8>@CDFFFJLsSkI8<>>ACEFEHKO`dh89==?BDEFFIK]XkP6<=>@CDEFFJLoci<8<<>ACEFFHKOpi\5:<=@BDEGFIK[hiD6<<=@BDEFGJLiid58<<>ACDFFHKNsiP5:<ACDFHHKMhiD59:ABDFHIJLfo<49:<>ABDFIIKSew25:;=@ACEGJIL_c`26;;=@BCEHJJMic¿D38;<>ABDFIJKSlk@49;ABDGIKM_tje@9;<>ACDHIKNsw|heD:<ACFHIKNtKgiib=<>ADGHJLW`Kiijh==AEGHJL_CE_lmmo@>BFGHJLhCIgmmop=>DFGIKMHDNkmmpp=@EGHIK_CDUlmnpp=AEGHJL`DF_mooqm>CFHIKQHDIgmnpqhACFHIKkDERlnoqqdBEGHIM`DF[mopqq`BEGHJ_PEIfmopqpPCFHIKwxEFSmmpqqqIDGHIWdEG^mnprqqDEGHJoTELimoqrqpCEHISyHFWmmprqrdDFHIkjFIemmqrqsRDGHN}zÈ6P{NcpV|skwbs~eRsxhd{wpv]^XUMJKHFFILSV_eoxưqsg\SM@<5.+%"%)08ALW`ozȾsi^ULG6/'&'+98DMVZfp{ʿ{pkaXSJB:3-*!!(&027ADLS[clrv|xxvttrponkkhgedcaa``_\][[XXXWTWTTSSQQPSPPOMOMMOPQSUX\\aejpsx~Ŀ|tlhaZTOIC>92.)$!!%)-28>DIQV]dkrx~{xuspliheb`_~~}|{zzyzzz{|}}~~~~}|{zzzyyxyyyz{|~}{zyxxxxxyyyzzz{|~~~~~~yuomlou{|rkhhjkllkjlqxtf[WY^gid\XZbnx\EAFNV`dZKJS`oĻrF09CDHVaL6ETZjʾĿh=,49:BPZV,6LUdyͻkJ%,455CMU2'DM[mο|]/).0,9DLM3EO`qƺҽkM'*,*-9DL3 7DUctлӰi3+-+'0OWdwűʜK9:1.1>IT>(053@HXM&+7KTO[q²lbPB47AOY:$1>SOR]uڹsiUB4RaM$-?PSIQe]{Ĺ_B;@Yf8*/DTONRZY~װfDShb',?NVFQHHgШoIBYmC,0EQSHL>HwθwHHbo4,6HTMO?LWFL2=]}ɳõRUkT./DPWD>/Ap~ĠɿV[aI-6FTOA61H{ôızŎZ]^?,=MXF947[~͙\Rb6-CRX:42:myԥYT\+4GTN/40FywۡL]N';MY:.71U~||L^;,AQT(/74j~vU[&3IU@&32?yxZL$9MS.+7/V}x~ԗ^7'BPI#082evВX(-HO:"24=rpyؚE'5KG,)51I|vux~ܗ=%:I>'060X~ew{9(=B9#133djp{t1-<;7&4-;p[~ܶ^.+.12(2-Edl{ʪ[5/1<;::CUj~ʼW6-3B=B=N_s|ĻM2,8H=DEWh|yG00DHNOLZhx}SEJLRQS`m|{uOLNOUPXdr}kSRSTYU^iw}~hVTUWZXamy|gYYY[\[fq}~|{e[[\\\]it{}xd`__^``mw|ueba`^bcny}|rhedb`dgr{|}qjgecbfjt||}qligedhmv}}}~}rnkhffjox~}}{rnkifhkry}~zsomjgkntz~ytpnkimou{~zuqnkknpv|yurnmmpsx}xtqonoqsw|~yvrpoqquy~}xuqppqrvz~}yusrrrtx{|xttsrrtw{~{wvutssux{zwvutttvy|~zxwvutuwz||zywvutvwz}~{zywvutvx{~}|{yxwvvwy{}|{zyxvvwy|~~}|{zyxxyz}~~}}|{{yyyz{~}}}|{{{zyz{}~~}}||{{zz{{~~}}}||{{{z{{|~}}}}|||||||}~~~}}}||||{|}~}~}}}}}}||||}~~~~~~~}}}}||}~~~~~}}}|||||~~~~~~~~}}}}}}}~~~~~~}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~9Ugl`]eoGj`)~dv]~pJio~g~~\Wok{ooXxlqatvug|}b|Qzx{zu~rw|z~g}|qpyL||^{|}ozbwbV|1zv}|\fwswiz_Mbzlx{jqc}ngw||kriln{svvvqzp~xumplfxmor|qz}|}~{{~|q~s|~z~ov}}{v~~|t}tn}|}}~~uv{~}x}~}|~{yrx~~y}z}{v}}|ʀʁί˺рˀ耀£z{{zqu @P 9=-w FpH3΢:x/`>SAZavD3',:/E`ƒƌܨerU\/$iG5O S5ű돨ϻgPx=_r~ϱvwS BRϓx>E)o`ȰQ2l ^+:6z,^iRoۤf;Z /?!^hیkX? C! ,5@>&UԲiѫcD6(#f=9+>=onaؓ)7geZ{^>0I_P|wg|HKj}F67U(oko`gЬ~emksaKGJ9FBP,FkHXhԣz}pS[MlW&5ewp9vSTCIl3JSak"jq[zέqb5}(_qliH+1Dzs8c^rњ|b7-?4)grnd2 Q5PeT#_lA*,0y~}a5Bq`;vݿ\yx`VUe}֜^7!^;EftDzʛHsrqKE>CvPOdhh~taSrܼyrEO2mjZsskRDTJnƵɋf|fg;. '/6lsmvLpnU>*auhqq;ɑx?VrvV{vKjsTSHA_j|~rx{svoiwi_{]JMPbzÙhwy^hR|V09S2lbWAxyˉULuRZ]vcdTgeUrnxd^wutaqjgq~ztnvhC]}jdwsiZWLMopH_caMflvndt{\yZOjn_Z^`ef~ytf|e]mx~[l[VSL;LHM_`t`wNm~|lC]fA=}pm}i~xbawaqub0P^{g[Mq~^txiz{t|}ibXjd~ma}eWQM_|wxqZbKB.=KVy~~xxy}zyhegsni~y|xok`ee_w~{xnyogddbuO?ABCEGHu  #%'),.014679;=>?ACDFGIJLNOPQSTUWXYZ\\^_`abcdefggijklmnnppqrstuuvwxxyyz{{83578:;=>?@ABDDFGGIIJKLMNOPPQRSSTUVVWXXYYZZ[[' !#%'*,-013`K  #%'*,.02568:?@ACDEFGHIJKLMNOOPQRSTTUVVT  !#%(*,.6   #&'*,.12478;<>@BCEGIJLNOPRSUWXYZ\]^`abcdfggijklmnppqrstuU,,.0135689:<=>?@ACDEFGHIJKLMNNOPQRRSTUVVWXT !#&',mH "$')+.01468:<>?ACEGHJLNOQRTUWXY[]^``acdeggijklmopprsstvwN5478:;<>??ABDEFGGHILMMNOPPQRSTTUVWWYZZ[[\U$  #%(*,/149a¿e0 "%'*,.12578<=>ACEFHJKMOPQSTVWYZ[]^^`bbdefghijklmnnoqrrstuuvwxxyz{{{~ҵkVSSUVVWXYYZ[\\]^^_```abcccdeeeffgghhhhiii\D455555666666779:;=?@BDEFHIKLMOOQRTUW_tp\LEDFHIJLMNPQSTUVWXY[[]^__aaccdefgghiijklmmnnoopqrrrsstuuvvvwwxxxyyzz{{{||||}}~~|ussssttttuuuvvvvwwwxxxxxyyyyyzzzzz{{{{{{zvsppppppqqqqrsssttuuvvvwwwxxxyyyyzzz{{}     $ $00$$$$opqrstuvwxyz{|}~SONGOKNNNNNN!!9!9-9-!99-9-!!9!9-9-!99-9-!99+9+!99+9+!99+9+!99+9+!99&9&!99&9&!99&9&!99&9&!99(9(!99(9(!$$+9+!$9+$ $,0$-5$9)95)9-$$0$5)9-)9)$0-$0)9))9$$$)$-))9$)9&$)$-&9&&9)$0$-$2&9&&9-$/2$5&9-&92$-$5$9&95&97$+;$2+97+9/$$2$++9/+9&$/+$#+9&+9$$#$&+09+9($+$/(9((9+$/$/$4(9+(9/$-4$7(9/(97$+$;$4($/($0!!-09!09-409--0!$0949--09-00!!49!-09-09-4!$-0909-49--0!+09009+29++0!$0929++09+00!+9/09+29++!$/09209++09+/2!)29-29&29&)2!$-929&)29&-2!29)29&-9&2!$)29-29&229&)/!(/9+/9(09((/!$+909((/9(+/!&9+/9+/9+&!$+9+/9 &9,+0$!4!09!40$!40!20!29!0$$20$40+209+40+4$+0+209+40)22$2529&42$5242$59&42$&//$//9(-/$/2/9+/+/9+0-95995-9059-)09-09)$9)-)9$9&9)-9&)09-29&-/9259-2-9599597+9;297/92+9/&/9+#9&9#&099(9+/9(+/9/49+9/-9479/7+9;49/92-!$-!---4-!$-$-+4-$+2---$!$-2--$--!$-!----!$2--+4-+$2--$-4!$-2--$-2/$//++2/$+$/2$/4+/$$/)-/+$/---&$&-$+&--$0-$0-&$-0$-&$0-$-($0!-95)995)-!90)59-))!09-0)9)$!9)-))9$9&!9)&-9&&)!09-&29&&-!/925&9-2!-959&95&97!+9;2+97+/!92++9/+&!/9+#+9&!9#&+09+9(!9+/(9((+!/9/(49+(9/!-947(9/7!+9;4(9/(90$05$59)995)59-$-$0$05)59-)-9)$)-$-0)09)))9$$$$)$)-)-9$)$9&$&)$)-&-9&&&9)$)$-$-2&29&&&9-$-2$25&59-&-92$2$5$59&995&597$7;$;2+297+79/$/$2$2+++9/+/9&$&+$+#+#9&+&9$$#$#&+&9+9($(+$+/(/9(((9+$+$/$/4(49+(+9/$/4$47(79/(/97$7$;$;4(4$/(/@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@,@,@,@,,@,@@<@<@,@0,@<@<@P`@P@P@ P@ P0PP@ P@ P`@P@P@ P@ P0PP@` P@ P@P@P@ P@ P`0PP@ P@ P`@P@P@ P@ P`0PP@ P@ P`@P@P@ P@ P0PP@ P@ P`@P@P@ P@ P0PP@` P@ P@P@P@ P@ P`0PP@ P@ P`@P@P@ P@ P`0PP@0P@0P@PP,@P,@PP,@PP0P,P,@PP,@PP@P,@PP,@P,@P0PP,P,@P,@PP@PP,@PP,@P,@PP0P,P,@PP,@PP@P,@PP,@P,@P0PP,PP,@PP,@PP@PP,@PP,@P,@PP0P,P,@PP,@PP@P,@PP,@P,@P0PP,PP,@PP,@PP@PP,@PP,@P,@PP0P,P,@PP,@PP@P,@PP,@P,@P0P,@P,@P,@PP@`LP L`P@`PL`PLa LP@`P@`P@`P L`P@`LPL`P L`P@`P@aL`P @`P@`PL`P@` @`PLdP@PLP @`P@`LaP @P@P @P` PP PP PP PP` PP PP PP` P P PP PP` PP PP` PP PP` PP P P` PP PP PP PP` PP PP PP` P P PP PP` PP P P` PP PP` PP P `P@P@P@@`P@0@P@`P@`P@P@0PaP@PP@P@P@@@0`@@`@`@`@0`@`@@@@`@0@@`@`@@@0@`@@@@@0@@0`@`@0`0@`@0@`@0@`@0@0P` P@P P@P P@P P@P` PP@ PP PP@` P P P@P P@P` P@P P@P` PP@ PP` PP@ P@ P` PP@ P@P P@P P@P` PP@ PP PP@` P@ P PP@ P@P` P@P P@ P` PP@ PP` PP@ P@ PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P P@P PP@PP@P@P P@P PP0PPP@P0P@P 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ @@II I0I II I0I II I0I II I0I GG G0G GG G0G '' '0' '' '0' 77 707 77 707 77 707 77 707 XX X0X XX X0X 88 808 88 808 IIIII IIIIII IIIIIGGGGGGGGGGG GGGGG7777777777777777XXXXXXXX88888888777777777777777788888888888888888888888888888888XXXXXXXXXXXXXXXXп԰`T,/79@?@3_{謿_ HOQ@?0GF07+?/H_ +?P|/F?[m`PԚϸohgh@Nh$(DhW@O7tQgЩπwO@O`?wp@H[@P/<L8?(70BW?Kzte{РȿyߟпఏڳɠȀ?аK_0_0`?H;8;( (,*03@ ?o`?p[Pg૳ϰ쐗sPTo}`7@W@9;8H2?^H3g ''?/ O ?0/_@ 'LS@ D1//PP0+UZR[`/kWȷϯֺӺШc_{@_pwo!H?twH\@_?*I`% <)40/@?@?@ ,0&'/PQY0OtdP_€mȟȫпМuoGB[|K`eS`HOP@_P+X > 00#(? 8&/\0R ?PFO`3=5kY4/_XWPZeAF?{PoPwD?ogg߸ɠpOdXfTV@(>WP_`Tg`7QP8740707P00/|(/_@,0#;8._X8IOjMZ_lfg{pgζϴؠșЈwpvaotpor`_gS`POs@-?P:A@Rpt|L@DJUflptvy}~~egkpv|xfmmv|z~lgZIRXw~|}|yC.U`˱|FFHIN;Rkpx|yVTXRBpvy|vYOTVkȷm`eefbLRTZ`gvTC04:>FvnY815LSFXv_adfhR|wp^\bghgmpsdkpseNP88=Cex~֙z|zJ:==CHMTY~ȲtTDIC,4=sgVLUw~mstw|~pqsv|~XRzhINRT[bhtêadF((;Z^ensv`RU>2*Umv„~e^bdgkVsx~|knpVV\akpppZTVZ_dgTOe˹|<688=CHNZ~}pZ^^VfdJRXrymknbMRDZlahpgkmqvy~~jkOUS;;>Cesxɼh^A>CDG408NgɘppnlRNG2:Ddy~mss~r~ty~lpqvx|v_ehetŹYHLMPU[`gnҲJGC.NTV_ekx~wxwwkTC*"AMkŦxejmppv~kehSNTXyqVNNOSVZ\FFOZ~ʱZUR77;>DJRv}~eskkngTl[bPNTZZb}z^_eflqv|ng;04B_bgpv|ĜxZ[\ZF@7",5UdԴkkTJORSS\bt_`brh~sssYZ\^bfkptfZbvʴzV>ACFLPV^lѴz_IhjkpeRY^fp^RB4<[jmrtx|lpzG8=Cfmpx~ƽ̠f__`aLCHIOUF=VgNLNOR>:Iejsvkwtejsevyx``dfknrw|xslgkllRRV[`gpг|SLmmmpVV\agnnpePVXZ`RYqv|~g_d[_mptzabeenrx||d`_b_FHLNTZ`gq֘rsttdO:1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@DfzxnqwwqS>1 'jڹعg= 1@Dfzxnqx0K_@OгbWmj0 $ /?IWkzt´ndc`W_XT]bihRQ[fbXS]HG^PD:130( %4?HA;:8(-)*,5A4(**) )    (("$'$"#/8>?FDGOPSckheidcowljw{ro¼ztwsd]SMOQNLA;;8(($  $ % +HA<42488<:CIMMOPKOWYYZ]ckmnssvwuqlsw~}yvtqrpqwzvsrnlecmmjjooqprqryyuy}}~}}}y{zuwywy{{}xtpmkkkhghgmmlmrspgejjimosnoqrszzyzyzzy{}yy{|{{}~~{{{y{{xwyvuvuswywusoooqqpoonqsnoqqspoonkhigfmlkmlkqsuwzzz{{}{{zz{zzyvssvtsuvvwy{|{yywwvvwuvwxssrmkkgmmmlkgijgfgkjjfdcb_^a_[YWY][]\[\]beediilmqvwvw{|{{{{||yy{wvwyzywwuvupoqnkmqpoljkjfgggffb`]__][\\[Z[WUW[\ZYVWYXVW[ZZ[[_ababaaaadghijnqqssrrrsssw|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxic|t]$ %hͬ⼑cmu:&)F]XƼtzxicPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQPRQOLD>9)*&$$$$$$$$$$$$$0S]gtĽijǺ{xhkc^RI71)&!$$$$$%''%$'(4134>BFCDEHIQOR^at{xww~}ykt{z||twmqnnqs{xzwm^_XTXPRQQwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YwsH ڲv( 8YqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RqvGްx6RwXXPPHH@@$$88dd``  00  $$((    !"#$%&'()*+,-./01234567SONGOKBNN@NN@NNN` N@ NNNNNNN 12$220202-2-0+0+-&-&+$+$&!&!$$!/$!$!!$&$&!)!)&+&+)-)-+0+0-2-2015052424525240402-2-0+0+-)-)+&+&),$)$&!&!$$!!!!$$!)!)$$$$)&)&$012$22202&20-20-&+0-+2&-+&2$+&$&!&$!&$!0/$!$2!&$!&$!&&)!&)2+&)+2-)+-&0+-0&2-02015025242&542542&04202-20-2+0-+&)-+)&&+)&0,$)&$2!&&$!$!&!!!2$02!&2)$2$22$0)&2&$$&2252220&2&2-20$2+22-!2&+-2$!&$2!$02$!&2$322!&$&2&2!$2)22&!2+)-2-!+$200-$2200&2552224&5&2224$20222!2-0-2+!-$2)+02&$)&2$0&22!&$&22!$2!22!2$!-2)!$$2$0)$2&0$&2)5'22$&)&2)2$222)!2'-2!'$2$02$$&2'322&'&2$2$222$!2'-2!'$2$0$20$&2)5'22$&)&2)2$222)!2'-2!'$2$02$$&2'022&'&2$2$222$!2'-2!'$2$0$20$&28522&&22$27225!20-2!0$25027$5&2637225&7&232$2/220!20-23!$200$230&245522&&22$222!2-2!$202$&2)022'&&2)2$2$22!2'-2$!$2$0$2'0&245522&&22$222!2-2!$202$&2322&&22$222!23-2!$20$2503&20522&&22$222!2-2!$202$&2022&&22$222!2-2!$20$20&2)5'22$&)&2)2$222)!2'-2!'$2$02$$&2'322&'&2$2$222$!2'-2!'$2$0$20$&2)5'22$&)&2)2$222)!2'-2!'$2$02$$&2'022&'&2$2$222$!2'2-2!2'$2$0$202$&2522&&2525$27225!268-2!7$287025$3&20322&3&2023$2-22.!2-2!$20$20&225&22&2&2&2$2222&!22-2&!$22&022$&&220022-&2&202-$22220!2-2-20!-$2200$2-02&245522&&22$222!2-2!$202$&2322&&22$222!23-2!$20$2507"2817.2"5"2.3"20.2"2.23"0"20.3"23.0$2-32.02$$20$202$2202$$2)0'02$$2'&2252220&2&2-)20$2+522-!2&+-2$!&$2!$02$!&2$322!&$&2&'2!$2)322&!2+)-2-!+$20-022$0"2512.24"5"22%.4"201.22"2-0.2+"-"2).+"2&.)$2$3&02!$$$2'0!$2!302!2$!-2)!$$2$0)$2&0$&22)225220&22)&2-2205$2+)22-!2&52+-2$)!2&$2!52$02)$2!&2$'2322!&2$'&2&22!3$2)'22&!2+32)-2-'!2+$2032-022'$20"25%221.24"25%"22.241"20%.22"2-120.2+%"2-"2)1.2+"2&%.2)$2$'2&302!$2$'$202!3$2!'02!2$32!-2)'!2$$2$302)$2&'02$&22)225220&22)&2-2205$2+)22-!2&52+-2$)!2&$2!52$02)$2!&2$'2322!&2$'&2&22!3$2)'22&!2+32)-2-'!2+$2032-022'$20"25%221.24"25%"22.241"20%.22"2-120.2+%"2-"2)1.2+"2&%.2)$2$'2&302!$2$'$202!3$2!'02!2$32!'-2)3!2$'$2$302)'$2&302$22&522)&2225&2&)22&25&2)22&225&2)22&2&522)&2)&2522&)22&222&2&22&2&222&22&222&2$22&&2)&2+2222&222&2&22&2&222&22&222&2&22&2$&222&22&2222&&222&22&2&2222&2222&&222&22&2&22&)22&2)22&2&'22)&2&2'22&)22&2)22&2&'22)&2)&2'22&)22&2)22&2&'22)&2&2'22&)22&2)22&2$'22&)&2)&2+'22)22&2)22&2&'22)&2&2'22&)22&2)22&2&'22)&2$&2'22&)22&22)22&&2'22)&22&2&22&222222&2)5222'&2&2$)20$2"522-!2+-2!&$2$02$!&23$22&$&2'2!$2 322&!2")-2$!+$2'-02)$0"2,12.2+"5"2)%.4"2'1.22"2$0.2""-"2 .+"2.)$23&02$$$2'0!$2302$!2!-2 !$$20)$20$&2)5222'&2&2$)20$2"522-!2+-2!&$2$02$!&23$22&$&2'2!$2 322&!2")-2$!+$2'-02)$0"2,12.2,","22%.,"2'1.2)"2-..2""2,."2).'&2,5+22)&,&2+)2)$2,522+!2)2-25!$25025$&2))22522'&22)&2$2205$2")22-!252+-2)!2&$252$02)$2!&2'2$322&2$'&222!3$2 '22&!2"32)-2$'!2+$2'32-02)'$20"2,%221.2+"25%"2).241"2'%.22"2$120.2"%"2-"2 1.2+"2%.2)$2'2&302$2$'$202!3$2'02$!232!-2 '!2$$2302)$2'02$&2))22522'&22)&2$2205$2")22-!252+-2)!2&$252$02)$2!&2'2$322&2$'&222!3$2 '22&!2"32)-2$'!2+$2'32-02)'$20"2,%221.2+"25%"2).241"2'%.22"2$120.2"%"2-"2 1.2+"2%.2)$2'2&302$2'$2&023$2'02&!232-2&'!2$2302&$2'02'22)5&2)5)5)z|z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z |zJ| z|Jz |z | z |*z |Jz |z |z*| z|z |z | z |*z |Jz |z |zJ| z|Jz |z | z |*z |Jz |z |z*| z|z |zP ܊ zS zS zS ?zZ ZzZ ZzZZzZ Z0zZ Z0zZ ZzZ ZzZ Z0zj jzj jzjjzj j0zj j0zj jzjjzj j0zZ ZzZ ZzZZzZ Z0zZ Z0zZ ZzZ ZzZ Z0zZ ZzZ ZzZZzZ Z0zZ Z0zZ ZzZZzZ Z0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z0j jj jj jj j0j j0j jj jj j0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z?Z ZZ ZZZZ Z0Z Z0Z ZЙZ ZZ Z0j jj jЙjjj j0j j0j jАjjj j0Z ZZ ZZZZ Z0Z Z0Z ZZ ZZ Z0Z ZZ ZМZZZ Z0Z Z0Z ZАZZZ Z0Z ZZ ZZZZ Z0Z Z0Z ZZ ZZ Z0j jj jjjj j0j j0j jjjj j0Z ZZ ZZZZ Z0Z Z0Z ZZ ZZ Z0Z ZZ ZZZZ Z0Z Z0Z ZZZZ Z0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z0j jj jj jj j0j j0j jj jj j0Z ZZ ZZ ZZ Z0Z Z0Z ZZ ZZ Z0Z ZZ ZZ ZZ ZZ ZZ ZZ Z0Z Z0Z ZZ ZЙZZZ Z0Z Z0Z ZМZ ZZ Z0j jj jМj jj j0j j0j jjjj j0zZ zZzZ ZЊZZZ zZ0zZ Z0Z ZzZ zZZ zZ0zZ zZzZ ZЊZZZ zZ0zZ Z0Z ZЌZZZ Z0Z ZZ ZZZZ Z0Z Z0Z ZZ ZZ Z0j jj jjjj j0j j0j jjjj j0j jj jjjj j0j j0j jАjjj jБj ܓjj jjjj j0j j0j jj jjj0zZ ZzZ ZzP zT 0zZ Z0zZ ZzZ ZzZ Z0zj jzj jz` zd 0zj j0zj jzj jzj j0zj jzj jz` zd 0zj j0zj jzjjzj j0zj jzj jz` zd 0zj j0zj jzjjzj j?zP Sz S0z SzS 0zS zS 0zS zS 0z` cz c0z czc 0zc zc 0zc zc 0z` cz c0z czc 0zc zc 0zc zc 0z` cz c0z czc 0zc zc 0zc zc 0zP Sz S0z SzS 0zS zS 0zS zS 0z` cz c0z czc 0zc zc 0zc zc 0z` cz c0z czc 0zc zc 0zc zc 0z` cz c0z czc zc ܊czc ܊czc܊czb ܊*0PJ  ** J *0J  *0* J<*0J ** J 0*J 0 **J<*0J** J *0J *0* J<*0J* z*zJ0 *zJz0* z*zJ< *?ZJ Z Z*Zj* ZJ Zj*0ZJ Z Z*0Zj* ZJ<Zj*0ZJ Z Z*Zj* ZJ Z0j*ZJ Z0 Z*Zj*ZJ<Zj*0ZJZZ*Zj* ZJ Zj*0ZJ Z Z*0Zj* ZJ<Zj*0ZJZZ* Zzj*zZJZ0 z  0Z ZZ ZP T 0Z Z0Z ZZ ZZ Z0j jj j` d 0j j0j jj jj j0j jj j` d 0j j0j jjjj j0j jj j` d 0j j0j jjjj j0Z ZZ ZP T 0Z Z0Z ZZ ZZ Z0j jj j` d 0j j0j jj jj j0j jj jЀ` d 0j j0j jjjj j0Z ZZ ZP  T Z Z0Z Z Z Z0Z ZP ܀S S0 SS 0S S 0S S 0` c c0 cc 0c c 0c c 0` c c0 cc 0c c 0c c 0` c c0 cc 0c c 0c c ?P S S SS 0S S S S 0` c c cc 0c c c c 0` c c cc 0c c c c 0` c cЀ cc 0c 0c < c܀ 0c P S \   7777777777777777GGGGGGGGGGGGGGGG7777777777777777777777777777777777777777077777777GGGGGG GG0GGGGGGGG77777777077777777777777 7707 0                     ((  3 33" "           ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` @(@@(@@@ @       (   0     0   (           (   0     0   ¢ ¢ ¢ ¢ ¢ ¢     0 ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ` ` ` `  ` ` `` ``(``@@@9:;<=>?@ABCDEFGHIJKLLG ASTARTUP$#   / XXύX?klmnÍoL) "6L'?"(0`6708" = ***)<JJH !h穖tp% ;"Z/݀>">"' 1" 7"5).莀/ ;" " 6" >" 1"6"$ "g"" !"""""IջLYL 8!9 詍` "  4"/pŠϠŠà͠ӠàԠŠH06172839h` z97L75v^e ?/( ze?L[LLɍ$?`?e ɍɥAH93827160hH46576879h`,C fL ɍ f ,S0 @ pLޭBDEF޾ p  ޾ p($ذ z (0 k( L?ԦʚLeةީe s  pL f,FLk,DL,C0$3 >@ Ɉ 3ɾꩈL(3ɾ;Ƀ kB94 l% fʽ  ՚,S` H $݅3`(l8L3LX>(Ƀ,`3,G0]ɾ g` H`پ_پ p _پ׾`>( p۾m׾) W)ʩ@`ɾ>(O puȾ ɾ-O ͱc־JjjjZ[ (`O>0O z POپھ p WH־Ǿh۰8L־JjjjZ[ɾ)Ⱦ8 AOLӜ ҤLLX>(F`־ؾپھ׾` fɄ KDEF zLp z pL[ fKɍKL?`  zLp@3 @LtJ)s@J f 򟰸 p`H? hth?,E30ɍФ3 E3HD F3 Ʉ%h3 fM E  pLthɍLL3`3,A0s0% Ipn HpnI:L ؅303Lm8n933LҞAAJL ةޘг uv $ 8LʞeЌ>?@`>?@`Ba8` K  LK ֟ ֟  KK`JJJJ8`轶K)` #hhLJپھ pHJh` H!h߻g޻tػٻpứ `޻ٻtػp߻8nٻniػtpiٻٻtụs໅o8ễpڻiۻniݻi>j?kܻڻ߻>ٻ׻pڻ׻Ii׻׻߻߻ڻ l 1ڻۻ `>i>?Ek?!>Q>>>ڻۻ `` `>ڻ ۻ `e>>?ܻ?ܻ>?Emn(>e>ܻȱ>e?>Q>ؠ> ie>>?`׻;ػ=:<ٻ:<=;`׻׻mػ;>:8o>oȑ>ppȑ>> :oݻp` HKpn͵ @p;=po:i>?Ek?>Q>> L>ܻ `/ e>>?ܻ?ޱ>ȥj>>m⻑>` !im8i仍nj廍ki滥lj绥oS ST$I2 U)VJ :T)`l8`a HbIJhjǾȾɾ p٭b=a<I/q)im@^ʈ0 L/S 51-m@ʈ0 L٨/` E չ5TLG-T VV H$ZA@Lĩ8 `߹-U -W b WW)JJ HT$K j0IDK H H5K 0.)K H  XK`LGLl  HK m Y ܩ8jK` X,, ( 5 ` X,  `  X, `)a)_`0:8 `)H " H 媢h} I hm   8`0 :AG8 `) 媰 ` . . `SI-SRR¸)RʈS UT`RSSS8L `yGLɳ 8`H b kXklmno YhjWVL58 L tֻʆt "ֻtl e DޭVJ P eօ L s򩣍eS3 zLG # e $L? b 4 kimljn`  pg׾mȾXhؾmɾYtѮȾɾ YX`8g Ie f`8` P־ǾҾ,G0C ж=W)_`ZV"׾پӾؾھ pD`Y׾ؾOW)Ⱦɾʾ pD`8`W)CB) 5W) )W)@! pZ}ȾȾ󰹩 p` ־ǾҾ,G 8`׾ؾ ж p ධۥs׾tؾE` ( о(־Ǿ,G 8`_`W)H־JjjjhZ[ p̭ зLKǾ  . .8   ۭ (8 mȾȾmɾɾʾiʾ` Lpl8l:/0sНsƬƀ#(ZZV4G_0=( A P FjL\5p-e9ABSAVERIFYBLOADELETEBYECATALOGOPENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND Hѫ5 FڬB :hQ|Q@@ -!S    !C- !ABELSDFRV@@ !$(19@EӱüϠž(+@ABCDEFGHIKLMNPSV     T[fouu~ՠٯ* PWN*]ĿNTz @n6VC/+A>@I5gN Oz @n[Dz @nd0,~z @`$仫@v$⩔,C[B?I>孓`仫6VtCicQĿUKqtVt Nʮq$6,⨁ K6, VtI=v!gNVt Vt  lg~Tһ   LiLMTRLLLLL[^)o `\o8` ԠŬLLINFOv1 '  '/FTN.D5.07.NINJAN 1"1'M-MODFORMAT.TXTZ'K- MOPQRSTUVWXYNinjaTracker SoundSmith file format ___________________________________ File Type: $D5 (213) Auxiliary Type: $0007 The File Format SoundSmith sequences consist of a 600 byte header, followed by three equally-sized blocks containing the notes in the sequence, the effects to be applied to the notes, and parameters for the effects. The file concludes with 30 bytes of stereo information. The Header signature (+000) 6 Bytes ASCII bytes "SONGOK". An identifier to SoundSmith that the file is not corrupted. length (+006) Word The length of each of the three equally-sized blocks that follow the header (Main, Effects1, and Effects2). tempo (+008) Word The tempo for the song. A note is played each tempo/50th of a second (see the "Playing the Music" section in this Note). instBlock1 (+020) InstBlock The instrument parameters for the first instrument. instBlock2 (+050) InstBlock The instrument parameters for the second instrument. ... instBlock15 (+440) InstBlock The instrument parameters for the fifteenth instrument. musLength (+470) Word Length of the music in SSBlocks. musList (+472) 128 Bytes List of SSBlocks to play. Each block is identified by one byte (i.e., 0 3 5 2 2 n means play block 0, block 3 block 5, block 2, block 2, and block n respectively). An SSBlock is 896 Bytes (64 * 14 bytes). The Main block is composed if SSBlocks. An InstBlock is a 30-byte block of instrument parameters defined as follows: instName (+000) String ASCII name of the instrument to be used. If this is less than 22 bytes (21 characters plus the length byte), it must be padded to take 22 bytes. reserved (+022) Word Reserved, set to zero. volume (+024) Word Volume for this instrument. Although this is a word parameter, legal values range from 0 to 255. reserved (+026) Word Used by NinjaTracker: The low byte of this word specifies the type of the instrument: $00 - unlooped instrument $01 - looped instrument, this instr. is only the header to play. The loop itself is the next instrument after this one. Headers are only saved when the header size is $100 or greater. $02 - the loop itself. MODCON copies loops behind each other till the sample will sound best. The high byte of this word is the finetune value, just like in a MOD. reserved (+028) Word Reserved, set to zero. The Main block The main part of the file consists of three equally-sized blocks. The length of each of the three parts is given by the Length field in the header; the entire Main block is 3*Length bytes long. Bytes in each block are related to each other positionally. For example, the first byte of the Effects1 and Effects2 blocks contain the effects to be applied to the note in the first byte of the Notes block. The first block is the Notes block. Each byte is a MIDI Note number representing the note to play. NinjaTracker does not support previous Soundsmith commands, such as STP. The second block is the Effects1 block. The high nibble of each byte determines which instrument should be used to play the note in the corresponding byte of the Notes block. The low nibble of each byte contains a value to be used by each effect. This value corresponds to the standard ProTracker Amiga effect command. The third block is the Effects2 block, and contains values to be used for the effects listed in the bytes of the Effects1 block. This value corresponds to the standard ProTracker Amiga effect byte. Stereo Data The file ends with 30 bytes of stereo data. The data is in 15 words, one for each instrument. A value of $0000 indicates the instrument uses the right channel; a value of $FFFF indicates the left channel. The first word corresponds to the first instrument, and so on. [\]^_`abcdefghijklmnopqrstuvwxyz{|}~Noisetracker/Soundtracker/Protracker Module Format -------------------------------------------------- Credits: Lars Hamre, Norman Lin, Mark Cox, Peter Hanning, Steinar Midtskogen, Marc Espie, and Thomas Meyer (All numbers below are given in decimal) 3rd Revision Module Format: # Bytes Description ------- ----------- 20 The module's title, padded with null (\0) bytes. Original Protracker wrote letters only in uppercase. (Data repeated for each sample 1-15 or 1-31) 22 Sample's name, padded with null bytes. If a name begins with a '#', it is assumed not to be an instrument name, and is probably a message. 2 Sample length in words (1 word = 2 bytes). The first word of the sample is overwritten by the tracker, so a length of 1 still means an empty sample. See below for sample format. 1 Lowest four bits represent a signed nibble (-8..7) which is the finetune value for the sample. Each finetune step changes the note 1/8th of a semitone. Implemented by switching to a different table of period-values for each finetune value. 1 Volume of sample. Legal values are 0..64. Volume is the linear difference between sound intensities. 64 is full volume, and the change in decibels can be calculated with 20*log10(Vol/64) 2 Start of sample repeat offset in words. Once the sample has been played all of the way through, it will loop if the repeat length is greater than one. It repeats by jumping to this position in the sample and playing for the repeat length, then jumping back to this position, and playing for the repeat length, etc. 2 Length of sample repeat in words. Only loop if greater than 1. (End of this sample's data.. each sample uses the same format and they are stored sequentially) N.B. All 2 byte lengths are stored with the Hi-byte first, as is usual on the Amiga (big-endian format). 1 Number of song positions (ie. number of patterns played throughout the song). Legal values are 1..128 1 Historically set to 127, but can be safely ignored. Noisetracker uses this byte to indicate restart position - this has been made redundant by the 'Position Jump' effect. 128 Pattern table: patterns to play in each song position (0..127) Each byte has a legal value of 0..63 (note the Protracker exception below). The highest value in this table is the highest pattern stored, no patterns above this value are stored. (4) The four letters "M.K." These are the initials of Unknown/D.O.C. who changed the format so it could handle 31 samples (sorry.. they were not inserted by Mahoney & Kaktus). Startrekker puts "FLT4" or "FLT8" here to indicate the # of channels. If there are more than 64 patterns, Protracker will put "M!K!" here. You might also find: "6CHN" or "8CHN" which indicate 6 or 8 channels respectively. If no letters are here, then this is the start of the pattern data, and only 15 samples were present. (Data repeated for each pattern:) 1024 Pattern data for each pattern (starting at 0). (Each pattern has same format and is stored in numerical order. See below for pattern format) (Data repeated for each sample:) xxxxxx The maximum size of a sample is 65535 words. Each sample is stored as a collection of bytes (length of a sample was given previously in the module). Each byte is a signed value (-128 ..127) which is the channel data. When a sample is played at a pitch of C2 (see below for pitches), about 8287 bytes of sample data are sent to the channel per second. Multiply the rate by the twelfth root of 2 (=1.0595) for each semitone increase in pitch eg. moving the pitch up 1 octave doubles the rate. The data is stored in the order it is played (eg. first byte is first byte played). The first word of the sample data is used to hold repeat information, and will overwrite any sample data that is there (but it is probably safer to set it to 0). The rate given above (8287) conveys an inaccurate picture of the module-format - in reality it is different for different Amigas. As the routines for playing were written to run off certain interrupts, for different Amiga computers the rate to send data to the channel will be different. For PAL machines the clock rate is 7093789.2 Hz and for NTSC machines it is 7159090.5 Hz. When the clock rate is divided by twice the period number for the pitch it will give the rate to send the data to the channel, eg. for a PAL machine sending a note at C2 (period 428), the rate is 7093789.2/856 ~= 8287.1369 (Each sample is stored sequentially) Pattern Format: Each pattern is divided into 64 divisions. By allocating different tempos for each pattern and spacing the notes across different amounts of divisions, different bar sizes can be accommodated. Each division contains the data for each channel (1..4) stored after each other. Channels 1 and 4 are on the left, and channels 2 and 3 are on the right. In the case of more channels: channels 5 and 8 are on the left, and channels 6 and 7 are on the right, etc. Each channel's data in the division has an identical format which consists of 2 words (4 bytes). Divisions are numbered 0..63. Each division may be divided into a number of ticks (see 'set speed' effect below). Channel Data: (the four bytes of channel data in a pattern division) 7654-3210 7654-3210 7654-3210 7654-3210 wwww xxxxxxxxxxxxxx yyyy zzzzzzzzzzzzzz wwwwyyyy (8 bits) is the sample for this channel/division xxxxxxxxxxxx (12 bits) is the sample's period (or effect parameter) zzzzzzzzzzzz (12 bits) is the effect for this channel/division If there is to be no new sample to be played at this division on this channel, then the old sample on this channel will continue, or at least be "remembered" for any effects. If the sample is 0, then the previous sample on that channel is used. Only one sample may play on a channel at a time, so playing a new sample will cancel an old one - even if there has been no data supplied for the new sample. Though, if you are using a "silence" sample (ie. no data, only used to turn off other samples) it is polite to set its default volume to 0. To determine what pitch the sample is to be played on, look up the period in a table, such as the one below (for finetune 0). If the period is 0, then the previous period on that channel is used. Unfortunately, some modules do not use these exact values. It is best to do a binary- search (unless you use the period as the offset of an array of notes.. expensive), especially if you plan to use periods outside the "standard" range. Periods are the internal representation of the pitch, so effects that alter pitch (eg. sliding) alter the period value (see "effects" below). C C# D D# E F F# G G# A A# B Octave 1: 856, 808, 762, 720, 678, 640, 604, 570, 538, 508, 480, 453 Octave 2: 428, 404, 381, 360, 339, 320, 302, 285, 269, 254, 240, 226 Octave 3: 214, 202, 190, 180, 170, 160, 151, 143, 135, 127, 120, 113 Octave 0:1712,1616,1525,1440,1357,1281,1209,1141,1077,1017, 961, 907 Octave 4: 107, 101, 95, 90, 85, 80, 76, 71, 67, 64, 60, 57 Octaves 0 and 4 are NOT standard, so don't rely on every tracker being able to play them, or even not crashing if being given them - it's just nice that if you can code it, to allow them to be read. Effects: Effects are written as groups of 4 bits, eg. 1871 = 7 * 256 + 4 * 16 + 15 = [7][4][15]. The high nibble (4 bits) usually determines the effect, but if it is [14], then the second nibble is used as well. [0]: Arpeggio Where [0][x][y] means "play note, note+x semitones, note+y semitones, then return to original note". The fluctuations are carried out evenly spaced in one pattern division. They are usually used to simulate chords, but this doesn't work too well. They are also used to produce heavy vibrato. A major chord is when x=4, y=7. A minor chord is when x=3, y=7. [1]: Slide up Where [1][x][y] means "smoothly decrease the period of current sample by x*16+y after each tick in the division". The ticks/division are set with the 'set speed' effect (see below). If the period of the note being played is z, then the final period will be z - (x*16 + y)*(ticks - 1). As the slide rate depends on the speed, changing the speed will change the slide. You cannot slide beyond the note B3 (period 113). [2]: Slide down Where [2][x][y] means "smoothly increase the period of current sample by x*16+y after each tick in the division". Similar to [1], but lowers the pitch. You cannot slide beyond the note C1 (period 856). [3]: Slide to note Where [3][x][y] means "smoothly change the period of current sample by x*16+y after each tick in the division, never sliding beyond current period". The period-length in this channel's division is a parameter to this effect, and hence is not played. Sliding to a note is similar to effects [1] and [2], but the slide will not go beyond the given period, and the direction is implied by that period. If x and y are both 0, then the old slide will continue. [4]: Vibrato Where [4][x][y] means "oscillate the sample pitch using a particular waveform with amplitude y/16 semitones, such that (x * ticks)/64 cycles occur in the division". The waveform is set using effect [14][4]. By placing vibrato effects on consecutive divisions, the vibrato effect can be maintained. If either x or y are 0, then the old vibrato values will be used. [5]: Continue 'Slide to note', but also do Volume slide Where [5][x][y] means "either slide the volume up x*(ticks - 1) or slide the volume down y*(ticks - 1), at the same time as continuing the last 'Slide to note'". It is illegal for both x and y to be non-zero. You cannot slide outside the volume range 0..64. The period-length in this channel's division is a parameter to this effect, and hence is not played. [6]: Continue 'Vibrato', but also do Volume slide Where [6][x][y] means "either slide the volume up x*(ticks - 1) or slide the volume down y*(ticks - 1), at the same time as continuing the last 'Vibrato'". It is illegal for both x and y to be non-zero. You cannot slide outside the volume range 0..64. [7]: Tremolo Where [7][x][y] means "oscillate the sample volume using a particular waveform with amplitude y*(ticks - 1), such that (x * ticks)/64 cycles occur in the division". The waveform is set using effect [14][7]. Similar to [4]. [8]: -- Unused -- [9]: Set sample offset Where [9][x][y] means "play the sample from offset x*4096 + y*256". The offset is measured in words. If no sample is given, yet one is still playing on this channel, it should be retriggered to the new offset using the current volume. [10]: Volume slide Where [10][x][y] means "either slide the volume up x*(ticks - 1) or slide the volume down y*(ticks - 1)". If both x and y are non-zero, then the y value is ignored (assumed to be 0). You cannot slide outside the volume range 0..64. [11]: Position Jump Where [11][x][y] means "stop the pattern after this division, and continue the song at song-position x*16+y". This shifts the 'pattern-cursor' in the pattern table (see above). Legal values for x*16+y are from 0 to 127. [12]: Set volume Where [12][x][y] means "set current sample's volume to x*16+y". Legal volumes are 0..64. [13]: Pattern Break Where [13][x][y] means "stop the pattern after this division, and continue the song at the next pattern at division x*10+y" (the 10 is not a typo). Legal divisions are from 0 to 63 (note Protracker exception above). [14][0]: Set filter on/off Where [14][0][x] means "set sound filter ON if x is 0, and OFF is x is 1". This is a hardware command for some Amigas, so if you don't understand it, it is better not to use it. [14][1]: Fineslide up Where [14][1][x] means "decrement the period of the current sample by x". The incrementing takes place at the beginning of the division, and hence there is no actual sliding. You cannot slide beyond the note B3 (period 113). [14][2]: Fineslide down Where [14][2][x] means "increment the period of the current sample by x". Similar to [14][1] but shifts the pitch down. You cannot slide beyond the note C1 (period 856). [14][3]: Set glissando on/off Where [14][3][x] means "set glissando ON if x is 1, OFF if x is 0". Used in conjunction with [3] ('Slide to note'). If glissando is on, then 'Slide to note' will slide in semitones, otherwise will perform the default smooth slide. [14][4]: Set vibrato waveform Where [14][4][x] means "set the waveform of succeeding 'vibrato' effects to wave #x". [4] is the 'vibrato' effect. Possible values for x are: 0 - sine (default) /\ /\ (2 cycles shown) 4 (without retrigger) \/ \/ 1 - ramp down | \ | \ 5 (without retrigger) \ | \ | 2 - square ,--, ,--, 6 (without retrigger) '--' '--' 3 - random: a random choice of one of the above. 7 (without retrigger) If the waveform is selected "without retrigger", then it will not be retriggered from the beginning at the start of each new note. [14][5]: Set finetune value Where [14][5][x] means "sets the finetune value of the current sample to the signed nibble x". x has legal values of 0..15, corresponding to signed nibbles 0..7,-8..-1 (see start of text for more info on finetune values). [14][6]: Loop pattern Where [14][6][x] means "set the start of a loop to this division if x is 0, otherwise after this division, jump back to the start of a loop and play it another x times before continuing". If the start of the loop was not set, it will default to the start of the current pattern. Hence 'loop pattern' cannot be performed across multiple patterns. Note that loops do not support nesting, and you may generate an infinite loop if you try to nest 'loop pattern's. [14][7]: Set tremolo waveform Where [14][7][x] means "set the waveform of succeeding 'tremolo' effects to wave #x". Similar to [14][4], but alters effect [7] - the 'tremolo' effect. [14][8]: -- Unused -- [14][9]: Retrigger sample Where [14][9][x] means "trigger current sample every x ticks in this division". If x is 0, then no retriggering is done (acts as if no effect was chosen), otherwise the retriggering begins on the first tick and then x ticks after that, etc. [14][10]: Fine volume slide up Where [14][10][x] means "increment the volume of the current sample by x". The incrementing takes place at the beginning of the division, and hence there is no sliding. You cannot slide beyond volume 64. [14][11]: Fine volume slide down Where [14][11][x] means "decrement the volume of the current sample by x". Similar to [14][10] but lowers volume. You cannot slide beyond volume 0. [14][12]: Cut sample Where [14][12][x] means "after the current sample has been played for x ticks in this division, its volume will be set to 0". This implies that if x is 0, then you will not hear any of the sample. If you wish to insert "silence" in a pattern, it is better to use a "silence"-sample (see above) due to the lack of proper support for this effect. [14][13]: Delay sample Where [14][13][x] means "do not start this division's sample for the first x ticks in this division, play the sample after this". This implies that if x is 0, then you will hear no delay, but actually there will be a VERY small delay. Note that this effect only influences a sample if it was started in this division. [14][14]: Delay pattern Where [14][14][x] means "after this division there will be a delay equivalent to the time taken to play x divisions after which the pattern will be resumed". The delay only relates to the interpreting of new divisions, and all effects and previous notes continue during delay. [14][15]: Invert loop Where [14][15][x] means "if x is greater than 0, then play the current sample's loop upside down at speed x". Each byte in the sample's loop will have its sign changed (negated). It will only work if the sample's loop (defined previously) is not too big. The speed is based on an internal table. [15]: Set speed Where [15][x][y] means "set speed to x*16+y". Though it is nowhere near that simple. Let z = x*16+y. Depending on what values z takes, different units of speed are set, there being two: ticks/division and beats/minute (though this one is only a label and not strictly true). If z=0, then what should technically happen is that the module stops, but in practice it is treated as if z=1, because there is already a method for stopping the module (running out of patterns). If z<=32, then it means "set ticks/division to z" otherwise it means "set beats/minute to z" (convention says that this should read "If z<32.." but there are some composers out there that defy conventions). Default values are 6 ticks/division, and 125 beats/minute (4 divisions = 1 beat). The beats/minute tag is only meaningful for 6 ticks/division. To get a more accurate view of how things work, use the following formula: 24 * beats/minute divisions/minute = ----------------- ticks/division Hence divisions/minute range from 24.75 to 6120, eg. to get a value of 2000 divisions/minute use 3 ticks/division and 250 beats/minute. If multiple "set speed" effects are performed in a single division, the ones on higher-numbered channels take precedence over the ones on lower-numbered channels. This effect has a large number of different implementations, but the one described here has the widest usage. N.B. This document should be fairly accurate now, but as the module format is more of an observation than a standard, a couple of effects cannot be relied upon to act exactly the same from tracker to tracker (especially if the tracker is not for the Amiga). It is probably better to use this document as a guide rather than as a hard-and-fast definition of the module format. Oh.. and yes, I would normally give bytes as hex values, but it is easier to understand a consistent notation. Andrew Scott (Adrenalin Software), INTERNET:ascott@tartarus.uwa.edu.au Author of MIDIMOD (MOD to MIDI converter), PTMID (MIDI to MOD converter) L| Ly Lv Ӡֲ㮬f"f"C# "&i01h+# )#M8 % ) L"g# )L"@, )7(P0 ( @A p 8 )# f" +#$#0 &$#0 %# )ȍX#f"P# )ɂH#*# ) %)0I0hx H( , %Щ ߜ)#j )f 8'  )ɀ)4,- U JNT) )#L# ) f"` #K)D/ #3 &#'#(# ## iL X"0#"0ӠĠŠŠҠ`#{% F%Z]``e-.!0SB}/BiBB}/ gF/0k) y! ʿ  L##  m# m# J LB Qר)ɨ] оȱ ̀𩠙 i ȴ O Ѻ G \ ɟU ʿ V@$ A ɛL e '8 Jm ʈ0 o 0堠خ YYZLYLY@뿭`d 8#@8` %MNЩUMߩ  L 5   8 0 8  `0 / X   / &; Pb 8 )0`ddd1&… (n&Dž (\%T&Ln()8= (J 8(&(& >((ʎ1΋&΋&&3223 ')Д )18&"m11 2H22h2舌&&12H)M0 h1020I20h2 (`L%12 `\(#L  98" :ȱ)ɀ  ) ( ` (Xp< @ ( )m ( (. (( M (i  ``) '(j21 & &!` (&&(i)&)( CdBdDdFdGE ) ) ))) ))&$ >(,&& … >(ŅL 'JJJJ`Ϡ(8`&  LdDž )Pi)) () ))&-&),&͉&) ))&0)У` )ɥ`HZJ)  )zh %J)֭)n)}11J  2 (8`rȱȱȱ0\aȱeek+ȱ+ȱ++ȱ++ȱ+ *+ + *`L@+ + * L) *Ș8e` ,$`ee` `+ H++ d+` w+ H+ d+`hh8`8`+++`}+`e`H)hJJ+0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <x0HH1HH "M,Z(") \i ᘏi᫫8(`hhh8k-<ʆ>Q=?BC8 é&'112`آ <B*IBGF08Lé'+8H <,``h(`@ڍL3HEVhEhH)IWHPHHHAHHHLaVEWLӿ``LKL`BLL ޥޥޥޥޥޥޥޥޥޥޥޥޥޥޥ(C)APPLE xLLM Mh@8nЍLޭ 0J @,,L=#P׽8H  ): e: y8鰕:Jjjj<)yאi8i;i(*=>hPם8`;Zx3Q`_^]ba`0h)ύh0HHHH " ׍hhhhhddhh .hh8`JIMJAYKERRY&MIKEhh@ihAiH(ؠȱ@JJJJq@)@ݔoȱ@Hȱ@Ah@@\e J) ހL JiB ހJ) @xNHHژHL(  ްʠx@BEOD  ް(`( C)CJJJlBJ,~@~@}J@` ߩ%S @ ~`E hhhߺ0 h߈ ߐ( ߐ ߐ   ޕ0 HϭߍLпllll8` Q)T 22D) ɺi )?  }   ސ `@Hȱ@IױHXATȱH ɯȩ׍̰5H)/@a)_ .0 :A[8@`,뎰ڮЕ` } L ` r@>q)I38 kם`K8`@Nȱ@O@ eIiNȽבN)/ȩ/N`@Z VH:JjjjhA "'KI؍0JHi 뎣`ةC8` @)0 e/N0 *ڽ0 ti` <; 뮣ٝ٘ 0 W,0 .H hȑNWȮّNW8`ٍّN0NN` G8`F@ 0 $ LK8`X YI8`FHGH GF܌ עFܽܕF芝ܝ 밸XY Z܅I m[IHHyHȘI L`ܞ @@ @Ю׍q)mיqʈ@ȱ@ȱ@lmq)5qI0ܢܽ n'c* 7FG (ef Ld܅Ip mcIH`  k0no cqHlFmG 밳lm 밨e%܈b" T)Ia)܍p*܍c'ܮ( 4 䭐 $H %HFFHGHG 됬`R8` )` cHq` _9܅IHHqqЍq  @`8 ` ͫ% ΫQ8`܅I `n܍op L8D`F` EgH)HFȍlHGm %܍&܍ܢ8* J8` }L ܝ\)I 'ܝX`d8ipFnGo`d܅IH3H ( )ȱH`ά8ceHI dSBX0k }ٙiٙgFleʈ L`8m0`,0H hi MȽٍ0dGF8yאFG  }$0 *01 E8`100 < 0̩ 谾 }谹`12)1`0`Ȏi i ٞU`)8`` U _G *A)H ܝʈh٭0٭)ܝ٭*ܝ٥F٥G٭'ܝ٭(ܝ`)َ 8ʈ` 0ٝ)i `8`O 鍮 dMمFمG ; ή0FG뮣0 ٭٭ٽ8`H8`  , 8`  `ٽJJJJ`Hͮhk)&NjNjNjN. 1Eͮ d8٭ u'Nۙ۰ڙک `Z8` 1# ` . . .8۰*J۩ ٰ:`JJJJ9 d묣͸ dٍ0 u  `H8` `ٍyٍiB0H0FGy h0`FG `ϩBxEdD0C ް(`(8`ؑ@`M8`8@ؐʈI묤)8 La LةC8`؍)@ fi)8wJ ] ؅F LW) y+%J(^ FإGؐ,` JHIH I%FHGI ԭJjHIH@=IؙJJ ?9 -4HIHI`JKJK`FHIG ( Ȣ؝؈JL)eKM`)` J Jͽ $0 άJFȱJL8`GBJ 6 FإG`BH 6FإG`,H hHB؅F  ؅GxDE؍00C ް(`(8` d뀧J  ! dH   9ؙ` r@ }P8`K8`B8` j؈qJJJJح) ) )Ю ЪG.F $ ᭔ع+ؠ H  0h8` 䮣ٽ ٬ؠ@` ( j )8`)i п` H h)N$% LL L e L  pJ )@NJOK iKK IJ v JФ̭JjHFIH HIGxKE ް((H vhH h8`8@ȭ@L쬤8NNO 8 ؍JL`QʱLN0MOMEKP.MEKӱL-M O,up莿eNNO(`JNKOL / P L8 a ?ؑJ`L@ȱ@ `@Nȱ@O`؝}I轘ؐ` Gؽ؝ G  G؝؈` ` H 1h)N@ ; L  $ )dJ S ) iH h8` ) )حJjIHIH؊ PLJʱNLMO MІMEKݸP$MEK O,u PeNNO (` C  7 2JHIHI؊ aL-  ` ? H ع H ؙ؊IhHIhH a iع `  عiعi` )؍0CGHFHdBdFdGx ް(8hFhG`@4͔ L @Ai ׭2` . 0#ع؍0 <讣)`.@+ i 8` L )0 )p )@ f ) yʩ ؝j0lm 밫 }nolmFG w嬤؍؍؝ ؝ q) q )حk͸ d`H@h`h``N8`  ) ⬤Ȣ؝@ݼ@ʈL KIJHȢݼ ^魼)Jn 8  ؍ ؍ 2H8 ع)JJJJ Ȣ؝I؈ h(8H  h(8Hh(`ؑ@`@ȱ@ ` r@@8Wq ^鮣ٍٍٍHٍ8hqJJJJq2)q@` r%I -) 20@q)N8` @LL =@ ȹP8` i` ם0 B )( ȹ`8m8m@8` G8`F } r }P⭏)@N8`q)@J טyרםqq)׍q 밑 LȹL@ȅH@IL,0` rD }ﭩ: SH-)N 0 $q)@kP8` 2  dHqefe h`yٙ٭yٙ٩`H 1BFG 3%&N    ܮ `J HH hh` 0@ tL)lL S_Xܝ ݝ0ȩFG  0` ܅F݅G ` \ Sͬ 밽܅F݅G ` \) S$ L`LHH hFhG܍ݍ 8 `FHGH  hGhF`ݹܙ݊`@Bɼ>K@J5 V9X(K VXXK تKo`V8`no` "on VI9XX`)&HJJJh`OeNeO࿰ V9XГO`@ȭ@` ON <NJKO`?>х=d<<>=?ILBJ DքEdFCJJJJ֍nH}IC J֭֬։/)DI@+8`@Ae C!$|1OIIJK,-NOPQRSu' @   !"#$ Ԡͭ HB-9F 3"aɿ LLB Nϰ H  @h( L Lj  @`eLJCAB@=?<>=?<>CAB@?A` 1 L  <>`ڢF]PL8i m L   6< L  BLRAM' hLDL ֽ ְ& .Vӈ  JJJJH 8h Ei 8EX`'8`jӍWӥC)p> pӥCYӍY 轊( ( ӈBV ( ӭp0 \BkJ ՠ@iӦ> Ӑi'j:ZH i@ioZZH h ѐȭnWǥBJ Ӱ8XӦ>` Ր+>*L o % ԽYӍZӭoӝY 3Ѡ шNZ`rZLkӭZӍq8r7IZӐiZkӐk 8 ѹs ӭq ѹ| kн Z)*>>` @ $(,048<@DHLPTX\`dh 0ުlptx| 0($ p,&"op8`kkV꽌ɪɖxlӽ*kӽ-kәmMlӈ 꽌ɪ`8` ZԍsԍԍԍԥDEԌ8TԌ8WpԌqԠ 7I꽌ɪ꽌ɭ蠪:љVE:8`]ѾV]H)]ѾV]ҙ)]ѾT]ҙ)] >8hUD` ԝY`> Hh݌(`HCJJJJ)*h`8LխӅ:HhHh Ո թ թ ՘VYҪҦ>:Y)Ң`;R?AJ;<ȰY)Ң`Y?)Ң`ȐҰ ;HhHh=Ң`Hh `Hh`DEiȍ0֌18V%֌&8V֌֠)HV)hH)hHIhդD?DRIDQD)҅; ?JDQD]ՎՎՎ`MY pӭY)p  ӭp`C)`BFGV 8``  / XʩXύX X %   % ɍRH hɛɘɉɈ $ Ld :Ldې)ɮ۰ɺ' Ld  : X ( % ɛ$ɘɉ ɈL :Lɍ)ې)ɮ۰ɺH h 'L  ġLL ̹L)'L ȳL O'F ʻ ̹(((L $ʩ $$ $L `ީ % K@D EFby LҠؠӠ΢ϠԩҠŠƠԠԠŠӢɯϠҠůȠԠĠ  ح o âXoύX`1e0e21ʆe dk)i/ k Lkdha+ # nrdcddpqt$q0c)crorcc0enib ` r )pqn  Эht X l)lhЏL2  9 X [ J  dgdshUj" !# wgjdg. wg'g%s wghg%s w h ɍ1Ɋɋɉɛ kʽ/`L2LY g Xȱl蝀igt 9 X   (L $ `dm &m &m &m &mlemmli`{g8s [t0{2H* Lh2  Xȱl i L `κºú` \GQ H ?h8 S / ?8 V []bj \ ^e_f a  i  \ 2EL 0 8`0)H ""H"h8 ek)E/8`HZ; [:HZ"h+h`8h`/Ȁ򈘍` L   `H0H"hHHH HHH "hpHH"VHH; [*i)    +hhHH"""8h/ ʎ S` ?8 r 0 88`  Can't run next application.ProDOS Error = $ Please insert the disk: Accept: M Cancel: Esc 300e"Enter pathname of NinjaTracker song to be played: (without .SSM)":"";A$:A$""ī300I768803:A:I,A::24,251,194,48,169,0,0,162,0,0,160,0,0,84,0,0,75,171,56,251,226,48,96,24,251,194,48,34,0,0,15,56,251,226,48,96:255 B15 X$A$".ssm"" X2$A$".w"4 X$X$",t$d5"^ (X0:D0:BB1:L44096:S24096:100 2(4)"bload"X$",a$2000,l"L",b"X:200 <XXL:DDL:D4LD0:BB1 F50 d216,0:B17 eX$X2$ fX0:D0:BB1:L44096:S24096:119 g(4)"bload"X$",a$2000,l"L",b"X:200? hXXL:DDL:D4LD0:BB1H i103S w216,0 x(4)"bload ninjatracker,a$2000":D0:B15:S2:L2:240 791:250 LL1 7685,L(L256)256:7686,(L256) 7688,S(S256)256:7689,(S256)& 76811,D(D256)256:76812,(D256)4 76814,BO 49193,65:768:LL1:s LL4096:SS4096:DD4096:200 :"Press Control-Reset to stop music (or reboot)." "Type 'bye' to exit to ProDOS."  ,::(4)"pr#3":(4)"prefix,s5" 6"Welcome to NinjaTracker." @S$(27)(15)"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"(24)(14) JS$ T"Play music:"(13) ^"1- Arnesune by d-zire/silents" h"2- Blue Intro unknown artist", r"3- Conrad by xtd/union"g w"4- Other... Enter path of song to be played" |"":"":"Start program:"(13) "M- MODConvert II Convert Amiga MODule files"" There are more modules on this disk."0"N- NF Assembler Ninjaforce Assembler"" Source code for player and converter are on this disk.""""More info:":"""http://www.ninjaforce.com/products/products_ninjatracker.html"C23:S$"Return: Exit to Basic. Space: Exit to ProDOS. Make your choice:";KA$]A$(13)ė:tA$" "ĺ(4)"BYE"A$"1"A$"converted/arnesune":2A$"2"A$"converted/blueintro":2&A$"3"A$"converted/conrad":2+A$"4"ė:1"0A$"M"A$"m"ĺ(4)"-modconvert2":L:A$"N"A$"n"ĺ(4)"-nf.assembler":UD500)Apple II 2IMG Disk Image