From owner-freebsd-bugs@FreeBSD.ORG Wed May 9 11:20:03 2007 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8EFDA16A406 for ; Wed, 9 May 2007 11:20:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id 6F07513C45B for ; Wed, 9 May 2007 11:20:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l49BK396008985 for ; Wed, 9 May 2007 11:20:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l49BK3It008984; Wed, 9 May 2007 11:20:03 GMT (envelope-from gnats) Resent-Date: Wed, 9 May 2007 11:20:03 GMT Resent-Message-Id: <200705091120.l49BK3It008984@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Takeharu KATO Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5E6A816A402 for ; Wed, 9 May 2007 11:10:36 +0000 (UTC) (envelope-from takeharu1219@ybb.ne.jp) Received: from ybbsmtp09.mail.ogk.yahoo.co.jp (ybbsmtp09.mail.ogk.yahoo.co.jp [124.83.153.129]) by mx1.freebsd.org (Postfix) with SMTP id E5DE513C45E for ; Wed, 9 May 2007 11:10:35 +0000 (UTC) (envelope-from takeharu1219@ybb.ne.jp) Received: (qmail 41891 invoked by alias); 9 May 2007 11:10:34 -0000 Received: from unknown (HELO ?127.0.0.1?) (takeharu1219@219.35.170.86 with plain) by ybbsmtp09.mail.ogk.yahoo.co.jp with SMTP; 9 May 2007 11:10:33 -0000 Message-Id: <4641AC10.6080007@ybb.ne.jp> Date: Wed, 09 May 2007 20:10:08 +0900 From: Takeharu KATO To: FreeBSD-gnats-submit@FreeBSD.org Cc: Subject: kern/112544: Add High Precision Event Timer Driver for userland timer facility X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 May 2007 11:20:03 -0000 >Number: 112544 >Category: kern >Synopsis: Add High Precision Event Timer Driver for userland timer facility >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed May 09 11:20:02 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Takeharu KATO >Release: FreeBSD 7.0-CURRENT i386 >Organization: none >Environment: System: FreeBSD aeon 7.0-CURRENT FreeBSD 7.0-CURRENT #3: Thu Apr 26 01:21:09 JST 2007 root@aeon:/usr/obj/usr/src/sys/GENERIC i386 machine : i386 PC/AT(Mother-Board: GIGABYTE GA-965P-DS3) os : FreeBSD 7.0-CURRENT (2007/04/25 snapshot) target : High Precision Event Timer Driver >Description: This patch add following facilities to acpi_hpet timer driver. 1) Periodic timer facility This driver provides periodic timer facility for userland applications to use for appication specific process scheduling. 2) Global time stamp for SMP machines. This driver provides a common time-base on N-Way MP system via mmap system call. It is not affected by clock freq. drifts. The following issues remain in the range that I notice: (a) HPET timer facility can not share the interrupt with other devices: This constraint comes from design of HPET timer device, ISR register in HPET does not reports ISR state when the HPET interrupts are configured as edge interrupt. So we can not determine whether the interrupt should be handled by HPET driver or not. If we configure HPET timer interrupts as level interrupt when driver initialization phase, it may be able to determine the owner of interrupts. (b) Timer0 is not available: Due to issue (a), HPET timer interrupts are routed with legacy routing way which is mentioned in HPET/ICH-N manuals. In this way, timer0's interrupt is routed to IRQ2. However, as far as I see, bus_setup_interrupt can not setup the interrupt handler of IRQ2. To solve this problem, we can use I/O APIC routing in stead of legacy routing. But this solution raises issue(a). So, I can not figure out how to solve this issue. >How-To-Repeat: Attached test programs(they are included in hpet-tp.tar.bz2.uu) can be used to test this driver. >Fix: This is not a bug. begin 644 hpet-timer-20070509.patch.gz M'XL("'NE048"`VAP970M=&EM97(M,C`P-S`U,#DN<&%T8V@`U3WQ>]I(KC_3 MOV(V>\G:P4F!I&T*FWU'P6G\CD`.2+O][N[S.<8DO@)F;9.TN^W][4_2S-AC M8P/IWKM[KU_;$%NCT4@:C:31#!-_.F5'_=4R9-'GZ,A=A:&WB(\:M=JKVFGC MQ?.)]_#<<9>^Z]"/8Q?!UI\^.SHZVA%!Y2+TV943LL8)JYTTZR^;IS6&X,^J MU6HQ]LIXY4&3SXR=L4:C>5)KGK[F3?[X1W;THG9BO&15_/&*P0-L8SMQ[+CW M&J#R7<^.&7S0GS'Z<\@KF$7WP6HV8;<>`KX_L5 ME_=K5GO5;)PU3\\VRCMIIPC]I'GRNEE[E0K]Y,PXJ;$J_&@T4.BV??%FU+6Z MVMX?+D+/@\]-%H7N\SQ^E,+W_L*=K28>^]$-%G'HWZYIW/U/*E3N[8,3(D"U M%(`/`'$\8R2UD3FTVCV[:W9Z&KXSV!X^9Y?7YIA%J^4R".,]TI`J"M9W43?< MF1-%H+FI2LF'H&O?3[PI:`CKFN]LQ*)]TBL5C4#O`'+NW/DN/&/GYTSS%[%^ ML(Y%?U9]ALI(E'3:T.7MZNX.%1.U3G9@=P97UX.^V1]7:"ACZ\HVZP6L2: M0)P\\$)V&+O(8]'R(?`GZG3UHJ11GO+#R.735S1U[T&;#PG`GT1_^1M,P]_8 MWG7_NE:OG>P9K'_3Z[&OV.)(LA&Y8U^95_9[JSN^K%1JGTYKM0IPW_RTA!D+ M%@?&'82?A05@$4QFE$,6P>#B8@0_K/[%H$*M>X$+%`%\,&7^8AK`?Q)#6>-K MT,5!MW*:;[[T0C^8,*W^_/Y7O;2UV6^_`6G4/M77^O<6:/'88Q!.2IN_:_=N ML/5TK;7CHKDE>87LP9FM^/"1YVN"Y`)3'@#_G['*<>QFE8"=5]8UPQ"0HBU, ME>@C`/ZSMC+(L)PUC'J#55^=&O4S-"Q"YJ!FSQ3%2.RZNKH@$=Q*W_0[8VO0 MM\?#=L?4-*XPNK8"+,LXM&,=[-5TM7!M6T=M/JJ@@2?L$S]"-DZT/>QG3V=? MOL!K7`,(L]6UKX>#-Z;L&H>V=-`,TR)C("4&DZI)\Y^T,<&BM%O!LD&MV'?G MK`;F`&1RX8=13/*8S3@>_I]8(Q`SRJ0+AQ70CNDKHQ:MPP("1Q,2PP9$J0SI74-6E8$U._E057R@!O7.VX.`8FV M;A^-0E[!P%A"FD8C(Q$"B4R:MXBP1*Y&A.Q=^G?W[#KT7#]"93?1M6!C5'2R M^0FR&O[VE93P]4MP9:JO3\&O*57!8@\'=;#>E@;B*A$[M%/\!$F)MEY_H!;<'B6 M+%/\2>(>'56`+GA?HY4!6HBU`![=KB(;5#)P;;E4V,[B,V?PZ,/('IHC-*^# MX0>#'0`60ZC[\,)NPU1\9Z*#EN+T)^>U%E.?/+D7U%#X0^[9@8+84%^HW3/2 MX$R'7#%S&C6`'DBE&-K(=^#739S88_&]$[-'C[G.`ACH@IL*C\#"HT-[LF/?J3^)[M@QF(@X!% M<^#47Q=[R&D:;'F7Q'O!D2U@2`E*`?3/2X10+`"U::MH4K(*GTSU!NEMM=ZH M&XVSG?07&#\$*\5NG0@F'LV_"*8@..FW`40,R'A:J03'8?H([4';9I^JPS(* M5E\B#J<8M-+JM>P?L%15G)#L.6OH\!_-S:K05;1#MNLL(YHF%6%3.;%DJ-$+ M`!;'P@6H/H$V="N$#%"%;H,@?O#"VR#R='+>GHZJ4*WP*2K"'MC!29/5/NU_ M`@U[$)\6JWF3[<-@?H4?_YBP8!E'S?UH/U)5#0GYZ2=6?VG0QP-H.IT:3)// MSW3^S"`[1C-RAV;Y5H).+4'[`@'J.OLOML=FWIT=@BYX>ZS)]O8*H$\4:'(V M2.,YN-!.-'D8#GH0!(0>\T%\D?"C)J1:1S09'D,_]C:QFWME!O36$@LE'Q_! MW/2M,7CQ_0O[Y>D;^'C5'OU)IY4PJU!?SCE\IWTM(3NIXI&Z1_8"G2TM85FN M`P@.[/[0'EU:%V,-%+@6@V6*P0Z!TB?"X"K/!4'- M.+S=,]\.QU_4)_P'V!R&CCWQ#$,`;_&@[5$D=,P#01D;[/&%/Q\P8&!`-N:T MCCF(^HN:47^QDXG).['HDZ+>K;R%^QF8+%;@0CB83;BVXGK.*O"[C][)01XR M6?(0U3G'5WV211!,*E`JE:]H'3:K$X"U.Q_LX;A%@`FA(;I*JR5G8[7RE7FS MR!/8LH9#.!2P)G5@_4,W5,C=`6:AZ"%NA24AP!5R$L#:*D%62^KNB)MK,"*\ M)Q)Z@>-5?W%FU&L@R%/T"YU6C_L(XS;F>FR/VU!M?TR!D,(:[X$K-9DUR:!:TO+`X.HX? M[$7DN;#NXKK,"0$[1MF"9]72]![7`AZ%@'%%%>;I$IHFE.>AA$$K]\)L=\TA MO)J$R9O1N#V^&55XA@^?)DD3]]Z?360'9M]EG@V$B8S%AXJ$!XYCKA1$1M:!?4!.);+Q[C>$06!R0"7C30E,S\@MRCSM<0+C-. M%#D@YP):';G.Q`!I!`#RYF9DM[M=NW-I];H:9YO!:B"9S$5%"'EO/VJBA_Q#C+E<1I`D627<3B)+;@@HMJ1>HR1Q1NV,\LR9 MU/2(6P+NI(I&>3>U)L?1YLGE8_'3R+OA?'A:HK6@61!]3.3Z0>C34%UJQ<2; M>3#;Z&W"2`X+"+^B7,KFB*K.J<7`\!"M.#&6L7)SQLU-&DCSYD5Q-*$C%>&9 M[)QO>7"`85$J4"'29`D@ZPJ]R95]U_!==HNM,@@S,NJX'C?A7?/= ME3F^''0S2F#DTTXZ3U0UZG5,$C1>-3)9@@GX!K"PQHJKPA^)WM$)#:8EAA-0 MB\3E;GEHL-K=(82W0Y$+3N7`J59IYU08K$A4,$G(UHJ,\-OO==61U_A<@ MOVE7X[Y\M^'^B;L:][2K\=^@-JS.:J^;M1K\9?77KVJ;=S7N*^^]"=_5>`W@ MS?II\T39RJH9Z'N`!X(^).XP3-EW/(TZX5:5;,:EGFX`*$_5'0DD`*R!,\_M M5.!S/W#=H.A%Y,UHP5A_,Z>L"+U([`E/L&'2&:?K:A'Y=T`FFP6+.W;OVS[X MF^1SHKY?.?Z"R6PM!;[P^^6OW%U?:TJ[5]2N[WF3B$%$RX"RU2=`,5^"7M[Z M,S_^G&L=W0=AC,UIG<76-V``,*"\A4ZU`@1Z&09RP0@%=\8$#H3^2G8LD]NV M3'O0Y\D-VQIH/]S_`-K\J0:A'X8I-,?#U3)F(B)?:WMQL=:VL=86U'V],439 M+.EXF+0^,5A>1CJBNQ/Y@75,YK7%V/H03CD9PCGE.P2P/,+RY84/P#`4#'#4 M668YFD'=+4;]@J,6:>-OQ&T-_WPQ-/\L<+^7R%^B[5=T2N>[KA)ZA?X==X.> MPR+($G,<+3W7G_IB4R*$E15<[)CO1D0(F.]?V=#1:$='WV%+)Z\^ZJ:.QC%L MWM:I;MC6T4[UK1L[U0T;.QKN[.A;MG:*Z1\-B0N-]>;PJK09WQ'2<$M(WVU/ MJ!#-N$^Y!>NMMM`Y%2!6^,RJ#$=4TS/?KU!9G6"K:V59`B76:AX216WWX\>':M#L`GW1?`FCVWV3@ M3@O@LL@0ZJP`BLA#YF?'72`D":QDI!(F;8*]1H)3O)M`APK@=`N@8/IK/;4; MW+&2=B-K*1)D%2Z:$7A):'\JP)F7I^M:E4F4%.N,FII+%"]/-`B>F$`&`64W M+,0EX3@^VM8OEK^`ZR&F%.ZDN&<,7FV([CY42CLE$#%!)'69<7!^):RPK;/& MB]>`3R$M#S(<(S_.\@!7%BGO$&8"MC]9>]_^67E_PJDH]HQ;><]'Y*_`3>;^ M#ZS59UC8`+Y""V,--&:TR0@F&.+`?7<99.QK,!V/I+!!:Y@"SXB$?P M"2BFE2H56-Q"05OB?8US!E0!]\1:Q;?#H0<`EWX:9FSB`.NBIN#,3<1V0C`# M^PR+08)CXL0.-$P[XGOO!"T8)AQ+!B/Q9DL!/(+UU54G^.E1.B4VLOIP<^(#FB9519DT]:;RH.KW MW@*B4O9-H2GO9D/9G01X6I@J6WU;L)JTSH:LIS6(6M="UE>G)Q2R/C\\HJ6Q M$RP_A_[=?O@W``DBHUH2:>&YS9XP%>"+X0%_BR"&*:\`2!^!%$NK[Y)>Z8A M9LG"7.[,(=D0DL8Z*="EPA9)"HQULG*]_RUJ&!^H1#4)W-4<5-21LGL.8@D` M(&1S!]87WYE%*?M);HA9'4BJ">-+:\1&@XOQ^_;0A(""70\'[ZRNV65O/L!+ MD[5OQI>#(0,[QL!G&P^M-S?@TH_8W__>'@'\#S_@*ZYQ_0_,_/EZ:(Y&#%I8 M5]<]"_``XF&[/[;,D<&L?J=WT[7Z;PT&:%A_,&8]Z\H:`]AX8&!_A&F]*1M< M,'"0.F!/Q^TW5L\:?R"2+JQQ'_N[0!(9Q!MCJW/3:P_9]C#BZ'!D76O4 MZ;7!R>H>,R`#NF;F.[,_9J/+=J^GCA3^9@;ZQ@0:T:DB7-01#+1K#4 M?NH`WX"\GL%&UV;'P@_FSR:,I8WY:HYW9/[Y!H#@)7=TVU?MMS`\;0MG0"J= MFZ%YA10#*T8W;T9C:WPS-MG;P:`[(ES0`;C"[ZR..6JQWF!$3`/OV(!>QFTB M`-``Q^`U?`9GTB+>@:-F#H\$RMOG^]MZN6 M6O""]!6$/T-S//R`L15OXWR"M00K*SKDQ(/QQ\W?]::==L]Z,VQ3D>NH#;8# MC0/MF))K[\R7,UP<4'RT,+K.S+\-T[(D=!28-66?@Q5[Q"0;!!I4=L%7'KE7 M,`=_05EKYHX;!K)`AO`\?YZ/+R'*[IIO;MYR:4R93)_GWRNAJ>+H$0W:=(Y; M#N'=\?&QSOX*'JC8,:+GWW\/;[`U%BOLBF02L-^^LL=[C)PTRDB0M\A]5-II M$J3" MT!Y_%@T^4D'\P(UG633T2(7!.9)#@X]4$)B+RQP(/FHIHZ*03.U&YL$U>G.( M`F@))1))UMO5="J"["M8*0<=.FT!AE:[LE/18ZOD]06L*YFW!MM+.]V#WP12 M3$6G121[LFONZ-#\H)AHO,!L$8^SA9F6IQ1$K/.LFF.OE`88LPW1A8&Q)P]Q M(*32?U.CIZ0ZY9_?@0CF_':SR>8 M%OS-#W_)6%*,+^=,DR3\ M^&/YIL3FTKNMQE'V][L%A462JIQ@PFV=16M+&YU/>%=H:7CU: MDISG64)H>I"6,?]%=O@W+CBJ_L5'1S]1[>I!Z=:'J$U*J$*3@C7\/_Z8C*&% MU48(!,X)O@;#,_,>O)G"/5ZE3*50WVDXL(,L"I840945,28'*O;&LF1T?Y)6 MOH:.3WFR.*1"I@0Z)9*36"%&F_T!!.S\D,9=`/0"F0&XD2LJ5ZQ\Y;#%]M'% MVIR/.AY%X(!)VZ;B4(3N5MVBR@R($()PI\F?@O/'W^A8X,J;>X(+ZI/]C60/ M.>MS(/HG3LYU3&A#C92T'"-'<;!4^%C*O`C@GLBJ8OM8,`M5_PYPJ%KVS=.2 M:O:>B_&)FF@Z(7_DT]X#EH9P!>#3*2'OX)S]4RO;NOY2N%>MI_6KI7ZK,JZL MQ:SLH)NN/"^F3D+UF2;9K&O_K-WT]$WO!+7"8(D]#QQUZ19K3F5(6Y2(?,N$ M4R`W^76\ZIF6UHSAYNYMW6#"6:T7O&TD;QL%;Y.7](%O%Z6:13F&I>>RN&[$ M#5D>C7M!8AIZ,'23FKF:./`\CF09D"T3L M2(I%'*[E"TL"PS\^+Q]>NE>Y5EY/;9ML?R4V@K6Y>\2?[:]TMC];,2RPE^L2 M*GC2>2I?`Q;D1E*,?P2RE;_H:P;08%Q+7+A`WK>$)G`I!X*FKS+^?B-7(*%AVG$=)T[WNQYTH:M#:V^Q2\XE++G,?HW+V%)&`&HI,!! M*UN_?U7%2>W-89#<2Z`"ZFQA=XY8/34.XDRK%\>)711+R6(U!S)D/RUEC7'% M:;/\JG->4/E#>?Q&$U@2=7-"$R<&*]!VAQFX;!KL8_ M8\HN&0::CD-&8A;0UO#/29%#1-Z#J!YX]&.P#XH_A3)U'7"0:TVD-7N*C&.K M,>FDA[_(4>8JDDB#;T%2'UL27_T;\0W'G2RVB3=U5C-RH46+4NODTG%5H:XY MWTO.;D(A#XZH1\W![>F(*$52,A)_7GK9R4!' MC!)G?OH>*=V=5.7`[W9: ME4+`K;1FRS=;O$BJJ;L5VTDBQ2?N5+NV)[+9R9*W4 M5=_F;R5RH")L3"TJ1/"2J3!C2$6)6K$Q%>5HY==-%.NZ\)4.LET8Z143 M7^#3Z+(]-.5AS&QB0W1+BI";\6*J*L:TF;I3YVR?'Z$39ZD"@<+L#MG M3MX[X0(5I\F4,\7``40LK,/^1/)@MBK.I!C*A188<>39G61:Z$H%2@K./%@K MMIDV'O[EA9U'+H6Y>;1EPQ6D\`&C`TGHZ8PT+1W*#%XGAS08Q<9=O*\RH52P MN'Q5)EMIN)JX#GFW(6-'-@RS=)!K4S89JM#LU/W16]L]TG2_8=!G&N):!(LC M>8"%(],W>Z>^EX;2Q5XE5^*-AR\3WRSC3\)3VUU,-T71:Z8A5S/,707U"B;- MM/KOVKW4AU22,B2BM0R3F^>J_2M4?J&A$]*HG)94`G'JT)&\$$)AI-6M:(V:HX:\[PH@8_AK!]X7D3Z8FA5?EN MTTZI$N_JV9`SMY94STM4J#@;L6%'19F'ZN1,GV9[YA<-2"4!&_$&[Z]G)5GLK%=9`J%CN<4'(ORBG4[OU0@I)8I!R0?%[.'>#*>?PH@ M^$V.>5HE,QR24:&R=62]VW-\F53Y:A-#F: M7GBHW@V*]QWF0\2!MR^/0D?ZG*%YV]VF\IR*U^@6S<]I'XBK.?LF\)TF.#6 MBKSBX'PMVE7GU?8PMZ*D`WG,MR/MV8!KO5:`BE5WFSL$^CLGS[JA\LZX=3DT+]H#O_HS6]6&8\\G^!5I"AY)VE7-K%'JF2%69I?:+C`-DB M2-V,Y-*[2K934>LS=?R9+/7YFI#"(9/\DJ)U)/J?,$'P6XFI(0H(S,=#?:[G MXZ&^A(J$#/3G!=-Q._%ZT.M9?7#D\<.PVQ\,KX1941-`!?T].CY=KL)1*1V! M9D#W03C1EFG:4"[P,F5%_TLF9&J6!`]R.H>UZKO9(H0L4+6'N1U,I[B[0=>Z M1'B]$3Q;XI=/X.8C?>`:N0R#6/_/F224.J>07];2#P3!8B]+3TY@2*E)E6< MKIZ+^?IO40N*>C*Q#3=@>$KH/'>0:%/<23P4D_.;#%XF9]%^V[;Z`I4\5T,T M'1TEUHFRPCL%4!4F5C0UCJ(#Z3%>?A#!%)UZN(LL$E/J90H55N3QL9U7MPK= MB4*VSW:P25-`08-[/Z@_Z8WZ,@MO0KC*H*.-S&EE-H!`B2%&Z0!6(42 M$`UXWZ"R%L4%]=ET^FHWJT2@!69I9=.-$NY\8C!7K$!.*-SD>3#Q^.79ZZ[R M;VD]2Q"J8682=M)5)1?6SU=F9NGGXQAO[%@%>:X*!S[.6,D,DQ7DU"8$HH7YQ)EA5*"%Y6 MH$17TR7S&7X!(YE>'4A%1]R`M#(`-&%Q(H&N9=](%4F'W2K;[L[/#GX3#7;6 MQ")%Q-WD9'$KJ1IS4DHC."VEXI`G52QIG75G,MJ;,U/YG;K^9?&I$=BKIKLUEVW7\]";O.9+583-H0/A/72K34 M%#R!*I<$YT\A1X_9,\WXX)R,%]CU!R^,^&'DRO'$EK^=LTK7?F<.1]:@;W!` MRCMQ*/Q8(;.;/ZPL8'F>AP/SSWE@>BJ@Q<%T!*:/:\#X5,!R!>3`_#.37PZE M:*@`IOB5P^+'2AX6'PI0"@8Y*'W,@^)#`;IPYG)L])&3FSEP+&\M$LL[KT91 MCLA,'5=UR\C)9HC-9X=Q%RZ*L(K/RR1K#7,J"&FQ=_C8:!U%VQ+_- M@OGPI:H#WT>E/;PY?#\V?>,\67:U1=-<5O=CY7BV"?O)7F/)6 M&[_%]+3V"K_I`'_0=Q11^$^S^-:)8R_\3"S'SS@ATN\A(WJF3]$3U/483#34]3>IIHT"&0]">B&"9H3U-&C MR")0D,D93TF`*9BF:(TT-J8)@F3$T-&F33)IH#0!Z@D2!$PFDPFA/13T"CR: M3:)Y,IA,C)Z@#0#3('J:`''YE/P4\:5GE\D/3FWQ.&G)4R4D)`B,RJ@ET%+N M;P\-W/E92Z\%/4I8,@-8#`6`@T$@P0%$<,AVOQH"&_->JJ5#27:H#AL%NWA0 M2Y!RPI!"(02+!B$0@"2(J"R'[X=YJTK?PD06`D)2RTJV=?)IW3-+Q*J4TUI0 M2S8B9E$1A908.42H6C)L4F=8DP!4J*,&F_`E' MWJ!\W@._R+9/D)4*F_`)!K%:$604Y?9-,W@VE.ZGK2A<*2_&5:%`YX$%W%]2 M>?T>'ZZ_7]>WO^R:8Z73S1@?S9Y2Q1$R2-EF8,[1$O<[O=B+/U>S[MNE#5$LM;2U110'K:/8@RM.T5;Q^+T` M2*X^=&),4(F!ZY0+41&T49X[`3$Y!1,C(4!2(54Z&\X;21M=&JDV2EX&H2*C M-1K4PD8;L]TTKB%@K#87?V\_&[F40H*8Q;1):V"@1[;/D%R:-?S@P_6%Q4V) M\YBJI;-J!?>K$&`D$%F$)/\15"",4`8DL0Q\P,BV%^26&LQB."`@"&!F'8VY M@;>L-,F-I0<5VPO;];](OH9_%G9VG$#9F>EHB>68:SFA1.A_8T(3N@N@H>H9 MQ"BK0O.N:4`]0-"F7%@NF7,3#PCK,PQ@C$"AA6-K@HZ6#,Z,OKZ5]'D+^'-H MT;G"F:&O`,@(AAIL"'V6_)V->6'YQKX^@MTFS#Z?Z*W2P&3P@UR\[6A*7>^:_KPV7P7.A'#-;"E%^$%X.^`= M+2ZD;T>D6NC>5!?9/%1K%3[%CB4FM%(-0=IU:J9`NNU74#'G:"V&AJ'$2B8Q5&H,) MSH-(/#XA>E>8"=[.9PX9[)O`PE.!1#7B7DL=_+7.:55U3B%,G6JH<>( M-AD"YM:;:&9[]RV<$F7&X(T$\"LO'4O96P-4;2P$='R^7W)*+:N[4#:.ITO& MK;FOG[NMMUO:VWBT%=&0SY#BTJVS M3BD5$5\LXB*N.B":19(]]%R&D>LI-(/L4`XRU=';)S;#\7P!(,KCP>/,+$]6 M,)&S3-4S4/]PVRI<028Z0(QQUV$9Y7D&PN@WHC+*R+X-//AD'WI>]Y MJ0U]J4'MA7VI?),#NMC26L(C)J\O@"RDLOAFVE'N^3S3UT)E-U"SP!M%5'NN MZUO.:J7,1BQ*=QS9SKI%Y[VF/W",F)R1A'SPS&"4=9*)R1@_BEZ7P81P'92: M&D!]AB66ZN)8/FN2("+>^&2VTWWF[;!U%RZ1]`"90-":`IT.YXC]3Y0>Q;LH M]8[X\5\\AEZDN`R$PW,\-[FBB*]N%8#R@>[^M$I@5?3T;P_.>$+Z!*P9[$JB M!EP+\P+:ELS^(#IVR:#G#D(.O/!8CN@+!K-W4K@S2I&-Z)/:$PZ31+%+>#5S+ M)6&*P%XE6^X="@EI*!;3U[A+(,;BH+KND7(SP)![P>0$&!ARFR>+HO5*H[E: MNSKY:JBT3&"&@?GJ0U#Z:O&R\88>G>[QK'?R7S3FY]`3$X!)GW2S!P6!*/M` MP\9,/3W,5R`W!O^M]9)'."D@/A\&>@K_C MW;1/`V->B+Z.XGHJ`7H,,9KAMKC*N"936J:2;`YR%6U2$W0@07BN+6`X&2!0C49$D"I4"@%R?;9( M&,S.S<);TG!=P*#YTS!4SR(=[7$SJF"FI3,3`P\M4=N%Q#$E$HJL0ZJ(5@JM MH.SH+YV5+*823.PSZ1DS10S*#X+WV(GLN]HOP\\-IT&`XS4,HV&IGW!!F_IE MR2.LGS2`1>")#!A.O*$5[A2X3*F^0O@%53`P0(I"J1N- M#IQ`7381L2Q2K8XG.N@N%_$"XVH,SGE@]PQ$"R/R$("A,@&0A6&D2%Q9HH16 M`)&*T*$;`F,<00[1HU`X!'V]Z#@N43S023;&'WM$;^*%@#3(5%>`O'1:ER"J M+`9-=+^=E`%Q6X5D>&FHPF8H,4EMMB/'_ M7^]3@X.'C\.[H!BQ`E&31-(VJN#;JJZWUF4GVWR*")_8Q+U/K0Z8=`Z)'M&! MTB)9.GKX2)%AT:%K)O*_#ERIT""M_/7B0R*#C1/B87;17W0H[#JAGQ$8U:-( M]9N81A4Q`XSD#MA9[42'06MEU?*CS),O*&X#R;?<2*0:FA@,(1"RCJ6393L< M1LD2\N5.2:;31KXC*MXY+@25%Q*:254&I2NNPZL@YC$#<$U` MD;^$B.[=O1D4Q6]:U-H#43UBG_P2JED;-*$B@Q#$P:`.XK!Q`D#.'AA1O,!J MK54)#,]=+-0=9*%#G)I9XU%T'B@.+0%M!#L=X%J%*E01FD2X,;,`)"!A6IVE MN9(R%MKQ79GP\X^HDR$0@(90])S[`H/&H<"(FQA[0^=)0MPQ[>N&#"H;@X!J'XN MN1*4H+*Y;"M#$"A#=#7,J1'34AE=4-LU1*WH[@52,O`(JDJ&FR[:D:+8 MN_@VVW()$$+`P(%*I"<$+/H)DG-0K*I<3(%)&ER4YDAE$F.5"4#!!2!>,4#, MA,ZQ8S!"U2BNN:I(Q85`+*,!Q."ZLS3065,8CK..XW*"I81OK(5M$%[8/@=9 M3?4SFT!,YC1`NL00B]@BH8@574(WAL#>NME%5;<>`BB$*:61S&\-I?P=1A`R M#=>8`B?2>P!'%'H2++$UH+PO!@P-XN[?FT<J]:@[0($3P"XZ;L2 MZ80$E7`D=RXK)BV!QJ?IOFLAMS(N?`BZ`3U\H#35VQ@?=`)(;6H%F)&#+0U* 1*4_[JV!#_Q=R13A0D)5804X` ` end >Release-Note: >Audit-Trail: >Unformatted: