From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030975AbXDPVNj (ORCPT ); Mon, 16 Apr 2007 17:13:39 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1030969AbXDPVNj (ORCPT ); Mon, 16 Apr 2007 17:13:39 -0400 Received: from ug-out-1314.google.com ([66.249.92.172]:64265 "EHLO ug-out-1314.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1030975AbXDPVNg (ORCPT ); Mon, 16 Apr 2007 17:13:36 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:date:from:to:cc:subject:message-id:references:mime-version:content-type:content-disposition:in-reply-to:user-agent; b=TWwoMmOrkQJrLHAba6RQxOg8WMy3CS0ZOAt90APUjLUuRnMUvyhPsnGqCSoXeMoMAkjQTwIszdkhsAknC/oAxJbS7LaPClk+BKQSvMDbM07GtmVljLJXRmaDbvDnuj71lQu7gwwjNnL4LJrM5mWRv9KwfcxXmTwXYOnx2v3Tesk= Date: Mon, 16 Apr 2007 23:14:11 +0200 From: Luca Tettamanti To: Bjorn Helgaas Cc: Jean Delvare , Pavel Machek , linux-kernel , lm-sensors@lm-sensors.org, linux-acpi@vger.kernel.org, Chuck Ebbert Subject: Re: [lm-sensors] Could the k8temp driver be interfering with ACPI? Message-ID: <20070416211411.GA16150@dreamland.darkstar.lan> References: <45D5EA88.7090300@redhat.com> <200704151431.41503.bjorn.helgaas@hp.com> <68676e00704151359g18bf6935wcb2144bcbcf4edd2@mail.gmail.com> <200704151857.03115.bjorn.helgaas@hp.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="ZGiS0Q5IWpPtfppv" Content-Disposition: inline In-Reply-To: <200704151857.03115.bjorn.helgaas@hp.com> User-Agent: Mutt/1.5.13 (2006-08-11) Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org --ZGiS0Q5IWpPtfppv Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Il Sun, Apr 15, 2007 at 06:57:02PM -0600, Bjorn Helgaas ha scritto: > On Sunday 15 April 2007 14:59, Luca Tettamanti wrote: > > On 4/15/07, Bjorn Helgaas wrote: > > > But I missed the details, such as the specific devices in question, > > > which ports they use, how they are described in ACPI, which AML > > > methods use those ports, and which non-ACPI drivers also use them. > > > > The original report was about the temperature sensors of K8 cpus. It > > happens that ACPI reads the sensors while the linux driver is using it > > and gets garbage (and shut down the system). The problem is more > > generic though, and applies to all hardware monitoring chips for which > > a driver exists. > > Yes, I saw that much, but that's not enough detail to craft a good > solution. > > In the case of k8temp, the driver claims PCI devices with a certain > vendor and device ID. PCI devices are mostly outside the scope of > ACPI. There's a standard enumeration protocol, and a driver should > be able to claim any device it recognizes without fear of conflict. > > I claim that an AML method that accesses a PCI device is > defective because the AML can't know whether a native driver > has claimed the device. k8temp seems a special case tough. > Sometimes the firmware can hide PCI devices so the OS > enumeration doesn't find them. In that case, AML might > be able to safely use the PCI device, but the native > driver wouldn't be able to claim the device, so there > would be no conflict. (Linux sometimes uses quirks to > "unhide" things like this, which could lead to a conflict > of our own making.) > > I suspect that other sensor drivers may just probe for devices > at "known" addresses hard-coded in the driver. Usually sensors are attached to SMBUS or available in ISA IO space. AFAIK they're not enumerated anywhere (at least I2C devices are not, you poke at various addresses and see if something responds - not sure about ISA). > This is a > problem because the ACPI model is that the OS learns about > all built-in devices via the ACPI namespace. If it isn't > in the namespace, it shouldn't exist as far as the OS is > concerned. > > So we could easily have the situation where ACPI uses a > sensor and does not expose it to the OS in the namespace. > In that case, the firmware expectation is that the OS > won't touch the device. If the OS pokes around at the > magic addresses and happens to trip over the device, we > just made ourselves a problem. > > > > It also sounds like the non-ACPI drivers provide much more > > > functionality than ACPI exposes. I'd like to understand this, > > > too, because an obvious way to solve the problem would be to > > > drop the non-ACPI drivers. > > > > Problem is that ACPI may access the sensors anyway (e.g. via SMM). > > If ACPI accesses sensors but there is no native driver, there > should be no conflict. Of course. But we do have native drivers ;-) > > > Is this extra functionality available > > > on Windows? If so, do we know whether Windows uses non-ACPI drivers > > > or whether they have some smarter way to use ACPI? > > > > Usually ACPI exposes 1 or 2 temperature readings (CPU and > > motherboard), while the hw driver can also provide fans and voltages > > measurements. > > > > Vendors usually provides a monitoring utility for Win that also > > exposes these information. It's not known whether there's a way to > > avoid conflicting accesses between ACPI and the raw driver; it's > > possible that it's vendor-specific and not documented. > > I'd be surprised if Windows provided interfaces to coordinate > between two drivers. My impression is that they really want > to have a single owner for a piece of hardware. It would be > interesting to figure out how these monitoring utilities work. > Maybe the monitor and the AML both go through an embedded > controller driver and coordinate that way? Hum, the utility I have here (Asus PC Probe) seems to use ACPI: Pro2.dll: [Ordinal/Name Pointer] Table [ 11] OCAPI_ACPI_OC_PresetList [ 12] OCAPI_ACPI_OC__MB_GetBoardName [ 23] OCAPI_CheckAiGear [ 0] OCAPI_CheckIntelPowerSaving [ 6] OCAPI_CheckWorkable [ 2] OCAPI_Close [ 9] OCAPI_EnableQFan [ 16] OCAPI_GENERAL_GetList [ 14] OCAPI_GetCpuVoltRange [ 13] OCAPI_GetCurrentCpuFrequency [ 15] OCAPI_GetFanStartTemp [ 3] OCAPI_GetHealthData [ 4] OCAPI_GetHwSensorData [ 22] OCAPI_GetMBIF [ 8] OCAPI_GetQFanInfo [ 5] OCAPI_HW_EnumerateOption [ 7] OCAPI_HideQFan [ 1] OCAPI_Initialization [ 19] OCAPI_NQFAN_GetData [ 21] OCAPI_NQFAN_GetList [ 20] OCAPI_NQFAN_SetData [ 17] OCAPI_QFAN_GetData [ 18] OCAPI_QFAN_SetData [ 10] OCAPI_SetQFanTarget [ 24] ___CPPdebugHook ASiO.dll: [Ordinal/Name Pointer] Table [ 1] ASIO_Close [ 9] ASIO_GetCpuID [ 3] ASIO_InPortB [ 5] ASIO_InPortD [ 7] ASIO_MapMem [ 0] ASIO_Open [ 4] ASIO_OutPortB [ 6] ASIO_OutPortD [ 10] ASIO_ReadMSR [ 8] ASIO_UnmapMem [ 11] ASIO_WriteMSR [ 2] OC_GetCurrentCpuFrequency It seems that Asus exposes monitorining data using "ATK0110" (enumerated in DSDT); I see it both on my P5B-E motherboard and on my notebook (L3D) (they have different methods though). Another motherboard with the same device may actually call it "FOOBAR123" or "WTFISTHIS". Problem is that ACPI methods are not documented at all (how am I supposed to know that "G6T6" is the reading of the 12V rail?) while the datasheet of hw monitoring chips (w83627ehf in my case) are public (more or less). Furthermore, sensor driver exposes all the reading of the chip (e.g. in the DSDT I can't find the VSB or battery voltage). I'm attacching my DSDT, in case you want to have fun ;-) Luca -- Collect some stars to shine for you And start today 'cause there's only a few A sign of times my friend --ZGiS0Q5IWpPtfppv Content-Type: application/octet-stream Content-Description: Asus P5B-E DSDT Content-Disposition: attachment; filename="dsdt.dsl.bz2" Content-Transfer-Encoding: base64 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 Vz2nHDm9hfCM08Js91bHtdlk6W992NmxveInYpyKUZAmOQCBrvPe7c0T6l0BuYIj0xgMQDmB za4NksjfXfKRphqmQh1kJw2BCNswt94SKQLiUHoCTIQHQDelw+WyEiUMpAHcOwVivHhqtMe5 8Xg8mw6gocjwDNu7zVVeGKpVU2jCvAac1HN3J5FKGx8TGKrYTr/Z3bdWymGicdzHVWMafTa3 8vsuR8zvFKPm0Ptlt6rpMH3BDxODvKdqEKJmBhQpQp9YvBfyr+PYftEC+pAToHMkXRO3uy3M hjrYxRg2AM3rURSVSvVKuqrzt6Sbeuu9axtXOjNTNteqWleDg1nrOMpKe7o5Fli51qNMl7iK /kPbAay1wfwHrO0mORnQs5z9anY02VWuHvZjGTbvM30KOZ0ak5Bg21VnNgx9xUfDnm1465Mu h3l+3HcdApxuo7jk1qVVUpweJj821uPwyG6k9j8X82nc/Js2c2z3j9BwORu83BoN+jkqqrPB wdj1jHwTq5vV1h3bQ5Sb9lVVVXV0OokBjIjn0fX9+3vN798FQns7duHefX1zFdrvFVUzMzPR o+JLvzHENqSd2WytjHE9sb2/Xx86c0e/qCVg8b844kiysTw3hv7BgaZE4h8Q48mtO19XGdA6 D5WvaYcdJVVVbOZyOY66eD507M6Oiqqujg6HQY5ppx5b5mZmZmd3Z73D4u+Kgg/wLYtd5+Ov vw4Xfl5W4SPyib4St6x9Angxmj8sA4hoF2MdsAShDyGDYfNLkNQb6nhq8NuRAPxlx2z2xPe+ /stYA5vCghxDlXJxJwPUht1aWxGyQPJNxORfjSerhWBFwMrpWRaaeDzQi8EDhIExsyfnKTkL FkG5uf138PW5JVJ0NC4cr0YHOa1pLoDu5s003fO/sftW0+SWS3S5/dpNJ1S1l9Mvml6wu37z scHx06C31oxj/JMMHKQisfroMh+02ImMwmbz3ecPFPF+yerbws3XX7q7udLq444YTwndbZCl KUjSlIZ6+7yXdTpj29jQ310r7v3hL9alH/P1H4/79B/iGYf6zGGGJJD/AH+KST/FkuXTGNJV paWKrLIGWXSinl7Xh5W2u8GcO5ydv8gdfrCjUs7PXx52X98cfPDz60q88O2V1b76KscdbpIr mNcvOt9X1x10ubPT3663zM3yTXWIvnPWGrfdYxSHhe9Puu/9/2+47dZTmdWKpryZGDTODMtF Sw/+Qs7komnnnPIzxP6ft/J4NjcOT36Rz7hop1n0Ozy7Ry4tObLlWV72TWtj6oRk5FEDkJGJ D4w94+wF2KbSzI2Zl7NaNrOq+/kxKqcUbOWLOpnNVnTHg6+F17CnCo2pubsTjc29e0jPFdhV FBRVP44CjyDNcNHZ+EGkJlGSRuRh5mkBmHQJLlXhrpz4WW8uEZ78h4QwEFRhwxCiZ6CyrbGa rfZC7BnCKYYdJCWIJquMou/PoQVnHLp3LEFCHc76v11xzhc66sxq2L6LazxnjiNUgXszBdez oQazmO/LVcuSsmMMMouA1xC/C+Po7ek+JWhmT3mnPtwTu24OTDWSrTU5Ipzbz0Y4aFNpuV3K pSbGyZ1vmGC2UhCe21iKHAVKEJmCI0erOo3TY0tPKtKTlJu9u6TZZVhHBj2ippVVatWJGuO/ OjZ50Q4V4c75ZTvWVbswrsYVVWa7Qza6txmbuR3Iu126Lrd1zl0WSu7sq5gQccT0hATuTDsK bx1ECiiKL8bicGtfboS2U7leUMirs9wEgSGiQgYNh7xzAoww4YLYdgZgNijoodrIDzB6h2ju hijjwxzMUcWGp6vdm7G0ZY8ng72rzfJu2OD95Eh042PbksVhnyGp5lNiyLDWFg4QYLDfYS3j PKBQIUSSSSSSSqweXD2+umzuzycnbymTz6Njr5hliywve4PBqdJazR4GGMrT/Wd8vjKM5ZjR Yij+5jkLfxns27q8oSjtlOFnBLkXhTdh/N6NeWknvKkgA8mwGurPLZQGYuudgAJoZgZupOUb GxyMkcQEQ7k7+Yy/KfIAhx3eq7e+EhfQznt6YW+2RseBBPyDEcWkMajflh1vxQjgO7ciGUUU TBEWQQUTxV93v11zp+EQTnK5xir0IlWtFpAl2bilOvFvmkTqU6uMI2416JdzXINLhcaKlipy 8OXf39eUdFkkcwqUYxhWMkTOeIUQ8Q4uoOdG5MCGlBsbFZVOuFfDOnXegTwBsCSDjhBkjGOE DLGMdJG4NxA2dvxOqppe6A/cef7/uHs2pR4ueIJ5ef3szx0O526J4d/SaRRU5dhU8hrSf6dd bjNQhGREINhBwagNoskW7d1Roqdd0rrutrrS9xZIxQvXOthlk77fBkEb2ygDw6TwGWxALgaF yth17Yt4DSyso4m1VSxSxjJhUpYsVTEd3h6ZsmyyOd87BNKtIeFiO7r3mZpDlw7eeqX4jxeu jrMmTCjbrupZLFnhWLUWotTQrxvayCNWTxsdLCZUI1YnPuw7du5qTWskm9SRyU5zld1RusUK z40oLBgN1iangQShxxSqqtURljtUk69MmZgbuJx12+GnS6jbEnuJFaXPMkgGhhpaRBnjsPPD GgKdabFPdtjrjGYRijpV6ZEmqTtScYJEmkFUTAzJ3xYcEhQscDer1SbB1YPrEjbQGn7NAeLO O0UkQg5OVwu2evh7HRePg9nI2hMXHaAdWhY12aXLeYr2kQVgbLDe8dQaNIghd7SCLrEGMDoZ Fy+Mk0a4wjT+OBjRWZxEGxgVi0aXnSBgAyIxhNw2YZWMjOpZpmsejQYP4kQ6ANY0sehgWqBz O51rhLBA0+86WlJ9ZH1WTRe+ynpMqxMFCiNYNUBUbJRWjQFrRqJNFgNotjWQb+1aWhQigonP +kMB/yyCNIIj7hf0AGYdKIHhhhp4O6GtMzTRgRMBiYDSit6xNk3qFqSbfxwTga6T+5I4g3r5 qNG2NEUVReyr1PfPe+KXdO2vXXqJVQ0pZrFmWiVZqwroknHA4k35WFsWyLYlrEka3wUWNbLU or1fBTN8QuzNBo0WELpiTEMaSTTRiOQFzttyjmhnJYtlkcplTdV5lqYxVwMoszC5AGMKUwY0 hMGJJJtJqsqxQwyaVtN+623ZLMVmVGYr2p3qa3aZtU3nU7vdGjFGrsaTNeNbrNrr23bxsteV JQaTAdIkFYhMQ/+OHKuIC6FKDGrSpKUa253nxE44tVSHC4ksODitDbZhaqV0ZGBoqirKkxoG hmHEpikGNMmSgK7C1MjIajZuwbNWJwStFpRdNm8bTZYpyaEVKaKhVWCIgsRouJQqJkR0AYUV NIiikBvdCJFFsMLhiCS0CjRUDwpocMiQ1Am9ALHLEEaItG1dtZbMW868FPPby1XpbliZvm9W oasRiyYxiwqLVm11ty06XWmXr1u8Hiyci0WuWuVXNq9UlnNjbFa9KvTFqDFwqWLqxLY2YMhp YWsu7dNuEUVgxRF0teUvFisJrRDSrXv3UbaNjGoz1Xa26aLc14142oteLklGxqTRaxvTXi10 14i1Go2+C3NJRPXVcxblrloKLRsUTu102QjSVGixsYqxotelcjYqoDCvUcyR3VBDSGjTbQm0 jWk4tIcnAVv0mphPflPk9fcvYm162vu3/b9n5bpp/OHF1LH62H50Rnz6aND+Rtz/h+LY4PHy 8X/NFycx+Vb8pjQEqDOfUgwXYltCBUsDEsMBJcxg8B9R+pJOHRsfU79Aqxo5gr9Vi2BhJVER 1DnwwfpzjMByDMaT4LPg4RWafGl84IR2GhQXchOZ0ocYRgTLkQeSGEJAlhBkpUFVTGo/TrJP Ip/pH+ge37BPI6YlSP8qzfWaOsOl1Rr3e/6W+z5HaaOLJJso5Kn91R6td/wScZg1m0u5w+tL pTnlB7ucM5Jt9riv2n+mJ1y4EmZsJ9DrGDGC8mViVGm2S0Xs0YXokeVk2eHwGpvxMlWVSt9f fsjZW9vLt2e9vEmu7hU611Hth5nEWqaPmCgpwHJOz6eptFSjr3N9T7jM7iyRs5lVh9Hewe+Q Phk5xY7Du8mhlG3ZnR0YabNNmzuQPNcsmxcGCSjYnD+rSHrYbQwbHCgXwg38mLnbT8QaGWx5 eH84E2Y/J9QQYJeT8lsRETHYWHhE6No1KhVk2zIdbbVxHrWuoiUqZthwhRU2xvR9LQvh+6cj WuKb5qzmuW783BOaPH6sPyVzaa0xrLbxkHGtqCo3Y1YzNeKMBn5PnH/CJJXGmBc4KDYmxes6 +s9tHJQhCRaIjO2IqR+oTCHA/rgr4sDAYhiMcSXzkBOItiWNJG8oEzPAu74VGIs7DO6fxyCs IjakdxQTOMilsqyO7bNSUtm3Xp3nLnh9uRzWyHEwImflJEbMBEBnTEq8eVxLePAOn5De+Luz jnt9t8pac+W5o4plHLB9uUbV1WOSodVifks3qSb9cOR3Gc0LyrjWPKj7WtfH4XbPjnp3VzzU k5ZgboqarKqGd3unmoQhNj0ruw2Zf0y6LPWmKVUFdGO3g5w1+05gcDtw6bTex36JMcGDJ+mE 7u/x0c7VPNzfJEBm5LJG01OHkXBiNBhBXtYROJC3fRJhEqVy0me6+9U0v0MJgUbsLh84IEGG 3qyTGJIBzg5jsgdFQkBMtbSAR5vfNkg1gpM13hibpJdzY+HCR6RmF4huYTGetSpQCwXewqBr xfy21Nmvq2J9R9ODKNRi1mzg2t4zCNKJtobaBpfifWxsTJDO/mYaRoaQw+DO9Uh6gyLmCifz pw2willDmHqni5mT8uk2+zFqR9htnwc/8Op05PxSEzroF8t4d5OCoEwHdupe4UEOhmjPwVOa +x5NwbUMabbbHMo7bYLJzLD3r0fJknRY7yxO3vw5rVnS8adNFV2aC4Wx2CYG6JrhxxanDXbd ZoWY7sLGYEVsrAWEoRV3pqJI2hK4DQwHMoe7WXtQOASKlzFe/Ho0x4ncxTv8HR65PPfDjBZx mWCqk5vceTQm6j0kjjzujw8fdeGtbybnI+DDexHWsF15d+3Zm0EwBPigavdokFqTECBAZ9SJ VYhrMevGpPvL2/2B8dzY+9kcatgNiaaQ/sfzjPFkOII15+F9O+ahSAqLMSYzDFLCkVffJWS+ o0VVVVVWMTFVNJNRKhYo7ifjyeDn9g3qhBjIRt5kWL1lm5N3ZmbkhmZm283OyAiSplPWqaDW I5VPr1+vAXMHIo54DgSOzEg+kYJ0h2aVZi/LfyX5Y9draeY/gJM6nmEVXjs+LsQmg7d08/Tw rx3UrVZasdtfOWCpc8Bv6GCxMlssSI/jDnCkKWue9PRnJjHGjy3exndJHQVKWM8PPzk2Taty iUOj0NGqU9kmeKaJnTr69Mpx6e5Cq8Pg5nt8DxwgL4hiBm6H3s4+2Gxi54gpg0z6lmLOmDIs K6Xn15b+67uJfY/2qVjnJW9VS+MWyOxUfcqN4+vqfnz2sT2v9PxZq/P38bLxjii2cFo3yRML I9e1xlqsT3EcNpy8pY50rK1we2sMJeUCaxCqB4wGC0frBqI4KcBcIvF0DhiOw6NEAWnYw60k Lqwzt0yv3R5syaDbSBCDf80QA3HkO4Oe/1iTsYLVWy6MWJgWlo7jOIcyVCdex1xIscEzcz1P y10Pr72cd+2zaHvKOJvjKaLGSSS/LHlZzcUS8mUboYj9gi1nWlrOltjAgmxTon8AOMgavi/J zlhksDjoOGjgMKdoNOBEsLvD6RLOd3+Px+GxZX42JGKWWWPJ8mNaOiBAIMmEykjqvFrkrLaS lIY9A8AhCEdFYqsphSmvqh9nPoc+zqz6Uj1WRiWUWlgth38sPT3+j57cFlPh8+WMzHze756n y221srwscDl3MWLHU8C7LBgdoPsfMhVeXk/K+nxrH7zCt0RfgjMGJaFpRiOIZSMBtHxsAo0l QYSa53ybN2CcPDmWsitMRp3IjkeMA2MQeveJdRRMB38kB0Z59NvXi/bn2d99/TrjdWv7Oc9a zvD4vu1s742BzVYtxbe82ieWvZ8cb5ttuet1NQ/J1OuLX2dz7/YcDpV2FfbuxVEigQylqZAW MXFSBw3dlcDyALWPGbD75hfF7u79ZE8i0oeFlUQSjBRxYcodyAYSq7nyMhc1ZDCq7KKrwtik IuEl7vT+gAug8n5b5qPcw2+psDyAzjl5yfG+VO+ule1mK+Y2msDqeh1W/dDgYiQmDXBhwYxo 4sh237ttaykSTMhx2Kw7YkYjbGtD6cGEqLX5nPeLtNrjGHVcFTMRGZPIvzC2kgIM9QWTTDB7 kHcf3wIe8EMc0Ma2rQbERomDI5CEQgwPe7HDhpz5xnqk4N7Opn0vdMMzKbOWiyJ0HIHHqIfF 3IRbwo5kI2YTBBniRyfQu3e/BOlaRTBZNESiqSiOxyYrCNk3aLGBQCrUDUcsoGsYCWbMdmYE yvJWv/HHdT8PFoFGgwINaZjtjZsLLpiZjcbCJahiSGuLEcE6YSSBskRm3CM+NNXBzJntGjS0 NiV48Xgb5R0J4gUY2hUAsQG1mQE0JG2MYAEwuucvwfS6+ogENeHGZxYIHWQ0plOW6vgMD6FS TZOSq5ViKHFAcQ4euNSiYP2fw4IFBPcCDBJ90moOP1j+iSNh6FVVWqqt6YUpcj2+Kf0PVPyg +elVT3OYk8cc0Rj1ePTfo86GDZ25Zx89PMWwfXrZqV0IbFhSyfwirmXuz2HiPr3XGVsh7Poh 5DM40v9murgqlUqoYj1TnJPv9dW3+7+tWFqWKVZD0/0SdX+fBn+f16p/o33OGbbXdISJYkCO ZiqoEDYrIiiIiN+REBygC6XsYOVRGlSqNLlxqwv+k1OKnMqumTREpYk689DfnxovG2jnTosX jXDgpKRyTm1nKbhQ5lOVxZZZmm0mlmrbEyts2xsJprZSiNiKUaSmiKqCGa1joMeZqNweygnT 7/nCPpKBJJbiBEBC7geb+Ex7Ji8kLr73842YjFGt9+Uscp2hYjxdhAjG66LFWCxDhOxDiCCE fJ/kjS+fyf9nNEpJ8yx3bW6Br9cEECliURielX0nC4ZWsYPhCIBOr069deG8ScxUrtkT+cQ6 0vHo8fcacSAcgMQzmcs5OVbkI/sO1zIw9pAbSbEgvEw2D3Y7JAEDxpBOcwb4jfgzJuoNMKR6 vhZdkTvq2RVtT+zKxns8HPykh7e9fEEgZvI+Ill7T2nAW2H99Stxkww1vthaISYRASPzcb+w 2HT6PL9kkkjcUlJKSdPAb+tiOgg9HPO3Af7ZJ/hkTkFilI1B/GSQ/iBjy3fG0OR6DHpDyi3y 2NqkuZX4vEQQhRWO1LHEK/z+T8QnGWDDSB8cmSaykVlywjK7vnxgzu6uulKSNQwYRgb/e5lE 9ndgEIdO3j1ObbZXWd1h4UqIiPxaPq8VaZtClllHlapkpesB6hz+dP0E9OSBE04wuse3zF0V ixlBNM+JU/BCKwxzIwNFRT99iXOH5lotCAzLBsQ2q4xsnHTW+4+o/oor+PqPY3ZvVrJ2lWLK 516nnbstcG5TbvHSSckmwn6Uqw+iPtNdcy6mJjB0lhWrfVT4WE2Nj2yPIfuuzZVKqlenqjP2 dc0/jl+55fLyH8HOOlt5D1IqqpSlKqqV+4XwkZNKh3ppeiQSQYxNIS3849GvDp+bz3nI6Ll0 I0+8fYa8qus1fe8Nbho1tpwDW1aNqLRVJkw8kyThGyJSlQDuhjYmkNEB+5wbgaxsxl1c2fEf bBbJgdT32i6jED7I496+/4KEevpmMXLPLE0nhk40S4u7PdC1HbMo2g+oDZ6BUMIuvVzBo72t mwox9UZ0oFNIfhODz5evZjTaPHMqqIJsPPcdOQwPZr9Kc3ffP17DuG7D9f5q2aFKVthhRXLj 2Kez39fPtq9A0nKlYTtKUzQaJpT9DFlsxMlCqlcuvd29rdHCV8H3/jp+GSSV+Z9sx63jTiKX 2Gz8HS5x+ummcMncZvT8DRGyf7t54HB5D1frI9B9p5HcUpSlKUKFVVKqqqq+/x/SSeb/g2dH D91VVVVVKrJJZLfj2+F9a6WW666bMEUFkKivbcOmH38l7mPyH9ab8l7trfY9gXfT6nG4Bzlq 8Vr58Og3vI4rVfaqj+c8W8r54vkOIP706pJPrOYzZpo9mzb8vwPzVa7KMMKW7esO0ww5tZ4D MtGZLWTYwySuGJ8Nhmvxfcen5e389/7fxfJm+m6i/1d6h/eFH5e8/EpS539gZO42IfoCBBEC lKUhCEIQhCFDJ1KAbPu3G+gl7fXW59Ukbo/jdPcxoFrFqxLzMQ4444445By/f0attycuzLZX Vz2DxmCUlQ8BABQlxwhMRsICgFBgUIGD7P2gJON7fb9wyGotb3psf3mj/nnxh+I1vAV4beWs 3RDmGsAcMQDECSxWKhIMc1I4bLY7j9zbpkS+JoRjKJwKD0Uk0eWVjPNxNtpsDodXrpEsfzaU boL3sD/NJ+vcNJRZR4VkP9Wv5NDEvSi5guTOVL5Ae2px5u66PvuQ8o9VJ8zhhmc3Cxvlfh0e /uPv+K9Omlp2rn/T0Go6a6m7oK+C6aPglvUbyXwqfoS4R/lHPH7F7J9k+uf+383Qc7zPwyX9 uV+nTQaamkmFlFVLpqZDQUqmUyUlQthaYMqq2+SSnk9Wn0s5OrTUPc+veN43Ph/ov66svXT4 z+A6WH4xgM4PvGiGxQZ9vtEqyWN8Uw2DEgbIww+LfXUAQm1q90B3TQQkCTZjI4G2HZlGLowZ 1/Ufp1vzn3frsy5Mllljs7FkWPXlejz1Ivl8xlwGiiDApB3MkH3ew8DWBpjsg1uH0tfTbP6/ kNNDCRNxIpAaRrJAijams4392RIwtskSIwjBPcTkSDzCxJBOgRI6Z1661SGxxyQohUPfxQTQ +Iyqxp6T9R2/F8PfWZWZWZXjTnFjm1GiHlKg8erlvMzGJmI/n/qybG2JxCerv0jjJTM7dGmS uOQaM8UxpJT1bVAHx654+fQa9Ypve96DW4VouSZMaLkmSXi0BZbfjay01VAUtU1iYqpEtLW4 q7y970Jzqb545jwSxHRs+gKj+BB8EHcJSRJB4nqk0nivFsNXa008nosx87a4X6vufi/UWKxk ylpK2637Xfgry71NiIiqTJjZn3tP03EsEW71sA0zxSzWpHDQhOff09Oo1108wcb9iy/6i+2j r9aPI78+vWvc2xo0/ss3StrWXMXFjIzIWQnr8rf2R6pV54BUQAAAAfm1V3Hd3XcAAAAB7W9g YUgJOoe36u71AjSZxf7rmvum+69F+5fVfdHoBzMSpUpFIqdGIMSLH7zGKskeyod7RiVKpFIq bsTVG4V9z6lMTQrhKVKVKVKVKeUF96QL/avjT+X5fDvr/10MB26oQq34mjp68BO8B37189MR jck4Nhn4aZ5L9bSFzmmbAUCBBCLG2zeHLoeg5qAosikgR9xuARggDz8x+Zr6tf6vn9d9a3+T 26r3QaEkjeNtC4TPtXmGmJsbnZpCijMP2H4DQYUpgoopSlKcngVSqKpVKUpScnPorXi7p8OR sUpSlKbvcI5STaf27+315sbXz/s1PcQ+aR/a39nY8SlMYxVf+mql2ZMVNmyqw0g6naWyqsqp VOuMzEtIkKyhZgAVJQa8jR8mBoANK8lbim4yGIYwrBPi1NW1as5u/b722+V8f8+116vu9++H 4PYAAAAAD5Xkkkkl87yr8bbf/drfD7fvdXWSpj8H66NjvGI3UxY3KJsvEyBsAlsmpNmKNMYh 2eQjsBsK2bAcbDbmNlVVVVcNVwsqWWzje8cmjUbZkptGocLnZi7dDF9ezF9ezRpYYofWnPez iPefsZDYjYmIjExMTEiSDEmVCpVxqGneeeLnLBbKg4WUPG9AGy5utzbWG96xLFEEmZje8YTS Rf3lvdwiOrk6ISaKRSwtooWLIhS78tafsfqfpM/yf1ubG1x9V2+37SQ1UVUjeT56GfuQ7z+I EUMJB28B9OpD9MBTT0t+dgQI2erEJUkJrc+6aaZ0n0J1svE8k8hHgZCfVf2PnrpItHHHVPW6 htJ0sWyLKWSLShUpSlJUVLCkqqpApUipYWqpwbKtn8hpHyjeGR3853qsWjWLRo0UU9VNFJSl KUpSiV0xjMPGWM7vW9k6eniz7pFxJP8Pr9Erpaew3VNaZGZmLMtqVKWm2oi1TLamGq+7GyZd sm2ZWxrUqShTS2mpqpNZaWljVSpoNrX+Glr85VXkyb27bW5qTFZqzbNstZSzWvZXNtXpV1S0 qylNsWlSmlNl4tEwLIKVRKKMwkmEUUZDIZRiZTYwtI/BF/a9dOu+T3f8Oa+7bbZckzLfoMFR VVVVUegook/F7eiLz2DgcBvErQ5MvNx0k4fZSw/BIwpkKkxlFhVqalt9lfgkkkkutddJJKHW SJMYqsxilMSD7pLXme1T1bzi2V+mrdXlDGz7zGKqqxMbHhI620teXtJKUkkklKSXqhoa/19w 6xJ/9OP5UtazJcxYnNHhDGqvNsqqqrHr2Rp9WN5bvjEVUeo73DC97wTHJVVWJvk0qqqqrn6a nhlhTvHaRHMRu5MGMVWMVox0VdLxb3Yjak0SPwvwq816K92D4q8D7CuIJiuCxCsvyGpRsemS KRwGDgNBdKqjYywwbbG7mkhiGAw0H3jDC3UMqN6MXeJNVlSjUosm1KXbvdokLy33S8Q3Kcit ncKEbMQOTe3FO6N6PMkeTycSdx2QwhGFp7xOfRd9Klc8smDIy2Sxf2Wypijniy23/ZyngcI5 Ct4wRwjO0kGtvjJb9L/R8fw+/v1fc+VXzvwX5UiIiIiMSrZavTp8PYPf7UMnvNsnvuVrSbW2 ytpdt7CNhsyGDGXcu5LZvti02NtWaKpchcMbs0pVMM2NtGGEChGYDQqCKtC+QN1UVC0xpY0a uqmQrjiXUHBxbknHDFW/kJ4oX4l5FcN20NaqyUGtzc0aMrmwfH2wPbiq67KR2Sy/O7ovptYX u8fA9+dHu9Wraqzk0skqv0llG0RWSZ6rTGgPt9dmZperPdH8xRwXlXkw+DMnU0WEJIBSOFsa bQMD2SPeG0dmkxNWwtkIaScQON0bybxRULYlmzaawsrYqbWUG1lX6O2kvhsIT6GnWk7eUpbI 5Qf1HQ6nU4VCrs5nQ2hwGxuYrCmK42X6RO4u221OU7MJ0bIwOhgp9qNhsSbdd2zZ+vQPX4E5 8kfD9R+UZjIep2+cvhEa8wSIhYAPC/ClJSip2C+B8T6OIHFwQOJgIHP0SSSSA/zfA9Wu4634 vfKeuA/L7hh9LuMV/lPdHw7MzZ7TNr2jdr6oode/FQikWb6QIEGZq+wXln+sEgDpDek8dhSz SxWwGJj+cmkaFRUolFFFKSvbkxIoSKEihIoSKEihIuxmkP4zemH0EMMYYYwyznjTRy9ewaT2 YYnE4YaYw1WmmMesk9nwXwO3x/lLeYc1RK17bXauAAdV921Nqdb4b1dbdJhjDDGGGMMYwwKl KYpVYYxjdOTxephiVVRR6/T47NVqtnfI4O1lj2bc9nbrrb0iO/f0hX2viNouissSYkklYihU siVQ9bFmIvvLR0n0Lbyu+VoaLy4DXxeU9N6s9fo1rD8Sj+INMFKOppBQHxuRIJiwNp1mG8Sn JTXKYbUsTjgTlE4kPcAAAABe1N+N2Su7fm1WrxvbieraymWlrk0Xy4tnx7GqtXUmnz89Gdda +bTJu9ipVUcuaXX3aWnsmSLiXi2WxzmDDDDyHc7hPZ8VdGR8PvkNdRH0+enqd0odRYVWEoZZ IlkapHkz1cs97wtoZxJC1Km4g9L67WtbI+j7EXP7K5blvi+huelZiwP21qmX9o22k0x6NjBY bWpmzKpmdLUg3x9/T8Pz/h+H4dQ694d7aJaVHeA0eDbF4bu7UmBdgOjzVIR2KSBpJUNHFEeH 7l92Ybv8wSYGPcc1AOx4j8ozCfl/BeJDeDwQb1/Dl/E6bPDHfOo0LEssnW7Z1KrvjNJsLMyb UWQj8E2EhKBaAKC1RysgB0YDj61nf9c2zhQZbJdsxhyjdV2x7LKo0tCzzJ7m3l5JJJJvaTy8 vJKWG8MYqlSn4NjbR++a1qzJBM4QWxLZEWqixv1InGyGuxp2YWI+c2lX9+zs8DGKqqxNc25u 3VVKVVVVVSqpZ6cm3m4eqSK12iMBH21a7i4QhCEIzb2s7soL5jDhGDu8g836X9bP1v639b+t /KuQ/grKeDDDGGGMRjGGBU+qZ+umFLcuyyaYwxjDnvI4PCCT4SwlN4SXdhlJM3UbYahCEIc1 x3J/LHDhVVXzn4yLt91tW9TzZGro0wwxh/HeW3Zs2MCp1ww3NmFVo8UnAkSHOrfa37YRDCLJ gFQD8mbeDkQFCajpNLKsqyvWI2/LWnqbMTGKqqxa8Y+bcvJt0MDs9fw7szL8Ca3wo68pRhYS rVWxJaipST+kkxx0e2s18um7TDrIA13RzALEkF2okq9Ngfd3LYtsUmaShEHIRHSLEIiL9iGa RfmL/TfRbgA4p+BHabvUGKCqFgLCjDkFHzmD5y1BcUYqVKlSpU9i89j2P1OxgXjXZZ34QmGM nRkZSztJpPYxkQG6UcC4FmYVoylZg8UWUlGx8AD2s3dmjqMZxdaQoDZRMK4NRwNhmOpVKpVM bJalqNiBs0AcubrclNxEBDBHAG9ZjbttRWb6NHAyGGymlJg3rRvqmghDkDAGBxo3ri8UqHrB QYmwW2DnhopzLJSxz5cN5s3KY5b6bCg9wlQmwqDDS4TAQEljBs0WuhQiY6MDMnR+Wsa1oW2J sFsXWXO+MNY3Q7676mSD+H8rZe+3Pu+j6PolFFRj81YYM5GH0dwJASh3+gEQDzikkrPUTWex grazFO4F0XbsIwZpjNEGG7Ka1DDCDDdgoopBBn+H82vr+B8n5vo51ZYRLETaMXxoQJy1fwfo v6cduHnPHPJ33W+MrzXYmbVJYOQcg5aSwctJRjg5BwhLC3zTApIY4gLCSVgIh5LyCyjpYfYb A94HwSFF79udGrNTHpJqZfZoXX+XmM+KJaTo9CiNfHsdZwTGeLBoicHMqTu2zu/DO/pe7tH9 ZC5awT7bzpbFixHLVWvhO4wP4IRiftCffkJanMN1qDo6KqqUpJJJKUkkkkklKVVXcbVC2Q25 oUjZ+L3Nfxbbbbbb0Jsm86FKqqpXTDClFKxwcQhMzbfGw6eP1wj+ZOM/OUXjGDzeUyB4gAhC 6e3zaZluMy0W+VktPe48dFhqJHMqmu3fbz16OgvSQ+r+r3EtTUh97vklDYdgYj5Z05YPCUGb i4wYwPim5K+b4WMF0DUo2OUZttgM71IEpEGGR8Lvg8Om3DBkJhAgew7NNfpNt+FpaWlpUmyp rKlMxLRl9pZXu59LDMXmeDQ7ndMaVyOg41pPd6k0jiPOc+JXpJ5+q6h8peM8ddVB3jv7I5Yw xGVZDGUxhjKxlMyTMEt9byreJejhTge+r4ajVTJFNSSlpLJtSxKUe9qSlbGwmyWufO4NKuZM yOay22zNKbViyMrL81MpyImKny1lV1VZTRn8rCrTKxDLnGtXNZNW8LUtNRWNtprV8K0rVRRq 3z9bx825zG8YxgiIiC8Y37W1vlf39+jv9/4dttstP0zYn+P/mqq/PGgv6iJ+zP9z/0KpP6Ko bz6gi7Pit9s+aUOQvhi+h/NyTeHDZnRXtDtHe5uJNcpOeLtLWpTsLKL+iOmdW9Yi2e7hpqbN OZI5Vy5I/xmjxqb4bV1Iu8VSdBfUi2pGl01XBbjlScbbXTEWVVXOoeh10vwdA427MZZTGVmM zocFNmuw9tLtdmJqrJWaYlomlYWhlMZRkFFFSUO1IyVZJHTddMmxTbJSW8t5q8ry3Nutu2nl 27eNtaK8lIjLPKuyYljBhktVSLDVNNCalLcFC5LRaitwzSwatWcixpvRmyLhKwLEy3MkhG3d xJaSIwtxlIa1oGFi8dx240poHAhuo34Kn1c2lxocvs6HMsW6mUTDIk6K7IsuE/zNMjCYMplV aZVNpZtprRVLVNKZQexHt9NaQqQWUKUswq0yVJUZWLWB5zUhGmsJM4wa1kllaUlJSUlYoalK UlJWwDTc3a3dt8XmVvL26XVWNZk0jfmMhqNDAWje3esS2nEmIjDWZSJguctZq3MxKlKpI0td ddJLd3Ql1ruSkkii5XSSz4AOtNFLxXVyzZuoGAtmttetd5La1hUoURycxBvN//67Y65q7N0q t+Nmu+bJgxMjKyMqyMGFDjq5y1SmrIpllTdYjRVa1Utzdf0jnXO4zSLeJ5r0Ufh0jfwKV8W3 3ST0MFz/wDvrqVQ5mpffxrolbVI6ef88i0Rce16IlajUjvcKHrke+VsXsumjipOnt5/NBebZ 5qPHK5dtHXf5KXJYyVmT+uT+nPo9CxG5HHRdilz1I+hp2KofwCk8rxIu2R487EXbVeOLSDDL rN6Rz1d6qG9QN7qpGl1wnXgzKqfKkvxWZZVZUjFSmZ7PKKPHFdKOyK3pHZVvN/ydtlzJGpFs z0BG/5c54a1cygtqqrYQyMmpW5FppVWotFJ1STupM7nw1tIV6qNNlUOr3Uvj6UkemtyPEyea keZu0D5Ile6FbqryVealv6+Kq30bjV60ceZwe27sssxZUYRimKbLr6avFcN3PvIcfbaerf2u KLGlZkU8wxp81L43jvoq7S7vX2czZb/IjbjtjnDO4rxRvVQ81FGHoET4s0y9TybNRVJ38wu5 fOfJF2rpc0SvXR6XhoaWo2lctm3NIaI6UI00+Pw8yKu2OSjOSjn762EO/McsyhxaWNdXSEWm 5Va0Oi20kc6MlZvEMfTb47bXLWbNSy2Rm2oVKZa0qao1EiKarLXtm9W2LRFpuLs1Lde2m11i qcjdwq3tHTm+jgKm69tW2BFmSPPpVq4Shm9SYQ5Zm+uhVc+7595wRqxZUrj0OLat3KpPNNNI pH1KT1Hfgqk1NNEXqVQ9JDZeTDzsfSPjz5aOhS9mUrSXM18vp2q2lc51vbUjBUWr13ske9cn cULt+njVdzf6rzyudHhS/8TX3VlHrRbjzZF5VGez5trc9QhHKewVJNLJFWoWk7FwoVVZtpUq Wtk20lMsykjw01Z7MZlJ7MXz+ZTBfpXRspb6rq9rnqRrYKV2ZCZWQhpNHxVKc1Fjc4VI5UPT d6LvB2ZbrpUFsWiqHy+LV6i4r58Oy7FA5gpN6dFnc5N25wDEXC0MQ+YXpFrWfVgePA0z2nCR wWptzUaW+Vue3ufNFOOEsqyRYN7w3ou9I6UdXWdXLYdzDkCdJT6kMIw3qxJPHCD8eSO21bur Rd9piNzcjbbcu7UoYaQmVqg4mxsxiKNAgZkGccm9W2+HRVlVb6NSLnyWK1lByj10ucJ0F01G lQYYxYsqsE05uojWKwmLk7VJxVQ1qcarxurWudiLpUcWvYzjNzqFRfOpva78XQoHCL/YRN3B TxLW9X0xXGGo3r3qPcIc/v6+jj4oPOqDw6qOJ6509vTmeNFjxPOykaBlmm3QthU8n7RVA0bL eVhD5eS7UPSdFoaUtD6dd9bvNa1umuRkMJ3TxkdwT6J01Ef6fwlX4gX6aFaYE/GStWQX68YS r9ChpYVX6FU/WQ89F+6h+pH7i9FPyT8k/cfvOecTuvddasTLqs7tVa0LB5Qk8UkPIlcJK7EL hCc0jmRzDt5hf64c8T8mEcZRxVW792iWjEz93TKZ4vP+7+/ZvDilsI9lkeaDhstllb2x1/8s rhvqeJF4qXhQ8EeBddOCdaeB4HhPKl2Yqsd/fNDAwYd6aMq8ltCtCdYYf/xdyRThQkIB7Pos --ZGiS0Q5IWpPtfppv--