From a53726a684bbbe7c65bcfeb9aca85f45a8eaf1e2 Mon Sep 17 00:00:00 2001 From: hm Date: Tue, 14 Dec 1999 21:14:28 +0000 Subject: update to isdn4bsd beta release 0.90 --- usr.sbin/i4b/dtmfdecode/Makefile | 10 +- usr.sbin/i4b/dtmfdecode/dtmfdecode.1 | 17 +- usr.sbin/i4b/dtmfdecode/dtmfdecode.c | 2 + usr.sbin/i4b/dtmfdecode/dtmfsounds.al.uu | 2098 ++++++++++++++++++++++++++++++ usr.sbin/i4b/g711conv/g711conv.1 | 12 +- usr.sbin/i4b/g711conv/g711conv.c | 4 +- usr.sbin/i4b/isdnd/alias.c | 12 +- usr.sbin/i4b/isdnd/config.h | 6 +- usr.sbin/i4b/isdnd/controller.c | 145 ++- usr.sbin/i4b/isdnd/curses.c | 6 +- usr.sbin/i4b/isdnd/dial.c | 6 +- usr.sbin/i4b/isdnd/exec.c | 12 +- usr.sbin/i4b/isdnd/fsm.c | 18 +- usr.sbin/i4b/isdnd/isdnd.8 | 31 +- usr.sbin/i4b/isdnd/isdnd.acct.5 | 22 +- usr.sbin/i4b/isdnd/isdnd.h | 35 +- usr.sbin/i4b/isdnd/isdnd.rates.5 | 24 +- usr.sbin/i4b/isdnd/isdnd.rc.5 | 70 +- usr.sbin/i4b/isdnd/log.c | 46 +- usr.sbin/i4b/isdnd/main.c | 94 +- usr.sbin/i4b/isdnd/monitor.c | 1037 +++++++++++---- usr.sbin/i4b/isdnd/msghdl.c | 217 ++- usr.sbin/i4b/isdnd/pathnames.h | 8 +- usr.sbin/i4b/isdnd/pcause.c | 5 +- usr.sbin/i4b/isdnd/process.c | 6 +- usr.sbin/i4b/isdnd/rates.c | 6 +- usr.sbin/i4b/isdnd/rc_config.c | 89 +- usr.sbin/i4b/isdnd/rc_parse.y | 73 +- usr.sbin/i4b/isdnd/rc_scan.l | 10 +- usr.sbin/i4b/isdnd/support.c | 124 +- usr.sbin/i4b/isdnd/timer.c | 8 +- usr.sbin/i4b/isdnd/vararray.h | 120 -- usr.sbin/i4b/isdndebug/Makefile | 1 + usr.sbin/i4b/isdndebug/isdndebug.8 | 10 +- usr.sbin/i4b/isdndebug/main.c | 6 +- usr.sbin/i4b/isdndecode/Makefile | 1 + usr.sbin/i4b/isdndecode/decode.h | 4 +- usr.sbin/i4b/isdndecode/facility.c | 4 +- usr.sbin/i4b/isdndecode/facility.h | 4 +- usr.sbin/i4b/isdndecode/isdndecode.8 | 17 +- usr.sbin/i4b/isdndecode/layer1.c | 4 +- usr.sbin/i4b/isdndecode/layer2.c | 4 +- usr.sbin/i4b/isdndecode/layer3.c | 4 +- usr.sbin/i4b/isdndecode/layer3_subr.c | 4 +- usr.sbin/i4b/isdndecode/main.c | 4 +- usr.sbin/i4b/isdndecode/pcause.c | 4 +- usr.sbin/i4b/isdndecode/pcause.h | 4 +- usr.sbin/i4b/isdnmonitor/Makefile | 5 +- usr.sbin/i4b/isdnmonitor/curses.c | 624 +++++++++ usr.sbin/i4b/isdnmonitor/isdnmonitor.8 | 185 ++- usr.sbin/i4b/isdnmonitor/main.c | 897 ++++++++++--- usr.sbin/i4b/isdnmonitor/monitor.h | 148 ++- usr.sbin/i4b/isdnmonitor/monprivate.h | 210 +++ usr.sbin/i4b/isdntel/alias.c | 14 +- usr.sbin/i4b/isdntel/alias.h | 4 +- usr.sbin/i4b/isdntel/defs.h | 6 +- usr.sbin/i4b/isdntel/display.c | 6 +- usr.sbin/i4b/isdntel/files.c | 6 +- usr.sbin/i4b/isdntel/isdntel.8 | 12 +- usr.sbin/i4b/isdntel/main.c | 9 +- usr.sbin/i4b/isdntelctl/Makefile | 1 + usr.sbin/i4b/isdntelctl/isdntelctl.8 | 16 +- usr.sbin/i4b/isdntelctl/main.c | 4 +- usr.sbin/i4b/isdntest/Makefile | 1 + usr.sbin/i4b/isdntest/isdntest.8 | 20 +- usr.sbin/i4b/isdntest/main.c | 45 +- usr.sbin/i4b/isdntrace/1tr6.c | 6 +- usr.sbin/i4b/isdntrace/Makefile | 1 + usr.sbin/i4b/isdntrace/cable.txt | 6 +- usr.sbin/i4b/isdntrace/isdntrace.8 | 16 +- usr.sbin/i4b/isdntrace/pcause_1tr6.c | 4 +- usr.sbin/i4b/isdntrace/pcause_1tr6.h | 4 +- usr.sbin/i4b/isdntrace/pcause_q850.c | 4 +- usr.sbin/i4b/isdntrace/pcause_q850.h | 4 +- usr.sbin/i4b/isdntrace/q921.c | 13 +- usr.sbin/i4b/isdntrace/q931.c | 6 +- usr.sbin/i4b/isdntrace/q931_util.c | 6 +- usr.sbin/i4b/isdntrace/q932_fac.c | 6 +- usr.sbin/i4b/isdntrace/q932_fac.h | 6 +- usr.sbin/i4b/isdntrace/trace.c | 17 +- usr.sbin/i4b/isdntrace/trace.h | 7 +- usr.sbin/i4b/man/Makefile | 1 + usr.sbin/i4b/man/daic.4 | 8 +- usr.sbin/i4b/man/i4b.4 | 10 +- usr.sbin/i4b/man/i4bctl.4 | 10 +- usr.sbin/i4b/man/i4bipr.4 | 16 +- usr.sbin/i4b/man/i4bisppp.4 | 26 +- usr.sbin/i4b/man/i4bq921.4 | 10 +- usr.sbin/i4b/man/i4bq931.4 | 10 +- usr.sbin/i4b/man/i4brbch.4 | 12 +- usr.sbin/i4b/man/i4btel.4 | 18 +- usr.sbin/i4b/man/i4btrc.4 | 12 +- usr.sbin/i4b/man/isic.4 | 33 +- 93 files changed, 5755 insertions(+), 1178 deletions(-) create mode 100644 usr.sbin/i4b/dtmfdecode/dtmfsounds.al.uu delete mode 100644 usr.sbin/i4b/isdnd/vararray.h create mode 100644 usr.sbin/i4b/isdnmonitor/curses.c create mode 100644 usr.sbin/i4b/isdnmonitor/monprivate.h (limited to 'usr.sbin/i4b') diff --git a/usr.sbin/i4b/dtmfdecode/Makefile b/usr.sbin/i4b/dtmfdecode/Makefile index 792b2ef..03e804bf 100644 --- a/usr.sbin/i4b/dtmfdecode/Makefile +++ b/usr.sbin/i4b/dtmfdecode/Makefile @@ -2,14 +2,20 @@ # # $FreeBSD$ # -# last edit-date: [Thu May 20 12:04:05 1999] +# last edit-date: [Tue Dec 14 21:17:46 1999] # #--------------------------------------------------------------------------- PROG = dtmfdecode SRC = dtmfdecode.c -#LDADD += -lm + +# libm is only necessary if USE_COS is defined in the source +#LDADD += -lm + CFLAGS += -Wall -g -DDEBUG MAN1 = dtmfdecode.1 +test: ${PROG} + uudecode -p < dtmfsounds.al.uu | ./${PROG} + .include diff --git a/usr.sbin/i4b/dtmfdecode/dtmfdecode.1 b/usr.sbin/i4b/dtmfdecode/dtmfdecode.1 index 42cd5be..6aa1832 100644 --- a/usr.sbin/i4b/dtmfdecode/dtmfdecode.1 +++ b/usr.sbin/i4b/dtmfdecode/dtmfdecode.1 @@ -22,9 +22,11 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" +.\" $Id: dtmfdecode.1,v 1.6 1999/12/13 22:11:55 hm Exp $ +.\" .\" $FreeBSD$ .\" -.\" last edit-date: [Mon Apr 26 13:42:15 1999] +.\" last edit-date: [Mon Dec 13 22:53:13 1999] .\" .\" .Dd February, 15 1999 @@ -46,6 +48,7 @@ numbers values as ASCII charcters to stdout. The detector is implemented as 8 narrow band-pass filters realized with an integer double-cross recursive algorithm. Various ad-hoc methods are employed to provide hysteresis and anti-bounce for the detected signals. + .Sh EXAMPLES The command: .Bd -literal -offset indent @@ -53,12 +56,14 @@ dtmfdecode < beep.al .Ed .Pp will print a "1" to stdout. + .Sh STANDARDS ITU Recommendations G.711 -.Sh AUTHORS + +.Sh AUTHOR The .Nm -utility was written by -.An Poul-Henning Kamp Aq phk@FreeBSD.org . -This man page was written by -.An Hellmuth Michaelis Aq hm@FreeBSD.org . +utility was written by +.An Poul-Henning Kamp Aq phk@freebsd.org . +This man page was written by +.An Hellmuth Michaelis Aq hm@freebsd.org . diff --git a/usr.sbin/i4b/dtmfdecode/dtmfdecode.c b/usr.sbin/i4b/dtmfdecode/dtmfdecode.c index f96bacd..1ef49a9 100644 --- a/usr.sbin/i4b/dtmfdecode/dtmfdecode.c +++ b/usr.sbin/i4b/dtmfdecode/dtmfdecode.c @@ -6,6 +6,8 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * + * $Id: dtmfdecode.c,v 1.6 1999/12/13 21:25:24 hm Exp $ + * * $FreeBSD$ * * Extract DTMF signalling from ISDN4BSD A-law coded audio data diff --git a/usr.sbin/i4b/dtmfdecode/dtmfsounds.al.uu b/usr.sbin/i4b/dtmfdecode/dtmfsounds.al.uu new file mode 100644 index 0000000..f4e0c07 --- /dev/null +++ b/usr.sbin/i4b/dtmfdecode/dtmfsounds.al.uu @@ -0,0 +1,2098 @@ +$FreeBSD$ +begin 666 dtmfsounds.al +M5555U=74U-564-34UU%5U-?1UM'7UM37U=5555145%545%155%555%555=75 +M5575U=75U-15U5555575U575U=75U=75U=34U-35U-35U=75U=55U=5555%0 +MU-374535U-;7T=?6U]?4U-75U555551555555555555555555%5555145=75 +MU-34U-34U-35U=75U=75U=55U=75U=55555555755=5545/4U-=15-37T=;1 +MU];7U]34U=5555555%145%145%555555U555U=55U=34U=75U=75U-75U=35 +MU-74U=74U-75U=75U=75U=55U=75U=564-34UU!4U-36U]'6UM?7U-35U555 +M55555555555455155555555555545%55U-74U-34U-34U=74U-35U=35U=75 +MU=75U=75U=75U=75U590U-374534U-'6T=;6U]?5U-555%145%155%545555 +M5555U555U=75U=74U-5555755=75U=74U=75U=75U=35U=34U=74U-35U=75 +M555545/4U-=15-34T=;1U];7U]34U=55555555555%555%545%555=555575 +M5535U=34U-34U-34U-34U-75U=555555555555555555U=75U=514]34UU%4 +MU-?1UM'6UM?6U-15U51555155514551455555=75U=75U=75U=35U=75U=75 +MU=75U-34U-34U-75U=75U=75U=74U=75U=5555%0U-374535U-'6T=;1UM;4 +MU-75555555145%555555555555555575U5555=75U-34U-34U-74U=75U-74 +MU=75U=5555555=55U=75U=755E#4U-=15-34T=;1UM;7U]34U=5555555514 +M5%555%5555155575U=74U=74U55555555=75U-35U-34U-75U=75U-75U=75 +M5555555555104]74UU%5U-;0UM#6UM?7U=35U-755554551455155%155575 +MU=75U=155U755=75U-34U-34U-34U-75U575U555U=55U5555575U=75U5%3 +MU-375E74U]'6T=?6U]?4U-755=5555145%5555555555U=55U555U575U-55 +MU=75U=75U=34U=35U=75U=75U-75U=74U-75U=75U=7545/4U-=15-74UM36 +MU];7U]34U=75U5555%5455555555555555555%5555=4U=74U-34U]34U-35 +MU=75U=75U555555555555555U555U5564]34UU94U-?1U]'7UM37U-35U=75 +M555555145%5455155575U=75U=75U=?4U=75U=75U=75U=75U=75U-35U-75 +MU=75U=35U=75U=7555%3U-?74534U-;7UM?6U]?7U-35U555555555545%14 +M55555575U=75U5545%55U=74U]?7U-34U-35U=75U=75U=75U=75U=75U=75 +MU=5545/5U-965=?7T=;1U];4U]75U5555555555555155%5555555=75U=35 +MU=74U-75U=75U-74U=75U=75U=35U=35U-74U=75U=75555555514]37UE95 +MU-31UM'7UM?7U-35U-5555555%545%145%155575U575U=345%75U=34U-34 +MU-34U=75U=75U=75U=75555555555=55U575U5%3U-374534U]'6T=;1U]?4 +MU-755554551555555555555555555=75U575U-35U=75U=35U-75U-75U-34 +MU=75U=75U=75U=75U=75U55545/5U-=15-74UM;6U];4U]34U=5555555555 +M55555%1555555=55U=75U5145575U=77U-?7U]34U-35U=75U=75U=55U=55 +MU=75U=75U=564]34UU%4U=36U];7U]37U=35U=75555555555%555%555%55 +M5=75U=75U=34U=55U=75U=75U-75U=74U=74U-35U=75U-34U-75U57555%3 +MU=774534U-'6T=;6U];4U-74U555551555545514555555555=75U=155-75 +MU-34U-34U-35U=75U=75U=755=5555555=75U=755=5545#5U-=15=37T=;1 +MU];7U]74U=5555155%555%155%145575U=75U=75U=74U-35U=75U=35U=75 +MU=74U=75U=75U=74U=75U=55U555U5514]75UU%4U=31U]'7UM?7U-35U555 +M5%1455155%55555555555=75U=355515U=75U-34U-37U-35U=75U=35U-75 +M555555555575U=75U590U-375E77U]'6T=;1U]?4U-755555555555555514 +M555455155555U=55U-35U=75U-74U-74U-74U=75U=75U=35U=75U=75U=55 +MU55545+5U=115-37T=;0UM;7UM37U-15U5555%5455555%555%555=75U575 +MU%54U=75U-75U-34U-35U=75U=74U=74U=75U575U=75U=75U=514-34UU%4 +MU-?1UM'6UM?7U-35U5755555551555145515555555755=75U=34U=75U575 +MU555U=55U=75U=75U=75U=34U-75U=75U=75U590U-?65E37U-'6T=?6U];4 +MU]3555545%145U145%1455555575U=55U=555-75U-34U-37U-34U-34U=35 +MU=75U=75U555555555555=755E#4U]965=37T-;1UM;4U]745=55U5555514 +M5%1455155=755=75U=75U=74U]75U=75U=75U=75U=75U=75U=74U-35U-35 +MU=75U555U5514]75UU%4U-31UM'7UM?7U-?4U-7555555%145%=455555575 +MU=755=755%15U=74U-34U-34U-34U-75U=75U=55U=55U=55U=75U=75U590 +MU]365E77U];6T=?7U=35U5755555555555555%5555555=55U555U=75U-?5 +MU=75U-75U-35U-34U=75U=75U=75U=75U=555=55U=7545/5U-=65=37T=;1 +MU]'7UM34U=7555555%1455555%555555U=755=75U5545=75U-34U-34U-75 +MU=75U=75U=755=75U=55U=75U=75U=564-37UE95U-31UM'6UM?7U-35U=75 +M55555%155%14551555555555U=75U=37U]35U=35U=755=75U=74U-35U-75 +MU=75U=75U=75U=75U5%3U=374534U-;7UM?6U-?4U]345=5555545%545555 +M55555555U555U=555%55U=74U-34U]34U-35U=75U=75U=75U=75U=75U=75 +MU=7545/5U-=15-37T='0UM'7U]34U=35U5555%145%14555455555555U=74 +MU-74U]35U5755555U575U=74U-34U-75U=75U=74U=74U=74U-164]34UU%4 +MU-31U]'6T=?7U-35U=755=75555555545%15551555555575U515U-34U-34 +MU-35U-34U-34U-75U55555555555U=75U=75U590U-364534U-;6T=;1U];7 +MU-7555555555555555555%5555755555U555U=34U=75U-74U-35U=35U-74 +MU-74U-35U=75U=75U=75U=755E#4U-=15-34UM?1U]'7UM?7U-3555555%55 +M55555%155%1555555575U=545=34U-?7U-34U-35U=755=75U=75U=35U=75 +MU=75U=74U=564-37UE94U-31UM'7UM37U-35U%5555545%145%555%555575 +MU=75U=75U=74U]75U=75U-74U=74U=75U=75U=75U=75U=35U=75U=75U5%3 +MU=374534U-'6T=?6U-?4U-7555555%145%145%145%55U575U-75U=355%75 +MU=75U=35U=34U-35U-35U=75U-75U=75U=75U=75U=755E/4U-965=37T=;1 +MUM;7U]74U=75555555545%=45%145%155575U=75U=75U-?5U=75U=34U=75 +MU-?5U-15U]=5U=55U-?4U=355=555%534-54UM57U]'4UM#4U]37U577UE+4 +MU432V5?%4U]40-!5U]I4U%-0U=77UE;3UU/64-'24M'45]W55]'1UU574%'5 +MUM34TU14UU!75E'7UM%5U=!77E=4T=+3W];65%]15U70T=S15%105U16UE!6 +MT]7655Q55%?1U-957UU7VVNJ6]CXFTM)(6$H6RLUP^)C]FB)D/.SLW!`$*"Q&2 +MZ@PX.P6VN[4&/#;DM[:%4N:'AW0`&X"XNX0W.0F/N++D#@]ME_X1%)RTCQX\ +M/QVQNXH#/C!XCXSD$7V1Z!HT#I*\OY`P.C6!O['.#@UFE=,=:H6VB!T\/Q"S +MNK4&/#9TC(+_%<69E`0V")*_OI$P.C6'O+;9#`-Y[WX:%(>QBAP_/A.PNK4& +M/3=*@H;`;N:$E@8Q"YV^OI,P.C6'LK?=`@=/X&X&%H&SM1P_/A*PNK4',C1) +M@85<8I6`D0`S-9V^N9,P.S6%L[37`1O?Y!$#$8.RM!P^/AVPN[4$,S5-AYQQ +M9Y.-DP(R-)VYN9(Q.PJ:L(I1!Q+S^1\,$X*]MQP^.1RQNXH%,0M$FI1F>)B. +MG0T]-)VYN9TQ.`N8L8E>!6KA\`4)'8R_MQPY.1RVN(L:-@Y2GN!I<(2+GP\\ +M-YVYN9PV.0B>MXQ`'F7KRP8*'(^^MATY.1^VN8@8-PW5D\P72H"TF0X_-I*Y +MN9PV/@F7(^VA0@Y,9.YN9\W/`^0 +MB85_;^F;UPXV!8BXL!,Y/AZTO(P=#AKWYQ<%5XBPA`LX,9"YN9\T/0V1C)]E +M9)"$5@LQ!8N[L!,^/AZUO8(2#1S_]AP'T+6SAPHX,9&^N9\U,@*7@)%F=)B! +M7C4P!(J[L!`^/AZ*LX`0`!?DTP4!W+2RA@H[,):^OI\U,`"4A^]B58>"7C0R +M!XJZLQ$^/QZ(L(81!V+@308"V+>\@34[,)2_OIP+,0;JFO)I]8.,63<]!HJZ +MLQ8_/!Z.MH06&W?O?@(,V[:_@34[,)6_OYT)-@3HG5!J^HR)6#8\`8JZLQ<\ +M/!^/MYH4'<&58`\.V+&^@#4Z,.J\O)T.-!KNEG@7XHF+63$_`(JZLQ0\/1R- +MM9\5%.:7:0@+WK"^@S4Z,.F]O9,,"A_L[&D1Z[6U7C`_`XJZLVH],AV#B)!K +M8Y20%#4UW;"Y@C4Z,.RRLI`""1#M_Q`2E[2T73`^`HJZLV@R,Q*!CY5H<9V= +M$30TT+.XC0H[,.*SLY$`#!7BT1DQL94'!WW@8P$:G["QTC(X#(B[L&TQ-A>:FMQM[X*$&3`Q1;*[C`@X +M,>6VM^@%&%'@%0T$F;*PV#(X#(FXL6,V-!6>G71BEX^'&S,P0+VZCP@X,?ZW +MM.P8$_#@$PX'F[VSPS([#XFXL6$W-6F=E&9BG8B!!3(P3KVZCPDY-OVTBN$< +M:N/@'@L!A;RRR#T[#XZYMF8T"&*0X6IBF+6#!3TS=KVZCPX^-_&*B?L3993C +M!34`A;^]]ST[#XR^MV<*#V>7PA!MA+>-!#PR(C?867)+B!S<" +MA+^]\CT[#XV_MV4(`GSK2AYMAK:,!#\]>+VZCPP\-/6/@-IJ_9OM`38-A+Z\ +M_C([#X*\M&4/`4[M8`5M@[".!SX]9;*[CPT]-GQV2$!?U=_$P\[*]/?W +M]_?W]/3UR,[-P,?:V=S3T=155U%04U)=7%Q?7U]?7%Q=4E-345%65U=45575 +MU-37UM;6UM;6UM;6UM;6UM;6UM?7U]355U34UM;7UM?7U-35U=75U=75U=75 +MU=75U=75U=74U=34U-34U-34U-74U-34U-34U-34U=34U-35U-34U-34U-35 +MU-34U-34U-34U-34U5565-76UM?7U]?4U-75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U-34U=35U=75U=75U=75U-75U-75U=75U=75U-34U=75 +MU=755594U=;6U]?4U-35U=75U=75U=75U=75U=75U=75U=74U=75U=75U=75 +MU=74U-75U=75U575U=55U=75U=75U5555=75U=75U=75U=75U=545E?5UM?7 +MU]34U=75U=755=75U5755=5555555575U=75U=75U=75U=75U=34U-35U-75 +MU=75U=75U=75U=755575U=75U=75U=75U=55U5165]76U]?7U-35U=75U=75 +MU=75U575555555555=75U=75U=755=75U=75U=75U=75U555U=75U=75U=75 +MU=75U575U=75U=755=755=555%%75=;7U]?4U-75U=75U=75U=75U5755=55 +MU=75U=75U=75U575U=75U=74U=35U=55U575U=75U=75U=75U=755=75U=75 +MU=75U=555=545E?5UM?7U]34U=35U=75U=55U555555555555=3ED.GF^<71 +M271^>65E9V1D97A_5]?2WMK&P\W.RW-/6 +MU]555E914%-34U)24E)24U)34U!045%65E=75%555=75U-74U-37UM?4U535 +MU=35U-34U575U=74U=75U5555555555555555%145%155%15U=155=75U-74 +MU=75U=755=75U=74U-55U55555545555U=75U=37U]545E155=75U=75U-?7 +MU-75U=7555545555U=75U=75U=75U=555=75U575U-34U-34U]35U=555555 +M5=75U-34U-74U=7555555=55U=37U5575%755=75U=545=75U=75U=74U=75 +MU=75U575U=75U=75U554U=745=75U=34U-34U-34U-75U=75U555U5555555 +MU575U=75U=75U]?55%=55=75U-34U-36U]755555U5755=75U=75U=755=75 +M55755535U-35U=55U=75U-35U=755555U=75U=75U=7555555555U=75U=37 +MU]155%155=75U=755=34U-?4U-35U5555555U=74U-34U=755=555%75U575 +M5=75U=75U=755555U575U=75U=75U=75U=55U5555555U=36U%54U=555=55 +M5555U-34U=34U=755555U=75U=75U=75U=75U515U=745=74U=75U=755=75 +MU=74U=75U5555555U=75U=35U-555555U=555%?5U=34U-37U%35U-74U-34 +MU-34U-755=75U=34U=75U5555U945=55U=74U]34U-34U=75U=74U-34U=34 +MU5555%555575U-34U]37U]545E155=34U-35U-?4U=55U=75U=74U=555%15 +M5=75U-34U-355=75U515U=74U-?7U]?7U-75U555U=55U=34U-5555555515 +M5=74U=37U%145%15U=75U-15U=35U=55U=34U=34U]?4U-75U5545%55U555 +MU-3455555=55U=75U=34U-34U=75U=75U=75U=75U=7555555=75U]?55515 +M55555=75U=77U]34U=7555155-75U=34U-34U=5555555%35U=35U=34U]34 +MU=55U=74U=75U=75555555755=75U=75U5555%75U-545%55U=55U=555%15 +MU=74U]?7U]34U55555555=75U=75U=555=75U5755=74U=34U=34U=75U555 +MU5555=5555555575U=555575U=75551755155=74U-75U-?5U=555555U=75 +MU-75U-75U=75U=75U555U-745575U=75U=74U=75U=755=755=755=755=75 +MU555U555U555U-?4U5155=75U=75U555U=75U-34U-75U57555555575U=55 +M55555%=45=555=75U=74U-35U=755=755=75U55555155%555575U=755574 +MU]155U555=75U=75U=?4U555U55555555=7555555%555574U-755=75U555 +M5=75U=55U=75U=555=75U=75U=74U-55U555U=75U=75U=37U%545%155=55 +MU=555-75U=75U=74U=75U=34U=35U=555575U554U=755=74U-75U-34U-74 +MU-34U=75U555U=75U=755=75U=75U=75U]?555145555U=75U=74UM34U-75 +MU=555=755555U=75U=75U5555575U=15U=35U-34U-34U-74U-75U=75U=75 +MU=75U=5555555=555=74U]155%55U=5555755%35U-37U]34U-75U=34U=75 +MU=34U-7555555%55U575U=74U-34U-75U=35U=75U=35U=55555555555=75 +MU=75U-?7U%545=75U-34U]35U-34U=7555755=75U=75U=75U=555=75U=55 +MU-345575U-34U-34U-75U-75U-75U=75U=75U=34U=75U=74U=75U]?45514 +M5=75U=75U-55U-74U-35U-55U=35U575U=75U55555555515U=55U=75U-34 +MU-34U=34U=74U=75U5555575U5555=75U=75U=74U-545U55U555U=34U=37 +MU-74U=55U=75U=75U=75U=34U-34U=755=74U-75U=74U-75U=75U-35U=75 +MU=555=75U=7555555575U=75U=34U5175575U=75U=155%75U-34U=75U=34 +MU-75U=75U=75U575U554U=345=75U-?4U-74U=75U-75U-75U=75U555U=75 +MU=34U=35U=75U-355%=55575U=75U=75U]35U-75U=75U5755=555555U=75 +MU=755574U-155=75U-35U=74U=75U=75U=75U=74U=75U=75U-75U=75U=37 +MU]155%555=75U=74U555U=74U-34U-34U-34U-74U=74U=75U=555-75U555 +MU=74U-34U-75U=75U-75U=55U=75U575U=755=75U=75U=34U554U575U=74 +MU-35U-?4U=5555755555U=75U=75U=75U-35U555U-355575U=34U-34U=75 +MU=75U=75U=75U=75U=75U=75U-75U=75U-355%=45575U=74U%55U=34U]35 +MU-34U-34U=755=755=755=555%1555545=74U-34U-?4U-35U-75U=755=55 +M5-555=75U575U=74U=77U]545%55U574U-77U=76U=755=15U%75U535U574 +M5%745%75U==4U=17UU55U-75U-?5U-75UU75UU75U-755=74U=355=555=35 +M5=755=3455175515U575U-34U=77U=34U=75U-75UU75U575U%755=755514 +MU=755555U=34U-35U=35U-35U=75U=74U=75U575U=75U5555=75U-755515 +M5=75U=74U-34U]?5U=75U=55U575U=75U-34U=75U=755574U-35U=75U-34 +MU-75U%75U=55U555U555U575U=75U5755=755=74U-545U555=75U=75U515 +MU-74U=75U-75U=755=75U=75U575U5555575U53555755=74U-34U=34U=35 +MU575U=75U=55U5555=555555U=34U5545%75U=75U-35U-?7U=75U575U=74 +MU575U=35U=75U=755=75U-35=V!^5A8V+MKNGOH^! +M@[>SM)Z5AKRDO/8R)#D-_U8$-0D4XFDP)B,Y;(NUE`8,$N'E!#8Q;K&DI8T% +M-0'AAI!B%)RSI;+T,#DTYHJ*DF??AK6%`#X["(:\O809`A/D]@]C@0Y.@J?MK>=;GJ?@ND//SP?M+N\G0`+&O7S&S4/XK.Z +ML60S/PK#AY-F%):TLX$".#L/AK.VDA=NEH?]"3PS;[&ZO>@.-`3`^1P.`)"R +MN[<3/#X(XX.;=6Z6M;&9"#LY`8^]L9$2$>.95`@]-M*SI;/.-38&S>$1`@68 +MO;B(!SX^#Y&.AM5BEXNTE34[/QZUO['J&QG(D'<),S7IO:6Q9#8Q`?/H;@82 +MA+V^@@PX/@.:M8/#8NN.B_$W.SUOMKFQY`8'295Y#C$/G[^EM!`P,`'AD7\: +M%8:RO84*.S\$@+>,]6_@@HUT-C@PT;.XMM0-`V;M>@\W`8>^NX@$/3,&E9[= +M'6&!LK.6-SH\'8ZQCLP4\8:&;#$^-^B]N[1G"`QHX7X"-1N"N;B"#3\R!)*$ +MY1=R@+"V\C$Z/6RULXG1$UB:FQ8Q/PJ9OKN*%C0(%.%U`0D6CKF^A`LY,AF% +M@.IN2(&QM7XS.C#5MKV)2AEDDY,2-CT-@;B[CAHV-1;M500-88NYO)`W.#,1 +M@8^08$R'MXX7/3LV[K._CF$$%>N5'S8S!X^[N(,`,#06ZO`>!D2UOK/^,#LP +M8(^+GV1TA;6`&3TX-9Z\OXP4`!+DXAXW-AV*NKF%#C(T%9'B%AKUM;^V>#(Z +M,=6*M)MG>)Z.A0<\.0Z!OKZ#'P\:R>EVT=Y+6]M1$\ +M.C?BM[::8V*1@Y,`/#\!C[B^AP<+!]7E$@L(4+:ZLOXQ/C1^A)]P%N*ULH\% +M/CLUG;"QFFL4[X?N`CTR'K6ZOYX"-`!%YQ8/#>>PN[!^,CDTTH"$T&OLB[&! +M`SDX#H>RL)L1'?*9^`TR,&ZVI;V4"#8"1>UI`P:4L[BW$3PY"N&/@/!OXHZW +MF0\X.0&,O[.<'AI%D,<-,S=0LZ6R\S0P#52590<8G;.YBP0^.0F1BHWD;>>- +MBI0+.#\9M;FSE@0&9^I3#3$*XKVEL7XQ,PW(DUP8$YBSOX(".#D-A;>)X6GD +MI:*DLHF23QP`"34P,C\^.3\_,C`W"@T$$&3(Z)R$@(V.B(JUM;6*BXF/C8.& +MA)F2E^_ESE)V9&)H%1<1$!,3$Q,3$!$6%Q5K;F)A9'ES=$)84=;>Q,+.RO3T +M]_?W]_3URLG/PL'$V][=T];45U)24U%04E)=75Q<7%Q<75U34U!15E=75%55 +MU=74U]?6UM;6T='1UM;6UM;6UM;6U]?7U-34U=75U=74U-75U=55U555U=75 +MU=74U=34U-155U34T=;6UM?7U-?4U-74U=74U-34U=35U=75U=74U=34U-34 +MU-35U=75U-74U-34U-34U=74U-34U-34U-34U-75U-75U=34U-35U-74U556 +M5]76UM?6U]?4U-75U=755=75U=75U=755575U=75U=35U-74U=75U=75U-34 +MU-35U=75U=75U=75U=75U=5555555575U=75U=75U=755597U=;6U]?4U-35 +MU=75U575U=75U=755555U=75U=75U=75U=75U=75U=75U=75U=75U575U=75 +MU=75U=75U=555575U575U=75U=75U55445?5UM;6UM?7U-35U-75U=75U=75 +MU=5555555555U=75U57555555575U=75U=75U=55U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U5115U76UM?7U-35U575U555U=55U555555555555=75 +MU=75U=75U=75U=75U=35U=75U575U=55U=75U=75U=555575U=75U=75U=75 +MU=755%97U='6U]?4U]34U=75U=75U=555555555555555=75U=75U'ES<4I)1D535M'=V\3#SYI+8=,S=AAIAE%)BROH`( +M.#(4AH1W%I&VL)0Q)3)RCH_E:96UM-\S)3'HMK>6;.:/CV(R.S6$O;"0$7:% +MA!(R.0V.N;.5!1/HD1DS/1NTN[/R#0%>XAXV,6&PI;%E-0EMYQ$U"_B]I;0< +M,#07[&0"`)"\NXD#/#$4D/T;&9B]OH8*.3!CA))N%(6RLI0Q.C'>D@<]/!^WN+'; +M`![A[`.\NK4>-@AAX1$(`I^_NX\",C1BE'D!&X>_ +MOH0U/C=XF.8=%(&\O>@Q.#?-@YYA88:SMG8].C27BH/6986WBQ,_.PF'L8CS +M;):)@0<^.0&.O+3V$_6&G0,_/!*WN;=:!V^0[`(],$ZSN[1N#QK^_``P->N_ +MNHL8-`)!_04T#9JYNX(",PA][18/&H"YN9LU/#5/DW4$%(V^O>,P.37QA^X6 +M9(V\L6<].`N6CIIZ<8"PBAX^.`^'MX)<>X6T@`$Y.0>.LHE4:I2,G`PY/!:W +MOXIQ&=":X@X_,%2RN(MJ`Q25RP\R-):_NXX;"@7VV@,V#(>XN(`",0)1_`4+ +M!8V[OI\U,@[7ZA0#%(FXO?LP/PCYF%89?XB^L6T\.0Z6@Y1J7XZRBAH^.0*$ +MM85Y6X.V@`(X/@6/L8-W99J+G`@X/&JWO8]Z$>B!X0HY,,ZROH\5!$^=W0H\ +M-)._N((;#Q'M0@DP#(&XN8<"-`3W5P,T!8Z[OI,U,`/(^QL/%;6[O?4Q/0WD +MD6D'=;2YL6H]/P*6A,\3PK6\B@0Y/@&$CI%L](FP@`P[/AF,MX5E4(.TG34[ +M/&VTLX%F8)F,Y#0X,/RSO(,4'>"%03<^-)^_OH$8`7F7934R#(.XOIH#"!/G +M>`DV!8NZOY0*-@3\5@`+:+2ZLM8Q,P'FX1X`7[:[L18]/0&7G6$9^+:^B@8^ +M/P2:@/\4X+2R@`D[/!*-BY!C^XFVDC0Z/62TMIIC4H"(_#8[,.:PLH05;IV& +M?S$Y-)B_O(4>&/^=;S8\#(*XOYP``F'N:#0P&K6ZO.P(-1/D9@DU;[:ELTPV +M-AOFU`$-VK"ZMA`R,P64[A(%[;"YBP$^/1F8FWT0E+&\@0L[/1:#C>=NE;2P +MD#VQL9]J0X:"83,X-9J\LI\=%Y:8%C`_#8RXO98& +M!,:4$S8S&+2ZLN0.#V+A%S4W8[&EL'PW-!#F9@\.\+.ZMQTS,1SKQP<&E+*X +MB`,_,Q*F[V^AS4Y,6.$DVD5 +MA;*RE3$[,=V/@5%CF+&W1S(Z-Y6TB>5BD;6)%CP["X2SM.(4^8.'&SPY`(Z_ +MMN<99YZ3!ST]'+>DKJ&XMH'@:00,"C/\V$9\9FQJ%!80$Q,3$Q,0$!$7%!5I;&-F97]Q +M24=<5=+;P'YQ==)='YY9&5G965Z>7QR=DM"1UE1U=#>VL;#S,[)R,C( +MR,G.S,+#PQG&R4M8(#.S]N +MBHCE9X>PC@([/&V-A&1]B;R+`C@S9H3F'W6TN8H#/S9_D6H#3K&ZM0$R"%CR +M!@MUL[J*!S8&]GH*-W"RNH@%"13L$3$P>;*XC!\$_)`:/3UEL[^!$&^;F@8^ +M/&>QLYAJYXZ!`C@_9[2TZ&&;MH(,.SQDB8-;VMI9LD[6!#SL]=K6.]7Z`L((. +M.S)WC)IB1(J\CPXX,4B$\![?MKF.#S\T6)<6`,FSNXX-,@_8SP`(]+VZCP`V +M!/]B-33*O+N-!PYO[!PP,<*\N(`:!>&6!SPSV[*\A!)FA9X".3+1L+"3%>Z) +MA`X[/52WM>=GA+:!"#LR4(B!<$.)LH(+.S!3@)41Q[>^C0@Y-U>?9P3RL+B, +M#CP(V^8%#/J]NXP,,`'Q?`D*Y+R[@@,U$.80-C?EO[B`!P#5ZP0R,?F\OH09 +M%I*0`CXS\K*RG!'*@ID..#+WL;?N;9ZUA`L[,\BTC-1TC;"&-3LPP(R?:<2T +MO(`U.#;$A-P9^;"Y@PL_-8&VA34Z,/Z+AV73B[*'-#LV\(#M$/BVOX$U.37VG&\$[;*X@0H\#_#X!P+J +MO+N!"3$'_F$+")2^NX8-"A3G'S$TE+ZYA0$!R.\!/3:5O[^>&A6N] +MLY80Y8*3"CLP[K"TY&.%M)XT.C#BM()-7HZPFC<[-N:/DVO^M[R$-S@T^H5` +M&>^SOHX,/S:1O+*1'T2'E`HX,9>RMN-JDXB0-#LQE;:)W':#MIPW.C;I +MBX5A]K6RF#8[-..`^A#LL+^:-SX+YY(4!9:]N84T/0+E]`$#DKZXF@HQ&N5I +M"@ZV-E30[ +M-I"PM?1GA[21-CHVEK2`<]J(L)(Q.S3JC)<5XK:]G#8X"NR%?QZ6LKZ>-S\, +MX>P;!IR_N9XT,P?D?P\-F;FYGPLT$>4<-PB;N+Z2#`);Y``R-9NYO)8&$I?A +M"3\TF+^S[A_;ANPT.#>>LK?_:9^(ZS8[-YVVC$5$C+:4,3LTD8N98N2TLY$Q +M.#65@?40E[.\DS$^#N^0$1J`V.S28LXO1>8&U +M[#`[-)^TAGKSBK'H,#LUD(SI%96QO94P.0F4FV$?G+V_ES$]B*^FOK2$_A4$ +M#`LQ,S\_/C\\,C`W"@P''6#3[).%@8*/B8N*BHJ+B(F/C8.&A)B=E^[D]%1U +M>F-N%1<6$!`3$Q,3$!$6%Q5K;FUA9'AR=$Q;4]?7MD9&=E +M9'AX?7-T2T%%4U?1TMO$P,+/SLC(RLO(R<[,PL''Q=C>W]+0UM?555=14%!2 +M4E)=4E%27UU24U!04%%65E=75%555=35U=?6U]?4U-35U-35U=34U-75U=75 +MU555555555555%155%5555555555555555755=755=75U=75U=74UM175575 +MU=75U=75U575U575U=555%75U=75U=55U=75U=75U575U555555555555575 +MU=75U=75U=75U=75U=75U=75U=555575U5555=76U5155=75U=35U=75U=35 +MU=75U=75U-75U55555555%755=75U=755=75U=75U=74U=75U=755=755=75 +MU=74U=75U=75U=75U=55U=75U=?55U14U575U=75U=75U-75U=75U5155575 +MU=75U=75U=355=75U=75U575U=355=75U=75U=75U=75U=55U=75U=755=75 +MU575U575U=74UM57U5155=75U=74U-34U-75U-75U=?4U57555555=755=75 +M5=755=75U=55U=35U=74U-75U=75U=75U=75U=75U=75U5555=555=55U=36 +MU5=55%55U575U=74U-75U]34U=545=74U-34U-35U=34U=34U=5555555=75 +MU=555=755=555=75U=75U=75U=75U=75U=75U575U=75U-;55U145575U=75 +M5=35U-75U-35U=77U-75U=55U=75U=55U=75U=75U=75U=75U=34U-35U=75 +MU555U575U=75U=555=755=75U575U=75U-75U=34U=75U=755=75U=55U=75 +M5%75U=35U=75U=35U=75U=75U=555555U5555=75U=75U=755575U575U=75 +MU575U555U=75U=75U=36U5=55=75U=35U-35U=75U=74U-75U]?5U=55U=75 +MU=75U=74U-34U-34U=74U=75U55555555=75U=75U-75U=75U=74U=75U-35 +MU-34U-;45-55U=75U=35U=555555555555=4U=75U-74U-75U=55U575U=75 +MU=75U=55U5555555U575U=74U=75U=55U=75U=35U=35U=35U=74UM145535 +MU=75U-75U-74U=755555U=345555551555555575U=75U=74U=75U=35U-75 +MU=555575U=555555557555555555U=75U=355=77U5=55=75U=34U=75U=75 +MU=75U=545=75U-34U-35U=5555555555U5555555555555755=55U=755=75 +MU-35U=75U=75U=74U=75U=55U=?55U55U=75U=74U=75U=74U=35U=74U-75 +M55555=555=55U5555575U575U=74U=34U=75U=755=75U=75U=75U5555555 +M55555=75U=74UM5755755=75U=74U=75U=55U=755%75U=75U-75U=75U=75 +MU575U575U=755=555555U=75U=75U=75U=75U=34U=75U=755555U=555=77 +MU5=55=75U=75U=75U=75U=74U=75U-35U555555555555=75U555U5555555 +M5=75U=75U=75U=55U=75U=75U=75U=75U=75U=75U=55U=?55%545555U575 +MU=75U-74U=75U555U=74U-34U-35U=74U=75U=74U=75U=55U=55U=35U-75 +MU=755=75U575U=75U=75U=555=75U-75UM575535U=74U=75U=75U=35U-75 +MU=77U=75U=75U=75U=75U=74U=35U=75U=75U=75U-75U-75U=75U-34U-34 +MU-34U=75U=75U-34U=36U%355=75U=75U=75U=34U=75U=155=75U=34U-34 +MU-34U=75U=75U=555=75U=55U=75U=75U-34U-34U-34U-75U=55U=55U575 +MU=75U=?55U15U=74U=74U=75U-35U=75U=74U-35U=755=55U=55U=75U-75 +MU=75U-75U-74U=75U=75U=75U-75U=75U=75U=74U-75U-75U-74UM175575 +M5=75U=35U-34U-75U=34U575U-34U-34U-35U=55U=75U=75U-75U-74U-75 +MU=75U575U=75U=75U-75U=755575U=74U=755=7755=55-75U=75U=35U=75 +MU=75U=75U-15U=555575U555U=75U=75U575U=74U-34U-35U=75U=74U=74 +MU=34U=75U=75U=75U-35U=75U-;55U175=74U=74U-35U=74U-75U-545=75 +MU-35U-34U-75U=75U=75U575U=7555555555U=75U-75U-355=75U5555=75 +M5575U=75U=74UM5655155=75U-35U=35U=75U=75U=37U]35U=75U575U=74 +MU-75U-75U=75U=75U=75U=75U=75U=75U=75U-35U555U-75U=75U-75U=76 +MU5=55-75U=75U=75U=35U-75U=355=75U-?5U=74U=34U=74U=75U=34U=75 +MU-75U=35U=75U=55U=755=75U-35U=74U-75U-35U=75U=35U=75U=75U=75 +M5575U=755=75U575U-35U=75U=35U=75U=555=755555U=75U=74U=75U=75 +MU=75U-35U=34U-75U-34U=75U-75U=74U575U=75U=75U-15U-34U-75U-35 +M5535U-75U=34U555U-355575U5555=7555555=555=75U=755=75U=75U575 +MU-75U5555555U575U=75U5555=75U575U=34U=75U-75U=75U-34U-75U575 +MU=555=75U=34U=35U=755575U-34U=75U5555=75U=75U=75U=75U=75U=75 +MU=75U=34U=75U=755=75U=55U=75U555U=54555"9F5P=D=;U-#%:BQ8N\L4@R)3#ZL;*"%``=\_P8 +M-#1BM+NRVC,[-MZ)B9%B39N-E`T\,A6QI;WB-3,/VY[F%!2=M["9"SL^'K2Y +ML.`##13F4P<(&H:_OH$(.S\:C;:/QQ98F9X7-S(-@+B[C0(\,!V9A.1H78&W +MC1\\.PJ'OKF"!34->>U^!@;EM[ZT$C\Z-9RPL)L1'EZ0]``Q-?FRI;%I/3X( +M[H^&R6SCC8[V-#DS5[*ZL7PT-@3GE6<;;X&SL.\V.CUDMK^U3P$%5NQN#C40 +MB;B_DC<[,VZ/M85[8I6`G00S/02+NKZ8"#(U89Z19!;CB[&!`#DX`X^YO9X& +M"1OU_AT/!I*RN8D!.3D-A[&U[A!LE)E\"S,(G;^ZM1H],@&0@)!G99FUB6

6QLH)N!&GIX!@T-&>WNK+V,#DWT(^, +MZVS5A(^4#S\R%K:EO>,U,`W?D\,2%Y^VLY@+.SX9M;ZQX0$`;>-/``H%@;ZY +M@`@X/!N#MX+6%,J$FQ$V/0V`N+N-`STQ$IR;P!30@K:/'#PX"H2^OH,:"@!T +MXV(``.2VN;<0/SLUD[&VGA83]YS*`C`U_;*EL6\R/P[M@H57;>N.B/(T.3-: +ML[JQAI$.^ULX,`.3D"C;ZRGP<,'?_W&`D!DK*XB`8Y +M.0V$MHOB%GN2FGDU,@N2O[JU&#(S!I&&ZVUXA;2+9#`X-NJ\N(L6-0YJXE,% +M`'2*O[%$,CHQ_+:S@&\8>I?C!3<%!3@F,H,,S3WLJ6Q8S,\#^.`GG5MEHB*^30X,TJSN[9W-349Y.00!FB" +MO;*5-CH]8K2]B$X$$>;K%C4W'(B[OI\T.3!K@XZ29G.9CY@'/3P&B+N^FPXP +M"&60Y!82Z+2R@@`Y.`*"O[.#4] +M-9"_NK4>,C,'EX7G:G^'MXI[,SLV[[VYBQ<+#&WC<08"<;6^L%8R.C'TM["& +M;1Q%DNT$-C9LMJ6]Y3$^-%V#AOQO^8**D0X^/1*WNK+M"#MD!1.;L+V$ +M"SL_&XB\M^<$&ECK90PW!X&^N(,..3T:AHJ'36WH@X<0,#P.AKBXC0$S-Q&0 +MEF02S8ZSB!T\.S68O+R`'@\%V>00#@WZL;BV%SPX-9>WM),5;Y6%]`\R-\.R +MI;!F,#T,YH:096V3M;3D-S@S?;"[MDD+"QWD]A\#%8*\LI8V.C)NM;*.3AMI +MZ)43-#8>B+N^GC4^,6N`C9=@0X6(F@8]/P&)N[Z;##$.>9?.'!^5M[V-`3DX +M#8.\LYT%`6GBW@8U`I*]NXH$/CX-F+6,_FK&A(9X-#PUEK^ZM1PS,`25FTMH=B$/69[P8Q'ZBBI;./ +MDW4<``DT,#T^/SD\/S,P-`L`!!5E^NJ9A(.-B8B*BK6*BXB.C(*`AH6>D)7B +M^<1;TM#6U51645!24EU<7%]?7U]<75U24U!145975U15U=74U]?6 +MUM;6UM;6UM;6UM;6UM?7U]?4U-34U-34U-34U-35U=75U=75U=34U=75U-75 +MU=34U-34U-34U-34U=34U-34U-34U-34U=74U-75U-34U-34U-75U-75U=75 +MU-34U-74U=75U=34U-34U-74U=75U=75U=74U-34U-75U=75U=75U-34U-34 +MU-75U-34U-34U-34U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=35U-75U=75U=75U=75 +MU=75U=755=75U=75U=75U=555=75U=75U=35U=75U=75U=75U=75U=75U=55 +M5575U=75U=75U=75U=75U=75U=34U-75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=55U=75U=75U=75U=755=75U575U=75U=7555555=75U=75U=75 +MU=75U=75U=75U=75U=5555555555U=75U=75U=55U=75U=75U=75U=75U=75 +M5=75U=75U=75555555555=75U=75U=555=75U=75U-35U-75U=75U=75U=75 +MU=75U55555755=75U=75U=755555U=75U=75U=75U=55U=/BD.WA\\1727=Y +M>&1E9V5D>WA\$U/`V.NKZ: +M!P-A[V((-6>QNK8^WLYTW)3+4M[:>:G^;AVDP/P*(N[SK#PD4 +MX&<,#O>SNK0$/S(WL>\Q)3#KL+"?$&F1GA`P/02TNK+&-340X'(# +M`^^RN(X,.3(4@(#\;)>UM-4S.C>8O;.3&1/MD1TQ,Q:QI;!A-C<3[M4$!)"R +MOH$U.S-[CH_C;>N(B6(R.PN#OK.5!QOWZ1PV-G"SI;82,S80E_X>'Y^RO)PV +M.C#+M8ON;^",@Q`].0*(N+/E`@9$X!TT-?B]NK4'/3$7G.@7%INSL^`P.C:5 +MMK7I%?>!A!@]/P6TN[!>"0)YYQ,*#Y>\NXP,/S%MA))C:9JQMDP].C2;L[?L +M$$":G`0R,A2QNK9L-0YAYA0/`9F_N88U.39W@)IV8)NVM14\.PF`O;?D&6"3 +ME`8S,4.RNK0<-@MC[&T#&X>_OY(V.#?PCH%49IFTCQX_.`")O[?-!Q;HXP8P +M-."\NH@&,S5FE'$'$(&\LN0S.S25M8W!8)*(@0<_/ABTN;=V`Q[[^`8V")*^ +MNX(,/35\G<$>:8.]L7T].PN9MX[,;I2,F0,_/6NPN+1H#@3&\@0T`H2YN(0U +M/S53A>`69(*RM!$_.`R`L(C8%^&!EPP\,U>RNXH<-0!0_1L+!(.YOI$V/C7_ +M@99OBX1S=H>U +MF@\Y/&VQOHEK`6CKTPPP#(&XN9L*,@_!EF8%?HN_MQ(^.0.&M(%Q>YN)E@LY +M,\>RN8\=#!/F4PTW!XR[OY4W/0_EGEL<7(N]BPVO8-J'/V>=S4]#X.[OIP(-@;R +M_!L#=+>XMQ\_/P:$CI!CR8RTD30[,_>SO(`3!$26934P!HFZO^PT,`;G[1,' +MSK>^B@$Y/QB"M9]ATH"(Y3\ +MC0X[/!>(MYMC3H2-6S8Y-86^OY@!#!7A9@XU;[:ZL&DR,@20GG(0[[>RA#4[ +M,G^TL9IH9YZ&83$_#X*XO)8/"Q#D>`T)1;&[MQD\/1N;A]H5Z+2QD38Z,/ZQ +ML)L6%9>9%3$]!HNZO>0*-!SF30$"^K"XBP`^/1*&@^1OZ8JT_C$[-I&RLYX? +M'>:0%C8S'[>ELT\W-Q_LP`4'ZK.^@@DX,FB,CNYMXHF(<3,X-82_LI`$!=KK +M$#6WM)<5WX:'$C(_!HJ[L_<.#&'F%PL.XKV[ +MB`,_,!2%G&=JGK&Q]C,Z-Y"PMY40&#,]'+:ZL'TU"6[A:0\#D+RX@@@Y +M,6&!A$%MG[>T93T["H2]MNX>;I&6!3,P8["EMA4$$^WO!#$WP+VZM1LP-&F46@0*C/-B +MEHB#&SP^!XJYMM`#&_#G!38*ZKRZC@,]-&.2\Q\4AKVPP#([-)"WB?]I[HV% +M!CP\$K:[MV4&I:"ZL8*59Q@""#0R,CX_.3P\,S$U"`$::G#DE)B'@XR)B(J* +MM8J+B(Z,@H"'FI^0E>/\VD1]9FQK%!81$!,3$Q,0$187%&IH;&-F97]Q2$9< +M5-/8QLW)]?3W]_?W]_3UR\[-P\;%V-_=T-;55%904U)=7%]?7UQ?7%Q=75)3 +M4%!15E=45=75U-34U]?6U];6T='1T=;6UM?7U]?7U]?7U-34U-35U=74U=74 +MU=75U=75U=75U-35U-34U-34U-75U-34U-34U-34U-34U-34U-34U-34U-34 +MU=75U=75U-34U-34U-74U=75U-34U-34U-34U-34U=35U-34U-35U=75U=75 +MU=75U-75U=75U=75U=75U=75U=75U=75U=75U=74U-35U=75U=75U=75U=35 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U575U=75U=75U=75U575 +MU=75U=75U=75U=75U=75U=75U=75U=75U=555=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=75U=555=55U=75U=75U=75U=75U=75U=34U-35 +MU-75U=75U-75U-75U=75U=55U=75U=75U=75U=75U=75U=75U=75U=755=55 +MU=75U=75U=75U=75U=75U=35U-75U=75U=75U=75U=755=55555555555=75 +MU575U5555=75U=74U=75U=75U=75U=75U=75U=75555555555=75U=55U555 +M5555U=75U=75U=755=75U=75U=74U=75U=55U=75U=75U=75U=755=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U-75U=75U=75U=75U=35U=75 +MU=7WEI3FY\#90TM\>65E9&=D97AYW]+0UM355%914%-275U=75U=4E)34U!145%145975%555=75U=34 +MU-74U];45-55U-74U-34U-35U5755=555%755515U-1555155%1455555=55 +MU=75U=555=555=755=75U5755575U575U=75U-75U-75U=75U=74U]575%35 +M5575U=75U=75U=55U=75U=55U5145=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U-75U=75U=75U575U5555=76U5=55%555=75U=755=75 +MU=34U=75U-75U=34U=555555U=55U=755=75U=75U=75U=74U=75U=75U=75 +MU=55U555U=75U5555=755575U=?55U145575U=35U=75U-35U-75U-35U=55 +M5U75U=75U=74U-35U=75U=5555555555U=55U=74U-35U=74U-34U=74U-35 +MU=75U=75U=75UM1755755=75U=75U=75U=75U=75U=75U=74U-75U5555575 +MU=755=7555555=75U575U575U-755575U=75U=755=75U=755=75U=75U=36 +MU%155=55U=75U-74U-35U=755=75U5755%15U=75U=75U-35U575U=555575 +MU=75U=75U575U=745=75U=755=75U-75U=75U=555555U==55U145=75U=74 +MU-74U-74U-34U-34U-35U-?5U=7555755575U=75U=75U555U555U575U=75 +MU=75U=755=5555555=75U=75U=75U575UM565575U=35U=75U=75U=75U=74 +MU=74U-55U=35U=74U-34U-75U-75U=75U=75555555755=75U=75U=75U=55 +MU=55U=75U=75U575U=76U5355575U=75U=75U=75U=74U=35U=75U=37U-75 +MU=55U575U=75U=75U=75U=75U=35U=35U-75U=75U=74U-34U=75U=75U=75 +MU=75U=;55U545575U=75U=75U-34U-75U555U=545-75U=35U=75U=75U=75 +M5=55U=75U=55U=555=75U-75U-75U-74U=75U=74U=74U=74U=74UM575515 +M5=75U=34U=75U=75U=75U=75U=74U]35U555555555555=55U575U=75U=55 +M5=75U=75U=55U=75U575U575U555U=75U=75U=34U574U=75U=75U=75U=75 +MU=75U=55U=34U555U=55U=75U=75U=75U555U55555555555555555555555 +M55755=75U=75U=5555555555U=955U545=55U=75U=75U=75U=75U=74U-75 +MU-?55554555455545575U=75U=75U=75U=74U=75U575U=75U555U=755=75 +MU=74U=34U=74UM5755355=555=55U=75U=75U=755555U=555=75U-74U-35 +MU=75U=55U5555555U=55U=55U=75U=75U=755=55U=75U555U555U5555=77 +M55=45-75U=75U=35U=75U=55U=55U=75U=37U%55555455555=55U=74U=75 +MU=75U=75U=74U=555=75U=755=755=75U=75U=75U=55U=?55U55U=75U-35 +MU=75U=75U=75U=75U=355=74U-34U-34U-75U-34U=34U-34U=75U=755575 +MU=75U=75U-74U-35U-35U=755=75U=75U]575575U=75U-75U=75U=75U=75 +MU=35U=75U]34U=75U=75U575U=75U=75U=75U=75U-34U=34U-35U=34U=35 +MU=75U575U=75U-75U-36U%155=74U-34U=34U-34U=74U=755=74U515U=74 +MU-35U-74U=35U-75U=75U=75U=74U=75U=74U-75U=75U=35U=35U=755=75 +M5=75U=?55U545575U-75U-35U=75U=75U575U=75U=?7U=75U575U=75U=75 +MU=55U=55U=75U=75U=35U=75U=35U=75U=75U=75U=75U=34U-34UM145575 +MU=75U=75U=75U=75U=75U=75U-15U=34U-34U-35U=5555555575U=75U=75 +M555555555=75U=35U=35U=75555555555575U=76U5=55555U=75U=75U=75 +MU575U=75U=75U=74U-7555555=555=75U=34U-34U-34U=74U=75U=35U=74 +MU-75U=75U=75U=75U=75U=75U-;45U55U=74U=34U-35U-75U=75U5555=75 +M5%75U=75U=75U=74U=75U=75U=34U-34U-75U=55U=555=75U575U=75U=74 +MU-75U=75U=74UM5755155=75U=75U=74U=35U=34U-34U-74U]?5U=75U=55 +M5=75U=755=75U=75U=74U-34U-75U=75U575U=75U=555=755=75U=75U=36 +MU5355=75U=35U-34U-34U-34U=35U=75U555U=74U-34U-35U=75U=75U=75 +MU=75U=75U5555=75U5755575U=75U=75U=7555755=75U=;55E1455755=75 +MU=75U=75U=75U=75U=35U=?4U=555575U=75U=75U=75U=75U575U=75U=75 +MU-755=75U=75U=34U=75U=75U=75U=74UM14U575U=55U=75U=75U=75U-74 +MU-35U=355575U=75U-34U-35U-74U-75U=75U=74U=74U=74U=75U=74U-34 +MU-34U-75U=755=55557755?55=75U-75U=75U=75U-34U-35U=35U=74U%55 +M5575U=75U=75U=75U575U=75U=34U=35U=35U=75U=355=555575U=75U=55 +MU=55U=35U=75U-75U=74U=74U=74U-34U-34U=755535U=74U=34U=75U=74 +MU=75U=34U=74U-75U=75U-35U=74U-35U=35U=75U=75U=75U=74UM545575 +MU=75U=75U=75U=75U=755=75U=74U]?4U=7555555555U=75U=75U-35U=35 +MU=74U-35U=75U=75U-75U575U=55U=75U=75U=31U5355-75U=34U-34U-75 +MU=555=75U=75U-545=55U=75U=75U=75U=75U=75U=75U=75U-75U-75U-75 +MU=75U-34U=75U=75U=75U=75U=?55U145=75U=34U=75U=75U=75U-75U=75 +MU=?7U=55555555555=55U=75U=75U=75U=75U=75555>969SPIZRGA1]FFI@<#G:VL_H\)S\#`S`R!8.-!B4G,6!A +M``:>LK80/SUIC(#YX+>XMA@]-)&VB>SJM+V&-3@UA;:"0,2/M4D].@^,L(9I +M8&WF#0Z,9"QB-9EAXC#,SL.C+V) +M96Z9@1$]/ARVOX(1$)>2!SPS^[R_FP<:Y^`",@J&N+WE#@;-Q@PQ!+6EL10T +M`]]1#35^L[J(`S`"]]X`#9>_N)@T,@'L^00;AKZ]33(]&)SH$FF/OK<$.3)M +M@9)K1XN]@#4[,>&)FF?WBK'L,SL+A[>$9/^)BQ4_.02*L(5N]8V&`3D]2;"S +MG!-:AY8(.3:9O[/@!&&=VC0\#8B[MF<-%^AF-#`7L+J+&@L=YVHT-.*_NX<. +M-QSD%0L#AKB_^38V$.]L#1*+N[$2/3%MDWP'2[>XC@XY-\&%V1WBL;R=,3@( +MDX+G:I"QL7L_.0:#B.YCG+:)!S@_;+6U[F*_T'-P>+NK-O +M-@M]_@0(8[&ZM0$R"-'B'@#BLKB$-#\/[9$6'IB\O/3@"@[2>8.R*CALY/A:TL9UKX8R%#S@SX[*PZA++AN`T.36` +MOK'3!'2[M!<";>L4-C%TO;N-`0@4YA,W"YRYN9,*-!?D$PH'C+N] +M>3`W:>\7#&BWN[0'/#1WD&T'\+"Y@#4^"N&%=1*1L[WF,CD-F(#,:)BPMQ,^ +M/A^,COMFA;:"##LRU[>*_F&:M9`W.S>8L[76:)^-3C,Y`HB_B&,3E)H3,CUJ +ML+Z"'AKEE`HR$946.LX0T +M.S:5M8%]WHZW]S([#H.Q@6?7@HP3/SX?M+*'%7>'F@`^,O>RO9T9;9_O"3\U +MA[FR^0`1ZEN(=#'&Q +MNX@,/`K%EA0$Z+*^GC8^#Y289Q"8O;-V/#X'A(%;;8:SM0.W7F&M>8P.PJ!LHEP8YJ":3T^!;2_C147DYD%/#):O:"LI[R*F=$3 +M`0XU,#(_/CX^/STP-@H,!QUAW.^2A8&-CXB+BK6UBHN)CXV#AH28G9;NY/54 +M=7IC:147$1`3$Q,3$Q`1%A<5:VYM861X7ID +M9&=E9'AX?7-T2D%%4E;1W=O$P\S.SLO(R\C(R<[-PL'&Q=O9W]+0UM155U91 +M4%)=4EU=4E)24U)34%!04%%15E975U=55575U=35U-34U-?4U-34U-34U=35 +MU=75U=555555555455145%55555555755555U=75U575U5755574U5155554 +M55555=75U=555=75U=75U575U=555=5555555=75U=75U5755575U=75U-36 +MU%155=75U=75U-7555555555U=75U-75U=555%75U=75U=74U=75U=755=75 +M55555=755=55U=75U=55U=75U=75U-75U=75U555U555U=75U=75U=75U=75 +MU=75U=75U=75U=75U575U=74U]35U=755=755=755=75U=75U=75U=75U=75 +MU-75U-35U=75U=75U=75U=75U=75U=75U-75U=75U=74U=75U=75U=75U=75 +MU=755=755%=55=74U=34U=35U=55U=15U=35U=75U5555575U=75U=75U=75 +MU-75U=75U=34U=74U-7555555%555575U=74U-34U=74U=75U=75U=55U=?5 +MU=55555555755555U=55U555U=75U=55U=75U=75U=74U=755=75U=75U555 +M5575U=755=75U575U=75U=75U=34U-35U=75555555175555U=75U=35U-35 +MU=75U=75U575U575U575U575U=75U=75U=34U=34U=75U=755575U=555575 +MU5755575U=35U=34U-?4U-35U=755=74U-5555555=755555U575U=75U-74 +MU-74U=74U=75U=75U=75U=34U=75U=75U=75U=34U-75U=35U=75U=75U=34 +MU=75U=75U-75U=345=75U=34U-74U-74U=74U=74U=75U55555555=75U=55 +MU=75U=75U=75U=75U=75U=35U=555555U=75U=34U-34U=75U=55U=75U=74 +MU=74U]35U5755=75U-74U-35U-75U=75U=35U=74U=34U=75U=755=555=75 +MU=75U-74U-35U-55U575U=75U=74U=75U575U=75U=35U=74U555U=74U=34 +MU=75U=755=5555555555555555555=5555555=75U=75U555U55555755575 +MU575U=75U=75U=75U=75U=75U=75U575U-75U=34U=75U575U=75U=75U=34 +MU=75U=75U=75U=75U555555555555575U=75U=755=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=545-75U-34U=75U=75U=75U=75U=75U=75U575 +MU=75U575U=75U=55555555555=555555U554555555555555555555755=75 +MU=75U=75U=74U%5555555575U=75U=5555555555U=75U=74U=75U=75U=75 +M5=75U=75U=75U=75U575U575U=75U=75U=75U=75U=75U=75U=75U=755%75 +MU=75U-75U=75U=75U=75U5755555555555555=75U=75U=75U=55U=75U=75 +MU=555=755=75U575U575U=75U575U555U=75U=75U=75U-15U55555555555 +MU=74U=75U-75U=75U=75U=755=75U=75U=75U=35U=75U=75U=75U-55U555 +M5=75U=74U=75U=75U=75U=755575U515U=74U-34U-34U=75U=35U=34U-75 +MU=75U=75U=75U-34U-75U=75U-35U-74U-75U=74U575U=35U=75U=75U=75 +MU=75U=75U=75U=75U=?7U-75U=75U=75U=75U=75U=75U=75U=35U=75U=55 +MU575U-74U-34U-35U=75U=75U-35U=75U=35U-75U=75U=74U-34U-34U=75 +MU=545=75U=75U=75U=75U5555575U=75U-75U=75U575U=75U=75U=74U-34 +MU=74U=75U=75U]575%155=55U=35U=75U=35U=75U=75U=34U=74U-75U=55 +MU=75U575U555U=75U=75U=74U-34U=34U=75U=75U=75U=75U=755=75U=36 +MU%355=55U=34U-34U=75U=75U=35U-35U-35U575U-34U-34U-74U-75U%75 +M555555555=755=75U=35U=74U=75U=34U=35U=55U=75U-?55U1455555=75 +MU-34U-35U-75U=75U=75U575U]?5U=74U=75U575U=75U=34U-34U=35U=75 +MU=75U=75555555555=55U5755=75U=74UM14U575U=75U=75U=75U=75U-34 +MU-34U=75U554U=74U-75U=74U-74U-75U=75U=75U=55U=55U=75U-35U-35 +MU=75U575U575U-75U=76U5=55%55U=75U=75U=75U=75U=75U575U=555=37 +MU5755575U575U=755=75U=55U5555=55U=35U=75U=55U=755=755=75U=75 +MU-75U=;45U55U=74U-34U-35U-74U=75U=74U=755=555-55U=35U-35U-34 +MU-35U=75U=55U=75U=55U575U5555555U=75U=75U=75U=75U=74UM145575 +M5=75U=75U=74U=35U-75U=35U=75U=74U]55U=55557555545=55U=55U=75 +MU=75U=75U=75U=75U=75U575U57555555=55U=71U%=55-55U=75U=74U-34 +MU-35U=75U575U=755575U=35U=75U-35U=75U=75U=75U555555555155575 +MU-34U-34U=34U=74U=35U=34U-;55U545575U=35U=75U=75U=75U-34U=75 +MU=55U-?5U5555515U555U5755=55U5555=75U=74U=75U=75U=75U=75U=55 +M5555U=75U=74T=175%155=75U=75U=75U=75U=75U=755W-@?W-*1%S6W=H" +M+2%%1]PE?,%-0V7L[F.`CLY!XN_L?H-#A+GY1<$ +M88"PM'TS.S>>OKB-`3,T:IF:]VG%AHF3`CTS8K&ELV4R/@F1M8GB%F/KDGH. +M-P:!OKZ:-#H]8+>]B6`"!W3C>@<&]+6]BQH^.`R/N+R2#C8-T)SM;VF6BXKR +M-#XV[K^ZM04\,@6%B81+:>6%DQ\W,1"UN[WP,SLV[+:QA1,':N;S'@X'G;.\ +M@0D[/ARWN;%7"S49X.IE''V!MHAJ,CD+AKBX@0\]-VV'@>QM1YB#[@TS-M>S +MNK80/SD,FK:*XAP0]Y1[#34>@KZ]ES$Z,].POXX7"0-G[U8>&^6ULX(!/CX& +MM;N][C4S#_>$DW!MZXR,1S0\-9R^NHX#/C(9@+2!=!%;DY4<-31AM[NP>ST[ +M-)VSLYH;`ASP^Q8`'IFPLI@U.SQLL;NV9C0W&^B=Q!1TA[2"$C(_#8R[N9@U +M/S=\C8^6;&26A/@",37CLKJU!#DY`X"SM.<%&G;L<0$.%(R\L_,S.C'OO;Z, +M&30.8Y3E%!/AB+:$`CX\'+>ZLLPV/0_@@X70;.2&AF4T,@^$N;B`"#@R$8ZV +M@WX9;>SM$P@)7+>YMQ$_.PN'O+*?!@@%S>)C!1&8L;&5-#@SU+*ZM!$Q,1J0 +MA.UM<9B)AQ@S/02+NK^4-CDWWXB*DFL5Y)S.`#T_38Y,>R\NHH:,C`8F8.09&60@Y\%,#`2M+J]\S,X-."TM)P1'$>4VP8U +M`9Z]OH`).S\L. +M/#%6LJ6V$3P_#9ZUC/T19)23;P@W&(RYO)8Q.C!4MKV-%`(%7.!C`0?BM[V, +M`3DY!HNXLNP+-@#PG.=K8IR*B$TV/C2=OKN.`SPS'(:)F'EOXH27!38W8K>Z +MLWX].#60L;:<'P1MX\$:#AJ%LKR:-3L\;K&YM&8*"Q+O[F,<68*VCQP]/@R, +MN[Z9"STT<8&&Y&_2A8/X#C(TX+VZM`4^/P"&MHCP'A?XE6T/"A:)OK+_,SHQ +MXK.\@AP(`''O21@9Z+2SA@PY/Q^WNK/,-S`"YH26>V"6CX)A-CP)A+FX@PD^ +M,Q:-M81E%M^2[QHT-5^QN[86/S@(A;*PDP0"$/CS$@,2A+.SES<[,ERSN+46 +M-S0AI?9.$V@\P")&\NXD#.#\$C+.* +MP`086.QD``]@B+^Q<#(Z-Y*\OX`$-`Q^E_,6$.N*MIX)/CUHL:6P>#$R`I6# +MF$9M[8"':S"P_YL;FU&CDX#(*_L)<#"1CS +MX6D$%82QMO@V.S'CO+N+&#`V'9V%YV]'A8F;!S(R'+2EO?\P/C7GBHB7%&GC +MG%T--P*8O+F#"3L_'(J]M40#`6?C2`0`=8B]M!4\.PJ'OKZ'`C8)?)WJ817N +MCK65"S\P1+*EMA8R/0.=B8;3:\N;GA0T,06/N+^1-CLP6;>P@14'$?GE$P\` +M[K&_C@`Y.0:(N;/B#C4$_Y1U'6*%M[5#,3DWDKZ[CP$],1.%@)1ATEA,=T)1:`#4'A+R_A34[/6BWO[5G#@QH[<\=!=:)LX@? +M/#D/C;B_F0DS"TB%GUENYH*.Y0L\-^:]NK0:/SP!A+6"V!%REI$7"C<3B+B] +MY#,Z,>>PLH$2`AO9YF@!!9>VO8`,.#\9M+NPSC4V!N><_!5GF+6.8S$^"X2X +MN(,//S$4@(Z<9F+HA.@&,31#L;JQ%#\X"9NPMY&+HJ2RB9U!'0`)-3`R/SX^ +M/SPR,3<(#043>\+JG82`C8Z(BXJ*BHN(B8^-@X:%F9*4[/K.779D8F@5%Q$0 +M$Q,3$Q,0$184%6AO8F%D>7-U0EA1T=[$PL[*]?3W]_?W]/7*R<_"P<3;WMW3 +MUM155U%04U)=7%]?7U]<7UQ=4E-04%%65E145=75U-?7U];6UM;6UM;6UM;6 +MUM;7U]?7U]34U-34U-34U-34U=75U=75U=75U-34U-34U=74U-34U-37U-34 +MU-34U-34U-34U-34U-34U-35U-35U-34U-75U=75U=74U=34U-34U-35U=35 +MU-34U-34U-35U=75U=74U-34U-34U-75U=75U=74U-34U=75U=75U=75U=75 +MU=75U=75U=75U=74U-35U=75U=75U=75U-35U-75U=75U=75U=75U-75U=75 +M5=75U=75U=75U=755=55U=75U=75U=75U55555555575U=75U=755=75U=75 +MU=75U=35U=75U=75U=34U-34U=75U=75U=75U=75U=755=555555U=75U=75 +MU5755=55U=75U=75U=75U=75U=75U=35U-75U=75U=75U=75U=75U=75U=75 +M5=55U=75U=75U555U=75U=75U=75U=555=75U=75U-75U=75U=75U=75U=75 +MU=75U55555755=75U=75U575U5755=75U=75U=75U=55U575U=75U=75U=55 +M55555=75U=75U=75U575U=75U=75U=75U=75U=75U=75U=35U=75U5555=55 +MU=75U=75U=75U=75U=75U=75U=755=75U=75U=75U=75U=55U=75U=74U=75 +MU=75U=75U=75U=35U=35U=55U=75U=GID./A]\5<2W%Y>V1D9V5D>'A]IZ!!6#O;%L/SL-C[RT7082Y?X$-`"&OK^5 +M,#LUD+2,P17GAY4",C>5OKN#"3PUTX>087Z'M(``/CQNL[NU'S0,2.EB!VB- +MO;<0/CL`B+RU?0$0Y_<&-`:#N;SD,S@+GK2-56KMA^\//32=N;B&"CP*]H:7 +M8G:&M(<-.3USLKB)!30"7>]I!V..O+09.3@$M;R+8`$6X<$!-`6,N+W2/3@. +MA;2#0FOHA^<)/36:N+B;-3P)Y(:5;$&`M(4..3+'O;B,!S<#V>T5!WB(O(H' +M.#D>M+R.:0$5X]0#-!F)N+)^/#D"A[2!FR6A]TU/0^"N[[K-CT-E8?C:<:,M)`U.#&4O[F'`C0'\N80!].TO(\,.SQL +MMKV#$`9B['$,-1>TN[$3/SX$@[2$9F.0ATPT/0*/NKS[,3T`EH?D:/"/M.HW +M.#:VO88U.C+;L+*$ +M&0=Y[V`."GZQN[0'.3P3C[2>;WN?A&TV,@2UNK)X,S(%G(3(:..(M?4Q.#6! +MN+R4"34>X/8>!>FQO84T.C/GL[*8&P1W[VD("E*PNXH#.3T5B;62:7.9A14Q +M,AFWI;!H,S,9GH7?:>F+M44P.0B"N+W@"S42XL(8&I>QO9PV.C'JLK.=!01& +M[!0+"/&SN(D/.#)AB+61:DF;FA`Q,Q"VI;$0,C`2FYI2;I2*BV4S.0^.N[+T +M"C41[-,:&)*PLI.RN(T(.#!TBHJ5%5^:F1\P,&BP +MI;<9/3$6A9M";Y"UB&@R.0.+N[!;-0H4[EX%'IFSL^,S.C28O;'N!QO;XQ(* +M#I2]N(`U.#'9M8OO%=V%GQHS,'JSNK0$/39HA9EV;9VUCA$]/@:UN[%E-0AI +M[D@$'86RL\LR.S6'O;;G!AG(X1XU#)*\N80T.#;XM8CF%,Z$D@0S,5.]NHL! +M/3=FA)]_8)FTC!X\/QJWN[9N-`E@Z7T$$X>RL$X].PB`O+?U!A_PY!LU`IB_ +MOIXV.#?LM([_%/*$D0$R-OR\NHX-/#1PAYUE9YJTC04_/QVVN[06-`YEZ64' +M%H"]L6`\.`R-O+16!AWY^04U`(2^OY8Q.#67M(_)%>6'E`,R-^^_NX(./#5? +MAY!F>X2T@`8^/!6PN[4<-`QQ[F`':H*]MA<_.`..O+5V`1/D\`"'Z`TR-)&^NX$(/`K"AY9CSNX@;-`U![V\';(^\ +MM!P^.0>+O(MD`1'FS@$T!(VYO?0R.0Z9M()::N^'X`XR-9ZYN(4U/`C^AI1M +M28&TA`PY,EBRN(\$-P/4[&H'9XF\M04Y/ANUO(EO`13@W``T&XZXLDP].0R% +MM(!T:.J'^0@]"X2XN9PT/0[@ANAO7H.TF`DY,_*\N((!-P#'XA<'<(N\BP8X +M/A*TO(\5`6KB70(U'(NXLV,\/@.&M(9^;Y>'S`H]#H&[OI\@`L[,D"QLH2A/%HYXFU^#8X-(2YOY`.-!CF\A\%X[:]AS4[,_2PLH48 +M!WWO;0D*=+&[M0$Y/1&.M9QN?IZ%:38R!;2ZLV$S,QJ?A,-H[(BUV3`Y"H"X +MO.@(-1_C]1D%ZK&]F#EL!0R,!^9A=%IZHJ*=S,Y"8VXLN4+-1/MQ1L;D;"RDS8Z,9>RLY,%!5CM +M%PL(^;*XCPXX,V6+M9=J0YN;$C$S%K&EMATR,!.;FEYOE[6+8#(Y#8F[L\0U +M"A;OU1H9G;.RZC`Z-YRRL+.BI+*.DW4?``DU,#T_/CX^/#(Q-P@-!1-YS96= +MA(",CHB+M8JUBXN)CXV#AH69DI3L^LY==F1B:!47$1`3$Q,3$Q`1%A05:&]B +M861YW-/6U%1645-375U<7%]? +M7UQ?7%U=4E-045975%555=74U-?7UM;6T=;1T=;6UM;6UM?7U]?4U-34U=74 +MU=75U-35U=75U=75U=75U=34U-74U-34U=34U-34U-34U-34U=75U=35U-34 +MU-34U=35U=75U=74U-34U-35U=75U=75U=34U-75U=75U=75U=74U=74U=75 +MU=75U=35U-34U=74U=75U=75U=74U=35U-35U=75U=75U=75U=75U=75U=75 +MU=35U=75U=75U=75U=74U-35U-75U575U575U=75U=755555U575U=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=555=55U=75U=75U=555555 +MU=75U=75U=75U=755=75U=75U=75U=755555U=55U=75U=75U=75U=75U=74 +MU-34U-35U=75U-75U-35U-75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +M5555U555U=75U=75U555U=75U=75U-75U=755=55U=75U=75U57555555555 +MU=75U=75U=75U=75U=75U-35U=75U=75U=75U=75U=75U55555555575U=75 +MU5755575U=75U=75U=75U=75U=75U=75U=75U=755=55U=75U=75U=75U575 +MU=75U=75U=75U=7:ZY'@X?3$7DAP>7MD9&=E9'AX?7-T2T%%4E;1TMO%P\+. +MR*M+:SO+:TN:"F@`P(T+2TRQMO[QXY(#IL +MCI$U/C$##ST_!;2RE#$^#Y292GB"O[!I/3#NO;*'QIN(GP\R![>EL&`(&^10 +M`@_NO+Z6,#X"DII_%)NVC`TZ//2PMN`?U)C6-#T$MKJT&S!"3LPD[RQ_P5DD78T,Q&PNH@#,`/X^!H%FKRS9S\^'HR.YF"? +MBI\U.S>&OK%=`!3O>34V<+VZ@@@R`^SK$!*'O;8=.3]JM;7B;Y&,Z#0Y"X^X +MMF,/'^5Y"#7ZO+B%-SP`D9UL%8:RM08[/$:VM.(7XH'Q-S\#M+NW$S4%\G$, +M#Y:_OI4P/P:8A'1BA[&,##LR[;.VY!S#F$`W/1BQNK4$-P;]4`$!F;^\TCT_ +M!8&#QV:$MX<*.S&>O+;#!7Z1>S0P:+.ZCPTP`.?S!1N$O[-K/C\3CX_^89B* +MDS0X-("^MG$`%>YF-3=7O;N!"C(`Z>X2$(:]MQLY/&"UBN=ODXSC-SD.B;BW +M:P\=YV8+"NR_N)\V/0:0DFYH@;*+`SL]QK:TY!?N@=XV/P:WN[0?-1K^?@\, +MG;Z^XS,\!)J%8 +M@(#69(>WA34[-H6\MU`%<9%A-S!GLKJ-#S`&X?0%&8:_L!$^/!2.C_=GFHJ7 +M-S@U@KZW9`!IZ6TT-_:\NX0U,P;J[1T6@+RT!#@]?+6+_VV=C/@V.0V*N+07 +M#Q/G8@L+E+ZYD3$]!Y*0:V^#LHD-.S+YL;7S%.J!138_!+:[BALU&/MG#PV9 +MOK_S,CP:A9IX9("P@`L[,9"RM,0=_)AG-C(6L[J.`#<%Y74#!X>^LF$\/!*` +M@5YXAK>9-#LWA[RW2P5/D6\W,7>]NX`),0?CP`0?@+^Q'SD];HZ,P&6%BN@V +M.`B/N;1M`&WI:S0TYK^XF#0S!)3@'!2"O+4!.#);M(CT8I^,R#$^`[6XM1,/ +M$>9I"@B3OK[J,3(%G9$58X*RCPX[,^*QMW=!!V"OK8:.3UFB8W2>(2*XS$X +M#HFYM6L`8.D4-#3IOKB=-S,%E^TB<1@F8S5,#X&M+B*'`\7 +MYA4U#I^YON$P,AB;LK5,$N:9:S$S9K*[@PTW&.9[`@6#N;`1/SUJ@H=T +M=H.WD38["H._M6<%U)$7-C;QO[B%"C$;[U$'$XR^MPYN98W,!B6^AYNC[R(##LS_[2/UV:;C$@P/@2WN(@9#Q7A +M%S4/FKF_\3,R'YZ4%WJ/LH,*.S&1L8A<:I"&;3`]$;"[C`8*$^1K"0&!N+)A +M/3(1AY]C=(RPFS<[-(2RBG`2XYD7,#-VO;N!#S5,3L(C;^*8AK;D1`Q-N:_N)DU,1GN1P<6CKZT`3@S6(B#1'&!B\XP.0.U +MN8@1`7GN$S<*DKF^Z#8P'Y;\&6*)O(X..S#@MXQ>9)J->#,_&[:XCAL,:.81 +M-0R$N+S4,S,2GNL6Q/OGA`P,%6\N(0.-!WA8PT>C[BQ&SXS9(V$?T6- +MM^TP.`Z/OXAI&LZ6'3$WZ;ZYDC4V'.E*!A2)OK4#.##%BX!)2H&+43,Y`;2^ +MB1(!<.\<-@N9N+[A,3`=D?<99HB\C`@[,>FWC4UZA8U@,C\,326N;F6-#83Z',&:XN^B@PX,/.+@79&@(AU,CD'M[Z/ +M'`%*[!XV"(6XO_`Q,1"0S1AXBKR""CLVE[>"=WZ$@F@R/Q"PN8($#&/F'#0" +M@[N]9S(P%)CM$5J+LH4W.S2:L(Q^;)R'$S(R?;VXAP((%><0";6IH+NQ@^YC +M&@(+,3,_/SD^/STS-C4.`1EI0>&1FX:"C(F(BHJ*BHN)CHR"@8>;G)'KX?#2 +M3'YA;VH4%A$0$Q,3$Q`1%A<5:VYM8&=[?79.1%+5W=K!S,C*]/?W]_?T]/7( +MSLW`Q]K8W-+1U]545E%34EU<7%]?7UQ<75U24E-04%%65U15U=34U-?7UM;6 +MUM;6T='1T=;6UM;7U]?7U]37U-34U-34U=75U=75U=75U=75U=75U=75U=74 +MU-34U-35U-74U-34U-34U-34U-75U=34U-34U-74U-35U=75U=35U-34U-35 +MU-74U-34U-34U-34U-35U=75U=34U-34U-35U=75U=75U=74U=75U=75U=75 +MU=74U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=755=75U=75U=75 +MU=75U=755=75U=75U=75U=555=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=5555555575U=75U=75U575U=75U=74U=74U=75U=75U=75 +MU=74U=75U=75U=75U=34U=75U=75U=75U=75U=75U=75555555755=75U555 +MU55555555575U=75U=7555755575U=75U=75U=75U=75U=74U=75U=75U=75 +MU=75U=75U=75555555755=75U=75U=55U575U=75U=75U=755=755=55U=75 +MU=75U5555555U575U=75U=755=75U=75U=75U=75U=75U=75U=74U-75U=75 +MU=75U=75U=75U=7555555555U=75U=75U=55U=75U=7#E);AYLG:6DAS>7ID +M9&=E97YY?'-T2T9:4U?0W=O$P\+.SLO(R\C+R<[,PL#&Q=O9W-/3T-=55%91 +M4%-24EU=75U=4E)34U!045%65E=45%155=75U=34U-?4U-?4U-?7T-=4U575 +MU=75U=75555555155514551455155=555=755%=5U=75U=75U=75U=75U=75 +MU575555555555555U=75U=75U=75U=55U575U=36U5945%555=75U=74U=34 +MU=75U=75U=75U55555555555U=?5555555755=555=75U=75U=75U=75U=55 +MU=55551555555555U555U=75U=;55U54U575U-74U=75U=74U=75U=75U=35 +MU-34U=75U554U575U-34U-35U=75U=75U=75U=75U=75U5555555U575U=74 +MU-75U-75U575U=55U=75U=74U=755=75U=75U555U575U-75U-75U=755=74 +MU-755=5555555555U575U575U=75U-75U-35U-75U=75U=75U=75U=755=74 +MU5755=75U=755=75U=75U=35U=75U=75U555U555U5555535U=75U=75U=75 +MU=75U=5555555555U555U574U=74U=74U=75U=75U=34U=?45=55U=75U=75 +MU=75U=75U=75U575U=75U=75U=75U575U]75U57555555555U=55U5555=75 +M5=75U=34U=35U=75U=75U=55U5555=75U-55U555U=75U=75U=75U=75U=75 +MU=74U=75U-75U=755515U=75U=75U=75U-34U-34U-34U=75U=75U-75U=35 +MU=755=75U=55U=75U=74U5555=55U=75U=75U=75U-75U=75U=75U=75U=74 +MU=35U-?4U=75U555U=55U=75U-75U=75U=75U=35U-34U-74U-35U=75U=75 +MU=75U=355=75U-74U-74U-75U=74U=75U=74U=75U=35U-7555545=55U=75 +MU-34U=75U=35U-75U-35U-75U=75U=75U-74U=75U=75U555U=75U-75U=75 +MU=75U=75U=75U=75U-34U=74U=35U=75U=755574U-5555555=555=555555 +MU575U=75U-74U=75U=75U=75U-35U=75U=755=74U5755=74U-34U=75U=55 +MU=755=75U=35U=55U55555555%55U=75U=34U-75U=75U=75U=75U=75U=75 +M5=75U=74U=75U=75U=75U=75U=35U=55U=755=7555555=75U=74U-75U=75 +MU=55U=75U575U]35U575555555155575U=75U=75U575U=75U-75U=75U=35 +MU=755=755=75U-75U=75U=75U-75U=75U55555555555557555555575U514 +M5575U=74U-74U-35U=34U=755=75U=755=75U=75U=75U=75U=75U-35U=34 +MU5555%55555555755555U555U=75U=75U-75U=75U=75U=?4U5555%155555 +M5575U=75U=34U-75U=555=555%555555555555555575U=755555U555U=75 +MU=75U=75U=75U=74U=75U575555555545-75U=34U-35U=35U=35U=755=75 +MU=75U=75U=75U=75U=75U=55U555U575U-55U=75U=75U=75U=75U=75U=75 +MU=755=75U=555=755=74U-75U=55U=555=55U=75U=75U=75U=75U=34U=75 +MU=75U=75U=75U575U=75U5755=75U=75U=35U=75U=74U=75U=75U=75U-74 +MU=355=75U-34U-34U-34U=75U-35U=75U55555555575U=74U=75U-34U-34 +MU=75U-34U=34U-35U=75U=75U=75U=34U=75U=75U=75U=74U=74U]?5U=75 +MU=75U=75U=75U=34U-34U-74U=75U575U555U=75U5755=555=75UM575%35 +MU=35U=75U-75U=75U-75U=35U-75U=35U=75U555U=74U-34U-75U=74U=75 +MU=75U=75U=7555555=75U=75U=74U=755575U=75U555U555U=55U=75U=35 +MU=75U=75U=74U-35U-75U-75U=34U=5555555=75U=74U=34U=34U-34U=75 +MU=35U=555555U=55U=555=55U=555%55U=75U-75U=75U575U=75U=755=75 +MU=755=75U=545=74U=34U-35U=75U=75U=75U=75U=75U=75U=75U=74U=75 +MU=75U=55U575U555U=75U575U=75U=75U=35U=75U=75U=74U=75U=555=75 +MU-7555755=75U=555575U=75U=75U=75U=35U555U575U=75U=75U555U=74 +MU575U=74U=35U=7555555=75U=35U=34U-34U-35U=7555=4U=74U=34U-74 +MU-35U-35U=75U=75U=75U555U5555575U=75U=75U=75U=355=755=75U=75 +MU=75U=75U=555=75U=75U=75U-35U=75U-?4U=75555555555=55U=55U555 +M5575U=75U=75U=75U=34U=75U=755575U-555=75U=35U=35U=75U=75U=35 +MU=75U=75U-75U575U554U=34U-34U-34U=34U=35U=75U575555555555=75 +MU=75U=75U=75U=74U-74U5755=75U=55U=55U=75U-74U=75U=75U=74U=75 +MU=755=37U=75U575U=75U=75U-755=75U-35U=75U=75U=74U=75U5755=55 +MU=75U=35U=55U-75U=75U=75U575U-75U=75U=75U=75U=74U-355=34U=75 +MU=75U=155555U55555555=75U575U=75U=35U=75U=74U-35U575U-35U=75 +M5555U=75U5555=75U=75U=75U=75U=34U=345=75U]75U=75U=75U=75U=35 +M6F=G<'!!1531V'P[(#@P#!;SGH"TM;>WL+*]M[>]IZ>W&S4;B;NQ'3@E-VAX +M`#0*&@4V)24(@;:=,2QGQH$3)WM:FV&O;^:-3T&MZ2Y[C4T:8"-E7SF +M@8<6-C%CL+N)"3H]0;>VE@6L;#G,SL+C[NR6#8V$YN$]V/B@H80 +M,3!FL[J+##@SW+>VD!L;1.-I`@:3L[/@,SH*C+BS1C"LK48/CX6L+N(!C`*5H>2?F6- +M=A]]E<0!"A*)OK<8.3X0L;F.!30"VI#2%D2#M)P(/S>9N+F0,3X/GK6`>N+F0-C\,G(N'?Q7DG%`/ +M-Q^+N+89.3X2M[^-&0L$].UN&=*)L9@*.3:?N;F0-SP-DHZ;>FV5FUL)-AF* +MN+$>.3X2M+V"'@\8\OH1!<2+L)LU.#:!\VULX4U.#&=N;Z0-#,`D8"48$.:@4@U,`6UNK$UNK`2/SP2B;:%$1E! +M[F0-#/>QO(8T.S&1O[R0"#<%ZI)!%>&/CG8Q/`>UNK`3/ST2C[29%Q/TZFP. +M#O:QOX8T.C"6O+V1#C09Z)1G%^Z(BW8Q/`:UNK`1/#(3C+6=%!7BEQ4+"/:P +MOH$T.C"4O+V6#`H=[N,5$92UM78P/P&UNK`6/3,0@HB6:F:7D!8U"O>SN8`U +M.C&5O;.7#0X6[/<2$Y&WM'0S/@"UNK`7,C,1@(SH:$^?G1,W-?6RN(,U.S'K +MLK"4`PUHXE\8')*VMW4R.0.UNK`4,S$6AH/F;L*%GAPV-,ZRN(,U.S'NL['J +M`0!FX'@''I^QMDXR.0.UNK$5,#84A(?W;.>!FQDQ-\"]NX(U.S'ML;;I!P1T +MX6\`&YBSL4`].`**N[%K,3<5FIM18NN"A1LP-MN]NX(*.#;CMK?M!1GIC8)^+A@0],%6]NXT+.3?DM(OZ'&[LYA@+!H2\LE0] +M.PV)N;=L-`EFD.458)JU@`<\,UR]NHT(/C?ZBH[S$WR7X00U`(>_LM(].PV. +MOK=B"@QXE-P38(>W@@<_,T2]NHT)/S3XB(+"%]*=X08W`X:^O=H].`R/O[1C +M"`-WZ'(>8(&QC08_,DZ]NXT./#7_CX'7:^6:X`,V`H:YO,(].`R,O+5A#P9> +MXFP%8X*PCP$^/7>]NXT,/0K]@H5`8NN'X@TP#(:YO/4].`V"O8MF`AK8Y!8& +M8HRSC@$Y/7*]NXT-,@CS@)]R9).`[`\S#X&XO/$R.`V#LXEF`!WQ\A\#;(Z] +MB0$Y/'ZRN(T",P[PAY9G.Z`@]"(:XO_DR/@*&MHUG&F#LT`8.:8J_B@$X/&>S +MN8(`-@+SG_%J5H"+Z@H\"X:[O^4S/@*'MX!G'TR56`,+:K6^M0$X//VNK*>\ +MBIO%$`8.-3`R/C\Y/S\R,S7-T0EA1UM[$PL[*]/3W]_?W +M]/7*R<_"P;EQM]-2WQY +M965D9&5E>'YS=W5*05I35-/?VL?"S,G)R\O*R,C.S\W#P`]$;KFY47`1.$L+#J-S@VD;ZX@`H[/6VTLX,?"@UF +ME.-A%?Z!@LH.,`^;O[Z%-#HR_[R[B`8R-FF"BYMM'7GL^Q,#&9VVMNLT.3:6 +MOKN-"#L]8+>]CQ,*#V"3D5EIPX6`_0TQ#)^]OX4T.CW`O;N+!CTP%X*UA&T; +M:OCG:P8>EK2WE34^-I6_NX\..SQNMK^($#0+:)V9\VQ$G(?Z`#<,D[*_A#4Z +M/56]NHH'/#,3C;>`8P02QN-E&ASKBK27"#PV[KR[C@\[/Q6VOHH6-S46GX3L +M8WB4A><'-`V6L[R'"SL]0KVZM00_,AR,MHUF`1I#[%D=$N..M98./3?@O;N) +M##L_%K:YM!>?X!L+`I6QO8<).#UPLKJT!3\\&(RPCGH#!F7I +M\!40_H**D0TR-^6RNXD-.SX3MKBW%3$V&9B-GG@5WI'C'0X`[+:RA@\Y/7JR +MI;<:/C\%C[.+<@T";NOB9A;"@8F0`S`T\+.XB`,[/ARVN[9H,3`%FXZ$<1!_ +MZ>T7`@'FM+.XR8;.EMQ@^/P>/LK5(#P\6ZI=;%5V%C)`&,33-L+B+`#@^ +M&;>[L6TP,P>;BX%''&CE[6T!!O^*L($#/S)LL*6V'SX^`8^\MUT)"QV5G?)O +M=IR#D`4W-="QN8L&.#X;M[JP9C,]`9NUC=`8$][M?`4$R8FQ@0$\,FBQNK8= +M/CD`C[^VV0LU&Y6;[F9EE(>0&30*6;:^B@.RP4;<>)1 +M'!K0C+>!!S(S%;:ZL1`^.`*,O['W"C<$ZH>0?6+FFY$3"@M)M+^*!3XY!+2Z +MLW*AADP,!:TN[!J/SL/ +MC;FRX#4P`NF"A]H4(B]BA\\/@:UNKW3,CD(F;"WZ`$,'.>50Q9^ +MF(F''38Q$+6XL&P_.PZ"N;WI-#,/[X^#_1%OYY5[`0UGC[.*$ST^`8NZO,@S +M.`J>L[&7``@:^Y#Q:623C806-S83BKBP83P["(.XO)0T/0GBB8S@$Q'9Z4,% +M`&&"L(L6,C\`B+J\_S,X-9RRLY,#-0;SG.QG8.N!A6HU-Q*(N;!X/3L+@+B_ +MD30\"N&+B.H='G+MVQ\&8H&VB&HS/`".N[SF,SLTG;VRGP(T`\N;D75MY82; +M8@@T'8Z_L'0].PJ!N+Z=-#\UY;6UD1P$;N?]%P5LA+>);#$\`XR[O^TS.S>3 +MO;V;`C8,WH29WF[9GYEZ#S4<'@$0_^%C&6^8 +MM8YG-CT#C;B_ZS`Z-I&\O(0",0E`AG)Z4X3;I*(CWTT,@.#N;^4,#HQE+R^A@(P"DJ`@.QK8N&04`8) +M'(:SLPA!D/!-64]!5IE(R-3C4S`H&^OY$Q.C'KO+F` +M`C(T?H.,EFH7QI3!&@P&,B^H/ +M,C7HO;B,#CL\:[&YM1(Q-A*%C9UG%VRN(\/.S\4L;BT$#`Q'H6.FG@0=NO@$0T&Z;>S +MA0X^,TVRNK0'/CP;B;*+9`X/%9643A7=A(R4`#$UY[.YC@TX/Q&QN[<6,S,% +MA(N&<1QOY^-H`0?@M;"$##\SXZZLI[^UF\81!@XU,#(^/CD_/S(S-S4-!Q!C +MR>RW-/1U]5745!375Q< +M7U]?7%Q=75U24U!045975U15U=34U-?7U]?6UM;6UM;1T=;6UM;7U]?7U]?4 +MU-34U-35U=75U=75U=75U=75U=75U=75U=34U-34U-34U-74U-34U-34U-34 +MU-75U-74U-34U-35U-75U=75U=34U-34U-75U=75U=75U-34U-34U=75U=75 +MU=74U-75U=75U=75U=75U=35U-75U=75U=75U=34U-34U-35U=75U=75U-75 +MU=75U=75U=75U=75U=75U=75U=75U=75U-75U=75U=75U=75U=75U=75U555 +M5555U=75U=75U=755=55U575U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU-75U=75U=75U=75U=75U=75U=555=75U=75U=75U=75U=75U=75U=75U=75 +MU=55U=75U=75U=75U=5555555555U=75U=55555555555=75U575U=555555 +MU=75U=75U=75U=75U=75U=75U=35U=75U=75U=75U=75U=7555755575U=75 +MU=75U555U=75U=75U=75U=75U=75U=75U=75U=75U55555555=55U=555=55 +M5555U=75U=75U=75U=75U=75U-74U=35U=75U=75U=75U=75U=755555U575 +MU=75U=75U=75U=75U=?ZD.CA^\333G5^>61E9V1E>GA_4=33WL7& +MPLS.R,O(R\O+R)B["] +ML+6WL*:MO(: +M`)>^I8(U/1^TO8S6_H:9!3<$M:6P!3\V^X^89DZ'AAD\,O"_ON\Q,!R=ZQ5R +M@K?I,3@"M+N*!#0%X_`8$(&]M0`[,I2\L/0#'_E0`P_BLK_A/3@$B[&>$F^7 +MY0TQ&K2ZM0\Y-)>+FF=;AX4%/3:PDQD5Z,H--Q>QNXPU.`J8M9IB +M3X6H&=9M&"B&;:W.9EP,S#X^ZL!D\-MR" +MGV??@XT1/3+1O[F=-#$=D^P7<(RQDC8[#HJXM1DU&N75!!F&O;0'.#W[LK'X +M`1+D10T(_;*^EC,X`8^VGA9EDN(-,`:UNK<`/C?CCIEFWX"!&#TPE;F^YC$Q +M%YGJ:UB/M^8P.0:WN(X!-!O@VAH1@[V(##LPD[RQ6P(<^TX"#)2]O,\\.1FU +ML9(=8I;R##$;HVR@PH[-X>^MV(/'OY(`P"?O+-L/CYKM[&4&&CJW@\W;["[@#0Y +M"86UF6]>A)(#,@N#NK,6/39+@9-@PXV):#T\9;VXF@HV')?[$GJ/L)HW.PJ/ +MN;03"!G[3`$%A+RV&3@\7["QX`07[5H/-5&RN9DP.0*#M)\52ICJ#3,"B+JV +M!#\W\(*=82$7^=YP\P!+2ZM0T^-.B.G&'/@(8$/3:3 +MN+_),39KF.EJT(ZW]#,Y!;&XC0`T&>+5!1>-O8\).S&9O+9R`A+ERN(8.-QSKPQECC[*!-#LT@+ZT:@\<^G,#!IJ\L!8Y/V:VMNX;;Y52#C=E +ML[B'-CD,A[6<;M>$D0(R#HRZL!P]-U6!EF+VC(X6/3U&O+F<-3<3EO(2L+B#`C0<[5D%:HR]C0L[-H6_MV8"$.1[ +M#`*?O[)G/S\4M+:5'&61W`DV%;"[@C0Y"9F+DFWU@9\#/0J`N[(5,C=VA.MN +M\(Z*;#T\;;*YA0DT$NK=&62.LH0W.S6-OK46#Q+E>P('A+^Q'3D\=[:VX1MC +ME4P)-$^RN(4Q.0*&M9-HQ827##(,B;JQ&CPTS(&4;?Z/CQ(\,LR_OI$U-Q:1 +M]1U,B+"0,3@,BKF(&`@=Y'X`&("_M`8X,N>SML@':.]\"0KDO;Z5,CD'C+21 +M%%&;X`XS!K2ZM`,_->V-D6/XC(`%/#&7N;_^-C=HG?@1WHBV^C,Y![>YC`8* +M'>%P!A&,O(@/.S&2O;=T`13@90X/D;^\TSP^'(NWE!!,G/0(,!RVNHD(/@N0 +MCI!B^8*%`#PWA;N]>#`W9)O@%?&(M'`]/A.SN88--1+O3P5OCKV#-3LTAK^T +M;P(6YV<,`YN_LV@^/V^TM^P,@0<\,9*XO-LV-V*<\Q'(B[;,,CD: +MMKF#``H3X'D&%X^\C@@[-IF]M'@!:N-A"0R=O[UW/S\0BK3H$%B?V@LQ$;&Z +MC`H^"9V/EF+D@IH#/#2&N[)M,#1RF^04^8NU9CT_%;.YA`\U$>]V!&.(O8$T +M.S6`O[45`A?F8P\`A+ZS$3D\9+>WX1]VD$\+-GBRNX51!ATB[.?,3L.B;Z('`\6YV,-!8"^ +MM@0X,O:QM_0:EJVAN;>&X6D$#0LW,CT^/SD\/#`Q-0X&&&Q,XY::AH*,B8B* +MBK6*BXF.C(*!AYNOA\--,>6%O:A06$1`3$Q,3$!$6%Q1J:6U@9WI\=DE$ +M7=7=VL#,R/7T]_?W]_3URLC.S<#&Q=C?TM'7U51645!24EU<7U]?7UQ<75)3 +M4U!15E975%55U=34U];6UM;6UM;6UM;6UM;6UM;7U]?4U-34U-34U-34U-75 +MU=75U=75U=35U=35U-75U=34U-34U-34U-34U-34U-34U-34U-34U-35U-74 +MU=34U-34U-74U=75U=74U-34U-74U=75U-35U=34U-74U=75U=75U=75U-75 +MU=75U=75U=75U=34U-75U=75U=75U=74U=75U=75U=75U=75U=74U=75U=75 +MU=75U-74U-75U=75U=75U=75U=75U=75U555U=75U=75U=75U=55U=75U=75 +MU=75U=755=75U=75U=35U=75U=75U=75U=74U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=555=755=75U=75U=75U=75U=75U=34U-35U-75U=75 +MU=74U-75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=555555U=55U=75 +MU=7555755=75U=75U=75U=75U=75U=75U=75U=75555555555=755=55U555 +MU575U=75U=75U=75U=75U=75U=75U=75U5555555U=75U=75U=55U=75U=75 +MU=75U=75U=75U=75U=34U=35U=55U=75U=75U=75U=755575U=75U=75U=75 +MU=75U=;FD^[A_L77271Y>&1D9V1D>GA\V-C8V=G?W]+2T]S>45C81%#&6]907515 +M1E344=9`T-13UE-7WUE6TE_?T%/25]#04]?65MW75=95UM965-15U]76T]54 +MUU96TE35UU'6U5=45=745%#7U%165M?5U=?5U-!6T]57TU/7UU+25%?15M'6 +M4M?7U=96U]74U=54UM75U5;45]?7U==7U57545365-=6U=17U5775=;45=55 +MU%=5U5365%755M95U-16UE755%575==1UN2AHZ4J*BXA.30%6Y*#B[>QL+.S +ML["VM[6(C(&%G97DW'-B%!`<&!H%!`0$!`0%&A@>'1,6%&EB9W]T1%39S/?R +M_OOEY.?GY^3DY?KY__+P]\H)(*NFL)P=-3T[)"8F(28F)R4[/S(V"P,;%4+G +MD9N&@H^(B[6UM;6*BXB.C(*!AYJ>DY3LY/?307-E86UN:VH5%106$1`0$184 +M%6EM87IR2%O4V\_W\O[[Y>3DY^?DY.7[^?SR\?3(PL39T]=74U];149`0TU- +M34Q-34)#0$%'1%I;6%Y?75-045975%75U=34U-34U-35U=5555555%145U=7 +M5E965E965E9645965E9645965E975E975U=75U=75%145%145%145%145%14 +M5%145%145%145%145%145%=45%175%145%155%1455155%55555555555555 +M5%555555555455555%555555555555555555555555555555555555555555 +M55555%5555555555555555555555555555755=55U=75U=75U=75U=755=75 +M55755=555=5555555=75U=75U=75U=55U=75U=75U=75U=75U=75U=75U575 +MU=75U=75U=75U=75U=75U=75U=55U55555755575U555U=75U=75U=55U575 +MU=75U575U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=74U-75U-35U-34U-75U-75U=75U=75U5755=555=555555 +M5555555555555575U555U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=55U=75U=75U=75U=75U=75U=75U=75U=75U=75U=55U=75U575U=755=75 +MU=755=75U5755=75U=755=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U-75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U-75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=31T=?45=755%165E=45%15 +M5=75U=74U-74U-34U-34U=34U-75U=55U=74U-745%74U%;5E[2U@(25Y'9@ +M%A(9&P4%!1H8&1P2%A5O87YU4M[U_>7FX^WO[NGIZ>[O[.WCX>?E^?WVRL+: +MW==67%M'0TU.24A+2TA(3D],0D!&1%M97UU345=5U=36UM'0T]/3T]/3T-#0 +MT=;6U]?7U-7555545%145U=75E=75E=75U=75U=75U175%145%1555555555 +M55555555555555555555555555555555555555555555555555555555U555 +M5=555=55555555555555U5555555557555755555557555555555U575U=75 +M5=75U=75U=75U=75U=75U=75U=55U=75U575U555U5755=55U555U575U=55 +MU=75U575U=75U=755555U555U575U=75U=75U=55U5755=555=755=55U=75 +MU=55U=75U575U575U=755=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U555U555U555U575U=55U575U=75U575U=75U=755=75 +M5=55U=55U575U=75U=75U=75U=75U=75U=35U-75U-75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=74U=35U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=35U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=75U575U=75U=755=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=755=755=75U=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=55U=75U5755=55U=55U=75U=75U575 +MU=75U=55U=55U575U=75U=55U=75U=55U=75U=75U=75U=75U=75U=75U=75 +M5=75U=75U=75U=75U575U5755=75U=75U=75U=75U=75U=75U575U=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=35U=75U=75U=55U=55U=755=75U=75U=75U=75U=55U=75U=75U=75U=75 +MU=75U=75U=75U=55U575U57555755=55U555U5755=55U555U555U575U575 +M557555755=555=555=555=55U57555755555U5755=555=5555555=555575 +M5555U555555555555=555=55U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=755=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=755=755=75U575U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=55U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U575U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75U=75 +MU=75U=75U=75U=75U575U=75U575U=75U=755=75U=75U575U=75U575U=75 +MU=75U=75U=75U=75U=75U=75U=75U=7_____________________________ +M__________________________________________________________]5 +M555555555555555555555555555555555555555555555555555555555555 +M55555555555555555555555553HX,@L1DHJ]N+JXO8J2$0LR.#HX/34%9@PP.3H[/S<'_HVPN;J[O[:&=`(Q +M/CH[/C8!V8.QOKJZOK&#W`$V/CLZ/C$"2H:VO[NZN;"-_P(LKBZN[RTF6L),SDZ.SPT&^R.L[FZN[RWA6$/,SDZ.S\W!/B- +ML+FZN[^VAG<",#XZ.S\V`=J#L;ZZNKZQ@-,`,3X[.CXQ`DF&MK^[NKZPC?T' +M-S\[.CDP#&2$M[^[NKFSC^(:-#P[.CDS"6F8M+R[NKBRB)0?-3TX.C@R"Q:2 +MM;VXNKB]BI,0"C(X.C@]-1R7B+*XNKN\M9YJ"3(X.CL\-!OOCK.YNKN\MX5A +M#S,Y.CL_-P3ZC+"YNKN_MH9Q`C`^.CL_-@''@[&^NKJ^L8#6`#$^.CH^,0-, +MAK:_N[J^L(WR!S8_.SHY,`QDA+>_N[JYLX_C!30\.SHY,PYNF+2\N[JXLHB5 +M'S4].#HX,@L6G;6]N+JXO8J0$`H].#HX/34=EXNRN+J[O;6>%0DR.#H[/#08 +M[HZSN;J[O+>%8`\S.3H[/S<$Y8RPN;J[O[:'<`(P/CH[/S8!P(.QOKJZOK&` +MU0`Q/CHZ/C$#0(&VO[NZOK""\`!MK^[NKZP@O$&-C\[.CDP#'J$M[^[NKFS +MC^$%-SP[.CDS#F^;M+R[NKBRB>H>-3P[.C@R"!>_N[JYLX_A!3<\.SHY,PYLF[2\N[JYLXGK&30\.SHX,@@7G+6]N+JX +MLHN1$PH].#HX/342D8NRN+JXO;6?%`@R.#H[/#09Z(FSN;J[O+2:;0\S.3H[ +M/#<$YXRPN;J[O[>'?PTP.3H[/S8&RH*QOKJ[OK:!7`,Q/CHZ/C$#68&VOKNZ +MOK&"]`8V/SLZ.3`-?H>WO[NZN;",Y@4W/#LZ.3,.;9JTO+NZN;.)ZQDT/#LZ +M.#((%)RUO;BZN+*+D1(*/3@Z.#T*$I&+LKBZN+VUG!0(,C@Z.SPT&>N)L[FZ +MN[RTFFT.,SDZ.SPW!>:,L+FZN[^WAWX-,#DZ.S\V!O2"L;ZZN[ZV@5D#,3XZ +M.CXQ`UR!MKZ[NKZQ@LH&-C\[.CDP#7^'M[^[NKFPC.<$-SP[.CDS#VV:M+R[ +MNKFSB>@9-#P[.C@R"!2?M;VXNKBRBY$2-3TX.C@]"A.1B[*XNKB]M9P7"#(X +M.CL\-!GKB;.YNKN\M)ML#C,Y.CL\-P7AC[.YNKN_MX1X#3`Y.CL_-@;W@K"^ +MNKN_MH%:`S$^.CH^,0!3@+&^N[J^L8+)!C8_.SH^,`U]A[>_N[JYL(SD!#<_ +M.SHY,P]BFK2\N[JYLXGI�\.SHX,@@4G[6]N+JXLHN6$C4].#HX/0H3D(JR +MN+JXO;6<%P@R.#H[/#4>ZHFRN+J[O+2;;PXS.3H[/#<%X8^SN;J[O[>$>@PP +M.3H[/S8&\8*POKJ[NU555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +M555555555555555555555555555555555555555555555555555555555555 +755555555555555555555555555555555 +` +end diff --git a/usr.sbin/i4b/g711conv/g711conv.1 b/usr.sbin/i4b/g711conv/g711conv.1 index 4d91024..43abcfe 100644 --- a/usr.sbin/i4b/g711conv/g711conv.1 +++ b/usr.sbin/i4b/g711conv/g711conv.1 @@ -22,9 +22,11 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" +.\" $Id: g711conv.1,v 1.3 1999/12/13 22:11:55 hm Exp $ +.\" .\" $FreeBSD$ .\" -.\" last edit-date: [Mon Mar 15 16:17:23 1999] +.\" last edit-date: [Mon Dec 13 22:54:33 1999] .\" .Dd March 15, 1999 .Dt G711CONV 1 @@ -66,7 +68,6 @@ A-Law and u-Law conversions are specified in ITU Recommendation G.711. .Pp The reference implementation done by Sun Microsystems, Inc. is available from http://www.itu.int/itudoc/itu-t/rec/g/g700-799/refimpl.txt -.Pp .Sh EXAMPLES The command: @@ -85,12 +86,11 @@ converts the u-law coded voice of Max Headroom to A-law, reverses the bits of the result and moves that to an active isdn4bsd telephone connection. .Pp -.Sh AUTHORS +.Sh AUTHOR The .Nm -utility and this manpage were written by +utility and this manpage were written by .An Hellmuth Michaelis Aq hm@kts.org based on the G.711 conversion reference code written by Sun Microsystems, -Inc. and code contributed to isdn4bsd by -.An Stefan Bethke . +Inc. and code contributed to isdn4bsd by Stefan Bethke. diff --git a/usr.sbin/i4b/g711conv/g711conv.c b/usr.sbin/i4b/g711conv/g711conv.c index f6a442e..5c7857d 100644 --- a/usr.sbin/i4b/g711conv/g711conv.c +++ b/usr.sbin/i4b/g711conv/g711conv.c @@ -65,7 +65,9 @@ * A-law / u-law conversions as specified in G.711 * ----------------------------------------------- * - * last edit-date: [Mon Apr 26 14:00:31 1999] + * last edit-date: [Mon Dec 13 21:44:01 1999] + * + * $Id: g711conv.c,v 1.5 1999/12/13 21:25:24 hm Exp $ * * $FreeBSD$ * diff --git a/usr.sbin/i4b/isdnd/alias.c b/usr.sbin/i4b/isdnd/alias.c index fe25e4c..a775fc9 100644 --- a/usr.sbin/i4b/isdnd/alias.c +++ b/usr.sbin/i4b/isdnd/alias.c @@ -30,9 +30,11 @@ * NOTE: this has to stay in sync with isdntel/alias.c to be able * to share a common aliasfile! * + * $Id: alias.c,v 1.8 1999/12/13 21:25:24 hm Exp $ + * * $FreeBSD$ * - * last edit-date: [Sun Feb 14 10:10:03 1999] + * last edit-date: [Mon Dec 13 21:45:19 1999] * *----------------------------------------------------------------------------*/ @@ -51,10 +53,10 @@ void init_alias(char *filename) { FILE *fp; - char buffer[MAXBUFSZ + 1]; - char number[MAXBUFSZ + 1]; - char name[MAXBUFSZ + 1]; - char *s, *d; + unsigned char buffer[MAXBUFSZ + 1]; + unsigned char number[MAXBUFSZ + 1]; + unsigned char name[MAXBUFSZ + 1]; + unsigned char *s, *d; struct alias *newa = NULL; struct alias *lasta = NULL; diff --git a/usr.sbin/i4b/isdnd/config.h b/usr.sbin/i4b/isdnd/config.h index 6f591a9..4a7aa8c 100644 --- a/usr.sbin/i4b/isdnd/config.h +++ b/usr.sbin/i4b/isdnd/config.h @@ -27,9 +27,11 @@ * i4b daemon - compile time configuration header file * --------------------------------------------------- * - * $FreeBSD$ + * $Id: config.h,v 1.8 1999/12/13 21:25:24 hm Exp $ * - * last edit-date: [Sun Feb 14 10:10:10 1999] + * $FreeBSD$ + * + * last edit-date: [Mon Dec 13 21:45:27 1999] * *---------------------------------------------------------------------------*/ diff --git a/usr.sbin/i4b/isdnd/controller.c b/usr.sbin/i4b/isdnd/controller.c index 861b79e..c3e76843 100644 --- a/usr.sbin/i4b/isdnd/controller.c +++ b/usr.sbin/i4b/isdnd/controller.c @@ -27,18 +27,125 @@ * i4b daemon - controller state support routines * ---------------------------------------------- * + * $Id: controller.c,v 1.19 1999/12/13 21:25:24 hm Exp $ + * * $FreeBSD$ * - * last edit-date: [Mon May 10 21:35:55 1999] + * last edit-date: [Mon Dec 13 21:45:34 1999] * *---------------------------------------------------------------------------*/ #include "isdnd.h" +static int +init_controller_state(int controller, int ctrl_type, int card_type, int tei); + +/*---------------------------------------------------------------------------* + * get name of a controller + *---------------------------------------------------------------------------*/ +const char * +name_of_controller(int ctrl_type, int card_type) +{ + static char *passive_card[] = { + "Teles S0/8", + "Teles S0/16", + "Teles S0/16.3", + "AVM A1 or Fritz!Card", + "Teles S0/16.3 PnP", + "Creatix S0 PnP", + "USRobotics Sportster ISDN TA", + "Dr. Neuhaus NICCY Go@", + "Sedlbauer win speed", + "Dynalink IS64PH", + "ISDN Master, MasterII or Blaster", + "AVM PCMCIA Fritz!Card", + "ELSA QuickStep 1000pro/ISA", + "ELSA QuickStep 1000pro/PCI", + "Siemens I-Talk", + "ELSA MicroLink ISDN/MC", + "ELSA MicroLink MCall", + "ITK ix1 micro", + "AVM Fritz!Card PCI", + "ELSA PCC-16", + "AVM Fritz!Card PnP", + "Siemens I-Surf 2.0 PnP", + "Asuscom ISDNlink 128K PnP" + }; + + static char *daic_card[] = { + "EICON.Diehl S", + "EICON.Diehl SX/SXn", + "EICON.Diehl SCOM", + "EICON.Diehl QUADRO", + }; + + if(ctrl_type == CTRL_PASSIVE) + { + int index = card_type - CARD_TYPEP_8; + if (index >= 0 && index < (sizeof passive_card / sizeof passive_card[0])) + return passive_card[index]; + } + else if(ctrl_type == CTRL_DAIC) + { + int index = card_type - CARD_TYPEA_DAIC_S; + if (index >= 0 && index < (sizeof daic_card / sizeof daic_card[0] )) + return daic_card[index]; + } + else if(ctrl_type == CTRL_TINADD) + { + return "Stollmann tina-dd"; + } + + return "unknown card type"; +} + +/*---------------------------------------------------------------------------* + * init controller state array + *---------------------------------------------------------------------------*/ +void +init_controller(void) +{ + int i; + int max = 1; + msg_ctrl_info_req_t mcir; + + for(i=0; i < max; i++) + { + mcir.controller = i; + + if((ioctl(isdnfd, I4B_CTRL_INFO_REQ, &mcir)) < 0) + { + log(LL_ERR, "init_controller: ioctl I4B_CTRL_INFO_REQ failed: %s", strerror(errno)); + do_exit(1); + } + + if((ncontroller = max = mcir.ncontroller) == 0) + { + log(LL_ERR, "init_controller: no ISDN controller found!"); + do_exit(1); + } + + if(mcir.ctrl_type == -1 || mcir.card_type == -1) + { + log(LL_ERR, "init_controller: ctrl/card is invalid!"); + do_exit(1); + } + + /* init controller tab */ + + if((init_controller_state(i, mcir.ctrl_type, mcir.card_type, mcir.tei)) == ERROR) + { + log(LL_ERR, "init_controller: init_controller_state for controller %d failed", i); + do_exit(1); + } + } + DBGL(DL_RCCF, (log(LL_DBG, "init_controller: found %d ISDN controller(s)", max))); +} + /*--------------------------------------------------------------------------* * init controller state table entry *--------------------------------------------------------------------------*/ -int +static int init_controller_state(int controller, int ctrl_type, int card_type, int tei) { if((controller < 0) || (controller >= ncontroller)) @@ -61,6 +168,8 @@ init_controller_state(int controller, int ctrl_type, int card_type, int tei) isdn_ctrl_tab[controller].stateb2 = CHAN_IDLE; isdn_ctrl_tab[controller].freechans = MAX_CHANCTRL; isdn_ctrl_tab[controller].tei = tei; + isdn_ctrl_tab[controller].l1stat = LAYER_IDLE; + isdn_ctrl_tab[controller].l2stat = LAYER_IDLE; DBGL(DL_RCCF, (log(LL_DBG, "init_controller_state: controller %d is %s", controller, name_of_controller(isdn_ctrl_tab[controller].ctrl_type, @@ -81,7 +190,10 @@ init_controller_state(int controller, int ctrl_type, int card_type, int tei) isdn_ctrl_tab[controller].stateb1 = CHAN_IDLE; isdn_ctrl_tab[controller].stateb2 = CHAN_IDLE; isdn_ctrl_tab[controller].freechans = MAX_CHANCTRL; - isdn_ctrl_tab[controller].tei = -1; + isdn_ctrl_tab[controller].tei = tei; + isdn_ctrl_tab[controller].l1stat = LAYER_IDLE; + isdn_ctrl_tab[controller].l2stat = LAYER_IDLE; + log(LL_DMN, "init_controller_state: controller %d is %s", controller, name_of_controller(isdn_ctrl_tab[controller].ctrl_type, @@ -95,7 +207,10 @@ init_controller_state(int controller, int ctrl_type, int card_type, int tei) isdn_ctrl_tab[controller].stateb1 = CHAN_IDLE; isdn_ctrl_tab[controller].stateb2 = CHAN_IDLE; isdn_ctrl_tab[controller].freechans = MAX_CHANCTRL; - isdn_ctrl_tab[controller].tei = -1; + isdn_ctrl_tab[controller].tei = tei; + isdn_ctrl_tab[controller].l1stat = LAYER_IDLE; + isdn_ctrl_tab[controller].l2stat = LAYER_IDLE; + log(LL_DMN, "init_controller_state: controller %d is %s", controller, name_of_controller(isdn_ctrl_tab[controller].ctrl_type, @@ -139,6 +254,28 @@ init_active_controller(void) } /*--------------------------------------------------------------------------* + * init controller D-channel ISDN protocol + *--------------------------------------------------------------------------*/ +void +init_controller_protocol(void) +{ + int controller; + msg_prot_ind_t mpi; + + for(controller = 0; controller < ncontroller; controller++) + { + mpi.controller = controller; + mpi.protocol = isdn_ctrl_tab[controller].protocol; + + if((ioctl(isdnfd, I4B_PROT_IND, &mpi)) < 0) + { + log(LL_ERR, "init_controller_protocol: ioctl I4B_PROT_IND failed: %s", strerror(errno)); + do_exit(1); + } + } +} + +/*--------------------------------------------------------------------------* * set controller state to UP/DOWN *--------------------------------------------------------------------------*/ int diff --git a/usr.sbin/i4b/isdnd/curses.c b/usr.sbin/i4b/isdnd/curses.c index ca8bf75..6e01c08 100644 --- a/usr.sbin/i4b/isdnd/curses.c +++ b/usr.sbin/i4b/isdnd/curses.c @@ -27,9 +27,11 @@ * i4b daemon - curses fullscreen output * ------------------------------------- * - * $FreeBSD$ + * $Id: curses.c,v 1.29 1999/12/13 21:25:24 hm Exp $ * - * last edit-date: [Sun Feb 14 10:10:24 1999] + * $FreeBSD$ + * + * last edit-date: [Mon Dec 13 21:45:43 1999] * *---------------------------------------------------------------------------*/ diff --git a/usr.sbin/i4b/isdnd/dial.c b/usr.sbin/i4b/isdnd/dial.c index 0d6c3e0..dff8787 100644 --- a/usr.sbin/i4b/isdnd/dial.c +++ b/usr.sbin/i4b/isdnd/dial.c @@ -27,9 +27,11 @@ * i4b daemon - dial handling routines * ----------------------------------- * - * $FreeBSD$ + * $Id: dial.c,v 1.8 1999/12/13 21:25:24 hm Exp $ * - * last edit-date: [Sun Feb 14 10:10:30 1999] + * $FreeBSD$ + * + * last edit-date: [Mon Dec 13 21:45:51 1999] * *---------------------------------------------------------------------------*/ diff --git a/usr.sbin/i4b/isdnd/exec.c b/usr.sbin/i4b/isdnd/exec.c index b79b2be..c180aad 100644 --- a/usr.sbin/i4b/isdnd/exec.c +++ b/usr.sbin/i4b/isdnd/exec.c @@ -27,9 +27,11 @@ * exec.h - supplemental program/script execution * ---------------------------------------------- * - * $FreeBSD$ + * $Id: exec.c,v 1.13 1999/12/13 21:25:24 hm Exp $ * - * last edit-date: [Sun Feb 14 10:10:35 1999] + * $FreeBSD$ + * + * last edit-date: [Mon Dec 13 21:45:59 1999] * *---------------------------------------------------------------------------*/ @@ -60,8 +62,8 @@ sigchild_handler(int sig) if((pid = waitpid(-1, &retstat, WNOHANG)) <= 0) { - log(LL_ERR, "ERROR, waitpid: %s", strerror(errno)); - do_exit(1); + log(LL_ERR, "ERROR, sigchild_handler, waitpid: %s", strerror(errno)); + error_exit(1, "ERROR, sigchild_handler, waitpid: %s", strerror(errno)); } else { @@ -128,7 +130,7 @@ exec_prog(char *prog, char **arglist) { case -1: /* error */ log(LL_ERR, "ERROR, exec_prog/fork: %s", strerror(errno)); - do_exit(1); + error_exit(1, "ERROR, exec_prog/fork: %s", strerror(errno)); case 0: /* child */ break; default: /* parent */ diff --git a/usr.sbin/i4b/isdnd/fsm.c b/usr.sbin/i4b/isdnd/fsm.c index 0dca785..63a6229 100644 --- a/usr.sbin/i4b/isdnd/fsm.c +++ b/usr.sbin/i4b/isdnd/fsm.c @@ -27,9 +27,11 @@ * FSM for isdnd * ------------- * - * $FreeBSD$ + * $Id: fsm.c,v 1.18 1999/12/13 21:25:24 hm Exp $ * - * last edit-date: [Sun Feb 14 10:10:41 1999] + * $FreeBSD$ + * + * last edit-date: [Mon Dec 13 21:46:07 1999] * *---------------------------------------------------------------------------*/ @@ -385,24 +387,24 @@ next_state(cfg_entry_t *cep, int event) if(event > N_EVENTS) { - log(LL_ERR, "FSM: event > N_EVENTS"); - do_exit(1); + log(LL_ERR, "next_state: event > N_EVENTS"); + error_exit(1, "next_state: event > N_EVENTS"); } currstate = cep->state; if(currstate > N_STATES) { - log(LL_ERR, "FSM: currstate > N_STATES"); - do_exit(1); + log(LL_ERR, "next_state: currstate > N_STATES"); + error_exit(1, "next_state: currstate > N_STATES"); } newstate = state_tab[event][currstate].newstate; if(newstate > N_STATES) { - log(LL_ERR, "FSM: newstate > N_STATES"); - do_exit(1); + log(LL_ERR, "next_state: newstate > N_STATES"); + error_exit(1, "next_state: newstate > N_STATES"); } if(newstate != ST_SUSE) diff --git a/usr.sbin/i4b/isdnd/isdnd.8 b/usr.sbin/i4b/isdnd/isdnd.8 index 3397fc3..8ab59f2 100644 --- a/usr.sbin/i4b/isdnd/isdnd.8 +++ b/usr.sbin/i4b/isdnd/isdnd.8 @@ -22,9 +22,11 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ +.\" $Id: isdnd.8,v 1.27 1999/12/13 22:11:55 hm Exp $ .\" -.\" last edit-date: [Thu May 20 14:37:42 1999] +.\" $FreeBSD$ +.\" +.\" last edit-date: [Mon Dec 13 22:57:10 1999] .\" .Dd February 23, 1999 .Dt ISDND 8 @@ -397,26 +399,25 @@ will start with reasonable debugging messages enabled, full-screen mode of operation, full-screen display redirected to /dev/ttyv03 and using a termcap entry for vt100 on this display. + .Sh DIAGNOSTICS Exit status is 0 on success, 1 on error. .Pp .Sh SEE ALSO -.Xr i4bipr 4 , -.Xr i4bisppp 4 , -.Xr isdnd.rates 5 , -.Xr isdnd.rc 5 , -.Xr isdntel 8 , +.Xr syslogd 8 , .Xr isdntrace 8 , -.Xr syslogd 8 +.Xr isdntel 8 , +.Xr isdnd.rc 5 , +.Xr isdnd.rates 5 , +.Xr i4bisppp 4 , +.Xr i4bipr 4 + .Sh BUGS Still one or more left. -.Sh AUTHORS + +.Sh AUTHOR The .Nm -daemon and this manual page were written by -.An Hellmuth Michaelis . -He can be contacted at -.Aq hm@kts.org -or -.Aq hm@hcs.de . +daemon and this manual page were written by +.An Hellmuth Michaelis Aq hm@kts.org . diff --git a/usr.sbin/i4b/isdnd/isdnd.acct.5 b/usr.sbin/i4b/isdnd/isdnd.acct.5 index 5c0d0ba..3ee378b 100644 --- a/usr.sbin/i4b/isdnd/isdnd.acct.5 +++ b/usr.sbin/i4b/isdnd/isdnd.acct.5 @@ -22,9 +22,11 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ +.\" $Id: isdnd.acct.5,v 1.11 1999/12/13 22:11:55 hm Exp $ .\" -.\" last edit-date: [Mon Feb 15 16:54:23 1999] +.\" $FreeBSD$ +.\" +.\" last edit-date: [Mon Dec 13 22:58:12 1999] .\" .Dd September 11, 1998 .Dt ISDND.ACCT 5 @@ -84,6 +86,7 @@ is the number of seconds the connection lasted. and .Em OUTBYTES is the (optional) number of bytes that were transferred. + .Sh FILES .Bl -tag -width /var/log/isdnd.acct -compact .It Pa /var/log/isdnd.acct @@ -91,16 +94,19 @@ The default accounting information file for the .Nm isdnd ISDN daemon. .El + .Sh EXAMPLES This is a typical accounting line: .Pp .Dl 12.06.97 10:41:37 - 12.06.97 10:45:18 GROGGY 2 (65) (4711/1147) + .Sh SEE ALSO -.Xr isdnd.rc 5 , -.Xr isdnd 8 -.Sh AUTHORS +.Xr isdnd 8 , +.Xr isdnd.rc 5 + +.Sh AUTHOR The .Xr isdnd 8 -daemon and this manual page were written by -.An Hellmuth Michaelis . -He can be contacted at hm@kts.org or hm@hcs.de. +daemon and this manual page were written by +.An Hellmuth Michaelis Aq hm@kts.org . + diff --git a/usr.sbin/i4b/isdnd/isdnd.h b/usr.sbin/i4b/isdnd/isdnd.h index 1307034..9565915 100644 --- a/usr.sbin/i4b/isdnd/isdnd.h +++ b/usr.sbin/i4b/isdnd/isdnd.h @@ -27,9 +27,11 @@ * i4b daemon - main header file * ----------------------------- * - * $FreeBSD$ + * $Id: isdnd.h,v 1.72 1999/12/13 21:25:24 hm Exp $ * - * last edit-date: [Thu May 20 14:44:18 1999] + * $FreeBSD$ + * + * last edit-date: [Mon Dec 13 21:46:50 1999] * *---------------------------------------------------------------------------*/ @@ -38,11 +40,15 @@ #include #include +#include #include #include +#include #include #include #include +#include +#include #ifdef USE_CURSES #include @@ -52,6 +58,7 @@ #include #include +#include /* TAILQ_ macros */ #include #include #include @@ -162,7 +169,9 @@ enum logids LL_WRN, /* warning conditions - nonfatal abnormal conditions */ LL_DMN, /* normal but significant condition - status of daemon */ LL_CHD, /* informational - everything regarding call handling */ - LL_DBG /* debug messages - everything which helps debugging */ + LL_DBG, /* debug messages - everything which helps debugging */ + LL_MER, /* monitor error messages - not sent to remote */ + LL_PKT /* packet logging - log the first few packets */ }; /*---------------------------------------------------------------------------* @@ -434,6 +443,7 @@ typedef struct cfg_entry { typedef struct isdn_ctrl_state { int ctrl_type; /* type: active/passive */ int card_type; /* manufacturer (CARD_XXXX) */ + int protocol; /* ISDN D-channel protocol */ int state; /* controller state */ #define CTRL_DOWN 0 /* controller inoparable */ #define CTRL_UP 1 /* controller may be used */ @@ -444,6 +454,8 @@ typedef struct isdn_ctrl_state { int freechans; /* number of unused channels */ #define MAX_CHANCTRL 2 /* free channels per controller */ int tei; /* tei or -1 if invalid */ + int l1stat; /* layer 1 state */ + int l2stat; /* layer 2 state */ } isdn_ctrl_state_t; /*---------------------------------------------------------------------------* @@ -459,6 +471,7 @@ struct rarr { #ifdef I4B_EXTERNAL_MONITOR /* for each rights entry we keep one of this structures around: */ struct monitor_rights { + TAILQ_ENTRY(monitor_rights) list; /* a list of this structures */ char name[FILENAME_MAX]; /* net/host spec or filename */ int rights; /* bitmask of allowed acces rights */ u_int32_t net; /* net/host address (host byte order!) */ @@ -474,6 +487,9 @@ struct monitor_rights { int isdnfd; /* file handle, /dev/i4b */ +char mailto[MAXPATHLEN] = ""; /* panic mail address */ +char mailer[MAXPATHLEN] = ""; /* panic mail address */ + char *configfile = CONFIG_FILE_DEF; /* configuration filename */ int config_error_flag = 0; /* error counter */ @@ -556,6 +572,9 @@ char rotatesuffix[MAXPATHLEN] = ""; int isdnfd; +char mailto[MAXPATHLEN]; +char mailer[MAXPATHLEN]; + char *configfile; int config_error_flag; @@ -647,7 +666,6 @@ void display_disconnect ( cfg_entry_t *cep ); void display_l12stat(int controller, int layer, int state); void display_tei(int controller, int tei); void display_updown ( cfg_entry_t *cep, int updown ); -void hangup_channel ( int channel ); void do_exit ( int exitval ); void do_menu ( void ); int exec_answer ( cfg_entry_t *cep ); @@ -669,6 +687,7 @@ void handle_recovery ( void ); void if_up(cfg_entry_t *cep); void if_down(cfg_entry_t *cep); void init_controller ( void ); +void init_controller_protocol ( void ); void init_log ( void ); void init_screen ( void ); void log ( int what, const char *fmt, ... ); @@ -689,6 +708,7 @@ void msg_idle_timeout_ind ( msg_idle_timeout_ind_t *mp ); void msg_l12stat_ind(msg_l12stat_ind_t *ml); void msg_teiasg_ind(msg_teiasg_ind_t *mt); void msg_proceeding_ind ( msg_proceeding_ind_t *mp ); +void msg_packet_ind( msg_packet_ind_t *mp ); const char * name_of_controller(int ctrl_type, int card_type); void next_state ( cfg_entry_t *cep, int event ); char * print_i4b_cause( cause_t code ); @@ -714,6 +734,8 @@ void unitlen_chkupd( cfg_entry_t *cep ); void write_pid ( void ); void yyerror ( const char *msg ); +void error_exit(int exitval, const char *fmt, ...); + /* montior server module */ void monitor_init(); void monitor_exit(); @@ -744,9 +766,12 @@ void monitor_evnt_disconnect(cfg_entry_t *cep); void monitor_evnt_updown(cfg_entry_t *cep, int up); void monitor_evnt_log(int prio, const char * what, const char * msg); +void monitor_evnt_l12stat(int controller, int layer, int state); +void monitor_evnt_tei(int controller, int tei); +void monitor_evnt_acct(cfg_entry_t *cep); + /* controller.c */ -int init_controller_state(int controller, int ctrl_type, int card_type, int tei); void init_active_controller(void); int set_controller_state(int controller, int state); int get_controller_state(int controller); diff --git a/usr.sbin/i4b/isdnd/isdnd.rates.5 b/usr.sbin/i4b/isdnd/isdnd.rates.5 index 098e5ef..d57d703 100644 --- a/usr.sbin/i4b/isdnd/isdnd.rates.5 +++ b/usr.sbin/i4b/isdnd/isdnd.rates.5 @@ -22,9 +22,11 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ +.\" $Id: isdnd.rates.5,v 1.10 1999/12/13 22:11:55 hm Exp $ .\" -.\" last edit-date: [Sun Feb 14 10:11:05 1999] +.\" $FreeBSD$ +.\" +.\" last edit-date: [Mon Dec 13 22:59:31 1999] .\" .Dd September 11, 1998 .Dt ISDND.RATES 5 @@ -82,6 +84,7 @@ For example, defines, that between 2:00 PM and 6:00 PM the length of one charging unit lasts 90 seconds. .Pp + .Sh FILES .Bl -tag -width /etc/isdn/isdnd.rates -compact .It Pa /etc/isdn/isdnd.rates @@ -89,6 +92,7 @@ The default rates specification file for the .Nm isdnd ISDN daemon. .El + .Sh EXAMPLES The line: .Bd -literal @@ -96,19 +100,21 @@ ra0 0 00.00-05.00:240 05.00-21.00:150 21.00-24.00:240 .Ed .Pp defines the unit lengths for a Sunday. + .Sh SEE ALSO -.Xr isdnd.rc 5 , -.Xr isdnd 8 -.Sh AUTHORS +.Xr isdnd 8 , +.Xr isdnd.rc 5 + +.Sh AUTHOR The rates subsystem for the .Xr isdnd 8 daemon to which .Nm -belongs was designed and written by +belongs was designed and written by .An Gary Jennejohn . .Pp The .Xr isdnd 8 -daemon and this manual page were written by -.An Hellmuth Michaelis . -He can be reached at hm@kts.org or hm@hcs.de. +daemon and this manual page were written by +.An Hellmuth Michaelis Aq hm@kts.org . + diff --git a/usr.sbin/i4b/isdnd/isdnd.rc.5 b/usr.sbin/i4b/isdnd/isdnd.rc.5 index 08ccdd6..4a65603 100644 --- a/usr.sbin/i4b/isdnd/isdnd.rc.5 +++ b/usr.sbin/i4b/isdnd/isdnd.rc.5 @@ -22,11 +22,13 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ +.\" $Id: isdnd.rc.5,v 1.41 1999/12/13 22:11:55 hm Exp $ .\" -.\" last edit-date: [Wed Jul 28 15:57:02 1999] +.\" $FreeBSD$ .\" -.Dd May 20, 1999 +.\" last edit-date: [Mon Dec 13 23:00:48 1999] +.\" +.Dd October 11, 1999 .Dt ISDND.RC 5 .Os .Sh NAME @@ -58,7 +60,9 @@ or .Pp The configuration file consists of one .Em system -section and one or more +section, one or more optional +.Em controller +sections and one or more .Em entry sections. In the @@ -66,6 +70,9 @@ In the section parameters regarding the daemon operation or parameters not associated with a single remote connection can be set. In the +.Em controller +section parameters regarding a particular controller can be set. +In the .Em entry section(s) parameters directly associated with a single remote connection can be set. @@ -122,6 +129,25 @@ If this parameter is set to date/time information from the exchange (if provided) is written to the logfile. The default is off. (optional) +.It Li mailer +This keyword is used to specify the path/name of a mail program which +which is able to use the "-s" flag to specify a subject on its +command line. In case of a fatal error exit of +.Nm +this program is used to send mail to an administrator specified by +the keyword +.Em mailto . +(optional) + +.It Li mailto +This keyword is used to specify the email address of someone to notify +in case of a fatal error exit of +.Nm . +(See also keyword +.Em mailer +). +(optional) + .It Li monitor-allowed If this parameter is set to .Em on @@ -236,6 +262,27 @@ accounting file. (optional) .El +.It Li controller +This keyword starts the controller configuration section. It must not +have a parameter and may be used once for every controller. The keyword +is optional. The following keywords are valid in a controller +configuration section: +.Bl -tag -width useacctfile -compact + +.It Li protocol +This keyword is used to set the D-channel protocol for the S0-bus a +controller is connected to. The following parameters are currently +supported: +.Pp +.Bl -tag -width calledback -compact -offset +.It Ar dss1 +The DSS1 or so-called "Euro-ISDN" D-channel protocol according to +ITU Recommendations Q.921 and Q.931. +.It Ar d64s +An ISDN leased line with a single B-channel (called D64S in Germany). +.El +.El + .It Li entry This keyword starts one configuration entry. It must not have a parameter. This keyword must be used at least once. @@ -712,6 +759,7 @@ network will cause a new call to be placed. .El .Pp + .Sh FILES .Bl -tag -width /etc/isdn/isdnd.rc -compact .It Pa /etc/isdn/isdnd.rc @@ -719,16 +767,18 @@ The default configuration file for the .Nm isdnd ISDN daemon. .El + .Sh SEE ALSO -.Xr regex 3 , -.Xr re_format 7 , -.Xr isdnd 8 , +.Xr isdnd 8 .Xr isdnmonitor 8 -.Sh AUTHORS +.Xr regex 3 +.Xr re_format 7 + +.Sh AUTHOR The .Xr isdnd 8 -daemon and this manual page were written by +daemon and this manual page were written by .An Hellmuth Michaelis Aq hm@kts.org . .Pp -Additions to this manual page by +Additions to this manual page by .An Barry Scott Aq barry@scottb.demon.co.uk . diff --git a/usr.sbin/i4b/isdnd/log.c b/usr.sbin/i4b/isdnd/log.c index 25a0307..ddab579 100644 --- a/usr.sbin/i4b/isdnd/log.c +++ b/usr.sbin/i4b/isdnd/log.c @@ -27,23 +27,14 @@ * i4b daemon - logging routines * ----------------------------- * - * $FreeBSD$ + * $Id: log.c,v 1.23 1999/12/13 21:25:25 hm Exp $ * - * last edit-date: [Sun Feb 14 10:11:18 1999] + * $FreeBSD$ + * + * last edit-date: [Mon Dec 13 21:47:28 1999] * *---------------------------------------------------------------------------*/ -#include -#include -#include -#include -#include -#include -#include -#include - -#include - #include "isdnd.h" #define LOGBUFLEN 256 @@ -63,11 +54,13 @@ struct logtab { * table for converting internal log levels into syslog levels *---------------------------------------------------------------------------*/ static struct logtab logtab[] = { - {"ERR", LOG_ERR}, /* error conditions */ - {"WRN", LOG_WARNING}, /* warning conditions, nonfatal */ - {"DMN", LOG_NOTICE}, /* normal but significant condition, daemon*/ - {"CHD", LOG_INFO}, /* informational, call handling */ - {"DBG", LOG_DEBUG} /* debug messages */ + {"ERR", LOG_ERR}, /* error conditions */ + {"WRN", LOG_WARNING}, /* warning conditions, nonfatal */ + {"DMN", LOG_NOTICE}, /* significant conditions of the daemon */ + {"CHD", LOG_INFO}, /* informational, call handling */ + {"DBG", LOG_DEBUG}, /* debug messages */ + {"MER", LOG_ERR}, /* monitor error conditions */ + {"PKT", LOG_INFO} /* packet logging */ }; /*---------------------------------------------------------------------------* @@ -168,13 +161,28 @@ log(int what, const char *fmt, ...) ((!debug_noscreen) || (debug_noscreen && (what != LL_DBG)))) { wprintw(lower_w, "%s %s %-.*s\n", dp, logtab[what].text, + +/* + * FreeBSD-current integrated ncurses. Since then it is no longer possible + * to write to the last column in the logfilewindow without causing an + * automatic newline to occur resulting in a blank line in that window. + */ +#ifdef __FreeBSD__ +#include +#endif +#if defined(__FreeBSD_version) && __FreeBSD_version >= 400009 +#warning "FreeBSD ncurses is buggy: write to last column = auto newline!" + COLS-((strlen(dp))+(strlen(logtab[what].text))+3), buffer); +#else COLS-((strlen(dp))+(strlen(logtab[what].text))+2), buffer); +#endif wrefresh(lower_w); } #endif #ifdef I4B_EXTERNAL_MONITOR - monitor_evnt_log(logtab[what].pri, logtab[what].text, buffer); + if(what != LL_MER) /* don't send monitor errs, endless loop !!! */ + monitor_evnt_log(logtab[what].pri, logtab[what].text, buffer); #endif if(uselogfile) diff --git a/usr.sbin/i4b/isdnd/main.c b/usr.sbin/i4b/isdnd/main.c index 3980e69..ca4f788 100644 --- a/usr.sbin/i4b/isdnd/main.c +++ b/usr.sbin/i4b/isdnd/main.c @@ -27,12 +27,16 @@ * i4b daemon - main program entry * ------------------------------- * - * $FreeBSD$ + * $Id: main.c,v 1.49 1999/12/13 21:25:25 hm Exp $ * - * last edit-date: [Fri Jul 30 08:14:10 1999] + * $FreeBSD$ + * + * last edit-date: [Mon Dec 13 21:47:35 1999] * *---------------------------------------------------------------------------*/ +#include + #ifdef I4B_EXTERNAL_MONITOR #include "monitor.h" #endif @@ -97,7 +101,9 @@ usage(void) fprintf(stderr, " -s use facility instead of %d for syslog logging\n", LOG_LOCAL0 >> 3); fprintf(stderr, " -t terminal type of redirected screen (for -f)\n"); fprintf(stderr, " -u