summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorsbruno <sbruno@FreeBSD.org>2012-01-04 02:01:27 +0000
committersbruno <sbruno@FreeBSD.org>2012-01-04 02:01:27 +0000
commit39d07b056ff7ed4a2cd65691be23d3c93398b881 (patch)
tree5207a81db7d21800f965bb648d0ff2001f7331ca /sys/dev
parentd08191b4175ebda3e5ac2fabbe62e2bdf139a201 (diff)
parentcaa4548474a54b104b7a14a1625ef6c39b848dd3 (diff)
downloadFreeBSD-src-39d07b056ff7ed4a2cd65691be23d3c93398b881.zip
FreeBSD-src-39d07b056ff7ed4a2cd65691be23d3c93398b881.tar.gz
IFC to head to catch up the bhyve branch
Approved by: grehan@
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/aac/aac_pci.c4
-rw-r--r--sys/dev/acpi_support/acpi_wmi.c5
-rw-r--r--sys/dev/acpica/acpi_battery.c8
-rw-r--r--sys/dev/acpica/acpi_cpu.c3
-rw-r--r--sys/dev/acpica/acpi_isab.c3
-rw-r--r--sys/dev/acpica/acpi_pcib_acpi.c14
-rw-r--r--sys/dev/ahci/ahci.c8
-rw-r--r--sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l2
-rw-r--r--sys/dev/aic7xxx/aicasm/aicasm_scan.l2
-rw-r--r--sys/dev/amd/amd.c2539
-rw-r--r--sys/dev/amd/amd.h585
-rw-r--r--sys/dev/amr/amr_pci.c4
-rw-r--r--sys/dev/an/if_an.c4
-rw-r--r--sys/dev/arcmsr/arcmsr.c27
-rw-r--r--sys/dev/ata/ata-disk.c6
-rw-r--r--sys/dev/ata/ata-pci.c2
-rw-r--r--sys/dev/ata/ata-pci.h4
-rw-r--r--sys/dev/ata/chipsets/ata-ati.c24
-rw-r--r--sys/dev/ata/chipsets/ata-intel.c4
-rw-r--r--sys/dev/ata/chipsets/ata-nvidia.c4
-rw-r--r--sys/dev/ath/ath_hal/ar5210/ar5210reg.h17
-rw-r--r--sys/dev/ath/ath_hal/ar5211/ar5211reg.h17
-rw-r--r--sys/dev/ath/ath_hal/ar5212/ar5212_misc.c2
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar2133.c8
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_attach.c4
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c35
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_misc.c32
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416reg.h8
-rw-r--r--sys/dev/ath/ath_hal/ar9002/ar9280.c8
-rw-r--r--sys/dev/ath/ath_hal/ar9002/ar9285.c8
-rw-r--r--sys/dev/ath/ath_hal/ar9002/ar9287.c8
-rw-r--r--sys/dev/ath/ath_hal/ar9002/ar9287.h2
-rw-r--r--sys/dev/ath/if_ath.c241
-rw-r--r--sys/dev/ath/if_ath_led.c190
-rw-r--r--sys/dev/ath/if_ath_led.h37
-rw-r--r--sys/dev/ath/if_ath_sysctl.c55
-rw-r--r--sys/dev/ath/if_ath_tx.c11
-rw-r--r--sys/dev/ath/if_athioctl.h6
-rw-r--r--sys/dev/ath/if_athvar.h10
-rw-r--r--sys/dev/bce/if_bce.c113
-rw-r--r--sys/dev/bce/if_bcereg.h1
-rw-r--r--sys/dev/bfe/if_bfe.c6
-rw-r--r--sys/dev/bge/if_bge.c28
-rw-r--r--sys/dev/bge/if_bgereg.h1
-rw-r--r--sys/dev/bm/if_bm.c7
-rw-r--r--sys/dev/bwi/if_bwi.c26
-rw-r--r--sys/dev/bwn/if_bwn.c14
-rw-r--r--sys/dev/bwn/if_bwnvar.h2
-rw-r--r--sys/dev/bxe/bxe_reg.h2
-rw-r--r--sys/dev/bxe/if_bxe.c6
-rw-r--r--sys/dev/cas/if_cas.c6
-rw-r--r--sys/dev/ce/if_ce.c4
-rw-r--r--sys/dev/cesa/cesa.c6
-rw-r--r--sys/dev/cfe/cfe_console.c14
-rw-r--r--sys/dev/cm/smc90cx6.c2
-rw-r--r--sys/dev/cp/if_cp.c4
-rw-r--r--sys/dev/cpuctl/cpuctl.c81
-rw-r--r--sys/dev/cxgb/common/cxgb_aq100x.c2
-rw-r--r--sys/dev/cxgb/cxgb_main.c6
-rw-r--r--sys/dev/cxgbe/adapter.h231
-rw-r--r--sys/dev/cxgbe/common/common.h35
-rw-r--r--sys/dev/cxgbe/common/t4_hw.c365
-rw-r--r--sys/dev/cxgbe/common/t4_hw.h78
-rw-r--r--sys/dev/cxgbe/firmware/t4fw_cfg.txt132
-rw-r--r--sys/dev/cxgbe/firmware/t4fw_cfg_uwire.txt503
-rw-r--r--sys/dev/cxgbe/firmware/t4fw_interface.h (renamed from sys/dev/cxgbe/common/t4fw_interface.h)640
-rw-r--r--sys/dev/cxgbe/offload.h71
-rw-r--r--sys/dev/cxgbe/osdep.h3
-rw-r--r--sys/dev/cxgbe/t4_ioctl.h27
-rw-r--r--sys/dev/cxgbe/t4_l2t.c675
-rw-r--r--sys/dev/cxgbe/t4_l2t.h12
-rw-r--r--sys/dev/cxgbe/t4_main.c3029
-rw-r--r--sys/dev/cxgbe/t4_sge.c2193
-rw-r--r--sys/dev/dc/dcphy.c2
-rw-r--r--sys/dev/dc/if_dc.c6
-rw-r--r--sys/dev/dc/pnphy.c2
-rw-r--r--sys/dev/dcons/dcons_os.c12
-rw-r--r--sys/dev/de/if_de.c2
-rw-r--r--sys/dev/drm/i915_drv.h2
-rw-r--r--sys/dev/drm/mga_drv.h4
-rw-r--r--sys/dev/drm/radeon_state.c2
-rw-r--r--sys/dev/e1000/e1000_80003es2lan.c229
-rw-r--r--sys/dev/e1000/e1000_80003es2lan.h67
-rw-r--r--sys/dev/e1000/e1000_82540.c105
-rw-r--r--sys/dev/e1000/e1000_82541.c10
-rw-r--r--sys/dev/e1000/e1000_82543.c7
-rw-r--r--sys/dev/e1000/e1000_82571.c183
-rw-r--r--sys/dev/e1000/e1000_82575.c1237
-rw-r--r--sys/dev/e1000/e1000_82575.h594
-rw-r--r--sys/dev/e1000/e1000_api.c29
-rw-r--r--sys/dev/e1000/e1000_api.h154
-rw-r--r--sys/dev/e1000/e1000_defines.h2939
-rw-r--r--sys/dev/e1000/e1000_hw.h376
-rw-r--r--sys/dev/e1000/e1000_ich8lan.c890
-rw-r--r--sys/dev/e1000/e1000_ich8lan.h347
-rw-r--r--sys/dev/e1000/e1000_mac.c112
-rw-r--r--sys/dev/e1000/e1000_nvm.c31
-rw-r--r--sys/dev/e1000/e1000_nvm.h16
-rw-r--r--sys/dev/e1000/e1000_osdep.h6
-rw-r--r--sys/dev/e1000/e1000_phy.c879
-rw-r--r--sys/dev/e1000/e1000_phy.h280
-rw-r--r--sys/dev/e1000/e1000_regs.h1052
-rw-r--r--sys/dev/e1000/e1000_vf.c60
-rw-r--r--sys/dev/e1000/if_em.c612
-rw-r--r--sys/dev/e1000/if_em.h7
-rw-r--r--sys/dev/e1000/if_igb.c593
-rw-r--r--sys/dev/e1000/if_igb.h11
-rw-r--r--sys/dev/e1000/if_lem.c141
-rw-r--r--sys/dev/e1000/if_lem.h4
-rw-r--r--sys/dev/ed/if_ed.c19
-rw-r--r--sys/dev/eisa/eisaconf.c3
-rw-r--r--sys/dev/esp/esp_pci.c2
-rw-r--r--sys/dev/esp/esp_sbus.c4
-rw-r--r--sys/dev/esp/ncr53c9x.c2
-rw-r--r--sys/dev/et/if_et.c1753
-rw-r--r--sys/dev/et/if_etreg.h670
-rw-r--r--sys/dev/et/if_etvar.h241
-rw-r--r--sys/dev/fb/fb.c3
-rw-r--r--sys/dev/fb/splash_txt.c135
-rw-r--r--sys/dev/fdc/fdc.c4
-rw-r--r--sys/dev/fdt/fdt_common.c6
-rw-r--r--sys/dev/fdt/fdt_pci.c3
-rw-r--r--sys/dev/fdt/fdt_powerpc.c2
-rw-r--r--sys/dev/fdt/fdtbus.c5
-rw-r--r--sys/dev/fdt/simplebus.c3
-rw-r--r--sys/dev/firewire/firewire.c9
-rw-r--r--sys/dev/firewire/fwohci_pci.c8
-rw-r--r--sys/dev/fxp/if_fxp.c2
-rw-r--r--sys/dev/gem/if_gem_pci.c6
-rw-r--r--sys/dev/gem/if_gem_sbus.c6
-rw-r--r--sys/dev/gpio/gpiobus.c5
-rw-r--r--sys/dev/gpio/gpioiic.c45
-rw-r--r--sys/dev/hifn/hifn7751.c6
-rw-r--r--sys/dev/hme/if_hme_pci.c6
-rw-r--r--sys/dev/hme/if_hme_sbus.c6
-rw-r--r--sys/dev/hpt27xx/README196
-rw-r--r--sys/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu22893
-rw-r--r--sys/dev/hpt27xx/array.h187
-rw-r--r--sys/dev/hpt27xx/him.h496
-rw-r--r--sys/dev/hpt27xx/himfuncs.h107
-rw-r--r--sys/dev/hpt27xx/hpt27xx_config.c67
-rw-r--r--sys/dev/hpt27xx/hpt27xx_config.h155
-rw-r--r--sys/dev/hpt27xx/hptintf.h2112
-rw-r--r--sys/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu15583
-rw-r--r--sys/dev/hpt27xx/ldm.h533
-rw-r--r--sys/dev/hpt27xx/list.h130
-rw-r--r--sys/dev/hpt27xx/os_bsd.c370
-rw-r--r--sys/dev/hpt27xx/os_bsd.h263
-rw-r--r--sys/dev/hpt27xx/osm.h240
-rw-r--r--sys/dev/hpt27xx/osm_bsd.c1421
-rw-r--r--sys/dev/hpt27xx/wj.h56
-rw-r--r--sys/dev/hptiop/hptiop.c4
-rw-r--r--sys/dev/hptmv/entry.c15
-rw-r--r--sys/dev/hptrr/hptrr_osm_bsd.c12
-rw-r--r--sys/dev/hwpmc/hwpmc_amd.c4
-rw-r--r--sys/dev/hwpmc/hwpmc_core.c23
-rw-r--r--sys/dev/hwpmc/hwpmc_powerpc.c807
-rw-r--r--sys/dev/hwpmc/pmc_events.h227
-rw-r--r--sys/dev/ichsmb/ichsmb_pci.c6
-rw-r--r--sys/dev/ida/ida_pci.c4
-rw-r--r--sys/dev/if_ndis/if_ndis.c14
-rw-r--r--sys/dev/if_ndis/if_ndis_pccard.c2
-rw-r--r--sys/dev/if_ndis/if_ndis_usb.c4
-rw-r--r--sys/dev/iicbus/iicbb.c73
-rw-r--r--sys/dev/iicbus/iicbus.c9
-rw-r--r--sys/dev/iicbus/iicbus.h2
-rw-r--r--sys/dev/iicbus/iiconf.c8
-rw-r--r--sys/dev/iicbus/iicsmb.c14
-rw-r--r--sys/dev/ipw/if_ipw.c14
-rw-r--r--sys/dev/isp/isp_freebsd.c82
-rw-r--r--sys/dev/isp/isp_freebsd.h7
-rw-r--r--sys/dev/iwi/if_iwi.c14
-rw-r--r--sys/dev/iwn/if_iwn.c40
-rw-r--r--sys/dev/iwn/if_iwnreg.h2
-rw-r--r--sys/dev/ixgbe/ixgbe.c156
-rw-r--r--sys/dev/ixgbe/ixgbe_osdep.h2
-rw-r--r--sys/dev/ixgbe/ixv.c8
-rw-r--r--sys/dev/lge/if_lge.c6
-rw-r--r--sys/dev/malo/if_malo.c16
-rw-r--r--sys/dev/mca/mca_bus.c3
-rw-r--r--sys/dev/md/md.c6
-rw-r--r--sys/dev/mfi/mfi_pci.c5
-rw-r--r--sys/dev/mii/acphy.c2
-rw-r--r--sys/dev/mii/amphy.c2
-rw-r--r--sys/dev/mii/atphy.c2
-rw-r--r--sys/dev/mii/axphy.c2
-rw-r--r--sys/dev/mii/bmtphy.c3
-rw-r--r--sys/dev/mii/brgphy.c5
-rw-r--r--sys/dev/mii/ciphy.c2
-rw-r--r--sys/dev/mii/e1000phy.c2
-rw-r--r--sys/dev/mii/gentbi.c2
-rw-r--r--sys/dev/mii/icsphy.c2
-rw-r--r--sys/dev/mii/ip1000phy.c5
-rw-r--r--sys/dev/mii/jmphy.c2
-rw-r--r--sys/dev/mii/lxtphy.c2
-rw-r--r--sys/dev/mii/mii.c9
-rw-r--r--sys/dev/mii/miidevs15
-rw-r--r--sys/dev/mii/mlphy.c2
-rw-r--r--sys/dev/mii/nsgphy.c2
-rw-r--r--sys/dev/mii/nsphy.c2
-rw-r--r--sys/dev/mii/nsphyter.c2
-rw-r--r--sys/dev/mii/pnaphy.c2
-rw-r--r--sys/dev/mii/qsphy.c2
-rw-r--r--sys/dev/mii/rdcphy.c2
-rw-r--r--sys/dev/mii/rgephy.c2
-rw-r--r--sys/dev/mii/rlphy.c2
-rw-r--r--sys/dev/mii/rlswitch.c2
-rw-r--r--sys/dev/mii/smcphy.c6
-rw-r--r--sys/dev/mii/tdkphy.c2
-rw-r--r--sys/dev/mii/tlphy.c2
-rw-r--r--sys/dev/mii/truephy.c2
-rw-r--r--sys/dev/mii/ukphy.c2
-rw-r--r--sys/dev/mii/xmphy.c2
-rw-r--r--sys/dev/mlx/mlx_pci.c4
-rw-r--r--sys/dev/mps/mps_pci.c5
-rw-r--r--sys/dev/mps/mps_sas.c1
-rw-r--r--sys/dev/msk/if_msk.c16
-rw-r--r--sys/dev/mvs/mvs_pci.c2
-rw-r--r--sys/dev/mvs/mvs_soc.c2
-rw-r--r--sys/dev/mwl/if_mwl.c14
-rw-r--r--sys/dev/mxge/if_mxge.c2
-rw-r--r--sys/dev/netmap/if_em_netmap.h169
-rw-r--r--sys/dev/netmap/if_igb_netmap.h136
-rw-r--r--sys/dev/netmap/if_lem_netmap.h241
-rw-r--r--sys/dev/netmap/if_re_netmap.h147
-rw-r--r--sys/dev/netmap/ixgbe_netmap.h341
-rw-r--r--sys/dev/netmap/netmap.c301
-rw-r--r--sys/dev/netmap/netmap_kern.h26
-rw-r--r--sys/dev/nfe/if_nfe.c6
-rw-r--r--sys/dev/nge/if_nge.c6
-rw-r--r--sys/dev/nve/if_nve.c6
-rw-r--r--sys/dev/ofw/ofw_console.c12
-rw-r--r--sys/dev/ofw/ofw_fdt.c4
-rw-r--r--sys/dev/ofw/ofw_iicbus.c2
-rw-r--r--sys/dev/ofw/openfirm.c2
-rw-r--r--sys/dev/pccard/pccardvar.h14
-rw-r--r--sys/dev/pccbb/pccbb_isa.c3
-rw-r--r--sys/dev/pccbb/pccbb_pci.c3
-rw-r--r--sys/dev/pci/eisa_pci.c3
-rw-r--r--sys/dev/pci/isa_pci.c4
-rw-r--r--sys/dev/pci/pci_pci.c3
-rw-r--r--sys/dev/pci/pcireg.h1
-rw-r--r--sys/dev/pcn/if_pcn.c6
-rw-r--r--sys/dev/ppbus/lpbb.c5
-rw-r--r--sys/dev/ppbus/lpt.c5
-rw-r--r--sys/dev/ppbus/ppb_base.c31
-rw-r--r--sys/dev/ppbus/ppb_msq.c5
-rw-r--r--sys/dev/ppbus/ppbconf.c2
-rw-r--r--sys/dev/ppbus/vpo.c5
-rw-r--r--sys/dev/ppc/ppc.c2
-rw-r--r--sys/dev/puc/puc_pccard.c4
-rw-r--r--sys/dev/puc/puc_pci.c4
-rw-r--r--sys/dev/qlxgb/qla_misc.c2
-rw-r--r--sys/dev/quicc/quicc_bfe_fdt.c4
-rw-r--r--sys/dev/ral/rt2560.c14
-rw-r--r--sys/dev/ral/rt2661.c14
-rw-r--r--sys/dev/re/if_re.c200
-rw-r--r--sys/dev/rt/if_rt.c7
-rw-r--r--sys/dev/safe/safe.c6
-rw-r--r--sys/dev/scc/scc_bfe_ebus.c5
-rw-r--r--sys/dev/scc/scc_bfe_macio.c5
-rw-r--r--sys/dev/scc/scc_bfe_quicc.c5
-rw-r--r--sys/dev/scc/scc_bfe_sbus.c5
-rw-r--r--sys/dev/sec/sec.c6
-rw-r--r--sys/dev/sf/if_sf.c6
-rw-r--r--sys/dev/sfxge/common/efsys.h5
-rw-r--r--sys/dev/sfxge/common/efx.h2
-rw-r--r--sys/dev/sfxge/common/efx_bootcfg.c3
-rw-r--r--sys/dev/sfxge/common/efx_ev.c3
-rw-r--r--sys/dev/sfxge/common/efx_filter.c3
-rw-r--r--sys/dev/sfxge/common/efx_impl.h2
-rw-r--r--sys/dev/sfxge/common/efx_intr.c3
-rw-r--r--sys/dev/sfxge/common/efx_mac.c3
-rw-r--r--sys/dev/sfxge/common/efx_mcdi.c3
-rw-r--r--sys/dev/sfxge/common/efx_mcdi.h2
-rw-r--r--sys/dev/sfxge/common/efx_mon.c3
-rw-r--r--sys/dev/sfxge/common/efx_nic.c3
-rw-r--r--sys/dev/sfxge/common/efx_nvram.c3
-rw-r--r--sys/dev/sfxge/common/efx_phy.c3
-rw-r--r--sys/dev/sfxge/common/efx_port.c3
-rw-r--r--sys/dev/sfxge/common/efx_regs.h2
-rw-r--r--sys/dev/sfxge/common/efx_regs_ef10.h2
-rw-r--r--sys/dev/sfxge/common/efx_regs_mcdi.h5
-rw-r--r--sys/dev/sfxge/common/efx_regs_pci.h2
-rw-r--r--sys/dev/sfxge/common/efx_rx.c3
-rw-r--r--sys/dev/sfxge/common/efx_sram.c3
-rw-r--r--sys/dev/sfxge/common/efx_tx.c3
-rw-r--r--sys/dev/sfxge/common/efx_types.h2
-rw-r--r--sys/dev/sfxge/common/efx_vpd.c3
-rw-r--r--sys/dev/sfxge/common/efx_wol.c3
-rw-r--r--sys/dev/sfxge/common/siena_flash.h3
-rw-r--r--sys/dev/sfxge/common/siena_impl.h2
-rw-r--r--sys/dev/sfxge/common/siena_mac.c4
-rw-r--r--sys/dev/sfxge/common/siena_mon.c4
-rw-r--r--sys/dev/sfxge/common/siena_nic.c4
-rw-r--r--sys/dev/sfxge/common/siena_nvram.c3
-rw-r--r--sys/dev/sfxge/common/siena_phy.c4
-rw-r--r--sys/dev/sfxge/common/siena_sram.c4
-rw-r--r--sys/dev/sfxge/common/siena_vpd.c3
-rw-r--r--sys/dev/sfxge/sfxge.c6
-rw-r--r--sys/dev/sge/if_sge.c6
-rw-r--r--sys/dev/siba/siba.c2
-rw-r--r--sys/dev/siba/siba_bwn.c2
-rw-r--r--sys/dev/siba/siba_cc.c2
-rw-r--r--sys/dev/siba/siba_core.c2
-rw-r--r--sys/dev/siba/siba_pcib.c3
-rw-r--r--sys/dev/siis/siis.c2
-rw-r--r--sys/dev/sio/sio.c12
-rw-r--r--sys/dev/sis/if_sis.c6
-rw-r--r--sys/dev/sk/if_sk.c12
-rw-r--r--sys/dev/smbus/smbus.c5
-rw-r--r--sys/dev/sound/isa/gusc.c3
-rw-r--r--sys/dev/sound/isa/sbc.c3
-rw-r--r--sys/dev/sound/pci/csa.c3
-rw-r--r--sys/dev/sound/pci/emu10k1.c552
-rw-r--r--sys/dev/sound/pci/emuxkireg.h689
-rw-r--r--sys/dev/sound/pci/fm801.c8
-rw-r--r--sys/dev/sound/pci/hda/hdac.c52
-rw-r--r--sys/dev/sound/usb/uaudio.c19
-rw-r--r--sys/dev/sound/usb/uaudio.h5
-rw-r--r--sys/dev/speaker/spkr.c2
-rw-r--r--sys/dev/spibus/spibus.c3
-rw-r--r--sys/dev/spibus/spibusvar.h2
-rw-r--r--sys/dev/ste/if_ste.c6
-rw-r--r--sys/dev/stge/if_stge.c2
-rw-r--r--sys/dev/syscons/syscons.c76
-rw-r--r--sys/dev/syscons/syscons.h3
-rw-r--r--sys/dev/ti/if_ti.c3
-rw-r--r--sys/dev/tl/if_tl.c6
-rw-r--r--sys/dev/tsec/if_tsec_fdt.c7
-rw-r--r--sys/dev/twa/tw_osl.h2
-rw-r--r--sys/dev/twa/tw_osl_freebsd.c9
-rw-r--r--sys/dev/twe/twe_freebsd.c9
-rw-r--r--sys/dev/tws/tws.c11
-rw-r--r--sys/dev/tws/tws.h4
-rw-r--r--sys/dev/uart/uart_bus_fdt.c6
-rw-r--r--sys/dev/uart/uart_bus_pci.c5
-rw-r--r--sys/dev/uart/uart_cpu_sparc64.c2
-rw-r--r--sys/dev/uart/uart_subr.c12
-rw-r--r--sys/dev/uart/uart_tty.c12
-rw-r--r--sys/dev/ubsec/ubsec.c6
-rw-r--r--sys/dev/usb/controller/at91dci.c29
-rw-r--r--sys/dev/usb/controller/at91dci.h2
-rw-r--r--sys/dev/usb/controller/at91dci_atmelarm.c33
-rw-r--r--sys/dev/usb/controller/atmegadci.c29
-rw-r--r--sys/dev/usb/controller/atmegadci.h2
-rw-r--r--sys/dev/usb/controller/atmegadci_atmelarm.c33
-rw-r--r--sys/dev/usb/controller/avr32dci.c86
-rw-r--r--sys/dev/usb/controller/avr32dci.h3
-rw-r--r--sys/dev/usb/controller/ehci.c252
-rw-r--r--sys/dev/usb/controller/ehci.h5
-rw-r--r--sys/dev/usb/controller/ehci_ixp4xx.c55
-rw-r--r--sys/dev/usb/controller/ehci_mv.c55
-rw-r--r--sys/dev/usb/controller/ehci_pci.c86
-rw-r--r--sys/dev/usb/controller/musb_otg.c29
-rw-r--r--sys/dev/usb/controller/musb_otg.h2
-rw-r--r--sys/dev/usb/controller/musb_otg_atmelarm.c37
-rw-r--r--sys/dev/usb/controller/ohci.c100
-rw-r--r--sys/dev/usb/controller/ohci.h4
-rw-r--r--sys/dev/usb/controller/ohci_atmelarm.c15
-rw-r--r--sys/dev/usb/controller/ohci_pci.c60
-rw-r--r--sys/dev/usb/controller/ohci_s3c24x0.c15
-rw-r--r--sys/dev/usb/controller/uhci.c56
-rw-r--r--sys/dev/usb/controller/uhci.h4
-rw-r--r--sys/dev/usb/controller/uhci_pci.c58
-rw-r--r--sys/dev/usb/controller/usb_controller.c284
-rw-r--r--sys/dev/usb/controller/uss820dci.c29
-rw-r--r--sys/dev/usb/controller/uss820dci.h2
-rw-r--r--sys/dev/usb/controller/uss820dci_atmelarm.c57
-rw-r--r--sys/dev/usb/controller/xhci.c36
-rw-r--r--sys/dev/usb/controller/xhci.h3
-rw-r--r--sys/dev/usb/controller/xhci_pci.c65
-rw-r--r--sys/dev/usb/controller/xhcireg.h2
-rw-r--r--sys/dev/usb/input/ukbd.c380
-rw-r--r--sys/dev/usb/net/if_aue.c5
-rw-r--r--sys/dev/usb/net/if_axe.c6
-rw-r--r--sys/dev/usb/net/if_mos.c5
-rw-r--r--sys/dev/usb/net/if_rue.c5
-rw-r--r--sys/dev/usb/net/if_udav.c5
-rw-r--r--sys/dev/usb/net/ruephy.c2
-rw-r--r--sys/dev/usb/quirk/usb_quirk.c1
-rw-r--r--sys/dev/usb/serial/usb_serial.c12
-rw-r--r--sys/dev/usb/template/usb_template.c2
-rw-r--r--sys/dev/usb/template/usb_template_kbd.c6
-rw-r--r--sys/dev/usb/template/usb_template_modem.c6
-rw-r--r--sys/dev/usb/template/usb_template_mouse.c6
-rw-r--r--sys/dev/usb/usb_bus.h6
-rw-r--r--sys/dev/usb/usb_controller.h14
-rw-r--r--sys/dev/usb/usb_hub.c9
-rw-r--r--sys/dev/usb/usb_if.m10
-rw-r--r--sys/dev/usb/usb_msctest.c2
-rw-r--r--sys/dev/usb/usb_transfer.c6
-rw-r--r--sys/dev/usb/usb_transfer.h114
-rw-r--r--sys/dev/usb/usbdevs5
-rw-r--r--sys/dev/usb/wlan/if_rum.c14
-rw-r--r--sys/dev/usb/wlan/if_run.c31
-rw-r--r--sys/dev/usb/wlan/if_uath.c14
-rw-r--r--sys/dev/usb/wlan/if_upgt.c14
-rw-r--r--sys/dev/usb/wlan/if_ural.c14
-rw-r--r--sys/dev/usb/wlan/if_urtw.c18
-rw-r--r--sys/dev/usb/wlan/if_zyd.c16
-rw-r--r--sys/dev/vge/if_vge.c85
-rw-r--r--sys/dev/viawd/viawd.c248
-rw-r--r--sys/dev/viawd/viawd.h73
-rw-r--r--sys/dev/virtio/balloon/virtio_balloon.c1
-rw-r--r--sys/dev/virtio/balloon/virtio_balloon.h25
-rw-r--r--sys/dev/virtio/block/virtio_blk.c29
-rw-r--r--sys/dev/virtio/block/virtio_blk.h35
-rw-r--r--sys/dev/virtio/network/if_vtnet.c75
-rw-r--r--sys/dev/virtio/network/if_vtnetvar.h1
-rw-r--r--sys/dev/virtio/network/virtio_net.h25
-rw-r--r--sys/dev/virtio/pci/virtio_pci.h25
-rw-r--r--sys/dev/virtio/virtio.h25
-rw-r--r--sys/dev/virtio/virtio_ring.h34
-rw-r--r--sys/dev/vr/if_vr.c83
-rw-r--r--sys/dev/vr/if_vrreg.h11
-rw-r--r--sys/dev/vte/if_vte.c4
-rw-r--r--sys/dev/vxge/vxge-osdep.h2
-rw-r--r--sys/dev/wb/if_wb.c7
-rw-r--r--sys/dev/wi/if_wi.c16
-rw-r--r--sys/dev/wpi/if_wpi.c14
-rw-r--r--sys/dev/xen/console/console.c12
-rw-r--r--sys/dev/xen/netback/netback.c2
-rw-r--r--sys/dev/xen/pcifront/pcifront.c10
-rw-r--r--sys/dev/xl/if_xl.c6
-rw-r--r--sys/dev/xl/xlphy.c2
426 files changed, 65542 insertions, 13797 deletions
diff --git a/sys/dev/aac/aac_pci.c b/sys/dev/aac/aac_pci.c
index 6f59e68..485d5ff 100644
--- a/sys/dev/aac/aac_pci.c
+++ b/sys/dev/aac/aac_pci.c
@@ -68,9 +68,7 @@ static device_method_t aac_methods[] = {
DEVMETHOD(device_suspend, aac_suspend),
DEVMETHOD(device_resume, aac_resume),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t aac_pci_driver = {
diff --git a/sys/dev/acpi_support/acpi_wmi.c b/sys/dev/acpi_support/acpi_wmi.c
index 2acc262..16c2dd8 100644
--- a/sys/dev/acpi_support/acpi_wmi.c
+++ b/sys/dev/acpi_support/acpi_wmi.c
@@ -175,7 +175,6 @@ static device_method_t acpi_wmi_methods[] = {
/* bus interface */
DEVMETHOD(bus_add_child, bus_generic_add_child),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
/* acpi_wmi interface */
DEVMETHOD(acpi_wmi_provides_guid_string,
@@ -189,7 +188,7 @@ static device_method_t acpi_wmi_methods[] = {
DEVMETHOD(acpi_wmi_get_block, acpi_wmi_get_block_method),
DEVMETHOD(acpi_wmi_set_block, acpi_wmi_set_block_method),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t acpi_wmi_driver = {
@@ -265,7 +264,7 @@ acpi_wmi_attach(device_t dev)
acpi_wmi_ec_handler);
} else {
sc->wmistat_dev_t = make_dev(&wmistat_cdevsw, 0, UID_ROOT,
- GID_WHEEL, 0644, "wmistat");
+ GID_WHEEL, 0644, "wmistat%d", device_get_unit(dev));
sc->wmistat_dev_t->si_drv1 = sc;
sc->wmistat_open_pid = 0;
sc->wmistat_bufptr = -1;
diff --git a/sys/dev/acpica/acpi_battery.c b/sys/dev/acpica/acpi_battery.c
index ba57853..3d7d94a 100644
--- a/sys/dev/acpica/acpi_battery.c
+++ b/sys/dev/acpica/acpi_battery.c
@@ -205,6 +205,14 @@ acpi_battery_get_battinfo(device_t dev, struct acpi_battinfo *battinfo)
bif->lfcap = (bif->lfcap * bif->dvol) / 1000;
}
+ /*
+ * The calculation above may set bif->lfcap to zero. This was
+ * seen on a laptop with a broken battery. The result of the
+ * division was rounded to zero.
+ */
+ if (!acpi_battery_bif_valid(bif))
+ continue;
+
/* Calculate percent capacity remaining. */
bi[i].cap = (100 * bst[i].cap) / bif->lfcap;
diff --git a/sys/dev/acpica/acpi_cpu.c b/sys/dev/acpica/acpi_cpu.c
index d26903d..29034e1 100644
--- a/sys/dev/acpica/acpi_cpu.c
+++ b/sys/dev/acpica/acpi_cpu.c
@@ -187,13 +187,12 @@ static device_method_t acpi_cpu_methods[] = {
DEVMETHOD(bus_set_resource, bus_generic_rl_set_resource),
DEVMETHOD(bus_alloc_resource, bus_generic_rl_alloc_resource),
DEVMETHOD(bus_release_resource, bus_generic_rl_release_resource),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource),
DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t acpi_cpu_driver = {
diff --git a/sys/dev/acpica/acpi_isab.c b/sys/dev/acpica/acpi_isab.c
index 0da0182..3febea7 100644
--- a/sys/dev/acpica/acpi_isab.c
+++ b/sys/dev/acpica/acpi_isab.c
@@ -68,7 +68,6 @@ static device_method_t acpi_isab_methods[] = {
DEVMETHOD(device_resume, bus_generic_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_read_ivar, acpi_isab_read_ivar),
DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource),
DEVMETHOD(bus_release_resource, bus_generic_release_resource),
@@ -77,7 +76,7 @@ static device_method_t acpi_isab_methods[] = {
DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t acpi_isab_driver = {
diff --git a/sys/dev/acpica/acpi_pcib_acpi.c b/sys/dev/acpica/acpi_pcib_acpi.c
index 3284fc5..9770f51 100644
--- a/sys/dev/acpica/acpi_pcib_acpi.c
+++ b/sys/dev/acpica/acpi_pcib_acpi.c
@@ -106,7 +106,6 @@ static device_method_t acpi_pcib_acpi_methods[] = {
DEVMETHOD(device_resume, bus_generic_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_read_ivar, acpi_pcib_read_ivar),
DEVMETHOD(bus_write_ivar, acpi_pcib_write_ivar),
DEVMETHOD(bus_alloc_resource, acpi_pcib_acpi_alloc_resource),
@@ -133,7 +132,7 @@ static device_method_t acpi_pcib_acpi_methods[] = {
DEVMETHOD(pcib_map_msi, acpi_pcib_map_msi),
DEVMETHOD(pcib_power_for_sleep, acpi_pcib_power_for_sleep),
- {0, 0}
+ DEVMETHOD_END
};
static devclass_t pcib_devclass;
@@ -512,8 +511,17 @@ acpi_pcib_acpi_alloc_resource(device_t dev, device_t child, int type, int *rid,
sc = device_get_softc(dev);
res = pcib_host_res_alloc(&sc->ap_host_res, child, type, rid, start, end,
count, flags);
+
+ /*
+ * XXX: If this is a request for a specific range, assume it is
+ * correct and pass it up to the parent. What we probably want to
+ * do long-term is explicitly trust any firmware-configured
+ * resources during the initial bus scan on boot and then disable
+ * this after that.
+ */
if (res == NULL && start + count - 1 == end)
- res = acpi_alloc_sysres(child, type, rid, start, end, count, flags);
+ res = bus_generic_alloc_resource(dev, child, type, rid, start, end,
+ count, flags);
return (res);
#else
return (bus_generic_alloc_resource(dev, child, type, rid, start, end,
diff --git a/sys/dev/ahci/ahci.c b/sys/dev/ahci/ahci.c
index 6aa131c..df4f66a 100644
--- a/sys/dev/ahci/ahci.c
+++ b/sys/dev/ahci/ahci.c
@@ -291,6 +291,9 @@ static struct {
#define RECOVERY_REQUEST_SENSE 2
#define recovery_slot spriv_field1
+static int force_ahci = 1;
+TUNABLE_INT("hw.ahci.force", &force_ahci);
+
static int
ahci_probe(device_t dev)
{
@@ -308,7 +311,8 @@ ahci_probe(device_t dev)
for (i = 0; ahci_ids[i].id != 0; i++) {
if (ahci_ids[i].id == devid &&
ahci_ids[i].rev <= revid &&
- (valid || !(ahci_ids[i].quirks & AHCI_Q_NOFORCE))) {
+ (valid || (force_ahci == 1 &&
+ !(ahci_ids[i].quirks & AHCI_Q_NOFORCE)))) {
/* Do not attach JMicrons with single PCI function. */
if (pci_get_vendor(dev) == 0x197b &&
(pci_read_config(dev, 0xdf, 1) & 0x40) == 0)
@@ -518,7 +522,7 @@ ahci_detach(device_t dev)
int i;
/* Detach & delete all children */
- device_delete_all_children(dev);
+ device_delete_children(dev);
/* Free interrupts. */
for (i = 0; i < ctlr->numirqs; i++) {
diff --git a/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l b/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l
index ac14c12..03fb6b4 100644
--- a/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l
+++ b/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l
@@ -66,6 +66,8 @@ static char msgbuf[255];
extern int mmlex(void);
%}
+%option noinput
+
WORD [A-Za-z_][-A-Za-z_0-9]*
SPACE [ \t]+
MCARG [^(), \t]+
diff --git a/sys/dev/aic7xxx/aicasm/aicasm_scan.l b/sys/dev/aic7xxx/aicasm/aicasm_scan.l
index acc74a4..45da98f 100644
--- a/sys/dev/aic7xxx/aicasm/aicasm_scan.l
+++ b/sys/dev/aic7xxx/aicasm/aicasm_scan.l
@@ -72,6 +72,8 @@ extern void mm_switch_to_buffer(YY_BUFFER_STATE);
extern void mm_delete_buffer(YY_BUFFER_STATE);
%}
+%option noinput
+
PATH ([/]*[-A-Za-z0-9_.])+
WORD [A-Za-z_][-A-Za-z_0-9]*
SPACE [ \t]+
diff --git a/sys/dev/amd/amd.c b/sys/dev/amd/amd.c
deleted file mode 100644
index f4b3d80..0000000
--- a/sys/dev/amd/amd.c
+++ /dev/null
@@ -1,2539 +0,0 @@
-/*-
- *********************************************************************
- * FILE NAME : amd.c
- * BY : C.L. Huang (ching@tekram.com.tw)
- * Erich Chen (erich@tekram.com.tw)
- * Description: Device Driver for the amd53c974 PCI Bus Master
- * SCSI Host adapter found on cards such as
- * the Tekram DC-390(T).
- * (C)Copyright 1995-1999 Tekram Technology Co., Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *********************************************************************
- * $FreeBSD$
- */
-
-/*
- *********************************************************************
- * HISTORY:
- *
- * REV# DATE NAME DESCRIPTION
- * 1.00 07/02/96 CLH First release for RELEASE-2.1.0
- * 1.01 08/20/96 CLH Update for RELEASE-2.1.5
- * 1.02 11/06/96 CLH Fixed more than 1 LUN scanning
- * 1.03 12/20/96 CLH Modify to support 2.2-ALPHA
- * 1.04 12/26/97 CLH Modify to support RELEASE-2.2.5
- * 1.05 01/01/99 ERICH CHEN Modify to support RELEASE-3.0.x (CAM)
- *********************************************************************
- */
-
-/* #define AMD_DEBUG0 */
-/* #define AMD_DEBUG_SCSI_PHASE */
-
-#include <sys/param.h>
-
-#include <sys/systm.h>
-#include <sys/queue.h>
-#include <sys/kernel.h>
-#include <sys/module.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/malloc.h>
-
-#include <vm/vm.h>
-#include <vm/pmap.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-#include <sys/bus.h>
-#include <sys/rman.h>
-
-#include <cam/cam.h>
-#include <cam/cam_ccb.h>
-#include <cam/cam_sim.h>
-#include <cam/cam_xpt_sim.h>
-#include <cam/cam_debug.h>
-
-#include <cam/scsi/scsi_all.h>
-#include <cam/scsi/scsi_message.h>
-
-#include <dev/pci/pcivar.h>
-#include <dev/pci/pcireg.h>
-#include <dev/amd/amd.h>
-
-#define PCI_DEVICE_ID_AMD53C974 0x20201022ul
-#define PCI_BASE_ADDR0 0x10
-
-typedef u_int (phase_handler_t)(struct amd_softc *, struct amd_srb *, u_int);
-typedef phase_handler_t *phase_handler_func_t;
-
-static void amd_intr(void *vamd);
-static int amdstart(struct amd_softc *amd, struct amd_srb * pSRB);
-static phase_handler_t amd_NopPhase;
-
-static phase_handler_t amd_DataOutPhase0;
-static phase_handler_t amd_DataInPhase0;
-#define amd_CommandPhase0 amd_NopPhase
-static phase_handler_t amd_StatusPhase0;
-static phase_handler_t amd_MsgOutPhase0;
-static phase_handler_t amd_MsgInPhase0;
-static phase_handler_t amd_DataOutPhase1;
-static phase_handler_t amd_DataInPhase1;
-static phase_handler_t amd_CommandPhase1;
-static phase_handler_t amd_StatusPhase1;
-static phase_handler_t amd_MsgOutPhase1;
-static phase_handler_t amd_MsgInPhase1;
-
-static void amdsetupcommand(struct amd_softc *amd, struct amd_srb *srb);
-static int amdparsemsg(struct amd_softc *amd);
-static int amdhandlemsgreject(struct amd_softc *amd);
-static void amdconstructsdtr(struct amd_softc *amd,
- u_int period, u_int offset);
-static u_int amdfindclockrate(struct amd_softc *amd, u_int *period);
-static int amdsentmsg(struct amd_softc *amd, u_int msgtype, int full);
-
-static void DataIO_Comm(struct amd_softc *amd, struct amd_srb *pSRB, u_int dir);
-static void amd_Disconnect(struct amd_softc *amd);
-static void amd_Reselect(struct amd_softc *amd);
-static void SRBdone(struct amd_softc *amd, struct amd_srb *pSRB);
-static void amd_ScsiRstDetect(struct amd_softc *amd);
-static void amd_ResetSCSIBus(struct amd_softc *amd);
-static void RequestSense(struct amd_softc *amd, struct amd_srb *pSRB);
-static void amd_InvalidCmd(struct amd_softc *amd);
-
-static void amd_dmamap_cb(void *arg, bus_dma_segment_t *segs, int nsegs,
- int error);
-
-#if 0
-static void amd_timeout(void *arg1);
-static void amd_reset(struct amd_softc *amd);
-#endif
-static u_int8_t * phystovirt(struct amd_srb *pSRB, u_int32_t xferCnt);
-
-void amd_linkSRB(struct amd_softc *amd);
-static int amd_init(device_t);
-static void amd_load_defaults(struct amd_softc *amd);
-static void amd_load_eeprom_or_defaults(struct amd_softc *amd);
-static int amd_EEpromInDO(struct amd_softc *amd);
-static u_int16_t EEpromGetData1(struct amd_softc *amd);
-static void amd_EnDisableCE(struct amd_softc *amd, int mode, int *regval);
-static void amd_EEpromOutDI(struct amd_softc *amd, int *regval, int Carry);
-static void amd_Prepare(struct amd_softc *amd, int *regval, u_int8_t EEpromCmd);
-static void amd_ReadEEprom(struct amd_softc *amd);
-
-static int amd_probe(device_t);
-static int amd_attach(device_t);
-static void amdcompletematch(struct amd_softc *amd, target_id_t target,
- lun_id_t lun, u_int tag, struct srb_queue *queue,
- cam_status status);
-static void amdsetsync(struct amd_softc *amd, u_int target, u_int clockrate,
- u_int period, u_int offset, u_int type);
-static void amdsettags(struct amd_softc *amd, u_int target, int tagenb);
-
-static __inline void amd_clear_msg_state(struct amd_softc *amd);
-
-static __inline void
-amd_clear_msg_state(struct amd_softc *amd)
-{
- amd->msgout_len = 0;
- amd->msgout_index = 0;
- amd->msgin_index = 0;
-}
-
-static __inline uint32_t
-amd_get_sense_bufaddr(struct amd_softc *amd, struct amd_srb *pSRB)
-{
- int offset;
-
- offset = pSRB->TagNumber;
- return (amd->sense_busaddr + (offset * sizeof(struct scsi_sense_data)));
-}
-
-static __inline struct scsi_sense_data *
-amd_get_sense_buf(struct amd_softc *amd, struct amd_srb *pSRB)
-{
- int offset;
-
- offset = pSRB->TagNumber;
- return (&amd->sense_buffers[offset]);
-}
-
-static __inline uint32_t
-amd_get_sense_bufsize(struct amd_softc *amd, struct amd_srb *pSRB)
-{
- return (sizeof(struct scsi_sense_data));
-}
-
-/* CAM SIM entry points */
-#define ccb_srb_ptr spriv_ptr0
-#define ccb_amd_ptr spriv_ptr1
-static void amd_action(struct cam_sim *sim, union ccb *ccb);
-static void amd_poll(struct cam_sim *sim);
-
-/*
- * State engine function tables indexed by SCSI phase number
- */
-phase_handler_func_t amd_SCSI_phase0[] = {
- amd_DataOutPhase0,
- amd_DataInPhase0,
- amd_CommandPhase0,
- amd_StatusPhase0,
- amd_NopPhase,
- amd_NopPhase,
- amd_MsgOutPhase0,
- amd_MsgInPhase0
-};
-
-phase_handler_func_t amd_SCSI_phase1[] = {
- amd_DataOutPhase1,
- amd_DataInPhase1,
- amd_CommandPhase1,
- amd_StatusPhase1,
- amd_NopPhase,
- amd_NopPhase,
- amd_MsgOutPhase1,
- amd_MsgInPhase1
-};
-
-/*
- * EEProm/BIOS negotiation periods
- */
-u_int8_t eeprom_period[] = {
- 25, /* 10.0MHz */
- 32, /* 8.0MHz */
- 38, /* 6.6MHz */
- 44, /* 5.7MHz */
- 50, /* 5.0MHz */
- 63, /* 4.0MHz */
- 83, /* 3.0MHz */
- 125 /* 2.0MHz */
-};
-
-/*
- * chip clock setting to SCSI specified sync parameter table.
- */
-u_int8_t tinfo_sync_period[] = {
- 25, /* 10.0 */
- 32, /* 8.0 */
- 38, /* 6.6 */
- 44, /* 5.7 */
- 50, /* 5.0 */
- 57, /* 4.4 */
- 63, /* 4.0 */
- 70, /* 3.6 */
- 76, /* 3.3 */
- 83 /* 3.0 */
-};
-
-static __inline struct amd_srb *
-amdgetsrb(struct amd_softc * amd)
-{
- int intflag;
- struct amd_srb * pSRB;
-
- intflag = splcam();
- pSRB = TAILQ_FIRST(&amd->free_srbs);
- if (pSRB)
- TAILQ_REMOVE(&amd->free_srbs, pSRB, links);
- splx(intflag);
- return (pSRB);
-}
-
-static void
-amdsetupcommand(struct amd_softc *amd, struct amd_srb *srb)
-{
- struct scsi_request_sense sense_cmd;
- u_int8_t *cdb;
- u_int cdb_len;
-
- if (srb->SRBFlag & AUTO_REQSENSE) {
- sense_cmd.opcode = REQUEST_SENSE;
- sense_cmd.byte2 = srb->pccb->ccb_h.target_lun << 5;
- sense_cmd.unused[0] = 0;
- sense_cmd.unused[1] = 0;
- sense_cmd.length = sizeof(struct scsi_sense_data);
- sense_cmd.control = 0;
- cdb = &sense_cmd.opcode;
- cdb_len = sizeof(sense_cmd);
- } else {
- cdb = &srb->CmdBlock[0];
- cdb_len = srb->ScsiCmdLen;
- }
- amd_write8_multi(amd, SCSIFIFOREG, cdb, cdb_len);
-}
-
-/*
- * Attempt to start a waiting transaction. Interrupts must be disabled
- * upon entry to this function.
- */
-static void
-amdrunwaiting(struct amd_softc *amd) {
- struct amd_srb *srb;
-
- if (amd->last_phase != SCSI_BUS_FREE)
- return;
-
- srb = TAILQ_FIRST(&amd->waiting_srbs);
- if (srb == NULL)
- return;
-
- if (amdstart(amd, srb) == 0) {
- TAILQ_REMOVE(&amd->waiting_srbs, srb, links);
- TAILQ_INSERT_HEAD(&amd->running_srbs, srb, links);
- }
-}
-
-static void
-amdexecutesrb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
-{
- struct amd_srb *srb;
- union ccb *ccb;
- struct amd_softc *amd;
- int s;
-
- srb = (struct amd_srb *)arg;
- ccb = srb->pccb;
- amd = (struct amd_softc *)ccb->ccb_h.ccb_amd_ptr;
-
- if (error != 0) {
- if (error != EFBIG)
- printf("amd%d: Unexepected error 0x%x returned from "
- "bus_dmamap_load\n", amd->unit, error);
- if (ccb->ccb_h.status == CAM_REQ_INPROG) {
- xpt_freeze_devq(ccb->ccb_h.path, /*count*/1);
- ccb->ccb_h.status = CAM_REQ_TOO_BIG|CAM_DEV_QFRZN;
- }
- TAILQ_INSERT_HEAD(&amd->free_srbs, srb, links);
- xpt_done(ccb);
- return;
- }
-
- if (nseg != 0) {
- struct amd_sg *sg;
- bus_dma_segment_t *end_seg;
- bus_dmasync_op_t op;
-
- end_seg = dm_segs + nseg;
-
- /* Copy the segments into our SG list */
- srb->pSGlist = &srb->SGsegment[0];
- sg = srb->pSGlist;
- while (dm_segs < end_seg) {
- sg->SGXLen = dm_segs->ds_len;
- sg->SGXPtr = dm_segs->ds_addr;
- sg++;
- dm_segs++;
- }
-
- if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN)
- op = BUS_DMASYNC_PREREAD;
- else
- op = BUS_DMASYNC_PREWRITE;
-
- bus_dmamap_sync(amd->buffer_dmat, srb->dmamap, op);
-
- }
- srb->SGcount = nseg;
- srb->SGIndex = 0;
- srb->AdaptStatus = 0;
- srb->TargetStatus = 0;
- srb->MsgCnt = 0;
- srb->SRBStatus = 0;
- srb->SRBFlag = 0;
- srb->SRBState = 0;
- srb->TotalXferredLen = 0;
- srb->SGPhysAddr = 0;
- srb->SGToBeXferLen = 0;
- srb->EndMessage = 0;
-
- s = splcam();
-
- /*
- * Last time we need to check if this CCB needs to
- * be aborted.
- */
- if (ccb->ccb_h.status != CAM_REQ_INPROG) {
- if (nseg != 0)
- bus_dmamap_unload(amd->buffer_dmat, srb->dmamap);
- TAILQ_INSERT_HEAD(&amd->free_srbs, srb, links);
- xpt_done(ccb);
- splx(s);
- return;
- }
- ccb->ccb_h.status |= CAM_SIM_QUEUED;
-#if 0
- /* XXX Need a timeout handler */
- ccb->ccb_h.timeout_ch =
- timeout(amdtimeout, (caddr_t)srb,
- (ccb->ccb_h.timeout * hz) / 1000);
-#endif
- TAILQ_INSERT_TAIL(&amd->waiting_srbs, srb, links);
- amdrunwaiting(amd);
- splx(s);
-}
-
-static void
-amd_action(struct cam_sim * psim, union ccb * pccb)
-{
- struct amd_softc * amd;
- u_int target_id;
-
- CAM_DEBUG(pccb->ccb_h.path, CAM_DEBUG_TRACE, ("amd_action\n"));
-
- amd = (struct amd_softc *) cam_sim_softc(psim);
- target_id = pccb->ccb_h.target_id;
-
- switch (pccb->ccb_h.func_code) {
- case XPT_SCSI_IO:
- {
- struct amd_srb * pSRB;
- struct ccb_scsiio *pcsio;
-
- pcsio = &pccb->csio;
-
- /*
- * Assign an SRB and connect it with this ccb.
- */
- pSRB = amdgetsrb(amd);
-
- if (!pSRB) {
- /* Freeze SIMQ */
- pccb->ccb_h.status = CAM_RESRC_UNAVAIL;
- xpt_done(pccb);
- return;
- }
- pSRB->pccb = pccb;
- pccb->ccb_h.ccb_srb_ptr = pSRB;
- pccb->ccb_h.ccb_amd_ptr = amd;
- pSRB->ScsiCmdLen = pcsio->cdb_len;
- bcopy(pcsio->cdb_io.cdb_bytes, pSRB->CmdBlock, pcsio->cdb_len);
- if ((pccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) {
- if ((pccb->ccb_h.flags & CAM_SCATTER_VALID) == 0) {
- /*
- * We've been given a pointer
- * to a single buffer.
- */
- if ((pccb->ccb_h.flags & CAM_DATA_PHYS) == 0) {
- int s;
- int error;
-
- s = splsoftvm();
- error =
- bus_dmamap_load(amd->buffer_dmat,
- pSRB->dmamap,
- pcsio->data_ptr,
- pcsio->dxfer_len,
- amdexecutesrb,
- pSRB, /*flags*/0);
- if (error == EINPROGRESS) {
- /*
- * So as to maintain
- * ordering, freeze the
- * controller queue
- * until our mapping is
- * returned.
- */
- xpt_freeze_simq(amd->psim, 1);
- pccb->ccb_h.status |=
- CAM_RELEASE_SIMQ;
- }
- splx(s);
- } else {
- struct bus_dma_segment seg;
-
- /* Pointer to physical buffer */
- seg.ds_addr =
- (bus_addr_t)pcsio->data_ptr;
- seg.ds_len = pcsio->dxfer_len;
- amdexecutesrb(pSRB, &seg, 1, 0);
- }
- } else {
- struct bus_dma_segment *segs;
-
- if ((pccb->ccb_h.flags & CAM_SG_LIST_PHYS) == 0
- || (pccb->ccb_h.flags & CAM_DATA_PHYS) != 0) {
- TAILQ_INSERT_HEAD(&amd->free_srbs,
- pSRB, links);
- pccb->ccb_h.status = CAM_PROVIDE_FAIL;
- xpt_done(pccb);
- return;
- }
-
- /* Just use the segments provided */
- segs =
- (struct bus_dma_segment *)pcsio->data_ptr;
- amdexecutesrb(pSRB, segs, pcsio->sglist_cnt, 0);
- }
- } else
- amdexecutesrb(pSRB, NULL, 0, 0);
- break;
- }
- case XPT_PATH_INQ:
- {
- struct ccb_pathinq *cpi = &pccb->cpi;
-
- cpi->version_num = 1;
- cpi->hba_inquiry = PI_SDTR_ABLE | PI_TAG_ABLE;
- cpi->target_sprt = 0;
- cpi->hba_misc = 0;
- cpi->hba_eng_cnt = 0;
- cpi->max_target = 7;
- cpi->max_lun = amd->max_lun; /* 7 or 0 */
- cpi->initiator_id = amd->AdaptSCSIID;
- cpi->bus_id = cam_sim_bus(psim);
- strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
- strncpy(cpi->hba_vid, "TRM-AMD", HBA_IDLEN);
- strncpy(cpi->dev_name, cam_sim_name(psim), DEV_IDLEN);
- cpi->unit_number = cam_sim_unit(psim);
- cpi->transport = XPORT_SPI;
- cpi->transport_version = 2;
- cpi->protocol = PROTO_SCSI;
- cpi->protocol_version = SCSI_REV_2;
- cpi->ccb_h.status = CAM_REQ_CMP;
- xpt_done(pccb);
- break;
- }
- case XPT_ABORT:
- pccb->ccb_h.status = CAM_REQ_INVALID;
- xpt_done(pccb);
- break;
- case XPT_RESET_BUS:
- {
-
- int i;
-
- amd_ResetSCSIBus(amd);
- amd->ACBFlag = 0;
-
- for (i = 0; i < 500; i++) {
- DELAY(1000); /* Wait until our interrupt
- * handler sees it */
- }
-
- pccb->ccb_h.status = CAM_REQ_CMP;
- xpt_done(pccb);
- break;
- }
- case XPT_RESET_DEV:
- pccb->ccb_h.status = CAM_REQ_INVALID;
- xpt_done(pccb);
- break;
- case XPT_TERM_IO:
- pccb->ccb_h.status = CAM_REQ_INVALID;
- xpt_done(pccb);
- break;
- case XPT_GET_TRAN_SETTINGS:
- {
- struct ccb_trans_settings *cts = &pccb->cts;
- struct amd_target_info *targ_info = &amd->tinfo[target_id];
- struct amd_transinfo *tinfo;
- int intflag;
- struct ccb_trans_settings_scsi *scsi =
- &cts->proto_specific.scsi;
- struct ccb_trans_settings_spi *spi =
- &cts->xport_specific.spi;
-
- cts->protocol = PROTO_SCSI;
- cts->protocol_version = SCSI_REV_2;
- cts->transport = XPORT_SPI;
- cts->transport_version = 2;
-
- intflag = splcam();
- if (cts->type == CTS_TYPE_CURRENT_SETTINGS) {
- /* current transfer settings */
- if (targ_info->disc_tag & AMD_CUR_DISCENB) {
- spi->flags = CTS_SPI_FLAGS_DISC_ENB;
- } else {
- spi->flags = 0;
- }
- if (targ_info->disc_tag & AMD_CUR_TAGENB) {
- scsi->flags = CTS_SCSI_FLAGS_TAG_ENB;
- } else {
- scsi->flags = 0;
- }
- tinfo = &targ_info->current;
- } else {
- /* default(user) transfer settings */
- if (targ_info->disc_tag & AMD_USR_DISCENB) {
- spi->flags = CTS_SPI_FLAGS_DISC_ENB;
- } else {
- spi->flags = 0;
- }
- if (targ_info->disc_tag & AMD_USR_TAGENB) {
- scsi->flags = CTS_SCSI_FLAGS_TAG_ENB;
- } else {
- scsi->flags = 0;
- }
- tinfo = &targ_info->user;
- }
- spi->sync_period = tinfo->period;
- spi->sync_offset = tinfo->offset;
- splx(intflag);
-
- spi->bus_width = MSG_EXT_WDTR_BUS_8_BIT;
- spi->valid = CTS_SPI_VALID_SYNC_RATE
- | CTS_SPI_VALID_SYNC_OFFSET
- | CTS_SPI_VALID_BUS_WIDTH
- | CTS_SPI_VALID_DISC;
- scsi->valid = CTS_SCSI_VALID_TQ;
- pccb->ccb_h.status = CAM_REQ_CMP;
- xpt_done(pccb);
- break;
- }
-#define IS_CURRENT_SETTINGS(c) (c->type == CTS_TYPE_CURRENT_SETTINGS)
-#define IS_USER_SETTINGS(c) (c->type == CTS_TYPE_USER_SETTINGS)
- case XPT_SET_TRAN_SETTINGS:
- {
- struct ccb_trans_settings *cts = &pccb->cts;
- struct amd_target_info *targ_info;
- u_int update_type = 0;
- int intflag;
- int last_entry;
- struct ccb_trans_settings_scsi *scsi =
- &cts->proto_specific.scsi;
- struct ccb_trans_settings_spi *spi =
- &cts->xport_specific.spi;
- if (IS_CURRENT_SETTINGS(cts)) {
- update_type |= AMD_TRANS_GOAL;
- } else if (IS_USER_SETTINGS(cts)) {
- update_type |= AMD_TRANS_USER;
- }
- if (update_type == 0
- || update_type == (AMD_TRANS_USER|AMD_TRANS_GOAL)) {
- cts->ccb_h.status = CAM_REQ_INVALID;
- xpt_done(pccb);
- }
-
- intflag = splcam();
- targ_info = &amd->tinfo[target_id];
-
- if ((spi->valid & CTS_SPI_VALID_DISC) != 0) {
- if (update_type & AMD_TRANS_GOAL) {
- if ((spi->flags & CTS_SPI_FLAGS_DISC_ENB)
- != 0) {
- targ_info->disc_tag |= AMD_CUR_DISCENB;
- } else {
- targ_info->disc_tag &= ~AMD_CUR_DISCENB;
- }
- }
- if (update_type & AMD_TRANS_USER) {
- if ((spi->flags & CTS_SPI_FLAGS_DISC_ENB)
- != 0) {
- targ_info->disc_tag |= AMD_USR_DISCENB;
- } else {
- targ_info->disc_tag &= ~AMD_USR_DISCENB;
- }
- }
- }
- if ((scsi->valid & CTS_SCSI_VALID_TQ) != 0) {
- if (update_type & AMD_TRANS_GOAL) {
- if ((scsi->flags & CTS_SCSI_FLAGS_TAG_ENB)
- != 0) {
- targ_info->disc_tag |= AMD_CUR_TAGENB;
- } else {
- targ_info->disc_tag &= ~AMD_CUR_TAGENB;
- }
- }
- if (update_type & AMD_TRANS_USER) {
- if ((scsi->flags & CTS_SCSI_FLAGS_TAG_ENB)
- != 0) {
- targ_info->disc_tag |= AMD_USR_TAGENB;
- } else {
- targ_info->disc_tag &= ~AMD_USR_TAGENB;
- }
- }
- }
-
- if ((spi->valid & CTS_SPI_VALID_SYNC_OFFSET) == 0) {
- if (update_type & AMD_TRANS_GOAL)
- spi->sync_offset = targ_info->goal.offset;
- else
- spi->sync_offset = targ_info->user.offset;
- }
-
- if (spi->sync_offset > AMD_MAX_SYNC_OFFSET)
- spi->sync_offset = AMD_MAX_SYNC_OFFSET;
-
- if ((spi->valid & CTS_SPI_VALID_SYNC_RATE) == 0) {
- if (update_type & AMD_TRANS_GOAL)
- spi->sync_period = targ_info->goal.period;
- else
- spi->sync_period = targ_info->user.period;
- }
-
- last_entry = sizeof(tinfo_sync_period) - 1;
- if ((spi->sync_period != 0)
- && (spi->sync_period < tinfo_sync_period[0]))
- spi->sync_period = tinfo_sync_period[0];
- if (spi->sync_period > tinfo_sync_period[last_entry])
- spi->sync_period = 0;
- if (spi->sync_offset == 0)
- spi->sync_period = 0;
-
- if ((update_type & AMD_TRANS_USER) != 0) {
- targ_info->user.period = spi->sync_period;
- targ_info->user.offset = spi->sync_offset;
- }
- if ((update_type & AMD_TRANS_GOAL) != 0) {
- targ_info->goal.period = spi->sync_period;
- targ_info->goal.offset = spi->sync_offset;
- }
- splx(intflag);
- pccb->ccb_h.status = CAM_REQ_CMP;
- xpt_done(pccb);
- break;
- }
- case XPT_CALC_GEOMETRY:
- {
- int extended;
-
- extended = (amd->eepromBuf[EE_MODE2] & GREATER_1G) != 0;
- cam_calc_geometry(&pccb->ccg, extended);
- xpt_done(pccb);
- break;
- }
- default:
- pccb->ccb_h.status = CAM_REQ_INVALID;
- xpt_done(pccb);
- break;
- }
-}
-
-static void
-amd_poll(struct cam_sim * psim)
-{
- amd_intr(cam_sim_softc(psim));
-}
-
-static u_int8_t *
-phystovirt(struct amd_srb * pSRB, u_int32_t xferCnt)
-{
- intptr_t dataPtr;
- struct ccb_scsiio *pcsio;
- u_int8_t i;
- struct amd_sg * pseg;
-
- dataPtr = 0;
- pcsio = &pSRB->pccb->csio;
-
- dataPtr = (intptr_t) pcsio->data_ptr;
- pseg = pSRB->SGsegment;
- for (i = 0; i < pSRB->SGIndex; i++) {
- dataPtr += (int) pseg->SGXLen;
- pseg++;
- }
- dataPtr += (int) xferCnt;
- return ((u_int8_t *) dataPtr);
-}
-
-static void
-amd_dmamap_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
-{
- bus_addr_t *baddr;
-
- baddr = (bus_addr_t *)arg;
- *baddr = segs->ds_addr;
-}
-
-static void
-ResetDevParam(struct amd_softc * amd)
-{
- u_int target;
-
- for (target = 0; target <= amd->max_id; target++) {
- if (amd->AdaptSCSIID != target) {
- amdsetsync(amd, target, /*clockrate*/0,
- /*period*/0, /*offset*/0, AMD_TRANS_CUR);
- }
- }
-}
-
-static void
-amdcompletematch(struct amd_softc *amd, target_id_t target, lun_id_t lun,
- u_int tag, struct srb_queue *queue, cam_status status)
-{
- struct amd_srb *srb;
- struct amd_srb *next_srb;
-
- for (srb = TAILQ_FIRST(queue); srb != NULL; srb = next_srb) {
- union ccb *ccb;
-
- next_srb = TAILQ_NEXT(srb, links);
- if (srb->pccb->ccb_h.target_id != target
- && target != CAM_TARGET_WILDCARD)
- continue;
-
- if (srb->pccb->ccb_h.target_lun != lun
- && lun != CAM_LUN_WILDCARD)
- continue;
-
- if (srb->TagNumber != tag
- && tag != AMD_TAG_WILDCARD)
- continue;
-
- ccb = srb->pccb;
- TAILQ_REMOVE(queue, srb, links);
- TAILQ_INSERT_HEAD(&amd->free_srbs, srb, links);
- if ((ccb->ccb_h.status & CAM_DEV_QFRZN) == 0
- && (status & CAM_DEV_QFRZN) != 0)
- xpt_freeze_devq(ccb->ccb_h.path, /*count*/1);
- ccb->ccb_h.status = status;
- xpt_done(ccb);
- }
-
-}
-
-static void
-amdsetsync(struct amd_softc *amd, u_int target, u_int clockrate,
- u_int period, u_int offset, u_int type)
-{
- struct amd_target_info *tinfo;
- u_int old_period;
- u_int old_offset;
-
- tinfo = &amd->tinfo[target];
- old_period = tinfo->current.period;
- old_offset = tinfo->current.offset;
- if ((type & AMD_TRANS_CUR) != 0
- && (old_period != period || old_offset != offset)) {
- struct cam_path *path;
-
- tinfo->current.period = period;
- tinfo->current.offset = offset;
- tinfo->sync_period_reg = clockrate;
- tinfo->sync_offset_reg = offset;
- tinfo->CtrlR3 &= ~FAST_SCSI;
- tinfo->CtrlR4 &= ~EATER_25NS;
- if (clockrate > 7)
- tinfo->CtrlR4 |= EATER_25NS;
- else
- tinfo->CtrlR3 |= FAST_SCSI;
-
- if ((type & AMD_TRANS_ACTIVE) == AMD_TRANS_ACTIVE) {
- amd_write8(amd, SYNCPERIOREG, tinfo->sync_period_reg);
- amd_write8(amd, SYNCOFFREG, tinfo->sync_offset_reg);
- amd_write8(amd, CNTLREG3, tinfo->CtrlR3);
- amd_write8(amd, CNTLREG4, tinfo->CtrlR4);
- }
- /* If possible, update the XPT's notion of our transfer rate */
- if (xpt_create_path(&path, /*periph*/NULL,
- cam_sim_path(amd->psim), target,
- CAM_LUN_WILDCARD) == CAM_REQ_CMP) {
- struct ccb_trans_settings neg;
- struct ccb_trans_settings_spi *spi =
- &neg.xport_specific.spi;
- xpt_setup_ccb(&neg.ccb_h, path, /*priority*/1);
- memset(&neg, 0, sizeof (neg));
- spi->sync_period = period;
- spi->sync_offset = offset;
- spi->valid = CTS_SPI_VALID_SYNC_RATE
- | CTS_SPI_VALID_SYNC_OFFSET;
- xpt_async(AC_TRANSFER_NEG, path, &neg);
- xpt_free_path(path);
- }
- }
- if ((type & AMD_TRANS_GOAL) != 0) {
- tinfo->goal.period = period;
- tinfo->goal.offset = offset;
- }
-
- if ((type & AMD_TRANS_USER) != 0) {
- tinfo->user.period = period;
- tinfo->user.offset = offset;
- }
-}
-
-static void
-amdsettags(struct amd_softc *amd, u_int target, int tagenb)
-{
- panic("Implement me!\n");
-}
-
-
-#if 0
-/*
- **********************************************************************
- * Function : amd_reset (struct amd_softc * amd)
- * Purpose : perform a hard reset on the SCSI bus( and AMD chip).
- * Inputs : cmd - command which caused the SCSI RESET
- **********************************************************************
- */
-static void
-amd_reset(struct amd_softc * amd)
-{
- int intflag;
- u_int8_t bval;
- u_int16_t i;
-
-
-#ifdef AMD_DEBUG0
- printf("DC390: RESET");
-#endif
-
- intflag = splcam();
- bval = amd_read8(amd, CNTLREG1);
- bval |= DIS_INT_ON_SCSI_RST;
- amd_write8(amd, CNTLREG1, bval); /* disable interrupt */
- amd_ResetSCSIBus(amd);
-
- for (i = 0; i < 500; i++) {
- DELAY(1000);
- }
-
- bval = amd_read8(amd, CNTLREG1);
- bval &= ~DIS_INT_ON_SCSI_RST;
- amd_write8(amd, CNTLREG1, bval); /* re-enable interrupt */
-
- amd_write8(amd, DMA_Cmd, DMA_IDLE_CMD);
- amd_write8(amd, SCSICMDREG, CLEAR_FIFO_CMD);
-
- ResetDevParam(amd);
- amdcompletematch(amd, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD,
- AMD_TAG_WILDCARD, &amd->running_srbs,
- CAM_DEV_QFRZN|CAM_SCSI_BUS_RESET);
- amdcompletematch(amd, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD,
- AMD_TAG_WILDCARD, &amd->waiting_srbs,
- CAM_DEV_QFRZN|CAM_SCSI_BUS_RESET);
- amd->active_srb = NULL;
- amd->ACBFlag = 0;
- splx(intflag);
- return;
-}
-
-void
-amd_timeout(void *arg1)
-{
- struct amd_srb * pSRB;
-
- pSRB = (struct amd_srb *) arg1;
-}
-#endif
-
-static int
-amdstart(struct amd_softc *amd, struct amd_srb *pSRB)
-{
- union ccb *pccb;
- struct ccb_scsiio *pcsio;
- struct amd_target_info *targ_info;
- u_int identify_msg;
- u_int command;
- u_int target;
- u_int lun;
-
- pccb = pSRB->pccb;
- pcsio = &pccb->csio;
- target = pccb->ccb_h.target_id;
- lun = pccb->ccb_h.target_lun;
- targ_info = &amd->tinfo[target];
-
- amd_clear_msg_state(amd);
- amd_write8(amd, SCSIDESTIDREG, target);
- amd_write8(amd, SYNCPERIOREG, targ_info->sync_period_reg);
- amd_write8(amd, SYNCOFFREG, targ_info->sync_offset_reg);
- amd_write8(amd, CNTLREG1, targ_info->CtrlR1);
- amd_write8(amd, CNTLREG3, targ_info->CtrlR3);
- amd_write8(amd, CNTLREG4, targ_info->CtrlR4);
- amd_write8(amd, SCSICMDREG, CLEAR_FIFO_CMD);
-
- identify_msg = MSG_IDENTIFYFLAG | lun;
- if ((targ_info->disc_tag & AMD_CUR_DISCENB) != 0
- && (pccb->ccb_h.flags & CAM_DIS_DISCONNECT) == 0
- && (pSRB->CmdBlock[0] != REQUEST_SENSE)
- && (pSRB->SRBFlag & AUTO_REQSENSE) == 0)
- identify_msg |= MSG_IDENTIFY_DISCFLAG;
-
- amd_write8(amd, SCSIFIFOREG, identify_msg);
- if ((targ_info->disc_tag & AMD_CUR_TAGENB) == 0
- || (identify_msg & MSG_IDENTIFY_DISCFLAG) == 0)
- pccb->ccb_h.flags &= ~CAM_TAG_ACTION_VALID;
- if (targ_info->current.period != targ_info->goal.period
- || targ_info->current.offset != targ_info->goal.offset) {
- command = SEL_W_ATN_STOP;
- amdconstructsdtr(amd, targ_info->goal.period,
- targ_info->goal.offset);
- } else if ((pccb->ccb_h.flags & CAM_TAG_ACTION_VALID) != 0) {
- command = SEL_W_ATN2;
- pSRB->SRBState = SRB_START;
- amd_write8(amd, SCSIFIFOREG, pcsio->tag_action);
- amd_write8(amd, SCSIFIFOREG, pSRB->TagNumber);
- } else {
- command = SEL_W_ATN;
- pSRB->SRBState = SRB_START;
- }
- if (command != SEL_W_ATN_STOP)
- amdsetupcommand(amd, pSRB);
-
- if (amd_read8(amd, SCSISTATREG) & INTERRUPT) {
- pSRB->SRBState = SRB_READY;
- return (1);
- } else {
- amd->last_phase = SCSI_ARBITRATING;
- amd_write8(amd, SCSICMDREG, command);
- amd->active_srb = pSRB;
- amd->cur_target = target;
- amd->cur_lun = lun;
- return (0);
- }
-}
-
-/*
- * Catch an interrupt from the adapter.
- * Process pending device interrupts.
- */
-static void
-amd_intr(void *arg)
-{
- struct amd_softc *amd;
- struct amd_srb *pSRB;
- u_int internstat = 0;
- u_int scsistat;
- u_int intstat;
-
- amd = (struct amd_softc *)arg;
-
- if (amd == NULL) {
-#ifdef AMD_DEBUG0
- printf("amd_intr: amd NULL return......");
-#endif
- return;
- }
-
- scsistat = amd_read8(amd, SCSISTATREG);
- if (!(scsistat & INTERRUPT)) {
-#ifdef AMD_DEBUG0
- printf("amd_intr: scsistat = NULL ,return......");
-#endif
- return;
- }
-#ifdef AMD_DEBUG_SCSI_PHASE
- printf("scsistat=%2x,", scsistat);
-#endif
-
- internstat = amd_read8(amd, INTERNSTATREG);
- intstat = amd_read8(amd, INTSTATREG);
-
-#ifdef AMD_DEBUG_SCSI_PHASE
- printf("intstat=%2x,", intstat);
-#endif
-
- if (intstat & DISCONNECTED) {
- amd_Disconnect(amd);
- return;
- }
- if (intstat & RESELECTED) {
- amd_Reselect(amd);
- return;
- }
- if (intstat & INVALID_CMD) {
- amd_InvalidCmd(amd);
- return;
- }
- if (intstat & SCSI_RESET_) {
- amd_ScsiRstDetect(amd);
- return;
- }
- if (intstat & (SUCCESSFUL_OP + SERVICE_REQUEST)) {
- pSRB = amd->active_srb;
- /*
- * Run our state engine. First perform
- * post processing for the last phase we
- * were in, followed by any processing
- * required to handle the current phase.
- */
- scsistat =
- amd_SCSI_phase0[amd->last_phase](amd, pSRB, scsistat);
- amd->last_phase = scsistat & SCSI_PHASE_MASK;
- (void)amd_SCSI_phase1[amd->last_phase](amd, pSRB, scsistat);
- }
-}
-
-static u_int
-amd_DataOutPhase0(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- struct amd_sg *psgl;
- u_int32_t ResidCnt, xferCnt;
-
- if (!(pSRB->SRBState & SRB_XFERPAD)) {
- if (scsistat & PARITY_ERR) {
- pSRB->SRBStatus |= PARITY_ERROR;
- }
- if (scsistat & COUNT_2_ZERO) {
- while ((amd_read8(amd, DMA_Status)&DMA_XFER_DONE) == 0)
- ;
- pSRB->TotalXferredLen += pSRB->SGToBeXferLen;
- pSRB->SGIndex++;
- if (pSRB->SGIndex < pSRB->SGcount) {
- pSRB->pSGlist++;
- psgl = pSRB->pSGlist;
- pSRB->SGPhysAddr = psgl->SGXPtr;
- pSRB->SGToBeXferLen = psgl->SGXLen;
- } else {
- pSRB->SGToBeXferLen = 0;
- }
- } else {
- ResidCnt = amd_read8(amd, CURRENTFIFOREG) & 0x1f;
- ResidCnt += amd_read8(amd, CTCREG_LOW)
- | (amd_read8(amd, CTCREG_MID) << 8)
- | (amd_read8(amd, CURTXTCNTREG) << 16);
-
- xferCnt = pSRB->SGToBeXferLen - ResidCnt;
- pSRB->SGPhysAddr += xferCnt;
- pSRB->TotalXferredLen += xferCnt;
- pSRB->SGToBeXferLen = ResidCnt;
- }
- }
- amd_write8(amd, DMA_Cmd, WRITE_DIRECTION | DMA_IDLE_CMD);
- return (scsistat);
-}
-
-static u_int
-amd_DataInPhase0(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- u_int8_t bval;
- u_int16_t i, residual;
- struct amd_sg *psgl;
- u_int32_t ResidCnt, xferCnt;
- u_int8_t * ptr;
-
- if (!(pSRB->SRBState & SRB_XFERPAD)) {
- if (scsistat & PARITY_ERR) {
- pSRB->SRBStatus |= PARITY_ERROR;
- }
- if (scsistat & COUNT_2_ZERO) {
- while (1) {
- bval = amd_read8(amd, DMA_Status);
- if ((bval & DMA_XFER_DONE) != 0)
- break;
- }
- amd_write8(amd, DMA_Cmd, READ_DIRECTION|DMA_IDLE_CMD);
-
- pSRB->TotalXferredLen += pSRB->SGToBeXferLen;
- pSRB->SGIndex++;
- if (pSRB->SGIndex < pSRB->SGcount) {
- pSRB->pSGlist++;
- psgl = pSRB->pSGlist;
- pSRB->SGPhysAddr = psgl->SGXPtr;
- pSRB->SGToBeXferLen = psgl->SGXLen;
- } else {
- pSRB->SGToBeXferLen = 0;
- }
- } else { /* phase changed */
- residual = 0;
- bval = amd_read8(amd, CURRENTFIFOREG);
- while (bval & 0x1f) {
- if ((bval & 0x1f) == 1) {
- for (i = 0; i < 0x100; i++) {
- bval = amd_read8(amd, CURRENTFIFOREG);
- if (!(bval & 0x1f)) {
- goto din_1;
- } else if (i == 0x0ff) {
- residual = 1;
- goto din_1;
- }
- }
- } else {
- bval = amd_read8(amd, CURRENTFIFOREG);
- }
- }
- din_1:
- amd_write8(amd, DMA_Cmd, READ_DIRECTION|DMA_BLAST_CMD);
- for (i = 0; i < 0x8000; i++) {
- if ((amd_read8(amd, DMA_Status)&BLAST_COMPLETE))
- break;
- }
- amd_write8(amd, DMA_Cmd, READ_DIRECTION|DMA_IDLE_CMD);
-
- ResidCnt = amd_read8(amd, CTCREG_LOW)
- | (amd_read8(amd, CTCREG_MID) << 8)
- | (amd_read8(amd, CURTXTCNTREG) << 16);
- xferCnt = pSRB->SGToBeXferLen - ResidCnt;
- pSRB->SGPhysAddr += xferCnt;
- pSRB->TotalXferredLen += xferCnt;
- pSRB->SGToBeXferLen = ResidCnt;
- if (residual) {
- /* get residual byte */
- bval = amd_read8(amd, SCSIFIFOREG);
- ptr = phystovirt(pSRB, xferCnt);
- *ptr = bval;
- pSRB->SGPhysAddr++;
- pSRB->TotalXferredLen++;
- pSRB->SGToBeXferLen--;
- }
- }
- }
- return (scsistat);
-}
-
-static u_int
-amd_StatusPhase0(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- pSRB->TargetStatus = amd_read8(amd, SCSIFIFOREG);
- /* get message */
- pSRB->EndMessage = amd_read8(amd, SCSIFIFOREG);
- pSRB->SRBState = SRB_COMPLETED;
- amd_write8(amd, SCSICMDREG, MSG_ACCEPTED_CMD);
- return (SCSI_NOP0);
-}
-
-static u_int
-amd_MsgOutPhase0(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- if (pSRB->SRBState & (SRB_UNEXPECT_RESEL + SRB_ABORT_SENT)) {
- scsistat = SCSI_NOP0;
- }
- return (scsistat);
-}
-
-static u_int
-amd_MsgInPhase0(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- int done;
-
- amd->msgin_buf[amd->msgin_index] = amd_read8(amd, SCSIFIFOREG);
-
- done = amdparsemsg(amd);
- if (done)
- amd->msgin_index = 0;
- else
- amd->msgin_index++;
- return (SCSI_NOP0);
-}
-
-static int
-amdparsemsg(struct amd_softc *amd)
-{
- int reject;
- int done;
- int response;
-
- done = FALSE;
- response = FALSE;
- reject = FALSE;
-
- /*
- * Parse as much of the message as is availible,
- * rejecting it if we don't support it. When
- * the entire message is availible and has been
- * handled, return TRUE indicating that we have
- * parsed an entire message.
- */
- switch (amd->msgin_buf[0]) {
- case MSG_DISCONNECT:
- amd->active_srb->SRBState = SRB_DISCONNECT;
- amd->disc_count[amd->cur_target][amd->cur_lun]++;
- done = TRUE;
- break;
- case MSG_SIMPLE_Q_TAG:
- {
- struct amd_srb *disc_srb;
-
- if (amd->msgin_index < 1)
- break;
- disc_srb = &amd->SRB_array[amd->msgin_buf[1]];
- if (amd->active_srb != NULL
- || disc_srb->SRBState != SRB_DISCONNECT
- || disc_srb->pccb->ccb_h.target_id != amd->cur_target
- || disc_srb->pccb->ccb_h.target_lun != amd->cur_lun) {
- printf("amd%d: Unexpected tagged reselection "
- "for target %d, Issuing Abort\n", amd->unit,
- amd->cur_target);
- amd->msgout_buf[0] = MSG_ABORT;
- amd->msgout_len = 1;
- response = TRUE;
- break;
- }
- amd->active_srb = disc_srb;
- amd->disc_count[amd->cur_target][amd->cur_lun]--;
- done = TRUE;
- break;
- }
- case MSG_MESSAGE_REJECT:
- response = amdhandlemsgreject(amd);
- if (response == FALSE)
- amd_write8(amd, SCSICMDREG, RESET_ATN_CMD);
- /* FALLTHROUGH */
- case MSG_NOOP:
- done = TRUE;
- break;
- case MSG_EXTENDED:
- {
- u_int clockrate;
- u_int period;
- u_int offset;
- u_int saved_offset;
-
- /* Wait for enough of the message to begin validation */
- if (amd->msgin_index < 1)
- break;
- if (amd->msgin_buf[1] != MSG_EXT_SDTR_LEN) {
- reject = TRUE;
- break;
- }
-
- /* Wait for opcode */
- if (amd->msgin_index < 2)
- break;
-
- if (amd->msgin_buf[2] != MSG_EXT_SDTR) {
- reject = TRUE;
- break;
- }
-
- /*
- * Wait until we have both args before validating
- * and acting on this message.
- *
- * Add one to MSG_EXT_SDTR_LEN to account for
- * the extended message preamble.
- */
- if (amd->msgin_index < (MSG_EXT_SDTR_LEN + 1))
- break;
-
- period = amd->msgin_buf[3];
- saved_offset = offset = amd->msgin_buf[4];
- clockrate = amdfindclockrate(amd, &period);
- if (offset > AMD_MAX_SYNC_OFFSET)
- offset = AMD_MAX_SYNC_OFFSET;
- if (period == 0 || offset == 0) {
- offset = 0;
- period = 0;
- clockrate = 0;
- }
- amdsetsync(amd, amd->cur_target, clockrate, period, offset,
- AMD_TRANS_ACTIVE|AMD_TRANS_GOAL);
-
- /*
- * See if we initiated Sync Negotiation
- * and didn't have to fall down to async
- * transfers.
- */
- if (amdsentmsg(amd, MSG_EXT_SDTR, /*full*/TRUE)) {
- /* We started it */
- if (saved_offset != offset) {
- /* Went too low - force async */
- reject = TRUE;
- }
- } else {
- /*
- * Send our own SDTR in reply
- */
- if (bootverbose)
- printf("Sending SDTR!\n");
- amd->msgout_index = 0;
- amd->msgout_len = 0;
- amdconstructsdtr(amd, period, offset);
- amd->msgout_index = 0;
- response = TRUE;
- }
- done = TRUE;
- break;
- }
- case MSG_SAVEDATAPOINTER:
- case MSG_RESTOREPOINTERS:
- /* XXX Implement!!! */
- done = TRUE;
- break;
- default:
- reject = TRUE;
- break;
- }
-
- if (reject) {
- amd->msgout_index = 0;
- amd->msgout_len = 1;
- amd->msgout_buf[0] = MSG_MESSAGE_REJECT;
- done = TRUE;
- response = TRUE;
- }
-
- if (response)
- amd_write8(amd, SCSICMDREG, SET_ATN_CMD);
-
- if (done && !response)
- /* Clear the outgoing message buffer */
- amd->msgout_len = 0;
-
- /* Drop Ack */
- amd_write8(amd, SCSICMDREG, MSG_ACCEPTED_CMD);
-
- return (done);
-}
-
-static u_int
-amdfindclockrate(struct amd_softc *amd, u_int *period)
-{
- u_int i;
- u_int clockrate;
-
- for (i = 0; i < sizeof(tinfo_sync_period); i++) {
- u_int8_t *table_entry;
-
- table_entry = &tinfo_sync_period[i];
- if (*period <= *table_entry) {
- /*
- * When responding to a target that requests
- * sync, the requested rate may fall between
- * two rates that we can output, but still be
- * a rate that we can receive. Because of this,
- * we want to respond to the target with
- * the same rate that it sent to us even
- * if the period we use to send data to it
- * is lower. Only lower the response period
- * if we must.
- */
- if (i == 0) {
- *period = *table_entry;
- }
- break;
- }
- }
-
- if (i == sizeof(tinfo_sync_period)) {
- /* Too slow for us. Use asnyc transfers. */
- *period = 0;
- clockrate = 0;
- } else
- clockrate = i + 4;
-
- return (clockrate);
-}
-
-/*
- * See if we sent a particular extended message to the target.
- * If "full" is true, the target saw the full message.
- * If "full" is false, the target saw at least the first
- * byte of the message.
- */
-static int
-amdsentmsg(struct amd_softc *amd, u_int msgtype, int full)
-{
- int found;
- int index;
-
- found = FALSE;
- index = 0;
-
- while (index < amd->msgout_len) {
- if ((amd->msgout_buf[index] & MSG_IDENTIFYFLAG) != 0
- || amd->msgout_buf[index] == MSG_MESSAGE_REJECT)
- index++;
- else if (amd->msgout_buf[index] >= MSG_SIMPLE_Q_TAG
- && amd->msgout_buf[index] < MSG_IGN_WIDE_RESIDUE) {
- /* Skip tag type and tag id */
- index += 2;
- } else if (amd->msgout_buf[index] == MSG_EXTENDED) {
- /* Found a candidate */
- if (amd->msgout_buf[index+2] == msgtype) {
- u_int end_index;
-
- end_index = index + 1
- + amd->msgout_buf[index + 1];
- if (full) {
- if (amd->msgout_index > end_index)
- found = TRUE;
- } else if (amd->msgout_index > index)
- found = TRUE;
- }
- break;
- } else {
- panic("amdsentmsg: Inconsistent msg buffer");
- }
- }
- return (found);
-}
-
-static void
-amdconstructsdtr(struct amd_softc *amd, u_int period, u_int offset)
-{
- amd->msgout_buf[amd->msgout_index++] = MSG_EXTENDED;
- amd->msgout_buf[amd->msgout_index++] = MSG_EXT_SDTR_LEN;
- amd->msgout_buf[amd->msgout_index++] = MSG_EXT_SDTR;
- amd->msgout_buf[amd->msgout_index++] = period;
- amd->msgout_buf[amd->msgout_index++] = offset;
- amd->msgout_len += 5;
-}
-
-static int
-amdhandlemsgreject(struct amd_softc *amd)
-{
- /*
- * If we had an outstanding SDTR for this
- * target, this is a signal that the target
- * is refusing negotiation. Also watch out
- * for rejected tag messages.
- */
- struct amd_srb *srb;
- struct amd_target_info *targ_info;
- int response = FALSE;
-
- srb = amd->active_srb;
- targ_info = &amd->tinfo[amd->cur_target];
- if (amdsentmsg(amd, MSG_EXT_SDTR, /*full*/FALSE)) {
- /* note asynch xfers and clear flag */
- amdsetsync(amd, amd->cur_target, /*clockrate*/0,
- /*period*/0, /*offset*/0,
- AMD_TRANS_ACTIVE|AMD_TRANS_GOAL);
- printf("amd%d:%d: refuses synchronous negotiation. "
- "Using asynchronous transfers\n",
- amd->unit, amd->cur_target);
- } else if ((srb != NULL)
- && (srb->pccb->ccb_h.flags & CAM_TAG_ACTION_VALID) != 0) {
- struct ccb_trans_settings neg;
- struct ccb_trans_settings_scsi *scsi = &neg.proto_specific.scsi;
-
- printf("amd%d:%d: refuses tagged commands. Performing "
- "non-tagged I/O\n", amd->unit, amd->cur_target);
-
- amdsettags(amd, amd->cur_target, FALSE);
- memset(&neg, 0, sizeof (neg));
- scsi->valid = CTS_SCSI_VALID_TQ;
- xpt_setup_ccb(&neg.ccb_h, srb->pccb->ccb_h.path, /*priority*/1);
- xpt_async(AC_TRANSFER_NEG, srb->pccb->ccb_h.path, &neg);
-
- /*
- * Resend the identify for this CCB as the target
- * may believe that the selection is invalid otherwise.
- */
- if (amd->msgout_len != 0)
- bcopy(&amd->msgout_buf[0], &amd->msgout_buf[1],
- amd->msgout_len);
- amd->msgout_buf[0] = MSG_IDENTIFYFLAG
- | srb->pccb->ccb_h.target_lun;
- amd->msgout_len++;
- if ((targ_info->disc_tag & AMD_CUR_DISCENB) != 0
- && (srb->pccb->ccb_h.flags & CAM_DIS_DISCONNECT) == 0)
- amd->msgout_buf[0] |= MSG_IDENTIFY_DISCFLAG;
-
- srb->pccb->ccb_h.flags &= ~CAM_TAG_ACTION_VALID;
-
- /*
- * Requeue all tagged commands for this target
- * currently in our posession so they can be
- * converted to untagged commands.
- */
- amdcompletematch(amd, amd->cur_target, amd->cur_lun,
- AMD_TAG_WILDCARD, &amd->waiting_srbs,
- CAM_DEV_QFRZN|CAM_REQUEUE_REQ);
- } else {
- /*
- * Otherwise, we ignore it.
- */
- printf("amd%d:%d: Message reject received -- ignored\n",
- amd->unit, amd->cur_target);
- }
- return (response);
-}
-
-#if 0
- if (!(pSRB->SRBState & SRB_MSGIN_MULTI)) {
- if (bval == MSG_DISCONNECT) {
- pSRB->SRBState = SRB_DISCONNECT;
- } else if (bval == MSG_SAVEDATAPOINTER) {
- goto min6;
- } else if ((bval == MSG_EXTENDED)
- || ((bval >= MSG_SIMPLE_Q_TAG)
- && (bval <= MSG_ORDERED_Q_TAG))) {
- pSRB->SRBState |= SRB_MSGIN_MULTI;
- pSRB->MsgInBuf[0] = bval;
- pSRB->MsgCnt = 1;
- pSRB->pMsgPtr = &pSRB->MsgInBuf[1];
- } else if (bval == MSG_MESSAGE_REJECT) {
- amd_write8(amd, SCSICMDREG, RESET_ATN_CMD);
-
- if (pSRB->SRBState & DO_SYNC_NEGO) {
- goto set_async;
- }
- } else if (bval == MSG_RESTOREPOINTERS) {
- goto min6;
- } else {
- goto min6;
- }
- } else { /* minx: */
- *pSRB->pMsgPtr = bval;
- pSRB->MsgCnt++;
- pSRB->pMsgPtr++;
- if ((pSRB->MsgInBuf[0] >= MSG_SIMPLE_Q_TAG)
- && (pSRB->MsgInBuf[0] <= MSG_ORDERED_Q_TAG)) {
- if (pSRB->MsgCnt == 2) {
- pSRB->SRBState = 0;
- pSRB = &amd->SRB_array[pSRB->MsgInBuf[1]];
- if (pSRB->SRBState & SRB_DISCONNECT) == 0) {
- pSRB = amd->pTmpSRB;
- pSRB->SRBState = SRB_UNEXPECT_RESEL;
- pDCB->pActiveSRB = pSRB;
- pSRB->MsgOutBuf[0] = MSG_ABORT_TAG;
- EnableMsgOut2(amd, pSRB);
- } else {
- if (pDCB->DCBFlag & ABORT_DEV_) {
- pSRB->SRBState = SRB_ABORT_SENT;
- EnableMsgOut1(amd, pSRB);
- }
- pDCB->pActiveSRB = pSRB;
- pSRB->SRBState = SRB_DATA_XFER;
- }
- }
- } else if ((pSRB->MsgInBuf[0] == MSG_EXTENDED)
- && (pSRB->MsgCnt == 5)) {
- pSRB->SRBState &= ~(SRB_MSGIN_MULTI + DO_SYNC_NEGO);
- if ((pSRB->MsgInBuf[1] != 3)
- || (pSRB->MsgInBuf[2] != 1)) { /* reject_msg: */
- pSRB->MsgCnt = 1;
- pSRB->MsgInBuf[0] = MSG_MESSAGE_REJECT;
- amd_write8(amd, SCSICMDREG, SET_ATN_CMD);
- } else if (!(pSRB->MsgInBuf[3])
- || !(pSRB->MsgInBuf[4])) {
- set_async: /* set async */
-
- pDCB = pSRB->pSRBDCB;
- /* disable sync & sync nego */
- pDCB->SyncMode &= ~(SYNC_ENABLE|SYNC_NEGO_DONE);
- pDCB->SyncPeriod = 0;
- pDCB->SyncOffset = 0;
-
- pDCB->tinfo.goal.period = 0;
- pDCB->tinfo.goal.offset = 0;
-
- pDCB->tinfo.current.period = 0;
- pDCB->tinfo.current.offset = 0;
- pDCB->tinfo.current.width =
- MSG_EXT_WDTR_BUS_8_BIT;
-
- pDCB->CtrlR3 = FAST_CLK; /* non_fast */
- pDCB->CtrlR4 &= 0x3f;
- pDCB->CtrlR4 |= EATER_25NS;
- goto re_prog;
- } else {/* set sync */
-
- pDCB = pSRB->pSRBDCB;
- /* enable sync & sync nego */
- pDCB->SyncMode |= SYNC_ENABLE|SYNC_NEGO_DONE;
-
- /* set sync offset */
- pDCB->SyncOffset &= 0x0f0;
- pDCB->SyncOffset |= pSRB->MsgInBuf[4];
-
- /* set sync period */
- pDCB->MaxNegoPeriod = pSRB->MsgInBuf[3];
-
- wval = (u_int16_t) pSRB->MsgInBuf[3];
- wval = wval << 2;
- wval--;
- wval1 = wval / 25;
- if ((wval1 * 25) != wval) {
- wval1++;
- }
- bval = FAST_CLK|FAST_SCSI;
- pDCB->CtrlR4 &= 0x3f;
- if (wval1 >= 8) {
- /* Fast SCSI */
- wval1--;
- bval = FAST_CLK;
- pDCB->CtrlR4 |= EATER_25NS;
- }
- pDCB->CtrlR3 = bval;
- pDCB->SyncPeriod = (u_int8_t) wval1;
-
- pDCB->tinfo.goal.period =
- tinfo_sync_period[pDCB->SyncPeriod - 4];
- pDCB->tinfo.goal.offset = pDCB->SyncOffset;
- pDCB->tinfo.current.period =
- tinfo_sync_period[pDCB->SyncPeriod - 4];
- pDCB->tinfo.current.offset = pDCB->SyncOffset;
-
- /*
- * program SCSI control register
- */
- re_prog:
- amd_write8(amd, SYNCPERIOREG, pDCB->SyncPeriod);
- amd_write8(amd, SYNCOFFREG, pDCB->SyncOffset);
- amd_write8(amd, CNTLREG3, pDCB->CtrlR3);
- amd_write8(amd, CNTLREG4, pDCB->CtrlR4);
- }
- }
- }
-min6:
- amd_write8(amd, SCSICMDREG, MSG_ACCEPTED_CMD);
- return (SCSI_NOP0);
-}
-#endif
-
-static u_int
-amd_DataOutPhase1(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- DataIO_Comm(amd, pSRB, WRITE_DIRECTION);
- return (scsistat);
-}
-
-static u_int
-amd_DataInPhase1(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- DataIO_Comm(amd, pSRB, READ_DIRECTION);
- return (scsistat);
-}
-
-static void
-DataIO_Comm(struct amd_softc *amd, struct amd_srb *pSRB, u_int ioDir)
-{
- struct amd_sg * psgl;
- u_int32_t lval;
-
- if (pSRB->SGIndex < pSRB->SGcount) {
- amd_write8(amd, DMA_Cmd, DMA_IDLE_CMD|ioDir);/* |EN_DMA_INT */
-
- if (!pSRB->SGToBeXferLen) {
- psgl = pSRB->pSGlist;
- pSRB->SGPhysAddr = psgl->SGXPtr;
- pSRB->SGToBeXferLen = psgl->SGXLen;
- }
- lval = pSRB->SGToBeXferLen;
- amd_write8(amd, CTCREG_LOW, lval);
- amd_write8(amd, CTCREG_MID, lval >> 8);
- amd_write8(amd, CURTXTCNTREG, lval >> 16);
-
- amd_write32(amd, DMA_XferCnt, pSRB->SGToBeXferLen);
-
- amd_write32(amd, DMA_XferAddr, pSRB->SGPhysAddr);
-
- pSRB->SRBState = SRB_DATA_XFER;
-
- amd_write8(amd, SCSICMDREG, DMA_COMMAND|INFO_XFER_CMD);
-
- amd_write8(amd, DMA_Cmd, DMA_IDLE_CMD|ioDir); /* |EN_DMA_INT */
-
- amd_write8(amd, DMA_Cmd, DMA_START_CMD|ioDir);/* |EN_DMA_INT */
- } else { /* xfer pad */
- if (pSRB->SGcount) {
- pSRB->AdaptStatus = H_OVER_UNDER_RUN;
- pSRB->SRBStatus |= OVER_RUN;
- }
- amd_write8(amd, CTCREG_LOW, 0);
- amd_write8(amd, CTCREG_MID, 0);
- amd_write8(amd, CURTXTCNTREG, 0);
-
- pSRB->SRBState |= SRB_XFERPAD;
- amd_write8(amd, SCSICMDREG, DMA_COMMAND|XFER_PAD_BYTE);
- }
-}
-
-static u_int
-amd_CommandPhase1(struct amd_softc *amd, struct amd_srb *srb, u_int scsistat)
-{
- amd_write8(amd, SCSICMDREG, RESET_ATN_CMD);
- amd_write8(amd, SCSICMDREG, CLEAR_FIFO_CMD);
-
- amdsetupcommand(amd, srb);
-
- srb->SRBState = SRB_COMMAND;
- amd_write8(amd, SCSICMDREG, INFO_XFER_CMD);
- return (scsistat);
-}
-
-static u_int
-amd_StatusPhase1(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- amd_write8(amd, SCSICMDREG, CLEAR_FIFO_CMD);
- pSRB->SRBState = SRB_STATUS;
- amd_write8(amd, SCSICMDREG, INITIATOR_CMD_CMPLTE);
- return (scsistat);
-}
-
-static u_int
-amd_MsgOutPhase1(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- amd_write8(amd, SCSICMDREG, CLEAR_FIFO_CMD);
-
- if (amd->msgout_len == 0) {
- amd->msgout_buf[0] = MSG_NOOP;
- amd->msgout_len = 1;
- }
- amd_write8_multi(amd, SCSIFIFOREG, amd->msgout_buf, amd->msgout_len);
- amd_write8(amd, SCSICMDREG, INFO_XFER_CMD);
- return (scsistat);
-}
-
-static u_int
-amd_MsgInPhase1(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- amd_write8(amd, SCSICMDREG, CLEAR_FIFO_CMD);
- amd_write8(amd, SCSICMDREG, INFO_XFER_CMD);
- return (scsistat);
-}
-
-static u_int
-amd_NopPhase(struct amd_softc *amd, struct amd_srb *pSRB, u_int scsistat)
-{
- return (scsistat);
-}
-
-static void
-amd_Disconnect(struct amd_softc * amd)
-{
- struct amd_srb *srb;
- int target;
- int lun;
-
- srb = amd->active_srb;
- amd->active_srb = NULL;
- amd->last_phase = SCSI_BUS_FREE;
- amd_write8(amd, SCSICMDREG, EN_SEL_RESEL);
- target = amd->cur_target;
- lun = amd->cur_lun;
-
- if (srb == NULL) {
- /* Invalid reselection */
- amdrunwaiting(amd);
- } else if (srb->SRBState & SRB_ABORT_SENT) {
- /* Clean up and done this srb */
-#if 0
- while (( = TAILQ_FIRST(&amd->running_srbs)) != NULL) {
- /* XXX What about "done'ing" these srbs??? */
- if (pSRB->pSRBDCB == pDCB) {
- TAILQ_REMOVE(&amd->running_srbs, pSRB, links);
- TAILQ_INSERT_HEAD(&amd->free_srbs, pSRB, links);
- }
- }
- amdrunwaiting(amd);
-#endif
- } else {
- if ((srb->SRBState & (SRB_START | SRB_MSGOUT))
- || !(srb->SRBState & (SRB_DISCONNECT | SRB_COMPLETED))) {
- srb->TargetStatus = AMD_SCSI_STAT_SEL_TIMEOUT;
- goto disc1;
- } else if (srb->SRBState & SRB_DISCONNECT) {
- if (!(srb->pccb->ccb_h.flags & CAM_TAG_ACTION_VALID))
- amd->untagged_srbs[target][lun] = srb;
- amdrunwaiting(amd);
- } else if (srb->SRBState & SRB_COMPLETED) {
- disc1:
- srb->SRBState = SRB_FREE;
- SRBdone(amd, srb);
- }
- }
- return;
-}
-
-static void
-amd_Reselect(struct amd_softc *amd)
-{
- struct amd_target_info *tinfo;
- u_int16_t disc_count;
-
- amd_clear_msg_state(amd);
- if (amd->active_srb != NULL) {
- /* Requeue the SRB for our attempted Selection */
- TAILQ_REMOVE(&amd->running_srbs, amd->active_srb, links);
- TAILQ_INSERT_HEAD(&amd->waiting_srbs, amd->active_srb, links);
- amd->active_srb = NULL;
- }
- /* get ID */
- amd->cur_target = amd_read8(amd, SCSIFIFOREG);
- amd->cur_target ^= amd->HostID_Bit;
- amd->cur_target = ffs(amd->cur_target) - 1;
- amd->cur_lun = amd_read8(amd, SCSIFIFOREG) & 7;
- tinfo = &amd->tinfo[amd->cur_target];
- amd->active_srb = amd->untagged_srbs[amd->cur_target][amd->cur_lun];
- disc_count = amd->disc_count[amd->cur_target][amd->cur_lun];
- if (disc_count == 0) {
- printf("amd%d: Unexpected reselection for target %d, "
- "Issuing Abort\n", amd->unit, amd->cur_target);
- amd->msgout_buf[0] = MSG_ABORT;
- amd->msgout_len = 1;
- amd_write8(amd, SCSICMDREG, SET_ATN_CMD);
- }
- if (amd->active_srb != NULL) {
- amd->disc_count[amd->cur_target][amd->cur_lun]--;
- amd->untagged_srbs[amd->cur_target][amd->cur_lun] = NULL;
- }
-
- amd_write8(amd, SCSIDESTIDREG, amd->cur_target);
- amd_write8(amd, SYNCPERIOREG, tinfo->sync_period_reg);
- amd_write8(amd, SYNCOFFREG, tinfo->sync_offset_reg);
- amd_write8(amd, CNTLREG1, tinfo->CtrlR1);
- amd_write8(amd, CNTLREG3, tinfo->CtrlR3);
- amd_write8(amd, CNTLREG4, tinfo->CtrlR4);
- amd_write8(amd, SCSICMDREG, MSG_ACCEPTED_CMD);/* drop /ACK */
- amd->last_phase = SCSI_NOP0;
-}
-
-static void
-SRBdone(struct amd_softc *amd, struct amd_srb *pSRB)
-{
- u_int8_t bval, i, status;
- union ccb *pccb;
- struct ccb_scsiio *pcsio;
- int intflag;
- struct amd_sg *ptr2;
- u_int32_t swlval;
-
- pccb = pSRB->pccb;
- pcsio = &pccb->csio;
-
- CAM_DEBUG(pccb->ccb_h.path, CAM_DEBUG_TRACE,
- ("SRBdone - TagNumber %d\n", pSRB->TagNumber));
-
- if ((pccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) {
- bus_dmasync_op_t op;
-
- if ((pccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN)
- op = BUS_DMASYNC_POSTREAD;
- else
- op = BUS_DMASYNC_POSTWRITE;
- bus_dmamap_sync(amd->buffer_dmat, pSRB->dmamap, op);
- bus_dmamap_unload(amd->buffer_dmat, pSRB->dmamap);
- }
-
- status = pSRB->TargetStatus;
- pccb->ccb_h.status = CAM_REQ_CMP;
- if (pSRB->SRBFlag & AUTO_REQSENSE) {
- pSRB->SRBFlag &= ~AUTO_REQSENSE;
- pSRB->AdaptStatus = 0;
- pSRB->TargetStatus = SCSI_STATUS_CHECK_COND;
-
- if (status == SCSI_STATUS_CHECK_COND) {
- pccb->ccb_h.status = CAM_AUTOSENSE_FAIL;
- goto ckc_e;
- }
- *((u_int32_t *)&(pSRB->CmdBlock[0])) = pSRB->Segment0[0];
-
- pcsio->sense_resid = pcsio->sense_len
- - pSRB->TotalXferredLen;
- pSRB->TotalXferredLen = pSRB->Segment1[1];
- if (pSRB->TotalXferredLen) {
- /* ???? */
- pcsio->resid = pcsio->dxfer_len
- - pSRB->TotalXferredLen;
- /* The resid field contains valid data */
- /* Flush resid bytes on complete */
- } else {
- pcsio->scsi_status = SCSI_STATUS_CHECK_COND;
- }
- bzero(&pcsio->sense_data, pcsio->sense_len);
- bcopy(amd_get_sense_buf(amd, pSRB), &pcsio->sense_data,
- pcsio->sense_len);
- pccb->ccb_h.status = CAM_AUTOSNS_VALID;
- goto ckc_e;
- }
- if (status) {
- if (status == SCSI_STATUS_CHECK_COND) {
-
- if ((pSRB->SGIndex < pSRB->SGcount)
- && (pSRB->SGcount) && (pSRB->SGToBeXferLen)) {
- bval = pSRB->SGcount;
- swlval = pSRB->SGToBeXferLen;
- ptr2 = pSRB->pSGlist;
- ptr2++;
- for (i = pSRB->SGIndex + 1; i < bval; i++) {
- swlval += ptr2->SGXLen;
- ptr2++;
- }
- /* ??????? */
- pcsio->resid = (u_int32_t) swlval;
-
-#ifdef AMD_DEBUG0
- printf("XferredLen=%8x,NotYetXferLen=%8x,",
- pSRB->TotalXferredLen, swlval);
-#endif
- }
- if ((pcsio->ccb_h.flags & CAM_DIS_AUTOSENSE) == 0) {
-#ifdef AMD_DEBUG0
- printf("RequestSense..................\n");
-#endif
- RequestSense(amd, pSRB);
- return;
- }
- pcsio->scsi_status = SCSI_STATUS_CHECK_COND;
- pccb->ccb_h.status = CAM_SCSI_STATUS_ERROR;
- goto ckc_e;
- } else if (status == SCSI_STATUS_QUEUE_FULL) {
- pSRB->AdaptStatus = 0;
- pSRB->TargetStatus = 0;
- pcsio->scsi_status = SCSI_STATUS_QUEUE_FULL;
- pccb->ccb_h.status = CAM_SCSI_STATUS_ERROR;
- goto ckc_e;
- } else if (status == AMD_SCSI_STAT_SEL_TIMEOUT) {
- pSRB->AdaptStatus = H_SEL_TIMEOUT;
- pSRB->TargetStatus = 0;
-
- pcsio->scsi_status = AMD_SCSI_STAT_SEL_TIMEOUT;
- pccb->ccb_h.status = CAM_SEL_TIMEOUT;
- } else if (status == SCSI_STATUS_BUSY) {
-#ifdef AMD_DEBUG0
- printf("DC390: target busy at %s %d\n",
- __FILE__, __LINE__);
-#endif
- pcsio->scsi_status = SCSI_STATUS_BUSY;
- pccb->ccb_h.status = CAM_SCSI_BUSY;
- } else if (status == SCSI_STATUS_RESERV_CONFLICT) {
-#ifdef AMD_DEBUG0
- printf("DC390: target reserved at %s %d\n",
- __FILE__, __LINE__);
-#endif
- pcsio->scsi_status = SCSI_STATUS_RESERV_CONFLICT;
- pccb->ccb_h.status = CAM_SCSI_STATUS_ERROR; /* XXX */
- } else {
- pSRB->AdaptStatus = 0;
-#ifdef AMD_DEBUG0
- printf("DC390: driver stuffup at %s %d\n",
- __FILE__, __LINE__);
-#endif
- pccb->ccb_h.status = CAM_SCSI_STATUS_ERROR;
- }
- } else {
- status = pSRB->AdaptStatus;
- if (status & H_OVER_UNDER_RUN) {
- pSRB->TargetStatus = 0;
-
- pccb->ccb_h.status = CAM_DATA_RUN_ERR;
- } else if (pSRB->SRBStatus & PARITY_ERROR) {
-#ifdef AMD_DEBUG0
- printf("DC390: driver stuffup %s %d\n",
- __FILE__, __LINE__);
-#endif
- /* Driver failed to perform operation */
- pccb->ccb_h.status = CAM_UNCOR_PARITY;
- } else { /* No error */
- pSRB->AdaptStatus = 0;
- pSRB->TargetStatus = 0;
- pcsio->resid = 0;
- /* there is no error, (sense is invalid) */
- }
- }
-ckc_e:
- intflag = splcam();
- if ((pccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
- /* CAM request not yet complete =>device_Q frozen */
- xpt_freeze_devq(pccb->ccb_h.path, 1);
- pccb->ccb_h.status |= CAM_DEV_QFRZN;
- }
- TAILQ_REMOVE(&amd->running_srbs, pSRB, links);
- TAILQ_INSERT_HEAD(&amd->free_srbs, pSRB, links);
- amdrunwaiting(amd);
- splx(intflag);
- xpt_done(pccb);
-
-}
-
-static void
-amd_ResetSCSIBus(struct amd_softc * amd)
-{
- int intflag;
-
- intflag = splcam();
- amd->ACBFlag |= RESET_DEV;
- amd_write8(amd, DMA_Cmd, DMA_IDLE_CMD);
- amd_write8(amd, SCSICMDREG, RST_SCSI_BUS_CMD);
- splx(intflag);
- return;
-}
-
-static void
-amd_ScsiRstDetect(struct amd_softc * amd)
-{
- int intflag;
- u_int32_t wlval;
-
-#ifdef AMD_DEBUG0
- printf("amd_ScsiRstDetect \n");
-#endif
-
- wlval = 1000;
- while (--wlval) { /* delay 1 sec */
- DELAY(1000);
- }
- intflag = splcam();
-
- amd_write8(amd, DMA_Cmd, DMA_IDLE_CMD);
- amd_write8(amd, SCSICMDREG, CLEAR_FIFO_CMD);
-
- if (amd->ACBFlag & RESET_DEV) {
- amd->ACBFlag |= RESET_DONE;
- } else {
- amd->ACBFlag |= RESET_DETECT;
- ResetDevParam(amd);
- amdcompletematch(amd, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD,
- AMD_TAG_WILDCARD, &amd->running_srbs,
- CAM_DEV_QFRZN|CAM_SCSI_BUS_RESET);
- amdcompletematch(amd, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD,
- AMD_TAG_WILDCARD, &amd->waiting_srbs,
- CAM_DEV_QFRZN|CAM_SCSI_BUS_RESET);
- amd->active_srb = NULL;
- amd->ACBFlag = 0;
- amdrunwaiting(amd);
- }
- splx(intflag);
- return;
-}
-
-static void
-RequestSense(struct amd_softc *amd, struct amd_srb *pSRB)
-{
- union ccb *pccb;
- struct ccb_scsiio *pcsio;
-
- pccb = pSRB->pccb;
- pcsio = &pccb->csio;
-
- pSRB->SRBFlag |= AUTO_REQSENSE;
- pSRB->Segment0[0] = *((u_int32_t *) & (pSRB->CmdBlock[0]));
- pSRB->Segment0[1] = *((u_int32_t *) & (pSRB->CmdBlock[4]));
- pSRB->Segment1[0] = (pSRB->ScsiCmdLen << 8) + pSRB->SGcount;
- pSRB->Segment1[1] = pSRB->TotalXferredLen;
-
- pSRB->AdaptStatus = 0;
- pSRB->TargetStatus = 0;
-
- pSRB->Segmentx.SGXPtr = amd_get_sense_bufaddr(amd, pSRB);
- pSRB->Segmentx.SGXLen = amd_get_sense_bufsize(amd, pSRB);
-
- pSRB->pSGlist = &pSRB->Segmentx;
- pSRB->SGcount = 1;
- pSRB->SGIndex = 0;
-
- pSRB->CmdBlock[0] = REQUEST_SENSE;
- pSRB->CmdBlock[1] = pSRB->pccb->ccb_h.target_lun << 5;
- pSRB->CmdBlock[2] = 0;
- pSRB->CmdBlock[3] = 0;
- pSRB->CmdBlock[4] = pcsio->sense_len;
- pSRB->CmdBlock[5] = 0;
- pSRB->ScsiCmdLen = 6;
-
- pSRB->TotalXferredLen = 0;
- pSRB->SGToBeXferLen = 0;
- if (amdstart(amd, pSRB) != 0) {
- TAILQ_REMOVE(&amd->running_srbs, pSRB, links);
- TAILQ_INSERT_HEAD(&amd->waiting_srbs, pSRB, links);
- }
-}
-
-static void
-amd_InvalidCmd(struct amd_softc * amd)
-{
- struct amd_srb *srb;
-
- srb = amd->active_srb;
- if (srb->SRBState & (SRB_START|SRB_MSGOUT))
- amd_write8(amd, SCSICMDREG, CLEAR_FIFO_CMD);
-}
-
-void
-amd_linkSRB(struct amd_softc *amd)
-{
- u_int16_t count, i;
- struct amd_srb *psrb;
- int error;
-
- count = amd->SRBCount;
-
- for (i = 0; i < count; i++) {
- psrb = (struct amd_srb *)&amd->SRB_array[i];
- psrb->TagNumber = i;
-
- /*
- * Create the dmamap. This is no longer optional!
- *
- * XXX Since there is no detach method in this driver,
- * this does not get freed!
- */
- if ((error = bus_dmamap_create(amd->buffer_dmat, 0,
- &psrb->dmamap)) != 0) {
- device_printf(amd->dev, "Error %d creating buffer "
- "dmamap!\n", error);
- return;
- }
- TAILQ_INSERT_TAIL(&amd->free_srbs, psrb, links);
- }
-}
-
-static void
-amd_EnDisableCE(struct amd_softc *amd, int mode, int *regval)
-{
- if (mode == ENABLE_CE) {
- *regval = 0xc0;
- } else {
- *regval = 0x80;
- }
- pci_write_config(amd->dev, *regval, 0, /*bytes*/1);
- if (mode == DISABLE_CE) {
- pci_write_config(amd->dev, *regval, 0, /*bytes*/1);
- }
- DELAY(160);
-}
-
-static void
-amd_EEpromOutDI(struct amd_softc *amd, int *regval, int Carry)
-{
- u_int bval;
-
- bval = 0;
- if (Carry) {
- bval = 0x40;
- *regval = 0x80;
- pci_write_config(amd->dev, *regval, bval, /*bytes*/1);
- }
- DELAY(160);
- bval |= 0x80;
- pci_write_config(amd->dev, *regval, bval, /*bytes*/1);
- DELAY(160);
- pci_write_config(amd->dev, *regval, 0, /*bytes*/1);
- DELAY(160);
-}
-
-static int
-amd_EEpromInDO(struct amd_softc *amd)
-{
- pci_write_config(amd->dev, 0x80, 0x80, /*bytes*/1);
- DELAY(160);
- pci_write_config(amd->dev, 0x80, 0x40, /*bytes*/1);
- DELAY(160);
- if (pci_read_config(amd->dev, 0, /*bytes*/1) == 0x22)
- return (1);
- return (0);
-}
-
-static u_int16_t
-EEpromGetData1(struct amd_softc *amd)
-{
- u_int i;
- u_int carryFlag;
- u_int16_t wval;
-
- wval = 0;
- for (i = 0; i < 16; i++) {
- wval <<= 1;
- carryFlag = amd_EEpromInDO(amd);
- wval |= carryFlag;
- }
- return (wval);
-}
-
-static void
-amd_Prepare(struct amd_softc *amd, int *regval, u_int8_t EEpromCmd)
-{
- u_int i, j;
- int carryFlag;
-
- carryFlag = 1;
- j = 0x80;
- for (i = 0; i < 9; i++) {
- amd_EEpromOutDI(amd, regval, carryFlag);
- carryFlag = (EEpromCmd & j) ? 1 : 0;
- j >>= 1;
- }
-}
-
-static void
-amd_ReadEEprom(struct amd_softc *amd)
-{
- int regval;
- u_int i;
- u_int16_t *ptr;
- u_int8_t cmd;
-
- ptr = (u_int16_t *)&amd->eepromBuf[0];
- cmd = EEPROM_READ;
- for (i = 0; i < 0x40; i++) {
- amd_EnDisableCE(amd, ENABLE_CE, &regval);
- amd_Prepare(amd, &regval, cmd);
- *ptr = EEpromGetData1(amd);
- ptr++;
- cmd++;
- amd_EnDisableCE(amd, DISABLE_CE, &regval);
- }
-}
-
-static void
-amd_load_defaults(struct amd_softc *amd)
-{
- int target;
-
- bzero(&amd->eepromBuf, sizeof amd->eepromBuf);
- for (target = 0; target < MAX_SCSI_ID; target++)
- amd->eepromBuf[target << 2] =
- (TAG_QUEUING|EN_DISCONNECT|SYNC_NEGO|PARITY_CHK);
- amd->eepromBuf[EE_ADAPT_SCSI_ID] = 7;
- amd->eepromBuf[EE_MODE2] = ACTIVE_NEGATION|LUN_CHECK|GREATER_1G;
- amd->eepromBuf[EE_TAG_CMD_NUM] = 4;
-}
-
-static void
-amd_load_eeprom_or_defaults(struct amd_softc *amd)
-{
- u_int16_t wval, *ptr;
- u_int8_t i;
-
- amd_ReadEEprom(amd);
- wval = 0;
- ptr = (u_int16_t *) & amd->eepromBuf[0];
- for (i = 0; i < EE_DATA_SIZE; i += 2, ptr++)
- wval += *ptr;
-
- if (wval != EE_CHECKSUM) {
- if (bootverbose)
- printf("amd%d: SEEPROM data unavailable. "
- "Using default device parameters.\n",
- amd->unit);
- amd_load_defaults(amd);
- }
-}
-
-/*
- **********************************************************************
- * Function : static int amd_init (struct Scsi_Host *host)
- * Purpose : initialize the internal structures for a given SCSI host
- * Inputs : host - pointer to this host adapter's structure/
- **********************************************************************
- */
-static int
-amd_init(device_t dev)
-{
- struct amd_softc *amd = device_get_softc(dev);
- struct resource *iores;
- int i, rid;
- u_int bval;
-
- rid = PCI_BASE_ADDR0;
- iores = bus_alloc_resource_any(dev, SYS_RES_IOPORT, &rid, RF_ACTIVE);
- if (iores == NULL) {
- if (bootverbose)
- printf("amd_init: bus_alloc_resource failure!\n");
- return ENXIO;
- }
- amd->tag = rman_get_bustag(iores);
- amd->bsh = rman_get_bushandle(iores);
-
- /* DMA tag for mapping buffers into device visible space. */
- if (bus_dma_tag_create(/*parent_dmat*/NULL, /*alignment*/1,
- /*boundary*/0,
- /*lowaddr*/BUS_SPACE_MAXADDR_32BIT,
- /*highaddr*/BUS_SPACE_MAXADDR,
- /*filter*/NULL, /*filterarg*/NULL,
- /*maxsize*/MAXBSIZE, /*nsegments*/AMD_NSEG,
- /*maxsegsz*/AMD_MAXTRANSFER_SIZE,
- /*flags*/BUS_DMA_ALLOCNOW,
- /*lockfunc*/busdma_lock_mutex,
- /*lockarg*/&Giant,
- &amd->buffer_dmat) != 0) {
- if (bootverbose)
- printf("amd_init: bus_dma_tag_create failure!\n");
- return ENXIO;
- }
-
- /* Create, allocate, and map DMA buffers for autosense data */
- if (bus_dma_tag_create(/*parent_dmat*/NULL, /*alignment*/1,
- /*boundary*/0,
- /*lowaddr*/BUS_SPACE_MAXADDR_32BIT,
- /*highaddr*/BUS_SPACE_MAXADDR,
- /*filter*/NULL, /*filterarg*/NULL,
- sizeof(struct scsi_sense_data) * MAX_SRB_CNT,
- /*nsegments*/1,
- /*maxsegsz*/AMD_MAXTRANSFER_SIZE,
- /*flags*/0,
- /*lockfunc*/busdma_lock_mutex,
- /*lockarg*/&Giant, &amd->sense_dmat) != 0) {
- if (bootverbose)
- device_printf(dev, "cannot create sense buffer dmat\n");
- return (ENXIO);
- }
-
- if (bus_dmamem_alloc(amd->sense_dmat, (void **)&amd->sense_buffers,
- BUS_DMA_NOWAIT, &amd->sense_dmamap) != 0)
- return (ENOMEM);
-
- bus_dmamap_load(amd->sense_dmat, amd->sense_dmamap,
- amd->sense_buffers,
- sizeof(struct scsi_sense_data) * MAX_SRB_CNT,
- amd_dmamap_cb, &amd->sense_busaddr, /*flags*/0);
-
- TAILQ_INIT(&amd->free_srbs);
- TAILQ_INIT(&amd->running_srbs);
- TAILQ_INIT(&amd->waiting_srbs);
- amd->last_phase = SCSI_BUS_FREE;
- amd->dev = dev;
- amd->unit = device_get_unit(dev);
- amd->SRBCount = MAX_SRB_CNT;
- amd->status = 0;
- amd_load_eeprom_or_defaults(amd);
- amd->max_id = 7;
- if (amd->eepromBuf[EE_MODE2] & LUN_CHECK) {
- amd->max_lun = 7;
- } else {
- amd->max_lun = 0;
- }
- amd->AdaptSCSIID = amd->eepromBuf[EE_ADAPT_SCSI_ID];
- amd->HostID_Bit = (1 << amd->AdaptSCSIID);
- amd->AdaptSCSILUN = 0;
- /* (eepromBuf[EE_TAG_CMD_NUM]) << 2; */
- amd->ACBFlag = 0;
- amd->Gmode2 = amd->eepromBuf[EE_MODE2];
- amd_linkSRB(amd);
- for (i = 0; i <= amd->max_id; i++) {
-
- if (amd->AdaptSCSIID != i) {
- struct amd_target_info *tinfo;
- PEEprom prom;
-
- tinfo = &amd->tinfo[i];
- prom = (PEEprom)&amd->eepromBuf[i << 2];
- if ((prom->EE_MODE1 & EN_DISCONNECT) != 0) {
- tinfo->disc_tag |= AMD_USR_DISCENB;
- if ((prom->EE_MODE1 & TAG_QUEUING) != 0)
- tinfo->disc_tag |= AMD_USR_TAGENB;
- }
- if ((prom->EE_MODE1 & SYNC_NEGO) != 0) {
- tinfo->user.period =
- eeprom_period[prom->EE_SPEED];
- tinfo->user.offset = AMD_MAX_SYNC_OFFSET;
- }
- tinfo->CtrlR1 = amd->AdaptSCSIID;
- if ((prom->EE_MODE1 & PARITY_CHK) != 0)
- tinfo->CtrlR1 |= PARITY_ERR_REPO;
- tinfo->CtrlR3 = FAST_CLK;
- tinfo->CtrlR4 = EATER_25NS;
- if ((amd->eepromBuf[EE_MODE2] & ACTIVE_NEGATION) != 0)
- tinfo->CtrlR4 |= NEGATE_REQACKDATA;
- }
- }
- amd_write8(amd, SCSITIMEOUTREG, 153); /* 250ms selection timeout */
- /* Conversion factor = 0 , 40MHz clock */
- amd_write8(amd, CLKFACTREG, CLK_FREQ_40MHZ);
- /* NOP cmd - clear command register */
- amd_write8(amd, SCSICMDREG, NOP_CMD);
- amd_write8(amd, CNTLREG2, EN_FEATURE|EN_SCSI2_CMD);
- amd_write8(amd, CNTLREG3, FAST_CLK);
- bval = EATER_25NS;
- if (amd->eepromBuf[EE_MODE2] & ACTIVE_NEGATION) {
- bval |= NEGATE_REQACKDATA;
- }
- amd_write8(amd, CNTLREG4, bval);
-
- /* Disable SCSI bus reset interrupt */
- amd_write8(amd, CNTLREG1, DIS_INT_ON_SCSI_RST);
-
- return 0;
-}
-
-/*
- * attach and init a host adapter
- */
-static int
-amd_attach(device_t dev)
-{
- struct cam_devq *devq; /* Device Queue to use for this SIM */
- u_int8_t intstat;
- struct amd_softc *amd = device_get_softc(dev);
- int unit = device_get_unit(dev);
- int rid;
- void *ih;
- struct resource *irqres;
-
- if (amd_init(dev)) {
- if (bootverbose)
- printf("amd_attach: amd_init failure!\n");
- return ENXIO;
- }
-
- /* Reset Pending INT */
- intstat = amd_read8(amd, INTSTATREG);
-
- /* After setting up the adapter, map our interrupt */
- rid = 0;
- irqres = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
- RF_SHAREABLE | RF_ACTIVE);
- if (irqres == NULL ||
- bus_setup_intr(dev, irqres, INTR_TYPE_CAM | INTR_ENTROPY,
- NULL, amd_intr, amd, &ih)) {
- if (bootverbose)
- printf("amd%d: unable to register interrupt handler!\n",
- unit);
- return ENXIO;
- }
-
- /*
- * Now let the CAM generic SCSI layer find the SCSI devices on
- * the bus * start queue to reset to the idle loop. *
- * Create device queue of SIM(s) * (MAX_START_JOB - 1) :
- * max_sim_transactions
- */
- devq = cam_simq_alloc(MAX_START_JOB);
- if (devq == NULL) {
- if (bootverbose)
- printf("amd_attach: cam_simq_alloc failure!\n");
- return ENXIO;
- }
-
- amd->psim = cam_sim_alloc(amd_action, amd_poll, "amd",
- amd, amd->unit, &Giant,
- 1, MAX_TAGS_CMD_QUEUE, devq);
- if (amd->psim == NULL) {
- cam_simq_free(devq);
- if (bootverbose)
- printf("amd_attach: cam_sim_alloc failure!\n");
- return ENXIO;
- }
-
- if (xpt_bus_register(amd->psim, dev, 0) != CAM_SUCCESS) {
- cam_sim_free(amd->psim, /*free_devq*/TRUE);
- if (bootverbose)
- printf("amd_attach: xpt_bus_register failure!\n");
- return ENXIO;
- }
-
- if (xpt_create_path(&amd->ppath, /* periph */ NULL,
- cam_sim_path(amd->psim), CAM_TARGET_WILDCARD,
- CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
- xpt_bus_deregister(cam_sim_path(amd->psim));
- cam_sim_free(amd->psim, /* free_simq */ TRUE);
- if (bootverbose)
- printf("amd_attach: xpt_create_path failure!\n");
- return ENXIO;
- }
-
- return 0;
-}
-
-static int
-amd_probe(device_t dev)
-{
- if (pci_get_devid(dev) == PCI_DEVICE_ID_AMD53C974) {
- device_set_desc(dev,
- "Tekram DC390(T)/AMD53c974 SCSI Host Adapter");
- return BUS_PROBE_DEFAULT;
- }
- return ENXIO;
-}
-
-static device_method_t amd_methods[] = {
- /* Device interface */
- DEVMETHOD(device_probe, amd_probe),
- DEVMETHOD(device_attach, amd_attach),
- { 0, 0 }
-};
-
-static driver_t amd_driver = {
- "amd", amd_methods, sizeof(struct amd_softc)
-};
-
-static devclass_t amd_devclass;
-DRIVER_MODULE(amd, pci, amd_driver, amd_devclass, 0, 0);
-MODULE_DEPEND(amd, pci, 1, 1, 1);
-MODULE_DEPEND(amd, cam, 1, 1, 1);
diff --git a/sys/dev/amd/amd.h b/sys/dev/amd/amd.h
deleted file mode 100644
index c671f22..0000000
--- a/sys/dev/amd/amd.h
+++ /dev/null
@@ -1,585 +0,0 @@
-/*-
- *********************************************************************
- * FILE NAME : amd.h
- * BY : C.L. Huang (ching@tekram.com.tw)
- * Erich Chen (erich@tekram.com.tw)
- * Description: Device Driver for the amd53c974 PCI Bus Master
- * SCSI Host adapter found on cards such as
- * the Tekram DC-390(T).
- * (C)Copyright 1995-1999 Tekram Technology Co., Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *********************************************************************
- * $FreeBSD$
- */
-
-#ifndef AMD_H
-#define AMD_H
-
-#define AMD_TRANS_CUR 0x01 /* Modify current neogtiation status */
-#define AMD_TRANS_ACTIVE 0x03 /* Assume this is the active target */
-#define AMD_TRANS_GOAL 0x04 /* Modify negotiation goal */
-#define AMD_TRANS_USER 0x08 /* Modify user negotiation settings */
-
-/*
- * Per target transfer parameters.
- */
-struct amd_transinfo {
- u_int8_t period;
- u_int8_t offset;
-};
-
-struct amd_target_info {
- /*
- * Records the currently active and user/default settings for
- * tagged queueing and disconnection for each target.
- */
- u_int8_t disc_tag;
-#define AMD_CUR_DISCENB 0x01
-#define AMD_CUR_TAGENB 0x02
-#define AMD_USR_DISCENB 0x04
-#define AMD_USR_TAGENB 0x08
- u_int8_t CtrlR1;
- u_int8_t CtrlR3;
- u_int8_t CtrlR4;
- u_int8_t sync_period_reg;
- u_int8_t sync_offset_reg;
-
- /*
- * Currently active transfer settings.
- */
- struct amd_transinfo current;
- /*
- * Transfer settings we wish to achieve
- * through negotiation.
- */
- struct amd_transinfo goal;
- /*
- * User defined or default transfer settings.
- */
- struct amd_transinfo user;
-};
-
-/*
- * Scatter/Gather Segment entry.
- */
-struct amd_sg {
- u_int32_t SGXLen;
- u_int32_t SGXPtr;
-};
-
-/*
- * Chipset feature limits
- */
-#define MAX_SCSI_ID 8
-#define AMD_MAX_SYNC_OFFSET 15
-#define AMD_TARGET_MAX 7
-#define AMD_LUN_MAX 7
-#define AMD_MAXPHYS (128 * 1024) /* legacy MAXPHYS */
-#define AMD_NSEG (btoc(AMD_MAXPHYS) + 1)
-#define AMD_MAXTRANSFER_SIZE 0xFFFFFF /* restricted by 24 bit counter */
-#define MAX_DEVICES 10
-#define MAX_TAGS_CMD_QUEUE 256
-#define MAX_CMD_PER_LUN 6
-#define MAX_SRB_CNT 256
-#define MAX_START_JOB 256
-
-/*
- * BIT position to integer mapping.
- */
-#define BIT(N) (0x01 << N)
-
-/*
- * EEPROM storage offsets and data structures.
- */
-typedef struct _EEprom {
- u_int8_t EE_MODE1;
- u_int8_t EE_SPEED;
- u_int8_t xx1;
- u_int8_t xx2;
-} EEprom, *PEEprom;
-
-#define EE_ADAPT_SCSI_ID 64
-#define EE_MODE2 65
-#define EE_DELAY 66
-#define EE_TAG_CMD_NUM 67
-#define EE_DATA_SIZE 128
-#define EE_CHECKSUM 0x1234
-
-/*
- * EE_MODE1 bits definition
- */
-#define PARITY_CHK BIT(0)
-#define SYNC_NEGO BIT(1)
-#define EN_DISCONNECT BIT(2)
-#define SEND_START BIT(3)
-#define TAG_QUEUING BIT(4)
-
-/*
- * EE_MODE2 bits definition
- */
-#define MORE2_DRV BIT(0)
-#define GREATER_1G BIT(1)
-#define RST_SCSI_BUS BIT(2)
-#define ACTIVE_NEGATION BIT(3)
-#define NO_SEEK BIT(4)
-#define LUN_CHECK BIT(5)
-
-#define ENABLE_CE 1
-#define DISABLE_CE 0
-#define EEPROM_READ 0x80
-
-#define AMD_TAG_WILDCARD ((u_int)(~0))
-
-/*
- * SCSI Request Block
- */
-struct amd_srb {
- TAILQ_ENTRY(amd_srb) links;
- u_int8_t CmdBlock[12];
- union ccb *pccb;
- bus_dmamap_t dmamap;
- struct amd_sg *pSGlist;
-
- u_int32_t TotalXferredLen;
- u_int32_t SGPhysAddr; /* a segment starting address */
- u_int32_t SGToBeXferLen; /* to be xfer length */
- u_int32_t Segment0[2];
- u_int32_t Segment1[2];
-
- struct amd_sg SGsegment[AMD_NSEG];
- struct amd_sg Segmentx;/* a one entry of S/G list table */
- u_int8_t *pMsgPtr;
- u_int16_t SRBState;
-
- u_int8_t AdaptStatus;
- u_int8_t TargetStatus;
- u_int8_t MsgCnt;
- u_int8_t EndMessage;
- u_int8_t TagNumber;
- u_int8_t SGcount;
- u_int8_t SGIndex;
- u_int8_t IORBFlag; /* ;81h-Reset, 2-retry */
-
- u_int8_t SRBStatus;
- u_int8_t SRBFlag;
- /* ; b0-AutoReqSense,b6-Read,b7-write */
- /* ; b4-settimeout,b5-Residual valid */
- u_int8_t ScsiCmdLen;
-};
-
-TAILQ_HEAD(srb_queue, amd_srb);
-
-/*
- * Per-adapter, software configuration.
- */
-struct amd_softc {
- device_t dev;
- bus_space_tag_t tag;
- bus_space_handle_t bsh;
- bus_dma_tag_t buffer_dmat; /* dmat for buffer I/O */
- bus_dma_tag_t sense_dmat; /* dmat for sense buffer */
- bus_dmamap_t sense_dmamap;
- struct scsi_sense_data *sense_buffers;
- bus_addr_t sense_busaddr;
- int unit;
-
- int last_phase;
- int cur_target;
- int cur_lun;
- struct amd_srb *active_srb;
- struct amd_srb *untagged_srbs[AMD_TARGET_MAX+1][AMD_LUN_MAX+1];
- struct amd_target_info tinfo[AMD_TARGET_MAX+1];
- u_int16_t disc_count[AMD_TARGET_MAX+1][AMD_LUN_MAX+1];
-
- struct srb_queue free_srbs;
- struct srb_queue waiting_srbs;
- struct srb_queue running_srbs;
-
- struct amd_srb *pTmpSRB;
-
- u_int16_t SRBCount;
-
- u_int16_t max_id;
- u_int16_t max_lun;
-
- /* Hooks into the CAM XPT */
- struct cam_sim *psim;
- struct cam_path *ppath;
-
- u_int8_t msgin_buf[6];
- u_int8_t msgout_buf[6];
- u_int msgin_index;
- u_int msgout_index;
- u_int msgout_len;
-
- u_int8_t status;
- u_int8_t AdaptSCSIID; /* ; Adapter SCSI Target ID */
- u_int8_t AdaptSCSILUN; /* ; Adapter SCSI LUN */
-
- u_int8_t ACBFlag;
-
- u_int8_t Gmode2;
-
- u_int8_t HostID_Bit;
-
- u_int8_t InitDCB_flag[8][8]; /* flag of initDCB for device */
- struct amd_srb SRB_array[MAX_SRB_CNT]; /* +45Ch, Len= */
- struct amd_srb TmpSRB;
- /* Setup data stored in an 93c46 serial eeprom */
- u_int8_t eepromBuf[EE_DATA_SIZE];
-};
-
-/*
- * ----SRB State machine definition
- */
-#define SRB_FREE 0
-#define SRB_READY BIT(1)
-#define SRB_MSGOUT BIT(2) /* ;arbitration+msg_out 1st byte */
-#define SRB_MSGIN BIT(3)
-#define SRB_MSGIN_MULTI BIT(4)
-#define SRB_COMMAND BIT(5)
-#define SRB_START BIT(6) /* ;arbitration+msg_out+command_out */
-#define SRB_DISCONNECT BIT(7)
-#define SRB_DATA_XFER BIT(8)
-#define SRB_XFERPAD BIT(9)
-#define SRB_STATUS BIT(10)
-#define SRB_COMPLETED BIT(11)
-#define SRB_ABORT_SENT BIT(12)
-#define DO_SYNC_NEGO BIT(13)
-#define SRB_UNEXPECT_RESEL BIT(14)
-
-/*
- * ---ACB Flag
- */
-#define RESET_DEV BIT(0)
-#define RESET_DETECT BIT(1)
-#define RESET_DONE BIT(2)
-
-/*
- * ---DCB Flag
- */
-#define ABORT_DEV_ BIT(0)
-
-/*
- * ---SRB status
- */
-#define SRB_OK BIT(0)
-#define ABORTION BIT(1)
-#define OVER_RUN BIT(2)
-#define UNDER_RUN BIT(3)
-#define PARITY_ERROR BIT(4)
-#define SRB_ERROR BIT(5)
-
-/*
- * ---SRB Flags
- */
-#define DATAOUT BIT(7)
-#define DATAIN BIT(6)
-#define RESIDUAL_VALID BIT(5)
-#define ENABLE_TIMER BIT(4)
-#define RESET_DEV0 BIT(2)
-#define ABORT_DEV BIT(1)
-#define AUTO_REQSENSE BIT(0)
-
-/*
- * ---Adapter status
- */
-#define H_STATUS_GOOD 0
-#define H_SEL_TIMEOUT 0x11
-#define H_OVER_UNDER_RUN 0x12
-#define H_UNEXP_BUS_FREE 0x13
-#define H_TARGET_PHASE_F 0x14
-#define H_INVALID_CCB_OP 0x16
-#define H_LINK_CCB_BAD 0x17
-#define H_BAD_TARGET_DIR 0x18
-#define H_DUPLICATE_CCB 0x19
-#define H_BAD_CCB_OR_SG 0x1A
-#define H_ABORT 0x0FF
-
-/*
- * AMD specific "status" codes returned in the SCSI status byte.
- */
-#define AMD_SCSI_STAT_UNEXP_BUS_F 0xFD /* ; Unexpect Bus Free */
-#define AMD_SCSI_STAT_BUS_RST_DETECT 0xFE /* ; Scsi Bus Reset detected */
-#define AMD_SCSI_STAT_SEL_TIMEOUT 0xFF /* ; Selection Time out */
-
-/*
- * ---Sync_Mode
- */
-#define SYNC_DISABLE 0
-#define SYNC_ENABLE BIT(0)
-#define SYNC_NEGO_DONE BIT(1)
-#define WIDE_ENABLE BIT(2)
-#define WIDE_NEGO_DONE BIT(3)
-#define EN_TAG_QUEUING BIT(4)
-#define EN_ATN_STOP BIT(5)
-
-#define SYNC_NEGO_OFFSET 15
-
-/*
- * ---SCSI bus phase
- */
-#define SCSI_DATA_OUT 0
-#define SCSI_DATA_IN 1
-#define SCSI_COMMAND 2
-#define SCSI_STATUS 3
-#define SCSI_NOP0 4
-#define SCSI_ARBITRATING 5
-#define SCSI_MSG_OUT 6
-#define SCSI_MSG_IN 7
-#define SCSI_BUS_FREE 8
-
-/*
- *==========================================================
- * AMD 53C974 Registers bit Definition
- *==========================================================
- */
-
-/*
- * ------SCSI Register-------
- * Command Reg.(+0CH)
- */
-#define DMA_COMMAND BIT(7)
-#define NOP_CMD 0
-#define CLEAR_FIFO_CMD 1
-#define RST_DEVICE_CMD 2
-#define RST_SCSI_BUS_CMD 3
-#define INFO_XFER_CMD 0x10
-#define INITIATOR_CMD_CMPLTE 0x11
-#define MSG_ACCEPTED_CMD 0x12
-#define XFER_PAD_BYTE 0x18
-#define SET_ATN_CMD 0x1A
-#define RESET_ATN_CMD 0x1B
-#define SEL_W_ATN 0x42
-#define SEL_W_ATN_STOP 0x43
-#define EN_SEL_RESEL 0x44
-#define SEL_W_ATN2 0x46
-#define DATA_XFER_CMD INFO_XFER_CMD
-
-
-/*
- * ------SCSI Register-------
- * SCSI Status Reg.(+10H)
- */
-#define INTERRUPT BIT(7)
-#define ILLEGAL_OP_ERR BIT(6)
-#define PARITY_ERR BIT(5)
-#define COUNT_2_ZERO BIT(4)
-#define GROUP_CODE_VALID BIT(3)
-#define SCSI_PHASE_MASK (BIT(2)+BIT(1)+BIT(0))
-
-/*
- * ------SCSI Register-------
- * Interrupt Status Reg.(+14H)
- */
-#define SCSI_RESET_ BIT(7)
-#define INVALID_CMD BIT(6)
-#define DISCONNECTED BIT(5)
-#define SERVICE_REQUEST BIT(4)
-#define SUCCESSFUL_OP BIT(3)
-#define RESELECTED BIT(2)
-#define SEL_ATTENTION BIT(1)
-#define SELECTED BIT(0)
-
-/*
- * ------SCSI Register-------
- * Internal State Reg.(+18H)
- */
-#define SYNC_OFFSET_FLAG BIT(3)
-#define INTRN_STATE_MASK (BIT(2)+BIT(1)+BIT(0))
-
-/*
- * ------SCSI Register-------
- * Clock Factor Reg.(+24H)
- */
-#define CLK_FREQ_40MHZ 0
-#define CLK_FREQ_35MHZ (BIT(2)+BIT(1)+BIT(0))
-#define CLK_FREQ_30MHZ (BIT(2)+BIT(1))
-#define CLK_FREQ_25MHZ (BIT(2)+BIT(0))
-#define CLK_FREQ_20MHZ BIT(2)
-#define CLK_FREQ_15MHZ (BIT(1)+BIT(0))
-#define CLK_FREQ_10MHZ BIT(1)
-
-/*
- * ------SCSI Register-------
- * Control Reg. 1(+20H)
- */
-#define EXTENDED_TIMING BIT(7)
-#define DIS_INT_ON_SCSI_RST BIT(6)
-#define PARITY_ERR_REPO BIT(4)
-#define SCSI_ID_ON_BUS (BIT(2)+BIT(1)+BIT(0))
-
-/*
- * ------SCSI Register-------
- * Control Reg. 2(+2CH)
- */
-#define EN_FEATURE BIT(6)
-#define EN_SCSI2_CMD BIT(3)
-
-/*
- * ------SCSI Register-------
- * Control Reg. 3(+30H)
- */
-#define ID_MSG_CHECK BIT(7)
-#define EN_QTAG_MSG BIT(6)
-#define EN_GRP2_CMD BIT(5)
-#define FAST_SCSI BIT(4) /* ;10MB/SEC */
-#define FAST_CLK BIT(3) /* ;25 - 40 MHZ */
-
-/*
- * ------SCSI Register-------
- * Control Reg. 4(+34H)
- */
-#define EATER_12NS 0
-#define EATER_25NS BIT(7)
-#define EATER_35NS BIT(6)
-#define EATER_0NS (BIT(7)+BIT(6))
-#define NEGATE_REQACKDATA BIT(2)
-#define NEGATE_REQACK BIT(3)
-
-/*
- *========================================
- * DMA Register
- *========================================
- */
-
-/*
- * -------DMA Register--------
- * DMA Command Reg.(+40H)
- */
-#define READ_DIRECTION BIT(7)
-#define WRITE_DIRECTION 0
-#define EN_DMA_INT BIT(6)
-#define MAP_TO_MDL BIT(5)
-#define DMA_DIAGNOSTIC BIT(4)
-#define DMA_IDLE_CMD 0
-#define DMA_BLAST_CMD BIT(0)
-#define DMA_ABORT_CMD BIT(1)
-#define DMA_START_CMD (BIT(1)|BIT(0))
-
-/*
- * -------DMA Register--------
- * DMA Status Reg.(+54H)
- */
-#define PCI_MS_ABORT BIT(6)
-#define BLAST_COMPLETE BIT(5)
-#define SCSI_INTERRUPT BIT(4)
-#define DMA_XFER_DONE BIT(3)
-#define DMA_XFER_ABORT BIT(2)
-#define DMA_XFER_ERROR BIT(1)
-#define POWER_DOWN BIT(0)
-
-/*
- * -------DMA Register--------
- * DMA SCSI Bus and Ctrl.(+70H)
- * EN_INT_ON_PCI_ABORT
- */
-
-/*
- *==========================================================
- * SCSI Chip register address offset
- *==========================================================
- */
-#define CTCREG_LOW 0x00 /* (R) current transfer count register low */
-#define STCREG_LOW 0x00 /* (W) start transfer count register low */
-
-#define CTCREG_MID 0x04 /* (R) current transfer count register
- * middle */
-#define STCREG_MID 0x04 /* (W) start transfer count register middle */
-
-#define SCSIFIFOREG 0x08 /* (R/W) SCSI FIFO register */
-
-#define SCSICMDREG 0x0C /* (R/W) SCSI command register */
-
-#define SCSISTATREG 0x10 /* (R) SCSI status register */
-#define SCSIDESTIDREG 0x10 /* (W) SCSI destination ID register */
-
-#define INTSTATREG 0x14 /* (R) interrupt status register */
-#define SCSITIMEOUTREG 0x14 /* (W) SCSI timeout register */
-
-
-#define INTERNSTATREG 0x18 /* (R) internal state register */
-#define SYNCPERIOREG 0x18 /* (W) synchronous transfer period register */
-
-#define CURRENTFIFOREG 0x1C /* (R) current FIFO/internal state register */
-#define SYNCOFFREG 0x1C/* (W) synchronous transfer period register */
-
-#define CNTLREG1 0x20 /* (R/W) control register 1 */
-#define CLKFACTREG 0x24 /* (W) clock factor register */
-#define CNTLREG2 0x2C /* (R/W) control register 2 */
-#define CNTLREG3 0x30 /* (R/W) control register 3 */
-#define CNTLREG4 0x34 /* (R/W) control register 4 */
-
-#define CURTXTCNTREG 0x38 /* (R) current transfer count register
- * high/part-unique ID code */
-#define STCREG_HIGH 0x38 /* (W) Start current transfer count register
- * high */
-
-/*
- *********************************************************
- *
- * SCSI DMA register
- *
- *********************************************************
- */
-#define DMA_Cmd 0x40 /* (R/W) command register */
-#define DMA_XferCnt 0x44 /* (R/W) starting transfer count */
-#define DMA_XferAddr 0x48 /* (R/W) starting Physical address */
-#define DMA_Wk_ByteCntr 0x4C /* ( R ) working byte counter */
-#define DMA_Wk_AddrCntr 0x50 /* ( R ) working address counter */
-#define DMA_Status 0x54 /* ( R ) status register */
-#define DMA_MDL_Addr 0x58 /* (R/W) starting memory descriptor list (MDL)
- * address */
-#define DMA_Wk_MDL_Cntr 0x5C /* ( R ) working MDL counter */
-#define DMA_ScsiBusCtrl 0x70 /* (bits R/W) SCSI BUS and control */
-
-/* ******************************************************* */
-#define am_target SCSISTATREG
-#define am_timeout INTSTATREG
-#define am_seq_step SYNCPERIOREG
-#define am_fifo_count SYNCOFFREG
-
-
-#define amd_read8(amd, port) \
- bus_space_read_1((amd)->tag, (amd)->bsh, port)
-
-#define amd_read16(amd, port) \
- bus_space_read_2((amd)->tag, (amd)->bsh, port)
-
-#define amd_read32(amd, port) \
- bus_space_read_4((amd)->tag, (amd)->bsh, port)
-
-#define amd_write8(amd, port, value) \
- bus_space_write_1((amd)->tag, (amd)->bsh, port, value)
-
-#define amd_write8_multi(amd, port, ptr, len) \
- bus_space_write_multi_1((amd)->tag, (amd)->bsh, port, ptr, len)
-
-#define amd_write16(amd, port, value) \
- bus_space_write_2((amd)->tag, (amd)->bsh, port, value)
-
-#define amd_write32(amd, port, value) \
- bus_space_write_4((amd)->tag, (amd)->bsh, port, value)
-
-#endif /* AMD_H */
diff --git a/sys/dev/amr/amr_pci.c b/sys/dev/amr/amr_pci.c
index d72a129..b10c65f 100644
--- a/sys/dev/amr/amr_pci.c
+++ b/sys/dev/amr/amr_pci.c
@@ -106,9 +106,7 @@ static device_method_t amr_methods[] = {
DEVMETHOD(device_suspend, amr_pci_suspend),
DEVMETHOD(device_resume, amr_pci_resume),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t amr_pci_driver = {
diff --git a/sys/dev/an/if_an.c b/sys/dev/an/if_an.c
index f52f292..aa7c918 100644
--- a/sys/dev/an/if_an.c
+++ b/sys/dev/an/if_an.c
@@ -797,7 +797,7 @@ an_attach(struct an_softc *sc, int flags)
ADD(IFM_AUTO, IFM_IEEE80211_ADHOC);
for (i = 0; i < nrate; i++) {
r = sc->an_caps.an_rates[i];
- mword = ieee80211_rate2media(NULL, r, IEEE80211_T_DS);
+ mword = ieee80211_rate2media(NULL, r, IEEE80211_MODE_AUTO);
if (mword == 0)
continue;
printf("%s%d%sMbps", (i != 0 ? " " : ""),
@@ -3299,7 +3299,7 @@ an_media_status(struct ifnet *ifp, struct ifmediareq *imr)
if (sc->an_config.an_opmode == AN_OPMODE_IBSS_ADHOC)
imr->ifm_active |= IFM_IEEE80211_ADHOC;
imr->ifm_active |= ieee80211_rate2media(NULL,
- status.an_current_tx_rate, IEEE80211_T_DS);
+ status.an_current_tx_rate, IEEE80211_MODE_AUTO);
imr->ifm_status = IFM_AVALID;
if (status.an_opmode & AN_STATUS_OPMODE_ASSOCIATED)
imr->ifm_status |= IFM_ACTIVE;
diff --git a/sys/dev/arcmsr/arcmsr.c b/sys/dev/arcmsr/arcmsr.c
index 10bb504..9fde306 100644
--- a/sys/dev/arcmsr/arcmsr.c
+++ b/sys/dev/arcmsr/arcmsr.c
@@ -70,8 +70,11 @@
** 1.20.00.21 03/03/2011 Ching Huang if a command timeout, then wait its ccb back before free it
** 1.20.00.22 07/04/2011 Ching Huang Fixed multiple MTX panic
******************************************************************************************
-* $FreeBSD$
*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#if 0
#define ARCMSR_DEBUG1 1
#endif
@@ -223,9 +226,8 @@ static device_method_t arcmsr_methods[]={
DEVMETHOD(device_shutdown, arcmsr_shutdown),
DEVMETHOD(device_suspend, arcmsr_suspend),
DEVMETHOD(device_resume, arcmsr_resume),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t arcmsr_driver={
@@ -2712,16 +2714,20 @@ static void arcmsr_action(struct cam_sim * psim, union ccb * pccb)
xpt_done(pccb);
break;
}
- case XPT_CALC_GEOMETRY: {
- struct ccb_calc_geometry *ccg;
- u_int32_t size_mb;
- u_int32_t secs_per_cylinder;
-
+ case XPT_CALC_GEOMETRY:
if(pccb->ccb_h.target_id == 16) {
pccb->ccb_h.status |= CAM_FUNC_NOTAVAIL;
xpt_done(pccb);
break;
}
+#if __FreeBSD_version >= 500000
+ cam_calc_geometry(&pccb->ccg, 1);
+#else
+ {
+ struct ccb_calc_geometry *ccg;
+ u_int32_t size_mb;
+ u_int32_t secs_per_cylinder;
+
ccg= &pccb->ccg;
if (ccg->block_size == 0) {
pccb->ccb_h.status = CAM_REQ_INVALID;
@@ -2744,9 +2750,10 @@ static void arcmsr_action(struct cam_sim * psim, union ccb * pccb)
secs_per_cylinder=ccg->heads * ccg->secs_per_track;
ccg->cylinders=ccg->volume_size / secs_per_cylinder;
pccb->ccb_h.status |= CAM_REQ_CMP;
+ }
+#endif
xpt_done(pccb);
break;
- }
default:
pccb->ccb_h.status |= CAM_REQ_INVALID;
xpt_done(pccb);
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c
index c872f62..5388349 100644
--- a/sys/dev/ata/ata-disk.c
+++ b/sys/dev/ata/ata-disk.c
@@ -181,7 +181,7 @@ ad_detach(device_t dev)
callout_drain(&atadev->spindown_timer);
/* detach & delete all children */
- device_delete_all_children(dev);
+ device_delete_children(dev);
/* destroy disk from the system so we don't get any further requests */
disk_destroy(adp->disk);
@@ -532,8 +532,8 @@ ad_describe(device_t dev)
u_int8_t *marker, vendor[64], product[64];
/* try to separate the ATA model string into vendor and model parts */
- if ((marker = index(atadev->param.model, ' ')) ||
- (marker = index(atadev->param.model, '-'))) {
+ if ((marker = strchr(atadev->param.model, ' ')) ||
+ (marker = strchr(atadev->param.model, '-'))) {
int len = (marker - atadev->param.model);
strncpy(vendor, atadev->param.model, len);
diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c
index 9fcd003..f838d79 100644
--- a/sys/dev/ata/ata-pci.c
+++ b/sys/dev/ata/ata-pci.c
@@ -138,7 +138,7 @@ ata_pci_detach(device_t dev)
struct ata_pci_controller *ctlr = device_get_softc(dev);
/* detach & delete all children */
- device_delete_all_children(dev);
+ device_delete_children(dev);
if (ctlr->r_irq) {
bus_teardown_intr(dev, ctlr->r_irq, ctlr->handle);
diff --git a/sys/dev/ata/ata-pci.h b/sys/dev/ata/ata-pci.h
index 2aa2065..f18812f 100644
--- a/sys/dev/ata/ata-pci.h
+++ b/sys/dev/ata/ata-pci.h
@@ -193,6 +193,10 @@ struct ata_pci_controller {
#define ATA_I82801IB_AH4 0x29238086
#define ATA_I82801IB_R1 0x29258086
#define ATA_I82801IB_S2 0x29268086
+#define ATA_I82801IBM_S1 0x29288086
+#define ATA_I82801IBM_AH 0x29298086
+#define ATA_I82801IBM_R1 0x292a8086
+#define ATA_I82801IBM_S2 0x292d8086
#define ATA_I82801JIB_S1 0x3a208086
#define ATA_I82801JIB_AH 0x3a228086
#define ATA_I82801JIB_R1 0x3a258086
diff --git a/sys/dev/ata/chipsets/ata-ati.c b/sys/dev/ata/chipsets/ata-ati.c
index 1dfd84b..ada70d7 100644
--- a/sys/dev/ata/chipsets/ata-ati.c
+++ b/sys/dev/ata/chipsets/ata-ati.c
@@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$");
/* local prototypes */
static int ata_ati_chipinit(device_t dev);
+static int ata_ati_dumb_ch_attach(device_t dev);
static int ata_ati_ixp700_ch_attach(device_t dev);
static int ata_ati_setmode(device_t dev, int target, int mode);
@@ -63,6 +64,8 @@ static int ata_ati_setmode(device_t dev, int target, int mode);
#define SII_MEMIO 1
#define SII_BUG 0x04
+static int force_ahci = 1;
+TUNABLE_INT("hw.ahci.force", &force_ahci);
/*
* ATI chipset support functions
@@ -111,7 +114,10 @@ ata_ati_probe(device_t dev)
ctlr->chipinit = ata_sii_chipinit;
break;
case ATI_AHCI:
- ctlr->chipinit = ata_ahci_chipinit;
+ if (force_ahci == 1 || pci_get_subclass(dev) != PCIS_STORAGE_IDE)
+ ctlr->chipinit = ata_ahci_chipinit;
+ else
+ ctlr->chipinit = ata_ati_chipinit;
break;
}
return (BUS_PROBE_DEFAULT);
@@ -127,6 +133,11 @@ ata_ati_chipinit(device_t dev)
if (ata_setup_interrupt(dev, ata_generic_intr))
return ENXIO;
+ if (ctlr->chip->cfg1 == ATI_AHCI) {
+ ctlr->ch_attach = ata_ati_dumb_ch_attach;
+ ctlr->setmode = ata_sata_setmode;
+ return (0);
+ }
switch (ctlr->chip->chipid) {
case ATA_ATI_IXP600:
/* IXP600 only has 1 PATA channel */
@@ -165,6 +176,17 @@ ata_ati_chipinit(device_t dev)
}
static int
+ata_ati_dumb_ch_attach(device_t dev)
+{
+ struct ata_channel *ch = device_get_softc(dev);
+
+ if (ata_pci_ch_attach(dev))
+ return ENXIO;
+ ch->flags |= ATA_SATA;
+ return (0);
+}
+
+static int
ata_ati_ixp700_ch_attach(device_t dev)
{
struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev));
diff --git a/sys/dev/ata/chipsets/ata-intel.c b/sys/dev/ata/chipsets/ata-intel.c
index c5c22cb..ebcfd79 100644
--- a/sys/dev/ata/chipsets/ata-intel.c
+++ b/sys/dev/ata/chipsets/ata-intel.c
@@ -157,6 +157,10 @@ ata_intel_probe(device_t dev)
{ ATA_I82801IB_AH4, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9" },
{ ATA_I82801IB_AH6, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9" },
{ ATA_I82801IB_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9" },
+ { ATA_I82801IBM_S1, 0, INTEL_6CH2, 0, ATA_SA300, "ICH9M" },
+ { ATA_I82801IBM_AH, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9M" },
+ { ATA_I82801IBM_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9M" },
+ { ATA_I82801IBM_S2, 0, INTEL_6CH2, 0, ATA_SA300, "ICH9M" },
{ ATA_I82801JIB_S1, 0, INTEL_6CH, 0, ATA_SA300, "ICH10" },
{ ATA_I82801JIB_AH, 0, INTEL_AHCI, 0, ATA_SA300, "ICH10" },
{ ATA_I82801JIB_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH10" },
diff --git a/sys/dev/ata/chipsets/ata-nvidia.c b/sys/dev/ata/chipsets/ata-nvidia.c
index 2edc0f1..580dfca 100644
--- a/sys/dev/ata/chipsets/ata-nvidia.c
+++ b/sys/dev/ata/chipsets/ata-nvidia.c
@@ -65,6 +65,8 @@ static int ata_nvidia_setmode(device_t dev, int target, int mode);
#define NVAHCI 0x04
#define NVNOFORCE 0x08
+static int force_ahci = 1;
+TUNABLE_INT("hw.ahci.force", &force_ahci);
/*
* nVidia chipset support functions
@@ -181,7 +183,7 @@ ata_nvidia_probe(device_t dev)
ata_set_desc(dev);
if ((ctlr->chip->cfg1 & NVAHCI) &&
- ((ctlr->chip->cfg1 & NVNOFORCE) == 0 ||
+ ((force_ahci == 1 && (ctlr->chip->cfg1 & NVNOFORCE) == 0) ||
pci_get_subclass(dev) != PCIS_STORAGE_IDE))
ctlr->chipinit = ata_ahci_chipinit;
else
diff --git a/sys/dev/ath/ath_hal/ar5210/ar5210reg.h b/sys/dev/ath/ath_hal/ar5210/ar5210reg.h
index 894d9bb..7382107 100644
--- a/sys/dev/ath/ath_hal/ar5210/ar5210reg.h
+++ b/sys/dev/ath/ath_hal/ar5210/ar5210reg.h
@@ -245,9 +245,20 @@
#define AR_SCR_SLDUR 0x0000ffff /* sleep duration */
#define AR_SCR_SLE 0x00030000 /* sleep enable */
#define AR_SCR_SLE_S 16
-#define AR_SCR_SLE_WAKE 0x00000000 /* force wake */
-#define AR_SCR_SLE_SLP 0x00010000 /* force sleep */
-#define AR_SCR_SLE_ALLOW 0x00020000 /* allow to control sleep */
+/*
+ * The previous values for the following three defines were:
+ *
+ * AR_SCR_SLE_WAKE 0x00000000
+ * AR_SCR_SLE_SLP 0x00010000
+ * AR_SCR_SLE_ALLOW 0x00020000
+ *
+ * However, these have been pre-shifted with AR_SCR_SLE_S. The
+ * OS_REG_READ() macro would attempt to shift them again, effectively
+ * shifting out any of the set bits completely.
+ */
+#define AR_SCR_SLE_WAKE 0 /* force wake */
+#define AR_SCR_SLE_SLP 1 /* force sleep */
+#define AR_SCR_SLE_ALLOW 2 /* allow to control sleep */
#define AR_SCR_BITS "\20\20SLE_SLP\21SLE_ALLOW"
#define AR_INTPEND_IP 0x00000001 /* interrupt pending */
diff --git a/sys/dev/ath/ath_hal/ar5211/ar5211reg.h b/sys/dev/ath/ath_hal/ar5211/ar5211reg.h
index 647f20d..93d4fc5 100644
--- a/sys/dev/ath/ath_hal/ar5211/ar5211reg.h
+++ b/sys/dev/ath/ath_hal/ar5211/ar5211reg.h
@@ -618,9 +618,20 @@
#define AR_SCR_SLDUR_S 0
#define AR_SCR_SLE 0x00030000 /* sleep enable mask */
#define AR_SCR_SLE_S 16 /* sleep enable bits shift */
-#define AR_SCR_SLE_WAKE 0x00000000 /* force wake */
-#define AR_SCR_SLE_SLP 0x00010000 /* force sleep */
-#define AR_SCR_SLE_NORM 0x00020000 /* sleep logic normal operation */
+/*
+ * The previous values for the following three defines were:
+ *
+ * AR_SCR_SLE_WAKE 0x00000000
+ * AR_SCR_SLE_SLP 0x00010000
+ * AR_SCR_SLE_NORM 0x00020000
+ *
+ * However, these have been pre-shifted with AR_SCR_SLE_S. The
+ * OS_REG_READ() macro would attempt to shift them again, effectively
+ * shifting out any of the set bits completely.
+ */
+#define AR_SCR_SLE_WAKE 0 /* force wake */
+#define AR_SCR_SLE_SLP 1 /* force sleep */
+#define AR_SCR_SLE_NORM 2 /* sleep logic normal operation */
#define AR_SCR_SLE_UNITS 0x00000008 /* SCR units/TU */
#define AR_SCR_BITS "\20\20SLE_SLP\21SLE"
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c b/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
index 0ea42d0..7eceec3 100644
--- a/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
+++ b/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
@@ -574,7 +574,7 @@ ar5212SetDecompMask(struct ath_hal *ah, uint16_t keyidx, int en)
struct ath_hal_5212 *ahp = AH5212(ah);
if (keyidx >= HAL_DECOMP_MASK_SIZE)
- return HAL_EINVAL;
+ return AH_FALSE;
OS_REG_WRITE(ah, AR_DCM_A, keyidx);
OS_REG_WRITE(ah, AR_DCM_D, en ? AR_DCM_D_EN : 0);
ahp->ah_decompMask[keyidx] = en;
diff --git a/sys/dev/ath/ath_hal/ar5416/ar2133.c b/sys/dev/ath/ath_hal/ar5416/ar2133.c
index f25c108..779f0de 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar2133.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar2133.c
@@ -549,3 +549,11 @@ ar2133RfAttach(struct ath_hal *ah, HAL_STATUS *status)
return AH_TRUE;
}
+
+static HAL_BOOL
+ar2133Probe(struct ath_hal *ah)
+{
+ return (AR_SREV_OWL(ah) || AR_SREV_HOWL(ah) || AR_SREV_SOWL(ah));
+}
+
+AH_RF(RF2133, ar2133Probe, ar2133RfAttach);
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c b/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
index 37412fa..940b516 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
@@ -339,7 +339,7 @@ ar5416Attach(uint16_t devid, HAL_SOFTC sc,
OS_REG_WRITE(ah, AR_PHY(0), 0x00000007);
/* Read Radio Chip Rev Extract */
- AH_PRIVATE(ah)->ah_analog5GhzRev = ar5212GetRadioRev(ah);
+ AH_PRIVATE(ah)->ah_analog5GhzRev = ar5416GetRadioRev(ah);
switch (AH_PRIVATE(ah)->ah_analog5GhzRev & AR_RADIO_SREV_MAJOR) {
case AR_RAD5122_SREV_MAJOR: /* Fowl: 5G/2x2 */
case AR_RAD2122_SREV_MAJOR: /* Fowl: 2+5G/2x2 */
@@ -865,7 +865,7 @@ ar5416FillCapabilityInfo(struct ath_hal *ah)
;
pCap->halFastCCSupport = AH_TRUE;
- pCap->halNumGpioPins = 6;
+ pCap->halNumGpioPins = 14;
pCap->halWowSupport = AH_FALSE;
pCap->halWowMatchPatternExact = AH_FALSE;
pCap->halBtCoexSupport = AH_FALSE; /* XXX need support */
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c b/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c
index dc56d15..89334f5 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c
@@ -35,7 +35,10 @@ static void
cfgOutputMux(struct ath_hal *ah, uint32_t gpio, uint32_t type)
{
int addr;
- uint32_t gpio_shift, reg;
+ uint32_t gpio_shift, tmp;
+
+ HALDEBUG(ah, HAL_DEBUG_GPIO, "%s: gpio=%d, type=%d\n",
+ __func__, gpio, type);
/* each MUX controls 6 GPIO pins */
if (gpio > 11)
@@ -61,12 +64,17 @@ cfgOutputMux(struct ath_hal *ah, uint32_t gpio, uint32_t type)
* will never be used. So it should be fine that bit 4 won't be
* able to recover.
*/
- reg = OS_REG_READ(ah, addr);
- if (addr == AR_GPIO_OUTPUT_MUX1 && !AR_SREV_MERLIN_20_OR_LATER(ah))
- reg = ((reg & 0x1F0) << 1) | (reg & ~0x1F0);
- reg &= ~(0x1f << gpio_shift);
- reg |= type << gpio_shift;
- OS_REG_WRITE(ah, addr, reg);
+ if (AR_SREV_MERLIN_20_OR_LATER(ah) ||
+ (addr != AR_GPIO_OUTPUT_MUX1)) {
+ OS_REG_RMW(ah, addr, (type << gpio_shift),
+ (0x1f << gpio_shift));
+ } else {
+ tmp = OS_REG_READ(ah, addr);
+ tmp = ((tmp & 0x1F0) << 1) | (tmp & ~0x1F0);
+ tmp &= ~(0x1f << gpio_shift);
+ tmp |= type << gpio_shift;
+ OS_REG_WRITE(ah, addr, tmp);
+ }
}
/*
@@ -79,12 +87,17 @@ ar5416GpioCfgOutput(struct ath_hal *ah, uint32_t gpio, HAL_GPIO_MUX_TYPE type)
HALASSERT(gpio < AH_PRIVATE(ah)->ah_caps.halNumGpioPins);
+ HALDEBUG(ah, HAL_DEBUG_GPIO,
+ "%s: gpio=%d, type=%d\n", __func__, gpio, type);
+
/* NB: type maps directly to hardware */
+ /* XXX this may not actually be the case, for anything but output */
cfgOutputMux(ah, gpio, type);
gpio_shift = gpio << 1; /* 2 bits per output mode */
reg = OS_REG_READ(ah, AR_GPIO_OE_OUT);
reg &= ~(AR_GPIO_OE_OUT_DRV << gpio_shift);
+ /* Always drive, rather than tristate/drive low/drive high */
reg |= AR_GPIO_OE_OUT_DRV_ALL << gpio_shift;
OS_REG_WRITE(ah, AR_GPIO_OE_OUT, reg);
@@ -101,6 +114,8 @@ ar5416GpioCfgInput(struct ath_hal *ah, uint32_t gpio)
HALASSERT(gpio < AH_PRIVATE(ah)->ah_caps.halNumGpioPins);
+ HALDEBUG(ah, HAL_DEBUG_GPIO, "%s: gpio=%d\n", __func__, gpio);
+
/* TODO: configure input mux for AR5416 */
/* If configured as input, set output to tristate */
gpio_shift = gpio << 1;
@@ -122,6 +137,8 @@ ar5416GpioSet(struct ath_hal *ah, uint32_t gpio, uint32_t val)
uint32_t reg;
HALASSERT(gpio < AH_PRIVATE(ah)->ah_caps.halNumGpioPins);
+ HALDEBUG(ah, HAL_DEBUG_GPIO,
+ "%s: gpio=%d, val=%d\n", __func__, gpio, val);
reg = OS_REG_READ(ah, AR_GPIO_IN_OUT);
if (val & 1)
@@ -146,6 +163,8 @@ ar5416GpioGet(struct ath_hal *ah, uint32_t gpio)
* Read output value for all gpio's, shift it,
* and verify whether the specific bit is set.
*/
+ if (AR_SREV_KIWI_10_OR_LATER(ah))
+ bits = MS(OS_REG_READ(ah, AR_GPIO_IN_OUT), AR9287_GPIO_IN_VAL);
if (AR_SREV_KITE_10_OR_LATER(ah))
bits = MS(OS_REG_READ(ah, AR_GPIO_IN_OUT), AR9285_GPIO_IN_VAL);
else if (AR_SREV_MERLIN_10_OR_LATER(ah))
@@ -165,6 +184,8 @@ ar5416GpioSetIntr(struct ath_hal *ah, u_int gpio, uint32_t ilevel)
uint32_t val, mask;
HALASSERT(gpio < AH_PRIVATE(ah)->ah_caps.halNumGpioPins);
+ HALDEBUG(ah, HAL_DEBUG_GPIO,
+ "%s: gpio=%d, ilevel=%d\n", __func__, gpio, ilevel);
if (ilevel == HAL_GPIO_INTR_DISABLE) {
val = MS(OS_REG_READ(ah, AR_INTR_ASYNC_ENABLE),
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c b/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
index b1c1b98..4df10cd 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
@@ -73,21 +73,29 @@ ar5416SetLedState(struct ath_hal *ah, HAL_LED_STATE state)
AR_MAC_LED_ASSOC_NONE,
AR_MAC_LED_ASSOC_NONE,
};
- uint32_t bits;
if (AR_SREV_HOWL(ah))
return;
- bits = OS_REG_READ(ah, AR_MAC_LED);
- bits = (bits &~ AR_MAC_LED_MODE)
- | SM(AR_MAC_LED_MODE_POWON, AR_MAC_LED_MODE)
-#if 1
- | SM(AR_MAC_LED_MODE_NETON, AR_MAC_LED_MODE)
-#endif
- ;
- bits = (bits &~ AR_MAC_LED_ASSOC)
- | SM(ledbits[state & 0x7], AR_MAC_LED_ASSOC);
- OS_REG_WRITE(ah, AR_MAC_LED, bits);
+ /*
+ * Set the blink operating mode.
+ */
+ OS_REG_RMW_FIELD(ah, AR_MAC_LED,
+ AR_MAC_LED_ASSOC, ledbits[state & 0x7]);
+
+ /* XXX Blink slow mode? */
+ /* XXX Blink threshold? */
+ /* XXX Blink sleep hystersis? */
+
+ /*
+ * Set the LED blink configuration to be proportional
+ * to the current TX and RX filter bytes. (Ie, RX'ed
+ * frames that don't match the filter are ignored.)
+ * This means that higher TX/RX throughput will result
+ * in the blink rate increasing.
+ */
+ OS_REG_RMW_FIELD(ah, AR_MAC_LED, AR_MAC_LED_MODE,
+ AR_MAC_LED_MODE_PROP);
}
/*
@@ -161,7 +169,7 @@ ar5416SetAntennaSwitch(struct ath_hal *ah, HAL_ANT_SETTING settings)
HAL_BOOL
ar5416SetDecompMask(struct ath_hal *ah, uint16_t keyidx, int en)
{
- return HAL_OK;
+ return AH_TRUE;
}
/* Setup coverage class */
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416reg.h b/sys/dev/ath/ath_hal/ar5416/ar5416reg.h
index 6f92eb7..6b00664 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416reg.h
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416reg.h
@@ -203,9 +203,9 @@
#define AR_MAC_LED_MODE_POWON 5 /* Power LED on (s/w control) */
#define AR_MAC_LED_MODE_NETON 6 /* Network LED on (s/w control) */
#define AR_MAC_LED_ASSOC 0x00000c00
-#define AR_MAC_LED_ASSOC_NONE 0x00000000 /* STA is not associated or trying */
-#define AR_MAC_LED_ASSOC_ACTIVE 0x00000400 /* STA is associated */
-#define AR_MAC_LED_ASSOC_PEND 0x00000800 /* STA is trying to associate */
+#define AR_MAC_LED_ASSOC_NONE 0x0 /* STA is not associated or trying */
+#define AR_MAC_LED_ASSOC_ACTIVE 0x1 /* STA is associated */
+#define AR_MAC_LED_ASSOC_PEND 0x2 /* STA is trying to associate */
#define AR_MAC_LED_ASSOC_S 10
#define AR_WA_UNTIE_RESET_EN 0x00008000 /* ena PCI reset to POR */
@@ -504,6 +504,8 @@
#define AR928X_GPIO_IN_VAL_S 10
#define AR9285_GPIO_IN_VAL 0x00FFF000
#define AR9285_GPIO_IN_VAL_S 12
+#define AR9287_GPIO_IN_VAL 0x003FF800
+#define AR9287_GPIO_IN_VAL_S 11
#define AR_GPIO_OE_OUT_DRV 0x3 /* 2 bit mask shifted by 2*bitpos */
#define AR_GPIO_OE_OUT_DRV_NO 0x0 /* tristate */
diff --git a/sys/dev/ath/ath_hal/ar9002/ar9280.c b/sys/dev/ath/ath_hal/ar9002/ar9280.c
index 99fd1d7..cc622f8 100644
--- a/sys/dev/ath/ath_hal/ar9002/ar9280.c
+++ b/sys/dev/ath/ath_hal/ar9002/ar9280.c
@@ -384,3 +384,11 @@ ar9280RfAttach(struct ath_hal *ah, HAL_STATUS *status)
return AH_TRUE;
}
+
+static HAL_BOOL
+ar9280RfProbe(struct ath_hal *ah)
+{
+ return (AR_SREV_MERLIN(ah));
+}
+
+AH_RF(RF9280, ar9280RfProbe, ar9280RfAttach);
diff --git a/sys/dev/ath/ath_hal/ar9002/ar9285.c b/sys/dev/ath/ath_hal/ar9002/ar9285.c
index f1851cc..9e9f95c 100644
--- a/sys/dev/ath/ath_hal/ar9002/ar9285.c
+++ b/sys/dev/ath/ath_hal/ar9002/ar9285.c
@@ -77,3 +77,11 @@ ar9285RfAttach(struct ath_hal *ah, HAL_STATUS *status)
return AH_TRUE;
}
+
+static HAL_BOOL
+ar9285RfProbe(struct ath_hal *ah)
+{
+ return (AR_SREV_KITE(ah));
+}
+
+AH_RF(RF9285, ar9285RfProbe, ar9285RfAttach);
diff --git a/sys/dev/ath/ath_hal/ar9002/ar9287.c b/sys/dev/ath/ath_hal/ar9002/ar9287.c
index 9b874b3..724fb7c 100644
--- a/sys/dev/ath/ath_hal/ar9002/ar9287.c
+++ b/sys/dev/ath/ath_hal/ar9002/ar9287.c
@@ -390,3 +390,11 @@ ar9287RfAttach(struct ath_hal *ah, HAL_STATUS *status)
return AH_TRUE;
}
+
+static HAL_BOOL
+ar9287RfProbe(struct ath_hal *ah)
+{
+ return (AR_SREV_KIWI(ah));
+}
+
+AH_RF(RF9287, ar9287RfProbe, ar9287RfAttach);
diff --git a/sys/dev/ath/ath_hal/ar9002/ar9287.h b/sys/dev/ath/ath_hal/ar9002/ar9287.h
index 90d25ed..3122ea4 100644
--- a/sys/dev/ath/ath_hal/ar9002/ar9287.h
+++ b/sys/dev/ath/ath_hal/ar9002/ar9287.h
@@ -45,9 +45,7 @@ struct ath_hal_9287 {
#define AH9287(_ah) ((struct ath_hal_9287 *)(_ah))
#define AR9287_DEFAULT_RXCHAINMASK 3
-#define AR9285_DEFAULT_RXCHAINMASK 1
#define AR9287_DEFAULT_TXCHAINMASK 3
-#define AR9285_DEFAULT_TXCHAINMASK 1
#define AR_PHY_CCA_NOM_VAL_9287_2GHZ -112
#define AR_PHY_CCA_NOM_VAL_9287_5GHZ -112
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c
index 462bc3f..ae785b2 100644
--- a/sys/dev/ath/if_ath.c
+++ b/sys/dev/ath/if_ath.c
@@ -101,6 +101,7 @@ __FBSDID("$FreeBSD$");
#include <dev/ath/if_ath_misc.h>
#include <dev/ath/if_ath_tx.h>
#include <dev/ath/if_ath_sysctl.h>
+#include <dev/ath/if_ath_led.h>
#include <dev/ath/if_ath_keycache.h>
#include <dev/ath/if_athdfs.h>
@@ -128,9 +129,9 @@ __FBSDID("$FreeBSD$");
CTASSERT(ATH_BCBUF <= 8);
static struct ieee80211vap *ath_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void ath_vap_delete(struct ieee80211vap *);
static void ath_init(void *);
static void ath_stop_locked(struct ifnet *);
@@ -204,7 +205,6 @@ static int ath_setregdomain(struct ieee80211com *,
static void ath_getradiocaps(struct ieee80211com *, int, int *,
struct ieee80211_channel []);
static int ath_getchannels(struct ath_softc *);
-static void ath_led_event(struct ath_softc *, int);
static int ath_rate_setup(struct ath_softc *, u_int mode);
static void ath_setcurmode(struct ath_softc *, enum ieee80211_phymode);
@@ -299,7 +299,8 @@ ath_attach(u_int16_t devid, struct ath_softc *sc)
if_initname(ifp, device_get_name(sc->sc_dev),
device_get_unit(sc->sc_dev));
- ah = ath_hal_attach(devid, sc, sc->sc_st, sc->sc_sh, sc->sc_eepromdata, &status);
+ ah = ath_hal_attach(devid, sc, sc->sc_st, sc->sc_sh,
+ sc->sc_eepromdata, &status);
if (ah == NULL) {
if_printf(ifp, "unable to attach hardware; HAL status %u\n",
status);
@@ -469,7 +470,8 @@ ath_attach(u_int16_t devid, struct ath_softc *sc)
/* Attach DFS module */
if (! ath_dfs_attach(sc)) {
- device_printf(sc->sc_dev, "%s: unable to attach DFS\n", __func__);
+ device_printf(sc->sc_dev,
+ "%s: unable to attach DFS\n", __func__);
error = EIO;
goto bad2;
}
@@ -477,22 +479,35 @@ ath_attach(u_int16_t devid, struct ath_softc *sc)
/* Start DFS processing tasklet */
TASK_INIT(&sc->sc_dfstask, 0, ath_dfs_tasklet, sc);
+ /* Configure LED state */
sc->sc_blinking = 0;
sc->sc_ledstate = 1;
sc->sc_ledon = 0; /* low true */
sc->sc_ledidle = (2700*hz)/1000; /* 2.7sec */
callout_init(&sc->sc_ledtimer, CALLOUT_MPSAFE);
+
+ /*
+ * Don't setup hardware-based blinking.
+ *
+ * Although some NICs may have this configured in the
+ * default reset register values, the user may wish
+ * to alter which pins have which function.
+ *
+ * The reference driver attaches the MAC network LED to GPIO1 and
+ * the MAC power LED to GPIO2. However, the DWA-552 cardbus
+ * NIC has these reversed.
+ */
+ sc->sc_hardled = (1 == 0);
+ sc->sc_led_net_pin = -1;
+ sc->sc_led_pwr_pin = -1;
/*
* Auto-enable soft led processing for IBM cards and for
* 5211 minipci cards. Users can also manually enable/disable
* support with a sysctl.
*/
sc->sc_softled = (devid == AR5212_DEVID_IBM || devid == AR5211_DEVID);
- if (sc->sc_softled) {
- ath_hal_gpioCfgOutput(ah, sc->sc_ledpin,
- HAL_GPIO_MUX_MAC_NETWORK_LED);
- ath_hal_gpioset(ah, sc->sc_ledpin, !sc->sc_ledon);
- }
+ ath_led_config(sc);
+ ath_hal_setledstate(ah, HAL_LED_INIT);
ifp->if_softc = sc;
ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST;
@@ -521,7 +536,7 @@ ath_attach(u_int16_t devid, struct ath_softc *sc)
| IEEE80211_C_BGSCAN /* capable of bg scanning */
| IEEE80211_C_TXFRAG /* handle tx frags */
#ifdef ATH_ENABLE_DFS
- | IEEE80211_C_DFS /* Enable DFS radar detection */
+ | IEEE80211_C_DFS /* Enable radar detection */
#endif
;
/*
@@ -633,11 +648,12 @@ ath_attach(u_int16_t devid, struct ath_softc *sc)
int rxs, txs;
device_printf(sc->sc_dev, "[HT] enabling HT modes\n");
- ic->ic_htcaps = IEEE80211_HTC_HT /* HT operation */
- | IEEE80211_HTC_AMPDU /* A-MPDU tx/rx */
- | IEEE80211_HTC_AMSDU /* A-MSDU tx/rx */
- | IEEE80211_HTCAP_MAXAMSDU_3839 /* max A-MSDU length */
- | IEEE80211_HTCAP_SMPS_OFF; /* SM power save off */
+ ic->ic_htcaps = IEEE80211_HTC_HT /* HT operation */
+ | IEEE80211_HTC_AMPDU /* A-MPDU tx/rx */
+ | IEEE80211_HTC_AMSDU /* A-MSDU tx/rx */
+ | IEEE80211_HTCAP_MAXAMSDU_3839
+ /* max A-MSDU length */
+ | IEEE80211_HTCAP_SMPS_OFF; /* SM power save off */
;
/*
@@ -658,8 +674,8 @@ ath_attach(u_int16_t devid, struct ath_softc *sc)
| IEEE80211_HTCAP_SHORTGI40;
/*
- * rx/tx stream is not currently used anywhere; it needs to be taken
- * into account when negotiating which MCS rates it'll receive and
+ * TX/RX streams need to be taken into account when
+ * negotiating which MCS rates it'll receive and
* what MCS rates are available for TX.
*/
(void) ath_hal_getcapability(ah, HAL_CAP_STREAMS, 0, &rxs);
@@ -671,7 +687,8 @@ ath_attach(u_int16_t devid, struct ath_softc *sc)
ic->ic_txstream = txs;
ic->ic_rxstream = rxs;
- device_printf(sc->sc_dev, "[HT] %d RX streams; %d TX streams\n", rxs, txs);
+ device_printf(sc->sc_dev,
+ "[HT] %d RX streams; %d TX streams\n", rxs, txs);
}
#endif
@@ -683,7 +700,8 @@ ath_attach(u_int16_t devid, struct ath_softc *sc)
ath_hal_getcapability(ah, HAL_CAP_SERIALISE_WAR,
0, NULL) == HAL_OK) {
sc->sc_ah->ah_config.ah_serialise_reg_war = 1;
- device_printf(sc->sc_dev, "Enabling register serialisation\n");
+ device_printf(sc->sc_dev,
+ "Enabling register serialisation\n");
}
/*
@@ -885,16 +903,17 @@ assign_bslot(struct ath_softc *sc)
}
static struct ieee80211vap *
-ath_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac0[IEEE80211_ADDR_LEN])
+ath_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac0[IEEE80211_ADDR_LEN])
{
struct ath_softc *sc = ic->ic_ifp->if_softc;
struct ath_vap *avp;
struct ieee80211vap *vap;
uint8_t mac[IEEE80211_ADDR_LEN];
- int ic_opmode, needbeacon, error;
+ int needbeacon, error;
+ enum ieee80211_opmode ic_opmode;
avp = (struct ath_vap *) malloc(sizeof(struct ath_vap),
M_80211_VAP, M_WAITOK | M_ZERO);
@@ -1310,9 +1329,14 @@ ath_resume(struct ath_softc *sc)
/* Let DFS at it in case it's a DFS channel */
ath_dfs_radar_enable(sc, ic->ic_curchan);
+ /* Restore the LED configuration */
+ ath_led_config(sc);
+ ath_hal_setledstate(ah, HAL_LED_INIT);
+
if (sc->sc_resume_up) {
if (ic->ic_opmode == IEEE80211_M_STA) {
ath_init(sc);
+ ath_hal_setledstate(ah, HAL_LED_RUN);
/*
* Program the beacon registers using the last rx'd
* beacon frame and enable sync on the next beacon
@@ -1326,11 +1350,6 @@ ath_resume(struct ath_softc *sc)
} else
ieee80211_resume_all(ic);
}
- if (sc->sc_softled) {
- ath_hal_gpioCfgOutput(ah, sc->sc_ledpin,
- HAL_GPIO_MUX_MAC_NETWORK_LED);
- ath_hal_gpioset(ah, sc->sc_ledpin, !sc->sc_ledon);
- }
/* XXX beacons ? */
}
@@ -1878,7 +1897,7 @@ ath_txrx_stop(struct ath_softc *sc)
sc->sc_txstart_cnt || sc->sc_intr_cnt) {
if (i <= 0)
break;
- msleep(sc, &sc->sc_mtx, 0, "ath_txrx_stop", 1);
+ msleep(sc, &sc->sc_pcu_mtx, 0, "ath_txrx_stop", 1);
i--;
}
ATH_PCU_UNLOCK(sc);
@@ -1897,6 +1916,70 @@ ath_txrx_start(struct ath_softc *sc)
taskqueue_unblock(sc->sc_tq);
}
+/*
+ * Grab the reset lock, and wait around until noone else
+ * is trying to do anything with it.
+ *
+ * This is totally horrible but we can't hold this lock for
+ * long enough to do TX/RX or we end up with net80211/ip stack
+ * LORs and eventual deadlock.
+ *
+ * "dowait" signals whether to spin, waiting for the reset
+ * lock count to reach 0. This should (for now) only be used
+ * during the reset path, as the rest of the code may not
+ * be locking-reentrant enough to behave correctly.
+ *
+ * Another, cleaner way should be found to serialise all of
+ * these operations.
+ */
+#define MAX_RESET_ITERATIONS 10
+static int
+ath_reset_grablock(struct ath_softc *sc, int dowait)
+{
+ int w = 0;
+ int i = MAX_RESET_ITERATIONS;
+
+ ATH_PCU_LOCK_ASSERT(sc);
+ do {
+ if (sc->sc_inreset_cnt == 0) {
+ w = 1;
+ break;
+ }
+ if (dowait == 0) {
+ w = 0;
+ break;
+ }
+ ATH_PCU_UNLOCK(sc);
+ pause("ath_reset_grablock", 1);
+ i--;
+ ATH_PCU_LOCK(sc);
+ } while (i > 0);
+
+ /*
+ * We always increment the refcounter, regardless
+ * of whether we succeeded to get it in an exclusive
+ * way.
+ */
+ sc->sc_inreset_cnt++;
+
+ if (i <= 0)
+ device_printf(sc->sc_dev,
+ "%s: didn't finish after %d iterations\n",
+ __func__, MAX_RESET_ITERATIONS);
+
+ if (w == 0)
+ device_printf(sc->sc_dev,
+ "%s: warning, recursive reset path!\n",
+ __func__);
+
+ return w;
+}
+#undef MAX_RESET_ITERATIONS
+
+/*
+ * XXX TODO: write ath_reset_releaselock
+ */
+
static void
ath_stop(struct ifnet *ifp)
{
@@ -1925,18 +2008,15 @@ ath_reset(struct ifnet *ifp, ATH_RESET_TYPE reset_type)
DPRINTF(sc, ATH_DEBUG_RESET, "%s: called\n", __func__);
- /* XXX ensure ATH_LOCK isn't held; ath_rx_proc can't be locked */
+ /* Ensure ATH_LOCK isn't held; ath_rx_proc can't be locked */
ATH_PCU_UNLOCK_ASSERT(sc);
ATH_UNLOCK_ASSERT(sc);
ATH_PCU_LOCK(sc);
- /* XXX if we're already inside a reset, print out a big warning */
- if (sc->sc_inreset_cnt > 0) {
- device_printf(sc->sc_dev,
- "%s: concurrent ath_reset()! Danger!\n",
+ if (ath_reset_grablock(sc, 1) == 0) {
+ device_printf(sc->sc_dev, "%s: concurrent reset! Danger!\n",
__func__);
}
- sc->sc_inreset_cnt++;
ath_hal_intrset(ah, 0); /* disable interrupts */
ATH_PCU_UNLOCK(sc);
@@ -3961,6 +4041,7 @@ ath_rx_proc(struct ath_softc *sc, int resched)
npkts++;
/* These aren't specifically errors */
+#ifdef AH_SUPPORT_AR5416
if (rs->rs_flags & HAL_RX_GI)
sc->sc_stats.ast_rx_halfgi++;
if (rs->rs_flags & HAL_RX_2040)
@@ -3973,6 +4054,7 @@ ath_rx_proc(struct ath_softc *sc, int resched)
sc->sc_stats.ast_rx_decrypt_busy_err++;
if (rs->rs_flags & HAL_RX_HI_RX_CHAIN)
sc->sc_stats.ast_rx_hi_rx_chain++;
+#endif /* AH_SUPPORT_AR5416 */
if (rs->rs_status != 0) {
if (rs->rs_status & HAL_RXERR_CRC)
@@ -4110,6 +4192,35 @@ rx_accept:
m->m_pkthdr.len = len;
}
+ /*
+ * Validate rs->rs_antenna.
+ *
+ * Some users w/ AR9285 NICs have reported crashes
+ * here because rs_antenna field is bogusly large.
+ * Let's enforce the maximum antenna limit of 8
+ * (and it shouldn't be hard coded, but that's a
+ * separate problem) and if there's an issue, print
+ * out an error and adjust rs_antenna to something
+ * sensible.
+ *
+ * This code should be removed once the actual
+ * root cause of the issue has been identified.
+ * For example, it may be that the rs_antenna
+ * field is only valid for the lsat frame of
+ * an aggregate and it just happens that it is
+ * "mostly" right. (This is a general statement -
+ * the majority of the statistics are only valid
+ * for the last frame in an aggregate.
+ */
+ if (rs->rs_antenna > 7) {
+ device_printf(sc->sc_dev, "%s: rs_antenna > 7 (%d)\n",
+ __func__, rs->rs_antenna);
+#ifdef ATH_DEBUG
+ ath_printrxbuf(sc, bf, 0, status == HAL_OK);
+#endif /* ATH_DEBUG */
+ rs->rs_antenna = 0; /* XXX better than nothing */
+ }
+
ifp->if_ipackets++;
sc->sc_stats.ast_ant_rx[rs->rs_antenna]++;
@@ -4161,8 +4272,10 @@ rx_accept:
IEEE80211_KEYIX_NONE : rs->rs_keyix);
sc->sc_lastrs = rs;
+#ifdef AH_SUPPORT_AR5416
if (rs->rs_isaggr)
sc->sc_stats.ast_rx_agg++;
+#endif /* AH_SUPPORT_AR5416 */
if (ni != NULL) {
/*
@@ -5216,10 +5329,10 @@ ath_chan_set(struct ath_softc *sc, struct ieee80211_channel *chan)
/* Treat this as an interface reset */
ATH_PCU_LOCK(sc);
- if (sc->sc_inreset_cnt > 0)
- device_printf(sc->sc_dev, "%s: danger! concurrent reset!\n",
+ if (ath_reset_grablock(sc, 1) == 0) {
+ device_printf(sc->sc_dev, "%s: concurrent reset! Danger!\n",
__func__);
- sc->sc_inreset_cnt++;
+ }
if (chan != sc->sc_curchan) {
dointr = 1;
/* XXX only do this if inreset_cnt is 1? */
@@ -5370,6 +5483,7 @@ ath_calibrate(void *arg)
sc->sc_doresetcal = AH_TRUE;
ATH_UNLOCK(sc);
ath_reset(ifp, ATH_RESET_NOLOSS);
+ ATH_LOCK(sc);
return;
}
/*
@@ -5855,49 +5969,6 @@ ath_getchannels(struct ath_softc *sc)
return 0;
}
-static void
-ath_led_done(void *arg)
-{
- struct ath_softc *sc = arg;
-
- sc->sc_blinking = 0;
-}
-
-/*
- * Turn the LED off: flip the pin and then set a timer so no
- * update will happen for the specified duration.
- */
-static void
-ath_led_off(void *arg)
-{
- struct ath_softc *sc = arg;
-
- ath_hal_gpioset(sc->sc_ah, sc->sc_ledpin, !sc->sc_ledon);
- callout_reset(&sc->sc_ledtimer, sc->sc_ledoff, ath_led_done, sc);
-}
-
-/*
- * Blink the LED according to the specified on/off times.
- */
-static void
-ath_led_blink(struct ath_softc *sc, int on, int off)
-{
- DPRINTF(sc, ATH_DEBUG_LED, "%s: on %u off %u\n", __func__, on, off);
- ath_hal_gpioset(sc->sc_ah, sc->sc_ledpin, sc->sc_ledon);
- sc->sc_blinking = 1;
- sc->sc_ledoff = off;
- callout_reset(&sc->sc_ledtimer, on, ath_led_off, sc);
-}
-
-static void
-ath_led_event(struct ath_softc *sc, int rix)
-{
- sc->sc_ledevent = ticks; /* time of last event */
- if (sc->sc_blinking) /* don't interrupt active blink */
- return;
- ath_led_blink(sc, sc->sc_hwmap[rix].ledon, sc->sc_hwmap[rix].ledoff);
-}
-
static int
ath_rate_setup(struct ath_softc *sc, u_int mode)
{
@@ -6217,6 +6288,8 @@ ath_announce(struct ath_softc *sc)
if_printf(ifp, "AR%s mac %d.%d RF%s phy %d.%d\n",
ath_hal_mac_name(ah), ah->ah_macVersion, ah->ah_macRev,
ath_hal_rf_name(ah), ah->ah_phyRev >> 4, ah->ah_phyRev & 0xf);
+ if_printf(ifp, "2GHz radio: 0x%.4x; 5GHz radio: 0x%.4x\n",
+ ah->ah_analog2GhzRev, ah->ah_analog5GhzRev);
if (bootverbose) {
int i;
for (i = 0; i <= WME_AC_VO; i++) {
diff --git a/sys/dev/ath/if_ath_led.c b/sys/dev/ath/if_ath_led.c
new file mode 100644
index 0000000..47ae3e1
--- /dev/null
+++ b/sys/dev/ath/if_ath_led.c
@@ -0,0 +1,190 @@
+/*-
+ * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ * redistribution must be conditioned upon including a substantially
+ * similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * Driver for the Atheros Wireless LAN controller.
+ *
+ * This software is derived from work of Atsushi Onoe; his contribution
+ * is greatly appreciated.
+ */
+
+#include "opt_inet.h"
+#include "opt_ath.h"
+/*
+ * This is needed for register operations which are performed
+ * by the driver - eg, calls to ath_hal_gettsf32().
+ */
+#include "opt_ah.h"
+#include "opt_wlan.h"
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/sysctl.h>
+#include <sys/mbuf.h>
+#include <sys/malloc.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
+#include <sys/kernel.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/errno.h>
+#include <sys/callout.h>
+#include <sys/bus.h>
+#include <sys/endian.h>
+#include <sys/kthread.h>
+#include <sys/taskqueue.h>
+#include <sys/priv.h>
+#include <sys/module.h>
+#include <sys/ktr.h>
+#include <sys/smp.h> /* for mp_ncpus */
+
+#include <machine/bus.h>
+
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/if_media.h>
+#include <net/if_types.h>
+#include <net/if_arp.h>
+#include <net/ethernet.h>
+#include <net/if_llc.h>
+
+#include <net80211/ieee80211_var.h>
+#include <net80211/ieee80211_regdomain.h>
+#ifdef IEEE80211_SUPPORT_SUPERG
+#include <net80211/ieee80211_superg.h>
+#endif
+#ifdef IEEE80211_SUPPORT_TDMA
+#include <net80211/ieee80211_tdma.h>
+#endif
+
+#include <net/bpf.h>
+
+#ifdef INET
+#include <netinet/in.h>
+#include <netinet/if_ether.h>
+#endif
+
+#include <dev/ath/if_athvar.h>
+#include <dev/ath/ath_hal/ah_devid.h> /* XXX for softled */
+#include <dev/ath/ath_hal/ah_diagcodes.h>
+
+#include <dev/ath/if_ath_debug.h>
+#include <dev/ath/if_ath_misc.h>
+
+#include <dev/ath/if_ath_led.h>
+
+/*
+ * Software LED driver routines.
+ */
+
+/*
+ * XXX TODO: move the LED sysctls here.
+ */
+
+
+/*
+ * Configure the hardware for software and LED blinking.
+ * The user may choose to configure part of each, depending upon the
+ * NIC being used.
+ *
+ * This requires the configuration to be set before this function
+ * is called.
+ */
+void
+ath_led_config(struct ath_softc *sc)
+{
+ /* Software LED blinking - GPIO controlled LED */
+ if (sc->sc_softled) {
+ ath_hal_gpioCfgOutput(sc->sc_ah, sc->sc_ledpin,
+ HAL_GPIO_MUX_OUTPUT);
+ ath_hal_gpioset(sc->sc_ah, sc->sc_ledpin, !sc->sc_ledon);
+ }
+
+ /* Hardware LED blinking - MAC controlled LED */
+ if (sc->sc_hardled) {
+ /*
+ * Only enable each LED if required.
+ *
+ * Some NICs only have one LED connected; others may
+ * have GPIO1/GPIO2 connected to other hardware.
+ */
+ if (sc->sc_led_pwr_pin > 0)
+ ath_hal_gpioCfgOutput(sc->sc_ah, sc->sc_led_pwr_pin,
+ HAL_GPIO_MUX_MAC_POWER_LED);
+ if (sc->sc_led_net_pin > 0)
+ ath_hal_gpioCfgOutput(sc->sc_ah, sc->sc_led_net_pin,
+ HAL_GPIO_MUX_MAC_NETWORK_LED);
+ }
+}
+
+static void
+ath_led_done(void *arg)
+{
+ struct ath_softc *sc = arg;
+
+ sc->sc_blinking = 0;
+}
+
+/*
+ * Turn the LED off: flip the pin and then set a timer so no
+ * update will happen for the specified duration.
+ */
+static void
+ath_led_off(void *arg)
+{
+ struct ath_softc *sc = arg;
+
+ ath_hal_gpioset(sc->sc_ah, sc->sc_ledpin, !sc->sc_ledon);
+ callout_reset(&sc->sc_ledtimer, sc->sc_ledoff, ath_led_done, sc);
+}
+
+/*
+ * Blink the LED according to the specified on/off times.
+ */
+static void
+ath_led_blink(struct ath_softc *sc, int on, int off)
+{
+ DPRINTF(sc, ATH_DEBUG_LED, "%s: on %u off %u\n", __func__, on, off);
+ ath_hal_gpioset(sc->sc_ah, sc->sc_ledpin, sc->sc_ledon);
+ sc->sc_blinking = 1;
+ sc->sc_ledoff = off;
+ callout_reset(&sc->sc_ledtimer, on, ath_led_off, sc);
+}
+
+void
+ath_led_event(struct ath_softc *sc, int rix)
+{
+ sc->sc_ledevent = ticks; /* time of last event */
+ if (sc->sc_blinking) /* don't interrupt active blink */
+ return;
+ ath_led_blink(sc, sc->sc_hwmap[rix].ledon, sc->sc_hwmap[rix].ledoff);
+}
diff --git a/sys/dev/ath/if_ath_led.h b/sys/dev/ath/if_ath_led.h
new file mode 100644
index 0000000..54de4c4
--- /dev/null
+++ b/sys/dev/ath/if_ath_led.h
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ * redistribution must be conditioned upon including a substantially
+ * similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ * $FreeBSD$
+ */
+#ifndef __IF_ATH_LED_H__
+#define __IF_ATH_LED_H__
+
+extern void ath_led_event(struct ath_softc *sc, int rix);
+extern void ath_led_config(struct ath_softc *sc);
+
+#endif
diff --git a/sys/dev/ath/if_ath_sysctl.c b/sys/dev/ath/if_ath_sysctl.c
index 5323504..57781f5 100644
--- a/sys/dev/ath/if_ath_sysctl.c
+++ b/sys/dev/ath/if_ath_sysctl.c
@@ -90,6 +90,7 @@ __FBSDID("$FreeBSD$");
#include <dev/ath/ath_hal/ah_diagcodes.h>
#include <dev/ath/if_ath_debug.h>
+#include <dev/ath/if_ath_led.h>
#include <dev/ath/if_ath_misc.h>
#include <dev/ath/if_ath_tx.h>
#include <dev/ath/if_ath_sysctl.h>
@@ -151,10 +152,7 @@ ath_sysctl_softled(SYSCTL_HANDLER_ARGS)
if (softled != sc->sc_softled) {
if (softled) {
/* NB: handle any sc_ledpin change */
- ath_hal_gpioCfgOutput(sc->sc_ah, sc->sc_ledpin,
- HAL_GPIO_MUX_MAC_NETWORK_LED);
- ath_hal_gpioset(sc->sc_ah, sc->sc_ledpin,
- !sc->sc_ledon);
+ ath_led_config(sc);
}
sc->sc_softled = softled;
}
@@ -174,16 +172,34 @@ ath_sysctl_ledpin(SYSCTL_HANDLER_ARGS)
if (ledpin != sc->sc_ledpin) {
sc->sc_ledpin = ledpin;
if (sc->sc_softled) {
- ath_hal_gpioCfgOutput(sc->sc_ah, sc->sc_ledpin,
- HAL_GPIO_MUX_MAC_NETWORK_LED);
- ath_hal_gpioset(sc->sc_ah, sc->sc_ledpin,
- !sc->sc_ledon);
+ ath_led_config(sc);
}
}
return 0;
}
static int
+ath_sysctl_hardled(SYSCTL_HANDLER_ARGS)
+{
+ struct ath_softc *sc = arg1;
+ int hardled = sc->sc_hardled;
+ int error;
+
+ error = sysctl_handle_int(oidp, &hardled, 0, req);
+ if (error || !req->newptr)
+ return error;
+ hardled = (hardled != 0);
+ if (hardled != sc->sc_hardled) {
+ if (hardled) {
+ /* NB: handle any sc_ledpin change */
+ ath_led_config(sc);
+ }
+ sc->sc_hardled = hardled;
+ }
+ return 0;
+}
+
+static int
ath_sysctl_txantenna(SYSCTL_HANDLER_ARGS)
{
struct ath_softc *sc = arg1;
@@ -496,6 +512,7 @@ ath_sysctlattach(struct ath_softc *sc)
SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
"ctstimeout", CTLTYPE_INT | CTLFLAG_RW, sc, 0,
ath_sysctl_ctstimeout, "I", "802.11 CTS timeout (us)");
+
SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
"softled", CTLTYPE_INT | CTLFLAG_RW, sc, 0,
ath_sysctl_softled, "I", "enable/disable software LED support");
@@ -508,6 +525,18 @@ ath_sysctlattach(struct ath_softc *sc)
SYSCTL_ADD_UINT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
"ledidle", CTLFLAG_RW, &sc->sc_ledidle, 0,
"idle time for inactivity LED (ticks)");
+
+ SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
+ "hardled", CTLTYPE_INT | CTLFLAG_RW, sc, 0,
+ ath_sysctl_hardled, "I", "enable/disable hardware LED support");
+ /* XXX Laziness - configure pins, then flip hardled off/on */
+ SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
+ "led_net_pin", CTLFLAG_RW, &sc->sc_led_net_pin, 0,
+ "MAC Network LED pin, or -1 to disable");
+ SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
+ "led_pwr_pin", CTLFLAG_RW, &sc->sc_led_pwr_pin, 0,
+ "MAC Power LED pin, or -1 to disable");
+
SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
"txantenna", CTLTYPE_INT | CTLFLAG_RW, sc, 0,
ath_sysctl_txantenna, "I", "antenna switch");
@@ -842,9 +871,15 @@ ath_sysctl_stats_attach(struct ath_softc *sc)
&sc->sc_stats.ast_tx_data_underrun, 0, "");
SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_tx_delim_underrun", CTLFLAG_RD,
&sc->sc_stats.ast_tx_delim_underrun, 0, "");
- SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_tx_aggrfail", CTLFLAG_RD,
- &sc->sc_stats.ast_tx_aggrfail, 0,
+ SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_tx_aggr_failall", CTLFLAG_RD,
+ &sc->sc_stats.ast_tx_aggr_failall, 0,
"Number of aggregate TX failures (whole frame)");
+ SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_tx_aggr_ok", CTLFLAG_RD,
+ &sc->sc_stats.ast_tx_aggr_ok, 0,
+ "Number of aggregate TX OK completions (subframe)");
+ SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_tx_aggr_fail", CTLFLAG_RD,
+ &sc->sc_stats.ast_tx_aggr_fail, 0,
+ "Number of aggregate TX failures (subframe)");
SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_rx_intr", CTLFLAG_RD,
&sc->sc_stats.ast_rx_intr, 0, "RX interrupts");
diff --git a/sys/dev/ath/if_ath_tx.c b/sys/dev/ath/if_ath_tx.c
index 5625bf2..3d2204a 100644
--- a/sys/dev/ath/if_ath_tx.c
+++ b/sys/dev/ath/if_ath_tx.c
@@ -2405,6 +2405,12 @@ ath_tx_tid_drain(struct ath_softc *sc, struct ath_node *an, struct ath_tid *tid,
tid->hwq_depth, tid->incomp, tid->baw_head,
tid->baw_tail, tap == NULL ? -1 : tap->txa_start,
ni->ni_txseqs[tid->tid]);
+
+ /* XXX Dump the frame, see what it is? */
+ ieee80211_dump_pkt(ni->ni_ic,
+ mtod(bf->bf_m, const uint8_t *),
+ bf->bf_m->m_len, 0, -1);
+
t = 1;
}
@@ -2940,7 +2946,6 @@ ath_tx_comp_aggr_error(struct ath_softc *sc, struct ath_buf *bf_first,
TAILQ_INIT(&bf_q);
TAILQ_INIT(&bf_cq);
- sc->sc_stats.ast_tx_aggrfail++;
/*
* Update rate control - all frames have failed.
@@ -2955,12 +2960,14 @@ ath_tx_comp_aggr_error(struct ath_softc *sc, struct ath_buf *bf_first,
ATH_TXQ_LOCK(sc->sc_ac2q[tid->ac]);
tap = ath_tx_get_tx_tid(an, tid->tid);
+ sc->sc_stats.ast_tx_aggr_failall++;
/* Retry all subframes */
bf = bf_first;
while (bf) {
bf_next = bf->bf_next;
bf->bf_next = NULL; /* Remove it from the aggr list */
+ sc->sc_stats.ast_tx_aggr_fail++;
if (ath_tx_retry_subframe(sc, bf, &bf_q)) {
drops++;
bf->bf_next = NULL;
@@ -3196,6 +3203,7 @@ ath_tx_aggr_comp_aggr(struct ath_softc *sc, struct ath_buf *bf_first, int fail)
ATH_BA_ISSET(ba, ba_index));
if (tx_ok && ATH_BA_ISSET(ba, ba_index)) {
+ sc->sc_stats.ast_tx_aggr_ok++;
ath_tx_update_baw(sc, an, atid, bf);
bf->bf_state.bfs_dobaw = 0;
if (! bf->bf_state.bfs_addedbaw)
@@ -3205,6 +3213,7 @@ ath_tx_aggr_comp_aggr(struct ath_softc *sc, struct ath_buf *bf_first, int fail)
bf->bf_next = NULL;
TAILQ_INSERT_TAIL(&bf_cq, bf, bf_list);
} else {
+ sc->sc_stats.ast_tx_aggr_fail++;
if (ath_tx_retry_subframe(sc, bf, &bf_q)) {
drops++;
bf->bf_next = NULL;
diff --git a/sys/dev/ath/if_athioctl.h b/sys/dev/ath/if_athioctl.h
index 680694f..9c1cc12 100644
--- a/sys/dev/ath/if_athioctl.h
+++ b/sys/dev/ath/if_athioctl.h
@@ -148,12 +148,14 @@ struct ath_stats {
u_int32_t ast_tx_swretrymax; /* software TX retry max limit reach */
u_int32_t ast_tx_data_underrun;
u_int32_t ast_tx_delim_underrun;
- u_int32_t ast_tx_aggrfail; /* aggregate TX failed in its entirety */
+ u_int32_t ast_tx_aggr_failall; /* aggregate TX failed in its entirety */
u_int32_t ast_tx_getnobuf;
u_int32_t ast_tx_getbusybuf;
u_int32_t ast_tx_intr;
u_int32_t ast_rx_intr;
- u_int32_t ast_pad[4];
+ u_int32_t ast_tx_aggr_ok; /* aggregate TX ok */
+ u_int32_t ast_tx_aggr_fail; /* aggregate TX failed */
+ u_int32_t ast_pad[2];
};
#define SIOCGATHSTATS _IOWR('i', 137, struct ifreq)
diff --git a/sys/dev/ath/if_athvar.h b/sys/dev/ath/if_athvar.h
index 331bea4..8491fe1 100644
--- a/sys/dev/ath/if_athvar.h
+++ b/sys/dev/ath/if_athvar.h
@@ -371,6 +371,7 @@ struct ath_softc {
unsigned int sc_invalid : 1,/* disable hardware accesses */
sc_mrretry : 1,/* multi-rate retry support */
sc_softled : 1,/* enable LED gpio status */
+ sc_hardled : 1,/* enable MAC LED status */
sc_splitmic : 1,/* split TKIP MIC keys */
sc_needmib : 1,/* enable MIB stats intr */
sc_diversity: 1,/* enable rx diversity */
@@ -445,6 +446,9 @@ struct ath_softc {
u_int sc_keymax; /* size of key cache */
u_int8_t sc_keymap[ATH_KEYBYTES];/* key use bit map */
+ /*
+ * Software based LED blinking
+ */
u_int sc_ledpin; /* GPIO pin for driving LED */
u_int sc_ledon; /* pin setting for LED on */
u_int sc_ledidle; /* idle polling interval */
@@ -453,6 +457,12 @@ struct ath_softc {
u_int16_t sc_ledoff; /* off time for current blink */
struct callout sc_ledtimer; /* led off timer */
+ /*
+ * Hardware based LED blinking
+ */
+ int sc_led_pwr_pin; /* MAC power LED GPIO pin */
+ int sc_led_net_pin; /* MAC network LED GPIO pin */
+
u_int sc_rfsilentpin; /* GPIO pin for rfkill int */
u_int sc_rfsilentpol; /* pin setting for rfkill on */
diff --git a/sys/dev/bce/if_bce.c b/sys/dev/bce/if_bce.c
index 39a93aa..72ba76a 100644
--- a/sys/dev/bce/if_bce.c
+++ b/sys/dev/bce/if_bce.c
@@ -455,10 +455,6 @@ static device_method_t bce_methods[] = {
/* DEVMETHOD(device_resume, bce_resume), */
/* DEVMETHOD(device_quiesce, bce_quiesce), */
- /* Bus interface (bus_if.h) */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface (miibus_if.h) */
DEVMETHOD(miibus_readreg, bce_miibus_read_reg),
DEVMETHOD(miibus_writereg, bce_miibus_write_reg),
@@ -467,7 +463,7 @@ static device_method_t bce_methods[] = {
/* DEVMETHOD(miibus_linkchg, bce_miibus_linkchg), */
/* DEVMETHOD(miibus_mediainit, bce_miibus_mediainit), */
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t bce_driver = {
@@ -1986,6 +1982,7 @@ static void
bce_miibus_statchg(device_t dev)
{
struct bce_softc *sc;
+ struct ifnet *ifp;
struct mii_data *mii;
int val;
@@ -1993,42 +1990,57 @@ bce_miibus_statchg(device_t dev)
DBENTER(BCE_VERBOSE_PHY);
+ ifp = sc->bce_ifp;
mii = device_get_softc(sc->bce_miibus);
+ if (mii == NULL || ifp == NULL ||
+ (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ return;
+ sc->bce_link_up = FALSE;
val = REG_RD(sc, BCE_EMAC_MODE);
val &= ~(BCE_EMAC_MODE_PORT | BCE_EMAC_MODE_HALF_DUPLEX |
BCE_EMAC_MODE_MAC_LOOP | BCE_EMAC_MODE_FORCE_LINK |
BCE_EMAC_MODE_25G);
/* Set MII or GMII interface based on the PHY speed. */
- switch (IFM_SUBTYPE(mii->mii_media_active)) {
- case IFM_10_T:
- if (BCE_CHIP_NUM(sc) != BCE_CHIP_NUM_5706) {
- DBPRINT(sc, BCE_INFO_PHY,
- "Enabling 10Mb interface.\n");
- val |= BCE_EMAC_MODE_PORT_MII_10;
+ if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) ==
+ (IFM_ACTIVE | IFM_AVALID)) {
+ switch (IFM_SUBTYPE(mii->mii_media_active)) {
+ case IFM_10_T:
+ if (BCE_CHIP_NUM(sc) != BCE_CHIP_NUM_5706) {
+ DBPRINT(sc, BCE_INFO_PHY,
+ "Enabling 10Mb interface.\n");
+ val |= BCE_EMAC_MODE_PORT_MII_10;
+ sc->bce_link_up = TRUE;
+ break;
+ }
+ /* FALLTHROUGH */
+ case IFM_100_TX:
+ DBPRINT(sc, BCE_INFO_PHY, "Enabling MII interface.\n");
+ val |= BCE_EMAC_MODE_PORT_MII;
+ sc->bce_link_up = TRUE;
+ break;
+ case IFM_2500_SX:
+ DBPRINT(sc, BCE_INFO_PHY, "Enabling 2.5G MAC mode.\n");
+ val |= BCE_EMAC_MODE_25G;
+ /* FALLTHROUGH */
+ case IFM_1000_T:
+ case IFM_1000_SX:
+ DBPRINT(sc, BCE_INFO_PHY, "Enabling GMII interface.\n");
+ val |= BCE_EMAC_MODE_PORT_GMII;
+ sc->bce_link_up = TRUE;
+ if (bce_verbose || bootverbose)
+ BCE_PRINTF("Gigabit link up!\n");
+ break;
+ default:
+ DBPRINT(sc, BCE_INFO_PHY, "Unknown link speed.\n");
break;
}
- /* fall-through */
- case IFM_100_TX:
- DBPRINT(sc, BCE_INFO_PHY, "Enabling MII interface.\n");
- val |= BCE_EMAC_MODE_PORT_MII;
- break;
- case IFM_2500_SX:
- DBPRINT(sc, BCE_INFO_PHY, "Enabling 2.5G MAC mode.\n");
- val |= BCE_EMAC_MODE_25G;
- /* fall-through */
- case IFM_1000_T:
- case IFM_1000_SX:
- DBPRINT(sc, BCE_INFO_PHY, "Enabling GMII interface.\n");
- val |= BCE_EMAC_MODE_PORT_GMII;
- break;
- default:
- DBPRINT(sc, BCE_INFO_PHY, "Unknown link speed, enabling "
- "default GMII interface.\n");
- val |= BCE_EMAC_MODE_PORT_GMII;
}
+ if (sc->bce_link_up == FALSE)
+ return;
+
/* Set half or full duplex based on PHY settings. */
if ((mii->mii_media_active & IFM_GMASK) == IFM_HDX) {
DBPRINT(sc, BCE_INFO_PHY,
@@ -2040,7 +2052,7 @@ bce_miibus_statchg(device_t dev)
REG_WR(sc, BCE_EMAC_MODE, val);
- if ((mii->mii_media_active & IFM_ETH_RXPAUSE) != 0) {
+ if ((mii->mii_media_active & IFM_ETH_RXPAUSE) != 0) {
DBPRINT(sc, BCE_INFO_PHY,
"%s(): Enabling RX flow control.\n", __FUNCTION__);
BCE_SETBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_RX_MODE_FLOW_EN);
@@ -2050,7 +2062,7 @@ bce_miibus_statchg(device_t dev)
BCE_CLRBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_RX_MODE_FLOW_EN);
}
- if ((mii->mii_media_active & IFM_ETH_TXPAUSE) != 0) {
+ if ((mii->mii_media_active & IFM_ETH_TXPAUSE) != 0) {
DBPRINT(sc, BCE_INFO_PHY,
"%s(): Enabling TX flow control.\n", __FUNCTION__);
BCE_SETBIT(sc, BCE_EMAC_TX_MODE, BCE_EMAC_TX_MODE_FLOW_EN);
@@ -6210,15 +6222,11 @@ bce_phy_intr(struct bce_softc *sc)
DBPRINT(sc, BCE_INFO_PHY, "%s(): Link is now DOWN.\n",
__FUNCTION__);
}
-
/*
- * Assume link is down and allow
- * tick routine to update the state
- * based on the actual media state.
+ * Link state changed, allow tick routine to update
+ * the state baased on actual media state.
*/
- sc->bce_link_up = FALSE;
- callout_stop(&sc->bce_tick_callout);
- bce_tick(sc);
+ sc->bce_link_tick = TRUE;
}
/* Acknowledge the link change interrupt. */
@@ -6902,12 +6910,13 @@ bce_init_locked(struct bce_softc *sc)
/* Enable host interrupts. */
bce_enable_intr(sc, 1);
- bce_ifmedia_upd_locked(ifp);
-
/* Let the OS know the driver is up and running. */
ifp->if_drv_flags |= IFF_DRV_RUNNING;
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ sc->bce_link_tick = TRUE;
+ bce_ifmedia_upd_locked(ifp);
+
callout_reset(&sc->bce_tick_callout, hz, bce_tick, sc);
bce_init_locked_exit:
@@ -8203,31 +8212,19 @@ bce_tick(void *xsc)
bce_watchdog(sc);
/* If link is up already up then we're done. */
- if (sc->bce_link_up == TRUE)
+ if (sc->bce_link_tick == FALSE && sc->bce_link_up == TRUE)
goto bce_tick_exit;
/* Link is down. Check what the PHY's doing. */
mii = device_get_softc(sc->bce_miibus);
mii_tick(mii);
- /* Check if the link has come up. */
- if ((mii->mii_media_status & IFM_ACTIVE) &&
- (IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE)) {
+ sc->bce_link_tick = FALSE;
+ /* Now that link is up, handle any outstanding TX traffic. */
+ if (sc->bce_link_up == TRUE && !IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
DBPRINT(sc, BCE_VERBOSE_MISC,
- "%s(): Link up!\n", __FUNCTION__);
- sc->bce_link_up = TRUE;
- if ((IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_T ||
- IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_SX ||
- IFM_SUBTYPE(mii->mii_media_active) == IFM_2500_SX) &&
- (bce_verbose || bootverbose))
- BCE_PRINTF("Gigabit link up!\n");
-
- /* Now that link is up, handle any outstanding TX traffic. */
- if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
- DBPRINT(sc, BCE_VERBOSE_MISC, "%s(): Found "
- "pending TX traffic.\n", __FUNCTION__);
- bce_start_locked(ifp);
- }
+ "%s(): Found pending TX traffic.\n", __FUNCTION__);
+ bce_start_locked(ifp);
}
bce_tick_exit:
diff --git a/sys/dev/bce/if_bcereg.h b/sys/dev/bce/if_bcereg.h
index f74c4d2..65a3424 100644
--- a/sys/dev/bce/if_bcereg.h
+++ b/sys/dev/bce/if_bcereg.h
@@ -6560,6 +6560,7 @@ struct bce_softc
u16 pg_prod;
u16 pg_cons;
+ int bce_link_tick;
int bce_link_up;
struct callout bce_tick_callout;
struct callout bce_pulse_callout;
diff --git a/sys/dev/bfe/if_bfe.c b/sys/dev/bfe/if_bfe.c
index 7f970f4..6dd33cd 100644
--- a/sys/dev/bfe/if_bfe.c
+++ b/sys/dev/bfe/if_bfe.c
@@ -137,16 +137,12 @@ static device_method_t bfe_methods[] = {
DEVMETHOD(device_suspend, bfe_suspend),
DEVMETHOD(device_resume, bfe_resume),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, bfe_miibus_readreg),
DEVMETHOD(miibus_writereg, bfe_miibus_writereg),
DEVMETHOD(miibus_statchg, bfe_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t bfe_driver = {
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index f7d1730..ea477fd 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -493,16 +493,12 @@ static device_method_t bge_methods[] = {
DEVMETHOD(device_suspend, bge_suspend),
DEVMETHOD(device_resume, bge_resume),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, bge_miibus_readreg),
DEVMETHOD(miibus_writereg, bge_miibus_writereg),
DEVMETHOD(miibus_statchg, bge_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t bge_driver = {
@@ -2084,9 +2080,15 @@ bge_blockinit(struct bge_softc *sc)
val |= BGE_RDMAMODE_TSO6_ENABLE;
}
- if (sc->bge_asicrev == BGE_ASICREV_BCM5720)
+ if (sc->bge_asicrev == BGE_ASICREV_BCM5720) {
val |= CSR_READ_4(sc, BGE_RDMA_MODE) &
BGE_RDMAMODE_H2BNC_VLAN_DET;
+ /*
+ * Allow multiple outstanding read requests from
+ * non-LSO read DMA engine.
+ */
+ val &= ~BGE_RDMAMODE_MULT_DMA_RD_DIS;
+ }
if (sc->bge_asicrev == BGE_ASICREV_BCM5761 ||
sc->bge_asicrev == BGE_ASICREV_BCM5784 ||
@@ -2116,12 +2118,20 @@ bge_blockinit(struct bge_softc *sc)
BGE_RDMA_RSRVCTRL_FIFO_OFLW_FIX);
}
- if (sc->bge_asicrev == BGE_ASICREV_BCM5719 ||
- sc->bge_asicrev == BGE_ASICREV_BCM5720) {
+ if (sc->bge_asicrev == BGE_ASICREV_BCM5719) {
CSR_WRITE_4(sc, BGE_RDMA_LSO_CRPTEN_CTRL,
CSR_READ_4(sc, BGE_RDMA_LSO_CRPTEN_CTRL) |
BGE_RDMA_LSO_CRPTEN_CTRL_BLEN_BD_4K |
BGE_RDMA_LSO_CRPTEN_CTRL_BLEN_LSO_4K);
+ } else if (sc->bge_asicrev == BGE_ASICREV_BCM5720) {
+ /*
+ * Allow 4KB burst length reads for non-LSO frames.
+ * Enable 512B burst length reads for buffer descriptors.
+ */
+ CSR_WRITE_4(sc, BGE_RDMA_LSO_CRPTEN_CTRL,
+ CSR_READ_4(sc, BGE_RDMA_LSO_CRPTEN_CTRL) |
+ BGE_RDMA_LSO_CRPTEN_CTRL_BLEN_BD_512 |
+ BGE_RDMA_LSO_CRPTEN_CTRL_BLEN_LSO_4K);
}
CSR_WRITE_4(sc, BGE_RDMA_MODE, val);
@@ -2348,6 +2358,8 @@ bge_dma_free(struct bge_softc *sc)
if (sc->bge_cdata.bge_rx_mtag)
bus_dma_tag_destroy(sc->bge_cdata.bge_rx_mtag);
+ if (sc->bge_cdata.bge_mtag_jumbo)
+ bus_dma_tag_destroy(sc->bge_cdata.bge_mtag_jumbo);
if (sc->bge_cdata.bge_tx_mtag)
bus_dma_tag_destroy(sc->bge_cdata.bge_tx_mtag);
diff --git a/sys/dev/bge/if_bgereg.h b/sys/dev/bge/if_bgereg.h
index 3ba4176..ccb2c6d 100644
--- a/sys/dev/bge/if_bgereg.h
+++ b/sys/dev/bge/if_bgereg.h
@@ -1573,6 +1573,7 @@
#define BGE_RDMA_RSRVCTRL_FIFO_HWM_MASK 0x000FF000
#define BGE_RDMA_RSRVCTRL_TXMRGN_MASK 0xFFE00000
+#define BGE_RDMA_LSO_CRPTEN_CTRL_BLEN_BD_512 0x00020000
#define BGE_RDMA_LSO_CRPTEN_CTRL_BLEN_BD_4K 0x00030000
#define BGE_RDMA_LSO_CRPTEN_CTRL_BLEN_LSO_4K 0x000C0000
diff --git a/sys/dev/bm/if_bm.c b/sys/dev/bm/if_bm.c
index c478e7b..872da6d 100644
--- a/sys/dev/bm/if_bm.c
+++ b/sys/dev/bm/if_bm.c
@@ -135,15 +135,12 @@ static device_method_t bm_methods[] = {
DEVMETHOD(device_detach, bm_detach),
DEVMETHOD(device_shutdown, bm_shutdown),
- /* bus interface, for miibus */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, bm_miibus_readreg),
DEVMETHOD(miibus_writereg, bm_miibus_writereg),
DEVMETHOD(miibus_statchg, bm_miibus_statchg),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t bm_macio_driver = {
diff --git a/sys/dev/bwi/if_bwi.c b/sys/dev/bwi/if_bwi.c
index b155507..8db43b3 100644
--- a/sys/dev/bwi/if_bwi.c
+++ b/sys/dev/bwi/if_bwi.c
@@ -96,9 +96,9 @@ struct bwi_myaddr_bssid {
} __packed;
static struct ieee80211vap *bwi_vap_create(struct ieee80211com *,
- const char [IFNAMSIZ], int, int, int,
- const uint8_t [IEEE80211_ADDR_LEN],
- const uint8_t [IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void bwi_vap_delete(struct ieee80211vap *);
static void bwi_init(void *);
static int bwi_ioctl(struct ifnet *, u_long, caddr_t);
@@ -118,7 +118,7 @@ static void bwi_calibrate(void *);
static int bwi_calc_rssi(struct bwi_softc *, const struct bwi_rxbuf_hdr *);
static int bwi_calc_noise(struct bwi_softc *);
-static __inline uint8_t bwi_plcp2rate(uint32_t, enum ieee80211_phymode);
+static __inline uint8_t bwi_plcp2rate(uint32_t, enum ieee80211_phytype);
static void bwi_rx_radiotap(struct bwi_softc *, struct mbuf *,
struct bwi_rxbuf_hdr *, const void *, int, int, int);
@@ -591,10 +591,10 @@ bwi_detach(struct bwi_softc *sc)
}
static struct ieee80211vap *
-bwi_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+bwi_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct bwi_vap *bvp;
struct ieee80211vap *vap;
@@ -2667,9 +2667,9 @@ bwi_rxeof(struct bwi_softc *sc, int end_idx)
m_adj(m, sizeof(*hdr) + wh_ofs);
if (htole16(hdr->rxh_flags1) & BWI_RXH_F1_OFDM)
- rate = bwi_plcp2rate(plcp, IEEE80211_MODE_11G);
+ rate = bwi_plcp2rate(plcp, IEEE80211_T_OFDM);
else
- rate = bwi_plcp2rate(plcp, IEEE80211_MODE_11B);
+ rate = bwi_plcp2rate(plcp, IEEE80211_T_CCK);
/* RX radio tap */
if (ieee80211_radiotap_active(ic))
@@ -3801,10 +3801,10 @@ bwi_calc_noise(struct bwi_softc *sc)
}
static __inline uint8_t
-bwi_plcp2rate(const uint32_t plcp0, enum ieee80211_phymode phymode)
+bwi_plcp2rate(const uint32_t plcp0, enum ieee80211_phytype type)
{
- uint32_t plcp = le32toh(plcp0) & IEEE80211_OFDM_PLCP_RATE_MASK;
- return (ieee80211_plcp2rate(plcp, phymode));
+ uint32_t plcp = le32toh(plcp0) & IEEE80211_OFDM_PLCP_RATE_MASK;
+ return (ieee80211_plcp2rate(plcp, type));
}
static void
diff --git a/sys/dev/bwn/if_bwn.c b/sys/dev/bwn/if_bwn.c
index af10ace..b2cd527 100644
--- a/sys/dev/bwn/if_bwn.c
+++ b/sys/dev/bwn/if_bwn.c
@@ -193,8 +193,8 @@ static void bwn_scan_start(struct ieee80211com *);
static void bwn_scan_end(struct ieee80211com *);
static void bwn_set_channel(struct ieee80211com *);
static struct ieee80211vap *bwn_vap_create(struct ieee80211com *,
- const char [IFNAMSIZ], int, int,
- int, const uint8_t [IEEE80211_ADDR_LEN],
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
const uint8_t [IEEE80211_ADDR_LEN]);
static void bwn_vap_delete(struct ieee80211vap *);
static void bwn_stop(struct bwn_softc *, int);
@@ -2927,10 +2927,10 @@ fail:
}
static struct ieee80211vap *
-bwn_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac0[IEEE80211_ADDR_LEN])
+bwn_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac0[IEEE80211_ADDR_LEN])
{
struct ifnet *ifp = ic->ic_ifp;
struct bwn_softc *sc = ifp->if_softc;
@@ -14226,7 +14226,7 @@ static device_method_t bwn_methods[] = {
DEVMETHOD(device_detach, bwn_detach),
DEVMETHOD(device_suspend, bwn_suspend),
DEVMETHOD(device_resume, bwn_resume),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t bwn_driver = {
"bwn",
diff --git a/sys/dev/bwn/if_bwnvar.h b/sys/dev/bwn/if_bwnvar.h
index 461587d..f6647b0 100644
--- a/sys/dev/bwn/if_bwnvar.h
+++ b/sys/dev/bwn/if_bwnvar.h
@@ -714,7 +714,7 @@ struct bwn_txhdr {
uint16_t tx_status;
struct bwn_plcp6 rts_plcp;
uint8_t rts_frame[16];
- uint8_t pad1[2];;
+ uint8_t pad1[2];
struct bwn_plcp6 plcp;
} __packed old;
/* format > r410 */
diff --git a/sys/dev/bxe/bxe_reg.h b/sys/dev/bxe/bxe_reg.h
index e561ce6..df2e707 100644
--- a/sys/dev/bxe/bxe_reg.h
+++ b/sys/dev/bxe/bxe_reg.h
@@ -1594,7 +1594,7 @@
/*
* [RW 1] Setting this bit enables a timer in the GRC block to timeout an
* access that does not finish within
- * ~misc_registers_grc_timout_val.grc_timeout_val cycles. When this bit is
+ * ~misc_registers_grc_timeout_val.grc_timeout_val cycles. When this bit is
* cleared; this timeout is disabled. If this timeout occurs; the GRC shall
* assert it attention output.
*/
diff --git a/sys/dev/bxe/if_bxe.c b/sys/dev/bxe/if_bxe.c
index 9957359..6ccd045 100644
--- a/sys/dev/bxe/if_bxe.c
+++ b/sys/dev/bxe/if_bxe.c
@@ -400,11 +400,7 @@ static device_method_t bxe_methods[] = {
DEVMETHOD(device_detach, bxe_detach),
DEVMETHOD(device_shutdown, bxe_shutdown),
- /* Bus interface (bus_if.h) */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
- KOBJMETHOD_END
+ DEVMETHOD_END
};
diff --git a/sys/dev/cas/if_cas.c b/sys/dev/cas/if_cas.c
index 858c8bc..894f466 100644
--- a/sys/dev/cas/if_cas.c
+++ b/sys/dev/cas/if_cas.c
@@ -2600,16 +2600,12 @@ static device_method_t cas_pci_methods[] = {
/* Use the suspend handler here, it is all that is required. */
DEVMETHOD(device_shutdown, cas_pci_suspend),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, cas_mii_readreg),
DEVMETHOD(miibus_writereg, cas_mii_writereg),
DEVMETHOD(miibus_statchg, cas_mii_statchg),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t cas_pci_driver = {
diff --git a/sys/dev/ce/if_ce.c b/sys/dev/ce/if_ce.c
index d151b42..7fb208a 100644
--- a/sys/dev/ce/if_ce.c
+++ b/sys/dev/ce/if_ce.c
@@ -1313,9 +1313,11 @@ static int ce_ioctl (struct cdev *dev, u_long cmd, caddr_t data, int flag, struc
IFP2SP(d->ifp)->pp_flags &= ~(PP_FR);
IFP2SP(d->ifp)->pp_flags |= PP_KEEPALIVE;
d->ifp->if_flags |= PP_CISCO;
- } else if (! strcmp ("fr", (char*)data) && PP_FR) {
+#if PP_FR != 0
+ } else if (! strcmp ("fr", (char*)data)) {
d->ifp->if_flags &= ~(PP_CISCO);
IFP2SP(d->ifp)->pp_flags |= PP_FR | PP_KEEPALIVE;
+#endif
} else if (! strcmp ("ppp", (char*)data)) {
IFP2SP(d->ifp)->pp_flags &= ~PP_FR;
IFP2SP(d->ifp)->pp_flags &= ~PP_KEEPALIVE;
diff --git a/sys/dev/cesa/cesa.c b/sys/dev/cesa/cesa.c
index 54bb8e3..5d67fc6 100644
--- a/sys/dev/cesa/cesa.c
+++ b/sys/dev/cesa/cesa.c
@@ -93,16 +93,12 @@ static device_method_t cesa_methods[] = {
DEVMETHOD(device_attach, cesa_attach),
DEVMETHOD(device_detach, cesa_detach),
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* Crypto device methods */
DEVMETHOD(cryptodev_newsession, cesa_newsession),
DEVMETHOD(cryptodev_freesession,cesa_freesession),
DEVMETHOD(cryptodev_process, cesa_process),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t cesa_driver = {
diff --git a/sys/dev/cfe/cfe_console.c b/sys/dev/cfe/cfe_console.c
index 5a6b0a2..485fd08 100644
--- a/sys/dev/cfe/cfe_console.c
+++ b/sys/dev/cfe/cfe_console.c
@@ -76,6 +76,8 @@ static cn_init_t cfe_cninit;
static cn_term_t cfe_cnterm;
static cn_getc_t cfe_cngetc;
static cn_putc_t cfe_cnputc;
+static cn_grab_t cfe_cngrab;
+static cn_ungrab_t cfe_cnungrab;
CONSOLE_DRIVER(cfe);
@@ -183,6 +185,18 @@ cfe_cnterm(struct consdev *cp)
}
+static void
+cfe_cngrab(struct consdev *cp)
+{
+
+}
+
+static void
+cfe_cnungrab(struct consdev *cp)
+{
+
+}
+
static int
cfe_cngetc(struct consdev *cp)
{
diff --git a/sys/dev/cm/smc90cx6.c b/sys/dev/cm/smc90cx6.c
index 719e468..eb89675 100644
--- a/sys/dev/cm/smc90cx6.c
+++ b/sys/dev/cm/smc90cx6.c
@@ -596,7 +596,7 @@ cleanup:
}
}
-__inline static void
+static inline void
cm_tint_locked(sc, isr)
struct cm_softc *sc;
int isr;
diff --git a/sys/dev/cp/if_cp.c b/sys/dev/cp/if_cp.c
index e640230..49e329e 100644
--- a/sys/dev/cp/if_cp.c
+++ b/sys/dev/cp/if_cp.c
@@ -1052,9 +1052,11 @@ static int cp_ioctl (struct cdev *dev, u_long cmd, caddr_t data, int flag, struc
IFP2SP(d->ifp)->pp_flags &= ~(PP_FR);
IFP2SP(d->ifp)->pp_flags |= PP_KEEPALIVE;
d->ifp->if_flags |= PP_CISCO;
- } else if (! strcmp ("fr", (char*)data) && PP_FR) {
+#if PP_FR != 0
+ } else if (! strcmp ("fr", (char*)data)) {
d->ifp->if_flags &= ~(PP_CISCO);
IFP2SP(d->ifp)->pp_flags |= PP_FR | PP_KEEPALIVE;
+#endif
} else if (! strcmp ("ppp", (char*)data)) {
IFP2SP(d->ifp)->pp_flags &= ~PP_FR;
IFP2SP(d->ifp)->pp_flags &= ~PP_KEEPALIVE;
diff --git a/sys/dev/cpuctl/cpuctl.c b/sys/dev/cpuctl/cpuctl.c
index c3a2434..1553457 100644
--- a/sys/dev/cpuctl/cpuctl.c
+++ b/sys/dev/cpuctl/cpuctl.c
@@ -74,6 +74,8 @@ static int cpuctl_do_update(int cpu, cpuctl_update_args_t *data,
static int update_intel(int cpu, cpuctl_update_args_t *args,
struct thread *td);
static int update_amd(int cpu, cpuctl_update_args_t *args, struct thread *td);
+static int update_via(int cpu, cpuctl_update_args_t *args,
+ struct thread *td);
static struct cdev **cpuctl_devs;
static MALLOC_DEFINE(M_CPUCTL, "cpuctl", "CPUCTL buffer");
@@ -281,8 +283,10 @@ cpuctl_do_update(int cpu, cpuctl_update_args_t *data, struct thread *td)
vendor[12] = '\0';
if (strncmp(vendor, INTEL_VENDOR_ID, sizeof(INTEL_VENDOR_ID)) == 0)
ret = update_intel(cpu, data, td);
- else if(strncmp(vendor, INTEL_VENDOR_ID, sizeof(AMD_VENDOR_ID)) == 0)
+ else if(strncmp(vendor, AMD_VENDOR_ID, sizeof(AMD_VENDOR_ID)) == 0)
ret = update_amd(cpu, data, td);
+ else if(strncmp(vendor, CENTAUR_VENDOR_ID, sizeof(CENTAUR_VENDOR_ID)) == 0)
+ ret = update_via(cpu, data, td);
else
ret = ENXIO;
return (ret);
@@ -402,6 +406,81 @@ fail:
return (ret);
}
+static int
+update_via(int cpu, cpuctl_update_args_t *args, struct thread *td)
+{
+ void *ptr = NULL;
+ uint64_t rev0, rev1, res;
+ uint32_t tmp[4];
+ int is_bound = 0;
+ int oldcpu;
+ int ret;
+
+ if (args->size == 0 || args->data == NULL) {
+ DPRINTF("[cpuctl,%d]: zero-sized firmware image", __LINE__);
+ return (EINVAL);
+ }
+ if (args->size > UCODE_SIZE_MAX) {
+ DPRINTF("[cpuctl,%d]: firmware image too large", __LINE__);
+ return (EINVAL);
+ }
+
+ /*
+ * 4 byte alignment required.
+ */
+ ptr = malloc(args->size + 16, M_CPUCTL, M_WAITOK);
+ ptr = (void *)(16 + ((intptr_t)ptr & ~0xf));
+ if (copyin(args->data, ptr, args->size) != 0) {
+ DPRINTF("[cpuctl,%d]: copyin %p->%p of %zd bytes failed",
+ __LINE__, args->data, ptr, args->size);
+ ret = EFAULT;
+ goto fail;
+ }
+ oldcpu = td->td_oncpu;
+ is_bound = cpu_sched_is_bound(td);
+ set_cpu(cpu, td);
+ critical_enter();
+ rdmsr_safe(MSR_BIOS_SIGN, &rev0); /* Get current micorcode revision. */
+
+ /*
+ * Perform update.
+ */
+ wrmsr_safe(MSR_BIOS_UPDT_TRIG, (uintptr_t)(ptr));
+ do_cpuid(1, tmp);
+
+ /*
+ * Result are in low byte of MSR FCR5:
+ * 0x00: No update has been attempted since RESET.
+ * 0x01: The last attempted update was successful.
+ * 0x02: The last attempted update was unsuccessful due to a bad
+ * environment. No update was loaded and any preexisting
+ * patches are still active.
+ * 0x03: The last attempted update was not applicable to this processor.
+ * No update was loaded and any preexisting patches are still
+ * active.
+ * 0x04: The last attempted update was not successful due to an invalid
+ * update data block. No update was loaded and any preexisting
+ * patches are still active
+ */
+ rdmsr_safe(0x1205, &res);
+ res &= 0xff;
+ critical_exit();
+ rdmsr_safe(MSR_BIOS_SIGN, &rev1); /* Get new microcode revision. */
+ restore_cpu(oldcpu, is_bound, td);
+
+ DPRINTF("[cpu,%d]: rev0=%x rev1=%x res=%x\n", __LINE__,
+ (unsigned)(rev0 >> 32), (unsigned)(rev1 >> 32), (unsigned)res);
+
+ if (res != 0x01)
+ ret = EINVAL;
+ else
+ ret = 0;
+fail:
+ if (ptr != NULL)
+ contigfree(ptr, args->size, M_CPUCTL);
+ return (ret);
+}
+
int
cpuctl_open(struct cdev *dev, int flags, int fmt __unused, struct thread *td)
{
diff --git a/sys/dev/cxgb/common/cxgb_aq100x.c b/sys/dev/cxgb/common/cxgb_aq100x.c
index 46f07ca..d36d07a 100644
--- a/sys/dev/cxgb/common/cxgb_aq100x.c
+++ b/sys/dev/cxgb/common/cxgb_aq100x.c
@@ -232,7 +232,7 @@ aq100x_power_down(struct cphy *phy, int off)
err = t3_mdio_change_bits(phy, MDIO_DEV_PMA_PMD, MII_BMCR, BMCR_PDOWN,
off ? BMCR_PDOWN : 0);
if (err || off)
- return (v);
+ return (err);
msleep(300);
do {
diff --git a/sys/dev/cxgb/cxgb_main.c b/sys/dev/cxgb/cxgb_main.c
index ae32221..c5d46a0 100644
--- a/sys/dev/cxgb/cxgb_main.c
+++ b/sys/dev/cxgb/cxgb_main.c
@@ -129,11 +129,7 @@ static device_method_t cxgb_controller_methods[] = {
DEVMETHOD(device_attach, cxgb_controller_attach),
DEVMETHOD(device_detach, cxgb_controller_detach),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t cxgb_controller_driver = {
diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h
index 8624fc1..7e56932 100644
--- a/sys/dev/cxgbe/adapter.h
+++ b/sys/dev/cxgbe/adapter.h
@@ -31,6 +31,7 @@
#ifndef __T4_ADAPTER_H__
#define __T4_ADAPTER_H__
+#include <sys/kernel.h>
#include <sys/bus.h>
#include <sys/rman.h>
#include <sys/types.h>
@@ -46,8 +47,9 @@
#include <netinet/tcp_lro.h>
#include "offload.h"
-#include "common/t4fw_interface.h"
+#include "firmware/t4fw_interface.h"
+#define T4_CFGNAME "t4fw_cfg"
#define T4_FWNAME "t4fw"
MALLOC_DECLARE(M_CXGBE);
@@ -110,25 +112,21 @@ enum {
FW_IQ_QSIZE = 256,
FW_IQ_ESIZE = 64, /* At least 64 mandated by the firmware spec */
- INTR_IQ_QSIZE = 64,
- INTR_IQ_ESIZE = 64, /* Handles some CPLs too, do not reduce */
-
- CTRL_EQ_QSIZE = 128,
- CTRL_EQ_ESIZE = 64,
-
RX_IQ_QSIZE = 1024,
RX_IQ_ESIZE = 64, /* At least 64 so CPL_RX_PKT will fit */
- RX_FL_ESIZE = 64, /* 8 64bit addresses */
+ EQ_ESIZE = 64, /* All egress queues use this entry size */
+ RX_FL_ESIZE = EQ_ESIZE, /* 8 64bit addresses */
#if MJUMPAGESIZE != MCLBYTES
FL_BUF_SIZES = 4, /* cluster, jumbop, jumbo9k, jumbo16k */
#else
FL_BUF_SIZES = 3, /* cluster, jumbo9k, jumbo16k */
#endif
+ CTRL_EQ_QSIZE = 128,
+
TX_EQ_QSIZE = 1024,
- TX_EQ_ESIZE = 64,
TX_SGL_SEGS = 36,
TX_WR_FLITS = SGE_MAX_WR_LEN / 8
};
@@ -144,13 +142,16 @@ enum {
/* adapter flags */
FULL_INIT_DONE = (1 << 0),
FW_OK = (1 << 1),
- INTR_SHARED = (1 << 2), /* one set of intrq's for all ports */
+ INTR_DIRECT = (1 << 2), /* direct interrupts for everything */
+ MASTER_PF = (1 << 3),
+ ADAP_SYSCTL_CTX = (1 << 4),
CXGBE_BUSY = (1 << 9),
/* port flags */
DOOMED = (1 << 0),
- VI_ENABLED = (1 << 1),
+ PORT_INIT_DONE = (1 << 1),
+ PORT_SYSCTL_CTX = (1 << 2),
};
#define IS_DOOMED(pi) (pi->flags & DOOMED)
@@ -186,6 +187,12 @@ struct port_info {
int first_txq; /* index of first tx queue */
int nrxq; /* # of rx queues */
int first_rxq; /* index of first rx queue */
+#ifndef TCP_OFFLOAD_DISABLE
+ int nofldtxq; /* # of offload tx queues */
+ int first_ofld_txq; /* index of first offload tx queue */
+ int nofldrxq; /* # of offload rx queues */
+ int first_ofld_rxq; /* index of first offload rx queue */
+#endif
int tmr_idx;
int pktc_idx;
int qsize_rxq;
@@ -194,11 +201,8 @@ struct port_info {
struct link_config link_cfg;
struct port_stats stats;
- struct taskqueue *tq;
struct callout tick;
- struct sysctl_ctx_list ctx; /* lives from ifconfig up to down */
- struct sysctl_oid *oid_rxq;
- struct sysctl_oid *oid_txq;
+ struct sysctl_ctx_list ctx; /* from ifconfig up to driver detach */
uint8_t hw_addr[ETHER_ADDR_LEN]; /* factory MAC address, won't change */
};
@@ -222,17 +226,26 @@ struct tx_map {
bus_dmamap_t map;
};
+/* DMA maps used for tx */
+struct tx_maps {
+ struct tx_map *maps;
+ uint32_t map_total; /* # of DMA maps */
+ uint32_t map_pidx; /* next map to be used */
+ uint32_t map_cidx; /* reclaimed up to this index */
+ uint32_t map_avail; /* # of available maps */
+};
+
struct tx_sdesc {
uint8_t desc_used; /* # of hardware descriptors used by the WR */
uint8_t credits; /* NIC txq: # of frames sent out in the WR */
};
-typedef void (iq_intr_handler_t)(void *);
-
enum {
/* iq flags */
- IQ_ALLOCATED = (1 << 1), /* firmware resources allocated */
- IQ_STARTED = (1 << 2), /* started */
+ IQ_ALLOCATED = (1 << 0), /* firmware resources allocated */
+ IQ_HAS_FL = (1 << 1), /* iq associated with a freelist */
+ IQ_INTR = (1 << 2), /* iq takes direct interrupt */
+ IQ_LRO_ENABLED = (1 << 3), /* iq is an eth rxq with LRO enabled */
/* iq state */
IQS_DISABLED = 0,
@@ -252,26 +265,35 @@ struct sge_iq {
uint16_t abs_id; /* absolute SGE id for the iq */
int8_t intr_pktc_idx; /* packet count threshold index */
int8_t pad0;
- iq_intr_handler_t *handler;
__be64 *desc; /* KVA of descriptor ring */
- volatile uint32_t state;
+ volatile int state;
struct adapter *adapter;
const __be64 *cdesc; /* current descriptor */
uint8_t gen; /* generation bit */
uint8_t intr_params; /* interrupt holdoff parameters */
- uint8_t intr_next; /* holdoff for next interrupt */
+ uint8_t intr_next; /* XXX: holdoff for next interrupt */
uint8_t esize; /* size (bytes) of each entry in the queue */
uint16_t qsize; /* size (# of entries) of the queue */
uint16_t cidx; /* consumer index */
- uint16_t cntxt_id; /* SGE context id for the iq */
+ uint16_t cntxt_id; /* SGE context id for the iq */
+
+ STAILQ_ENTRY(sge_iq) link;
};
enum {
+ EQ_CTRL = 1,
+ EQ_ETH = 2,
+#ifndef TCP_OFFLOAD_DISABLE
+ EQ_OFLD = 3,
+#endif
+
/* eq flags */
- EQ_ALLOCATED = (1 << 1), /* firmware resources allocated */
- EQ_STARTED = (1 << 2), /* started */
- EQ_CRFLUSHED = (1 << 3), /* expecting an update from SGE */
+ EQ_TYPEMASK = 7, /* 3 lsbits hold the type */
+ EQ_ALLOCATED = (1 << 3), /* firmware resources allocated */
+ EQ_DOOMED = (1 << 4), /* about to be destroyed */
+ EQ_CRFLUSHED = (1 << 5), /* expecting an update from SGE */
+ EQ_STALLED = (1 << 6), /* out of hw descriptors or dmamaps */
};
/*
@@ -281,10 +303,11 @@ enum {
* consumes them) but it's special enough to have its own struct (see sge_fl).
*/
struct sge_eq {
+ unsigned int flags; /* MUST be first */
+ unsigned int cntxt_id; /* SGE context id for the eq */
bus_dma_tag_t desc_tag;
bus_dmamap_t desc_map;
char lockname[16];
- unsigned int flags;
struct mtx eq_lock;
struct tx_desc *desc; /* KVA of descriptor ring */
@@ -297,9 +320,24 @@ struct sge_eq {
uint16_t pidx; /* producer idx (desc idx) */
uint16_t pending; /* # of descriptors used since last doorbell */
uint16_t iqid; /* iq that gets egr_update for the eq */
- unsigned int cntxt_id; /* SGE context id for the eq */
+ uint8_t tx_chan; /* tx channel used by the eq */
+ struct task tx_task;
+ struct callout tx_callout;
+
+ /* stats */
+
+ uint32_t egr_update; /* # of SGE_EGR_UPDATE notifications for eq */
+ uint32_t unstalled; /* recovered from stall */
+};
+
+enum {
+ FL_STARVING = (1 << 0), /* on the adapter's list of starving fl's */
+ FL_DOOMED = (1 << 1), /* about to be destroyed */
};
+#define FL_RUNNING_LOW(fl) (fl->cap - fl->needed <= fl->lowat)
+#define FL_NOT_RUNNING_LOW(fl) (fl->cap - fl->needed >= 2 * fl->lowat)
+
struct sge_fl {
bus_dma_tag_t desc_tag;
bus_dmamap_t desc_map;
@@ -307,6 +345,7 @@ struct sge_fl {
uint8_t tag_idx;
struct mtx fl_lock;
char lockname[16];
+ int flags;
__be64 *desc; /* KVA of descriptor ring, ptr to addresses */
bus_addr_t ba; /* bus address of descriptor ring */
@@ -317,8 +356,10 @@ struct sge_fl {
uint32_t cidx; /* consumer idx (buffer idx, NOT hw desc idx) */
uint32_t pidx; /* producer idx (buffer idx, NOT hw desc idx) */
uint32_t needed; /* # of buffers needed to fill up fl. */
+ uint32_t lowat; /* # of buffers <= this means fl needs help */
uint32_t pending; /* # of bufs allocated since last doorbell */
unsigned int dmamap_failed;
+ TAILQ_ENTRY(sge_fl) link; /* All starving freelists */
};
/* txq: SGE egress queue + what's needed for Ethernet NIC */
@@ -330,14 +371,8 @@ struct sge_txq {
struct buf_ring *br; /* tx buffer ring */
struct tx_sdesc *sdesc; /* KVA of software descriptor ring */
struct mbuf *m; /* held up due to temporary resource shortage */
- struct task resume_tx;
- /* DMA maps used for tx */
- struct tx_map *maps;
- uint32_t map_total; /* # of DMA maps */
- uint32_t map_pidx; /* next map to be used */
- uint32_t map_cidx; /* reclaimed up to this index */
- uint32_t map_avail; /* # of available maps */
+ struct tx_maps txmaps;
/* stats for common events first */
@@ -354,20 +389,14 @@ struct sge_txq {
uint32_t no_dmamap; /* no DMA map to load the mbuf */
uint32_t no_desc; /* out of hardware descriptors */
- uint32_t egr_update; /* # of SGE_EGR_UPDATE notifications for txq */
} __aligned(CACHE_LINE_SIZE);
-enum {
- RXQ_LRO_ENABLED = (1 << 0)
-};
-
/* rxq: SGE ingress queue + SGE free list + miscellaneous items */
struct sge_rxq {
struct sge_iq iq; /* MUST be first */
- struct sge_fl fl;
+ struct sge_fl fl; /* MUST follow iq */
struct ifnet *ifp; /* the interface this rxq belongs to */
- unsigned int flags;
#ifdef INET
struct lro_ctrl lro; /* LRO state */
#endif
@@ -381,12 +410,28 @@ struct sge_rxq {
} __aligned(CACHE_LINE_SIZE);
-/* ctrlq: SGE egress queue + stats for control queue */
-struct sge_ctrlq {
+#ifndef TCP_OFFLOAD_DISABLE
+/* ofld_rxq: SGE ingress queue + SGE free list + miscellaneous items */
+struct sge_ofld_rxq {
+ struct sge_iq iq; /* MUST be first */
+ struct sge_fl fl; /* MUST follow iq */
+} __aligned(CACHE_LINE_SIZE);
+#endif
+
+/*
+ * wrq: SGE egress queue that is given prebuilt work requests. Both the control
+ * and offload tx queues are of this type.
+ */
+struct sge_wrq {
struct sge_eq eq; /* MUST be first */
+ struct adapter *adapter;
+ struct mbuf *head; /* held up due to lack of descriptors */
+ struct mbuf *tail; /* valid only if head is valid */
+
/* stats for common events first */
+ uint64_t tx_wrs; /* # of tx work requests */
/* stats for not-that-common events */
@@ -394,20 +439,28 @@ struct sge_ctrlq {
} __aligned(CACHE_LINE_SIZE);
struct sge {
- uint16_t timer_val[SGE_NTIMERS];
- uint8_t counter_val[SGE_NCOUNTERS];
+ int timer_val[SGE_NTIMERS];
+ int counter_val[SGE_NCOUNTERS];
int fl_starve_threshold;
- int nrxq; /* total rx queues (all ports and the rest) */
- int ntxq; /* total tx queues (all ports and the rest) */
- int niq; /* total ingress queues */
- int neq; /* total egress queues */
+ int nrxq; /* total # of Ethernet rx queues */
+ int ntxq; /* total # of Ethernet tx tx queues */
+#ifndef TCP_OFFLOAD_DISABLE
+ int nofldrxq; /* total # of TOE rx queues */
+ int nofldtxq; /* total # of TOE tx queues */
+#endif
+ int niq; /* total # of ingress queues */
+ int neq; /* total # of egress queues */
struct sge_iq fwq; /* Firmware event queue */
- struct sge_ctrlq *ctrlq;/* Control queues */
- struct sge_iq *intrq; /* Interrupt queues */
+ struct sge_wrq mgmtq; /* Management queue (control queue) */
+ struct sge_wrq *ctrlq; /* Control queues */
struct sge_txq *txq; /* NIC tx queues */
struct sge_rxq *rxq; /* NIC rx queues */
+#ifndef TCP_OFFLOAD_DISABLE
+ struct sge_wrq *ofld_txq; /* TOE tx queues */
+ struct sge_ofld_rxq *ofld_rxq; /* TOE rx queues */
+#endif
uint16_t iq_start;
int eq_start;
@@ -415,7 +468,12 @@ struct sge {
struct sge_eq **eqmap; /* eq->cntxt_id to eq mapping */
};
+struct rss_header;
+typedef int (*cpl_handler_t)(struct sge_iq *, const struct rss_header *,
+ struct mbuf *);
+
struct adapter {
+ SLIST_ENTRY(adapter) link;
device_t dev;
struct cdev *cdev;
@@ -444,27 +502,47 @@ struct adapter {
struct sge sge;
+ struct taskqueue *tq[NCHAN]; /* taskqueues that flush data out */
struct port_info *port[MAX_NPORTS];
uint8_t chan_map[NCHAN];
+ uint32_t filter_mode;
+#ifndef TCP_OFFLOAD_DISABLE
+ struct uld_softc tom;
+ struct tom_tunables tt;
+#endif
struct l2t_data *l2t; /* L2 table */
struct tid_info tids;
- int registered_device_map;
int open_device_map;
+#ifndef TCP_OFFLOAD_DISABLE
+ int offload_map;
+#endif
int flags;
char fw_version[32];
+ unsigned int cfcsum;
struct adapter_params params;
struct t4_virt_res vres;
- struct sysctl_ctx_list ctx; /* from first_port_up to last_port_down */
- struct sysctl_oid *oid_fwq;
- struct sysctl_oid *oid_ctrlq;
- struct sysctl_oid *oid_intrq;
+ uint16_t linkcaps;
+ uint16_t niccaps;
+ uint16_t toecaps;
+ uint16_t rdmacaps;
+ uint16_t iscsicaps;
+ uint16_t fcoecaps;
+
+ struct sysctl_ctx_list ctx; /* from adapter_full_init to full_uninit */
struct mtx sc_lock;
char lockname[16];
+
+ /* Starving free lists */
+ struct mtx sfl_lock; /* same cache-line as sc_lock? but that's ok */
+ TAILQ_HEAD(, sge_fl) sfl;
+ struct callout sfl_callout;
+
+ cpl_handler_t cpl_handler[256] __aligned(CACHE_LINE_SIZE);
};
#define ADAPTER_LOCK(sc) mtx_lock(&(sc)->sc_lock)
@@ -506,11 +584,15 @@ struct adapter {
#define for_each_rxq(pi, iter, rxq) \
rxq = &pi->adapter->sge.rxq[pi->first_rxq]; \
for (iter = 0; iter < pi->nrxq; ++iter, ++rxq)
+#define for_each_ofld_txq(pi, iter, ofld_txq) \
+ ofld_txq = &pi->adapter->sge.ofld_txq[pi->first_ofld_txq]; \
+ for (iter = 0; iter < pi->nofldtxq; ++iter, ++ofld_txq)
+#define for_each_ofld_rxq(pi, iter, ofld_rxq) \
+ ofld_rxq = &pi->adapter->sge.ofld_rxq[pi->first_ofld_rxq]; \
+ for (iter = 0; iter < pi->nofldrxq; ++iter, ++ofld_rxq)
/* One for errors, one for firmware events */
#define T4_EXTRA_INTR 2
-#define NINTRQ(sc) ((sc)->intr_count > T4_EXTRA_INTR ? \
- (sc)->intr_count - T4_EXTRA_INTR : 1)
static inline uint32_t
t4_read_reg(struct adapter *sc, uint32_t reg)
@@ -589,29 +671,52 @@ static inline bool is_10G_port(const struct port_info *pi)
return ((pi->link_cfg.supported & FW_PORT_CAP_SPEED_10G) != 0);
}
+static inline int tx_resume_threshold(struct sge_eq *eq)
+{
+ return (eq->qsize / 4);
+}
+
/* t4_main.c */
-void cxgbe_txq_start(void *, int);
+void t4_tx_task(void *, int);
+void t4_tx_callout(void *);
int t4_os_find_pci_capability(struct adapter *, int);
int t4_os_pci_save_state(struct adapter *);
int t4_os_pci_restore_state(struct adapter *);
void t4_os_portmod_changed(const struct adapter *, int);
void t4_os_link_changed(struct adapter *, int, int);
+void t4_iterate(void (*)(struct adapter *, void *), void *);
+int t4_register_cpl_handler(struct adapter *, int, cpl_handler_t);
/* t4_sge.c */
void t4_sge_modload(void);
-void t4_sge_init(struct adapter *);
+int t4_sge_init(struct adapter *);
int t4_create_dma_tag(struct adapter *);
int t4_destroy_dma_tag(struct adapter *);
int t4_setup_adapter_queues(struct adapter *);
int t4_teardown_adapter_queues(struct adapter *);
-int t4_setup_eth_queues(struct port_info *);
-int t4_teardown_eth_queues(struct port_info *);
+int t4_setup_port_queues(struct port_info *);
+int t4_teardown_port_queues(struct port_info *);
+int t4_alloc_tx_maps(struct tx_maps *, bus_dma_tag_t, int, int);
+void t4_free_tx_maps(struct tx_maps *, bus_dma_tag_t);
void t4_intr_all(void *);
void t4_intr(void *);
void t4_intr_err(void *);
void t4_intr_evt(void *);
int t4_mgmt_tx(struct adapter *, struct mbuf *);
+int t4_wrq_tx_locked(struct adapter *, struct sge_wrq *, struct mbuf *);
int t4_eth_tx(struct ifnet *, struct sge_txq *, struct mbuf *);
void t4_update_fl_bufsize(struct ifnet *);
+int can_resume_tx(struct sge_eq *);
+
+static inline int t4_wrq_tx(struct adapter *sc, struct sge_wrq *wrq, struct mbuf *m)
+{
+ int rc;
+
+ TXQ_LOCK(wrq);
+ rc = t4_wrq_tx_locked(sc, wrq, m);
+ TXQ_UNLOCK(wrq);
+ return (rc);
+}
+
#endif
diff --git a/sys/dev/cxgbe/common/common.h b/sys/dev/cxgbe/common/common.h
index 913be9b..81866df 100644
--- a/sys/dev/cxgbe/common/common.h
+++ b/sys/dev/cxgbe/common/common.h
@@ -42,6 +42,15 @@ enum {
enum { MEM_EDC0, MEM_EDC1, MEM_MC };
+enum {
+ MEMWIN0_APERTURE = 2048,
+ MEMWIN0_BASE = 0x1b800,
+ MEMWIN1_APERTURE = 32768,
+ MEMWIN1_BASE = 0x28000,
+ MEMWIN2_APERTURE = 65536,
+ MEMWIN2_BASE = 0x30000,
+};
+
enum dev_master { MASTER_CANT, MASTER_MAY, MASTER_MUST };
enum dev_state { DEV_STATE_UNINIT, DEV_STATE_INIT, DEV_STATE_ERR };
@@ -53,8 +62,8 @@ enum {
};
#define FW_VERSION_MAJOR 1
-#define FW_VERSION_MINOR 3
-#define FW_VERSION_MICRO 10
+#define FW_VERSION_MINOR 4
+#define FW_VERSION_MICRO 16
struct port_stats {
u64 tx_octets; /* total # of octets in good frames */
@@ -190,7 +199,6 @@ struct tp_proxy_stats {
struct tp_cpl_stats {
u32 req[4];
u32 rsp[4];
- u32 tx_err[4];
};
struct tp_rdma_stats {
@@ -214,9 +222,9 @@ struct vpd_params {
};
struct pci_params {
- unsigned int vpd_cap_addr;
- unsigned char speed;
- unsigned char width;
+ unsigned int vpd_cap_addr;
+ unsigned short speed;
+ unsigned short width;
};
/*
@@ -239,20 +247,20 @@ struct adapter_params {
unsigned int fw_vers;
unsigned int tp_vers;
- u8 api_vers[7];
unsigned short mtus[NMTUS];
unsigned short a_wnd[NCCTRL_WIN];
unsigned short b_wnd[NCCTRL_WIN];
- unsigned int mc_size; /* MC memory size */
- unsigned int nfilters; /* size of filter region */
+ unsigned int mc_size; /* MC memory size */
+ unsigned int nfilters; /* size of filter region */
unsigned int cim_la_size;
- unsigned int nports; /* # of ethernet ports */
+ /* Used as int in sysctls, do not reduce size */
+ unsigned int nports; /* # of ethernet ports */
unsigned int portvec;
- unsigned int rev; /* chip revision */
+ unsigned int rev; /* chip revision */
unsigned int offload;
unsigned int ofldq_wr_cred;
@@ -366,6 +374,9 @@ int t4_seeprom_wp(struct adapter *adapter, int enable);
int t4_read_flash(struct adapter *adapter, unsigned int addr, unsigned int nwords,
u32 *data, int byte_oriented);
int t4_load_fw(struct adapter *adapter, const u8 *fw_data, unsigned int size);
+int t4_load_boot(struct adapter *adap, const u8 *boot_data,
+ unsigned int boot_addr, unsigned int size);
+unsigned int t4_flash_cfg_addr(struct adapter *adapter);
int t4_load_cfg(struct adapter *adapter, const u8 *cfg_data, unsigned int size);
int t4_get_fw_version(struct adapter *adapter, u32 *vers);
int t4_get_tp_version(struct adapter *adapter, u32 *vers);
@@ -460,8 +471,8 @@ int t4_wol_pat_enable(struct adapter *adap, unsigned int port, unsigned int map,
int t4_fw_hello(struct adapter *adap, unsigned int mbox, unsigned int evt_mbox,
enum dev_master master, enum dev_state *state);
int t4_fw_bye(struct adapter *adap, unsigned int mbox);
-int t4_early_init(struct adapter *adap, unsigned int mbox);
int t4_fw_reset(struct adapter *adap, unsigned int mbox, int reset);
+int t4_fw_initialize(struct adapter *adap, unsigned int mbox);
int t4_query_params(struct adapter *adap, unsigned int mbox, unsigned int pf,
unsigned int vf, unsigned int nparams, const u32 *params,
u32 *val);
diff --git a/sys/dev/cxgbe/common/t4_hw.c b/sys/dev/cxgbe/common/t4_hw.c
index dd8d0fc..48462aa 100644
--- a/sys/dev/cxgbe/common/t4_hw.c
+++ b/sys/dev/cxgbe/common/t4_hw.c
@@ -30,10 +30,10 @@ __FBSDID("$FreeBSD$");
#include "common.h"
#include "t4_regs.h"
#include "t4_regs_values.h"
-#include "t4fw_interface.h"
+#include "firmware/t4fw_interface.h"
#undef msleep
-#define msleep(x) DELAY((x) * 1000)
+#define msleep(x) pause("t4hw", (x) * hz / 1000)
/**
* t4_wait_op_done_val - wait until an operation is completed
@@ -187,7 +187,7 @@ int t4_wr_mbox_meat(struct adapter *adap, int mbox, const void *cmd, int size,
* off to larger delays to a maximum retry delay.
*/
static const int delay[] = {
- 1, 1, 3, 5, 10, 10, 20, 50, 100, 200
+ 1, 1, 3, 5, 10, 10, 20, 50, 100
};
u32 v;
@@ -625,17 +625,6 @@ enum {
SF_RD_DATA_FAST = 0xb, /* read flash */
SF_RD_ID = 0x9f, /* read ID */
SF_ERASE_SECTOR = 0xd8, /* erase sector */
-
- FW_START_SEC = 8, /* first flash sector for FW */
- FW_END_SEC = 15, /* last flash sector for FW */
- FW_IMG_START = FW_START_SEC * SF_SEC_SIZE,
- FW_MAX_SIZE = (FW_END_SEC - FW_START_SEC + 1) * SF_SEC_SIZE,
-
- FLASH_CFG_MAX_SIZE = 0x10000 , /* max size of the flash config file */
- FLASH_CFG_OFFSET = 0x1f0000,
- FLASH_CFG_START_SEC = FLASH_CFG_OFFSET / SF_SEC_SIZE,
- FPGA_FLASH_CFG_OFFSET = 0xf0000 , /* if FPGA mode, then cfg file is at 1MB - 64KB */
- FPGA_FLASH_CFG_START_SEC = FPGA_FLASH_CFG_OFFSET / SF_SEC_SIZE,
};
/**
@@ -763,12 +752,15 @@ int t4_read_flash(struct adapter *adapter, unsigned int addr,
* @addr: the start address to write
* @n: length of data to write in bytes
* @data: the data to write
+ * @byte_oriented: whether to store data as bytes or as words
*
* Writes up to a page of data (256 bytes) to the serial flash starting
* at the given address. All the data must be written to the same page.
+ * If @byte_oriented is set the write data is stored as byte stream
+ * (i.e. matches what on disk), otherwise in big-endian.
*/
static int t4_write_flash(struct adapter *adapter, unsigned int addr,
- unsigned int n, const u8 *data)
+ unsigned int n, const u8 *data, int byte_oriented)
{
int ret;
u32 buf[SF_PAGE_SIZE / 4];
@@ -788,6 +780,9 @@ static int t4_write_flash(struct adapter *adapter, unsigned int addr,
for (val = 0, i = 0; i < c; ++i)
val = (val << 8) + *data++;
+ if (!byte_oriented)
+ val = htonl(val);
+
ret = sf1_write(adapter, c, c != left, 1, val);
if (ret)
goto unlock;
@@ -799,7 +794,8 @@ static int t4_write_flash(struct adapter *adapter, unsigned int addr,
t4_write_reg(adapter, A_SF_OP, 0); /* unlock SF */
/* Read the page to verify the write succeeded */
- ret = t4_read_flash(adapter, addr & ~0xff, ARRAY_SIZE(buf), buf, 1);
+ ret = t4_read_flash(adapter, addr & ~0xff, ARRAY_SIZE(buf), buf,
+ byte_oriented);
if (ret)
return ret;
@@ -825,7 +821,7 @@ unlock:
int t4_get_fw_version(struct adapter *adapter, u32 *vers)
{
return t4_read_flash(adapter,
- FW_IMG_START + offsetof(struct fw_hdr, fw_ver), 1,
+ FLASH_FW_START + offsetof(struct fw_hdr, fw_ver), 1,
vers, 0);
}
@@ -838,7 +834,7 @@ int t4_get_fw_version(struct adapter *adapter, u32 *vers)
*/
int t4_get_tp_version(struct adapter *adapter, u32 *vers)
{
- return t4_read_flash(adapter, FW_IMG_START + offsetof(struct fw_hdr,
+ return t4_read_flash(adapter, FLASH_FW_START + offsetof(struct fw_hdr,
tp_microcode_ver),
1, vers, 0);
}
@@ -854,24 +850,17 @@ int t4_get_tp_version(struct adapter *adapter, u32 *vers)
*/
int t4_check_fw_version(struct adapter *adapter)
{
- u32 api_vers[2];
int ret, major, minor, micro;
ret = t4_get_fw_version(adapter, &adapter->params.fw_vers);
if (!ret)
ret = t4_get_tp_version(adapter, &adapter->params.tp_vers);
- if (!ret)
- ret = t4_read_flash(adapter,
- FW_IMG_START + offsetof(struct fw_hdr, intfver_nic),
- 2, api_vers, 1);
if (ret)
return ret;
major = G_FW_HDR_FW_VER_MAJOR(adapter->params.fw_vers);
minor = G_FW_HDR_FW_VER_MINOR(adapter->params.fw_vers);
micro = G_FW_HDR_FW_VER_MICRO(adapter->params.fw_vers);
- memcpy(adapter->params.api_vers, api_vers,
- sizeof(adapter->params.api_vers));
if (major != FW_VERSION_MAJOR) { /* major mismatch - fail */
CH_ERR(adapter, "card FW has major version %u, driver wants "
@@ -914,6 +903,21 @@ static int t4_flash_erase_sectors(struct adapter *adapter, int start, int end)
}
/**
+ * t4_flash_cfg_addr - return the address of the flash configuration file
+ * @adapter: the adapter
+ *
+ * Return the address within the flash where the Firmware Configuration
+ * File is stored.
+ */
+unsigned int t4_flash_cfg_addr(struct adapter *adapter)
+{
+ if (adapter->params.sf_size == 0x100000)
+ return FLASH_FPGA_CFG_START;
+ else
+ return FLASH_CFG_START;
+}
+
+/**
* t4_load_cfg - download config file
* @adap: the adapter
* @cfg_data: the cfg text file to write
@@ -928,17 +932,8 @@ int t4_load_cfg(struct adapter *adap, const u8 *cfg_data, unsigned int size)
unsigned int flash_cfg_start_sec;
unsigned int sf_sec_size = adap->params.sf_size / adap->params.sf_nsec;
- if (adap->params.sf_size == 0x100000) {
- addr = FPGA_FLASH_CFG_OFFSET;
- flash_cfg_start_sec = FPGA_FLASH_CFG_START_SEC;
- } else {
- addr = FLASH_CFG_OFFSET;
- flash_cfg_start_sec = FLASH_CFG_START_SEC;
- }
- if (!size) {
- CH_ERR(adap, "cfg file has no data\n");
- return -EINVAL;
- }
+ addr = t4_flash_cfg_addr(adap);
+ flash_cfg_start_sec = addr / SF_SEC_SIZE;
if (size > FLASH_CFG_MAX_SIZE) {
CH_ERR(adap, "cfg file too large, max is %u bytes\n",
@@ -950,7 +945,11 @@ int t4_load_cfg(struct adapter *adap, const u8 *cfg_data, unsigned int size)
sf_sec_size);
ret = t4_flash_erase_sectors(adap, flash_cfg_start_sec,
flash_cfg_start_sec + i - 1);
- if (ret)
+ /*
+ * If size == 0 then we're simply erasing the FLASH sectors associated
+ * with the on-adapter Firmware Configuration File.
+ */
+ if (ret || size == 0)
goto out;
/* this will write to the flash up to SF_PAGE_SIZE at a time */
@@ -959,7 +958,7 @@ int t4_load_cfg(struct adapter *adap, const u8 *cfg_data, unsigned int size)
n = size - i;
else
n = SF_PAGE_SIZE;
- ret = t4_write_flash(adap, addr, n, cfg_data);
+ ret = t4_write_flash(adap, addr, n, cfg_data, 1);
if (ret)
goto out;
@@ -969,7 +968,8 @@ int t4_load_cfg(struct adapter *adap, const u8 *cfg_data, unsigned int size)
out:
if (ret)
- CH_ERR(adap, "config file download failed %d\n", ret);
+ CH_ERR(adap, "config file %s failed %d\n",
+ (size == 0 ? "clear" : "download"), ret);
return ret;
}
@@ -1004,9 +1004,9 @@ int t4_load_fw(struct adapter *adap, const u8 *fw_data, unsigned int size)
CH_ERR(adap, "FW image size differs from size in FW header\n");
return -EINVAL;
}
- if (size > FW_MAX_SIZE) {
+ if (size > FLASH_FW_MAX_SIZE) {
CH_ERR(adap, "FW image too large, max is %u bytes\n",
- FW_MAX_SIZE);
+ FLASH_FW_MAX_SIZE);
return -EFBIG;
}
@@ -1020,7 +1020,8 @@ int t4_load_fw(struct adapter *adap, const u8 *fw_data, unsigned int size)
}
i = DIV_ROUND_UP(size, sf_sec_size); /* # of sectors spanned */
- ret = t4_flash_erase_sectors(adap, FW_START_SEC, FW_START_SEC + i - 1);
+ ret = t4_flash_erase_sectors(adap, FLASH_FW_START_SEC,
+ FLASH_FW_START_SEC + i - 1);
if (ret)
goto out;
@@ -1031,28 +1032,110 @@ int t4_load_fw(struct adapter *adap, const u8 *fw_data, unsigned int size)
*/
memcpy(first_page, fw_data, SF_PAGE_SIZE);
((struct fw_hdr *)first_page)->fw_ver = htonl(0xffffffff);
- ret = t4_write_flash(adap, FW_IMG_START, SF_PAGE_SIZE, first_page);
+ ret = t4_write_flash(adap, FLASH_FW_START, SF_PAGE_SIZE, first_page, 1);
if (ret)
goto out;
- addr = FW_IMG_START;
+ addr = FLASH_FW_START;
for (size -= SF_PAGE_SIZE; size; size -= SF_PAGE_SIZE) {
addr += SF_PAGE_SIZE;
fw_data += SF_PAGE_SIZE;
- ret = t4_write_flash(adap, addr, SF_PAGE_SIZE, fw_data);
+ ret = t4_write_flash(adap, addr, SF_PAGE_SIZE, fw_data, 1);
if (ret)
goto out;
}
ret = t4_write_flash(adap,
- FW_IMG_START + offsetof(struct fw_hdr, fw_ver),
- sizeof(hdr->fw_ver), (const u8 *)&hdr->fw_ver);
+ FLASH_FW_START + offsetof(struct fw_hdr, fw_ver),
+ sizeof(hdr->fw_ver), (const u8 *)&hdr->fw_ver, 1);
out:
if (ret)
CH_ERR(adap, "firmware download failed, error %d\n", ret);
return ret;
}
+/* BIOS boot header */
+typedef struct boot_header_s {
+ u8 signature[2]; /* signature */
+ u8 length; /* image length (include header) */
+ u8 offset[4]; /* initialization vector */
+ u8 reserved[19]; /* reserved */
+ u8 exheader[2]; /* offset to expansion header */
+} boot_header_t;
+
+enum {
+ BOOT_FLASH_BOOT_ADDR = 0x0,/* start address of boot image in flash */
+ BOOT_SIGNATURE = 0xaa55, /* signature of BIOS boot ROM */
+ BOOT_SIZE_INC = 512, /* image size measured in 512B chunks */
+ BOOT_MIN_SIZE = sizeof(boot_header_t), /* at least basic header */
+ BOOT_MAX_SIZE = 1024*BOOT_SIZE_INC /* 1 byte * length increment */
+};
+
+/*
+ * t4_load_boot - download boot flash
+ * @adapter: the adapter
+ * @boot_data: the boot image to write
+ * @size: image size
+ *
+ * Write the supplied boot image to the card's serial flash.
+ * The boot image has the following sections: a 28-byte header and the
+ * boot image.
+ */
+int t4_load_boot(struct adapter *adap, const u8 *boot_data,
+ unsigned int boot_addr, unsigned int size)
+{
+ int ret, addr;
+ unsigned int i;
+ unsigned int boot_sector = boot_addr * 1024;
+ unsigned int sf_sec_size = adap->params.sf_size / adap->params.sf_nsec;
+
+ /*
+ * Perform some primitive sanity testing to avoid accidentally
+ * writing garbage over the boot sectors. We ought to check for
+ * more but it's not worth it for now ...
+ */
+ if (size < BOOT_MIN_SIZE || size > BOOT_MAX_SIZE) {
+ CH_ERR(adap, "boot image too small/large\n");
+ return -EFBIG;
+ }
+
+ /*
+ * Make sure the boot image does not encroach on the firmware region
+ */
+ if ((boot_sector + size) >> 16 > FLASH_FW_START_SEC) {
+ CH_ERR(adap, "boot image encroaching on firmware region\n");
+ return -EFBIG;
+ }
+
+ i = DIV_ROUND_UP(size, sf_sec_size); /* # of sectors spanned */
+ ret = t4_flash_erase_sectors(adap, boot_sector >> 16,
+ (boot_sector >> 16) + i - 1);
+ if (ret)
+ goto out;
+
+ /*
+ * Skip over the first SF_PAGE_SIZE worth of data and write it after
+ * we finish copying the rest of the boot image. This will ensure
+ * that the BIOS boot header will only be written if the boot image
+ * was written in full.
+ */
+ addr = boot_sector;
+ for (size -= SF_PAGE_SIZE; size; size -= SF_PAGE_SIZE) {
+ addr += SF_PAGE_SIZE;
+ boot_data += SF_PAGE_SIZE;
+ ret = t4_write_flash(adap, addr, SF_PAGE_SIZE, boot_data, 0);
+ if (ret)
+ goto out;
+ }
+
+ ret = t4_write_flash(adap, boot_sector, SF_PAGE_SIZE, boot_data, 0);
+
+out:
+ if (ret)
+ CH_ERR(adap, "boot image download failed, error %d\n", ret);
+ return ret;
+}
+
/**
* t4_read_cimq_cfg - read CIM queue configuration
* @adap: the adapter
@@ -1668,7 +1751,10 @@ static void sge_intr_handler(struct adapter *adapter)
err = t4_read_reg(adapter, A_SGE_ERROR_STATS);
if (err & F_ERROR_QID_VALID) {
CH_ERR(adapter, "SGE error for queue %u\n", G_ERROR_QID(err));
- t4_write_reg(adapter, A_SGE_ERROR_STATS, F_ERROR_QID_VALID);
+ if (err & F_UNCAPTURED_ERROR)
+ CH_ERR(adapter, "SGE UNCAPTURED_ERROR set (clearing)\n");
+ t4_write_reg(adapter, A_SGE_ERROR_STATS, F_ERROR_QID_VALID |
+ F_UNCAPTURED_ERROR);
}
if (v != 0)
@@ -2261,6 +2347,7 @@ int t4_config_rss_range(struct adapter *adapter, int mbox, unsigned int viid,
*/
while (n > 0) {
int nq = min(n, 32);
+ int nq_packed = 0;
__be32 *qp = &cmd.iq0_to_iq2;
/*
@@ -2282,25 +2369,28 @@ int t4_config_rss_range(struct adapter *adapter, int mbox, unsigned int viid,
* Ingress Queue ID array and insert them into the command.
*/
while (nq > 0) {
- unsigned int v;
/*
* Grab up to the next 3 Ingress Queue IDs (wrapping
* around the Ingress Queue ID array if necessary) and
* insert them into the firmware RSS command at the
* current 3-tuple position within the commad.
*/
- v = V_FW_RSS_IND_TBL_CMD_IQ0(*rsp);
- if (++rsp >= rsp_end)
- rsp = rspq;
- v |= V_FW_RSS_IND_TBL_CMD_IQ1(*rsp);
- if (++rsp >= rsp_end)
- rsp = rspq;
- v |= V_FW_RSS_IND_TBL_CMD_IQ2(*rsp);
- if (++rsp >= rsp_end)
- rsp = rspq;
-
- *qp++ = htonl(v);
- nq -= 3;
+ u16 qbuf[3];
+ u16 *qbp = qbuf;
+ int nqbuf = min(3, nq);
+
+ nq -= nqbuf;
+ qbuf[0] = qbuf[1] = qbuf[2] = 0;
+ while (nqbuf && nq_packed < 32) {
+ nqbuf--;
+ nq_packed++;
+ *qbp++ = *rsp++;
+ if (rsp >= rsp_end)
+ rsp = rspq;
+ }
+ *qp++ = cpu_to_be32(V_FW_RSS_IND_TBL_CMD_IQ0(qbuf[0]) |
+ V_FW_RSS_IND_TBL_CMD_IQ1(qbuf[1]) |
+ V_FW_RSS_IND_TBL_CMD_IQ2(qbuf[2]));
}
/*
@@ -2694,8 +2784,6 @@ void t4_tp_get_cpl_stats(struct adapter *adap, struct tp_cpl_stats *st)
{
t4_read_indirect(adap, A_TP_MIB_INDEX, A_TP_MIB_DATA, st->req,
8, A_TP_MIB_CPL_IN_REQ_0);
- t4_read_indirect(adap, A_TP_MIB_INDEX, A_TP_MIB_DATA, st->tx_err,
- 4, A_TP_MIB_CPL_OUT_ERR_0);
}
/**
@@ -3298,6 +3386,7 @@ void t4_get_port_stats(struct adapter *adap, int idx, struct port_stats *p)
t4_read_reg64(adap, PORT_REG(idx, A_MPS_PORT_STAT_##name##_L))
#define GET_STAT_COM(name) t4_read_reg64(adap, A_MPS_STAT_##name##_L)
+ p->tx_pause = GET_STAT(TX_PORT_PAUSE);
p->tx_octets = GET_STAT(TX_PORT_BYTES);
p->tx_frames = GET_STAT(TX_PORT_FRAMES);
p->tx_bcast_frames = GET_STAT(TX_PORT_BCAST);
@@ -3312,7 +3401,6 @@ void t4_get_port_stats(struct adapter *adap, int idx, struct port_stats *p)
p->tx_frames_1024_1518 = GET_STAT(TX_PORT_1024B_1518B);
p->tx_frames_1519_max = GET_STAT(TX_PORT_1519B_MAX);
p->tx_drop = GET_STAT(TX_PORT_DROP);
- p->tx_pause = GET_STAT(TX_PORT_PAUSE);
p->tx_ppp0 = GET_STAT(TX_PORT_PPP0);
p->tx_ppp1 = GET_STAT(TX_PORT_PPP1);
p->tx_ppp2 = GET_STAT(TX_PORT_PPP2);
@@ -3322,6 +3410,7 @@ void t4_get_port_stats(struct adapter *adap, int idx, struct port_stats *p)
p->tx_ppp6 = GET_STAT(TX_PORT_PPP6);
p->tx_ppp7 = GET_STAT(TX_PORT_PPP7);
+ p->rx_pause = GET_STAT(RX_PORT_PAUSE);
p->rx_octets = GET_STAT(RX_PORT_BYTES);
p->rx_frames = GET_STAT(RX_PORT_FRAMES);
p->rx_bcast_frames = GET_STAT(RX_PORT_BCAST);
@@ -3340,7 +3429,6 @@ void t4_get_port_stats(struct adapter *adap, int idx, struct port_stats *p)
p->rx_frames_512_1023 = GET_STAT(RX_PORT_512B_1023B);
p->rx_frames_1024_1518 = GET_STAT(RX_PORT_1024B_1518B);
p->rx_frames_1519_max = GET_STAT(RX_PORT_1519B_MAX);
- p->rx_pause = GET_STAT(RX_PORT_PAUSE);
p->rx_ppp0 = GET_STAT(RX_PORT_PPP0);
p->rx_ppp1 = GET_STAT(RX_PORT_PPP1);
p->rx_ppp2 = GET_STAT(RX_PORT_PPP2);
@@ -3683,28 +3771,114 @@ int t4_fw_hello(struct adapter *adap, unsigned int mbox, unsigned int evt_mbox,
{
int ret;
struct fw_hello_cmd c;
+ u32 v;
+ unsigned int master_mbox;
+ int retries = FW_CMD_HELLO_RETRIES;
+retry:
memset(&c, 0, sizeof(c));
INIT_CMD(c, HELLO, WRITE);
- c.err_to_mbasyncnot = htonl(
+ c.err_to_clearinit = htonl(
V_FW_HELLO_CMD_MASTERDIS(master == MASTER_CANT) |
V_FW_HELLO_CMD_MASTERFORCE(master == MASTER_MUST) |
V_FW_HELLO_CMD_MBMASTER(master == MASTER_MUST ? mbox :
M_FW_HELLO_CMD_MBMASTER) |
- V_FW_HELLO_CMD_MBASYNCNOT(evt_mbox));
+ V_FW_HELLO_CMD_MBASYNCNOT(evt_mbox) |
+ V_FW_HELLO_CMD_STAGE(FW_HELLO_CMD_STAGE_OS) |
+ F_FW_HELLO_CMD_CLEARINIT);
+ /*
+ * Issue the HELLO command to the firmware. If it's not successful
+ * but indicates that we got a "busy" or "timeout" condition, retry
+ * the HELLO until we exhaust our retry limit.
+ */
ret = t4_wr_mbox(adap, mbox, &c, sizeof(c), &c);
- if (ret == 0 && state) {
- u32 v = ntohl(c.err_to_mbasyncnot);
- if (v & F_FW_HELLO_CMD_INIT)
- *state = DEV_STATE_INIT;
- else if (v & F_FW_HELLO_CMD_ERR)
+ if (ret != FW_SUCCESS) {
+ if ((ret == -EBUSY || ret == -ETIMEDOUT) && retries-- > 0)
+ goto retry;
+ return ret;
+ }
+
+ v = ntohl(c.err_to_clearinit);
+ master_mbox = G_FW_HELLO_CMD_MBMASTER(v);
+ if (state) {
+ if (v & F_FW_HELLO_CMD_ERR)
*state = DEV_STATE_ERR;
+ else if (v & F_FW_HELLO_CMD_INIT)
+ *state = DEV_STATE_INIT;
else
*state = DEV_STATE_UNINIT;
- return G_FW_HELLO_CMD_MBMASTER(v);
}
- return ret;
+
+ /*
+ * If we're not the Master PF then we need to wait around for the
+ * Master PF Driver to finish setting up the adapter.
+ *
+ * Note that we also do this wait if we're a non-Master-capable PF and
+ * there is no current Master PF; a Master PF may show up momentarily
+ * and we wouldn't want to fail pointlessly. (This can happen when an
+ * OS loads lots of different drivers rapidly at the same time). In
+ * this case, the Master PF returned by the firmware will be
+ * M_PCIE_FW_MASTER so the test below will work ...
+ */
+ if ((v & (F_FW_HELLO_CMD_ERR|F_FW_HELLO_CMD_INIT)) == 0 &&
+ master_mbox != mbox) {
+ int waiting = FW_CMD_HELLO_TIMEOUT;
+
+ /*
+ * Wait for the firmware to either indicate an error or
+ * initialized state. If we see either of these we bail out
+ * and report the issue to the caller. If we exhaust the
+ * "hello timeout" and we haven't exhausted our retries, try
+ * again. Otherwise bail with a timeout error.
+ */
+ for (;;) {
+ u32 pcie_fw;
+
+ msleep(50);
+ waiting -= 50;
+
+ /*
+ * If neither Error nor Initialialized are indicated
+ * by the firmware keep waiting till we exhaust our
+ * timeout ... and then retry if we haven't exhausted
+ * our retries ...
+ */
+ pcie_fw = t4_read_reg(adap, A_PCIE_FW);
+ if (!(pcie_fw & (F_PCIE_FW_ERR|F_PCIE_FW_INIT))) {
+ if (waiting <= 0) {
+ if (retries-- > 0)
+ goto retry;
+
+ return -ETIMEDOUT;
+ }
+ continue;
+ }
+
+ /*
+ * We either have an Error or Initialized condition
+ * report errors preferentially.
+ */
+ if (state) {
+ if (pcie_fw & F_PCIE_FW_ERR)
+ *state = DEV_STATE_ERR;
+ else if (pcie_fw & F_PCIE_FW_INIT)
+ *state = DEV_STATE_INIT;
+ }
+
+ /*
+ * If we arrived before a Master PF was selected and
+ * there's not a valid Master PF, grab its identity
+ * for our caller.
+ */
+ if (master_mbox == M_PCIE_FW_MASTER &&
+ (pcie_fw & F_PCIE_FW_MASTER_VLD))
+ master_mbox = G_PCIE_FW_MASTER(pcie_fw);
+ break;
+ }
+ }
+
+ return master_mbox;
}
/**
@@ -3724,37 +3898,37 @@ int t4_fw_bye(struct adapter *adap, unsigned int mbox)
}
/**
- * t4_init_cmd - ask FW to initialize the device
+ * t4_fw_reset - issue a reset to FW
* @adap: the adapter
* @mbox: mailbox to use for the FW command
+ * @reset: specifies the type of reset to perform
*
- * Issues a command to FW to partially initialize the device. This
- * performs initialization that generally doesn't depend on user input.
+ * Issues a reset command of the specified type to FW.
*/
-int t4_early_init(struct adapter *adap, unsigned int mbox)
+int t4_fw_reset(struct adapter *adap, unsigned int mbox, int reset)
{
- struct fw_initialize_cmd c;
+ struct fw_reset_cmd c;
memset(&c, 0, sizeof(c));
- INIT_CMD(c, INITIALIZE, WRITE);
+ INIT_CMD(c, RESET, WRITE);
+ c.val = htonl(reset);
return t4_wr_mbox(adap, mbox, &c, sizeof(c), NULL);
}
/**
- * t4_fw_reset - issue a reset to FW
+ * t4_fw_initialize - ask FW to initialize the device
* @adap: the adapter
* @mbox: mailbox to use for the FW command
- * @reset: specifies the type of reset to perform
*
- * Issues a reset command of the specified type to FW.
+ * Issues a command to FW to partially initialize the device. This
+ * performs initialization that generally doesn't depend on user input.
*/
-int t4_fw_reset(struct adapter *adap, unsigned int mbox, int reset)
+int t4_fw_initialize(struct adapter *adap, unsigned int mbox)
{
- struct fw_reset_cmd c;
+ struct fw_initialize_cmd c;
memset(&c, 0, sizeof(c));
- INIT_CMD(c, RESET, WRITE);
- c.val = htonl(reset);
+ INIT_CMD(c, INITIALIZE, WRITE);
return t4_wr_mbox(adap, mbox, &c, sizeof(c), NULL);
}
@@ -4495,6 +4669,21 @@ static int __devinit get_flash_params(struct adapter *adapter)
return 0;
}
+static void __devinit set_pcie_completion_timeout(struct adapter *adapter,
+ u8 range)
+{
+ u16 val;
+ u32 pcie_cap;
+
+ pcie_cap = t4_os_find_pci_capability(adapter, PCI_CAP_ID_EXP);
+ if (pcie_cap) {
+ t4_os_pci_read_cfg2(adapter, pcie_cap + PCI_EXP_DEVCTL2, &val);
+ val &= 0xfff0;
+ val |= range ;
+ t4_os_pci_write_cfg2(adapter, pcie_cap + PCI_EXP_DEVCTL2, val);
+ }
+}
+
/**
* t4_prep_adapter - prepare SW and HW for operation
* @adapter: the adapter
@@ -4541,6 +4730,8 @@ int __devinit t4_prep_adapter(struct adapter *adapter)
adapter->params.portvec = 1;
adapter->params.vpd.cclk = 50000;
+ /* Set pci completion timeout value to 4 seconds. */
+ set_pcie_completion_timeout(adapter, 0xd);
return 0;
}
diff --git a/sys/dev/cxgbe/common/t4_hw.h b/sys/dev/cxgbe/common/t4_hw.h
index fd48aab..b93734e 100644
--- a/sys/dev/cxgbe/common/t4_hw.h
+++ b/sys/dev/cxgbe/common/t4_hw.h
@@ -182,4 +182,82 @@ struct pagepod {
#define M_PPOD_OFST 0xFFFFFFFF
#define V_PPOD_OFST(x) ((x) << S_PPOD_OFST)
+/*
+ * Flash layout.
+ */
+#define FLASH_START(start) ((start) * SF_SEC_SIZE)
+#define FLASH_MAX_SIZE(nsecs) ((nsecs) * SF_SEC_SIZE)
+
+enum {
+ /*
+ * Various Expansion-ROM boot images, etc.
+ */
+ FLASH_EXP_ROM_START_SEC = 0,
+ FLASH_EXP_ROM_NSECS = 6,
+ FLASH_EXP_ROM_START = FLASH_START(FLASH_EXP_ROM_START_SEC),
+ FLASH_EXP_ROM_MAX_SIZE = FLASH_MAX_SIZE(FLASH_EXP_ROM_NSECS),
+
+ /*
+ * iSCSI Boot Firmware Table (iBFT) and other driver-related
+ * parameters ...
+ */
+ FLASH_IBFT_START_SEC = 6,
+ FLASH_IBFT_NSECS = 1,
+ FLASH_IBFT_START = FLASH_START(FLASH_IBFT_START_SEC),
+ FLASH_IBFT_MAX_SIZE = FLASH_MAX_SIZE(FLASH_IBFT_NSECS),
+
+ /*
+ * Boot configuration data.
+ */
+ FLASH_BOOTCFG_START_SEC = 7,
+ FLASH_BOOTCFG_NSECS = 1,
+ FLASH_BOOTCFG_START = FLASH_START(FLASH_BOOTCFG_START_SEC),
+ FLASH_BOOTCFG_MAX_SIZE = FLASH_MAX_SIZE(FLASH_BOOTCFG_NSECS),
+
+ /*
+ * Location of firmware image in FLASH.
+ */
+ FLASH_FW_START_SEC = 8,
+ FLASH_FW_NSECS = 8,
+ FLASH_FW_START = FLASH_START(FLASH_FW_START_SEC),
+ FLASH_FW_MAX_SIZE = FLASH_MAX_SIZE(FLASH_FW_NSECS),
+
+ /*
+ * iSCSI persistent/crash information.
+ */
+ FLASH_ISCSI_CRASH_START_SEC = 29,
+ FLASH_ISCSI_CRASH_NSECS = 1,
+ FLASH_ISCSI_CRASH_START = FLASH_START(FLASH_ISCSI_CRASH_START_SEC),
+ FLASH_ISCSI_CRASH_MAX_SIZE = FLASH_MAX_SIZE(FLASH_ISCSI_CRASH_NSECS),
+
+ /*
+ * FCoE persistent/crash information.
+ */
+ FLASH_FCOE_CRASH_START_SEC = 30,
+ FLASH_FCOE_CRASH_NSECS = 1,
+ FLASH_FCOE_CRASH_START = FLASH_START(FLASH_FCOE_CRASH_START_SEC),
+ FLASH_FCOE_CRASH_MAX_SIZE = FLASH_MAX_SIZE(FLASH_FCOE_CRASH_NSECS),
+
+ /*
+ * Location of Firmware Configuration File in FLASH. Since the FPGA
+ * "FLASH" is smaller we need to store the Configuration File in a
+ * different location -- which will overlap the end of the firmware
+ * image if firmware ever gets that large ...
+ */
+ FLASH_CFG_START_SEC = 31,
+ FLASH_CFG_NSECS = 1,
+ FLASH_CFG_START = FLASH_START(FLASH_CFG_START_SEC),
+ FLASH_CFG_MAX_SIZE = FLASH_MAX_SIZE(FLASH_CFG_NSECS),
+
+ FLASH_FPGA_CFG_START_SEC = 15,
+ FLASH_FPGA_CFG_START = FLASH_START(FLASH_FPGA_CFG_START_SEC),
+
+ /*
+ * Sectors 32-63 are reserved for FLASH failover.
+ */
+};
+
+#undef FLASH_START
+#undef FLASH_MAX_SIZE
+
#endif /* __T4_HW_H */
diff --git a/sys/dev/cxgbe/firmware/t4fw_cfg.txt b/sys/dev/cxgbe/firmware/t4fw_cfg.txt
new file mode 100644
index 0000000..65d6f0b
--- /dev/null
+++ b/sys/dev/cxgbe/firmware/t4fw_cfg.txt
@@ -0,0 +1,132 @@
+# Firmware configuration file.
+#
+# Global limits (some are hardware limits, others are due to the firmware).
+# Also note that the firmware reserves some of these resources for its own use
+# so it's not always possible for the drivers to grab everything listed here.
+# nvi = 128 virtual interfaces
+# niqflint = 1023 ingress queues with freelists and/or interrupts
+# nethctrl = 64K Ethernet or ctrl egress queues
+# neq = 64K egress queues of all kinds, including freelists
+# nexactf = 336 MPS TCAM entries, can oversubscribe.
+#
+
+[global]
+ rss_glb_config_mode = basicvirtual
+ rss_glb_config_options = tnlmapen, hashtoeplitz, tnlalllkp
+
+ sge_timer_value = 1, 5, 10, 50, 100, 200 # usecs
+
+ # TP_SHIFT_CNT
+ reg[0x7dc0] = 0x64f8849
+
+ filterMode = fragmentation, mpshittype, protocol, vlan, port, fcoe
+
+ # TP rx and tx payload memory (% of the total EDRAM + DDR3).
+ tp_pmrx = 40
+ tp_pmtx = 60
+ tp_pmrx_pagesize = 64K
+ tp_pmtx_pagesize = 64K
+
+# PFs 0-3. These get 8 MSI/8 MSI-X vectors each. VFs are supported by
+# these 4 PFs only. Not used here at all.
+[function "0"]
+ nvf = 16
+ nvi = 1
+[function "0/*"]
+ nvi = 1
+
+[function "1"]
+ nvf = 16
+ nvi = 1
+[function "1/*"]
+ nvi = 1
+
+[function "2"]
+ nvf = 16
+ nvi = 1
+[function "2/*"]
+ nvi = 1
+
+[function "3"]
+ nvf = 16
+ nvi = 1
+[function "3/*"]
+ nvi = 1
+
+# PF4 is the resource-rich PF that the bus/nexus driver attaches to.
+# It gets 32 MSI/128 MSI-X vectors.
+[function "4"]
+ wx_caps = all
+ r_caps = all
+ nvi = 48
+ niqflint = 256
+ nethctrl = 128
+ neq = 256
+ nexactf = 300
+ cmask = all
+ pmask = all
+
+ # driver will mask off features it won't use
+ protocol = ofld
+
+ tp_l2t = 100
+
+ # TCAM has 8K cells; each region must start at a multiple of 128 cell.
+ # Each entry in these categories takes 4 cells each. nhash will use the
+ # TCAM iff there is room left (that is, the rest don't add up to 2048).
+ nroute = 32
+ nclip = 0 # needed only for IPv6 offload
+ nfilter = 1504
+ nserver = 512
+ nhash = 16384
+
+# PF5 is the SCSI Controller PF. It gets 32 MSI/40 MSI-X vectors.
+# Not used right now.
+[function "5"]
+ nvi = 1
+
+# PF6 is the FCoE Controller PF. It gets 32 MSI/40 MSI-X vectors.
+# Not used right now.
+[function "6"]
+ nvi = 1
+
+# MPS has 192K buffer space for ingress packets from the wire as well as
+# loopback path of the L2 switch.
+[port "0"]
+ dcb = none
+ bg_mem = 25
+ lpbk_mem = 25
+ hwm = 30
+ lwm = 15
+ dwm = 30
+
+[port "1"]
+ dcb = none
+ bg_mem = 25
+ lpbk_mem = 25
+ hwm = 30
+ lwm = 15
+ dwm = 30
+
+[port "2"]
+ dcb = none
+ bg_mem = 25
+ lpbk_mem = 25
+ hwm = 30
+ lwm = 15
+ dwm = 30
+
+[port "3"]
+ dcb = none
+ bg_mem = 25
+ lpbk_mem = 25
+ hwm = 30
+ lwm = 15
+ dwm = 30
+
+[fini]
+ version = 0x1
+ checksum = 0xb31cdfac
+#
+# $FreeBSD$
+#
diff --git a/sys/dev/cxgbe/firmware/t4fw_cfg_uwire.txt b/sys/dev/cxgbe/firmware/t4fw_cfg_uwire.txt
new file mode 100644
index 0000000..134d60c
--- /dev/null
+++ b/sys/dev/cxgbe/firmware/t4fw_cfg_uwire.txt
@@ -0,0 +1,503 @@
+# Chelsio T4 Factory Default configuration file.
+#
+# Copyright (C) 2010 Chelsio Communications. All rights reserved.
+#
+
+# This file provides the default, power-on configuration for 4-port T4-based
+# adapters shipped from the factory. These defaults are designed to address
+# the needs of the vast majority of T4 customers. The basic idea is to have
+# a default configuration which allows a customer to plug a T4 adapter in and
+# have it work regardless of OS, driver or application except in the most
+# unusual and/or demanding customer applications.
+#
+# Many of the T4 resources which are described by this configuration are
+# finite. This requires balancing the configuration/operation needs of
+# device drivers across OSes and a large number of customer application.
+#
+# Some of the more important resources to allocate and their constaints are:
+# 1. Virtual Interfaces: 128.
+# 2. Ingress Queues with Free Lists: 1024. PCI-E SR-IOV Virtual Functions
+# must use a power of 2 Ingress Queues.
+# 3. Egress Queues: 128K. PCI-E SR-IOV Virtual Functions must use a
+# power of 2 Egress Queues.
+# 4. MSI-X Vectors: 1088. A complication here is that the PCI-E SR-IOV
+# Virtual Functions based off of a Physical Function all get the
+# same umber of MSI-X Vectors as the base Physical Function.
+# Additionally, regardless of whether Virtual Functions are enabled or
+# not, their MSI-X "needs" are counted by the PCI-E implementation.
+# And finally, all Physical Funcations capable of supporting Virtual
+# Functions (PF0-3) must have the same number of configured TotalVFs in
+# their SR-IOV Capabilities.
+# 5. Multi-Port Support (MPS) TCAM: 336 entries to support MAC destination
+# address matching on Ingress Packets.
+#
+# Some of the important OS/Driver resource needs are:
+# 6. Some OS Drivers will manage all resources through a single Physical
+# Function (currently PF0 but it could be any Physical Function). Thus,
+# this "Unified PF" will need to have enough resources allocated to it
+# to allow for this. And because of the MSI-X resource allocation
+# constraints mentioned above, this probably means we'll either have to
+# severely limit the TotalVFs if we continue to use PF0 as the Unified PF
+# or we'll need to move the Unified PF into the PF4-7 range since those
+# Physical Functions don't have any Virtual Functions associated with
+# them.
+# 7. Some OS Drivers will manage different ports and functions (NIC,
+# storage, etc.) on different Physical Functions. For example, NIC
+# functions for ports 0-3 on PF0-3, FCoE on PF4, iSCSI on PF5, etc.
+#
+# Some of the customer application needs which need to be accommodated:
+# 8. Some customers will want to support large CPU count systems with
+# good scaling. Thus, we'll need to accommodate a number of
+# Ingress Queues and MSI-X Vectors to allow up to some number of CPUs
+# to be involved per port and per application function. For example,
+# in the case where all ports and application functions will be
+# managed via a single Unified PF and we want to accommodate scaling up
+# to 8 CPUs, we would want:
+#
+# 4 ports *
+# 3 application functions (NIC, FCoE, iSCSI) per port *
+# 8 Ingress Queue/MSI-X Vectors per application function
+#
+# for a total of 96 Ingress Queues and MSI-X Vectors on the Unified PF.
+# (Plus a few for Firmware Event Queues, etc.)
+#
+# 9. Some customers will want to use T4's PCI-E SR-IOV Capability to allow
+# Virtual Machines to directly access T4 functionality via SR-IOV
+# Virtual Functions and "PCI Device Passthrough" -- this is especially
+# true for the NIC application functionality. (Note that there is
+# currently no ability to use the TOE, FCoE, iSCSI, etc. via Virtual
+# Functions so this is in fact solely limited to NIC.)
+#
+
+
+# Global configuration settings.
+#
+[global]
+ rss_glb_config_mode = basicvirtual
+ rss_glb_config_options = tnlmapen,hashtoeplitz,tnlalllkp
+
+ # The following Scatter Gather Engine (SGE) settings assume a 4KB Host
+ # Page Size and a 64B L1 Cache Line Size. It programs the
+ # EgrStatusPageSize and IngPadBoundary to 64B and the PktShift to 2.
+ # If a Master PF Driver finds itself on a machine with different
+ # parameters, then the Master PF Driver is responsible for initializing
+ # these parameters to appropriate values.
+ #
+ # Notes:
+ # 1. The Free List Buffer Sizes below are raw and the firmware will
+ # round them up to the Ingress Padding Boundary.
+ # 2. The SGE Timer Values below are expressed below in microseconds.
+ # The firmware will convert these values to Core Clock Ticks when
+ # it processes the configuration parameters.
+ #
+ reg[0x1008] = 0x40810/0x21c70 # SGE_CONTROL
+ reg[0x100c] = 0x22222222 # SGE_HOST_PAGE_SIZE
+ reg[0x10a0] = 0x01040810 # SGE_INGRESS_RX_THRESHOLD
+ reg[0x1044] = 4096 # SGE_FL_BUFFER_SIZE0
+ reg[0x1048] = 65536 # SGE_FL_BUFFER_SIZE1
+ reg[0x104c] = 1536 # SGE_FL_BUFFER_SIZE2
+ reg[0x1050] = 9024 # SGE_FL_BUFFER_SIZE3
+ reg[0x1054] = 9216 # SGE_FL_BUFFER_SIZE4
+ reg[0x1058] = 2048 # SGE_FL_BUFFER_SIZE5
+ reg[0x105c] = 128 # SGE_FL_BUFFER_SIZE6
+ reg[0x1060] = 8192 # SGE_FL_BUFFER_SIZE7
+ reg[0x1064] = 16384 # SGE_FL_BUFFER_SIZE8
+ reg[0x10a4] = 0xa000a000/0xf000f000 # SGE_DBFIFO_STATUS
+ reg[0x10a8] = 0x2000/0x2000 # SGE_DOORBELL_CONTROL
+ sge_timer_value = 5, 10, 20, 50, 100, 200 # SGE_TIMER_VALUE* in usecs
+
+ reg[0x7dc0] = 0x64f8849 # TP_SHIFT_CNT
+
+ # Selection of tuples for LE filter lookup, fields (and widths which
+ # must sum to <= 36): { IP Fragment (1), MPS Match Type (3),
+ # IP Protocol (8), [Inner] VLAN (17), Port (3), FCoE (1) }
+ #
+ filterMode = fragmentation, mpshittype, protocol, vnic_id, port, fcoe
+
+ # Percentage of dynamic memory (in either the EDRAM or external MEM)
+ # to use for TP RX payload
+ tp_pmrx = 30
+
+ # TP RX payload page size
+ tp_pmrx_pagesize = 64K
+
+ # Percentage of dynamic memory (in either the EDRAM or external MEM)
+ # to use for TP TX payload
+ tp_pmtx = 50
+
+ # TP TX payload page size
+ tp_pmtx_pagesize = 64K
+
+# Some "definitions" to make the rest of this a bit more readable. We support
+# 4 ports, 3 functions (NIC, FCoE and iSCSI), scaling up to 8 "CPU Queue Sets"
+# per function per port ...
+#
+# NMSIX = 1088 # available MSI-X Vectors
+# NVI = 128 # available Virtual Interfaces
+# NMPSTCAM = 336 # MPS TCAM entries
+#
+# NPORTS = 4 # ports
+# NCPUS = 8 # CPUs we want to support scalably
+# NFUNCS = 3 # functions per port (NIC, FCoE, iSCSI)
+
+# Breakdown of Virtual Interface/Queue/Interrupt resources for the "Unified
+# PF" which many OS Drivers will use to manage most or all functions.
+#
+# Each Ingress Queue can use one MSI-X interrupt but some Ingress Queues can
+# use Forwarded Interrupt Ingress Queues. For these latter, an Ingress Queue
+# would be created and the Queue ID of a Forwarded Interrupt Ingress Queue
+# will be specified as the "Ingress Queue Asynchronous Destination Index."
+# Thus, the number of MSI-X Vectors assigned to the Unified PF will be less
+# than or equal to the number of Ingress Queues ...
+#
+# NVI_NIC = 4 # NIC access to NPORTS
+# NFLIQ_NIC = 32 # NIC Ingress Queues with Free Lists
+# NETHCTRL_NIC = 32 # NIC Ethernet Control/TX Queues
+# NEQ_NIC = 64 # NIC Egress Queues (FL, ETHCTRL/TX)
+# NMPSTCAM_NIC = 16 # NIC MPS TCAM Entries (NPORTS*4)
+# NMSIX_NIC = 32 # NIC MSI-X Interrupt Vectors (FLIQ)
+#
+# NVI_OFLD = 0 # Offload uses NIC function to access ports
+# NFLIQ_OFLD = 16 # Offload Ingress Queues with Free Lists
+# NETHCTRL_OFLD = 0 # Offload Ethernet Control/TX Queues
+# NEQ_OFLD = 16 # Offload Egress Queues (FL)
+# NMPSTCAM_OFLD = 0 # Offload MPS TCAM Entries (uses NIC's)
+# NMSIX_OFLD = 16 # Offload MSI-X Interrupt Vectors (FLIQ)
+#
+# NVI_RDMA = 0 # RDMA uses NIC function to access ports
+# NFLIQ_RDMA = 4 # RDMA Ingress Queues with Free Lists
+# NETHCTRL_RDMA = 0 # RDMA Ethernet Control/TX Queues
+# NEQ_RDMA = 4 # RDMA Egress Queues (FL)
+# NMPSTCAM_RDMA = 0 # RDMA MPS TCAM Entries (uses NIC's)
+# NMSIX_RDMA = 4 # RDMA MSI-X Interrupt Vectors (FLIQ)
+#
+# NEQ_WD = 128 # Wire Direct TX Queues and FLs
+# NETHCTRL_WD = 64 # Wire Direct TX Queues
+# NFLIQ_WD = 64 ` # Wire Direct Ingress Queues with Free Lists
+#
+# NVI_ISCSI = 4 # ISCSI access to NPORTS
+# NFLIQ_ISCSI = 4 # ISCSI Ingress Queues with Free Lists
+# NETHCTRL_ISCSI = 0 # ISCSI Ethernet Control/TX Queues
+# NEQ_ISCSI = 4 # ISCSI Egress Queues (FL)
+# NMPSTCAM_ISCSI = 4 # ISCSI MPS TCAM Entries (NPORTS)
+# NMSIX_ISCSI = 4 # ISCSI MSI-X Interrupt Vectors (FLIQ)
+#
+# NVI_FCOE = 4 # FCOE access to NPORTS
+# NFLIQ_FCOE = 34 # FCOE Ingress Queues with Free Lists
+# NETHCTRL_FCOE = 32 # FCOE Ethernet Control/TX Queues
+# NEQ_FCOE = 66 # FCOE Egress Queues (FL)
+# NMPSTCAM_FCOE = 32 # FCOE MPS TCAM Entries (NPORTS)
+# NMSIX_FCOE = 34 # FCOE MSI-X Interrupt Vectors (FLIQ)
+
+# Two extra Ingress Queues per function for Firmware Events and Forwarded
+# Interrupts, and two extra interrupts per function for Firmware Events (or a
+# Forwarded Interrupt Queue) and General Interrupts per function.
+#
+# NFLIQ_EXTRA = 6 # "extra" Ingress Queues 2*NFUNCS (Firmware and
+# # Forwarded Interrupts
+# NMSIX_EXTRA = 6 # extra interrupts 2*NFUNCS (Firmware and
+# # General Interrupts
+
+# Microsoft HyperV resources. The HyperV Virtual Ingress Queues will have
+# their interrupts forwarded to another set of Forwarded Interrupt Queues.
+#
+# NVI_HYPERV = 16 # VMs we want to support
+# NVIIQ_HYPERV = 2 # Virtual Ingress Queues with Free Lists per VM
+# NFLIQ_HYPERV = 40 # VIQs + NCPUS Forwarded Interrupt Queues
+# NEQ_HYPERV = 32 # VIQs Free Lists
+# NMPSTCAM_HYPERV = 16 # MPS TCAM Entries (NVI_HYPERV)
+# NMSIX_HYPERV = 8 # NCPUS Forwarded Interrupt Queues
+
+# Adding all of the above Unified PF resource needs together: (NIC + OFLD +
+# RDMA + ISCSI + FCOE + EXTRA + HYPERV)
+#
+# NVI_UNIFIED = 28
+# NFLIQ_UNIFIED = 106
+# NETHCTRL_UNIFIED = 32
+# NEQ_UNIFIED = 124
+# NMPSTCAM_UNIFIED = 40
+#
+# The sum of all the MSI-X resources above is 74 MSI-X Vectors but we'll round
+# that up to 128 to make sure the Unified PF doesn't run out of resources.
+#
+# NMSIX_UNIFIED = 128
+#
+# The Storage PFs could need up to NPORTS*NCPUS + NMSIX_EXTRA MSI-X Vectors
+# which is 34 but they're probably safe with 32.
+#
+# NMSIX_STORAGE = 32
+
+# Note: The UnifiedPF is PF4 which doesn't have any Virtual Functions
+# associated with it. Thus, the MSI-X Vector allocations we give to the
+# UnifiedPF aren't inherited by any Virtual Functions. As a result we can
+# provision many more Virtual Functions than we can if the UnifiedPF were
+# one of PF0-3.
+#
+
+# All of the below PCI-E parameters are actually stored in various *_init.txt
+# files. We include them below essentially as comments.
+#
+# For PF0-3 we assign 8 vectors each for NIC Ingress Queues of the associated
+# ports 0-3.
+#
+# For PF4, the Unified PF, we give it an MSI-X Table Size as outlined above.
+#
+# For PF5-6 we assign enough MSI-X Vectors to support FCoE and iSCSI
+# storage applications across all four possible ports.
+#
+# Additionally, since the UnifiedPF isn't one of the per-port Physical
+# Functions, we give the UnifiedPF and the PF0-3 Physical Functions
+# different PCI Device IDs which will allow Unified and Per-Port Drivers
+# to directly select the type of Physical Function to which they wish to be
+# attached.
+#
+# Note that the actual values used for the PCI-E Intelectual Property will be
+# 1 less than those below since that's the way it "counts" things. For
+# readability, we use the number we actually mean ...
+#
+# PF0_INT = 8 # NCPUS
+# PF1_INT = 8 # NCPUS
+# PF2_INT = 8 # NCPUS
+# PF3_INT = 8 # NCPUS
+# PF0_3_INT = 32 # PF0_INT + PF1_INT + PF2_INT + PF3_INT
+#
+# PF4_INT = 128 # NMSIX_UNIFIED
+# PF5_INT = 32 # NMSIX_STORAGE
+# PF6_INT = 32 # NMSIX_STORAGE
+# PF7_INT = 0 # Nothing Assigned
+# PF4_7_INT = 192 # PF4_INT + PF5_INT + PF6_INT + PF7_INT
+#
+# PF0_7_INT = 224 # PF0_3_INT + PF4_7_INT
+#
+# With the above we can get 17 VFs/PF0-3 (limited by 336 MPS TCAM entries)
+# but we'll lower that to 16 to make our total 64 and a nice power of 2 ...
+#
+# NVF = 16
+
+# For those OSes which manage different ports on different PFs, we need
+# only enough resources to support a single port's NIC application functions
+# on PF0-3. The below assumes that we're only doing NIC with NCPUS "Queue
+# Sets" for ports 0-3. The FCoE and iSCSI functions for such OSes will be
+# managed on the "storage PFs" (see below).
+#
+[function "0"]
+ nvf = 16 # NVF on this function
+ wx_caps = all # write/execute permissions for all commands
+ r_caps = all # read permissions for all commands
+ nvi = 1 # 1 port
+ niqflint = 8 # NCPUS "Queue Sets"
+ nethctrl = 8 # NCPUS "Queue Sets"
+ neq = 16 # niqflint + nethctrl Egress Queues
+ nexactf = 8 # number of exact MPSTCAM MAC filters
+ cmask = all # access to all channels
+ pmask = 0x1 # access to only one port
+
+[function "1"]
+ nvf = 16 # NVF on this function
+ wx_caps = all # write/execute permissions for all commands
+ r_caps = all # read permissions for all commands
+ nvi = 1 # 1 port
+ niqflint = 8 # NCPUS "Queue Sets"
+ nethctrl = 8 # NCPUS "Queue Sets"
+ neq = 16 # niqflint + nethctrl Egress Queues
+ nexactf = 8 # number of exact MPSTCAM MAC filters
+ cmask = all # access to all channels
+ pmask = 0x2 # access to only one port
+
+[function "2"]
+ nvf = 16 # NVF on this function
+ wx_caps = all # write/execute permissions for all commands
+ r_caps = all # read permissions for all commands
+ nvi = 1 # 1 port
+ niqflint = 8 # NCPUS "Queue Sets"
+ nethctrl = 8 # NCPUS "Queue Sets"
+ neq = 16 # niqflint + nethctrl Egress Queues
+ nexactf = 8 # number of exact MPSTCAM MAC filters
+ cmask = all # access to all channels
+ pmask = 0x4 # access to only one port
+
+[function "3"]
+ nvf = 16 # NVF on this function
+ wx_caps = all # write/execute permissions for all commands
+ r_caps = all # read permissions for all commands
+ nvi = 1 # 1 port
+ niqflint = 8 # NCPUS "Queue Sets"
+ nethctrl = 8 # NCPUS "Queue Sets"
+ neq = 16 # niqflint + nethctrl Egress Queues
+ nexactf = 8 # number of exact MPSTCAM MAC filters
+ cmask = all # access to all channels
+ pmask = 0x8 # access to only one port
+
+# Some OS Drivers manage all application functions for all ports via PF4.
+# Thus we need to provide a large number of resources here. For Egress
+# Queues we need to account for both TX Queues as well as Free List Queues
+# (because the host is responsible for producing Free List Buffers for the
+# hardware to consume).
+#
+[function "4"]
+ wx_caps = all # write/execute permissions for all commands
+ r_caps = all # read permissions for all commands
+ nvi = 28 # NVI_UNIFIED
+ niqflint = 170 # NFLIQ_UNIFIED + NLFIQ_WD
+ nethctrl = 96 # NETHCTRL_UNIFIED + NETHCTRL_WD
+ neq = 252 # NEQ_UNIFIED + NEQ_WD
+ nexactf = 40 # NMPSTCAM_UNIFIED
+ cmask = all # access to all channels
+ pmask = all # access to all four ports ...
+ nroute = 32 # number of routing region entries
+ nclip = 32 # number of clip region entries
+ nfilter = 768 # number of filter region entries
+ nserver = 256 # number of server region entries
+ nhash = 0 # number of hash region entries
+ protocol = nic_vm, ofld, rddp, rdmac, iscsi_initiator_pdu, iscsi_target_pdu
+ tp_l2t = 100
+ tp_ddp = 2
+ tp_ddp_iscsi = 2
+ tp_stag = 2
+ tp_pbl = 5
+ tp_rq = 7
+
+# We have FCoE and iSCSI storage functions on PF5 and PF6 each of which may
+# need to have Virtual Interfaces on each of the four ports with up to NCPUS
+# "Queue Sets" each.
+#
+[function "5"]
+ wx_caps = all # write/execute permissions for all commands
+ r_caps = all # read permissions for all commands
+ nvi = 4 # NPORTS
+ niqflint = 34 # NPORTS*NCPUS + NMSIX_EXTRA
+ nethctrl = 32 # NPORTS*NCPUS
+ neq = 64 # NPORTS*NCPUS * 2 (FL, ETHCTRL/TX)
+ nexactf = 4 # NPORTS
+ cmask = all # access to all channels
+ pmask = all # access to all four ports ...
+
+[function "6"]
+ wx_caps = all # write/execute permissions for all commands
+ r_caps = all # read permissions for all commands
+ nvi = 4 # NPORTS
+ niqflint = 34 # NPORTS*NCPUS + NMSIX_EXTRA
+ nethctrl = 32 # NPORTS*NCPUS
+ neq = 66 # NPORTS*NCPUS * 2 (FL, ETHCTRL/TX) + 2 (EXTRA)
+ nexactf = 32 # NPORTS + adding 28 exact entries for FCoE
+ # which is OK since < MIN(SUM PF0..3, PF4)
+ # and we never load PF0..3 and PF4 concurrently
+ cmask = all # access to all channels
+ pmask = all # access to all four ports ...
+ nhash = 0
+ protocol = fcoe_initiator
+ tp_ddp = 2
+ fcoe_nfcf = 16
+ fcoe_nvnp = 32
+ fcoe_nssn = 1024
+
+# For Virtual functions, we only allow NIC functionality and we only allow
+# access to one port (1 << PF). Note that because of limitations in the
+# Scatter Gather Engine (SGE) hardware which checks writes to VF KDOORBELL
+# and GTS registers, the number of Ingress and Egress Queues must be a power
+# of 2.
+#
+[function "0/*"] # NVF
+ wx_caps = 0x82 # DMAQ | VF
+ r_caps = 0x86 # DMAQ | VF | PORT
+ nvi = 1 # 1 port
+ niqflint = 4 # 2 "Queue Sets" + NXIQ
+ nethctrl = 2 # 2 "Queue Sets"
+ neq = 4 # 2 "Queue Sets" * 2
+ nexactf = 4
+ cmask = all # access to all channels
+ pmask = 0x1 # access to only one port ...
+
+[function "1/*"] # NVF
+ wx_caps = 0x82 # DMAQ | VF
+ r_caps = 0x86 # DMAQ | VF | PORT
+ nvi = 1 # 1 port
+ niqflint = 4 # 2 "Queue Sets" + NXIQ
+ nethctrl = 2 # 2 "Queue Sets"
+ neq = 4 # 2 "Queue Sets" * 2
+ nexactf = 4
+ cmask = all # access to all channels
+ pmask = 0x2 # access to only one port ...
+
+[function "2/*"] # NVF
+ wx_caps = 0x82 # DMAQ | VF
+ r_caps = 0x86 # DMAQ | VF | PORT
+ nvi = 1 # 1 port
+ niqflint = 4 # 2 "Queue Sets" + NXIQ
+ nethctrl = 2 # 2 "Queue Sets"
+ neq = 4 # 2 "Queue Sets" * 2
+ nexactf = 4
+ cmask = all # access to all channels
+ pmask = 0x4 # access to only one port ...
+
+[function "3/*"] # NVF
+ wx_caps = 0x82 # DMAQ | VF
+ r_caps = 0x86 # DMAQ | VF | PORT
+ nvi = 1 # 1 port
+ niqflint = 4 # 2 "Queue Sets" + NXIQ
+ nethctrl = 2 # 2 "Queue Sets"
+ neq = 4 # 2 "Queue Sets" * 2
+ nexactf = 4
+ cmask = all # access to all channels
+ pmask = 0x8 # access to only one port ...
+
+# MPS features a 196608 bytes ingress buffer that is used for ingress buffering
+# for packets from the wire as well as the loopback path of the L2 switch. The
+# folling params control how the buffer memory is distributed and the L2 flow
+# control settings:
+#
+# bg_mem: %-age of mem to use for port/buffer group
+# lpbk_mem: %-age of port/bg mem to use for loopback
+# hwm: high watermark; bytes available when starting to send pause
+# frames (in units of 0.1 MTU)
+# lwm: low watermark; bytes remaining when sending 'unpause' frame
+# (in inuits of 0.1 MTU)
+# dwm: minimum delta between high and low watermark (in units of 100
+# Bytes)
+#
+[port "0"]
+ dcb = ppp, dcbx # configure for DCB PPP and enable DCBX offload
+ bg_mem = 25
+ lpbk_mem = 25
+ hwm = 30
+ lwm = 15
+ dwm = 30
+
+[port "1"]
+ dcb = ppp, dcbx
+ bg_mem = 25
+ lpbk_mem = 25
+ hwm = 30
+ lwm = 15
+ dwm = 30
+
+[port "2"]
+ dcb = ppp, dcbx
+ bg_mem = 25
+ lpbk_mem = 25
+ hwm = 30
+ lwm = 15
+ dwm = 30
+
+[port "3"]
+ dcb = ppp, dcbx
+ bg_mem = 25
+ lpbk_mem = 25
+ hwm = 30
+ lwm = 15
+ dwm = 30
+
+[fini]
+ version = 0x14250007
+ checksum = 0xfcbadefb
+
+# Total resources used by above allocations:
+# Virtual Interfaces: 104
+# Ingress Queues/w Free Lists and Interrupts: 526
+# Egress Queues: 702
+# MPS TCAM Entries: 336
+# MSI-X Vectors: 736
+# Virtual Functions: 64
+#
+# $FreeBSD$
+#
diff --git a/sys/dev/cxgbe/common/t4fw_interface.h b/sys/dev/cxgbe/firmware/t4fw_interface.h
index 3eb9615..6d259a5 100644
--- a/sys/dev/cxgbe/common/t4fw_interface.h
+++ b/sys/dev/cxgbe/firmware/t4fw_interface.h
@@ -37,16 +37,23 @@
enum fw_retval {
FW_SUCCESS = 0, /* completed sucessfully */
FW_EPERM = 1, /* operation not permitted */
+ FW_ENOENT = 2, /* no such file or directory */
FW_EIO = 5, /* input/output error; hw bad */
- FW_ENOEXEC = 8, /* Exec format error; inv microcode */
+ FW_ENOEXEC = 8, /* exec format error; inv microcode */
FW_EAGAIN = 11, /* try again */
FW_ENOMEM = 12, /* out of memory */
FW_EFAULT = 14, /* bad address; fw bad */
FW_EBUSY = 16, /* resource busy */
- FW_EEXIST = 17, /* File exists */
+ FW_EEXIST = 17, /* file exists */
FW_EINVAL = 22, /* invalid argument */
+ FW_ENOSPC = 28, /* no space left on device */
FW_ENOSYS = 38, /* functionality not implemented */
FW_EPROTO = 71, /* protocol error */
+ FW_EADDRINUSE = 98, /* address already in use */
+ FW_EADDRNOTAVAIL = 99, /* cannot assigned requested address */
+ FW_ENETDOWN = 100, /* network is down */
+ FW_ENETUNREACH = 101, /* network is unreachable */
+ FW_ENOBUFS = 105, /* no buffer space available */
FW_ETIMEDOUT = 110, /* timeout */
FW_EINPROGRESS = 115, /* fw internal */
FW_SCSI_ABORT_REQUESTED = 128, /* */
@@ -62,6 +69,8 @@ enum fw_retval {
FW_ERR_RDEV_IMPL_LOGO = 138, /* */
FW_SCSI_UNDER_FLOW_ERR = 139, /* */
FW_SCSI_OVER_FLOW_ERR = 140, /* */
+ FW_SCSI_DDP_ERR = 141, /* DDP error*/
+ FW_SCSI_TASK_ERR = 142, /* No SCSI tasks available */
};
/******************************************************************************
@@ -89,7 +98,7 @@ enum fw_wr_opcodes {
FW_RI_INV_LSTAG_WR = 0x1a,
FW_RI_WR = 0x0d,
FW_ISCSI_NODE_WR = 0x4a,
- FW_LASTC2E_WR = 0x4b
+ FW_LASTC2E_WR = 0x50
};
/*
@@ -512,8 +521,14 @@ struct fw_eth_tx_pkt_wr {
__be64 r3;
};
+#define S_FW_ETH_TX_PKT_WR_IMMDLEN 0
+#define M_FW_ETH_TX_PKT_WR_IMMDLEN 0x1ff
+#define V_FW_ETH_TX_PKT_WR_IMMDLEN(x) ((x) << S_FW_ETH_TX_PKT_WR_IMMDLEN)
+#define G_FW_ETH_TX_PKT_WR_IMMDLEN(x) \
+ (((x) >> S_FW_ETH_TX_PKT_WR_IMMDLEN) & M_FW_ETH_TX_PKT_WR_IMMDLEN)
+
struct fw_eth_tx_pkts_wr {
- __be32 op_immdlen;
+ __be32 op_pkd;
__be32 equiq_to_len16;
__be32 r3;
__be16 plen;
@@ -537,7 +552,7 @@ enum fw_flowc_mnem {
FW_FLOWC_MNEM_RCVNXT,
FW_FLOWC_MNEM_SNDBUF,
FW_FLOWC_MNEM_MSS,
- FW_FLOWC_MEM_TXDATAPLEN_MAX,
+ FW_FLOWC_MNEM_TXDATAPLEN_MAX,
};
struct fw_flowc_mnemval {
@@ -1469,22 +1484,129 @@ struct fw_ri_wr {
#define G_FW_RI_WR_P2PTYPE(x) \
(((x) >> S_FW_RI_WR_P2PTYPE) & M_FW_RI_WR_P2PTYPE)
-#ifdef FOISCSI
+/******************************************************************************
+ * S C S I W O R K R E Q U E S T s
+ **********************************************/
+
+
+/******************************************************************************
+ * F O i S C S I W O R K R E Q U E S T s
+ **********************************************/
+
+#define ISCSI_NAME_MAX_LEN 224
+#define ISCSI_ALIAS_MAX_LEN 224
+
+enum session_type {
+ ISCSI_SESSION_DISCOVERY = 0,
+ ISCSI_SESSION_NORMAL,
+};
+
+enum digest_val {
+ DIGEST_NONE = 0,
+ DIGEST_CRC32,
+ DIGEST_BOTH,
+};
+
+enum fw_iscsi_subops {
+ NODE_ONLINE = 1,
+ SESS_ONLINE,
+ CONN_ONLINE,
+ NODE_OFFLINE,
+ SESS_OFFLINE,
+ CONN_OFFLINE,
+ NODE_STATS,
+ SESS_STATS,
+ CONN_STATS,
+ UPDATE_IOHANDLE,
+};
+
+struct fw_iscsi_node_attr {
+ __u8 name_len;
+ __u8 node_name[ISCSI_NAME_MAX_LEN];
+ __u8 alias_len;
+ __u8 node_alias[ISCSI_ALIAS_MAX_LEN];
+};
+
+struct fw_iscsi_sess_attr {
+ __u8 sess_type;
+ __u8 seq_inorder;
+ __u8 pdu_inorder;
+ __u8 immd_data_en;
+ __u8 init_r2t_en;
+ __u8 erl;
+ __be16 max_conn;
+ __be16 max_r2t;
+ __be16 time2wait;
+ __be16 time2retain;
+ __be32 max_burst;
+ __be32 first_burst;
+};
+
+struct fw_iscsi_conn_attr {
+ __u8 hdr_digest;
+ __u8 data_digest;
+ __be32 max_rcv_dsl;
+ __be16 dst_port;
+ __be32 dst_addr;
+ __be16 src_port;
+ __be32 src_addr;
+ __be32 ping_tmo;
+};
+
+struct fw_iscsi_node_stats {
+ __be16 sess_count;
+ __be16 chap_fail_count;
+ __be16 login_count;
+ __be16 r1;
+};
+
+struct fw_iscsi_sess_stats {
+ __be32 rxbytes;
+ __be32 txbytes;
+ __be32 scmd_count;
+ __be32 read_cmds;
+ __be32 write_cmds;
+ __be32 read_bytes;
+ __be32 write_bytes;
+ __be32 scsi_err_count;
+ __be32 scsi_rst_count;
+ __be32 iscsi_tmf_count;
+ __be32 conn_count;
+};
+
+struct fw_iscsi_conn_stats {
+ __be32 txbytes;
+ __be32 rxbytes;
+ __be32 dataout;
+ __be32 datain;
+};
+
struct fw_iscsi_node_wr {
__u8 opcode;
__u8 subop;
- __u8 node_attr_to_compl;
- __u8 len16;
- __u8 status;
- __u8 r2;
__be16 immd_len;
+ __be32 flowid_len16;
__be64 cookie;
+ __u8 node_attr_to_compl;
+ __u8 status;
+ __be16 r1;
__be32 node_id;
__be32 ctrl_handle;
__be32 io_handle;
- __be32 r3;
};
+#define S_FW_ISCSI_NODE_WR_FLOWID 8
+#define M_FW_ISCSI_NODE_WR_FLOWID 0xfffff
+#define V_FW_ISCSI_NODE_WR_FLOWID(x) ((x) << S_FW_ISCSI_NODE_WR_FLOWID)
+#define G_FW_ISCSI_NODE_WR_FLOWID(x) \
+ (((x) >> S_FW_ISCSI_NODE_WR_FLOWID) & M_FW_ISCSI_NODE_WR_FLOWID)
+
+#define S_FW_ISCSI_NODE_WR_LEN16 0
+#define M_FW_ISCSI_NODE_WR_LEN16 0xff
+#define V_FW_ISCSI_NODE_WR_LEN16(x) ((x) << S_FW_ISCSI_NODE_WR_LEN16)
+#define G_FW_ISCSI_NODE_WR_LEN16(x) \
+ (((x) >> S_FW_ISCSI_NODE_WR_LEN16) & M_FW_ISCSI_NODE_WR_LEN16)
+
#define S_FW_ISCSI_NODE_WR_NODE_ATTR 7
#define M_FW_ISCSI_NODE_WR_NODE_ATTR 0x1
#define V_FW_ISCSI_NODE_WR_NODE_ATTR(x) ((x) << S_FW_ISCSI_NODE_WR_NODE_ATTR)
@@ -1527,7 +1649,109 @@ struct fw_iscsi_node_wr {
(((x) >> S_FW_ISCSI_NODE_WR_COMPL) & M_FW_ISCSI_NODE_WR_COMPL)
#define F_FW_ISCSI_NODE_WR_COMPL V_FW_ISCSI_NODE_WR_COMPL(1U)
-#endif
+#define FW_ISCSI_NODE_INVALID_ID 0xffffffff
+
+struct fw_scsi_iscsi_data {
+ __u8 r0;
+ __u8 fbit_to_tattr;
+ __be16 r2;
+ __be32 r3;
+ __u8 lun[8];
+ __be32 r4;
+ __be32 dlen;
+ __be32 r5;
+ __be32 r6;
+ __u8 cdb[16];
+};
+
+#define S_FW_SCSI_ISCSI_DATA_FBIT 7
+#define M_FW_SCSI_ISCSI_DATA_FBIT 0x1
+#define V_FW_SCSI_ISCSI_DATA_FBIT(x) ((x) << S_FW_SCSI_ISCSI_DATA_FBIT)
+#define G_FW_SCSI_ISCSI_DATA_FBIT(x) \
+ (((x) >> S_FW_SCSI_ISCSI_DATA_FBIT) & M_FW_SCSI_ISCSI_DATA_FBIT)
+#define F_FW_SCSI_ISCSI_DATA_FBIT V_FW_SCSI_ISCSI_DATA_FBIT(1U)
+
+#define S_FW_SCSI_ISCSI_DATA_RBIT 6
+#define M_FW_SCSI_ISCSI_DATA_RBIT 0x1
+#define V_FW_SCSI_ISCSI_DATA_RBIT(x) ((x) << S_FW_SCSI_ISCSI_DATA_RBIT)
+#define G_FW_SCSI_ISCSI_DATA_RBIT(x) \
+ (((x) >> S_FW_SCSI_ISCSI_DATA_RBIT) & M_FW_SCSI_ISCSI_DATA_RBIT)
+#define F_FW_SCSI_ISCSI_DATA_RBIT V_FW_SCSI_ISCSI_DATA_RBIT(1U)
+
+#define S_FW_SCSI_ISCSI_DATA_WBIT 5
+#define M_FW_SCSI_ISCSI_DATA_WBIT 0x1
+#define V_FW_SCSI_ISCSI_DATA_WBIT(x) ((x) << S_FW_SCSI_ISCSI_DATA_WBIT)
+#define G_FW_SCSI_ISCSI_DATA_WBIT(x) \
+ (((x) >> S_FW_SCSI_ISCSI_DATA_WBIT) & M_FW_SCSI_ISCSI_DATA_WBIT)
+#define F_FW_SCSI_ISCSI_DATA_WBIT V_FW_SCSI_ISCSI_DATA_WBIT(1U)
+
+#define S_FW_SCSI_ISCSI_DATA_TATTR 0
+#define M_FW_SCSI_ISCSI_DATA_TATTR 0x7
+#define V_FW_SCSI_ISCSI_DATA_TATTR(x) ((x) << S_FW_SCSI_ISCSI_DATA_TATTR)
+#define G_FW_SCSI_ISCSI_DATA_TATTR(x) \
+ (((x) >> S_FW_SCSI_ISCSI_DATA_TATTR) & M_FW_SCSI_ISCSI_DATA_TATTR)
+
+#define FW_SCSI_ISCSI_DATA_TATTR_UNTAGGED 0
+#define FW_SCSI_ISCSI_DATA_TATTR_SIMPLE 1
+#define FW_SCSI_ISCSI_DATA_TATTR_ORDERED 2
+#define FW_SCSI_ISCSI_DATA_TATTR_HEADOQ 3
+#define FW_SCSI_ISCSI_DATA_TATTR_ACA 4
+
+#define FW_SCSI_ISCSI_TMF_OP 0x02
+#define FW_SCSI_ISCSI_ABORT_FUNC 0x01
+#define FW_SCSI_ISCSI_LUN_RESET_FUNC 0x05
+#define FW_SCSI_ISCSI_RESERVED_TAG 0xffffffff
+
+struct fw_scsi_iscsi_rsp {
+ __u8 r0;
+ __u8 sbit_to_uflow;
+ __u8 response;
+ __u8 status;
+ __be32 r4;
+ __u8 r5[32];
+ __be32 bidir_res_cnt;
+ __be32 res_cnt;
+ __u8 sense_data[128];
+};
+
+#define S_FW_SCSI_ISCSI_RSP_SBIT 7
+#define M_FW_SCSI_ISCSI_RSP_SBIT 0x1
+#define V_FW_SCSI_ISCSI_RSP_SBIT(x) ((x) << S_FW_SCSI_ISCSI_RSP_SBIT)
+#define G_FW_SCSI_ISCSI_RSP_SBIT(x) \
+ (((x) >> S_FW_SCSI_ISCSI_RSP_SBIT) & M_FW_SCSI_ISCSI_RSP_SBIT)
+#define F_FW_SCSI_ISCSI_RSP_SBIT V_FW_SCSI_ISCSI_RSP_SBIT(1U)
+
+#define S_FW_SCSI_ISCSI_RSP_BIDIR_OFLOW 4
+#define M_FW_SCSI_ISCSI_RSP_BIDIR_OFLOW 0x1
+#define V_FW_SCSI_ISCSI_RSP_BIDIR_OFLOW(x) \
+ ((x) << S_FW_SCSI_ISCSI_RSP_BIDIR_OFLOW)
+#define G_FW_SCSI_ISCSI_RSP_BIDIR_OFLOW(x) \
+ (((x) >> S_FW_SCSI_ISCSI_RSP_BIDIR_OFLOW) & \
+ M_FW_SCSI_ISCSI_RSP_BIDIR_OFLOW)
+#define F_FW_SCSI_ISCSI_RSP_BIDIR_OFLOW V_FW_SCSI_ISCSI_RSP_BIDIR_OFLOW(1U)
+
+#define S_FW_SCSI_ISCSI_RSP_BIDIR_UFLOW 3
+#define M_FW_SCSI_ISCSI_RSP_BIDIR_UFLOW 0x1
+#define V_FW_SCSI_ISCSI_RSP_BIDIR_UFLOW(x) \
+ ((x) << S_FW_SCSI_ISCSI_RSP_BIDIR_UFLOW)
+#define G_FW_SCSI_ISCSI_RSP_BIDIR_UFLOW(x) \
+ (((x) >> S_FW_SCSI_ISCSI_RSP_BIDIR_UFLOW) & \
+ M_FW_SCSI_ISCSI_RSP_BIDIR_UFLOW)
+#define F_FW_SCSI_ISCSI_RSP_BIDIR_UFLOW V_FW_SCSI_ISCSI_RSP_BIDIR_UFLOW(1U)
+
+#define S_FW_SCSI_ISCSI_RSP_OFLOW 2
+#define M_FW_SCSI_ISCSI_RSP_OFLOW 0x1
+#define V_FW_SCSI_ISCSI_RSP_OFLOW(x) ((x) << S_FW_SCSI_ISCSI_RSP_OFLOW)
+#define G_FW_SCSI_ISCSI_RSP_OFLOW(x) \
+ (((x) >> S_FW_SCSI_ISCSI_RSP_OFLOW) & M_FW_SCSI_ISCSI_RSP_OFLOW)
+#define F_FW_SCSI_ISCSI_RSP_OFLOW V_FW_SCSI_ISCSI_RSP_OFLOW(1U)
+
+#define S_FW_SCSI_ISCSI_RSP_UFLOW 1
+#define M_FW_SCSI_ISCSI_RSP_UFLOW 0x1
+#define V_FW_SCSI_ISCSI_RSP_UFLOW(x) ((x) << S_FW_SCSI_ISCSI_RSP_UFLOW)
+#define G_FW_SCSI_ISCSI_RSP_UFLOW(x) \
+ (((x) >> S_FW_SCSI_ISCSI_RSP_UFLOW) & M_FW_SCSI_ISCSI_RSP_UFLOW)
+#define F_FW_SCSI_ISCSI_RSP_UFLOW V_FW_SCSI_ISCSI_RSP_UFLOW(1U)
/******************************************************************************
* C O M M A N D s
@@ -1543,6 +1767,16 @@ struct fw_iscsi_node_wr {
*/
#define FW_CMD_MAX_TIMEOUT 10000
+/*
+ * If a host driver does a HELLO and discovers that there's already a MASTER
+ * selected, we may have to wait for that MASTER to finish issuing RESET,
+ * configuration and INITIALIZE commands. Also, there's a possibility that
+ * our own HELLO may get lost if it happens right as the MASTER is issuign a
+ * RESET command, so we need to be willing to make a few retries of our HELLO.
+ */
+#define FW_CMD_HELLO_TIMEOUT (3 * FW_CMD_MAX_TIMEOUT)
+#define FW_CMD_HELLO_RETRIES 3
+
enum fw_cmd_opcodes {
FW_LDST_CMD = 0x01,
FW_RESET_CMD = 0x03,
@@ -1575,10 +1809,11 @@ enum fw_cmd_opcodes {
FW_SCHED_CMD = 0x24,
FW_DEVLOG_CMD = 0x25,
FW_NETIF_CMD = 0x26,
+ FW_WATCHDOG_CMD = 0x27,
+ FW_CLIP_CMD = 0x28,
FW_LASTC2E_CMD = 0x40,
FW_ERROR_CMD = 0x80,
FW_DEBUG_CMD = 0x81,
-
};
enum fw_cmd_cap {
@@ -1696,7 +1931,7 @@ struct fw_ldst_cmd {
} addrval;
struct fw_ldst_idctxt {
__be32 physid;
- __be32 msg_pkd;
+ __be32 msg_ctxtflush;
__be32 ctxt_data7;
__be32 ctxt_data6;
__be32 ctxt_data5;
@@ -1769,6 +2004,13 @@ struct fw_ldst_cmd {
(((x) >> S_FW_LDST_CMD_MSG) & M_FW_LDST_CMD_MSG)
#define F_FW_LDST_CMD_MSG V_FW_LDST_CMD_MSG(1U)
+#define S_FW_LDST_CMD_CTXTFLUSH 30
+#define M_FW_LDST_CMD_CTXTFLUSH 0x1
+#define V_FW_LDST_CMD_CTXTFLUSH(x) ((x) << S_FW_LDST_CMD_CTXTFLUSH)
+#define G_FW_LDST_CMD_CTXTFLUSH(x) \
+ (((x) >> S_FW_LDST_CMD_CTXTFLUSH) & M_FW_LDST_CMD_CTXTFLUSH)
+#define F_FW_LDST_CMD_CTXTFLUSH V_FW_LDST_CMD_CTXTFLUSH(1U)
+
#define S_FW_LDST_CMD_PADDR 8
#define M_FW_LDST_CMD_PADDR 0x1f
#define V_FW_LDST_CMD_PADDR(x) ((x) << S_FW_LDST_CMD_PADDR)
@@ -1852,13 +2094,27 @@ struct fw_reset_cmd {
__be32 op_to_write;
__be32 retval_len16;
__be32 val;
- __be32 r3;
+ __be32 halt_pkd;
+};
+
+#define S_FW_RESET_CMD_HALT 31
+#define M_FW_RESET_CMD_HALT 0x1
+#define V_FW_RESET_CMD_HALT(x) ((x) << S_FW_RESET_CMD_HALT)
+#define G_FW_RESET_CMD_HALT(x) \
+ (((x) >> S_FW_RESET_CMD_HALT) & M_FW_RESET_CMD_HALT)
+#define F_FW_RESET_CMD_HALT V_FW_RESET_CMD_HALT(1U)
+
+enum {
+ FW_HELLO_CMD_STAGE_OS = 0,
+ FW_HELLO_CMD_STAGE_PREOS0 = 1,
+ FW_HELLO_CMD_STAGE_PREOS1 = 2,
+ FW_HELLO_CMD_STAGE_POSTOS = 3,
};
struct fw_hello_cmd {
__be32 op_to_write;
__be32 retval_len16;
- __be32 err_to_mbasyncnot;
+ __be32 err_to_clearinit;
__be32 fwrev;
};
@@ -1909,6 +2165,19 @@ struct fw_hello_cmd {
#define G_FW_HELLO_CMD_MBASYNCNOT(x) \
(((x) >> S_FW_HELLO_CMD_MBASYNCNOT) & M_FW_HELLO_CMD_MBASYNCNOT)
+#define S_FW_HELLO_CMD_STAGE 17
+#define M_FW_HELLO_CMD_STAGE 0x7
+#define V_FW_HELLO_CMD_STAGE(x) ((x) << S_FW_HELLO_CMD_STAGE)
+#define G_FW_HELLO_CMD_STAGE(x) \
+ (((x) >> S_FW_HELLO_CMD_STAGE) & M_FW_HELLO_CMD_STAGE)
+
+#define S_FW_HELLO_CMD_CLEARINIT 16
+#define M_FW_HELLO_CMD_CLEARINIT 0x1
+#define V_FW_HELLO_CMD_CLEARINIT(x) ((x) << S_FW_HELLO_CMD_CLEARINIT)
+#define G_FW_HELLO_CMD_CLEARINIT(x) \
+ (((x) >> S_FW_HELLO_CMD_CLEARINIT) & M_FW_HELLO_CMD_CLEARINIT)
+#define F_FW_HELLO_CMD_CLEARINIT V_FW_HELLO_CMD_CLEARINIT(1U)
+
struct fw_bye_cmd {
__be32 op_to_write;
__be32 retval_len16;
@@ -1989,6 +2258,8 @@ enum fw_caps_config_nic {
FW_CAPS_CONFIG_NIC = 0x00000001,
FW_CAPS_CONFIG_NIC_VM = 0x00000002,
FW_CAPS_CONFIG_NIC_IDS = 0x00000004,
+ FW_CAPS_CONFIG_NIC_UM = 0x00000008,
+ FW_CAPS_CONFIG_NIC_UM_ISGL = 0x00000010,
};
enum fw_caps_config_toe {
@@ -2015,9 +2286,16 @@ enum fw_caps_config_fcoe {
FW_CAPS_CONFIG_FCOE_CTRL_OFLD = 0x00000004,
};
+enum fw_memtype_cf {
+ FW_MEMTYPE_CF_EDC0 = 0x0,
+ FW_MEMTYPE_CF_EDC1 = 0x1,
+ FW_MEMTYPE_CF_EXTMEM = 0x2,
+ FW_MEMTYPE_CF_FLASH = 0x4,
+};
+
struct fw_caps_config_cmd {
__be32 op_to_write;
- __be32 retval_len16;
+ __be32 cfvalid_to_len16;
__be32 r2;
__be32 hwmbitmap;
__be16 nbmcaps;
@@ -2030,9 +2308,33 @@ struct fw_caps_config_cmd {
__be16 r4;
__be16 iscsicaps;
__be16 fcoecaps;
- __be32 r5;
- __be64 r6;
-};
+ __be32 cfcsum;
+ __be32 finiver;
+ __be32 finicsum;
+};
+
+#define S_FW_CAPS_CONFIG_CMD_CFVALID 27
+#define M_FW_CAPS_CONFIG_CMD_CFVALID 0x1
+#define V_FW_CAPS_CONFIG_CMD_CFVALID(x) ((x) << S_FW_CAPS_CONFIG_CMD_CFVALID)
+#define G_FW_CAPS_CONFIG_CMD_CFVALID(x) \
+ (((x) >> S_FW_CAPS_CONFIG_CMD_CFVALID) & M_FW_CAPS_CONFIG_CMD_CFVALID)
+#define F_FW_CAPS_CONFIG_CMD_CFVALID V_FW_CAPS_CONFIG_CMD_CFVALID(1U)
+
+#define S_FW_CAPS_CONFIG_CMD_MEMTYPE_CF 24
+#define M_FW_CAPS_CONFIG_CMD_MEMTYPE_CF 0x7
+#define V_FW_CAPS_CONFIG_CMD_MEMTYPE_CF(x) \
+ ((x) << S_FW_CAPS_CONFIG_CMD_MEMTYPE_CF)
+#define G_FW_CAPS_CONFIG_CMD_MEMTYPE_CF(x) \
+ (((x) >> S_FW_CAPS_CONFIG_CMD_MEMTYPE_CF) & \
+ M_FW_CAPS_CONFIG_CMD_MEMTYPE_CF)
+
+#define S_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF 16
+#define M_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF 0xff
+#define V_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(x) \
+ ((x) << S_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF)
+#define G_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(x) \
+ (((x) >> S_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF) & \
+ M_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF)
/*
* params command mnemonics
@@ -2056,15 +2358,17 @@ enum fw_params_param_dev {
* Lookup Engine
*/
FW_PARAMS_PARAM_DEV_FLOWC_BUFFIFO_SZ = 0x03,
- FW_PARAMS_PARAM_DEV_INTVER_NIC = 0x04,
- FW_PARAMS_PARAM_DEV_INTVER_VNIC = 0x05,
- FW_PARAMS_PARAM_DEV_INTVER_OFLD = 0x06,
- FW_PARAMS_PARAM_DEV_INTVER_RI = 0x07,
- FW_PARAMS_PARAM_DEV_INTVER_ISCSIPDU = 0x08,
- FW_PARAMS_PARAM_DEV_INTVER_ISCSI = 0x09,
- FW_PARAMS_PARAM_DEV_INTVER_FCOE = 0x0A,
+ FW_PARAMS_PARAM_DEV_INTFVER_NIC = 0x04,
+ FW_PARAMS_PARAM_DEV_INTFVER_VNIC = 0x05,
+ FW_PARAMS_PARAM_DEV_INTFVER_OFLD = 0x06,
+ FW_PARAMS_PARAM_DEV_INTFVER_RI = 0x07,
+ FW_PARAMS_PARAM_DEV_INTFVER_ISCSIPDU = 0x08,
+ FW_PARAMS_PARAM_DEV_INTFVER_ISCSI = 0x09,
+ FW_PARAMS_PARAM_DEV_INTFVER_FCOE = 0x0A,
FW_PARAMS_PARAM_DEV_FWREV = 0x0B,
FW_PARAMS_PARAM_DEV_TPREV = 0x0C,
+ FW_PARAMS_PARAM_DEV_CF = 0x0D,
+ FW_PARAMS_PARAM_DEV_BYPASS = 0x0E,
};
/*
@@ -2119,6 +2423,23 @@ enum fw_params_param_dmaq {
FW_PARAMS_PARAM_DMAQ_EQ_SCHEDCLASS_ETH = 0x12,
};
+/*
+ * dev bypass parameters; actions and modes
+ */
+enum fw_params_param_dev_bypass {
+
+ /* actions
+ */
+ FW_PARAMS_PARAM_DEV_BYPASS_PFAIL = 0x00,
+ FW_PARAMS_PARAM_DEV_BYPASS_CURRENT = 0x01,
+
+ /* modes
+ */
+ FW_PARAMS_PARAM_DEV_BYPASS_NORMAL = 0x00,
+ FW_PARAMS_PARAM_DEV_BYPASS_DROP = 0x1,
+ FW_PARAMS_PARAM_DEV_BYPASS_BYPASS = 0x2,
+};
+
#define S_FW_PARAMS_MNEM 24
#define M_FW_PARAMS_MNEM 0xff
#define V_FW_PARAMS_MNEM(x) ((x) << S_FW_PARAMS_MNEM)
@@ -2271,6 +2592,7 @@ struct fw_pfvf_cmd {
#define V_FW_PFVF_CMD_NETHCTRL(x) ((x) << S_FW_PFVF_CMD_NETHCTRL)
#define G_FW_PFVF_CMD_NETHCTRL(x) \
(((x) >> S_FW_PFVF_CMD_NETHCTRL) & M_FW_PFVF_CMD_NETHCTRL)
+
/*
* ingress queue type; the first 1K ingress queues can have associated 0,
* 1 or 2 free lists and an interrupt, all other ingress queues lack these
@@ -3518,6 +3840,7 @@ struct fw_eq_ofld_cmd {
#define V_FW_EQ_OFLD_CMD_EQSIZE(x) ((x) << S_FW_EQ_OFLD_CMD_EQSIZE)
#define G_FW_EQ_OFLD_CMD_EQSIZE(x) \
(((x) >> S_FW_EQ_OFLD_CMD_EQSIZE) & M_FW_EQ_OFLD_CMD_EQSIZE)
+
/* Macros for VIID parsing:
VIID - [10:8] PFN, [7] VI Valid, [6:0] VI number */
#define S_FW_VIID_PFN 8
@@ -4081,8 +4404,10 @@ enum fw_port_action {
FW_PORT_ACTION_L2_WOL_MODE_EN = 0x0012,
FW_PORT_ACTION_LPBK_TO_NORMAL = 0x0020,
FW_PORT_ACTION_L1_SS_LPBK_ASIC = 0x0021,
+ FW_PORT_ACTION_MAC_LPBK = 0x0022,
FW_PORT_ACTION_L1_WS_LPBK_ASIC = 0x0023,
FW_PORT_ACTION_L1_EXT_LPBK = 0x0026,
+ FW_PORT_ACTION_PCS_LPBK = 0x0028,
FW_PORT_ACTION_PHY_RESET = 0x0040,
FW_PORT_ACTION_PMA_RESET = 0x0041,
FW_PORT_ACTION_PCS_RESET = 0x0042,
@@ -4164,7 +4489,8 @@ struct fw_port_cmd {
struct fw_port_dcb_pgrate {
__u8 type;
__u8 apply_pkd;
- __u8 r10_lo[6];
+ __u8 r10_lo[5];
+ __u8 num_tcs_supported;
__u8 pgrate[8];
} pgrate;
struct fw_port_dcb_priorate {
@@ -4181,11 +4507,12 @@ struct fw_port_cmd {
} pfc;
struct fw_port_app_priority {
__u8 type;
- __u8 r10_lo[3];
- __u8 prio;
- __u8 sel;
+ __u8 r10[2];
+ __u8 idx;
+ __u8 user_prio_map;
+ __u8 sel_field;
__be16 protocolid;
- __u8 r12[8];
+ __be64 r12;
} app_priority;
} dcb;
} u;
@@ -4337,20 +4664,6 @@ struct fw_port_cmd {
(((x) >> S_FW_PORT_CMD_APPLY) & M_FW_PORT_CMD_APPLY)
#define F_FW_PORT_CMD_APPLY V_FW_PORT_CMD_APPLY(1U)
-#define S_FW_PORT_CMD_APPLY 7
-#define M_FW_PORT_CMD_APPLY 0x1
-#define V_FW_PORT_CMD_APPLY(x) ((x) << S_FW_PORT_CMD_APPLY)
-#define G_FW_PORT_CMD_APPLY(x) \
- (((x) >> S_FW_PORT_CMD_APPLY) & M_FW_PORT_CMD_APPLY)
-#define F_FW_PORT_CMD_APPLY V_FW_PORT_CMD_APPLY(1U)
-
-#define S_FW_PORT_CMD_APPLY 7
-#define M_FW_PORT_CMD_APPLY 0x1
-#define V_FW_PORT_CMD_APPLY(x) ((x) << S_FW_PORT_CMD_APPLY)
-#define G_FW_PORT_CMD_APPLY(x) \
- (((x) >> S_FW_PORT_CMD_APPLY) & M_FW_PORT_CMD_APPLY)
-#define F_FW_PORT_CMD_APPLY V_FW_PORT_CMD_APPLY(1U)
-
/*
* These are configured into the VPD and hence tools that generate
* VPD may use this enumeration.
@@ -4383,6 +4696,7 @@ enum fw_port_module_type {
FW_PORT_MOD_TYPE_TWINAX_PASSIVE = 0x4,
FW_PORT_MOD_TYPE_TWINAX_ACTIVE = 0x5,
FW_PORT_MOD_TYPE_LRM = 0x6,
+ FW_PORT_MOD_TYPE_ERROR = M_FW_PORT_CMD_MODTYPE - 3,
FW_PORT_MOD_TYPE_UNKNOWN = M_FW_PORT_CMD_MODTYPE - 2,
FW_PORT_MOD_TYPE_NOTSUPPORTED = M_FW_PORT_CMD_MODTYPE - 1,
FW_PORT_MOD_TYPE_NONE = M_FW_PORT_CMD_MODTYPE
@@ -5189,15 +5503,12 @@ struct fw_rss_vi_config_cmd {
#define F_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN \
V_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(1U)
-#define S_FW_RSS_VI_CONFIG_CMD_UDPEN 0
-#define M_FW_RSS_VI_CONFIG_CMD_UDPEN 0x1
-#define V_FW_RSS_VI_CONFIG_CMD_UDPEN(x) \
- ((x) << S_FW_RSS_VI_CONFIG_CMD_UDPEN)
-#define G_FW_RSS_VI_CONFIG_CMD_UDPEN(x) \
- (((x) >> S_FW_RSS_VI_CONFIG_CMD_UDPEN) & \
- M_FW_RSS_VI_CONFIG_CMD_UDPEN)
-#define F_FW_RSS_VI_CONFIG_CMD_UDPEN \
- V_FW_RSS_VI_CONFIG_CMD_UDPEN(1U)
+#define S_FW_RSS_VI_CONFIG_CMD_UDPEN 0
+#define M_FW_RSS_VI_CONFIG_CMD_UDPEN 0x1
+#define V_FW_RSS_VI_CONFIG_CMD_UDPEN(x) ((x) << S_FW_RSS_VI_CONFIG_CMD_UDPEN)
+#define G_FW_RSS_VI_CONFIG_CMD_UDPEN(x) \
+ (((x) >> S_FW_RSS_VI_CONFIG_CMD_UDPEN) & M_FW_RSS_VI_CONFIG_CMD_UDPEN)
+#define F_FW_RSS_VI_CONFIG_CMD_UDPEN V_FW_RSS_VI_CONFIG_CMD_UDPEN(1U)
enum fw_sched_sc {
FW_SCHED_SC_CONFIG = 0,
@@ -5352,103 +5663,97 @@ struct fw_devlog_cmd {
M_FW_DEVLOG_CMD_MEMADDR16_DEVLOG)
struct fw_netif_cmd {
- __be32 op_portid;
- __be32 retval_to_len16;
- __be32 add_to_ipv4gw;
- __be32 vlanid_mtuval;
+ __be32 op_to_ipv4gw;
+ __be32 retval_len16;
+ __be32 netifi_ifadridx;
+ __be32 portid_to_mtuval;
__be32 gwaddr;
__be32 addr;
__be32 nmask;
__be32 bcaddr;
};
-#define S_FW_NETIF_CMD_PORTID 0
-#define M_FW_NETIF_CMD_PORTID 0xf
-#define V_FW_NETIF_CMD_PORTID(x) ((x) << S_FW_NETIF_CMD_PORTID)
-#define G_FW_NETIF_CMD_PORTID(x) \
- (((x) >> S_FW_NETIF_CMD_PORTID) & M_FW_NETIF_CMD_PORTID)
-
-#define S_FW_NETIF_CMD_RETVAL 24
-#define M_FW_NETIF_CMD_RETVAL 0xff
-#define V_FW_NETIF_CMD_RETVAL(x) ((x) << S_FW_NETIF_CMD_RETVAL)
-#define G_FW_NETIF_CMD_RETVAL(x) \
- (((x) >> S_FW_NETIF_CMD_RETVAL) & M_FW_NETIF_CMD_RETVAL)
-
-#define S_FW_NETIF_CMD_IFIDX 16
-#define M_FW_NETIF_CMD_IFIDX 0xff
-#define V_FW_NETIF_CMD_IFIDX(x) ((x) << S_FW_NETIF_CMD_IFIDX)
-#define G_FW_NETIF_CMD_IFIDX(x) \
- (((x) >> S_FW_NETIF_CMD_IFIDX) & M_FW_NETIF_CMD_IFIDX)
-
-#define S_FW_NETIF_CMD_LEN16 0
-#define M_FW_NETIF_CMD_LEN16 0xff
-#define V_FW_NETIF_CMD_LEN16(x) ((x) << S_FW_NETIF_CMD_LEN16)
-#define G_FW_NETIF_CMD_LEN16(x) \
- (((x) >> S_FW_NETIF_CMD_LEN16) & M_FW_NETIF_CMD_LEN16)
-
-#define S_FW_NETIF_CMD_ADD 31
+#define S_FW_NETIF_CMD_ADD 20
#define M_FW_NETIF_CMD_ADD 0x1
#define V_FW_NETIF_CMD_ADD(x) ((x) << S_FW_NETIF_CMD_ADD)
#define G_FW_NETIF_CMD_ADD(x) \
(((x) >> S_FW_NETIF_CMD_ADD) & M_FW_NETIF_CMD_ADD)
#define F_FW_NETIF_CMD_ADD V_FW_NETIF_CMD_ADD(1U)
-#define S_FW_NETIF_CMD_LINK 30
+#define S_FW_NETIF_CMD_LINK 19
#define M_FW_NETIF_CMD_LINK 0x1
#define V_FW_NETIF_CMD_LINK(x) ((x) << S_FW_NETIF_CMD_LINK)
#define G_FW_NETIF_CMD_LINK(x) \
(((x) >> S_FW_NETIF_CMD_LINK) & M_FW_NETIF_CMD_LINK)
#define F_FW_NETIF_CMD_LINK V_FW_NETIF_CMD_LINK(1U)
-#define S_FW_NETIF_CMD_VLAN 29
+#define S_FW_NETIF_CMD_VLAN 18
#define M_FW_NETIF_CMD_VLAN 0x1
#define V_FW_NETIF_CMD_VLAN(x) ((x) << S_FW_NETIF_CMD_VLAN)
#define G_FW_NETIF_CMD_VLAN(x) \
(((x) >> S_FW_NETIF_CMD_VLAN) & M_FW_NETIF_CMD_VLAN)
#define F_FW_NETIF_CMD_VLAN V_FW_NETIF_CMD_VLAN(1U)
-#define S_FW_NETIF_CMD_MTU 28
+#define S_FW_NETIF_CMD_MTU 17
#define M_FW_NETIF_CMD_MTU 0x1
#define V_FW_NETIF_CMD_MTU(x) ((x) << S_FW_NETIF_CMD_MTU)
#define G_FW_NETIF_CMD_MTU(x) \
(((x) >> S_FW_NETIF_CMD_MTU) & M_FW_NETIF_CMD_MTU)
#define F_FW_NETIF_CMD_MTU V_FW_NETIF_CMD_MTU(1U)
-#define S_FW_NETIF_CMD_DHCP 27
+#define S_FW_NETIF_CMD_DHCP 16
#define M_FW_NETIF_CMD_DHCP 0x1
#define V_FW_NETIF_CMD_DHCP(x) ((x) << S_FW_NETIF_CMD_DHCP)
#define G_FW_NETIF_CMD_DHCP(x) \
(((x) >> S_FW_NETIF_CMD_DHCP) & M_FW_NETIF_CMD_DHCP)
#define F_FW_NETIF_CMD_DHCP V_FW_NETIF_CMD_DHCP(1U)
-#define S_FW_NETIF_CMD_IPV4BCADDR 3
+#define S_FW_NETIF_CMD_IPV4BCADDR 15
#define M_FW_NETIF_CMD_IPV4BCADDR 0x1
#define V_FW_NETIF_CMD_IPV4BCADDR(x) ((x) << S_FW_NETIF_CMD_IPV4BCADDR)
#define G_FW_NETIF_CMD_IPV4BCADDR(x) \
(((x) >> S_FW_NETIF_CMD_IPV4BCADDR) & M_FW_NETIF_CMD_IPV4BCADDR)
#define F_FW_NETIF_CMD_IPV4BCADDR V_FW_NETIF_CMD_IPV4BCADDR(1U)
-#define S_FW_NETIF_CMD_IPV4NMASK 2
+#define S_FW_NETIF_CMD_IPV4NMASK 14
#define M_FW_NETIF_CMD_IPV4NMASK 0x1
#define V_FW_NETIF_CMD_IPV4NMASK(x) ((x) << S_FW_NETIF_CMD_IPV4NMASK)
#define G_FW_NETIF_CMD_IPV4NMASK(x) \
(((x) >> S_FW_NETIF_CMD_IPV4NMASK) & M_FW_NETIF_CMD_IPV4NMASK)
#define F_FW_NETIF_CMD_IPV4NMASK V_FW_NETIF_CMD_IPV4NMASK(1U)
-#define S_FW_NETIF_CMD_IPV4ADDR 1
+#define S_FW_NETIF_CMD_IPV4ADDR 13
#define M_FW_NETIF_CMD_IPV4ADDR 0x1
#define V_FW_NETIF_CMD_IPV4ADDR(x) ((x) << S_FW_NETIF_CMD_IPV4ADDR)
#define G_FW_NETIF_CMD_IPV4ADDR(x) \
(((x) >> S_FW_NETIF_CMD_IPV4ADDR) & M_FW_NETIF_CMD_IPV4ADDR)
#define F_FW_NETIF_CMD_IPV4ADDR V_FW_NETIF_CMD_IPV4ADDR(1U)
-#define S_FW_NETIF_CMD_IPV4GW 0
+#define S_FW_NETIF_CMD_IPV4GW 12
#define M_FW_NETIF_CMD_IPV4GW 0x1
#define V_FW_NETIF_CMD_IPV4GW(x) ((x) << S_FW_NETIF_CMD_IPV4GW)
#define G_FW_NETIF_CMD_IPV4GW(x) \
(((x) >> S_FW_NETIF_CMD_IPV4GW) & M_FW_NETIF_CMD_IPV4GW)
#define F_FW_NETIF_CMD_IPV4GW V_FW_NETIF_CMD_IPV4GW(1U)
+#define S_FW_NETIF_CMD_NETIFI 8
+#define M_FW_NETIF_CMD_NETIFI 0xffffff
+#define V_FW_NETIF_CMD_NETIFI(x) ((x) << S_FW_NETIF_CMD_NETIFI)
+#define G_FW_NETIF_CMD_NETIFI(x) \
+ (((x) >> S_FW_NETIF_CMD_NETIFI) & M_FW_NETIF_CMD_NETIFI)
+
+#define S_FW_NETIF_CMD_IFADRIDX 0
+#define M_FW_NETIF_CMD_IFADRIDX 0xff
+#define V_FW_NETIF_CMD_IFADRIDX(x) ((x) << S_FW_NETIF_CMD_IFADRIDX)
+#define G_FW_NETIF_CMD_IFADRIDX(x) \
+ (((x) >> S_FW_NETIF_CMD_IFADRIDX) & M_FW_NETIF_CMD_IFADRIDX)
+
+#define S_FW_NETIF_CMD_PORTID 28
+#define M_FW_NETIF_CMD_PORTID 0xf
+#define V_FW_NETIF_CMD_PORTID(x) ((x) << S_FW_NETIF_CMD_PORTID)
+#define G_FW_NETIF_CMD_PORTID(x) \
+ (((x) >> S_FW_NETIF_CMD_PORTID) & M_FW_NETIF_CMD_PORTID)
+
#define S_FW_NETIF_CMD_VLANID 16
#define M_FW_NETIF_CMD_VLANID 0xfff
#define V_FW_NETIF_CMD_VLANID(x) ((x) << S_FW_NETIF_CMD_VLANID)
@@ -5461,6 +5766,42 @@ struct fw_netif_cmd {
#define G_FW_NETIF_CMD_MTUVAL(x) \
(((x) >> S_FW_NETIF_CMD_MTUVAL) & M_FW_NETIF_CMD_MTUVAL)
+enum fw_watchdog_actions {
+ FW_WATCHDOG_ACTION_FLR = 0x1,
+ FW_WATCHDOG_ACTION_BYPASS = 0x2,
+};
+
+#define FW_WATCHDOG_MAX_TIMEOUT_SECS 60
+
+struct fw_watchdog_cmd {
+ __be32 op_to_write;
+ __be32 retval_len16;
+ __be32 timeout;
+ __be32 actions;
+};
+
+struct fw_clip_cmd {
+ __be32 op_to_write;
+ __be32 alloc_to_len16;
+ __be64 ip_hi;
+ __be64 ip_lo;
+ __be32 r4[2];
+};
+
+#define S_FW_CLIP_CMD_ALLOC 31
+#define M_FW_CLIP_CMD_ALLOC 0x1
+#define V_FW_CLIP_CMD_ALLOC(x) ((x) << S_FW_CLIP_CMD_ALLOC)
+#define G_FW_CLIP_CMD_ALLOC(x) \
+ (((x) >> S_FW_CLIP_CMD_ALLOC) & M_FW_CLIP_CMD_ALLOC)
+#define F_FW_CLIP_CMD_ALLOC V_FW_CLIP_CMD_ALLOC(1U)
+
+#define S_FW_CLIP_CMD_FREE 30
+#define M_FW_CLIP_CMD_FREE 0x1
+#define V_FW_CLIP_CMD_FREE(x) ((x) << S_FW_CLIP_CMD_FREE)
+#define G_FW_CLIP_CMD_FREE(x) \
+ (((x) >> S_FW_CLIP_CMD_FREE) & M_FW_CLIP_CMD_FREE)
+#define F_FW_CLIP_CMD_FREE V_FW_CLIP_CMD_FREE(1U)
+
enum fw_error_type {
FW_ERROR_TYPE_EXCEPTION = 0x0,
FW_ERROR_TYPE_HWMODULE = 0x1,
@@ -5570,6 +5911,94 @@ struct fw_debug_cmd {
#define G_FW_DEBUG_CMD_TYPE(x) \
(((x) >> S_FW_DEBUG_CMD_TYPE) & M_FW_DEBUG_CMD_TYPE)
+
+/******************************************************************************
+ * P C I E F W R E G I S T E R
+ **************************************/
+
+/**
+ * Register definitions for the PCIE_FW register which the firmware uses
+ * to retain status across RESETs. This register should be considered
+ * as a READ-ONLY register for Host Software and only to be used to
+ * track firmware initialization/error state, etc.
+ */
+#define S_PCIE_FW_ERR 31
+#define M_PCIE_FW_ERR 0x1
+#define V_PCIE_FW_ERR(x) ((x) << S_PCIE_FW_ERR)
+#define G_PCIE_FW_ERR(x) (((x) >> S_PCIE_FW_ERR) & M_PCIE_FW_ERR)
+#define F_PCIE_FW_ERR V_PCIE_FW_ERR(1U)
+
+#define S_PCIE_FW_INIT 30
+#define M_PCIE_FW_INIT 0x1
+#define V_PCIE_FW_INIT(x) ((x) << S_PCIE_FW_INIT)
+#define G_PCIE_FW_INIT(x) (((x) >> S_PCIE_FW_INIT) & M_PCIE_FW_INIT)
+#define F_PCIE_FW_INIT V_PCIE_FW_INIT(1U)
+
+#define S_PCIE_FW_HALT 29
+#define M_PCIE_FW_HALT 0x1
+#define V_PCIE_FW_HALT(x) ((x) << S_PCIE_FW_HALT)
+#define G_PCIE_FW_HALT(x) (((x) >> S_PCIE_FW_HALT) & M_PCIE_FW_HALT)
+#define F_PCIE_FW_HALT V_PCIE_FW_HALT(1U)
+
+#define S_PCIE_FW_STAGE 21
+#define M_PCIE_FW_STAGE 0x7
+#define V_PCIE_FW_STAGE(x) ((x) << S_PCIE_FW_STAGE)
+#define G_PCIE_FW_STAGE(x) (((x) >> S_PCIE_FW_STAGE) & M_PCIE_FW_STAGE)
+
+#define S_PCIE_FW_ASYNCNOT_VLD 20
+#define M_PCIE_FW_ASYNCNOT_VLD 0x1
+#define V_PCIE_FW_ASYNCNOT_VLD(x) \
+ ((x) << S_PCIE_FW_ASYNCNOT_VLD)
+#define G_PCIE_FW_ASYNCNOT_VLD(x) \
+ (((x) >> S_PCIE_FW_ASYNCNOT_VLD) & M_PCIE_FW_ASYNCNOT_VLD)
+#define F_PCIE_FW_ASYNCNOT_VLD V_PCIE_FW_ASYNCNOT_VLD(1U)
+
+#define S_PCIE_FW_ASYNCNOTINT 19
+#define M_PCIE_FW_ASYNCNOTINT 0x1
+#define V_PCIE_FW_ASYNCNOTINT(x) \
+ ((x) << S_PCIE_FW_ASYNCNOTINT)
+#define G_PCIE_FW_ASYNCNOTINT(x) \
+ (((x) >> S_PCIE_FW_ASYNCNOTINT) & M_PCIE_FW_ASYNCNOTINT)
+#define F_PCIE_FW_ASYNCNOTINT V_PCIE_FW_ASYNCNOTINT(1U)
+
+#define S_PCIE_FW_ASYNCNOT 16
+#define M_PCIE_FW_ASYNCNOT 0x7
+#define V_PCIE_FW_ASYNCNOT(x) ((x) << S_PCIE_FW_ASYNCNOT)
+#define G_PCIE_FW_ASYNCNOT(x) \
+ (((x) >> S_PCIE_FW_ASYNCNOT) & M_PCIE_FW_ASYNCNOT)
+
+#define S_PCIE_FW_MASTER_VLD 15
+#define M_PCIE_FW_MASTER_VLD 0x1
+#define V_PCIE_FW_MASTER_VLD(x) ((x) << S_PCIE_FW_MASTER_VLD)
+#define G_PCIE_FW_MASTER_VLD(x) \
+ (((x) >> S_PCIE_FW_MASTER_VLD) & M_PCIE_FW_MASTER_VLD)
+#define F_PCIE_FW_MASTER_VLD V_PCIE_FW_MASTER_VLD(1U)
+
+#define S_PCIE_FW_MASTER 12
+#define M_PCIE_FW_MASTER 0x7
+#define V_PCIE_FW_MASTER(x) ((x) << S_PCIE_FW_MASTER)
+#define G_PCIE_FW_MASTER(x) (((x) >> S_PCIE_FW_MASTER) & M_PCIE_FW_MASTER)
+
+#define S_PCIE_FW_RESET_VLD 11
+#define M_PCIE_FW_RESET_VLD 0x1
+#define V_PCIE_FW_RESET_VLD(x) ((x) << S_PCIE_FW_RESET_VLD)
+#define G_PCIE_FW_RESET_VLD(x) \
+ (((x) >> S_PCIE_FW_RESET_VLD) & M_PCIE_FW_RESET_VLD)
+#define F_PCIE_FW_RESET_VLD V_PCIE_FW_RESET_VLD(1U)
+
+#define S_PCIE_FW_RESET 8
+#define M_PCIE_FW_RESET 0x7
+#define V_PCIE_FW_RESET(x) ((x) << S_PCIE_FW_RESET)
+#define G_PCIE_FW_RESET(x) \
+ (((x) >> S_PCIE_FW_RESET) & M_PCIE_FW_RESET)
+
+#define S_PCIE_FW_REGISTERED 0
+#define M_PCIE_FW_REGISTERED 0xff
+#define V_PCIE_FW_REGISTERED(x) ((x) << S_PCIE_FW_REGISTERED)
+#define G_PCIE_FW_REGISTERED(x) \
+ (((x) >> S_PCIE_FW_REGISTERED) & M_PCIE_FW_REGISTERED)
+
+
/******************************************************************************
* B I N A R Y H E A D E R F O R M A T
**********************************************/
@@ -5579,7 +6008,7 @@ struct fw_debug_cmd {
*/
struct fw_hdr {
__u8 ver;
- __u8 reserved1;
+ __u8 chip; /* terminator chip family */
__be16 len512; /* bin length in units of 512-bytes */
__be32 fw_ver; /* firmware version */
__be32 tp_microcode_ver; /* tcp processor microcode version */
@@ -5591,7 +6020,16 @@ struct fw_hdr {
__u8 intfver_iscsi;
__u8 intfver_fcoe;
__u8 reserved2;
- __be32 reserved3[27];
+ __u32 reserved3;
+ __u32 reserved4;
+ __u32 reserved5;
+ __be32 flags;
+ __be32 reserved6[23];
+};
+
+enum fw_hdr_chip {
+ FW_HDR_CHIP_T4,
+ FW_HDR_CHIP_T5
};
#define S_FW_HDR_FW_VER_MAJOR 24
@@ -5622,4 +6060,18 @@ struct fw_hdr {
#define G_FW_HDR_FW_VER_BUILD(x) \
(((x) >> S_FW_HDR_FW_VER_BUILD) & M_FW_HDR_FW_VER_BUILD)
+enum fw_hdr_intfver {
+ FW_HDR_INTFVER_NIC = 0x00,
+ FW_HDR_INTFVER_VNIC = 0x00,
+ FW_HDR_INTFVER_OFLD = 0x00,
+ FW_HDR_INTFVER_RI = 0x00,
+ FW_HDR_INTFVER_ISCSIPDU = 0x00,
+ FW_HDR_INTFVER_ISCSI = 0x00,
+ FW_HDR_INTFVER_FCOE = 0x00,
+};
+
+enum fw_hdr_flags {
+ FW_HDR_FLAGS_RESET_HALT = 0x00000001,
+};
+
#endif /* _T4FW_INTERFACE_H_ */
diff --git a/sys/dev/cxgbe/offload.h b/sys/dev/cxgbe/offload.h
index f31b840..f6ada9d 100644
--- a/sys/dev/cxgbe/offload.h
+++ b/sys/dev/cxgbe/offload.h
@@ -31,15 +31,18 @@
#ifndef __T4_OFFLOAD_H__
#define __T4_OFFLOAD_H__
-/* CPL message priority levels */
-enum {
- CPL_PRIORITY_DATA = 0, /* data messages */
- CPL_PRIORITY_SETUP = 1, /* connection setup messages */
- CPL_PRIORITY_TEARDOWN = 0, /* connection teardown messages */
- CPL_PRIORITY_LISTEN = 1, /* listen start/stop messages */
- CPL_PRIORITY_ACK = 1, /* RX ACK messages */
- CPL_PRIORITY_CONTROL = 1 /* control messages */
-};
+/* XXX: flagrant misuse of mbuf fields (during tx by TOM) */
+#define MBUF_EQ(m) (*((void **)(&(m)->m_pkthdr.rcvif)))
+/* These have to work for !M_PKTHDR so we use a field from m_hdr. */
+#define MBUF_TX_CREDITS(m) ((m)->m_hdr.pad[0])
+#define MBUF_DMA_MAPPED(m) ((m)->m_hdr.pad[1])
+
+#define INIT_ULPTX_WR(w, wrlen, atomic, tid) do { \
+ (w)->wr.wr_hi = htonl(V_FW_WR_OP(FW_ULPTX_WR) | V_FW_WR_ATOMIC(atomic)); \
+ (w)->wr.wr_mid = htonl(V_FW_WR_LEN16(DIV_ROUND_UP(wrlen, 16)) | \
+ V_FW_WR_FLOWID(tid)); \
+ (w)->wr.wr_lo = cpu_to_be64(0); \
+} while (0)
#define INIT_TP_WR(w, tid) do { \
(w)->wr.wr_hi = htonl(V_FW_WR_OP(FW_TP_WR) | \
@@ -49,13 +52,19 @@ enum {
(w)->wr.wr_lo = cpu_to_be64(0); \
} while (0)
+#define INIT_TP_WR_MIT_CPL(w, cpl, tid) do { \
+ INIT_TP_WR(w, tid); \
+ OPCODE_TID(w) = htonl(MK_OPCODE_TID(cpl, tid)); \
+} while (0)
+
/*
* Max # of ATIDs. The absolute HW max is 16K but we keep it lower.
*/
#define MAX_ATIDS 8192U
-struct serv_entry {
+union serv_entry {
void *data;
+ union serv_entry *next;
};
union aopen_entry {
@@ -71,8 +80,7 @@ struct tid_info {
void **tid_tab;
unsigned int ntids;
- struct serv_entry *stid_tab;
- unsigned long *stid_bmap;
+ union serv_entry *stid_tab;
unsigned int nstids;
unsigned int stid_base;
@@ -84,10 +92,15 @@ struct tid_info {
unsigned int ftid_base;
unsigned int ftids_in_use;
+ struct mtx atid_lock;
union aopen_entry *afree;
unsigned int atids_in_use;
+ struct mtx stid_lock;
+ union serv_entry *sfree;
unsigned int stids_in_use;
+
+ unsigned int tids_in_use;
};
struct t4_range {
@@ -101,6 +114,40 @@ struct t4_virt_res { /* virtualized HW resources */
struct t4_range stag;
struct t4_range rq;
struct t4_range pbl;
+ struct t4_range qp;
+ struct t4_range cq;
+ struct t4_range ocq;
};
+#ifndef TCP_OFFLOAD_DISABLE
+enum {
+ ULD_TOM = 1,
+};
+
+struct adapter;
+struct port_info;
+struct uld_info {
+ SLIST_ENTRY(uld_info) link;
+ int refcount;
+ int uld_id;
+ int (*attach)(struct adapter *, void **);
+ int (*detach)(void *);
+};
+
+struct uld_softc {
+ struct uld_info *uld;
+ void *softc;
+};
+
+struct tom_tunables {
+ int sndbuf;
+ int ddp;
+ int indsz;
+ int ddp_thres;
+};
+
+int t4_register_uld(struct uld_info *);
+int t4_unregister_uld(struct uld_info *);
+#endif
+
#endif
diff --git a/sys/dev/cxgbe/osdep.h b/sys/dev/cxgbe/osdep.h
index bde1eb4..40ed61b 100644
--- a/sys/dev/cxgbe/osdep.h
+++ b/sys/dev/cxgbe/osdep.h
@@ -70,9 +70,11 @@ typedef uint64_t __be64;
#error "Must set BYTE_ORDER"
#endif
+#ifndef __bool_true_false_are_defined
typedef boolean_t bool;
#define false FALSE
#define true TRUE
+#endif
#define mdelay(x) DELAY((x) * 1000)
#define udelay(x) DELAY(x)
@@ -122,6 +124,7 @@ typedef boolean_t bool;
#define PCI_EXP_LNKSTA PCIR_EXPRESS_LINK_STA
#define PCI_EXP_LNKSTA_CLS PCIM_LINK_STA_SPEED
#define PCI_EXP_LNKSTA_NLW PCIM_LINK_STA_WIDTH
+#define PCI_EXP_DEVCTL2 0x28
static inline int
ilog2(long x)
diff --git a/sys/dev/cxgbe/t4_ioctl.h b/sys/dev/cxgbe/t4_ioctl.h
index ecc2c3d..2a3fa39 100644
--- a/sys/dev/cxgbe/t4_ioctl.h
+++ b/sys/dev/cxgbe/t4_ioctl.h
@@ -47,6 +47,8 @@ enum {
T4_SET_FILTER, /* program a filter */
T4_DEL_FILTER, /* delete a filter */
T4_GET_SGE_CONTEXT, /* get SGE context for a queue */
+ T4_LOAD_FW, /* flash firmware */
+ T4_GET_MEM, /* read memory */
};
struct t4_reg {
@@ -62,6 +64,11 @@ struct t4_regdump {
uint32_t *data;
};
+struct t4_data {
+ uint32_t len;
+ uint8_t *data;
+};
+
/*
* A hardware filter is some valid combination of these.
*/
@@ -73,8 +80,8 @@ struct t4_regdump {
#define T4_FILTER_IP_DPORT 0x20 /* Destination IP port */
#define T4_FILTER_FCoE 0x40 /* Fibre Channel over Ethernet packet */
#define T4_FILTER_PORT 0x80 /* Physical ingress port */
-#define T4_FILTER_OVLAN 0x100 /* Outer VLAN ID */
-#define T4_FILTER_IVLAN 0x200 /* Inner VLAN ID */
+#define T4_FILTER_VNIC 0x100 /* VNIC id or outer VLAN */
+#define T4_FILTER_VLAN 0x200 /* VLAN ID */
#define T4_FILTER_IP_TOS 0x400 /* IPv4 TOS/IPv6 Traffic Class */
#define T4_FILTER_IP_PROTO 0x800 /* IP protocol */
#define T4_FILTER_ETH_TYPE 0x1000 /* Ethernet Type */
@@ -131,8 +138,8 @@ struct t4_filter_tuple {
* is used to select the global mode and all filters are limited to the
* set of fields allowed by the global mode.
*/
- uint16_t ovlan; /* outer VLAN */
- uint16_t ivlan; /* inner VLAN */
+ uint16_t vnic; /* VNIC id or outer VLAN tag */
+ uint16_t vlan; /* VLAN tag */
uint16_t ethtype; /* Ethernet type */
uint8_t tos; /* TOS/Traffic Type */
uint8_t proto; /* protocol type */
@@ -141,8 +148,8 @@ struct t4_filter_tuple {
uint32_t matchtype:3; /* MPS match type */
uint32_t frag:1; /* fragmentation extension header */
uint32_t macidx:9; /* exact match MAC index */
- uint32_t ivlan_vld:1; /* inner VLAN valid */
- uint32_t ovlan_vld:1; /* outer VLAN valid */
+ uint32_t vlan_vld:1; /* VLAN valid */
+ uint32_t vnic_vld:1; /* VNIC id/outer VLAN tag valid */
};
struct t4_filter_specification {
@@ -199,6 +206,12 @@ struct t4_sge_context {
uint32_t data[T4_SGE_CONTEXT_SIZE / 4];
};
+struct t4_mem_range {
+ uint32_t addr;
+ uint32_t len;
+ uint32_t *data;
+};
+
#define CHELSIO_T4_GETREG _IOWR('f', T4_GETREG, struct t4_reg)
#define CHELSIO_T4_SETREG _IOW('f', T4_SETREG, struct t4_reg)
#define CHELSIO_T4_REGDUMP _IOWR('f', T4_REGDUMP, struct t4_regdump)
@@ -209,4 +222,6 @@ struct t4_sge_context {
#define CHELSIO_T4_DEL_FILTER _IOW('f', T4_DEL_FILTER, struct t4_filter)
#define CHELSIO_T4_GET_SGE_CONTEXT _IOWR('f', T4_GET_SGE_CONTEXT, \
struct t4_sge_context)
+#define CHELSIO_T4_LOAD_FW _IOW('f', T4_LOAD_FW, struct t4_data)
+#define CHELSIO_T4_GET_MEM _IOW('f', T4_GET_MEM, struct t4_mem_range)
#endif
diff --git a/sys/dev/cxgbe/t4_l2t.c b/sys/dev/cxgbe/t4_l2t.c
index 31197b8..be206c1 100644
--- a/sys/dev/cxgbe/t4_l2t.c
+++ b/sys/dev/cxgbe/t4_l2t.c
@@ -37,7 +37,9 @@ __FBSDID("$FreeBSD$");
#include <sys/mutex.h>
#include <sys/rwlock.h>
#include <sys/socket.h>
+#include <sys/sbuf.h>
#include <net/if.h>
+#include <net/if_types.h>
#include <net/ethernet.h>
#include <net/if_vlan_var.h>
#include <net/if_dl.h>
@@ -50,9 +52,26 @@ __FBSDID("$FreeBSD$");
#include "common/common.h"
#include "common/jhash.h"
#include "common/t4_msg.h"
-#include "offload.h"
#include "t4_l2t.h"
+/*
+ * Module locking notes: There is a RW lock protecting the L2 table as a
+ * whole plus a spinlock per L2T entry. Entry lookups and allocations happen
+ * under the protection of the table lock, individual entry changes happen
+ * while holding that entry's spinlock. The table lock nests outside the
+ * entry locks. Allocations of new entries take the table lock as writers so
+ * no other lookups can happen while allocating new entries. Entry updates
+ * take the table lock as readers so multiple entries can be updated in
+ * parallel. An L2T entry can be dropped by decrementing its reference count
+ * and therefore can happen in parallel with entry allocation but no entry
+ * can change state or increment its ref count during allocation as both of
+ * these perform lookups.
+ *
+ * Note: We do not take refereces to ifnets in this module because both
+ * the TOE and the sockets already hold references to the interfaces and the
+ * lifetime of an L2T entry is fully contained in the lifetime of the TOE.
+ */
+
/* identifies sync vs async L2T_WRITE_REQs */
#define S_SYNC_WR 12
#define V_SYNC_WR(x) ((x) << S_SYNC_WR)
@@ -76,34 +95,251 @@ struct l2t_data {
struct l2t_entry l2tab[L2T_SIZE];
};
+static int do_l2t_write_rpl(struct sge_iq *, const struct rss_header *,
+ struct mbuf *);
+
+#define VLAN_NONE 0xfff
+#define SA(x) ((struct sockaddr *)(x))
+#define SIN(x) ((struct sockaddr_in *)(x))
+#define SINADDR(x) (SIN(x)->sin_addr.s_addr)
+
/*
- * Module locking notes: There is a RW lock protecting the L2 table as a
- * whole plus a spinlock per L2T entry. Entry lookups and allocations happen
- * under the protection of the table lock, individual entry changes happen
- * while holding that entry's spinlock. The table lock nests outside the
- * entry locks. Allocations of new entries take the table lock as writers so
- * no other lookups can happen while allocating new entries. Entry updates
- * take the table lock as readers so multiple entries can be updated in
- * parallel. An L2T entry can be dropped by decrementing its reference count
- * and therefore can happen in parallel with entry allocation but no entry
- * can change state or increment its ref count during allocation as both of
- * these perform lookups.
- *
- * Note: We do not take refereces to ifnets in this module because both
- * the TOE and the sockets already hold references to the interfaces and the
- * lifetime of an L2T entry is fully contained in the lifetime of the TOE.
+ * Allocate a free L2T entry. Must be called with l2t_data.lock held.
*/
+static struct l2t_entry *
+alloc_l2e(struct l2t_data *d)
+{
+ struct l2t_entry *end, *e, **p;
+
+ rw_assert(&d->lock, RA_WLOCKED);
+
+ if (!atomic_load_acq_int(&d->nfree))
+ return (NULL);
+
+ /* there's definitely a free entry */
+ for (e = d->rover, end = &d->l2tab[L2T_SIZE]; e != end; ++e)
+ if (atomic_load_acq_int(&e->refcnt) == 0)
+ goto found;
+
+ for (e = d->l2tab; atomic_load_acq_int(&e->refcnt); ++e) ;
+found:
+ d->rover = e + 1;
+ atomic_subtract_int(&d->nfree, 1);
+
+ /*
+ * The entry we found may be an inactive entry that is
+ * presently in the hash table. We need to remove it.
+ */
+ if (e->state < L2T_STATE_SWITCHING) {
+ for (p = &d->l2tab[e->hash].first; *p; p = &(*p)->next) {
+ if (*p == e) {
+ *p = e->next;
+ e->next = NULL;
+ break;
+ }
+ }
+ }
+
+ e->state = L2T_STATE_UNUSED;
+ return (e);
+}
+
+/*
+ * Write an L2T entry. Must be called with the entry locked.
+ * The write may be synchronous or asynchronous.
+ */
+static int
+write_l2e(struct adapter *sc, struct l2t_entry *e, int sync)
+{
+ struct mbuf *m;
+ struct cpl_l2t_write_req *req;
+
+ mtx_assert(&e->lock, MA_OWNED);
+
+ if ((m = m_gethdr(M_NOWAIT, MT_DATA)) == NULL)
+ return (ENOMEM);
+
+ req = mtod(m, struct cpl_l2t_write_req *);
+ m->m_pkthdr.len = m->m_len = sizeof(*req);
+
+ INIT_TP_WR(req, 0);
+ OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_L2T_WRITE_REQ, e->idx |
+ V_SYNC_WR(sync) | V_TID_QID(sc->sge.fwq.abs_id)));
+ req->params = htons(V_L2T_W_PORT(e->lport) | V_L2T_W_NOREPLY(!sync));
+ req->l2t_idx = htons(e->idx);
+ req->vlan = htons(e->vlan);
+ memcpy(req->dst_mac, e->dmac, sizeof(req->dst_mac));
+
+ t4_mgmt_tx(sc, m);
+
+ if (sync && e->state != L2T_STATE_SWITCHING)
+ e->state = L2T_STATE_SYNC_WRITE;
+
+ return (0);
+}
+
+/*
+ * Allocate an L2T entry for use by a switching rule. Such need to be
+ * explicitly freed and while busy they are not on any hash chain, so normal
+ * address resolution updates do not see them.
+ */
+struct l2t_entry *
+t4_l2t_alloc_switching(struct l2t_data *d)
+{
+ struct l2t_entry *e;
+
+ rw_rlock(&d->lock);
+ e = alloc_l2e(d);
+ if (e) {
+ mtx_lock(&e->lock); /* avoid race with t4_l2t_free */
+ e->state = L2T_STATE_SWITCHING;
+ atomic_store_rel_int(&e->refcnt, 1);
+ mtx_unlock(&e->lock);
+ }
+ rw_runlock(&d->lock);
+ return e;
+}
+
+/*
+ * Sets/updates the contents of a switching L2T entry that has been allocated
+ * with an earlier call to @t4_l2t_alloc_switching.
+ */
+int
+t4_l2t_set_switching(struct adapter *sc, struct l2t_entry *e, uint16_t vlan,
+ uint8_t port, uint8_t *eth_addr)
+{
+ int rc;
+
+ e->vlan = vlan;
+ e->lport = port;
+ memcpy(e->dmac, eth_addr, ETHER_ADDR_LEN);
+ mtx_lock(&e->lock);
+ rc = write_l2e(sc, e, 0);
+ mtx_unlock(&e->lock);
+ return (rc);
+}
+
+int
+t4_init_l2t(struct adapter *sc, int flags)
+{
+ int i;
+ struct l2t_data *d;
+
+ d = malloc(sizeof(*d), M_CXGBE, M_ZERO | flags);
+ if (!d)
+ return (ENOMEM);
+
+ d->rover = d->l2tab;
+ atomic_store_rel_int(&d->nfree, L2T_SIZE);
+ rw_init(&d->lock, "L2T");
+
+ for (i = 0; i < L2T_SIZE; i++) {
+ d->l2tab[i].idx = i;
+ d->l2tab[i].state = L2T_STATE_UNUSED;
+ mtx_init(&d->l2tab[i].lock, "L2T_E", NULL, MTX_DEF);
+ atomic_store_rel_int(&d->l2tab[i].refcnt, 0);
+ }
+
+ sc->l2t = d;
+ t4_register_cpl_handler(sc, CPL_L2T_WRITE_RPL, do_l2t_write_rpl);
+
+ return (0);
+}
+
+int
+t4_free_l2t(struct l2t_data *d)
+{
+ int i;
+
+ for (i = 0; i < L2T_SIZE; i++)
+ mtx_destroy(&d->l2tab[i].lock);
+ rw_destroy(&d->lock);
+ free(d, M_CXGBE);
+
+ return (0);
+}
+
static inline unsigned int
vlan_prio(const struct l2t_entry *e)
{
return e->vlan >> 13;
}
+static char
+l2e_state(const struct l2t_entry *e)
+{
+ switch (e->state) {
+ case L2T_STATE_VALID: return 'V'; /* valid, fast-path entry */
+ case L2T_STATE_STALE: return 'S'; /* needs revalidation, but usable */
+ case L2T_STATE_SYNC_WRITE: return 'W';
+ case L2T_STATE_RESOLVING: return e->arpq_head ? 'A' : 'R';
+ case L2T_STATE_SWITCHING: return 'X';
+ default: return 'U';
+ }
+}
+
+int
+sysctl_l2t(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct l2t_data *l2t = sc->l2t;
+ struct l2t_entry *e;
+ struct sbuf *sb;
+ int rc, i, header = 0;
+ char ip[60];
+
+ if (l2t == NULL)
+ return (ENXIO);
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 4096, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ e = &l2t->l2tab[0];
+ for (i = 0; i < L2T_SIZE; i++, e++) {
+ mtx_lock(&e->lock);
+ if (e->state == L2T_STATE_UNUSED)
+ goto skip;
+
+ if (header == 0) {
+ sbuf_printf(sb, " Idx IP address "
+ "Ethernet address VLAN/P LP State Users Port");
+ header = 1;
+ }
+ if (e->state == L2T_STATE_SWITCHING || e->v6)
+ ip[0] = 0;
+ else
+ snprintf(ip, sizeof(ip), "%s",
+ inet_ntoa(*(struct in_addr *)&e->addr[0]));
+
+ /* XXX: accessing lle probably not safe? */
+ sbuf_printf(sb, "\n%4u %-15s %02x:%02x:%02x:%02x:%02x:%02x %4d"
+ " %u %2u %c %5u %s",
+ e->idx, ip, e->dmac[0], e->dmac[1], e->dmac[2],
+ e->dmac[3], e->dmac[4], e->dmac[5],
+ e->vlan & 0xfff, vlan_prio(e), e->lport,
+ l2e_state(e), atomic_load_acq_int(&e->refcnt),
+ e->lle ? e->lle->lle_tbl->llt_ifp->if_xname : "");
+skip:
+ mtx_unlock(&e->lock);
+ }
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+#ifndef TCP_OFFLOAD_DISABLE
static inline void
l2t_hold(struct l2t_data *d, struct l2t_entry *e)
{
if (atomic_fetchadd_int(&e->refcnt, 1) == 0) /* 0 -> 1 transition */
- atomic_add_int(&d->nfree, -1);
+ atomic_subtract_int(&d->nfree, 1);
}
/*
@@ -154,38 +390,6 @@ addreq(const struct l2t_entry *e, const uint32_t *addr)
}
/*
- * Write an L2T entry. Must be called with the entry locked (XXX: really?).
- * The write may be synchronous or asynchronous.
- */
-static int
-write_l2e(struct adapter *sc, struct l2t_entry *e, int sync)
-{
- struct mbuf *m;
- struct cpl_l2t_write_req *req;
-
- if ((m = m_gethdr(M_NOWAIT, MT_DATA)) == NULL)
- return (ENOMEM);
-
- req = mtod(m, struct cpl_l2t_write_req *);
- m->m_pkthdr.len = m->m_len = sizeof(*req);
-
- INIT_TP_WR(req, 0);
- OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_L2T_WRITE_REQ, e->idx |
- V_SYNC_WR(sync) | V_TID_QID(sc->sge.fwq.abs_id)));
- req->params = htons(V_L2T_W_PORT(e->lport) | V_L2T_W_NOREPLY(!sync));
- req->l2t_idx = htons(e->idx);
- req->vlan = htons(e->vlan);
- memcpy(req->dst_mac, e->dmac, sizeof(req->dst_mac));
-
- t4_mgmt_tx(sc, m);
-
- if (sync && e->state != L2T_STATE_SWITCHING)
- e->state = L2T_STATE_SYNC_WRITE;
-
- return (0);
-}
-
-/*
* Add a packet to an L2T entry's queue of packets awaiting resolution.
* Must be called with the entry's lock held.
*/
@@ -194,53 +398,133 @@ arpq_enqueue(struct l2t_entry *e, struct mbuf *m)
{
mtx_assert(&e->lock, MA_OWNED);
- m->m_next = NULL;
+ KASSERT(m->m_nextpkt == NULL, ("%s: m_nextpkt not NULL", __func__));
if (e->arpq_head)
- e->arpq_tail->m_next = m;
+ e->arpq_tail->m_nextpkt = m;
else
e->arpq_head = m;
e->arpq_tail = m;
}
-/*
- * Allocate a free L2T entry. Must be called with l2t_data.lock held.
- */
-static struct l2t_entry *
-alloc_l2e(struct l2t_data *d)
+static inline void
+send_pending(struct adapter *sc, struct l2t_entry *e)
{
- struct l2t_entry *end, *e, **p;
+ struct mbuf *m, *next;
- rw_assert(&d->lock, RA_WLOCKED);
+ mtx_assert(&e->lock, MA_OWNED);
- if (!atomic_load_acq_int(&d->nfree))
- return (NULL);
+ for (m = e->arpq_head; m; m = next) {
+ next = m->m_nextpkt;
+ m->m_nextpkt = NULL;
+ t4_wrq_tx(sc, MBUF_EQ(m), m);
+ }
+ e->arpq_head = e->arpq_tail = NULL;
+}
- /* there's definitely a free entry */
- for (e = d->rover, end = &d->l2tab[L2T_SIZE]; e != end; ++e)
- if (atomic_load_acq_int(&e->refcnt) == 0)
- goto found;
+#ifdef INET
+/*
+ * Looks up and fills up an l2t_entry's lle. We grab all the locks that we need
+ * ourself, and update e->state at the end if e->lle was successfully filled.
+ *
+ * The lle passed in comes from arpresolve and is ignored as it does not appear
+ * to be of much use.
+ */
+static int
+l2t_fill_lle(struct adapter *sc, struct l2t_entry *e, struct llentry *unused)
+{
+ int rc = 0;
+ struct sockaddr_in sin;
+ struct ifnet *ifp = e->ifp;
+ struct llentry *lle;
- for (e = d->l2tab; atomic_load_acq_int(&e->refcnt); ++e) ;
-found:
- d->rover = e + 1;
- atomic_add_int(&d->nfree, -1);
+ bzero(&sin, sizeof(struct sockaddr_in));
+ if (e->v6)
+ panic("%s: IPv6 L2 resolution not supported yet.", __func__);
+
+ sin.sin_family = AF_INET;
+ sin.sin_len = sizeof(struct sockaddr_in);
+ memcpy(&sin.sin_addr, e->addr, sizeof(struct sockaddr_in));
+
+ mtx_assert(&e->lock, MA_NOTOWNED);
+ KASSERT(e->addr && ifp, ("%s: bad prep before call", __func__));
+
+ IF_AFDATA_LOCK(ifp);
+ lle = lla_lookup(LLTABLE(ifp), LLE_EXCLUSIVE, SA(&sin));
+ IF_AFDATA_UNLOCK(ifp);
+ if (!LLE_IS_VALID(lle))
+ return (ENOMEM);
+ if (!(lle->la_flags & LLE_VALID)) {
+ rc = EINVAL;
+ goto done;
+ }
+
+ LLE_ADDREF(lle);
+
+ mtx_lock(&e->lock);
+ if (e->state == L2T_STATE_RESOLVING) {
+ KASSERT(e->lle == NULL, ("%s: lle already valid", __func__));
+ e->lle = lle;
+ memcpy(e->dmac, &lle->ll_addr, ETHER_ADDR_LEN);
+ write_l2e(sc, e, 1);
+ } else {
+ KASSERT(e->lle == lle, ("%s: lle changed", __func__));
+ LLE_REMREF(lle);
+ }
+ mtx_unlock(&e->lock);
+done:
+ LLE_WUNLOCK(lle);
+ return (rc);
+}
+#endif
- /*
- * The entry we found may be an inactive entry that is
- * presently in the hash table. We need to remove it.
- */
- if (e->state < L2T_STATE_SWITCHING) {
- for (p = &d->l2tab[e->hash].first; *p; p = &(*p)->next) {
- if (*p == e) {
- *p = e->next;
- e->next = NULL;
- break;
- }
+int
+t4_l2t_send(struct adapter *sc, struct mbuf *m, struct l2t_entry *e)
+{
+#ifndef INET
+ return (EINVAL);
+#else
+ struct llentry *lle = NULL;
+ struct sockaddr_in sin;
+ struct ifnet *ifp = e->ifp;
+
+ if (e->v6)
+ panic("%s: IPv6 L2 resolution not supported yet.", __func__);
+
+ bzero(&sin, sizeof(struct sockaddr_in));
+ sin.sin_family = AF_INET;
+ sin.sin_len = sizeof(struct sockaddr_in);
+ memcpy(&sin.sin_addr, e->addr, sizeof(struct sockaddr_in));
+
+again:
+ switch (e->state) {
+ case L2T_STATE_STALE: /* entry is stale, kick off revalidation */
+ if (arpresolve(ifp, NULL, NULL, SA(&sin), e->dmac, &lle) == 0)
+ l2t_fill_lle(sc, e, lle);
+
+ /* Fall through */
+
+ case L2T_STATE_VALID: /* fast-path, send the packet on */
+ return t4_wrq_tx(sc, MBUF_EQ(m), m);
+
+ case L2T_STATE_RESOLVING:
+ case L2T_STATE_SYNC_WRITE:
+ mtx_lock(&e->lock);
+ if (e->state != L2T_STATE_SYNC_WRITE &&
+ e->state != L2T_STATE_RESOLVING) {
+ /* state changed by the time we got here */
+ mtx_unlock(&e->lock);
+ goto again;
}
+ arpq_enqueue(e, m);
+ mtx_unlock(&e->lock);
+
+ if (e->state == L2T_STATE_RESOLVING &&
+ arpresolve(ifp, NULL, NULL, SA(&sin), e->dmac, &lle) == 0)
+ l2t_fill_lle(sc, e, lle);
}
- e->state = L2T_STATE_UNUSED;
- return e;
+ return (0);
+#endif
}
/*
@@ -287,75 +571,214 @@ t4_l2t_release(struct l2t_entry *e)
t4_l2e_free(e);
}
+static int
+do_l2t_write_rpl(struct sge_iq *iq, const struct rss_header *rss,
+ struct mbuf *m)
+{
+ struct adapter *sc = iq->adapter;
+ const struct cpl_l2t_write_rpl *rpl = (const void *)(rss + 1);
+ unsigned int tid = GET_TID(rpl);
+ unsigned int idx = tid & (L2T_SIZE - 1);
+
+ if (__predict_false(rpl->status != CPL_ERR_NONE)) {
+ log(LOG_ERR,
+ "Unexpected L2T_WRITE_RPL status %u for entry %u\n",
+ rpl->status, idx);
+ return (EINVAL);
+ }
+
+ if (tid & F_SYNC_WR) {
+ struct l2t_entry *e = &sc->l2t->l2tab[idx];
+
+ mtx_lock(&e->lock);
+ if (e->state != L2T_STATE_SWITCHING) {
+ send_pending(sc, e);
+ e->state = L2T_STATE_VALID;
+ }
+ mtx_unlock(&e->lock);
+ }
+
+ return (0);
+}
+
/*
- * Allocate an L2T entry for use by a switching rule. Such need to be
- * explicitly freed and while busy they are not on any hash chain, so normal
- * address resolution updates do not see them.
+ * Reuse an L2T entry that was previously used for the same next hop.
+ */
+static void
+reuse_entry(struct l2t_entry *e)
+{
+ struct llentry *lle;
+
+ mtx_lock(&e->lock); /* avoid race with t4_l2t_free */
+ lle = e->lle;
+ if (lle) {
+ KASSERT(lle->la_flags & LLE_VALID,
+ ("%s: invalid lle stored in l2t_entry", __func__));
+
+ if (lle->la_expire >= time_uptime)
+ e->state = L2T_STATE_STALE;
+ else
+ e->state = L2T_STATE_VALID;
+ } else
+ e->state = L2T_STATE_RESOLVING;
+ mtx_unlock(&e->lock);
+}
+
+/*
+ * The TOE wants an L2 table entry that it can use to reach the next hop over
+ * the specified port. Produce such an entry - create one if needed.
+ *
+ * Note that the ifnet could be a pseudo-device like if_vlan, if_lagg, etc. on
+ * top of the real cxgbe interface.
*/
struct l2t_entry *
-t4_l2t_alloc_switching(struct l2t_data *d)
+t4_l2t_get(struct port_info *pi, struct ifnet *ifp, struct sockaddr *sa)
{
struct l2t_entry *e;
+ struct l2t_data *d = pi->adapter->l2t;
+ int addr_len;
+ uint32_t *addr;
+ int hash;
+ struct sockaddr_in6 *sin6;
+ unsigned int smt_idx = pi->port_id;
+
+ if (sa->sa_family == AF_INET) {
+ addr = (uint32_t *)&SINADDR(sa);
+ addr_len = sizeof(SINADDR(sa));
+ } else if (sa->sa_family == AF_INET6) {
+ sin6 = (struct sockaddr_in6 *)sa;
+ addr = (uint32_t *)&sin6->sin6_addr.s6_addr;
+ addr_len = sizeof(sin6->sin6_addr.s6_addr);
+ } else
+ return (NULL);
- rw_rlock(&d->lock);
+ hash = addr_hash(addr, addr_len, ifp->if_index);
+
+ rw_wlock(&d->lock);
+ for (e = d->l2tab[hash].first; e; e = e->next) {
+ if (!addreq(e, addr) && e->ifp == ifp && e->smt_idx == smt_idx){
+ l2t_hold(d, e);
+ if (atomic_load_acq_int(&e->refcnt) == 1)
+ reuse_entry(e);
+ goto done;
+ }
+ }
+
+ /* Need to allocate a new entry */
e = alloc_l2e(d);
if (e) {
mtx_lock(&e->lock); /* avoid race with t4_l2t_free */
- e->state = L2T_STATE_SWITCHING;
+ e->state = L2T_STATE_RESOLVING;
+ memcpy(e->addr, addr, addr_len);
+ e->ifindex = ifp->if_index;
+ e->smt_idx = smt_idx;
+ e->ifp = ifp;
+ e->hash = hash;
+ e->lport = pi->lport;
+ e->v6 = (addr_len == 16);
+ e->lle = NULL;
atomic_store_rel_int(&e->refcnt, 1);
+ if (ifp->if_type == IFT_L2VLAN)
+ VLAN_TAG(ifp, &e->vlan);
+ else
+ e->vlan = VLAN_NONE;
+ e->next = d->l2tab[hash].first;
+ d->l2tab[hash].first = e;
mtx_unlock(&e->lock);
}
- rw_runlock(&d->lock);
+done:
+ rw_wunlock(&d->lock);
return e;
}
/*
- * Sets/updates the contents of a switching L2T entry that has been allocated
- * with an earlier call to @t4_l2t_alloc_switching.
+ * Called when the host's neighbor layer makes a change to some entry that is
+ * loaded into the HW L2 table.
*/
-int
-t4_l2t_set_switching(struct adapter *sc, struct l2t_entry *e, uint16_t vlan,
- uint8_t port, uint8_t *eth_addr)
+void
+t4_l2t_update(struct adapter *sc, struct llentry *lle)
{
- e->vlan = vlan;
- e->lport = port;
- memcpy(e->dmac, eth_addr, ETHER_ADDR_LEN);
- return write_l2e(sc, e, 0);
-}
+ struct l2t_entry *e;
+ struct l2t_data *d = sc->l2t;
+ struct sockaddr *sa = L3_ADDR(lle);
+ struct llentry *old_lle = NULL;
+ uint32_t *addr = (uint32_t *)&SINADDR(sa);
+ struct ifnet *ifp = lle->lle_tbl->llt_ifp;
+ int hash = addr_hash(addr, sizeof(*addr), ifp->if_index);
+
+ KASSERT(d != NULL, ("%s: no L2 table", __func__));
+ LLE_WLOCK_ASSERT(lle);
+ KASSERT(lle->la_flags & LLE_VALID || lle->la_flags & LLE_DELETED,
+ ("%s: entry neither valid nor deleted.", __func__));
-struct l2t_data *
-t4_init_l2t(int flags)
-{
- int i;
- struct l2t_data *d;
+ rw_rlock(&d->lock);
+ for (e = d->l2tab[hash].first; e; e = e->next) {
+ if (!addreq(e, addr) && e->ifp == ifp) {
+ mtx_lock(&e->lock);
+ if (atomic_load_acq_int(&e->refcnt))
+ goto found;
+ e->state = L2T_STATE_STALE;
+ mtx_unlock(&e->lock);
+ break;
+ }
+ }
+ rw_runlock(&d->lock);
- d = malloc(sizeof(*d), M_CXGBE, M_ZERO | flags);
- if (!d)
- return (NULL);
+ /* The TOE has no interest in this LLE */
+ return;
- d->rover = d->l2tab;
- atomic_store_rel_int(&d->nfree, L2T_SIZE);
- rw_init(&d->lock, "L2T");
+ found:
+ rw_runlock(&d->lock);
- for (i = 0; i < L2T_SIZE; i++) {
- d->l2tab[i].idx = i;
- d->l2tab[i].state = L2T_STATE_UNUSED;
- mtx_init(&d->l2tab[i].lock, "L2T_E", NULL, MTX_DEF);
- atomic_store_rel_int(&d->l2tab[i].refcnt, 0);
- }
+ if (atomic_load_acq_int(&e->refcnt)) {
- return (d);
-}
+ /* Entry is referenced by at least 1 offloaded connection. */
-int
-t4_free_l2t(struct l2t_data *d)
-{
- int i;
+ /* Handle deletes first */
+ if (lle->la_flags & LLE_DELETED) {
+ if (lle == e->lle) {
+ e->lle = NULL;
+ e->state = L2T_STATE_RESOLVING;
+ LLE_REMREF(lle);
+ }
+ goto done;
+ }
- for (i = 0; i < L2T_SIZE; i++)
- mtx_destroy(&d->l2tab[i].lock);
- rw_destroy(&d->lock);
- free(d, M_CXGBE);
+ if (lle != e->lle) {
+ old_lle = e->lle;
+ LLE_ADDREF(lle);
+ e->lle = lle;
+ }
- return (0);
+ if (e->state == L2T_STATE_RESOLVING ||
+ memcmp(e->dmac, &lle->ll_addr, ETHER_ADDR_LEN)) {
+
+ /* unresolved -> resolved; or dmac changed */
+
+ memcpy(e->dmac, &lle->ll_addr, ETHER_ADDR_LEN);
+ write_l2e(sc, e, 1);
+ } else {
+
+ /* +ve reinforcement of a valid or stale entry */
+
+ }
+
+ e->state = L2T_STATE_VALID;
+
+ } else {
+ /*
+ * Entry was used previously but is unreferenced right now.
+ * e->lle has been released and NULL'd out by t4_l2t_free, or
+ * l2t_release is about to call t4_l2t_free and do that.
+ *
+ * Either way this is of no interest to us.
+ */
+ }
+
+done:
+ mtx_unlock(&e->lock);
+ if (old_lle)
+ LLE_FREE(old_lle);
}
+
+#endif
diff --git a/sys/dev/cxgbe/t4_l2t.h b/sys/dev/cxgbe/t4_l2t.h
index c5520c6..8004c9e 100644
--- a/sys/dev/cxgbe/t4_l2t.h
+++ b/sys/dev/cxgbe/t4_l2t.h
@@ -54,18 +54,26 @@ struct l2t_entry {
struct mbuf *arpq_head; /* list of mbufs awaiting resolution */
struct mbuf *arpq_tail;
struct mtx lock;
- volatile uint32_t refcnt; /* entry reference count */
+ volatile int refcnt; /* entry reference count */
uint16_t hash; /* hash bucket the entry is on */
uint8_t v6; /* whether entry is for IPv6 */
uint8_t lport; /* associated offload logical port */
uint8_t dmac[ETHER_ADDR_LEN]; /* next hop's MAC address */
};
-struct l2t_data *t4_init_l2t(int);
+int t4_init_l2t(struct adapter *, int);
int t4_free_l2t(struct l2t_data *);
struct l2t_entry *t4_l2t_alloc_switching(struct l2t_data *);
int t4_l2t_set_switching(struct adapter *, struct l2t_entry *, uint16_t,
uint8_t, uint8_t *);
void t4_l2t_release(struct l2t_entry *);
+int sysctl_l2t(SYSCTL_HANDLER_ARGS);
+
+#ifndef TCP_OFFLOAD_DISABLE
+struct l2t_entry *t4_l2t_get(struct port_info *, struct ifnet *,
+ struct sockaddr *);
+int t4_l2t_send(struct adapter *, struct mbuf *, struct l2t_entry *);
+void t4_l2t_update(struct adapter *, struct llentry *);
+#endif
#endif /* __T4_L2T_H */
diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c
index b7cb09a..37a4a7c 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -55,12 +55,10 @@ __FBSDID("$FreeBSD$");
#include <net/if_dl.h>
#include <net/if_vlan_var.h>
-#include "common/t4_hw.h"
#include "common/common.h"
#include "common/t4_msg.h"
#include "common/t4_regs.h"
#include "common/t4_regs_values.h"
-#include "common/t4fw_interface.h"
#include "t4_ioctl.h"
#include "t4_l2t.h"
@@ -73,11 +71,7 @@ static device_method_t t4_methods[] = {
DEVMETHOD(device_attach, t4_attach),
DEVMETHOD(device_detach, t4_detach),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t t4_driver = {
"t4nex",
@@ -126,115 +120,130 @@ static void cxgbe_media_status(struct ifnet *, struct ifmediareq *);
MALLOC_DEFINE(M_CXGBE, "cxgbe", "Chelsio T4 Ethernet driver and services");
-/*
- * Tunables.
- */
-static SYSCTL_NODE(_hw, OID_AUTO, cxgbe, CTLFLAG_RD, 0,
- "cxgbe driver parameters");
-
-static int force_firmware_install = 0;
-TUNABLE_INT("hw.cxgbe.force_firmware_install", &force_firmware_install);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, force_firmware_install, CTLFLAG_RDTUN,
- &force_firmware_install, 0, "install firmware on every attach.");
+static struct mtx t4_list_lock;
+static SLIST_HEAD(, adapter) t4_list;
+#ifndef TCP_OFFLOAD_DISABLE
+static struct mtx t4_uld_list_lock;
+static SLIST_HEAD(, uld_info) t4_uld_list;
+#endif
/*
- * Holdoff timer and packet counter values.
+ * Tunables. See tweak_tunables() too.
*/
-static unsigned int intr_timer[SGE_NTIMERS] = {1, 5, 10, 50, 100, 200};
-static unsigned int intr_pktcount[SGE_NCOUNTERS] = {1, 8, 16, 32}; /* 63 max */
/*
- * Max # of tx and rx queues to use for each 10G and 1G port.
+ * Number of queues for tx and rx, 10G and 1G, NIC and offload.
*/
-static unsigned int max_ntxq_10g = 8;
-TUNABLE_INT("hw.cxgbe.max_ntxq_10G_port", &max_ntxq_10g);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, max_ntxq_10G_port, CTLFLAG_RDTUN,
- &max_ntxq_10g, 0, "maximum number of tx queues per 10G port.");
-
-static unsigned int max_nrxq_10g = 8;
-TUNABLE_INT("hw.cxgbe.max_nrxq_10G_port", &max_nrxq_10g);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, max_nrxq_10G_port, CTLFLAG_RDTUN,
- &max_nrxq_10g, 0, "maximum number of rxq's (per 10G port).");
-
-static unsigned int max_ntxq_1g = 2;
-TUNABLE_INT("hw.cxgbe.max_ntxq_1G_port", &max_ntxq_1g);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, max_ntxq_1G_port, CTLFLAG_RDTUN,
- &max_ntxq_1g, 0, "maximum number of tx queues per 1G port.");
-
-static unsigned int max_nrxq_1g = 2;
-TUNABLE_INT("hw.cxgbe.max_nrxq_1G_port", &max_nrxq_1g);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, max_nrxq_1G_port, CTLFLAG_RDTUN,
- &max_nrxq_1g, 0, "maximum number of rxq's (per 1G port).");
+#define NTXQ_10G 16
+static int t4_ntxq10g = -1;
+TUNABLE_INT("hw.cxgbe.ntxq10g", &t4_ntxq10g);
+
+#define NRXQ_10G 8
+static int t4_nrxq10g = -1;
+TUNABLE_INT("hw.cxgbe.nrxq10g", &t4_nrxq10g);
+
+#define NTXQ_1G 4
+static int t4_ntxq1g = -1;
+TUNABLE_INT("hw.cxgbe.ntxq1g", &t4_ntxq1g);
+
+#define NRXQ_1G 2
+static int t4_nrxq1g = -1;
+TUNABLE_INT("hw.cxgbe.nrxq1g", &t4_nrxq1g);
+
+#ifndef TCP_OFFLOAD_DISABLE
+#define NOFLDTXQ_10G 8
+static int t4_nofldtxq10g = -1;
+TUNABLE_INT("hw.cxgbe.nofldtxq10g", &t4_nofldtxq10g);
+
+#define NOFLDRXQ_10G 2
+static int t4_nofldrxq10g = -1;
+TUNABLE_INT("hw.cxgbe.nofldrxq10g", &t4_nofldrxq10g);
+
+#define NOFLDTXQ_1G 2
+static int t4_nofldtxq1g = -1;
+TUNABLE_INT("hw.cxgbe.nofldtxq1g", &t4_nofldtxq1g);
+
+#define NOFLDRXQ_1G 1
+static int t4_nofldrxq1g = -1;
+TUNABLE_INT("hw.cxgbe.nofldrxq1g", &t4_nofldrxq1g);
+#endif
/*
* Holdoff parameters for 10G and 1G ports.
*/
-static unsigned int tmr_idx_10g = 1;
-TUNABLE_INT("hw.cxgbe.holdoff_timer_idx_10G", &tmr_idx_10g);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, holdoff_timer_idx_10G, CTLFLAG_RDTUN,
- &tmr_idx_10g, 0,
- "default timer index for interrupt holdoff (10G ports).");
-
-static int pktc_idx_10g = 2;
-TUNABLE_INT("hw.cxgbe.holdoff_pktc_idx_10G", &pktc_idx_10g);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, holdoff_pktc_idx_10G, CTLFLAG_RDTUN,
- &pktc_idx_10g, 0,
- "default pkt counter index for interrupt holdoff (10G ports).");
-
-static unsigned int tmr_idx_1g = 1;
-TUNABLE_INT("hw.cxgbe.holdoff_timer_idx_1G", &tmr_idx_1g);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, holdoff_timer_idx_1G, CTLFLAG_RDTUN,
- &tmr_idx_1g, 0,
- "default timer index for interrupt holdoff (1G ports).");
-
-static int pktc_idx_1g = 2;
-TUNABLE_INT("hw.cxgbe.holdoff_pktc_idx_1G", &pktc_idx_1g);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, holdoff_pktc_idx_1G, CTLFLAG_RDTUN,
- &pktc_idx_1g, 0,
- "default pkt counter index for interrupt holdoff (1G ports).");
+#define TMR_IDX_10G 1
+static int t4_tmr_idx_10g = TMR_IDX_10G;
+TUNABLE_INT("hw.cxgbe.holdoff_timer_idx_10G", &t4_tmr_idx_10g);
+
+#define PKTC_IDX_10G 2
+static int t4_pktc_idx_10g = PKTC_IDX_10G;
+TUNABLE_INT("hw.cxgbe.holdoff_pktc_idx_10G", &t4_pktc_idx_10g);
+
+#define TMR_IDX_1G 1
+static int t4_tmr_idx_1g = TMR_IDX_1G;
+TUNABLE_INT("hw.cxgbe.holdoff_timer_idx_1G", &t4_tmr_idx_1g);
+
+#define PKTC_IDX_1G 2
+static int t4_pktc_idx_1g = PKTC_IDX_1G;
+TUNABLE_INT("hw.cxgbe.holdoff_pktc_idx_1G", &t4_pktc_idx_1g);
/*
* Size (# of entries) of each tx and rx queue.
*/
-static unsigned int qsize_txq = TX_EQ_QSIZE;
-TUNABLE_INT("hw.cxgbe.qsize_txq", &qsize_txq);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, qsize_txq, CTLFLAG_RDTUN,
- &qsize_txq, 0, "default queue size of NIC tx queues.");
+static unsigned int t4_qsize_txq = TX_EQ_QSIZE;
+TUNABLE_INT("hw.cxgbe.qsize_txq", &t4_qsize_txq);
-static unsigned int qsize_rxq = RX_IQ_QSIZE;
-TUNABLE_INT("hw.cxgbe.qsize_rxq", &qsize_rxq);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, qsize_rxq, CTLFLAG_RDTUN,
- &qsize_rxq, 0, "default queue size of NIC rx queues.");
+static unsigned int t4_qsize_rxq = RX_IQ_QSIZE;
+TUNABLE_INT("hw.cxgbe.qsize_rxq", &t4_qsize_rxq);
/*
- * Interrupt types allowed.
+ * Interrupt types allowed (bits 0, 1, 2 = INTx, MSI, MSI-X respectively).
*/
-static int intr_types = INTR_MSIX | INTR_MSI | INTR_INTX;
-TUNABLE_INT("hw.cxgbe.interrupt_types", &intr_types);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, interrupt_types, CTLFLAG_RDTUN, &intr_types, 0,
- "interrupt types allowed (bits 0, 1, 2 = INTx, MSI, MSI-X respectively)");
+static int t4_intr_types = INTR_MSIX | INTR_MSI | INTR_INTX;
+TUNABLE_INT("hw.cxgbe.interrupt_types", &t4_intr_types);
/*
- * Force the driver to use the same set of interrupts for all ports.
+ * Configuration file.
*/
-static int intr_shared = 0;
-TUNABLE_INT("hw.cxgbe.interrupts_shared", &intr_shared);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, interrupts_shared, CTLFLAG_RDTUN,
- &intr_shared, 0, "interrupts shared between all ports");
+static char t4_cfg_file[32] = "default";
+TUNABLE_STR("hw.cxgbe.config_file", t4_cfg_file, sizeof(t4_cfg_file));
+
+/*
+ * ASIC features that will be used. Disable the ones you don't want so that the
+ * chip resources aren't wasted on features that will not be used.
+ */
+static int t4_linkcaps_allowed = 0; /* No DCBX, PPP, etc. by default */
+TUNABLE_INT("hw.cxgbe.linkcaps_allowed", &t4_linkcaps_allowed);
+
+static int t4_niccaps_allowed = FW_CAPS_CONFIG_NIC;
+TUNABLE_INT("hw.cxgbe.niccaps_allowed", &t4_niccaps_allowed);
-static unsigned int filter_mode = HW_TPL_FR_MT_PR_IV_P_FC;
-TUNABLE_INT("hw.cxgbe.filter_mode", &filter_mode);
-SYSCTL_UINT(_hw_cxgbe, OID_AUTO, filter_mode, CTLFLAG_RDTUN,
- &filter_mode, 0, "default global filter mode.");
+static int t4_toecaps_allowed = FW_CAPS_CONFIG_TOE;
+TUNABLE_INT("hw.cxgbe.toecaps_allowed", &t4_toecaps_allowed);
+
+static int t4_rdmacaps_allowed = 0;
+TUNABLE_INT("hw.cxgbe.rdmacaps_allowed", &t4_rdmacaps_allowed);
+
+static int t4_iscsicaps_allowed = 0;
+TUNABLE_INT("hw.cxgbe.iscsicaps_allowed", &t4_iscsicaps_allowed);
+
+static int t4_fcoecaps_allowed = 0;
+TUNABLE_INT("hw.cxgbe.fcoecaps_allowed", &t4_fcoecaps_allowed);
struct intrs_and_queues {
int intr_type; /* INTx, MSI, or MSI-X */
int nirq; /* Number of vectors */
- int intr_shared; /* Interrupts shared between all ports */
+ int intr_flags;
int ntxq10g; /* # of NIC txq's for each 10G port */
int nrxq10g; /* # of NIC rxq's for each 10G port */
int ntxq1g; /* # of NIC txq's for each 1G port */
int nrxq1g; /* # of NIC rxq's for each 1G port */
+#ifndef TCP_OFFLOAD_DISABLE
+ int nofldtxq10g; /* # of TOE txq's for each 10G port */
+ int nofldrxq10g; /* # of TOE rxq's for each 10G port */
+ int nofldtxq1g; /* # of TOE txq's for each 1G port */
+ int nofldrxq1g; /* # of TOE rxq's for each 1G port */
+#endif
};
struct filter_entry {
@@ -248,15 +257,6 @@ struct filter_entry {
};
enum {
- MEMWIN0_APERTURE = 2048,
- MEMWIN0_BASE = 0x1b800,
- MEMWIN1_APERTURE = 32768,
- MEMWIN1_BASE = 0x28000,
- MEMWIN2_APERTURE = 65536,
- MEMWIN2_BASE = 0x30000,
-};
-
-enum {
XGMAC_MTU = (1 << 0),
XGMAC_PROMISC = (1 << 1),
XGMAC_ALLMULTI = (1 << 2),
@@ -272,9 +272,11 @@ static void setup_memwin(struct adapter *);
static int cfg_itype_and_nqueues(struct adapter *, int, int,
struct intrs_and_queues *);
static int prep_firmware(struct adapter *);
-static int get_devlog_params(struct adapter *, struct devlog_params *);
-static int get_capabilities(struct adapter *, struct fw_caps_config_cmd *);
-static int get_params(struct adapter *, struct fw_caps_config_cmd *);
+static int upload_config_file(struct adapter *, const struct firmware *,
+ uint32_t *, uint32_t *);
+static int partition_resources(struct adapter *, const struct firmware *);
+static int get_params__pre_init(struct adapter *);
+static int get_params__post_init(struct adapter *);
static void t4_set_desc(struct adapter *);
static void build_medialist(struct port_info *);
static int update_mac_settings(struct port_info *, int);
@@ -282,24 +284,46 @@ static int cxgbe_init_locked(struct port_info *);
static int cxgbe_init_synchronized(struct port_info *);
static int cxgbe_uninit_locked(struct port_info *);
static int cxgbe_uninit_synchronized(struct port_info *);
-static int first_port_up(struct adapter *);
-static int last_port_down(struct adapter *);
+static int adapter_full_init(struct adapter *);
+static int adapter_full_uninit(struct adapter *);
+static int port_full_init(struct port_info *);
+static int port_full_uninit(struct port_info *);
+static void quiesce_eq(struct adapter *, struct sge_eq *);
+static void quiesce_iq(struct adapter *, struct sge_iq *);
+static void quiesce_fl(struct adapter *, struct sge_fl *);
static int t4_alloc_irq(struct adapter *, struct irq *, int rid,
- iq_intr_handler_t *, void *, char *);
+ driver_intr_t *, void *, char *);
static int t4_free_irq(struct adapter *, struct irq *);
static void reg_block_dump(struct adapter *, uint8_t *, unsigned int,
unsigned int);
static void t4_get_regs(struct adapter *, struct t4_regdump *, uint8_t *);
static void cxgbe_tick(void *);
+static int cpl_not_handled(struct sge_iq *, const struct rss_header *,
+ struct mbuf *);
static int t4_sysctls(struct adapter *);
static int cxgbe_sysctls(struct port_info *);
static int sysctl_int_array(SYSCTL_HANDLER_ARGS);
+static int sysctl_bitfield(SYSCTL_HANDLER_ARGS);
static int sysctl_holdoff_tmr_idx(SYSCTL_HANDLER_ARGS);
static int sysctl_holdoff_pktc_idx(SYSCTL_HANDLER_ARGS);
static int sysctl_qsize_rxq(SYSCTL_HANDLER_ARGS);
static int sysctl_qsize_txq(SYSCTL_HANDLER_ARGS);
static int sysctl_handle_t4_reg64(SYSCTL_HANDLER_ARGS);
+static int sysctl_cctrl(SYSCTL_HANDLER_ARGS);
+static int sysctl_cpl_stats(SYSCTL_HANDLER_ARGS);
+static int sysctl_ddp_stats(SYSCTL_HANDLER_ARGS);
static int sysctl_devlog(SYSCTL_HANDLER_ARGS);
+static int sysctl_fcoe_stats(SYSCTL_HANDLER_ARGS);
+static int sysctl_hw_sched(SYSCTL_HANDLER_ARGS);
+static int sysctl_lb_stats(SYSCTL_HANDLER_ARGS);
+static int sysctl_meminfo(SYSCTL_HANDLER_ARGS);
+static int sysctl_path_mtus(SYSCTL_HANDLER_ARGS);
+static int sysctl_pm_stats(SYSCTL_HANDLER_ARGS);
+static int sysctl_rdma_stats(SYSCTL_HANDLER_ARGS);
+static int sysctl_tcp_stats(SYSCTL_HANDLER_ARGS);
+static int sysctl_tids(SYSCTL_HANDLER_ARGS);
+static int sysctl_tp_err_stats(SYSCTL_HANDLER_ARGS);
+static int sysctl_tx_rate(SYSCTL_HANDLER_ARGS);
static inline void txq_start(struct ifnet *, struct sge_txq *);
static uint32_t fconf_to_mode(uint32_t);
static uint32_t mode_to_fconf(uint32_t);
@@ -313,8 +337,15 @@ static int del_filter(struct adapter *, struct t4_filter *);
static void clear_filter(struct filter_entry *);
static int set_filter_wr(struct adapter *, int);
static int del_filter_wr(struct adapter *, int);
-void filter_rpl(struct adapter *, const struct cpl_set_tcb_rpl *);
+static int filter_rpl(struct sge_iq *, const struct rss_header *,
+ struct mbuf *);
static int get_sge_context(struct adapter *, struct t4_sge_context *);
+static int read_card_mem(struct adapter *, struct t4_mem_range *);
+#ifndef TCP_OFFLOAD_DISABLE
+static int toe_capability(struct port_info *, int);
+static int activate_uld(struct adapter *, int, struct uld_softc *);
+static int deactivate_uld(struct uld_softc *);
+#endif
static int t4_mod_event(module_t, int, void *);
struct t4_pciids {
@@ -336,6 +367,11 @@ struct t4_pciids {
{0x440a, 4, "Chelsio T404-BT"},
};
+#ifndef TCP_OFFLOAD_DISABLE
+/* This is used in service_iq() to get to the fl associated with an iq. */
+CTASSERT(offsetof(struct sge_ofld_rxq, fl) == offsetof(struct sge_rxq, fl));
+#endif
+
static int
t4_probe(device_t dev)
{
@@ -362,10 +398,11 @@ t4_attach(device_t dev)
{
struct adapter *sc;
int rc = 0, i, n10g, n1g, rqidx, tqidx;
- struct fw_caps_config_cmd caps;
- uint32_t p, v;
struct intrs_and_queues iaq;
struct sge *s;
+#ifndef TCP_OFFLOAD_DISABLE
+ int ofld_rqidx, ofld_tqidx;
+#endif
sc = device_get_softc(dev);
sc->dev = dev;
@@ -374,6 +411,8 @@ t4_attach(device_t dev)
pci_enable_busmaster(dev);
if (pci_find_cap(dev, PCIY_EXPRESS, &i) == 0) {
+ uint32_t v;
+
pci_set_max_read_req(dev, 4096);
v = pci_read_config(dev, i + PCIR_EXPRESS_DEVICE_CTL, 2);
v |= PCIM_EXP_CTL_RELAXED_ORD_ENABLE;
@@ -383,12 +422,22 @@ t4_attach(device_t dev)
snprintf(sc->lockname, sizeof(sc->lockname), "%s",
device_get_nameunit(dev));
mtx_init(&sc->sc_lock, sc->lockname, 0, MTX_DEF);
+ mtx_lock(&t4_list_lock);
+ SLIST_INSERT_HEAD(&t4_list, sc, link);
+ mtx_unlock(&t4_list_lock);
+
+ mtx_init(&sc->sfl_lock, "starving freelists", 0, MTX_DEF);
+ TAILQ_INIT(&sc->sfl);
+ callout_init(&sc->sfl_callout, CALLOUT_MPSAFE);
rc = map_bars(sc);
if (rc != 0)
goto done; /* error message displayed already */
memset(sc->chan_map, 0xff, sizeof(sc->chan_map));
+ for (i = 0; i < ARRAY_SIZE(sc->cpl_handler); i++)
+ sc->cpl_handler[i] = cpl_not_handled;
+ t4_register_cpl_handler(sc, CPL_SET_TCB_RPL, filter_rpl);
/* Prepare the adapter for operation */
rc = -t4_prep_adapter(sc);
@@ -397,107 +446,75 @@ t4_attach(device_t dev)
goto done;
}
- /* Do this really early */
+ /*
+ * Do this really early, with the memory windows set up even before the
+ * character device. The userland tool's register i/o and mem read
+ * will work even in "recovery mode".
+ */
+ setup_memwin(sc);
sc->cdev = make_dev(&t4_cdevsw, device_get_unit(dev), UID_ROOT,
GID_WHEEL, 0600, "%s", device_get_nameunit(dev));
sc->cdev->si_drv1 = sc;
+ /* Go no further if recovery mode has been requested. */
+ if (TUNABLE_INT_FETCH("hw.cxgbe.sos", &i) && i != 0) {
+ device_printf(dev, "recovery mode.\n");
+ goto done;
+ }
+
/* Prepare the firmware for operation */
rc = prep_firmware(sc);
if (rc != 0)
goto done; /* error message displayed already */
- /* Read firmware devlog parameters */
- (void) get_devlog_params(sc, &sc->params.devlog);
-
- /* Get device capabilities and select which ones we'll use */
- rc = get_capabilities(sc, &caps);
- if (rc != 0) {
- device_printf(dev,
- "failed to initialize adapter capabilities: %d.\n", rc);
- goto done;
- }
+ rc = get_params__pre_init(sc);
+ if (rc != 0)
+ goto done; /* error message displayed already */
- /* Choose the global RSS mode. */
- rc = -t4_config_glbl_rss(sc, sc->mbox,
- FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL,
- F_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN |
- F_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ |
- F_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP);
- if (rc != 0) {
- device_printf(dev,
- "failed to select global RSS mode: %d.\n", rc);
- goto done;
- }
+ rc = t4_sge_init(sc);
+ if (rc != 0)
+ goto done; /* error message displayed already */
- /* These are total (sum of all ports) limits for a bus driver */
- rc = -t4_cfg_pfvf(sc, sc->mbox, sc->pf, 0,
- 128, /* max # of egress queues */
- 64, /* max # of egress Ethernet or control queues */
- 64, /* max # of ingress queues with fl/interrupt */
- 0, /* max # of ingress queues without interrupt */
- 0, /* PCIe traffic class */
- 4, /* max # of virtual interfaces */
- M_FW_PFVF_CMD_CMASK, M_FW_PFVF_CMD_PMASK, 16,
- FW_CMD_CAP_PF, FW_CMD_CAP_PF);
- if (rc != 0) {
- device_printf(dev,
- "failed to configure pf/vf resources: %d.\n", rc);
- goto done;
+ if (sc->flags & MASTER_PF) {
+ /* get basic stuff going */
+ rc = -t4_fw_initialize(sc, sc->mbox);
+ if (rc != 0) {
+ device_printf(dev, "early init failed: %d.\n", rc);
+ goto done;
+ }
}
- /* Need this before sge_init */
- for (i = 0; i < SGE_NTIMERS; i++)
- sc->sge.timer_val[i] = min(intr_timer[i], 200U);
- for (i = 0; i < SGE_NCOUNTERS; i++)
- sc->sge.counter_val[i] = min(intr_pktcount[i], M_THRESHOLD_0);
-
- /* Also need the cooked value of cclk before sge_init */
- p = (V_FW_PARAMS_MNEM(FW_PARAMS_MNEM_DEV) |
- V_FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_DEV_CCLK));
- rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 1, &p, &v);
- if (rc != 0) {
- device_printf(sc->dev,
- "failed to obtain core clock value: %d.\n", rc);
- goto done;
- }
- sc->params.vpd.cclk = v;
+ rc = get_params__post_init(sc);
+ if (rc != 0)
+ goto done; /* error message displayed already */
- t4_sge_init(sc);
+ if (sc->flags & MASTER_PF) {
- t4_set_filter_mode(sc, filter_mode);
- t4_set_reg_field(sc, A_TP_GLOBAL_CONFIG,
- V_FIVETUPLELOOKUP(M_FIVETUPLELOOKUP),
- V_FIVETUPLELOOKUP(M_FIVETUPLELOOKUP));
- t4_tp_wr_bits_indirect(sc, A_TP_INGRESS_CONFIG, F_CSUM_HAS_PSEUDO_HDR,
- F_LOOKUPEVERYPKT);
+ /* final tweaks to some settings */
- /* get basic stuff going */
- rc = -t4_early_init(sc, sc->mbox);
- if (rc != 0) {
- device_printf(dev, "early init failed: %d.\n", rc);
- goto done;
+ t4_load_mtus(sc, sc->params.mtus, sc->params.a_wnd,
+ sc->params.b_wnd);
+ t4_write_reg(sc, A_ULP_RX_TDDP_PSZ, V_HPZ0(PAGE_SHIFT - 12));
+ t4_set_reg_field(sc, A_TP_PARA_REG3, F_TUNNELCNGDROP0 |
+ F_TUNNELCNGDROP1 | F_TUNNELCNGDROP2 | F_TUNNELCNGDROP3, 0);
+ t4_set_reg_field(sc, A_TP_PARA_REG5,
+ V_INDICATESIZE(M_INDICATESIZE) |
+ F_REARMDDPOFFSET | F_RESETDDPOFFSET,
+ V_INDICATESIZE(M_INDICATESIZE) |
+ F_REARMDDPOFFSET | F_RESETDDPOFFSET);
+ } else {
+ /*
+ * XXX: Verify that we can live with whatever the master driver
+ * has done so far, and hope that it doesn't change any global
+ * setting from underneath us in the future.
+ */
}
- rc = get_params(sc, &caps);
- if (rc != 0)
- goto done; /* error message displayed already */
-
- /* These are finalized by FW initialization, load their values now */
- v = t4_read_reg(sc, A_TP_TIMER_RESOLUTION);
- sc->params.tp.tre = G_TIMERRESOLUTION(v);
- sc->params.tp.dack_re = G_DELAYEDACKRESOLUTION(v);
- t4_read_mtu_tbl(sc, sc->params.mtus, NULL);
-
- /* tweak some settings */
- t4_write_reg(sc, A_TP_SHIFT_CNT, V_SYNSHIFTMAX(6) | V_RXTSHIFTMAXR1(4) |
- V_RXTSHIFTMAXR2(15) | V_PERSHIFTBACKOFFMAX(8) | V_PERSHIFTMAX(8) |
- V_KEEPALIVEMAXR1(4) | V_KEEPALIVEMAXR2(9));
- t4_write_reg(sc, A_ULP_RX_TDDP_PSZ, V_HPZ0(PAGE_SHIFT - 12));
- t4_set_reg_field(sc, A_TP_PARA_REG3, F_TUNNELCNGDROP0 |
- F_TUNNELCNGDROP1 | F_TUNNELCNGDROP2 | F_TUNNELCNGDROP3, 0);
+ t4_read_indirect(sc, A_TP_PIO_ADDR, A_TP_PIO_DATA, &sc->filter_mode, 1,
+ A_TP_VLAN_PRI_MAP);
- setup_memwin(sc);
+ for (i = 0; i < NCHAN; i++)
+ sc->params.tp.tx_modq[i] = i;
rc = t4_create_dma_tag(sc);
if (rc != 0)
@@ -536,31 +553,18 @@ t4_attach(device_t dev)
if (is_10G_port(pi)) {
n10g++;
- pi->tmr_idx = tmr_idx_10g;
- pi->pktc_idx = pktc_idx_10g;
+ pi->tmr_idx = t4_tmr_idx_10g;
+ pi->pktc_idx = t4_pktc_idx_10g;
} else {
n1g++;
- pi->tmr_idx = tmr_idx_1g;
- pi->pktc_idx = pktc_idx_1g;
+ pi->tmr_idx = t4_tmr_idx_1g;
+ pi->pktc_idx = t4_pktc_idx_1g;
}
pi->xact_addr_filt = -1;
- pi->qsize_rxq = max(qsize_rxq, 128);
- while (pi->qsize_rxq & 7)
- pi->qsize_rxq++;
- pi->qsize_txq = max(qsize_txq, 128);
-
- if (pi->qsize_rxq != qsize_rxq) {
- device_printf(dev,
- "using %d instead of %d as the rx queue size.\n",
- pi->qsize_rxq, qsize_rxq);
- }
- if (pi->qsize_txq != qsize_txq) {
- device_printf(dev,
- "using %d instead of %d as the tx queue size.\n",
- pi->qsize_txq, qsize_txq);
- }
+ pi->qsize_rxq = t4_qsize_rxq;
+ pi->qsize_txq = t4_qsize_txq;
pi->dev = device_add_child(dev, "cxgbe", -1);
if (pi->dev == NULL) {
@@ -570,14 +574,6 @@ t4_attach(device_t dev)
goto done;
}
device_set_softc(pi->dev, pi);
-
- setbit(&sc->registered_device_map, i);
- }
-
- if (sc->registered_device_map == 0) {
- device_printf(dev, "no usable ports\n");
- rc = ENXIO;
- goto done;
}
/*
@@ -589,20 +585,31 @@ t4_attach(device_t dev)
sc->intr_type = iaq.intr_type;
sc->intr_count = iaq.nirq;
+ sc->flags |= iaq.intr_flags;
s = &sc->sge;
s->nrxq = n10g * iaq.nrxq10g + n1g * iaq.nrxq1g;
s->ntxq = n10g * iaq.ntxq10g + n1g * iaq.ntxq1g;
s->neq = s->ntxq + s->nrxq; /* the free list in an rxq is an eq */
- s->neq += sc->params.nports; /* control queues, 1 per port */
+ s->neq += sc->params.nports + 1;/* ctrl queues: 1 per port + 1 mgmt */
s->niq = s->nrxq + 1; /* 1 extra for firmware event queue */
- if (iaq.intr_shared)
- sc->flags |= INTR_SHARED;
- s->niq += NINTRQ(sc); /* interrupt queues */
- s->intrq = malloc(NINTRQ(sc) * sizeof(struct sge_iq), M_CXGBE,
- M_ZERO | M_WAITOK);
- s->ctrlq = malloc(sc->params.nports * sizeof(struct sge_ctrlq), M_CXGBE,
+#ifndef TCP_OFFLOAD_DISABLE
+ if (is_offload(sc)) {
+
+ s->nofldrxq = n10g * iaq.nofldrxq10g + n1g * iaq.nofldrxq1g;
+ s->nofldtxq = n10g * iaq.nofldtxq10g + n1g * iaq.nofldtxq1g;
+ s->neq += s->nofldtxq + s->nofldrxq;
+ s->niq += s->nofldrxq;
+
+ s->ofld_rxq = malloc(s->nofldrxq * sizeof(struct sge_ofld_rxq),
+ M_CXGBE, M_ZERO | M_WAITOK);
+ s->ofld_txq = malloc(s->nofldtxq * sizeof(struct sge_wrq),
+ M_CXGBE, M_ZERO | M_WAITOK);
+ }
+#endif
+
+ s->ctrlq = malloc(sc->params.nports * sizeof(struct sge_wrq), M_CXGBE,
M_ZERO | M_WAITOK);
s->rxq = malloc(s->nrxq * sizeof(struct sge_rxq), M_CXGBE,
M_ZERO | M_WAITOK);
@@ -616,15 +623,16 @@ t4_attach(device_t dev)
sc->irq = malloc(sc->intr_count * sizeof(struct irq), M_CXGBE,
M_ZERO | M_WAITOK);
- sc->l2t = t4_init_l2t(M_WAITOK);
-
- t4_sysctls(sc);
+ t4_init_l2t(sc, M_WAITOK);
/*
* Second pass over the ports. This time we know the number of rx and
* tx queues that each port should get.
*/
rqidx = tqidx = 0;
+#ifndef TCP_OFFLOAD_DISABLE
+ ofld_rqidx = ofld_tqidx = 0;
+#endif
for_each_port(sc, i) {
struct port_info *pi = sc->port[i];
@@ -632,13 +640,33 @@ t4_attach(device_t dev)
continue;
pi->first_rxq = rqidx;
- pi->nrxq = is_10G_port(pi) ? iaq.nrxq10g : iaq.nrxq1g;
-
pi->first_txq = tqidx;
- pi->ntxq = is_10G_port(pi) ? iaq.ntxq10g : iaq.ntxq1g;
+ if (is_10G_port(pi)) {
+ pi->nrxq = iaq.nrxq10g;
+ pi->ntxq = iaq.ntxq10g;
+ } else {
+ pi->nrxq = iaq.nrxq1g;
+ pi->ntxq = iaq.ntxq1g;
+ }
rqidx += pi->nrxq;
tqidx += pi->ntxq;
+
+#ifndef TCP_OFFLOAD_DISABLE
+ if (is_offload(sc)) {
+ pi->first_ofld_rxq = ofld_rqidx;
+ pi->first_ofld_txq = ofld_tqidx;
+ if (is_10G_port(pi)) {
+ pi->nofldrxq = iaq.nofldrxq10g;
+ pi->nofldtxq = iaq.nofldtxq10g;
+ } else {
+ pi->nofldrxq = iaq.nofldrxq1g;
+ pi->nofldtxq = iaq.nofldtxq1g;
+ }
+ ofld_rqidx += pi->nofldrxq;
+ ofld_tqidx += pi->nofldtxq;
+ }
+#endif
}
rc = bus_generic_attach(dev);
@@ -648,17 +676,27 @@ t4_attach(device_t dev)
goto done;
}
-#ifdef INVARIANTS
device_printf(dev,
- "%p, %d ports (0x%x), %d intr_type, %d intr_count\n",
- sc, sc->params.nports, sc->params.portvec,
- sc->intr_type, sc->intr_count);
-#endif
+ "PCIe x%d, %d ports, %d %s interrupt%s, %d eq, %d iq\n",
+ sc->params.pci.width, sc->params.nports, sc->intr_count,
+ sc->intr_type == INTR_MSIX ? "MSI-X" :
+ (sc->intr_type == INTR_MSI ? "MSI" : "INTx"),
+ sc->intr_count > 1 ? "s" : "", sc->sge.neq, sc->sge.niq);
+
t4_set_desc(sc);
done:
+ if (rc != 0 && sc->cdev) {
+ /* cdev was created and so cxgbetool works; recover that way. */
+ device_printf(dev,
+ "error during attach, adapter is now in recovery mode.\n");
+ rc = 0;
+ }
+
if (rc != 0)
t4_detach(dev);
+ else
+ t4_sysctls(sc);
return (rc);
}
@@ -671,14 +709,25 @@ t4_detach(device_t dev)
{
struct adapter *sc;
struct port_info *pi;
- int i;
+ int i, rc;
sc = device_get_softc(dev);
- if (sc->cdev)
+ if (sc->flags & FULL_INIT_DONE)
+ t4_intr_disable(sc);
+
+ if (sc->cdev) {
destroy_dev(sc->cdev);
+ sc->cdev = NULL;
+ }
+
+ rc = bus_generic_detach(dev);
+ if (rc) {
+ device_printf(dev,
+ "failed to detach child devices: %d\n", rc);
+ return (rc);
+ }
- bus_generic_detach(dev);
for (i = 0; i < MAX_NPORTS; i++) {
pi = sc->port[i];
if (pi) {
@@ -691,6 +740,9 @@ t4_detach(device_t dev)
}
}
+ if (sc->flags & FULL_INIT_DONE)
+ adapter_full_uninit(sc);
+
if (sc->flags & FW_OK)
t4_fw_bye(sc, sc->mbox);
@@ -708,16 +760,27 @@ t4_detach(device_t dev)
if (sc->l2t)
t4_free_l2t(sc->l2t);
+#ifndef TCP_OFFLOAD_DISABLE
+ free(sc->sge.ofld_rxq, M_CXGBE);
+ free(sc->sge.ofld_txq, M_CXGBE);
+#endif
free(sc->irq, M_CXGBE);
free(sc->sge.rxq, M_CXGBE);
free(sc->sge.txq, M_CXGBE);
free(sc->sge.ctrlq, M_CXGBE);
- free(sc->sge.intrq, M_CXGBE);
free(sc->sge.iqmap, M_CXGBE);
free(sc->sge.eqmap, M_CXGBE);
free(sc->tids.ftid_tab, M_CXGBE);
t4_destroy_dma_tag(sc);
- mtx_destroy(&sc->sc_lock);
+ if (mtx_initialized(&sc->sc_lock)) {
+ mtx_lock(&t4_list_lock);
+ SLIST_REMOVE(&t4_list, sc, adapter, link);
+ mtx_unlock(&t4_list_lock);
+ mtx_destroy(&sc->sc_lock);
+ }
+
+ if (mtx_initialized(&sc->sfl_lock))
+ mtx_destroy(&sc->sfl_lock);
bzero(sc, sizeof(*sc));
@@ -731,7 +794,7 @@ cxgbe_probe(device_t dev)
char buf[128];
struct port_info *pi = device_get_softc(dev);
- snprintf(buf, sizeof(buf), "Port %d", pi->port_id);
+ snprintf(buf, sizeof(buf), "port %d", pi->port_id);
device_set_desc_copy(dev, buf);
return (BUS_PROBE_DEFAULT);
@@ -758,15 +821,6 @@ cxgbe_attach(device_t dev)
ifp->if_softc = pi;
callout_init(&pi->tick, CALLOUT_MPSAFE);
- pi->tq = taskqueue_create("cxgbe_taskq", M_NOWAIT,
- taskqueue_thread_enqueue, &pi->tq);
- if (pi->tq == NULL) {
- device_printf(dev, "failed to allocate port task queue\n");
- if_free(pi->ifp);
- return (ENOMEM);
- }
- taskqueue_start_threads(&pi->tq, 1, PI_NET, "%s taskq",
- device_get_nameunit(dev));
if_initname(ifp, device_get_name(dev), device_get_unit(dev));
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
@@ -782,6 +836,10 @@ cxgbe_attach(device_t dev)
IFQ_SET_READY(&ifp->if_snd);
ifp->if_capabilities = T4_CAP;
+#ifndef TCP_OFFLOAD_DISABLE
+ if (is_offload(pi->adapter))
+ ifp->if_capabilities |= IFCAP_TOE4;
+#endif
ifp->if_capenable = T4_CAP_ENABLE;
ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO;
@@ -792,9 +850,14 @@ cxgbe_attach(device_t dev)
ether_ifattach(ifp, pi->hw_addr);
-#ifdef INVARIANTS
- device_printf(dev, "%p, %d txq, %d rxq\n", pi, pi->ntxq, pi->nrxq);
+#ifndef TCP_OFFLOAD_DISABLE
+ if (is_offload(pi->adapter)) {
+ device_printf(dev,
+ "%d txq, %d rxq (NIC); %d txq, %d rxq (TOE)\n",
+ pi->ntxq, pi->nrxq, pi->nofldtxq, pi->nofldrxq);
+ } else
#endif
+ device_printf(dev, "%d txq, %d rxq\n", pi->ntxq, pi->nrxq);
cxgbe_sysctls(pi);
@@ -806,7 +869,7 @@ cxgbe_detach(device_t dev)
{
struct port_info *pi = device_get_softc(dev);
struct adapter *sc = pi->adapter;
- int rc;
+ struct ifnet *ifp = pi->ifp;
/* Tell if_ioctl and if_init that the port is going away */
ADAPTER_LOCK(sc);
@@ -817,11 +880,15 @@ cxgbe_detach(device_t dev)
SET_BUSY(sc);
ADAPTER_UNLOCK(sc);
- rc = cxgbe_uninit_synchronized(pi);
- if (rc != 0)
- device_printf(dev, "port uninit failed: %d.\n", rc);
+ PORT_LOCK(pi);
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ callout_stop(&pi->tick);
+ PORT_UNLOCK(pi);
+ callout_drain(&pi->tick);
- taskqueue_free(pi->tq);
+ /* Let detach proceed even if these fail. */
+ cxgbe_uninit_synchronized(pi);
+ port_full_uninit(pi);
ifmedia_removeall(&pi->media);
ether_ifdetach(pi->ifp);
@@ -960,6 +1027,7 @@ fail:
if_printf(ifp,
"enable txcsum first.\n");
rc = EAGAIN;
+ goto fail;
}
} else
ifp->if_hwassist &= ~CSUM_TSO;
@@ -972,15 +1040,21 @@ fail:
ifp->if_capenable ^= IFCAP_LRO;
for_each_rxq(pi, i, rxq) {
if (ifp->if_capenable & IFCAP_LRO)
- rxq->flags |= RXQ_LRO_ENABLED;
+ rxq->iq.flags |= IQ_LRO_ENABLED;
else
- rxq->flags &= ~RXQ_LRO_ENABLED;
+ rxq->iq.flags &= ~IQ_LRO_ENABLED;
}
#endif
}
#ifndef TCP_OFFLOAD_DISABLE
- if (mask & IFCAP_TOE4) {
- rc = EOPNOTSUPP;
+ if (mask & IFCAP_TOE) {
+ int enable = (ifp->if_capenable ^ mask) & IFCAP_TOE;
+
+ rc = toe_capability(pi, enable);
+ if (rc != 0)
+ goto fail;
+
+ ifp->if_capenable ^= mask;
}
#endif
if (mask & IFCAP_VLAN_HWTAGGING) {
@@ -1045,9 +1119,9 @@ cxgbe_transmit(struct ifnet *ifp, struct mbuf *m)
M_ASSERTPKTHDR(m);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
+ if (__predict_false(pi->link_cfg.link_ok == 0)) {
m_freem(m);
- return (0);
+ return (ENETDOWN);
}
if (m->m_flags & M_FLOWID)
@@ -1055,13 +1129,20 @@ cxgbe_transmit(struct ifnet *ifp, struct mbuf *m)
br = txq->br;
if (TXQ_TRYLOCK(txq) == 0) {
+ struct sge_eq *eq = &txq->eq;
+
/*
- * XXX: make sure that this packet really is sent out. There is
- * a small race where t4_eth_tx may stop draining the drbr and
- * goes away, just before we enqueued this mbuf.
+ * It is possible that t4_eth_tx finishes up and releases the
+ * lock between the TRYLOCK above and the drbr_enqueue here. We
+ * need to make sure that this mbuf doesn't just sit there in
+ * the drbr.
*/
- return (drbr_enqueue(ifp, br, m));
+ rc = drbr_enqueue(ifp, br, m);
+ if (rc == 0 && callout_pending(&eq->tx_callout) == 0 &&
+ !(eq->flags & EQ_DOOMED))
+ callout_reset(&eq->tx_callout, 1, t4_tx_callout, eq);
+ return (rc);
}
/*
@@ -1102,11 +1183,12 @@ cxgbe_qflush(struct ifnet *ifp)
int i;
struct mbuf *m;
- /* queues do not exist if !IFF_DRV_RUNNING. */
- if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ /* queues do not exist if !PORT_INIT_DONE. */
+ if (pi->flags & PORT_INIT_DONE) {
for_each_txq(pi, i, txq) {
TXQ_LOCK(txq);
m_freem(txq->m);
+ txq->m = NULL;
while ((m = buf_ring_dequeue_sc(txq->br)) != NULL)
m_freem(m);
TXQ_UNLOCK(txq);
@@ -1220,14 +1302,25 @@ static int
cfg_itype_and_nqueues(struct adapter *sc, int n10g, int n1g,
struct intrs_and_queues *iaq)
{
- int rc, itype, navail, nc, nrxq10g, nrxq1g;
+ int rc, itype, navail, nrxq10g, nrxq1g, n;
+ int nofldrxq10g = 0, nofldrxq1g = 0;
bzero(iaq, sizeof(*iaq));
- nc = mp_ncpus; /* our snapshot of the number of CPUs */
+
+ iaq->ntxq10g = t4_ntxq10g;
+ iaq->ntxq1g = t4_ntxq1g;
+ iaq->nrxq10g = nrxq10g = t4_nrxq10g;
+ iaq->nrxq1g = nrxq1g = t4_nrxq1g;
+#ifndef TCP_OFFLOAD_DISABLE
+ iaq->nofldtxq10g = t4_nofldtxq10g;
+ iaq->nofldtxq1g = t4_nofldtxq1g;
+ iaq->nofldrxq10g = nofldrxq10g = t4_nofldrxq10g;
+ iaq->nofldrxq1g = nofldrxq1g = t4_nofldrxq1g;
+#endif
for (itype = INTR_MSIX; itype; itype >>= 1) {
- if ((itype & intr_types) == 0)
+ if ((itype & t4_intr_types) == 0)
continue; /* not allowed */
if (itype == INTR_MSIX)
@@ -1236,60 +1329,93 @@ cfg_itype_and_nqueues(struct adapter *sc, int n10g, int n1g,
navail = pci_msi_count(sc->dev);
else
navail = 1;
-
+restart:
if (navail == 0)
continue;
iaq->intr_type = itype;
+ iaq->intr_flags = 0;
- iaq->ntxq10g = min(nc, max_ntxq_10g);
- iaq->ntxq1g = min(nc, max_ntxq_1g);
-
- nrxq10g = min(nc, max_nrxq_10g);
- nrxq1g = min(nc, max_nrxq_1g);
-
- iaq->nirq = n10g * nrxq10g + n1g * nrxq1g + T4_EXTRA_INTR;
- if (iaq->nirq <= navail && intr_shared == 0) {
-
- if (itype == INTR_MSI && !powerof2(iaq->nirq))
- goto share;
-
- /* One for err, one for fwq, and one for each rxq */
-
- iaq->intr_shared = 0;
- iaq->nrxq10g = nrxq10g;
- iaq->nrxq1g = nrxq1g;
+ /*
+ * Best option: an interrupt vector for errors, one for the
+ * firmware event queue, and one each for each rxq (NIC as well
+ * as offload).
+ */
+ iaq->nirq = T4_EXTRA_INTR;
+ iaq->nirq += n10g * (nrxq10g + nofldrxq10g);
+ iaq->nirq += n1g * (nrxq1g + nofldrxq1g);
+ if (iaq->nirq <= navail &&
+ (itype != INTR_MSI || powerof2(iaq->nirq))) {
+ iaq->intr_flags |= INTR_DIRECT;
+ goto allocate;
+ }
- } else {
-share:
- iaq->intr_shared = 1;
+ /*
+ * Second best option: an interrupt vector for errors, one for
+ * the firmware event queue, and one each for either NIC or
+ * offload rxq's.
+ */
+ iaq->nirq = T4_EXTRA_INTR;
+ iaq->nirq += n10g * max(nrxq10g, nofldrxq10g);
+ iaq->nirq += n1g * max(nrxq1g, nofldrxq1g);
+ if (iaq->nirq <= navail &&
+ (itype != INTR_MSI || powerof2(iaq->nirq)))
+ goto allocate;
- if (navail >= nc + T4_EXTRA_INTR) {
- if (itype == INTR_MSIX)
- navail = nc + T4_EXTRA_INTR;
+ /*
+ * Next best option: an interrupt vector for errors, one for the
+ * firmware event queue, and at least one per port. At this
+ * point we know we'll have to downsize nrxq or nofldrxq to fit
+ * what's available to us.
+ */
+ iaq->nirq = T4_EXTRA_INTR;
+ iaq->nirq += n10g + n1g;
+ if (iaq->nirq <= navail) {
+ int leftover = navail - iaq->nirq;
+
+ if (n10g > 0) {
+ int target = max(nrxq10g, nofldrxq10g);
+
+ n = 1;
+ while (n < target && leftover >= n10g) {
+ leftover -= n10g;
+ iaq->nirq += n10g;
+ n++;
+ }
+ iaq->nrxq10g = min(n, nrxq10g);
+#ifndef TCP_OFFLOAD_DISABLE
+ iaq->nofldrxq10g = min(n, nofldrxq10g);
+#endif
+ }
- /* navail is and must remain a pow2 for MSI */
- if (itype == INTR_MSI) {
- KASSERT(powerof2(navail),
- ("%d not power of 2", navail));
+ if (n1g > 0) {
+ int target = max(nrxq1g, nofldrxq1g);
- while (navail / 2 >= nc + T4_EXTRA_INTR)
- navail /= 2;
+ n = 1;
+ while (n < target && leftover >= n1g) {
+ leftover -= n1g;
+ iaq->nirq += n1g;
+ n++;
}
+ iaq->nrxq1g = min(n, nrxq1g);
+#ifndef TCP_OFFLOAD_DISABLE
+ iaq->nofldrxq1g = min(n, nofldrxq1g);
+#endif
}
- iaq->nirq = navail; /* total # of interrupts */
- /*
- * If we have multiple vectors available reserve one
- * exclusively for errors. The rest will be shared by
- * the fwq and data.
- */
- if (navail > 1)
- navail--;
- iaq->nrxq10g = min(nrxq10g, navail);
- iaq->nrxq1g = min(nrxq1g, navail);
+ if (itype != INTR_MSI || powerof2(iaq->nirq))
+ goto allocate;
}
+ /*
+ * Least desirable option: one interrupt vector for everything.
+ */
+ iaq->nirq = iaq->nrxq10g = iaq->nrxq1g = 1;
+#ifndef TCP_OFFLOAD_DISABLE
+ iaq->nofldrxq10g = iaq->nofldrxq1g = 1;
+#endif
+
+allocate:
navail = iaq->nirq;
rc = 0;
if (itype == INTR_MSIX)
@@ -1305,8 +1431,11 @@ share:
* Didn't get the number requested. Use whatever number
* the kernel is willing to allocate (it's in navail).
*/
+ device_printf(sc->dev, "fewer vectors than requested, "
+ "type=%d, req=%d, rcvd=%d; will downshift req.\n",
+ itype, iaq->nirq, navail);
pci_release_msi(sc->dev);
- goto share;
+ goto restart;
}
device_printf(sc->dev,
@@ -1316,26 +1445,30 @@ share:
device_printf(sc->dev,
"failed to find a usable interrupt type. "
- "allowed=%d, msi-x=%d, msi=%d, intx=1", intr_types,
+ "allowed=%d, msi-x=%d, msi=%d, intx=1", t4_intr_types,
pci_msix_count(sc->dev), pci_msi_count(sc->dev));
return (ENXIO);
}
/*
- * Install a compatible firmware (if required), establish contact with it,
- * become the master, and reset the device.
+ * Install a compatible firmware (if required), establish contact with it (by
+ * saying hello), and reset the device. If we end up as the master driver,
+ * partition adapter resources by providing a configuration file to the
+ * firmware.
*/
static int
prep_firmware(struct adapter *sc)
{
- const struct firmware *fw;
+ const struct firmware *fw = NULL, *cfg = NULL, *default_cfg;
int rc;
enum dev_state state;
+ default_cfg = firmware_get(T4_CFGNAME);
+
/* Check firmware version and install a different one if necessary */
rc = t4_check_fw_version(sc);
- if (rc != 0 || force_firmware_install) {
+ if (rc != 0) {
uint32_t v = 0;
fw = firmware_get(T4_FWNAME);
@@ -1347,7 +1480,7 @@ prep_firmware(struct adapter *sc)
/*
* The firmware module will not be used if it isn't the
* same major version as what the driver was compiled
- * with. This check trumps force_firmware_install.
+ * with.
*/
if (G_FW_HDR_FW_VER_MAJOR(v) != FW_VERSION_MAJOR) {
device_printf(sc->dev,
@@ -1360,17 +1493,16 @@ prep_firmware(struct adapter *sc)
}
}
- if (fw == NULL && (rc < 0 || force_firmware_install)) {
+ if (fw == NULL && rc < 0) {
device_printf(sc->dev, "No usable firmware. "
- "card has %d.%d.%d, driver compiled with %d.%d.%d, "
- "force_firmware_install%s set",
+ "card has %d.%d.%d, driver compiled with %d.%d.%d",
G_FW_HDR_FW_VER_MAJOR(sc->params.fw_vers),
G_FW_HDR_FW_VER_MINOR(sc->params.fw_vers),
G_FW_HDR_FW_VER_MICRO(sc->params.fw_vers),
FW_VERSION_MAJOR, FW_VERSION_MINOR,
- FW_VERSION_MICRO,
- force_firmware_install ? "" : " not");
- return (EAGAIN);
+ FW_VERSION_MICRO);
+ rc = EAGAIN;
+ goto done;
}
/*
@@ -1378,8 +1510,7 @@ prep_firmware(struct adapter *sc)
* Downgrade only for a major version mismatch or if
* force_firmware_install was specified.
*/
- if (fw != NULL && (rc < 0 || force_firmware_install ||
- v > sc->params.fw_vers)) {
+ if (fw != NULL && (rc < 0 || v > sc->params.fw_vers)) {
device_printf(sc->dev,
"installing firmware %d.%d.%d.%d on card.\n",
G_FW_HDR_FW_VER_MAJOR(v), G_FW_HDR_FW_VER_MINOR(v),
@@ -1389,26 +1520,24 @@ prep_firmware(struct adapter *sc)
if (rc != 0) {
device_printf(sc->dev,
"failed to install firmware: %d\n", rc);
- firmware_put(fw, FIRMWARE_UNLOAD);
- return (rc);
+ goto done;
} else {
/* refresh */
(void) t4_check_fw_version(sc);
}
}
-
- if (fw != NULL)
- firmware_put(fw, FIRMWARE_UNLOAD);
}
- /* Contact firmware, request master */
- rc = t4_fw_hello(sc, sc->mbox, sc->mbox, MASTER_MUST, &state);
+ /* Contact firmware. */
+ rc = t4_fw_hello(sc, sc->mbox, sc->mbox, MASTER_MAY, &state);
if (rc < 0) {
rc = -rc;
device_printf(sc->dev,
"failed to connect to the firmware: %d.\n", rc);
- return (rc);
+ goto done;
}
+ if (rc == sc->mbox)
+ sc->flags |= MASTER_PF;
/* Reset device */
rc = -t4_fw_reset(sc, sc->mbox, F_PIORSTMODE | F_PIORST);
@@ -1416,7 +1545,26 @@ prep_firmware(struct adapter *sc)
device_printf(sc->dev, "firmware reset failed: %d.\n", rc);
if (rc != ETIMEDOUT && rc != EIO)
t4_fw_bye(sc, sc->mbox);
- return (rc);
+ goto done;
+ }
+
+ /* Partition adapter resources as specified in the config file. */
+ if (sc->flags & MASTER_PF) {
+ if (strncmp(t4_cfg_file, "default", sizeof(t4_cfg_file))) {
+ char s[32];
+
+ snprintf(s, sizeof(s), "t4fw_cfg_%s", t4_cfg_file);
+ cfg = firmware_get(s);
+ if (cfg == NULL) {
+ device_printf(sc->dev,
+ "unable to locate %s module, "
+ "will use default config file.\n", s);
+ }
+ }
+
+ rc = partition_resources(sc, cfg ? cfg : default_cfg);
+ if (rc != 0)
+ goto done; /* error message displayed already */
}
snprintf(sc->fw_version, sizeof(sc->fw_version), "%u.%u.%u.%u",
@@ -1426,84 +1574,207 @@ prep_firmware(struct adapter *sc)
G_FW_HDR_FW_VER_BUILD(sc->params.fw_vers));
sc->flags |= FW_OK;
- return (0);
+done:
+ if (fw != NULL)
+ firmware_put(fw, FIRMWARE_UNLOAD);
+ if (cfg != NULL)
+ firmware_put(cfg, FIRMWARE_UNLOAD);
+ if (default_cfg != NULL)
+ firmware_put(default_cfg, FIRMWARE_UNLOAD);
+
+ return (rc);
}
+#define FW_PARAM_DEV(param) \
+ (V_FW_PARAMS_MNEM(FW_PARAMS_MNEM_DEV) | \
+ V_FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_DEV_##param))
+#define FW_PARAM_PFVF(param) \
+ (V_FW_PARAMS_MNEM(FW_PARAMS_MNEM_PFVF) | \
+ V_FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_PFVF_##param))
+
+/*
+ * Upload configuration file to card's memory.
+ */
static int
-get_devlog_params(struct adapter *sc, struct devlog_params *dlog)
+upload_config_file(struct adapter *sc, const struct firmware *fw, uint32_t *mt,
+ uint32_t *ma)
{
- struct fw_devlog_cmd devlog_cmd;
- uint32_t meminfo;
- int rc;
+ int rc, i;
+ uint32_t param, val, mtype, maddr, bar, off, win, remaining;
+ const uint32_t *b;
- bzero(&devlog_cmd, sizeof(devlog_cmd));
- devlog_cmd.op_to_write = htobe32(V_FW_CMD_OP(FW_DEVLOG_CMD) |
- F_FW_CMD_REQUEST | F_FW_CMD_READ);
- devlog_cmd.retval_len16 = htobe32(FW_LEN16(devlog_cmd));
- rc = -t4_wr_mbox(sc, sc->mbox, &devlog_cmd, sizeof(devlog_cmd),
- &devlog_cmd);
+ /* Figure out where the firmware wants us to upload it. */
+ param = FW_PARAM_DEV(CF);
+ rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 1, &param, &val);
if (rc != 0) {
+ /* Firmwares without config file support will fail this way */
device_printf(sc->dev,
- "failed to get devlog parameters: %d.\n", rc);
- bzero(dlog, sizeof (*dlog));
+ "failed to query config file location: %d.\n", rc);
return (rc);
}
+ *mt = mtype = G_FW_PARAMS_PARAM_Y(val);
+ *ma = maddr = G_FW_PARAMS_PARAM_Z(val) << 16;
- meminfo = be32toh(devlog_cmd.memtype_devlog_memaddr16_devlog);
- dlog->memtype = G_FW_DEVLOG_CMD_MEMTYPE_DEVLOG(meminfo);
- dlog->start = G_FW_DEVLOG_CMD_MEMADDR16_DEVLOG(meminfo) << 4;
- dlog->size = be32toh(devlog_cmd.memsize_devlog);
+ if (maddr & 3) {
+ device_printf(sc->dev,
+ "cannot upload config file (type %u, addr %x).\n",
+ mtype, maddr);
+ return (EFAULT);
+ }
- return (0);
+ /* Translate mtype/maddr to an address suitable for the PCIe window */
+ val = t4_read_reg(sc, A_MA_TARGET_MEM_ENABLE);
+ val &= F_EDRAM0_ENABLE | F_EDRAM1_ENABLE | F_EXT_MEM_ENABLE;
+ switch (mtype) {
+ case FW_MEMTYPE_CF_EDC0:
+ if (!(val & F_EDRAM0_ENABLE))
+ goto err;
+ bar = t4_read_reg(sc, A_MA_EDRAM0_BAR);
+ maddr += G_EDRAM0_BASE(bar) << 20;
+ break;
+
+ case FW_MEMTYPE_CF_EDC1:
+ if (!(val & F_EDRAM1_ENABLE))
+ goto err;
+ bar = t4_read_reg(sc, A_MA_EDRAM1_BAR);
+ maddr += G_EDRAM1_BASE(bar) << 20;
+ break;
+
+ case FW_MEMTYPE_CF_EXTMEM:
+ if (!(val & F_EXT_MEM_ENABLE))
+ goto err;
+ bar = t4_read_reg(sc, A_MA_EXT_MEMORY_BAR);
+ maddr += G_EXT_MEM_BASE(bar) << 20;
+ break;
+
+ default:
+err:
+ device_printf(sc->dev,
+ "cannot upload config file (type %u, enabled %u).\n",
+ mtype, val);
+ return (EFAULT);
+ }
+
+ /*
+ * Position the PCIe window (we use memwin2) to the 16B aligned area
+ * just at/before the upload location.
+ */
+ win = maddr & ~0xf;
+ off = maddr - win; /* offset from the start of the window. */
+ t4_write_reg(sc, PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2), win);
+ t4_read_reg(sc, PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2));
+
+ remaining = fw->datasize;
+ if (remaining > FLASH_CFG_MAX_SIZE ||
+ remaining > MEMWIN2_APERTURE - off) {
+ device_printf(sc->dev, "cannot upload config file all at once "
+ "(size %u, max %u, room %u).\n",
+ remaining, FLASH_CFG_MAX_SIZE, MEMWIN2_APERTURE - off);
+ return (EFBIG);
+ }
+
+ /*
+ * XXX: sheer laziness. We deliberately added 4 bytes of useless
+ * stuffing/comments at the end of the config file so it's ok to simply
+ * throw away the last remaining bytes when the config file is not an
+ * exact multiple of 4.
+ */
+ b = fw->data;
+ for (i = 0; remaining >= 4; i += 4, remaining -= 4)
+ t4_write_reg(sc, MEMWIN2_BASE + off + i, *b++);
+
+ return (rc);
}
+/*
+ * Partition chip resources for use between various PFs, VFs, etc. This is done
+ * by uploading the firmware configuration file to the adapter and instructing
+ * the firmware to process it.
+ */
static int
-get_capabilities(struct adapter *sc, struct fw_caps_config_cmd *caps)
+partition_resources(struct adapter *sc, const struct firmware *cfg)
{
int rc;
+ struct fw_caps_config_cmd caps;
+ uint32_t mtype, maddr, finicsum, cfcsum;
- bzero(caps, sizeof(*caps));
- caps->op_to_write = htobe32(V_FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
- F_FW_CMD_REQUEST | F_FW_CMD_READ);
- caps->retval_len16 = htobe32(FW_LEN16(*caps));
+ rc = cfg ? upload_config_file(sc, cfg, &mtype, &maddr) : ENOENT;
+ if (rc != 0) {
+ mtype = FW_MEMTYPE_CF_FLASH;
+ maddr = t4_flash_cfg_addr(sc);
+ }
- rc = -t4_wr_mbox(sc, sc->mbox, caps, sizeof(*caps), caps);
- if (rc != 0)
+ bzero(&caps, sizeof(caps));
+ caps.op_to_write = htobe32(V_FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
+ F_FW_CMD_REQUEST | F_FW_CMD_READ);
+ caps.cfvalid_to_len16 = htobe32(F_FW_CAPS_CONFIG_CMD_CFVALID |
+ V_FW_CAPS_CONFIG_CMD_MEMTYPE_CF(mtype) |
+ V_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(maddr >> 16) | FW_LEN16(caps));
+ rc = -t4_wr_mbox(sc, sc->mbox, &caps, sizeof(caps), &caps);
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to pre-process config file: %d.\n", rc);
return (rc);
+ }
+
+ finicsum = be32toh(caps.finicsum);
+ cfcsum = be32toh(caps.cfcsum);
+ if (finicsum != cfcsum) {
+ device_printf(sc->dev,
+ "WARNING: config file checksum mismatch: %08x %08x\n",
+ finicsum, cfcsum);
+ }
+ sc->cfcsum = cfcsum;
- if (caps->niccaps & htobe16(FW_CAPS_CONFIG_NIC_VM))
- caps->niccaps ^= htobe16(FW_CAPS_CONFIG_NIC_VM);
+#define LIMIT_CAPS(x) do { \
+ caps.x &= htobe16(t4_##x##_allowed); \
+ sc->x = htobe16(caps.x); \
+} while (0)
- caps->op_to_write = htobe32(V_FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
+ /*
+ * Let the firmware know what features will (not) be used so it can tune
+ * things accordingly.
+ */
+ LIMIT_CAPS(linkcaps);
+ LIMIT_CAPS(niccaps);
+ LIMIT_CAPS(toecaps);
+ LIMIT_CAPS(rdmacaps);
+ LIMIT_CAPS(iscsicaps);
+ LIMIT_CAPS(fcoecaps);
+#undef LIMIT_CAPS
+
+ caps.op_to_write = htobe32(V_FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
F_FW_CMD_REQUEST | F_FW_CMD_WRITE);
- rc = -t4_wr_mbox(sc, sc->mbox, caps, sizeof(*caps), NULL);
+ caps.cfvalid_to_len16 = htobe32(FW_LEN16(caps));
+ rc = -t4_wr_mbox(sc, sc->mbox, &caps, sizeof(caps), NULL);
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to process config file: %d.\n", rc);
+ return (rc);
+ }
- return (rc);
+ return (0);
}
+/*
+ * Retrieve parameters that are needed (or nice to have) prior to calling
+ * t4_sge_init and t4_fw_initialize.
+ */
static int
-get_params(struct adapter *sc, struct fw_caps_config_cmd *caps)
+get_params__pre_init(struct adapter *sc)
{
int rc;
- uint32_t params[7], val[7];
-
-#define FW_PARAM_DEV(param) \
- (V_FW_PARAMS_MNEM(FW_PARAMS_MNEM_DEV) | \
- V_FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_DEV_##param))
-#define FW_PARAM_PFVF(param) \
- (V_FW_PARAMS_MNEM(FW_PARAMS_MNEM_PFVF) | \
- V_FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_PFVF_##param))
+ uint32_t param[2], val[2];
+ struct fw_devlog_cmd cmd;
+ struct devlog_params *dlog = &sc->params.devlog;
- params[0] = FW_PARAM_DEV(PORTVEC);
- params[1] = FW_PARAM_PFVF(IQFLINT_START);
- params[2] = FW_PARAM_PFVF(EQ_START);
- params[3] = FW_PARAM_PFVF(FILTER_START);
- params[4] = FW_PARAM_PFVF(FILTER_END);
- rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 5, params, val);
+ param[0] = FW_PARAM_DEV(PORTVEC);
+ param[1] = FW_PARAM_DEV(CCLK);
+ rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 2, param, val);
if (rc != 0) {
device_printf(sc->dev,
- "failed to query parameters: %d.\n", rc);
- goto done;
+ "failed to query parameters (pre_init): %d.\n", rc);
+ return (rc);
}
sc->params.portvec = val[0];
@@ -1513,24 +1784,81 @@ get_params(struct adapter *sc, struct fw_caps_config_cmd *caps)
val[0] &= val[0] - 1;
}
- sc->sge.iq_start = val[1];
- sc->sge.eq_start = val[2];
- sc->tids.ftid_base = val[3];
- sc->tids.nftids = val[4] - val[3] + 1;
+ sc->params.vpd.cclk = val[1];
+
+ /* Read device log parameters. */
+ bzero(&cmd, sizeof(cmd));
+ cmd.op_to_write = htobe32(V_FW_CMD_OP(FW_DEVLOG_CMD) |
+ F_FW_CMD_REQUEST | F_FW_CMD_READ);
+ cmd.retval_len16 = htobe32(FW_LEN16(cmd));
+ rc = -t4_wr_mbox(sc, sc->mbox, &cmd, sizeof(cmd), &cmd);
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to get devlog parameters: %d.\n", rc);
+ bzero(dlog, sizeof (*dlog));
+ rc = 0; /* devlog isn't critical for device operation */
+ } else {
+ val[0] = be32toh(cmd.memtype_devlog_memaddr16_devlog);
+ dlog->memtype = G_FW_DEVLOG_CMD_MEMTYPE_DEVLOG(val[0]);
+ dlog->start = G_FW_DEVLOG_CMD_MEMADDR16_DEVLOG(val[0]) << 4;
+ dlog->size = be32toh(cmd.memsize_devlog);
+ }
+
+ return (rc);
+}
+
+/*
+ * Retrieve various parameters that are of interest to the driver. The device
+ * has been initialized by the firmware at this point.
+ */
+static int
+get_params__post_init(struct adapter *sc)
+{
+ int rc;
+ uint32_t param[7], val[7];
+ struct fw_caps_config_cmd caps;
+
+ param[0] = FW_PARAM_PFVF(IQFLINT_START);
+ param[1] = FW_PARAM_PFVF(EQ_START);
+ param[2] = FW_PARAM_PFVF(FILTER_START);
+ param[3] = FW_PARAM_PFVF(FILTER_END);
+ rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 4, param, val);
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to query parameters (post_init): %d.\n", rc);
+ return (rc);
+ }
+
+ sc->sge.iq_start = val[0];
+ sc->sge.eq_start = val[1];
+ sc->tids.ftid_base = val[2];
+ sc->tids.nftids = val[3] - val[2] + 1;
- if (caps->toecaps) {
+ /* get capabilites */
+ bzero(&caps, sizeof(caps));
+ caps.op_to_write = htobe32(V_FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
+ F_FW_CMD_REQUEST | F_FW_CMD_READ);
+ caps.cfvalid_to_len16 = htobe32(FW_LEN16(caps));
+ rc = -t4_wr_mbox(sc, sc->mbox, &caps, sizeof(caps), &caps);
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to get card capabilities: %d.\n", rc);
+ return (rc);
+ }
+
+ if (caps.toecaps) {
/* query offload-related parameters */
- params[0] = FW_PARAM_DEV(NTID);
- params[1] = FW_PARAM_PFVF(SERVER_START);
- params[2] = FW_PARAM_PFVF(SERVER_END);
- params[3] = FW_PARAM_PFVF(TDDP_START);
- params[4] = FW_PARAM_PFVF(TDDP_END);
- params[5] = FW_PARAM_DEV(FLOWC_BUFFIFO_SZ);
- rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 6, params, val);
+ param[0] = FW_PARAM_DEV(NTID);
+ param[1] = FW_PARAM_PFVF(SERVER_START);
+ param[2] = FW_PARAM_PFVF(SERVER_END);
+ param[3] = FW_PARAM_PFVF(TDDP_START);
+ param[4] = FW_PARAM_PFVF(TDDP_END);
+ param[5] = FW_PARAM_DEV(FLOWC_BUFFIFO_SZ);
+ rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 6, param, val);
if (rc != 0) {
device_printf(sc->dev,
"failed to query TOE parameters: %d.\n", rc);
- goto done;
+ return (rc);
}
sc->tids.ntids = val[0];
sc->tids.natids = min(sc->tids.ntids / 2, MAX_ATIDS);
@@ -1541,18 +1869,18 @@ get_params(struct adapter *sc, struct fw_caps_config_cmd *caps)
sc->params.ofldq_wr_cred = val[5];
sc->params.offload = 1;
}
- if (caps->rdmacaps) {
- params[0] = FW_PARAM_PFVF(STAG_START);
- params[1] = FW_PARAM_PFVF(STAG_END);
- params[2] = FW_PARAM_PFVF(RQ_START);
- params[3] = FW_PARAM_PFVF(RQ_END);
- params[4] = FW_PARAM_PFVF(PBL_START);
- params[5] = FW_PARAM_PFVF(PBL_END);
- rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 6, params, val);
+ if (caps.rdmacaps) {
+ param[0] = FW_PARAM_PFVF(STAG_START);
+ param[1] = FW_PARAM_PFVF(STAG_END);
+ param[2] = FW_PARAM_PFVF(RQ_START);
+ param[3] = FW_PARAM_PFVF(RQ_END);
+ param[4] = FW_PARAM_PFVF(PBL_START);
+ param[5] = FW_PARAM_PFVF(PBL_END);
+ rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 6, param, val);
if (rc != 0) {
device_printf(sc->dev,
- "failed to query RDMA parameters: %d.\n", rc);
- goto done;
+ "failed to query RDMA parameters(1): %d.\n", rc);
+ return (rc);
}
sc->vres.stag.start = val[0];
sc->vres.stag.size = val[1] - val[0] + 1;
@@ -1560,37 +1888,59 @@ get_params(struct adapter *sc, struct fw_caps_config_cmd *caps)
sc->vres.rq.size = val[3] - val[2] + 1;
sc->vres.pbl.start = val[4];
sc->vres.pbl.size = val[5] - val[4] + 1;
+
+ param[0] = FW_PARAM_PFVF(SQRQ_START);
+ param[1] = FW_PARAM_PFVF(SQRQ_END);
+ param[2] = FW_PARAM_PFVF(CQ_START);
+ param[3] = FW_PARAM_PFVF(CQ_END);
+ param[4] = FW_PARAM_PFVF(OCQ_START);
+ param[5] = FW_PARAM_PFVF(OCQ_END);
+ rc = -t4_query_params(sc, 0, 0, 0, 6, param, val);
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to query RDMA parameters(2): %d.\n", rc);
+ return (rc);
+ }
+ sc->vres.qp.start = val[0];
+ sc->vres.qp.size = val[1] - val[0] + 1;
+ sc->vres.cq.start = val[2];
+ sc->vres.cq.size = val[3] - val[2] + 1;
+ sc->vres.ocq.start = val[4];
+ sc->vres.ocq.size = val[5] - val[4] + 1;
}
- if (caps->iscsicaps) {
- params[0] = FW_PARAM_PFVF(ISCSI_START);
- params[1] = FW_PARAM_PFVF(ISCSI_END);
- rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 2, params, val);
+ if (caps.iscsicaps) {
+ param[0] = FW_PARAM_PFVF(ISCSI_START);
+ param[1] = FW_PARAM_PFVF(ISCSI_END);
+ rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 2, param, val);
if (rc != 0) {
device_printf(sc->dev,
"failed to query iSCSI parameters: %d.\n", rc);
- goto done;
+ return (rc);
}
sc->vres.iscsi.start = val[0];
sc->vres.iscsi.size = val[1] - val[0] + 1;
}
-#undef FW_PARAM_PFVF
-#undef FW_PARAM_DEV
-done:
+ /* These are finalized by FW initialization, load their values now */
+ val[0] = t4_read_reg(sc, A_TP_TIMER_RESOLUTION);
+ sc->params.tp.tre = G_TIMERRESOLUTION(val[0]);
+ sc->params.tp.dack_re = G_DELAYEDACKRESOLUTION(val[0]);
+ t4_read_mtu_tbl(sc, sc->params.mtus, NULL);
+
return (rc);
}
+#undef FW_PARAM_PFVF
+#undef FW_PARAM_DEV
+
static void
t4_set_desc(struct adapter *sc)
{
char buf[128];
struct adapter_params *p = &sc->params;
- snprintf(buf, sizeof(buf),
- "Chelsio %s (rev %d) %d port %sNIC PCIe-x%d %d %s, S/N:%s, E/C:%s",
- p->vpd.id, p->rev, p->nports, is_offload(sc) ? "R" : "",
- p->pci.width, sc->intr_count, sc->intr_type == INTR_MSIX ? "MSI-X" :
- (sc->intr_type == INTR_MSI ? "MSI" : "INTx"), p->vpd.sn, p->vpd.ec);
+ snprintf(buf, sizeof(buf), "Chelsio %s %sNIC (rev %d), S/N:%s, E/C:%s",
+ p->vpd.id, is_offload(sc) ? "R" : "", p->rev, p->vpd.sn, p->vpd.ec);
device_set_desc_copy(sc->dev, buf);
}
@@ -1807,9 +2157,7 @@ cxgbe_init_synchronized(struct port_info *pi)
{
struct adapter *sc = pi->adapter;
struct ifnet *ifp = pi->ifp;
- int rc = 0, i;
- uint16_t *rss;
- struct sge_rxq *rxq;
+ int rc = 0;
ADAPTER_LOCK_ASSERT_NOTOWNED(sc);
@@ -1819,30 +2167,13 @@ cxgbe_init_synchronized(struct port_info *pi)
return (0); /* already running */
}
- if (sc->open_device_map == 0 && ((rc = first_port_up(sc)) != 0))
+ if (!(sc->flags & FULL_INIT_DONE) &&
+ ((rc = adapter_full_init(sc)) != 0))
return (rc); /* error message displayed already */
- /*
- * Allocate tx/rx/fl queues for this port.
- */
- rc = t4_setup_eth_queues(pi);
- if (rc != 0)
- goto done; /* error message displayed already */
-
- /*
- * Setup RSS for this port.
- */
- rss = malloc(pi->nrxq * sizeof (*rss), M_CXGBE, M_ZERO | M_WAITOK);
- for_each_rxq(pi, i, rxq) {
- rss[i] = rxq->iq.abs_id;
- }
- rc = -t4_config_rss_range(sc, sc->mbox, pi->viid, 0, pi->rss_size, rss,
- pi->nrxq);
- free(rss, M_CXGBE);
- if (rc != 0) {
- if_printf(ifp, "rss_config failed: %d\n", rc);
- goto done;
- }
+ if (!(pi->flags & PORT_INIT_DONE) &&
+ ((rc = port_full_init(pi)) != 0))
+ return (rc); /* error message displayed already */
PORT_LOCK(pi);
rc = update_mac_settings(pi, XGMAC_ALL);
@@ -1861,12 +2192,10 @@ cxgbe_init_synchronized(struct port_info *pi)
if_printf(ifp, "enable_vi failed: %d\n", rc);
goto done;
}
- pi->flags |= VI_ENABLED;
/* all ok */
setbit(&sc->open_device_map, pi->port_id);
ifp->if_drv_flags |= IFF_DRV_RUNNING;
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
callout_reset(&pi->tick, hz, cxgbe_tick, pi);
done:
@@ -1919,51 +2248,28 @@ cxgbe_uninit_synchronized(struct port_info *pi)
struct ifnet *ifp = pi->ifp;
int rc;
- /*
- * taskqueue_drain may cause a deadlock if the adapter lock is held.
- */
ADAPTER_LOCK_ASSERT_NOTOWNED(sc);
/*
- * Clear this port's bit from the open device map, and then drain
- * tasks and callouts.
- */
- clrbit(&sc->open_device_map, pi->port_id);
-
- PORT_LOCK(pi);
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
- callout_stop(&pi->tick);
- PORT_UNLOCK(pi);
- callout_drain(&pi->tick);
-
- /*
- * Stop and then free the queues' resources, including the queues
- * themselves.
- *
- * XXX: we could just stop the queues here (on ifconfig down) and free
- * them later (on port detach), but having up/down go through the entire
- * allocate/activate/deactivate/free sequence is a good way to find
- * leaks and bugs.
+ * Disable the VI so that all its data in either direction is discarded
+ * by the MPS. Leave everything else (the queues, interrupts, and 1Hz
+ * tick) intact as the TP can deliver negative advice or data that it's
+ * holding in its RAM (for an offloaded connection) even after the VI is
+ * disabled.
*/
- rc = t4_teardown_eth_queues(pi);
- if (rc != 0)
- if_printf(ifp, "teardown failed: %d\n", rc);
-
- if (pi->flags & VI_ENABLED) {
- rc = -t4_enable_vi(sc, sc->mbox, pi->viid, false, false);
- if (rc)
- if_printf(ifp, "disable_vi failed: %d\n", rc);
- else
- pi->flags &= ~VI_ENABLED;
+ rc = -t4_enable_vi(sc, sc->mbox, pi->viid, false, false);
+ if (rc) {
+ if_printf(ifp, "disable_vi failed: %d\n", rc);
+ return (rc);
}
+ clrbit(&sc->open_device_map, pi->port_id);
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+
pi->link_cfg.link_ok = 0;
pi->link_cfg.speed = 0;
t4_os_link_changed(sc, pi->port_id, 0);
- if (sc->open_device_map == 0)
- last_port_down(sc);
-
return (0);
}
@@ -1972,15 +2278,22 @@ cxgbe_uninit_synchronized(struct port_info *pi)
if (rc != 0) \
goto done; \
} while (0)
+
static int
-first_port_up(struct adapter *sc)
+adapter_full_init(struct adapter *sc)
{
int rc, i, rid, p, q;
char s[8];
struct irq *irq;
- struct sge_iq *intrq;
+ struct port_info *pi;
+ struct sge_rxq *rxq;
+#ifndef TCP_OFFLOAD_DISABLE
+ struct sge_ofld_rxq *ofld_rxq;
+#endif
ADAPTER_LOCK_ASSERT_NOTOWNED(sc);
+ KASSERT((sc->flags & FULL_INIT_DONE) == 0,
+ ("%s: FULL_INIT_DONE already", __func__));
/*
* queues that belong to the adapter (not any particular port).
@@ -1989,95 +2302,265 @@ first_port_up(struct adapter *sc)
if (rc != 0)
goto done;
+ for (i = 0; i < ARRAY_SIZE(sc->tq); i++) {
+ sc->tq[i] = taskqueue_create("t4 taskq", M_NOWAIT,
+ taskqueue_thread_enqueue, &sc->tq[i]);
+ if (sc->tq[i] == NULL) {
+ device_printf(sc->dev,
+ "failed to allocate task queue %d\n", i);
+ rc = ENOMEM;
+ goto done;
+ }
+ taskqueue_start_threads(&sc->tq[i], 1, PI_NET, "%s tq%d",
+ device_get_nameunit(sc->dev), i);
+ }
+
/*
* Setup interrupts.
*/
irq = &sc->irq[0];
rid = sc->intr_type == INTR_INTX ? 0 : 1;
if (sc->intr_count == 1) {
- KASSERT(sc->flags & INTR_SHARED,
- ("%s: single interrupt but not shared?", __func__));
+ KASSERT(!(sc->flags & INTR_DIRECT),
+ ("%s: single interrupt && INTR_DIRECT?", __func__));
T4_ALLOC_IRQ(sc, irq, rid, t4_intr_all, sc, "all");
} else {
- /* Multiple interrupts. The first one is always error intr */
+ /* Multiple interrupts. */
+ KASSERT(sc->intr_count >= T4_EXTRA_INTR + sc->params.nports,
+ ("%s: too few intr.", __func__));
+
+ /* The first one is always error intr */
T4_ALLOC_IRQ(sc, irq, rid, t4_intr_err, sc, "err");
irq++;
rid++;
- /* Firmware event queue normally has an interrupt of its own */
- if (sc->intr_count > T4_EXTRA_INTR) {
- T4_ALLOC_IRQ(sc, irq, rid, t4_intr_evt, &sc->sge.fwq,
- "evt");
- irq++;
- rid++;
- }
-
- intrq = &sc->sge.intrq[0];
- if (sc->flags & INTR_SHARED) {
+ /* The second one is always the firmware event queue */
+ T4_ALLOC_IRQ(sc, irq, rid, t4_intr_evt, &sc->sge.fwq, "evt");
+ irq++;
+ rid++;
- /* All ports share these interrupt queues */
+ /*
+ * Note that if INTR_DIRECT is not set then either the NIC rx
+ * queues or (exclusive or) the TOE rx queueus will be taking
+ * direct interrupts.
+ *
+ * There is no need to check for is_offload(sc) as nofldrxq
+ * will be 0 if offload is disabled.
+ */
+ for_each_port(sc, p) {
+ pi = sc->port[p];
- for (i = 0; i < NINTRQ(sc); i++) {
- snprintf(s, sizeof(s), "*.%d", i);
- T4_ALLOC_IRQ(sc, irq, rid, t4_intr, intrq, s);
+#ifndef TCP_OFFLOAD_DISABLE
+ /*
+ * Skip over the NIC queues if they aren't taking direct
+ * interrupts.
+ */
+ if (!(sc->flags & INTR_DIRECT) &&
+ pi->nofldrxq > pi->nrxq)
+ goto ofld_queues;
+#endif
+ rxq = &sc->sge.rxq[pi->first_rxq];
+ for (q = 0; q < pi->nrxq; q++, rxq++) {
+ snprintf(s, sizeof(s), "%d.%d", p, q);
+ T4_ALLOC_IRQ(sc, irq, rid, t4_intr, rxq, s);
irq++;
rid++;
- intrq++;
}
- } else {
-
- /* Each port has its own set of interrupt queues */
- for (p = 0; p < sc->params.nports; p++) {
- for (q = 0; q < sc->port[p]->nrxq; q++) {
- snprintf(s, sizeof(s), "%d.%d", p, q);
- T4_ALLOC_IRQ(sc, irq, rid, t4_intr,
- intrq, s);
- irq++;
- rid++;
- intrq++;
- }
+#ifndef TCP_OFFLOAD_DISABLE
+ /*
+ * Skip over the offload queues if they aren't taking
+ * direct interrupts.
+ */
+ if (!(sc->flags & INTR_DIRECT))
+ continue;
+ofld_queues:
+ ofld_rxq = &sc->sge.ofld_rxq[pi->first_ofld_rxq];
+ for (q = 0; q < pi->nofldrxq; q++, ofld_rxq++) {
+ snprintf(s, sizeof(s), "%d,%d", p, q);
+ T4_ALLOC_IRQ(sc, irq, rid, t4_intr, ofld_rxq, s);
+ irq++;
+ rid++;
}
+#endif
}
}
t4_intr_enable(sc);
sc->flags |= FULL_INIT_DONE;
-
done:
if (rc != 0)
- last_port_down(sc);
+ adapter_full_uninit(sc);
return (rc);
}
#undef T4_ALLOC_IRQ
-/*
- * Idempotent.
- */
static int
-last_port_down(struct adapter *sc)
+adapter_full_uninit(struct adapter *sc)
{
int i;
ADAPTER_LOCK_ASSERT_NOTOWNED(sc);
- t4_intr_disable(sc);
-
t4_teardown_adapter_queues(sc);
for (i = 0; i < sc->intr_count; i++)
t4_free_irq(sc, &sc->irq[i]);
+ for (i = 0; i < ARRAY_SIZE(sc->tq) && sc->tq[i]; i++) {
+ taskqueue_free(sc->tq[i]);
+ sc->tq[i] = NULL;
+ }
+
sc->flags &= ~FULL_INIT_DONE;
return (0);
}
static int
+port_full_init(struct port_info *pi)
+{
+ struct adapter *sc = pi->adapter;
+ struct ifnet *ifp = pi->ifp;
+ uint16_t *rss;
+ struct sge_rxq *rxq;
+ int rc, i;
+
+ ADAPTER_LOCK_ASSERT_NOTOWNED(sc);
+ KASSERT((pi->flags & PORT_INIT_DONE) == 0,
+ ("%s: PORT_INIT_DONE already", __func__));
+
+ sysctl_ctx_init(&pi->ctx);
+ pi->flags |= PORT_SYSCTL_CTX;
+
+ /*
+ * Allocate tx/rx/fl queues for this port.
+ */
+ rc = t4_setup_port_queues(pi);
+ if (rc != 0)
+ goto done; /* error message displayed already */
+
+ /*
+ * Setup RSS for this port.
+ */
+ rss = malloc(pi->nrxq * sizeof (*rss), M_CXGBE,
+ M_ZERO | M_WAITOK);
+ for_each_rxq(pi, i, rxq) {
+ rss[i] = rxq->iq.abs_id;
+ }
+ rc = -t4_config_rss_range(sc, sc->mbox, pi->viid, 0,
+ pi->rss_size, rss, pi->nrxq);
+ free(rss, M_CXGBE);
+ if (rc != 0) {
+ if_printf(ifp, "rss_config failed: %d\n", rc);
+ goto done;
+ }
+
+ pi->flags |= PORT_INIT_DONE;
+done:
+ if (rc != 0)
+ port_full_uninit(pi);
+
+ return (rc);
+}
+
+/*
+ * Idempotent.
+ */
+static int
+port_full_uninit(struct port_info *pi)
+{
+ struct adapter *sc = pi->adapter;
+ int i;
+ struct sge_rxq *rxq;
+ struct sge_txq *txq;
+#ifndef TCP_OFFLOAD_DISABLE
+ struct sge_ofld_rxq *ofld_rxq;
+ struct sge_wrq *ofld_txq;
+#endif
+
+ if (pi->flags & PORT_INIT_DONE) {
+
+ /* Need to quiesce queues. XXX: ctrl queues? */
+
+ for_each_txq(pi, i, txq) {
+ quiesce_eq(sc, &txq->eq);
+ }
+
+#ifndef TCP_OFFLOAD_DISABLE
+ for_each_ofld_txq(pi, i, ofld_txq) {
+ quiesce_eq(sc, &ofld_txq->eq);
+ }
+#endif
+
+ for_each_rxq(pi, i, rxq) {
+ quiesce_iq(sc, &rxq->iq);
+ quiesce_fl(sc, &rxq->fl);
+ }
+
+#ifndef TCP_OFFLOAD_DISABLE
+ for_each_ofld_rxq(pi, i, ofld_rxq) {
+ quiesce_iq(sc, &ofld_rxq->iq);
+ quiesce_fl(sc, &ofld_rxq->fl);
+ }
+#endif
+ }
+
+ t4_teardown_port_queues(pi);
+ pi->flags &= ~PORT_INIT_DONE;
+
+ return (0);
+}
+
+static void
+quiesce_eq(struct adapter *sc, struct sge_eq *eq)
+{
+ EQ_LOCK(eq);
+ eq->flags |= EQ_DOOMED;
+
+ /*
+ * Wait for the response to a credit flush if one's
+ * pending.
+ */
+ while (eq->flags & EQ_CRFLUSHED)
+ mtx_sleep(eq, &eq->eq_lock, 0, "crflush", 0);
+ EQ_UNLOCK(eq);
+
+ callout_drain(&eq->tx_callout); /* XXX: iffy */
+ pause("callout", 10); /* Still iffy */
+
+ taskqueue_drain(sc->tq[eq->tx_chan], &eq->tx_task);
+}
+
+static void
+quiesce_iq(struct adapter *sc, struct sge_iq *iq)
+{
+ (void) sc; /* unused */
+
+ /* Synchronize with the interrupt handler */
+ while (!atomic_cmpset_int(&iq->state, IQS_IDLE, IQS_DISABLED))
+ pause("iqfree", 1);
+}
+
+static void
+quiesce_fl(struct adapter *sc, struct sge_fl *fl)
+{
+ mtx_lock(&sc->sfl_lock);
+ FL_LOCK(fl);
+ fl->flags |= FL_DOOMED;
+ FL_UNLOCK(fl);
+ mtx_unlock(&sc->sfl_lock);
+
+ callout_drain(&sc->sfl_callout);
+ KASSERT((fl->flags & FL_STARVING) == 0,
+ ("%s: still starving", __func__));
+}
+
+static int
t4_alloc_irq(struct adapter *sc, struct irq *irq, int rid,
- iq_intr_handler_t *handler, void *arg, char *name)
+ driver_intr_t *handler, void *arg, char *name)
{
int rc;
@@ -2369,12 +2852,12 @@ cxgbe_tick(void *arg)
t4_get_port_stats(pi->adapter, pi->tx_chan, s);
- ifp->if_opackets = s->tx_frames;
- ifp->if_ipackets = s->rx_frames;
- ifp->if_obytes = s->tx_octets;
- ifp->if_ibytes = s->rx_octets;
- ifp->if_omcasts = s->tx_mcast_frames;
- ifp->if_imcasts = s->rx_mcast_frames;
+ ifp->if_opackets = s->tx_frames - s->tx_pause;
+ ifp->if_ipackets = s->rx_frames - s->rx_pause;
+ ifp->if_obytes = s->tx_octets - s->tx_pause * 64;
+ ifp->if_ibytes = s->rx_octets - s->rx_pause * 64;
+ ifp->if_omcasts = s->tx_mcast_frames - s->tx_pause;
+ ifp->if_imcasts = s->rx_mcast_frames - s->rx_pause;
ifp->if_iqdrops = s->rx_ovflow0 + s->rx_ovflow1 + s->rx_ovflow2 +
s->rx_ovflow3;
@@ -2392,15 +2875,58 @@ cxgbe_tick(void *arg)
}
static int
+cpl_not_handled(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
+{
+#ifdef INVARIANTS
+ panic("%s: opcode %02x on iq %p with payload %p",
+ __func__, rss->opcode, iq, m);
+#else
+ log(LOG_ERR, "%s: opcode %02x on iq %p with payload %p",
+ __func__, rss->opcode, iq, m);
+ m_freem(m);
+#endif
+ return (EDOOFUS);
+}
+
+int
+t4_register_cpl_handler(struct adapter *sc, int opcode, cpl_handler_t h)
+{
+ uintptr_t *loc, new;
+
+ if (opcode >= ARRAY_SIZE(sc->cpl_handler))
+ return (EINVAL);
+
+ new = h ? (uintptr_t)h : (uintptr_t)cpl_not_handled;
+ loc = (uintptr_t *) &sc->cpl_handler[opcode];
+ atomic_store_rel_ptr(loc, new);
+
+ return (0);
+}
+
+static int
t4_sysctls(struct adapter *sc)
{
struct sysctl_ctx_list *ctx;
struct sysctl_oid *oid;
- struct sysctl_oid_list *children;
+ struct sysctl_oid_list *children, *c0;
+ static char *caps[] = {
+ "\20\1PPP\2QFC\3DCBX", /* caps[0] linkcaps */
+ "\20\1NIC\2VM\3IDS\4UM\5UM_ISGL", /* caps[1] niccaps */
+ "\20\1TOE", /* caps[2] toecaps */
+ "\20\1RDDP\2RDMAC", /* caps[3] rdmacaps */
+ "\20\1INITIATOR_PDU\2TARGET_PDU" /* caps[4] iscsicaps */
+ "\3INITIATOR_CNXOFLD\4TARGET_CNXOFLD"
+ "\5INITIATOR_SSNOFLD\6TARGET_SSNOFLD",
+ "\20\1INITIATOR\2TARGET\3CTRL_OFLD" /* caps[5] fcoecaps */
+ };
ctx = device_get_sysctl_ctx(sc->dev);
+
+ /*
+ * dev.t4nex.X.
+ */
oid = device_get_sysctl_tree(sc->dev);
- children = SYSCTL_CHILDREN(oid);
+ c0 = children = SYSCTL_CHILDREN(oid);
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "nports", CTLFLAG_RD,
&sc->params.nports, 0, "# of ports");
@@ -2411,23 +2937,146 @@ t4_sysctls(struct adapter *sc)
SYSCTL_ADD_STRING(ctx, children, OID_AUTO, "firmware_version",
CTLFLAG_RD, &sc->fw_version, 0, "firmware version");
- SYSCTL_ADD_INT(ctx, children, OID_AUTO, "TOE", CTLFLAG_RD,
- &sc->params.offload, 0, "hardware is capable of TCP offload");
+ SYSCTL_ADD_STRING(ctx, children, OID_AUTO, "cf",
+ CTLFLAG_RD, &t4_cfg_file, 0, "configuration file");
+
+ SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cfcsum", CTLFLAG_RD,
+ &sc->cfcsum, 0, "config file checksum");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "linkcaps",
+ CTLTYPE_STRING | CTLFLAG_RD, caps[0], sc->linkcaps,
+ sysctl_bitfield, "A", "available link capabilities");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "niccaps",
+ CTLTYPE_STRING | CTLFLAG_RD, caps[1], sc->niccaps,
+ sysctl_bitfield, "A", "available NIC capabilities");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "toecaps",
+ CTLTYPE_STRING | CTLFLAG_RD, caps[2], sc->toecaps,
+ sysctl_bitfield, "A", "available TCP offload capabilities");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rdmacaps",
+ CTLTYPE_STRING | CTLFLAG_RD, caps[3], sc->rdmacaps,
+ sysctl_bitfield, "A", "available RDMA capabilities");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "iscsicaps",
+ CTLTYPE_STRING | CTLFLAG_RD, caps[4], sc->iscsicaps,
+ sysctl_bitfield, "A", "available iSCSI capabilities");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "fcoecaps",
+ CTLTYPE_STRING | CTLFLAG_RD, caps[5], sc->fcoecaps,
+ sysctl_bitfield, "A", "available FCoE capabilities");
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "core_clock", CTLFLAG_RD,
&sc->params.vpd.cclk, 0, "core clock frequency (in KHz)");
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "holdoff_timers",
- CTLTYPE_STRING | CTLFLAG_RD, &intr_timer, sizeof(intr_timer),
- sysctl_int_array, "A", "interrupt holdoff timer values (us)");
+ CTLTYPE_STRING | CTLFLAG_RD, sc->sge.timer_val,
+ sizeof(sc->sge.timer_val), sysctl_int_array, "A",
+ "interrupt holdoff timer values (us)");
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "holdoff_pkt_counts",
- CTLTYPE_STRING | CTLFLAG_RD, &intr_pktcount, sizeof(intr_pktcount),
- sysctl_int_array, "A", "interrupt holdoff packet counter values");
+ CTLTYPE_STRING | CTLFLAG_RD, sc->sge.counter_val,
+ sizeof(sc->sge.counter_val), sysctl_int_array, "A",
+ "interrupt holdoff packet counter values");
+
+ /*
+ * dev.t4nex.X.misc. Marked CTLFLAG_SKIP to avoid information overload.
+ */
+ oid = SYSCTL_ADD_NODE(ctx, c0, OID_AUTO, "misc",
+ CTLFLAG_RD | CTLFLAG_SKIP, NULL,
+ "logs and miscellaneous information");
+ children = SYSCTL_CHILDREN(oid);
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cctrl",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_cctrl, "A", "congestion control");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cpl_stats",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_cpl_stats, "A", "CPL statistics");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "ddp_stats",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_ddp_stats, "A", "DDP statistics");
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "devlog",
CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
- sysctl_devlog, "A", "device log");
+ sysctl_devlog, "A", "firmware's device log");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "fcoe_stats",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_fcoe_stats, "A", "FCoE statistics");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "hw_sched",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_hw_sched, "A", "hardware scheduler ");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "l2t",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_l2t, "A", "hardware L2 table");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "lb_stats",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_lb_stats, "A", "loopback statistics");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "meminfo",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_meminfo, "A", "memory regions");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "path_mtus",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_path_mtus, "A", "path MTUs");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pm_stats",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_pm_stats, "A", "PM statistics");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rdma_stats",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_rdma_stats, "A", "RDMA statistics");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tcp_stats",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_tcp_stats, "A", "TCP statistics");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tids",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_tids, "A", "TID information");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tp_err_stats",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_tp_err_stats, "A", "TP error statistics");
+
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tx_rate",
+ CTLTYPE_STRING | CTLFLAG_RD, sc, 0,
+ sysctl_tx_rate, "A", "Tx rate");
+
+#ifndef TCP_OFFLOAD_DISABLE
+ if (is_offload(sc)) {
+ /*
+ * dev.t4nex.X.toe.
+ */
+ oid = SYSCTL_ADD_NODE(ctx, c0, OID_AUTO, "toe", CTLFLAG_RD,
+ NULL, "TOE parameters");
+ children = SYSCTL_CHILDREN(oid);
+
+ sc->tt.sndbuf = 256 * 1024;
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "sndbuf", CTLFLAG_RW,
+ &sc->tt.sndbuf, 0, "max hardware send buffer size");
+
+ sc->tt.ddp = 0;
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "ddp", CTLFLAG_RW,
+ &sc->tt.ddp, 0, "DDP allowed");
+ sc->tt.indsz = M_INDICATESIZE;
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "indsz", CTLFLAG_RW,
+ &sc->tt.indsz, 0, "DDP max indicate size allowed");
+ sc->tt.ddp_thres = 3*4096;
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "ddp_thres", CTLFLAG_RW,
+ &sc->tt.ddp_thres, 0, "DDP threshold");
+ }
+#endif
+
return (0);
}
@@ -2456,6 +3105,23 @@ cxgbe_sysctls(struct port_info *pi)
SYSCTL_ADD_INT(ctx, children, OID_AUTO, "first_txq", CTLFLAG_RD,
&pi->first_txq, 0, "index of first tx queue");
+#ifndef TCP_OFFLOAD_DISABLE
+ if (is_offload(pi->adapter)) {
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "nofldrxq", CTLFLAG_RD,
+ &pi->nofldrxq, 0,
+ "# of rx queues for offloaded TCP connections");
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "nofldtxq", CTLFLAG_RD,
+ &pi->nofldtxq, 0,
+ "# of tx queues for offloaded TCP connections");
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "first_ofld_rxq",
+ CTLFLAG_RD, &pi->first_ofld_rxq, 0,
+ "index of first TOE rx queue");
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "first_ofld_txq",
+ CTLFLAG_RD, &pi->first_ofld_txq, 0,
+ "index of first TOE tx queue");
+ }
+#endif
+
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "holdoff_tmr_idx",
CTLTYPE_INT | CTLFLAG_RW, pi, 0, sysctl_holdoff_tmr_idx, "I",
"holdoff timer index");
@@ -2646,11 +3312,31 @@ sysctl_int_array(SYSCTL_HANDLER_ARGS)
}
static int
+sysctl_bitfield(SYSCTL_HANDLER_ARGS)
+{
+ int rc;
+ struct sbuf *sb;
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return(rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 128, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ sbuf_printf(sb, "%b", (int)arg2, (char *)arg1);
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
sysctl_holdoff_tmr_idx(SYSCTL_HANDLER_ARGS)
{
struct port_info *pi = arg1;
struct adapter *sc = pi->adapter;
- struct sge_rxq *rxq;
int idx, rc, i;
idx = pi->tmr_idx;
@@ -2665,9 +3351,16 @@ sysctl_holdoff_tmr_idx(SYSCTL_HANDLER_ARGS)
ADAPTER_LOCK(sc);
rc = IS_DOOMED(pi) ? ENXIO : (IS_BUSY(sc) ? EBUSY : 0);
if (rc == 0) {
+ struct sge_rxq *rxq;
+ uint8_t v;
+
+ v = V_QINTR_TIMER_IDX(idx) | V_QINTR_CNT_EN(pi->pktc_idx != -1);
for_each_rxq(pi, i, rxq) {
- rxq->iq.intr_params = V_QINTR_TIMER_IDX(idx) |
- V_QINTR_CNT_EN(pi->pktc_idx != -1);
+#ifdef atomic_store_rel_8
+ atomic_store_rel_8(&rxq->iq.intr_params, v);
+#else
+ rxq->iq.intr_params = v;
+#endif
}
pi->tmr_idx = idx;
}
@@ -2694,8 +3387,8 @@ sysctl_holdoff_pktc_idx(SYSCTL_HANDLER_ARGS)
ADAPTER_LOCK(sc);
rc = IS_DOOMED(pi) ? ENXIO : (IS_BUSY(sc) ? EBUSY : 0);
- if (rc == 0 && pi->ifp->if_drv_flags & IFF_DRV_RUNNING)
- rc = EBUSY; /* can be changed only when port is down */
+ if (rc == 0 && pi->flags & PORT_INIT_DONE)
+ rc = EBUSY; /* cannot be changed once the queues are created */
if (rc == 0)
pi->pktc_idx = idx;
@@ -2722,8 +3415,8 @@ sysctl_qsize_rxq(SYSCTL_HANDLER_ARGS)
ADAPTER_LOCK(sc);
rc = IS_DOOMED(pi) ? ENXIO : (IS_BUSY(sc) ? EBUSY : 0);
- if (rc == 0 && pi->ifp->if_drv_flags & IFF_DRV_RUNNING)
- rc = EBUSY; /* can be changed only when port is down */
+ if (rc == 0 && pi->flags & PORT_INIT_DONE)
+ rc = EBUSY; /* cannot be changed once the queues are created */
if (rc == 0)
pi->qsize_rxq = qsize;
@@ -2750,8 +3443,8 @@ sysctl_qsize_txq(SYSCTL_HANDLER_ARGS)
ADAPTER_LOCK(sc);
rc = IS_DOOMED(pi) ? ENXIO : (IS_BUSY(sc) ? EBUSY : 0);
- if (rc == 0 && pi->ifp->if_drv_flags & IFF_DRV_RUNNING)
- rc = EBUSY; /* can be changed only when port is down */
+ if (rc == 0 && pi->flags & PORT_INIT_DONE)
+ rc = EBUSY; /* cannot be changed once the queues are created */
if (rc == 0)
pi->qsize_txq = qsize;
@@ -2772,6 +3465,103 @@ sysctl_handle_t4_reg64(SYSCTL_HANDLER_ARGS)
return (sysctl_handle_64(oidp, &val, 0, req));
}
+static int
+sysctl_cctrl(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc, i;
+ uint16_t incr[NMTUS][NCCTRL_WIN];
+ static const char *dec_fac[] = {
+ "0.5", "0.5625", "0.625", "0.6875", "0.75", "0.8125", "0.875",
+ "0.9375"
+ };
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 4096, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_read_cong_tbl(sc, incr);
+
+ for (i = 0; i < NCCTRL_WIN; ++i) {
+ sbuf_printf(sb, "%2d: %4u %4u %4u %4u %4u %4u %4u %4u\n", i,
+ incr[0][i], incr[1][i], incr[2][i], incr[3][i], incr[4][i],
+ incr[5][i], incr[6][i], incr[7][i]);
+ sbuf_printf(sb, "%8u %4u %4u %4u %4u %4u %4u %4u %5u %s\n",
+ incr[8][i], incr[9][i], incr[10][i], incr[11][i],
+ incr[12][i], incr[13][i], incr[14][i], incr[15][i],
+ sc->params.a_wnd[i], dec_fac[sc->params.b_wnd[i]]);
+ }
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_cpl_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc;
+ struct tp_cpl_stats stats;
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_tp_get_cpl_stats(sc, &stats);
+
+ sbuf_printf(sb, " channel 0 channel 1 channel 2 "
+ "channel 3\n");
+ sbuf_printf(sb, "CPL requests: %10u %10u %10u %10u\n",
+ stats.req[0], stats.req[1], stats.req[2], stats.req[3]);
+ sbuf_printf(sb, "CPL responses: %10u %10u %10u %10u",
+ stats.rsp[0], stats.rsp[1], stats.rsp[2], stats.rsp[3]);
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_ddp_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc;
+ struct tp_usm_stats stats;
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return(rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_get_usm_stats(sc, &stats);
+
+ sbuf_printf(sb, "Frames: %u\n", stats.frames);
+ sbuf_printf(sb, "Octets: %ju\n", stats.octets);
+ sbuf_printf(sb, "Drops: %u", stats.drops);
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
const char *devlog_level_strings[] = {
[FW_DEVLOG_LEVEL_EMERG] = "EMERG",
[FW_DEVLOG_LEVEL_CRIT] = "CRIT",
@@ -2856,7 +3646,11 @@ sysctl_devlog(SYSCTL_HANDLER_ARGS)
goto done;
sb = sbuf_new_for_sysctl(NULL, NULL, 4096, req);
- sbuf_printf(sb, "\n%10s %15s %8s %8s %s\n",
+ if (sb == NULL) {
+ rc = ENOMEM;
+ goto done;
+ }
+ sbuf_printf(sb, "%10s %15s %8s %8s %s\n",
"Seq#", "Tstamp", "Level", "Facility", "Message");
i = first;
@@ -2886,6 +3680,624 @@ done:
return (rc);
}
+static int
+sysctl_fcoe_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc;
+ struct tp_fcoe_stats stats[4];
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_get_fcoe_stats(sc, 0, &stats[0]);
+ t4_get_fcoe_stats(sc, 1, &stats[1]);
+ t4_get_fcoe_stats(sc, 2, &stats[2]);
+ t4_get_fcoe_stats(sc, 3, &stats[3]);
+
+ sbuf_printf(sb, " channel 0 channel 1 "
+ "channel 2 channel 3\n");
+ sbuf_printf(sb, "octetsDDP: %16ju %16ju %16ju %16ju\n",
+ stats[0].octetsDDP, stats[1].octetsDDP, stats[2].octetsDDP,
+ stats[3].octetsDDP);
+ sbuf_printf(sb, "framesDDP: %16u %16u %16u %16u\n", stats[0].framesDDP,
+ stats[1].framesDDP, stats[2].framesDDP, stats[3].framesDDP);
+ sbuf_printf(sb, "framesDrop: %16u %16u %16u %16u",
+ stats[0].framesDrop, stats[1].framesDrop, stats[2].framesDrop,
+ stats[3].framesDrop);
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_hw_sched(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc, i;
+ unsigned int map, kbps, ipg, mode;
+ unsigned int pace_tab[NTX_SCHED];
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ map = t4_read_reg(sc, A_TP_TX_MOD_QUEUE_REQ_MAP);
+ mode = G_TIMERMODE(t4_read_reg(sc, A_TP_MOD_CONFIG));
+ t4_read_pace_tbl(sc, pace_tab);
+
+ sbuf_printf(sb, "Scheduler Mode Channel Rate (Kbps) "
+ "Class IPG (0.1 ns) Flow IPG (us)");
+
+ for (i = 0; i < NTX_SCHED; ++i, map >>= 2) {
+ t4_get_tx_sched(sc, i, &kbps, &ipg);
+ sbuf_printf(sb, "\n %u %-5s %u ", i,
+ (mode & (1 << i)) ? "flow" : "class", map & 3);
+ if (kbps)
+ sbuf_printf(sb, "%9u ", kbps);
+ else
+ sbuf_printf(sb, " disabled ");
+
+ if (ipg)
+ sbuf_printf(sb, "%13u ", ipg);
+ else
+ sbuf_printf(sb, " disabled ");
+
+ if (pace_tab[i])
+ sbuf_printf(sb, "%10u", pace_tab[i]);
+ else
+ sbuf_printf(sb, " disabled");
+ }
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_lb_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc, i, j;
+ uint64_t *p0, *p1;
+ struct lb_port_stats s[2];
+ static const char *stat_name[] = {
+ "OctetsOK:", "FramesOK:", "BcastFrames:", "McastFrames:",
+ "UcastFrames:", "ErrorFrames:", "Frames64:", "Frames65To127:",
+ "Frames128To255:", "Frames256To511:", "Frames512To1023:",
+ "Frames1024To1518:", "Frames1519ToMax:", "FramesDropped:",
+ "BG0FramesDropped:", "BG1FramesDropped:", "BG2FramesDropped:",
+ "BG3FramesDropped:", "BG0FramesTrunc:", "BG1FramesTrunc:",
+ "BG2FramesTrunc:", "BG3FramesTrunc:"
+ };
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 4096, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ memset(s, 0, sizeof(s));
+
+ for (i = 0; i < 4; i += 2) {
+ t4_get_lb_stats(sc, i, &s[0]);
+ t4_get_lb_stats(sc, i + 1, &s[1]);
+
+ p0 = &s[0].octets;
+ p1 = &s[1].octets;
+ sbuf_printf(sb, "%s Loopback %u"
+ " Loopback %u", i == 0 ? "" : "\n", i, i + 1);
+
+ for (j = 0; j < ARRAY_SIZE(stat_name); j++)
+ sbuf_printf(sb, "\n%-17s %20ju %20ju", stat_name[j],
+ *p0++, *p1++);
+ }
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+struct mem_desc {
+ unsigned int base;
+ unsigned int limit;
+ unsigned int idx;
+};
+
+static int
+mem_desc_cmp(const void *a, const void *b)
+{
+ return ((const struct mem_desc *)a)->base -
+ ((const struct mem_desc *)b)->base;
+}
+
+static void
+mem_region_show(struct sbuf *sb, const char *name, unsigned int from,
+ unsigned int to)
+{
+ unsigned int size;
+
+ size = to - from + 1;
+ if (size == 0)
+ return;
+
+ /* XXX: need humanize_number(3) in libkern for a more readable 'size' */
+ sbuf_printf(sb, "%-15s %#x-%#x [%u]\n", name, from, to, size);
+}
+
+static int
+sysctl_meminfo(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc, i, n;
+ uint32_t lo, hi;
+ static const char *memory[] = { "EDC0:", "EDC1:", "MC:" };
+ static const char *region[] = {
+ "DBQ contexts:", "IMSG contexts:", "FLM cache:", "TCBs:",
+ "Pstructs:", "Timers:", "Rx FL:", "Tx FL:", "Pstruct FL:",
+ "Tx payload:", "Rx payload:", "LE hash:", "iSCSI region:",
+ "TDDP region:", "TPT region:", "STAG region:", "RQ region:",
+ "RQUDP region:", "PBL region:", "TXPBL region:", "ULPRX state:",
+ "ULPTX state:", "On-chip queues:"
+ };
+ struct mem_desc avail[3];
+ struct mem_desc mem[ARRAY_SIZE(region) + 3]; /* up to 3 holes */
+ struct mem_desc *md = mem;
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 4096, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ for (i = 0; i < ARRAY_SIZE(mem); i++) {
+ mem[i].limit = 0;
+ mem[i].idx = i;
+ }
+
+ /* Find and sort the populated memory ranges */
+ i = 0;
+ lo = t4_read_reg(sc, A_MA_TARGET_MEM_ENABLE);
+ if (lo & F_EDRAM0_ENABLE) {
+ hi = t4_read_reg(sc, A_MA_EDRAM0_BAR);
+ avail[i].base = G_EDRAM0_BASE(hi) << 20;
+ avail[i].limit = avail[i].base + (G_EDRAM0_SIZE(hi) << 20);
+ avail[i].idx = 0;
+ i++;
+ }
+ if (lo & F_EDRAM1_ENABLE) {
+ hi = t4_read_reg(sc, A_MA_EDRAM1_BAR);
+ avail[i].base = G_EDRAM1_BASE(hi) << 20;
+ avail[i].limit = avail[i].base + (G_EDRAM1_SIZE(hi) << 20);
+ avail[i].idx = 1;
+ i++;
+ }
+ if (lo & F_EXT_MEM_ENABLE) {
+ hi = t4_read_reg(sc, A_MA_EXT_MEMORY_BAR);
+ avail[i].base = G_EXT_MEM_BASE(hi) << 20;
+ avail[i].limit = avail[i].base + (G_EXT_MEM_SIZE(hi) << 20);
+ avail[i].idx = 2;
+ i++;
+ }
+ if (!i) /* no memory available */
+ return 0;
+ qsort(avail, i, sizeof(struct mem_desc), mem_desc_cmp);
+
+ (md++)->base = t4_read_reg(sc, A_SGE_DBQ_CTXT_BADDR);
+ (md++)->base = t4_read_reg(sc, A_SGE_IMSG_CTXT_BADDR);
+ (md++)->base = t4_read_reg(sc, A_SGE_FLM_CACHE_BADDR);
+ (md++)->base = t4_read_reg(sc, A_TP_CMM_TCB_BASE);
+ (md++)->base = t4_read_reg(sc, A_TP_CMM_MM_BASE);
+ (md++)->base = t4_read_reg(sc, A_TP_CMM_TIMER_BASE);
+ (md++)->base = t4_read_reg(sc, A_TP_CMM_MM_RX_FLST_BASE);
+ (md++)->base = t4_read_reg(sc, A_TP_CMM_MM_TX_FLST_BASE);
+ (md++)->base = t4_read_reg(sc, A_TP_CMM_MM_PS_FLST_BASE);
+
+ /* the next few have explicit upper bounds */
+ md->base = t4_read_reg(sc, A_TP_PMM_TX_BASE);
+ md->limit = md->base - 1 +
+ t4_read_reg(sc, A_TP_PMM_TX_PAGE_SIZE) *
+ G_PMTXMAXPAGE(t4_read_reg(sc, A_TP_PMM_TX_MAX_PAGE));
+ md++;
+
+ md->base = t4_read_reg(sc, A_TP_PMM_RX_BASE);
+ md->limit = md->base - 1 +
+ t4_read_reg(sc, A_TP_PMM_RX_PAGE_SIZE) *
+ G_PMRXMAXPAGE(t4_read_reg(sc, A_TP_PMM_RX_MAX_PAGE));
+ md++;
+
+ if (t4_read_reg(sc, A_LE_DB_CONFIG) & F_HASHEN) {
+ hi = t4_read_reg(sc, A_LE_DB_TID_HASHBASE) / 4;
+ md->base = t4_read_reg(sc, A_LE_DB_HASH_TID_BASE);
+ md->limit = (sc->tids.ntids - hi) * 16 + md->base - 1;
+ } else {
+ md->base = 0;
+ md->idx = ARRAY_SIZE(region); /* hide it */
+ }
+ md++;
+
+#define ulp_region(reg) \
+ md->base = t4_read_reg(sc, A_ULP_ ## reg ## _LLIMIT);\
+ (md++)->limit = t4_read_reg(sc, A_ULP_ ## reg ## _ULIMIT)
+
+ ulp_region(RX_ISCSI);
+ ulp_region(RX_TDDP);
+ ulp_region(TX_TPT);
+ ulp_region(RX_STAG);
+ ulp_region(RX_RQ);
+ ulp_region(RX_RQUDP);
+ ulp_region(RX_PBL);
+ ulp_region(TX_PBL);
+#undef ulp_region
+
+ md->base = t4_read_reg(sc, A_ULP_RX_CTX_BASE);
+ md->limit = md->base + sc->tids.ntids - 1;
+ md++;
+ md->base = t4_read_reg(sc, A_ULP_TX_ERR_TABLE_BASE);
+ md->limit = md->base + sc->tids.ntids - 1;
+ md++;
+
+ md->base = sc->vres.ocq.start;
+ if (sc->vres.ocq.size)
+ md->limit = md->base + sc->vres.ocq.size - 1;
+ else
+ md->idx = ARRAY_SIZE(region); /* hide it */
+ md++;
+
+ /* add any address-space holes, there can be up to 3 */
+ for (n = 0; n < i - 1; n++)
+ if (avail[n].limit < avail[n + 1].base)
+ (md++)->base = avail[n].limit;
+ if (avail[n].limit)
+ (md++)->base = avail[n].limit;
+
+ n = md - mem;
+ qsort(mem, n, sizeof(struct mem_desc), mem_desc_cmp);
+
+ for (lo = 0; lo < i; lo++)
+ mem_region_show(sb, memory[avail[lo].idx], avail[lo].base,
+ avail[lo].limit - 1);
+
+ sbuf_printf(sb, "\n");
+ for (i = 0; i < n; i++) {
+ if (mem[i].idx >= ARRAY_SIZE(region))
+ continue; /* skip holes */
+ if (!mem[i].limit)
+ mem[i].limit = i < n - 1 ? mem[i + 1].base - 1 : ~0;
+ mem_region_show(sb, region[mem[i].idx], mem[i].base,
+ mem[i].limit);
+ }
+
+ sbuf_printf(sb, "\n");
+ lo = t4_read_reg(sc, A_CIM_SDRAM_BASE_ADDR);
+ hi = t4_read_reg(sc, A_CIM_SDRAM_ADDR_SIZE) + lo - 1;
+ mem_region_show(sb, "uP RAM:", lo, hi);
+
+ lo = t4_read_reg(sc, A_CIM_EXTMEM2_BASE_ADDR);
+ hi = t4_read_reg(sc, A_CIM_EXTMEM2_ADDR_SIZE) + lo - 1;
+ mem_region_show(sb, "uP Extmem2:", lo, hi);
+
+ lo = t4_read_reg(sc, A_TP_PMM_RX_MAX_PAGE);
+ sbuf_printf(sb, "\n%u Rx pages of size %uKiB for %u channels\n",
+ G_PMRXMAXPAGE(lo),
+ t4_read_reg(sc, A_TP_PMM_RX_PAGE_SIZE) >> 10,
+ (lo & F_PMRXNUMCHN) ? 2 : 1);
+
+ lo = t4_read_reg(sc, A_TP_PMM_TX_MAX_PAGE);
+ hi = t4_read_reg(sc, A_TP_PMM_TX_PAGE_SIZE);
+ sbuf_printf(sb, "%u Tx pages of size %u%ciB for %u channels\n",
+ G_PMTXMAXPAGE(lo),
+ hi >= (1 << 20) ? (hi >> 20) : (hi >> 10),
+ hi >= (1 << 20) ? 'M' : 'K', 1 << G_PMTXNUMCHN(lo));
+ sbuf_printf(sb, "%u p-structs\n",
+ t4_read_reg(sc, A_TP_CMM_MM_MAX_PSTRUCT));
+
+ for (i = 0; i < 4; i++) {
+ lo = t4_read_reg(sc, A_MPS_RX_PG_RSV0 + i * 4);
+ sbuf_printf(sb, "\nPort %d using %u pages out of %u allocated",
+ i, G_USED(lo), G_ALLOC(lo));
+ }
+ for (i = 0; i < 4; i++) {
+ lo = t4_read_reg(sc, A_MPS_RX_PG_RSV4 + i * 4);
+ sbuf_printf(sb,
+ "\nLoopback %d using %u pages out of %u allocated",
+ i, G_USED(lo), G_ALLOC(lo));
+ }
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_path_mtus(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc;
+ uint16_t mtus[NMTUS];
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_read_mtu_tbl(sc, mtus, NULL);
+
+ sbuf_printf(sb, "%u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u",
+ mtus[0], mtus[1], mtus[2], mtus[3], mtus[4], mtus[5], mtus[6],
+ mtus[7], mtus[8], mtus[9], mtus[10], mtus[11], mtus[12], mtus[13],
+ mtus[14], mtus[15]);
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_pm_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc, i;
+ uint32_t tx_cnt[PM_NSTATS], rx_cnt[PM_NSTATS];
+ uint64_t tx_cyc[PM_NSTATS], rx_cyc[PM_NSTATS];
+ static const char *pm_stats[] = {
+ "Read:", "Write bypass:", "Write mem:", "Flush:", "FIFO wait:"
+ };
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_pmtx_get_stats(sc, tx_cnt, tx_cyc);
+ t4_pmrx_get_stats(sc, rx_cnt, rx_cyc);
+
+ sbuf_printf(sb, " Tx count Tx cycles "
+ "Rx count Rx cycles");
+ for (i = 0; i < PM_NSTATS; i++)
+ sbuf_printf(sb, "\n%-13s %10u %20ju %10u %20ju",
+ pm_stats[i], tx_cnt[i], tx_cyc[i], rx_cnt[i], rx_cyc[i]);
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_rdma_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc;
+ struct tp_rdma_stats stats;
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_tp_get_rdma_stats(sc, &stats);
+ sbuf_printf(sb, "NoRQEModDefferals: %u\n", stats.rqe_dfr_mod);
+ sbuf_printf(sb, "NoRQEPktDefferals: %u", stats.rqe_dfr_pkt);
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_tcp_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc;
+ struct tp_tcp_stats v4, v6;
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_tp_get_tcp_stats(sc, &v4, &v6);
+ sbuf_printf(sb,
+ " IP IPv6\n");
+ sbuf_printf(sb, "OutRsts: %20u %20u\n",
+ v4.tcpOutRsts, v6.tcpOutRsts);
+ sbuf_printf(sb, "InSegs: %20ju %20ju\n",
+ v4.tcpInSegs, v6.tcpInSegs);
+ sbuf_printf(sb, "OutSegs: %20ju %20ju\n",
+ v4.tcpOutSegs, v6.tcpOutSegs);
+ sbuf_printf(sb, "RetransSegs: %20ju %20ju",
+ v4.tcpRetransSegs, v6.tcpRetransSegs);
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_tids(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc;
+ struct tid_info *t = &sc->tids;
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ if (t->natids) {
+ sbuf_printf(sb, "ATID range: 0-%u, in use: %u\n", t->natids - 1,
+ t->atids_in_use);
+ }
+
+ if (t->ntids) {
+ if (t4_read_reg(sc, A_LE_DB_CONFIG) & F_HASHEN) {
+ uint32_t b = t4_read_reg(sc, A_LE_DB_SERVER_INDEX) / 4;
+
+ if (b) {
+ sbuf_printf(sb, "TID range: 0-%u, %u-%u", b - 1,
+ t4_read_reg(sc, A_LE_DB_TID_HASHBASE) / 4,
+ t->ntids - 1);
+ } else {
+ sbuf_printf(sb, "TID range: %u-%u",
+ t4_read_reg(sc, A_LE_DB_TID_HASHBASE) / 4,
+ t->ntids - 1);
+ }
+ } else
+ sbuf_printf(sb, "TID range: 0-%u", t->ntids - 1);
+ sbuf_printf(sb, ", in use: %u\n",
+ atomic_load_acq_int(&t->tids_in_use));
+ }
+
+ if (t->nstids) {
+ sbuf_printf(sb, "STID range: %u-%u, in use: %u\n", t->stid_base,
+ t->stid_base + t->nstids - 1, t->stids_in_use);
+ }
+
+ if (t->nftids) {
+ sbuf_printf(sb, "FTID range: %u-%u\n", t->ftid_base,
+ t->ftid_base + t->nftids - 1);
+ }
+
+ sbuf_printf(sb, "HW TID usage: %u IP users, %u IPv6 users",
+ t4_read_reg(sc, A_LE_DB_ACT_CNT_IPV4),
+ t4_read_reg(sc, A_LE_DB_ACT_CNT_IPV6));
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_tp_err_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc;
+ struct tp_err_stats stats;
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_tp_get_err_stats(sc, &stats);
+
+ sbuf_printf(sb, " channel 0 channel 1 channel 2 "
+ "channel 3\n");
+ sbuf_printf(sb, "macInErrs: %10u %10u %10u %10u\n",
+ stats.macInErrs[0], stats.macInErrs[1], stats.macInErrs[2],
+ stats.macInErrs[3]);
+ sbuf_printf(sb, "hdrInErrs: %10u %10u %10u %10u\n",
+ stats.hdrInErrs[0], stats.hdrInErrs[1], stats.hdrInErrs[2],
+ stats.hdrInErrs[3]);
+ sbuf_printf(sb, "tcpInErrs: %10u %10u %10u %10u\n",
+ stats.tcpInErrs[0], stats.tcpInErrs[1], stats.tcpInErrs[2],
+ stats.tcpInErrs[3]);
+ sbuf_printf(sb, "tcp6InErrs: %10u %10u %10u %10u\n",
+ stats.tcp6InErrs[0], stats.tcp6InErrs[1], stats.tcp6InErrs[2],
+ stats.tcp6InErrs[3]);
+ sbuf_printf(sb, "tnlCongDrops: %10u %10u %10u %10u\n",
+ stats.tnlCongDrops[0], stats.tnlCongDrops[1], stats.tnlCongDrops[2],
+ stats.tnlCongDrops[3]);
+ sbuf_printf(sb, "tnlTxDrops: %10u %10u %10u %10u\n",
+ stats.tnlTxDrops[0], stats.tnlTxDrops[1], stats.tnlTxDrops[2],
+ stats.tnlTxDrops[3]);
+ sbuf_printf(sb, "ofldVlanDrops: %10u %10u %10u %10u\n",
+ stats.ofldVlanDrops[0], stats.ofldVlanDrops[1],
+ stats.ofldVlanDrops[2], stats.ofldVlanDrops[3]);
+ sbuf_printf(sb, "ofldChanDrops: %10u %10u %10u %10u\n\n",
+ stats.ofldChanDrops[0], stats.ofldChanDrops[1],
+ stats.ofldChanDrops[2], stats.ofldChanDrops[3]);
+ sbuf_printf(sb, "ofldNoNeigh: %u\nofldCongDefer: %u",
+ stats.ofldNoNeigh, stats.ofldCongDefer);
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
+static int
+sysctl_tx_rate(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ struct sbuf *sb;
+ int rc;
+ u64 nrate[NCHAN], orate[NCHAN];
+
+ rc = sysctl_wire_old_buffer(req, 0);
+ if (rc != 0)
+ return (rc);
+
+ sb = sbuf_new_for_sysctl(NULL, NULL, 256, req);
+ if (sb == NULL)
+ return (ENOMEM);
+
+ t4_get_chan_txrate(sc, nrate, orate);
+ sbuf_printf(sb, " channel 0 channel 1 channel 2 "
+ "channel 3\n");
+ sbuf_printf(sb, "NIC B/s: %10ju %10ju %10ju %10ju\n",
+ nrate[0], nrate[1], nrate[2], nrate[3]);
+ sbuf_printf(sb, "Offload B/s: %10ju %10ju %10ju %10ju",
+ orate[0], orate[1], orate[2], orate[3]);
+
+ rc = sbuf_finish(sb);
+ sbuf_delete(sb);
+
+ return (rc);
+}
+
static inline void
txq_start(struct ifnet *ifp, struct sge_txq *txq)
{
@@ -2901,17 +4313,57 @@ txq_start(struct ifnet *ifp, struct sge_txq *txq)
}
void
-cxgbe_txq_start(void *arg, int count)
+t4_tx_callout(void *arg)
{
- struct sge_txq *txq = arg;
+ struct sge_eq *eq = arg;
+ struct adapter *sc;
+
+ if (EQ_TRYLOCK(eq) == 0)
+ goto reschedule;
+
+ if (eq->flags & EQ_STALLED && !can_resume_tx(eq)) {
+ EQ_UNLOCK(eq);
+reschedule:
+ if (__predict_true(!(eq->flags && EQ_DOOMED)))
+ callout_schedule(&eq->tx_callout, 1);
+ return;
+ }
+
+ EQ_LOCK_ASSERT_OWNED(eq);
+
+ if (__predict_true((eq->flags & EQ_DOOMED) == 0)) {
+
+ if ((eq->flags & EQ_TYPEMASK) == EQ_ETH) {
+ struct sge_txq *txq = arg;
+ struct port_info *pi = txq->ifp->if_softc;
+
+ sc = pi->adapter;
+ } else {
+ struct sge_wrq *wrq = arg;
+
+ sc = wrq->adapter;
+ }
+
+ taskqueue_enqueue(sc->tq[eq->tx_chan], &eq->tx_task);
+ }
- TXQ_LOCK(txq);
- if (txq->eq.flags & EQ_CRFLUSHED) {
- txq->eq.flags &= ~EQ_CRFLUSHED;
+ EQ_UNLOCK(eq);
+}
+
+void
+t4_tx_task(void *arg, int count)
+{
+ struct sge_eq *eq = arg;
+
+ EQ_LOCK(eq);
+ if ((eq->flags & EQ_TYPEMASK) == EQ_ETH) {
+ struct sge_txq *txq = arg;
txq_start(txq->ifp, txq);
- } else
- wakeup_one(txq); /* txq is going away, wakeup free_txq */
- TXQ_UNLOCK(txq);
+ } else {
+ struct sge_wrq *wrq = arg;
+ t4_wrq_tx_locked(wrq->adapter, wrq, NULL);
+ }
+ EQ_UNLOCK(eq);
}
static uint32_t
@@ -2941,10 +4393,10 @@ fconf_to_mode(uint32_t fconf)
mode |= T4_FILTER_IP_TOS;
if (fconf & F_VLAN)
- mode |= T4_FILTER_IVLAN;
+ mode |= T4_FILTER_VLAN;
if (fconf & F_VNIC_ID)
- mode |= T4_FILTER_OVLAN;
+ mode |= T4_FILTER_VNIC;
if (fconf & F_PORT)
mode |= T4_FILTER_PORT;
@@ -2978,10 +4430,10 @@ mode_to_fconf(uint32_t mode)
if (mode & T4_FILTER_IP_TOS)
fconf |= F_TOS;
- if (mode & T4_FILTER_IVLAN)
+ if (mode & T4_FILTER_VLAN)
fconf |= F_VLAN;
- if (mode & T4_FILTER_OVLAN)
+ if (mode & T4_FILTER_VNIC)
fconf |= F_VNIC_ID;
if (mode & T4_FILTER_PORT)
@@ -3016,10 +4468,10 @@ fspec_to_fconf(struct t4_filter_specification *fs)
if (fs->val.tos || fs->mask.tos)
fconf |= F_TOS;
- if (fs->val.ivlan_vld || fs->mask.ivlan_vld)
+ if (fs->val.vlan_vld || fs->mask.vlan_vld)
fconf |= F_VLAN;
- if (fs->val.ovlan_vld || fs->mask.ovlan_vld)
+ if (fs->val.vnic_vld || fs->mask.vnic_vld)
fconf |= F_VNIC_ID;
if (fs->val.iport || fs->mask.iport)
@@ -3039,7 +4491,13 @@ get_filter_mode(struct adapter *sc, uint32_t *mode)
t4_read_indirect(sc, A_TP_PIO_ADDR, A_TP_PIO_DATA, &fconf, 1,
A_TP_VLAN_PRI_MAP);
- *mode = fconf_to_mode(fconf);
+ if (sc->filter_mode != fconf) {
+ log(LOG_WARNING, "%s: cached filter mode out of sync %x %x.\n",
+ device_get_nameunit(sc->dev), sc->filter_mode, fconf);
+ sc->filter_mode = fconf;
+ }
+
+ *mode = fconf_to_mode(sc->filter_mode);
return (0);
}
@@ -3063,7 +4521,21 @@ set_filter_mode(struct adapter *sc, uint32_t mode)
goto done;
}
+#ifndef TCP_OFFLOAD_DISABLE
+ if (sc->offload_map) {
+ rc = EBUSY;
+ goto done;
+ }
+#endif
+
+#ifdef notyet
rc = -t4_set_filter_mode(sc, fconf);
+ if (rc == 0)
+ sc->filter_mode = fconf;
+#else
+ rc = ENOTSUP;
+#endif
+
done:
ADAPTER_UNLOCK(sc);
return (rc);
@@ -3123,7 +4595,6 @@ get_filter(struct adapter *sc, struct t4_filter *t)
static int
set_filter(struct adapter *sc, struct t4_filter *t)
{
- uint32_t fconf;
unsigned int nfilters, nports;
struct filter_entry *f;
int i;
@@ -3143,9 +4614,7 @@ set_filter(struct adapter *sc, struct t4_filter *t)
return (EINVAL);
/* Validate against the global filter mode */
- t4_read_indirect(sc, A_TP_PIO_ADDR, A_TP_PIO_DATA, &fconf, 1,
- A_TP_VLAN_PRI_MAP);
- if ((fconf | fspec_to_fconf(&t->fs)) != fconf)
+ if ((sc->filter_mode | fspec_to_fconf(&t->fs)) != sc->filter_mode)
return (E2BIG);
if (t->fs.action == FILTER_SWITCH && t->fs.eport >= nports)
@@ -3242,7 +4711,6 @@ clear_filter(struct filter_entry *f)
static int
set_filter_wr(struct adapter *sc, int fidx)
{
- int rc;
struct filter_entry *f = &sc->tids.ftid_tab[fidx];
struct mbuf *m;
struct fw_filter_wr *fwr;
@@ -3302,13 +4770,13 @@ set_filter_wr(struct adapter *sc, int fidx)
fwr->frag_to_ovlan_vldm =
(V_FW_FILTER_WR_FRAG(f->fs.val.frag) |
V_FW_FILTER_WR_FRAGM(f->fs.mask.frag) |
- V_FW_FILTER_WR_IVLAN_VLD(f->fs.val.ivlan_vld) |
- V_FW_FILTER_WR_OVLAN_VLD(f->fs.val.ovlan_vld) |
- V_FW_FILTER_WR_IVLAN_VLDM(f->fs.mask.ivlan_vld) |
- V_FW_FILTER_WR_OVLAN_VLDM(f->fs.mask.ovlan_vld));
+ V_FW_FILTER_WR_IVLAN_VLD(f->fs.val.vlan_vld) |
+ V_FW_FILTER_WR_OVLAN_VLD(f->fs.val.vnic_vld) |
+ V_FW_FILTER_WR_IVLAN_VLDM(f->fs.mask.vlan_vld) |
+ V_FW_FILTER_WR_OVLAN_VLDM(f->fs.mask.vnic_vld));
fwr->smac_sel = 0;
fwr->rx_chan_rx_rpl_iq = htobe16(V_FW_FILTER_WR_RX_CHAN(0) |
- V_FW_FILTER_WR_RX_RPL_IQ(sc->sge.intrq[0].abs_id));
+ V_FW_FILTER_WR_RX_RPL_IQ(sc->sge.fwq.abs_id));
fwr->maci_to_matchtypem =
htobe32(V_FW_FILTER_WR_MACI(f->fs.val.macidx) |
V_FW_FILTER_WR_MACIM(f->fs.mask.macidx) |
@@ -3322,10 +4790,10 @@ set_filter_wr(struct adapter *sc, int fidx)
fwr->ptclm = f->fs.mask.proto;
fwr->ttyp = f->fs.val.tos;
fwr->ttypm = f->fs.mask.tos;
- fwr->ivlan = htobe16(f->fs.val.ivlan);
- fwr->ivlanm = htobe16(f->fs.mask.ivlan);
- fwr->ovlan = htobe16(f->fs.val.ovlan);
- fwr->ovlanm = htobe16(f->fs.mask.ovlan);
+ fwr->ivlan = htobe16(f->fs.val.vlan);
+ fwr->ivlanm = htobe16(f->fs.mask.vlan);
+ fwr->ovlan = htobe16(f->fs.val.vnic);
+ fwr->ovlanm = htobe16(f->fs.mask.vnic);
bcopy(f->fs.val.dip, fwr->lip, sizeof (fwr->lip));
bcopy(f->fs.mask.dip, fwr->lipm, sizeof (fwr->lipm));
bcopy(f->fs.val.sip, fwr->fip, sizeof (fwr->fip));
@@ -3339,13 +4807,9 @@ set_filter_wr(struct adapter *sc, int fidx)
f->pending = 1;
sc->tids.ftids_in_use++;
- rc = t4_mgmt_tx(sc, m);
- if (rc != 0) {
- sc->tids.ftids_in_use--;
- m_freem(m);
- clear_filter(f);
- }
- return (rc);
+
+ t4_mgmt_tx(sc, m);
+ return (0);
}
static int
@@ -3354,7 +4818,7 @@ del_filter_wr(struct adapter *sc, int fidx)
struct filter_entry *f = &sc->tids.ftid_tab[fidx];
struct mbuf *m;
struct fw_filter_wr *fwr;
- unsigned int rc, ftid;
+ unsigned int ftid;
ADAPTER_LOCK_ASSERT_OWNED(sc);
@@ -3368,55 +4832,48 @@ del_filter_wr(struct adapter *sc, int fidx)
m->m_len = m->m_pkthdr.len = sizeof(*fwr);
bzero(fwr, sizeof (*fwr));
- t4_mk_filtdelwr(ftid, fwr, sc->sge.intrq[0].abs_id);
+ t4_mk_filtdelwr(ftid, fwr, sc->sge.fwq.abs_id);
f->pending = 1;
- rc = t4_mgmt_tx(sc, m);
- if (rc != 0) {
- f->pending = 0;
- m_freem(m);
- }
- return (rc);
+ t4_mgmt_tx(sc, m);
+ return (0);
}
-/* XXX move intr handlers to main.c and make this static */
-void
-filter_rpl(struct adapter *sc, const struct cpl_set_tcb_rpl *rpl)
+static int
+filter_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
{
+ struct adapter *sc = iq->adapter;
+ const struct cpl_set_tcb_rpl *rpl = (const void *)(rss + 1);
unsigned int idx = GET_TID(rpl);
+ KASSERT(m == NULL, ("%s: payload with opcode %02x", __func__,
+ rss->opcode));
+
if (idx >= sc->tids.ftid_base &&
(idx -= sc->tids.ftid_base) < sc->tids.nftids) {
unsigned int rc = G_COOKIE(rpl->cookie);
struct filter_entry *f = &sc->tids.ftid_tab[idx];
- if (rc == FW_FILTER_WR_FLT_DELETED) {
- /*
- * Clear the filter when we get confirmation from the
- * hardware that the filter has been deleted.
- */
- clear_filter(f);
- sc->tids.ftids_in_use--;
- } else if (rc == FW_FILTER_WR_SMT_TBL_FULL) {
- device_printf(sc->dev,
- "filter %u setup failed due to full SMT\n", idx);
- clear_filter(f);
- sc->tids.ftids_in_use--;
- } else if (rc == FW_FILTER_WR_FLT_ADDED) {
+ if (rc == FW_FILTER_WR_FLT_ADDED) {
f->smtidx = (be64toh(rpl->oldval) >> 24) & 0xff;
f->pending = 0; /* asynchronous setup completed */
f->valid = 1;
- } else {
- /*
- * Something went wrong. Issue a warning about the
- * problem and clear everything out.
- */
+ return (0);
+ }
+
+ if (rc != FW_FILTER_WR_FLT_DELETED) {
+ /* Add or delete failed, need to display an error */
device_printf(sc->dev,
"filter %u setup failed with error %u\n", idx, rc);
- clear_filter(f);
- sc->tids.ftids_in_use--;
}
+
+ clear_filter(f);
+ ADAPTER_LOCK(sc);
+ sc->tids.ftids_in_use--;
+ ADAPTER_UNLOCK(sc);
}
+
+ return (0);
}
static int
@@ -3448,6 +4905,84 @@ get_sge_context(struct adapter *sc, struct t4_sge_context *cntxt)
return (rc);
}
+static int
+read_card_mem(struct adapter *sc, struct t4_mem_range *mr)
+{
+ uint32_t base, size, lo, hi, win, off, remaining, i, n;
+ uint32_t *buf, *b;
+ int rc;
+
+ /* reads are in multiples of 32 bits */
+ if (mr->addr & 3 || mr->len & 3 || mr->len == 0)
+ return (EINVAL);
+
+ /*
+ * We don't want to deal with potential holes so we mandate that the
+ * requested region must lie entirely within one of the 3 memories.
+ */
+ lo = t4_read_reg(sc, A_MA_TARGET_MEM_ENABLE);
+ if (lo & F_EDRAM0_ENABLE) {
+ hi = t4_read_reg(sc, A_MA_EDRAM0_BAR);
+ base = G_EDRAM0_BASE(hi) << 20;
+ size = G_EDRAM0_SIZE(hi) << 20;
+ if (size > 0 &&
+ mr->addr >= base && mr->addr < base + size &&
+ mr->addr + mr->len <= base + size)
+ goto proceed;
+ }
+ if (lo & F_EDRAM1_ENABLE) {
+ hi = t4_read_reg(sc, A_MA_EDRAM1_BAR);
+ base = G_EDRAM1_BASE(hi) << 20;
+ size = G_EDRAM1_SIZE(hi) << 20;
+ if (size > 0 &&
+ mr->addr >= base && mr->addr < base + size &&
+ mr->addr + mr->len <= base + size)
+ goto proceed;
+ }
+ if (lo & F_EXT_MEM_ENABLE) {
+ hi = t4_read_reg(sc, A_MA_EXT_MEMORY_BAR);
+ base = G_EXT_MEM_BASE(hi) << 20;
+ size = G_EXT_MEM_SIZE(hi) << 20;
+ if (size > 0 &&
+ mr->addr >= base && mr->addr < base + size &&
+ mr->addr + mr->len <= base + size)
+ goto proceed;
+ }
+ return (ENXIO);
+
+proceed:
+ buf = b = malloc(mr->len, M_CXGBE, M_WAITOK);
+
+ /*
+ * Position the PCIe window (we use memwin2) to the 16B aligned area
+ * just at/before the requested region.
+ */
+ win = mr->addr & ~0xf;
+ off = mr->addr - win; /* offset of the requested region in the win */
+ remaining = mr->len;
+
+ while (remaining) {
+ t4_write_reg(sc,
+ PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2), win);
+ t4_read_reg(sc,
+ PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2));
+
+ /* number of bytes that we'll copy in the inner loop */
+ n = min(remaining, MEMWIN2_APERTURE - off);
+
+ for (i = 0; i < n; i += 4, remaining -= 4)
+ *b++ = t4_read_reg(sc, MEMWIN2_BASE + off + i);
+
+ win += MEMWIN2_APERTURE;
+ off = 0;
+ }
+
+ rc = copyout(buf, mr->data, mr->len);
+ free(buf, M_CXGBE);
+
+ return (rc);
+}
+
int
t4_os_find_pci_capability(struct adapter *sc, int cap)
{
@@ -3518,6 +5053,22 @@ t4_os_link_changed(struct adapter *sc, int idx, int link_stat)
if_link_state_change(ifp, LINK_STATE_DOWN);
}
+void
+t4_iterate(void (*func)(struct adapter *, void *), void *arg)
+{
+ struct adapter *sc;
+
+ mtx_lock(&t4_list_lock);
+ SLIST_FOREACH(sc, &t4_list, link) {
+ /*
+ * func should not make any assumptions about what state sc is
+ * in - the only guarantee is that sc->sc_lock is a valid lock.
+ */
+ func(sc, arg);
+ }
+ mtx_unlock(&t4_list_lock);
+}
+
static int
t4_open(struct cdev *dev, int flags, int type, struct thread *td)
{
@@ -3614,6 +5165,27 @@ t4_ioctl(struct cdev *dev, unsigned long cmd, caddr_t data, int fflag,
case CHELSIO_T4_GET_SGE_CONTEXT:
rc = get_sge_context(sc, (struct t4_sge_context *)data);
break;
+ case CHELSIO_T4_LOAD_FW: {
+ struct t4_data *fw = (struct t4_data *)data;
+ uint8_t *fw_data;
+
+ if (sc->flags & FULL_INIT_DONE)
+ return (EBUSY);
+
+ fw_data = malloc(fw->len, M_CXGBE, M_NOWAIT);
+ if (fw_data == NULL)
+ return (ENOMEM);
+
+ rc = copyin(fw->data, fw_data, fw->len);
+ if (rc == 0)
+ rc = -t4_load_fw(sc, fw_data, fw->len);
+
+ free(fw_data, M_CXGBE);
+ break;
+ }
+ case CHELSIO_T4_GET_MEM:
+ rc = read_card_mem(sc, (struct t4_mem_range *)data);
+ break;
default:
rc = EINVAL;
}
@@ -3621,14 +5193,247 @@ t4_ioctl(struct cdev *dev, unsigned long cmd, caddr_t data, int fflag,
return (rc);
}
+#ifndef TCP_OFFLOAD_DISABLE
+static int
+toe_capability(struct port_info *pi, int enable)
+{
+ int rc;
+ struct adapter *sc = pi->adapter;
+
+ ADAPTER_LOCK_ASSERT_OWNED(sc);
+
+ if (!is_offload(sc))
+ return (ENODEV);
+
+ if (enable) {
+ if (isset(&sc->offload_map, pi->port_id))
+ return (0);
+
+ if (sc->offload_map == 0) {
+ rc = activate_uld(sc, ULD_TOM, &sc->tom);
+ if (rc != 0)
+ return (rc);
+ }
+
+ setbit(&sc->offload_map, pi->port_id);
+ } else {
+ if (!isset(&sc->offload_map, pi->port_id))
+ return (0);
+
+ clrbit(&sc->offload_map, pi->port_id);
+
+ if (sc->offload_map == 0) {
+ rc = deactivate_uld(&sc->tom);
+ if (rc != 0) {
+ setbit(&sc->offload_map, pi->port_id);
+ return (rc);
+ }
+ }
+ }
+
+ return (0);
+}
+
+/*
+ * Add an upper layer driver to the global list.
+ */
+int
+t4_register_uld(struct uld_info *ui)
+{
+ int rc = 0;
+ struct uld_info *u;
+
+ mtx_lock(&t4_uld_list_lock);
+ SLIST_FOREACH(u, &t4_uld_list, link) {
+ if (u->uld_id == ui->uld_id) {
+ rc = EEXIST;
+ goto done;
+ }
+ }
+
+ SLIST_INSERT_HEAD(&t4_uld_list, ui, link);
+ ui->refcount = 0;
+done:
+ mtx_unlock(&t4_uld_list_lock);
+ return (rc);
+}
+
+int
+t4_unregister_uld(struct uld_info *ui)
+{
+ int rc = EINVAL;
+ struct uld_info *u;
+
+ mtx_lock(&t4_uld_list_lock);
+
+ SLIST_FOREACH(u, &t4_uld_list, link) {
+ if (u == ui) {
+ if (ui->refcount > 0) {
+ rc = EBUSY;
+ goto done;
+ }
+
+ SLIST_REMOVE(&t4_uld_list, ui, uld_info, link);
+ rc = 0;
+ goto done;
+ }
+ }
+done:
+ mtx_unlock(&t4_uld_list_lock);
+ return (rc);
+}
+
+static int
+activate_uld(struct adapter *sc, int id, struct uld_softc *usc)
+{
+ int rc = EAGAIN;
+ struct uld_info *ui;
+
+ mtx_lock(&t4_uld_list_lock);
+
+ SLIST_FOREACH(ui, &t4_uld_list, link) {
+ if (ui->uld_id == id) {
+ rc = ui->attach(sc, &usc->softc);
+ if (rc == 0) {
+ KASSERT(usc->softc != NULL,
+ ("%s: ULD %d has no state", __func__, id));
+ ui->refcount++;
+ usc->uld = ui;
+ }
+ goto done;
+ }
+ }
+done:
+ mtx_unlock(&t4_uld_list_lock);
+
+ return (rc);
+}
+
+static int
+deactivate_uld(struct uld_softc *usc)
+{
+ int rc;
+
+ mtx_lock(&t4_uld_list_lock);
+
+ if (usc->uld == NULL || usc->softc == NULL) {
+ rc = EINVAL;
+ goto done;
+ }
+
+ rc = usc->uld->detach(usc->softc);
+ if (rc == 0) {
+ KASSERT(usc->uld->refcount > 0,
+ ("%s: ULD has bad refcount", __func__));
+ usc->uld->refcount--;
+ usc->uld = NULL;
+ usc->softc = NULL;
+ }
+done:
+ mtx_unlock(&t4_uld_list_lock);
+
+ return (rc);
+}
+#endif
+
+/*
+ * Come up with reasonable defaults for some of the tunables, provided they're
+ * not set by the user (in which case we'll use the values as is).
+ */
+static void
+tweak_tunables(void)
+{
+ int nc = mp_ncpus; /* our snapshot of the number of CPUs */
+
+ if (t4_ntxq10g < 1)
+ t4_ntxq10g = min(nc, NTXQ_10G);
+
+ if (t4_ntxq1g < 1)
+ t4_ntxq1g = min(nc, NTXQ_1G);
+
+ if (t4_nrxq10g < 1)
+ t4_nrxq10g = min(nc, NRXQ_10G);
+
+ if (t4_nrxq1g < 1)
+ t4_nrxq1g = min(nc, NRXQ_1G);
+
+#ifndef TCP_OFFLOAD_DISABLE
+ if (t4_nofldtxq10g < 1)
+ t4_nofldtxq10g = min(nc, NOFLDTXQ_10G);
+
+ if (t4_nofldtxq1g < 1)
+ t4_nofldtxq1g = min(nc, NOFLDTXQ_1G);
+
+ if (t4_nofldrxq10g < 1)
+ t4_nofldrxq10g = min(nc, NOFLDRXQ_10G);
+
+ if (t4_nofldrxq1g < 1)
+ t4_nofldrxq1g = min(nc, NOFLDRXQ_1G);
+#endif
+
+ if (t4_tmr_idx_10g < 0 || t4_tmr_idx_10g >= SGE_NTIMERS)
+ t4_tmr_idx_10g = TMR_IDX_10G;
+
+ if (t4_pktc_idx_10g < -1 || t4_pktc_idx_10g >= SGE_NCOUNTERS)
+ t4_pktc_idx_10g = PKTC_IDX_10G;
+
+ if (t4_tmr_idx_1g < 0 || t4_tmr_idx_1g >= SGE_NTIMERS)
+ t4_tmr_idx_1g = TMR_IDX_1G;
+
+ if (t4_pktc_idx_1g < -1 || t4_pktc_idx_1g >= SGE_NCOUNTERS)
+ t4_pktc_idx_1g = PKTC_IDX_1G;
+
+ if (t4_qsize_txq < 128)
+ t4_qsize_txq = 128;
+
+ if (t4_qsize_rxq < 128)
+ t4_qsize_rxq = 128;
+ while (t4_qsize_rxq & 7)
+ t4_qsize_rxq++;
+
+ t4_intr_types &= INTR_MSIX | INTR_MSI | INTR_INTX;
+}
+
static int
t4_mod_event(module_t mod, int cmd, void *arg)
{
+ int rc = 0;
- if (cmd == MOD_LOAD)
+ switch (cmd) {
+ case MOD_LOAD:
t4_sge_modload();
+ mtx_init(&t4_list_lock, "T4 adapters", 0, MTX_DEF);
+ SLIST_INIT(&t4_list);
+#ifndef TCP_OFFLOAD_DISABLE
+ mtx_init(&t4_uld_list_lock, "T4 ULDs", 0, MTX_DEF);
+ SLIST_INIT(&t4_uld_list);
+#endif
+ tweak_tunables();
+ break;
- return (0);
+ case MOD_UNLOAD:
+#ifndef TCP_OFFLOAD_DISABLE
+ mtx_lock(&t4_uld_list_lock);
+ if (!SLIST_EMPTY(&t4_uld_list)) {
+ rc = EBUSY;
+ mtx_unlock(&t4_uld_list_lock);
+ break;
+ }
+ mtx_unlock(&t4_uld_list_lock);
+ mtx_destroy(&t4_uld_list_lock);
+#endif
+ mtx_lock(&t4_list_lock);
+ if (!SLIST_EMPTY(&t4_list)) {
+ rc = EBUSY;
+ mtx_unlock(&t4_list_lock);
+ break;
+ }
+ mtx_unlock(&t4_list_lock);
+ mtx_destroy(&t4_list_lock);
+ break;
+ }
+
+ return (rc);
}
static devclass_t t4_devclass;
diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c
index b676799..41630e4 100644
--- a/sys/dev/cxgbe/t4_sge.c
+++ b/sys/dev/cxgbe/t4_sge.c
@@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$");
#include <sys/queue.h>
#include <sys/taskqueue.h>
#include <sys/sysctl.h>
+#include <sys/smp.h>
#include <net/bpf.h>
#include <net/ethernet.h>
#include <net/if.h>
@@ -50,7 +51,7 @@ __FBSDID("$FreeBSD$");
#include "common/t4_regs.h"
#include "common/t4_regs_values.h"
#include "common/t4_msg.h"
-#include "common/t4fw_interface.h"
+#include "t4_l2t.h"
struct fl_buf_info {
int size;
@@ -91,12 +92,15 @@ struct sgl {
bus_dma_segment_t seg[TX_SGL_SEGS];
};
-static void t4_evt_rx(void *);
-static void t4_eth_rx(void *);
+static int service_iq(struct sge_iq *, int);
+static struct mbuf *get_fl_payload(struct adapter *, struct sge_fl *, uint32_t,
+ int *);
+static int t4_eth_rx(struct sge_iq *, const struct rss_header *, struct mbuf *);
static inline void init_iq(struct sge_iq *, struct adapter *, int, int, int,
- int, iq_intr_handler_t *, char *);
-static inline void init_fl(struct sge_fl *, int, char *);
-static inline void init_eq(struct sge_eq *, int, char *);
+ int, char *);
+static inline void init_fl(struct sge_fl *, int, int, char *);
+static inline void init_eq(struct sge_eq *, int, int, uint8_t, uint16_t,
+ char *);
static int alloc_ring(struct adapter *, size_t, bus_dma_tag_t *, bus_dmamap_t *,
bus_addr_t *, void **);
static int free_ring(struct adapter *, bus_dma_tag_t, bus_dmamap_t, bus_addr_t,
@@ -104,26 +108,41 @@ static int free_ring(struct adapter *, bus_dma_tag_t, bus_dmamap_t, bus_addr_t,
static int alloc_iq_fl(struct port_info *, struct sge_iq *, struct sge_fl *,
int, int);
static int free_iq_fl(struct port_info *, struct sge_iq *, struct sge_fl *);
-static int alloc_intrq(struct adapter *, int, int, int);
-static int free_intrq(struct sge_iq *);
-static int alloc_fwq(struct adapter *, int);
-static int free_fwq(struct sge_iq *);
-static int alloc_rxq(struct port_info *, struct sge_rxq *, int, int);
+static int alloc_fwq(struct adapter *);
+static int free_fwq(struct adapter *);
+static int alloc_mgmtq(struct adapter *);
+static int free_mgmtq(struct adapter *);
+static int alloc_rxq(struct port_info *, struct sge_rxq *, int, int,
+ struct sysctl_oid *);
static int free_rxq(struct port_info *, struct sge_rxq *);
-static int alloc_ctrlq(struct adapter *, struct sge_ctrlq *, int);
-static int free_ctrlq(struct adapter *, struct sge_ctrlq *);
-static int alloc_txq(struct port_info *, struct sge_txq *, int);
+#ifndef TCP_OFFLOAD_DISABLE
+static int alloc_ofld_rxq(struct port_info *, struct sge_ofld_rxq *, int, int,
+ struct sysctl_oid *);
+static int free_ofld_rxq(struct port_info *, struct sge_ofld_rxq *);
+#endif
+static int ctrl_eq_alloc(struct adapter *, struct sge_eq *);
+static int eth_eq_alloc(struct adapter *, struct port_info *, struct sge_eq *);
+#ifndef TCP_OFFLOAD_DISABLE
+static int ofld_eq_alloc(struct adapter *, struct port_info *, struct sge_eq *);
+#endif
+static int alloc_eq(struct adapter *, struct port_info *, struct sge_eq *);
+static int free_eq(struct adapter *, struct sge_eq *);
+static int alloc_wrq(struct adapter *, struct port_info *, struct sge_wrq *,
+ struct sysctl_oid *);
+static int free_wrq(struct adapter *, struct sge_wrq *);
+static int alloc_txq(struct port_info *, struct sge_txq *, int,
+ struct sysctl_oid *);
static int free_txq(struct port_info *, struct sge_txq *);
static void oneseg_dma_callback(void *, bus_dma_segment_t *, int, int);
static inline bool is_new_response(const struct sge_iq *, struct rsp_ctrl **);
static inline void iq_next(struct sge_iq *);
static inline void ring_fl_db(struct adapter *, struct sge_fl *);
-static void refill_fl(struct adapter *, struct sge_fl *, int, int);
+static int refill_fl(struct adapter *, struct sge_fl *, int);
+static void refill_sfl(void *);
static int alloc_fl_sdesc(struct sge_fl *);
static void free_fl_sdesc(struct sge_fl *);
-static int alloc_tx_maps(struct sge_txq *);
-static void free_tx_maps(struct sge_txq *);
static void set_fl_tag_idx(struct sge_fl *, int);
+static void add_fl_to_sfl(struct adapter *, struct sge_fl *);
static int get_pkt_sgl(struct sge_txq *, struct mbuf **, struct sgl *, int);
static int free_pkt_sgl(struct sge_txq *, struct sgl *);
@@ -141,15 +160,13 @@ static inline int reclaimable(struct sge_eq *);
static int reclaim_tx_descs(struct sge_txq *, int, int);
static void write_eqflush_wr(struct sge_eq *);
static __be64 get_flit(bus_dma_segment_t *, int, int);
-static int handle_sge_egr_update(struct adapter *,
- const struct cpl_sge_egr_update *);
-static void handle_cpl(struct adapter *, struct sge_iq *);
+static int handle_sge_egr_update(struct sge_iq *, const struct rss_header *,
+ struct mbuf *);
+static int handle_fw_rpl(struct sge_iq *, const struct rss_header *,
+ struct mbuf *);
-static int ctrl_tx(struct adapter *, struct sge_ctrlq *, struct mbuf *);
static int sysctl_uint16(SYSCTL_HANDLER_ARGS);
-extern void filter_rpl(struct adapter *, const struct cpl_set_tcb_rpl *);
-
/*
* Called on MOD_LOAD and fills up fl_buf_info[].
*/
@@ -181,46 +198,103 @@ t4_sge_modload(void)
* We do not initialize any of the queues here, instead the driver
* top-level must request them individually.
*/
-void
+int
t4_sge_init(struct adapter *sc)
{
struct sge *s = &sc->sge;
- int i;
+ int i, rc = 0;
+ uint32_t ctrl_mask, ctrl_val, hpsize, v;
+
+ ctrl_mask = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE |
+ V_INGPADBOUNDARY(M_INGPADBOUNDARY) |
+ F_EGRSTATUSPAGESIZE;
+ ctrl_val = V_PKTSHIFT(FL_PKTSHIFT) | F_RXPKTCPLMODE |
+ V_INGPADBOUNDARY(ilog2(FL_ALIGN) - 5) |
+ V_EGRSTATUSPAGESIZE(SPG_LEN == 128);
+
+ hpsize = V_HOSTPAGESIZEPF0(PAGE_SHIFT - 10) |
+ V_HOSTPAGESIZEPF1(PAGE_SHIFT - 10) |
+ V_HOSTPAGESIZEPF2(PAGE_SHIFT - 10) |
+ V_HOSTPAGESIZEPF3(PAGE_SHIFT - 10) |
+ V_HOSTPAGESIZEPF4(PAGE_SHIFT - 10) |
+ V_HOSTPAGESIZEPF5(PAGE_SHIFT - 10) |
+ V_HOSTPAGESIZEPF6(PAGE_SHIFT - 10) |
+ V_HOSTPAGESIZEPF7(PAGE_SHIFT - 10);
+
+ if (sc->flags & MASTER_PF) {
+ int intr_timer[SGE_NTIMERS] = {1, 5, 10, 50, 100, 200};
+ int intr_pktcount[SGE_NCOUNTERS] = {1, 8, 16, 32}; /* 63 max */
+
+ t4_set_reg_field(sc, A_SGE_CONTROL, ctrl_mask, ctrl_val);
+ t4_write_reg(sc, A_SGE_HOST_PAGE_SIZE, hpsize);
+ for (i = 0; i < FL_BUF_SIZES; i++) {
+ t4_write_reg(sc, A_SGE_FL_BUFFER_SIZE0 + (4 * i),
+ FL_BUF_SIZE(i));
+ }
+
+ t4_write_reg(sc, A_SGE_INGRESS_RX_THRESHOLD,
+ V_THRESHOLD_0(intr_pktcount[0]) |
+ V_THRESHOLD_1(intr_pktcount[1]) |
+ V_THRESHOLD_2(intr_pktcount[2]) |
+ V_THRESHOLD_3(intr_pktcount[3]));
+
+ t4_write_reg(sc, A_SGE_TIMER_VALUE_0_AND_1,
+ V_TIMERVALUE0(us_to_core_ticks(sc, intr_timer[0])) |
+ V_TIMERVALUE1(us_to_core_ticks(sc, intr_timer[1])));
+ t4_write_reg(sc, A_SGE_TIMER_VALUE_2_AND_3,
+ V_TIMERVALUE2(us_to_core_ticks(sc, intr_timer[2])) |
+ V_TIMERVALUE3(us_to_core_ticks(sc, intr_timer[3])));
+ t4_write_reg(sc, A_SGE_TIMER_VALUE_4_AND_5,
+ V_TIMERVALUE4(us_to_core_ticks(sc, intr_timer[4])) |
+ V_TIMERVALUE5(us_to_core_ticks(sc, intr_timer[5])));
+ }
+
+ v = t4_read_reg(sc, A_SGE_CONTROL);
+ if ((v & ctrl_mask) != ctrl_val) {
+ device_printf(sc->dev, "invalid SGE_CONTROL(0x%x)\n", v);
+ rc = EINVAL;
+ }
- t4_set_reg_field(sc, A_SGE_CONTROL, V_PKTSHIFT(M_PKTSHIFT) |
- V_INGPADBOUNDARY(M_INGPADBOUNDARY) |
- F_EGRSTATUSPAGESIZE,
- V_INGPADBOUNDARY(ilog2(FL_ALIGN) - 5) |
- V_PKTSHIFT(FL_PKTSHIFT) |
- F_RXPKTCPLMODE |
- V_EGRSTATUSPAGESIZE(SPG_LEN == 128));
- t4_set_reg_field(sc, A_SGE_HOST_PAGE_SIZE,
- V_HOSTPAGESIZEPF0(M_HOSTPAGESIZEPF0),
- V_HOSTPAGESIZEPF0(PAGE_SHIFT - 10));
+ v = t4_read_reg(sc, A_SGE_HOST_PAGE_SIZE);
+ if (v != hpsize) {
+ device_printf(sc->dev, "invalid SGE_HOST_PAGE_SIZE(0x%x)\n", v);
+ rc = EINVAL;
+ }
for (i = 0; i < FL_BUF_SIZES; i++) {
- t4_write_reg(sc, A_SGE_FL_BUFFER_SIZE0 + (4 * i),
- FL_BUF_SIZE(i));
+ v = t4_read_reg(sc, A_SGE_FL_BUFFER_SIZE0 + (4 * i));
+ if (v != FL_BUF_SIZE(i)) {
+ device_printf(sc->dev,
+ "invalid SGE_FL_BUFFER_SIZE[%d](0x%x)\n", i, v);
+ rc = EINVAL;
+ }
}
- i = t4_read_reg(sc, A_SGE_CONM_CTRL);
- s->fl_starve_threshold = G_EGRTHRESHOLD(i) * 2 + 1;
+ v = t4_read_reg(sc, A_SGE_CONM_CTRL);
+ s->fl_starve_threshold = G_EGRTHRESHOLD(v) * 2 + 1;
+
+ v = t4_read_reg(sc, A_SGE_INGRESS_RX_THRESHOLD);
+ sc->sge.counter_val[0] = G_THRESHOLD_0(v);
+ sc->sge.counter_val[1] = G_THRESHOLD_1(v);
+ sc->sge.counter_val[2] = G_THRESHOLD_2(v);
+ sc->sge.counter_val[3] = G_THRESHOLD_3(v);
+
+ v = t4_read_reg(sc, A_SGE_TIMER_VALUE_0_AND_1);
+ sc->sge.timer_val[0] = G_TIMERVALUE0(v) / core_ticks_per_usec(sc);
+ sc->sge.timer_val[1] = G_TIMERVALUE1(v) / core_ticks_per_usec(sc);
+ v = t4_read_reg(sc, A_SGE_TIMER_VALUE_2_AND_3);
+ sc->sge.timer_val[2] = G_TIMERVALUE2(v) / core_ticks_per_usec(sc);
+ sc->sge.timer_val[3] = G_TIMERVALUE3(v) / core_ticks_per_usec(sc);
+ v = t4_read_reg(sc, A_SGE_TIMER_VALUE_4_AND_5);
+ sc->sge.timer_val[4] = G_TIMERVALUE4(v) / core_ticks_per_usec(sc);
+ sc->sge.timer_val[5] = G_TIMERVALUE5(v) / core_ticks_per_usec(sc);
- t4_write_reg(sc, A_SGE_INGRESS_RX_THRESHOLD,
- V_THRESHOLD_0(s->counter_val[0]) |
- V_THRESHOLD_1(s->counter_val[1]) |
- V_THRESHOLD_2(s->counter_val[2]) |
- V_THRESHOLD_3(s->counter_val[3]));
+ t4_register_cpl_handler(sc, CPL_FW4_MSG, handle_fw_rpl);
+ t4_register_cpl_handler(sc, CPL_FW6_MSG, handle_fw_rpl);
+ t4_register_cpl_handler(sc, CPL_SGE_EGR_UPDATE, handle_sge_egr_update);
+ t4_register_cpl_handler(sc, CPL_RX_PKT, t4_eth_rx);
- t4_write_reg(sc, A_SGE_TIMER_VALUE_0_AND_1,
- V_TIMERVALUE0(us_to_core_ticks(sc, s->timer_val[0])) |
- V_TIMERVALUE1(us_to_core_ticks(sc, s->timer_val[1])));
- t4_write_reg(sc, A_SGE_TIMER_VALUE_2_AND_3,
- V_TIMERVALUE2(us_to_core_ticks(sc, s->timer_val[2])) |
- V_TIMERVALUE3(us_to_core_ticks(sc, s->timer_val[3])));
- t4_write_reg(sc, A_SGE_TIMER_VALUE_4_AND_5,
- V_TIMERVALUE4(us_to_core_ticks(sc, s->timer_val[4])) |
- V_TIMERVALUE5(us_to_core_ticks(sc, s->timer_val[5])));
+ return (rc);
}
int
@@ -250,8 +324,7 @@ t4_destroy_dma_tag(struct adapter *sc)
}
/*
- * Allocate and initialize the firmware event queue, control queues, and the
- * interrupt queues. The adapter owns all of these queues.
+ * Allocate and initialize the firmware event queue and the management queue.
*
* Returns errno on failure. Resources allocated up to that point may still be
* allocated. Caller is responsible for cleanup in case this function fails.
@@ -259,110 +332,32 @@ t4_destroy_dma_tag(struct adapter *sc)
int
t4_setup_adapter_queues(struct adapter *sc)
{
- int i, j, rc, intr_idx, qsize;
- struct sge_iq *iq;
- struct sge_ctrlq *ctrlq;
- iq_intr_handler_t *handler;
- char name[16];
+ int rc;
ADAPTER_LOCK_ASSERT_NOTOWNED(sc);
- if (sysctl_ctx_init(&sc->ctx) == 0) {
- struct sysctl_oid *oid = device_get_sysctl_tree(sc->dev);
- struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid);
-
- sc->oid_fwq = SYSCTL_ADD_NODE(&sc->ctx, children, OID_AUTO,
- "fwq", CTLFLAG_RD, NULL, "firmware event queue");
- sc->oid_ctrlq = SYSCTL_ADD_NODE(&sc->ctx, children, OID_AUTO,
- "ctrlq", CTLFLAG_RD, NULL, "ctrl queues");
- sc->oid_intrq = SYSCTL_ADD_NODE(&sc->ctx, children, OID_AUTO,
- "intrq", CTLFLAG_RD, NULL, "interrupt queues");
- }
-
- /*
- * Interrupt queues
- */
- intr_idx = sc->intr_count - NINTRQ(sc);
- if (sc->flags & INTR_SHARED) {
- qsize = max((sc->sge.nrxq + 1) * 2, INTR_IQ_QSIZE);
- for (i = 0; i < NINTRQ(sc); i++, intr_idx++) {
- snprintf(name, sizeof(name), "%s intrq%d",
- device_get_nameunit(sc->dev), i);
-
- iq = &sc->sge.intrq[i];
- init_iq(iq, sc, 0, 0, qsize, INTR_IQ_ESIZE, NULL, name);
- rc = alloc_intrq(sc, i % sc->params.nports, i,
- intr_idx);
-
- if (rc != 0) {
- device_printf(sc->dev,
- "failed to create %s: %d\n", name, rc);
- return (rc);
- }
- }
- } else {
- int qidx = 0;
- struct port_info *pi;
-
- for (i = 0; i < sc->params.nports; i++) {
- pi = sc->port[i];
- qsize = max((pi->nrxq + 1) * 2, INTR_IQ_QSIZE);
- for (j = 0; j < pi->nrxq; j++, qidx++, intr_idx++) {
- snprintf(name, sizeof(name), "%s intrq%d",
- device_get_nameunit(pi->dev), j);
-
- iq = &sc->sge.intrq[qidx];
- init_iq(iq, sc, 0, 0, qsize, INTR_IQ_ESIZE,
- NULL, name);
- rc = alloc_intrq(sc, i, qidx, intr_idx);
-
- if (rc != 0) {
- device_printf(sc->dev,
- "failed to create %s: %d\n",
- name, rc);
- return (rc);
- }
- }
- }
- }
+ sysctl_ctx_init(&sc->ctx);
+ sc->flags |= ADAP_SYSCTL_CTX;
/*
* Firmware event queue
*/
- snprintf(name, sizeof(name), "%s fwq", device_get_nameunit(sc->dev));
- if (sc->intr_count > T4_EXTRA_INTR) {
- handler = NULL;
- intr_idx = 1;
- } else {
- handler = t4_evt_rx;
- intr_idx = 0;
- }
-
- iq = &sc->sge.fwq;
- init_iq(iq, sc, 0, 0, FW_IQ_QSIZE, FW_IQ_ESIZE, handler, name);
- rc = alloc_fwq(sc, intr_idx);
+ rc = alloc_fwq(sc);
if (rc != 0) {
device_printf(sc->dev,
"failed to create firmware event queue: %d\n", rc);
-
return (rc);
}
/*
- * Control queues - one per port.
+ * Management queue. This is just a control queue that uses the fwq as
+ * its associated iq.
*/
- ctrlq = &sc->sge.ctrlq[0];
- for (i = 0; i < sc->params.nports; i++, ctrlq++) {
- snprintf(name, sizeof(name), "%s ctrlq%d",
- device_get_nameunit(sc->dev), i);
- init_eq(&ctrlq->eq, CTRL_EQ_QSIZE, name);
-
- rc = alloc_ctrlq(sc, ctrlq, i);
- if (rc != 0) {
- device_printf(sc->dev,
- "failed to create control queue %d: %d\n", i, rc);
- return (rc);
- }
+ rc = alloc_mgmtq(sc);
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to create management queue: %d\n", rc);
+ return (rc);
}
return (rc);
@@ -374,86 +369,278 @@ t4_setup_adapter_queues(struct adapter *sc)
int
t4_teardown_adapter_queues(struct adapter *sc)
{
- int i;
- struct sge_iq *iq;
ADAPTER_LOCK_ASSERT_NOTOWNED(sc);
- /* Do this before freeing the queues */
- if (sc->oid_fwq || sc->oid_ctrlq || sc->oid_intrq) {
+ /* Do this before freeing the queue */
+ if (sc->flags & ADAP_SYSCTL_CTX) {
sysctl_ctx_free(&sc->ctx);
- sc->oid_fwq = NULL;
- sc->oid_ctrlq = NULL;
- sc->oid_intrq = NULL;
+ sc->flags &= ~ADAP_SYSCTL_CTX;
}
- for (i = 0; i < sc->params.nports; i++)
- free_ctrlq(sc, &sc->sge.ctrlq[i]);
+ free_mgmtq(sc);
+ free_fwq(sc);
+
+ return (0);
+}
+
+static inline int
+first_vector(struct port_info *pi)
+{
+ struct adapter *sc = pi->adapter;
+ int rc = T4_EXTRA_INTR, i;
+
+ if (sc->intr_count == 1)
+ return (0);
- iq = &sc->sge.fwq;
- free_fwq(iq);
+ for_each_port(sc, i) {
+ if (i == pi->port_id)
+ break;
+
+#ifndef TCP_OFFLOAD_DISABLE
+ if (sc->flags & INTR_DIRECT)
+ rc += pi->nrxq + pi->nofldrxq;
+ else
+ rc += max(pi->nrxq, pi->nofldrxq);
+#else
+ /*
+ * Not compiled with offload support and intr_count > 1. Only
+ * NIC queues exist and they'd better be taking direct
+ * interrupts.
+ */
+ KASSERT(sc->flags & INTR_DIRECT,
+ ("%s: intr_count %d, !INTR_DIRECT", __func__,
+ sc->intr_count));
- for (i = 0; i < NINTRQ(sc); i++) {
- iq = &sc->sge.intrq[i];
- free_intrq(iq);
+ rc += pi->nrxq;
+#endif
}
- return (0);
+ return (rc);
+}
+
+/*
+ * Given an arbitrary "index," come up with an iq that can be used by other
+ * queues (of this port) for interrupt forwarding, SGE egress updates, etc.
+ * The iq returned is guaranteed to be something that takes direct interrupts.
+ */
+static struct sge_iq *
+port_intr_iq(struct port_info *pi, int idx)
+{
+ struct adapter *sc = pi->adapter;
+ struct sge *s = &sc->sge;
+ struct sge_iq *iq = NULL;
+
+ if (sc->intr_count == 1)
+ return (&sc->sge.fwq);
+
+#ifndef TCP_OFFLOAD_DISABLE
+ if (sc->flags & INTR_DIRECT) {
+ idx %= pi->nrxq + pi->nofldrxq;
+
+ if (idx >= pi->nrxq) {
+ idx -= pi->nrxq;
+ iq = &s->ofld_rxq[pi->first_ofld_rxq + idx].iq;
+ } else
+ iq = &s->rxq[pi->first_rxq + idx].iq;
+
+ } else {
+ idx %= max(pi->nrxq, pi->nofldrxq);
+
+ if (pi->nrxq >= pi->nofldrxq)
+ iq = &s->rxq[pi->first_rxq + idx].iq;
+ else
+ iq = &s->ofld_rxq[pi->first_ofld_rxq + idx].iq;
+ }
+#else
+ /*
+ * Not compiled with offload support and intr_count > 1. Only NIC
+ * queues exist and they'd better be taking direct interrupts.
+ */
+ KASSERT(sc->flags & INTR_DIRECT,
+ ("%s: intr_count %d, !INTR_DIRECT", __func__, sc->intr_count));
+
+ idx %= pi->nrxq;
+ iq = &s->rxq[pi->first_rxq + idx].iq;
+#endif
+
+ KASSERT(iq->flags & IQ_INTR, ("%s: EDOOFUS", __func__));
+ return (iq);
}
int
-t4_setup_eth_queues(struct port_info *pi)
+t4_setup_port_queues(struct port_info *pi)
{
- int rc = 0, i, intr_idx;
+ int rc = 0, i, j, intr_idx, iqid;
struct sge_rxq *rxq;
struct sge_txq *txq;
+ struct sge_wrq *ctrlq;
+#ifndef TCP_OFFLOAD_DISABLE
+ struct sge_ofld_rxq *ofld_rxq;
+ struct sge_wrq *ofld_txq;
+#endif
char name[16];
struct adapter *sc = pi->adapter;
+ struct sysctl_oid *oid = device_get_sysctl_tree(pi->dev), *oid2 = NULL;
+ struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid);
- if (sysctl_ctx_init(&pi->ctx) == 0) {
- struct sysctl_oid *oid = device_get_sysctl_tree(pi->dev);
- struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid);
+ oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "rxq", CTLFLAG_RD,
+ NULL, "rx queues");
- pi->oid_rxq = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO,
- "rxq", CTLFLAG_RD, NULL, "rx queues");
- pi->oid_txq = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO,
- "txq", CTLFLAG_RD, NULL, "tx queues");
+#ifndef TCP_OFFLOAD_DISABLE
+ if (is_offload(sc)) {
+ oid2 = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "ofld_rxq",
+ CTLFLAG_RD, NULL,
+ "rx queues for offloaded TCP connections");
}
+#endif
+
+ /* Interrupt vector to start from (when using multiple vectors) */
+ intr_idx = first_vector(pi);
+ /*
+ * First pass over all rx queues (NIC and TOE):
+ * a) initialize iq and fl
+ * b) allocate queue iff it will take direct interrupts.
+ */
for_each_rxq(pi, i, rxq) {
snprintf(name, sizeof(name), "%s rxq%d-iq",
device_get_nameunit(pi->dev), i);
- init_iq(&rxq->iq, sc, pi->tmr_idx, pi->pktc_idx,
- pi->qsize_rxq, RX_IQ_ESIZE, t4_eth_rx, name);
+ init_iq(&rxq->iq, sc, pi->tmr_idx, pi->pktc_idx, pi->qsize_rxq,
+ RX_IQ_ESIZE, name);
snprintf(name, sizeof(name), "%s rxq%d-fl",
device_get_nameunit(pi->dev), i);
- init_fl(&rxq->fl, pi->qsize_rxq / 8, name);
+ init_fl(&rxq->fl, pi->qsize_rxq / 8, pi->ifp->if_mtu, name);
+
+ if (sc->flags & INTR_DIRECT
+#ifndef TCP_OFFLOAD_DISABLE
+ || (sc->intr_count > 1 && pi->nrxq >= pi->nofldrxq)
+#endif
+ ) {
+ rxq->iq.flags |= IQ_INTR;
+ rc = alloc_rxq(pi, rxq, intr_idx, i, oid);
+ if (rc != 0)
+ goto done;
+ intr_idx++;
+ }
+ }
- intr_idx = pi->first_rxq + i;
- if (sc->flags & INTR_SHARED)
- intr_idx %= NINTRQ(sc);
+#ifndef TCP_OFFLOAD_DISABLE
+ for_each_ofld_rxq(pi, i, ofld_rxq) {
- rc = alloc_rxq(pi, rxq, intr_idx, i);
+ snprintf(name, sizeof(name), "%s ofld_rxq%d-iq",
+ device_get_nameunit(pi->dev), i);
+ init_iq(&ofld_rxq->iq, sc, pi->tmr_idx, pi->pktc_idx,
+ pi->qsize_rxq, RX_IQ_ESIZE, name);
+
+ snprintf(name, sizeof(name), "%s ofld_rxq%d-fl",
+ device_get_nameunit(pi->dev), i);
+ init_fl(&ofld_rxq->fl, pi->qsize_rxq / 8, MJUM16BYTES, name);
+
+ if (sc->flags & INTR_DIRECT ||
+ (sc->intr_count > 1 && pi->nofldrxq > pi->nrxq)) {
+ ofld_rxq->iq.flags |= IQ_INTR;
+ rc = alloc_ofld_rxq(pi, ofld_rxq, intr_idx, i, oid2);
+ if (rc != 0)
+ goto done;
+ intr_idx++;
+ }
+ }
+#endif
+
+ /*
+ * Second pass over all rx queues (NIC and TOE). The queues forwarding
+ * their interrupts are allocated now.
+ */
+ j = 0;
+ for_each_rxq(pi, i, rxq) {
+ if (rxq->iq.flags & IQ_INTR)
+ continue;
+
+ intr_idx = port_intr_iq(pi, j)->abs_id;
+
+ rc = alloc_rxq(pi, rxq, intr_idx, i, oid);
+ if (rc != 0)
+ goto done;
+ j++;
+ }
+
+#ifndef TCP_OFFLOAD_DISABLE
+ for_each_ofld_rxq(pi, i, ofld_rxq) {
+ if (ofld_rxq->iq.flags & IQ_INTR)
+ continue;
+
+ intr_idx = port_intr_iq(pi, j)->abs_id;
+
+ rc = alloc_ofld_rxq(pi, ofld_rxq, intr_idx, i, oid2);
if (rc != 0)
goto done;
+ j++;
}
+#endif
+ /*
+ * Now the tx queues. Only one pass needed.
+ */
+ oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "txq", CTLFLAG_RD,
+ NULL, "tx queues");
+ j = 0;
for_each_txq(pi, i, txq) {
+ uint16_t iqid;
+
+ iqid = port_intr_iq(pi, j)->cntxt_id;
snprintf(name, sizeof(name), "%s txq%d",
device_get_nameunit(pi->dev), i);
- init_eq(&txq->eq, pi->qsize_txq, name);
+ init_eq(&txq->eq, EQ_ETH, pi->qsize_txq, pi->tx_chan, iqid,
+ name);
- rc = alloc_txq(pi, txq, i);
+ rc = alloc_txq(pi, txq, i, oid);
if (rc != 0)
goto done;
+ j++;
}
+#ifndef TCP_OFFLOAD_DISABLE
+ oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "ofld_txq",
+ CTLFLAG_RD, NULL, "tx queues for offloaded TCP connections");
+ for_each_ofld_txq(pi, i, ofld_txq) {
+ uint16_t iqid;
+
+ iqid = port_intr_iq(pi, j)->cntxt_id;
+
+ snprintf(name, sizeof(name), "%s ofld_txq%d",
+ device_get_nameunit(pi->dev), i);
+ init_eq(&ofld_txq->eq, EQ_OFLD, pi->qsize_txq, pi->tx_chan,
+ iqid, name);
+
+ snprintf(name, sizeof(name), "%d", i);
+ oid2 = SYSCTL_ADD_NODE(&pi->ctx, SYSCTL_CHILDREN(oid), OID_AUTO,
+ name, CTLFLAG_RD, NULL, "offload tx queue");
+
+ rc = alloc_wrq(sc, pi, ofld_txq, oid2);
+ if (rc != 0)
+ goto done;
+ j++;
+ }
+#endif
+
+ /*
+ * Finally, the control queue.
+ */
+ oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "ctrlq", CTLFLAG_RD,
+ NULL, "ctrl queue");
+ ctrlq = &sc->sge.ctrlq[pi->port_id];
+ iqid = port_intr_iq(pi, 0)->cntxt_id;
+ snprintf(name, sizeof(name), "%s ctrlq", device_get_nameunit(pi->dev));
+ init_eq(&ctrlq->eq, EQ_CTRL, CTRL_EQ_QSIZE, pi->tx_chan, iqid, name);
+ rc = alloc_wrq(sc, pi, ctrlq, oid);
+
done:
if (rc)
- t4_teardown_eth_queues(pi);
+ t4_teardown_port_queues(pi);
return (rc);
}
@@ -462,90 +649,91 @@ done:
* Idempotent
*/
int
-t4_teardown_eth_queues(struct port_info *pi)
+t4_teardown_port_queues(struct port_info *pi)
{
int i;
+ struct adapter *sc = pi->adapter;
struct sge_rxq *rxq;
struct sge_txq *txq;
+#ifndef TCP_OFFLOAD_DISABLE
+ struct sge_ofld_rxq *ofld_rxq;
+ struct sge_wrq *ofld_txq;
+#endif
/* Do this before freeing the queues */
- if (pi->oid_txq || pi->oid_rxq) {
+ if (pi->flags & PORT_SYSCTL_CTX) {
sysctl_ctx_free(&pi->ctx);
- pi->oid_txq = pi->oid_rxq = NULL;
+ pi->flags &= ~PORT_SYSCTL_CTX;
}
+ /*
+ * Take down all the tx queues first, as they reference the rx queues
+ * (for egress updates, etc.).
+ */
+
+ free_wrq(sc, &sc->sge.ctrlq[pi->port_id]);
+
for_each_txq(pi, i, txq) {
free_txq(pi, txq);
}
+#ifndef TCP_OFFLOAD_DISABLE
+ for_each_ofld_txq(pi, i, ofld_txq) {
+ free_wrq(sc, ofld_txq);
+ }
+#endif
+
+ /*
+ * Then take down the rx queues that forward their interrupts, as they
+ * reference other rx queues.
+ */
+
+ for_each_rxq(pi, i, rxq) {
+ if ((rxq->iq.flags & IQ_INTR) == 0)
+ free_rxq(pi, rxq);
+ }
+
+#ifndef TCP_OFFLOAD_DISABLE
+ for_each_ofld_rxq(pi, i, ofld_rxq) {
+ if ((ofld_rxq->iq.flags & IQ_INTR) == 0)
+ free_ofld_rxq(pi, ofld_rxq);
+ }
+#endif
+
+ /*
+ * Then take down the rx queues that take direct interrupts.
+ */
+
for_each_rxq(pi, i, rxq) {
- free_rxq(pi, rxq);
+ if (rxq->iq.flags & IQ_INTR)
+ free_rxq(pi, rxq);
}
+#ifndef TCP_OFFLOAD_DISABLE
+ for_each_ofld_rxq(pi, i, ofld_rxq) {
+ if (ofld_rxq->iq.flags & IQ_INTR)
+ free_ofld_rxq(pi, ofld_rxq);
+ }
+#endif
+
return (0);
}
-/* Deals with errors and the first (and only) interrupt queue */
+/*
+ * Deals with errors and the firmware event queue. All data rx queues forward
+ * their interrupt to the firmware event queue.
+ */
void
t4_intr_all(void *arg)
{
struct adapter *sc = arg;
+ struct sge_iq *fwq = &sc->sge.fwq;
t4_intr_err(arg);
- t4_intr(&sc->sge.intrq[0]);
-}
-
-/* Deals with interrupts, and a few CPLs, on the given interrupt queue */
-void
-t4_intr(void *arg)
-{
- struct sge_iq *iq = arg, *q;
- struct adapter *sc = iq->adapter;
- struct rsp_ctrl *ctrl;
- const struct rss_header *rss;
- int ndesc_pending = 0, ndesc_total = 0;
- int qid, rsp_type;
-
- if (!atomic_cmpset_32(&iq->state, IQS_IDLE, IQS_BUSY))
- return;
-
- while (is_new_response(iq, &ctrl)) {
-
- rmb();
-
- rss = (const void *)iq->cdesc;
- rsp_type = G_RSPD_TYPE(ctrl->u.type_gen);
-
- if (__predict_false(rsp_type == X_RSPD_TYPE_CPL)) {
- handle_cpl(sc, iq);
- goto nextdesc;
- }
-
- qid = ntohl(ctrl->pldbuflen_qid) - sc->sge.iq_start;
- q = sc->sge.iqmap[qid];
-
- if (atomic_cmpset_32(&q->state, IQS_IDLE, IQS_BUSY)) {
- q->handler(q);
- atomic_cmpset_32(&q->state, IQS_BUSY, IQS_IDLE);
- }
-
-nextdesc: ndesc_total++;
- if (++ndesc_pending >= iq->qsize / 4) {
- t4_write_reg(sc, MYPF_REG(A_SGE_PF_GTS),
- V_CIDXINC(ndesc_pending) |
- V_INGRESSQID(iq->cntxt_id) |
- V_SEINTARM(
- V_QINTR_TIMER_IDX(X_TIMERREG_UPDATE_CIDX)));
- ndesc_pending = 0;
- }
-
- iq_next(iq);
+ if (atomic_cmpset_int(&fwq->state, IQS_IDLE, IQS_BUSY)) {
+ service_iq(fwq, 0);
+ atomic_cmpset_int(&fwq->state, IQS_BUSY, IQS_IDLE);
}
-
- t4_write_reg(sc, MYPF_REG(A_SGE_PF_GTS), V_CIDXINC(ndesc_pending) |
- V_INGRESSQID((u32)iq->cntxt_id) | V_SEINTARM(iq->intr_params));
-
- atomic_cmpset_32(&iq->state, IQS_BUSY, IQS_IDLE);
}
/* Deals with error interrupts */
@@ -558,259 +746,452 @@ t4_intr_err(void *arg)
t4_slow_intr_handler(sc);
}
-/* Deals with the firmware event queue */
void
t4_intr_evt(void *arg)
{
struct sge_iq *iq = arg;
- if (atomic_cmpset_32(&iq->state, IQS_IDLE, IQS_BUSY)) {
- t4_evt_rx(arg);
- atomic_cmpset_32(&iq->state, IQS_BUSY, IQS_IDLE);
+ if (atomic_cmpset_int(&iq->state, IQS_IDLE, IQS_BUSY)) {
+ service_iq(iq, 0);
+ atomic_cmpset_int(&iq->state, IQS_BUSY, IQS_IDLE);
}
}
-static void
-t4_evt_rx(void *arg)
+void
+t4_intr(void *arg)
{
struct sge_iq *iq = arg;
+
+ if (atomic_cmpset_int(&iq->state, IQS_IDLE, IQS_BUSY)) {
+ service_iq(iq, 0);
+ atomic_cmpset_int(&iq->state, IQS_BUSY, IQS_IDLE);
+ }
+}
+
+/*
+ * Deals with anything and everything on the given ingress queue.
+ */
+static int
+service_iq(struct sge_iq *iq, int budget)
+{
+ struct sge_iq *q;
+ struct sge_rxq *rxq = (void *)iq; /* Use iff iq is part of rxq */
+ struct sge_fl *fl = &rxq->fl; /* Use iff IQ_HAS_FL */
struct adapter *sc = iq->adapter;
struct rsp_ctrl *ctrl;
- int ndesc_pending = 0, ndesc_total = 0;
+ const struct rss_header *rss;
+ int ndescs = 0, limit, fl_bufs_used = 0;
+ int rsp_type;
+ uint32_t lq;
+ struct mbuf *m0;
+ STAILQ_HEAD(, sge_iq) iql = STAILQ_HEAD_INITIALIZER(iql);
+
+ limit = budget ? budget : iq->qsize / 8;
+
+ KASSERT(iq->state == IQS_BUSY, ("%s: iq %p not BUSY", __func__, iq));
+
+ /*
+ * We always come back and check the descriptor ring for new indirect
+ * interrupts and other responses after running a single handler.
+ */
+ for (;;) {
+ while (is_new_response(iq, &ctrl)) {
+
+ rmb();
+
+ m0 = NULL;
+ rsp_type = G_RSPD_TYPE(ctrl->u.type_gen);
+ lq = be32toh(ctrl->pldbuflen_qid);
+ rss = (const void *)iq->cdesc;
+
+ switch (rsp_type) {
+ case X_RSPD_TYPE_FLBUF:
+
+ KASSERT(iq->flags & IQ_HAS_FL,
+ ("%s: data for an iq (%p) with no freelist",
+ __func__, iq));
+
+ m0 = get_fl_payload(sc, fl, lq, &fl_bufs_used);
+#ifdef T4_PKT_TIMESTAMP
+ /*
+ * 60 bit timestamp for the payload is
+ * *(uint64_t *)m0->m_pktdat. Note that it is
+ * in the leading free-space in the mbuf. The
+ * kernel can clobber it during a pullup,
+ * m_copymdata, etc. You need to make sure that
+ * the mbuf reaches you unmolested if you care
+ * about the timestamp.
+ */
+ *(uint64_t *)m0->m_pktdat =
+ be64toh(ctrl->u.last_flit) &
+ 0xfffffffffffffff;
+#endif
+
+ /* fall through */
+
+ case X_RSPD_TYPE_CPL:
+ KASSERT(rss->opcode < NUM_CPL_CMDS,
+ ("%s: bad opcode %02x.", __func__,
+ rss->opcode));
+ sc->cpl_handler[rss->opcode](iq, rss, m0);
+ break;
+
+ case X_RSPD_TYPE_INTR:
+
+ /*
+ * Interrupts should be forwarded only to queues
+ * that are not forwarding their interrupts.
+ * This means service_iq can recurse but only 1
+ * level deep.
+ */
+ KASSERT(budget == 0,
+ ("%s: budget %u, rsp_type %u", __func__,
+ budget, rsp_type));
+
+ q = sc->sge.iqmap[lq - sc->sge.iq_start];
+ if (atomic_cmpset_int(&q->state, IQS_IDLE,
+ IQS_BUSY)) {
+ if (service_iq(q, q->qsize / 8) == 0) {
+ atomic_cmpset_int(&q->state,
+ IQS_BUSY, IQS_IDLE);
+ } else {
+ STAILQ_INSERT_TAIL(&iql, q,
+ link);
+ }
+ }
+ break;
- KASSERT(iq == &sc->sge.fwq, ("%s: unexpected ingress queue", __func__));
+ default:
+ panic("%s: rsp_type %u", __func__, rsp_type);
+ }
- while (is_new_response(iq, &ctrl)) {
- int rsp_type;
+ iq_next(iq);
+ if (++ndescs == limit) {
+ t4_write_reg(sc, MYPF_REG(A_SGE_PF_GTS),
+ V_CIDXINC(ndescs) |
+ V_INGRESSQID(iq->cntxt_id) |
+ V_SEINTARM(V_QINTR_TIMER_IDX(X_TIMERREG_UPDATE_CIDX)));
+ ndescs = 0;
+
+ if (fl_bufs_used > 0) {
+ FL_LOCK(fl);
+ fl->needed += fl_bufs_used;
+ refill_fl(sc, fl, fl->cap / 8);
+ FL_UNLOCK(fl);
+ fl_bufs_used = 0;
+ }
- rmb();
+ if (budget)
+ return (EINPROGRESS);
+ }
+ }
- rsp_type = G_RSPD_TYPE(ctrl->u.type_gen);
- if (__predict_false(rsp_type != X_RSPD_TYPE_CPL))
- panic("%s: unexpected rsp_type %d", __func__, rsp_type);
+ if (STAILQ_EMPTY(&iql))
+ break;
- handle_cpl(sc, iq);
+ /*
+ * Process the head only, and send it to the back of the list if
+ * it's still not done.
+ */
+ q = STAILQ_FIRST(&iql);
+ STAILQ_REMOVE_HEAD(&iql, link);
+ if (service_iq(q, q->qsize / 8) == 0)
+ atomic_cmpset_int(&q->state, IQS_BUSY, IQS_IDLE);
+ else
+ STAILQ_INSERT_TAIL(&iql, q, link);
+ }
- ndesc_total++;
- if (++ndesc_pending >= iq->qsize / 4) {
- t4_write_reg(sc, MYPF_REG(A_SGE_PF_GTS),
- V_CIDXINC(ndesc_pending) |
- V_INGRESSQID(iq->cntxt_id) |
- V_SEINTARM(
- V_QINTR_TIMER_IDX(X_TIMERREG_UPDATE_CIDX)));
- ndesc_pending = 0;
+#ifdef INET
+ if (iq->flags & IQ_LRO_ENABLED) {
+ struct lro_ctrl *lro = &rxq->lro;
+ struct lro_entry *l;
+
+ while (!SLIST_EMPTY(&lro->lro_active)) {
+ l = SLIST_FIRST(&lro->lro_active);
+ SLIST_REMOVE_HEAD(&lro->lro_active, next);
+ tcp_lro_flush(lro, l);
}
+ }
+#endif
+
+ t4_write_reg(sc, MYPF_REG(A_SGE_PF_GTS), V_CIDXINC(ndescs) |
+ V_INGRESSQID((u32)iq->cntxt_id) | V_SEINTARM(iq->intr_params));
+
+ if (iq->flags & IQ_HAS_FL) {
+ int starved;
- iq_next(iq);
+ FL_LOCK(fl);
+ fl->needed += fl_bufs_used;
+ starved = refill_fl(sc, fl, fl->cap / 4);
+ FL_UNLOCK(fl);
+ if (__predict_false(starved != 0))
+ add_fl_to_sfl(sc, fl);
}
- t4_write_reg(sc, MYPF_REG(A_SGE_PF_GTS), V_CIDXINC(ndesc_pending) |
- V_INGRESSQID(iq->cntxt_id) | V_SEINTARM(iq->intr_params));
+ return (0);
}
+
#ifdef T4_PKT_TIMESTAMP
#define RX_COPY_THRESHOLD (MINCLSIZE - 8)
#else
#define RX_COPY_THRESHOLD MINCLSIZE
#endif
-static void
-t4_eth_rx(void *arg)
+static struct mbuf *
+get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf,
+ int *fl_bufs_used)
{
- struct sge_rxq *rxq = arg;
- struct sge_iq *iq = arg;
- struct adapter *sc = iq->adapter;
- struct rsp_ctrl *ctrl;
- struct ifnet *ifp = rxq->ifp;
- struct sge_fl *fl = &rxq->fl;
- struct fl_sdesc *sd = &fl->sdesc[fl->cidx], *sd_next;
- const struct rss_header *rss;
- const struct cpl_rx_pkt *cpl;
- uint32_t len;
- int ndescs = 0, i;
struct mbuf *m0, *m;
-#ifdef INET
- struct lro_ctrl *lro = &rxq->lro;
- struct lro_entry *l;
-#endif
+ struct fl_sdesc *sd = &fl->sdesc[fl->cidx];
+ unsigned int nbuf, len;
- prefetch(sd->m);
- prefetch(sd->cl);
+ /*
+ * No assertion for the fl lock because we don't need it. This routine
+ * is called only from the rx interrupt handler and it only updates
+ * fl->cidx. (Contrast that with fl->pidx/fl->needed which could be
+ * updated in the rx interrupt handler or the starvation helper routine.
+ * That's why code that manipulates fl->pidx/fl->needed needs the fl
+ * lock but this routine does not).
+ */
- iq->intr_next = iq->intr_params;
- while (is_new_response(iq, &ctrl)) {
+ if (__predict_false((len_newbuf & F_RSPD_NEWBUF) == 0))
+ panic("%s: cannot handle packed frames", __func__);
+ len = G_RSPD_LEN(len_newbuf);
- rmb();
+ m0 = sd->m;
+ sd->m = NULL; /* consumed */
- rss = (const void *)iq->cdesc;
- i = G_RSPD_TYPE(ctrl->u.type_gen);
+ bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, BUS_DMASYNC_POSTREAD);
+ m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR);
+#ifdef T4_PKT_TIMESTAMP
+ /* Leave room for a timestamp */
+ m0->m_data += 8;
+#endif
- KASSERT(i == X_RSPD_TYPE_FLBUF && rss->opcode == CPL_RX_PKT,
- ("%s: unexpected type %d CPL opcode 0x%x",
- __func__, i, rss->opcode));
+ if (len < RX_COPY_THRESHOLD) {
+ /* copy data to mbuf, buffer will be recycled */
+ bcopy(sd->cl, mtod(m0, caddr_t), len);
+ m0->m_len = len;
+ } else {
+ bus_dmamap_unload(fl->tag[sd->tag_idx], sd->map);
+ m_cljset(m0, sd->cl, FL_BUF_TYPE(sd->tag_idx));
+ sd->cl = NULL; /* consumed */
+ m0->m_len = min(len, FL_BUF_SIZE(sd->tag_idx));
+ }
+ m0->m_pkthdr.len = len;
- sd_next = sd + 1;
- if (__predict_false(fl->cidx + 1 == fl->cap))
- sd_next = fl->sdesc;
- prefetch(sd_next->m);
- prefetch(sd_next->cl);
+ sd++;
+ if (__predict_false(++fl->cidx == fl->cap)) {
+ sd = fl->sdesc;
+ fl->cidx = 0;
+ }
- cpl = (const void *)(rss + 1);
+ m = m0;
+ len -= m->m_len;
+ nbuf = 1; /* # of fl buffers used */
- m0 = sd->m;
+ while (len > 0) {
+ m->m_next = sd->m;
sd->m = NULL; /* consumed */
-
- len = be32toh(ctrl->pldbuflen_qid);
- if (__predict_false((len & F_RSPD_NEWBUF) == 0))
- panic("%s: cannot handle packed frames", __func__);
- len = G_RSPD_LEN(len);
+ m = m->m_next;
bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map,
BUS_DMASYNC_POSTREAD);
- m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR);
-
-#ifdef T4_PKT_TIMESTAMP
- *mtod(m0, uint64_t *) =
- be64toh(ctrl->u.last_flit & 0xfffffffffffffff);
- m0->m_data += 8;
-
- /*
- * 60 bit timestamp value is *(uint64_t *)m0->m_pktdat. Note
- * that it is in the leading free-space (see M_LEADINGSPACE) in
- * the mbuf. The kernel can clobber it during a pullup,
- * m_copymdata, etc. You need to make sure that the mbuf
- * reaches you unmolested if you care about the timestamp.
- */
-#endif
-
- if (len < RX_COPY_THRESHOLD) {
- /* copy data to mbuf, buffer will be recycled */
- bcopy(sd->cl, mtod(m0, caddr_t), len);
- m0->m_len = len;
+ m_init(m, NULL, 0, M_NOWAIT, MT_DATA, 0);
+ if (len <= MLEN) {
+ bcopy(sd->cl, mtod(m, caddr_t), len);
+ m->m_len = len;
} else {
- bus_dmamap_unload(fl->tag[sd->tag_idx], sd->map);
- m_cljset(m0, sd->cl, FL_BUF_TYPE(sd->tag_idx));
+ bus_dmamap_unload(fl->tag[sd->tag_idx],
+ sd->map);
+ m_cljset(m, sd->cl, FL_BUF_TYPE(sd->tag_idx));
sd->cl = NULL; /* consumed */
- m0->m_len = min(len, FL_BUF_SIZE(sd->tag_idx));
+ m->m_len = min(len, FL_BUF_SIZE(sd->tag_idx));
}
- len -= FL_PKTSHIFT;
- m0->m_len -= FL_PKTSHIFT;
- m0->m_data += FL_PKTSHIFT;
-
- m0->m_pkthdr.len = len;
- m0->m_pkthdr.rcvif = ifp;
- m0->m_flags |= M_FLOWID;
- m0->m_pkthdr.flowid = rss->hash_val;
-
- if (cpl->csum_calc && !cpl->err_vec &&
- ifp->if_capenable & IFCAP_RXCSUM) {
- m0->m_pkthdr.csum_flags |= (CSUM_IP_CHECKED |
- CSUM_IP_VALID | CSUM_DATA_VALID | CSUM_PSEUDO_HDR);
- if (cpl->ip_frag)
- m0->m_pkthdr.csum_data = be16toh(cpl->csum);
- else
- m0->m_pkthdr.csum_data = 0xffff;
- rxq->rxcsum++;
- }
-
- if (cpl->vlan_ex) {
- m0->m_pkthdr.ether_vtag = be16toh(cpl->vlan);
- m0->m_flags |= M_VLANTAG;
- rxq->vlan_extraction++;
- }
-
- i = 1; /* # of fl sdesc used */
- sd = sd_next;
- if (__predict_false(++fl->cidx == fl->cap))
+ sd++;
+ if (__predict_false(++fl->cidx == fl->cap)) {
+ sd = fl->sdesc;
fl->cidx = 0;
+ }
- len -= m0->m_len;
- m = m0;
- while (len) {
- i++;
-
- sd_next = sd + 1;
- if (__predict_false(fl->cidx + 1 == fl->cap))
- sd_next = fl->sdesc;
- prefetch(sd_next->m);
- prefetch(sd_next->cl);
-
- m->m_next = sd->m;
- sd->m = NULL; /* consumed */
- m = m->m_next;
-
- bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map,
- BUS_DMASYNC_POSTREAD);
-
- m_init(m, NULL, 0, M_NOWAIT, MT_DATA, 0);
- if (len <= MLEN) {
- bcopy(sd->cl, mtod(m, caddr_t), len);
- m->m_len = len;
- } else {
- bus_dmamap_unload(fl->tag[sd->tag_idx],
- sd->map);
- m_cljset(m, sd->cl, FL_BUF_TYPE(sd->tag_idx));
- sd->cl = NULL; /* consumed */
- m->m_len = min(len, FL_BUF_SIZE(sd->tag_idx));
- }
+ len -= m->m_len;
+ nbuf++;
+ }
- i++;
- sd = sd_next;
- if (__predict_false(++fl->cidx == fl->cap))
- fl->cidx = 0;
+ (*fl_bufs_used) += nbuf;
- len -= m->m_len;
- }
+ return (m0);
+}
+static int
+t4_eth_rx(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m0)
+{
+ struct sge_rxq *rxq = (void *)iq;
+ struct ifnet *ifp = rxq->ifp;
+ const struct cpl_rx_pkt *cpl = (const void *)(rss + 1);
#ifdef INET
- if (cpl->l2info & htobe32(F_RXF_LRO) &&
- rxq->flags & RXQ_LRO_ENABLED &&
- tcp_lro_rx(lro, m0, 0) == 0) {
- /* queued for LRO */
- } else
+ struct lro_ctrl *lro = &rxq->lro;
#endif
- ifp->if_input(ifp, m0);
- FL_LOCK(fl);
- fl->needed += i;
- if (fl->needed >= 32)
- refill_fl(sc, fl, 64, 32);
- FL_UNLOCK(fl);
+ KASSERT(m0 != NULL, ("%s: no payload with opcode %02x", __func__,
+ rss->opcode));
- if (++ndescs > 32) {
- t4_write_reg(sc, MYPF_REG(A_SGE_PF_GTS),
- V_CIDXINC(ndescs) |
- V_INGRESSQID((u32)iq->cntxt_id) |
- V_SEINTARM(V_QINTR_TIMER_IDX(X_TIMERREG_UPDATE_CIDX)));
- ndescs = 0;
- }
+ m0->m_pkthdr.len -= FL_PKTSHIFT;
+ m0->m_len -= FL_PKTSHIFT;
+ m0->m_data += FL_PKTSHIFT;
+
+ m0->m_pkthdr.rcvif = ifp;
+ m0->m_flags |= M_FLOWID;
+ m0->m_pkthdr.flowid = rss->hash_val;
- iq_next(iq);
+ if (cpl->csum_calc && !cpl->err_vec &&
+ ifp->if_capenable & IFCAP_RXCSUM) {
+ m0->m_pkthdr.csum_flags |= (CSUM_IP_CHECKED |
+ CSUM_IP_VALID | CSUM_DATA_VALID | CSUM_PSEUDO_HDR);
+ if (cpl->ip_frag)
+ m0->m_pkthdr.csum_data = be16toh(cpl->csum);
+ else
+ m0->m_pkthdr.csum_data = 0xffff;
+ rxq->rxcsum++;
}
-#ifdef INET
- while (!SLIST_EMPTY(&lro->lro_active)) {
- l = SLIST_FIRST(&lro->lro_active);
- SLIST_REMOVE_HEAD(&lro->lro_active, next);
- tcp_lro_flush(lro, l);
+ if (cpl->vlan_ex) {
+ m0->m_pkthdr.ether_vtag = be16toh(cpl->vlan);
+ m0->m_flags |= M_VLANTAG;
+ rxq->vlan_extraction++;
}
-#endif
- t4_write_reg(sc, MYPF_REG(A_SGE_PF_GTS), V_CIDXINC(ndescs) |
- V_INGRESSQID((u32)iq->cntxt_id) | V_SEINTARM(iq->intr_next));
+#ifdef INET
+ if (cpl->l2info & htobe32(F_RXF_LRO) &&
+ iq->flags & IQ_LRO_ENABLED &&
+ tcp_lro_rx(lro, m0, 0) == 0) {
+ /* queued for LRO */
+ } else
+#endif
+ ifp->if_input(ifp, m0);
- FL_LOCK(fl);
- if (fl->needed >= 32)
- refill_fl(sc, fl, 128, 8);
- FL_UNLOCK(fl);
+ return (0);
}
int
t4_mgmt_tx(struct adapter *sc, struct mbuf *m)
{
- return ctrl_tx(sc, &sc->sge.ctrlq[0], m);
+ return t4_wrq_tx(sc, &sc->sge.mgmtq, m);
+}
+
+/*
+ * Doesn't fail. Holds on to work requests it can't send right away.
+ */
+int
+t4_wrq_tx_locked(struct adapter *sc, struct sge_wrq *wrq, struct mbuf *m0)
+{
+ struct sge_eq *eq = &wrq->eq;
+ int can_reclaim;
+ caddr_t dst;
+ struct mbuf *wr, *next;
+
+ TXQ_LOCK_ASSERT_OWNED(wrq);
+ KASSERT((eq->flags & EQ_TYPEMASK) == EQ_OFLD ||
+ (eq->flags & EQ_TYPEMASK) == EQ_CTRL,
+ ("%s: eq type %d", __func__, eq->flags & EQ_TYPEMASK));
+
+ if (__predict_true(m0 != NULL)) {
+ if (wrq->head)
+ wrq->tail->m_nextpkt = m0;
+ else
+ wrq->head = m0;
+ while (m0->m_nextpkt)
+ m0 = m0->m_nextpkt;
+ wrq->tail = m0;
+ }
+
+ can_reclaim = reclaimable(eq);
+ if (__predict_false(eq->flags & EQ_STALLED)) {
+ if (can_reclaim < tx_resume_threshold(eq))
+ return (0);
+ eq->flags &= ~EQ_STALLED;
+ eq->unstalled++;
+ }
+ eq->cidx += can_reclaim;
+ eq->avail += can_reclaim;
+ if (__predict_false(eq->cidx >= eq->cap))
+ eq->cidx -= eq->cap;
+
+ for (wr = wrq->head; wr; wr = next) {
+ int ndesc;
+ struct mbuf *m;
+
+ next = wr->m_nextpkt;
+ wr->m_nextpkt = NULL;
+
+ M_ASSERTPKTHDR(wr);
+ KASSERT(wr->m_pkthdr.len > 0 && (wr->m_pkthdr.len & 0x7) == 0,
+ ("%s: work request len %d.", __func__, wr->m_pkthdr.len));
+
+ if (wr->m_pkthdr.len > SGE_MAX_WR_LEN) {
+#ifdef INVARIANTS
+ panic("%s: oversized work request", __func__);
+#else
+ log(LOG_ERR, "%s: %s work request too long (%d)",
+ device_get_nameunit(sc->dev), __func__,
+ wr->m_pkthdr.len);
+ m_freem(wr);
+ continue;
+#endif
+ }
+
+ ndesc = howmany(wr->m_pkthdr.len, EQ_ESIZE);
+ if (eq->avail < ndesc) {
+ wr->m_nextpkt = next;
+ wrq->no_desc++;
+ break;
+ }
+
+ dst = (void *)&eq->desc[eq->pidx];
+ for (m = wr; m; m = m->m_next)
+ copy_to_txd(eq, mtod(m, caddr_t), &dst, m->m_len);
+
+ eq->pidx += ndesc;
+ eq->avail -= ndesc;
+ if (__predict_false(eq->pidx >= eq->cap))
+ eq->pidx -= eq->cap;
+
+ eq->pending += ndesc;
+ if (eq->pending > 16)
+ ring_eq_db(sc, eq);
+
+ wrq->tx_wrs++;
+ m_freem(wr);
+
+ if (eq->avail < 8) {
+ can_reclaim = reclaimable(eq);
+ eq->cidx += can_reclaim;
+ eq->avail += can_reclaim;
+ if (__predict_false(eq->cidx >= eq->cap))
+ eq->cidx -= eq->cap;
+ }
+ }
+
+ if (eq->pending)
+ ring_eq_db(sc, eq);
+
+ if (wr == NULL)
+ wrq->head = wrq->tail = NULL;
+ else {
+ wrq->head = wr;
+
+ KASSERT(wrq->tail->m_nextpkt == NULL,
+ ("%s: wrq->tail grew a tail of its own", __func__));
+
+ eq->flags |= EQ_STALLED;
+ if (callout_pending(&eq->tx_callout) == 0)
+ callout_reset(&eq->tx_callout, 1, t4_tx_callout, eq);
+ }
+
+ return (0);
}
/* Per-packet header in a coalesced tx WR, before the SGL starts (in flits) */
@@ -852,6 +1233,8 @@ t4_eth_tx(struct ifnet *ifp, struct sge_txq *txq, struct mbuf *m)
TXQ_LOCK_ASSERT_OWNED(txq);
KASSERT(m, ("%s: called with nothing to do.", __func__));
+ KASSERT((eq->flags & EQ_TYPEMASK) == EQ_ETH,
+ ("%s: eq type %d", __func__, eq->flags & EQ_TYPEMASK));
prefetch(&eq->desc[eq->pidx]);
prefetch(&txq->sdesc[eq->pidx]);
@@ -859,8 +1242,25 @@ t4_eth_tx(struct ifnet *ifp, struct sge_txq *txq, struct mbuf *m)
txpkts.npkt = 0;/* indicates there's nothing in txpkts */
coalescing = 0;
- if (eq->avail < 8)
- reclaim_tx_descs(txq, 0, 8);
+ can_reclaim = reclaimable(eq);
+ if (__predict_false(eq->flags & EQ_STALLED)) {
+ if (can_reclaim < tx_resume_threshold(eq)) {
+ txq->m = m;
+ return (0);
+ }
+ eq->flags &= ~EQ_STALLED;
+ eq->unstalled++;
+ }
+
+ if (__predict_false(eq->flags & EQ_DOOMED)) {
+ m_freem(m);
+ while ((m = buf_ring_dequeue_sc(txq->br)) != NULL)
+ m_freem(m);
+ return (ENETDOWN);
+ }
+
+ if (eq->avail < 8 && can_reclaim)
+ reclaim_tx_descs(txq, can_reclaim, 32);
for (; m; m = next ? next : drbr_dequeue(ifp, br)) {
@@ -938,15 +1338,13 @@ t4_eth_tx(struct ifnet *ifp, struct sge_txq *txq, struct mbuf *m)
ETHER_BPF_MTAP(ifp, m);
if (sgl.nsegs == 0)
m_freem(m);
-
doorbell:
- /* Fewer and fewer doorbells as the queue fills up */
- if (eq->pending >= (1 << (fls(eq->qsize - eq->avail) / 2)))
+ if (eq->pending >= 64)
ring_eq_db(sc, eq);
can_reclaim = reclaimable(eq);
if (can_reclaim >= 32)
- reclaim_tx_descs(txq, can_reclaim, 32);
+ reclaim_tx_descs(txq, can_reclaim, 64);
}
if (txpkts.npkt > 0)
@@ -957,14 +1355,17 @@ doorbell:
* This can happen when we're short of tx descriptors (no_desc) or maybe
* even DMA maps (no_dmamap). Either way, a credit flush and reclaim
* will get things going again.
- *
- * If eq->avail is already 0 we know a credit flush was requested in the
- * WR that reduced it to 0 so we don't need another flush (we don't have
- * any descriptor for a flush WR anyway, duh).
*/
- if (m && eq->avail > 0 && !(eq->flags & EQ_CRFLUSHED)) {
+ if (m && !(eq->flags & EQ_CRFLUSHED)) {
struct tx_sdesc *txsd = &txq->sdesc[eq->pidx];
+ /*
+ * If EQ_CRFLUSHED is not set then we know we have at least one
+ * available descriptor because any WR that reduces eq->avail to
+ * 0 also sets EQ_CRFLUSHED.
+ */
+ KASSERT(eq->avail > 0, ("%s: no space for eqflush.", __func__));
+
txsd->desc_used = 1;
txsd->credits = 0;
write_eqflush_wr(eq);
@@ -974,9 +1375,10 @@ doorbell:
if (eq->pending)
ring_eq_db(sc, eq);
- can_reclaim = reclaimable(eq);
- if (can_reclaim >= 32)
- reclaim_tx_descs(txq, can_reclaim, 128);
+ reclaim_tx_descs(txq, 0, 128);
+
+ if (eq->flags & EQ_STALLED && callout_pending(&eq->tx_callout) == 0)
+ callout_reset(&eq->tx_callout, 1, t4_tx_callout, eq);
return (0);
}
@@ -987,24 +1389,29 @@ t4_update_fl_bufsize(struct ifnet *ifp)
struct port_info *pi = ifp->if_softc;
struct sge_rxq *rxq;
struct sge_fl *fl;
- int i;
+ int i, bufsize;
+ /* large enough for a frame even when VLAN extraction is disabled */
+ bufsize = FL_PKTSHIFT + ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN +
+ ifp->if_mtu;
for_each_rxq(pi, i, rxq) {
fl = &rxq->fl;
FL_LOCK(fl);
- set_fl_tag_idx(fl, ifp->if_mtu);
+ set_fl_tag_idx(fl, bufsize);
FL_UNLOCK(fl);
}
}
-/*
- * A non-NULL handler indicates this iq will not receive direct interrupts, the
- * handler will be invoked by an interrupt queue.
- */
+int
+can_resume_tx(struct sge_eq *eq)
+{
+ return (reclaimable(eq) >= tx_resume_threshold(eq));
+}
+
static inline void
init_iq(struct sge_iq *iq, struct adapter *sc, int tmr_idx, int pktc_idx,
- int qsize, int esize, iq_intr_handler_t *handler, char *name)
+ int qsize, int esize, char *name)
{
KASSERT(tmr_idx >= 0 && tmr_idx < SGE_NTIMERS,
("%s: bad tmr_idx %d", __func__, tmr_idx));
@@ -1018,22 +1425,32 @@ init_iq(struct sge_iq *iq, struct adapter *sc, int tmr_idx, int pktc_idx,
iq->intr_pktc_idx = pktc_idx;
iq->qsize = roundup(qsize, 16); /* See FW_IQ_CMD/iqsize */
iq->esize = max(esize, 16); /* See FW_IQ_CMD/iqesize */
- iq->handler = handler;
strlcpy(iq->lockname, name, sizeof(iq->lockname));
}
static inline void
-init_fl(struct sge_fl *fl, int qsize, char *name)
+init_fl(struct sge_fl *fl, int qsize, int bufsize, char *name)
{
fl->qsize = qsize;
strlcpy(fl->lockname, name, sizeof(fl->lockname));
+ set_fl_tag_idx(fl, bufsize);
}
static inline void
-init_eq(struct sge_eq *eq, int qsize, char *name)
+init_eq(struct sge_eq *eq, int eqtype, int qsize, uint8_t tx_chan,
+ uint16_t iqid, char *name)
{
+ KASSERT(tx_chan < NCHAN, ("%s: bad tx channel %d", __func__, tx_chan));
+ KASSERT(eqtype <= EQ_TYPEMASK, ("%s: bad qtype %d", __func__, eqtype));
+
+ eq->flags = eqtype & EQ_TYPEMASK;
+ eq->tx_chan = tx_chan;
+ eq->iqid = iqid;
eq->qsize = qsize;
strlcpy(eq->lockname, name, sizeof(eq->lockname));
+
+ TASK_INIT(&eq->tx_task, 0, t4_tx_task, eq);
+ callout_init(&eq->tx_callout, CALLOUT_MPSAFE);
}
static int
@@ -1090,9 +1507,9 @@ free_ring(struct adapter *sc, bus_dma_tag_t tag, bus_dmamap_t map,
* Returns errno on failure. Resources allocated up to that point may still be
* allocated. Caller is responsible for cleanup in case this function fails.
*
- * If the ingress queue will take interrupts directly (iq->handler == NULL) then
+ * If the ingress queue will take interrupts directly (iq->flags & IQ_INTR) then
* the intr_idx specifies the vector, starting from 0. Otherwise it specifies
- * the index of the interrupt queue to which its interrupts will be forwarded.
+ * the abs_id of the ingress queue to which its interrupts should be forwarded.
*/
static int
alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl,
@@ -1122,16 +1539,12 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl,
if (iq == &sc->sge.fwq)
v |= F_FW_IQ_CMD_IQASYNCH;
- if (iq->handler) {
- KASSERT(intr_idx < NINTRQ(sc),
- ("%s: invalid indirect intr_idx %d", __func__, intr_idx));
- v |= F_FW_IQ_CMD_IQANDST;
- v |= V_FW_IQ_CMD_IQANDSTINDEX(sc->sge.intrq[intr_idx].abs_id);
- } else {
+ if (iq->flags & IQ_INTR) {
KASSERT(intr_idx < sc->intr_count,
("%s: invalid direct intr_idx %d", __func__, intr_idx));
- v |= V_FW_IQ_CMD_IQANDSTINDEX(intr_idx);
- }
+ } else
+ v |= F_FW_IQ_CMD_IQANDST;
+ v |= V_FW_IQ_CMD_IQANDSTINDEX(intr_idx);
c.type_to_iqandstindex = htobe32(v |
V_FW_IQ_CMD_TYPE(FW_IQ_TYPE_FL_INT_CAP) |
@@ -1176,7 +1589,6 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl,
/* Allocate space for one software descriptor per buffer. */
fl->cap = (fl->qsize - SPG_LEN / RX_FL_ESIZE) * 8;
FL_LOCK(fl);
- set_fl_tag_idx(fl, pi->ifp->if_mtu);
rc = alloc_fl_sdesc(fl);
FL_UNLOCK(fl);
if (rc != 0) {
@@ -1186,8 +1598,9 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl,
return (rc);
}
fl->needed = fl->cap;
+ fl->lowat = roundup(sc->sge.fl_starve_threshold, 8);
- c.iqns_to_fl0congen =
+ c.iqns_to_fl0congen |=
htobe32(V_FW_IQ_CMD_FL0HOSTFCMODE(X_HOSTFCMODE_NONE) |
F_FW_IQ_CMD_FL0FETCHRO | F_FW_IQ_CMD_FL0DATARO |
F_FW_IQ_CMD_FL0PADEN);
@@ -1217,12 +1630,13 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl,
iq->intr_next = iq->intr_params;
iq->cntxt_id = be16toh(c.iqid);
iq->abs_id = be16toh(c.physiqid);
- iq->flags |= (IQ_ALLOCATED | IQ_STARTED);
+ iq->flags |= IQ_ALLOCATED;
cntxt_id = iq->cntxt_id - sc->sge.iq_start;
- KASSERT(cntxt_id < sc->sge.niq,
- ("%s: iq->cntxt_id (%d) more than the max (%d)", __func__,
- cntxt_id, sc->sge.niq - 1));
+ if (cntxt_id >= sc->sge.niq) {
+ panic ("%s: iq->cntxt_id (%d) more than the max (%d)", __func__,
+ cntxt_id, sc->sge.niq - 1);
+ }
sc->sge.iqmap[cntxt_id] = iq;
if (fl) {
@@ -1230,29 +1644,28 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl,
fl->pidx = fl->cidx = 0;
cntxt_id = fl->cntxt_id - sc->sge.eq_start;
- KASSERT(cntxt_id < sc->sge.neq,
- ("%s: fl->cntxt_id (%d) more than the max (%d)", __func__,
- cntxt_id, sc->sge.neq - 1));
+ if (cntxt_id >= sc->sge.neq) {
+ panic("%s: fl->cntxt_id (%d) more than the max (%d)",
+ __func__, cntxt_id, sc->sge.neq - 1);
+ }
sc->sge.eqmap[cntxt_id] = (void *)fl;
FL_LOCK(fl);
- /* Just enough to make sure it doesn't starve right away. */
- refill_fl(sc, fl, roundup(sc->sge.fl_starve_threshold, 8), 8);
+ /* Enough to make sure the SGE doesn't think it's starved */
+ refill_fl(sc, fl, fl->lowat);
FL_UNLOCK(fl);
+
+ iq->flags |= IQ_HAS_FL;
}
/* Enable IQ interrupts */
- atomic_store_rel_32(&iq->state, IQS_IDLE);
+ atomic_store_rel_int(&iq->state, IQS_IDLE);
t4_write_reg(sc, MYPF_REG(A_SGE_PF_GTS), V_SEINTARM(iq->intr_params) |
V_INGRESSQID(iq->cntxt_id));
return (0);
}
-/*
- * This can be called with the iq/fl in any state - fully allocated and
- * functional, partially allocated, even all-zeroed out.
- */
static int
free_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl)
{
@@ -1265,23 +1678,7 @@ free_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl)
dev = pi ? pi->dev : sc->dev;
- if (iq->flags & IQ_STARTED) {
- rc = -t4_iq_start_stop(sc, sc->mbox, 0, sc->pf, 0,
- iq->cntxt_id, fl ? fl->cntxt_id : 0xffff, 0xffff);
- if (rc != 0) {
- device_printf(dev,
- "failed to stop queue %p: %d\n", iq, rc);
- return (rc);
- }
- iq->flags &= ~IQ_STARTED;
-
- /* Synchronize with the interrupt handler */
- while (!atomic_cmpset_32(&iq->state, IQS_IDLE, IQS_DISABLED))
- pause("iqfree", hz / 1000);
- }
-
if (iq->flags & IQ_ALLOCATED) {
-
rc = -t4_iq_free(sc, sc->mbox, sc->pf, 0,
FW_IQ_TYPE_FL_INT_CAP, iq->cntxt_id,
fl ? fl->cntxt_id : 0xffff, 0xffff);
@@ -1322,76 +1719,84 @@ free_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl)
}
static int
-alloc_intrq(struct adapter *sc, int port_idx, int intrq_idx, int intr_idx)
+alloc_fwq(struct adapter *sc)
{
- int rc;
- struct sysctl_oid *oid;
- struct sysctl_oid_list *children;
+ int rc, intr_idx;
+ struct sge_iq *fwq = &sc->sge.fwq;
char name[16];
- struct sge_iq *intrq = &sc->sge.intrq[intrq_idx];
+ struct sysctl_oid *oid = device_get_sysctl_tree(sc->dev);
+ struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid);
- rc = alloc_iq_fl(sc->port[port_idx], intrq, NULL, intr_idx, -1);
- if (rc != 0)
+ snprintf(name, sizeof(name), "%s fwq", device_get_nameunit(sc->dev));
+ init_iq(fwq, sc, 0, 0, FW_IQ_QSIZE, FW_IQ_ESIZE, name);
+ fwq->flags |= IQ_INTR; /* always */
+ intr_idx = sc->intr_count > 1 ? 1 : 0;
+ rc = alloc_iq_fl(sc->port[0], fwq, NULL, intr_idx, -1);
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to create firmware event queue: %d\n", rc);
return (rc);
+ }
- children = SYSCTL_CHILDREN(sc->oid_intrq);
-
- snprintf(name, sizeof(name), "%d", intrq_idx);
- oid = SYSCTL_ADD_NODE(&sc->ctx, children, OID_AUTO, name, CTLFLAG_RD,
- NULL, "interrupt queue");
+ oid = SYSCTL_ADD_NODE(&sc->ctx, children, OID_AUTO, "fwq", CTLFLAG_RD,
+ NULL, "firmware event queue");
children = SYSCTL_CHILDREN(oid);
+ SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "abs_id",
+ CTLTYPE_INT | CTLFLAG_RD, &fwq->abs_id, 0, sysctl_uint16, "I",
+ "absolute id of the queue");
+ SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "cntxt_id",
+ CTLTYPE_INT | CTLFLAG_RD, &fwq->cntxt_id, 0, sysctl_uint16, "I",
+ "SGE context id of the queue");
SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "cidx",
- CTLTYPE_INT | CTLFLAG_RD, &intrq->cidx, 0, sysctl_uint16, "I",
+ CTLTYPE_INT | CTLFLAG_RD, &fwq->cidx, 0, sysctl_uint16, "I",
"consumer index");
- return (rc);
+ return (0);
}
static int
-free_intrq(struct sge_iq *iq)
+free_fwq(struct adapter *sc)
{
- return free_iq_fl(NULL, iq, NULL);
-
+ return free_iq_fl(NULL, &sc->sge.fwq, NULL);
}
static int
-alloc_fwq(struct adapter *sc, int intr_idx)
+alloc_mgmtq(struct adapter *sc)
{
int rc;
- struct sysctl_oid_list *children;
- struct sge_iq *fwq = &sc->sge.fwq;
-
- rc = alloc_iq_fl(sc->port[0], fwq, NULL, intr_idx, -1);
- if (rc != 0)
- return (rc);
+ struct sge_wrq *mgmtq = &sc->sge.mgmtq;
+ char name[16];
+ struct sysctl_oid *oid = device_get_sysctl_tree(sc->dev);
+ struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid);
- children = SYSCTL_CHILDREN(sc->oid_fwq);
+ oid = SYSCTL_ADD_NODE(&sc->ctx, children, OID_AUTO, "mgmtq", CTLFLAG_RD,
+ NULL, "management queue");
- SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "abs_id",
- CTLTYPE_INT | CTLFLAG_RD, &fwq->abs_id, 0, sysctl_uint16, "I",
- "absolute id of the queue");
- SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "cntxt_id",
- CTLTYPE_INT | CTLFLAG_RD, &fwq->cntxt_id, 0, sysctl_uint16, "I",
- "SGE context id of the queue");
- SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "cidx",
- CTLTYPE_INT | CTLFLAG_RD, &fwq->cidx, 0, sysctl_uint16, "I",
- "consumer index");
+ snprintf(name, sizeof(name), "%s mgmtq", device_get_nameunit(sc->dev));
+ init_eq(&mgmtq->eq, EQ_CTRL, CTRL_EQ_QSIZE, sc->port[0]->tx_chan,
+ sc->sge.fwq.cntxt_id, name);
+ rc = alloc_wrq(sc, NULL, mgmtq, oid);
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to create management queue: %d\n", rc);
+ return (rc);
+ }
- return (rc);
+ return (0);
}
static int
-free_fwq(struct sge_iq *iq)
+free_mgmtq(struct adapter *sc)
{
- return free_iq_fl(NULL, iq, NULL);
+ return free_wrq(sc, &sc->sge.mgmtq);
}
static int
-alloc_rxq(struct port_info *pi, struct sge_rxq *rxq, int intr_idx, int idx)
+alloc_rxq(struct port_info *pi, struct sge_rxq *rxq, int intr_idx, int idx,
+ struct sysctl_oid *oid)
{
int rc;
- struct sysctl_oid *oid;
struct sysctl_oid_list *children;
char name[16];
@@ -1400,7 +1805,7 @@ alloc_rxq(struct port_info *pi, struct sge_rxq *rxq, int intr_idx, int idx)
return (rc);
FL_LOCK(&rxq->fl);
- refill_fl(pi->adapter, &rxq->fl, rxq->fl.needed / 8, 8);
+ refill_fl(pi->adapter, &rxq->fl, rxq->fl.needed / 8);
FL_UNLOCK(&rxq->fl);
#ifdef INET
@@ -1410,11 +1815,11 @@ alloc_rxq(struct port_info *pi, struct sge_rxq *rxq, int intr_idx, int idx)
rxq->lro.ifp = pi->ifp; /* also indicates LRO init'ed */
if (pi->ifp->if_capenable & IFCAP_LRO)
- rxq->flags |= RXQ_LRO_ENABLED;
+ rxq->iq.flags |= IQ_LRO_ENABLED;
#endif
rxq->ifp = pi->ifp;
- children = SYSCTL_CHILDREN(pi->oid_rxq);
+ children = SYSCTL_CHILDREN(oid);
snprintf(name, sizeof(name), "%d", idx);
oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, name, CTLFLAG_RD,
@@ -1477,32 +1882,71 @@ free_rxq(struct port_info *pi, struct sge_rxq *rxq)
return (rc);
}
+#ifndef TCP_OFFLOAD_DISABLE
static int
-alloc_ctrlq(struct adapter *sc, struct sge_ctrlq *ctrlq, int idx)
+alloc_ofld_rxq(struct port_info *pi, struct sge_ofld_rxq *ofld_rxq,
+ int intr_idx, int idx, struct sysctl_oid *oid)
{
- int rc, cntxt_id;
- size_t len;
- struct fw_eq_ctrl_cmd c;
- struct sge_eq *eq = &ctrlq->eq;
- char name[16];
- struct sysctl_oid *oid;
+ int rc;
struct sysctl_oid_list *children;
+ char name[16];
- mtx_init(&eq->eq_lock, eq->lockname, NULL, MTX_DEF);
-
- len = eq->qsize * CTRL_EQ_ESIZE;
- rc = alloc_ring(sc, len, &eq->desc_tag, &eq->desc_map,
- &eq->ba, (void **)&eq->desc);
- if (rc)
+ rc = alloc_iq_fl(pi, &ofld_rxq->iq, &ofld_rxq->fl, intr_idx,
+ 1 << pi->tx_chan);
+ if (rc != 0)
return (rc);
- eq->cap = eq->qsize - SPG_LEN / CTRL_EQ_ESIZE;
- eq->spg = (void *)&eq->desc[eq->cap];
- eq->avail = eq->cap - 1; /* one less to avoid cidx = pidx */
- if (sc->flags & INTR_SHARED)
- eq->iqid = sc->sge.intrq[idx % NINTRQ(sc)].cntxt_id;
- else
- eq->iqid = sc->sge.intrq[sc->port[idx]->first_rxq].cntxt_id;
+ children = SYSCTL_CHILDREN(oid);
+
+ snprintf(name, sizeof(name), "%d", idx);
+ oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, name, CTLFLAG_RD,
+ NULL, "rx queue");
+ children = SYSCTL_CHILDREN(oid);
+
+ SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "abs_id",
+ CTLTYPE_INT | CTLFLAG_RD, &ofld_rxq->iq.abs_id, 0, sysctl_uint16,
+ "I", "absolute id of the queue");
+ SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "cntxt_id",
+ CTLTYPE_INT | CTLFLAG_RD, &ofld_rxq->iq.cntxt_id, 0, sysctl_uint16,
+ "I", "SGE context id of the queue");
+ SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "cidx",
+ CTLTYPE_INT | CTLFLAG_RD, &ofld_rxq->iq.cidx, 0, sysctl_uint16, "I",
+ "consumer index");
+
+ children = SYSCTL_CHILDREN(oid);
+ oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "fl", CTLFLAG_RD,
+ NULL, "freelist");
+ children = SYSCTL_CHILDREN(oid);
+
+ SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "cntxt_id",
+ CTLTYPE_INT | CTLFLAG_RD, &ofld_rxq->fl.cntxt_id, 0, sysctl_uint16,
+ "I", "SGE context id of the queue");
+ SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "cidx", CTLFLAG_RD,
+ &ofld_rxq->fl.cidx, 0, "consumer index");
+ SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "pidx", CTLFLAG_RD,
+ &ofld_rxq->fl.pidx, 0, "producer index");
+
+ return (rc);
+}
+
+static int
+free_ofld_rxq(struct port_info *pi, struct sge_ofld_rxq *ofld_rxq)
+{
+ int rc;
+
+ rc = free_iq_fl(pi, &ofld_rxq->iq, &ofld_rxq->fl);
+ if (rc == 0)
+ bzero(ofld_rxq, sizeof(*ofld_rxq));
+
+ return (rc);
+}
+#endif
+
+static int
+ctrl_eq_alloc(struct adapter *sc, struct sge_eq *eq)
+{
+ int rc, cntxt_id;
+ struct fw_eq_ctrl_cmd c;
bzero(&c, sizeof(c));
@@ -1515,7 +1959,7 @@ alloc_ctrlq(struct adapter *sc, struct sge_ctrlq *ctrlq, int idx)
c.physeqid_pkd = htobe32(0);
c.fetchszm_to_iqid =
htobe32(V_FW_EQ_CTRL_CMD_HOSTFCMODE(X_HOSTFCMODE_STATUS_PAGE) |
- V_FW_EQ_CTRL_CMD_PCIECHN(sc->port[idx]->tx_chan) |
+ V_FW_EQ_CTRL_CMD_PCIECHN(eq->tx_chan) |
F_FW_EQ_CTRL_CMD_FETCHRO | V_FW_EQ_CTRL_CMD_IQID(eq->iqid));
c.dcaen_to_eqsize =
htobe32(V_FW_EQ_CTRL_CMD_FBMIN(X_FETCHBURSTMIN_64B) |
@@ -1527,51 +1971,191 @@ alloc_ctrlq(struct adapter *sc, struct sge_ctrlq *ctrlq, int idx)
rc = -t4_wr_mbox(sc, sc->mbox, &c, sizeof(c), &c);
if (rc != 0) {
device_printf(sc->dev,
- "failed to create control queue %d: %d\n", idx, rc);
+ "failed to create control queue %d: %d\n", eq->tx_chan, rc);
return (rc);
}
+ eq->flags |= EQ_ALLOCATED;
- eq->pidx = eq->cidx = 0;
eq->cntxt_id = G_FW_EQ_CTRL_CMD_EQID(be32toh(c.cmpliqid_eqid));
- eq->flags |= (EQ_ALLOCATED | EQ_STARTED);
+ cntxt_id = eq->cntxt_id - sc->sge.eq_start;
+ if (cntxt_id >= sc->sge.neq)
+ panic("%s: eq->cntxt_id (%d) more than the max (%d)", __func__,
+ cntxt_id, sc->sge.neq - 1);
+ sc->sge.eqmap[cntxt_id] = eq;
+
+ return (rc);
+}
+
+static int
+eth_eq_alloc(struct adapter *sc, struct port_info *pi, struct sge_eq *eq)
+{
+ int rc, cntxt_id;
+ struct fw_eq_eth_cmd c;
+
+ bzero(&c, sizeof(c));
+ c.op_to_vfn = htobe32(V_FW_CMD_OP(FW_EQ_ETH_CMD) | F_FW_CMD_REQUEST |
+ F_FW_CMD_WRITE | F_FW_CMD_EXEC | V_FW_EQ_ETH_CMD_PFN(sc->pf) |
+ V_FW_EQ_ETH_CMD_VFN(0));
+ c.alloc_to_len16 = htobe32(F_FW_EQ_ETH_CMD_ALLOC |
+ F_FW_EQ_ETH_CMD_EQSTART | FW_LEN16(c));
+ c.viid_pkd = htobe32(V_FW_EQ_ETH_CMD_VIID(pi->viid));
+ c.fetchszm_to_iqid =
+ htobe32(V_FW_EQ_ETH_CMD_HOSTFCMODE(X_HOSTFCMODE_STATUS_PAGE) |
+ V_FW_EQ_ETH_CMD_PCIECHN(eq->tx_chan) | F_FW_EQ_ETH_CMD_FETCHRO |
+ V_FW_EQ_ETH_CMD_IQID(eq->iqid));
+ c.dcaen_to_eqsize = htobe32(V_FW_EQ_ETH_CMD_FBMIN(X_FETCHBURSTMIN_64B) |
+ V_FW_EQ_ETH_CMD_FBMAX(X_FETCHBURSTMAX_512B) |
+ V_FW_EQ_ETH_CMD_CIDXFTHRESH(X_CIDXFLUSHTHRESH_32) |
+ V_FW_EQ_ETH_CMD_EQSIZE(eq->qsize));
+ c.eqaddr = htobe64(eq->ba);
+
+ rc = -t4_wr_mbox(sc, sc->mbox, &c, sizeof(c), &c);
+ if (rc != 0) {
+ device_printf(pi->dev,
+ "failed to create Ethernet egress queue: %d\n", rc);
+ return (rc);
+ }
+ eq->flags |= EQ_ALLOCATED;
+
+ eq->cntxt_id = G_FW_EQ_ETH_CMD_EQID(be32toh(c.eqid_pkd));
cntxt_id = eq->cntxt_id - sc->sge.eq_start;
- KASSERT(cntxt_id < sc->sge.neq,
- ("%s: eq->cntxt_id (%d) more than the max (%d)", __func__,
- cntxt_id, sc->sge.neq - 1));
+ if (cntxt_id >= sc->sge.neq)
+ panic("%s: eq->cntxt_id (%d) more than the max (%d)", __func__,
+ cntxt_id, sc->sge.neq - 1);
sc->sge.eqmap[cntxt_id] = eq;
- children = SYSCTL_CHILDREN(sc->oid_ctrlq);
+ return (rc);
+}
- snprintf(name, sizeof(name), "%d", idx);
- oid = SYSCTL_ADD_NODE(&sc->ctx, children, OID_AUTO, name, CTLFLAG_RD,
- NULL, "ctrl queue");
- children = SYSCTL_CHILDREN(oid);
+#ifndef TCP_OFFLOAD_DISABLE
+static int
+ofld_eq_alloc(struct adapter *sc, struct port_info *pi, struct sge_eq *eq)
+{
+ int rc, cntxt_id;
+ struct fw_eq_ofld_cmd c;
- SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "pidx",
- CTLTYPE_INT | CTLFLAG_RD, &ctrlq->eq.pidx, 0, sysctl_uint16, "I",
- "producer index");
- SYSCTL_ADD_UINT(&sc->ctx, children, OID_AUTO, "no_desc", CTLFLAG_RD,
- &ctrlq->no_desc, 0,
- "# of times ctrlq ran out of hardware descriptors");
+ bzero(&c, sizeof(c));
+
+ c.op_to_vfn = htonl(V_FW_CMD_OP(FW_EQ_OFLD_CMD) | F_FW_CMD_REQUEST |
+ F_FW_CMD_WRITE | F_FW_CMD_EXEC | V_FW_EQ_OFLD_CMD_PFN(sc->pf) |
+ V_FW_EQ_OFLD_CMD_VFN(0));
+ c.alloc_to_len16 = htonl(F_FW_EQ_OFLD_CMD_ALLOC |
+ F_FW_EQ_OFLD_CMD_EQSTART | FW_LEN16(c));
+ c.fetchszm_to_iqid =
+ htonl(V_FW_EQ_OFLD_CMD_HOSTFCMODE(X_HOSTFCMODE_STATUS_PAGE) |
+ V_FW_EQ_OFLD_CMD_PCIECHN(eq->tx_chan) |
+ F_FW_EQ_OFLD_CMD_FETCHRO | V_FW_EQ_OFLD_CMD_IQID(eq->iqid));
+ c.dcaen_to_eqsize =
+ htobe32(V_FW_EQ_OFLD_CMD_FBMIN(X_FETCHBURSTMIN_64B) |
+ V_FW_EQ_OFLD_CMD_FBMAX(X_FETCHBURSTMAX_512B) |
+ V_FW_EQ_OFLD_CMD_CIDXFTHRESH(X_CIDXFLUSHTHRESH_32) |
+ V_FW_EQ_OFLD_CMD_EQSIZE(eq->qsize));
+ c.eqaddr = htobe64(eq->ba);
+
+ rc = -t4_wr_mbox(sc, sc->mbox, &c, sizeof(c), &c);
+ if (rc != 0) {
+ device_printf(pi->dev,
+ "failed to create egress queue for TCP offload: %d\n", rc);
+ return (rc);
+ }
+ eq->flags |= EQ_ALLOCATED;
+
+ eq->cntxt_id = G_FW_EQ_OFLD_CMD_EQID(be32toh(c.eqid_pkd));
+ cntxt_id = eq->cntxt_id - sc->sge.eq_start;
+ if (cntxt_id >= sc->sge.neq)
+ panic("%s: eq->cntxt_id (%d) more than the max (%d)", __func__,
+ cntxt_id, sc->sge.neq - 1);
+ sc->sge.eqmap[cntxt_id] = eq;
+
+ return (rc);
+}
+#endif
+
+static int
+alloc_eq(struct adapter *sc, struct port_info *pi, struct sge_eq *eq)
+{
+ int rc;
+ size_t len;
+
+ mtx_init(&eq->eq_lock, eq->lockname, NULL, MTX_DEF);
+
+ len = eq->qsize * EQ_ESIZE;
+ rc = alloc_ring(sc, len, &eq->desc_tag, &eq->desc_map,
+ &eq->ba, (void **)&eq->desc);
+ if (rc)
+ return (rc);
+
+ eq->cap = eq->qsize - SPG_LEN / EQ_ESIZE;
+ eq->spg = (void *)&eq->desc[eq->cap];
+ eq->avail = eq->cap - 1; /* one less to avoid cidx = pidx */
+ eq->pidx = eq->cidx = 0;
+
+ switch (eq->flags & EQ_TYPEMASK) {
+ case EQ_CTRL:
+ rc = ctrl_eq_alloc(sc, eq);
+ break;
+
+ case EQ_ETH:
+ rc = eth_eq_alloc(sc, pi, eq);
+ break;
+
+#ifndef TCP_OFFLOAD_DISABLE
+ case EQ_OFLD:
+ rc = ofld_eq_alloc(sc, pi, eq);
+ break;
+#endif
+
+ default:
+ panic("%s: invalid eq type %d.", __func__,
+ eq->flags & EQ_TYPEMASK);
+ }
+ if (rc != 0) {
+ device_printf(sc->dev,
+ "failed to allocate egress queue(%d): %d",
+ eq->flags & EQ_TYPEMASK, rc);
+ }
+
+ eq->tx_callout.c_cpu = eq->cntxt_id % mp_ncpus;
return (rc);
}
static int
-free_ctrlq(struct adapter *sc, struct sge_ctrlq *ctrlq)
+free_eq(struct adapter *sc, struct sge_eq *eq)
{
int rc;
- struct sge_eq *eq = &ctrlq->eq;
- if (eq->flags & (EQ_ALLOCATED | EQ_STARTED)) {
- rc = -t4_ctrl_eq_free(sc, sc->mbox, sc->pf, 0, eq->cntxt_id);
+ if (eq->flags & EQ_ALLOCATED) {
+ switch (eq->flags & EQ_TYPEMASK) {
+ case EQ_CTRL:
+ rc = -t4_ctrl_eq_free(sc, sc->mbox, sc->pf, 0,
+ eq->cntxt_id);
+ break;
+
+ case EQ_ETH:
+ rc = -t4_eth_eq_free(sc, sc->mbox, sc->pf, 0,
+ eq->cntxt_id);
+ break;
+
+#ifndef TCP_OFFLOAD_DISABLE
+ case EQ_OFLD:
+ rc = -t4_ofld_eq_free(sc, sc->mbox, sc->pf, 0,
+ eq->cntxt_id);
+ break;
+#endif
+
+ default:
+ panic("%s: invalid eq type %d.", __func__,
+ eq->flags & EQ_TYPEMASK);
+ }
if (rc != 0) {
device_printf(sc->dev,
- "failed to free ctrl queue %p: %d\n", eq, rc);
+ "failed to free egress queue (%d): %d\n",
+ eq->flags & EQ_TYPEMASK, rc);
return (rc);
}
- eq->flags &= ~(EQ_ALLOCATED | EQ_STARTED);
+ eq->flags &= ~EQ_ALLOCATED;
}
free_ring(sc, eq->desc_tag, eq->desc_map, eq->ba, eq->desc);
@@ -1579,47 +2163,77 @@ free_ctrlq(struct adapter *sc, struct sge_ctrlq *ctrlq)
if (mtx_initialized(&eq->eq_lock))
mtx_destroy(&eq->eq_lock);
- bzero(ctrlq, sizeof(*ctrlq));
+ bzero(eq, sizeof(*eq));
return (0);
}
static int
-alloc_txq(struct port_info *pi, struct sge_txq *txq, int idx)
+alloc_wrq(struct adapter *sc, struct port_info *pi, struct sge_wrq *wrq,
+ struct sysctl_oid *oid)
{
- int rc, cntxt_id;
- size_t len;
+ int rc;
+ struct sysctl_ctx_list *ctx = pi ? &pi->ctx : &sc->ctx;
+ struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid);
+
+ rc = alloc_eq(sc, pi, &wrq->eq);
+ if (rc)
+ return (rc);
+
+ wrq->adapter = sc;
+
+ SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD,
+ &wrq->eq.cntxt_id, 0, "SGE context id of the queue");
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "cidx",
+ CTLTYPE_INT | CTLFLAG_RD, &wrq->eq.cidx, 0, sysctl_uint16, "I",
+ "consumer index");
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pidx",
+ CTLTYPE_INT | CTLFLAG_RD, &wrq->eq.pidx, 0, sysctl_uint16, "I",
+ "producer index");
+ SYSCTL_ADD_UQUAD(ctx, children, OID_AUTO, "tx_wrs", CTLFLAG_RD,
+ &wrq->tx_wrs, "# of work requests");
+ SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "no_desc", CTLFLAG_RD,
+ &wrq->no_desc, 0,
+ "# of times queue ran out of hardware descriptors");
+ SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "unstalled", CTLFLAG_RD,
+ &wrq->eq.unstalled, 0, "# of times queue recovered after stall");
+
+
+ return (rc);
+}
+
+static int
+free_wrq(struct adapter *sc, struct sge_wrq *wrq)
+{
+ int rc;
+
+ rc = free_eq(sc, &wrq->eq);
+ if (rc)
+ return (rc);
+
+ bzero(wrq, sizeof(*wrq));
+ return (0);
+}
+
+static int
+alloc_txq(struct port_info *pi, struct sge_txq *txq, int idx,
+ struct sysctl_oid *oid)
+{
+ int rc;
struct adapter *sc = pi->adapter;
- struct fw_eq_eth_cmd c;
struct sge_eq *eq = &txq->eq;
char name[16];
- struct sysctl_oid *oid;
- struct sysctl_oid_list *children;
- struct sge_iq *intrq;
-
- txq->ifp = pi->ifp;
- TASK_INIT(&txq->resume_tx, 0, cxgbe_txq_start, txq);
-
- mtx_init(&eq->eq_lock, eq->lockname, NULL, MTX_DEF);
+ struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid);
- len = eq->qsize * TX_EQ_ESIZE;
- rc = alloc_ring(sc, len, &eq->desc_tag, &eq->desc_map,
- &eq->ba, (void **)&eq->desc);
+ rc = alloc_eq(sc, pi, eq);
if (rc)
return (rc);
- eq->cap = eq->qsize - SPG_LEN / TX_EQ_ESIZE;
- eq->spg = (void *)&eq->desc[eq->cap];
- eq->avail = eq->cap - 1; /* one less to avoid cidx = pidx */
+ txq->ifp = pi->ifp;
+
txq->sdesc = malloc(eq->cap * sizeof(struct tx_sdesc), M_CXGBE,
M_ZERO | M_WAITOK);
txq->br = buf_ring_alloc(eq->qsize, M_CXGBE, M_WAITOK, &eq->eq_lock);
- intrq = &sc->sge.intrq[0];
- if (sc->flags & INTR_SHARED)
- eq->iqid = intrq[(pi->first_txq + idx) % NINTRQ(sc)].cntxt_id;
- else
- eq->iqid = intrq[pi->first_rxq + (idx % pi->nrxq)].cntxt_id;
-
rc = bus_dma_tag_create(sc->dmat, 1, 0, BUS_SPACE_MAXADDR,
BUS_SPACE_MAXADDR, NULL, NULL, 64 * 1024, TX_SGL_SEGS,
BUS_SPACE_MAXSIZE, BUS_DMA_ALLOCNOW, NULL, NULL, &txq->tx_tag);
@@ -1629,49 +2243,18 @@ alloc_txq(struct port_info *pi, struct sge_txq *txq, int idx)
return (rc);
}
- rc = alloc_tx_maps(txq);
+ /*
+ * We can stuff ~10 frames in an 8-descriptor txpkts WR (8 is the SGE
+ * limit for any WR). txq->no_dmamap events shouldn't occur if maps is
+ * sized for the worst case.
+ */
+ rc = t4_alloc_tx_maps(&txq->txmaps, txq->tx_tag, eq->qsize * 10 / 8,
+ M_WAITOK);
if (rc != 0) {
device_printf(sc->dev, "failed to setup tx DMA maps: %d\n", rc);
return (rc);
}
- bzero(&c, sizeof(c));
-
- c.op_to_vfn = htobe32(V_FW_CMD_OP(FW_EQ_ETH_CMD) | F_FW_CMD_REQUEST |
- F_FW_CMD_WRITE | F_FW_CMD_EXEC | V_FW_EQ_ETH_CMD_PFN(sc->pf) |
- V_FW_EQ_ETH_CMD_VFN(0));
- c.alloc_to_len16 = htobe32(F_FW_EQ_ETH_CMD_ALLOC |
- F_FW_EQ_ETH_CMD_EQSTART | FW_LEN16(c));
- c.viid_pkd = htobe32(V_FW_EQ_ETH_CMD_VIID(pi->viid));
- c.fetchszm_to_iqid =
- htobe32(V_FW_EQ_ETH_CMD_HOSTFCMODE(X_HOSTFCMODE_STATUS_PAGE) |
- V_FW_EQ_ETH_CMD_PCIECHN(pi->tx_chan) | F_FW_EQ_ETH_CMD_FETCHRO |
- V_FW_EQ_ETH_CMD_IQID(eq->iqid));
- c.dcaen_to_eqsize = htobe32(V_FW_EQ_ETH_CMD_FBMIN(X_FETCHBURSTMIN_64B) |
- V_FW_EQ_ETH_CMD_FBMAX(X_FETCHBURSTMAX_512B) |
- V_FW_EQ_ETH_CMD_CIDXFTHRESH(X_CIDXFLUSHTHRESH_32) |
- V_FW_EQ_ETH_CMD_EQSIZE(eq->qsize));
- c.eqaddr = htobe64(eq->ba);
-
- rc = -t4_wr_mbox(sc, sc->mbox, &c, sizeof(c), &c);
- if (rc != 0) {
- device_printf(pi->dev,
- "failed to create egress queue: %d\n", rc);
- return (rc);
- }
-
- eq->pidx = eq->cidx = 0;
- eq->cntxt_id = G_FW_EQ_ETH_CMD_EQID(be32toh(c.eqid_pkd));
- eq->flags |= (EQ_ALLOCATED | EQ_STARTED);
-
- cntxt_id = eq->cntxt_id - sc->sge.eq_start;
- KASSERT(cntxt_id < sc->sge.neq,
- ("%s: eq->cntxt_id (%d) more than the max (%d)", __func__,
- cntxt_id, sc->sge.neq - 1));
- sc->sge.eqmap[cntxt_id] = eq;
-
- children = SYSCTL_CHILDREN(pi->oid_txq);
-
snprintf(name, sizeof(name), "%d", idx);
oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, name, CTLFLAG_RD,
NULL, "tx queue");
@@ -1709,7 +2292,9 @@ alloc_txq(struct port_info *pi, struct sge_txq *txq, int idx)
SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "no_desc", CTLFLAG_RD,
&txq->no_desc, 0, "# of times txq ran out of hardware descriptors");
SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "egr_update", CTLFLAG_RD,
- &txq->egr_update, 0, "egress update notifications from the SGE");
+ &eq->egr_update, 0, "egress update notifications from the SGE");
+ SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "unstalled", CTLFLAG_RD,
+ &eq->unstalled, 0, "# of times txq recovered after stall");
return (rc);
}
@@ -1721,52 +2306,20 @@ free_txq(struct port_info *pi, struct sge_txq *txq)
struct adapter *sc = pi->adapter;
struct sge_eq *eq = &txq->eq;
- if (eq->flags & (EQ_ALLOCATED | EQ_STARTED)) {
-
- /*
- * Wait for the response to a credit flush if there's one
- * pending. Clearing the flag tells handle_sge_egr_update or
- * cxgbe_txq_start (depending on how far the response has made
- * it) that they should ignore the response and wake up free_txq
- * instead.
- *
- * The interface has been marked down by the time we get here
- * (both IFF_UP and IFF_DRV_RUNNING cleared). qflush has
- * emptied the tx buf_rings and we know nothing new is being
- * queued for tx so we don't have to worry about a new credit
- * flush request.
- */
- TXQ_LOCK(txq);
- if (eq->flags & EQ_CRFLUSHED) {
- eq->flags &= ~EQ_CRFLUSHED;
- msleep(txq, &eq->eq_lock, 0, "crflush", 0);
- }
- TXQ_UNLOCK(txq);
-
- rc = -t4_eth_eq_free(sc, sc->mbox, sc->pf, 0, eq->cntxt_id);
- if (rc != 0) {
- device_printf(pi->dev,
- "failed to free egress queue %p: %d\n", eq, rc);
- return (rc);
- }
- eq->flags &= ~(EQ_ALLOCATED | EQ_STARTED);
- }
-
- free_ring(sc, eq->desc_tag, eq->desc_map, eq->ba, eq->desc);
+ rc = free_eq(sc, eq);
+ if (rc)
+ return (rc);
free(txq->sdesc, M_CXGBE);
- if (txq->maps)
- free_tx_maps(txq);
+ if (txq->txmaps.maps)
+ t4_free_tx_maps(&txq->txmaps, txq->tx_tag);
buf_ring_free(txq->br, M_CXGBE);
if (txq->tx_tag)
bus_dma_tag_destroy(txq->tx_tag);
- if (mtx_initialized(&eq->eq_lock))
- mtx_destroy(&eq->eq_lock);
-
bzero(txq, sizeof(*txq));
return (0);
}
@@ -1822,11 +2375,13 @@ ring_fl_db(struct adapter *sc, struct sge_fl *fl)
}
/*
- * Fill up the freelist by upto nbufs and ring its doorbell if the number of
- * buffers ready to be handed to the hardware >= dbthresh.
+ * Fill up the freelist by upto nbufs and maybe ring its doorbell.
+ *
+ * Returns non-zero to indicate that it should be added to the list of starving
+ * freelists.
*/
-static void
-refill_fl(struct adapter *sc, struct sge_fl *fl, int nbufs, int dbthresh)
+static int
+refill_fl(struct adapter *sc, struct sge_fl *fl, int nbufs)
{
__be64 *d = &fl->desc[fl->pidx];
struct fl_sdesc *sd = &fl->sdesc[fl->pidx];
@@ -1837,7 +2392,7 @@ refill_fl(struct adapter *sc, struct sge_fl *fl, int nbufs, int dbthresh)
FL_LOCK_ASSERT_OWNED(fl);
- if (nbufs < 0 || nbufs > fl->needed)
+ if (nbufs > fl->needed)
nbufs = fl->needed;
while (nbufs--) {
@@ -1918,8 +2473,35 @@ recycled:
}
}
- if (fl->pending >= dbthresh)
+ if (fl->pending >= 8)
ring_fl_db(sc, fl);
+
+ return (FL_RUNNING_LOW(fl) && !(fl->flags & FL_STARVING));
+}
+
+/*
+ * Attempt to refill all starving freelists.
+ */
+static void
+refill_sfl(void *arg)
+{
+ struct adapter *sc = arg;
+ struct sge_fl *fl, *fl_temp;
+
+ mtx_lock(&sc->sfl_lock);
+ TAILQ_FOREACH_SAFE(fl, &sc->sfl, link, fl_temp) {
+ FL_LOCK(fl);
+ refill_fl(sc, fl, 64);
+ if (FL_NOT_RUNNING_LOW(fl) || fl->flags & FL_DOOMED) {
+ TAILQ_REMOVE(&sc->sfl, fl, link);
+ fl->flags &= ~FL_STARVING;
+ }
+ FL_UNLOCK(fl);
+ }
+
+ if (!TAILQ_EMPTY(&sc->sfl))
+ callout_schedule(&sc->sfl_callout, hz / 5);
+ mtx_unlock(&sc->sfl_lock);
}
static int
@@ -1993,27 +2575,22 @@ free_fl_sdesc(struct sge_fl *fl)
fl->sdesc = NULL;
}
-static int
-alloc_tx_maps(struct sge_txq *txq)
+int
+t4_alloc_tx_maps(struct tx_maps *txmaps, bus_dma_tag_t tx_tag, int count,
+ int flags)
{
struct tx_map *txm;
- int i, rc, count;
+ int i, rc;
- /*
- * We can stuff ~10 frames in an 8-descriptor txpkts WR (8 is the SGE
- * limit for any WR). txq->no_dmamap events shouldn't occur if maps is
- * sized for the worst case.
- */
- count = txq->eq.qsize * 10 / 8;
- txq->map_total = txq->map_avail = count;
- txq->map_cidx = txq->map_pidx = 0;
+ txmaps->map_total = txmaps->map_avail = count;
+ txmaps->map_cidx = txmaps->map_pidx = 0;
- txq->maps = malloc(count * sizeof(struct tx_map), M_CXGBE,
- M_ZERO | M_WAITOK);
+ txmaps->maps = malloc(count * sizeof(struct tx_map), M_CXGBE,
+ M_ZERO | flags);
- txm = txq->maps;
+ txm = txmaps->maps;
for (i = 0; i < count; i++, txm++) {
- rc = bus_dmamap_create(txq->tx_tag, 0, &txm->map);
+ rc = bus_dmamap_create(tx_tag, 0, &txm->map);
if (rc != 0)
goto failed;
}
@@ -2022,36 +2599,36 @@ alloc_tx_maps(struct sge_txq *txq)
failed:
while (--i >= 0) {
txm--;
- bus_dmamap_destroy(txq->tx_tag, txm->map);
+ bus_dmamap_destroy(tx_tag, txm->map);
}
- KASSERT(txm == txq->maps, ("%s: EDOOFUS", __func__));
+ KASSERT(txm == txmaps->maps, ("%s: EDOOFUS", __func__));
- free(txq->maps, M_CXGBE);
- txq->maps = NULL;
+ free(txmaps->maps, M_CXGBE);
+ txmaps->maps = NULL;
return (rc);
}
-static void
-free_tx_maps(struct sge_txq *txq)
+void
+t4_free_tx_maps(struct tx_maps *txmaps, bus_dma_tag_t tx_tag)
{
struct tx_map *txm;
int i;
- txm = txq->maps;
- for (i = 0; i < txq->map_total; i++, txm++) {
+ txm = txmaps->maps;
+ for (i = 0; i < txmaps->map_total; i++, txm++) {
if (txm->m) {
- bus_dmamap_unload(txq->tx_tag, txm->map);
+ bus_dmamap_unload(tx_tag, txm->map);
m_freem(txm->m);
txm->m = NULL;
}
- bus_dmamap_destroy(txq->tx_tag, txm->map);
+ bus_dmamap_destroy(tx_tag, txm->map);
}
- free(txq->maps, M_CXGBE);
- txq->maps = NULL;
+ free(txmaps->maps, M_CXGBE);
+ txmaps->maps = NULL;
}
/*
@@ -2060,7 +2637,7 @@ free_tx_maps(struct sge_txq *txq)
* of immediate data.
*/
#define IMM_LEN ( \
- 2 * TX_EQ_ESIZE \
+ 2 * EQ_ESIZE \
- sizeof(struct fw_eth_tx_pkt_wr) \
- sizeof(struct cpl_tx_pkt_core))
@@ -2078,6 +2655,7 @@ get_pkt_sgl(struct sge_txq *txq, struct mbuf **fp, struct sgl *sgl,
int sgl_only)
{
struct mbuf *m = *fp;
+ struct tx_maps *txmaps;
struct tx_map *txm;
int rc, defragged = 0, n;
@@ -2091,11 +2669,12 @@ start: sgl->nsegs = 0;
if (m->m_pkthdr.len <= IMM_LEN && !sgl_only)
return (0); /* nsegs = 0 tells caller to use imm. tx */
- if (txq->map_avail == 0) {
+ txmaps = &txq->txmaps;
+ if (txmaps->map_avail == 0) {
txq->no_dmamap++;
return (ENOMEM);
}
- txm = &txq->maps[txq->map_pidx];
+ txm = &txmaps->maps[txmaps->map_pidx];
if (m->m_pkthdr.tso_segsz && m->m_len < 50) {
*fp = m_pullup(m, 50);
@@ -2119,9 +2698,9 @@ start: sgl->nsegs = 0;
return (rc);
txm->m = m;
- txq->map_avail--;
- if (++txq->map_pidx == txq->map_total)
- txq->map_pidx = 0;
+ txmaps->map_avail--;
+ if (++txmaps->map_pidx == txmaps->map_total)
+ txmaps->map_pidx = 0;
KASSERT(sgl->nsegs > 0 && sgl->nsegs <= TX_SGL_SEGS,
("%s: bad DMA mapping (%d segments)", __func__, sgl->nsegs));
@@ -2145,6 +2724,7 @@ start: sgl->nsegs = 0;
static int
free_pkt_sgl(struct sge_txq *txq, struct sgl *sgl)
{
+ struct tx_maps *txmaps;
struct tx_map *txm;
TXQ_LOCK_ASSERT_OWNED(txq);
@@ -2152,15 +2732,17 @@ free_pkt_sgl(struct sge_txq *txq, struct sgl *sgl)
if (sgl->nsegs == 0)
return (0); /* didn't use any map */
+ txmaps = &txq->txmaps;
+
/* 1 pkt uses exactly 1 map, back it out */
- txq->map_avail++;
- if (txq->map_pidx > 0)
- txq->map_pidx--;
+ txmaps->map_avail++;
+ if (txmaps->map_pidx > 0)
+ txmaps->map_pidx--;
else
- txq->map_pidx = txq->map_total - 1;
+ txmaps->map_pidx = txmaps->map_total - 1;
- txm = &txq->maps[txq->map_pidx];
+ txm = &txmaps->maps[txmaps->map_pidx];
bus_dmamap_unload(txq->tx_tag, txm->map);
txm->m = NULL;
@@ -2206,11 +2788,14 @@ write_txpkt_wr(struct port_info *pi, struct sge_txq *txq, struct mbuf *m,
/* Firmware work request header */
wr = (void *)&eq->desc[eq->pidx];
wr->op_immdlen = htobe32(V_FW_WR_OP(FW_ETH_TX_PKT_WR) |
- V_FW_WR_IMMDLEN(ctrl));
+ V_FW_ETH_TX_PKT_WR_IMMDLEN(ctrl));
ctrl = V_FW_WR_LEN16(howmany(nflits, 2));
- if (eq->avail == ndesc && !(eq->flags & EQ_CRFLUSHED)) {
- ctrl |= F_FW_WR_EQUEQ | F_FW_WR_EQUIQ;
- eq->flags |= EQ_CRFLUSHED;
+ if (eq->avail == ndesc) {
+ if (!(eq->flags & EQ_CRFLUSHED)) {
+ ctrl |= F_FW_WR_EQUEQ | F_FW_WR_EQUIQ;
+ eq->flags |= EQ_CRFLUSHED;
+ }
+ eq->flags |= EQ_STALLED;
}
wr->equiq_to_len16 = htobe32(ctrl);
@@ -2325,6 +2910,8 @@ add_to_txpkts(struct port_info *pi, struct sge_txq *txq, struct txpkts *txpkts,
TXQ_LOCK_ASSERT_OWNED(txq);
+ KASSERT(sgl->nsegs, ("%s: can't coalesce imm data", __func__));
+
if (txpkts->npkt > 0) {
flits = TXPKTS_PKT_HDR + sgl->nflits;
can_coalesce = m->m_pkthdr.tso_segsz == 0 &&
@@ -2397,12 +2984,14 @@ write_txpkts_wr(struct sge_txq *txq, struct txpkts *txpkts)
ndesc = howmany(txpkts->nflits, 8);
wr = (void *)&eq->desc[eq->pidx];
- wr->op_immdlen = htobe32(V_FW_WR_OP(FW_ETH_TX_PKTS_WR) |
- V_FW_WR_IMMDLEN(0)); /* immdlen does not matter in this WR */
+ wr->op_pkd = htobe32(V_FW_WR_OP(FW_ETH_TX_PKTS_WR));
ctrl = V_FW_WR_LEN16(howmany(txpkts->nflits, 2));
- if (eq->avail == ndesc && !(eq->flags & EQ_CRFLUSHED)) {
- ctrl |= F_FW_WR_EQUEQ | F_FW_WR_EQUIQ;
- eq->flags |= EQ_CRFLUSHED;
+ if (eq->avail == ndesc) {
+ if (!(eq->flags & EQ_CRFLUSHED)) {
+ ctrl |= F_FW_WR_EQUEQ | F_FW_WR_EQUIQ;
+ eq->flags |= EQ_CRFLUSHED;
+ }
+ eq->flags |= EQ_STALLED;
}
wr->equiq_to_len16 = htobe32(ctrl);
wr->plen = htobe16(txpkts->plen);
@@ -2616,7 +3205,7 @@ reclaimable(struct sge_eq *eq)
unsigned int cidx;
cidx = eq->spg->cidx; /* stable snapshot */
- cidx = be16_to_cpu(cidx);
+ cidx = be16toh(cidx);
if (cidx >= eq->cidx)
return (cidx - eq->cidx);
@@ -2634,11 +3223,12 @@ static int
reclaim_tx_descs(struct sge_txq *txq, int can_reclaim, int n)
{
struct tx_sdesc *txsd;
+ struct tx_maps *txmaps;
struct tx_map *txm;
unsigned int reclaimed, maps;
struct sge_eq *eq = &txq->eq;
- EQ_LOCK_ASSERT_OWNED(eq);
+ TXQ_LOCK_ASSERT_OWNED(txq);
if (can_reclaim == 0)
can_reclaim = reclaimable(eq);
@@ -2665,7 +3255,8 @@ reclaim_tx_descs(struct sge_txq *txq, int can_reclaim, int n)
eq->cidx -= eq->cap;
}
- txm = &txq->maps[txq->map_cidx];
+ txmaps = &txq->txmaps;
+ txm = &txmaps->maps[txmaps->map_cidx];
if (maps)
prefetch(txm->m);
@@ -2673,16 +3264,16 @@ reclaim_tx_descs(struct sge_txq *txq, int can_reclaim, int n)
KASSERT(eq->avail < eq->cap, /* avail tops out at (cap - 1) */
("%s: too many descriptors available", __func__));
- txq->map_avail += maps;
- KASSERT(txq->map_avail <= txq->map_total,
+ txmaps->map_avail += maps;
+ KASSERT(txmaps->map_avail <= txmaps->map_total,
("%s: too many maps available", __func__));
while (maps--) {
struct tx_map *next;
next = txm + 1;
- if (__predict_false(txq->map_cidx + 1 == txq->map_total))
- next = txq->maps;
+ if (__predict_false(txmaps->map_cidx + 1 == txmaps->map_total))
+ next = txmaps->maps;
prefetch(next->m);
bus_dmamap_unload(txq->tx_tag, txm->map);
@@ -2690,8 +3281,8 @@ reclaim_tx_descs(struct sge_txq *txq, int can_reclaim, int n)
txm->m = NULL;
txm = next;
- if (__predict_false(++txq->map_cidx == txq->map_total))
- txq->map_cidx = 0;
+ if (__predict_false(++txmaps->map_cidx == txmaps->map_total))
+ txmaps->map_cidx = 0;
}
return (reclaimed);
@@ -2704,6 +3295,7 @@ write_eqflush_wr(struct sge_eq *eq)
EQ_LOCK_ASSERT_OWNED(eq);
KASSERT(eq->avail > 0, ("%s: no descriptors left.", __func__));
+ KASSERT(!(eq->flags & EQ_CRFLUSHED), ("%s: flushed already", __func__));
wr = (void *)&eq->desc[eq->pidx];
bzero(wr, sizeof(*wr));
@@ -2711,7 +3303,7 @@ write_eqflush_wr(struct sge_eq *eq)
wr->equiq_to_len16 = htobe32(V_FW_WR_LEN16(sizeof(*wr) / 16) |
F_FW_WR_EQUEQ | F_FW_WR_EQUIQ);
- eq->flags |= EQ_CRFLUSHED;
+ eq->flags |= (EQ_CRFLUSHED | EQ_STALLED);
eq->pending++;
eq->avail--;
if (++eq->pidx == eq->cap)
@@ -2743,118 +3335,73 @@ get_flit(bus_dma_segment_t *sgl, int nsegs, int idx)
}
static void
-set_fl_tag_idx(struct sge_fl *fl, int mtu)
+set_fl_tag_idx(struct sge_fl *fl, int bufsize)
{
int i;
- FL_LOCK_ASSERT_OWNED(fl);
-
for (i = 0; i < FL_BUF_SIZES - 1; i++) {
- if (FL_BUF_SIZE(i) >= (mtu + FL_PKTSHIFT))
+ if (FL_BUF_SIZE(i) >= bufsize)
break;
}
fl->tag_idx = i;
}
-static int
-handle_sge_egr_update(struct adapter *sc, const struct cpl_sge_egr_update *cpl)
-{
- unsigned int qid = G_EGR_QID(ntohl(cpl->opcode_qid));
- struct sge *s = &sc->sge;
- struct sge_txq *txq;
- struct port_info *pi;
-
- txq = (void *)s->eqmap[qid - s->eq_start];
- TXQ_LOCK(txq);
- if (txq->eq.flags & EQ_CRFLUSHED) {
- pi = txq->ifp->if_softc;
- taskqueue_enqueue(pi->tq, &txq->resume_tx);
- txq->egr_update++;
- } else
- wakeup_one(txq); /* txq is going away, wakeup free_txq */
- TXQ_UNLOCK(txq);
-
- return (0);
-}
-
static void
-handle_cpl(struct adapter *sc, struct sge_iq *iq)
+add_fl_to_sfl(struct adapter *sc, struct sge_fl *fl)
{
- const struct rss_header *rss = (const void *)iq->cdesc;
- const struct cpl_fw6_msg *cpl = (const void *)(rss + 1);
-
- switch (rss->opcode) {
- case CPL_FW4_MSG:
- case CPL_FW6_MSG:
- if (cpl->type == FW6_TYPE_CMD_RPL)
- t4_handle_fw_rpl(sc, cpl->data);
- break;
-
- case CPL_SGE_EGR_UPDATE:
- handle_sge_egr_update(sc, (const void *)cpl);
- break;
-
- case CPL_SET_TCB_RPL:
- filter_rpl(sc, (const void *)cpl);
- break;
-
- default:
- panic("%s: unexpected CPL opcode 0x%x", __func__, rss->opcode);
+ mtx_lock(&sc->sfl_lock);
+ FL_LOCK(fl);
+ if ((fl->flags & FL_DOOMED) == 0) {
+ fl->flags |= FL_STARVING;
+ TAILQ_INSERT_TAIL(&sc->sfl, fl, link);
+ callout_reset(&sc->sfl_callout, hz / 5, refill_sfl, sc);
}
+ FL_UNLOCK(fl);
+ mtx_unlock(&sc->sfl_lock);
}
-/*
- * m0 is freed on successful transmission.
- */
static int
-ctrl_tx(struct adapter *sc, struct sge_ctrlq *ctrlq, struct mbuf *m0)
+handle_sge_egr_update(struct sge_iq *iq, const struct rss_header *rss,
+ struct mbuf *m)
{
- struct sge_eq *eq = &ctrlq->eq;
- int rc = 0, ndesc;
- int can_reclaim;
- caddr_t dst;
- struct mbuf *m;
-
- M_ASSERTPKTHDR(m0);
+ const struct cpl_sge_egr_update *cpl = (const void *)(rss + 1);
+ unsigned int qid = G_EGR_QID(ntohl(cpl->opcode_qid));
+ struct adapter *sc = iq->adapter;
+ struct sge *s = &sc->sge;
+ struct sge_eq *eq;
- if (m0->m_pkthdr.len > SGE_MAX_WR_LEN) {
- log(LOG_ERR, "%s: %s work request too long (%d)",
- device_get_nameunit(sc->dev), __func__, m0->m_pkthdr.len);
- return (EMSGSIZE);
- }
- ndesc = howmany(m0->m_pkthdr.len, CTRL_EQ_ESIZE);
+ KASSERT(m == NULL, ("%s: payload with opcode %02x", __func__,
+ rss->opcode));
+ eq = s->eqmap[qid - s->eq_start];
EQ_LOCK(eq);
+ KASSERT(eq->flags & EQ_CRFLUSHED,
+ ("%s: unsolicited egress update", __func__));
+ eq->flags &= ~EQ_CRFLUSHED;
+ eq->egr_update++;
+
+ if (__predict_false(eq->flags & EQ_DOOMED))
+ wakeup_one(eq);
+ else if (eq->flags & EQ_STALLED && can_resume_tx(eq))
+ taskqueue_enqueue(sc->tq[eq->tx_chan], &eq->tx_task);
+ EQ_UNLOCK(eq);
- can_reclaim = reclaimable(eq);
- eq->cidx += can_reclaim;
- eq->avail += can_reclaim;
- if (__predict_false(eq->cidx >= eq->cap))
- eq->cidx -= eq->cap;
-
- if (eq->avail < ndesc) {
- rc = EAGAIN;
- ctrlq->no_desc++;
- goto failed;
- }
+ return (0);
+}
- dst = (void *)&eq->desc[eq->pidx];
- for (m = m0; m; m = m->m_next)
- copy_to_txd(eq, mtod(m, caddr_t), &dst, m->m_len);
+static int
+handle_fw_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
+{
+ const struct cpl_fw6_msg *cpl = (const void *)(rss + 1);
- eq->pidx += ndesc;
- if (__predict_false(eq->pidx >= eq->cap))
- eq->pidx -= eq->cap;
+ KASSERT(m == NULL, ("%s: payload with opcode %02x", __func__,
+ rss->opcode));
- eq->pending += ndesc;
- ring_eq_db(sc, eq);
-failed:
- EQ_UNLOCK(eq);
- if (rc == 0)
- m_freem(m0);
+ if (cpl->type == FW6_TYPE_CMD_RPL)
+ t4_handle_fw_rpl(iq->adapter, cpl->data);
- return (rc);
+ return (0);
}
static int
diff --git a/sys/dev/dc/dcphy.c b/sys/dev/dc/dcphy.c
index ab44993..a05f2ed 100644
--- a/sys/dev/dc/dcphy.c
+++ b/sys/dev/dc/dcphy.c
@@ -95,7 +95,7 @@ static device_method_t dcphy_methods[] = {
DEVMETHOD(device_attach, dcphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t dcphy_devclass;
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c
index b9ea19a..0ace34e 100644
--- a/sys/dev/dc/if_dc.c
+++ b/sys/dev/dc/if_dc.c
@@ -337,17 +337,13 @@ static device_method_t dc_methods[] = {
DEVMETHOD(device_resume, dc_resume),
DEVMETHOD(device_shutdown, dc_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, dc_miibus_readreg),
DEVMETHOD(miibus_writereg, dc_miibus_writereg),
DEVMETHOD(miibus_statchg, dc_miibus_statchg),
DEVMETHOD(miibus_mediainit, dc_miibus_mediainit),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t dc_driver = {
diff --git a/sys/dev/dc/pnphy.c b/sys/dev/dc/pnphy.c
index 6546acd..98e721d 100644
--- a/sys/dev/dc/pnphy.c
+++ b/sys/dev/dc/pnphy.c
@@ -74,7 +74,7 @@ static device_method_t pnphy_methods[] = {
DEVMETHOD(device_attach, pnphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t pnphy_devclass;
diff --git a/sys/dev/dcons/dcons_os.c b/sys/dev/dcons/dcons_os.c
index d638d41..a37d64c 100644
--- a/sys/dev/dcons/dcons_os.c
+++ b/sys/dev/dcons/dcons_os.c
@@ -109,6 +109,8 @@ static cn_init_t dcons_cninit;
static cn_term_t dcons_cnterm;
static cn_getc_t dcons_cngetc;
static cn_putc_t dcons_cnputc;
+static cn_grab_t dcons_cngrab;
+static cn_ungrab_t dcons_cnungrab;
CONSOLE_DRIVER(dcons);
@@ -246,6 +248,16 @@ dcons_cnterm(struct consdev *cp)
{
}
+static void
+dcons_cngrab(struct consdev *cp)
+{
+}
+
+static void
+dcons_cnungrab(struct consdev *cp)
+{
+}
+
static int
dcons_cngetc(struct consdev *cp)
{
diff --git a/sys/dev/de/if_de.c b/sys/dev/de/if_de.c
index a9b9f31..5970bcd 100644
--- a/sys/dev/de/if_de.c
+++ b/sys/dev/de/if_de.c
@@ -1567,7 +1567,7 @@ tulip_null_media_poll(tulip_softc_t * const sc, tulip_mediapoll_event_t event)
#endif
}
-__inline static void
+static inline void
tulip_21140_mediainit(tulip_softc_t * const sc, tulip_media_info_t * const mip,
tulip_media_t const media, unsigned gpdata, unsigned cmdmode)
{
diff --git a/sys/dev/drm/i915_drv.h b/sys/dev/drm/i915_drv.h
index 4ae5e5c..3896732 100644
--- a/sys/dev/drm/i915_drv.h
+++ b/sys/dev/drm/i915_drv.h
@@ -560,7 +560,7 @@ extern void opregion_enable_asle(struct drm_device *dev);
LOCK_TEST_WITH_RETURN(dev, file_priv); \
} while (0)
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) && !defined(__bool_true_false_are_defined)
typedef boolean_t bool;
#endif
diff --git a/sys/dev/drm/mga_drv.h b/sys/dev/drm/mga_drv.h
index 61b6e82..01c5c9d 100644
--- a/sys/dev/drm/mga_drv.h
+++ b/sys/dev/drm/mga_drv.h
@@ -288,7 +288,7 @@ do { \
do { \
if ( MGA_VERBOSE ) { \
DRM_INFO( "BEGIN_DMA( %d )\n", (n) ); \
- DRM_INFO( " space=0x%x req=0x%Zx\n", \
+ DRM_INFO( " space=0x%x req=0x%zx\n", \
dev_priv->prim.space, (n) * DMA_BLOCK_SIZE ); \
} \
prim = dev_priv->prim.start; \
@@ -338,7 +338,7 @@ do { \
#define DMA_WRITE( offset, val ) \
do { \
if ( MGA_VERBOSE ) { \
- DRM_INFO( " DMA_WRITE( 0x%08x ) at 0x%04Zx\n", \
+ DRM_INFO( " DMA_WRITE( 0x%08x ) at 0x%04zx\n", \
(u32)(val), write + (offset) * sizeof(u32) ); \
} \
*(volatile u32 *)(prim + write + (offset) * sizeof(u32)) = val; \
diff --git a/sys/dev/drm/radeon_state.c b/sys/dev/drm/radeon_state.c
index 8061501..b334a88 100644
--- a/sys/dev/drm/radeon_state.c
+++ b/sys/dev/drm/radeon_state.c
@@ -1745,7 +1745,7 @@ static int radeon_cp_dispatch_texture(struct drm_device * dev,
DRM_DEBUG("tex=%dx%d blit=%d\n", tex_width, tex->height, blit_width);
do {
- DRM_DEBUG("tex: ofs=0x%x p=%d f=%d x=%hd y=%hd w=%hd h=%hd\n",
+ DRM_DEBUG("tex: ofs=0x%x p=%d f=%d x=%d y=%d w=%d h=%d\n",
tex->offset >> 10, tex->pitch, tex->format,
image->x, image->y, image->width, image->height);
diff --git a/sys/dev/e1000/e1000_80003es2lan.c b/sys/dev/e1000/e1000_80003es2lan.c
index 01b9e6d..bdbb31c 100644
--- a/sys/dev/e1000/e1000_80003es2lan.c
+++ b/sys/dev/e1000/e1000_80003es2lan.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -47,18 +47,18 @@ static void e1000_release_phy_80003es2lan(struct e1000_hw *hw);
static s32 e1000_acquire_nvm_80003es2lan(struct e1000_hw *hw);
static void e1000_release_nvm_80003es2lan(struct e1000_hw *hw);
static s32 e1000_read_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
- u32 offset,
- u16 *data);
+ u32 offset,
+ u16 *data);
static s32 e1000_write_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
- u32 offset,
- u16 data);
+ u32 offset,
+ u16 data);
static s32 e1000_write_nvm_80003es2lan(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data);
+ u16 words, u16 *data);
static s32 e1000_get_cfg_done_80003es2lan(struct e1000_hw *hw);
static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw);
static s32 e1000_get_cable_length_80003es2lan(struct e1000_hw *hw);
static s32 e1000_get_link_up_info_80003es2lan(struct e1000_hw *hw, u16 *speed,
- u16 *duplex);
+ u16 *duplex);
static s32 e1000_reset_hw_80003es2lan(struct e1000_hw *hw);
static s32 e1000_init_hw_80003es2lan(struct e1000_hw *hw);
static s32 e1000_setup_copper_link_80003es2lan(struct e1000_hw *hw);
@@ -68,9 +68,9 @@ static s32 e1000_cfg_kmrn_10_100_80003es2lan(struct e1000_hw *hw, u16 duplex);
static s32 e1000_cfg_kmrn_1000_80003es2lan(struct e1000_hw *hw);
static s32 e1000_cfg_on_link_up_80003es2lan(struct e1000_hw *hw);
static s32 e1000_read_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,
- u16 *data);
+ u16 *data);
static s32 e1000_write_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,
- u16 data);
+ u16 data);
static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw);
static void e1000_initialize_hw_bits_80003es2lan(struct e1000_hw *hw);
static void e1000_release_swfw_sync_80003es2lan(struct e1000_hw *hw, u16 mask);
@@ -85,8 +85,8 @@ static void e1000_power_down_phy_copper_80003es2lan(struct e1000_hw *hw);
static const u16 e1000_gg82563_cable_length_table[] = {
0, 60, 115, 150, 150, 60, 115, 150, 180, 180, 0xFF };
#define GG82563_CABLE_LENGTH_TABLE_SIZE \
- (sizeof(e1000_gg82563_cable_length_table) / \
- sizeof(e1000_gg82563_cable_length_table[0]))
+ (sizeof(e1000_gg82563_cable_length_table) / \
+ sizeof(e1000_gg82563_cable_length_table[0]))
/**
* e1000_init_phy_params_80003es2lan - Init ESB2 PHY func ptrs.
@@ -100,34 +100,34 @@ static s32 e1000_init_phy_params_80003es2lan(struct e1000_hw *hw)
DEBUGFUNC("e1000_init_phy_params_80003es2lan");
if (hw->phy.media_type != e1000_media_type_copper) {
- phy->type = e1000_phy_none;
+ phy->type = e1000_phy_none;
goto out;
} else {
phy->ops.power_up = e1000_power_up_phy_copper;
phy->ops.power_down = e1000_power_down_phy_copper_80003es2lan;
}
- phy->addr = 1;
- phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
- phy->reset_delay_us = 100;
- phy->type = e1000_phy_gg82563;
-
- phy->ops.acquire = e1000_acquire_phy_80003es2lan;
- phy->ops.check_polarity = e1000_check_polarity_m88;
- phy->ops.check_reset_block = e1000_check_reset_block_generic;
- phy->ops.commit = e1000_phy_sw_reset_generic;
- phy->ops.get_cfg_done = e1000_get_cfg_done_80003es2lan;
- phy->ops.get_info = e1000_get_phy_info_m88;
- phy->ops.release = e1000_release_phy_80003es2lan;
- phy->ops.reset = e1000_phy_hw_reset_generic;
- phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_generic;
+ phy->addr = 1;
+ phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
+ phy->reset_delay_us = 100;
+ phy->type = e1000_phy_gg82563;
+
+ phy->ops.acquire = e1000_acquire_phy_80003es2lan;
+ phy->ops.check_polarity = e1000_check_polarity_m88;
+ phy->ops.check_reset_block = e1000_check_reset_block_generic;
+ phy->ops.commit = e1000_phy_sw_reset_generic;
+ phy->ops.get_cfg_done = e1000_get_cfg_done_80003es2lan;
+ phy->ops.get_info = e1000_get_phy_info_m88;
+ phy->ops.release = e1000_release_phy_80003es2lan;
+ phy->ops.reset = e1000_phy_hw_reset_generic;
+ phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_generic;
phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_80003es2lan;
- phy->ops.get_cable_length = e1000_get_cable_length_80003es2lan;
- phy->ops.read_reg = e1000_read_phy_reg_gg82563_80003es2lan;
- phy->ops.write_reg = e1000_write_phy_reg_gg82563_80003es2lan;
+ phy->ops.get_cable_length = e1000_get_cable_length_80003es2lan;
+ phy->ops.read_reg = e1000_read_phy_reg_gg82563_80003es2lan;
+ phy->ops.write_reg = e1000_write_phy_reg_gg82563_80003es2lan;
- phy->ops.cfg_on_link_up = e1000_cfg_on_link_up_80003es2lan;
+ phy->ops.cfg_on_link_up = e1000_cfg_on_link_up_80003es2lan;
/* This can only be done after all function pointers are setup. */
ret_val = e1000_get_phy_id(hw);
@@ -154,19 +154,19 @@ static s32 e1000_init_nvm_params_80003es2lan(struct e1000_hw *hw)
DEBUGFUNC("e1000_init_nvm_params_80003es2lan");
- nvm->opcode_bits = 8;
- nvm->delay_usec = 1;
+ nvm->opcode_bits = 8;
+ nvm->delay_usec = 1;
switch (nvm->override) {
case e1000_nvm_override_spi_large:
- nvm->page_size = 32;
+ nvm->page_size = 32;
nvm->address_bits = 16;
break;
case e1000_nvm_override_spi_small:
- nvm->page_size = 8;
+ nvm->page_size = 8;
nvm->address_bits = 8;
break;
default:
- nvm->page_size = eecd & E1000_EECD_ADDR_BITS ? 32 : 8;
+ nvm->page_size = eecd & E1000_EECD_ADDR_BITS ? 32 : 8;
nvm->address_bits = eecd & E1000_EECD_ADDR_BITS ? 16 : 8;
break;
}
@@ -174,7 +174,7 @@ static s32 e1000_init_nvm_params_80003es2lan(struct e1000_hw *hw)
nvm->type = e1000_nvm_eeprom_spi;
size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >>
- E1000_EECD_SIZE_EX_SHIFT);
+ E1000_EECD_SIZE_EX_SHIFT);
/*
* Added to a constant, "size" becomes the left-shift value
@@ -185,16 +185,16 @@ static s32 e1000_init_nvm_params_80003es2lan(struct e1000_hw *hw)
/* EEPROM access above 16k is unsupported */
if (size > 14)
size = 14;
- nvm->word_size = 1 << size;
+ nvm->word_size = 1 << size;
/* Function Pointers */
- nvm->ops.acquire = e1000_acquire_nvm_80003es2lan;
- nvm->ops.read = e1000_read_nvm_eerd;
- nvm->ops.release = e1000_release_nvm_80003es2lan;
- nvm->ops.update = e1000_update_nvm_checksum_generic;
+ nvm->ops.acquire = e1000_acquire_nvm_80003es2lan;
+ nvm->ops.read = e1000_read_nvm_eerd;
+ nvm->ops.release = e1000_release_nvm_80003es2lan;
+ nvm->ops.update = e1000_update_nvm_checksum_generic;
nvm->ops.valid_led_default = e1000_valid_led_default_generic;
- nvm->ops.validate = e1000_validate_nvm_checksum_generic;
- nvm->ops.write = e1000_write_nvm_80003es2lan;
+ nvm->ops.validate = e1000_validate_nvm_checksum_generic;
+ nvm->ops.write = e1000_write_nvm_80003es2lan;
return E1000_SUCCESS;
}
@@ -215,13 +215,13 @@ static s32 e1000_init_mac_params_80003es2lan(struct e1000_hw *hw)
hw->phy.media_type = e1000_media_type_internal_serdes;
mac->ops.check_for_link = e1000_check_for_serdes_link_generic;
mac->ops.setup_physical_interface =
- e1000_setup_fiber_serdes_link_generic;
+ e1000_setup_fiber_serdes_link_generic;
break;
default:
hw->phy.media_type = e1000_media_type_copper;
mac->ops.check_for_link = e1000_check_for_copper_link_generic;
mac->ops.setup_physical_interface =
- e1000_setup_copper_link_80003es2lan;
+ e1000_setup_copper_link_80003es2lan;
break;
}
@@ -234,9 +234,8 @@ static s32 e1000_init_mac_params_80003es2lan(struct e1000_hw *hw)
/* FWSM register */
mac->has_fwsm = TRUE;
/* ARC supported; valid only if manageability features are enabled. */
- mac->arc_subsystem_valid =
- (E1000_READ_REG(hw, E1000_FWSM) & E1000_FWSM_MODE_MASK)
- ? TRUE : FALSE;
+ mac->arc_subsystem_valid = (E1000_READ_REG(hw, E1000_FWSM) &
+ E1000_FWSM_MODE_MASK) ? TRUE : FALSE;
/* Adaptive IFS not supported */
mac->adaptive_ifs = FALSE;
@@ -330,7 +329,7 @@ static void e1000_release_phy_80003es2lan(struct e1000_hw *hw)
}
/**
- * e1000_acquire_mac_csr_80003es2lan - Acquire rights to access Kumeran register
+ * e1000_acquire_mac_csr_80003es2lan - Acquire right to access Kumeran register
* @hw: pointer to the HW structure
*
* Acquire the semaphore to access the Kumeran interface.
@@ -348,7 +347,7 @@ static s32 e1000_acquire_mac_csr_80003es2lan(struct e1000_hw *hw)
}
/**
- * e1000_release_mac_csr_80003es2lan - Release rights to access Kumeran Register
+ * e1000_release_mac_csr_80003es2lan - Release right to access Kumeran Register
* @hw: pointer to the HW structure
*
* Release the semaphore used to access the Kumeran interface
@@ -488,7 +487,7 @@ static void e1000_release_swfw_sync_80003es2lan(struct e1000_hw *hw, u16 mask)
* Read the GG82563 PHY register.
**/
static s32 e1000_read_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
- u32 offset, u16 *data)
+ u32 offset, u16 *data)
{
s32 ret_val;
u32 page_select;
@@ -538,14 +537,14 @@ static s32 e1000_read_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
usec_delay(200);
ret_val = e1000_read_phy_reg_mdic(hw,
- MAX_PHY_REG_ADDRESS & offset,
- data);
+ MAX_PHY_REG_ADDRESS & offset,
+ data);
usec_delay(200);
} else {
ret_val = e1000_read_phy_reg_mdic(hw,
- MAX_PHY_REG_ADDRESS & offset,
- data);
+ MAX_PHY_REG_ADDRESS & offset,
+ data);
}
e1000_release_phy_80003es2lan(hw);
@@ -563,7 +562,7 @@ out:
* Write to the GG82563 PHY register.
**/
static s32 e1000_write_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
- u32 offset, u16 data)
+ u32 offset, u16 data)
{
s32 ret_val;
u32 page_select;
@@ -613,14 +612,14 @@ static s32 e1000_write_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
usec_delay(200);
ret_val = e1000_write_phy_reg_mdic(hw,
- MAX_PHY_REG_ADDRESS & offset,
- data);
+ MAX_PHY_REG_ADDRESS & offset,
+ data);
usec_delay(200);
} else {
ret_val = e1000_write_phy_reg_mdic(hw,
- MAX_PHY_REG_ADDRESS & offset,
- data);
+ MAX_PHY_REG_ADDRESS & offset,
+ data);
}
e1000_release_phy_80003es2lan(hw);
@@ -639,7 +638,7 @@ out:
* Write "words" of data to the ESB2 NVM.
**/
static s32 e1000_write_nvm_80003es2lan(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data)
+ u16 words, u16 *data)
{
DEBUGFUNC("e1000_write_nvm_80003es2lan");
@@ -729,11 +728,10 @@ static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)
usec_delay(1);
if (hw->phy.autoneg_wait_to_complete) {
- DEBUGOUT("Waiting for forced speed/duplex link "
- "on GG82563 phy.\n");
+ DEBUGOUT("Waiting for forced speed/duplex link on GG82563 phy.\n");
ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
- 100000, &link);
+ 100000, &link);
if (ret_val)
goto out;
@@ -749,12 +747,13 @@ static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)
/* Try once more */
ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
- 100000, &link);
+ 100000, &link);
if (ret_val)
goto out;
}
- ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_MAC_SPEC_CTRL, &phy_data);
+ ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_MAC_SPEC_CTRL,
+ &phy_data);
if (ret_val)
goto out;
@@ -773,7 +772,8 @@ static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)
* duplex.
*/
phy_data |= GG82563_MSCR_ASSERT_CRS_ON_TX;
- ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_MAC_SPEC_CTRL, phy_data);
+ ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_MAC_SPEC_CTRL,
+ phy_data);
out:
return ret_val;
@@ -826,21 +826,20 @@ out:
* Retrieve the current speed and duplex configuration.
**/
static s32 e1000_get_link_up_info_80003es2lan(struct e1000_hw *hw, u16 *speed,
- u16 *duplex)
+ u16 *duplex)
{
s32 ret_val;
DEBUGFUNC("e1000_get_link_up_info_80003es2lan");
if (hw->phy.media_type == e1000_media_type_copper) {
- ret_val = e1000_get_speed_and_duplex_copper_generic(hw,
- speed,
- duplex);
+ ret_val = e1000_get_speed_and_duplex_copper_generic(hw, speed,
+ duplex);
hw->phy.ops.cfg_on_link_up(hw);
} else {
ret_val = e1000_get_speed_and_duplex_fiber_serdes_generic(hw,
- speed,
- duplex);
+ speed,
+ duplex);
}
return ret_val;
@@ -939,21 +938,21 @@ static s32 e1000_init_hw_80003es2lan(struct e1000_hw *hw)
/* Disable IBIST slave mode (far-end loopback) */
e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
- &kum_reg_data);
+ &kum_reg_data);
kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE;
e1000_write_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
- kum_reg_data);
+ kum_reg_data);
/* Set the transmit descriptor write-back policy */
reg_data = E1000_READ_REG(hw, E1000_TXDCTL(0));
reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) |
- E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC;
+ E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC;
E1000_WRITE_REG(hw, E1000_TXDCTL(0), reg_data);
/* ...for both queues. */
reg_data = E1000_READ_REG(hw, E1000_TXDCTL(1));
reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) |
- E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC;
+ E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC;
E1000_WRITE_REG(hw, E1000_TXDCTL(1), reg_data);
/* Enable retransmit on late collisions */
@@ -981,9 +980,9 @@ static s32 e1000_init_hw_80003es2lan(struct e1000_hw *hw)
hw->dev_spec._80003es2lan.mdic_wa_enable = TRUE;
ret_val = e1000_read_kmrn_reg_80003es2lan(hw,
- E1000_KMRNCTRLSTA_OFFSET >>
- E1000_KMRNCTRLSTA_OFFSET_SHIFT,
- &i);
+ E1000_KMRNCTRLSTA_OFFSET >>
+ E1000_KMRNCTRLSTA_OFFSET_SHIFT,
+ &i);
if (!ret_val) {
if ((i & E1000_KMRNCTRLSTA_OPMODE_MASK) ==
E1000_KMRNCTRLSTA_OPMODE_INBAND_MDIO)
@@ -1056,11 +1055,7 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)
DEBUGFUNC("e1000_copper_link_setup_gg82563_80003es2lan");
- if (phy->reset_disable)
- goto skip_reset;
-
- ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_MAC_SPEC_CTRL,
- &data);
+ ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_MAC_SPEC_CTRL, &data);
if (ret_val)
goto out;
@@ -1068,8 +1063,7 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)
/* Use 25MHz for both link down and 1000Base-T for Tx clock. */
data |= GG82563_MSCR_TX_CLK_1000MBPS_25;
- ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_MAC_SPEC_CTRL,
- data);
+ ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_MAC_SPEC_CTRL, data);
if (ret_val)
goto out;
@@ -1122,7 +1116,6 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)
goto out;
}
-skip_reset:
/* Bypass Rx and Tx FIFO's */
ret_val = e1000_write_kmrn_reg_80003es2lan(hw,
E1000_KMRNCTRLSTA_OFFSET_FIFO_CTRL,
@@ -1132,14 +1125,12 @@ skip_reset:
goto out;
ret_val = e1000_read_kmrn_reg_80003es2lan(hw,
- E1000_KMRNCTRLSTA_OFFSET_MAC2PHY_OPMODE,
- &data);
+ E1000_KMRNCTRLSTA_OFFSET_MAC2PHY_OPMODE, &data);
if (ret_val)
goto out;
data |= E1000_KMRNCTRLSTA_OPMODE_E_IDLE;
ret_val = e1000_write_kmrn_reg_80003es2lan(hw,
- E1000_KMRNCTRLSTA_OFFSET_MAC2PHY_OPMODE,
- data);
+ E1000_KMRNCTRLSTA_OFFSET_MAC2PHY_OPMODE, data);
if (ret_val)
goto out;
@@ -1169,18 +1160,18 @@ skip_reset:
/* Enable Electrical Idle on the PHY */
data |= GG82563_PMCR_ENABLE_ELECTRICAL_IDLE;
ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_PWR_MGMT_CTRL,
- data);
+ data);
if (ret_val)
goto out;
ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_KMRN_MODE_CTRL,
- &data);
+ &data);
if (ret_val)
goto out;
data &= ~GG82563_KMCR_PASS_FALSE_CARRIER;
ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_KMRN_MODE_CTRL,
- data);
+ data);
if (ret_val)
goto out;
}
@@ -1228,27 +1219,25 @@ static s32 e1000_setup_copper_link_80003es2lan(struct e1000_hw *hw)
* polling the phy; this fixes erroneous timeouts at 10Mbps.
*/
ret_val = e1000_write_kmrn_reg_80003es2lan(hw, GG82563_REG(0x34, 4),
- 0xFFFF);
+ 0xFFFF);
if (ret_val)
goto out;
ret_val = e1000_read_kmrn_reg_80003es2lan(hw, GG82563_REG(0x34, 9),
- &reg_data);
+ &reg_data);
if (ret_val)
goto out;
reg_data |= 0x3F;
ret_val = e1000_write_kmrn_reg_80003es2lan(hw, GG82563_REG(0x34, 9),
- reg_data);
+ reg_data);
if (ret_val)
goto out;
ret_val = e1000_read_kmrn_reg_80003es2lan(hw,
- E1000_KMRNCTRLSTA_OFFSET_INB_CTRL,
- &reg_data);
+ E1000_KMRNCTRLSTA_OFFSET_INB_CTRL, &reg_data);
if (ret_val)
goto out;
reg_data |= E1000_KMRNCTRLSTA_INB_CTRL_DIS_PADDING;
ret_val = e1000_write_kmrn_reg_80003es2lan(hw,
- E1000_KMRNCTRLSTA_OFFSET_INB_CTRL,
- reg_data);
+ E1000_KMRNCTRLSTA_OFFSET_INB_CTRL, reg_data);
if (ret_val)
goto out;
@@ -1279,9 +1268,8 @@ static s32 e1000_cfg_on_link_up_80003es2lan(struct e1000_hw *hw)
DEBUGFUNC("e1000_configure_on_link_up");
if (hw->phy.media_type == e1000_media_type_copper) {
- ret_val = e1000_get_speed_and_duplex_copper_generic(hw,
- &speed,
- &duplex);
+ ret_val = e1000_get_speed_and_duplex_copper_generic(hw, &speed,
+ &duplex);
if (ret_val)
goto out;
@@ -1314,8 +1302,8 @@ static s32 e1000_cfg_kmrn_10_100_80003es2lan(struct e1000_hw *hw, u16 duplex)
reg_data = E1000_KMRNCTRLSTA_HD_CTRL_10_100_DEFAULT;
ret_val = e1000_write_kmrn_reg_80003es2lan(hw,
- E1000_KMRNCTRLSTA_OFFSET_HD_CTRL,
- reg_data);
+ E1000_KMRNCTRLSTA_OFFSET_HD_CTRL,
+ reg_data);
if (ret_val)
goto out;
@@ -1327,12 +1315,12 @@ static s32 e1000_cfg_kmrn_10_100_80003es2lan(struct e1000_hw *hw, u16 duplex)
do {
ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_KMRN_MODE_CTRL,
- &reg_data);
+ &reg_data);
if (ret_val)
goto out;
ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_KMRN_MODE_CTRL,
- &reg_data2);
+ &reg_data2);
if (ret_val)
goto out;
i++;
@@ -1343,7 +1331,8 @@ static s32 e1000_cfg_kmrn_10_100_80003es2lan(struct e1000_hw *hw, u16 duplex)
else
reg_data &= ~GG82563_KMCR_PASS_FALSE_CARRIER;
- ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_KMRN_MODE_CTRL, reg_data);
+ ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_KMRN_MODE_CTRL,
+ reg_data);
out:
return ret_val;
@@ -1367,8 +1356,7 @@ static s32 e1000_cfg_kmrn_1000_80003es2lan(struct e1000_hw *hw)
reg_data = E1000_KMRNCTRLSTA_HD_CTRL_1000_DEFAULT;
ret_val = e1000_write_kmrn_reg_80003es2lan(hw,
- E1000_KMRNCTRLSTA_OFFSET_HD_CTRL,
- reg_data);
+ E1000_KMRNCTRLSTA_OFFSET_HD_CTRL, reg_data);
if (ret_val)
goto out;
@@ -1380,19 +1368,20 @@ static s32 e1000_cfg_kmrn_1000_80003es2lan(struct e1000_hw *hw)
do {
ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_KMRN_MODE_CTRL,
- &reg_data);
+ &reg_data);
if (ret_val)
goto out;
ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_KMRN_MODE_CTRL,
- &reg_data2);
+ &reg_data2);
if (ret_val)
goto out;
i++;
} while ((reg_data != reg_data2) && (i < GG82563_MAX_KMRN_RETRY));
reg_data &= ~GG82563_KMCR_PASS_FALSE_CARRIER;
- ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_KMRN_MODE_CTRL, reg_data);
+ ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_KMRN_MODE_CTRL,
+ reg_data);
out:
return ret_val;
@@ -1409,7 +1398,7 @@ out:
* Release the semaphore before exiting.
**/
static s32 e1000_read_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,
- u16 *data)
+ u16 *data)
{
u32 kmrnctrlsta;
s32 ret_val = E1000_SUCCESS;
@@ -1421,8 +1410,9 @@ static s32 e1000_read_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,
goto out;
kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) &
- E1000_KMRNCTRLSTA_OFFSET) | E1000_KMRNCTRLSTA_REN;
+ E1000_KMRNCTRLSTA_OFFSET) | E1000_KMRNCTRLSTA_REN;
E1000_WRITE_REG(hw, E1000_KMRNCTRLSTA, kmrnctrlsta);
+ E1000_WRITE_FLUSH(hw);
usec_delay(2);
@@ -1446,7 +1436,7 @@ out:
* before exiting.
**/
static s32 e1000_write_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,
- u16 data)
+ u16 data)
{
u32 kmrnctrlsta;
s32 ret_val = E1000_SUCCESS;
@@ -1458,8 +1448,9 @@ static s32 e1000_write_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,
goto out;
kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) &
- E1000_KMRNCTRLSTA_OFFSET) | data;
+ E1000_KMRNCTRLSTA_OFFSET) | data;
E1000_WRITE_REG(hw, E1000_KMRNCTRLSTA, kmrnctrlsta);
+ E1000_WRITE_FLUSH(hw);
usec_delay(2);
diff --git a/sys/dev/e1000/e1000_80003es2lan.h b/sys/dev/e1000/e1000_80003es2lan.h
index 7d147f1..157468e 100644
--- a/sys/dev/e1000/e1000_80003es2lan.h
+++ b/sys/dev/e1000/e1000_80003es2lan.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -35,48 +35,47 @@
#ifndef _E1000_80003ES2LAN_H_
#define _E1000_80003ES2LAN_H_
-#define E1000_KMRNCTRLSTA_OFFSET_FIFO_CTRL 0x00
-#define E1000_KMRNCTRLSTA_OFFSET_INB_CTRL 0x02
-#define E1000_KMRNCTRLSTA_OFFSET_HD_CTRL 0x10
-#define E1000_KMRNCTRLSTA_OFFSET_MAC2PHY_OPMODE 0x1F
+#define E1000_KMRNCTRLSTA_OFFSET_FIFO_CTRL 0x00
+#define E1000_KMRNCTRLSTA_OFFSET_INB_CTRL 0x02
+#define E1000_KMRNCTRLSTA_OFFSET_HD_CTRL 0x10
+#define E1000_KMRNCTRLSTA_OFFSET_MAC2PHY_OPMODE 0x1F
-#define E1000_KMRNCTRLSTA_FIFO_CTRL_RX_BYPASS 0x0008
-#define E1000_KMRNCTRLSTA_FIFO_CTRL_TX_BYPASS 0x0800
-#define E1000_KMRNCTRLSTA_INB_CTRL_DIS_PADDING 0x0010
+#define E1000_KMRNCTRLSTA_FIFO_CTRL_RX_BYPASS 0x0008
+#define E1000_KMRNCTRLSTA_FIFO_CTRL_TX_BYPASS 0x0800
+#define E1000_KMRNCTRLSTA_INB_CTRL_DIS_PADDING 0x0010
#define E1000_KMRNCTRLSTA_HD_CTRL_10_100_DEFAULT 0x0004
-#define E1000_KMRNCTRLSTA_HD_CTRL_1000_DEFAULT 0x0000
-#define E1000_KMRNCTRLSTA_OPMODE_E_IDLE 0x2000
+#define E1000_KMRNCTRLSTA_HD_CTRL_1000_DEFAULT 0x0000
+#define E1000_KMRNCTRLSTA_OPMODE_E_IDLE 0x2000
-#define E1000_KMRNCTRLSTA_OPMODE_MASK 0x000C
-#define E1000_KMRNCTRLSTA_OPMODE_INBAND_MDIO 0x0004
+#define E1000_KMRNCTRLSTA_OPMODE_MASK 0x000C
+#define E1000_KMRNCTRLSTA_OPMODE_INBAND_MDIO 0x0004
#define E1000_TCTL_EXT_GCEX_MASK 0x000FFC00 /* Gigabit Carry Extend Padding */
-#define DEFAULT_TCTL_EXT_GCEX_80003ES2LAN 0x00010000
+#define DEFAULT_TCTL_EXT_GCEX_80003ES2LAN 0x00010000
-#define DEFAULT_TIPG_IPGT_1000_80003ES2LAN 0x8
-#define DEFAULT_TIPG_IPGT_10_100_80003ES2LAN 0x9
+#define DEFAULT_TIPG_IPGT_1000_80003ES2LAN 0x8
+#define DEFAULT_TIPG_IPGT_10_100_80003ES2LAN 0x9
/* GG82563 PHY Specific Status Register (Page 0, Register 16 */
-#define GG82563_PSCR_POLARITY_REVERSAL_DISABLE 0x0002 /* 1=Reversal Disabled */
-#define GG82563_PSCR_CROSSOVER_MODE_MASK 0x0060
-#define GG82563_PSCR_CROSSOVER_MODE_MDI 0x0000 /* 00=Manual MDI */
-#define GG82563_PSCR_CROSSOVER_MODE_MDIX 0x0020 /* 01=Manual MDIX */
-#define GG82563_PSCR_CROSSOVER_MODE_AUTO 0x0060 /* 11=Auto crossover */
+#define GG82563_PSCR_POLARITY_REVERSAL_DISABLE 0x0002 /* 1=Reversal Disabled */
+#define GG82563_PSCR_CROSSOVER_MODE_MASK 0x0060
+#define GG82563_PSCR_CROSSOVER_MODE_MDI 0x0000 /* 00=Manual MDI */
+#define GG82563_PSCR_CROSSOVER_MODE_MDIX 0x0020 /* 01=Manual MDIX */
+#define GG82563_PSCR_CROSSOVER_MODE_AUTO 0x0060 /* 11=Auto crossover */
/* PHY Specific Control Register 2 (Page 0, Register 26) */
-#define GG82563_PSCR2_REVERSE_AUTO_NEG 0x2000
- /* 1=Reverse Auto-Negotiation */
+#define GG82563_PSCR2_REVERSE_AUTO_NEG 0x2000 /* 1=Reverse Auto-Nego */
/* MAC Specific Control Register (Page 2, Register 21) */
/* Tx clock speed for Link Down and 1000BASE-T for the following speeds */
-#define GG82563_MSCR_TX_CLK_MASK 0x0007
-#define GG82563_MSCR_TX_CLK_10MBPS_2_5 0x0004
-#define GG82563_MSCR_TX_CLK_100MBPS_25 0x0005
-#define GG82563_MSCR_TX_CLK_1000MBPS_2_5 0x0006
-#define GG82563_MSCR_TX_CLK_1000MBPS_25 0x0007
+#define GG82563_MSCR_TX_CLK_MASK 0x0007
+#define GG82563_MSCR_TX_CLK_10MBPS_2_5 0x0004
+#define GG82563_MSCR_TX_CLK_100MBPS_25 0x0005
+#define GG82563_MSCR_TX_CLK_1000MBPS_2_5 0x0006
+#define GG82563_MSCR_TX_CLK_1000MBPS_25 0x0007
-#define GG82563_MSCR_ASSERT_CRS_ON_TX 0x0010 /* 1=Assert */
+#define GG82563_MSCR_ASSERT_CRS_ON_TX 0x0010 /* 1=Assert */
/* DSP Distance Register (Page 5, Register 26) */
/*
@@ -86,19 +85,19 @@
* 3 = 110-140M
* 4 = >140M
*/
-#define GG82563_DSPD_CABLE_LENGTH 0x0007
+#define GG82563_DSPD_CABLE_LENGTH 0x0007
/* Kumeran Mode Control Register (Page 193, Register 16) */
-#define GG82563_KMCR_PASS_FALSE_CARRIER 0x0800
+#define GG82563_KMCR_PASS_FALSE_CARRIER 0x0800
/* Max number of times Kumeran read/write should be validated */
-#define GG82563_MAX_KMRN_RETRY 0x5
+#define GG82563_MAX_KMRN_RETRY 0x5
/* Power Management Control Register (Page 193, Register 20) */
-#define GG82563_PMCR_ENABLE_ELECTRICAL_IDLE 0x0001
- /* 1=Enable SERDES Electrical Idle */
+/* 1=Enable SERDES Electrical Idle */
+#define GG82563_PMCR_ENABLE_ELECTRICAL_IDLE 0x0001
/* In-Band Control Register (Page 194, Register 18) */
-#define GG82563_ICR_DIS_PADDING 0x0010 /* Disable Padding */
+#define GG82563_ICR_DIS_PADDING 0x0010 /* Disable Padding */
#endif
diff --git a/sys/dev/e1000/e1000_82540.c b/sys/dev/e1000/e1000_82540.c
index 35018ce..141b92e 100644
--- a/sys/dev/e1000/e1000_82540.c
+++ b/sys/dev/e1000/e1000_82540.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -68,23 +68,23 @@ static s32 e1000_init_phy_params_82540(struct e1000_hw *hw)
struct e1000_phy_info *phy = &hw->phy;
s32 ret_val = E1000_SUCCESS;
- phy->addr = 1;
- phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
- phy->reset_delay_us = 10000;
- phy->type = e1000_phy_m88;
+ phy->addr = 1;
+ phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
+ phy->reset_delay_us = 10000;
+ phy->type = e1000_phy_m88;
/* Function Pointers */
- phy->ops.check_polarity = e1000_check_polarity_m88;
- phy->ops.commit = e1000_phy_sw_reset_generic;
- phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_m88;
- phy->ops.get_cable_length = e1000_get_cable_length_m88;
- phy->ops.get_cfg_done = e1000_get_cfg_done_generic;
- phy->ops.read_reg = e1000_read_phy_reg_m88;
- phy->ops.reset = e1000_phy_hw_reset_generic;
- phy->ops.write_reg = e1000_write_phy_reg_m88;
- phy->ops.get_info = e1000_get_phy_info_m88;
- phy->ops.power_up = e1000_power_up_phy_copper;
- phy->ops.power_down = e1000_power_down_phy_copper_82540;
+ phy->ops.check_polarity = e1000_check_polarity_m88;
+ phy->ops.commit = e1000_phy_sw_reset_generic;
+ phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_m88;
+ phy->ops.get_cable_length = e1000_get_cable_length_m88;
+ phy->ops.get_cfg_done = e1000_get_cfg_done_generic;
+ phy->ops.read_reg = e1000_read_phy_reg_m88;
+ phy->ops.reset = e1000_phy_hw_reset_generic;
+ phy->ops.write_reg = e1000_write_phy_reg_m88;
+ phy->ops.get_info = e1000_get_phy_info_m88;
+ phy->ops.power_up = e1000_power_up_phy_copper;
+ phy->ops.power_down = e1000_power_down_phy_copper_82540;
ret_val = e1000_get_phy_id(hw);
if (ret_val)
@@ -121,32 +121,32 @@ static s32 e1000_init_nvm_params_82540(struct e1000_hw *hw)
DEBUGFUNC("e1000_init_nvm_params_82540");
- nvm->type = e1000_nvm_eeprom_microwire;
- nvm->delay_usec = 50;
- nvm->opcode_bits = 3;
+ nvm->type = e1000_nvm_eeprom_microwire;
+ nvm->delay_usec = 50;
+ nvm->opcode_bits = 3;
switch (nvm->override) {
case e1000_nvm_override_microwire_large:
- nvm->address_bits = 8;
- nvm->word_size = 256;
+ nvm->address_bits = 8;
+ nvm->word_size = 256;
break;
case e1000_nvm_override_microwire_small:
- nvm->address_bits = 6;
- nvm->word_size = 64;
+ nvm->address_bits = 6;
+ nvm->word_size = 64;
break;
default:
- nvm->address_bits = eecd & E1000_EECD_SIZE ? 8 : 6;
- nvm->word_size = eecd & E1000_EECD_SIZE ? 256 : 64;
+ nvm->address_bits = eecd & E1000_EECD_SIZE ? 8 : 6;
+ nvm->word_size = eecd & E1000_EECD_SIZE ? 256 : 64;
break;
}
/* Function Pointers */
- nvm->ops.acquire = e1000_acquire_nvm_generic;
- nvm->ops.read = e1000_read_nvm_microwire;
- nvm->ops.release = e1000_release_nvm_generic;
- nvm->ops.update = e1000_update_nvm_checksum_generic;
- nvm->ops.valid_led_default = e1000_valid_led_default_generic;
- nvm->ops.validate = e1000_validate_nvm_checksum_generic;
- nvm->ops.write = e1000_write_nvm_microwire;
+ nvm->ops.acquire = e1000_acquire_nvm_generic;
+ nvm->ops.read = e1000_read_nvm_microwire;
+ nvm->ops.release = e1000_release_nvm_generic;
+ nvm->ops.update = e1000_update_nvm_checksum_generic;
+ nvm->ops.valid_led_default = e1000_valid_led_default_generic;
+ nvm->ops.validate = e1000_validate_nvm_checksum_generic;
+ nvm->ops.write = e1000_write_nvm_microwire;
return E1000_SUCCESS;
}
@@ -198,9 +198,9 @@ static s32 e1000_init_mac_params_82540(struct e1000_hw *hw)
mac->ops.setup_link = e1000_setup_link_generic;
/* physical interface setup */
mac->ops.setup_physical_interface =
- (hw->phy.media_type == e1000_media_type_copper)
- ? e1000_setup_copper_link_82540
- : e1000_setup_fiber_serdes_link_82540;
+ (hw->phy.media_type == e1000_media_type_copper)
+ ? e1000_setup_copper_link_82540
+ : e1000_setup_fiber_serdes_link_82540;
/* check for link */
switch (hw->phy.media_type) {
case e1000_media_type_copper:
@@ -219,9 +219,9 @@ static s32 e1000_init_mac_params_82540(struct e1000_hw *hw)
}
/* link info */
mac->ops.get_link_up_info =
- (hw->phy.media_type == e1000_media_type_copper)
- ? e1000_get_speed_and_duplex_copper_generic
- : e1000_get_speed_and_duplex_fiber_serdes_generic;
+ (hw->phy.media_type == e1000_media_type_copper)
+ ? e1000_get_speed_and_duplex_copper_generic
+ : e1000_get_speed_and_duplex_fiber_serdes_generic;
/* multicast address update */
mac->ops.update_mc_addr_list = e1000_update_mc_addr_list_generic;
/* writing VFTA */
@@ -374,7 +374,7 @@ static s32 e1000_init_hw_82540(struct e1000_hw *hw)
txdctl = E1000_READ_REG(hw, E1000_TXDCTL(0));
txdctl = (txdctl & ~E1000_TXDCTL_WTHRESH) |
- E1000_TXDCTL_FULL_TX_DESC_WB;
+ E1000_TXDCTL_FULL_TX_DESC_WB;
E1000_WRITE_REG(hw, E1000_TXDCTL(0), txdctl);
/*
@@ -427,11 +427,13 @@ static s32 e1000_setup_copper_link_82540(struct e1000_hw *hw)
if (hw->mac.type == e1000_82545_rev_3 ||
hw->mac.type == e1000_82546_rev_3) {
- ret_val = hw->phy.ops.read_reg(hw, M88E1000_PHY_SPEC_CTRL, &data);
+ ret_val = hw->phy.ops.read_reg(hw, M88E1000_PHY_SPEC_CTRL,
+ &data);
if (ret_val)
goto out;
data |= 0x00000008;
- ret_val = hw->phy.ops.write_reg(hw, M88E1000_PHY_SPEC_CTRL, data);
+ ret_val = hw->phy.ops.write_reg(hw, M88E1000_PHY_SPEC_CTRL,
+ data);
if (ret_val)
goto out;
}
@@ -508,9 +510,8 @@ static s32 e1000_adjust_serdes_amplitude_82540(struct e1000_hw *hw)
if (nvm_data != NVM_RESERVED_WORD) {
/* Adjust serdes output amplitude only. */
nvm_data &= NVM_SERDES_AMPLITUDE_MASK;
- ret_val = hw->phy.ops.write_reg(hw,
- M88E1000_PHY_EXT_CTRL,
- nvm_data);
+ ret_val = hw->phy.ops.write_reg(hw, M88E1000_PHY_EXT_CTRL,
+ nvm_data);
if (ret_val)
goto out;
}
@@ -535,9 +536,8 @@ static s32 e1000_set_vco_speed_82540(struct e1000_hw *hw)
/* Set PHY register 30, page 5, bit 8 to 0 */
- ret_val = hw->phy.ops.read_reg(hw,
- M88E1000_PHY_PAGE_SELECT,
- &default_page);
+ ret_val = hw->phy.ops.read_reg(hw, M88E1000_PHY_PAGE_SELECT,
+ &default_page);
if (ret_val)
goto out;
@@ -570,7 +570,7 @@ static s32 e1000_set_vco_speed_82540(struct e1000_hw *hw)
goto out;
ret_val = hw->phy.ops.write_reg(hw, M88E1000_PHY_PAGE_SELECT,
- default_page);
+ default_page);
out:
return ret_val;
@@ -587,7 +587,6 @@ out:
**/
static s32 e1000_set_phy_mode_82540(struct e1000_hw *hw)
{
- struct e1000_phy_info *phy = &hw->phy;
s32 ret_val = E1000_SUCCESS;
u16 nvm_data;
@@ -604,20 +603,18 @@ static s32 e1000_set_phy_mode_82540(struct e1000_hw *hw)
if ((nvm_data != NVM_RESERVED_WORD) && (nvm_data & NVM_PHY_CLASS_A)) {
ret_val = hw->phy.ops.write_reg(hw, M88E1000_PHY_PAGE_SELECT,
- 0x000B);
+ 0x000B);
if (ret_val) {
ret_val = -E1000_ERR_PHY;
goto out;
}
- ret_val = hw->phy.ops.write_reg(hw,
- M88E1000_PHY_GEN_CONTROL,
- 0x8104);
+ ret_val = hw->phy.ops.write_reg(hw, M88E1000_PHY_GEN_CONTROL,
+ 0x8104);
if (ret_val) {
ret_val = -E1000_ERR_PHY;
goto out;
}
- phy->reset_disable = FALSE;
}
out:
diff --git a/sys/dev/e1000/e1000_82541.c b/sys/dev/e1000/e1000_82541.c
index 7c9605b..d13611e 100644
--- a/sys/dev/e1000/e1000_82541.c
+++ b/sys/dev/e1000/e1000_82541.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -300,7 +300,7 @@ void e1000_init_function_pointers_82541(struct e1000_hw *hw)
**/
static s32 e1000_reset_hw_82541(struct e1000_hw *hw)
{
- u32 ledctl, ctrl, manc;
+ u32 ledctl, ctrl, icr, manc;
DEBUGFUNC("e1000_reset_hw_82541");
@@ -364,7 +364,7 @@ static s32 e1000_reset_hw_82541(struct e1000_hw *hw)
E1000_WRITE_REG(hw, E1000_IMC, 0xFFFFFFFF);
/* Clear any pending interrupt events. */
- E1000_READ_REG(hw, E1000_ICR);
+ icr = E1000_READ_REG(hw, E1000_ICR);
return E1000_SUCCESS;
}
@@ -390,7 +390,7 @@ static s32 e1000_init_hw_82541(struct e1000_hw *hw)
DEBUGOUT("Error initializing identification LED\n");
/* This is not fatal and we should not stop init due to this */
}
-
+
/* Storing the Speed Power Down value for later use */
ret_val = hw->phy.ops.read_reg(hw,
IGP01E1000_GMII_FIFO,
@@ -549,8 +549,6 @@ static s32 e1000_setup_copper_link_82541(struct e1000_hw *hw)
ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX);
E1000_WRITE_REG(hw, E1000_CTRL, ctrl);
- hw->phy.reset_disable = FALSE;
-
/* Earlier revs of the IGP phy require us to force MDI. */
if (hw->mac.type == e1000_82541 || hw->mac.type == e1000_82547) {
dev_spec->dsp_config = e1000_dsp_config_disabled;
diff --git a/sys/dev/e1000/e1000_82543.c b/sys/dev/e1000/e1000_82543.c
index 2cf6029..1507da5 100644
--- a/sys/dev/e1000/e1000_82543.c
+++ b/sys/dev/e1000/e1000_82543.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -901,7 +901,7 @@ static s32 e1000_phy_hw_reset_82543(struct e1000_hw *hw)
**/
static s32 e1000_reset_hw_82543(struct e1000_hw *hw)
{
- u32 ctrl;
+ u32 ctrl, icr;
s32 ret_val = E1000_SUCCESS;
DEBUGFUNC("e1000_reset_hw_82543");
@@ -943,7 +943,7 @@ static s32 e1000_reset_hw_82543(struct e1000_hw *hw)
/* Masking off and clearing any pending interrupts */
E1000_WRITE_REG(hw, E1000_IMC, 0xffffffff);
- E1000_READ_REG(hw, E1000_ICR);
+ icr = E1000_READ_REG(hw, E1000_ICR);
return ret_val;
}
@@ -1079,7 +1079,6 @@ static s32 e1000_setup_copper_link_82543(struct e1000_hw *hw)
ret_val = hw->phy.ops.reset(hw);
if (ret_val)
goto out;
- hw->phy.reset_disable = FALSE;
} else {
ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX);
E1000_WRITE_REG(hw, E1000_CTRL, ctrl);
diff --git a/sys/dev/e1000/e1000_82571.c b/sys/dev/e1000/e1000_82571.c
index 5d5cbaa..a2982b9 100644
--- a/sys/dev/e1000/e1000_82571.c
+++ b/sys/dev/e1000/e1000_82571.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -57,12 +57,12 @@ static s32 e1000_init_mac_params_82571(struct e1000_hw *hw);
static s32 e1000_acquire_nvm_82571(struct e1000_hw *hw);
static void e1000_release_nvm_82571(struct e1000_hw *hw);
static s32 e1000_write_nvm_82571(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data);
+ u16 words, u16 *data);
static s32 e1000_update_nvm_checksum_82571(struct e1000_hw *hw);
static s32 e1000_validate_nvm_checksum_82571(struct e1000_hw *hw);
static s32 e1000_get_cfg_done_82571(struct e1000_hw *hw);
static s32 e1000_set_d0_lplu_state_82571(struct e1000_hw *hw,
- bool active);
+ bool active);
static s32 e1000_reset_hw_82571(struct e1000_hw *hw);
static s32 e1000_init_hw_82571(struct e1000_hw *hw);
static void e1000_clear_vfta_82571(struct e1000_hw *hw);
@@ -83,12 +83,12 @@ static void e1000_put_hw_semaphore_82573(struct e1000_hw *hw);
static s32 e1000_get_hw_semaphore_82574(struct e1000_hw *hw);
static void e1000_put_hw_semaphore_82574(struct e1000_hw *hw);
static s32 e1000_set_d0_lplu_state_82574(struct e1000_hw *hw,
- bool active);
+ bool active);
static s32 e1000_set_d3_lplu_state_82574(struct e1000_hw *hw,
- bool active);
+ bool active);
static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw);
static s32 e1000_write_nvm_eewr_82571(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data);
+ u16 words, u16 *data);
static s32 e1000_read_mac_addr_82571(struct e1000_hw *hw);
static void e1000_power_down_phy_copper_82571(struct e1000_hw *hw);
@@ -108,61 +108,61 @@ static s32 e1000_init_phy_params_82571(struct e1000_hw *hw)
goto out;
}
- phy->addr = 1;
- phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
- phy->reset_delay_us = 100;
+ phy->addr = 1;
+ phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
+ phy->reset_delay_us = 100;
- phy->ops.check_reset_block = e1000_check_reset_block_generic;
- phy->ops.reset = e1000_phy_hw_reset_generic;
- phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_82571;
- phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_generic;
- phy->ops.power_up = e1000_power_up_phy_copper;
- phy->ops.power_down = e1000_power_down_phy_copper_82571;
+ phy->ops.check_reset_block = e1000_check_reset_block_generic;
+ phy->ops.reset = e1000_phy_hw_reset_generic;
+ phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_82571;
+ phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_generic;
+ phy->ops.power_up = e1000_power_up_phy_copper;
+ phy->ops.power_down = e1000_power_down_phy_copper_82571;
switch (hw->mac.type) {
case e1000_82571:
case e1000_82572:
- phy->type = e1000_phy_igp_2;
- phy->ops.get_cfg_done = e1000_get_cfg_done_82571;
- phy->ops.get_info = e1000_get_phy_info_igp;
- phy->ops.check_polarity = e1000_check_polarity_igp;
+ phy->type = e1000_phy_igp_2;
+ phy->ops.get_cfg_done = e1000_get_cfg_done_82571;
+ phy->ops.get_info = e1000_get_phy_info_igp;
+ phy->ops.check_polarity = e1000_check_polarity_igp;
phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_igp;
- phy->ops.get_cable_length = e1000_get_cable_length_igp_2;
- phy->ops.read_reg = e1000_read_phy_reg_igp;
- phy->ops.write_reg = e1000_write_phy_reg_igp;
- phy->ops.acquire = e1000_get_hw_semaphore_82571;
- phy->ops.release = e1000_put_hw_semaphore_82571;
+ phy->ops.get_cable_length = e1000_get_cable_length_igp_2;
+ phy->ops.read_reg = e1000_read_phy_reg_igp;
+ phy->ops.write_reg = e1000_write_phy_reg_igp;
+ phy->ops.acquire = e1000_get_hw_semaphore_82571;
+ phy->ops.release = e1000_put_hw_semaphore_82571;
break;
case e1000_82573:
- phy->type = e1000_phy_m88;
- phy->ops.get_cfg_done = e1000_get_cfg_done_generic;
- phy->ops.get_info = e1000_get_phy_info_m88;
- phy->ops.check_polarity = e1000_check_polarity_m88;
- phy->ops.commit = e1000_phy_sw_reset_generic;
+ phy->type = e1000_phy_m88;
+ phy->ops.get_cfg_done = e1000_get_cfg_done_generic;
+ phy->ops.get_info = e1000_get_phy_info_m88;
+ phy->ops.check_polarity = e1000_check_polarity_m88;
+ phy->ops.commit = e1000_phy_sw_reset_generic;
phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_m88;
- phy->ops.get_cable_length = e1000_get_cable_length_m88;
- phy->ops.read_reg = e1000_read_phy_reg_m88;
- phy->ops.write_reg = e1000_write_phy_reg_m88;
- phy->ops.acquire = e1000_get_hw_semaphore_82571;
- phy->ops.release = e1000_put_hw_semaphore_82571;
+ phy->ops.get_cable_length = e1000_get_cable_length_m88;
+ phy->ops.read_reg = e1000_read_phy_reg_m88;
+ phy->ops.write_reg = e1000_write_phy_reg_m88;
+ phy->ops.acquire = e1000_get_hw_semaphore_82571;
+ phy->ops.release = e1000_put_hw_semaphore_82571;
break;
case e1000_82574:
case e1000_82583:
E1000_MUTEX_INIT(&hw->dev_spec._82571.swflag_mutex);
- phy->type = e1000_phy_bm;
- phy->ops.get_cfg_done = e1000_get_cfg_done_generic;
- phy->ops.get_info = e1000_get_phy_info_m88;
- phy->ops.check_polarity = e1000_check_polarity_m88;
- phy->ops.commit = e1000_phy_sw_reset_generic;
+ phy->type = e1000_phy_bm;
+ phy->ops.get_cfg_done = e1000_get_cfg_done_generic;
+ phy->ops.get_info = e1000_get_phy_info_m88;
+ phy->ops.check_polarity = e1000_check_polarity_m88;
+ phy->ops.commit = e1000_phy_sw_reset_generic;
phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_m88;
- phy->ops.get_cable_length = e1000_get_cable_length_m88;
- phy->ops.read_reg = e1000_read_phy_reg_bm2;
- phy->ops.write_reg = e1000_write_phy_reg_bm2;
- phy->ops.acquire = e1000_get_hw_semaphore_82574;
- phy->ops.release = e1000_put_hw_semaphore_82574;
- phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_82574;
- phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_82574;
+ phy->ops.get_cable_length = e1000_get_cable_length_m88;
+ phy->ops.read_reg = e1000_read_phy_reg_bm2;
+ phy->ops.write_reg = e1000_write_phy_reg_bm2;
+ phy->ops.acquire = e1000_get_hw_semaphore_82574;
+ phy->ops.release = e1000_put_hw_semaphore_82574;
+ phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_82574;
+ phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_82574;
break;
default:
ret_val = -E1000_ERR_PHY;
@@ -253,7 +253,7 @@ static s32 e1000_init_nvm_params_82571(struct e1000_hw *hw)
default:
nvm->type = e1000_nvm_eeprom_spi;
size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >>
- E1000_EECD_SIZE_EX_SHIFT);
+ E1000_EECD_SIZE_EX_SHIFT);
/*
* Added to a constant, "size" becomes the left-shift value
* for setting word_size.
@@ -263,7 +263,7 @@ static s32 e1000_init_nvm_params_82571(struct e1000_hw *hw)
/* EEPROM access above 16k is unsupported */
if (size > 14)
size = 14;
- nvm->word_size = 1 << size;
+ nvm->word_size = 1 << size;
break;
}
@@ -279,11 +279,11 @@ static s32 e1000_init_nvm_params_82571(struct e1000_hw *hw)
nvm->ops.release = e1000_release_nvm_82571;
break;
}
- nvm->ops.read = e1000_read_nvm_eerd;
- nvm->ops.update = e1000_update_nvm_checksum_82571;
- nvm->ops.validate = e1000_validate_nvm_checksum_82571;
+ nvm->ops.read = e1000_read_nvm_eerd;
+ nvm->ops.update = e1000_update_nvm_checksum_82571;
+ nvm->ops.validate = e1000_validate_nvm_checksum_82571;
nvm->ops.valid_led_default = e1000_valid_led_default_82571;
- nvm->ops.write = e1000_write_nvm_82571;
+ nvm->ops.write = e1000_write_nvm_82571;
return E1000_SUCCESS;
}
@@ -363,8 +363,6 @@ static s32 e1000_init_mac_params_82571(struct e1000_hw *hw)
mac->ops.read_mac_addr = e1000_read_mac_addr_82571;
/* ID LED init */
mac->ops.id_led_init = e1000_id_led_init_generic;
- /* blink LED */
- mac->ops.blink_led = e1000_blink_led_generic;
/* setup LED */
mac->ops.setup_led = e1000_setup_led_generic;
/* cleanup LED */
@@ -380,6 +378,7 @@ static s32 e1000_init_mac_params_82571(struct e1000_hw *hw)
mac->ops.set_lan_id = e1000_set_lan_id_single_port;
mac->ops.check_mng_mode = e1000_check_mng_mode_generic;
mac->ops.led_on = e1000_led_on_generic;
+ mac->ops.blink_led = e1000_blink_led_generic;
/* FWSM register */
mac->has_fwsm = TRUE;
@@ -387,9 +386,8 @@ static s32 e1000_init_mac_params_82571(struct e1000_hw *hw)
* ARC supported; valid only if manageability features are
* enabled.
*/
- mac->arc_subsystem_valid =
- (E1000_READ_REG(hw, E1000_FWSM) & E1000_FWSM_MODE_MASK)
- ? TRUE : FALSE;
+ mac->arc_subsystem_valid = (E1000_READ_REG(hw, E1000_FWSM) &
+ E1000_FWSM_MODE_MASK) ? TRUE : FALSE;
break;
case e1000_82574:
case e1000_82583:
@@ -400,6 +398,7 @@ static s32 e1000_init_mac_params_82571(struct e1000_hw *hw)
default:
mac->ops.check_mng_mode = e1000_check_mng_mode_generic;
mac->ops.led_on = e1000_led_on_generic;
+ mac->ops.blink_led = e1000_blink_led_generic;
/* FWSM register */
mac->has_fwsm = TRUE;
@@ -420,8 +419,8 @@ static s32 e1000_init_mac_params_82571(struct e1000_hw *hw)
if (!(swsm2 & E1000_SWSM2_LOCK)) {
/* Only do this for the first interface on this card */
- E1000_WRITE_REG(hw, E1000_SWSM2,
- swsm2 | E1000_SWSM2_LOCK);
+ E1000_WRITE_REG(hw, E1000_SWSM2, swsm2 |
+ E1000_SWSM2_LOCK);
force_clear_smbi = TRUE;
} else
force_clear_smbi = FALSE;
@@ -746,8 +745,8 @@ static s32 e1000_set_d3_lplu_state_82574(struct e1000_hw *hw, bool active)
if (!active) {
data &= ~E1000_PHY_CTRL_NOND0A_LPLU;
} else if ((hw->phy.autoneg_advertised == E1000_ALL_SPEED_DUPLEX) ||
- (hw->phy.autoneg_advertised == E1000_ALL_NOT_GIG) ||
- (hw->phy.autoneg_advertised == E1000_ALL_10_SPEED)) {
+ (hw->phy.autoneg_advertised == E1000_ALL_NOT_GIG) ||
+ (hw->phy.autoneg_advertised == E1000_ALL_10_SPEED)) {
data |= E1000_PHY_CTRL_NOND0A_LPLU;
}
@@ -816,7 +815,7 @@ static void e1000_release_nvm_82571(struct e1000_hw *hw)
* EEPROM will most likely contain an invalid checksum.
**/
static s32 e1000_write_nvm_82571(struct e1000_hw *hw, u16 offset, u16 words,
- u16 *data)
+ u16 *data)
{
s32 ret_val = E1000_SUCCESS;
@@ -941,7 +940,7 @@ static s32 e1000_validate_nvm_checksum_82571(struct e1000_hw *hw)
* EEPROM will most likely contain an invalid checksum.
**/
static s32 e1000_write_nvm_eewr_82571(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data)
+ u16 words, u16 *data)
{
struct e1000_nvm_info *nvm = &hw->nvm;
u32 i, eewr = 0;
@@ -1039,22 +1038,22 @@ static s32 e1000_set_d0_lplu_state_82571(struct e1000_hw *hw, bool active)
if (active) {
data |= IGP02E1000_PM_D0_LPLU;
ret_val = phy->ops.write_reg(hw, IGP02E1000_PHY_POWER_MGMT,
- data);
+ data);
if (ret_val)
goto out;
/* When LPLU is enabled, we should disable SmartSpeed */
ret_val = phy->ops.read_reg(hw, IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ &data);
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw, IGP01E1000_PHY_PORT_CONFIG,
- data);
+ data);
if (ret_val)
goto out;
} else {
data &= ~IGP02E1000_PM_D0_LPLU;
ret_val = phy->ops.write_reg(hw, IGP02E1000_PHY_POWER_MGMT,
- data);
+ data);
/*
* LPLU and SmartSpeed are mutually exclusive. LPLU is used
* during Dx states where the power conservation is most
@@ -1063,28 +1062,28 @@ static s32 e1000_set_d0_lplu_state_82571(struct e1000_hw *hw, bool active)
*/
if (phy->smart_speed == e1000_smart_speed_on) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data |= IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
} else if (phy->smart_speed == e1000_smart_speed_off) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
}
@@ -1255,8 +1254,7 @@ static s32 e1000_init_hw_82571(struct e1000_hw *hw)
/* Set the transmit descriptor write-back policy */
reg_data = E1000_READ_REG(hw, E1000_TXDCTL(0));
reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) |
- E1000_TXDCTL_FULL_TX_DESC_WB |
- E1000_TXDCTL_COUNT_DESC;
+ E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC;
E1000_WRITE_REG(hw, E1000_TXDCTL(0), reg_data);
/* ...for both queues. */
@@ -1273,8 +1271,8 @@ static s32 e1000_init_hw_82571(struct e1000_hw *hw)
default:
reg_data = E1000_READ_REG(hw, E1000_TXDCTL(1));
reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) |
- E1000_TXDCTL_FULL_TX_DESC_WB |
- E1000_TXDCTL_COUNT_DESC;
+ E1000_TXDCTL_FULL_TX_DESC_WB |
+ E1000_TXDCTL_COUNT_DESC;
E1000_WRITE_REG(hw, E1000_TXDCTL(1), reg_data);
break;
}
@@ -1320,6 +1318,10 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
case e1000_82572:
reg |= (1 << 23) | (1 << 24) | (1 << 25) | (1 << 26);
break;
+ case e1000_82574:
+ case e1000_82583:
+ reg |= (1 << 26);
+ break;
default:
break;
}
@@ -1527,12 +1529,12 @@ bool e1000_check_phy_82574(struct e1000_hw *hw)
* read the Base1000T status register If both are max then PHY is hung.
*/
ret_val = hw->phy.ops.read_reg(hw, E1000_RECEIVE_ERROR_COUNTER,
- &receive_errors);
+ &receive_errors);
if (ret_val)
goto out;
if (receive_errors == E1000_RECEIVE_ERROR_MAX) {
ret_val = hw->phy.ops.read_reg(hw, E1000_BASE1000T_STATUS,
- &status_1kbt);
+ &status_1kbt);
if (ret_val)
goto out;
if ((status_1kbt & E1000_IDLE_ERROR_COUNT_MASK) ==
@@ -1640,7 +1642,8 @@ static s32 e1000_setup_fiber_serdes_link_82571(struct e1000_hw *hw)
* mode. This prevents drivers from twiddling their thumbs
* if another tool failed to take it out of loopback mode.
*/
- E1000_WRITE_REG(hw, E1000_SCTL, E1000_SCTL_DISABLE_SERDES_LOOPBACK);
+ E1000_WRITE_REG(hw, E1000_SCTL,
+ E1000_SCTL_DISABLE_SERDES_LOOPBACK);
break;
default:
break;
@@ -1664,7 +1667,7 @@ static s32 e1000_setup_fiber_serdes_link_82571(struct e1000_hw *hw)
*
* 1) down
* 2) autoneg_progress
- * 3) autoneg_complete (the link sucessfully autonegotiated)
+ * 3) autoneg_complete (the link successfully autonegotiated)
* 4) forced_up (the link has been forced up, it did not autonegotiate)
*
**/
@@ -1763,7 +1766,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
break;
}
mac->serdes_link_state =
- e1000_serdes_link_forced_up;
+ e1000_serdes_link_forced_up;
mac->serdes_has_link = TRUE;
DEBUGOUT("AN_PROG -> FORCED_UP\n");
}
@@ -1777,10 +1780,10 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
* up.
*/
E1000_WRITE_REG(hw, E1000_TXCW, mac->txcw);
- E1000_WRITE_REG(hw, E1000_CTRL,
- (ctrl & ~E1000_CTRL_SLU));
+ E1000_WRITE_REG(hw, E1000_CTRL, (ctrl &
+ ~E1000_CTRL_SLU));
mac->serdes_link_state =
- e1000_serdes_link_autoneg_progress;
+ e1000_serdes_link_autoneg_progress;
mac->serdes_has_link = FALSE;
DEBUGOUT("DOWN -> AN_PROG\n");
break;
@@ -1804,7 +1807,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
(rxcw & E1000_RXCW_C))) {
mac->serdes_has_link = FALSE;
mac->serdes_link_state =
- e1000_serdes_link_down;
+ e1000_serdes_link_down;
DEBUGOUT("ANYSTATE -> DOWN\n");
break;
}
@@ -1815,7 +1818,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)
txcw |= E1000_TXCW_ANE;
E1000_WRITE_REG(hw, E1000_TXCW, txcw);
mac->serdes_link_state =
- e1000_serdes_link_autoneg_progress;
+ e1000_serdes_link_autoneg_progress;
mac->serdes_has_link = FALSE;
DEBUGOUT("ANYSTATE -> AN_PROG\n");
}
@@ -1905,7 +1908,7 @@ void e1000_set_laa_state_82571(struct e1000_hw *hw, bool state)
* Eventually the LAA will be in RAR[0] and RAR[14].
*/
e1000_rar_set_generic(hw, hw->mac.addr,
- hw->mac.rar_entry_count - 1);
+ hw->mac.rar_entry_count - 1);
return;
}
diff --git a/sys/dev/e1000/e1000_82575.c b/sys/dev/e1000/e1000_82575.c
index 8407f7c..75fe0a4 100644
--- a/sys/dev/e1000/e1000_82575.c
+++ b/sys/dev/e1000/e1000_82575.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -51,32 +51,34 @@ static void e1000_release_nvm_82575(struct e1000_hw *hw);
static s32 e1000_check_for_link_82575(struct e1000_hw *hw);
static s32 e1000_get_cfg_done_82575(struct e1000_hw *hw);
static s32 e1000_get_link_up_info_82575(struct e1000_hw *hw, u16 *speed,
- u16 *duplex);
+ u16 *duplex);
static s32 e1000_init_hw_82575(struct e1000_hw *hw);
static s32 e1000_phy_hw_reset_sgmii_82575(struct e1000_hw *hw);
static s32 e1000_read_phy_reg_sgmii_82575(struct e1000_hw *hw, u32 offset,
- u16 *data);
+ u16 *data);
static s32 e1000_reset_hw_82575(struct e1000_hw *hw);
static s32 e1000_reset_hw_82580(struct e1000_hw *hw);
static s32 e1000_read_phy_reg_82580(struct e1000_hw *hw,
- u32 offset, u16 *data);
+ u32 offset, u16 *data);
static s32 e1000_write_phy_reg_82580(struct e1000_hw *hw,
- u32 offset, u16 data);
+ u32 offset, u16 data);
static s32 e1000_set_d0_lplu_state_82580(struct e1000_hw *hw,
- bool active);
+ bool active);
static s32 e1000_set_d3_lplu_state_82580(struct e1000_hw *hw,
- bool active);
+ bool active);
static s32 e1000_set_d0_lplu_state_82575(struct e1000_hw *hw,
- bool active);
+ bool active);
static s32 e1000_setup_copper_link_82575(struct e1000_hw *hw);
static s32 e1000_setup_serdes_link_82575(struct e1000_hw *hw);
+static s32 e1000_get_media_type_82575(struct e1000_hw *hw);
+static s32 e1000_set_sfp_media_type_82575(struct e1000_hw *hw);
static s32 e1000_valid_led_default_82575(struct e1000_hw *hw, u16 *data);
static s32 e1000_write_phy_reg_sgmii_82575(struct e1000_hw *hw,
- u32 offset, u16 data);
+ u32 offset, u16 data);
static void e1000_clear_hw_cntrs_82575(struct e1000_hw *hw);
static s32 e1000_acquire_swfw_sync_82575(struct e1000_hw *hw, u16 mask);
static s32 e1000_get_pcs_speed_and_duplex_82575(struct e1000_hw *hw,
- u16 *speed, u16 *duplex);
+ u16 *speed, u16 *duplex);
static s32 e1000_get_phy_id_82575(struct e1000_hw *hw);
static void e1000_release_swfw_sync_82575(struct e1000_hw *hw, u16 mask);
static bool e1000_sgmii_active_82575(struct e1000_hw *hw);
@@ -91,15 +93,28 @@ static s32 e1000_reset_mdicnfg_82580(struct e1000_hw *hw);
static s32 e1000_validate_nvm_checksum_82580(struct e1000_hw *hw);
static s32 e1000_update_nvm_checksum_82580(struct e1000_hw *hw);
static s32 e1000_update_nvm_checksum_with_offset(struct e1000_hw *hw,
- u16 offset);
+ u16 offset);
static s32 e1000_validate_nvm_checksum_with_offset(struct e1000_hw *hw,
- u16 offset);
+ u16 offset);
static s32 e1000_validate_nvm_checksum_i350(struct e1000_hw *hw);
static s32 e1000_update_nvm_checksum_i350(struct e1000_hw *hw);
-
-static const u16 e1000_82580_rxpbs_table[] =
- { 36, 72, 144, 1, 2, 4, 8, 16,
- 35, 70, 140 };
+static void e1000_write_vfta_i350(struct e1000_hw *hw, u32 offset, u32 value);
+static void e1000_clear_vfta_i350(struct e1000_hw *hw);
+
+static void e1000_i2c_start(struct e1000_hw *hw);
+static void e1000_i2c_stop(struct e1000_hw *hw);
+static s32 e1000_clock_in_i2c_byte(struct e1000_hw *hw, u8 *data);
+static s32 e1000_clock_out_i2c_byte(struct e1000_hw *hw, u8 data);
+static s32 e1000_get_i2c_ack(struct e1000_hw *hw);
+static s32 e1000_clock_in_i2c_bit(struct e1000_hw *hw, bool *data);
+static s32 e1000_clock_out_i2c_bit(struct e1000_hw *hw, bool data);
+static void e1000_raise_i2c_clk(struct e1000_hw *hw, u32 *i2cctl);
+static void e1000_lower_i2c_clk(struct e1000_hw *hw, u32 *i2cctl);
+static s32 e1000_set_i2c_data(struct e1000_hw *hw, u32 *i2cctl, bool data);
+static bool e1000_get_i2c_data(u32 *i2cctl);
+
+static const u16 e1000_82580_rxpbs_table[] = {
+ 36, 72, 144, 1, 2, 4, 8, 16, 35, 70, 140 };
#define E1000_82580_RXPBS_TABLE_SIZE \
(sizeof(e1000_82580_rxpbs_table)/sizeof(u16))
@@ -155,22 +170,22 @@ static s32 e1000_init_phy_params_82575(struct e1000_hw *hw)
phy->ops.power_up = e1000_power_up_phy_copper;
phy->ops.power_down = e1000_power_down_phy_copper_82575;
- phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
- phy->reset_delay_us = 100;
+ phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
+ phy->reset_delay_us = 100;
- phy->ops.acquire = e1000_acquire_phy_82575;
- phy->ops.check_reset_block = e1000_check_reset_block_generic;
- phy->ops.commit = e1000_phy_sw_reset_generic;
- phy->ops.get_cfg_done = e1000_get_cfg_done_82575;
- phy->ops.release = e1000_release_phy_82575;
+ phy->ops.acquire = e1000_acquire_phy_82575;
+ phy->ops.check_reset_block = e1000_check_reset_block_generic;
+ phy->ops.commit = e1000_phy_sw_reset_generic;
+ phy->ops.get_cfg_done = e1000_get_cfg_done_82575;
+ phy->ops.release = e1000_release_phy_82575;
ctrl_ext = E1000_READ_REG(hw, E1000_CTRL_EXT);
if (e1000_sgmii_active_82575(hw)) {
- phy->ops.reset = e1000_phy_hw_reset_sgmii_82575;
+ phy->ops.reset = e1000_phy_hw_reset_sgmii_82575;
ctrl_ext |= E1000_CTRL_I2C_ENA;
} else {
- phy->ops.reset = e1000_phy_hw_reset_generic;
+ phy->ops.reset = e1000_phy_hw_reset_generic;
ctrl_ext &= ~E1000_CTRL_I2C_ENA;
}
@@ -178,14 +193,14 @@ static s32 e1000_init_phy_params_82575(struct e1000_hw *hw)
e1000_reset_mdicnfg_82580(hw);
if (e1000_sgmii_active_82575(hw) && !e1000_sgmii_uses_mdio_82575(hw)) {
- phy->ops.read_reg = e1000_read_phy_reg_sgmii_82575;
- phy->ops.write_reg = e1000_write_phy_reg_sgmii_82575;
+ phy->ops.read_reg = e1000_read_phy_reg_sgmii_82575;
+ phy->ops.write_reg = e1000_write_phy_reg_sgmii_82575;
} else if (hw->mac.type >= e1000_82580) {
- phy->ops.read_reg = e1000_read_phy_reg_82580;
- phy->ops.write_reg = e1000_write_phy_reg_82580;
+ phy->ops.read_reg = e1000_read_phy_reg_82580;
+ phy->ops.write_reg = e1000_write_phy_reg_82580;
} else {
- phy->ops.read_reg = e1000_read_phy_reg_igp;
- phy->ops.write_reg = e1000_write_phy_reg_igp;
+ phy->ops.read_reg = e1000_read_phy_reg_igp;
+ phy->ops.write_reg = e1000_write_phy_reg_igp;
}
/* Set phy->phy_addr and phy->id. */
@@ -197,36 +212,38 @@ static s32 e1000_init_phy_params_82575(struct e1000_hw *hw)
case M88E1112_E_PHY_ID:
case M88E1340M_E_PHY_ID:
case M88E1111_I_PHY_ID:
- phy->type = e1000_phy_m88;
- phy->ops.check_polarity = e1000_check_polarity_m88;
- phy->ops.get_info = e1000_get_phy_info_m88;
+ phy->type = e1000_phy_m88;
+ phy->ops.check_polarity = e1000_check_polarity_m88;
+ phy->ops.get_info = e1000_get_phy_info_m88;
if (phy->id == I347AT4_E_PHY_ID ||
phy->id == M88E1112_E_PHY_ID ||
phy->id == M88E1340M_E_PHY_ID)
- phy->ops.get_cable_length = e1000_get_cable_length_m88_gen2;
+ phy->ops.get_cable_length =
+ e1000_get_cable_length_m88_gen2;
else
phy->ops.get_cable_length = e1000_get_cable_length_m88;
phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_m88;
break;
case IGP03E1000_E_PHY_ID:
case IGP04E1000_E_PHY_ID:
- phy->type = e1000_phy_igp_3;
- phy->ops.check_polarity = e1000_check_polarity_igp;
- phy->ops.get_info = e1000_get_phy_info_igp;
- phy->ops.get_cable_length = e1000_get_cable_length_igp_2;
+ phy->type = e1000_phy_igp_3;
+ phy->ops.check_polarity = e1000_check_polarity_igp;
+ phy->ops.get_info = e1000_get_phy_info_igp;
+ phy->ops.get_cable_length = e1000_get_cable_length_igp_2;
phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_igp;
- phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_82575;
- phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_generic;
+ phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_82575;
+ phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_generic;
break;
case I82580_I_PHY_ID:
case I350_I_PHY_ID:
- phy->type = e1000_phy_82580;
- phy->ops.check_polarity = e1000_check_polarity_82577;
- phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_82577;
- phy->ops.get_cable_length = e1000_get_cable_length_82577;
- phy->ops.get_info = e1000_get_phy_info_82577;
- phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_82580;
- phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_82580;
+ phy->type = e1000_phy_82580;
+ phy->ops.check_polarity = e1000_check_polarity_82577;
+ phy->ops.force_speed_duplex =
+ e1000_phy_force_speed_duplex_82577;
+ phy->ops.get_cable_length = e1000_get_cable_length_82577;
+ phy->ops.get_info = e1000_get_phy_info_82577;
+ phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_82580;
+ phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_82580;
break;
default:
ret_val = -E1000_ERR_PHY;
@@ -250,27 +267,33 @@ s32 e1000_init_nvm_params_82575(struct e1000_hw *hw)
DEBUGFUNC("e1000_init_nvm_params_82575");
size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >>
- E1000_EECD_SIZE_EX_SHIFT);
+ E1000_EECD_SIZE_EX_SHIFT);
/*
* Added to a constant, "size" becomes the left-shift value
* for setting word_size.
*/
size += NVM_WORD_SIZE_BASE_SHIFT;
+ /* Just in case size is out of range, cap it to the largest
+ * EEPROM size supported
+ */
+ if (size > 15)
+ size = 15;
+
nvm->word_size = 1 << size;
- nvm->opcode_bits = 8;
- nvm->delay_usec = 1;
+ nvm->opcode_bits = 8;
+ nvm->delay_usec = 1;
switch (nvm->override) {
case e1000_nvm_override_spi_large:
- nvm->page_size = 32;
+ nvm->page_size = 32;
nvm->address_bits = 16;
break;
case e1000_nvm_override_spi_small:
- nvm->page_size = 8;
+ nvm->page_size = 8;
nvm->address_bits = 8;
break;
default:
- nvm->page_size = eecd & E1000_EECD_ADDR_BITS ? 32 : 8;
+ nvm->page_size = eecd & E1000_EECD_ADDR_BITS ? 32 : 8;
nvm->address_bits = eecd & E1000_EECD_ADDR_BITS ? 16 : 8;
break;
}
@@ -281,17 +304,17 @@ s32 e1000_init_nvm_params_82575(struct e1000_hw *hw)
nvm->page_size = 128;
/* Function Pointers */
- nvm->ops.acquire = e1000_acquire_nvm_82575;
- nvm->ops.release = e1000_release_nvm_82575;
+ nvm->ops.acquire = e1000_acquire_nvm_82575;
+ nvm->ops.release = e1000_release_nvm_82575;
if (nvm->word_size < (1 << 15))
- nvm->ops.read = e1000_read_nvm_eerd;
+ nvm->ops.read = e1000_read_nvm_eerd;
else
- nvm->ops.read = e1000_read_nvm_spi;
+ nvm->ops.read = e1000_read_nvm_spi;
- nvm->ops.write = e1000_write_nvm_spi;
- nvm->ops.validate = e1000_validate_nvm_checksum_generic;
- nvm->ops.update = e1000_update_nvm_checksum_generic;
- nvm->ops.valid_led_default = e1000_valid_led_default_82575;
+ nvm->ops.write = e1000_write_nvm_spi;
+ nvm->ops.validate = e1000_validate_nvm_checksum_generic;
+ nvm->ops.update = e1000_update_nvm_checksum_generic;
+ nvm->ops.valid_led_default = e1000_valid_led_default_82575;
/* override genric family function pointers for specific descendants */
switch (hw->mac.type) {
@@ -318,34 +341,11 @@ static s32 e1000_init_mac_params_82575(struct e1000_hw *hw)
{
struct e1000_mac_info *mac = &hw->mac;
struct e1000_dev_spec_82575 *dev_spec = &hw->dev_spec._82575;
- u32 ctrl_ext = 0;
DEBUGFUNC("e1000_init_mac_params_82575");
- /* Set media type */
- /*
- * The 82575 uses bits 22:23 for link mode. The mode can be changed
- * based on the EEPROM. We cannot rely upon device ID. There
- * is no distinguishable difference between fiber and internal
- * SerDes mode on the 82575. There can be an external PHY attached
- * on the SGMII interface. For this, we'll set sgmii_active to TRUE.
- */
- hw->phy.media_type = e1000_media_type_copper;
- dev_spec->sgmii_active = FALSE;
-
- ctrl_ext = E1000_READ_REG(hw, E1000_CTRL_EXT);
- switch (ctrl_ext & E1000_CTRL_EXT_LINK_MODE_MASK) {
- case E1000_CTRL_EXT_LINK_MODE_SGMII:
- dev_spec->sgmii_active = TRUE;
- break;
- case E1000_CTRL_EXT_LINK_MODE_1000BASE_KX:
- case E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES:
- hw->phy.media_type = e1000_media_type_internal_serdes;
- break;
- default:
- break;
- }
-
+ /* Derives media type */
+ e1000_get_media_type_82575(hw);
/* Set mta register count */
mac->mta_reg_count = 128;
/* Set uta register count */
@@ -368,8 +368,8 @@ static s32 e1000_init_mac_params_82575(struct e1000_hw *hw)
mac->has_fwsm = TRUE;
/* ARC supported; valid only if manageability features are enabled. */
mac->arc_subsystem_valid =
- (E1000_READ_REG(hw, E1000_FWSM) & E1000_FWSM_MODE_MASK)
- ? TRUE : FALSE;
+ (E1000_READ_REG(hw, E1000_FWSM) & E1000_FWSM_MODE_MASK)
+ ? TRUE : FALSE;
/* Function pointers */
@@ -386,9 +386,8 @@ static s32 e1000_init_mac_params_82575(struct e1000_hw *hw)
mac->ops.setup_link = e1000_setup_link_generic;
/* physical interface link setup */
mac->ops.setup_physical_interface =
- (hw->phy.media_type == e1000_media_type_copper)
- ? e1000_setup_copper_link_82575
- : e1000_setup_serdes_link_82575;
+ (hw->phy.media_type == e1000_media_type_copper)
+ ? e1000_setup_copper_link_82575 : e1000_setup_serdes_link_82575;
/* physical interface shutdown */
mac->ops.shutdown_serdes = e1000_shutdown_serdes_link_82575;
/* physical interface power up */
@@ -403,10 +402,17 @@ static s32 e1000_init_mac_params_82575(struct e1000_hw *hw)
mac->ops.config_collision_dist = e1000_config_collision_dist_82575;
/* multicast address update */
mac->ops.update_mc_addr_list = e1000_update_mc_addr_list_generic;
- /* writing VFTA */
- mac->ops.write_vfta = e1000_write_vfta_generic;
- /* clearing VFTA */
- mac->ops.clear_vfta = e1000_clear_vfta_generic;
+ if (hw->mac.type == e1000_i350) {
+ /* writing VFTA */
+ mac->ops.write_vfta = e1000_write_vfta_i350;
+ /* clearing VFTA */
+ mac->ops.clear_vfta = e1000_clear_vfta_i350;
+ } else {
+ /* writing VFTA */
+ mac->ops.write_vfta = e1000_write_vfta_generic;
+ /* clearing VFTA */
+ mac->ops.clear_vfta = e1000_clear_vfta_generic;
+ }
/* ID LED init */
mac->ops.id_led_init = e1000_id_led_init_generic;
/* blink LED */
@@ -499,7 +505,7 @@ static void e1000_release_phy_82575(struct e1000_hw *hw)
* interface and stores the retrieved information in data.
**/
static s32 e1000_read_phy_reg_sgmii_82575(struct e1000_hw *hw, u32 offset,
- u16 *data)
+ u16 *data)
{
s32 ret_val = -E1000_ERR_PARAM;
@@ -532,7 +538,7 @@ out:
* media independent interface.
**/
static s32 e1000_write_phy_reg_sgmii_82575(struct e1000_hw *hw, u32 offset,
- u16 data)
+ u16 data)
{
s32 ret_val = -E1000_ERR_PARAM;
@@ -611,7 +617,7 @@ static s32 e1000_get_phy_id_82575(struct e1000_hw *hw)
/* Power on sgmii phy if it is disabled */
ctrl_ext = E1000_READ_REG(hw, E1000_CTRL_EXT);
E1000_WRITE_REG(hw, E1000_CTRL_EXT,
- ctrl_ext & ~E1000_CTRL_EXT_SDP3_DATA);
+ ctrl_ext & ~E1000_CTRL_EXT_SDP3_DATA);
E1000_WRITE_FLUSH(hw);
msec_delay(300);
@@ -623,8 +629,7 @@ static s32 e1000_get_phy_id_82575(struct e1000_hw *hw)
ret_val = e1000_read_phy_reg_sgmii_82575(hw, PHY_ID1, &phy_id);
if (ret_val == E1000_SUCCESS) {
DEBUGOUT2("Vendor ID 0x%08X read at address %u\n",
- phy_id,
- phy->addr);
+ phy_id, phy->addr);
/*
* At the time of this writing, The M88 part is
* the only supported SGMII PHY product.
@@ -633,7 +638,7 @@ static s32 e1000_get_phy_id_82575(struct e1000_hw *hw)
break;
} else {
DEBUGOUT1("PHY address %u was unreadable\n",
- phy->addr);
+ phy->addr);
}
}
@@ -719,22 +724,22 @@ static s32 e1000_set_d0_lplu_state_82575(struct e1000_hw *hw, bool active)
if (active) {
data |= IGP02E1000_PM_D0_LPLU;
ret_val = phy->ops.write_reg(hw, IGP02E1000_PHY_POWER_MGMT,
- data);
+ data);
if (ret_val)
goto out;
/* When LPLU is enabled, we should disable SmartSpeed */
ret_val = phy->ops.read_reg(hw, IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ &data);
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw, IGP01E1000_PHY_PORT_CONFIG,
- data);
+ data);
if (ret_val)
goto out;
} else {
data &= ~IGP02E1000_PM_D0_LPLU;
ret_val = phy->ops.write_reg(hw, IGP02E1000_PHY_POWER_MGMT,
- data);
+ data);
/*
* LPLU and SmartSpeed are mutually exclusive. LPLU is used
* during Dx states where the power conservation is most
@@ -743,28 +748,28 @@ static s32 e1000_set_d0_lplu_state_82575(struct e1000_hw *hw, bool active)
*/
if (phy->smart_speed == e1000_smart_speed_on) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data |= IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
} else if (phy->smart_speed == e1000_smart_speed_off) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
}
@@ -811,11 +816,10 @@ static s32 e1000_set_d0_lplu_state_82580(struct e1000_hw *hw, bool active)
* important. During driver activity we should enable
* SmartSpeed, so performance is maintained.
*/
- if (phy->smart_speed == e1000_smart_speed_on) {
+ if (phy->smart_speed == e1000_smart_speed_on)
data |= E1000_82580_PM_SPD;
- } else if (phy->smart_speed == e1000_smart_speed_off) {
+ else if (phy->smart_speed == e1000_smart_speed_off)
data &= ~E1000_82580_PM_SPD;
- }
}
E1000_WRITE_REG(hw, E1000_82580_PHY_POWER_MGMT, data);
@@ -854,14 +858,13 @@ s32 e1000_set_d3_lplu_state_82580(struct e1000_hw *hw, bool active)
* important. During driver activity we should enable
* SmartSpeed, so performance is maintained.
*/
- if (phy->smart_speed == e1000_smart_speed_on) {
+ if (phy->smart_speed == e1000_smart_speed_on)
data |= E1000_82580_PM_SPD;
- } else if (phy->smart_speed == e1000_smart_speed_off) {
+ else if (phy->smart_speed == e1000_smart_speed_off)
data &= ~E1000_82580_PM_SPD;
- }
} else if ((phy->autoneg_advertised == E1000_ALL_SPEED_DUPLEX) ||
- (phy->autoneg_advertised == E1000_ALL_NOT_GIG) ||
- (phy->autoneg_advertised == E1000_ALL_10_SPEED)) {
+ (phy->autoneg_advertised == E1000_ALL_NOT_GIG) ||
+ (phy->autoneg_advertised == E1000_ALL_10_SPEED)) {
data |= E1000_82580_PM_D3_LPLU;
/* When LPLU is enabled, we should disable SmartSpeed */
data &= ~E1000_82580_PM_SPD;
@@ -889,7 +892,37 @@ static s32 e1000_acquire_nvm_82575(struct e1000_hw *hw)
ret_val = e1000_acquire_swfw_sync_82575(hw, E1000_SWFW_EEP_SM);
if (ret_val)
goto out;
- ret_val = e1000_acquire_nvm_generic(hw);
+
+ /*
+ * Check if there is some access
+ * error this access may hook on
+ */
+ if (hw->mac.type == e1000_i350) {
+ u32 eecd = E1000_READ_REG(hw, E1000_EECD);
+ if (eecd & (E1000_EECD_BLOCKED | E1000_EECD_ABORT |
+ E1000_EECD_TIMEOUT)) {
+ /* Clear all access error flags */
+ E1000_WRITE_REG(hw, E1000_EECD, eecd |
+ E1000_EECD_ERROR_CLR);
+ DEBUGOUT("Nvm bit banging access error detected and cleared.\n");
+ }
+ }
+ if (hw->mac.type == e1000_82580) {
+ u32 eecd = E1000_READ_REG(hw, E1000_EECD);
+ if (eecd & E1000_EECD_BLOCKED) {
+ /* Clear access error flag */
+ E1000_WRITE_REG(hw, E1000_EECD, eecd |
+ E1000_EECD_BLOCKED);
+ DEBUGOUT("Nvm bit banging access error detected and cleared.\n");
+ }
+ }
+
+
+ switch (hw->mac.type) {
+ default:
+ ret_val = e1000_acquire_nvm_generic(hw);
+ }
+
if (ret_val)
e1000_release_swfw_sync_82575(hw, E1000_SWFW_EEP_SM);
@@ -908,6 +941,10 @@ static void e1000_release_nvm_82575(struct e1000_hw *hw)
{
DEBUGFUNC("e1000_release_nvm_82575");
+ switch (hw->mac.type) {
+ default:
+ e1000_release_nvm_generic(hw);
+ }
e1000_release_swfw_sync_82575(hw, E1000_SWFW_EEP_SM);
}
@@ -977,8 +1014,8 @@ static void e1000_release_swfw_sync_82575(struct e1000_hw *hw, u16 mask)
DEBUGFUNC("e1000_release_swfw_sync_82575");
- while (e1000_get_hw_semaphore_generic(hw) != E1000_SUCCESS);
- /* Empty */
+ while (e1000_get_hw_semaphore_generic(hw) != E1000_SUCCESS)
+ ; /* Empty */
swfw_sync = E1000_READ_REG(hw, E1000_SW_FW_SYNC);
swfw_sync &= ~mask;
@@ -1039,7 +1076,7 @@ static s32 e1000_get_cfg_done_82575(struct e1000_hw *hw)
* Otherwise, use the generic function to get the link speed and duplex info.
**/
static s32 e1000_get_link_up_info_82575(struct e1000_hw *hw, u16 *speed,
- u16 *duplex)
+ u16 *duplex)
{
s32 ret_val;
@@ -1047,10 +1084,10 @@ static s32 e1000_get_link_up_info_82575(struct e1000_hw *hw, u16 *speed,
if (hw->phy.media_type != e1000_media_type_copper)
ret_val = e1000_get_pcs_speed_and_duplex_82575(hw, speed,
- duplex);
+ duplex);
else
ret_val = e1000_get_speed_and_duplex_copper_generic(hw, speed,
- duplex);
+ duplex);
return ret_val;
}
@@ -1071,7 +1108,7 @@ static s32 e1000_check_for_link_82575(struct e1000_hw *hw)
if (hw->phy.media_type != e1000_media_type_copper) {
ret_val = e1000_get_pcs_speed_and_duplex_82575(hw, &speed,
- &duplex);
+ &duplex);
/*
* Use this flag to determine if link needs to be checked or
* not. If we have link clear the flag so that we do not
@@ -1124,7 +1161,7 @@ static void e1000_power_up_serdes_link_82575(struct e1000_hw *hw)
* duplex, then store the values in the pointers provided.
**/
static s32 e1000_get_pcs_speed_and_duplex_82575(struct e1000_hw *hw,
- u16 *speed, u16 *duplex)
+ u16 *speed, u16 *duplex)
{
struct e1000_mac_info *mac = &hw->mac;
u32 pcs;
@@ -1152,20 +1189,18 @@ static s32 e1000_get_pcs_speed_and_duplex_82575(struct e1000_hw *hw,
mac->serdes_has_link = TRUE;
/* Detect and store PCS speed */
- if (pcs & E1000_PCS_LSTS_SPEED_1000) {
+ if (pcs & E1000_PCS_LSTS_SPEED_1000)
*speed = SPEED_1000;
- } else if (pcs & E1000_PCS_LSTS_SPEED_100) {
+ else if (pcs & E1000_PCS_LSTS_SPEED_100)
*speed = SPEED_100;
- } else {
+ else
*speed = SPEED_10;
- }
/* Detect and store PCS duplex */
- if (pcs & E1000_PCS_LSTS_DUPLEX_FULL) {
+ if (pcs & E1000_PCS_LSTS_DUPLEX_FULL)
*duplex = FULL_DUPLEX;
- } else {
+ else
*duplex = HALF_DUPLEX;
- }
}
return E1000_SUCCESS;
@@ -1225,15 +1260,13 @@ static s32 e1000_reset_hw_82575(struct e1000_hw *hw)
* on the last TLP read/write transaction when MAC is reset.
*/
ret_val = e1000_disable_pcie_master_generic(hw);
- if (ret_val) {
+ if (ret_val)
DEBUGOUT("PCI-E Master disable polling has failed.\n");
- }
/* set the completion timeout for interface */
ret_val = e1000_set_pcie_completion_timeout(hw);
- if (ret_val) {
+ if (ret_val)
DEBUGOUT("PCI-E Set completion timeout has failed.\n");
- }
DEBUGOUT("Masking off all interrupts\n");
E1000_WRITE_REG(hw, E1000_IMC, 0xffffffff);
@@ -1314,6 +1347,9 @@ static s32 e1000_init_hw_82575(struct e1000_hw *hw)
/* Setup link and flow control */
ret_val = mac->ops.setup_link(hw);
+ /* Set the default MTU size */
+ hw->dev_spec._82575.mtu = 1500;
+
/*
* Clear all of the statistics registers (clear on read). It is
* important that we do this after we have tried to establish link
@@ -1349,7 +1385,7 @@ static s32 e1000_setup_copper_link_82575(struct e1000_hw *hw)
if (ret_val)
goto out;
- if (e1000_sgmii_active_82575(hw) && !hw->phy.reset_disable) {
+ if (e1000_sgmii_active_82575(hw)) {
/* allow time for SFP cage time to power up phy */
msec_delay(300);
@@ -1400,12 +1436,14 @@ static s32 e1000_setup_serdes_link_82575(struct e1000_hw *hw)
{
u32 ctrl_ext, ctrl_reg, reg;
bool pcs_autoneg;
+ s32 ret_val = E1000_SUCCESS;
+ u16 data;
DEBUGFUNC("e1000_setup_serdes_link_82575");
if ((hw->phy.media_type != e1000_media_type_internal_serdes) &&
!e1000_sgmii_active_82575(hw))
- return E1000_SUCCESS;
+ return ret_val;
/*
* On the 82575, SerDes loopback mode persists until it is
@@ -1444,13 +1482,25 @@ static s32 e1000_setup_serdes_link_82575(struct e1000_hw *hw)
pcs_autoneg = FALSE;
/* fall through to default case */
default:
+ if (hw->mac.type == e1000_82575 ||
+ hw->mac.type == e1000_82576) {
+ ret_val = hw->nvm.ops.read(hw, NVM_COMPAT, 1, &data);
+ if (ret_val) {
+ DEBUGOUT("NVM Read Error\n");
+ return ret_val;
+ }
+
+ if (data & E1000_EEPROM_PCS_AUTONEG_DISABLE_BIT)
+ pcs_autoneg = FALSE;
+ }
+
/*
* non-SGMII modes only supports a speed of 1000/Full for the
* link so it is best to just force the MAC and let the pcs
* link either autoneg or be forced to 1000/Full
*/
ctrl_reg |= E1000_CTRL_SPD_1000 | E1000_CTRL_FRCSPD |
- E1000_CTRL_FD | E1000_CTRL_FRCDPX;
+ E1000_CTRL_FD | E1000_CTRL_FRCDPX;
/* set speed of 1000/Full if speed/duplex is forced */
reg |= E1000_PCS_LCTL_FSV_1000 | E1000_PCS_LCTL_FDV_FULL;
@@ -1466,7 +1516,7 @@ static s32 e1000_setup_serdes_link_82575(struct e1000_hw *hw)
* However, both are supported by the hardware and some drivers/tools.
*/
reg &= ~(E1000_PCS_LCTL_AN_ENABLE | E1000_PCS_LCTL_FLV_LINK_UP |
- E1000_PCS_LCTL_FSD | E1000_PCS_LCTL_FORCE_LINK);
+ E1000_PCS_LCTL_FSD | E1000_PCS_LCTL_FORCE_LINK);
/*
* We force flow control to prevent the CTRL register values from being
@@ -1481,7 +1531,7 @@ static s32 e1000_setup_serdes_link_82575(struct e1000_hw *hw)
DEBUGOUT1("Configuring Autoneg:PCS_LCTL=0x%08X\n", reg);
} else {
/* Set PCS register for forced link */
- reg |= E1000_PCS_LCTL_FSD; /* Force Speed */
+ reg |= E1000_PCS_LCTL_FSD; /* Force Speed */
DEBUGOUT1("Configuring Forced Link:PCS_LCTL=0x%08X\n", reg);
}
@@ -1490,7 +1540,216 @@ static s32 e1000_setup_serdes_link_82575(struct e1000_hw *hw)
if (!e1000_sgmii_active_82575(hw))
e1000_force_mac_fc_generic(hw);
- return E1000_SUCCESS;
+ return ret_val;
+}
+
+/**
+ * e1000_get_media_type_82575 - derives current media type.
+ * @hw: pointer to the HW structure
+ *
+ * The media type is chosen reflecting few settings.
+ * The following are taken into account:
+ * - link mode set in the current port Init Control Word #3
+ * - current link mode settings in CSR register
+ * - MDIO vs. I2C PHY control interface chosen
+ * - SFP module media type
+ **/
+static s32 e1000_get_media_type_82575(struct e1000_hw *hw)
+{
+ u32 lan_id = 0;
+ s32 ret_val = E1000_ERR_CONFIG;
+ struct e1000_dev_spec_82575 *dev_spec = &hw->dev_spec._82575;
+ u32 ctrl_ext = 0;
+ u32 current_link_mode = 0;
+ u16 init_ctrl_wd_3 = 0;
+ u8 init_ctrl_wd_3_offset = 0;
+ u8 init_ctrl_wd_3_bit_offset = 0;
+
+ /* Set internal phy as default */
+ dev_spec->sgmii_active = FALSE;
+ dev_spec->module_plugged = FALSE;
+
+ /*
+ * Check if NVM access method is attached already.
+ * If it is then Init Control Word #3 is considered
+ * otherwise runtime CSR register content is taken.
+ */
+
+ /* Get CSR setting */
+ ctrl_ext = E1000_READ_REG(hw, E1000_CTRL_EXT);
+
+ /* Get link mode setting */
+ if ((hw->nvm.ops.read) && (hw->nvm.ops.read != e1000_null_read_nvm)) {
+ /* Take link mode from EEPROM */
+
+ /*
+ * Get LAN port ID to derive its
+ * adequate Init Control Word #3
+ */
+ lan_id = ((E1000_READ_REG(hw, E1000_STATUS) &
+ E1000_STATUS_LAN_ID_MASK) >> E1000_STATUS_LAN_ID_OFFSET);
+ /*
+ * Derive Init Control Word #3 offset
+ * and mask to pick up link mode setting.
+ */
+ if (hw->mac.type < e1000_82580) {
+ init_ctrl_wd_3_offset = lan_id ?
+ NVM_INIT_CONTROL3_PORT_A : NVM_INIT_CONTROL3_PORT_B;
+ init_ctrl_wd_3_bit_offset = NVM_WORD24_LNK_MODE_OFFSET;
+ } else {
+ init_ctrl_wd_3_offset =
+ NVM_82580_LAN_FUNC_OFFSET(lan_id) +
+ NVM_INIT_CONTROL3_PORT_A;
+ init_ctrl_wd_3_bit_offset =
+ NVM_WORD24_82580_LNK_MODE_OFFSET;
+ }
+ /* Read Init Control Word #3*/
+ hw->nvm.ops.read(hw, init_ctrl_wd_3_offset, 1, &init_ctrl_wd_3);
+ current_link_mode = init_ctrl_wd_3;
+ /*
+ * Switch to CSR for all but internal PHY.
+ */
+ if ((init_ctrl_wd_3 << (E1000_CTRL_EXT_LINK_MODE_OFFSET -
+ init_ctrl_wd_3_bit_offset)) !=
+ E1000_CTRL_EXT_LINK_MODE_GMII) {
+ current_link_mode = ctrl_ext;
+ init_ctrl_wd_3_bit_offset =
+ E1000_CTRL_EXT_LINK_MODE_OFFSET;
+ }
+ } else {
+ /* Take link mode from CSR */
+ current_link_mode = ctrl_ext;
+ init_ctrl_wd_3_bit_offset = E1000_CTRL_EXT_LINK_MODE_OFFSET;
+ }
+
+ /*
+ * Align link mode bits to
+ * their CTRL_EXT location.
+ */
+ current_link_mode <<= (E1000_CTRL_EXT_LINK_MODE_OFFSET -
+ init_ctrl_wd_3_bit_offset);
+ current_link_mode &= E1000_CTRL_EXT_LINK_MODE_MASK;
+
+ switch (current_link_mode) {
+
+ case E1000_CTRL_EXT_LINK_MODE_1000BASE_KX:
+ hw->phy.media_type = e1000_media_type_internal_serdes;
+ current_link_mode = E1000_CTRL_EXT_LINK_MODE_1000BASE_KX;
+ break;
+ case E1000_CTRL_EXT_LINK_MODE_GMII:
+ hw->phy.media_type = e1000_media_type_copper;
+ current_link_mode = E1000_CTRL_EXT_LINK_MODE_GMII;
+ break;
+ case E1000_CTRL_EXT_LINK_MODE_SGMII:
+ case E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES:
+ /* Get phy control interface type set (MDIO vs. I2C)*/
+ if (e1000_sgmii_uses_mdio_82575(hw)) {
+ hw->phy.media_type = e1000_media_type_copper;
+ dev_spec->sgmii_active = TRUE;
+ current_link_mode = E1000_CTRL_EXT_LINK_MODE_SGMII;
+ } else {
+ ret_val = e1000_set_sfp_media_type_82575(hw);
+ if (ret_val != E1000_SUCCESS)
+ goto out;
+ if (hw->phy.media_type ==
+ e1000_media_type_internal_serdes) {
+ current_link_mode =
+ E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES;
+ } else if (hw->phy.media_type ==
+ e1000_media_type_copper) {
+ current_link_mode =
+ E1000_CTRL_EXT_LINK_MODE_SGMII;
+ }
+ }
+ break;
+ default:
+ DEBUGOUT("Link mode mask doesn't fit bit field size\n");
+ goto out;
+ }
+ /*
+ * Do not change current link mode setting
+ * if media type is fibre or has not been
+ * recognized.
+ */
+ if ((hw->phy.media_type != e1000_media_type_unknown) &&
+ (hw->phy.media_type != e1000_media_type_fiber)) {
+ /* Update link mode */
+ ctrl_ext &= ~E1000_CTRL_EXT_LINK_MODE_MASK;
+ E1000_WRITE_REG(hw, E1000_CTRL_EXT, ctrl_ext |
+ current_link_mode);
+ }
+
+ ret_val = E1000_SUCCESS;
+out:
+ /*
+ * If media type was not identified then return media type
+ * defined by the CTRL_EXT settings.
+ */
+ if (hw->phy.media_type == e1000_media_type_unknown) {
+ if (current_link_mode == E1000_CTRL_EXT_LINK_MODE_SGMII)
+ hw->phy.media_type = e1000_media_type_copper;
+ else
+ hw->phy.media_type = e1000_media_type_internal_serdes;
+ }
+
+ return ret_val;
+}
+
+/**
+ * e1000_set_sfp_media_type_82575 - derives SFP module media type.
+ * @hw: pointer to the HW structure
+ *
+ * The media type is chosen based on SFP module.
+ * compatibility flags retrieved from SFP ID EEPROM.
+ **/
+static s32 e1000_set_sfp_media_type_82575(struct e1000_hw *hw)
+{
+ s32 ret_val = E1000_ERR_CONFIG;
+ u32 ctrl_ext = 0;
+ struct e1000_dev_spec_82575 *dev_spec = &hw->dev_spec._82575;
+ struct sfp_e1000_flags eth_flags = {0};
+ u8 tranceiver_type = 0;
+
+ /* Turn I2C interface ON */
+ ctrl_ext = E1000_READ_REG(hw, E1000_CTRL_EXT);
+ E1000_WRITE_REG(hw, E1000_CTRL_EXT, ctrl_ext | E1000_CTRL_I2C_ENA);
+
+ /* Read SFP module data */
+ ret_val = e1000_read_sfp_data_byte(hw,
+ E1000_I2CCMD_SFP_DATA_ADDR(E1000_SFF_IDENTIFIER_OFFSET),
+ &tranceiver_type);
+ if (ret_val != E1000_SUCCESS)
+ goto out;
+ ret_val = e1000_read_sfp_data_byte(hw,
+ E1000_I2CCMD_SFP_DATA_ADDR(E1000_SFF_ETH_FLAGS_OFFSET),
+ (u8 *)&eth_flags);
+ if (ret_val != E1000_SUCCESS)
+ goto out;
+ /*
+ * Check if there is some SFP
+ * module plugged and powered
+ */
+ if ((tranceiver_type == E1000_SFF_IDENTIFIER_SFP) ||
+ (tranceiver_type == E1000_SFF_IDENTIFIER_SFF)) {
+ dev_spec->module_plugged = TRUE;
+ if (eth_flags.e1000_base_lx || eth_flags.e1000_base_sx) {
+ hw->phy.media_type = e1000_media_type_internal_serdes;
+ } else if (eth_flags.e1000_base_t) {
+ dev_spec->sgmii_active = TRUE;
+ hw->phy.media_type = e1000_media_type_copper;
+ } else {
+ hw->phy.media_type = e1000_media_type_unknown;
+ DEBUGOUT("PHY module has not been recognized\n");
+ goto out;
+ }
+ } else {
+ hw->phy.media_type = e1000_media_type_unknown;
+ }
+ ret_val = E1000_SUCCESS;
+out:
+ /* Restore I2C interface setting */
+ E1000_WRITE_REG(hw, E1000_CTRL_EXT, ctrl_ext);
+ return ret_val;
}
/**
@@ -1514,7 +1773,7 @@ static s32 e1000_valid_led_default_82575(struct e1000_hw *hw, u16 *data)
}
if (*data == ID_LED_RESERVED_0000 || *data == ID_LED_RESERVED_FFFF) {
- switch(hw->phy.media_type) {
+ switch (hw->phy.media_type) {
case e1000_media_type_internal_serdes:
*data = ID_LED_DEFAULT_82575_SERDES;
break;
@@ -1549,7 +1808,7 @@ static bool e1000_sgmii_active_82575(struct e1000_hw *hw)
* Inits recommended HW defaults after a reset when there is no EEPROM
* detected. This is only for the 82575.
**/
-static s32 e1000_reset_init_script_82575(struct e1000_hw* hw)
+static s32 e1000_reset_init_script_82575(struct e1000_hw *hw)
{
DEBUGFUNC("e1000_reset_init_script_82575");
@@ -1736,7 +1995,7 @@ void e1000_rx_fifo_flush_82575(struct e1000_hw *hw)
for (i = 0; i < 4; i++) {
rxdctl[i] = E1000_READ_REG(hw, E1000_RXDCTL(i));
E1000_WRITE_REG(hw, E1000_RXDCTL(i),
- rxdctl[i] & ~E1000_RXDCTL_QUEUE_ENABLE);
+ rxdctl[i] & ~E1000_RXDCTL_QUEUE_ENABLE);
}
/* Poll all queues to verify they have shut down */
for (ms_wait = 0; ms_wait < 10; ms_wait++) {
@@ -1822,14 +2081,14 @@ static s32 e1000_set_pcie_completion_timeout(struct e1000_hw *hw)
* 16ms to 55ms
*/
ret_val = e1000_read_pcie_cap_reg(hw, PCIE_DEVICE_CONTROL2,
- &pcie_devctl2);
+ &pcie_devctl2);
if (ret_val)
goto out;
pcie_devctl2 |= PCIE_DEVICE_CONTROL2_16ms;
ret_val = e1000_write_pcie_cap_reg(hw, PCIE_DEVICE_CONTROL2,
- &pcie_devctl2);
+ &pcie_devctl2);
out:
/* disable completion timeout resend */
gcr &= ~E1000_GCR_CMPL_TMOUT_RESEND;
@@ -1852,20 +2111,35 @@ void e1000_vmdq_set_anti_spoofing_pf(struct e1000_hw *hw, bool enable, int pf)
switch (hw->mac.type) {
case e1000_82576:
- case e1000_i350:
dtxswc = E1000_READ_REG(hw, E1000_DTXSWC);
if (enable) {
dtxswc |= (E1000_DTXSWC_MAC_SPOOF_MASK |
E1000_DTXSWC_VLAN_SPOOF_MASK);
/* The PF can spoof - it has to in order to
* support emulation mode NICs */
- dtxswc ^= (1 << pf | 1 << (pf + MAX_NUM_VFS));
+ dtxswc ^= (1 << pf | 1 << (pf +
+ E1000_DTXSWC_VLAN_SPOOF_SHIFT));
} else {
dtxswc &= ~(E1000_DTXSWC_MAC_SPOOF_MASK |
E1000_DTXSWC_VLAN_SPOOF_MASK);
}
E1000_WRITE_REG(hw, E1000_DTXSWC, dtxswc);
break;
+ case e1000_i350:
+ dtxswc = E1000_READ_REG(hw, E1000_TXSWC);
+ if (enable) {
+ dtxswc |= (E1000_DTXSWC_MAC_SPOOF_MASK |
+ E1000_DTXSWC_VLAN_SPOOF_MASK);
+ /* The PF can spoof - it has to in order to
+ * support emulation mode NICs
+ */
+ dtxswc ^= (1 << pf | 1 << (pf +
+ E1000_DTXSWC_VLAN_SPOOF_SHIFT));
+ } else {
+ dtxswc &= ~(E1000_DTXSWC_MAC_SPOOF_MASK |
+ E1000_DTXSWC_VLAN_SPOOF_MASK);
+ }
+ E1000_WRITE_REG(hw, E1000_TXSWC, dtxswc);
default:
break;
}
@@ -1983,7 +2257,7 @@ out:
* e1000_reset_mdicnfg_82580 - Reset MDICNFG destination and com_mdio bits
* @hw: pointer to the HW structure
*
- * This resets the MDICNFG.Destination and MDICNFG.Com_MDIO bits based on
+ * This resets the the MDICNFG.Destination and MDICNFG.Com_MDIO bits based on
* the values found in the EEPROM. This addresses an issue in which these
* bits are not restored from EEPROM after reset.
**/
@@ -2001,8 +2275,8 @@ static s32 e1000_reset_mdicnfg_82580(struct e1000_hw *hw)
goto out;
ret_val = hw->nvm.ops.read(hw, NVM_INIT_CONTROL3_PORT_A +
- NVM_82580_LAN_FUNC_OFFSET(hw->bus.func), 1,
- &nvm_data);
+ NVM_82580_LAN_FUNC_OFFSET(hw->bus.func), 1,
+ &nvm_data);
if (ret_val) {
DEBUGOUT("NVM Read Error\n");
goto out;
@@ -2057,17 +2331,18 @@ static s32 e1000_reset_hw_82580(struct e1000_hw *hw)
msec_delay(10);
/* Determine whether or not a global dev reset is requested */
- if (global_device_reset &&
- e1000_acquire_swfw_sync_82575(hw, swmbsw_mask))
+ if (global_device_reset && e1000_acquire_swfw_sync_82575(hw,
+ swmbsw_mask))
global_device_reset = FALSE;
- if (global_device_reset &&
- !(E1000_READ_REG(hw, E1000_STATUS) & E1000_STAT_DEV_RST_SET))
+ if (global_device_reset && !(E1000_READ_REG(hw, E1000_STATUS) &
+ E1000_STAT_DEV_RST_SET))
ctrl |= E1000_CTRL_DEV_RST;
else
ctrl |= E1000_CTRL_RST;
E1000_WRITE_REG(hw, E1000_CTRL, ctrl);
+ E1000_WRITE_FLUSH(hw);
/* Add delay to insure DEV_RST has time to complete */
if (global_device_reset)
@@ -2192,7 +2467,7 @@ s32 e1000_update_nvm_checksum_with_offset(struct e1000_hw *hw, u16 offset)
}
checksum = (u16) NVM_SUM - checksum;
ret_val = hw->nvm.ops.write(hw, (NVM_CHECKSUM_REG + offset), 1,
- &checksum);
+ &checksum);
if (ret_val)
DEBUGOUT("NVM Write Error while updating checksum.\n");
@@ -2232,7 +2507,7 @@ static s32 e1000_validate_nvm_checksum_82580(struct e1000_hw *hw)
for (j = 0; j < eeprom_regions_count; j++) {
nvm_offset = NVM_82580_LAN_FUNC_OFFSET(j);
ret_val = e1000_validate_nvm_checksum_with_offset(hw,
- nvm_offset);
+ nvm_offset);
if (ret_val != E1000_SUCCESS)
goto out;
}
@@ -2259,8 +2534,7 @@ static s32 e1000_update_nvm_checksum_82580(struct e1000_hw *hw)
ret_val = hw->nvm.ops.read(hw, NVM_COMPATIBILITY_REG_3, 1, &nvm_data);
if (ret_val) {
- DEBUGOUT("NVM Read Error while updating checksum"
- " compatibility bit.\n");
+ DEBUGOUT("NVM Read Error while updating checksum compatibility bit.\n");
goto out;
}
@@ -2268,10 +2542,9 @@ static s32 e1000_update_nvm_checksum_82580(struct e1000_hw *hw)
/* set compatibility bit to validate checksums appropriately */
nvm_data = nvm_data | NVM_COMPATIBILITY_BIT_MASK;
ret_val = hw->nvm.ops.write(hw, NVM_COMPATIBILITY_REG_3, 1,
- &nvm_data);
+ &nvm_data);
if (ret_val) {
- DEBUGOUT("NVM Write Error while updating checksum"
- " compatibility bit.\n");
+ DEBUGOUT("NVM Write Error while updating checksum compatibility bit.\n");
goto out;
}
}
@@ -2279,9 +2552,8 @@ static s32 e1000_update_nvm_checksum_82580(struct e1000_hw *hw)
for (j = 0; j < 4; j++) {
nvm_offset = NVM_82580_LAN_FUNC_OFFSET(j);
ret_val = e1000_update_nvm_checksum_with_offset(hw, nvm_offset);
- if (ret_val) {
+ if (ret_val)
goto out;
- }
}
out:
@@ -2307,7 +2579,7 @@ static s32 e1000_validate_nvm_checksum_i350(struct e1000_hw *hw)
for (j = 0; j < 4; j++) {
nvm_offset = NVM_82580_LAN_FUNC_OFFSET(j);
ret_val = e1000_validate_nvm_checksum_with_offset(hw,
- nvm_offset);
+ nvm_offset);
if (ret_val != E1000_SUCCESS)
goto out;
}
@@ -2353,37 +2625,628 @@ out:
s32 e1000_set_eee_i350(struct e1000_hw *hw)
{
s32 ret_val = E1000_SUCCESS;
- u32 ipcnfg, eeer, ctrl_ext;
+ u32 ipcnfg, eeer;
DEBUGFUNC("e1000_set_eee_i350");
- ctrl_ext = E1000_READ_REG(hw, E1000_CTRL_EXT);
- if ((hw->mac.type != e1000_i350) ||
- (ctrl_ext & E1000_CTRL_EXT_LINK_MODE_MASK))
+ if ((hw->mac.type < e1000_i350) ||
+ (hw->phy.media_type != e1000_media_type_copper))
goto out;
ipcnfg = E1000_READ_REG(hw, E1000_IPCNFG);
eeer = E1000_READ_REG(hw, E1000_EEER);
/* enable or disable per user setting */
if (!(hw->dev_spec._82575.eee_disable)) {
- ipcnfg |= (E1000_IPCNFG_EEE_1G_AN |
- E1000_IPCNFG_EEE_100M_AN);
- eeer |= (E1000_EEER_TX_LPI_EN |
- E1000_EEER_RX_LPI_EN |
- E1000_EEER_LPI_FC);
+ ipcnfg |= (E1000_IPCNFG_EEE_1G_AN | E1000_IPCNFG_EEE_100M_AN);
+ eeer |= (E1000_EEER_TX_LPI_EN | E1000_EEER_RX_LPI_EN |
+ E1000_EEER_LPI_FC);
} else {
- ipcnfg &= ~(E1000_IPCNFG_EEE_1G_AN |
- E1000_IPCNFG_EEE_100M_AN);
- eeer &= ~(E1000_EEER_TX_LPI_EN |
- E1000_EEER_RX_LPI_EN |
- E1000_EEER_LPI_FC);
+ ipcnfg &= ~(E1000_IPCNFG_EEE_1G_AN | E1000_IPCNFG_EEE_100M_AN);
+ eeer &= ~(E1000_EEER_TX_LPI_EN | E1000_EEER_RX_LPI_EN |
+ E1000_EEER_LPI_FC);
}
E1000_WRITE_REG(hw, E1000_IPCNFG, ipcnfg);
E1000_WRITE_REG(hw, E1000_EEER, eeer);
- E1000_READ_REG(hw, E1000_IPCNFG);
- E1000_READ_REG(hw, E1000_EEER);
+ E1000_READ_REG(hw, E1000_IPCNFG);
+ E1000_READ_REG(hw, E1000_EEER);
out:
return ret_val;
}
+
+/* Due to a hw errata, if the host tries to configure the VFTA register
+ * while performing queries from the BMC or DMA, then the VFTA in some
+ * cases won't be written.
+ */
+
+/**
+ * e1000_clear_vfta_i350 - Clear VLAN filter table
+ * @hw: pointer to the HW structure
+ *
+ * Clears the register array which contains the VLAN filter table by
+ * setting all the values to 0.
+ **/
+void e1000_clear_vfta_i350(struct e1000_hw *hw)
+{
+ u32 offset;
+ int i;
+
+ DEBUGFUNC("e1000_clear_vfta_350");
+
+ for (offset = 0; offset < E1000_VLAN_FILTER_TBL_SIZE; offset++) {
+ for (i = 0; i < 10; i++)
+ E1000_WRITE_REG_ARRAY(hw, E1000_VFTA, offset, 0);
+
+ E1000_WRITE_FLUSH(hw);
+ }
+}
+
+/**
+ * e1000_write_vfta_i350 - Write value to VLAN filter table
+ * @hw: pointer to the HW structure
+ * @offset: register offset in VLAN filter table
+ * @value: register value written to VLAN filter table
+ *
+ * Writes value at the given offset in the register array which stores
+ * the VLAN filter table.
+ **/
+void e1000_write_vfta_i350(struct e1000_hw *hw, u32 offset, u32 value)
+{
+ int i;
+
+ DEBUGFUNC("e1000_write_vfta_350");
+
+ for (i = 0; i < 10; i++)
+ E1000_WRITE_REG_ARRAY(hw, E1000_VFTA, offset, value);
+
+ E1000_WRITE_FLUSH(hw);
+}
+
+
+/**
+ * e1000_set_i2c_bb - Enable I2C bit-bang
+ * @hw: pointer to the HW structure
+ *
+ * Enable I2C bit-bang interface
+ *
+ **/
+s32 e1000_set_i2c_bb(struct e1000_hw *hw)
+{
+ s32 ret_val = E1000_SUCCESS;
+ u32 ctrl_ext, i2cparams;
+
+ DEBUGFUNC("e1000_set_i2c_bb");
+
+ ctrl_ext = E1000_READ_REG(hw, E1000_CTRL_EXT);
+ ctrl_ext |= E1000_CTRL_I2C_ENA;
+ E1000_WRITE_REG(hw, E1000_CTRL_EXT, ctrl_ext);
+ E1000_WRITE_FLUSH(hw);
+
+ i2cparams = E1000_READ_REG(hw, E1000_I2CPARAMS);
+ i2cparams |= E1000_I2CBB_EN;
+ i2cparams |= E1000_I2C_DATA_OE_N;
+ i2cparams |= E1000_I2C_CLK_OE_N;
+ E1000_WRITE_REG(hw, E1000_I2CPARAMS, i2cparams);
+ E1000_WRITE_FLUSH(hw);
+
+ return ret_val;
+}
+
+/**
+ * e1000_read_i2c_byte_generic - Reads 8 bit word over I2C
+ * @hw: pointer to hardware structure
+ * @byte_offset: byte offset to read
+ * @data: value read
+ *
+ * Performs byte read operation over I2C interface at
+ * a specified device address.
+ **/
+s32 e1000_read_i2c_byte_generic(struct e1000_hw *hw, u8 byte_offset,
+ u8 dev_addr, u8 *data)
+{
+ s32 status = E1000_SUCCESS;
+ u32 max_retry = 10;
+ u32 retry = 1;
+ u16 swfw_mask = 0;
+
+ bool nack = 1;
+
+ DEBUGFUNC("e1000_read_i2c_byte_generic");
+
+ swfw_mask = E1000_SWFW_PHY0_SM;
+
+ do {
+ if (e1000_acquire_swfw_sync_82575(hw, swfw_mask)
+ != E1000_SUCCESS) {
+ status = E1000_ERR_SWFW_SYNC;
+ goto read_byte_out;
+ }
+
+ e1000_i2c_start(hw);
+
+ /* Device Address and write indication */
+ status = e1000_clock_out_i2c_byte(hw, dev_addr);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_get_i2c_ack(hw);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_clock_out_i2c_byte(hw, byte_offset);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_get_i2c_ack(hw);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ e1000_i2c_start(hw);
+
+ /* Device Address and read indication */
+ status = e1000_clock_out_i2c_byte(hw, (dev_addr | 0x1));
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_get_i2c_ack(hw);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_clock_in_i2c_byte(hw, data);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_clock_out_i2c_bit(hw, nack);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ e1000_i2c_stop(hw);
+ break;
+
+fail:
+ e1000_release_swfw_sync_82575(hw, swfw_mask);
+ msec_delay(100);
+ e1000_i2c_bus_clear(hw);
+ retry++;
+ if (retry < max_retry)
+ DEBUGOUT("I2C byte read error - Retrying.\n");
+ else
+ DEBUGOUT("I2C byte read error.\n");
+
+ } while (retry < max_retry);
+
+ e1000_release_swfw_sync_82575(hw, swfw_mask);
+
+read_byte_out:
+
+ return status;
+}
+
+/**
+ * e1000_write_i2c_byte_generic - Writes 8 bit word over I2C
+ * @hw: pointer to hardware structure
+ * @byte_offset: byte offset to write
+ * @data: value to write
+ *
+ * Performs byte write operation over I2C interface at
+ * a specified device address.
+ **/
+s32 e1000_write_i2c_byte_generic(struct e1000_hw *hw, u8 byte_offset,
+ u8 dev_addr, u8 data)
+{
+ s32 status = E1000_SUCCESS;
+ u32 max_retry = 1;
+ u32 retry = 0;
+ u16 swfw_mask = 0;
+
+ DEBUGFUNC("e1000_write_i2c_byte_generic");
+
+ swfw_mask = E1000_SWFW_PHY0_SM;
+
+ if (e1000_acquire_swfw_sync_82575(hw, swfw_mask) != E1000_SUCCESS) {
+ status = E1000_ERR_SWFW_SYNC;
+ goto write_byte_out;
+ }
+
+ do {
+ e1000_i2c_start(hw);
+
+ status = e1000_clock_out_i2c_byte(hw, dev_addr);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_get_i2c_ack(hw);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_clock_out_i2c_byte(hw, byte_offset);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_get_i2c_ack(hw);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_clock_out_i2c_byte(hw, data);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ status = e1000_get_i2c_ack(hw);
+ if (status != E1000_SUCCESS)
+ goto fail;
+
+ e1000_i2c_stop(hw);
+ break;
+
+fail:
+ e1000_i2c_bus_clear(hw);
+ retry++;
+ if (retry < max_retry)
+ DEBUGOUT("I2C byte write error - Retrying.\n");
+ else
+ DEBUGOUT("I2C byte write error.\n");
+ } while (retry < max_retry);
+
+ e1000_release_swfw_sync_82575(hw, swfw_mask);
+
+write_byte_out:
+
+ return status;
+}
+
+/**
+ * e1000_i2c_start - Sets I2C start condition
+ * @hw: pointer to hardware structure
+ *
+ * Sets I2C start condition (High -> Low on SDA while SCL is High)
+ **/
+static void e1000_i2c_start(struct e1000_hw *hw)
+{
+ u32 i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+
+ DEBUGFUNC("e1000_i2c_start");
+
+ /* Start condition must begin with data and clock high */
+ e1000_set_i2c_data(hw, &i2cctl, 1);
+ e1000_raise_i2c_clk(hw, &i2cctl);
+
+ /* Setup time for start condition (4.7us) */
+ usec_delay(E1000_I2C_T_SU_STA);
+
+ e1000_set_i2c_data(hw, &i2cctl, 0);
+
+ /* Hold time for start condition (4us) */
+ usec_delay(E1000_I2C_T_HD_STA);
+
+ e1000_lower_i2c_clk(hw, &i2cctl);
+
+ /* Minimum low period of clock is 4.7 us */
+ usec_delay(E1000_I2C_T_LOW);
+
+}
+
+/**
+ * e1000_i2c_stop - Sets I2C stop condition
+ * @hw: pointer to hardware structure
+ *
+ * Sets I2C stop condition (Low -> High on SDA while SCL is High)
+ **/
+static void e1000_i2c_stop(struct e1000_hw *hw)
+{
+ u32 i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+
+ DEBUGFUNC("e1000_i2c_stop");
+
+ /* Stop condition must begin with data low and clock high */
+ e1000_set_i2c_data(hw, &i2cctl, 0);
+ e1000_raise_i2c_clk(hw, &i2cctl);
+
+ /* Setup time for stop condition (4us) */
+ usec_delay(E1000_I2C_T_SU_STO);
+
+ e1000_set_i2c_data(hw, &i2cctl, 1);
+
+ /* bus free time between stop and start (4.7us)*/
+ usec_delay(E1000_I2C_T_BUF);
+}
+
+/**
+ * e1000_clock_in_i2c_byte - Clocks in one byte via I2C
+ * @hw: pointer to hardware structure
+ * @data: data byte to clock in
+ *
+ * Clocks in one byte data via I2C data/clock
+ **/
+static s32 e1000_clock_in_i2c_byte(struct e1000_hw *hw, u8 *data)
+{
+ s32 i;
+ bool bit = 0;
+
+ DEBUGFUNC("e1000_clock_in_i2c_byte");
+
+ *data = 0;
+ for (i = 7; i >= 0; i--) {
+ e1000_clock_in_i2c_bit(hw, &bit);
+ *data |= bit << i;
+ }
+
+ return E1000_SUCCESS;
+}
+
+/**
+ * e1000_clock_out_i2c_byte - Clocks out one byte via I2C
+ * @hw: pointer to hardware structure
+ * @data: data byte clocked out
+ *
+ * Clocks out one byte data via I2C data/clock
+ **/
+static s32 e1000_clock_out_i2c_byte(struct e1000_hw *hw, u8 data)
+{
+ s32 status = E1000_SUCCESS;
+ s32 i;
+ u32 i2cctl;
+ bool bit = 0;
+
+ DEBUGFUNC("e1000_clock_out_i2c_byte");
+
+ for (i = 7; i >= 0; i--) {
+ bit = (data >> i) & 0x1;
+ status = e1000_clock_out_i2c_bit(hw, bit);
+
+ if (status != E1000_SUCCESS)
+ break;
+ }
+
+ /* Release SDA line (set high) */
+ i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+
+ i2cctl |= E1000_I2C_DATA_OE_N;
+ E1000_WRITE_REG(hw, E1000_I2CPARAMS, i2cctl);
+ E1000_WRITE_FLUSH(hw);
+
+ return status;
+}
+
+/**
+ * e1000_get_i2c_ack - Polls for I2C ACK
+ * @hw: pointer to hardware structure
+ *
+ * Clocks in/out one bit via I2C data/clock
+ **/
+static s32 e1000_get_i2c_ack(struct e1000_hw *hw)
+{
+ s32 status = E1000_SUCCESS;
+ u32 i = 0;
+ u32 i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+ u32 timeout = 10;
+ bool ack = 1;
+
+ DEBUGFUNC("e1000_get_i2c_ack");
+
+ e1000_raise_i2c_clk(hw, &i2cctl);
+
+ /* Minimum high period of clock is 4us */
+ usec_delay(E1000_I2C_T_HIGH);
+
+ /* Wait until SCL returns high */
+ for (i = 0; i < timeout; i++) {
+ usec_delay(1);
+ i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+ if (i2cctl & E1000_I2C_CLK_IN)
+ break;
+ }
+ if (!(i2cctl & E1000_I2C_CLK_IN))
+ return E1000_ERR_I2C;
+
+ ack = e1000_get_i2c_data(&i2cctl);
+ if (ack == 1) {
+ DEBUGOUT("I2C ack was not received.\n");
+ status = E1000_ERR_I2C;
+ }
+
+ e1000_lower_i2c_clk(hw, &i2cctl);
+
+ /* Minimum low period of clock is 4.7 us */
+ usec_delay(E1000_I2C_T_LOW);
+
+ return status;
+}
+
+/**
+ * e1000_clock_in_i2c_bit - Clocks in one bit via I2C data/clock
+ * @hw: pointer to hardware structure
+ * @data: read data value
+ *
+ * Clocks in one bit via I2C data/clock
+ **/
+static s32 e1000_clock_in_i2c_bit(struct e1000_hw *hw, bool *data)
+{
+ u32 i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+
+ DEBUGFUNC("e1000_clock_in_i2c_bit");
+
+ e1000_raise_i2c_clk(hw, &i2cctl);
+
+ /* Minimum high period of clock is 4us */
+ usec_delay(E1000_I2C_T_HIGH);
+
+ i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+ *data = e1000_get_i2c_data(&i2cctl);
+
+ e1000_lower_i2c_clk(hw, &i2cctl);
+
+ /* Minimum low period of clock is 4.7 us */
+ usec_delay(E1000_I2C_T_LOW);
+
+ return E1000_SUCCESS;
+}
+
+/**
+ * e1000_clock_out_i2c_bit - Clocks in/out one bit via I2C data/clock
+ * @hw: pointer to hardware structure
+ * @data: data value to write
+ *
+ * Clocks out one bit via I2C data/clock
+ **/
+static s32 e1000_clock_out_i2c_bit(struct e1000_hw *hw, bool data)
+{
+ s32 status;
+ u32 i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+
+ DEBUGFUNC("e1000_clock_out_i2c_bit");
+
+ status = e1000_set_i2c_data(hw, &i2cctl, data);
+ if (status == E1000_SUCCESS) {
+ e1000_raise_i2c_clk(hw, &i2cctl);
+
+ /* Minimum high period of clock is 4us */
+ usec_delay(E1000_I2C_T_HIGH);
+
+ e1000_lower_i2c_clk(hw, &i2cctl);
+
+ /* Minimum low period of clock is 4.7 us.
+ * This also takes care of the data hold time.
+ */
+ usec_delay(E1000_I2C_T_LOW);
+ } else {
+ status = E1000_ERR_I2C;
+ DEBUGOUT1("I2C data was not set to %X\n", data);
+ }
+
+ return status;
+}
+/**
+ * e1000_raise_i2c_clk - Raises the I2C SCL clock
+ * @hw: pointer to hardware structure
+ * @i2cctl: Current value of I2CCTL register
+ *
+ * Raises the I2C clock line '0'->'1'
+ **/
+static void e1000_raise_i2c_clk(struct e1000_hw *hw, u32 *i2cctl)
+{
+ DEBUGFUNC("e1000_raise_i2c_clk");
+
+ *i2cctl |= E1000_I2C_CLK_OUT;
+ *i2cctl &= ~E1000_I2C_CLK_OE_N;
+ E1000_WRITE_REG(hw, E1000_I2CPARAMS, *i2cctl);
+ E1000_WRITE_FLUSH(hw);
+
+ /* SCL rise time (1000ns) */
+ usec_delay(E1000_I2C_T_RISE);
+}
+
+/**
+ * e1000_lower_i2c_clk - Lowers the I2C SCL clock
+ * @hw: pointer to hardware structure
+ * @i2cctl: Current value of I2CCTL register
+ *
+ * Lowers the I2C clock line '1'->'0'
+ **/
+static void e1000_lower_i2c_clk(struct e1000_hw *hw, u32 *i2cctl)
+{
+
+ DEBUGFUNC("e1000_lower_i2c_clk");
+
+ *i2cctl &= ~E1000_I2C_CLK_OUT;
+ *i2cctl &= ~E1000_I2C_CLK_OE_N;
+ E1000_WRITE_REG(hw, E1000_I2CPARAMS, *i2cctl);
+ E1000_WRITE_FLUSH(hw);
+
+ /* SCL fall time (300ns) */
+ usec_delay(E1000_I2C_T_FALL);
+}
+
+/**
+ * e1000_set_i2c_data - Sets the I2C data bit
+ * @hw: pointer to hardware structure
+ * @i2cctl: Current value of I2CCTL register
+ * @data: I2C data value (0 or 1) to set
+ *
+ * Sets the I2C data bit
+ **/
+static s32 e1000_set_i2c_data(struct e1000_hw *hw, u32 *i2cctl, bool data)
+{
+ s32 status = E1000_SUCCESS;
+
+ DEBUGFUNC("e1000_set_i2c_data");
+
+ if (data)
+ *i2cctl |= E1000_I2C_DATA_OUT;
+ else
+ *i2cctl &= ~E1000_I2C_DATA_OUT;
+
+ *i2cctl &= ~E1000_I2C_DATA_OE_N;
+ *i2cctl |= E1000_I2C_CLK_OE_N;
+ E1000_WRITE_REG(hw, E1000_I2CPARAMS, *i2cctl);
+ E1000_WRITE_FLUSH(hw);
+
+ /* Data rise/fall (1000ns/300ns) and set-up time (250ns) */
+ usec_delay(E1000_I2C_T_RISE + E1000_I2C_T_FALL + E1000_I2C_T_SU_DATA);
+
+ *i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+ if (data != e1000_get_i2c_data(i2cctl)) {
+ status = E1000_ERR_I2C;
+ DEBUGOUT1("Error - I2C data was not set to %X.\n", data);
+ }
+
+ return status;
+}
+
+/**
+ * e1000_get_i2c_data - Reads the I2C SDA data bit
+ * @hw: pointer to hardware structure
+ * @i2cctl: Current value of I2CCTL register
+ *
+ * Returns the I2C data bit value
+ **/
+static bool e1000_get_i2c_data(u32 *i2cctl)
+{
+ bool data;
+
+ DEBUGFUNC("e1000_get_i2c_data");
+
+ if (*i2cctl & E1000_I2C_DATA_IN)
+ data = 1;
+ else
+ data = 0;
+
+ return data;
+}
+
+/**
+ * e1000_i2c_bus_clear - Clears the I2C bus
+ * @hw: pointer to hardware structure
+ *
+ * Clears the I2C bus by sending nine clock pulses.
+ * Used when data line is stuck low.
+ **/
+void e1000_i2c_bus_clear(struct e1000_hw *hw)
+{
+ u32 i2cctl = E1000_READ_REG(hw, E1000_I2CPARAMS);
+ u32 i;
+
+ DEBUGFUNC("e1000_i2c_bus_clear");
+
+ e1000_i2c_start(hw);
+
+ e1000_set_i2c_data(hw, &i2cctl, 1);
+
+ for (i = 0; i < 9; i++) {
+ e1000_raise_i2c_clk(hw, &i2cctl);
+
+ /* Min high period of clock is 4us */
+ usec_delay(E1000_I2C_T_HIGH);
+
+ e1000_lower_i2c_clk(hw, &i2cctl);
+
+ /* Min low period of clock is 4.7us*/
+ usec_delay(E1000_I2C_T_LOW);
+ }
+
+ e1000_i2c_start(hw);
+
+ /* Put the i2c bus back to default state */
+ e1000_i2c_stop(hw);
+}
+
diff --git a/sys/dev/e1000/e1000_82575.h b/sys/dev/e1000/e1000_82575.h
index 529325b..4b2b245 100644
--- a/sys/dev/e1000/e1000_82575.h
+++ b/sys/dev/e1000/e1000_82575.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -35,10 +35,10 @@
#ifndef _E1000_82575_H_
#define _E1000_82575_H_
-#define ID_LED_DEFAULT_82575_SERDES ((ID_LED_DEF1_DEF2 << 12) | \
- (ID_LED_DEF1_DEF2 << 8) | \
- (ID_LED_DEF1_DEF2 << 4) | \
- (ID_LED_OFF1_ON2))
+#define ID_LED_DEFAULT_82575_SERDES ((ID_LED_DEF1_DEF2 << 12) | \
+ (ID_LED_DEF1_DEF2 << 8) | \
+ (ID_LED_DEF1_DEF2 << 4) | \
+ (ID_LED_OFF1_ON2))
/*
* Receive Address Register Count
* Number of high/low register pairs in the RAR. The RAR (Receive Address
@@ -49,13 +49,13 @@
* For 82576, there are an additional set of RARs that begin at an offset
* separate from the first set of RARs.
*/
-#define E1000_RAR_ENTRIES_82575 16
-#define E1000_RAR_ENTRIES_82576 24
-#define E1000_RAR_ENTRIES_82580 24
-#define E1000_RAR_ENTRIES_I350 32
-#define E1000_SW_SYNCH_MB 0x00000100
-#define E1000_STAT_DEV_RST_SET 0x00100000
-#define E1000_CTRL_DEV_RST 0x20000000
+#define E1000_RAR_ENTRIES_82575 16
+#define E1000_RAR_ENTRIES_82576 24
+#define E1000_RAR_ENTRIES_82580 24
+#define E1000_RAR_ENTRIES_I350 32
+#define E1000_SW_SYNCH_MB 0x00000100
+#define E1000_STAT_DEV_RST_SET 0x00100000
+#define E1000_CTRL_DEV_RST 0x20000000
#ifdef E1000_BIT_FIELDS
struct e1000_adv_data_desc {
@@ -63,137 +63,138 @@ struct e1000_adv_data_desc {
union {
u32 data;
struct {
- u32 datalen :16; /* Data buffer length */
- u32 rsvd :4;
- u32 dtyp :4; /* Descriptor type */
- u32 dcmd :8; /* Descriptor command */
+ u32 datalen:16; /* Data buffer length */
+ u32 rsvd:4;
+ u32 dtyp:4; /* Descriptor type */
+ u32 dcmd:8; /* Descriptor command */
} config;
} lower;
union {
u32 data;
struct {
- u32 status :4; /* Descriptor status */
- u32 idx :4;
- u32 popts :6; /* Packet Options */
- u32 paylen :18; /* Payload length */
+ u32 status:4; /* Descriptor status */
+ u32 idx:4;
+ u32 popts:6; /* Packet Options */
+ u32 paylen:18; /* Payload length */
} options;
} upper;
};
-#define E1000_TXD_DTYP_ADV_C 0x2 /* Advanced Context Descriptor */
-#define E1000_TXD_DTYP_ADV_D 0x3 /* Advanced Data Descriptor */
-#define E1000_ADV_TXD_CMD_DEXT 0x20 /* Descriptor extension (0 = legacy) */
-#define E1000_ADV_TUCMD_IPV4 0x2 /* IP Packet Type: 1=IPv4 */
-#define E1000_ADV_TUCMD_IPV6 0x0 /* IP Packet Type: 0=IPv6 */
-#define E1000_ADV_TUCMD_L4T_UDP 0x0 /* L4 Packet TYPE of UDP */
-#define E1000_ADV_TUCMD_L4T_TCP 0x4 /* L4 Packet TYPE of TCP */
-#define E1000_ADV_TUCMD_MKRREQ 0x10 /* Indicates markers are required */
-#define E1000_ADV_DCMD_EOP 0x1 /* End of Packet */
-#define E1000_ADV_DCMD_IFCS 0x2 /* Insert FCS (Ethernet CRC) */
-#define E1000_ADV_DCMD_RS 0x8 /* Report Status */
-#define E1000_ADV_DCMD_VLE 0x40 /* Add VLAN tag */
-#define E1000_ADV_DCMD_TSE 0x80 /* TCP Seg enable */
+#define E1000_TXD_DTYP_ADV_C 0x2 /* Advanced Context Descriptor */
+#define E1000_TXD_DTYP_ADV_D 0x3 /* Advanced Data Descriptor */
+#define E1000_ADV_TXD_CMD_DEXT 0x20 /* Descriptor extension (0 = legacy) */
+#define E1000_ADV_TUCMD_IPV4 0x2 /* IP Packet Type: 1=IPv4 */
+#define E1000_ADV_TUCMD_IPV6 0x0 /* IP Packet Type: 0=IPv6 */
+#define E1000_ADV_TUCMD_L4T_UDP 0x0 /* L4 Packet TYPE of UDP */
+#define E1000_ADV_TUCMD_L4T_TCP 0x4 /* L4 Packet TYPE of TCP */
+#define E1000_ADV_TUCMD_MKRREQ 0x10 /* Indicates markers are required */
+#define E1000_ADV_DCMD_EOP 0x1 /* End of Packet */
+#define E1000_ADV_DCMD_IFCS 0x2 /* Insert FCS (Ethernet CRC) */
+#define E1000_ADV_DCMD_RS 0x8 /* Report Status */
+#define E1000_ADV_DCMD_VLE 0x40 /* Add VLAN tag */
+#define E1000_ADV_DCMD_TSE 0x80 /* TCP Seg enable */
/* Extended Device Control */
-#define E1000_CTRL_EXT_NSICR 0x00000001 /* Disable Intr Clear all on read */
+#define E1000_CTRL_EXT_NSICR 0x00000001 /* Disable Intr Clear all on read */
struct e1000_adv_context_desc {
union {
u32 ip_config;
struct {
- u32 iplen :9;
- u32 maclen :7;
- u32 vlan_tag :16;
+ u32 iplen:9;
+ u32 maclen:7;
+ u32 vlan_tag:16;
} fields;
} ip_setup;
u32 seq_num;
union {
u64 l4_config;
struct {
- u32 mkrloc :9;
- u32 tucmd :11;
- u32 dtyp :4;
- u32 adv :8;
- u32 rsvd :4;
- u32 idx :4;
- u32 l4len :8;
- u32 mss :16;
+ u32 mkrloc:9;
+ u32 tucmd:11;
+ u32 dtyp:4;
+ u32 adv:8;
+ u32 rsvd:4;
+ u32 idx:4;
+ u32 l4len:8;
+ u32 mss:16;
} fields;
} l4_setup;
};
#endif
/* SRRCTL bit definitions */
-#define E1000_SRRCTL_BSIZEPKT_SHIFT 10 /* Shift _right_ */
-#define E1000_SRRCTL_BSIZEHDRSIZE_MASK 0x00000F00
-#define E1000_SRRCTL_BSIZEHDRSIZE_SHIFT 2 /* Shift _left_ */
-#define E1000_SRRCTL_DESCTYPE_LEGACY 0x00000000
-#define E1000_SRRCTL_DESCTYPE_ADV_ONEBUF 0x02000000
-#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT 0x04000000
-#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS 0x0A000000
-#define E1000_SRRCTL_DESCTYPE_HDR_REPLICATION 0x06000000
+#define E1000_SRRCTL_BSIZEPKT_SHIFT 10 /* Shift _right_ */
+#define E1000_SRRCTL_BSIZEHDRSIZE_MASK 0x00000F00
+#define E1000_SRRCTL_BSIZEHDRSIZE_SHIFT 2 /* Shift _left_ */
+#define E1000_SRRCTL_DESCTYPE_LEGACY 0x00000000
+#define E1000_SRRCTL_DESCTYPE_ADV_ONEBUF 0x02000000
+#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT 0x04000000
+#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS 0x0A000000
+#define E1000_SRRCTL_DESCTYPE_HDR_REPLICATION 0x06000000
#define E1000_SRRCTL_DESCTYPE_HDR_REPLICATION_LARGE_PKT 0x08000000
-#define E1000_SRRCTL_DESCTYPE_MASK 0x0E000000
-#define E1000_SRRCTL_TIMESTAMP 0x40000000
-#define E1000_SRRCTL_DROP_EN 0x80000000
-
-#define E1000_SRRCTL_BSIZEPKT_MASK 0x0000007F
-#define E1000_SRRCTL_BSIZEHDR_MASK 0x00003F00
-
-#define E1000_TX_HEAD_WB_ENABLE 0x1
-#define E1000_TX_SEQNUM_WB_ENABLE 0x2
-
-#define E1000_MRQC_ENABLE_RSS_4Q 0x00000002
-#define E1000_MRQC_ENABLE_VMDQ 0x00000003
-#define E1000_MRQC_ENABLE_VMDQ_RSS_2Q 0x00000005
-#define E1000_MRQC_RSS_FIELD_IPV4_UDP 0x00400000
-#define E1000_MRQC_RSS_FIELD_IPV6_UDP 0x00800000
-#define E1000_MRQC_RSS_FIELD_IPV6_UDP_EX 0x01000000
-#define E1000_MRQC_ENABLE_RSS_8Q 0x00000002
-
-#define E1000_VMRCTL_MIRROR_PORT_SHIFT 8
-#define E1000_VMRCTL_MIRROR_DSTPORT_MASK (7 << E1000_VMRCTL_MIRROR_PORT_SHIFT)
-#define E1000_VMRCTL_POOL_MIRROR_ENABLE (1 << 0)
-#define E1000_VMRCTL_UPLINK_MIRROR_ENABLE (1 << 1)
-#define E1000_VMRCTL_DOWNLINK_MIRROR_ENABLE (1 << 2)
+#define E1000_SRRCTL_DESCTYPE_MASK 0x0E000000
+#define E1000_SRRCTL_TIMESTAMP 0x40000000
+#define E1000_SRRCTL_DROP_EN 0x80000000
+
+#define E1000_SRRCTL_BSIZEPKT_MASK 0x0000007F
+#define E1000_SRRCTL_BSIZEHDR_MASK 0x00003F00
+
+#define E1000_TX_HEAD_WB_ENABLE 0x1
+#define E1000_TX_SEQNUM_WB_ENABLE 0x2
+
+#define E1000_MRQC_ENABLE_RSS_4Q 0x00000002
+#define E1000_MRQC_ENABLE_VMDQ 0x00000003
+#define E1000_MRQC_ENABLE_VMDQ_RSS_2Q 0x00000005
+#define E1000_MRQC_RSS_FIELD_IPV4_UDP 0x00400000
+#define E1000_MRQC_RSS_FIELD_IPV6_UDP 0x00800000
+#define E1000_MRQC_RSS_FIELD_IPV6_UDP_EX 0x01000000
+#define E1000_MRQC_ENABLE_RSS_8Q 0x00000002
+
+#define E1000_VMRCTL_MIRROR_PORT_SHIFT 8
+#define E1000_VMRCTL_MIRROR_DSTPORT_MASK (7 << \
+ E1000_VMRCTL_MIRROR_PORT_SHIFT)
+#define E1000_VMRCTL_POOL_MIRROR_ENABLE (1 << 0)
+#define E1000_VMRCTL_UPLINK_MIRROR_ENABLE (1 << 1)
+#define E1000_VMRCTL_DOWNLINK_MIRROR_ENABLE (1 << 2)
#define E1000_EICR_TX_QUEUE ( \
- E1000_EICR_TX_QUEUE0 | \
- E1000_EICR_TX_QUEUE1 | \
- E1000_EICR_TX_QUEUE2 | \
- E1000_EICR_TX_QUEUE3)
+ E1000_EICR_TX_QUEUE0 | \
+ E1000_EICR_TX_QUEUE1 | \
+ E1000_EICR_TX_QUEUE2 | \
+ E1000_EICR_TX_QUEUE3)
#define E1000_EICR_RX_QUEUE ( \
- E1000_EICR_RX_QUEUE0 | \
- E1000_EICR_RX_QUEUE1 | \
- E1000_EICR_RX_QUEUE2 | \
- E1000_EICR_RX_QUEUE3)
+ E1000_EICR_RX_QUEUE0 | \
+ E1000_EICR_RX_QUEUE1 | \
+ E1000_EICR_RX_QUEUE2 | \
+ E1000_EICR_RX_QUEUE3)
-#define E1000_EIMS_RX_QUEUE E1000_EICR_RX_QUEUE
-#define E1000_EIMS_TX_QUEUE E1000_EICR_TX_QUEUE
+#define E1000_EIMS_RX_QUEUE E1000_EICR_RX_QUEUE
+#define E1000_EIMS_TX_QUEUE E1000_EICR_TX_QUEUE
#define EIMS_ENABLE_MASK ( \
- E1000_EIMS_RX_QUEUE | \
- E1000_EIMS_TX_QUEUE | \
- E1000_EIMS_TCP_TIMER | \
- E1000_EIMS_OTHER)
+ E1000_EIMS_RX_QUEUE | \
+ E1000_EIMS_TX_QUEUE | \
+ E1000_EIMS_TCP_TIMER | \
+ E1000_EIMS_OTHER)
/* Immediate Interrupt Rx (A.K.A. Low Latency Interrupt) */
-#define E1000_IMIR_PORT_IM_EN 0x00010000 /* TCP port enable */
-#define E1000_IMIR_PORT_BP 0x00020000 /* TCP port check bypass */
-#define E1000_IMIREXT_SIZE_BP 0x00001000 /* Packet size bypass */
-#define E1000_IMIREXT_CTRL_URG 0x00002000 /* Check URG bit in header */
-#define E1000_IMIREXT_CTRL_ACK 0x00004000 /* Check ACK bit in header */
-#define E1000_IMIREXT_CTRL_PSH 0x00008000 /* Check PSH bit in header */
-#define E1000_IMIREXT_CTRL_RST 0x00010000 /* Check RST bit in header */
-#define E1000_IMIREXT_CTRL_SYN 0x00020000 /* Check SYN bit in header */
-#define E1000_IMIREXT_CTRL_FIN 0x00040000 /* Check FIN bit in header */
-#define E1000_IMIREXT_CTRL_BP 0x00080000 /* Bypass check of ctrl bits */
+#define E1000_IMIR_PORT_IM_EN 0x00010000 /* TCP port enable */
+#define E1000_IMIR_PORT_BP 0x00020000 /* TCP port check bypass */
+#define E1000_IMIREXT_SIZE_BP 0x00001000 /* Packet size bypass */
+#define E1000_IMIREXT_CTRL_URG 0x00002000 /* Check URG bit in header */
+#define E1000_IMIREXT_CTRL_ACK 0x00004000 /* Check ACK bit in header */
+#define E1000_IMIREXT_CTRL_PSH 0x00008000 /* Check PSH bit in header */
+#define E1000_IMIREXT_CTRL_RST 0x00010000 /* Check RST bit in header */
+#define E1000_IMIREXT_CTRL_SYN 0x00020000 /* Check SYN bit in header */
+#define E1000_IMIREXT_CTRL_FIN 0x00040000 /* Check FIN bit in header */
+#define E1000_IMIREXT_CTRL_BP 0x00080000 /* Bypass check of ctrl bits */
/* Receive Descriptor - Advanced */
union e1000_adv_rx_desc {
struct {
- __le64 pkt_addr; /* Packet buffer address */
- __le64 hdr_addr; /* Header buffer address */
+ __le64 pkt_addr; /* Packet buffer address */
+ __le64 hdr_addr; /* Header buffer address */
} read;
struct {
struct {
@@ -206,74 +207,74 @@ union e1000_adv_rx_desc {
} hs_rss;
} lo_dword;
union {
- __le32 rss; /* RSS Hash */
+ __le32 rss; /* RSS Hash */
struct {
- __le16 ip_id; /* IP id */
- __le16 csum; /* Packet Checksum */
+ __le16 ip_id; /* IP id */
+ __le16 csum; /* Packet Checksum */
} csum_ip;
} hi_dword;
} lower;
struct {
- __le32 status_error; /* ext status/error */
- __le16 length; /* Packet length */
- __le16 vlan; /* VLAN tag */
+ __le32 status_error; /* ext status/error */
+ __le16 length; /* Packet length */
+ __le16 vlan; /* VLAN tag */
} upper;
} wb; /* writeback */
};
-#define E1000_RXDADV_RSSTYPE_MASK 0x0000000F
-#define E1000_RXDADV_RSSTYPE_SHIFT 12
-#define E1000_RXDADV_HDRBUFLEN_MASK 0x7FE0
-#define E1000_RXDADV_HDRBUFLEN_SHIFT 5
-#define E1000_RXDADV_SPLITHEADER_EN 0x00001000
-#define E1000_RXDADV_SPH 0x8000
-#define E1000_RXDADV_STAT_TS 0x10000 /* Pkt was time stamped */
-#define E1000_RXDADV_STAT_TSIP 0x08000 /* timestamp in packet */
-#define E1000_RXDADV_ERR_HBO 0x00800000
+#define E1000_RXDADV_RSSTYPE_MASK 0x0000000F
+#define E1000_RXDADV_RSSTYPE_SHIFT 12
+#define E1000_RXDADV_HDRBUFLEN_MASK 0x7FE0
+#define E1000_RXDADV_HDRBUFLEN_SHIFT 5
+#define E1000_RXDADV_SPLITHEADER_EN 0x00001000
+#define E1000_RXDADV_SPH 0x8000
+#define E1000_RXDADV_STAT_TS 0x10000 /* Pkt was time stamped */
+#define E1000_RXDADV_STAT_TSIP 0x08000 /* timestamp in packet */
+#define E1000_RXDADV_ERR_HBO 0x00800000
/* RSS Hash results */
-#define E1000_RXDADV_RSSTYPE_NONE 0x00000000
-#define E1000_RXDADV_RSSTYPE_IPV4_TCP 0x00000001
-#define E1000_RXDADV_RSSTYPE_IPV4 0x00000002
-#define E1000_RXDADV_RSSTYPE_IPV6_TCP 0x00000003
-#define E1000_RXDADV_RSSTYPE_IPV6_EX 0x00000004
-#define E1000_RXDADV_RSSTYPE_IPV6 0x00000005
+#define E1000_RXDADV_RSSTYPE_NONE 0x00000000
+#define E1000_RXDADV_RSSTYPE_IPV4_TCP 0x00000001
+#define E1000_RXDADV_RSSTYPE_IPV4 0x00000002
+#define E1000_RXDADV_RSSTYPE_IPV6_TCP 0x00000003
+#define E1000_RXDADV_RSSTYPE_IPV6_EX 0x00000004
+#define E1000_RXDADV_RSSTYPE_IPV6 0x00000005
#define E1000_RXDADV_RSSTYPE_IPV6_TCP_EX 0x00000006
-#define E1000_RXDADV_RSSTYPE_IPV4_UDP 0x00000007
-#define E1000_RXDADV_RSSTYPE_IPV6_UDP 0x00000008
+#define E1000_RXDADV_RSSTYPE_IPV4_UDP 0x00000007
+#define E1000_RXDADV_RSSTYPE_IPV6_UDP 0x00000008
#define E1000_RXDADV_RSSTYPE_IPV6_UDP_EX 0x00000009
/* RSS Packet Types as indicated in the receive descriptor */
-#define E1000_RXDADV_PKTTYPE_NONE 0x00000000
-#define E1000_RXDADV_PKTTYPE_IPV4 0x00000010 /* IPV4 hdr present */
-#define E1000_RXDADV_PKTTYPE_IPV4_EX 0x00000020 /* IPV4 hdr + extensions */
-#define E1000_RXDADV_PKTTYPE_IPV6 0x00000040 /* IPV6 hdr present */
-#define E1000_RXDADV_PKTTYPE_IPV6_EX 0x00000080 /* IPV6 hdr + extensions */
-#define E1000_RXDADV_PKTTYPE_TCP 0x00000100 /* TCP hdr present */
-#define E1000_RXDADV_PKTTYPE_UDP 0x00000200 /* UDP hdr present */
-#define E1000_RXDADV_PKTTYPE_SCTP 0x00000400 /* SCTP hdr present */
-#define E1000_RXDADV_PKTTYPE_NFS 0x00000800 /* NFS hdr present */
-
-#define E1000_RXDADV_PKTTYPE_IPSEC_ESP 0x00001000 /* IPSec ESP */
-#define E1000_RXDADV_PKTTYPE_IPSEC_AH 0x00002000 /* IPSec AH */
-#define E1000_RXDADV_PKTTYPE_LINKSEC 0x00004000 /* LinkSec Encap */
-#define E1000_RXDADV_PKTTYPE_ETQF 0x00008000 /* PKTTYPE is ETQF index */
-#define E1000_RXDADV_PKTTYPE_ETQF_MASK 0x00000070 /* ETQF has 8 indices */
-#define E1000_RXDADV_PKTTYPE_ETQF_SHIFT 4 /* Right-shift 4 bits */
+#define E1000_RXDADV_PKTTYPE_NONE 0x00000000
+#define E1000_RXDADV_PKTTYPE_IPV4 0x00000010 /* IPV4 hdr present */
+#define E1000_RXDADV_PKTTYPE_IPV4_EX 0x00000020 /* IPV4 hdr + extensions */
+#define E1000_RXDADV_PKTTYPE_IPV6 0x00000040 /* IPV6 hdr present */
+#define E1000_RXDADV_PKTTYPE_IPV6_EX 0x00000080 /* IPV6 hdr + extensions */
+#define E1000_RXDADV_PKTTYPE_TCP 0x00000100 /* TCP hdr present */
+#define E1000_RXDADV_PKTTYPE_UDP 0x00000200 /* UDP hdr present */
+#define E1000_RXDADV_PKTTYPE_SCTP 0x00000400 /* SCTP hdr present */
+#define E1000_RXDADV_PKTTYPE_NFS 0x00000800 /* NFS hdr present */
+
+#define E1000_RXDADV_PKTTYPE_IPSEC_ESP 0x00001000 /* IPSec ESP */
+#define E1000_RXDADV_PKTTYPE_IPSEC_AH 0x00002000 /* IPSec AH */
+#define E1000_RXDADV_PKTTYPE_LINKSEC 0x00004000 /* LinkSec Encap */
+#define E1000_RXDADV_PKTTYPE_ETQF 0x00008000 /* PKTTYPE is ETQF index */
+#define E1000_RXDADV_PKTTYPE_ETQF_MASK 0x00000070 /* ETQF has 8 indices */
+#define E1000_RXDADV_PKTTYPE_ETQF_SHIFT 4 /* Right-shift 4 bits */
/* LinkSec results */
/* Security Processing bit Indication */
-#define E1000_RXDADV_LNKSEC_STATUS_SECP 0x00020000
-#define E1000_RXDADV_LNKSEC_ERROR_BIT_MASK 0x18000000
-#define E1000_RXDADV_LNKSEC_ERROR_NO_SA_MATCH 0x08000000
-#define E1000_RXDADV_LNKSEC_ERROR_REPLAY_ERROR 0x10000000
-#define E1000_RXDADV_LNKSEC_ERROR_BAD_SIG 0x18000000
-
-#define E1000_RXDADV_IPSEC_STATUS_SECP 0x00020000
-#define E1000_RXDADV_IPSEC_ERROR_BIT_MASK 0x18000000
-#define E1000_RXDADV_IPSEC_ERROR_INVALID_PROTOCOL 0x08000000
-#define E1000_RXDADV_IPSEC_ERROR_INVALID_LENGTH 0x10000000
-#define E1000_RXDADV_IPSEC_ERROR_AUTHENTICATION_FAILED 0x18000000
+#define E1000_RXDADV_LNKSEC_STATUS_SECP 0x00020000
+#define E1000_RXDADV_LNKSEC_ERROR_BIT_MASK 0x18000000
+#define E1000_RXDADV_LNKSEC_ERROR_NO_SA_MATCH 0x08000000
+#define E1000_RXDADV_LNKSEC_ERROR_REPLAY_ERROR 0x10000000
+#define E1000_RXDADV_LNKSEC_ERROR_BAD_SIG 0x18000000
+
+#define E1000_RXDADV_IPSEC_STATUS_SECP 0x00020000
+#define E1000_RXDADV_IPSEC_ERROR_BIT_MASK 0x18000000
+#define E1000_RXDADV_IPSEC_ERROR_INVALID_PROTOCOL 0x08000000
+#define E1000_RXDADV_IPSEC_ERROR_INVALID_LENGTH 0x10000000
+#define E1000_RXDADV_IPSEC_ERROR_AUTHENTICATION_FAILED 0x18000000
/* Transmit Descriptor - Advanced */
union e1000_adv_tx_desc {
@@ -290,25 +291,26 @@ union e1000_adv_tx_desc {
};
/* Adv Transmit Descriptor Config Masks */
-#define E1000_ADVTXD_DTYP_CTXT 0x00200000 /* Advanced Context Descriptor */
-#define E1000_ADVTXD_DTYP_DATA 0x00300000 /* Advanced Data Descriptor */
-#define E1000_ADVTXD_DCMD_EOP 0x01000000 /* End of Packet */
-#define E1000_ADVTXD_DCMD_IFCS 0x02000000 /* Insert FCS (Ethernet CRC) */
-#define E1000_ADVTXD_DCMD_RS 0x08000000 /* Report Status */
-#define E1000_ADVTXD_DCMD_DDTYP_ISCSI 0x10000000 /* DDP hdr type or iSCSI */
-#define E1000_ADVTXD_DCMD_DEXT 0x20000000 /* Descriptor extension (1=Adv) */
-#define E1000_ADVTXD_DCMD_VLE 0x40000000 /* VLAN pkt enable */
-#define E1000_ADVTXD_DCMD_TSE 0x80000000 /* TCP Seg enable */
-#define E1000_ADVTXD_MAC_LINKSEC 0x00040000 /* Apply LinkSec on packet */
-#define E1000_ADVTXD_MAC_TSTAMP 0x00080000 /* IEEE1588 Timestamp packet */
-#define E1000_ADVTXD_STAT_SN_CRC 0x00000002 /* NXTSEQ/SEED present in WB */
-#define E1000_ADVTXD_IDX_SHIFT 4 /* Adv desc Index shift */
-#define E1000_ADVTXD_POPTS_ISCO_1ST 0x00000000 /* 1st TSO of iSCSI PDU */
-#define E1000_ADVTXD_POPTS_ISCO_MDL 0x00000800 /* Middle TSO of iSCSI PDU */
-#define E1000_ADVTXD_POPTS_ISCO_LAST 0x00001000 /* Last TSO of iSCSI PDU */
-#define E1000_ADVTXD_POPTS_ISCO_FULL 0x00001800 /* 1st&Last TSO-full iSCSI PDU*/
-#define E1000_ADVTXD_POPTS_IPSEC 0x00000400 /* IPSec offload request */
-#define E1000_ADVTXD_PAYLEN_SHIFT 14 /* Adv desc PAYLEN shift */
+#define E1000_ADVTXD_DTYP_CTXT 0x00200000 /* Advanced Context Descriptor */
+#define E1000_ADVTXD_DTYP_DATA 0x00300000 /* Advanced Data Descriptor */
+#define E1000_ADVTXD_DCMD_EOP 0x01000000 /* End of Packet */
+#define E1000_ADVTXD_DCMD_IFCS 0x02000000 /* Insert FCS (Ethernet CRC) */
+#define E1000_ADVTXD_DCMD_RS 0x08000000 /* Report Status */
+#define E1000_ADVTXD_DCMD_DDTYP_ISCSI 0x10000000 /* DDP hdr type or iSCSI */
+#define E1000_ADVTXD_DCMD_DEXT 0x20000000 /* Descriptor extension (1=Adv) */
+#define E1000_ADVTXD_DCMD_VLE 0x40000000 /* VLAN pkt enable */
+#define E1000_ADVTXD_DCMD_TSE 0x80000000 /* TCP Seg enable */
+#define E1000_ADVTXD_MAC_LINKSEC 0x00040000 /* Apply LinkSec on pkt */
+#define E1000_ADVTXD_MAC_TSTAMP 0x00080000 /* IEEE1588 Timestamp pkt */
+#define E1000_ADVTXD_STAT_SN_CRC 0x00000002 /* NXTSEQ/SEED prsnt in WB */
+#define E1000_ADVTXD_IDX_SHIFT 4 /* Adv desc Index shift */
+#define E1000_ADVTXD_POPTS_ISCO_1ST 0x00000000 /* 1st TSO of iSCSI PDU */
+#define E1000_ADVTXD_POPTS_ISCO_MDL 0x00000800 /* Middle TSO of iSCSI PDU */
+#define E1000_ADVTXD_POPTS_ISCO_LAST 0x00001000 /* Last TSO of iSCSI PDU */
+/* 1st & Last TSO-full iSCSI PDU*/
+#define E1000_ADVTXD_POPTS_ISCO_FULL 0x00001800
+#define E1000_ADVTXD_POPTS_IPSEC 0x00000400 /* IPSec offload request */
+#define E1000_ADVTXD_PAYLEN_SHIFT 14 /* Adv desc PAYLEN shift */
/* Context descriptors */
struct e1000_adv_tx_context_desc {
@@ -318,65 +320,66 @@ struct e1000_adv_tx_context_desc {
__le32 mss_l4len_idx;
};
-#define E1000_ADVTXD_MACLEN_SHIFT 9 /* Adv ctxt desc mac len shift */
-#define E1000_ADVTXD_VLAN_SHIFT 16 /* Adv ctxt vlan tag shift */
-#define E1000_ADVTXD_TUCMD_IPV4 0x00000400 /* IP Packet Type: 1=IPv4 */
-#define E1000_ADVTXD_TUCMD_IPV6 0x00000000 /* IP Packet Type: 0=IPv6 */
-#define E1000_ADVTXD_TUCMD_L4T_UDP 0x00000000 /* L4 Packet TYPE of UDP */
-#define E1000_ADVTXD_TUCMD_L4T_TCP 0x00000800 /* L4 Packet TYPE of TCP */
-#define E1000_ADVTXD_TUCMD_L4T_SCTP 0x00001000 /* L4 Packet TYPE of SCTP */
-#define E1000_ADVTXD_TUCMD_IPSEC_TYPE_ESP 0x00002000 /* IPSec Type ESP */
+#define E1000_ADVTXD_MACLEN_SHIFT 9 /* Adv ctxt desc mac len shift */
+#define E1000_ADVTXD_VLAN_SHIFT 16 /* Adv ctxt vlan tag shift */
+#define E1000_ADVTXD_TUCMD_IPV4 0x00000400 /* IP Packet Type: 1=IPv4 */
+#define E1000_ADVTXD_TUCMD_IPV6 0x00000000 /* IP Packet Type: 0=IPv6 */
+#define E1000_ADVTXD_TUCMD_L4T_UDP 0x00000000 /* L4 Packet TYPE of UDP */
+#define E1000_ADVTXD_TUCMD_L4T_TCP 0x00000800 /* L4 Packet TYPE of TCP */
+#define E1000_ADVTXD_TUCMD_L4T_SCTP 0x00001000 /* L4 Packet TYPE of SCTP */
+#define E1000_ADVTXD_TUCMD_IPSEC_TYPE_ESP 0x00002000 /* IPSec Type ESP */
/* IPSec Encrypt Enable for ESP */
-#define E1000_ADVTXD_TUCMD_IPSEC_ENCRYPT_EN 0x00004000
-#define E1000_ADVTXD_TUCMD_MKRREQ 0x00002000 /* Req requires Markers and CRC */
-#define E1000_ADVTXD_L4LEN_SHIFT 8 /* Adv ctxt L4LEN shift */
-#define E1000_ADVTXD_MSS_SHIFT 16 /* Adv ctxt MSS shift */
+#define E1000_ADVTXD_TUCMD_IPSEC_ENCRYPT_EN 0x00004000
+/* Req requires Markers and CRC */
+#define E1000_ADVTXD_TUCMD_MKRREQ 0x00002000
+#define E1000_ADVTXD_L4LEN_SHIFT 8 /* Adv ctxt L4LEN shift */
+#define E1000_ADVTXD_MSS_SHIFT 16 /* Adv ctxt MSS shift */
/* Adv ctxt IPSec SA IDX mask */
-#define E1000_ADVTXD_IPSEC_SA_INDEX_MASK 0x000000FF
+#define E1000_ADVTXD_IPSEC_SA_INDEX_MASK 0x000000FF
/* Adv ctxt IPSec ESP len mask */
-#define E1000_ADVTXD_IPSEC_ESP_LEN_MASK 0x000000FF
+#define E1000_ADVTXD_IPSEC_ESP_LEN_MASK 0x000000FF
/* Additional Transmit Descriptor Control definitions */
-#define E1000_TXDCTL_QUEUE_ENABLE 0x02000000 /* Enable specific Tx Queue */
-#define E1000_TXDCTL_SWFLSH 0x04000000 /* Tx Desc. write-back flushing */
+#define E1000_TXDCTL_QUEUE_ENABLE 0x02000000 /* Ena specific Tx Queue */
+#define E1000_TXDCTL_SWFLSH 0x04000000 /* Tx Desc. wbk flushing */
/* Tx Queue Arbitration Priority 0=low, 1=high */
-#define E1000_TXDCTL_PRIORITY 0x08000000
+#define E1000_TXDCTL_PRIORITY 0x08000000
/* Additional Receive Descriptor Control definitions */
-#define E1000_RXDCTL_QUEUE_ENABLE 0x02000000 /* Enable specific Rx Queue */
-#define E1000_RXDCTL_SWFLSH 0x04000000 /* Rx Desc. write-back flushing */
+#define E1000_RXDCTL_QUEUE_ENABLE 0x02000000 /* Ena specific Rx Queue */
+#define E1000_RXDCTL_SWFLSH 0x04000000 /* Rx Desc. wbk flushing */
/* Direct Cache Access (DCA) definitions */
-#define E1000_DCA_CTRL_DCA_ENABLE 0x00000000 /* DCA Enable */
-#define E1000_DCA_CTRL_DCA_DISABLE 0x00000001 /* DCA Disable */
+#define E1000_DCA_CTRL_DCA_ENABLE 0x00000000 /* DCA Enable */
+#define E1000_DCA_CTRL_DCA_DISABLE 0x00000001 /* DCA Disable */
-#define E1000_DCA_CTRL_DCA_MODE_CB1 0x00 /* DCA Mode CB1 */
-#define E1000_DCA_CTRL_DCA_MODE_CB2 0x02 /* DCA Mode CB2 */
+#define E1000_DCA_CTRL_DCA_MODE_CB1 0x00 /* DCA Mode CB1 */
+#define E1000_DCA_CTRL_DCA_MODE_CB2 0x02 /* DCA Mode CB2 */
-#define E1000_DCA_RXCTRL_CPUID_MASK 0x0000001F /* Rx CPUID Mask */
-#define E1000_DCA_RXCTRL_DESC_DCA_EN (1 << 5) /* DCA Rx Desc enable */
-#define E1000_DCA_RXCTRL_HEAD_DCA_EN (1 << 6) /* DCA Rx Desc header enable */
-#define E1000_DCA_RXCTRL_DATA_DCA_EN (1 << 7) /* DCA Rx Desc payload enable */
+#define E1000_DCA_RXCTRL_CPUID_MASK 0x0000001F /* Rx CPUID Mask */
+#define E1000_DCA_RXCTRL_DESC_DCA_EN (1 << 5) /* DCA Rx Desc enable */
+#define E1000_DCA_RXCTRL_HEAD_DCA_EN (1 << 6) /* DCA Rx Desc header ena */
+#define E1000_DCA_RXCTRL_DATA_DCA_EN (1 << 7) /* DCA Rx Desc payload ena */
-#define E1000_DCA_TXCTRL_CPUID_MASK 0x0000001F /* Tx CPUID Mask */
-#define E1000_DCA_TXCTRL_DESC_DCA_EN (1 << 5) /* DCA Tx Desc enable */
-#define E1000_DCA_TXCTRL_TX_WB_RO_EN (1 << 11) /* Tx Desc writeback RO bit */
+#define E1000_DCA_TXCTRL_CPUID_MASK 0x0000001F /* Tx CPUID Mask */
+#define E1000_DCA_TXCTRL_DESC_DCA_EN (1 << 5) /* DCA Tx Desc enable */
+#define E1000_DCA_TXCTRL_TX_WB_RO_EN (1 << 11) /* Tx Desc writeback RO bit */
-#define E1000_DCA_TXCTRL_CPUID_MASK_82576 0xFF000000 /* Tx CPUID Mask */
-#define E1000_DCA_RXCTRL_CPUID_MASK_82576 0xFF000000 /* Rx CPUID Mask */
-#define E1000_DCA_TXCTRL_CPUID_SHIFT_82576 24 /* Tx CPUID */
-#define E1000_DCA_RXCTRL_CPUID_SHIFT_82576 24 /* Rx CPUID */
+#define E1000_DCA_TXCTRL_CPUID_MASK_82576 0xFF000000 /* Tx CPUID Mask */
+#define E1000_DCA_RXCTRL_CPUID_MASK_82576 0xFF000000 /* Rx CPUID Mask */
+#define E1000_DCA_TXCTRL_CPUID_SHIFT_82576 24 /* Tx CPUID */
+#define E1000_DCA_RXCTRL_CPUID_SHIFT_82576 24 /* Rx CPUID */
/* Additional interrupt register bit definitions */
-#define E1000_ICR_LSECPNS 0x00000020 /* PN threshold - server */
-#define E1000_IMS_LSECPNS E1000_ICR_LSECPNS /* PN threshold - server */
-#define E1000_ICS_LSECPNS E1000_ICR_LSECPNS /* PN threshold - server */
+#define E1000_ICR_LSECPNS 0x00000020 /* PN threshold - server */
+#define E1000_IMS_LSECPNS E1000_ICR_LSECPNS /* PN threshold - server */
+#define E1000_ICS_LSECPNS E1000_ICR_LSECPNS /* PN threshold - server */
/* ETQF register bit definitions */
-#define E1000_ETQF_FILTER_ENABLE (1 << 26)
-#define E1000_ETQF_IMM_INT (1 << 29)
-#define E1000_ETQF_1588 (1 << 30)
-#define E1000_ETQF_QUEUE_ENABLE (1 << 31)
+#define E1000_ETQF_FILTER_ENABLE (1 << 26)
+#define E1000_ETQF_IMM_INT (1 << 29)
+#define E1000_ETQF_1588 (1 << 30)
+#define E1000_ETQF_QUEUE_ENABLE (1 << 31)
/*
* ETQF filter list: one static filter per filter consumer. This is
* to avoid filter collisions later. Add new filters
@@ -385,87 +388,89 @@ struct e1000_adv_tx_context_desc {
* Current filters:
* EAPOL 802.1x (0x888e): Filter 0
*/
-#define E1000_ETQF_FILTER_EAPOL 0
-
-#define E1000_FTQF_VF_BP 0x00008000
-#define E1000_FTQF_1588_TIME_STAMP 0x08000000
-#define E1000_FTQF_MASK 0xF0000000
-#define E1000_FTQF_MASK_PROTO_BP 0x10000000
-#define E1000_FTQF_MASK_SOURCE_ADDR_BP 0x20000000
-#define E1000_FTQF_MASK_DEST_ADDR_BP 0x40000000
-#define E1000_FTQF_MASK_SOURCE_PORT_BP 0x80000000
-
-#define E1000_NVM_APME_82575 0x0400
-#define MAX_NUM_VFS 8
-
-#define E1000_DTXSWC_MAC_SPOOF_MASK 0x000000FF /* Per VF MAC spoof control */
-#define E1000_DTXSWC_VLAN_SPOOF_MASK 0x0000FF00 /* Per VF VLAN spoof control */
-#define E1000_DTXSWC_LLE_MASK 0x00FF0000 /* Per VF Local LB enables */
-#define E1000_DTXSWC_VLAN_SPOOF_SHIFT 8
-#define E1000_DTXSWC_LLE_SHIFT 16
-#define E1000_DTXSWC_VMDQ_LOOPBACK_EN (1 << 31) /* global VF LB enable */
+#define E1000_ETQF_FILTER_EAPOL 0
+
+#define E1000_FTQF_VF_BP 0x00008000
+#define E1000_FTQF_1588_TIME_STAMP 0x08000000
+#define E1000_FTQF_MASK 0xF0000000
+#define E1000_FTQF_MASK_PROTO_BP 0x10000000
+#define E1000_FTQF_MASK_SOURCE_ADDR_BP 0x20000000
+#define E1000_FTQF_MASK_DEST_ADDR_BP 0x40000000
+#define E1000_FTQF_MASK_SOURCE_PORT_BP 0x80000000
+
+#define E1000_NVM_APME_82575 0x0400
+#define MAX_NUM_VFS 7
+
+#define E1000_DTXSWC_MAC_SPOOF_MASK 0x000000FF /* Per VF MAC spoof cntrl */
+#define E1000_DTXSWC_VLAN_SPOOF_MASK 0x0000FF00 /* Per VF VLAN spoof cntrl */
+#define E1000_DTXSWC_LLE_MASK 0x00FF0000 /* Per VF Local LB enables */
+#define E1000_DTXSWC_VLAN_SPOOF_SHIFT 8
+#define E1000_DTXSWC_LLE_SHIFT 16
+#define E1000_DTXSWC_VMDQ_LOOPBACK_EN (1 << 31) /* global VF LB enable */
/* Easy defines for setting default pool, would normally be left a zero */
-#define E1000_VT_CTL_DEFAULT_POOL_SHIFT 7
-#define E1000_VT_CTL_DEFAULT_POOL_MASK (0x7 << E1000_VT_CTL_DEFAULT_POOL_SHIFT)
+#define E1000_VT_CTL_DEFAULT_POOL_SHIFT 7
+#define E1000_VT_CTL_DEFAULT_POOL_MASK (0x7 << E1000_VT_CTL_DEFAULT_POOL_SHIFT)
/* Other useful VMD_CTL register defines */
-#define E1000_VT_CTL_IGNORE_MAC (1 << 28)
-#define E1000_VT_CTL_DISABLE_DEF_POOL (1 << 29)
-#define E1000_VT_CTL_VM_REPL_EN (1 << 30)
+#define E1000_VT_CTL_IGNORE_MAC (1 << 28)
+#define E1000_VT_CTL_DISABLE_DEF_POOL (1 << 29)
+#define E1000_VT_CTL_VM_REPL_EN (1 << 30)
/* Per VM Offload register setup */
-#define E1000_VMOLR_RLPML_MASK 0x00003FFF /* Long Packet Maximum Length mask */
-#define E1000_VMOLR_LPE 0x00010000 /* Accept Long packet */
-#define E1000_VMOLR_RSSE 0x00020000 /* Enable RSS */
-#define E1000_VMOLR_AUPE 0x01000000 /* Accept untagged packets */
-#define E1000_VMOLR_ROMPE 0x02000000 /* Accept overflow multicast */
-#define E1000_VMOLR_ROPE 0x04000000 /* Accept overflow unicast */
-#define E1000_VMOLR_BAM 0x08000000 /* Accept Broadcast packets */
-#define E1000_VMOLR_MPME 0x10000000 /* Multicast promiscuous mode */
-#define E1000_VMOLR_STRVLAN 0x40000000 /* Vlan stripping enable */
-#define E1000_VMOLR_STRCRC 0x80000000 /* CRC stripping enable */
-
-#define E1000_VMOLR_VPE 0x00800000 /* VLAN promiscuous enable */
-#define E1000_VMOLR_UPE 0x20000000 /* Unicast promisuous enable */
-#define E1000_DVMOLR_HIDVLAN 0x20000000 /* Vlan hiding enable */
-#define E1000_DVMOLR_STRVLAN 0x40000000 /* Vlan stripping enable */
-#define E1000_DVMOLR_STRCRC 0x80000000 /* CRC stripping enable */
-
-#define E1000_PBRWAC_WALPB 0x00000007 /* Wrap around event on LAN Rx PB */
-#define E1000_PBRWAC_PBE 0x00000008 /* Rx packet buffer empty */
-
-#define E1000_VLVF_ARRAY_SIZE 32
-#define E1000_VLVF_VLANID_MASK 0x00000FFF
-#define E1000_VLVF_POOLSEL_SHIFT 12
-#define E1000_VLVF_POOLSEL_MASK (0xFF << E1000_VLVF_POOLSEL_SHIFT)
-#define E1000_VLVF_LVLAN 0x00100000
-#define E1000_VLVF_VLANID_ENABLE 0x80000000
-
-#define E1000_VMVIR_VLANA_DEFAULT 0x40000000 /* Always use default VLAN */
-#define E1000_VMVIR_VLANA_NEVER 0x80000000 /* Never insert VLAN tag */
-
-#define E1000_VF_INIT_TIMEOUT 200 /* Number of retries to clear RSTI */
-
-#define E1000_IOVCTL 0x05BBC
-#define E1000_IOVCTL_REUSE_VFQ 0x00000001
-
-#define E1000_RPLOLR_STRVLAN 0x40000000
-#define E1000_RPLOLR_STRCRC 0x80000000
-
-#define E1000_TCTL_EXT_COLD 0x000FFC00
-#define E1000_TCTL_EXT_COLD_SHIFT 10
-
-#define E1000_DTXCTL_8023LL 0x0004
-#define E1000_DTXCTL_VLAN_ADDED 0x0008
-#define E1000_DTXCTL_OOS_ENABLE 0x0010
-#define E1000_DTXCTL_MDP_EN 0x0020
-#define E1000_DTXCTL_SPOOF_INT 0x0040
-
-#define ALL_QUEUES 0xFFFF
+#define E1000_VMOLR_RLPML_MASK 0x00003FFF /* Long Packet Maximum Length mask */
+#define E1000_VMOLR_LPE 0x00010000 /* Accept Long packet */
+#define E1000_VMOLR_RSSE 0x00020000 /* Enable RSS */
+#define E1000_VMOLR_AUPE 0x01000000 /* Accept untagged packets */
+#define E1000_VMOLR_ROMPE 0x02000000 /* Accept overflow multicast */
+#define E1000_VMOLR_ROPE 0x04000000 /* Accept overflow unicast */
+#define E1000_VMOLR_BAM 0x08000000 /* Accept Broadcast packets */
+#define E1000_VMOLR_MPME 0x10000000 /* Multicast promiscuous mode */
+#define E1000_VMOLR_STRVLAN 0x40000000 /* Vlan stripping enable */
+#define E1000_VMOLR_STRCRC 0x80000000 /* CRC stripping enable */
+
+#define E1000_VMOLR_VPE 0x00800000 /* VLAN promiscuous enable */
+#define E1000_VMOLR_UPE 0x20000000 /* Unicast promisuous enable */
+#define E1000_DVMOLR_HIDVLAN 0x20000000 /* Vlan hiding enable */
+#define E1000_DVMOLR_STRVLAN 0x40000000 /* Vlan stripping enable */
+#define E1000_DVMOLR_STRCRC 0x80000000 /* CRC stripping enable */
+
+#define E1000_PBRWAC_WALPB 0x00000007 /* Wrap around event on LAN Rx PB */
+#define E1000_PBRWAC_PBE 0x00000008 /* Rx packet buffer empty */
+
+#define E1000_VLVF_ARRAY_SIZE 32
+#define E1000_VLVF_VLANID_MASK 0x00000FFF
+#define E1000_VLVF_POOLSEL_SHIFT 12
+#define E1000_VLVF_POOLSEL_MASK (0xFF << E1000_VLVF_POOLSEL_SHIFT)
+#define E1000_VLVF_LVLAN 0x00100000
+#define E1000_VLVF_VLANID_ENABLE 0x80000000
+
+#define E1000_VMVIR_VLANA_DEFAULT 0x40000000 /* Always use default VLAN */
+#define E1000_VMVIR_VLANA_NEVER 0x80000000 /* Never insert VLAN tag */
+
+#define E1000_VF_INIT_TIMEOUT 200 /* Number of retries to clear RSTI */
+
+#define E1000_IOVCTL 0x05BBC
+#define E1000_IOVCTL_REUSE_VFQ 0x00000001
+
+#define E1000_RPLOLR_STRVLAN 0x40000000
+#define E1000_RPLOLR_STRCRC 0x80000000
+
+#define E1000_TCTL_EXT_COLD 0x000FFC00
+#define E1000_TCTL_EXT_COLD_SHIFT 10
+
+#define E1000_DTXCTL_8023LL 0x0004
+#define E1000_DTXCTL_VLAN_ADDED 0x0008
+#define E1000_DTXCTL_OOS_ENABLE 0x0010
+#define E1000_DTXCTL_MDP_EN 0x0020
+#define E1000_DTXCTL_SPOOF_INT 0x0040
+
+#define E1000_EEPROM_PCS_AUTONEG_DISABLE_BIT (1 << 14)
+
+#define ALL_QUEUES 0xFFFF
/* Rx packet buffer size defines */
-#define E1000_RXPBS_SIZE_MASK_82576 0x0000007F
+#define E1000_RXPBS_SIZE_MASK_82576 0x0000007F
void e1000_vmdq_set_loopback_pf(struct e1000_hw *hw, bool enable);
void e1000_vmdq_set_anti_spoofing_pf(struct e1000_hw *hw, bool enable, int pf);
void e1000_vmdq_set_replication_pf(struct e1000_hw *hw, bool enable);
@@ -484,4 +489,23 @@ void e1000_rlpml_set_vf(struct e1000_hw *, u16);
s32 e1000_promisc_set_vf(struct e1000_hw *, enum e1000_promisc_type type);
u16 e1000_rxpbs_adjust_82580(u32 data);
s32 e1000_set_eee_i350(struct e1000_hw *);
+
+/* I2C SDA and SCL timing parameters for standard mode */
+#define E1000_I2C_T_HD_STA 4
+#define E1000_I2C_T_LOW 5
+#define E1000_I2C_T_HIGH 4
+#define E1000_I2C_T_SU_STA 5
+#define E1000_I2C_T_HD_DATA 5
+#define E1000_I2C_T_SU_DATA 1
+#define E1000_I2C_T_RISE 1
+#define E1000_I2C_T_FALL 1
+#define E1000_I2C_T_SU_STO 4
+#define E1000_I2C_T_BUF 5
+
+s32 e1000_set_i2c_bb(struct e1000_hw *hw);
+s32 e1000_read_i2c_byte_generic(struct e1000_hw *hw, u8 byte_offset,
+ u8 dev_addr, u8 *data);
+s32 e1000_write_i2c_byte_generic(struct e1000_hw *hw, u8 byte_offset,
+ u8 dev_addr, u8 data);
+void e1000_i2c_bus_clear(struct e1000_hw *hw);
#endif /* _E1000_82575_H_ */
diff --git a/sys/dev/e1000/e1000_api.c b/sys/dev/e1000/e1000_api.c
index b470cdd..fdfc4bb 100644
--- a/sys/dev/e1000/e1000_api.c
+++ b/sys/dev/e1000/e1000_api.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -277,7 +277,6 @@ s32 e1000_set_mac_type(struct e1000_hw *hw)
case E1000_DEV_ID_ICH10_D_BM_LM:
case E1000_DEV_ID_ICH10_D_BM_LF:
case E1000_DEV_ID_ICH10_D_BM_V:
- case E1000_DEV_ID_ICH10_HANKSVILLE:
mac->type = e1000_ich10lan;
break;
case E1000_DEV_ID_PCH_D_HV_DM:
@@ -293,7 +292,6 @@ s32 e1000_set_mac_type(struct e1000_hw *hw)
case E1000_DEV_ID_82575EB_COPPER:
case E1000_DEV_ID_82575EB_FIBER_SERDES:
case E1000_DEV_ID_82575GB_QUAD_COPPER:
- case E1000_DEV_ID_82575GB_QUAD_COPPER_PM:
mac->type = e1000_82575;
break;
case E1000_DEV_ID_82576:
@@ -322,6 +320,7 @@ s32 e1000_set_mac_type(struct e1000_hw *hw)
case E1000_DEV_ID_I350_FIBER:
case E1000_DEV_ID_I350_SERDES:
case E1000_DEV_ID_I350_SGMII:
+ case E1000_DEV_ID_I350_DA4:
mac->type = e1000_i350;
break;
case E1000_DEV_ID_82576_VF:
@@ -343,10 +342,10 @@ s32 e1000_set_mac_type(struct e1000_hw *hw)
* e1000_setup_init_funcs - Initializes function pointers
* @hw: pointer to the HW structure
* @init_device: TRUE will initialize the rest of the function pointers
- * getting the device ready for use. FALSE will only set
- * MAC type and the function pointers for the other init
- * functions. Passing FALSE will not generate any hardware
- * reads or writes.
+ * getting the device ready for use. FALSE will only set
+ * MAC type and the function pointers for the other init
+ * functions. Passing FALSE will not generate any hardware
+ * reads or writes.
*
* This function must be called by a driver in order to use the rest
* of the 'shared' code files. Called by drivers only.
@@ -518,11 +517,11 @@ void e1000_write_vfta(struct e1000_hw *hw, u32 offset, u32 value)
* The caller must have a packed mc_addr_list of multicast addresses.
**/
void e1000_update_mc_addr_list(struct e1000_hw *hw, u8 *mc_addr_list,
- u32 mc_addr_count)
+ u32 mc_addr_count)
{
if (hw->mac.ops.update_mc_addr_list)
hw->mac.ops.update_mc_addr_list(hw, mc_addr_list,
- mc_addr_count);
+ mc_addr_count);
}
/**
@@ -856,12 +855,12 @@ bool e1000_enable_tx_pkt_filtering(struct e1000_hw *hw)
* It also does alignment considerations to do the writes in most efficient
* way. Also fills up the sum of the buffer in *buffer parameter.
**/
-s32 e1000_mng_host_if_write(struct e1000_hw * hw, u8 *buffer, u16 length,
- u16 offset, u8 *sum)
+s32 e1000_mng_host_if_write(struct e1000_hw *hw, u8 *buffer, u16 length,
+ u16 offset, u8 *sum)
{
if (hw->mac.ops.mng_host_if_write)
return hw->mac.ops.mng_host_if_write(hw, buffer, length,
- offset, sum);
+ offset, sum);
return E1000_NOT_IMPLEMENTED;
}
@@ -874,7 +873,7 @@ s32 e1000_mng_host_if_write(struct e1000_hw * hw, u8 *buffer, u16 length,
* Writes the command header after does the checksum calculation.
**/
s32 e1000_mng_write_cmd_header(struct e1000_hw *hw,
- struct e1000_host_mng_command_header *hdr)
+ struct e1000_host_mng_command_header *hdr)
{
if (hw->mac.ops.mng_write_cmd_header)
return hw->mac.ops.mng_write_cmd_header(hw, hdr);
@@ -892,7 +891,7 @@ s32 e1000_mng_write_cmd_header(struct e1000_hw *hw,
* and also checks whether the previous command is completed. It busy waits
* in case of previous command is not completed.
**/
-s32 e1000_mng_enable_host_if(struct e1000_hw * hw)
+s32 e1000_mng_enable_host_if(struct e1000_hw *hw)
{
if (hw->mac.ops.mng_enable_host_if)
return hw->mac.ops.mng_enable_host_if(hw);
@@ -1277,7 +1276,7 @@ s32 e1000_write_nvm(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
* This is a function pointer entry point called by drivers.
**/
s32 e1000_write_8bit_ctrl_reg(struct e1000_hw *hw, u32 reg, u32 offset,
- u8 data)
+ u8 data)
{
return e1000_write_8bit_ctrl_reg_generic(hw, reg, offset, data);
}
diff --git a/sys/dev/e1000/e1000_api.h b/sys/dev/e1000/e1000_api.h
index 2621a6e..70aaa15 100644
--- a/sys/dev/e1000/e1000_api.h
+++ b/sys/dev/e1000/e1000_api.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -37,90 +37,87 @@
#include "e1000_hw.h"
-extern void e1000_init_function_pointers_82542(struct e1000_hw *hw);
-extern void e1000_init_function_pointers_82543(struct e1000_hw *hw);
-extern void e1000_init_function_pointers_82540(struct e1000_hw *hw);
-extern void e1000_init_function_pointers_82571(struct e1000_hw *hw);
-extern void e1000_init_function_pointers_82541(struct e1000_hw *hw);
-extern void e1000_init_function_pointers_80003es2lan(struct e1000_hw *hw);
-extern void e1000_init_function_pointers_ich8lan(struct e1000_hw *hw);
-extern void e1000_init_function_pointers_82575(struct e1000_hw *hw);
-extern void e1000_rx_fifo_flush_82575(struct e1000_hw *hw);
-extern void e1000_init_function_pointers_vf(struct e1000_hw *hw);
-extern void e1000_power_up_fiber_serdes_link(struct e1000_hw *hw);
-extern void e1000_shutdown_fiber_serdes_link(struct e1000_hw *hw);
+extern void e1000_init_function_pointers_82542(struct e1000_hw *hw);
+extern void e1000_init_function_pointers_82543(struct e1000_hw *hw);
+extern void e1000_init_function_pointers_82540(struct e1000_hw *hw);
+extern void e1000_init_function_pointers_82571(struct e1000_hw *hw);
+extern void e1000_init_function_pointers_82541(struct e1000_hw *hw);
+extern void e1000_init_function_pointers_80003es2lan(struct e1000_hw *hw);
+extern void e1000_init_function_pointers_ich8lan(struct e1000_hw *hw);
+extern void e1000_init_function_pointers_82575(struct e1000_hw *hw);
+extern void e1000_rx_fifo_flush_82575(struct e1000_hw *hw);
+extern void e1000_init_function_pointers_vf(struct e1000_hw *hw);
+extern void e1000_power_up_fiber_serdes_link(struct e1000_hw *hw);
+extern void e1000_shutdown_fiber_serdes_link(struct e1000_hw *hw);
-s32 e1000_set_mac_type(struct e1000_hw *hw);
-s32 e1000_setup_init_funcs(struct e1000_hw *hw, bool init_device);
-s32 e1000_init_mac_params(struct e1000_hw *hw);
-s32 e1000_init_nvm_params(struct e1000_hw *hw);
-s32 e1000_init_phy_params(struct e1000_hw *hw);
-s32 e1000_init_mbx_params(struct e1000_hw *hw);
-s32 e1000_get_bus_info(struct e1000_hw *hw);
+s32 e1000_set_mac_type(struct e1000_hw *hw);
+s32 e1000_setup_init_funcs(struct e1000_hw *hw, bool init_device);
+s32 e1000_init_mac_params(struct e1000_hw *hw);
+s32 e1000_init_nvm_params(struct e1000_hw *hw);
+s32 e1000_init_phy_params(struct e1000_hw *hw);
+s32 e1000_init_mbx_params(struct e1000_hw *hw);
+s32 e1000_get_bus_info(struct e1000_hw *hw);
void e1000_clear_vfta(struct e1000_hw *hw);
void e1000_write_vfta(struct e1000_hw *hw, u32 offset, u32 value);
-s32 e1000_force_mac_fc(struct e1000_hw *hw);
-s32 e1000_check_for_link(struct e1000_hw *hw);
-s32 e1000_reset_hw(struct e1000_hw *hw);
-s32 e1000_init_hw(struct e1000_hw *hw);
-s32 e1000_setup_link(struct e1000_hw *hw);
-s32 e1000_get_speed_and_duplex(struct e1000_hw *hw, u16 *speed,
- u16 *duplex);
-s32 e1000_disable_pcie_master(struct e1000_hw *hw);
+s32 e1000_force_mac_fc(struct e1000_hw *hw);
+s32 e1000_check_for_link(struct e1000_hw *hw);
+s32 e1000_reset_hw(struct e1000_hw *hw);
+s32 e1000_init_hw(struct e1000_hw *hw);
+s32 e1000_setup_link(struct e1000_hw *hw);
+s32 e1000_get_speed_and_duplex(struct e1000_hw *hw, u16 *speed, u16 *duplex);
+s32 e1000_disable_pcie_master(struct e1000_hw *hw);
void e1000_config_collision_dist(struct e1000_hw *hw);
void e1000_rar_set(struct e1000_hw *hw, u8 *addr, u32 index);
-u32 e1000_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr);
-void e1000_update_mc_addr_list(struct e1000_hw *hw,
- u8 *mc_addr_list, u32 mc_addr_count);
-s32 e1000_setup_led(struct e1000_hw *hw);
-s32 e1000_cleanup_led(struct e1000_hw *hw);
-s32 e1000_check_reset_block(struct e1000_hw *hw);
-s32 e1000_blink_led(struct e1000_hw *hw);
-s32 e1000_led_on(struct e1000_hw *hw);
-s32 e1000_led_off(struct e1000_hw *hw);
+u32 e1000_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr);
+void e1000_update_mc_addr_list(struct e1000_hw *hw, u8 *mc_addr_list,
+ u32 mc_addr_count);
+s32 e1000_setup_led(struct e1000_hw *hw);
+s32 e1000_cleanup_led(struct e1000_hw *hw);
+s32 e1000_check_reset_block(struct e1000_hw *hw);
+s32 e1000_blink_led(struct e1000_hw *hw);
+s32 e1000_led_on(struct e1000_hw *hw);
+s32 e1000_led_off(struct e1000_hw *hw);
s32 e1000_id_led_init(struct e1000_hw *hw);
void e1000_reset_adaptive(struct e1000_hw *hw);
void e1000_update_adaptive(struct e1000_hw *hw);
-s32 e1000_get_cable_length(struct e1000_hw *hw);
-s32 e1000_validate_mdi_setting(struct e1000_hw *hw);
-s32 e1000_read_phy_reg(struct e1000_hw *hw, u32 offset, u16 *data);
-s32 e1000_write_phy_reg(struct e1000_hw *hw, u32 offset, u16 data);
-s32 e1000_write_8bit_ctrl_reg(struct e1000_hw *hw, u32 reg,
- u32 offset, u8 data);
-s32 e1000_get_phy_info(struct e1000_hw *hw);
+s32 e1000_get_cable_length(struct e1000_hw *hw);
+s32 e1000_validate_mdi_setting(struct e1000_hw *hw);
+s32 e1000_read_phy_reg(struct e1000_hw *hw, u32 offset, u16 *data);
+s32 e1000_write_phy_reg(struct e1000_hw *hw, u32 offset, u16 data);
+s32 e1000_write_8bit_ctrl_reg(struct e1000_hw *hw, u32 reg, u32 offset,
+ u8 data);
+s32 e1000_get_phy_info(struct e1000_hw *hw);
void e1000_release_phy(struct e1000_hw *hw);
-s32 e1000_acquire_phy(struct e1000_hw *hw);
-s32 e1000_cfg_on_link_up(struct e1000_hw *hw);
-s32 e1000_phy_hw_reset(struct e1000_hw *hw);
-s32 e1000_phy_commit(struct e1000_hw *hw);
+s32 e1000_acquire_phy(struct e1000_hw *hw);
+s32 e1000_cfg_on_link_up(struct e1000_hw *hw);
+s32 e1000_phy_hw_reset(struct e1000_hw *hw);
+s32 e1000_phy_commit(struct e1000_hw *hw);
void e1000_power_up_phy(struct e1000_hw *hw);
void e1000_power_down_phy(struct e1000_hw *hw);
-s32 e1000_read_mac_addr(struct e1000_hw *hw);
-s32 e1000_read_pba_string(struct e1000_hw *hw, u8 *pba_num,
- u32 pba_num_size);
-s32 e1000_read_pba_length(struct e1000_hw *hw, u32 *pba_num_size);
+s32 e1000_read_mac_addr(struct e1000_hw *hw);
+s32 e1000_read_pba_string(struct e1000_hw *hw, u8 *pba_num, u32 pba_num_size);
+s32 e1000_read_pba_length(struct e1000_hw *hw, u32 *pba_num_size);
void e1000_reload_nvm(struct e1000_hw *hw);
-s32 e1000_update_nvm_checksum(struct e1000_hw *hw);
-s32 e1000_validate_nvm_checksum(struct e1000_hw *hw);
-s32 e1000_read_nvm(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
-s32 e1000_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data);
-s32 e1000_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data);
-s32 e1000_write_nvm(struct e1000_hw *hw, u16 offset, u16 words,
- u16 *data);
-s32 e1000_wait_autoneg(struct e1000_hw *hw);
-s32 e1000_set_d3_lplu_state(struct e1000_hw *hw, bool active);
-s32 e1000_set_d0_lplu_state(struct e1000_hw *hw, bool active);
+s32 e1000_update_nvm_checksum(struct e1000_hw *hw);
+s32 e1000_validate_nvm_checksum(struct e1000_hw *hw);
+s32 e1000_read_nvm(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
+s32 e1000_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data);
+s32 e1000_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data);
+s32 e1000_write_nvm(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
+s32 e1000_wait_autoneg(struct e1000_hw *hw);
+s32 e1000_set_d3_lplu_state(struct e1000_hw *hw, bool active);
+s32 e1000_set_d0_lplu_state(struct e1000_hw *hw, bool active);
bool e1000_check_mng_mode(struct e1000_hw *hw);
bool e1000_enable_tx_pkt_filtering(struct e1000_hw *hw);
-s32 e1000_mng_enable_host_if(struct e1000_hw *hw);
-s32 e1000_mng_host_if_write(struct e1000_hw *hw,
- u8 *buffer, u16 length, u16 offset, u8 *sum);
-s32 e1000_mng_write_cmd_header(struct e1000_hw *hw,
- struct e1000_host_mng_command_header *hdr);
-s32 e1000_mng_write_dhcp_info(struct e1000_hw * hw,
- u8 *buffer, u16 length);
+s32 e1000_mng_enable_host_if(struct e1000_hw *hw);
+s32 e1000_mng_host_if_write(struct e1000_hw *hw, u8 *buffer, u16 length,
+ u16 offset, u8 *sum);
+s32 e1000_mng_write_cmd_header(struct e1000_hw *hw,
+ struct e1000_host_mng_command_header *hdr);
+s32 e1000_mng_write_dhcp_info(struct e1000_hw *hw, u8 *buffer, u16 length);
u32 e1000_translate_register_82542(u32 reg);
+
/*
* TBI_ACCEPT macro definition:
*
@@ -152,14 +149,15 @@ u32 e1000_translate_register_82542(u32 reg);
/* The carrier extension symbol, as received by the NIC. */
#define CARRIER_EXTENSION 0x0F
-#define TBI_ACCEPT(a, status, errors, length, last_byte, min_frame_size, max_frame_size) \
- (e1000_tbi_sbp_enabled_82543(a) && \
- (((errors) & E1000_RXD_ERR_FRAME_ERR_MASK) == E1000_RXD_ERR_CE) && \
- ((last_byte) == CARRIER_EXTENSION) && \
- (((status) & E1000_RXD_STAT_VP) ? \
- (((length) > (min_frame_size - VLAN_TAG_SIZE)) && \
- ((length) <= (max_frame_size + 1))) : \
- (((length) > min_frame_size) && \
- ((length) <= (max_frame_size + VLAN_TAG_SIZE + 1)))))
+#define TBI_ACCEPT(a, status, errors, length, last_byte, \
+ min_frame_size, max_frame_size) \
+ (e1000_tbi_sbp_enabled_82543(a) && \
+ (((errors) & E1000_RXD_ERR_FRAME_ERR_MASK) == E1000_RXD_ERR_CE) && \
+ ((last_byte) == CARRIER_EXTENSION) && \
+ (((status) & E1000_RXD_STAT_VP) ? \
+ (((length) > (min_frame_size - VLAN_TAG_SIZE)) && \
+ ((length) <= (max_frame_size + 1))) : \
+ (((length) > min_frame_size) && \
+ ((length) <= (max_frame_size + VLAN_TAG_SIZE + 1)))))
#endif
diff --git a/sys/dev/e1000/e1000_defines.h b/sys/dev/e1000/e1000_defines.h
index fd6a128..69ef386 100644
--- a/sys/dev/e1000/e1000_defines.h
+++ b/sys/dev/e1000/e1000_defines.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -41,815 +41,826 @@
/* Definitions for power management and wakeup registers */
/* Wake Up Control */
-#define E1000_WUC_APME 0x00000001 /* APM Enable */
-#define E1000_WUC_PME_EN 0x00000002 /* PME Enable */
-#define E1000_WUC_PME_STATUS 0x00000004 /* PME Status */
-#define E1000_WUC_APMPME 0x00000008 /* Assert PME on APM Wakeup */
-#define E1000_WUC_LSCWE 0x00000010 /* Link Status wake up enable */
-#define E1000_WUC_PPROXYE 0x00000010 /* Protocol Proxy Enable */
-#define E1000_WUC_LSCWO 0x00000020 /* Link Status wake up override */
-#define E1000_WUC_SPM 0x80000000 /* Enable SPM */
-#define E1000_WUC_PHY_WAKE 0x00000100 /* if PHY supports wakeup */
-#define E1000_WUC_FLX6_PHY 0x4000 /* Flexible Filter 6 Enable */
-#define E1000_WUC_FLX7_PHY 0x8000 /* Flexible Filter 7 Enable */
+#define E1000_WUC_APME 0x00000001 /* APM Enable */
+#define E1000_WUC_PME_EN 0x00000002 /* PME Enable */
+#define E1000_WUC_PME_STATUS 0x00000004 /* PME Status */
+#define E1000_WUC_APMPME 0x00000008 /* Assert PME on APM Wakeup */
+#define E1000_WUC_LSCWE 0x00000010 /* Link Status wake up enable */
+#define E1000_WUC_PPROXYE 0x00000010 /* Protocol Proxy Enable */
+#define E1000_WUC_LSCWO 0x00000020 /* Link Status wake up override */
+#define E1000_WUC_SPM 0x80000000 /* Enable SPM */
+#define E1000_WUC_PHY_WAKE 0x00000100 /* if PHY supports wakeup */
+#define E1000_WUC_FLX6_PHY 0x4000 /* Flexible Filter 6 Enable */
+#define E1000_WUC_FLX7_PHY 0x8000 /* Flexible Filter 7 Enable */
/* Wake Up Filter Control */
-#define E1000_WUFC_LNKC 0x00000001 /* Link Status Change Wakeup Enable */
-#define E1000_WUFC_MAG 0x00000002 /* Magic Packet Wakeup Enable */
-#define E1000_WUFC_EX 0x00000004 /* Directed Exact Wakeup Enable */
-#define E1000_WUFC_MC 0x00000008 /* Directed Multicast Wakeup Enable */
-#define E1000_WUFC_BC 0x00000010 /* Broadcast Wakeup Enable */
-#define E1000_WUFC_ARP 0x00000020 /* ARP Request Packet Wakeup Enable */
-#define E1000_WUFC_IPV4 0x00000040 /* Directed IPv4 Packet Wakeup Enable */
-#define E1000_WUFC_IPV6 0x00000080 /* Directed IPv6 Packet Wakeup Enable */
+#define E1000_WUFC_LNKC 0x00000001 /* Link Status Change Wakeup Enable */
+#define E1000_WUFC_MAG 0x00000002 /* Magic Packet Wakeup Enable */
+#define E1000_WUFC_EX 0x00000004 /* Directed Exact Wakeup Enable */
+#define E1000_WUFC_MC 0x00000008 /* Directed Multicast Wakeup Enable */
+#define E1000_WUFC_BC 0x00000010 /* Broadcast Wakeup Enable */
+#define E1000_WUFC_ARP 0x00000020 /* ARP Request Packet Wakeup Enable */
+#define E1000_WUFC_IPV4 0x00000040 /* Directed IPv4 Packet Wakeup Enable */
+#define E1000_WUFC_IPV6 0x00000080 /* Directed IPv6 Packet Wakeup Enable */
#define E1000_WUFC_IGNORE_TCO_PHY 0x00000800 /* Ignore WakeOn TCO packets */
-#define E1000_WUFC_FLX0_PHY 0x00001000 /* Flexible Filter 0 Enable */
-#define E1000_WUFC_FLX1_PHY 0x00002000 /* Flexible Filter 1 Enable */
-#define E1000_WUFC_FLX2_PHY 0x00004000 /* Flexible Filter 2 Enable */
-#define E1000_WUFC_FLX3_PHY 0x00008000 /* Flexible Filter 3 Enable */
-#define E1000_WUFC_FLX4_PHY 0x00000200 /* Flexible Filter 4 Enable */
-#define E1000_WUFC_FLX5_PHY 0x00000400 /* Flexible Filter 5 Enable */
-#define E1000_WUFC_IGNORE_TCO 0x00008000 /* Ignore WakeOn TCO packets */
-#define E1000_WUFC_FLX0 0x00010000 /* Flexible Filter 0 Enable */
-#define E1000_WUFC_FLX1 0x00020000 /* Flexible Filter 1 Enable */
-#define E1000_WUFC_FLX2 0x00040000 /* Flexible Filter 2 Enable */
-#define E1000_WUFC_FLX3 0x00080000 /* Flexible Filter 3 Enable */
-#define E1000_WUFC_FLX4 0x00100000 /* Flexible Filter 4 Enable */
-#define E1000_WUFC_FLX5 0x00200000 /* Flexible Filter 5 Enable */
-#define E1000_WUFC_FLX6 0x00400000 /* Flexible Filter 6 Enable */
-#define E1000_WUFC_FLX7 0x00800000 /* Flexible Filter 7 Enable */
-#define E1000_WUFC_FW_RST 0x80000000 /* Wake on FW Reset Enable */
-#define E1000_WUFC_ALL_FILTERS_PHY_4 0x0000F0FF /*Mask for all wakeup filters*/
-#define E1000_WUFC_FLX_OFFSET_PHY 12 /* Offset to the Flexible Filters bits */
-#define E1000_WUFC_FLX_FILTERS_PHY_4 0x0000F000 /*Mask for 4 flexible filters*/
-#define E1000_WUFC_ALL_FILTERS_PHY_6 0x0000F6FF /*Mask for 6 wakeup filters */
-#define E1000_WUFC_FLX_FILTERS_PHY_6 0x0000F600 /*Mask for 6 flexible filters*/
-#define E1000_WUFC_ALL_FILTERS 0x000F00FF /* Mask for all wakeup filters */
-#define E1000_WUFC_ALL_FILTERS_6 0x003F00FF /* Mask for all 6 wakeup filters*/
-#define E1000_WUFC_ALL_FILTERS_8 0x00FF00FF /* Mask for all 8 wakeup filters*/
-#define E1000_WUFC_FLX_OFFSET 16 /* Offset to the Flexible Filters bits */
-#define E1000_WUFC_FLX_FILTERS 0x000F0000 /*Mask for the 4 flexible filters */
-#define E1000_WUFC_FLX_FILTERS_6 0x003F0000 /* Mask for 6 flexible filters */
-#define E1000_WUFC_FLX_FILTERS_8 0x00FF0000 /* Mask for 8 flexible filters */
+#define E1000_WUFC_FLX0_PHY 0x00001000 /* Flexible Filter 0 Enable */
+#define E1000_WUFC_FLX1_PHY 0x00002000 /* Flexible Filter 1 Enable */
+#define E1000_WUFC_FLX2_PHY 0x00004000 /* Flexible Filter 2 Enable */
+#define E1000_WUFC_FLX3_PHY 0x00008000 /* Flexible Filter 3 Enable */
+#define E1000_WUFC_FLX4_PHY 0x00000200 /* Flexible Filter 4 Enable */
+#define E1000_WUFC_FLX5_PHY 0x00000400 /* Flexible Filter 5 Enable */
+#define E1000_WUFC_IGNORE_TCO 0x00008000 /* Ignore WakeOn TCO packets */
+#define E1000_WUFC_FLX0 0x00010000 /* Flexible Filter 0 Enable */
+#define E1000_WUFC_FLX1 0x00020000 /* Flexible Filter 1 Enable */
+#define E1000_WUFC_FLX2 0x00040000 /* Flexible Filter 2 Enable */
+#define E1000_WUFC_FLX3 0x00080000 /* Flexible Filter 3 Enable */
+#define E1000_WUFC_FLX4 0x00100000 /* Flexible Filter 4 Enable */
+#define E1000_WUFC_FLX5 0x00200000 /* Flexible Filter 5 Enable */
+#define E1000_WUFC_FLX6 0x00400000 /* Flexible Filter 6 Enable */
+#define E1000_WUFC_FLX7 0x00800000 /* Flexible Filter 7 Enable */
+#define E1000_WUFC_FW_RST 0x80000000 /* Wake on FW Reset Enable */
+#define E1000_WUFC_ALL_FILTERS_PHY_4 0x0000F0FF /* wakeup filters mask */
+#define E1000_WUFC_FLX_OFFSET_PHY 12 /* Flexible Filters bits offset */
+#define E1000_WUFC_FLX_FILTERS_PHY_4 0x0000F000 /* 4 flexible filters mask */
+#define E1000_WUFC_ALL_FILTERS_PHY_6 0x0000F6FF /* 6 wakeup filters mask */
+#define E1000_WUFC_FLX_FILTERS_PHY_6 0x0000F600 /* 6 flexible filters mask */
+#define E1000_WUFC_ALL_FILTERS 0x000F00FF /* all wakeup filters mask */
+#define E1000_WUFC_ALL_FILTERS_6 0x003F00FF /* Mask all 6 wu filters */
+#define E1000_WUFC_ALL_FILTERS_8 0x00FF00FF /* Mask all 8 wu filters */
+#define E1000_WUFC_FLX_OFFSET 16 /* Flexible Filters bits offset */
+#define E1000_WUFC_FLX_FILTERS 0x000F0000 /* 4 flexible filters mask */
+#define E1000_WUFC_FLX_FILTERS_6 0x003F0000 /* 6 flexible filters mask */
+#define E1000_WUFC_FLX_FILTERS_8 0x00FF0000 /* 8 flexible filters mask */
/*
* For 82576 to utilize Extended filter masks in addition to
* existing (filter) masks
*/
-#define E1000_WUFC_EXT_FLX_FILTERS 0x00300000 /* Ext. FLX filter mask */
+#define E1000_WUFC_EXT_FLX_FILTERS 0x00300000 /* Ext. FLX filter mask */
/* Wake Up Status */
-#define E1000_WUS_LNKC E1000_WUFC_LNKC
-#define E1000_WUS_MAG E1000_WUFC_MAG
-#define E1000_WUS_EX E1000_WUFC_EX
-#define E1000_WUS_MC E1000_WUFC_MC
-#define E1000_WUS_BC E1000_WUFC_BC
-#define E1000_WUS_ARP E1000_WUFC_ARP
-#define E1000_WUS_IPV4 E1000_WUFC_IPV4
-#define E1000_WUS_IPV6 E1000_WUFC_IPV6
-#define E1000_WUS_FLX0_PHY E1000_WUFC_FLX0_PHY
-#define E1000_WUS_FLX1_PHY E1000_WUFC_FLX1_PHY
-#define E1000_WUS_FLX2_PHY E1000_WUFC_FLX2_PHY
-#define E1000_WUS_FLX3_PHY E1000_WUFC_FLX3_PHY
-#define E1000_WUS_FLX_FILTERS_PHY_4 E1000_WUFC_FLX_FILTERS_PHY_4
-#define E1000_WUS_FLX0 E1000_WUFC_FLX0
-#define E1000_WUS_FLX1 E1000_WUFC_FLX1
-#define E1000_WUS_FLX2 E1000_WUFC_FLX2
-#define E1000_WUS_FLX3 E1000_WUFC_FLX3
-#define E1000_WUS_FLX4 E1000_WUFC_FLX4
-#define E1000_WUS_FLX5 E1000_WUFC_FLX5
-#define E1000_WUS_FLX6 E1000_WUFC_FLX6
-#define E1000_WUS_FLX7 E1000_WUFC_FLX7
-#define E1000_WUS_FLX4_PHY E1000_WUFC_FLX4_PHY
-#define E1000_WUS_FLX5_PHY E1000_WUFC_FLX5_PHY
-#define E1000_WUS_FLX6_PHY 0x0400
-#define E1000_WUS_FLX7_PHY 0x0800
-#define E1000_WUS_FLX_FILTERS E1000_WUFC_FLX_FILTERS
-#define E1000_WUS_FLX_FILTERS_6 E1000_WUFC_FLX_FILTERS_6
-#define E1000_WUS_FLX_FILTERS_8 E1000_WUFC_FLX_FILTERS_8
-#define E1000_WUS_FLX_FILTERS_PHY_6 E1000_WUFC_FLX_FILTERS_PHY_6
+#define E1000_WUS_LNKC E1000_WUFC_LNKC
+#define E1000_WUS_MAG E1000_WUFC_MAG
+#define E1000_WUS_EX E1000_WUFC_EX
+#define E1000_WUS_MC E1000_WUFC_MC
+#define E1000_WUS_BC E1000_WUFC_BC
+#define E1000_WUS_ARP E1000_WUFC_ARP
+#define E1000_WUS_IPV4 E1000_WUFC_IPV4
+#define E1000_WUS_IPV6 E1000_WUFC_IPV6
+#define E1000_WUS_FLX0_PHY E1000_WUFC_FLX0_PHY
+#define E1000_WUS_FLX1_PHY E1000_WUFC_FLX1_PHY
+#define E1000_WUS_FLX2_PHY E1000_WUFC_FLX2_PHY
+#define E1000_WUS_FLX3_PHY E1000_WUFC_FLX3_PHY
+#define E1000_WUS_FLX_FILTERS_PHY_4 E1000_WUFC_FLX_FILTERS_PHY_4
+#define E1000_WUS_FLX0 E1000_WUFC_FLX0
+#define E1000_WUS_FLX1 E1000_WUFC_FLX1
+#define E1000_WUS_FLX2 E1000_WUFC_FLX2
+#define E1000_WUS_FLX3 E1000_WUFC_FLX3
+#define E1000_WUS_FLX4 E1000_WUFC_FLX4
+#define E1000_WUS_FLX5 E1000_WUFC_FLX5
+#define E1000_WUS_FLX6 E1000_WUFC_FLX6
+#define E1000_WUS_FLX7 E1000_WUFC_FLX7
+#define E1000_WUS_FLX4_PHY E1000_WUFC_FLX4_PHY
+#define E1000_WUS_FLX5_PHY E1000_WUFC_FLX5_PHY
+#define E1000_WUS_FLX6_PHY 0x0400
+#define E1000_WUS_FLX7_PHY 0x0800
+#define E1000_WUS_FLX_FILTERS E1000_WUFC_FLX_FILTERS
+#define E1000_WUS_FLX_FILTERS_6 E1000_WUFC_FLX_FILTERS_6
+#define E1000_WUS_FLX_FILTERS_8 E1000_WUFC_FLX_FILTERS_8
+#define E1000_WUS_FLX_FILTERS_PHY_6 E1000_WUFC_FLX_FILTERS_PHY_6
/* Wake Up Packet Length */
-#define E1000_WUPL_LENGTH_MASK 0x0FFF /* Only the lower 12 bits are valid */
+#define E1000_WUPL_LENGTH_MASK 0x0FFF /* Only the lower 12 bits are valid */
/* Four Flexible Filters are supported */
-#define E1000_FLEXIBLE_FILTER_COUNT_MAX 4
+#define E1000_FLEXIBLE_FILTER_COUNT_MAX 4
/* Six Flexible Filters are supported */
-#define E1000_FLEXIBLE_FILTER_COUNT_MAX_6 6
+#define E1000_FLEXIBLE_FILTER_COUNT_MAX_6 6
/* Eight Flexible Filters are supported */
-#define E1000_FLEXIBLE_FILTER_COUNT_MAX_8 8
+#define E1000_FLEXIBLE_FILTER_COUNT_MAX_8 8
/* Two Extended Flexible Filters are supported (82576) */
-#define E1000_EXT_FLEXIBLE_FILTER_COUNT_MAX 2
-#define E1000_FHFT_LENGTH_OFFSET 0xFC /* Length byte in FHFT */
-#define E1000_FHFT_LENGTH_MASK 0x0FF /* Length in lower byte */
+#define E1000_EXT_FLEXIBLE_FILTER_COUNT_MAX 2
+#define E1000_FHFT_LENGTH_OFFSET 0xFC /* Length byte in FHFT */
+#define E1000_FHFT_LENGTH_MASK 0x0FF /* Length in lower byte */
/* Each Flexible Filter is at most 128 (0x80) bytes in length */
-#define E1000_FLEXIBLE_FILTER_SIZE_MAX 128
+#define E1000_FLEXIBLE_FILTER_SIZE_MAX 128
-#define E1000_FFLT_SIZE E1000_FLEXIBLE_FILTER_COUNT_MAX
-#define E1000_FFLT_SIZE_6 E1000_FLEXIBLE_FILTER_COUNT_MAX_6
-#define E1000_FFLT_SIZE_8 E1000_FLEXIBLE_FILTER_COUNT_MAX_8
-#define E1000_FFMT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX
-#define E1000_FFVT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX
+#define E1000_FFLT_SIZE E1000_FLEXIBLE_FILTER_COUNT_MAX
+#define E1000_FFLT_SIZE_6 E1000_FLEXIBLE_FILTER_COUNT_MAX_6
+#define E1000_FFLT_SIZE_8 E1000_FLEXIBLE_FILTER_COUNT_MAX_8
+#define E1000_FFMT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX
+#define E1000_FFVT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX
/* Extended Device Control */
-#define E1000_CTRL_EXT_GPI0_EN 0x00000001 /* Maps SDP4 to GPI0 */
-#define E1000_CTRL_EXT_GPI1_EN 0x00000002 /* Maps SDP5 to GPI1 */
-#define E1000_CTRL_EXT_PHYINT_EN E1000_CTRL_EXT_GPI1_EN
-#define E1000_CTRL_EXT_GPI2_EN 0x00000004 /* Maps SDP6 to GPI2 */
-#define E1000_CTRL_EXT_GPI3_EN 0x00000008 /* Maps SDP7 to GPI3 */
+#define E1000_CTRL_EXT_GPI0_EN 0x00000001 /* Maps SDP4 to GPI0 */
+#define E1000_CTRL_EXT_GPI1_EN 0x00000002 /* Maps SDP5 to GPI1 */
+#define E1000_CTRL_EXT_PHYINT_EN E1000_CTRL_EXT_GPI1_EN
+#define E1000_CTRL_EXT_GPI2_EN 0x00000004 /* Maps SDP6 to GPI2 */
+#define E1000_CTRL_EXT_GPI3_EN 0x00000008 /* Maps SDP7 to GPI3 */
/* Reserved (bits 4,5) in >= 82575 */
-#define E1000_CTRL_EXT_SDP4_DATA 0x00000010 /* Value of SW Definable Pin 4 */
-#define E1000_CTRL_EXT_SDP5_DATA 0x00000020 /* Value of SW Definable Pin 5 */
-#define E1000_CTRL_EXT_PHY_INT E1000_CTRL_EXT_SDP5_DATA
-#define E1000_CTRL_EXT_SDP6_DATA 0x00000040 /* Value of SW Definable Pin 6 */
-#define E1000_CTRL_EXT_SDP3_DATA 0x00000080 /* Value of SW Definable Pin 3 */
+#define E1000_CTRL_EXT_SDP4_DATA 0x00000010 /* SW Definable Pin 4 data */
+#define E1000_CTRL_EXT_SDP5_DATA 0x00000020 /* SW Definable Pin 5 data */
+#define E1000_CTRL_EXT_PHY_INT E1000_CTRL_EXT_SDP5_DATA
+#define E1000_CTRL_EXT_SDP6_DATA 0x00000040 /* SW Definable Pin 6 data */
+#define E1000_CTRL_EXT_SDP3_DATA 0x00000080 /* SW Definable Pin 3 data */
/* SDP 4/5 (bits 8,9) are reserved in >= 82575 */
-#define E1000_CTRL_EXT_SDP4_DIR 0x00000100 /* Direction of SDP4 0=in 1=out */
-#define E1000_CTRL_EXT_SDP5_DIR 0x00000200 /* Direction of SDP5 0=in 1=out */
-#define E1000_CTRL_EXT_SDP6_DIR 0x00000400 /* Direction of SDP6 0=in 1=out */
-#define E1000_CTRL_EXT_SDP3_DIR 0x00000800 /* Direction of SDP3 0=in 1=out */
-#define E1000_CTRL_EXT_ASDCHK 0x00001000 /* Initiate an ASD sequence */
-#define E1000_CTRL_EXT_EE_RST 0x00002000 /* Reinitialize from EEPROM */
-#define E1000_CTRL_EXT_IPS 0x00004000 /* Invert Power State */
+#define E1000_CTRL_EXT_SDP4_DIR 0x00000100 /* Direction of SDP4 0=in 1=out */
+#define E1000_CTRL_EXT_SDP5_DIR 0x00000200 /* Direction of SDP5 0=in 1=out */
+#define E1000_CTRL_EXT_SDP6_DIR 0x00000400 /* Direction of SDP6 0=in 1=out */
+#define E1000_CTRL_EXT_SDP3_DIR 0x00000800 /* Direction of SDP3 0=in 1=out */
+#define E1000_CTRL_EXT_ASDCHK 0x00001000 /* Initiate an ASD sequence */
+#define E1000_CTRL_EXT_EE_RST 0x00002000 /* Reinitialize from EEPROM */
+#define E1000_CTRL_EXT_IPS 0x00004000 /* Invert Power State */
/* Physical Func Reset Done Indication */
-#define E1000_CTRL_EXT_PFRSTD 0x00004000
-#define E1000_CTRL_EXT_SPD_BYPS 0x00008000 /* Speed Select Bypass */
-#define E1000_CTRL_EXT_RO_DIS 0x00020000 /* Relaxed Ordering disable */
-#define E1000_CTRL_EXT_DMA_DYN_CLK_EN 0x00080000 /* DMA Dynamic Clock Gating */
-#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000
-#define E1000_CTRL_EXT_LINK_MODE_82580_MASK 0x01C00000 /*82580 bit 24:22*/
-#define E1000_CTRL_EXT_LINK_MODE_1000BASE_KX 0x00400000
-#define E1000_CTRL_EXT_LINK_MODE_GMII 0x00000000
-#define E1000_CTRL_EXT_LINK_MODE_TBI 0x00C00000
-#define E1000_CTRL_EXT_LINK_MODE_KMRN 0x00000000
-#define E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES 0x00C00000
-#define E1000_CTRL_EXT_LINK_MODE_PCIX_SERDES 0x00800000
-#define E1000_CTRL_EXT_LINK_MODE_SGMII 0x00800000
-#define E1000_CTRL_EXT_EIAME 0x01000000
-#define E1000_CTRL_EXT_IRCA 0x00000001
-#define E1000_CTRL_EXT_WR_WMARK_MASK 0x03000000
-#define E1000_CTRL_EXT_WR_WMARK_256 0x00000000
-#define E1000_CTRL_EXT_WR_WMARK_320 0x01000000
-#define E1000_CTRL_EXT_WR_WMARK_384 0x02000000
-#define E1000_CTRL_EXT_WR_WMARK_448 0x03000000
-#define E1000_CTRL_EXT_CANC 0x04000000 /* Int delay cancellation */
-#define E1000_CTRL_EXT_DRV_LOAD 0x10000000 /* Driver loaded bit for FW */
+#define E1000_CTRL_EXT_PFRSTD 0x00004000
+#define E1000_CTRL_EXT_SPD_BYPS 0x00008000 /* Speed Select Bypass */
+#define E1000_CTRL_EXT_RO_DIS 0x00020000 /* Relaxed Ordering disable */
+#define E1000_CTRL_EXT_DMA_DYN_CLK_EN 0x00080000 /* DMA Dynamic Clk Gating */
+#define E1000_CTRL_EXT_LINK_MODE_MASK 0x00C00000
+/* Offset of the link mode field in Ctrl Ext register */
+#define E1000_CTRL_EXT_LINK_MODE_OFFSET 22
+#define E1000_CTRL_EXT_LINK_MODE_82580_MASK 0x01C00000 /*82580 bit 24:22*/
+#define E1000_CTRL_EXT_LINK_MODE_1000BASE_KX 0x00400000
+#define E1000_CTRL_EXT_LINK_MODE_GMII 0x00000000
+#define E1000_CTRL_EXT_LINK_MODE_TBI 0x00C00000
+#define E1000_CTRL_EXT_LINK_MODE_KMRN 0x00000000
+#define E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES 0x00C00000
+#define E1000_CTRL_EXT_LINK_MODE_PCIX_SERDES 0x00800000
+#define E1000_CTRL_EXT_LINK_MODE_SGMII 0x00800000
+#define E1000_CTRL_EXT_EIAME 0x01000000
+#define E1000_CTRL_EXT_IRCA 0x00000001
+#define E1000_CTRL_EXT_WR_WMARK_MASK 0x03000000
+#define E1000_CTRL_EXT_WR_WMARK_256 0x00000000
+#define E1000_CTRL_EXT_WR_WMARK_320 0x01000000
+#define E1000_CTRL_EXT_WR_WMARK_384 0x02000000
+#define E1000_CTRL_EXT_WR_WMARK_448 0x03000000
+#define E1000_CTRL_EXT_CANC 0x04000000 /* Int delay cancellation */
+#define E1000_CTRL_EXT_DRV_LOAD 0x10000000 /* Drv loaded bit for FW */
/* IAME enable bit (27) was removed in >= 82575 */
-#define E1000_CTRL_EXT_IAME 0x08000000 /* Int acknowledge Auto-mask */
-#define E1000_CRTL_EXT_PB_PAREN 0x01000000 /* packet buffer parity error
- * detection enabled */
-#define E1000_CTRL_EXT_DF_PAREN 0x02000000 /* descriptor FIFO parity
- * error detection enable */
-#define E1000_CTRL_EXT_GHOST_PAREN 0x40000000
-#define E1000_CTRL_EXT_PBA_CLR 0x80000000 /* PBA Clear */
-#define E1000_CTRL_EXT_LSECCK 0x00001000
-#define E1000_CTRL_EXT_PHYPDEN 0x00100000
-#define E1000_I2CCMD_REG_ADDR_SHIFT 16
-#define E1000_I2CCMD_REG_ADDR 0x00FF0000
-#define E1000_I2CCMD_PHY_ADDR_SHIFT 24
-#define E1000_I2CCMD_PHY_ADDR 0x07000000
-#define E1000_I2CCMD_OPCODE_READ 0x08000000
-#define E1000_I2CCMD_OPCODE_WRITE 0x00000000
-#define E1000_I2CCMD_RESET 0x10000000
-#define E1000_I2CCMD_READY 0x20000000
-#define E1000_I2CCMD_INTERRUPT_ENA 0x40000000
-#define E1000_I2CCMD_ERROR 0x80000000
-#define E1000_MAX_SGMII_PHY_REG_ADDR 255
-#define E1000_I2CCMD_PHY_TIMEOUT 200
-#define E1000_IVAR_VALID 0x80
-#define E1000_GPIE_NSICR 0x00000001
-#define E1000_GPIE_MSIX_MODE 0x00000010
-#define E1000_GPIE_EIAME 0x40000000
-#define E1000_GPIE_PBA 0x80000000
+#define E1000_CTRL_EXT_IAME 0x08000000 /* Int ACK Auto-mask */
+/* packet buffer parity error detection enabled */
+#define E1000_CRTL_EXT_PB_PAREN 0x01000000
+/* descriptor FIFO parity error detection enable */
+#define E1000_CTRL_EXT_DF_PAREN 0x02000000
+#define E1000_CTRL_EXT_GHOST_PAREN 0x40000000
+#define E1000_CTRL_EXT_PBA_CLR 0x80000000 /* PBA Clear */
+#define E1000_CTRL_EXT_LSECCK 0x00001000
+#define E1000_CTRL_EXT_PHYPDEN 0x00100000
+#define E1000_I2CCMD_REG_ADDR_SHIFT 16
+#define E1000_I2CCMD_REG_ADDR 0x00FF0000
+#define E1000_I2CCMD_PHY_ADDR_SHIFT 24
+#define E1000_I2CCMD_PHY_ADDR 0x07000000
+#define E1000_I2CCMD_OPCODE_READ 0x08000000
+#define E1000_I2CCMD_OPCODE_WRITE 0x00000000
+#define E1000_I2CCMD_RESET 0x10000000
+#define E1000_I2CCMD_READY 0x20000000
+#define E1000_I2CCMD_INTERRUPT_ENA 0x40000000
+#define E1000_I2CCMD_ERROR 0x80000000
+#define E1000_I2CCMD_SFP_DATA_ADDR(a) (0x0000 + (a))
+#define E1000_I2CCMD_SFP_DIAG_ADDR(a) (0x0100 + (a))
+#define E1000_MAX_SGMII_PHY_REG_ADDR 255
+#define E1000_I2CCMD_PHY_TIMEOUT 200
+#define E1000_IVAR_VALID 0x80
+#define E1000_GPIE_NSICR 0x00000001
+#define E1000_GPIE_MSIX_MODE 0x00000010
+#define E1000_GPIE_EIAME 0x40000000
+#define E1000_GPIE_PBA 0x80000000
/* Receive Descriptor bit definitions */
-#define E1000_RXD_STAT_DD 0x01 /* Descriptor Done */
-#define E1000_RXD_STAT_EOP 0x02 /* End of Packet */
-#define E1000_RXD_STAT_IXSM 0x04 /* Ignore checksum */
-#define E1000_RXD_STAT_VP 0x08 /* IEEE VLAN Packet */
-#define E1000_RXD_STAT_UDPCS 0x10 /* UDP xsum calculated */
-#define E1000_RXD_STAT_TCPCS 0x20 /* TCP xsum calculated */
-#define E1000_RXD_STAT_IPCS 0x40 /* IP xsum calculated */
-#define E1000_RXD_STAT_PIF 0x80 /* passed in-exact filter */
-#define E1000_RXD_STAT_CRCV 0x100 /* Speculative CRC Valid */
-#define E1000_RXD_STAT_IPIDV 0x200 /* IP identification valid */
-#define E1000_RXD_STAT_UDPV 0x400 /* Valid UDP checksum */
-#define E1000_RXD_STAT_DYNINT 0x800 /* Pkt caused INT via DYNINT */
-#define E1000_RXD_STAT_ACK 0x8000 /* ACK Packet indication */
-#define E1000_RXD_ERR_CE 0x01 /* CRC Error */
-#define E1000_RXD_ERR_SE 0x02 /* Symbol Error */
-#define E1000_RXD_ERR_SEQ 0x04 /* Sequence Error */
-#define E1000_RXD_ERR_CXE 0x10 /* Carrier Extension Error */
-#define E1000_RXD_ERR_TCPE 0x20 /* TCP/UDP Checksum Error */
-#define E1000_RXD_ERR_IPE 0x40 /* IP Checksum Error */
-#define E1000_RXD_ERR_RXE 0x80 /* Rx Data Error */
-#define E1000_RXD_SPC_VLAN_MASK 0x0FFF /* VLAN ID is in lower 12 bits */
-#define E1000_RXD_SPC_PRI_MASK 0xE000 /* Priority is in upper 3 bits */
-#define E1000_RXD_SPC_PRI_SHIFT 13
-#define E1000_RXD_SPC_CFI_MASK 0x1000 /* CFI is bit 12 */
-#define E1000_RXD_SPC_CFI_SHIFT 12
-
-#define E1000_RXDEXT_STATERR_LB 0x00040000
-#define E1000_RXDEXT_STATERR_CE 0x01000000
-#define E1000_RXDEXT_STATERR_SE 0x02000000
-#define E1000_RXDEXT_STATERR_SEQ 0x04000000
-#define E1000_RXDEXT_STATERR_CXE 0x10000000
-#define E1000_RXDEXT_STATERR_TCPE 0x20000000
-#define E1000_RXDEXT_STATERR_IPE 0x40000000
-#define E1000_RXDEXT_STATERR_RXE 0x80000000
-
-#define E1000_RXDEXT_LSECH 0x01000000
-#define E1000_RXDEXT_LSECE_MASK 0x60000000
-#define E1000_RXDEXT_LSECE_NO_ERROR 0x00000000
-#define E1000_RXDEXT_LSECE_NO_SA_MATCH 0x20000000
-#define E1000_RXDEXT_LSECE_REPLAY_DETECT 0x40000000
-#define E1000_RXDEXT_LSECE_BAD_SIG 0x60000000
+#define E1000_RXD_STAT_DD 0x01 /* Descriptor Done */
+#define E1000_RXD_STAT_EOP 0x02 /* End of Packet */
+#define E1000_RXD_STAT_IXSM 0x04 /* Ignore checksum */
+#define E1000_RXD_STAT_VP 0x08 /* IEEE VLAN Packet */
+#define E1000_RXD_STAT_UDPCS 0x10 /* UDP xsum calculated */
+#define E1000_RXD_STAT_TCPCS 0x20 /* TCP xsum calculated */
+#define E1000_RXD_STAT_IPCS 0x40 /* IP xsum calculated */
+#define E1000_RXD_STAT_PIF 0x80 /* passed in-exact filter */
+#define E1000_RXD_STAT_CRCV 0x100 /* Speculative CRC Valid */
+#define E1000_RXD_STAT_IPIDV 0x200 /* IP identification valid */
+#define E1000_RXD_STAT_UDPV 0x400 /* Valid UDP checksum */
+#define E1000_RXD_STAT_DYNINT 0x800 /* Pkt caused INT via DYNINT */
+#define E1000_RXD_STAT_ACK 0x8000 /* ACK Packet indication */
+#define E1000_RXD_ERR_CE 0x01 /* CRC Error */
+#define E1000_RXD_ERR_SE 0x02 /* Symbol Error */
+#define E1000_RXD_ERR_SEQ 0x04 /* Sequence Error */
+#define E1000_RXD_ERR_CXE 0x10 /* Carrier Extension Error */
+#define E1000_RXD_ERR_TCPE 0x20 /* TCP/UDP Checksum Error */
+#define E1000_RXD_ERR_IPE 0x40 /* IP Checksum Error */
+#define E1000_RXD_ERR_RXE 0x80 /* Rx Data Error */
+#define E1000_RXD_SPC_VLAN_MASK 0x0FFF /* VLAN ID is in lower 12 bits */
+#define E1000_RXD_SPC_PRI_MASK 0xE000 /* Priority is in upper 3 bits */
+#define E1000_RXD_SPC_PRI_SHIFT 13
+#define E1000_RXD_SPC_CFI_MASK 0x1000 /* CFI is bit 12 */
+#define E1000_RXD_SPC_CFI_SHIFT 12
+
+#define E1000_RXDEXT_STATERR_LB 0x00040000
+#define E1000_RXDEXT_STATERR_CE 0x01000000
+#define E1000_RXDEXT_STATERR_SE 0x02000000
+#define E1000_RXDEXT_STATERR_SEQ 0x04000000
+#define E1000_RXDEXT_STATERR_CXE 0x10000000
+#define E1000_RXDEXT_STATERR_TCPE 0x20000000
+#define E1000_RXDEXT_STATERR_IPE 0x40000000
+#define E1000_RXDEXT_STATERR_RXE 0x80000000
+
+#define E1000_RXDEXT_LSECH 0x01000000
+#define E1000_RXDEXT_LSECE_MASK 0x60000000
+#define E1000_RXDEXT_LSECE_NO_ERROR 0x00000000
+#define E1000_RXDEXT_LSECE_NO_SA_MATCH 0x20000000
+#define E1000_RXDEXT_LSECE_REPLAY_DETECT 0x40000000
+#define E1000_RXDEXT_LSECE_BAD_SIG 0x60000000
/* mask to determine if packets should be dropped due to frame errors */
#define E1000_RXD_ERR_FRAME_ERR_MASK ( \
- E1000_RXD_ERR_CE | \
- E1000_RXD_ERR_SE | \
- E1000_RXD_ERR_SEQ | \
- E1000_RXD_ERR_CXE | \
- E1000_RXD_ERR_RXE)
+ E1000_RXD_ERR_CE | \
+ E1000_RXD_ERR_SE | \
+ E1000_RXD_ERR_SEQ | \
+ E1000_RXD_ERR_CXE | \
+ E1000_RXD_ERR_RXE)
/* Same mask, but for extended and packet split descriptors */
#define E1000_RXDEXT_ERR_FRAME_ERR_MASK ( \
- E1000_RXDEXT_STATERR_CE | \
- E1000_RXDEXT_STATERR_SE | \
- E1000_RXDEXT_STATERR_SEQ | \
- E1000_RXDEXT_STATERR_CXE | \
- E1000_RXDEXT_STATERR_RXE)
-
-#define E1000_MRQC_ENABLE_MASK 0x00000007
-#define E1000_MRQC_ENABLE_RSS_2Q 0x00000001
-#define E1000_MRQC_ENABLE_RSS_INT 0x00000004
-#define E1000_MRQC_RSS_FIELD_MASK 0xFFFF0000
-#define E1000_MRQC_RSS_FIELD_IPV4_TCP 0x00010000
-#define E1000_MRQC_RSS_FIELD_IPV4 0x00020000
-#define E1000_MRQC_RSS_FIELD_IPV6_TCP_EX 0x00040000
-#define E1000_MRQC_RSS_FIELD_IPV6_EX 0x00080000
-#define E1000_MRQC_RSS_FIELD_IPV6 0x00100000
-#define E1000_MRQC_RSS_FIELD_IPV6_TCP 0x00200000
-
-#define E1000_RXDPS_HDRSTAT_HDRSP 0x00008000
-#define E1000_RXDPS_HDRSTAT_HDRLEN_MASK 0x000003FF
+ E1000_RXDEXT_STATERR_CE | \
+ E1000_RXDEXT_STATERR_SE | \
+ E1000_RXDEXT_STATERR_SEQ | \
+ E1000_RXDEXT_STATERR_CXE | \
+ E1000_RXDEXT_STATERR_RXE)
+
+#define E1000_MRQC_ENABLE_MASK 0x00000007
+#define E1000_MRQC_ENABLE_RSS_2Q 0x00000001
+#define E1000_MRQC_ENABLE_RSS_INT 0x00000004
+#define E1000_MRQC_RSS_FIELD_MASK 0xFFFF0000
+#define E1000_MRQC_RSS_FIELD_IPV4_TCP 0x00010000
+#define E1000_MRQC_RSS_FIELD_IPV4 0x00020000
+#define E1000_MRQC_RSS_FIELD_IPV6_TCP_EX 0x00040000
+#define E1000_MRQC_RSS_FIELD_IPV6_EX 0x00080000
+#define E1000_MRQC_RSS_FIELD_IPV6 0x00100000
+#define E1000_MRQC_RSS_FIELD_IPV6_TCP 0x00200000
+
+#define E1000_RXDPS_HDRSTAT_HDRSP 0x00008000
+#define E1000_RXDPS_HDRSTAT_HDRLEN_MASK 0x000003FF
/* Management Control */
-#define E1000_MANC_SMBUS_EN 0x00000001 /* SMBus Enabled - RO */
-#define E1000_MANC_ASF_EN 0x00000002 /* ASF Enabled - RO */
-#define E1000_MANC_R_ON_FORCE 0x00000004 /* Reset on Force TCO - RO */
-#define E1000_MANC_RMCP_EN 0x00000100 /* Enable RCMP 026Fh Filtering */
-#define E1000_MANC_0298_EN 0x00000200 /* Enable RCMP 0298h Filtering */
-#define E1000_MANC_IPV4_EN 0x00000400 /* Enable IPv4 */
-#define E1000_MANC_IPV6_EN 0x00000800 /* Enable IPv6 */
-#define E1000_MANC_SNAP_EN 0x00001000 /* Accept LLC/SNAP */
-#define E1000_MANC_ARP_EN 0x00002000 /* Enable ARP Request Filtering */
+#define E1000_MANC_SMBUS_EN 0x00000001 /* SMBus Enabled - RO */
+#define E1000_MANC_ASF_EN 0x00000002 /* ASF Enabled - RO */
+#define E1000_MANC_R_ON_FORCE 0x00000004 /* Reset on Force TCO - RO */
+#define E1000_MANC_RMCP_EN 0x00000100 /* Enable RCMP 026Fh Filtering */
+#define E1000_MANC_0298_EN 0x00000200 /* Enable RCMP 0298h Filtering */
+#define E1000_MANC_IPV4_EN 0x00000400 /* Enable IPv4 */
+#define E1000_MANC_IPV6_EN 0x00000800 /* Enable IPv6 */
+#define E1000_MANC_SNAP_EN 0x00001000 /* Accept LLC/SNAP */
+#define E1000_MANC_ARP_EN 0x00002000 /* Enable ARP Request Filtering */
/* Enable Neighbor Discovery Filtering */
-#define E1000_MANC_NEIGHBOR_EN 0x00004000
-#define E1000_MANC_ARP_RES_EN 0x00008000 /* Enable ARP response Filtering */
-#define E1000_MANC_TCO_RESET 0x00010000 /* TCO Reset Occurred */
-#define E1000_MANC_RCV_TCO_EN 0x00020000 /* Receive TCO Packets Enabled */
+#define E1000_MANC_NEIGHBOR_EN 0x00004000
+#define E1000_MANC_ARP_RES_EN 0x00008000 /* Enable ARP response Filtering */
+#define E1000_MANC_TCO_RESET 0x00010000 /* TCO Reset Occurred */
+#define E1000_MANC_RCV_TCO_EN 0x00020000 /* Receive TCO Packets Enabled */
#define E1000_MANC_REPORT_STATUS 0x00040000 /* Status Reporting Enabled */
-#define E1000_MANC_RCV_ALL 0x00080000 /* Receive All Enabled */
-#define E1000_MANC_BLK_PHY_RST_ON_IDE 0x00040000 /* Block phy resets */
+#define E1000_MANC_RCV_ALL 0x00080000 /* Receive All Enabled */
+#define E1000_MANC_BLK_PHY_RST_ON_IDE 0x00040000 /* Block phy resets */
/* Enable MAC address filtering */
-#define E1000_MANC_EN_MAC_ADDR_FILTER 0x00100000
+#define E1000_MANC_EN_MAC_ADDR_FILTER 0x00100000
/* Enable MNG packets to host memory */
-#define E1000_MANC_EN_MNG2HOST 0x00200000
+#define E1000_MANC_EN_MNG2HOST 0x00200000
/* Enable IP address filtering */
-#define E1000_MANC_EN_IP_ADDR_FILTER 0x00400000
-#define E1000_MANC_EN_XSUM_FILTER 0x00800000 /* Enable checksum filtering */
-#define E1000_MANC_BR_EN 0x01000000 /* Enable broadcast filtering */
-#define E1000_MANC_SMB_REQ 0x01000000 /* SMBus Request */
-#define E1000_MANC_SMB_GNT 0x02000000 /* SMBus Grant */
-#define E1000_MANC_SMB_CLK_IN 0x04000000 /* SMBus Clock In */
-#define E1000_MANC_SMB_DATA_IN 0x08000000 /* SMBus Data In */
-#define E1000_MANC_SMB_DATA_OUT 0x10000000 /* SMBus Data Out */
-#define E1000_MANC_SMB_CLK_OUT 0x20000000 /* SMBus Clock Out */
-#define E1000_MANC_MPROXYE 0x40000000 /* Mngment Proxy Enable */
-#define E1000_MANC_EN_BMC2OS 0x10000000 /* OS2BMC is enabled or not */
-
-#define E1000_MANC_SMB_DATA_OUT_SHIFT 28 /* SMBus Data Out Shift */
-#define E1000_MANC_SMB_CLK_OUT_SHIFT 29 /* SMBus Clock Out Shift */
-
-#define E1000_MANC2H_PORT_623 0x00000020 /* Port 0x26f */
-#define E1000_MANC2H_PORT_664 0x00000040 /* Port 0x298 */
-#define E1000_MDEF_PORT_623 0x00000800 /* Port 0x26f */
-#define E1000_MDEF_PORT_664 0x00000400 /* Port 0x298 */
+#define E1000_MANC_EN_IP_ADDR_FILTER 0x00400000
+#define E1000_MANC_EN_XSUM_FILTER 0x00800000 /* Ena checksum filtering */
+#define E1000_MANC_BR_EN 0x01000000 /* Ena broadcast filtering */
+#define E1000_MANC_SMB_REQ 0x01000000 /* SMBus Request */
+#define E1000_MANC_SMB_GNT 0x02000000 /* SMBus Grant */
+#define E1000_MANC_SMB_CLK_IN 0x04000000 /* SMBus Clock In */
+#define E1000_MANC_SMB_DATA_IN 0x08000000 /* SMBus Data In */
+#define E1000_MANC_SMB_DATA_OUT 0x10000000 /* SMBus Data Out */
+#define E1000_MANC_SMB_CLK_OUT 0x20000000 /* SMBus Clock Out */
+#define E1000_MANC_MPROXYE 0x40000000 /* Mngment Proxy Enable */
+#define E1000_MANC_EN_BMC2OS 0x10000000 /* OS2BMC is enabld or not */
+
+#define E1000_MANC_SMB_DATA_OUT_SHIFT 28 /* SMBus Data Out Shift */
+#define E1000_MANC_SMB_CLK_OUT_SHIFT 29 /* SMBus Clock Out Shift */
+
+#define E1000_MANC2H_PORT_623 0x00000020 /* Port 0x26f */
+#define E1000_MANC2H_PORT_664 0x00000040 /* Port 0x298 */
+#define E1000_MDEF_PORT_623 0x00000800 /* Port 0x26f */
+#define E1000_MDEF_PORT_664 0x00000400 /* Port 0x298 */
/* Receive Control */
-#define E1000_RCTL_RST 0x00000001 /* Software reset */
-#define E1000_RCTL_EN 0x00000002 /* enable */
-#define E1000_RCTL_SBP 0x00000004 /* store bad packet */
-#define E1000_RCTL_UPE 0x00000008 /* unicast promisc enable */
-#define E1000_RCTL_MPE 0x00000010 /* multicast promisc enable */
-#define E1000_RCTL_LPE 0x00000020 /* long packet enable */
-#define E1000_RCTL_LBM_NO 0x00000000 /* no loopback mode */
-#define E1000_RCTL_LBM_MAC 0x00000040 /* MAC loopback mode */
-#define E1000_RCTL_LBM_SLP 0x00000080 /* serial link loopback mode */
-#define E1000_RCTL_LBM_TCVR 0x000000C0 /* tcvr loopback mode */
-#define E1000_RCTL_DTYP_MASK 0x00000C00 /* Descriptor type mask */
-#define E1000_RCTL_DTYP_PS 0x00000400 /* Packet Split descriptor */
-#define E1000_RCTL_RDMTS_HALF 0x00000000 /* Rx desc min thresh size */
-#define E1000_RCTL_RDMTS_QUAT 0x00000100 /* Rx desc min thresh size */
-#define E1000_RCTL_RDMTS_EIGTH 0x00000200 /* Rx desc min thresh size */
-#define E1000_RCTL_MO_SHIFT 12 /* multicast offset shift */
-#define E1000_RCTL_MO_0 0x00000000 /* multicast offset 11:0 */
-#define E1000_RCTL_MO_1 0x00001000 /* multicast offset 12:1 */
-#define E1000_RCTL_MO_2 0x00002000 /* multicast offset 13:2 */
-#define E1000_RCTL_MO_3 0x00003000 /* multicast offset 15:4 */
-#define E1000_RCTL_MDR 0x00004000 /* multicast desc ring 0 */
-#define E1000_RCTL_BAM 0x00008000 /* broadcast enable */
+#define E1000_RCTL_RST 0x00000001 /* Software reset */
+#define E1000_RCTL_EN 0x00000002 /* enable */
+#define E1000_RCTL_SBP 0x00000004 /* store bad packet */
+#define E1000_RCTL_UPE 0x00000008 /* unicast promisc enable */
+#define E1000_RCTL_MPE 0x00000010 /* multicast promisc enable */
+#define E1000_RCTL_LPE 0x00000020 /* long packet enable */
+#define E1000_RCTL_LBM_NO 0x00000000 /* no loopback mode */
+#define E1000_RCTL_LBM_MAC 0x00000040 /* MAC loopback mode */
+#define E1000_RCTL_LBM_SLP 0x00000080 /* serial link loopback mode */
+#define E1000_RCTL_LBM_TCVR 0x000000C0 /* tcvr loopback mode */
+#define E1000_RCTL_DTYP_MASK 0x00000C00 /* Descriptor type mask */
+#define E1000_RCTL_DTYP_PS 0x00000400 /* Packet Split descriptor */
+#define E1000_RCTL_RDMTS_HALF 0x00000000 /* Rx desc min thresh size */
+#define E1000_RCTL_RDMTS_QUAT 0x00000100 /* Rx desc min thresh size */
+#define E1000_RCTL_RDMTS_EIGTH 0x00000200 /* Rx desc min thresh size */
+#define E1000_RCTL_MO_SHIFT 12 /* multicast offset shift */
+#define E1000_RCTL_MO_0 0x00000000 /* multicast offset 11:0 */
+#define E1000_RCTL_MO_1 0x00001000 /* multicast offset 12:1 */
+#define E1000_RCTL_MO_2 0x00002000 /* multicast offset 13:2 */
+#define E1000_RCTL_MO_3 0x00003000 /* multicast offset 15:4 */
+#define E1000_RCTL_MDR 0x00004000 /* multicast desc ring 0 */
+#define E1000_RCTL_BAM 0x00008000 /* broadcast enable */
/* these buffer sizes are valid if E1000_RCTL_BSEX is 0 */
-#define E1000_RCTL_SZ_2048 0x00000000 /* Rx buffer size 2048 */
-#define E1000_RCTL_SZ_1024 0x00010000 /* Rx buffer size 1024 */
-#define E1000_RCTL_SZ_512 0x00020000 /* Rx buffer size 512 */
-#define E1000_RCTL_SZ_256 0x00030000 /* Rx buffer size 256 */
+#define E1000_RCTL_SZ_2048 0x00000000 /* Rx buffer size 2048 */
+#define E1000_RCTL_SZ_1024 0x00010000 /* Rx buffer size 1024 */
+#define E1000_RCTL_SZ_512 0x00020000 /* Rx buffer size 512 */
+#define E1000_RCTL_SZ_256 0x00030000 /* Rx buffer size 256 */
/* these buffer sizes are valid if E1000_RCTL_BSEX is 1 */
-#define E1000_RCTL_SZ_16384 0x00010000 /* Rx buffer size 16384 */
-#define E1000_RCTL_SZ_8192 0x00020000 /* Rx buffer size 8192 */
-#define E1000_RCTL_SZ_4096 0x00030000 /* Rx buffer size 4096 */
-#define E1000_RCTL_VFE 0x00040000 /* vlan filter enable */
-#define E1000_RCTL_CFIEN 0x00080000 /* canonical form enable */
-#define E1000_RCTL_CFI 0x00100000 /* canonical form indicator */
-#define E1000_RCTL_DPF 0x00400000 /* discard pause frames */
-#define E1000_RCTL_PMCF 0x00800000 /* pass MAC control frames */
-#define E1000_RCTL_BSEX 0x02000000 /* Buffer size extension */
-#define E1000_RCTL_SECRC 0x04000000 /* Strip Ethernet CRC */
-#define E1000_RCTL_FLXBUF_MASK 0x78000000 /* Flexible buffer size */
-#define E1000_RCTL_FLXBUF_SHIFT 27 /* Flexible buffer shift */
+#define E1000_RCTL_SZ_16384 0x00010000 /* Rx buffer size 16384 */
+#define E1000_RCTL_SZ_8192 0x00020000 /* Rx buffer size 8192 */
+#define E1000_RCTL_SZ_4096 0x00030000 /* Rx buffer size 4096 */
+#define E1000_RCTL_VFE 0x00040000 /* vlan filter enable */
+#define E1000_RCTL_CFIEN 0x00080000 /* canonical form enable */
+#define E1000_RCTL_CFI 0x00100000 /* canonical form indicator */
+#define E1000_RCTL_DPF 0x00400000 /* discard pause frames */
+#define E1000_RCTL_PMCF 0x00800000 /* pass MAC control frames */
+#define E1000_RCTL_BSEX 0x02000000 /* Buffer size extension */
+#define E1000_RCTL_SECRC 0x04000000 /* Strip Ethernet CRC */
+#define E1000_RCTL_FLXBUF_MASK 0x78000000 /* Flexible buffer size */
+#define E1000_RCTL_FLXBUF_SHIFT 27 /* Flexible buffer shift */
/*
* Use byte values for the following shift parameters
* Usage:
* psrctl |= (((ROUNDUP(value0, 128) >> E1000_PSRCTL_BSIZE0_SHIFT) &
- * E1000_PSRCTL_BSIZE0_MASK) |
- * ((ROUNDUP(value1, 1024) >> E1000_PSRCTL_BSIZE1_SHIFT) &
- * E1000_PSRCTL_BSIZE1_MASK) |
- * ((ROUNDUP(value2, 1024) << E1000_PSRCTL_BSIZE2_SHIFT) &
- * E1000_PSRCTL_BSIZE2_MASK) |
- * ((ROUNDUP(value3, 1024) << E1000_PSRCTL_BSIZE3_SHIFT) |;
- * E1000_PSRCTL_BSIZE3_MASK))
+ * E1000_PSRCTL_BSIZE0_MASK) |
+ * ((ROUNDUP(value1, 1024) >> E1000_PSRCTL_BSIZE1_SHIFT) &
+ * E1000_PSRCTL_BSIZE1_MASK) |
+ * ((ROUNDUP(value2, 1024) << E1000_PSRCTL_BSIZE2_SHIFT) &
+ * E1000_PSRCTL_BSIZE2_MASK) |
+ * ((ROUNDUP(value3, 1024) << E1000_PSRCTL_BSIZE3_SHIFT) |;
+ * E1000_PSRCTL_BSIZE3_MASK))
* where value0 = [128..16256], default=256
* value1 = [1024..64512], default=4096
* value2 = [0..64512], default=4096
* value3 = [0..64512], default=0
*/
-#define E1000_PSRCTL_BSIZE0_MASK 0x0000007F
-#define E1000_PSRCTL_BSIZE1_MASK 0x00003F00
-#define E1000_PSRCTL_BSIZE2_MASK 0x003F0000
-#define E1000_PSRCTL_BSIZE3_MASK 0x3F000000
+#define E1000_PSRCTL_BSIZE0_MASK 0x0000007F
+#define E1000_PSRCTL_BSIZE1_MASK 0x00003F00
+#define E1000_PSRCTL_BSIZE2_MASK 0x003F0000
+#define E1000_PSRCTL_BSIZE3_MASK 0x3F000000
-#define E1000_PSRCTL_BSIZE0_SHIFT 7 /* Shift _right_ 7 */
-#define E1000_PSRCTL_BSIZE1_SHIFT 2 /* Shift _right_ 2 */
-#define E1000_PSRCTL_BSIZE2_SHIFT 6 /* Shift _left_ 6 */
-#define E1000_PSRCTL_BSIZE3_SHIFT 14 /* Shift _left_ 14 */
+#define E1000_PSRCTL_BSIZE0_SHIFT 7 /* Shift _right_ 7 */
+#define E1000_PSRCTL_BSIZE1_SHIFT 2 /* Shift _right_ 2 */
+#define E1000_PSRCTL_BSIZE2_SHIFT 6 /* Shift _left_ 6 */
+#define E1000_PSRCTL_BSIZE3_SHIFT 14 /* Shift _left_ 14 */
/* SWFW_SYNC Definitions */
-#define E1000_SWFW_EEP_SM 0x01
-#define E1000_SWFW_PHY0_SM 0x02
-#define E1000_SWFW_PHY1_SM 0x04
-#define E1000_SWFW_CSR_SM 0x08
-#define E1000_SWFW_PHY2_SM 0x20
-#define E1000_SWFW_PHY3_SM 0x40
-#define E1000_SWFW_SW_MNG_SM 0x400
+#define E1000_SWFW_EEP_SM 0x01
+#define E1000_SWFW_PHY0_SM 0x02
+#define E1000_SWFW_PHY1_SM 0x04
+#define E1000_SWFW_CSR_SM 0x08
+#define E1000_SWFW_PHY2_SM 0x20
+#define E1000_SWFW_PHY3_SM 0x40
+#define E1000_SWFW_SW_MNG_SM 0x400
/* FACTPS Definitions */
-#define E1000_FACTPS_LFS 0x40000000 /* LAN Function Select */
+#define E1000_FACTPS_LFS 0x40000000 /* LAN Function Select */
/* Device Control */
-#define E1000_CTRL_FD 0x00000001 /* Full duplex.0=half; 1=full */
-#define E1000_CTRL_BEM 0x00000002 /* Endian Mode.0=little,1=big */
-#define E1000_CTRL_PRIOR 0x00000004 /* Priority on PCI. 0=rx,1=fair */
+#define E1000_CTRL_FD 0x00000001 /* Full duplex.0=half; 1=full */
+#define E1000_CTRL_BEM 0x00000002 /* Endian Mode.0=little,1=big */
+#define E1000_CTRL_PRIOR 0x00000004 /* Priority on PCI. 0=rx,1=fair */
#define E1000_CTRL_GIO_MASTER_DISABLE 0x00000004 /*Blocks new Master reqs */
-#define E1000_CTRL_LRST 0x00000008 /* Link reset. 0=normal,1=reset */
-#define E1000_CTRL_TME 0x00000010 /* Test mode. 0=normal,1=test */
-#define E1000_CTRL_SLE 0x00000020 /* Serial Link on 0=dis,1=en */
-#define E1000_CTRL_ASDE 0x00000020 /* Auto-speed detect enable */
-#define E1000_CTRL_SLU 0x00000040 /* Set link up (Force Link) */
-#define E1000_CTRL_ILOS 0x00000080 /* Invert Loss-Of Signal */
-#define E1000_CTRL_SPD_SEL 0x00000300 /* Speed Select Mask */
-#define E1000_CTRL_SPD_10 0x00000000 /* Force 10Mb */
-#define E1000_CTRL_SPD_100 0x00000100 /* Force 100Mb */
-#define E1000_CTRL_SPD_1000 0x00000200 /* Force 1Gb */
-#define E1000_CTRL_BEM32 0x00000400 /* Big Endian 32 mode */
-#define E1000_CTRL_FRCSPD 0x00000800 /* Force Speed */
-#define E1000_CTRL_FRCDPX 0x00001000 /* Force Duplex */
-#define E1000_CTRL_D_UD_EN 0x00002000 /* Dock/Undock enable */
-#define E1000_CTRL_D_UD_POLARITY 0x00004000 /* Defined polarity of Dock/Undock
- * indication in SDP[0] */
-#define E1000_CTRL_FORCE_PHY_RESET 0x00008000 /* Reset both PHY ports, through
- * PHYRST_N pin */
-#define E1000_CTRL_EXT_LINK_EN 0x00010000 /* enable link status from external
- * LINK_0 and LINK_1 pins */
-#define E1000_CTRL_LANPHYPC_OVERRIDE 0x00010000 /* SW control of LANPHYPC */
-#define E1000_CTRL_LANPHYPC_VALUE 0x00020000 /* SW value of LANPHYPC */
-#define E1000_CTRL_SWDPIN0 0x00040000 /* SWDPIN 0 value */
-#define E1000_CTRL_SWDPIN1 0x00080000 /* SWDPIN 1 value */
-#define E1000_CTRL_SWDPIN2 0x00100000 /* SWDPIN 2 value */
-#define E1000_CTRL_ADVD3WUC 0x00100000 /* D3 WUC */
-#define E1000_CTRL_SWDPIN3 0x00200000 /* SWDPIN 3 value */
-#define E1000_CTRL_SWDPIO0 0x00400000 /* SWDPIN 0 Input or output */
-#define E1000_CTRL_SWDPIO1 0x00800000 /* SWDPIN 1 input or output */
-#define E1000_CTRL_SWDPIO2 0x01000000 /* SWDPIN 2 input or output */
-#define E1000_CTRL_SWDPIO3 0x02000000 /* SWDPIN 3 input or output */
-#define E1000_CTRL_RST 0x04000000 /* Global reset */
-#define E1000_CTRL_RFCE 0x08000000 /* Receive Flow Control enable */
-#define E1000_CTRL_TFCE 0x10000000 /* Transmit flow control enable */
-#define E1000_CTRL_RTE 0x20000000 /* Routing tag enable */
-#define E1000_CTRL_VME 0x40000000 /* IEEE VLAN mode enable */
-#define E1000_CTRL_PHY_RST 0x80000000 /* PHY Reset */
-#define E1000_CTRL_SW2FW_INT 0x02000000 /* Initiate an interrupt to ME */
-#define E1000_CTRL_I2C_ENA 0x02000000 /* I2C enable */
+#define E1000_CTRL_LRST 0x00000008 /* Link reset. 0=normal,1=reset */
+#define E1000_CTRL_TME 0x00000010 /* Test mode. 0=normal,1=test */
+#define E1000_CTRL_SLE 0x00000020 /* Serial Link on 0=dis,1=en */
+#define E1000_CTRL_ASDE 0x00000020 /* Auto-speed detect enable */
+#define E1000_CTRL_SLU 0x00000040 /* Set link up (Force Link) */
+#define E1000_CTRL_ILOS 0x00000080 /* Invert Loss-Of Signal */
+#define E1000_CTRL_SPD_SEL 0x00000300 /* Speed Select Mask */
+#define E1000_CTRL_SPD_10 0x00000000 /* Force 10Mb */
+#define E1000_CTRL_SPD_100 0x00000100 /* Force 100Mb */
+#define E1000_CTRL_SPD_1000 0x00000200 /* Force 1Gb */
+#define E1000_CTRL_BEM32 0x00000400 /* Big Endian 32 mode */
+#define E1000_CTRL_FRCSPD 0x00000800 /* Force Speed */
+#define E1000_CTRL_FRCDPX 0x00001000 /* Force Duplex */
+#define E1000_CTRL_D_UD_EN 0x00002000 /* Dock/Undock enable */
+/* Defined polarity of Dock/Undock indication in SDP[0] */
+#define E1000_CTRL_D_UD_POLARITY 0x00004000
+/* Reset both PHY ports, through PHYRST_N pin */
+#define E1000_CTRL_FORCE_PHY_RESET 0x00008000
+/* enable link status from external LINK_0 and LINK_1 pins */
+#define E1000_CTRL_EXT_LINK_EN 0x00010000
+#define E1000_CTRL_LANPHYPC_OVERRIDE 0x00010000 /* SW control of LANPHYPC */
+#define E1000_CTRL_LANPHYPC_VALUE 0x00020000 /* SW value of LANPHYPC */
+#define E1000_CTRL_SWDPIN0 0x00040000 /* SWDPIN 0 value */
+#define E1000_CTRL_SWDPIN1 0x00080000 /* SWDPIN 1 value */
+#define E1000_CTRL_SWDPIN2 0x00100000 /* SWDPIN 2 value */
+#define E1000_CTRL_ADVD3WUC 0x00100000 /* D3 WUC */
+#define E1000_CTRL_SWDPIN3 0x00200000 /* SWDPIN 3 value */
+#define E1000_CTRL_SWDPIO0 0x00400000 /* SWDPIN 0 Input or output */
+#define E1000_CTRL_SWDPIO1 0x00800000 /* SWDPIN 1 input or output */
+#define E1000_CTRL_SWDPIO2 0x01000000 /* SWDPIN 2 input or output */
+#define E1000_CTRL_SWDPIO3 0x02000000 /* SWDPIN 3 input or output */
+#define E1000_CTRL_RST 0x04000000 /* Global reset */
+#define E1000_CTRL_RFCE 0x08000000 /* Receive Flow Control enable */
+#define E1000_CTRL_TFCE 0x10000000 /* Transmit flow control enable */
+#define E1000_CTRL_RTE 0x20000000 /* Routing tag enable */
+#define E1000_CTRL_VME 0x40000000 /* IEEE VLAN mode enable */
+#define E1000_CTRL_PHY_RST 0x80000000 /* PHY Reset */
+#define E1000_CTRL_SW2FW_INT 0x02000000 /* Initiate an interrupt to ME */
+#define E1000_CTRL_I2C_ENA 0x02000000 /* I2C enable */
/*
* Bit definitions for the Management Data IO (MDIO) and Management Data
* Clock (MDC) pins in the Device Control Register.
*/
-#define E1000_CTRL_PHY_RESET_DIR E1000_CTRL_SWDPIO0
-#define E1000_CTRL_PHY_RESET E1000_CTRL_SWDPIN0
-#define E1000_CTRL_MDIO_DIR E1000_CTRL_SWDPIO2
-#define E1000_CTRL_MDIO E1000_CTRL_SWDPIN2
-#define E1000_CTRL_MDC_DIR E1000_CTRL_SWDPIO3
-#define E1000_CTRL_MDC E1000_CTRL_SWDPIN3
-#define E1000_CTRL_PHY_RESET_DIR4 E1000_CTRL_EXT_SDP4_DIR
-#define E1000_CTRL_PHY_RESET4 E1000_CTRL_EXT_SDP4_DATA
-
-#define E1000_CONNSW_ENRGSRC 0x4
-#define E1000_PCS_CFG_PCS_EN 8
-#define E1000_PCS_LCTL_FLV_LINK_UP 1
-#define E1000_PCS_LCTL_FSV_10 0
-#define E1000_PCS_LCTL_FSV_100 2
-#define E1000_PCS_LCTL_FSV_1000 4
-#define E1000_PCS_LCTL_FDV_FULL 8
-#define E1000_PCS_LCTL_FSD 0x10
-#define E1000_PCS_LCTL_FORCE_LINK 0x20
-#define E1000_PCS_LCTL_LOW_LINK_LATCH 0x40
-#define E1000_PCS_LCTL_FORCE_FCTRL 0x80
-#define E1000_PCS_LCTL_AN_ENABLE 0x10000
-#define E1000_PCS_LCTL_AN_RESTART 0x20000
-#define E1000_PCS_LCTL_AN_TIMEOUT 0x40000
-#define E1000_PCS_LCTL_AN_SGMII_BYPASS 0x80000
-#define E1000_PCS_LCTL_AN_SGMII_TRIGGER 0x100000
-#define E1000_PCS_LCTL_FAST_LINK_TIMER 0x1000000
-#define E1000_PCS_LCTL_LINK_OK_FIX 0x2000000
-#define E1000_PCS_LCTL_CRS_ON_NI 0x4000000
-#define E1000_ENABLE_SERDES_LOOPBACK 0x0410
-
-#define E1000_PCS_LSTS_LINK_OK 1
-#define E1000_PCS_LSTS_SPEED_10 0
-#define E1000_PCS_LSTS_SPEED_100 2
-#define E1000_PCS_LSTS_SPEED_1000 4
-#define E1000_PCS_LSTS_DUPLEX_FULL 8
-#define E1000_PCS_LSTS_SYNK_OK 0x10
-#define E1000_PCS_LSTS_AN_COMPLETE 0x10000
-#define E1000_PCS_LSTS_AN_PAGE_RX 0x20000
-#define E1000_PCS_LSTS_AN_TIMED_OUT 0x40000
-#define E1000_PCS_LSTS_AN_REMOTE_FAULT 0x80000
-#define E1000_PCS_LSTS_AN_ERROR_RWS 0x100000
+#define E1000_CTRL_PHY_RESET_DIR E1000_CTRL_SWDPIO0
+#define E1000_CTRL_PHY_RESET E1000_CTRL_SWDPIN0
+#define E1000_CTRL_MDIO_DIR E1000_CTRL_SWDPIO2
+#define E1000_CTRL_MDIO E1000_CTRL_SWDPIN2
+#define E1000_CTRL_MDC_DIR E1000_CTRL_SWDPIO3
+#define E1000_CTRL_MDC E1000_CTRL_SWDPIN3
+#define E1000_CTRL_PHY_RESET_DIR4 E1000_CTRL_EXT_SDP4_DIR
+#define E1000_CTRL_PHY_RESET4 E1000_CTRL_EXT_SDP4_DATA
+
+#define E1000_CONNSW_ENRGSRC 0x4
+#define E1000_PCS_CFG_PCS_EN 8
+#define E1000_PCS_LCTL_FLV_LINK_UP 1
+#define E1000_PCS_LCTL_FSV_10 0
+#define E1000_PCS_LCTL_FSV_100 2
+#define E1000_PCS_LCTL_FSV_1000 4
+#define E1000_PCS_LCTL_FDV_FULL 8
+#define E1000_PCS_LCTL_FSD 0x10
+#define E1000_PCS_LCTL_FORCE_LINK 0x20
+#define E1000_PCS_LCTL_LOW_LINK_LATCH 0x40
+#define E1000_PCS_LCTL_FORCE_FCTRL 0x80
+#define E1000_PCS_LCTL_AN_ENABLE 0x10000
+#define E1000_PCS_LCTL_AN_RESTART 0x20000
+#define E1000_PCS_LCTL_AN_TIMEOUT 0x40000
+#define E1000_PCS_LCTL_AN_SGMII_BYPASS 0x80000
+#define E1000_PCS_LCTL_AN_SGMII_TRIGGER 0x100000
+#define E1000_PCS_LCTL_FAST_LINK_TIMER 0x1000000
+#define E1000_PCS_LCTL_LINK_OK_FIX 0x2000000
+#define E1000_PCS_LCTL_CRS_ON_NI 0x4000000
+#define E1000_ENABLE_SERDES_LOOPBACK 0x0410
+
+#define E1000_PCS_LSTS_LINK_OK 1
+#define E1000_PCS_LSTS_SPEED_10 0
+#define E1000_PCS_LSTS_SPEED_100 2
+#define E1000_PCS_LSTS_SPEED_1000 4
+#define E1000_PCS_LSTS_DUPLEX_FULL 8
+#define E1000_PCS_LSTS_SYNK_OK 0x10
+#define E1000_PCS_LSTS_AN_COMPLETE 0x10000
+#define E1000_PCS_LSTS_AN_PAGE_RX 0x20000
+#define E1000_PCS_LSTS_AN_TIMED_OUT 0x40000
+#define E1000_PCS_LSTS_AN_REMOTE_FAULT 0x80000
+#define E1000_PCS_LSTS_AN_ERROR_RWS 0x100000
/* Device Status */
-#define E1000_STATUS_FD 0x00000001 /* Full duplex.0=half,1=full */
-#define E1000_STATUS_LU 0x00000002 /* Link up.0=no,1=link */
-#define E1000_STATUS_FUNC_MASK 0x0000000C /* PCI Function Mask */
-#define E1000_STATUS_FUNC_SHIFT 2
-#define E1000_STATUS_FUNC_0 0x00000000 /* Function 0 */
-#define E1000_STATUS_FUNC_1 0x00000004 /* Function 1 */
-#define E1000_STATUS_TXOFF 0x00000010 /* transmission paused */
-#define E1000_STATUS_TBIMODE 0x00000020 /* TBI mode */
-#define E1000_STATUS_SPEED_MASK 0x000000C0
-#define E1000_STATUS_SPEED_10 0x00000000 /* Speed 10Mb/s */
-#define E1000_STATUS_SPEED_100 0x00000040 /* Speed 100Mb/s */
-#define E1000_STATUS_SPEED_1000 0x00000080 /* Speed 1000Mb/s */
-#define E1000_STATUS_LAN_INIT_DONE 0x00000200 /* Lan Init Completion by NVM */
-#define E1000_STATUS_ASDV 0x00000300 /* Auto speed detect value */
-#define E1000_STATUS_PHYRA 0x00000400 /* PHY Reset Asserted */
-#define E1000_STATUS_DOCK_CI 0x00000800 /* Change in Dock/Undock state.
- * Clear on write '0'. */
-#define E1000_STATUS_GIO_MASTER_ENABLE 0x00080000 /* Master request status */
-#define E1000_STATUS_MTXCKOK 0x00000400 /* MTX clock running OK */
-#define E1000_STATUS_PCI66 0x00000800 /* In 66Mhz slot */
-#define E1000_STATUS_BUS64 0x00001000 /* In 64 bit slot */
-#define E1000_STATUS_PCIX_MODE 0x00002000 /* PCI-X mode */
-#define E1000_STATUS_PCIX_SPEED 0x0000C000 /* PCI-X bus speed */
-#define E1000_STATUS_BMC_SKU_0 0x00100000 /* BMC USB redirect disabled */
-#define E1000_STATUS_BMC_SKU_1 0x00200000 /* BMC SRAM disabled */
-#define E1000_STATUS_BMC_SKU_2 0x00400000 /* BMC SDRAM disabled */
-#define E1000_STATUS_BMC_CRYPTO 0x00800000 /* BMC crypto disabled */
-#define E1000_STATUS_BMC_LITE 0x01000000 /* BMC external code execution
- * disabled */
-#define E1000_STATUS_RGMII_ENABLE 0x02000000 /* RGMII disabled */
-#define E1000_STATUS_FUSE_8 0x04000000
-#define E1000_STATUS_FUSE_9 0x08000000
-#define E1000_STATUS_SERDES0_DIS 0x10000000 /* SERDES disabled on port 0 */
-#define E1000_STATUS_SERDES1_DIS 0x20000000 /* SERDES disabled on port 1 */
+#define E1000_STATUS_FD 0x00000001 /* Duplex 0=half 1=full */
+#define E1000_STATUS_LU 0x00000002 /* Link up.0=no,1=link */
+#define E1000_STATUS_FUNC_MASK 0x0000000C /* PCI Function Mask */
+#define E1000_STATUS_FUNC_SHIFT 2
+#define E1000_STATUS_FUNC_0 0x00000000 /* Function 0 */
+#define E1000_STATUS_FUNC_1 0x00000004 /* Function 1 */
+#define E1000_STATUS_TXOFF 0x00000010 /* transmission paused */
+#define E1000_STATUS_TBIMODE 0x00000020 /* TBI mode */
+#define E1000_STATUS_SPEED_MASK 0x000000C0
+#define E1000_STATUS_SPEED_10 0x00000000 /* Speed 10Mb/s */
+#define E1000_STATUS_SPEED_100 0x00000040 /* Speed 100Mb/s */
+#define E1000_STATUS_SPEED_1000 0x00000080 /* Speed 1000Mb/s */
+#define E1000_STATUS_LAN_INIT_DONE 0x00000200 /* Lan Init Compltn by NVM */
+#define E1000_STATUS_ASDV 0x00000300 /* Auto speed detect value */
+#define E1000_STATUS_PHYRA 0x00000400 /* PHY Reset Asserted */
+/* Change in Dock/Undock state clear on write '0'. */
+#define E1000_STATUS_DOCK_CI 0x00000800
+#define E1000_STATUS_GIO_MASTER_ENABLE 0x00080000 /* Master request status */
+#define E1000_STATUS_MTXCKOK 0x00000400 /* MTX clock running OK */
+#define E1000_STATUS_PCI66 0x00000800 /* In 66Mhz slot */
+#define E1000_STATUS_BUS64 0x00001000 /* In 64 bit slot */
+#define E1000_STATUS_PCIX_MODE 0x00002000 /* PCI-X mode */
+#define E1000_STATUS_PCIX_SPEED 0x0000C000 /* PCI-X bus speed */
+#define E1000_STATUS_BMC_SKU_0 0x00100000 /* BMC USB redirect disbld */
+#define E1000_STATUS_BMC_SKU_1 0x00200000 /* BMC SRAM disabled */
+#define E1000_STATUS_BMC_SKU_2 0x00400000 /* BMC SDRAM disabled */
+#define E1000_STATUS_BMC_CRYPTO 0x00800000 /* BMC crypto disabled */
+/* BMC external code execution disabled */
+#define E1000_STATUS_BMC_LITE 0x01000000
+#define E1000_STATUS_RGMII_ENABLE 0x02000000 /* RGMII disabled */
+#define E1000_STATUS_FUSE_8 0x04000000
+#define E1000_STATUS_FUSE_9 0x08000000
+#define E1000_STATUS_SERDES0_DIS 0x10000000 /* SERDES disbld on port 0 */
+#define E1000_STATUS_SERDES1_DIS 0x20000000 /* SERDES disbld on port 1 */
/* Constants used to interpret the masked PCI-X bus speed. */
-#define E1000_STATUS_PCIX_SPEED_66 0x00000000 /* PCI-X bus speed 50-66 MHz */
-#define E1000_STATUS_PCIX_SPEED_100 0x00004000 /* PCI-X bus speed 66-100 MHz */
-#define E1000_STATUS_PCIX_SPEED_133 0x00008000 /*PCI-X bus speed 100-133 MHz*/
+#define E1000_STATUS_PCIX_SPEED_66 0x00000000 /* PCI-X bus spd 50-66MHz */
+#define E1000_STATUS_PCIX_SPEED_100 0x00004000 /* PCI-X bus spd 66-100MHz */
+#define E1000_STATUS_PCIX_SPEED_133 0x00008000 /* PCI-X bus spd 100-133MHz*/
-#define SPEED_10 10
-#define SPEED_100 100
-#define SPEED_1000 1000
-#define HALF_DUPLEX 1
-#define FULL_DUPLEX 2
+#define SPEED_10 10
+#define SPEED_100 100
+#define SPEED_1000 1000
+#define HALF_DUPLEX 1
+#define FULL_DUPLEX 2
-#define PHY_FORCE_TIME 20
+#define PHY_FORCE_TIME 20
-#define ADVERTISE_10_HALF 0x0001
-#define ADVERTISE_10_FULL 0x0002
-#define ADVERTISE_100_HALF 0x0004
-#define ADVERTISE_100_FULL 0x0008
-#define ADVERTISE_1000_HALF 0x0010 /* Not used, just FYI */
-#define ADVERTISE_1000_FULL 0x0020
+#define ADVERTISE_10_HALF 0x0001
+#define ADVERTISE_10_FULL 0x0002
+#define ADVERTISE_100_HALF 0x0004
+#define ADVERTISE_100_FULL 0x0008
+#define ADVERTISE_1000_HALF 0x0010 /* Not used, just FYI */
+#define ADVERTISE_1000_FULL 0x0020
/* 1000/H is not supported, nor spec-compliant. */
-#define E1000_ALL_SPEED_DUPLEX (ADVERTISE_10_HALF | ADVERTISE_10_FULL | \
- ADVERTISE_100_HALF | ADVERTISE_100_FULL | \
- ADVERTISE_1000_FULL)
-#define E1000_ALL_NOT_GIG (ADVERTISE_10_HALF | ADVERTISE_10_FULL | \
- ADVERTISE_100_HALF | ADVERTISE_100_FULL)
-#define E1000_ALL_100_SPEED (ADVERTISE_100_HALF | ADVERTISE_100_FULL)
-#define E1000_ALL_10_SPEED (ADVERTISE_10_HALF | ADVERTISE_10_FULL)
-#define E1000_ALL_FULL_DUPLEX (ADVERTISE_10_FULL | ADVERTISE_100_FULL | \
- ADVERTISE_1000_FULL)
-#define E1000_ALL_HALF_DUPLEX (ADVERTISE_10_HALF | ADVERTISE_100_HALF)
-
-#define AUTONEG_ADVERTISE_SPEED_DEFAULT E1000_ALL_SPEED_DUPLEX
+#define E1000_ALL_SPEED_DUPLEX ( \
+ ADVERTISE_10_HALF | ADVERTISE_10_FULL | ADVERTISE_100_HALF | \
+ ADVERTISE_100_FULL | ADVERTISE_1000_FULL)
+#define E1000_ALL_NOT_GIG ( \
+ ADVERTISE_10_HALF | ADVERTISE_10_FULL | ADVERTISE_100_HALF | \
+ ADVERTISE_100_FULL)
+#define E1000_ALL_100_SPEED (ADVERTISE_100_HALF | ADVERTISE_100_FULL)
+#define E1000_ALL_10_SPEED (ADVERTISE_10_HALF | ADVERTISE_10_FULL)
+#define E1000_ALL_FULL_DUPLEX ( \
+ ADVERTISE_10_FULL | ADVERTISE_100_FULL | ADVERTISE_1000_FULL)
+#define E1000_ALL_HALF_DUPLEX (ADVERTISE_10_HALF | ADVERTISE_100_HALF)
+
+#define AUTONEG_ADVERTISE_SPEED_DEFAULT E1000_ALL_SPEED_DUPLEX
/* LED Control */
-#define E1000_PHY_LED0_MODE_MASK 0x00000007
-#define E1000_PHY_LED0_IVRT 0x00000008
-#define E1000_PHY_LED0_BLINK 0x00000010
-#define E1000_PHY_LED0_MASK 0x0000001F
-
-#define E1000_LEDCTL_LED0_MODE_MASK 0x0000000F
-#define E1000_LEDCTL_LED0_MODE_SHIFT 0
-#define E1000_LEDCTL_LED0_BLINK_RATE 0x00000020
-#define E1000_LEDCTL_LED0_IVRT 0x00000040
-#define E1000_LEDCTL_LED0_BLINK 0x00000080
-#define E1000_LEDCTL_LED1_MODE_MASK 0x00000F00
-#define E1000_LEDCTL_LED1_MODE_SHIFT 8
-#define E1000_LEDCTL_LED1_BLINK_RATE 0x00002000
-#define E1000_LEDCTL_LED1_IVRT 0x00004000
-#define E1000_LEDCTL_LED1_BLINK 0x00008000
-#define E1000_LEDCTL_LED2_MODE_MASK 0x000F0000
-#define E1000_LEDCTL_LED2_MODE_SHIFT 16
-#define E1000_LEDCTL_LED2_BLINK_RATE 0x00200000
-#define E1000_LEDCTL_LED2_IVRT 0x00400000
-#define E1000_LEDCTL_LED2_BLINK 0x00800000
-#define E1000_LEDCTL_LED3_MODE_MASK 0x0F000000
-#define E1000_LEDCTL_LED3_MODE_SHIFT 24
-#define E1000_LEDCTL_LED3_BLINK_RATE 0x20000000
-#define E1000_LEDCTL_LED3_IVRT 0x40000000
-#define E1000_LEDCTL_LED3_BLINK 0x80000000
-
-#define E1000_LEDCTL_MODE_LINK_10_1000 0x0
-#define E1000_LEDCTL_MODE_LINK_100_1000 0x1
-#define E1000_LEDCTL_MODE_LINK_UP 0x2
-#define E1000_LEDCTL_MODE_ACTIVITY 0x3
-#define E1000_LEDCTL_MODE_LINK_ACTIVITY 0x4
-#define E1000_LEDCTL_MODE_LINK_10 0x5
-#define E1000_LEDCTL_MODE_LINK_100 0x6
-#define E1000_LEDCTL_MODE_LINK_1000 0x7
-#define E1000_LEDCTL_MODE_PCIX_MODE 0x8
-#define E1000_LEDCTL_MODE_FULL_DUPLEX 0x9
-#define E1000_LEDCTL_MODE_COLLISION 0xA
-#define E1000_LEDCTL_MODE_BUS_SPEED 0xB
-#define E1000_LEDCTL_MODE_BUS_SIZE 0xC
-#define E1000_LEDCTL_MODE_PAUSED 0xD
-#define E1000_LEDCTL_MODE_LED_ON 0xE
-#define E1000_LEDCTL_MODE_LED_OFF 0xF
+#define E1000_PHY_LED0_MODE_MASK 0x00000007
+#define E1000_PHY_LED0_IVRT 0x00000008
+#define E1000_PHY_LED0_BLINK 0x00000010
+#define E1000_PHY_LED0_MASK 0x0000001F
+
+#define E1000_LEDCTL_LED0_MODE_MASK 0x0000000F
+#define E1000_LEDCTL_LED0_MODE_SHIFT 0
+#define E1000_LEDCTL_LED0_BLINK_RATE 0x00000020
+#define E1000_LEDCTL_LED0_IVRT 0x00000040
+#define E1000_LEDCTL_LED0_BLINK 0x00000080
+#define E1000_LEDCTL_LED1_MODE_MASK 0x00000F00
+#define E1000_LEDCTL_LED1_MODE_SHIFT 8
+#define E1000_LEDCTL_LED1_BLINK_RATE 0x00002000
+#define E1000_LEDCTL_LED1_IVRT 0x00004000
+#define E1000_LEDCTL_LED1_BLINK 0x00008000
+#define E1000_LEDCTL_LED2_MODE_MASK 0x000F0000
+#define E1000_LEDCTL_LED2_MODE_SHIFT 16
+#define E1000_LEDCTL_LED2_BLINK_RATE 0x00200000
+#define E1000_LEDCTL_LED2_IVRT 0x00400000
+#define E1000_LEDCTL_LED2_BLINK 0x00800000
+#define E1000_LEDCTL_LED3_MODE_MASK 0x0F000000
+#define E1000_LEDCTL_LED3_MODE_SHIFT 24
+#define E1000_LEDCTL_LED3_BLINK_RATE 0x20000000
+#define E1000_LEDCTL_LED3_IVRT 0x40000000
+#define E1000_LEDCTL_LED3_BLINK 0x80000000
+
+#define E1000_LEDCTL_MODE_LINK_10_1000 0x0
+#define E1000_LEDCTL_MODE_LINK_100_1000 0x1
+#define E1000_LEDCTL_MODE_LINK_UP 0x2
+#define E1000_LEDCTL_MODE_ACTIVITY 0x3
+#define E1000_LEDCTL_MODE_LINK_ACTIVITY 0x4
+#define E1000_LEDCTL_MODE_LINK_10 0x5
+#define E1000_LEDCTL_MODE_LINK_100 0x6
+#define E1000_LEDCTL_MODE_LINK_1000 0x7
+#define E1000_LEDCTL_MODE_PCIX_MODE 0x8
+#define E1000_LEDCTL_MODE_FULL_DUPLEX 0x9
+#define E1000_LEDCTL_MODE_COLLISION 0xA
+#define E1000_LEDCTL_MODE_BUS_SPEED 0xB
+#define E1000_LEDCTL_MODE_BUS_SIZE 0xC
+#define E1000_LEDCTL_MODE_PAUSED 0xD
+#define E1000_LEDCTL_MODE_LED_ON 0xE
+#define E1000_LEDCTL_MODE_LED_OFF 0xF
/* Transmit Descriptor bit definitions */
-#define E1000_TXD_DTYP_D 0x00100000 /* Data Descriptor */
-#define E1000_TXD_DTYP_C 0x00000000 /* Context Descriptor */
-#define E1000_TXD_POPTS_SHIFT 8 /* POPTS shift */
-#define E1000_TXD_POPTS_IXSM 0x01 /* Insert IP checksum */
-#define E1000_TXD_POPTS_TXSM 0x02 /* Insert TCP/UDP checksum */
-#define E1000_TXD_CMD_EOP 0x01000000 /* End of Packet */
-#define E1000_TXD_CMD_IFCS 0x02000000 /* Insert FCS (Ethernet CRC) */
-#define E1000_TXD_CMD_IC 0x04000000 /* Insert Checksum */
-#define E1000_TXD_CMD_RS 0x08000000 /* Report Status */
-#define E1000_TXD_CMD_RPS 0x10000000 /* Report Packet Sent */
-#define E1000_TXD_CMD_DEXT 0x20000000 /* Descriptor extension (0 = legacy) */
-#define E1000_TXD_CMD_VLE 0x40000000 /* Add VLAN tag */
-#define E1000_TXD_CMD_IDE 0x80000000 /* Enable Tidv register */
-#define E1000_TXD_STAT_DD 0x00000001 /* Descriptor Done */
-#define E1000_TXD_STAT_EC 0x00000002 /* Excess Collisions */
-#define E1000_TXD_STAT_LC 0x00000004 /* Late Collisions */
-#define E1000_TXD_STAT_TU 0x00000008 /* Transmit underrun */
-#define E1000_TXD_CMD_TCP 0x01000000 /* TCP packet */
-#define E1000_TXD_CMD_IP 0x02000000 /* IP packet */
-#define E1000_TXD_CMD_TSE 0x04000000 /* TCP Seg enable */
-#define E1000_TXD_STAT_TC 0x00000004 /* Tx Underrun */
+#define E1000_TXD_DTYP_D 0x00100000 /* Data Descriptor */
+#define E1000_TXD_DTYP_C 0x00000000 /* Context Descriptor */
+#define E1000_TXD_POPTS_SHIFT 8 /* POPTS shift */
+#define E1000_TXD_POPTS_IXSM 0x01 /* Insert IP checksum */
+#define E1000_TXD_POPTS_TXSM 0x02 /* Insert TCP/UDP checksum */
+#define E1000_TXD_CMD_EOP 0x01000000 /* End of Packet */
+#define E1000_TXD_CMD_IFCS 0x02000000 /* Insert FCS (Ethernet CRC) */
+#define E1000_TXD_CMD_IC 0x04000000 /* Insert Checksum */
+#define E1000_TXD_CMD_RS 0x08000000 /* Report Status */
+#define E1000_TXD_CMD_RPS 0x10000000 /* Report Packet Sent */
+#define E1000_TXD_CMD_DEXT 0x20000000 /* Desc extension (0 = legacy) */
+#define E1000_TXD_CMD_VLE 0x40000000 /* Add VLAN tag */
+#define E1000_TXD_CMD_IDE 0x80000000 /* Enable Tidv register */
+#define E1000_TXD_STAT_DD 0x00000001 /* Descriptor Done */
+#define E1000_TXD_STAT_EC 0x00000002 /* Excess Collisions */
+#define E1000_TXD_STAT_LC 0x00000004 /* Late Collisions */
+#define E1000_TXD_STAT_TU 0x00000008 /* Transmit underrun */
+#define E1000_TXD_CMD_TCP 0x01000000 /* TCP packet */
+#define E1000_TXD_CMD_IP 0x02000000 /* IP packet */
+#define E1000_TXD_CMD_TSE 0x04000000 /* TCP Seg enable */
+#define E1000_TXD_STAT_TC 0x00000004 /* Tx Underrun */
/* Extended desc bits for Linksec and timesync */
-#define E1000_TXD_CMD_LINKSEC 0x10000000 /* Apply LinkSec on packet */
-#define E1000_TXD_EXTCMD_TSTAMP 0x00000010 /* IEEE1588 Timestamp packet */
+#define E1000_TXD_CMD_LINKSEC 0x10000000 /* Apply LinkSec on packet */
+#define E1000_TXD_EXTCMD_TSTAMP 0x00000010 /* IEEE1588 Timestamp packet */
/* Transmit Control */
-#define E1000_TCTL_RST 0x00000001 /* software reset */
-#define E1000_TCTL_EN 0x00000002 /* enable Tx */
-#define E1000_TCTL_BCE 0x00000004 /* busy check enable */
-#define E1000_TCTL_PSP 0x00000008 /* pad short packets */
-#define E1000_TCTL_CT 0x00000ff0 /* collision threshold */
-#define E1000_TCTL_COLD 0x003ff000 /* collision distance */
-#define E1000_TCTL_SWXOFF 0x00400000 /* SW Xoff transmission */
-#define E1000_TCTL_PBE 0x00800000 /* Packet Burst Enable */
-#define E1000_TCTL_RTLC 0x01000000 /* Re-transmit on late collision */
-#define E1000_TCTL_NRTU 0x02000000 /* No Re-transmit on underrun */
-#define E1000_TCTL_MULR 0x10000000 /* Multiple request support */
+#define E1000_TCTL_RST 0x00000001 /* software reset */
+#define E1000_TCTL_EN 0x00000002 /* enable Tx */
+#define E1000_TCTL_BCE 0x00000004 /* busy check enable */
+#define E1000_TCTL_PSP 0x00000008 /* pad short packets */
+#define E1000_TCTL_CT 0x00000ff0 /* collision threshold */
+#define E1000_TCTL_COLD 0x003ff000 /* collision distance */
+#define E1000_TCTL_SWXOFF 0x00400000 /* SW Xoff transmission */
+#define E1000_TCTL_PBE 0x00800000 /* Packet Burst Enable */
+#define E1000_TCTL_RTLC 0x01000000 /* Re-transmit on late collision */
+#define E1000_TCTL_NRTU 0x02000000 /* No Re-transmit on underrun */
+#define E1000_TCTL_MULR 0x10000000 /* Multiple request support */
/* Transmit Arbitration Count */
-#define E1000_TARC0_ENABLE 0x00000400 /* Enable Tx Queue 0 */
+#define E1000_TARC0_ENABLE 0x00000400 /* Enable Tx Queue 0 */
/* SerDes Control */
-#define E1000_SCTL_DISABLE_SERDES_LOOPBACK 0x0400
+#define E1000_SCTL_DISABLE_SERDES_LOOPBACK 0x0400
/* Receive Checksum Control */
-#define E1000_RXCSUM_PCSS_MASK 0x000000FF /* Packet Checksum Start */
-#define E1000_RXCSUM_IPOFL 0x00000100 /* IPv4 checksum offload */
-#define E1000_RXCSUM_TUOFL 0x00000200 /* TCP / UDP checksum offload */
-#define E1000_RXCSUM_IPV6OFL 0x00000400 /* IPv6 checksum offload */
-#define E1000_RXCSUM_CRCOFL 0x00000800 /* CRC32 offload enable */
-#define E1000_RXCSUM_IPPCSE 0x00001000 /* IP payload checksum enable */
-#define E1000_RXCSUM_PCSD 0x00002000 /* packet checksum disabled */
+#define E1000_RXCSUM_PCSS_MASK 0x000000FF /* Packet Checksum Start */
+#define E1000_RXCSUM_IPOFL 0x00000100 /* IPv4 checksum offload */
+#define E1000_RXCSUM_TUOFL 0x00000200 /* TCP / UDP checksum offload */
+#define E1000_RXCSUM_IPV6OFL 0x00000400 /* IPv6 checksum offload */
+#define E1000_RXCSUM_CRCOFL 0x00000800 /* CRC32 offload enable */
+#define E1000_RXCSUM_IPPCSE 0x00001000 /* IP payload checksum enable */
+#define E1000_RXCSUM_PCSD 0x00002000 /* packet checksum disabled */
/* Header split receive */
-#define E1000_RFCTL_ISCSI_DIS 0x00000001
-#define E1000_RFCTL_ISCSI_DWC_MASK 0x0000003E
-#define E1000_RFCTL_ISCSI_DWC_SHIFT 1
-#define E1000_RFCTL_NFSW_DIS 0x00000040
-#define E1000_RFCTL_NFSR_DIS 0x00000080
-#define E1000_RFCTL_NFS_VER_MASK 0x00000300
-#define E1000_RFCTL_NFS_VER_SHIFT 8
-#define E1000_RFCTL_IPV6_DIS 0x00000400
-#define E1000_RFCTL_IPV6_XSUM_DIS 0x00000800
-#define E1000_RFCTL_ACK_DIS 0x00001000
-#define E1000_RFCTL_ACKD_DIS 0x00002000
-#define E1000_RFCTL_IPFRSP_DIS 0x00004000
-#define E1000_RFCTL_EXTEN 0x00008000
-#define E1000_RFCTL_IPV6_EX_DIS 0x00010000
-#define E1000_RFCTL_NEW_IPV6_EXT_DIS 0x00020000
-#define E1000_RFCTL_LEF 0x00040000
+#define E1000_RFCTL_ISCSI_DIS 0x00000001
+#define E1000_RFCTL_ISCSI_DWC_MASK 0x0000003E
+#define E1000_RFCTL_ISCSI_DWC_SHIFT 1
+#define E1000_RFCTL_NFSW_DIS 0x00000040
+#define E1000_RFCTL_NFSR_DIS 0x00000080
+#define E1000_RFCTL_NFS_VER_MASK 0x00000300
+#define E1000_RFCTL_NFS_VER_SHIFT 8
+#define E1000_RFCTL_IPV6_DIS 0x00000400
+#define E1000_RFCTL_IPV6_XSUM_DIS 0x00000800
+#define E1000_RFCTL_ACK_DIS 0x00001000
+#define E1000_RFCTL_ACKD_DIS 0x00002000
+#define E1000_RFCTL_IPFRSP_DIS 0x00004000
+#define E1000_RFCTL_EXTEN 0x00008000
+#define E1000_RFCTL_IPV6_EX_DIS 0x00010000
+#define E1000_RFCTL_NEW_IPV6_EXT_DIS 0x00020000
+#define E1000_RFCTL_LEF 0x00040000
/* Collision related configuration parameters */
-#define E1000_COLLISION_THRESHOLD 15
-#define E1000_CT_SHIFT 4
-#define E1000_COLLISION_DISTANCE 63
-#define E1000_COLD_SHIFT 12
+#define E1000_COLLISION_THRESHOLD 15
+#define E1000_CT_SHIFT 4
+#define E1000_COLLISION_DISTANCE 63
+#define E1000_COLD_SHIFT 12
/* Default values for the transmit IPG register */
-#define DEFAULT_82542_TIPG_IPGT 10
-#define DEFAULT_82543_TIPG_IPGT_FIBER 9
-#define DEFAULT_82543_TIPG_IPGT_COPPER 8
+#define DEFAULT_82542_TIPG_IPGT 10
+#define DEFAULT_82543_TIPG_IPGT_FIBER 9
+#define DEFAULT_82543_TIPG_IPGT_COPPER 8
-#define E1000_TIPG_IPGT_MASK 0x000003FF
-#define E1000_TIPG_IPGR1_MASK 0x000FFC00
-#define E1000_TIPG_IPGR2_MASK 0x3FF00000
+#define E1000_TIPG_IPGT_MASK 0x000003FF
+#define E1000_TIPG_IPGR1_MASK 0x000FFC00
+#define E1000_TIPG_IPGR2_MASK 0x3FF00000
-#define DEFAULT_82542_TIPG_IPGR1 2
-#define DEFAULT_82543_TIPG_IPGR1 8
-#define E1000_TIPG_IPGR1_SHIFT 10
+#define DEFAULT_82542_TIPG_IPGR1 2
+#define DEFAULT_82543_TIPG_IPGR1 8
+#define E1000_TIPG_IPGR1_SHIFT 10
-#define DEFAULT_82542_TIPG_IPGR2 10
-#define DEFAULT_82543_TIPG_IPGR2 6
-#define DEFAULT_80003ES2LAN_TIPG_IPGR2 7
-#define E1000_TIPG_IPGR2_SHIFT 20
+#define DEFAULT_82542_TIPG_IPGR2 10
+#define DEFAULT_82543_TIPG_IPGR2 6
+#define DEFAULT_80003ES2LAN_TIPG_IPGR2 7
+#define E1000_TIPG_IPGR2_SHIFT 20
/* Ethertype field values */
-#define ETHERNET_IEEE_VLAN_TYPE 0x8100 /* 802.3ac packet */
+#define ETHERNET_IEEE_VLAN_TYPE 0x8100 /* 802.3ac packet */
-#define ETHERNET_FCS_SIZE 4
-#define MAX_JUMBO_FRAME_SIZE 0x3F00
+#define ETHERNET_FCS_SIZE 4
+#define MAX_JUMBO_FRAME_SIZE 0x3F00
/* Extended Configuration Control and Size */
-#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP 0x00000020
-#define E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE 0x00000001
-#define E1000_EXTCNF_CTRL_OEM_WRITE_ENABLE 0x00000008
-#define E1000_EXTCNF_CTRL_SWFLAG 0x00000020
-#define E1000_EXTCNF_CTRL_GATE_PHY_CFG 0x00000080
-#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_MASK 0x00FF0000
-#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_SHIFT 16
-#define E1000_EXTCNF_CTRL_EXT_CNF_POINTER_MASK 0x0FFF0000
-#define E1000_EXTCNF_CTRL_EXT_CNF_POINTER_SHIFT 16
-
-#define E1000_PHY_CTRL_SPD_EN 0x00000001
-#define E1000_PHY_CTRL_D0A_LPLU 0x00000002
-#define E1000_PHY_CTRL_NOND0A_LPLU 0x00000004
-#define E1000_PHY_CTRL_NOND0A_GBE_DISABLE 0x00000008
-#define E1000_PHY_CTRL_GBE_DISABLE 0x00000040
-
-#define E1000_KABGTXD_BGSQLBIAS 0x00050000
+#define E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP 0x00000020
+#define E1000_EXTCNF_CTRL_LCD_WRITE_ENABLE 0x00000001
+#define E1000_EXTCNF_CTRL_OEM_WRITE_ENABLE 0x00000008
+#define E1000_EXTCNF_CTRL_SWFLAG 0x00000020
+#define E1000_EXTCNF_CTRL_GATE_PHY_CFG 0x00000080
+#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_MASK 0x00FF0000
+#define E1000_EXTCNF_SIZE_EXT_PCIE_LENGTH_SHIFT 16
+#define E1000_EXTCNF_CTRL_EXT_CNF_POINTER_MASK 0x0FFF0000
+#define E1000_EXTCNF_CTRL_EXT_CNF_POINTER_SHIFT 16
+
+#define E1000_PHY_CTRL_SPD_EN 0x00000001
+#define E1000_PHY_CTRL_D0A_LPLU 0x00000002
+#define E1000_PHY_CTRL_NOND0A_LPLU 0x00000004
+#define E1000_PHY_CTRL_NOND0A_GBE_DISABLE 0x00000008
+#define E1000_PHY_CTRL_GBE_DISABLE 0x00000040
+
+#define E1000_KABGTXD_BGSQLBIAS 0x00050000
/* PBA constants */
-#define E1000_PBA_6K 0x0006 /* 6KB */
-#define E1000_PBA_8K 0x0008 /* 8KB */
-#define E1000_PBA_10K 0x000A /* 10KB */
-#define E1000_PBA_12K 0x000C /* 12KB */
-#define E1000_PBA_14K 0x000E /* 14KB */
-#define E1000_PBA_16K 0x0010 /* 16KB */
-#define E1000_PBA_18K 0x0012
-#define E1000_PBA_20K 0x0014
-#define E1000_PBA_22K 0x0016
-#define E1000_PBA_24K 0x0018
-#define E1000_PBA_26K 0x001A
-#define E1000_PBA_30K 0x001E
-#define E1000_PBA_32K 0x0020
-#define E1000_PBA_34K 0x0022
-#define E1000_PBA_35K 0x0023
-#define E1000_PBA_38K 0x0026
-#define E1000_PBA_40K 0x0028
-#define E1000_PBA_48K 0x0030 /* 48KB */
-#define E1000_PBA_64K 0x0040 /* 64KB */
-
-#define E1000_PBS_16K E1000_PBA_16K
-#define E1000_PBS_24K E1000_PBA_24K
-
-#define IFS_MAX 80
-#define IFS_MIN 40
-#define IFS_RATIO 4
-#define IFS_STEP 10
-#define MIN_NUM_XMITS 1000
+#define E1000_PBA_6K 0x0006 /* 6KB */
+#define E1000_PBA_8K 0x0008 /* 8KB */
+#define E1000_PBA_10K 0x000A /* 10KB */
+#define E1000_PBA_12K 0x000C /* 12KB */
+#define E1000_PBA_14K 0x000E /* 14KB */
+#define E1000_PBA_16K 0x0010 /* 16KB */
+#define E1000_PBA_18K 0x0012
+#define E1000_PBA_20K 0x0014
+#define E1000_PBA_22K 0x0016
+#define E1000_PBA_24K 0x0018
+#define E1000_PBA_26K 0x001A
+#define E1000_PBA_30K 0x001E
+#define E1000_PBA_32K 0x0020
+#define E1000_PBA_34K 0x0022
+#define E1000_PBA_35K 0x0023
+#define E1000_PBA_38K 0x0026
+#define E1000_PBA_40K 0x0028
+#define E1000_PBA_48K 0x0030 /* 48KB */
+#define E1000_PBA_64K 0x0040 /* 64KB */
+
+#define E1000_PBA_RXA_MASK 0xFFFF;
+
+#define E1000_PBS_16K E1000_PBA_16K
+#define E1000_PBS_24K E1000_PBA_24K
+
+#define IFS_MAX 80
+#define IFS_MIN 40
+#define IFS_RATIO 4
+#define IFS_STEP 10
+#define MIN_NUM_XMITS 1000
/* SW Semaphore Register */
-#define E1000_SWSM_SMBI 0x00000001 /* Driver Semaphore bit */
-#define E1000_SWSM_SWESMBI 0x00000002 /* FW Semaphore bit */
-#define E1000_SWSM_WMNG 0x00000004 /* Wake MNG Clock */
-#define E1000_SWSM_DRV_LOAD 0x00000008 /* Driver Loaded Bit */
+#define E1000_SWSM_SMBI 0x00000001 /* Driver Semaphore bit */
+#define E1000_SWSM_SWESMBI 0x00000002 /* FW Semaphore bit */
+#define E1000_SWSM_WMNG 0x00000004 /* Wake MNG Clock */
+#define E1000_SWSM_DRV_LOAD 0x00000008 /* Driver Loaded Bit */
-#define E1000_SWSM2_LOCK 0x00000002 /* Secondary driver semaphore bit */
+#define E1000_SWSM2_LOCK 0x00000002 /* Secondary driver semaphore bit */
/* Interrupt Cause Read */
-#define E1000_ICR_TXDW 0x00000001 /* Transmit desc written back */
-#define E1000_ICR_TXQE 0x00000002 /* Transmit Queue empty */
-#define E1000_ICR_LSC 0x00000004 /* Link Status Change */
-#define E1000_ICR_RXSEQ 0x00000008 /* Rx sequence error */
-#define E1000_ICR_RXDMT0 0x00000010 /* Rx desc min. threshold (0) */
-#define E1000_ICR_RXO 0x00000040 /* Rx overrun */
-#define E1000_ICR_RXT0 0x00000080 /* Rx timer intr (ring 0) */
-#define E1000_ICR_VMMB 0x00000100 /* VM MB event */
-#define E1000_ICR_MDAC 0x00000200 /* MDIO access complete */
-#define E1000_ICR_RXCFG 0x00000400 /* Rx /c/ ordered set */
-#define E1000_ICR_GPI_EN0 0x00000800 /* GP Int 0 */
-#define E1000_ICR_GPI_EN1 0x00001000 /* GP Int 1 */
-#define E1000_ICR_GPI_EN2 0x00002000 /* GP Int 2 */
-#define E1000_ICR_GPI_EN3 0x00004000 /* GP Int 3 */
-#define E1000_ICR_TXD_LOW 0x00008000
-#define E1000_ICR_SRPD 0x00010000
-#define E1000_ICR_ACK 0x00020000 /* Receive Ack frame */
-#define E1000_ICR_MNG 0x00040000 /* Manageability event */
-#define E1000_ICR_DOCK 0x00080000 /* Dock/Undock */
-#define E1000_ICR_DRSTA 0x40000000 /* Device Reset Asserted */
-#define E1000_ICR_INT_ASSERTED 0x80000000 /* If this bit asserted, the driver
- * should claim the interrupt */
-#define E1000_ICR_RXD_FIFO_PAR0 0x00100000 /* Q0 Rx desc FIFO parity error */
-#define E1000_ICR_TXD_FIFO_PAR0 0x00200000 /* Q0 Tx desc FIFO parity error */
-#define E1000_ICR_HOST_ARB_PAR 0x00400000 /* host arb read buffer parity err */
-#define E1000_ICR_PB_PAR 0x00800000 /* packet buffer parity error */
-#define E1000_ICR_RXD_FIFO_PAR1 0x01000000 /* Q1 Rx desc FIFO parity error */
-#define E1000_ICR_TXD_FIFO_PAR1 0x02000000 /* Q1 Tx desc FIFO parity error */
-#define E1000_ICR_ALL_PARITY 0x03F00000 /* all parity error bits */
-#define E1000_ICR_DSW 0x00000020 /* FW changed the status of DISSW
- * bit in the FWSM */
-#define E1000_ICR_PHYINT 0x00001000 /* LAN connected device generates
- * an interrupt */
-#define E1000_ICR_DOUTSYNC 0x10000000 /* NIC DMA out of sync */
-#define E1000_ICR_EPRST 0x00100000 /* ME hardware reset occurs */
-#define E1000_ICR_RXQ0 0x00100000 /* Rx Queue 0 Interrupt */
-#define E1000_ICR_RXQ1 0x00200000 /* Rx Queue 1 Interrupt */
-#define E1000_ICR_TXQ0 0x00400000 /* Tx Queue 0 Interrupt */
-#define E1000_ICR_TXQ1 0x00800000 /* Tx Queue 1 Interrupt */
-#define E1000_ICR_OTHER 0x01000000 /* Other Interrupts */
-#define E1000_ICR_FER 0x00400000 /* Fatal Error */
-
-#define E1000_ICR_THS 0x00800000 /* ICR.THS: Thermal Sensor Event*/
-#define E1000_ICR_MDDET 0x10000000 /* Malicious Driver Detect */
+#define E1000_ICR_TXDW 0x00000001 /* Transmit desc written back */
+#define E1000_ICR_TXQE 0x00000002 /* Transmit Queue empty */
+#define E1000_ICR_LSC 0x00000004 /* Link Status Change */
+#define E1000_ICR_RXSEQ 0x00000008 /* Rx sequence error */
+#define E1000_ICR_RXDMT0 0x00000010 /* Rx desc min. threshold (0) */
+#define E1000_ICR_RXO 0x00000040 /* Rx overrun */
+#define E1000_ICR_RXT0 0x00000080 /* Rx timer intr (ring 0) */
+#define E1000_ICR_VMMB 0x00000100 /* VM MB event */
+#define E1000_ICR_MDAC 0x00000200 /* MDIO access complete */
+#define E1000_ICR_RXCFG 0x00000400 /* Rx /c/ ordered set */
+#define E1000_ICR_GPI_EN0 0x00000800 /* GP Int 0 */
+#define E1000_ICR_GPI_EN1 0x00001000 /* GP Int 1 */
+#define E1000_ICR_GPI_EN2 0x00002000 /* GP Int 2 */
+#define E1000_ICR_GPI_EN3 0x00004000 /* GP Int 3 */
+#define E1000_ICR_TXD_LOW 0x00008000
+#define E1000_ICR_SRPD 0x00010000
+#define E1000_ICR_ACK 0x00020000 /* Receive Ack frame */
+#define E1000_ICR_MNG 0x00040000 /* Manageability event */
+#define E1000_ICR_DOCK 0x00080000 /* Dock/Undock */
+#define E1000_ICR_DRSTA 0x40000000 /* Device Reset Asserted */
+/* If this bit asserted, the driver should claim the interrupt */
+#define E1000_ICR_INT_ASSERTED 0x80000000
+#define E1000_ICR_RXD_FIFO_PAR0 0x00100000 /* Q0 Rx desc FIFO parity error */
+#define E1000_ICR_TXD_FIFO_PAR0 0x00200000 /* Q0 Tx desc FIFO parity error */
+#define E1000_ICR_HOST_ARB_PAR 0x00400000 /* host arb read buffer parity err */
+#define E1000_ICR_PB_PAR 0x00800000 /* packet buffer parity error */
+#define E1000_ICR_RXD_FIFO_PAR1 0x01000000 /* Q1 Rx desc FIFO parity error */
+#define E1000_ICR_TXD_FIFO_PAR1 0x02000000 /* Q1 Tx desc FIFO parity error */
+#define E1000_ICR_ALL_PARITY 0x03F00000 /* all parity error bits */
+/* FW changed the status of DISSW bit in the FWSM */
+#define E1000_ICR_DSW 0x00000020
+/* LAN connected device generates an interrupt */
+#define E1000_ICR_PHYINT 0x00001000
+#define E1000_ICR_DOUTSYNC 0x10000000 /* NIC DMA out of sync */
+#define E1000_ICR_EPRST 0x00100000 /* ME hardware reset occurs */
+#define E1000_ICR_RXQ0 0x00100000 /* Rx Queue 0 Interrupt */
+#define E1000_ICR_RXQ1 0x00200000 /* Rx Queue 1 Interrupt */
+#define E1000_ICR_TXQ0 0x00400000 /* Tx Queue 0 Interrupt */
+#define E1000_ICR_TXQ1 0x00800000 /* Tx Queue 1 Interrupt */
+#define E1000_ICR_OTHER 0x01000000 /* Other Interrupts */
+#define E1000_ICR_FER 0x00400000 /* Fatal Error */
+
+#define E1000_ICR_THS 0x00800000 /* ICR.THS: Thermal Sensor Event*/
+#define E1000_ICR_MDDET 0x10000000 /* Malicious Driver Detect */
+
+#define E1000_ITR_MASK 0x000FFFFF /* ITR value bitfield */
+#define E1000_ITR_MULT 256 /* ITR mulitplier in nsec */
+
/* PBA ECC Register */
-#define E1000_PBA_ECC_COUNTER_MASK 0xFFF00000 /* ECC counter mask */
-#define E1000_PBA_ECC_COUNTER_SHIFT 20 /* ECC counter shift value */
-#define E1000_PBA_ECC_CORR_EN 0x00000001 /* Enable ECC error correction */
-#define E1000_PBA_ECC_STAT_CLR 0x00000002 /* Clear ECC error counter */
-#define E1000_PBA_ECC_INT_EN 0x00000004 /* Enable ICR bit 5 on ECC error */
+#define E1000_PBA_ECC_COUNTER_MASK 0xFFF00000 /* ECC counter mask */
+#define E1000_PBA_ECC_COUNTER_SHIFT 20 /* ECC counter shift value */
+#define E1000_PBA_ECC_CORR_EN 0x00000001 /* Enable ECC error correction */
+#define E1000_PBA_ECC_STAT_CLR 0x00000002 /* Clear ECC error counter */
+#define E1000_PBA_ECC_INT_EN 0x00000004 /* Enable ICR bit 5 on ECC error */
/* Extended Interrupt Cause Read */
-#define E1000_EICR_RX_QUEUE0 0x00000001 /* Rx Queue 0 Interrupt */
-#define E1000_EICR_RX_QUEUE1 0x00000002 /* Rx Queue 1 Interrupt */
-#define E1000_EICR_RX_QUEUE2 0x00000004 /* Rx Queue 2 Interrupt */
-#define E1000_EICR_RX_QUEUE3 0x00000008 /* Rx Queue 3 Interrupt */
-#define E1000_EICR_TX_QUEUE0 0x00000100 /* Tx Queue 0 Interrupt */
-#define E1000_EICR_TX_QUEUE1 0x00000200 /* Tx Queue 1 Interrupt */
-#define E1000_EICR_TX_QUEUE2 0x00000400 /* Tx Queue 2 Interrupt */
-#define E1000_EICR_TX_QUEUE3 0x00000800 /* Tx Queue 3 Interrupt */
-#define E1000_EICR_TCP_TIMER 0x40000000 /* TCP Timer */
-#define E1000_EICR_OTHER 0x80000000 /* Interrupt Cause Active */
+#define E1000_EICR_RX_QUEUE0 0x00000001 /* Rx Queue 0 Interrupt */
+#define E1000_EICR_RX_QUEUE1 0x00000002 /* Rx Queue 1 Interrupt */
+#define E1000_EICR_RX_QUEUE2 0x00000004 /* Rx Queue 2 Interrupt */
+#define E1000_EICR_RX_QUEUE3 0x00000008 /* Rx Queue 3 Interrupt */
+#define E1000_EICR_TX_QUEUE0 0x00000100 /* Tx Queue 0 Interrupt */
+#define E1000_EICR_TX_QUEUE1 0x00000200 /* Tx Queue 1 Interrupt */
+#define E1000_EICR_TX_QUEUE2 0x00000400 /* Tx Queue 2 Interrupt */
+#define E1000_EICR_TX_QUEUE3 0x00000800 /* Tx Queue 3 Interrupt */
+#define E1000_EICR_TCP_TIMER 0x40000000 /* TCP Timer */
+#define E1000_EICR_OTHER 0x80000000 /* Interrupt Cause Active */
/* TCP Timer */
-#define E1000_TCPTIMER_KS 0x00000100 /* KickStart */
-#define E1000_TCPTIMER_COUNT_ENABLE 0x00000200 /* Count Enable */
-#define E1000_TCPTIMER_COUNT_FINISH 0x00000400 /* Count finish */
-#define E1000_TCPTIMER_LOOP 0x00000800 /* Loop */
+#define E1000_TCPTIMER_KS 0x00000100 /* KickStart */
+#define E1000_TCPTIMER_COUNT_ENABLE 0x00000200 /* Count Enable */
+#define E1000_TCPTIMER_COUNT_FINISH 0x00000400 /* Count finish */
+#define E1000_TCPTIMER_LOOP 0x00000800 /* Loop */
/*
* This defines the bits that are set in the Interrupt Mask
@@ -858,8 +869,8 @@
* o RXSEQ = Receive Sequence Error
*/
#define POLL_IMS_ENABLE_MASK ( \
- E1000_IMS_RXDMT0 | \
- E1000_IMS_RXSEQ)
+ E1000_IMS_RXDMT0 | \
+ E1000_IMS_RXSEQ)
/*
* This defines the bits that are set in the Interrupt Mask
@@ -871,142 +882,142 @@
* o LSC = Link Status Change
*/
#define IMS_ENABLE_MASK ( \
- E1000_IMS_RXT0 | \
- E1000_IMS_TXDW | \
- E1000_IMS_RXDMT0 | \
- E1000_IMS_RXSEQ | \
- E1000_IMS_LSC)
+ E1000_IMS_RXT0 | \
+ E1000_IMS_TXDW | \
+ E1000_IMS_RXDMT0 | \
+ E1000_IMS_RXSEQ | \
+ E1000_IMS_LSC)
/* Interrupt Mask Set */
-#define E1000_IMS_TXDW E1000_ICR_TXDW /* Tx desc written back */
-#define E1000_IMS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */
-#define E1000_IMS_LSC E1000_ICR_LSC /* Link Status Change */
-#define E1000_IMS_VMMB E1000_ICR_VMMB /* Mail box activity */
-#define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* Rx sequence error */
-#define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* Rx desc min. threshold */
-#define E1000_IMS_RXO E1000_ICR_RXO /* Rx overrun */
-#define E1000_IMS_RXT0 E1000_ICR_RXT0 /* Rx timer intr */
-#define E1000_IMS_MDAC E1000_ICR_MDAC /* MDIO access complete */
-#define E1000_IMS_RXCFG E1000_ICR_RXCFG /* Rx /c/ ordered set */
-#define E1000_IMS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */
-#define E1000_IMS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */
-#define E1000_IMS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */
-#define E1000_IMS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */
-#define E1000_IMS_TXD_LOW E1000_ICR_TXD_LOW
-#define E1000_IMS_SRPD E1000_ICR_SRPD
-#define E1000_IMS_ACK E1000_ICR_ACK /* Receive Ack frame */
-#define E1000_IMS_MNG E1000_ICR_MNG /* Manageability event */
-#define E1000_IMS_DOCK E1000_ICR_DOCK /* Dock/Undock */
-#define E1000_IMS_DRSTA E1000_ICR_DRSTA /* Device Reset Asserted */
-#define E1000_IMS_RXD_FIFO_PAR0 E1000_ICR_RXD_FIFO_PAR0 /* Q0 Rx desc FIFO
- * parity error */
-#define E1000_IMS_TXD_FIFO_PAR0 E1000_ICR_TXD_FIFO_PAR0 /* Q0 Tx desc FIFO
- * parity error */
-#define E1000_IMS_HOST_ARB_PAR E1000_ICR_HOST_ARB_PAR /* host arb read buffer
- * parity error */
-#define E1000_IMS_PB_PAR E1000_ICR_PB_PAR /* packet buffer parity
- * error */
-#define E1000_IMS_RXD_FIFO_PAR1 E1000_ICR_RXD_FIFO_PAR1 /* Q1 Rx desc FIFO
- * parity error */
-#define E1000_IMS_TXD_FIFO_PAR1 E1000_ICR_TXD_FIFO_PAR1 /* Q1 Tx desc FIFO
- * parity error */
-#define E1000_IMS_DSW E1000_ICR_DSW
-#define E1000_IMS_PHYINT E1000_ICR_PHYINT
-#define E1000_IMS_DOUTSYNC E1000_ICR_DOUTSYNC /* NIC DMA out of sync */
-#define E1000_IMS_EPRST E1000_ICR_EPRST
-#define E1000_IMS_RXQ0 E1000_ICR_RXQ0 /* Rx Queue 0 Interrupt */
-#define E1000_IMS_RXQ1 E1000_ICR_RXQ1 /* Rx Queue 1 Interrupt */
-#define E1000_IMS_TXQ0 E1000_ICR_TXQ0 /* Tx Queue 0 Interrupt */
-#define E1000_IMS_TXQ1 E1000_ICR_TXQ1 /* Tx Queue 1 Interrupt */
-#define E1000_IMS_OTHER E1000_ICR_OTHER /* Other Interrupts */
-#define E1000_IMS_FER E1000_ICR_FER /* Fatal Error */
-
-#define E1000_IMS_THS E1000_ICR_THS /* ICR.TS: Thermal Sensor Event*/
-#define E1000_IMS_MDDET E1000_ICR_MDDET /* Malicious Driver Detect */
+#define E1000_IMS_TXDW E1000_ICR_TXDW /* Tx desc written back */
+#define E1000_IMS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */
+#define E1000_IMS_LSC E1000_ICR_LSC /* Link Status Change */
+#define E1000_IMS_VMMB E1000_ICR_VMMB /* Mail box activity */
+#define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* Rx sequence error */
+#define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* Rx desc min. threshold */
+#define E1000_IMS_RXO E1000_ICR_RXO /* Rx overrun */
+#define E1000_IMS_RXT0 E1000_ICR_RXT0 /* Rx timer intr */
+#define E1000_IMS_MDAC E1000_ICR_MDAC /* MDIO access complete */
+#define E1000_IMS_RXCFG E1000_ICR_RXCFG /* Rx /c/ ordered set */
+#define E1000_IMS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */
+#define E1000_IMS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */
+#define E1000_IMS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */
+#define E1000_IMS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */
+#define E1000_IMS_TXD_LOW E1000_ICR_TXD_LOW
+#define E1000_IMS_SRPD E1000_ICR_SRPD
+#define E1000_IMS_ACK E1000_ICR_ACK /* Receive Ack frame */
+#define E1000_IMS_MNG E1000_ICR_MNG /* Manageability event */
+#define E1000_IMS_DOCK E1000_ICR_DOCK /* Dock/Undock */
+#define E1000_IMS_DRSTA E1000_ICR_DRSTA /* Device Reset Asserted */
+/* Q0 Rx desc FIFO parity error */
+#define E1000_IMS_RXD_FIFO_PAR0 E1000_ICR_RXD_FIFO_PAR0
+/* Q0 Tx desc FIFO parity error */
+#define E1000_IMS_TXD_FIFO_PAR0 E1000_ICR_TXD_FIFO_PAR0
+/* host arb read buffer parity error */
+#define E1000_IMS_HOST_ARB_PAR E1000_ICR_HOST_ARB_PAR
+/* packet buffer parity error */
+#define E1000_IMS_PB_PAR E1000_ICR_PB_PAR
+/* Q1 Rx desc FIFO parity error */
+#define E1000_IMS_RXD_FIFO_PAR1 E1000_ICR_RXD_FIFO_PAR1
+/* Q1 Tx desc FIFO parity error */
+#define E1000_IMS_TXD_FIFO_PAR1 E1000_ICR_TXD_FIFO_PAR1
+#define E1000_IMS_DSW E1000_ICR_DSW
+#define E1000_IMS_PHYINT E1000_ICR_PHYINT
+#define E1000_IMS_DOUTSYNC E1000_ICR_DOUTSYNC /* NIC DMA out of sync */
+#define E1000_IMS_EPRST E1000_ICR_EPRST
+#define E1000_IMS_RXQ0 E1000_ICR_RXQ0 /* Rx Queue 0 Interrupt */
+#define E1000_IMS_RXQ1 E1000_ICR_RXQ1 /* Rx Queue 1 Interrupt */
+#define E1000_IMS_TXQ0 E1000_ICR_TXQ0 /* Tx Queue 0 Interrupt */
+#define E1000_IMS_TXQ1 E1000_ICR_TXQ1 /* Tx Queue 1 Interrupt */
+#define E1000_IMS_OTHER E1000_ICR_OTHER /* Other Interrupts */
+#define E1000_IMS_FER E1000_ICR_FER /* Fatal Error */
+
+#define E1000_IMS_THS E1000_ICR_THS /* ICR.TS: Thermal Sensor Event*/
+#define E1000_IMS_MDDET E1000_ICR_MDDET /* Malicious Driver Detect */
/* Extended Interrupt Mask Set */
-#define E1000_EIMS_RX_QUEUE0 E1000_EICR_RX_QUEUE0 /* Rx Queue 0 Interrupt */
-#define E1000_EIMS_RX_QUEUE1 E1000_EICR_RX_QUEUE1 /* Rx Queue 1 Interrupt */
-#define E1000_EIMS_RX_QUEUE2 E1000_EICR_RX_QUEUE2 /* Rx Queue 2 Interrupt */
-#define E1000_EIMS_RX_QUEUE3 E1000_EICR_RX_QUEUE3 /* Rx Queue 3 Interrupt */
-#define E1000_EIMS_TX_QUEUE0 E1000_EICR_TX_QUEUE0 /* Tx Queue 0 Interrupt */
-#define E1000_EIMS_TX_QUEUE1 E1000_EICR_TX_QUEUE1 /* Tx Queue 1 Interrupt */
-#define E1000_EIMS_TX_QUEUE2 E1000_EICR_TX_QUEUE2 /* Tx Queue 2 Interrupt */
-#define E1000_EIMS_TX_QUEUE3 E1000_EICR_TX_QUEUE3 /* Tx Queue 3 Interrupt */
-#define E1000_EIMS_TCP_TIMER E1000_EICR_TCP_TIMER /* TCP Timer */
-#define E1000_EIMS_OTHER E1000_EICR_OTHER /* Interrupt Cause Active */
+#define E1000_EIMS_RX_QUEUE0 E1000_EICR_RX_QUEUE0 /* Rx Queue 0 Interrupt */
+#define E1000_EIMS_RX_QUEUE1 E1000_EICR_RX_QUEUE1 /* Rx Queue 1 Interrupt */
+#define E1000_EIMS_RX_QUEUE2 E1000_EICR_RX_QUEUE2 /* Rx Queue 2 Interrupt */
+#define E1000_EIMS_RX_QUEUE3 E1000_EICR_RX_QUEUE3 /* Rx Queue 3 Interrupt */
+#define E1000_EIMS_TX_QUEUE0 E1000_EICR_TX_QUEUE0 /* Tx Queue 0 Interrupt */
+#define E1000_EIMS_TX_QUEUE1 E1000_EICR_TX_QUEUE1 /* Tx Queue 1 Interrupt */
+#define E1000_EIMS_TX_QUEUE2 E1000_EICR_TX_QUEUE2 /* Tx Queue 2 Interrupt */
+#define E1000_EIMS_TX_QUEUE3 E1000_EICR_TX_QUEUE3 /* Tx Queue 3 Interrupt */
+#define E1000_EIMS_TCP_TIMER E1000_EICR_TCP_TIMER /* TCP Timer */
+#define E1000_EIMS_OTHER E1000_EICR_OTHER /* Interrupt Cause Active */
/* Interrupt Cause Set */
-#define E1000_ICS_TXDW E1000_ICR_TXDW /* Tx desc written back */
-#define E1000_ICS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */
-#define E1000_ICS_LSC E1000_ICR_LSC /* Link Status Change */
-#define E1000_ICS_RXSEQ E1000_ICR_RXSEQ /* Rx sequence error */
-#define E1000_ICS_RXDMT0 E1000_ICR_RXDMT0 /* Rx desc min. threshold */
-#define E1000_ICS_RXO E1000_ICR_RXO /* Rx overrun */
-#define E1000_ICS_RXT0 E1000_ICR_RXT0 /* Rx timer intr */
-#define E1000_ICS_MDAC E1000_ICR_MDAC /* MDIO access complete */
-#define E1000_ICS_RXCFG E1000_ICR_RXCFG /* Rx /c/ ordered set */
-#define E1000_ICS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */
-#define E1000_ICS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */
-#define E1000_ICS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */
-#define E1000_ICS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */
-#define E1000_ICS_TXD_LOW E1000_ICR_TXD_LOW
-#define E1000_ICS_SRPD E1000_ICR_SRPD
-#define E1000_ICS_ACK E1000_ICR_ACK /* Receive Ack frame */
-#define E1000_ICS_MNG E1000_ICR_MNG /* Manageability event */
-#define E1000_ICS_DOCK E1000_ICR_DOCK /* Dock/Undock */
-#define E1000_ICS_DRSTA E1000_ICR_DRSTA /* Device Reset Aserted */
-#define E1000_ICS_RXD_FIFO_PAR0 E1000_ICR_RXD_FIFO_PAR0 /* Q0 Rx desc FIFO
- * parity error */
-#define E1000_ICS_TXD_FIFO_PAR0 E1000_ICR_TXD_FIFO_PAR0 /* Q0 Tx desc FIFO
- * parity error */
-#define E1000_ICS_HOST_ARB_PAR E1000_ICR_HOST_ARB_PAR /* host arb read buffer
- * parity error */
-#define E1000_ICS_PB_PAR E1000_ICR_PB_PAR /* packet buffer parity
- * error */
-#define E1000_ICS_RXD_FIFO_PAR1 E1000_ICR_RXD_FIFO_PAR1 /* Q1 Rx desc FIFO
- * parity error */
-#define E1000_ICS_TXD_FIFO_PAR1 E1000_ICR_TXD_FIFO_PAR1 /* Q1 Tx desc FIFO
- * parity error */
-#define E1000_ICS_DSW E1000_ICR_DSW
-#define E1000_ICS_DOUTSYNC E1000_ICR_DOUTSYNC /* NIC DMA out of sync */
-#define E1000_ICS_PHYINT E1000_ICR_PHYINT
-#define E1000_ICS_EPRST E1000_ICR_EPRST
+#define E1000_ICS_TXDW E1000_ICR_TXDW /* Tx desc written back */
+#define E1000_ICS_TXQE E1000_ICR_TXQE /* Transmit Queue empty */
+#define E1000_ICS_LSC E1000_ICR_LSC /* Link Status Change */
+#define E1000_ICS_RXSEQ E1000_ICR_RXSEQ /* Rx sequence error */
+#define E1000_ICS_RXDMT0 E1000_ICR_RXDMT0 /* Rx desc min. threshold */
+#define E1000_ICS_RXO E1000_ICR_RXO /* Rx overrun */
+#define E1000_ICS_RXT0 E1000_ICR_RXT0 /* Rx timer intr */
+#define E1000_ICS_MDAC E1000_ICR_MDAC /* MDIO access complete */
+#define E1000_ICS_RXCFG E1000_ICR_RXCFG /* Rx /c/ ordered set */
+#define E1000_ICS_GPI_EN0 E1000_ICR_GPI_EN0 /* GP Int 0 */
+#define E1000_ICS_GPI_EN1 E1000_ICR_GPI_EN1 /* GP Int 1 */
+#define E1000_ICS_GPI_EN2 E1000_ICR_GPI_EN2 /* GP Int 2 */
+#define E1000_ICS_GPI_EN3 E1000_ICR_GPI_EN3 /* GP Int 3 */
+#define E1000_ICS_TXD_LOW E1000_ICR_TXD_LOW
+#define E1000_ICS_SRPD E1000_ICR_SRPD
+#define E1000_ICS_ACK E1000_ICR_ACK /* Receive Ack frame */
+#define E1000_ICS_MNG E1000_ICR_MNG /* Manageability event */
+#define E1000_ICS_DOCK E1000_ICR_DOCK /* Dock/Undock */
+#define E1000_ICS_DRSTA E1000_ICR_DRSTA /* Device Reset Aserted */
+/* Q0 Rx desc FIFO parity error */
+#define E1000_ICS_RXD_FIFO_PAR0 E1000_ICR_RXD_FIFO_PAR0
+/* Q0 Tx desc FIFO parity error */
+#define E1000_ICS_TXD_FIFO_PAR0 E1000_ICR_TXD_FIFO_PAR0
+/* host arb read buffer parity error */
+#define E1000_ICS_HOST_ARB_PAR E1000_ICR_HOST_ARB_PAR
+/* packet buffer parity error */
+#define E1000_ICS_PB_PAR E1000_ICR_PB_PAR
+/* Q1 Rx desc FIFO parity error */
+#define E1000_ICS_RXD_FIFO_PAR1 E1000_ICR_RXD_FIFO_PAR1
+/* Q1 Tx desc FIFO parity error */
+#define E1000_ICS_TXD_FIFO_PAR1 E1000_ICR_TXD_FIFO_PAR1
+#define E1000_ICS_DSW E1000_ICR_DSW
+#define E1000_ICS_DOUTSYNC E1000_ICR_DOUTSYNC /* NIC DMA out of sync */
+#define E1000_ICS_PHYINT E1000_ICR_PHYINT
+#define E1000_ICS_EPRST E1000_ICR_EPRST
/* Extended Interrupt Cause Set */
-#define E1000_EICS_RX_QUEUE0 E1000_EICR_RX_QUEUE0 /* Rx Queue 0 Interrupt */
-#define E1000_EICS_RX_QUEUE1 E1000_EICR_RX_QUEUE1 /* Rx Queue 1 Interrupt */
-#define E1000_EICS_RX_QUEUE2 E1000_EICR_RX_QUEUE2 /* Rx Queue 2 Interrupt */
-#define E1000_EICS_RX_QUEUE3 E1000_EICR_RX_QUEUE3 /* Rx Queue 3 Interrupt */
-#define E1000_EICS_TX_QUEUE0 E1000_EICR_TX_QUEUE0 /* Tx Queue 0 Interrupt */
-#define E1000_EICS_TX_QUEUE1 E1000_EICR_TX_QUEUE1 /* Tx Queue 1 Interrupt */
-#define E1000_EICS_TX_QUEUE2 E1000_EICR_TX_QUEUE2 /* Tx Queue 2 Interrupt */
-#define E1000_EICS_TX_QUEUE3 E1000_EICR_TX_QUEUE3 /* Tx Queue 3 Interrupt */
-#define E1000_EICS_TCP_TIMER E1000_EICR_TCP_TIMER /* TCP Timer */
-#define E1000_EICS_OTHER E1000_EICR_OTHER /* Interrupt Cause Active */
-
-#define E1000_EITR_ITR_INT_MASK 0x0000FFFF
+#define E1000_EICS_RX_QUEUE0 E1000_EICR_RX_QUEUE0 /* Rx Queue 0 Interrupt */
+#define E1000_EICS_RX_QUEUE1 E1000_EICR_RX_QUEUE1 /* Rx Queue 1 Interrupt */
+#define E1000_EICS_RX_QUEUE2 E1000_EICR_RX_QUEUE2 /* Rx Queue 2 Interrupt */
+#define E1000_EICS_RX_QUEUE3 E1000_EICR_RX_QUEUE3 /* Rx Queue 3 Interrupt */
+#define E1000_EICS_TX_QUEUE0 E1000_EICR_TX_QUEUE0 /* Tx Queue 0 Interrupt */
+#define E1000_EICS_TX_QUEUE1 E1000_EICR_TX_QUEUE1 /* Tx Queue 1 Interrupt */
+#define E1000_EICS_TX_QUEUE2 E1000_EICR_TX_QUEUE2 /* Tx Queue 2 Interrupt */
+#define E1000_EICS_TX_QUEUE3 E1000_EICR_TX_QUEUE3 /* Tx Queue 3 Interrupt */
+#define E1000_EICS_TCP_TIMER E1000_EICR_TCP_TIMER /* TCP Timer */
+#define E1000_EICS_OTHER E1000_EICR_OTHER /* Interrupt Cause Active */
+
+#define E1000_EITR_ITR_INT_MASK 0x0000FFFF
/* E1000_EITR_CNT_IGNR is only for 82576 and newer */
-#define E1000_EITR_CNT_IGNR 0x80000000 /* Don't reset counters on write */
+#define E1000_EITR_CNT_IGNR 0x80000000 /* Don't reset counters on write */
/* Transmit Descriptor Control */
-#define E1000_TXDCTL_PTHRESH 0x0000003F /* TXDCTL Prefetch Threshold */
-#define E1000_TXDCTL_HTHRESH 0x00003F00 /* TXDCTL Host Threshold */
-#define E1000_TXDCTL_WTHRESH 0x003F0000 /* TXDCTL Writeback Threshold */
-#define E1000_TXDCTL_GRAN 0x01000000 /* TXDCTL Granularity */
-#define E1000_TXDCTL_LWTHRESH 0xFE000000 /* TXDCTL Low Threshold */
-#define E1000_TXDCTL_FULL_TX_DESC_WB 0x01010000 /* GRAN=1, WTHRESH=1 */
+#define E1000_TXDCTL_PTHRESH 0x0000003F /* TXDCTL Prefetch Threshold */
+#define E1000_TXDCTL_HTHRESH 0x00003F00 /* TXDCTL Host Threshold */
+#define E1000_TXDCTL_WTHRESH 0x003F0000 /* TXDCTL Writeback Threshold */
+#define E1000_TXDCTL_GRAN 0x01000000 /* TXDCTL Granularity */
+#define E1000_TXDCTL_LWTHRESH 0xFE000000 /* TXDCTL Low Threshold */
+#define E1000_TXDCTL_FULL_TX_DESC_WB 0x01010000 /* GRAN=1, WTHRESH=1 */
#define E1000_TXDCTL_MAX_TX_DESC_PREFETCH 0x0100001F /* GRAN=1, PTHRESH=31 */
/* Enable the counting of descriptors still to be processed. */
-#define E1000_TXDCTL_COUNT_DESC 0x00400000
+#define E1000_TXDCTL_COUNT_DESC 0x00400000
/* Flow Control Constants */
-#define FLOW_CONTROL_ADDRESS_LOW 0x00C28001
-#define FLOW_CONTROL_ADDRESS_HIGH 0x00000100
-#define FLOW_CONTROL_TYPE 0x8808
+#define FLOW_CONTROL_ADDRESS_LOW 0x00C28001
+#define FLOW_CONTROL_ADDRESS_HIGH 0x00000100
+#define FLOW_CONTROL_TYPE 0x8808
/* 802.1q VLAN Packet Size */
-#define VLAN_TAG_SIZE 4 /* 802.3ac tag (not DMA'd) */
-#define E1000_VLAN_FILTER_TBL_SIZE 128 /* VLAN Filter Table (4096 bits) */
+#define VLAN_TAG_SIZE 4 /* 802.3ac tag (not DMA'd) */
+#define E1000_VLAN_FILTER_TBL_SIZE 128 /* VLAN Filter Table (4096 bits) */
/* Receive Address */
/*
@@ -1016,529 +1027,550 @@
* (RAR[15]) for our directed address used by controllers with
* manageability enabled, allowing us room for 15 multicast addresses.
*/
-#define E1000_RAR_ENTRIES 15
-#define E1000_RAH_AV 0x80000000 /* Receive descriptor valid */
-#define E1000_RAL_MAC_ADDR_LEN 4
-#define E1000_RAH_MAC_ADDR_LEN 2
-#define E1000_RAH_QUEUE_MASK_82575 0x000C0000
-#define E1000_RAH_POOL_MASK 0x03FC0000
-#define E1000_RAH_POOL_SHIFT 18
-#define E1000_RAH_POOL_1 0x00040000
+#define E1000_RAR_ENTRIES 15
+#define E1000_RAH_AV 0x80000000 /* Receive descriptor valid */
+#define E1000_RAL_MAC_ADDR_LEN 4
+#define E1000_RAH_MAC_ADDR_LEN 2
+#define E1000_RAH_QUEUE_MASK_82575 0x000C0000
+#define E1000_RAH_POOL_MASK 0x03FC0000
+#define E1000_RAH_POOL_SHIFT 18
+#define E1000_RAH_POOL_1 0x00040000
/* Error Codes */
-#define E1000_SUCCESS 0
-#define E1000_ERR_NVM 1
-#define E1000_ERR_PHY 2
-#define E1000_ERR_CONFIG 3
-#define E1000_ERR_PARAM 4
-#define E1000_ERR_MAC_INIT 5
-#define E1000_ERR_PHY_TYPE 6
-#define E1000_ERR_RESET 9
-#define E1000_ERR_MASTER_REQUESTS_PENDING 10
-#define E1000_ERR_HOST_INTERFACE_COMMAND 11
-#define E1000_BLK_PHY_RESET 12
-#define E1000_ERR_SWFW_SYNC 13
-#define E1000_NOT_IMPLEMENTED 14
-#define E1000_ERR_MBX 15
-#define E1000_ERR_INVALID_ARGUMENT 16
-#define E1000_ERR_NO_SPACE 17
-#define E1000_ERR_NVM_PBA_SECTION 18
+#define E1000_SUCCESS 0
+#define E1000_ERR_NVM 1
+#define E1000_ERR_PHY 2
+#define E1000_ERR_CONFIG 3
+#define E1000_ERR_PARAM 4
+#define E1000_ERR_MAC_INIT 5
+#define E1000_ERR_PHY_TYPE 6
+#define E1000_ERR_RESET 9
+#define E1000_ERR_MASTER_REQUESTS_PENDING 10
+#define E1000_ERR_HOST_INTERFACE_COMMAND 11
+#define E1000_BLK_PHY_RESET 12
+#define E1000_ERR_SWFW_SYNC 13
+#define E1000_NOT_IMPLEMENTED 14
+#define E1000_ERR_MBX 15
+#define E1000_ERR_INVALID_ARGUMENT 16
+#define E1000_ERR_NO_SPACE 17
+#define E1000_ERR_NVM_PBA_SECTION 18
+#define E1000_ERR_I2C 19
+#define E1000_ERR_INVM_VALUE_NOT_FOUND 20
/* Loop limit on how long we wait for auto-negotiation to complete */
-#define FIBER_LINK_UP_LIMIT 50
-#define COPPER_LINK_UP_LIMIT 10
-#define PHY_AUTO_NEG_LIMIT 45
-#define PHY_FORCE_LIMIT 20
+#define FIBER_LINK_UP_LIMIT 50
+#define COPPER_LINK_UP_LIMIT 10
+#define PHY_AUTO_NEG_LIMIT 45
+#define PHY_FORCE_LIMIT 20
/* Number of 100 microseconds we wait for PCI Express master disable */
-#define MASTER_DISABLE_TIMEOUT 800
+#define MASTER_DISABLE_TIMEOUT 800
/* Number of milliseconds we wait for PHY configuration done after MAC reset */
-#define PHY_CFG_TIMEOUT 100
+#define PHY_CFG_TIMEOUT 100
/* Number of 2 milliseconds we wait for acquiring MDIO ownership. */
-#define MDIO_OWNERSHIP_TIMEOUT 10
+#define MDIO_OWNERSHIP_TIMEOUT 10
/* Number of milliseconds for NVM auto read done after MAC reset. */
-#define AUTO_READ_DONE_TIMEOUT 10
+#define AUTO_READ_DONE_TIMEOUT 10
/* Flow Control */
-#define E1000_FCRTH_RTH 0x0000FFF8 /* Mask Bits[15:3] for RTH */
-#define E1000_FCRTH_XFCE 0x80000000 /* External Flow Control Enable */
-#define E1000_FCRTL_RTL 0x0000FFF8 /* Mask Bits[15:3] for RTL */
-#define E1000_FCRTL_XONE 0x80000000 /* Enable XON frame transmission */
+#define E1000_FCRTH_RTH 0x0000FFF8 /* Mask Bits[15:3] for RTH */
+#define E1000_FCRTH_XFCE 0x80000000 /* External Flow Control Enable */
+#define E1000_FCRTL_RTL 0x0000FFF8 /* Mask Bits[15:3] for RTL */
+#define E1000_FCRTL_XONE 0x80000000 /* Enable XON frame transmission */
/* Transmit Configuration Word */
-#define E1000_TXCW_FD 0x00000020 /* TXCW full duplex */
-#define E1000_TXCW_HD 0x00000040 /* TXCW half duplex */
-#define E1000_TXCW_PAUSE 0x00000080 /* TXCW sym pause request */
-#define E1000_TXCW_ASM_DIR 0x00000100 /* TXCW astm pause direction */
-#define E1000_TXCW_PAUSE_MASK 0x00000180 /* TXCW pause request mask */
-#define E1000_TXCW_RF 0x00003000 /* TXCW remote fault */
-#define E1000_TXCW_NP 0x00008000 /* TXCW next page */
-#define E1000_TXCW_CW 0x0000ffff /* TxConfigWord mask */
-#define E1000_TXCW_TXC 0x40000000 /* Transmit Config control */
-#define E1000_TXCW_ANE 0x80000000 /* Auto-neg enable */
+#define E1000_TXCW_FD 0x00000020 /* TXCW full duplex */
+#define E1000_TXCW_HD 0x00000040 /* TXCW half duplex */
+#define E1000_TXCW_PAUSE 0x00000080 /* TXCW sym pause request */
+#define E1000_TXCW_ASM_DIR 0x00000100 /* TXCW astm pause direction */
+#define E1000_TXCW_PAUSE_MASK 0x00000180 /* TXCW pause request mask */
+#define E1000_TXCW_RF 0x00003000 /* TXCW remote fault */
+#define E1000_TXCW_NP 0x00008000 /* TXCW next page */
+#define E1000_TXCW_CW 0x0000ffff /* TxConfigWord mask */
+#define E1000_TXCW_TXC 0x40000000 /* Transmit Config control */
+#define E1000_TXCW_ANE 0x80000000 /* Auto-neg enable */
/* Receive Configuration Word */
-#define E1000_RXCW_CW 0x0000ffff /* RxConfigWord mask */
-#define E1000_RXCW_NC 0x04000000 /* Receive config no carrier */
-#define E1000_RXCW_IV 0x08000000 /* Receive config invalid */
-#define E1000_RXCW_CC 0x10000000 /* Receive config change */
-#define E1000_RXCW_C 0x20000000 /* Receive config */
-#define E1000_RXCW_SYNCH 0x40000000 /* Receive config synch */
-#define E1000_RXCW_ANC 0x80000000 /* Auto-neg complete */
-
-#define E1000_TSYNCTXCTL_VALID 0x00000001 /* Tx timestamp valid */
-#define E1000_TSYNCTXCTL_ENABLED 0x00000010 /* enable Tx timestamping */
-
-#define E1000_TSYNCRXCTL_VALID 0x00000001 /* Rx timestamp valid */
-#define E1000_TSYNCRXCTL_TYPE_MASK 0x0000000E /* Rx type mask */
-#define E1000_TSYNCRXCTL_TYPE_L2_V2 0x00
-#define E1000_TSYNCRXCTL_TYPE_L4_V1 0x02
-#define E1000_TSYNCRXCTL_TYPE_L2_L4_V2 0x04
-#define E1000_TSYNCRXCTL_TYPE_ALL 0x08
-#define E1000_TSYNCRXCTL_TYPE_EVENT_V2 0x0A
-#define E1000_TSYNCRXCTL_ENABLED 0x00000010 /* enable Rx timestamping */
-
-#define E1000_TSYNCRXCFG_PTP_V1_CTRLT_MASK 0x000000FF
-#define E1000_TSYNCRXCFG_PTP_V1_SYNC_MESSAGE 0x00
-#define E1000_TSYNCRXCFG_PTP_V1_DELAY_REQ_MESSAGE 0x01
-#define E1000_TSYNCRXCFG_PTP_V1_FOLLOWUP_MESSAGE 0x02
-#define E1000_TSYNCRXCFG_PTP_V1_DELAY_RESP_MESSAGE 0x03
-#define E1000_TSYNCRXCFG_PTP_V1_MANAGEMENT_MESSAGE 0x04
-
-#define E1000_TSYNCRXCFG_PTP_V2_MSGID_MASK 0x00000F00
-#define E1000_TSYNCRXCFG_PTP_V2_SYNC_MESSAGE 0x0000
-#define E1000_TSYNCRXCFG_PTP_V2_DELAY_REQ_MESSAGE 0x0100
-#define E1000_TSYNCRXCFG_PTP_V2_PATH_DELAY_REQ_MESSAGE 0x0200
-#define E1000_TSYNCRXCFG_PTP_V2_PATH_DELAY_RESP_MESSAGE 0x0300
-#define E1000_TSYNCRXCFG_PTP_V2_FOLLOWUP_MESSAGE 0x0800
-#define E1000_TSYNCRXCFG_PTP_V2_DELAY_RESP_MESSAGE 0x0900
-#define E1000_TSYNCRXCFG_PTP_V2_PATH_DELAY_FOLLOWUP_MESSAGE 0x0A00
-#define E1000_TSYNCRXCFG_PTP_V2_ANNOUNCE_MESSAGE 0x0B00
-#define E1000_TSYNCRXCFG_PTP_V2_SIGNALLING_MESSAGE 0x0C00
-#define E1000_TSYNCRXCFG_PTP_V2_MANAGEMENT_MESSAGE 0x0D00
-
-#define E1000_TIMINCA_16NS_SHIFT 24
+#define E1000_RXCW_CW 0x0000ffff /* RxConfigWord mask */
+#define E1000_RXCW_NC 0x04000000 /* Receive config no carrier */
+#define E1000_RXCW_IV 0x08000000 /* Receive config invalid */
+#define E1000_RXCW_CC 0x10000000 /* Receive config change */
+#define E1000_RXCW_C 0x20000000 /* Receive config */
+#define E1000_RXCW_SYNCH 0x40000000 /* Receive config synch */
+#define E1000_RXCW_ANC 0x80000000 /* Auto-neg complete */
+
+#define E1000_TSYNCTXCTL_VALID 0x00000001 /* Tx timestamp valid */
+#define E1000_TSYNCTXCTL_ENABLED 0x00000010 /* enable Tx timestamping */
+
+#define E1000_TSYNCRXCTL_VALID 0x00000001 /* Rx timestamp valid */
+#define E1000_TSYNCRXCTL_TYPE_MASK 0x0000000E /* Rx type mask */
+#define E1000_TSYNCRXCTL_TYPE_L2_V2 0x00
+#define E1000_TSYNCRXCTL_TYPE_L4_V1 0x02
+#define E1000_TSYNCRXCTL_TYPE_L2_L4_V2 0x04
+#define E1000_TSYNCRXCTL_TYPE_ALL 0x08
+#define E1000_TSYNCRXCTL_TYPE_EVENT_V2 0x0A
+#define E1000_TSYNCRXCTL_ENABLED 0x00000010 /* enable Rx timestamping */
+
+#define E1000_TSYNCRXCFG_PTP_V1_CTRLT_MASK 0x000000FF
+#define E1000_TSYNCRXCFG_PTP_V1_SYNC_MESSAGE 0x00
+#define E1000_TSYNCRXCFG_PTP_V1_DELAY_REQ_MESSAGE 0x01
+#define E1000_TSYNCRXCFG_PTP_V1_FOLLOWUP_MESSAGE 0x02
+#define E1000_TSYNCRXCFG_PTP_V1_DELAY_RESP_MESSAGE 0x03
+#define E1000_TSYNCRXCFG_PTP_V1_MANAGEMENT_MESSAGE 0x04
+
+#define E1000_TSYNCRXCFG_PTP_V2_MSGID_MASK 0x00000F00
+#define E1000_TSYNCRXCFG_PTP_V2_SYNC_MESSAGE 0x0000
+#define E1000_TSYNCRXCFG_PTP_V2_DELAY_REQ_MESSAGE 0x0100
+#define E1000_TSYNCRXCFG_PTP_V2_PATH_DELAY_REQ_MESSAGE 0x0200
+#define E1000_TSYNCRXCFG_PTP_V2_PATH_DELAY_RESP_MESSAGE 0x0300
+#define E1000_TSYNCRXCFG_PTP_V2_FOLLOWUP_MESSAGE 0x0800
+#define E1000_TSYNCRXCFG_PTP_V2_DELAY_RESP_MESSAGE 0x0900
+#define E1000_TSYNCRXCFG_PTP_V2_PATH_DELAY_FOLLOWUP_MESSAGE 0x0A00
+#define E1000_TSYNCRXCFG_PTP_V2_ANNOUNCE_MESSAGE 0x0B00
+#define E1000_TSYNCRXCFG_PTP_V2_SIGNALLING_MESSAGE 0x0C00
+#define E1000_TSYNCRXCFG_PTP_V2_MANAGEMENT_MESSAGE 0x0D00
+
+#define E1000_TIMINCA_16NS_SHIFT 24
/* TUPLE Filtering Configuration */
-#define E1000_TTQF_DISABLE_MASK 0xF0008000 /* TTQF Disable Mask */
-#define E1000_TTQF_QUEUE_ENABLE 0x100 /* TTQF Queue Enable Bit */
-#define E1000_TTQF_PROTOCOL_MASK 0xFF /* TTQF Protocol Mask */
+#define E1000_TTQF_DISABLE_MASK 0xF0008000 /* TTQF Disable Mask */
+#define E1000_TTQF_QUEUE_ENABLE 0x100 /* TTQF Queue Enable Bit */
+#define E1000_TTQF_PROTOCOL_MASK 0xFF /* TTQF Protocol Mask */
/* TTQF TCP Bit, shift with E1000_TTQF_PROTOCOL SHIFT */
-#define E1000_TTQF_PROTOCOL_TCP 0x0
+#define E1000_TTQF_PROTOCOL_TCP 0x0
/* TTQF UDP Bit, shift with E1000_TTQF_PROTOCOL_SHIFT */
-#define E1000_TTQF_PROTOCOL_UDP 0x1
+#define E1000_TTQF_PROTOCOL_UDP 0x1
/* TTQF SCTP Bit, shift with E1000_TTQF_PROTOCOL_SHIFT */
-#define E1000_TTQF_PROTOCOL_SCTP 0x2
-#define E1000_TTQF_PROTOCOL_SHIFT 5 /* TTQF Protocol Shift */
-#define E1000_TTQF_QUEUE_SHIFT 16 /* TTQF Queue Shfit */
-#define E1000_TTQF_RX_QUEUE_MASK 0x70000 /* TTQF Queue Mask */
-#define E1000_TTQF_MASK_ENABLE 0x10000000 /* TTQF Mask Enable Bit */
-#define E1000_IMIR_CLEAR_MASK 0xF001FFFF /* IMIR Reg Clear Mask */
-#define E1000_IMIR_PORT_BYPASS 0x20000 /* IMIR Port Bypass Bit */
-#define E1000_IMIR_PRIORITY_SHIFT 29 /* IMIR Priority Shift */
-#define E1000_IMIREXT_CLEAR_MASK 0x7FFFF /* IMIREXT Reg Clear Mask */
-
-#define E1000_MDICNFG_EXT_MDIO 0x80000000 /* MDI ext/int destination */
-#define E1000_MDICNFG_COM_MDIO 0x40000000 /* MDI shared w/ lan 0 */
-#define E1000_MDICNFG_PHY_MASK 0x03E00000
-#define E1000_MDICNFG_PHY_SHIFT 21
-
-#define E1000_THSTAT_LOW_EVENT 0x20000000 /* Low thermal threshold */
-#define E1000_THSTAT_MID_EVENT 0x00200000 /* Mid thermal threshold */
-#define E1000_THSTAT_HIGH_EVENT 0x00002000 /* High thermal threshold */
-#define E1000_THSTAT_PWR_DOWN 0x00000001 /* Power Down Event */
-#define E1000_THSTAT_LINK_THROTTLE 0x00000002 /* Link Speed Throttle Event */
-
-/* Powerville EEE defines */
-#define E1000_IPCNFG_EEE_1G_AN 0x00000008 /* IPCNFG EEE Enable 1G AN */
-#define E1000_IPCNFG_EEE_100M_AN 0x00000004 /* IPCNFG EEE Enable 100M AN */
-#define E1000_EEER_TX_LPI_EN 0x00010000 /* EEER Tx LPI Enable */
-#define E1000_EEER_RX_LPI_EN 0x00020000 /* EEER Rx LPI Enable */
-#define E1000_EEER_LPI_FC 0x00040000 /* EEER Enable on Flow Control*/
+#define E1000_TTQF_PROTOCOL_SCTP 0x2
+#define E1000_TTQF_PROTOCOL_SHIFT 5 /* TTQF Protocol Shift */
+#define E1000_TTQF_QUEUE_SHIFT 16 /* TTQF Queue Shfit */
+#define E1000_TTQF_RX_QUEUE_MASK 0x70000 /* TTQF Queue Mask */
+#define E1000_TTQF_MASK_ENABLE 0x10000000 /* TTQF Mask Enable Bit */
+#define E1000_IMIR_CLEAR_MASK 0xF001FFFF /* IMIR Reg Clear Mask */
+#define E1000_IMIR_PORT_BYPASS 0x20000 /* IMIR Port Bypass Bit */
+#define E1000_IMIR_PRIORITY_SHIFT 29 /* IMIR Priority Shift */
+#define E1000_IMIREXT_CLEAR_MASK 0x7FFFF /* IMIREXT Reg Clear Mask */
+
+#define E1000_MDICNFG_EXT_MDIO 0x80000000 /* MDI ext/int destination */
+#define E1000_MDICNFG_COM_MDIO 0x40000000 /* MDI shared w/ lan 0 */
+#define E1000_MDICNFG_PHY_MASK 0x03E00000
+#define E1000_MDICNFG_PHY_SHIFT 21
+
+#define E1000_THSTAT_LOW_EVENT 0x20000000 /* Low thermal threshold */
+#define E1000_THSTAT_MID_EVENT 0x00200000 /* Mid thermal threshold */
+#define E1000_THSTAT_HIGH_EVENT 0x00002000 /* High thermal threshold */
+#define E1000_THSTAT_PWR_DOWN 0x00000001 /* Power Down Event */
+#define E1000_THSTAT_LINK_THROTTLE 0x00000002 /* Link Spd Throttle Event */
+
+/* I350 EEE defines */
+#define E1000_IPCNFG_EEE_1G_AN 0x00000008 /* IPCNFG EEE Ena 1G AN */
+#define E1000_IPCNFG_EEE_100M_AN 0x00000004 /* IPCNFG EEE Ena 100M AN */
+#define E1000_EEER_TX_LPI_EN 0x00010000 /* EEER Tx LPI Enable */
+#define E1000_EEER_RX_LPI_EN 0x00020000 /* EEER Rx LPI Enable */
+#define E1000_EEER_LPI_FC 0x00040000 /* EEER Ena on Flow Cntrl */
/* EEE status */
-#define E1000_EEER_EEE_NEG 0x20000000 /* EEE capability negotiated */
-#define E1000_EEER_RX_LPI_STATUS 0x40000000 /* Rx in LPI state */
-#define E1000_EEER_TX_LPI_STATUS 0x80000000 /* Tx in LPI state */
+#define E1000_EEER_EEE_NEG 0x20000000 /* EEE capability nego */
+#define E1000_EEER_RX_LPI_STATUS 0x40000000 /* Rx in LPI state */
+#define E1000_EEER_TX_LPI_STATUS 0x80000000 /* Tx in LPI state */
/* PCI Express Control */
-#define E1000_GCR_RXD_NO_SNOOP 0x00000001
-#define E1000_GCR_RXDSCW_NO_SNOOP 0x00000002
-#define E1000_GCR_RXDSCR_NO_SNOOP 0x00000004
-#define E1000_GCR_TXD_NO_SNOOP 0x00000008
-#define E1000_GCR_TXDSCW_NO_SNOOP 0x00000010
-#define E1000_GCR_TXDSCR_NO_SNOOP 0x00000020
-#define E1000_GCR_CMPL_TMOUT_MASK 0x0000F000
-#define E1000_GCR_CMPL_TMOUT_10ms 0x00001000
-#define E1000_GCR_CMPL_TMOUT_RESEND 0x00010000
-#define E1000_GCR_CAP_VER2 0x00040000
-
-#define PCIE_NO_SNOOP_ALL (E1000_GCR_RXD_NO_SNOOP | \
- E1000_GCR_RXDSCW_NO_SNOOP | \
- E1000_GCR_RXDSCR_NO_SNOOP | \
- E1000_GCR_TXD_NO_SNOOP | \
- E1000_GCR_TXDSCW_NO_SNOOP | \
- E1000_GCR_TXDSCR_NO_SNOOP)
+#define E1000_GCR_RXD_NO_SNOOP 0x00000001
+#define E1000_GCR_RXDSCW_NO_SNOOP 0x00000002
+#define E1000_GCR_RXDSCR_NO_SNOOP 0x00000004
+#define E1000_GCR_TXD_NO_SNOOP 0x00000008
+#define E1000_GCR_TXDSCW_NO_SNOOP 0x00000010
+#define E1000_GCR_TXDSCR_NO_SNOOP 0x00000020
+#define E1000_GCR_CMPL_TMOUT_MASK 0x0000F000
+#define E1000_GCR_CMPL_TMOUT_10ms 0x00001000
+#define E1000_GCR_CMPL_TMOUT_RESEND 0x00010000
+#define E1000_GCR_CAP_VER2 0x00040000
+
+#define PCIE_NO_SNOOP_ALL (E1000_GCR_RXD_NO_SNOOP | \
+ E1000_GCR_RXDSCW_NO_SNOOP | \
+ E1000_GCR_RXDSCR_NO_SNOOP | \
+ E1000_GCR_TXD_NO_SNOOP | \
+ E1000_GCR_TXDSCW_NO_SNOOP | \
+ E1000_GCR_TXDSCR_NO_SNOOP)
+
+/* mPHY address control and data registers */
+#define E1000_MPHY_ADDR_CTL 0x0024 /* Address Control Reg */
+#define E1000_MPHY_ADDR_CTL_OFFSET_MASK 0xFFFF0000
+#define E1000_MPHY_DATA 0x0E10 /* Data Register */
+
+/* AFE CSR Offset for PCS CLK */
+#define E1000_MPHY_PCS_CLK_REG_OFFSET 0x0004
+/* Override for near end digital loopback. */
+#define E1000_MPHY_PCS_CLK_REG_DIGINELBEN 0x10
/* PHY Control Register */
-#define MII_CR_SPEED_SELECT_MSB 0x0040 /* bits 6,13: 10=1000, 01=100, 00=10 */
-#define MII_CR_COLL_TEST_ENABLE 0x0080 /* Collision test enable */
-#define MII_CR_FULL_DUPLEX 0x0100 /* FDX =1, half duplex =0 */
-#define MII_CR_RESTART_AUTO_NEG 0x0200 /* Restart auto negotiation */
-#define MII_CR_ISOLATE 0x0400 /* Isolate PHY from MII */
-#define MII_CR_POWER_DOWN 0x0800 /* Power down */
-#define MII_CR_AUTO_NEG_EN 0x1000 /* Auto Neg Enable */
-#define MII_CR_SPEED_SELECT_LSB 0x2000 /* bits 6,13: 10=1000, 01=100, 00=10 */
-#define MII_CR_LOOPBACK 0x4000 /* 0 = normal, 1 = loopback */
-#define MII_CR_RESET 0x8000 /* 0 = normal, 1 = PHY reset */
-#define MII_CR_SPEED_1000 0x0040
-#define MII_CR_SPEED_100 0x2000
-#define MII_CR_SPEED_10 0x0000
+#define MII_CR_SPEED_SELECT_MSB 0x0040 /* bits 6,13: 10=1000, 01=100, 00=10 */
+#define MII_CR_COLL_TEST_ENABLE 0x0080 /* Collision test enable */
+#define MII_CR_FULL_DUPLEX 0x0100 /* FDX =1, half duplex =0 */
+#define MII_CR_RESTART_AUTO_NEG 0x0200 /* Restart auto negotiation */
+#define MII_CR_ISOLATE 0x0400 /* Isolate PHY from MII */
+#define MII_CR_POWER_DOWN 0x0800 /* Power down */
+#define MII_CR_AUTO_NEG_EN 0x1000 /* Auto Neg Enable */
+#define MII_CR_SPEED_SELECT_LSB 0x2000 /* bits 6,13: 10=1000, 01=100, 00=10 */
+#define MII_CR_LOOPBACK 0x4000 /* 0 = normal, 1 = loopback */
+#define MII_CR_RESET 0x8000 /* 0 = normal, 1 = PHY reset */
+#define MII_CR_SPEED_1000 0x0040
+#define MII_CR_SPEED_100 0x2000
+#define MII_CR_SPEED_10 0x0000
/* PHY Status Register */
-#define MII_SR_EXTENDED_CAPS 0x0001 /* Extended register capabilities */
-#define MII_SR_JABBER_DETECT 0x0002 /* Jabber Detected */
-#define MII_SR_LINK_STATUS 0x0004 /* Link Status 1 = link */
-#define MII_SR_AUTONEG_CAPS 0x0008 /* Auto Neg Capable */
-#define MII_SR_REMOTE_FAULT 0x0010 /* Remote Fault Detect */
-#define MII_SR_AUTONEG_COMPLETE 0x0020 /* Auto Neg Complete */
+#define MII_SR_EXTENDED_CAPS 0x0001 /* Extended register capabilities */
+#define MII_SR_JABBER_DETECT 0x0002 /* Jabber Detected */
+#define MII_SR_LINK_STATUS 0x0004 /* Link Status 1 = link */
+#define MII_SR_AUTONEG_CAPS 0x0008 /* Auto Neg Capable */
+#define MII_SR_REMOTE_FAULT 0x0010 /* Remote Fault Detect */
+#define MII_SR_AUTONEG_COMPLETE 0x0020 /* Auto Neg Complete */
#define MII_SR_PREAMBLE_SUPPRESS 0x0040 /* Preamble may be suppressed */
-#define MII_SR_EXTENDED_STATUS 0x0100 /* Ext. status info in Reg 0x0F */
-#define MII_SR_100T2_HD_CAPS 0x0200 /* 100T2 Half Duplex Capable */
-#define MII_SR_100T2_FD_CAPS 0x0400 /* 100T2 Full Duplex Capable */
-#define MII_SR_10T_HD_CAPS 0x0800 /* 10T Half Duplex Capable */
-#define MII_SR_10T_FD_CAPS 0x1000 /* 10T Full Duplex Capable */
-#define MII_SR_100X_HD_CAPS 0x2000 /* 100X Half Duplex Capable */
-#define MII_SR_100X_FD_CAPS 0x4000 /* 100X Full Duplex Capable */
-#define MII_SR_100T4_CAPS 0x8000 /* 100T4 Capable */
+#define MII_SR_EXTENDED_STATUS 0x0100 /* Ext. status info in Reg 0x0F */
+#define MII_SR_100T2_HD_CAPS 0x0200 /* 100T2 Half Duplex Capable */
+#define MII_SR_100T2_FD_CAPS 0x0400 /* 100T2 Full Duplex Capable */
+#define MII_SR_10T_HD_CAPS 0x0800 /* 10T Half Duplex Capable */
+#define MII_SR_10T_FD_CAPS 0x1000 /* 10T Full Duplex Capable */
+#define MII_SR_100X_HD_CAPS 0x2000 /* 100X Half Duplex Capable */
+#define MII_SR_100X_FD_CAPS 0x4000 /* 100X Full Duplex Capable */
+#define MII_SR_100T4_CAPS 0x8000 /* 100T4 Capable */
/* Autoneg Advertisement Register */
-#define NWAY_AR_SELECTOR_FIELD 0x0001 /* indicates IEEE 802.3 CSMA/CD */
-#define NWAY_AR_10T_HD_CAPS 0x0020 /* 10T Half Duplex Capable */
-#define NWAY_AR_10T_FD_CAPS 0x0040 /* 10T Full Duplex Capable */
-#define NWAY_AR_100TX_HD_CAPS 0x0080 /* 100TX Half Duplex Capable */
-#define NWAY_AR_100TX_FD_CAPS 0x0100 /* 100TX Full Duplex Capable */
-#define NWAY_AR_100T4_CAPS 0x0200 /* 100T4 Capable */
-#define NWAY_AR_PAUSE 0x0400 /* Pause operation desired */
-#define NWAY_AR_ASM_DIR 0x0800 /* Asymmetric Pause Direction bit */
-#define NWAY_AR_REMOTE_FAULT 0x2000 /* Remote Fault detected */
-#define NWAY_AR_NEXT_PAGE 0x8000 /* Next Page ability supported */
+#define NWAY_AR_SELECTOR_FIELD 0x0001 /* indicates IEEE 802.3 CSMA/CD */
+#define NWAY_AR_10T_HD_CAPS 0x0020 /* 10T Half Duplex Capable */
+#define NWAY_AR_10T_FD_CAPS 0x0040 /* 10T Full Duplex Capable */
+#define NWAY_AR_100TX_HD_CAPS 0x0080 /* 100TX Half Duplex Capable */
+#define NWAY_AR_100TX_FD_CAPS 0x0100 /* 100TX Full Duplex Capable */
+#define NWAY_AR_100T4_CAPS 0x0200 /* 100T4 Capable */
+#define NWAY_AR_PAUSE 0x0400 /* Pause operation desired */
+#define NWAY_AR_ASM_DIR 0x0800 /* Asymmetric Pause Direction bit */
+#define NWAY_AR_REMOTE_FAULT 0x2000 /* Remote Fault detected */
+#define NWAY_AR_NEXT_PAGE 0x8000 /* Next Page ability supported */
/* Link Partner Ability Register (Base Page) */
-#define NWAY_LPAR_SELECTOR_FIELD 0x0000 /* LP protocol selector field */
-#define NWAY_LPAR_10T_HD_CAPS 0x0020 /* LP is 10T Half Duplex Capable */
-#define NWAY_LPAR_10T_FD_CAPS 0x0040 /* LP is 10T Full Duplex Capable */
-#define NWAY_LPAR_100TX_HD_CAPS 0x0080 /* LP is 100TX Half Duplex Capable */
-#define NWAY_LPAR_100TX_FD_CAPS 0x0100 /* LP is 100TX Full Duplex Capable */
-#define NWAY_LPAR_100T4_CAPS 0x0200 /* LP is 100T4 Capable */
-#define NWAY_LPAR_PAUSE 0x0400 /* LP Pause operation desired */
-#define NWAY_LPAR_ASM_DIR 0x0800 /* LP Asymmetric Pause Direction bit */
-#define NWAY_LPAR_REMOTE_FAULT 0x2000 /* LP has detected Remote Fault */
-#define NWAY_LPAR_ACKNOWLEDGE 0x4000 /* LP has rx'd link code word */
-#define NWAY_LPAR_NEXT_PAGE 0x8000 /* Next Page ability supported */
+#define NWAY_LPAR_SELECTOR_FIELD 0x0000 /* LP protocol selector field */
+#define NWAY_LPAR_10T_HD_CAPS 0x0020 /* LP 10T Half Dplx Capable */
+#define NWAY_LPAR_10T_FD_CAPS 0x0040 /* LP 10T Full Dplx Capable */
+#define NWAY_LPAR_100TX_HD_CAPS 0x0080 /* LP 100TX Half Dplx Capable */
+#define NWAY_LPAR_100TX_FD_CAPS 0x0100 /* LP 100TX Full Dplx Capable */
+#define NWAY_LPAR_100T4_CAPS 0x0200 /* LP is 100T4 Capable */
+#define NWAY_LPAR_PAUSE 0x0400 /* LP Pause operation desired */
+#define NWAY_LPAR_ASM_DIR 0x0800 /* LP Asym Pause Direction bit */
+#define NWAY_LPAR_REMOTE_FAULT 0x2000 /* LP detected Remote Fault */
+#define NWAY_LPAR_ACKNOWLEDGE 0x4000 /* LP rx'd link code word */
+#define NWAY_LPAR_NEXT_PAGE 0x8000 /* Next Page ability supported */
/* Autoneg Expansion Register */
-#define NWAY_ER_LP_NWAY_CAPS 0x0001 /* LP has Auto Neg Capability */
-#define NWAY_ER_PAGE_RXD 0x0002 /* LP is 10T Half Duplex Capable */
-#define NWAY_ER_NEXT_PAGE_CAPS 0x0004 /* LP is 10T Full Duplex Capable */
-#define NWAY_ER_LP_NEXT_PAGE_CAPS 0x0008 /* LP is 100TX Half Duplex Capable */
-#define NWAY_ER_PAR_DETECT_FAULT 0x0010 /* LP is 100TX Full Duplex Capable */
+#define NWAY_ER_LP_NWAY_CAPS 0x0001 /* LP has Auto Neg Capability */
+#define NWAY_ER_PAGE_RXD 0x0002 /* LP 10T Half Dplx Capable */
+#define NWAY_ER_NEXT_PAGE_CAPS 0x0004 /* LP 10T Full Dplx Capable */
+#define NWAY_ER_LP_NEXT_PAGE_CAPS 0x0008 /* LP 100TX Half Dplx Capable */
+#define NWAY_ER_PAR_DETECT_FAULT 0x0010 /* LP 100TX Full Dplx Capable */
/* 1000BASE-T Control Register */
-#define CR_1000T_ASYM_PAUSE 0x0080 /* Advertise asymmetric pause bit */
-#define CR_1000T_HD_CAPS 0x0100 /* Advertise 1000T HD capability */
-#define CR_1000T_FD_CAPS 0x0200 /* Advertise 1000T FD capability */
-#define CR_1000T_REPEATER_DTE 0x0400 /* 1=Repeater/switch device port */
- /* 0=DTE device */
-#define CR_1000T_MS_VALUE 0x0800 /* 1=Configure PHY as Master */
- /* 0=Configure PHY as Slave */
-#define CR_1000T_MS_ENABLE 0x1000 /* 1=Master/Slave manual config value */
- /* 0=Automatic Master/Slave config */
+#define CR_1000T_ASYM_PAUSE 0x0080 /* Advertise asymmetric pause bit */
+#define CR_1000T_HD_CAPS 0x0100 /* Advertise 1000T HD capability */
+#define CR_1000T_FD_CAPS 0x0200 /* Advertise 1000T FD capability */
+/* 1=Repeater/switch device port 0=DTE device */
+#define CR_1000T_REPEATER_DTE 0x0400
+/* 1=Configure PHY as Master 0=Configure PHY as Slave */
+#define CR_1000T_MS_VALUE 0x0800
+/* 1=Master/Slave manual config value 0=Automatic Master/Slave config */
+#define CR_1000T_MS_ENABLE 0x1000
#define CR_1000T_TEST_MODE_NORMAL 0x0000 /* Normal Operation */
-#define CR_1000T_TEST_MODE_1 0x2000 /* Transmit Waveform test */
-#define CR_1000T_TEST_MODE_2 0x4000 /* Master Transmit Jitter test */
-#define CR_1000T_TEST_MODE_3 0x6000 /* Slave Transmit Jitter test */
-#define CR_1000T_TEST_MODE_4 0x8000 /* Transmitter Distortion test */
+#define CR_1000T_TEST_MODE_1 0x2000 /* Transmit Waveform test */
+#define CR_1000T_TEST_MODE_2 0x4000 /* Master Transmit Jitter test */
+#define CR_1000T_TEST_MODE_3 0x6000 /* Slave Transmit Jitter test */
+#define CR_1000T_TEST_MODE_4 0x8000 /* Transmitter Distortion test */
/* 1000BASE-T Status Register */
-#define SR_1000T_IDLE_ERROR_CNT 0x00FF /* Num idle errors since last read */
-#define SR_1000T_ASYM_PAUSE_DIR 0x0100 /* LP asymmetric pause direction bit */
-#define SR_1000T_LP_HD_CAPS 0x0400 /* LP is 1000T HD capable */
-#define SR_1000T_LP_FD_CAPS 0x0800 /* LP is 1000T FD capable */
-#define SR_1000T_REMOTE_RX_STATUS 0x1000 /* Remote receiver OK */
-#define SR_1000T_LOCAL_RX_STATUS 0x2000 /* Local receiver OK */
-#define SR_1000T_MS_CONFIG_RES 0x4000 /* 1=Local Tx is Master, 0=Slave */
-#define SR_1000T_MS_CONFIG_FAULT 0x8000 /* Master/Slave config fault */
+#define SR_1000T_IDLE_ERROR_CNT 0x00FF /* Num idle err since last rd */
+#define SR_1000T_ASYM_PAUSE_DIR 0x0100 /* LP asym pause direction bit */
+#define SR_1000T_LP_HD_CAPS 0x0400 /* LP is 1000T HD capable */
+#define SR_1000T_LP_FD_CAPS 0x0800 /* LP is 1000T FD capable */
+#define SR_1000T_REMOTE_RX_STATUS 0x1000 /* Remote receiver OK */
+#define SR_1000T_LOCAL_RX_STATUS 0x2000 /* Local receiver OK */
+#define SR_1000T_MS_CONFIG_RES 0x4000 /* 1=Local Tx Master, 0=Slave */
+#define SR_1000T_MS_CONFIG_FAULT 0x8000 /* Master/Slave config fault */
-#define SR_1000T_PHY_EXCESSIVE_IDLE_ERR_COUNT 5
+#define SR_1000T_PHY_EXCESSIVE_IDLE_ERR_COUNT 5
/* PHY 1000 MII Register/Bit Definitions */
/* PHY Registers defined by IEEE */
-#define PHY_CONTROL 0x00 /* Control Register */
-#define PHY_STATUS 0x01 /* Status Register */
-#define PHY_ID1 0x02 /* Phy Id Reg (word 1) */
-#define PHY_ID2 0x03 /* Phy Id Reg (word 2) */
-#define PHY_AUTONEG_ADV 0x04 /* Autoneg Advertisement */
-#define PHY_LP_ABILITY 0x05 /* Link Partner Ability (Base Page) */
-#define PHY_AUTONEG_EXP 0x06 /* Autoneg Expansion Reg */
-#define PHY_NEXT_PAGE_TX 0x07 /* Next Page Tx */
-#define PHY_LP_NEXT_PAGE 0x08 /* Link Partner Next Page */
-#define PHY_1000T_CTRL 0x09 /* 1000Base-T Control Reg */
-#define PHY_1000T_STATUS 0x0A /* 1000Base-T Status Reg */
-#define PHY_EXT_STATUS 0x0F /* Extended Status Reg */
-
-#define PHY_CONTROL_LB 0x4000 /* PHY Loopback bit */
+#define PHY_CONTROL 0x00 /* Control Register */
+#define PHY_STATUS 0x01 /* Status Register */
+#define PHY_ID1 0x02 /* Phy Id Reg (word 1) */
+#define PHY_ID2 0x03 /* Phy Id Reg (word 2) */
+#define PHY_AUTONEG_ADV 0x04 /* Autoneg Advertisement */
+#define PHY_LP_ABILITY 0x05 /* Link Partner Ability (Base Page) */
+#define PHY_AUTONEG_EXP 0x06 /* Autoneg Expansion Reg */
+#define PHY_NEXT_PAGE_TX 0x07 /* Next Page Tx */
+#define PHY_LP_NEXT_PAGE 0x08 /* Link Partner Next Page */
+#define PHY_1000T_CTRL 0x09 /* 1000Base-T Control Reg */
+#define PHY_1000T_STATUS 0x0A /* 1000Base-T Status Reg */
+#define PHY_EXT_STATUS 0x0F /* Extended Status Reg */
+
+#define PHY_CONTROL_LB 0x4000 /* PHY Loopback bit */
/* NVM Control */
-#define E1000_EECD_SK 0x00000001 /* NVM Clock */
-#define E1000_EECD_CS 0x00000002 /* NVM Chip Select */
-#define E1000_EECD_DI 0x00000004 /* NVM Data In */
-#define E1000_EECD_DO 0x00000008 /* NVM Data Out */
-#define E1000_EECD_FWE_MASK 0x00000030
-#define E1000_EECD_FWE_DIS 0x00000010 /* Disable FLASH writes */
-#define E1000_EECD_FWE_EN 0x00000020 /* Enable FLASH writes */
-#define E1000_EECD_FWE_SHIFT 4
-#define E1000_EECD_REQ 0x00000040 /* NVM Access Request */
-#define E1000_EECD_GNT 0x00000080 /* NVM Access Grant */
-#define E1000_EECD_PRES 0x00000100 /* NVM Present */
-#define E1000_EECD_SIZE 0x00000200 /* NVM Size (0=64 word 1=256 word) */
+#define E1000_EECD_SK 0x00000001 /* NVM Clock */
+#define E1000_EECD_CS 0x00000002 /* NVM Chip Select */
+#define E1000_EECD_DI 0x00000004 /* NVM Data In */
+#define E1000_EECD_DO 0x00000008 /* NVM Data Out */
+#define E1000_EECD_FWE_MASK 0x00000030
+#define E1000_EECD_FWE_DIS 0x00000010 /* Disable FLASH writes */
+#define E1000_EECD_FWE_EN 0x00000020 /* Enable FLASH writes */
+#define E1000_EECD_FWE_SHIFT 4
+#define E1000_EECD_REQ 0x00000040 /* NVM Access Request */
+#define E1000_EECD_GNT 0x00000080 /* NVM Access Grant */
+#define E1000_EECD_PRES 0x00000100 /* NVM Present */
+#define E1000_EECD_SIZE 0x00000200 /* NVM Size (0=64 word 1=256 word) */
+#define E1000_EECD_BLOCKED 0x00008000 /* Bit banging access blocked flag */
+#define E1000_EECD_ABORT 0x00010000 /* NVM operation aborted flag */
+#define E1000_EECD_TIMEOUT 0x00020000 /* NVM read operation timeout flag */
+#define E1000_EECD_ERROR_CLR 0x00040000 /* NVM error status clear bit */
/* NVM Addressing bits based on type 0=small, 1=large */
-#define E1000_EECD_ADDR_BITS 0x00000400
-#define E1000_EECD_TYPE 0x00002000 /* NVM Type (1-SPI, 0-Microwire) */
+#define E1000_EECD_ADDR_BITS 0x00000400
+#define E1000_EECD_TYPE 0x00002000 /* NVM Type (1-SPI, 0-Microwire) */
#ifndef E1000_NVM_GRANT_ATTEMPTS
-#define E1000_NVM_GRANT_ATTEMPTS 1000 /* NVM # attempts to gain grant */
+#define E1000_NVM_GRANT_ATTEMPTS 1000 /* NVM # attempts to gain grant */
#endif
-#define E1000_EECD_AUTO_RD 0x00000200 /* NVM Auto Read done */
-#define E1000_EECD_SIZE_EX_MASK 0x00007800 /* NVM Size */
-#define E1000_EECD_SIZE_EX_SHIFT 11
-#define E1000_EECD_NVADDS 0x00018000 /* NVM Address Size */
-#define E1000_EECD_SELSHAD 0x00020000 /* Select Shadow RAM */
-#define E1000_EECD_INITSRAM 0x00040000 /* Initialize Shadow RAM */
-#define E1000_EECD_FLUPD 0x00080000 /* Update FLASH */
-#define E1000_EECD_AUPDEN 0x00100000 /* Enable Autonomous FLASH update */
-#define E1000_EECD_SHADV 0x00200000 /* Shadow RAM Data Valid */
-#define E1000_EECD_SEC1VAL 0x00400000 /* Sector One Valid */
-#define E1000_EECD_SECVAL_SHIFT 22
-#define E1000_EECD_SEC1VAL_VALID_MASK (E1000_EECD_AUTO_RD | E1000_EECD_PRES)
-
-#define E1000_NVM_SWDPIN0 0x0001 /* SWDPIN 0 NVM Value */
-#define E1000_NVM_LED_LOGIC 0x0020 /* Led Logic Word */
-#define E1000_NVM_RW_REG_DATA 16 /* Offset to data in NVM read/write regs */
-#define E1000_NVM_RW_REG_DONE 2 /* Offset to READ/WRITE done bit */
-#define E1000_NVM_RW_REG_START 1 /* Start operation */
-#define E1000_NVM_RW_ADDR_SHIFT 2 /* Shift to the address bits */
-#define E1000_NVM_POLL_WRITE 1 /* Flag for polling for write complete */
-#define E1000_NVM_POLL_READ 0 /* Flag for polling for read complete */
-#define E1000_FLASH_UPDATES 2000
+#define E1000_EECD_AUTO_RD 0x00000200 /* NVM Auto Read done */
+#define E1000_EECD_SIZE_EX_MASK 0x00007800 /* NVM Size */
+#define E1000_EECD_SIZE_EX_SHIFT 11
+#define E1000_EECD_NVADDS 0x00018000 /* NVM Address Size */
+#define E1000_EECD_SELSHAD 0x00020000 /* Select Shadow RAM */
+#define E1000_EECD_INITSRAM 0x00040000 /* Initialize Shadow RAM */
+#define E1000_EECD_FLUPD 0x00080000 /* Update FLASH */
+#define E1000_EECD_AUPDEN 0x00100000 /* Ena Auto FLASH update */
+#define E1000_EECD_SHADV 0x00200000 /* Shadow RAM Data Valid */
+#define E1000_EECD_SEC1VAL 0x00400000 /* Sector One Valid */
+#define E1000_EECD_SECVAL_SHIFT 22
+#define E1000_EECD_SEC1VAL_VALID_MASK (E1000_EECD_AUTO_RD | E1000_EECD_PRES)
+
+#define E1000_NVM_SWDPIN0 0x0001 /* SWDPIN 0 NVM Value */
+#define E1000_NVM_LED_LOGIC 0x0020 /* Led Logic Word */
+#define E1000_NVM_RW_REG_DATA 16 /* Offset to data in NVM read/write regs */
+#define E1000_NVM_RW_REG_DONE 2 /* Offset to READ/WRITE done bit */
+#define E1000_NVM_RW_REG_START 1 /* Start operation */
+#define E1000_NVM_RW_ADDR_SHIFT 2 /* Shift to the address bits */
+#define E1000_NVM_POLL_WRITE 1 /* Flag for polling for write complete */
+#define E1000_NVM_POLL_READ 0 /* Flag for polling for read complete */
+#define E1000_FLASH_UPDATES 2000
/* NVM Word Offsets */
-#define NVM_COMPAT 0x0003
-#define NVM_ID_LED_SETTINGS 0x0004
-#define NVM_VERSION 0x0005
-#define NVM_SERDES_AMPLITUDE 0x0006 /* SERDES output amplitude */
-#define NVM_PHY_CLASS_WORD 0x0007
-#define NVM_INIT_CONTROL1_REG 0x000A
-#define NVM_INIT_CONTROL2_REG 0x000F
-#define NVM_SWDEF_PINS_CTRL_PORT_1 0x0010
-#define NVM_INIT_CONTROL3_PORT_B 0x0014
-#define NVM_INIT_3GIO_3 0x001A
-#define NVM_SWDEF_PINS_CTRL_PORT_0 0x0020
-#define NVM_INIT_CONTROL3_PORT_A 0x0024
-#define NVM_CFG 0x0012
-#define NVM_FLASH_VERSION 0x0032
-#define NVM_ALT_MAC_ADDR_PTR 0x0037
-#define NVM_CHECKSUM_REG 0x003F
-#define NVM_COMPATIBILITY_REG_3 0x0003
-#define NVM_COMPATIBILITY_BIT_MASK 0x8000
-
-#define E1000_NVM_CFG_DONE_PORT_0 0x040000 /* MNG config cycle done */
-#define E1000_NVM_CFG_DONE_PORT_1 0x080000 /* ...for second port */
-#define E1000_NVM_CFG_DONE_PORT_2 0x100000 /* ...for third port */
-#define E1000_NVM_CFG_DONE_PORT_3 0x200000 /* ...for fourth port */
-
-#define NVM_82580_LAN_FUNC_OFFSET(a) (a ? (0x40 + (0x40 * a)) : 0)
+#define NVM_COMPAT 0x0003
+#define NVM_ID_LED_SETTINGS 0x0004
+#define NVM_VERSION 0x0005
+#define NVM_SERDES_AMPLITUDE 0x0006 /* SERDES output amplitude */
+#define NVM_PHY_CLASS_WORD 0x0007
+#define NVM_INIT_CONTROL1_REG 0x000A
+#define NVM_INIT_CONTROL2_REG 0x000F
+#define NVM_SWDEF_PINS_CTRL_PORT_1 0x0010
+#define NVM_INIT_CONTROL3_PORT_B 0x0014
+#define NVM_INIT_3GIO_3 0x001A
+#define NVM_SWDEF_PINS_CTRL_PORT_0 0x0020
+#define NVM_INIT_CONTROL3_PORT_A 0x0024
+#define NVM_CFG 0x0012
+#define NVM_FLASH_VERSION 0x0032
+#define NVM_ALT_MAC_ADDR_PTR 0x0037
+#define NVM_CHECKSUM_REG 0x003F
+#define NVM_COMPATIBILITY_REG_3 0x0003
+#define NVM_COMPATIBILITY_BIT_MASK 0x8000
+
+#define E1000_NVM_CFG_DONE_PORT_0 0x040000 /* MNG config cycle done */
+#define E1000_NVM_CFG_DONE_PORT_1 0x080000 /* ...for second port */
+#define E1000_NVM_CFG_DONE_PORT_2 0x100000 /* ...for third port */
+#define E1000_NVM_CFG_DONE_PORT_3 0x200000 /* ...for fourth port */
+
+#define NVM_82580_LAN_FUNC_OFFSET(a) (a ? (0x40 + (0x40 * a)) : 0)
/* Mask bits for fields in Word 0x24 of the NVM */
-#define NVM_WORD24_COM_MDIO 0x0008 /* MDIO interface shared */
-#define NVM_WORD24_EXT_MDIO 0x0004 /* MDIO accesses routed external */
+#define NVM_WORD24_COM_MDIO 0x0008 /* MDIO interface shared */
+#define NVM_WORD24_EXT_MDIO 0x0004 /* MDIO accesses routed extrnl */
+/* Offset of Link Mode bits for 82575 up to Kawela */
+#define NVM_WORD24_LNK_MODE_OFFSET 8
+/* Offset of Link Mode bits for 82580 up */
+#define NVM_WORD24_82580_LNK_MODE_OFFSET 4
+
/* Mask bits for fields in Word 0x0f of the NVM */
-#define NVM_WORD0F_PAUSE_MASK 0x3000
-#define NVM_WORD0F_PAUSE 0x1000
-#define NVM_WORD0F_ASM_DIR 0x2000
-#define NVM_WORD0F_ANE 0x0800
-#define NVM_WORD0F_SWPDIO_EXT_MASK 0x00F0
-#define NVM_WORD0F_LPLU 0x0001
+#define NVM_WORD0F_PAUSE_MASK 0x3000
+#define NVM_WORD0F_PAUSE 0x1000
+#define NVM_WORD0F_ASM_DIR 0x2000
+#define NVM_WORD0F_ANE 0x0800
+#define NVM_WORD0F_SWPDIO_EXT_MASK 0x00F0
+#define NVM_WORD0F_LPLU 0x0001
/* Mask bits for fields in Word 0x1a of the NVM */
-#define NVM_WORD1A_ASPM_MASK 0x000C
+#define NVM_WORD1A_ASPM_MASK 0x000C
/* Mask bits for fields in Word 0x03 of the EEPROM */
-#define NVM_COMPAT_LOM 0x0800
+#define NVM_COMPAT_LOM 0x0800
/* length of string needed to store PBA number */
-#define E1000_PBANUM_LENGTH 11
+#define E1000_PBANUM_LENGTH 11
/* For checksumming, the sum of all words in the NVM should equal 0xBABA. */
-#define NVM_SUM 0xBABA
-
-#define NVM_MAC_ADDR_OFFSET 0
-#define NVM_PBA_OFFSET_0 8
-#define NVM_PBA_OFFSET_1 9
-#define NVM_PBA_PTR_GUARD 0xFAFA
-#define NVM_RESERVED_WORD 0xFFFF
-#define NVM_PHY_CLASS_A 0x8000
-#define NVM_SERDES_AMPLITUDE_MASK 0x000F
-#define NVM_SIZE_MASK 0x1C00
-#define NVM_SIZE_SHIFT 10
-#define NVM_WORD_SIZE_BASE_SHIFT 6
-#define NVM_SWDPIO_EXT_SHIFT 4
+#define NVM_SUM 0xBABA
+
+#define NVM_MAC_ADDR_OFFSET 0
+#define NVM_PBA_OFFSET_0 8
+#define NVM_PBA_OFFSET_1 9
+#define NVM_PBA_PTR_GUARD 0xFAFA
+#define NVM_RESERVED_WORD 0xFFFF
+#define NVM_PHY_CLASS_A 0x8000
+#define NVM_SERDES_AMPLITUDE_MASK 0x000F
+#define NVM_SIZE_MASK 0x1C00
+#define NVM_SIZE_SHIFT 10
+#define NVM_WORD_SIZE_BASE_SHIFT 6
+#define NVM_SWDPIO_EXT_SHIFT 4
/* NVM Commands - Microwire */
-#define NVM_READ_OPCODE_MICROWIRE 0x6 /* NVM read opcode */
-#define NVM_WRITE_OPCODE_MICROWIRE 0x5 /* NVM write opcode */
-#define NVM_ERASE_OPCODE_MICROWIRE 0x7 /* NVM erase opcode */
-#define NVM_EWEN_OPCODE_MICROWIRE 0x13 /* NVM erase/write enable */
-#define NVM_EWDS_OPCODE_MICROWIRE 0x10 /* NVM erase/write disable */
+#define NVM_READ_OPCODE_MICROWIRE 0x6 /* NVM read opcode */
+#define NVM_WRITE_OPCODE_MICROWIRE 0x5 /* NVM write opcode */
+#define NVM_ERASE_OPCODE_MICROWIRE 0x7 /* NVM erase opcode */
+#define NVM_EWEN_OPCODE_MICROWIRE 0x13 /* NVM erase/write enable */
+#define NVM_EWDS_OPCODE_MICROWIRE 0x10 /* NVM erase/write disable */
/* NVM Commands - SPI */
-#define NVM_MAX_RETRY_SPI 5000 /* Max wait of 5ms, for RDY signal */
-#define NVM_READ_OPCODE_SPI 0x03 /* NVM read opcode */
-#define NVM_WRITE_OPCODE_SPI 0x02 /* NVM write opcode */
-#define NVM_A8_OPCODE_SPI 0x08 /* opcode bit-3 = address bit-8 */
-#define NVM_WREN_OPCODE_SPI 0x06 /* NVM set Write Enable latch */
-#define NVM_WRDI_OPCODE_SPI 0x04 /* NVM reset Write Enable latch */
-#define NVM_RDSR_OPCODE_SPI 0x05 /* NVM read Status register */
-#define NVM_WRSR_OPCODE_SPI 0x01 /* NVM write Status register */
+#define NVM_MAX_RETRY_SPI 5000 /* Max wait of 5ms, for RDY signal */
+#define NVM_READ_OPCODE_SPI 0x03 /* NVM read opcode */
+#define NVM_WRITE_OPCODE_SPI 0x02 /* NVM write opcode */
+#define NVM_A8_OPCODE_SPI 0x08 /* opcode bit-3 = address bit-8 */
+#define NVM_WREN_OPCODE_SPI 0x06 /* NVM set Write Enable latch */
+#define NVM_WRDI_OPCODE_SPI 0x04 /* NVM reset Write Enable latch */
+#define NVM_RDSR_OPCODE_SPI 0x05 /* NVM read Status register */
+#define NVM_WRSR_OPCODE_SPI 0x01 /* NVM write Status register */
/* SPI NVM Status Register */
-#define NVM_STATUS_RDY_SPI 0x01
-#define NVM_STATUS_WEN_SPI 0x02
-#define NVM_STATUS_BP0_SPI 0x04
-#define NVM_STATUS_BP1_SPI 0x08
-#define NVM_STATUS_WPEN_SPI 0x80
+#define NVM_STATUS_RDY_SPI 0x01
+#define NVM_STATUS_WEN_SPI 0x02
+#define NVM_STATUS_BP0_SPI 0x04
+#define NVM_STATUS_BP1_SPI 0x08
+#define NVM_STATUS_WPEN_SPI 0x80
/* Word definitions for ID LED Settings */
-#define ID_LED_RESERVED_0000 0x0000
-#define ID_LED_RESERVED_FFFF 0xFFFF
-#define ID_LED_DEFAULT ((ID_LED_OFF1_ON2 << 12) | \
- (ID_LED_OFF1_OFF2 << 8) | \
- (ID_LED_DEF1_DEF2 << 4) | \
- (ID_LED_DEF1_DEF2))
-#define ID_LED_DEF1_DEF2 0x1
-#define ID_LED_DEF1_ON2 0x2
-#define ID_LED_DEF1_OFF2 0x3
-#define ID_LED_ON1_DEF2 0x4
-#define ID_LED_ON1_ON2 0x5
-#define ID_LED_ON1_OFF2 0x6
-#define ID_LED_OFF1_DEF2 0x7
-#define ID_LED_OFF1_ON2 0x8
-#define ID_LED_OFF1_OFF2 0x9
-
-#define IGP_ACTIVITY_LED_MASK 0xFFFFF0FF
-#define IGP_ACTIVITY_LED_ENABLE 0x0300
-#define IGP_LED3_MODE 0x07000000
+#define ID_LED_RESERVED_0000 0x0000
+#define ID_LED_RESERVED_FFFF 0xFFFF
+#define ID_LED_DEFAULT ((ID_LED_OFF1_ON2 << 12) | \
+ (ID_LED_OFF1_OFF2 << 8) | \
+ (ID_LED_DEF1_DEF2 << 4) | \
+ (ID_LED_DEF1_DEF2))
+#define ID_LED_DEF1_DEF2 0x1
+#define ID_LED_DEF1_ON2 0x2
+#define ID_LED_DEF1_OFF2 0x3
+#define ID_LED_ON1_DEF2 0x4
+#define ID_LED_ON1_ON2 0x5
+#define ID_LED_ON1_OFF2 0x6
+#define ID_LED_OFF1_DEF2 0x7
+#define ID_LED_OFF1_ON2 0x8
+#define ID_LED_OFF1_OFF2 0x9
+
+#define IGP_ACTIVITY_LED_MASK 0xFFFFF0FF
+#define IGP_ACTIVITY_LED_ENABLE 0x0300
+#define IGP_LED3_MODE 0x07000000
/* PCI/PCI-X/PCI-EX Config space */
-#define PCIX_COMMAND_REGISTER 0xE6
-#define PCIX_STATUS_REGISTER_LO 0xE8
-#define PCIX_STATUS_REGISTER_HI 0xEA
-#define PCI_HEADER_TYPE_REGISTER 0x0E
-#define PCIE_LINK_STATUS 0x12
-#define PCIE_DEVICE_CONTROL2 0x28
-
-#define PCIX_COMMAND_MMRBC_MASK 0x000C
-#define PCIX_COMMAND_MMRBC_SHIFT 0x2
-#define PCIX_STATUS_HI_MMRBC_MASK 0x0060
-#define PCIX_STATUS_HI_MMRBC_SHIFT 0x5
-#define PCIX_STATUS_HI_MMRBC_4K 0x3
-#define PCIX_STATUS_HI_MMRBC_2K 0x2
-#define PCIX_STATUS_LO_FUNC_MASK 0x7
-#define PCI_HEADER_TYPE_MULTIFUNC 0x80
-#define PCIE_LINK_WIDTH_MASK 0x3F0
-#define PCIE_LINK_WIDTH_SHIFT 4
-#define PCIE_LINK_SPEED_MASK 0x0F
-#define PCIE_LINK_SPEED_2500 0x01
-#define PCIE_LINK_SPEED_5000 0x02
-#define PCIE_DEVICE_CONTROL2_16ms 0x0005
+#define PCIX_COMMAND_REGISTER 0xE6
+#define PCIX_STATUS_REGISTER_LO 0xE8
+#define PCIX_STATUS_REGISTER_HI 0xEA
+#define PCI_HEADER_TYPE_REGISTER 0x0E
+#define PCIE_LINK_STATUS 0x12
+#define PCIE_DEVICE_CONTROL2 0x28
+
+#define PCIX_COMMAND_MMRBC_MASK 0x000C
+#define PCIX_COMMAND_MMRBC_SHIFT 0x2
+#define PCIX_STATUS_HI_MMRBC_MASK 0x0060
+#define PCIX_STATUS_HI_MMRBC_SHIFT 0x5
+#define PCIX_STATUS_HI_MMRBC_4K 0x3
+#define PCIX_STATUS_HI_MMRBC_2K 0x2
+#define PCIX_STATUS_LO_FUNC_MASK 0x7
+#define PCI_HEADER_TYPE_MULTIFUNC 0x80
+#define PCIE_LINK_WIDTH_MASK 0x3F0
+#define PCIE_LINK_WIDTH_SHIFT 4
+#define PCIE_LINK_SPEED_MASK 0x0F
+#define PCIE_LINK_SPEED_2500 0x01
+#define PCIE_LINK_SPEED_5000 0x02
+#define PCIE_DEVICE_CONTROL2_16ms 0x0005
#ifndef ETH_ADDR_LEN
-#define ETH_ADDR_LEN 6
+#define ETH_ADDR_LEN 6
#endif
-#define PHY_REVISION_MASK 0xFFFFFFF0
-#define MAX_PHY_REG_ADDRESS 0x1F /* 5 bit address bus (0-0x1F) */
-#define MAX_PHY_MULTI_PAGE_REG 0xF
+#define PHY_REVISION_MASK 0xFFFFFFF0
+#define MAX_PHY_REG_ADDRESS 0x1F /* 5 bit address bus (0-0x1F) */
+#define MAX_PHY_MULTI_PAGE_REG 0xF
/* Bit definitions for valid PHY IDs. */
/*
* I = Integrated
* E = External
*/
-#define M88E1000_E_PHY_ID 0x01410C50
-#define M88E1000_I_PHY_ID 0x01410C30
-#define M88E1011_I_PHY_ID 0x01410C20
-#define IGP01E1000_I_PHY_ID 0x02A80380
-#define M88E1011_I_REV_4 0x04
-#define M88E1111_I_PHY_ID 0x01410CC0
-#define M88E1112_E_PHY_ID 0x01410C90
-#define I347AT4_E_PHY_ID 0x01410DC0
-#define M88E1340M_E_PHY_ID 0x01410DF0
-#define GG82563_E_PHY_ID 0x01410CA0
-#define IGP03E1000_E_PHY_ID 0x02A80390
-#define IFE_E_PHY_ID 0x02A80330
-#define IFE_PLUS_E_PHY_ID 0x02A80320
-#define IFE_C_E_PHY_ID 0x02A80310
-#define BME1000_E_PHY_ID 0x01410CB0
-#define BME1000_E_PHY_ID_R2 0x01410CB1
-#define I82577_E_PHY_ID 0x01540050
-#define I82578_E_PHY_ID 0x004DD040
-#define I82579_E_PHY_ID 0x01540090
-#define I82580_I_PHY_ID 0x015403A0
-#define I350_I_PHY_ID 0x015403B0
-#define IGP04E1000_E_PHY_ID 0x02A80391
-#define M88_VENDOR 0x0141
+#define M88E1000_E_PHY_ID 0x01410C50
+#define M88E1000_I_PHY_ID 0x01410C30
+#define M88E1011_I_PHY_ID 0x01410C20
+#define IGP01E1000_I_PHY_ID 0x02A80380
+#define M88E1011_I_REV_4 0x04
+#define M88E1111_I_PHY_ID 0x01410CC0
+#define M88E1112_E_PHY_ID 0x01410C90
+#define I347AT4_E_PHY_ID 0x01410DC0
+#define M88E1340M_E_PHY_ID 0x01410DF0
+#define GG82563_E_PHY_ID 0x01410CA0
+#define IGP03E1000_E_PHY_ID 0x02A80390
+#define IFE_E_PHY_ID 0x02A80330
+#define IFE_PLUS_E_PHY_ID 0x02A80320
+#define IFE_C_E_PHY_ID 0x02A80310
+#define BME1000_E_PHY_ID 0x01410CB0
+#define BME1000_E_PHY_ID_R2 0x01410CB1
+#define I82577_E_PHY_ID 0x01540050
+#define I82578_E_PHY_ID 0x004DD040
+#define I82579_E_PHY_ID 0x01540090
+#define I82580_I_PHY_ID 0x015403A0
+#define I350_I_PHY_ID 0x015403B0
+#define IGP04E1000_E_PHY_ID 0x02A80391
+#define M88_VENDOR 0x0141
/* M88E1000 Specific Registers */
-#define M88E1000_PHY_SPEC_CTRL 0x10 /* PHY Specific Control Register */
-#define M88E1000_PHY_SPEC_STATUS 0x11 /* PHY Specific Status Register */
-#define M88E1000_INT_ENABLE 0x12 /* Interrupt Enable Register */
-#define M88E1000_INT_STATUS 0x13 /* Interrupt Status Register */
-#define M88E1000_EXT_PHY_SPEC_CTRL 0x14 /* Extended PHY Specific Control */
-#define M88E1000_RX_ERR_CNTR 0x15 /* Receive Error Counter */
-
-#define M88E1000_PHY_EXT_CTRL 0x1A /* PHY extend control register */
-#define M88E1000_PHY_PAGE_SELECT 0x1D /* Reg 29 for page number setting */
-#define M88E1000_PHY_GEN_CONTROL 0x1E /* Its meaning depends on reg 29 */
-#define M88E1000_PHY_VCO_REG_BIT8 0x100 /* Bits 8 & 11 are adjusted for */
-#define M88E1000_PHY_VCO_REG_BIT11 0x800 /* improved BER performance */
+#define M88E1000_PHY_SPEC_CTRL 0x10 /* PHY Specific Control Reg */
+#define M88E1000_PHY_SPEC_STATUS 0x11 /* PHY Specific Status Reg */
+#define M88E1000_INT_ENABLE 0x12 /* Interrupt Enable Reg */
+#define M88E1000_INT_STATUS 0x13 /* Interrupt Status Reg */
+#define M88E1000_EXT_PHY_SPEC_CTRL 0x14 /* Extended PHY Specific Cntrl */
+#define M88E1000_RX_ERR_CNTR 0x15 /* Receive Error Counter */
+
+#define M88E1000_PHY_EXT_CTRL 0x1A /* PHY extend control register */
+#define M88E1000_PHY_PAGE_SELECT 0x1D /* Reg 29 for pg number setting */
+#define M88E1000_PHY_GEN_CONTROL 0x1E /* meaning depends on reg 29 */
+#define M88E1000_PHY_VCO_REG_BIT8 0x100 /* Bits 8 & 11 are adjusted for */
+#define M88E1000_PHY_VCO_REG_BIT11 0x800 /* improved BER performance */
/* M88E1000 PHY Specific Control Register */
-#define M88E1000_PSCR_JABBER_DISABLE 0x0001 /* 1=Jabber Function disabled */
-#define M88E1000_PSCR_POLARITY_REVERSAL 0x0002 /* 1=Polarity Reverse enabled */
-#define M88E1000_PSCR_SQE_TEST 0x0004 /* 1=SQE Test enabled */
+#define M88E1000_PSCR_JABBER_DISABLE 0x0001 /* 1=Jabber Function disabled */
+#define M88E1000_PSCR_POLARITY_REVERSAL 0x0002 /* 1=Polarity Reverse enabled */
+#define M88E1000_PSCR_SQE_TEST 0x0004 /* 1=SQE Test enabled */
/* 1=CLK125 low, 0=CLK125 toggling */
-#define M88E1000_PSCR_CLK125_DISABLE 0x0010
-#define M88E1000_PSCR_MDI_MANUAL_MODE 0x0000 /* MDI Crossover Mode bits 6:5 */
- /* Manual MDI configuration */
-#define M88E1000_PSCR_MDIX_MANUAL_MODE 0x0020 /* Manual MDIX configuration */
+#define M88E1000_PSCR_CLK125_DISABLE 0x0010
+/* MDI Crossover Mode bits 6:5 Manual MDI configuration */
+#define M88E1000_PSCR_MDI_MANUAL_MODE 0x0000
+#define M88E1000_PSCR_MDIX_MANUAL_MODE 0x0020 /* Manual MDIX configuration */
/* 1000BASE-T: Auto crossover, 100BASE-TX/10BASE-T: MDI Mode */
-#define M88E1000_PSCR_AUTO_X_1000T 0x0040
+#define M88E1000_PSCR_AUTO_X_1000T 0x0040
/* Auto crossover enabled all speeds */
-#define M88E1000_PSCR_AUTO_X_MODE 0x0060
+#define M88E1000_PSCR_AUTO_X_MODE 0x0060
/*
* 1=Enable Extended 10BASE-T distance (Lower 10BASE-T Rx Threshold
* 0=Normal 10BASE-T Rx Threshold
*/
-#define M88E1000_PSCR_EN_10BT_EXT_DIST 0x0080
+#define M88E1000_PSCR_EN_10BT_EXT_DIST 0x0080
/* 1=5-bit interface in 100BASE-TX, 0=MII interface in 100BASE-TX */
-#define M88E1000_PSCR_MII_5BIT_ENABLE 0x0100
-#define M88E1000_PSCR_SCRAMBLER_DISABLE 0x0200 /* 1=Scrambler disable */
-#define M88E1000_PSCR_FORCE_LINK_GOOD 0x0400 /* 1=Force link good */
-#define M88E1000_PSCR_ASSERT_CRS_ON_TX 0x0800 /* 1=Assert CRS on Tx */
+#define M88E1000_PSCR_MII_5BIT_ENABLE 0x0100
+#define M88E1000_PSCR_SCRAMBLER_DISABLE 0x0200 /* 1=Scrambler disable */
+#define M88E1000_PSCR_FORCE_LINK_GOOD 0x0400 /* 1=Force link good */
+#define M88E1000_PSCR_ASSERT_CRS_ON_TX 0x0800 /* 1=Assert CRS on Tx */
/* M88E1000 PHY Specific Status Register */
-#define M88E1000_PSSR_JABBER 0x0001 /* 1=Jabber */
-#define M88E1000_PSSR_REV_POLARITY 0x0002 /* 1=Polarity reversed */
-#define M88E1000_PSSR_DOWNSHIFT 0x0020 /* 1=Downshifted */
-#define M88E1000_PSSR_MDIX 0x0040 /* 1=MDIX; 0=MDI */
+#define M88E1000_PSSR_JABBER 0x0001 /* 1=Jabber */
+#define M88E1000_PSSR_REV_POLARITY 0x0002 /* 1=Polarity reversed */
+#define M88E1000_PSSR_DOWNSHIFT 0x0020 /* 1=Downshifted */
+#define M88E1000_PSSR_MDIX 0x0040 /* 1=MDIX; 0=MDI */
/*
* 0 = <50M
* 1 = 50-80M
@@ -1546,62 +1578,62 @@
* 3 = 110-140M
* 4 = >140M
*/
-#define M88E1000_PSSR_CABLE_LENGTH 0x0380
-#define M88E1000_PSSR_LINK 0x0400 /* 1=Link up, 0=Link down */
-#define M88E1000_PSSR_SPD_DPLX_RESOLVED 0x0800 /* 1=Speed & Duplex resolved */
-#define M88E1000_PSSR_PAGE_RCVD 0x1000 /* 1=Page received */
-#define M88E1000_PSSR_DPLX 0x2000 /* 1=Duplex 0=Half Duplex */
-#define M88E1000_PSSR_SPEED 0xC000 /* Speed, bits 14:15 */
-#define M88E1000_PSSR_10MBS 0x0000 /* 00=10Mbs */
-#define M88E1000_PSSR_100MBS 0x4000 /* 01=100Mbs */
-#define M88E1000_PSSR_1000MBS 0x8000 /* 10=1000Mbs */
-
-#define M88E1000_PSSR_CABLE_LENGTH_SHIFT 7
+#define M88E1000_PSSR_CABLE_LENGTH 0x0380
+#define M88E1000_PSSR_LINK 0x0400 /* 1=Link up, 0=Link down */
+#define M88E1000_PSSR_SPD_DPLX_RESOLVED 0x0800 /* 1=Speed & Duplex resolved */
+#define M88E1000_PSSR_PAGE_RCVD 0x1000 /* 1=Page received */
+#define M88E1000_PSSR_DPLX 0x2000 /* 1=Duplex 0=Half Duplex */
+#define M88E1000_PSSR_SPEED 0xC000 /* Speed, bits 14:15 */
+#define M88E1000_PSSR_10MBS 0x0000 /* 00=10Mbs */
+#define M88E1000_PSSR_100MBS 0x4000 /* 01=100Mbs */
+#define M88E1000_PSSR_1000MBS 0x8000 /* 10=1000Mbs */
+
+#define M88E1000_PSSR_CABLE_LENGTH_SHIFT 7
/* M88E1000 Extended PHY Specific Control Register */
-#define M88E1000_EPSCR_FIBER_LOOPBACK 0x4000 /* 1=Fiber loopback */
+#define M88E1000_EPSCR_FIBER_LOOPBACK 0x4000 /* 1=Fiber loopback */
/*
* 1 = Lost lock detect enabled.
* Will assert lost lock and bring
* link down if idle not seen
* within 1ms in 1000BASE-T
*/
-#define M88E1000_EPSCR_DOWN_NO_IDLE 0x8000
+#define M88E1000_EPSCR_DOWN_NO_IDLE 0x8000
/*
* Number of times we will attempt to autonegotiate before downshifting if we
* are the master
*/
-#define M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK 0x0C00
-#define M88E1000_EPSCR_MASTER_DOWNSHIFT_1X 0x0000
-#define M88E1000_EPSCR_MASTER_DOWNSHIFT_2X 0x0400
-#define M88E1000_EPSCR_MASTER_DOWNSHIFT_3X 0x0800
-#define M88E1000_EPSCR_MASTER_DOWNSHIFT_4X 0x0C00
+#define M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK 0x0C00
+#define M88E1000_EPSCR_MASTER_DOWNSHIFT_1X 0x0000
+#define M88E1000_EPSCR_MASTER_DOWNSHIFT_2X 0x0400
+#define M88E1000_EPSCR_MASTER_DOWNSHIFT_3X 0x0800
+#define M88E1000_EPSCR_MASTER_DOWNSHIFT_4X 0x0C00
/*
* Number of times we will attempt to autonegotiate before downshifting if we
* are the slave
*/
-#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK 0x0300
-#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_DIS 0x0000
-#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X 0x0100
-#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_2X 0x0200
-#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_3X 0x0300
-#define M88E1000_EPSCR_TX_CLK_2_5 0x0060 /* 2.5 MHz TX_CLK */
-#define M88E1000_EPSCR_TX_CLK_25 0x0070 /* 25 MHz TX_CLK */
-#define M88E1000_EPSCR_TX_CLK_0 0x0000 /* NO TX_CLK */
+#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK 0x0300
+#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_DIS 0x0000
+#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X 0x0100
+#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_2X 0x0200
+#define M88E1000_EPSCR_SLAVE_DOWNSHIFT_3X 0x0300
+#define M88E1000_EPSCR_TX_CLK_2_5 0x0060 /* 2.5 MHz TX_CLK */
+#define M88E1000_EPSCR_TX_CLK_25 0x0070 /* 25 MHz TX_CLK */
+#define M88E1000_EPSCR_TX_CLK_0 0x0000 /* NO TX_CLK */
/* M88E1111 Specific Registers */
-#define M88E1111_PHY_PAGE_SELECT1 0x16 /* for registers 0-28 */
-#define M88E1111_PHY_PAGE_SELECT2 0x1D /* for registers 30-31 */
+#define M88E1111_PHY_PAGE_SELECT1 0x16 /* for registers 0-28 */
+#define M88E1111_PHY_PAGE_SELECT2 0x1D /* for registers 30-31 */
/* M88E1111 page select register mask */
-#define M88E1111_PHY_PAGE_SELECT_MASK1 0xFF
-#define M88E1111_PHY_PAGE_SELECT_MASK2 0x3F
+#define M88E1111_PHY_PAGE_SELECT_MASK1 0xFF
+#define M88E1111_PHY_PAGE_SELECT_MASK2 0x3F
/* Intel I347AT4 Registers */
-#define I347AT4_PCDL 0x10 /* PHY Cable Diagnostics Length */
-#define I347AT4_PCDC 0x15 /* PHY Cable Diagnostics Control */
-#define I347AT4_PAGE_SELECT 0x16
+#define I347AT4_PCDL 0x10 /* PHY Cable Diagnostics Length */
+#define I347AT4_PCDC 0x15 /* PHY Cable Diagnostics Control */
+#define I347AT4_PAGE_SELECT 0x16
/* I347AT4 Extended PHY Specific Control Register */
@@ -1609,213 +1641,220 @@
* Number of times we will attempt to autonegotiate before downshifting if we
* are the master
*/
-#define I347AT4_PSCR_DOWNSHIFT_ENABLE 0x0800
-#define I347AT4_PSCR_DOWNSHIFT_MASK 0x7000
-#define I347AT4_PSCR_DOWNSHIFT_1X 0x0000
-#define I347AT4_PSCR_DOWNSHIFT_2X 0x1000
-#define I347AT4_PSCR_DOWNSHIFT_3X 0x2000
-#define I347AT4_PSCR_DOWNSHIFT_4X 0x3000
-#define I347AT4_PSCR_DOWNSHIFT_5X 0x4000
-#define I347AT4_PSCR_DOWNSHIFT_6X 0x5000
-#define I347AT4_PSCR_DOWNSHIFT_7X 0x6000
-#define I347AT4_PSCR_DOWNSHIFT_8X 0x7000
+#define I347AT4_PSCR_DOWNSHIFT_ENABLE 0x0800
+#define I347AT4_PSCR_DOWNSHIFT_MASK 0x7000
+#define I347AT4_PSCR_DOWNSHIFT_1X 0x0000
+#define I347AT4_PSCR_DOWNSHIFT_2X 0x1000
+#define I347AT4_PSCR_DOWNSHIFT_3X 0x2000
+#define I347AT4_PSCR_DOWNSHIFT_4X 0x3000
+#define I347AT4_PSCR_DOWNSHIFT_5X 0x4000
+#define I347AT4_PSCR_DOWNSHIFT_6X 0x5000
+#define I347AT4_PSCR_DOWNSHIFT_7X 0x6000
+#define I347AT4_PSCR_DOWNSHIFT_8X 0x7000
/* I347AT4 PHY Cable Diagnostics Control */
-#define I347AT4_PCDC_CABLE_LENGTH_UNIT 0x0400 /* 0=cm 1=meters */
+#define I347AT4_PCDC_CABLE_LENGTH_UNIT 0x0400 /* 0=cm 1=meters */
/* M88E1112 only registers */
-#define M88E1112_VCT_DSP_DISTANCE 0x001A
+#define M88E1112_VCT_DSP_DISTANCE 0x001A
/* M88EC018 Rev 2 specific DownShift settings */
-#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_MASK 0x0E00
-#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_1X 0x0000
-#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_2X 0x0200
-#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_3X 0x0400
-#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_4X 0x0600
-#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_5X 0x0800
-#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_6X 0x0A00
-#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_7X 0x0C00
-#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_8X 0x0E00
-
-#define I82578_EPSCR_DOWNSHIFT_ENABLE 0x0020
-#define I82578_EPSCR_DOWNSHIFT_COUNTER_MASK 0x001C
+#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_MASK 0x0E00
+#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_1X 0x0000
+#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_2X 0x0200
+#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_3X 0x0400
+#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_4X 0x0600
+#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_5X 0x0800
+#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_6X 0x0A00
+#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_7X 0x0C00
+#define M88EC018_EPSCR_DOWNSHIFT_COUNTER_8X 0x0E00
+
+#define I82578_EPSCR_DOWNSHIFT_ENABLE 0x0020
+#define I82578_EPSCR_DOWNSHIFT_COUNTER_MASK 0x001C
/* BME1000 PHY Specific Control Register */
-#define BME1000_PSCR_ENABLE_DOWNSHIFT 0x0800 /* 1 = enable downshift */
+#define BME1000_PSCR_ENABLE_DOWNSHIFT 0x0800 /* 1 = enable downshift */
/*
* Bits...
* 15-5: page
* 4-0: register offset
*/
-#define GG82563_PAGE_SHIFT 5
-#define GG82563_REG(page, reg) \
- (((page) << GG82563_PAGE_SHIFT) | ((reg) & MAX_PHY_REG_ADDRESS))
-#define GG82563_MIN_ALT_REG 30
+#define GG82563_PAGE_SHIFT 5
+#define GG82563_REG(page, reg) \
+ (((page) << GG82563_PAGE_SHIFT) | ((reg) & MAX_PHY_REG_ADDRESS))
+#define GG82563_MIN_ALT_REG 30
/* GG82563 Specific Registers */
-#define GG82563_PHY_SPEC_CTRL \
- GG82563_REG(0, 16) /* PHY Specific Control */
-#define GG82563_PHY_SPEC_STATUS \
- GG82563_REG(0, 17) /* PHY Specific Status */
-#define GG82563_PHY_INT_ENABLE \
- GG82563_REG(0, 18) /* Interrupt Enable */
-#define GG82563_PHY_SPEC_STATUS_2 \
- GG82563_REG(0, 19) /* PHY Specific Status 2 */
-#define GG82563_PHY_RX_ERR_CNTR \
- GG82563_REG(0, 21) /* Receive Error Counter */
-#define GG82563_PHY_PAGE_SELECT \
- GG82563_REG(0, 22) /* Page Select */
-#define GG82563_PHY_SPEC_CTRL_2 \
- GG82563_REG(0, 26) /* PHY Specific Control 2 */
-#define GG82563_PHY_PAGE_SELECT_ALT \
- GG82563_REG(0, 29) /* Alternate Page Select */
-#define GG82563_PHY_TEST_CLK_CTRL \
- GG82563_REG(0, 30) /* Test Clock Control (use reg. 29 to select) */
-
-#define GG82563_PHY_MAC_SPEC_CTRL \
- GG82563_REG(2, 21) /* MAC Specific Control Register */
-#define GG82563_PHY_MAC_SPEC_CTRL_2 \
- GG82563_REG(2, 26) /* MAC Specific Control 2 */
-
-#define GG82563_PHY_DSP_DISTANCE \
- GG82563_REG(5, 26) /* DSP Distance */
+#define GG82563_PHY_SPEC_CTRL GG82563_REG(0, 16) /* PHY Spec Cntrl */
+#define GG82563_PHY_SPEC_STATUS GG82563_REG(0, 17) /* PHY Spec Status */
+#define GG82563_PHY_INT_ENABLE GG82563_REG(0, 18) /* Interrupt Ena */
+#define GG82563_PHY_SPEC_STATUS_2 GG82563_REG(0, 19) /* PHY Spec Stat2 */
+#define GG82563_PHY_RX_ERR_CNTR GG82563_REG(0, 21) /* Rx Err Counter */
+#define GG82563_PHY_PAGE_SELECT GG82563_REG(0, 22) /* Page Select */
+#define GG82563_PHY_SPEC_CTRL_2 GG82563_REG(0, 26) /* PHY Spec Cntrl2 */
+#define GG82563_PHY_PAGE_SELECT_ALT GG82563_REG(0, 29) /* Alt Page Select */
+/* Test Clock Control (use reg. 29 to select) */
+#define GG82563_PHY_TEST_CLK_CTRL GG82563_REG(0, 30)
+
+/* MAC Specific Control Register */
+#define GG82563_PHY_MAC_SPEC_CTRL GG82563_REG(2, 21)
+#define GG82563_PHY_MAC_SPEC_CTRL_2 GG82563_REG(2, 26) /* MAC Spec Ctrl 2 */
+
+#define GG82563_PHY_DSP_DISTANCE GG82563_REG(5, 26) /* DSP Distance */
/* Page 193 - Port Control Registers */
-#define GG82563_PHY_KMRN_MODE_CTRL \
- GG82563_REG(193, 16) /* Kumeran Mode Control */
-#define GG82563_PHY_PORT_RESET \
- GG82563_REG(193, 17) /* Port Reset */
-#define GG82563_PHY_REVISION_ID \
- GG82563_REG(193, 18) /* Revision ID */
-#define GG82563_PHY_DEVICE_ID \
- GG82563_REG(193, 19) /* Device ID */
-#define GG82563_PHY_PWR_MGMT_CTRL \
- GG82563_REG(193, 20) /* Power Management Control */
-#define GG82563_PHY_RATE_ADAPT_CTRL \
- GG82563_REG(193, 25) /* Rate Adaptation Control */
+/* Kumeran Mode Control */
+#define GG82563_PHY_KMRN_MODE_CTRL GG82563_REG(193, 16)
+#define GG82563_PHY_PORT_RESET GG82563_REG(193, 17) /* Port Reset */
+#define GG82563_PHY_REVISION_ID GG82563_REG(193, 18) /* Revision ID */
+#define GG82563_PHY_DEVICE_ID GG82563_REG(193, 19) /* Device ID */
+#define GG82563_PHY_PWR_MGMT_CTRL GG82563_REG(193, 20) /* Pwr Mgt Ctrl */
+/* Rate Adaptation Control */
+#define GG82563_PHY_RATE_ADAPT_CTRL GG82563_REG(193, 25)
/* Page 194 - KMRN Registers */
-#define GG82563_PHY_KMRN_FIFO_CTRL_STAT \
- GG82563_REG(194, 16) /* FIFO's Control/Status */
-#define GG82563_PHY_KMRN_CTRL \
- GG82563_REG(194, 17) /* Control */
-#define GG82563_PHY_INBAND_CTRL \
- GG82563_REG(194, 18) /* Inband Control */
-#define GG82563_PHY_KMRN_DIAGNOSTIC \
- GG82563_REG(194, 19) /* Diagnostic */
-#define GG82563_PHY_ACK_TIMEOUTS \
- GG82563_REG(194, 20) /* Acknowledge Timeouts */
-#define GG82563_PHY_ADV_ABILITY \
- GG82563_REG(194, 21) /* Advertised Ability */
-#define GG82563_PHY_LINK_PARTNER_ADV_ABILITY \
- GG82563_REG(194, 23) /* Link Partner Advertised Ability */
-#define GG82563_PHY_ADV_NEXT_PAGE \
- GG82563_REG(194, 24) /* Advertised Next Page */
-#define GG82563_PHY_LINK_PARTNER_ADV_NEXT_PAGE \
- GG82563_REG(194, 25) /* Link Partner Advertised Next page */
-#define GG82563_PHY_KMRN_MISC \
- GG82563_REG(194, 26) /* Misc. */
+/* FIFO's Control/Status */
+#define GG82563_PHY_KMRN_FIFO_CTRL_STAT GG82563_REG(194, 16)
+#define GG82563_PHY_KMRN_CTRL GG82563_REG(194, 17) /* Control */
+#define GG82563_PHY_INBAND_CTRL GG82563_REG(194, 18) /* Inband Ctrl */
+#define GG82563_PHY_KMRN_DIAGNOSTIC GG82563_REG(194, 19) /* Diagnostic */
+#define GG82563_PHY_ACK_TIMEOUTS GG82563_REG(194, 20) /* Ack Timeouts */
+#define GG82563_PHY_ADV_ABILITY GG82563_REG(194, 21) /* Adver Ability */
+/* Link Partner Advertised Ability */
+#define GG82563_PHY_LINK_PARTNER_ADV_ABILITY GG82563_REG(194, 23)
+#define GG82563_PHY_ADV_NEXT_PAGE GG82563_REG(194, 24) /* Adver Next Pg */
+/* Link Partner Advertised Next page */
+#define GG82563_PHY_LINK_PARTNER_ADV_NEXT_PAGE GG82563_REG(194, 25)
+#define GG82563_PHY_KMRN_MISC GG82563_REG(194, 26) /* Misc. */
/* MDI Control */
-#define E1000_MDIC_DATA_MASK 0x0000FFFF
-#define E1000_MDIC_REG_MASK 0x001F0000
-#define E1000_MDIC_REG_SHIFT 16
-#define E1000_MDIC_PHY_MASK 0x03E00000
-#define E1000_MDIC_PHY_SHIFT 21
-#define E1000_MDIC_OP_WRITE 0x04000000
-#define E1000_MDIC_OP_READ 0x08000000
-#define E1000_MDIC_READY 0x10000000
-#define E1000_MDIC_INT_EN 0x20000000
-#define E1000_MDIC_ERROR 0x40000000
-#define E1000_MDIC_DEST 0x80000000
+#define E1000_MDIC_DATA_MASK 0x0000FFFF
+#define E1000_MDIC_REG_MASK 0x001F0000
+#define E1000_MDIC_REG_SHIFT 16
+#define E1000_MDIC_PHY_MASK 0x03E00000
+#define E1000_MDIC_PHY_SHIFT 21
+#define E1000_MDIC_OP_WRITE 0x04000000
+#define E1000_MDIC_OP_READ 0x08000000
+#define E1000_MDIC_READY 0x10000000
+#define E1000_MDIC_INT_EN 0x20000000
+#define E1000_MDIC_ERROR 0x40000000
+#define E1000_MDIC_DEST 0x80000000
/* SerDes Control */
-#define E1000_GEN_CTL_READY 0x80000000
-#define E1000_GEN_CTL_ADDRESS_SHIFT 8
-#define E1000_GEN_POLL_TIMEOUT 640
+#define E1000_GEN_CTL_READY 0x80000000
+#define E1000_GEN_CTL_ADDRESS_SHIFT 8
+#define E1000_GEN_POLL_TIMEOUT 640
/* LinkSec register fields */
-#define E1000_LSECTXCAP_SUM_MASK 0x00FF0000
-#define E1000_LSECTXCAP_SUM_SHIFT 16
-#define E1000_LSECRXCAP_SUM_MASK 0x00FF0000
-#define E1000_LSECRXCAP_SUM_SHIFT 16
-
-#define E1000_LSECTXCTRL_EN_MASK 0x00000003
-#define E1000_LSECTXCTRL_DISABLE 0x0
-#define E1000_LSECTXCTRL_AUTH 0x1
-#define E1000_LSECTXCTRL_AUTH_ENCRYPT 0x2
-#define E1000_LSECTXCTRL_AISCI 0x00000020
-#define E1000_LSECTXCTRL_PNTHRSH_MASK 0xFFFFFF00
-#define E1000_LSECTXCTRL_RSV_MASK 0x000000D8
-
-#define E1000_LSECRXCTRL_EN_MASK 0x0000000C
-#define E1000_LSECRXCTRL_EN_SHIFT 2
-#define E1000_LSECRXCTRL_DISABLE 0x0
-#define E1000_LSECRXCTRL_CHECK 0x1
-#define E1000_LSECRXCTRL_STRICT 0x2
-#define E1000_LSECRXCTRL_DROP 0x3
-#define E1000_LSECRXCTRL_PLSH 0x00000040
-#define E1000_LSECRXCTRL_RP 0x00000080
-#define E1000_LSECRXCTRL_RSV_MASK 0xFFFFFF33
+#define E1000_LSECTXCAP_SUM_MASK 0x00FF0000
+#define E1000_LSECTXCAP_SUM_SHIFT 16
+#define E1000_LSECRXCAP_SUM_MASK 0x00FF0000
+#define E1000_LSECRXCAP_SUM_SHIFT 16
+
+#define E1000_LSECTXCTRL_EN_MASK 0x00000003
+#define E1000_LSECTXCTRL_DISABLE 0x0
+#define E1000_LSECTXCTRL_AUTH 0x1
+#define E1000_LSECTXCTRL_AUTH_ENCRYPT 0x2
+#define E1000_LSECTXCTRL_AISCI 0x00000020
+#define E1000_LSECTXCTRL_PNTHRSH_MASK 0xFFFFFF00
+#define E1000_LSECTXCTRL_RSV_MASK 0x000000D8
+
+#define E1000_LSECRXCTRL_EN_MASK 0x0000000C
+#define E1000_LSECRXCTRL_EN_SHIFT 2
+#define E1000_LSECRXCTRL_DISABLE 0x0
+#define E1000_LSECRXCTRL_CHECK 0x1
+#define E1000_LSECRXCTRL_STRICT 0x2
+#define E1000_LSECRXCTRL_DROP 0x3
+#define E1000_LSECRXCTRL_PLSH 0x00000040
+#define E1000_LSECRXCTRL_RP 0x00000080
+#define E1000_LSECRXCTRL_RSV_MASK 0xFFFFFF33
/* Tx Rate-Scheduler Config fields */
#define E1000_RTTBCNRC_RS_ENA 0x80000000
#define E1000_RTTBCNRC_RF_DEC_MASK 0x00003FFF
-#define E1000_RTTBCNRC_RF_INT_SHIFT 14
+#define E1000_RTTBCNRC_RF_INT_SHIFT 14
#define E1000_RTTBCNRC_RF_INT_MASK \
(E1000_RTTBCNRC_RF_DEC_MASK << E1000_RTTBCNRC_RF_INT_SHIFT)
/* DMA Coalescing register fields */
-#define E1000_DMACR_DMACWT_MASK 0x00003FFF /* DMA Coalescing
- * Watchdog Timer */
-#define E1000_DMACR_DMACTHR_MASK 0x00FF0000 /* DMA Coalescing Rx
- * Threshold */
-#define E1000_DMACR_DMACTHR_SHIFT 16
-#define E1000_DMACR_DMAC_LX_MASK 0x30000000 /* Lx when no PCIe
- * transactions */
-#define E1000_DMACR_DMAC_LX_SHIFT 28
-#define E1000_DMACR_DMAC_EN 0x80000000 /* Enable DMA Coalescing */
-
-#define E1000_DMCTXTH_DMCTTHR_MASK 0x00000FFF /* DMA Coalescing Transmit
- * Threshold */
-
-#define E1000_DMCTLX_TTLX_MASK 0x00000FFF /* Time to LX request */
-
-#define E1000_DMCRTRH_UTRESH_MASK 0x0007FFFF /* Rx Traffic Rate
- * Threshold */
-#define E1000_DMCRTRH_LRPRCW 0x80000000 /* Rx packet rate in
- * current window */
-
-#define E1000_DMCCNT_CCOUNT_MASK 0x01FFFFFF /* DMA Coal Rx Traffic
- * Current Cnt */
-
-#define E1000_FCRTC_RTH_COAL_MASK 0x0003FFF0 /* Flow ctrl Rx Threshold
- * High val */
-#define E1000_FCRTC_RTH_COAL_SHIFT 4
-#define E1000_PCIEMISC_LX_DECISION 0x00000080 /* Lx power decision based
- on DMA coal */
+/* DMA Coalescing Watchdog Timer */
+#define E1000_DMACR_DMACWT_MASK 0x00003FFF
+/* DMA Coalescing Rx Threshold */
+#define E1000_DMACR_DMACTHR_MASK 0x00FF0000
+#define E1000_DMACR_DMACTHR_SHIFT 16
+/* Lx when no PCIe transactions */
+#define E1000_DMACR_DMAC_LX_MASK 0x30000000
+#define E1000_DMACR_DMAC_LX_SHIFT 28
+#define E1000_DMACR_DMAC_EN 0x80000000 /* Enable DMA Coalescing */
+
+/* DMA Coalescing Transmit Threshold */
+#define E1000_DMCTXTH_DMCTTHR_MASK 0x00000FFF
+
+#define E1000_DMCTLX_TTLX_MASK 0x00000FFF /* Time to LX request */
+
+/* Rx Traffic Rate Threshold */
+#define E1000_DMCRTRH_UTRESH_MASK 0x0007FFFF
+/* Rx packet rate in current window */
+#define E1000_DMCRTRH_LRPRCW 0x80000000
+
+/* DMA Coal Rx Traffic Current Count */
+#define E1000_DMCCNT_CCOUNT_MASK 0x01FFFFFF
+
+/* Flow ctrl Rx Threshold High val */
+#define E1000_FCRTC_RTH_COAL_MASK 0x0003FFF0
+#define E1000_FCRTC_RTH_COAL_SHIFT 4
+/* Lx power decision based on DMA coal */
+#define E1000_PCIEMISC_LX_DECISION 0x00000080
+
+#define E1000_LTRC_EEEMS_EN 0x00000005 /* Enable EEE LTR max send */
+#define E1000_RXPBS_SIZE_I210_MASK 0x0000003F /* Rx packet buffer size */
+/* Minimum time for 1000BASE-T where no data will be transmit following move out
+ * of EEE LPI Tx state
+ */
+#define E1000_TW_SYSTEM_1000_MASK 0x000000FF
+/* Minimum time for 100BASE-T where no data will be transmit following move out
+ * of EEE LPI Tx state
+ */
+#define E1000_TW_SYSTEM_100_MASK 0x0000FF00
+#define E1000_TW_SYSTEM_100_SHIFT 8
+#define E1000_LTRMINV_LTRV_MASK 0x000003FF /* LTR minimum value */
+#define E1000_LTRMAXV_LTRV_MASK 0x000003FF /* LTR maximum value */
+#define E1000_LTRMINV_SCALE_MASK 0x00001C00 /* LTR minimum scale */
+#define E1000_LTRMINV_SCALE_SHIFT 10
+/* Reg val to set scale to 1024 nsec */
+#define E1000_LTRMINV_SCALE_1024 2
+/* Reg val to set scale to 32768 nsec */
+#define E1000_LTRMINV_SCALE_32768 3
+#define E1000_LTRMAXV_SCALE_MASK 0x00001C00 /* LTR maximum scale */
+#define E1000_LTRMAXV_SCALE_SHIFT 10
+/* Reg val to set scale to 1024 nsec */
+#define E1000_LTRMAXV_SCALE_1024 2
+/* Reg val to set scale to 32768 nsec */
+#define E1000_LTRMAXV_SCALE_32768 3
+#define E1000_DOBFFCTL_OBFFTHR_MASK 0x000000FF /* OBFF threshold */
+#define E1000_DOBFFCTL_EXIT_ACT_MASK 0x01000000 /* Exit active CB */
/* Proxy Filer Control */
-#define E1000_PROXYFC_D0 0x00000001 /* Enable offload in D0 */
-#define E1000_PROXYFC_EX 0x00000004 /* Directed exact proxy */
-#define E1000_PROXYFC_MC 0x00000008 /* Directed Multicast
- * Proxy */
-#define E1000_PROXYFC_BC 0x00000010 /* Broadcast Proxy Enable */
-#define E1000_PROXYFC_ARP_DIRECTED 0x00000020 /* Directed ARP Proxy
- * Enable */
-#define E1000_PROXYFC_IPV4 0x00000040 /* Directed IPv4 Enable */
-#define E1000_PROXYFC_IPV6 0x00000080 /* Directed IPv6 Enable */
-#define E1000_PROXYFC_NS 0x00000200 /* IPv4 Neighborhood
- * Solicitation */
-#define E1000_PROXYFC_ARP 0x00000800 /* ARP Request Proxy
- * Enable */
+#define E1000_PROXYFC_D0 0x00000001 /* Enable offload in D0 */
+#define E1000_PROXYFC_EX 0x00000004 /* Directed exact proxy */
+#define E1000_PROXYFC_MC 0x00000008 /* Directed MC Proxy */
+#define E1000_PROXYFC_BC 0x00000010 /* Broadcast Proxy Enable */
+#define E1000_PROXYFC_ARP_DIRECTED 0x00000020 /* Directed ARP Proxy Ena */
+#define E1000_PROXYFC_IPV4 0x00000040 /* Directed IPv4 Enable */
+#define E1000_PROXYFC_IPV6 0x00000080 /* Directed IPv6 Enable */
+#define E1000_PROXYFC_NS 0x00000200 /* IPv4 NBRHD Solicitation */
+#define E1000_PROXYFC_ARP 0x00000800 /* ARP Request Proxy Ena */
/* Proxy Status */
-#define E1000_PROXYS_CLEAR 0xFFFFFFFF /* Clear */
+#define E1000_PROXYS_CLEAR 0xFFFFFFFF /* Clear */
/* Firmware Status */
-#define E1000_FWSTS_FWRI 0x80000000 /* Firmware Reset
- * Indication */
-
-
+#define E1000_FWSTS_FWRI 0x80000000 /* FW Reset Indication */
+/* VF Control */
+#define E1000_VTCTRL_RST 0x04000000 /* Reset VF */
+
+#define E1000_STATUS_LAN_ID_MASK 0x00000000C /* Mask for Lan ID field */
+/* Lan ID bit field offset in status register */
+#define E1000_STATUS_LAN_ID_OFFSET 2
+#define E1000_VFTA_ENTRIES 128
#endif /* _E1000_DEFINES_H_ */
diff --git a/sys/dev/e1000/e1000_hw.h b/sys/dev/e1000/e1000_hw.h
index 686a5d8..16cfa8f 100644
--- a/sys/dev/e1000/e1000_hw.h
+++ b/sys/dev/e1000/e1000_hw.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -41,139 +41,138 @@
struct e1000_hw;
-#define E1000_DEV_ID_82542 0x1000
-#define E1000_DEV_ID_82543GC_FIBER 0x1001
-#define E1000_DEV_ID_82543GC_COPPER 0x1004
-#define E1000_DEV_ID_82544EI_COPPER 0x1008
-#define E1000_DEV_ID_82544EI_FIBER 0x1009
-#define E1000_DEV_ID_82544GC_COPPER 0x100C
-#define E1000_DEV_ID_82544GC_LOM 0x100D
-#define E1000_DEV_ID_82540EM 0x100E
-#define E1000_DEV_ID_82540EM_LOM 0x1015
-#define E1000_DEV_ID_82540EP_LOM 0x1016
-#define E1000_DEV_ID_82540EP 0x1017
-#define E1000_DEV_ID_82540EP_LP 0x101E
-#define E1000_DEV_ID_82545EM_COPPER 0x100F
-#define E1000_DEV_ID_82545EM_FIBER 0x1011
-#define E1000_DEV_ID_82545GM_COPPER 0x1026
-#define E1000_DEV_ID_82545GM_FIBER 0x1027
-#define E1000_DEV_ID_82545GM_SERDES 0x1028
-#define E1000_DEV_ID_82546EB_COPPER 0x1010
-#define E1000_DEV_ID_82546EB_FIBER 0x1012
-#define E1000_DEV_ID_82546EB_QUAD_COPPER 0x101D
-#define E1000_DEV_ID_82546GB_COPPER 0x1079
-#define E1000_DEV_ID_82546GB_FIBER 0x107A
-#define E1000_DEV_ID_82546GB_SERDES 0x107B
-#define E1000_DEV_ID_82546GB_PCIE 0x108A
-#define E1000_DEV_ID_82546GB_QUAD_COPPER 0x1099
-#define E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3 0x10B5
-#define E1000_DEV_ID_82541EI 0x1013
-#define E1000_DEV_ID_82541EI_MOBILE 0x1018
-#define E1000_DEV_ID_82541ER_LOM 0x1014
-#define E1000_DEV_ID_82541ER 0x1078
-#define E1000_DEV_ID_82541GI 0x1076
-#define E1000_DEV_ID_82541GI_LF 0x107C
-#define E1000_DEV_ID_82541GI_MOBILE 0x1077
-#define E1000_DEV_ID_82547EI 0x1019
-#define E1000_DEV_ID_82547EI_MOBILE 0x101A
-#define E1000_DEV_ID_82547GI 0x1075
-#define E1000_DEV_ID_82571EB_COPPER 0x105E
-#define E1000_DEV_ID_82571EB_FIBER 0x105F
-#define E1000_DEV_ID_82571EB_SERDES 0x1060
-#define E1000_DEV_ID_82571EB_SERDES_DUAL 0x10D9
-#define E1000_DEV_ID_82571EB_SERDES_QUAD 0x10DA
-#define E1000_DEV_ID_82571EB_QUAD_COPPER 0x10A4
-#define E1000_DEV_ID_82571PT_QUAD_COPPER 0x10D5
-#define E1000_DEV_ID_82571EB_QUAD_FIBER 0x10A5
-#define E1000_DEV_ID_82571EB_QUAD_COPPER_LP 0x10BC
-#define E1000_DEV_ID_82572EI_COPPER 0x107D
-#define E1000_DEV_ID_82572EI_FIBER 0x107E
-#define E1000_DEV_ID_82572EI_SERDES 0x107F
-#define E1000_DEV_ID_82572EI 0x10B9
-#define E1000_DEV_ID_82573E 0x108B
-#define E1000_DEV_ID_82573E_IAMT 0x108C
-#define E1000_DEV_ID_82573L 0x109A
-#define E1000_DEV_ID_82574L 0x10D3
-#define E1000_DEV_ID_82574LA 0x10F6
-#define E1000_DEV_ID_82583V 0x150C
-#define E1000_DEV_ID_80003ES2LAN_COPPER_DPT 0x1096
-#define E1000_DEV_ID_80003ES2LAN_SERDES_DPT 0x1098
-#define E1000_DEV_ID_80003ES2LAN_COPPER_SPT 0x10BA
-#define E1000_DEV_ID_80003ES2LAN_SERDES_SPT 0x10BB
-#define E1000_DEV_ID_ICH8_82567V_3 0x1501
-#define E1000_DEV_ID_ICH8_IGP_M_AMT 0x1049
-#define E1000_DEV_ID_ICH8_IGP_AMT 0x104A
-#define E1000_DEV_ID_ICH8_IGP_C 0x104B
-#define E1000_DEV_ID_ICH8_IFE 0x104C
-#define E1000_DEV_ID_ICH8_IFE_GT 0x10C4
-#define E1000_DEV_ID_ICH8_IFE_G 0x10C5
-#define E1000_DEV_ID_ICH8_IGP_M 0x104D
-#define E1000_DEV_ID_ICH9_IGP_M 0x10BF
-#define E1000_DEV_ID_ICH9_IGP_M_AMT 0x10F5
-#define E1000_DEV_ID_ICH9_IGP_M_V 0x10CB
-#define E1000_DEV_ID_ICH9_IGP_AMT 0x10BD
-#define E1000_DEV_ID_ICH9_BM 0x10E5
-#define E1000_DEV_ID_ICH9_IGP_C 0x294C
-#define E1000_DEV_ID_ICH9_IFE 0x10C0
-#define E1000_DEV_ID_ICH9_IFE_GT 0x10C3
-#define E1000_DEV_ID_ICH9_IFE_G 0x10C2
-#define E1000_DEV_ID_ICH10_R_BM_LM 0x10CC
-#define E1000_DEV_ID_ICH10_R_BM_LF 0x10CD
-#define E1000_DEV_ID_ICH10_R_BM_V 0x10CE
-#define E1000_DEV_ID_ICH10_HANKSVILLE 0xF0FE
-#define E1000_DEV_ID_ICH10_D_BM_LM 0x10DE
-#define E1000_DEV_ID_ICH10_D_BM_LF 0x10DF
-#define E1000_DEV_ID_ICH10_D_BM_V 0x1525
-
-#define E1000_DEV_ID_PCH_M_HV_LM 0x10EA
-#define E1000_DEV_ID_PCH_M_HV_LC 0x10EB
-#define E1000_DEV_ID_PCH_D_HV_DM 0x10EF
-#define E1000_DEV_ID_PCH_D_HV_DC 0x10F0
-#define E1000_DEV_ID_PCH2_LV_LM 0x1502
-#define E1000_DEV_ID_PCH2_LV_V 0x1503
-#define E1000_DEV_ID_82576 0x10C9
-#define E1000_DEV_ID_82576_FIBER 0x10E6
-#define E1000_DEV_ID_82576_SERDES 0x10E7
-#define E1000_DEV_ID_82576_QUAD_COPPER 0x10E8
-#define E1000_DEV_ID_82576_QUAD_COPPER_ET2 0x1526
-#define E1000_DEV_ID_82576_NS 0x150A
-#define E1000_DEV_ID_82576_NS_SERDES 0x1518
-#define E1000_DEV_ID_82576_SERDES_QUAD 0x150D
-#define E1000_DEV_ID_82576_VF 0x10CA
-#define E1000_DEV_ID_I350_VF 0x1520
-#define E1000_DEV_ID_82575EB_COPPER 0x10A7
-#define E1000_DEV_ID_82575EB_FIBER_SERDES 0x10A9
-#define E1000_DEV_ID_82575GB_QUAD_COPPER 0x10D6
-#define E1000_DEV_ID_82575GB_QUAD_COPPER_PM 0x10E2
-#define E1000_DEV_ID_82580_COPPER 0x150E
-#define E1000_DEV_ID_82580_FIBER 0x150F
-#define E1000_DEV_ID_82580_SERDES 0x1510
-#define E1000_DEV_ID_82580_SGMII 0x1511
-#define E1000_DEV_ID_82580_COPPER_DUAL 0x1516
-#define E1000_DEV_ID_82580_QUAD_FIBER 0x1527
-#define E1000_DEV_ID_I350_COPPER 0x1521
-#define E1000_DEV_ID_I350_FIBER 0x1522
-#define E1000_DEV_ID_I350_SERDES 0x1523
-#define E1000_DEV_ID_I350_SGMII 0x1524
-#define E1000_DEV_ID_DH89XXCC_SGMII 0x0438
-#define E1000_DEV_ID_DH89XXCC_SERDES 0x043A
-#define E1000_DEV_ID_DH89XXCC_BACKPLANE 0x043C
-#define E1000_DEV_ID_DH89XXCC_SFP 0x0440
-#define E1000_REVISION_0 0
-#define E1000_REVISION_1 1
-#define E1000_REVISION_2 2
-#define E1000_REVISION_3 3
-#define E1000_REVISION_4 4
-
-#define E1000_FUNC_0 0
-#define E1000_FUNC_1 1
-#define E1000_FUNC_2 2
-#define E1000_FUNC_3 3
-
-#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN0 0
-#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN1 3
-#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN2 6
-#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN3 9
+#define E1000_DEV_ID_82542 0x1000
+#define E1000_DEV_ID_82543GC_FIBER 0x1001
+#define E1000_DEV_ID_82543GC_COPPER 0x1004
+#define E1000_DEV_ID_82544EI_COPPER 0x1008
+#define E1000_DEV_ID_82544EI_FIBER 0x1009
+#define E1000_DEV_ID_82544GC_COPPER 0x100C
+#define E1000_DEV_ID_82544GC_LOM 0x100D
+#define E1000_DEV_ID_82540EM 0x100E
+#define E1000_DEV_ID_82540EM_LOM 0x1015
+#define E1000_DEV_ID_82540EP_LOM 0x1016
+#define E1000_DEV_ID_82540EP 0x1017
+#define E1000_DEV_ID_82540EP_LP 0x101E
+#define E1000_DEV_ID_82545EM_COPPER 0x100F
+#define E1000_DEV_ID_82545EM_FIBER 0x1011
+#define E1000_DEV_ID_82545GM_COPPER 0x1026
+#define E1000_DEV_ID_82545GM_FIBER 0x1027
+#define E1000_DEV_ID_82545GM_SERDES 0x1028
+#define E1000_DEV_ID_82546EB_COPPER 0x1010
+#define E1000_DEV_ID_82546EB_FIBER 0x1012
+#define E1000_DEV_ID_82546EB_QUAD_COPPER 0x101D
+#define E1000_DEV_ID_82546GB_COPPER 0x1079
+#define E1000_DEV_ID_82546GB_FIBER 0x107A
+#define E1000_DEV_ID_82546GB_SERDES 0x107B
+#define E1000_DEV_ID_82546GB_PCIE 0x108A
+#define E1000_DEV_ID_82546GB_QUAD_COPPER 0x1099
+#define E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3 0x10B5
+#define E1000_DEV_ID_82541EI 0x1013
+#define E1000_DEV_ID_82541EI_MOBILE 0x1018
+#define E1000_DEV_ID_82541ER_LOM 0x1014
+#define E1000_DEV_ID_82541ER 0x1078
+#define E1000_DEV_ID_82541GI 0x1076
+#define E1000_DEV_ID_82541GI_LF 0x107C
+#define E1000_DEV_ID_82541GI_MOBILE 0x1077
+#define E1000_DEV_ID_82547EI 0x1019
+#define E1000_DEV_ID_82547EI_MOBILE 0x101A
+#define E1000_DEV_ID_82547GI 0x1075
+#define E1000_DEV_ID_82571EB_COPPER 0x105E
+#define E1000_DEV_ID_82571EB_FIBER 0x105F
+#define E1000_DEV_ID_82571EB_SERDES 0x1060
+#define E1000_DEV_ID_82571EB_SERDES_DUAL 0x10D9
+#define E1000_DEV_ID_82571EB_SERDES_QUAD 0x10DA
+#define E1000_DEV_ID_82571EB_QUAD_COPPER 0x10A4
+#define E1000_DEV_ID_82571PT_QUAD_COPPER 0x10D5
+#define E1000_DEV_ID_82571EB_QUAD_FIBER 0x10A5
+#define E1000_DEV_ID_82571EB_QUAD_COPPER_LP 0x10BC
+#define E1000_DEV_ID_82572EI_COPPER 0x107D
+#define E1000_DEV_ID_82572EI_FIBER 0x107E
+#define E1000_DEV_ID_82572EI_SERDES 0x107F
+#define E1000_DEV_ID_82572EI 0x10B9
+#define E1000_DEV_ID_82573E 0x108B
+#define E1000_DEV_ID_82573E_IAMT 0x108C
+#define E1000_DEV_ID_82573L 0x109A
+#define E1000_DEV_ID_82574L 0x10D3
+#define E1000_DEV_ID_82574LA 0x10F6
+#define E1000_DEV_ID_82583V 0x150C
+#define E1000_DEV_ID_80003ES2LAN_COPPER_DPT 0x1096
+#define E1000_DEV_ID_80003ES2LAN_SERDES_DPT 0x1098
+#define E1000_DEV_ID_80003ES2LAN_COPPER_SPT 0x10BA
+#define E1000_DEV_ID_80003ES2LAN_SERDES_SPT 0x10BB
+#define E1000_DEV_ID_ICH8_82567V_3 0x1501
+#define E1000_DEV_ID_ICH8_IGP_M_AMT 0x1049
+#define E1000_DEV_ID_ICH8_IGP_AMT 0x104A
+#define E1000_DEV_ID_ICH8_IGP_C 0x104B
+#define E1000_DEV_ID_ICH8_IFE 0x104C
+#define E1000_DEV_ID_ICH8_IFE_GT 0x10C4
+#define E1000_DEV_ID_ICH8_IFE_G 0x10C5
+#define E1000_DEV_ID_ICH8_IGP_M 0x104D
+#define E1000_DEV_ID_ICH9_IGP_M 0x10BF
+#define E1000_DEV_ID_ICH9_IGP_M_AMT 0x10F5
+#define E1000_DEV_ID_ICH9_IGP_M_V 0x10CB
+#define E1000_DEV_ID_ICH9_IGP_AMT 0x10BD
+#define E1000_DEV_ID_ICH9_BM 0x10E5
+#define E1000_DEV_ID_ICH9_IGP_C 0x294C
+#define E1000_DEV_ID_ICH9_IFE 0x10C0
+#define E1000_DEV_ID_ICH9_IFE_GT 0x10C3
+#define E1000_DEV_ID_ICH9_IFE_G 0x10C2
+#define E1000_DEV_ID_ICH10_R_BM_LM 0x10CC
+#define E1000_DEV_ID_ICH10_R_BM_LF 0x10CD
+#define E1000_DEV_ID_ICH10_R_BM_V 0x10CE
+#define E1000_DEV_ID_ICH10_D_BM_LM 0x10DE
+#define E1000_DEV_ID_ICH10_D_BM_LF 0x10DF
+#define E1000_DEV_ID_ICH10_D_BM_V 0x1525
+
+#define E1000_DEV_ID_PCH_M_HV_LM 0x10EA
+#define E1000_DEV_ID_PCH_M_HV_LC 0x10EB
+#define E1000_DEV_ID_PCH_D_HV_DM 0x10EF
+#define E1000_DEV_ID_PCH_D_HV_DC 0x10F0
+#define E1000_DEV_ID_PCH2_LV_LM 0x1502
+#define E1000_DEV_ID_PCH2_LV_V 0x1503
+#define E1000_DEV_ID_82576 0x10C9
+#define E1000_DEV_ID_82576_FIBER 0x10E6
+#define E1000_DEV_ID_82576_SERDES 0x10E7
+#define E1000_DEV_ID_82576_QUAD_COPPER 0x10E8
+#define E1000_DEV_ID_82576_QUAD_COPPER_ET2 0x1526
+#define E1000_DEV_ID_82576_NS 0x150A
+#define E1000_DEV_ID_82576_NS_SERDES 0x1518
+#define E1000_DEV_ID_82576_SERDES_QUAD 0x150D
+#define E1000_DEV_ID_82576_VF 0x10CA
+#define E1000_DEV_ID_I350_VF 0x1520
+#define E1000_DEV_ID_82575EB_COPPER 0x10A7
+#define E1000_DEV_ID_82575EB_FIBER_SERDES 0x10A9
+#define E1000_DEV_ID_82575GB_QUAD_COPPER 0x10D6
+#define E1000_DEV_ID_82580_COPPER 0x150E
+#define E1000_DEV_ID_82580_FIBER 0x150F
+#define E1000_DEV_ID_82580_SERDES 0x1510
+#define E1000_DEV_ID_82580_SGMII 0x1511
+#define E1000_DEV_ID_82580_COPPER_DUAL 0x1516
+#define E1000_DEV_ID_82580_QUAD_FIBER 0x1527
+#define E1000_DEV_ID_I350_COPPER 0x1521
+#define E1000_DEV_ID_I350_FIBER 0x1522
+#define E1000_DEV_ID_I350_SERDES 0x1523
+#define E1000_DEV_ID_I350_SGMII 0x1524
+#define E1000_DEV_ID_I350_DA4 0x1546
+#define E1000_DEV_ID_DH89XXCC_SGMII 0x0438
+#define E1000_DEV_ID_DH89XXCC_SERDES 0x043A
+#define E1000_DEV_ID_DH89XXCC_BACKPLANE 0x043C
+#define E1000_DEV_ID_DH89XXCC_SFP 0x0440
+#define E1000_REVISION_0 0
+#define E1000_REVISION_1 1
+#define E1000_REVISION_2 2
+#define E1000_REVISION_3 3
+#define E1000_REVISION_4 4
+
+#define E1000_FUNC_0 0
+#define E1000_FUNC_1 1
+#define E1000_FUNC_2 2
+#define E1000_FUNC_3 3
+
+#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN0 0
+#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN1 3
+#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN2 6
+#define E1000_ALT_MAC_ADDRESS_OFFSET_LAN3 9
enum e1000_mac_type {
e1000_undefined = 0,
@@ -342,9 +341,9 @@ enum e1000_serdes_link_state {
struct e1000_rx_desc {
__le64 buffer_addr; /* Address of the descriptor's data buffer */
__le16 length; /* Length of data DMAed into data buffer */
- __le16 csum; /* Packet checksum */
- u8 status; /* Descriptor status */
- u8 errors; /* Descriptor Errors */
+ __le16 csum; /* Packet checksum */
+ u8 status; /* Descriptor status */
+ u8 errors; /* Descriptor Errors */
__le16 special;
};
@@ -356,9 +355,9 @@ union e1000_rx_desc_extended {
} read;
struct {
struct {
- __le32 mrq; /* Multiple Rx Queues */
+ __le32 mrq; /* Multiple Rx Queues */
union {
- __le32 rss; /* RSS Hash */
+ __le32 rss; /* RSS Hash */
struct {
__le16 ip_id; /* IP id */
__le16 csum; /* Packet Checksum */
@@ -368,7 +367,7 @@ union e1000_rx_desc_extended {
struct {
__le32 status_error; /* ext status/error */
__le16 length;
- __le16 vlan; /* VLAN tag */
+ __le16 vlan; /* VLAN tag */
} upper;
} wb; /* writeback */
};
@@ -382,9 +381,9 @@ union e1000_rx_desc_packet_split {
} read;
struct {
struct {
- __le32 mrq; /* Multiple Rx Queues */
+ __le32 mrq; /* Multiple Rx Queues */
union {
- __le32 rss; /* RSS Hash */
+ __le32 rss; /* RSS Hash */
struct {
__le16 ip_id; /* IP id */
__le16 csum; /* Packet Checksum */
@@ -393,8 +392,8 @@ union e1000_rx_desc_packet_split {
} lower;
struct {
__le32 status_error; /* ext status/error */
- __le16 length0; /* length of buffer 0 */
- __le16 vlan; /* VLAN tag */
+ __le16 length0; /* length of buffer 0 */
+ __le16 vlan; /* VLAN tag */
} middle;
struct {
__le16 header_status;
@@ -410,16 +409,16 @@ struct e1000_tx_desc {
union {
__le32 data;
struct {
- __le16 length; /* Data buffer length */
- u8 cso; /* Checksum offset */
- u8 cmd; /* Descriptor control */
+ __le16 length; /* Data buffer length */
+ u8 cso; /* Checksum offset */
+ u8 cmd; /* Descriptor control */
} flags;
} lower;
union {
__le32 data;
struct {
- u8 status; /* Descriptor status */
- u8 css; /* Checksum start */
+ u8 status; /* Descriptor status */
+ u8 css; /* Checksum start */
__le16 special;
} fields;
} upper;
@@ -430,37 +429,37 @@ struct e1000_context_desc {
union {
__le32 ip_config;
struct {
- u8 ipcss; /* IP checksum start */
- u8 ipcso; /* IP checksum offset */
- __le16 ipcse; /* IP checksum end */
+ u8 ipcss; /* IP checksum start */
+ u8 ipcso; /* IP checksum offset */
+ __le16 ipcse; /* IP checksum end */
} ip_fields;
} lower_setup;
union {
__le32 tcp_config;
struct {
- u8 tucss; /* TCP checksum start */
- u8 tucso; /* TCP checksum offset */
- __le16 tucse; /* TCP checksum end */
+ u8 tucss; /* TCP checksum start */
+ u8 tucso; /* TCP checksum offset */
+ __le16 tucse; /* TCP checksum end */
} tcp_fields;
} upper_setup;
__le32 cmd_and_length;
union {
__le32 data;
struct {
- u8 status; /* Descriptor status */
- u8 hdr_len; /* Header length */
- __le16 mss; /* Maximum segment size */
+ u8 status; /* Descriptor status */
+ u8 hdr_len; /* Header length */
+ __le16 mss; /* Maximum segment size */
} fields;
} tcp_seg_setup;
};
/* Offload data descriptor */
struct e1000_data_desc {
- __le64 buffer_addr; /* Address of the descriptor's buffer address */
+ __le64 buffer_addr; /* Address of the descriptor's buffer address */
union {
__le32 data;
struct {
- __le16 length; /* Data buffer length */
+ __le16 length; /* Data buffer length */
u8 typ_len_ext;
u8 cmd;
} flags;
@@ -468,8 +467,8 @@ struct e1000_data_desc {
union {
__le32 data;
struct {
- u8 status; /* Descriptor status */
- u8 popts; /* Packet Options */
+ u8 status; /* Descriptor status */
+ u8 popts; /* Packet Options */
__le16 special;
} fields;
} upper;
@@ -553,6 +552,10 @@ struct e1000_hw_stats {
u64 scvpc;
u64 hrmpc;
u64 doosync;
+ u64 o2bgptc;
+ u64 o2bspc;
+ u64 b2ospc;
+ u64 b2ogprc;
};
struct e1000_vf_stats {
@@ -611,7 +614,7 @@ struct e1000_host_command_header {
u8 checksum;
};
-#define E1000_HI_MAX_DATA_LENGTH 252
+#define E1000_HI_MAX_DATA_LENGTH 252
struct e1000_host_command_info {
struct e1000_host_command_header command_header;
u8 command_data[E1000_HI_MAX_DATA_LENGTH];
@@ -626,7 +629,7 @@ struct e1000_host_mng_command_header {
u16 command_length;
};
-#define E1000_HI_MAX_MNG_DATA_LENGTH 0x6F8
+#define E1000_HI_MAX_MNG_DATA_LENGTH 0x6F8
struct e1000_host_mng_command_info {
struct e1000_host_mng_command_header command_header;
u8 command_data[E1000_HI_MAX_MNG_DATA_LENGTH];
@@ -668,11 +671,26 @@ struct e1000_mac_operations {
s32 (*validate_mdi_setting)(struct e1000_hw *);
s32 (*mng_host_if_write)(struct e1000_hw *, u8*, u16, u16, u8*);
s32 (*mng_write_cmd_header)(struct e1000_hw *hw,
- struct e1000_host_mng_command_header*);
+ struct e1000_host_mng_command_header*);
s32 (*mng_enable_host_if)(struct e1000_hw *);
s32 (*wait_autoneg)(struct e1000_hw *);
};
+/*
+ * When to use various PHY register access functions:
+ *
+ * Func Caller
+ * Function Does Does When to use
+ * ~~~~~~~~~~~~ ~~~~~ ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * X_reg L,P,A n/a for simple PHY reg accesses
+ * X_reg_locked P,A L for multiple accesses of different regs
+ * on different pages
+ * X_reg_page A L,P for multiple accesses of different regs
+ * on the same page
+ *
+ * Where X=[read|write], L=locking, P=sets page, A=register access
+ *
+ */
struct e1000_phy_operations {
s32 (*init_params)(struct e1000_hw *);
s32 (*acquire)(struct e1000_hw *);
@@ -684,16 +702,21 @@ struct e1000_phy_operations {
s32 (*get_cfg_done)(struct e1000_hw *hw);
s32 (*get_cable_length)(struct e1000_hw *);
s32 (*get_info)(struct e1000_hw *);
+ s32 (*set_page)(struct e1000_hw *, u16);
s32 (*read_reg)(struct e1000_hw *, u32, u16 *);
s32 (*read_reg_locked)(struct e1000_hw *, u32, u16 *);
+ s32 (*read_reg_page)(struct e1000_hw *, u32, u16 *);
void (*release)(struct e1000_hw *);
s32 (*reset)(struct e1000_hw *);
s32 (*set_d0_lplu_state)(struct e1000_hw *, bool);
s32 (*set_d3_lplu_state)(struct e1000_hw *, bool);
s32 (*write_reg)(struct e1000_hw *, u32, u16);
s32 (*write_reg_locked)(struct e1000_hw *, u32, u16);
+ s32 (*write_reg_page)(struct e1000_hw *, u32, u16);
void (*power_up)(struct e1000_hw *);
void (*power_down)(struct e1000_hw *);
+ s32 (*read_i2c_byte)(struct e1000_hw *, u8, u8, u8 *);
+ s32 (*write_i2c_byte)(struct e1000_hw *, u8, u8, u8);
};
struct e1000_nvm_operations {
@@ -781,7 +804,6 @@ struct e1000_phy_info {
bool disable_polarity_correction;
bool is_mdix;
bool polarity_correction;
- bool reset_disable;
bool speed_downgraded;
bool autoneg_wait_to_complete;
};
@@ -811,14 +833,14 @@ struct e1000_bus_info {
};
struct e1000_fc_info {
- u32 high_water; /* Flow control high-water mark */
- u32 low_water; /* Flow control low-water mark */
- u16 pause_time; /* Flow control pause timer */
- u16 refresh_time; /* Flow control refresh timer */
- bool send_xon; /* Flow control send XON */
- bool strict_ieee; /* Strict IEEE mode */
- enum e1000_fc_mode current_mode; /* FC mode in effect */
- enum e1000_fc_mode requested_mode; /* FC mode requested by caller */
+ u32 high_water; /* Flow control high-water mark */
+ u32 low_water; /* Flow control low-water mark */
+ u16 pause_time; /* Flow control pause timer */
+ u16 refresh_time; /* Flow control refresh timer */
+ bool send_xon; /* Flow control send XON */
+ bool strict_ieee; /* Strict IEEE mode */
+ enum e1000_fc_mode current_mode; /* FC mode in effect */
+ enum e1000_fc_mode requested_mode; /* FC mode requested by caller */
};
struct e1000_mbx_operations {
@@ -889,13 +911,15 @@ struct e1000_dev_spec_ich8lan {
E1000_MUTEX nvm_mutex;
E1000_MUTEX swflag_mutex;
bool nvm_k1_enabled;
- bool eee_disable;
+ int eee_disable;
};
struct e1000_dev_spec_82575 {
bool sgmii_active;
bool global_device_reset;
- bool eee_disable;
+ int eee_disable;
+ bool module_plugged;
+ u32 mtu;
};
struct e1000_dev_spec_vf {
diff --git a/sys/dev/e1000/e1000_ich8lan.c b/sys/dev/e1000/e1000_ich8lan.c
index 8218908..aa4802c 100644
--- a/sys/dev/e1000/e1000_ich8lan.c
+++ b/sys/dev/e1000/e1000_ich8lan.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -76,23 +76,23 @@ static bool e1000_check_mng_mode_ich8lan(struct e1000_hw *hw);
static bool e1000_check_mng_mode_pchlan(struct e1000_hw *hw);
static void e1000_rar_set_pch2lan(struct e1000_hw *hw, u8 *addr, u32 index);
static void e1000_update_mc_addr_list_pch2lan(struct e1000_hw *hw,
- u8 *mc_addr_list,
- u32 mc_addr_count);
+ u8 *mc_addr_list,
+ u32 mc_addr_count);
static s32 e1000_check_reset_block_ich8lan(struct e1000_hw *hw);
static s32 e1000_phy_hw_reset_ich8lan(struct e1000_hw *hw);
static s32 e1000_set_lplu_state_pchlan(struct e1000_hw *hw, bool active);
static s32 e1000_set_d0_lplu_state_ich8lan(struct e1000_hw *hw,
- bool active);
+ bool active);
static s32 e1000_set_d3_lplu_state_ich8lan(struct e1000_hw *hw,
- bool active);
+ bool active);
static s32 e1000_read_nvm_ich8lan(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data);
+ u16 words, u16 *data);
static s32 e1000_write_nvm_ich8lan(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data);
+ u16 words, u16 *data);
static s32 e1000_validate_nvm_checksum_ich8lan(struct e1000_hw *hw);
static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw);
static s32 e1000_valid_led_default_ich8lan(struct e1000_hw *hw,
- u16 *data);
+ u16 *data);
static s32 e1000_id_led_init_pchlan(struct e1000_hw *hw);
static s32 e1000_get_bus_info_ich8lan(struct e1000_hw *hw);
static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw);
@@ -100,7 +100,7 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw);
static s32 e1000_setup_link_ich8lan(struct e1000_hw *hw);
static s32 e1000_setup_copper_link_ich8lan(struct e1000_hw *hw);
static s32 e1000_get_link_up_info_ich8lan(struct e1000_hw *hw,
- u16 *speed, u16 *duplex);
+ u16 *speed, u16 *duplex);
static s32 e1000_cleanup_led_ich8lan(struct e1000_hw *hw);
static s32 e1000_led_on_ich8lan(struct e1000_hw *hw);
static s32 e1000_led_off_ich8lan(struct e1000_hw *hw);
@@ -116,17 +116,17 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw);
static void e1000_initialize_hw_bits_ich8lan(struct e1000_hw *hw);
static s32 e1000_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw);
static s32 e1000_read_flash_byte_ich8lan(struct e1000_hw *hw,
- u32 offset, u8 *data);
+ u32 offset, u8 *data);
static s32 e1000_read_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
- u8 size, u16 *data);
+ u8 size, u16 *data);
static s32 e1000_read_flash_word_ich8lan(struct e1000_hw *hw,
- u32 offset, u16 *data);
+ u32 offset, u16 *data);
static s32 e1000_retry_write_flash_byte_ich8lan(struct e1000_hw *hw,
- u32 offset, u8 byte);
+ u32 offset, u8 byte);
static s32 e1000_write_flash_byte_ich8lan(struct e1000_hw *hw,
- u32 offset, u8 data);
+ u32 offset, u8 data);
static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
- u8 size, u16 data);
+ u8 size, u16 data);
static s32 e1000_get_cfg_done_ich8lan(struct e1000_hw *hw);
static void e1000_power_down_phy_copper_ich8lan(struct e1000_hw *hw);
static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw);
@@ -135,20 +135,23 @@ static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw);
static s32 e1000_set_mdio_slow_mode_hv(struct e1000_hw *hw);
static s32 e1000_k1_workaround_lv(struct e1000_hw *hw);
static void e1000_gate_hw_phy_config_ich8lan(struct e1000_hw *hw, bool gate);
+#if defined(NAHUM6_HW) && (defined(LTR_SUPPORT) || defined(OBFF_SUPPORT))
+
+#endif /* NAHUM6_HW && (LTR_SUPPORT || OBFF_SUPPORT) */
/* ICH GbE Flash Hardware Sequencing Flash Status Register bit breakdown */
/* Offset 04h HSFSTS */
union ich8_hws_flash_status {
struct ich8_hsfsts {
- u16 flcdone :1; /* bit 0 Flash Cycle Done */
- u16 flcerr :1; /* bit 1 Flash Cycle Error */
- u16 dael :1; /* bit 2 Direct Access error Log */
- u16 berasesz :2; /* bit 4:3 Sector Erase Size */
- u16 flcinprog :1; /* bit 5 flash cycle in Progress */
- u16 reserved1 :2; /* bit 13:6 Reserved */
- u16 reserved2 :6; /* bit 13:6 Reserved */
- u16 fldesvalid :1; /* bit 14 Flash Descriptor Valid */
- u16 flockdn :1; /* bit 15 Flash Config Lock-Down */
+ u16 flcdone:1; /* bit 0 Flash Cycle Done */
+ u16 flcerr:1; /* bit 1 Flash Cycle Error */
+ u16 dael:1; /* bit 2 Direct Access error Log */
+ u16 berasesz:2; /* bit 4:3 Sector Erase Size */
+ u16 flcinprog:1; /* bit 5 flash cycle in Progress */
+ u16 reserved1:2; /* bit 13:6 Reserved */
+ u16 reserved2:6; /* bit 13:6 Reserved */
+ u16 fldesvalid:1; /* bit 14 Flash Descriptor Valid */
+ u16 flockdn:1; /* bit 15 Flash Config Lock-Down */
} hsf_status;
u16 regval;
};
@@ -157,11 +160,11 @@ union ich8_hws_flash_status {
/* Offset 06h FLCTL */
union ich8_hws_flash_ctrl {
struct ich8_hsflctl {
- u16 flcgo :1; /* 0 Flash Cycle Go */
- u16 flcycle :2; /* 2:1 Flash Cycle */
- u16 reserved :5; /* 7:3 Reserved */
- u16 fldbcount :2; /* 9:8 Flash Data Byte Count */
- u16 flockdn :6; /* 15:10 Reserved */
+ u16 flcgo:1; /* 0 Flash Cycle Go */
+ u16 flcycle:2; /* 2:1 Flash Cycle */
+ u16 reserved:5; /* 7:3 Reserved */
+ u16 fldbcount:2; /* 9:8 Flash Data Byte Count */
+ u16 flockdn:6; /* 15:10 Reserved */
} hsf_ctrl;
u16 regval;
};
@@ -169,14 +172,30 @@ union ich8_hws_flash_ctrl {
/* ICH Flash Region Access Permissions */
union ich8_hws_flash_regacc {
struct ich8_flracc {
- u32 grra :8; /* 0:7 GbE region Read Access */
- u32 grwa :8; /* 8:15 GbE region Write Access */
- u32 gmrag :8; /* 23:16 GbE Master Read Access Grant */
- u32 gmwag :8; /* 31:24 GbE Master Write Access Grant */
+ u32 grra:8; /* 0:7 GbE region Read Access */
+ u32 grwa:8; /* 8:15 GbE region Write Access */
+ u32 gmrag:8; /* 23:16 GbE Master Read Access Grant */
+ u32 gmwag:8; /* 31:24 GbE Master Write Access Grant */
} hsf_flregacc;
u16 regval;
};
+static void e1000_toggle_lanphypc_value_ich8lan(struct e1000_hw *hw)
+{
+ u32 ctrl;
+
+ DEBUGFUNC("e1000_toggle_lanphypc_value_ich8lan");
+
+ ctrl = E1000_READ_REG(hw, E1000_CTRL);
+ ctrl |= E1000_CTRL_LANPHYPC_OVERRIDE;
+ ctrl &= ~E1000_CTRL_LANPHYPC_VALUE;
+ E1000_WRITE_REG(hw, E1000_CTRL, ctrl);
+ E1000_WRITE_FLUSH(hw);
+ usec_delay(10);
+ ctrl &= ~E1000_CTRL_LANPHYPC_OVERRIDE;
+ E1000_WRITE_REG(hw, E1000_CTRL, ctrl);
+}
+
/**
* e1000_init_phy_params_pchlan - Initialize PHY function pointers
* @hw: pointer to the HW structure
@@ -186,70 +205,66 @@ union ich8_hws_flash_regacc {
static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw)
{
struct e1000_phy_info *phy = &hw->phy;
- u32 ctrl, fwsm;
s32 ret_val = E1000_SUCCESS;
DEBUGFUNC("e1000_init_phy_params_pchlan");
- phy->addr = 1;
- phy->reset_delay_us = 100;
-
- phy->ops.acquire = e1000_acquire_swflag_ich8lan;
- phy->ops.check_reset_block = e1000_check_reset_block_ich8lan;
- phy->ops.get_cfg_done = e1000_get_cfg_done_ich8lan;
- phy->ops.read_reg = e1000_read_phy_reg_hv;
- phy->ops.read_reg_locked = e1000_read_phy_reg_hv_locked;
- phy->ops.release = e1000_release_swflag_ich8lan;
- phy->ops.reset = e1000_phy_hw_reset_ich8lan;
- phy->ops.set_d0_lplu_state = e1000_set_lplu_state_pchlan;
- phy->ops.set_d3_lplu_state = e1000_set_lplu_state_pchlan;
- phy->ops.write_reg = e1000_write_phy_reg_hv;
- phy->ops.write_reg_locked = e1000_write_phy_reg_hv_locked;
- phy->ops.power_up = e1000_power_up_phy_copper;
- phy->ops.power_down = e1000_power_down_phy_copper_ich8lan;
- phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
+ phy->addr = 1;
+ phy->reset_delay_us = 100;
+
+ phy->ops.acquire = e1000_acquire_swflag_ich8lan;
+ phy->ops.check_reset_block = e1000_check_reset_block_ich8lan;
+ phy->ops.get_cfg_done = e1000_get_cfg_done_ich8lan;
+ phy->ops.set_page = e1000_set_page_igp;
+ phy->ops.read_reg = e1000_read_phy_reg_hv;
+ phy->ops.read_reg_locked = e1000_read_phy_reg_hv_locked;
+ phy->ops.read_reg_page = e1000_read_phy_reg_page_hv;
+ phy->ops.release = e1000_release_swflag_ich8lan;
+ phy->ops.reset = e1000_phy_hw_reset_ich8lan;
+ phy->ops.set_d0_lplu_state = e1000_set_lplu_state_pchlan;
+ phy->ops.set_d3_lplu_state = e1000_set_lplu_state_pchlan;
+ phy->ops.write_reg = e1000_write_phy_reg_hv;
+ phy->ops.write_reg_locked = e1000_write_phy_reg_hv_locked;
+ phy->ops.write_reg_page = e1000_write_phy_reg_page_hv;
+ phy->ops.power_up = e1000_power_up_phy_copper;
+ phy->ops.power_down = e1000_power_down_phy_copper_ich8lan;
+ phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
- /*
- * The MAC-PHY interconnect may still be in SMBus mode
- * after Sx->S0. If the manageability engine (ME) is
- * disabled, then toggle the LANPHYPC Value bit to force
- * the interconnect to PCIe mode.
- */
- fwsm = E1000_READ_REG(hw, E1000_FWSM);
- if (!(fwsm & E1000_ICH_FWSM_FW_VALID) &&
- !(hw->phy.ops.check_reset_block(hw))) {
- ctrl = E1000_READ_REG(hw, E1000_CTRL);
- ctrl |= E1000_CTRL_LANPHYPC_OVERRIDE;
- ctrl &= ~E1000_CTRL_LANPHYPC_VALUE;
- E1000_WRITE_REG(hw, E1000_CTRL, ctrl);
- usec_delay(10);
- ctrl &= ~E1000_CTRL_LANPHYPC_OVERRIDE;
- E1000_WRITE_REG(hw, E1000_CTRL, ctrl);
+ if (!hw->phy.ops.check_reset_block(hw)) {
+ u32 fwsm = E1000_READ_REG(hw, E1000_FWSM);
+
+ /*
+ * The MAC-PHY interconnect may still be in SMBus mode after
+ * Sx->S0. If resetting the PHY is not blocked, toggle the
+ * LANPHYPC Value bit to force the interconnect to PCIe mode.
+ */
+ e1000_toggle_lanphypc_value_ich8lan(hw);
msec_delay(50);
/*
* Gate automatic PHY configuration by hardware on
* non-managed 82579
*/
- if (hw->mac.type == e1000_pch2lan)
+ if ((hw->mac.type == e1000_pch2lan) &&
+ !(fwsm & E1000_ICH_FWSM_FW_VALID))
e1000_gate_hw_phy_config_ich8lan(hw, TRUE);
- }
- /*
- * Reset the PHY before any acccess to it. Doing so, ensures that
- * the PHY is in a known good state before we read/write PHY registers.
- * The generic reset is sufficient here, because we haven't determined
- * the PHY type yet.
- */
- ret_val = e1000_phy_hw_reset_generic(hw);
- if (ret_val)
- goto out;
+ /*
+ * Reset the PHY before any access to it. Doing so, ensures
+ * that the PHY is in a known good state before we read/write
+ * PHY registers. The generic reset is sufficient here,
+ * because we haven't determined the PHY type yet.
+ */
+ ret_val = e1000_phy_hw_reset_generic(hw);
+ if (ret_val)
+ goto out;
- /* Ungate automatic PHY configuration on non-managed 82579 */
- if ((hw->mac.type == e1000_pch2lan) &&
- !(fwsm & E1000_ICH_FWSM_FW_VALID)) {
- msec_delay(10);
- e1000_gate_hw_phy_config_ich8lan(hw, FALSE);
+ /* Ungate automatic PHY configuration on non-managed 82579 */
+ if ((hw->mac.type == e1000_pch2lan) &&
+ !(fwsm & E1000_ICH_FWSM_FW_VALID)) {
+ msec_delay(10);
+ e1000_gate_hw_phy_config_ich8lan(hw, FALSE);
+ }
}
phy->id = e1000_phy_unknown;
@@ -315,21 +330,21 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw)
DEBUGFUNC("e1000_init_phy_params_ich8lan");
- phy->addr = 1;
- phy->reset_delay_us = 100;
-
- phy->ops.acquire = e1000_acquire_swflag_ich8lan;
- phy->ops.check_reset_block = e1000_check_reset_block_ich8lan;
- phy->ops.get_cable_length = e1000_get_cable_length_igp_2;
- phy->ops.get_cfg_done = e1000_get_cfg_done_ich8lan;
- phy->ops.read_reg = e1000_read_phy_reg_igp;
- phy->ops.release = e1000_release_swflag_ich8lan;
- phy->ops.reset = e1000_phy_hw_reset_ich8lan;
- phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_ich8lan;
- phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_ich8lan;
- phy->ops.write_reg = e1000_write_phy_reg_igp;
- phy->ops.power_up = e1000_power_up_phy_copper;
- phy->ops.power_down = e1000_power_down_phy_copper_ich8lan;
+ phy->addr = 1;
+ phy->reset_delay_us = 100;
+
+ phy->ops.acquire = e1000_acquire_swflag_ich8lan;
+ phy->ops.check_reset_block = e1000_check_reset_block_ich8lan;
+ phy->ops.get_cable_length = e1000_get_cable_length_igp_2;
+ phy->ops.get_cfg_done = e1000_get_cfg_done_ich8lan;
+ phy->ops.read_reg = e1000_read_phy_reg_igp;
+ phy->ops.release = e1000_release_swflag_ich8lan;
+ phy->ops.reset = e1000_phy_hw_reset_ich8lan;
+ phy->ops.set_d0_lplu_state = e1000_set_d0_lplu_state_ich8lan;
+ phy->ops.set_d3_lplu_state = e1000_set_d3_lplu_state_ich8lan;
+ phy->ops.write_reg = e1000_write_phy_reg_igp;
+ phy->ops.power_up = e1000_power_up_phy_copper;
+ phy->ops.power_down = e1000_power_down_phy_copper_ich8lan;
/*
* We may need to do this twice - once for IGP and if that fails,
@@ -438,7 +453,7 @@ static s32 e1000_init_nvm_params_ich8lan(struct e1000_hw *hw)
* size represents two separate NVM banks.
*/
nvm->flash_bank_size = (sector_end_addr - sector_base_addr)
- << FLASH_SECTOR_ADDR_SHIFT;
+ << FLASH_SECTOR_ADDR_SHIFT;
nvm->flash_bank_size /= 2;
/* Adjust to word count */
nvm->flash_bank_size /= sizeof(u16);
@@ -455,13 +470,13 @@ static s32 e1000_init_nvm_params_ich8lan(struct e1000_hw *hw)
E1000_MUTEX_INIT(&dev_spec->swflag_mutex);
/* Function Pointers */
- nvm->ops.acquire = e1000_acquire_nvm_ich8lan;
- nvm->ops.release = e1000_release_nvm_ich8lan;
- nvm->ops.read = e1000_read_nvm_ich8lan;
- nvm->ops.update = e1000_update_nvm_checksum_ich8lan;
+ nvm->ops.acquire = e1000_acquire_nvm_ich8lan;
+ nvm->ops.release = e1000_release_nvm_ich8lan;
+ nvm->ops.read = e1000_read_nvm_ich8lan;
+ nvm->ops.update = e1000_update_nvm_checksum_ich8lan;
nvm->ops.valid_led_default = e1000_valid_led_default_ich8lan;
- nvm->ops.validate = e1000_validate_nvm_checksum_ich8lan;
- nvm->ops.write = e1000_write_nvm_ich8lan;
+ nvm->ops.validate = e1000_validate_nvm_checksum_ich8lan;
+ nvm->ops.write = e1000_write_nvm_ich8lan;
out:
return ret_val;
@@ -477,7 +492,6 @@ out:
static s32 e1000_init_mac_params_ich8lan(struct e1000_hw *hw)
{
struct e1000_mac_info *mac = &hw->mac;
- u16 pci_cfg;
DEBUGFUNC("e1000_init_mac_params_ich8lan");
@@ -549,9 +563,6 @@ static s32 e1000_init_mac_params_ich8lan(struct e1000_hw *hw)
e1000_update_mc_addr_list_pch2lan;
/* fall-through */
case e1000_pchlan:
- /* save PCH revision_id */
- e1000_read_pci_cfg(hw, 0x2, &pci_cfg);
- hw->revision_id = (u8)(pci_cfg &= 0x000F);
/* check management mode */
mac->ops.check_mng_mode = e1000_check_mng_mode_pchlan;
/* ID LED init */
@@ -568,6 +579,11 @@ static s32 e1000_init_mac_params_ich8lan(struct e1000_hw *hw)
break;
}
+#if defined(NAHUM6_HW) && (defined(LTR_SUPPORT) || defined(OBFF_SUPPORT))
+ if (mac->type == e1000_pch_lpt) {
+ }
+
+#endif /* NAHUM6_HW && (LTR_SUPPORT || OBFF_SUPPORT) */
/* Enable PCS Lock-loss workaround for ICH8 */
if (mac->type == e1000_ich8lan)
e1000_set_kmrn_lock_loss_workaround_ich8lan(hw, TRUE);
@@ -589,6 +605,7 @@ static s32 e1000_init_mac_params_ich8lan(struct e1000_hw *hw)
**/
static s32 e1000_set_eee_pchlan(struct e1000_hw *hw)
{
+ struct e1000_dev_spec_ich8lan *dev_spec = &hw->dev_spec.ich8lan;
s32 ret_val = E1000_SUCCESS;
u16 phy_reg;
@@ -601,7 +618,7 @@ static s32 e1000_set_eee_pchlan(struct e1000_hw *hw)
if (ret_val)
goto out;
- if (hw->dev_spec.ich8lan.eee_disable)
+ if (dev_spec->eee_disable)
phy_reg &= ~I82579_LPI_CTRL_ENABLE_MASK;
else
phy_reg |= I82579_LPI_CTRL_ENABLE_MASK;
@@ -624,6 +641,7 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
struct e1000_mac_info *mac = &hw->mac;
s32 ret_val;
bool link;
+ u16 phy_reg;
DEBUGFUNC("e1000_check_for_copper_link_ich8lan");
@@ -653,21 +671,46 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)
goto out;
}
+#if defined(NAHUM6_HW) && (defined(LTR_SUPPORT) || defined(OBFF_SUPPORT))
+ if (hw->mac.type == e1000_pch_lpt) {
+ }
+
+#endif /* NAHUM6_HW && (LTR_SUPPORT || OBFF_SUPPORT) */
if (!link)
goto out; /* No link detected */
mac->get_link_status = FALSE;
- if (hw->phy.type == e1000_phy_82578) {
- ret_val = e1000_link_stall_workaround_hv(hw);
- if (ret_val)
- goto out;
- }
-
- if (hw->mac.type == e1000_pch2lan) {
+ switch (hw->mac.type) {
+ case e1000_pch2lan:
ret_val = e1000_k1_workaround_lv(hw);
if (ret_val)
goto out;
+ /* fall-thru */
+ case e1000_pchlan:
+ if (hw->phy.type == e1000_phy_82578) {
+ ret_val = e1000_link_stall_workaround_hv(hw);
+ if (ret_val)
+ goto out;
+ }
+
+ /*
+ * Workaround for PCHx parts in half-duplex:
+ * Set the number of preambles removed from the packet
+ * when it is passed from the PHY to the MAC to prevent
+ * the MAC from misinterpreting the packet type.
+ */
+ hw->phy.ops.read_reg(hw, HV_KMRN_FIFO_CTRLSTA, &phy_reg);
+ phy_reg &= ~HV_KMRN_FIFO_CTRLSTA_PREAMBLE_MASK;
+
+ if ((E1000_READ_REG(hw, E1000_STATUS) & E1000_STATUS_FD) !=
+ E1000_STATUS_FD)
+ phy_reg |= (1 << HV_KMRN_FIFO_CTRLSTA_PREAMBLE_SHIFT);
+
+ hw->phy.ops.write_reg(hw, HV_KMRN_FIFO_CTRLSTA, phy_reg);
+ break;
+ default:
+ break;
}
/*
@@ -794,7 +837,7 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
}
if (!timeout) {
- DEBUGOUT("SW/FW/HW has locked the resource for too long.\n");
+ DEBUGOUT("SW has already locked the resource.\n");
ret_val = -E1000_ERR_CONFIG;
goto out;
}
@@ -814,7 +857,8 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
}
if (!timeout) {
- DEBUGOUT("Failed to acquire the semaphore.\n");
+ DEBUGOUT2("Failed to acquire the semaphore, FW or HW has it: FWSM=0x%8.8x EXTCNF_CTRL=0x%8.8x)\n",
+ E1000_READ_REG(hw, E1000_FWSM), extcnf_ctrl);
extcnf_ctrl &= ~E1000_EXTCNF_CTRL_SWFLAG;
E1000_WRITE_REG(hw, E1000_EXTCNF_CTRL, extcnf_ctrl);
ret_val = -E1000_ERR_CONFIG;
@@ -918,8 +962,8 @@ static void e1000_rar_set_pch2lan(struct e1000_hw *hw, u8 *addr, u32 index)
* from network order (big endian) to little endian
*/
rar_low = ((u32) addr[0] |
- ((u32) addr[1] << 8) |
- ((u32) addr[2] << 16) | ((u32) addr[3] << 24));
+ ((u32) addr[1] << 8) |
+ ((u32) addr[2] << 16) | ((u32) addr[3] << 24));
rar_high = ((u32) addr[4] | ((u32) addr[5] << 8));
@@ -963,22 +1007,38 @@ static void e1000_rar_set_pch2lan(struct e1000_hw *hw, u8 *addr, u32 index)
* The caller must have a packed mc_addr_list of multicast addresses.
**/
static void e1000_update_mc_addr_list_pch2lan(struct e1000_hw *hw,
- u8 *mc_addr_list,
- u32 mc_addr_count)
+ u8 *mc_addr_list,
+ u32 mc_addr_count)
{
+ u16 phy_reg = 0;
int i;
+ s32 ret_val;
DEBUGFUNC("e1000_update_mc_addr_list_pch2lan");
e1000_update_mc_addr_list_generic(hw, mc_addr_list, mc_addr_count);
+ ret_val = hw->phy.ops.acquire(hw);
+ if (ret_val)
+ return;
+
+ ret_val = e1000_enable_phy_wakeup_reg_access_bm(hw, &phy_reg);
+ if (ret_val)
+ goto release;
+
for (i = 0; i < hw->mac.mta_reg_count; i++) {
- hw->phy.ops.write_reg(hw, BM_MTA(i),
- (u16)(hw->mac.mta_shadow[i] & 0xFFFF));
- hw->phy.ops.write_reg(hw, (BM_MTA(i) + 1),
- (u16)((hw->mac.mta_shadow[i] >> 16) &
- 0xFFFF));
+ hw->phy.ops.write_reg_page(hw, BM_MTA(i),
+ (u16)(hw->mac.mta_shadow[i] &
+ 0xFFFF));
+ hw->phy.ops.write_reg_page(hw, (BM_MTA(i) + 1),
+ (u16)((hw->mac.mta_shadow[i] >> 16) &
+ 0xFFFF));
}
+
+ e1000_disable_phy_wakeup_reg_access_bm(hw, &phy_reg);
+
+release:
+ hw->phy.ops.release(hw);
}
/**
@@ -995,13 +1055,10 @@ static s32 e1000_check_reset_block_ich8lan(struct e1000_hw *hw)
DEBUGFUNC("e1000_check_reset_block_ich8lan");
- if (hw->phy.reset_disable)
- return E1000_BLK_PHY_RESET;
-
fwsm = E1000_READ_REG(hw, E1000_FWSM);
return (fwsm & E1000_ICH_FWSM_RSPCIPHY) ? E1000_SUCCESS
- : E1000_BLK_PHY_RESET;
+ : E1000_BLK_PHY_RESET;
}
/**
@@ -1187,46 +1244,46 @@ static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link)
if (link) {
if (hw->phy.type == e1000_phy_82578) {
ret_val = hw->phy.ops.read_reg_locked(hw, BM_CS_STATUS,
- &status_reg);
+ &status_reg);
if (ret_val)
goto release;
status_reg &= BM_CS_STATUS_LINK_UP |
- BM_CS_STATUS_RESOLVED |
- BM_CS_STATUS_SPEED_MASK;
+ BM_CS_STATUS_RESOLVED |
+ BM_CS_STATUS_SPEED_MASK;
if (status_reg == (BM_CS_STATUS_LINK_UP |
- BM_CS_STATUS_RESOLVED |
- BM_CS_STATUS_SPEED_1000))
+ BM_CS_STATUS_RESOLVED |
+ BM_CS_STATUS_SPEED_1000))
k1_enable = FALSE;
}
if (hw->phy.type == e1000_phy_82577) {
ret_val = hw->phy.ops.read_reg_locked(hw, HV_M_STATUS,
- &status_reg);
+ &status_reg);
if (ret_val)
goto release;
status_reg &= HV_M_STATUS_LINK_UP |
- HV_M_STATUS_AUTONEG_COMPLETE |
- HV_M_STATUS_SPEED_MASK;
+ HV_M_STATUS_AUTONEG_COMPLETE |
+ HV_M_STATUS_SPEED_MASK;
if (status_reg == (HV_M_STATUS_LINK_UP |
- HV_M_STATUS_AUTONEG_COMPLETE |
- HV_M_STATUS_SPEED_1000))
+ HV_M_STATUS_AUTONEG_COMPLETE |
+ HV_M_STATUS_SPEED_1000))
k1_enable = FALSE;
}
/* Link stall fix for link up */
ret_val = hw->phy.ops.write_reg_locked(hw, PHY_REG(770, 19),
- 0x0100);
+ 0x0100);
if (ret_val)
goto release;
} else {
/* Link stall fix for link down */
ret_val = hw->phy.ops.write_reg_locked(hw, PHY_REG(770, 19),
- 0x4100);
+ 0x4100);
if (ret_val)
goto release;
}
@@ -1259,9 +1316,8 @@ s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable)
DEBUGFUNC("e1000_configure_k1_ich8lan");
- ret_val = e1000_read_kmrn_reg_locked(hw,
- E1000_KMRNCTRLSTA_K1_CONFIG,
- &kmrn_reg);
+ ret_val = e1000_read_kmrn_reg_locked(hw, E1000_KMRNCTRLSTA_K1_CONFIG,
+ &kmrn_reg);
if (ret_val)
goto out;
@@ -1270,9 +1326,8 @@ s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable)
else
kmrn_reg &= ~E1000_KMRNCTRLSTA_K1_ENABLE;
- ret_val = e1000_write_kmrn_reg_locked(hw,
- E1000_KMRNCTRLSTA_K1_CONFIG,
- kmrn_reg);
+ ret_val = e1000_write_kmrn_reg_locked(hw, E1000_KMRNCTRLSTA_K1_CONFIG,
+ kmrn_reg);
if (ret_val)
goto out;
@@ -1285,9 +1340,11 @@ s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable)
E1000_WRITE_REG(hw, E1000_CTRL, reg);
E1000_WRITE_REG(hw, E1000_CTRL_EXT, ctrl_ext | E1000_CTRL_EXT_SPD_BYPS);
+ E1000_WRITE_FLUSH(hw);
usec_delay(20);
E1000_WRITE_REG(hw, E1000_CTRL, ctrl_reg);
E1000_WRITE_REG(hw, E1000_CTRL_EXT, ctrl_ext);
+ E1000_WRITE_FLUSH(hw);
usec_delay(20);
out:
@@ -1303,7 +1360,7 @@ out:
* collectively called OEM bits. The OEM Write Enable bit and SW Config bit
* in NVM determines whether HW should configure LPLU and Gbe Disable.
**/
-s32 e1000_oem_bits_config_ich8lan(struct e1000_hw *hw, bool d0_state)
+static s32 e1000_oem_bits_config_ich8lan(struct e1000_hw *hw, bool d0_state)
{
s32 ret_val = 0;
u32 mac_reg;
@@ -1342,16 +1399,20 @@ s32 e1000_oem_bits_config_ich8lan(struct e1000_hw *hw, bool d0_state)
if (mac_reg & E1000_PHY_CTRL_D0A_LPLU)
oem_reg |= HV_OEM_BITS_LPLU;
+
+ /* Set Restart auto-neg to activate the bits */
+ if (!hw->phy.ops.check_reset_block(hw))
+ oem_reg |= HV_OEM_BITS_RESTART_AN;
} else {
- if (mac_reg & E1000_PHY_CTRL_NOND0A_GBE_DISABLE)
+ if (mac_reg & (E1000_PHY_CTRL_GBE_DISABLE |
+ E1000_PHY_CTRL_NOND0A_GBE_DISABLE))
oem_reg |= HV_OEM_BITS_GBE_DIS;
- if (mac_reg & E1000_PHY_CTRL_NOND0A_LPLU)
+ if (mac_reg & (E1000_PHY_CTRL_D0A_LPLU |
+ E1000_PHY_CTRL_NOND0A_LPLU))
oem_reg |= HV_OEM_BITS_LPLU;
}
- /* Restart auto-neg to activate the bits */
- if (!hw->phy.ops.check_reset_block(hw))
- oem_reg |= HV_OEM_BITS_RESTART_AN;
+
ret_val = hw->phy.ops.write_reg_locked(hw, HV_OEM_BITS, oem_reg);
out:
@@ -1362,20 +1423,6 @@ out:
/**
- * e1000_hv_phy_powerdown_workaround_ich8lan - Power down workaround on Sx
- * @hw: pointer to the HW structure
- **/
-s32 e1000_hv_phy_powerdown_workaround_ich8lan(struct e1000_hw *hw)
-{
- DEBUGFUNC("e1000_hv_phy_powerdown_workaround_ich8lan");
-
- if ((hw->phy.type != e1000_phy_82577) || (hw->revision_id > 2))
- return E1000_SUCCESS;
-
- return hw->phy.ops.write_reg(hw, PHY_REG(768, 25), 0x0444);
-}
-
-/**
* e1000_set_mdio_slow_mode_hv - Set slow MDIO access mode
* @hw: pointer to the HW structure
**/
@@ -1418,32 +1465,6 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw)
goto out;
}
- /* Hanksville M Phy init for IEEE. */
- if ((hw->revision_id == 2) &&
- (hw->phy.type == e1000_phy_82577) &&
- ((hw->phy.revision == 2) || (hw->phy.revision == 3))) {
- hw->phy.ops.write_reg(hw, 0x10, 0x8823);
- hw->phy.ops.write_reg(hw, 0x11, 0x0018);
- hw->phy.ops.write_reg(hw, 0x10, 0x8824);
- hw->phy.ops.write_reg(hw, 0x11, 0x0016);
- hw->phy.ops.write_reg(hw, 0x10, 0x8825);
- hw->phy.ops.write_reg(hw, 0x11, 0x001A);
- hw->phy.ops.write_reg(hw, 0x10, 0x888C);
- hw->phy.ops.write_reg(hw, 0x11, 0x0007);
- hw->phy.ops.write_reg(hw, 0x10, 0x888D);
- hw->phy.ops.write_reg(hw, 0x11, 0x0007);
- hw->phy.ops.write_reg(hw, 0x10, 0x888E);
- hw->phy.ops.write_reg(hw, 0x11, 0x0007);
- hw->phy.ops.write_reg(hw, 0x10, 0x8827);
- hw->phy.ops.write_reg(hw, 0x11, 0x0001);
- hw->phy.ops.write_reg(hw, 0x10, 0x8835);
- hw->phy.ops.write_reg(hw, 0x11, 0x0001);
- hw->phy.ops.write_reg(hw, 0x10, 0x8834);
- hw->phy.ops.write_reg(hw, 0x11, 0x0001);
- hw->phy.ops.write_reg(hw, 0x10, 0x8833);
- hw->phy.ops.write_reg(hw, 0x11, 0x0002);
- }
-
if (((hw->phy.type == e1000_phy_82577) &&
((hw->phy.revision == 1) || (hw->phy.revision == 2))) ||
((hw->phy.type == e1000_phy_82578) && (hw->phy.revision == 1))) {
@@ -1453,26 +1474,13 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw)
goto out;
/* Preamble tuning for SSC */
- ret_val = hw->phy.ops.write_reg(hw, PHY_REG(770, 16), 0xA204);
+ ret_val = hw->phy.ops.write_reg(hw, HV_KMRN_FIFO_CTRLSTA,
+ 0xA204);
if (ret_val)
goto out;
}
if (hw->phy.type == e1000_phy_82578) {
- if (hw->revision_id < 3) {
- /* PHY config */
- ret_val = hw->phy.ops.write_reg(hw, (1 << 6) | 0x29,
- 0x66C0);
- if (ret_val)
- goto out;
-
- /* PHY config */
- ret_val = hw->phy.ops.write_reg(hw, (1 << 6) | 0x1E,
- 0xFFFF);
- if (ret_val)
- goto out;
- }
-
/*
* Return registers to default by doing a soft reset then
* writing 0x3140 to the control register.
@@ -1480,25 +1488,10 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw)
if (hw->phy.revision < 2) {
e1000_phy_sw_reset_generic(hw);
ret_val = hw->phy.ops.write_reg(hw, PHY_CONTROL,
- 0x3140);
+ 0x3140);
}
}
- if ((hw->revision_id == 2) &&
- (hw->phy.type == e1000_phy_82577) &&
- ((hw->phy.revision == 2) || (hw->phy.revision == 3))) {
- /*
- * Workaround for OEM (GbE) not operating after reset -
- * restart AN (twice)
- */
- ret_val = hw->phy.ops.write_reg(hw, PHY_REG(768, 25), 0x0400);
- if (ret_val)
- goto out;
- ret_val = hw->phy.ops.write_reg(hw, PHY_REG(768, 25), 0x0400);
- if (ret_val)
- goto out;
- }
-
/* Select page 0 */
ret_val = hw->phy.ops.acquire(hw);
if (ret_val)
@@ -1522,12 +1515,11 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e1000_hw *hw)
ret_val = hw->phy.ops.acquire(hw);
if (ret_val)
goto out;
- ret_val = hw->phy.ops.read_reg_locked(hw, BM_PORT_GEN_CFG_REG,
- &phy_data);
+ ret_val = hw->phy.ops.read_reg_locked(hw, BM_PORT_GEN_CFG, &phy_data);
if (ret_val)
goto release;
- ret_val = hw->phy.ops.write_reg_locked(hw, BM_PORT_GEN_CFG_REG,
- phy_data & 0x00FF);
+ ret_val = hw->phy.ops.write_reg_locked(hw, BM_PORT_GEN_CFG,
+ phy_data & 0x00FF);
release:
hw->phy.ops.release(hw);
out:
@@ -1541,19 +1533,38 @@ out:
void e1000_copy_rx_addrs_to_phy_ich8lan(struct e1000_hw *hw)
{
u32 mac_reg;
- u16 i;
+ u16 i, phy_reg = 0;
+ s32 ret_val;
DEBUGFUNC("e1000_copy_rx_addrs_to_phy_ich8lan");
+ ret_val = hw->phy.ops.acquire(hw);
+ if (ret_val)
+ return;
+ ret_val = e1000_enable_phy_wakeup_reg_access_bm(hw, &phy_reg);
+ if (ret_val)
+ goto release;
+
/* Copy both RAL/H (rar_entry_count) and SHRAL/H (+4) to PHY */
for (i = 0; i < (hw->mac.rar_entry_count + 4); i++) {
mac_reg = E1000_READ_REG(hw, E1000_RAL(i));
- hw->phy.ops.write_reg(hw, BM_RAR_L(i), (u16)(mac_reg & 0xFFFF));
- hw->phy.ops.write_reg(hw, BM_RAR_M(i), (u16)((mac_reg >> 16) & 0xFFFF));
+ hw->phy.ops.write_reg_page(hw, BM_RAR_L(i),
+ (u16)(mac_reg & 0xFFFF));
+ hw->phy.ops.write_reg_page(hw, BM_RAR_M(i),
+ (u16)((mac_reg >> 16) & 0xFFFF));
+
mac_reg = E1000_READ_REG(hw, E1000_RAH(i));
- hw->phy.ops.write_reg(hw, BM_RAR_H(i), (u16)(mac_reg & 0xFFFF));
- hw->phy.ops.write_reg(hw, BM_RAR_CTRL(i), (u16)((mac_reg >> 16) & 0x8000));
+ hw->phy.ops.write_reg_page(hw, BM_RAR_H(i),
+ (u16)(mac_reg & 0xFFFF));
+ hw->phy.ops.write_reg_page(hw, BM_RAR_CTRL(i),
+ (u16)((mac_reg & E1000_RAH_AV)
+ >> 16));
}
+
+ e1000_disable_phy_wakeup_reg_access_bm(hw, &phy_reg);
+
+release:
+ hw->phy.ops.release(hw);
}
static u32 e1000_calc_rx_da_crc(u8 mac[])
@@ -1594,7 +1605,8 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)
/* disable Rx path while enabling/disabling workaround */
hw->phy.ops.read_reg(hw, PHY_REG(769, 20), &phy_reg);
- ret_val = hw->phy.ops.write_reg(hw, PHY_REG(769, 20), phy_reg | (1 << 14));
+ ret_val = hw->phy.ops.write_reg(hw, PHY_REG(769, 20),
+ phy_reg | (1 << 14));
if (ret_val)
goto out;
@@ -1676,11 +1688,12 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)
ret_val = hw->phy.ops.write_reg(hw, PHY_REG(776, 20), data);
if (ret_val)
goto out;
- ret_val = hw->phy.ops.write_reg(hw, PHY_REG(776, 23), 0xFE00);
+ ret_val = hw->phy.ops.write_reg(hw, PHY_REG(776, 23), 0xF100);
if (ret_val)
goto out;
hw->phy.ops.read_reg(hw, HV_PM_CTRL, &data);
- ret_val = hw->phy.ops.write_reg(hw, HV_PM_CTRL, data | (1 << 10));
+ ret_val = hw->phy.ops.write_reg(hw, HV_PM_CTRL, data |
+ (1 << 10));
if (ret_val)
goto out;
} else {
@@ -1737,13 +1750,15 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)
if (ret_val)
goto out;
hw->phy.ops.read_reg(hw, HV_PM_CTRL, &data);
- ret_val = hw->phy.ops.write_reg(hw, HV_PM_CTRL, data & ~(1 << 10));
+ ret_val = hw->phy.ops.write_reg(hw, HV_PM_CTRL, data &
+ ~(1 << 10));
if (ret_val)
goto out;
}
/* re-enable Rx path after enabling/disabling workaround */
- ret_val = hw->phy.ops.write_reg(hw, PHY_REG(769, 20), phy_reg & ~(1 << 14));
+ ret_val = hw->phy.ops.write_reg(hw, PHY_REG(769, 20), phy_reg &
+ ~(1 << 14));
out:
return ret_val;
@@ -1765,6 +1780,28 @@ static s32 e1000_lv_phy_workarounds_ich8lan(struct e1000_hw *hw)
/* Set MDIO slow mode before any other MDIO access */
ret_val = e1000_set_mdio_slow_mode_hv(hw);
+ ret_val = hw->phy.ops.acquire(hw);
+ if (ret_val)
+ goto out;
+ ret_val = hw->phy.ops.write_reg_locked(hw, I82579_EMI_ADDR,
+ I82579_MSE_THRESHOLD);
+ if (ret_val)
+ goto release;
+ /* set MSE higher to enable link to stay up when noise is high */
+ ret_val = hw->phy.ops.write_reg_locked(hw, I82579_EMI_DATA,
+ 0x0034);
+ if (ret_val)
+ goto release;
+ ret_val = hw->phy.ops.write_reg_locked(hw, I82579_EMI_ADDR,
+ I82579_MSE_LINK_DOWN);
+ if (ret_val)
+ goto release;
+ /* drop link after 5 times MSE threshold was reached */
+ ret_val = hw->phy.ops.write_reg_locked(hw, I82579_EMI_DATA,
+ 0x0005);
+release:
+ hw->phy.ops.release(hw);
+
out:
return ret_val;
}
@@ -1780,6 +1817,7 @@ static s32 e1000_k1_workaround_lv(struct e1000_hw *hw)
s32 ret_val = E1000_SUCCESS;
u16 status_reg = 0;
u32 mac_reg;
+ u16 phy_reg;
DEBUGFUNC("e1000_k1_workaround_lv");
@@ -1796,12 +1834,19 @@ static s32 e1000_k1_workaround_lv(struct e1000_hw *hw)
mac_reg = E1000_READ_REG(hw, E1000_FEXTNVM4);
mac_reg &= ~E1000_FEXTNVM4_BEACON_DURATION_MASK;
- if (status_reg & HV_M_STATUS_SPEED_1000)
+ ret_val = hw->phy.ops.read_reg(hw, I82579_LPI_CTRL, &phy_reg);
+ if (ret_val)
+ goto out;
+
+ if (status_reg & HV_M_STATUS_SPEED_1000) {
mac_reg |= E1000_FEXTNVM4_BEACON_DURATION_8USEC;
- else
+ phy_reg &= ~I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT;
+ } else {
mac_reg |= E1000_FEXTNVM4_BEACON_DURATION_16USEC;
-
+ phy_reg |= I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT;
+ }
E1000_WRITE_REG(hw, E1000_FEXTNVM4, mac_reg);
+ ret_val = hw->phy.ops.write_reg(hw, I82579_LPI_CTRL, phy_reg);
}
out:
@@ -1837,34 +1882,6 @@ static void e1000_gate_hw_phy_config_ich8lan(struct e1000_hw *hw, bool gate)
}
/**
- * e1000_hv_phy_tuning_workaround_ich8lan - This is a Phy tuning work around
- * needed for Nahum3 + Hanksville testing, requested by HW team
- **/
-static s32 e1000_hv_phy_tuning_workaround_ich8lan(struct e1000_hw *hw)
-{
- s32 ret_val = E1000_SUCCESS;
-
- DEBUGFUNC("e1000_hv_phy_tuning_workaround_ich8lan");
-
- ret_val = hw->phy.ops.write_reg(hw, PHY_REG(769, 25), 0x4431);
- if (ret_val)
- goto out;
-
- ret_val = hw->phy.ops.write_reg(hw, PHY_REG(770, 16), 0xA204);
- if (ret_val)
- goto out;
-
- ret_val = hw->phy.ops.write_reg(hw, (1 << 6) | 0x29, 0x66C0);
- if (ret_val)
- goto out;
-
- ret_val = hw->phy.ops.write_reg(hw, (1 << 6) | 0x1E, 0xFFFF);
-
-out:
- return ret_val;
-}
-
-/**
* e1000_lan_init_done_ich8lan - Check for PHY config completion
* @hw: pointer to the HW structure
*
@@ -1931,16 +1948,13 @@ static s32 e1000_post_phy_reset_ich8lan(struct e1000_hw *hw)
break;
}
- if (hw->device_id == E1000_DEV_ID_ICH10_HANKSVILLE) {
- ret_val = e1000_hv_phy_tuning_workaround_ich8lan(hw);
- if (ret_val)
- goto out;
+ /* Clear the host wakeup bit after lcd reset */
+ if (hw->mac.type >= e1000_pchlan) {
+ hw->phy.ops.read_reg(hw, BM_PORT_GEN_CFG, &reg);
+ reg &= ~BM_WUC_HOST_WU_BIT;
+ hw->phy.ops.write_reg(hw, BM_PORT_GEN_CFG, reg);
}
- /* Dummy read to clear the phy wakeup bit after lcd reset */
- if (hw->mac.type >= e1000_pchlan)
- hw->phy.ops.read_reg(hw, BM_WUC, &reg);
-
/* Configure the LCD with the extended configuration region in NVM */
ret_val = e1000_sw_lcd_config_ich8lan(hw);
if (ret_val)
@@ -2031,7 +2045,9 @@ static s32 e1000_set_lplu_state_pchlan(struct e1000_hw *hw, bool active)
else
oem_reg &= ~HV_OEM_BITS_LPLU;
- oem_reg |= HV_OEM_BITS_RESTART_AN;
+ if (!hw->phy.ops.check_reset_block(hw))
+ oem_reg |= HV_OEM_BITS_RESTART_AN;
+
ret_val = hw->phy.ops.write_reg(hw, HV_OEM_BITS, oem_reg);
out:
@@ -2081,12 +2097,12 @@ static s32 e1000_set_d0_lplu_state_ich8lan(struct e1000_hw *hw, bool active)
/* When LPLU is enabled, we should disable SmartSpeed */
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
} else {
@@ -2104,28 +2120,28 @@ static s32 e1000_set_d0_lplu_state_ich8lan(struct e1000_hw *hw, bool active)
*/
if (phy->smart_speed == e1000_smart_speed_on) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data |= IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
} else if (phy->smart_speed == e1000_smart_speed_off) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
}
@@ -2174,34 +2190,34 @@ static s32 e1000_set_d3_lplu_state_ich8lan(struct e1000_hw *hw, bool active)
*/
if (phy->smart_speed == e1000_smart_speed_on) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data |= IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
} else if (phy->smart_speed == e1000_smart_speed_off) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
}
} else if ((phy->autoneg_advertised == E1000_ALL_SPEED_DUPLEX) ||
- (phy->autoneg_advertised == E1000_ALL_NOT_GIG) ||
- (phy->autoneg_advertised == E1000_ALL_10_SPEED)) {
+ (phy->autoneg_advertised == E1000_ALL_NOT_GIG) ||
+ (phy->autoneg_advertised == E1000_ALL_10_SPEED)) {
phy_ctrl |= E1000_PHY_CTRL_NOND0A_LPLU;
E1000_WRITE_REG(hw, E1000_PHY_CTRL, phy_ctrl);
@@ -2217,15 +2233,15 @@ static s32 e1000_set_d3_lplu_state_ich8lan(struct e1000_hw *hw, bool active)
/* When LPLU is enabled, we should disable SmartSpeed */
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
}
out:
@@ -2264,8 +2280,7 @@ static s32 e1000_valid_nvm_bank_detect_ich8lan(struct e1000_hw *hw, u32 *bank)
goto out;
}
- DEBUGOUT("Unable to determine valid NVM bank via EEC - "
- "reading flash signature\n");
+ DEBUGOUT("Unable to determine valid NVM bank via EEC - reading flash signature\n");
/* fall-thru */
default:
/* set bank to 0 in case flash read fails */
@@ -2273,7 +2288,7 @@ static s32 e1000_valid_nvm_bank_detect_ich8lan(struct e1000_hw *hw, u32 *bank)
/* Check bank 0 */
ret_val = e1000_read_flash_byte_ich8lan(hw, act_offset,
- &sig_byte);
+ &sig_byte);
if (ret_val)
goto out;
if ((sig_byte & E1000_ICH_NVM_VALID_SIG_MASK) ==
@@ -2284,8 +2299,8 @@ static s32 e1000_valid_nvm_bank_detect_ich8lan(struct e1000_hw *hw, u32 *bank)
/* Check bank 1 */
ret_val = e1000_read_flash_byte_ich8lan(hw, act_offset +
- bank1_offset,
- &sig_byte);
+ bank1_offset,
+ &sig_byte);
if (ret_val)
goto out;
if ((sig_byte & E1000_ICH_NVM_VALID_SIG_MASK) ==
@@ -2312,7 +2327,7 @@ out:
* Reads a word(s) from the NVM using the flash access registers.
**/
static s32 e1000_read_nvm_ich8lan(struct e1000_hw *hw, u16 offset, u16 words,
- u16 *data)
+ u16 *data)
{
struct e1000_nvm_info *nvm = &hw->nvm;
struct e1000_dev_spec_ich8lan *dev_spec = &hw->dev_spec.ich8lan;
@@ -2343,13 +2358,12 @@ static s32 e1000_read_nvm_ich8lan(struct e1000_hw *hw, u16 offset, u16 words,
ret_val = E1000_SUCCESS;
for (i = 0; i < words; i++) {
- if ((dev_spec->shadow_ram) &&
- (dev_spec->shadow_ram[offset+i].modified)) {
+ if (dev_spec->shadow_ram[offset+i].modified) {
data[i] = dev_spec->shadow_ram[offset+i].value;
} else {
ret_val = e1000_read_flash_word_ich8lan(hw,
- act_offset + i,
- &word);
+ act_offset + i,
+ &word);
if (ret_val)
break;
data[i] = word;
@@ -2383,8 +2397,7 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw)
/* Check if the flash descriptor is valid */
if (hsfsts.hsf_status.fldesvalid == 0) {
- DEBUGOUT("Flash descriptor invalid. "
- "SW Sequencing must be used.");
+ DEBUGOUT("Flash descriptor invalid. SW Sequencing must be used.\n");
goto out;
}
@@ -2421,7 +2434,7 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw)
*/
for (i = 0; i < ICH_FLASH_READ_COMMAND_TIMEOUT; i++) {
hsfsts.regval = E1000_READ_FLASH_REG16(hw,
- ICH_FLASH_HSFSTS);
+ ICH_FLASH_HSFSTS);
if (hsfsts.hsf_status.flcinprog == 0) {
ret_val = E1000_SUCCESS;
break;
@@ -2435,9 +2448,9 @@ static s32 e1000_flash_cycle_init_ich8lan(struct e1000_hw *hw)
*/
hsfsts.hsf_status.flcdone = 1;
E1000_WRITE_FLASH_REG16(hw, ICH_FLASH_HSFSTS,
- hsfsts.regval);
+ hsfsts.regval);
} else {
- DEBUGOUT("Flash controller busy, cannot get access");
+ DEBUGOUT("Flash controller busy, cannot get access\n");
}
}
@@ -2490,7 +2503,7 @@ static s32 e1000_flash_cycle_ich8lan(struct e1000_hw *hw, u32 timeout)
* to bytes before read.
**/
static s32 e1000_read_flash_word_ich8lan(struct e1000_hw *hw, u32 offset,
- u16 *data)
+ u16 *data)
{
s32 ret_val;
@@ -2519,7 +2532,7 @@ out:
* Reads a single byte from the NVM using the flash access registers.
**/
static s32 e1000_read_flash_byte_ich8lan(struct e1000_hw *hw, u32 offset,
- u8 *data)
+ u8 *data)
{
s32 ret_val = E1000_SUCCESS;
u16 word = 0;
@@ -2544,7 +2557,7 @@ out:
* Reads a byte or word from the NVM using the flash access registers.
**/
static s32 e1000_read_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
- u8 size, u16 *data)
+ u8 size, u16 *data)
{
union ich8_hws_flash_status hsfsts;
union ich8_hws_flash_ctrl hsflctl;
@@ -2559,7 +2572,7 @@ static s32 e1000_read_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
goto out;
flash_linear_addr = (ICH_FLASH_LINEAR_ADDR_MASK & offset) +
- hw->nvm.flash_base_addr;
+ hw->nvm.flash_base_addr;
do {
usec_delay(1);
@@ -2577,7 +2590,7 @@ static s32 e1000_read_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
E1000_WRITE_FLASH_REG(hw, ICH_FLASH_FADDR, flash_linear_addr);
ret_val = e1000_flash_cycle_ich8lan(hw,
- ICH_FLASH_READ_COMMAND_TIMEOUT);
+ ICH_FLASH_READ_COMMAND_TIMEOUT);
/*
* Check if FCERR is set to 1, if set to 1, clear it
@@ -2600,13 +2613,12 @@ static s32 e1000_read_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
* ICH_FLASH_CYCLE_REPEAT_COUNT times.
*/
hsfsts.regval = E1000_READ_FLASH_REG16(hw,
- ICH_FLASH_HSFSTS);
+ ICH_FLASH_HSFSTS);
if (hsfsts.hsf_status.flcerr == 1) {
/* Repeat for some time before giving up. */
continue;
} else if (hsfsts.hsf_status.flcdone == 0) {
- DEBUGOUT("Timeout error - flash cycle "
- "did not complete.");
+ DEBUGOUT("Timeout error - flash cycle did not complete.\n");
break;
}
}
@@ -2626,7 +2638,7 @@ out:
* Writes a byte or word to the NVM using the flash access registers.
**/
static s32 e1000_write_nvm_ich8lan(struct e1000_hw *hw, u16 offset, u16 words,
- u16 *data)
+ u16 *data)
{
struct e1000_nvm_info *nvm = &hw->nvm;
struct e1000_dev_spec_ich8lan *dev_spec = &hw->dev_spec.ich8lan;
@@ -2720,8 +2732,8 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
data = dev_spec->shadow_ram[i].value;
} else {
ret_val = e1000_read_flash_word_ich8lan(hw, i +
- old_bank_offset,
- &data);
+ old_bank_offset,
+ &data);
if (ret_val)
break;
}
@@ -2743,15 +2755,15 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
usec_delay(100);
/* Write the bytes to the new bank. */
ret_val = e1000_retry_write_flash_byte_ich8lan(hw,
- act_offset,
- (u8)data);
+ act_offset,
+ (u8)data);
if (ret_val)
break;
usec_delay(100);
ret_val = e1000_retry_write_flash_byte_ich8lan(hw,
- act_offset + 1,
- (u8)(data >> 8));
+ act_offset + 1,
+ (u8)(data >> 8));
if (ret_val)
break;
}
@@ -2778,8 +2790,8 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
data &= 0xBFFF;
ret_val = e1000_retry_write_flash_byte_ich8lan(hw,
- act_offset * 2 + 1,
- (u8)(data >> 8));
+ act_offset * 2 + 1,
+ (u8)(data >> 8));
if (ret_val)
goto release;
@@ -2870,7 +2882,7 @@ out:
* Writes one/two bytes to the NVM using the flash access registers.
**/
static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
- u8 size, u16 data)
+ u8 size, u16 data)
{
union ich8_hws_flash_status hsfsts;
union ich8_hws_flash_ctrl hsflctl;
@@ -2886,7 +2898,7 @@ static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
goto out;
flash_linear_addr = (ICH_FLASH_LINEAR_ADDR_MASK & offset) +
- hw->nvm.flash_base_addr;
+ hw->nvm.flash_base_addr;
do {
usec_delay(1);
@@ -2915,7 +2927,7 @@ static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
* and try the whole sequence a few more times else done
*/
ret_val = e1000_flash_cycle_ich8lan(hw,
- ICH_FLASH_WRITE_COMMAND_TIMEOUT);
+ ICH_FLASH_WRITE_COMMAND_TIMEOUT);
if (ret_val == E1000_SUCCESS)
break;
@@ -2930,8 +2942,7 @@ static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,
/* Repeat for some time before giving up. */
continue;
if (hsfsts.hsf_status.flcdone == 0) {
- DEBUGOUT("Timeout error - flash cycle "
- "did not complete.");
+ DEBUGOUT("Timeout error - flash cycle did not complete.\n");
break;
}
} while (count++ < ICH_FLASH_CYCLE_REPEAT_COUNT);
@@ -2949,7 +2960,7 @@ out:
* Writes a single byte to the NVM using the flash access registers.
**/
static s32 e1000_write_flash_byte_ich8lan(struct e1000_hw *hw, u32 offset,
- u8 data)
+ u8 data)
{
u16 word = (u16)data;
@@ -2968,7 +2979,7 @@ static s32 e1000_write_flash_byte_ich8lan(struct e1000_hw *hw, u32 offset,
* Goes through a retry algorithm before giving up.
**/
static s32 e1000_retry_write_flash_byte_ich8lan(struct e1000_hw *hw,
- u32 offset, u8 byte)
+ u32 offset, u8 byte)
{
s32 ret_val;
u16 program_retries;
@@ -3071,10 +3082,10 @@ static s32 e1000_erase_flash_bank_ich8lan(struct e1000_hw *hw, u32 bank)
* Cycle field in hw flash control
*/
hsflctl.regval = E1000_READ_FLASH_REG16(hw,
- ICH_FLASH_HSFCTL);
+ ICH_FLASH_HSFCTL);
hsflctl.hsf_ctrl.flcycle = ICH_CYCLE_ERASE;
E1000_WRITE_FLASH_REG16(hw, ICH_FLASH_HSFCTL,
- hsflctl.regval);
+ hsflctl.regval);
/*
* Write the last 24 bits of an index within the
@@ -3083,10 +3094,10 @@ static s32 e1000_erase_flash_bank_ich8lan(struct e1000_hw *hw, u32 bank)
*/
flash_linear_addr += (j * sector_size);
E1000_WRITE_FLASH_REG(hw, ICH_FLASH_FADDR,
- flash_linear_addr);
+ flash_linear_addr);
ret_val = e1000_flash_cycle_ich8lan(hw,
- ICH_FLASH_ERASE_COMMAND_TIMEOUT);
+ ICH_FLASH_ERASE_COMMAND_TIMEOUT);
if (ret_val == E1000_SUCCESS)
break;
@@ -3130,8 +3141,7 @@ static s32 e1000_valid_led_default_ich8lan(struct e1000_hw *hw, u16 *data)
goto out;
}
- if (*data == ID_LED_RESERVED_0000 ||
- *data == ID_LED_RESERVED_FFFF)
+ if (*data == ID_LED_RESERVED_0000 || *data == ID_LED_RESERVED_FFFF)
*data = ID_LED_DEFAULT_ICH8LAN;
out:
@@ -3218,7 +3228,7 @@ out:
* @hw: pointer to the HW structure
*
* ICH8 use the PCI Express bus, but does not contain a PCI Express Capability
- * register, so the bus width is hard coded.
+ * register, so the the bus width is hard coded.
**/
static s32 e1000_get_bus_info_ich8lan(struct e1000_hw *hw)
{
@@ -3320,10 +3330,11 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
ret_val = e1000_acquire_swflag_ich8lan(hw);
DEBUGOUT("Issuing a global reset to ich8lan\n");
E1000_WRITE_REG(hw, E1000_CTRL, (ctrl | E1000_CTRL_RST));
+ /* cannot issue a flush here because it hangs the hardware */
msec_delay(20);
if (!ret_val)
- e1000_release_swflag_ich8lan(hw);
+ E1000_MUTEX_UNLOCK(&hw->dev_spec.ich8lan.swflag_mutex);
if (ctrl & E1000_CTRL_PHY_RST) {
ret_val = hw->phy.ops.get_cfg_done(hw);
@@ -3393,11 +3404,13 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)
/*
* The 82578 Rx buffer will stall if wakeup is enabled in host and
- * the ME. Reading the BM_WUC register will clear the host wakeup bit.
+ * the ME. Disable wakeup by clearing the host wakeup bit.
* Reset the phy after disabling host wakeup to reset the Rx buffer.
*/
if (hw->phy.type == e1000_phy_82578) {
- hw->phy.ops.read_reg(hw, BM_WUC, &i);
+ hw->phy.ops.read_reg(hw, BM_PORT_GEN_CFG, &i);
+ i &= ~BM_WUC_HOST_WU_BIT;
+ hw->phy.ops.write_reg(hw, BM_PORT_GEN_CFG, i);
ret_val = e1000_phy_hw_reset_ich8lan(hw);
if (ret_val)
return ret_val;
@@ -3411,13 +3424,13 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)
txdctl = (txdctl & ~E1000_TXDCTL_WTHRESH) |
E1000_TXDCTL_FULL_TX_DESC_WB;
txdctl = (txdctl & ~E1000_TXDCTL_PTHRESH) |
- E1000_TXDCTL_MAX_TX_DESC_PREFETCH;
+ E1000_TXDCTL_MAX_TX_DESC_PREFETCH;
E1000_WRITE_REG(hw, E1000_TXDCTL(0), txdctl);
txdctl = E1000_READ_REG(hw, E1000_TXDCTL(1));
txdctl = (txdctl & ~E1000_TXDCTL_WTHRESH) |
E1000_TXDCTL_FULL_TX_DESC_WB;
txdctl = (txdctl & ~E1000_TXDCTL_PTHRESH) |
- E1000_TXDCTL_MAX_TX_DESC_PREFETCH;
+ E1000_TXDCTL_MAX_TX_DESC_PREFETCH;
E1000_WRITE_REG(hw, E1000_TXDCTL(1), txdctl);
/*
@@ -3557,8 +3570,8 @@ static s32 e1000_setup_link_ich8lan(struct e1000_hw *hw)
E1000_WRITE_REG(hw, E1000_FCRTV_PCH, hw->fc.refresh_time);
ret_val = hw->phy.ops.write_reg(hw,
- PHY_REG(BM_PORT_CTRL_PAGE, 27),
- hw->fc.pause_time);
+ PHY_REG(BM_PORT_CTRL_PAGE, 27),
+ hw->fc.pause_time);
if (ret_val)
goto out;
}
@@ -3596,18 +3609,18 @@ static s32 e1000_setup_copper_link_ich8lan(struct e1000_hw *hw)
* this fixes erroneous timeouts at 10Mbps.
*/
ret_val = e1000_write_kmrn_reg_generic(hw, E1000_KMRNCTRLSTA_TIMEOUTS,
- 0xFFFF);
+ 0xFFFF);
if (ret_val)
goto out;
ret_val = e1000_read_kmrn_reg_generic(hw,
- E1000_KMRNCTRLSTA_INBAND_PARAM,
- &reg_data);
+ E1000_KMRNCTRLSTA_INBAND_PARAM,
+ &reg_data);
if (ret_val)
goto out;
reg_data |= 0x3F;
ret_val = e1000_write_kmrn_reg_generic(hw,
- E1000_KMRNCTRLSTA_INBAND_PARAM,
- reg_data);
+ E1000_KMRNCTRLSTA_INBAND_PARAM,
+ reg_data);
if (ret_val)
goto out;
@@ -3631,7 +3644,7 @@ static s32 e1000_setup_copper_link_ich8lan(struct e1000_hw *hw)
break;
case e1000_phy_ife:
ret_val = hw->phy.ops.read_reg(hw, IFE_PHY_MDIX_CONTROL,
- &reg_data);
+ &reg_data);
if (ret_val)
goto out;
@@ -3650,7 +3663,7 @@ static s32 e1000_setup_copper_link_ich8lan(struct e1000_hw *hw)
break;
}
ret_val = hw->phy.ops.write_reg(hw, IFE_PHY_MDIX_CONTROL,
- reg_data);
+ reg_data);
if (ret_val)
goto out;
break;
@@ -3674,7 +3687,7 @@ out:
* gigabit speeds.
**/
static s32 e1000_get_link_up_info_ich8lan(struct e1000_hw *hw, u16 *speed,
- u16 *duplex)
+ u16 *duplex)
{
s32 ret_val;
@@ -3756,7 +3769,7 @@ static s32 e1000_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw)
/* Disable GigE link negotiation */
phy_ctrl = E1000_READ_REG(hw, E1000_PHY_CTRL);
phy_ctrl |= (E1000_PHY_CTRL_GBE_DISABLE |
- E1000_PHY_CTRL_NOND0A_GBE_DISABLE);
+ E1000_PHY_CTRL_NOND0A_GBE_DISABLE);
E1000_WRITE_REG(hw, E1000_PHY_CTRL, phy_ctrl);
/*
@@ -3781,7 +3794,7 @@ out:
* /disabled - FALSE).
**/
void e1000_set_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw,
- bool state)
+ bool state)
{
struct e1000_dev_spec_ich8lan *dev_spec = &hw->dev_spec.ich8lan;
@@ -3823,7 +3836,7 @@ void e1000_igp3_phy_powerdown_workaround_ich8lan(struct e1000_hw *hw)
/* Disable link */
reg = E1000_READ_REG(hw, E1000_PHY_CTRL);
reg |= (E1000_PHY_CTRL_GBE_DISABLE |
- E1000_PHY_CTRL_NOND0A_GBE_DISABLE);
+ E1000_PHY_CTRL_NOND0A_GBE_DISABLE);
E1000_WRITE_REG(hw, E1000_PHY_CTRL, reg);
/*
@@ -3837,7 +3850,7 @@ void e1000_igp3_phy_powerdown_workaround_ich8lan(struct e1000_hw *hw)
hw->phy.ops.read_reg(hw, IGP3_VR_CTRL, &data);
data &= ~IGP3_VR_CTRL_DEV_POWERDOWN_MODE_MASK;
hw->phy.ops.write_reg(hw, IGP3_VR_CTRL,
- data | IGP3_VR_CTRL_MODE_SHUTDOWN);
+ data | IGP3_VR_CTRL_MODE_SHUTDOWN);
/* Read it back and test */
hw->phy.ops.read_reg(hw, IGP3_VR_CTRL, &data);
@@ -3863,7 +3876,7 @@ out:
* LPLU, Gig disable, MDIC PHY reset):
* 1) Set Kumeran Near-end loopback
* 2) Clear Kumeran Near-end loopback
- * Should only be called for ICH8[m] devices with IGP_3 Phy.
+ * Should only be called for ICH8[m] devices with any 1G Phy.
**/
void e1000_gig_downshift_workaround_ich8lan(struct e1000_hw *hw)
{
@@ -3873,51 +3886,54 @@ void e1000_gig_downshift_workaround_ich8lan(struct e1000_hw *hw)
DEBUGFUNC("e1000_gig_downshift_workaround_ich8lan");
if ((hw->mac.type != e1000_ich8lan) ||
- (hw->phy.type != e1000_phy_igp_3))
+ (hw->phy.type == e1000_phy_ife))
goto out;
ret_val = e1000_read_kmrn_reg_generic(hw, E1000_KMRNCTRLSTA_DIAG_OFFSET,
- &reg_data);
+ &reg_data);
if (ret_val)
goto out;
reg_data |= E1000_KMRNCTRLSTA_DIAG_NELPBK;
ret_val = e1000_write_kmrn_reg_generic(hw,
- E1000_KMRNCTRLSTA_DIAG_OFFSET,
- reg_data);
+ E1000_KMRNCTRLSTA_DIAG_OFFSET,
+ reg_data);
if (ret_val)
goto out;
reg_data &= ~E1000_KMRNCTRLSTA_DIAG_NELPBK;
ret_val = e1000_write_kmrn_reg_generic(hw,
- E1000_KMRNCTRLSTA_DIAG_OFFSET,
- reg_data);
+ E1000_KMRNCTRLSTA_DIAG_OFFSET,
+ reg_data);
out:
return;
}
/**
- * e1000_disable_gig_wol_ich8lan - disable gig during WoL
+ * e1000_suspend_workarounds_ich8lan - workarounds needed during S0->Sx
* @hw: pointer to the HW structure
*
* During S0 to Sx transition, it is possible the link remains at gig
* instead of negotiating to a lower speed. Before going to Sx, set
- * 'LPLU Enabled' and 'Gig Disable' to force link speed negotiation
- * to a lower speed.
- *
- * Should only be called for applicable parts.
+ * 'Gig Disable' to force link speed negotiation to a lower speed based on
+ * the LPLU setting in the NVM or custom setting. For PCH and newer parts,
+ * the OEM bits PHY register (LED, GbE disable and LPLU configurations) also
+ * needs to be written.
**/
-void e1000_disable_gig_wol_ich8lan(struct e1000_hw *hw)
+void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw)
{
u32 phy_ctrl;
s32 ret_val;
- DEBUGFUNC("e1000_disable_gig_wol_ich8lan");
+ DEBUGFUNC("e1000_suspend_workarounds_ich8lan");
phy_ctrl = E1000_READ_REG(hw, E1000_PHY_CTRL);
- phy_ctrl |= E1000_PHY_CTRL_D0A_LPLU | E1000_PHY_CTRL_GBE_DISABLE;
+ phy_ctrl |= E1000_PHY_CTRL_GBE_DISABLE;
E1000_WRITE_REG(hw, E1000_PHY_CTRL, phy_ctrl);
+ if (hw->mac.type == e1000_ich8lan)
+ e1000_gig_downshift_workaround_ich8lan(hw);
if (hw->mac.type >= e1000_pchlan) {
e1000_oem_bits_config_ich8lan(hw, FALSE);
+ e1000_phy_hw_reset_ich8lan(hw);
ret_val = hw->phy.ops.acquire(hw);
if (ret_val)
return;
@@ -3929,6 +3945,58 @@ void e1000_disable_gig_wol_ich8lan(struct e1000_hw *hw)
}
/**
+ * e1000_resume_workarounds_pchlan - workarounds needed during Sx->S0
+ * @hw: pointer to the HW structure
+ *
+ * During Sx to S0 transitions on non-managed devices or managed devices
+ * on which PHY resets are not blocked, if the PHY registers cannot be
+ * accessed properly by the s/w toggle the LANPHYPC value to power cycle
+ * the PHY.
+ **/
+void e1000_resume_workarounds_pchlan(struct e1000_hw *hw)
+{
+ u16 phy_id1, phy_id2;
+ s32 ret_val;
+
+ DEBUGFUNC("e1000_resume_workarounds_pchlan");
+
+ if ((hw->mac.type != e1000_pch2lan) ||
+ hw->phy.ops.check_reset_block(hw))
+ return;
+
+ ret_val = hw->phy.ops.acquire(hw);
+ if (ret_val) {
+ DEBUGOUT("Failed to acquire PHY semaphore in resume\n");
+ return;
+ }
+
+ /* Test access to the PHY registers by reading the ID regs */
+ ret_val = hw->phy.ops.read_reg_locked(hw, PHY_ID1, &phy_id1);
+ if (ret_val)
+ goto release;
+ ret_val = hw->phy.ops.read_reg_locked(hw, PHY_ID2, &phy_id2);
+ if (ret_val)
+ goto release;
+
+ if (hw->phy.id == ((u32)(phy_id1 << 16) |
+ (u32)(phy_id2 & PHY_REVISION_MASK)))
+ goto release;
+
+ e1000_toggle_lanphypc_value_ich8lan(hw);
+
+ hw->phy.ops.release(hw);
+ msec_delay(50);
+ hw->phy.ops.reset(hw);
+ msec_delay(50);
+ return;
+
+release:
+ hw->phy.ops.release(hw);
+
+ return;
+}
+
+/**
* e1000_cleanup_led_ich8lan - Restore the default LED operation
* @hw: pointer to the HW structure
*
@@ -3940,7 +4008,7 @@ static s32 e1000_cleanup_led_ich8lan(struct e1000_hw *hw)
if (hw->phy.type == e1000_phy_ife)
return hw->phy.ops.write_reg(hw, IFE_PHY_SPECIAL_CONTROL_LED,
- 0);
+ 0);
E1000_WRITE_REG(hw, E1000_LEDCTL, hw->mac.ledctl_default);
return E1000_SUCCESS;
@@ -3958,7 +4026,7 @@ static s32 e1000_led_on_ich8lan(struct e1000_hw *hw)
if (hw->phy.type == e1000_phy_ife)
return hw->phy.ops.write_reg(hw, IFE_PHY_SPECIAL_CONTROL_LED,
- (IFE_PSCL_PROBE_MODE | IFE_PSCL_PROBE_LEDS_ON));
+ (IFE_PSCL_PROBE_MODE | IFE_PSCL_PROBE_LEDS_ON));
E1000_WRITE_REG(hw, E1000_LEDCTL, hw->mac.ledctl_mode2);
return E1000_SUCCESS;
@@ -3976,7 +4044,7 @@ static s32 e1000_led_off_ich8lan(struct e1000_hw *hw)
if (hw->phy.type == e1000_phy_ife)
return hw->phy.ops.write_reg(hw, IFE_PHY_SPECIAL_CONTROL_LED,
- (IFE_PSCL_PROBE_MODE | IFE_PSCL_PROBE_LEDS_OFF));
+ (IFE_PSCL_PROBE_MODE | IFE_PSCL_PROBE_LEDS_OFF));
E1000_WRITE_REG(hw, E1000_LEDCTL, hw->mac.ledctl_mode1);
return E1000_SUCCESS;
@@ -3993,7 +4061,7 @@ static s32 e1000_setup_led_pchlan(struct e1000_hw *hw)
DEBUGFUNC("e1000_setup_led_pchlan");
return hw->phy.ops.write_reg(hw, HV_LED_CONFIG,
- (u16)hw->mac.ledctl_mode1);
+ (u16)hw->mac.ledctl_mode1);
}
/**
@@ -4007,7 +4075,7 @@ static s32 e1000_cleanup_led_pchlan(struct e1000_hw *hw)
DEBUGFUNC("e1000_cleanup_led_pchlan");
return hw->phy.ops.write_reg(hw, HV_LED_CONFIG,
- (u16)hw->mac.ledctl_default);
+ (u16)hw->mac.ledctl_default);
}
/**
@@ -4165,6 +4233,7 @@ static void e1000_power_down_phy_copper_ich8lan(struct e1000_hw *hw)
static void e1000_clear_hw_cntrs_ich8lan(struct e1000_hw *hw)
{
u16 phy_data;
+ s32 ret_val;
DEBUGFUNC("e1000_clear_hw_cntrs_ich8lan");
@@ -4188,20 +4257,29 @@ static void e1000_clear_hw_cntrs_ich8lan(struct e1000_hw *hw)
if ((hw->phy.type == e1000_phy_82578) ||
(hw->phy.type == e1000_phy_82579) ||
(hw->phy.type == e1000_phy_82577)) {
- hw->phy.ops.read_reg(hw, HV_SCC_UPPER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_SCC_LOWER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_ECOL_UPPER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_ECOL_LOWER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_MCC_UPPER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_MCC_LOWER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_LATECOL_UPPER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_LATECOL_LOWER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_COLC_UPPER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_COLC_LOWER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_DC_UPPER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_DC_LOWER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_TNCRS_UPPER, &phy_data);
- hw->phy.ops.read_reg(hw, HV_TNCRS_LOWER, &phy_data);
+ ret_val = hw->phy.ops.acquire(hw);
+ if (ret_val)
+ return;
+ ret_val = hw->phy.ops.set_page(hw,
+ HV_STATS_PAGE << IGP_PAGE_SHIFT);
+ if (ret_val)
+ goto release;
+ hw->phy.ops.read_reg_page(hw, HV_SCC_UPPER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_SCC_LOWER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_ECOL_UPPER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_ECOL_LOWER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_MCC_UPPER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_MCC_LOWER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_LATECOL_UPPER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_LATECOL_LOWER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_COLC_UPPER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_COLC_LOWER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_DC_UPPER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_DC_LOWER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_TNCRS_UPPER, &phy_data);
+ hw->phy.ops.read_reg_page(hw, HV_TNCRS_LOWER, &phy_data);
+release:
+ hw->phy.ops.release(hw);
}
}
diff --git a/sys/dev/e1000/e1000_ich8lan.h b/sys/dev/e1000/e1000_ich8lan.h
index 200e4090..2eccb30 100644
--- a/sys/dev/e1000/e1000_ich8lan.h
+++ b/sys/dev/e1000/e1000_ich8lan.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -35,182 +35,204 @@
#ifndef _E1000_ICH8LAN_H_
#define _E1000_ICH8LAN_H_
-#define ICH_FLASH_GFPREG 0x0000
-#define ICH_FLASH_HSFSTS 0x0004
-#define ICH_FLASH_HSFCTL 0x0006
-#define ICH_FLASH_FADDR 0x0008
-#define ICH_FLASH_FDATA0 0x0010
+#define ICH_FLASH_GFPREG 0x0000
+#define ICH_FLASH_HSFSTS 0x0004
+#define ICH_FLASH_HSFCTL 0x0006
+#define ICH_FLASH_FADDR 0x0008
+#define ICH_FLASH_FDATA0 0x0010
/* Requires up to 10 seconds when MNG might be accessing part. */
-#define ICH_FLASH_READ_COMMAND_TIMEOUT 10000000
-#define ICH_FLASH_WRITE_COMMAND_TIMEOUT 10000000
-#define ICH_FLASH_ERASE_COMMAND_TIMEOUT 10000000
-#define ICH_FLASH_LINEAR_ADDR_MASK 0x00FFFFFF
-#define ICH_FLASH_CYCLE_REPEAT_COUNT 10
+#define ICH_FLASH_READ_COMMAND_TIMEOUT 10000000
+#define ICH_FLASH_WRITE_COMMAND_TIMEOUT 10000000
+#define ICH_FLASH_ERASE_COMMAND_TIMEOUT 10000000
+#define ICH_FLASH_LINEAR_ADDR_MASK 0x00FFFFFF
+#define ICH_FLASH_CYCLE_REPEAT_COUNT 10
-#define ICH_CYCLE_READ 0
-#define ICH_CYCLE_WRITE 2
-#define ICH_CYCLE_ERASE 3
+#define ICH_CYCLE_READ 0
+#define ICH_CYCLE_WRITE 2
+#define ICH_CYCLE_ERASE 3
-#define FLASH_GFPREG_BASE_MASK 0x1FFF
-#define FLASH_SECTOR_ADDR_SHIFT 12
+#define FLASH_GFPREG_BASE_MASK 0x1FFF
+#define FLASH_SECTOR_ADDR_SHIFT 12
-#define ICH_FLASH_SEG_SIZE_256 256
-#define ICH_FLASH_SEG_SIZE_4K 4096
-#define ICH_FLASH_SEG_SIZE_8K 8192
-#define ICH_FLASH_SEG_SIZE_64K 65536
-#define ICH_FLASH_SECTOR_SIZE 4096
+#define ICH_FLASH_SEG_SIZE_256 256
+#define ICH_FLASH_SEG_SIZE_4K 4096
+#define ICH_FLASH_SEG_SIZE_8K 8192
+#define ICH_FLASH_SEG_SIZE_64K 65536
+#define ICH_FLASH_SECTOR_SIZE 4096
-#define ICH_FLASH_REG_MAPSIZE 0x00A0
+#define ICH_FLASH_REG_MAPSIZE 0x00A0
-#define E1000_ICH_FWSM_RSPCIPHY 0x00000040 /* Reset PHY on PCI Reset */
-#define E1000_ICH_FWSM_DISSW 0x10000000 /* FW Disables SW Writes */
+#define E1000_ICH_FWSM_RSPCIPHY 0x00000040 /* Reset PHY on PCI Reset */
+#define E1000_ICH_FWSM_DISSW 0x10000000 /* FW Disables SW Writes */
/* FW established a valid mode */
-#define E1000_ICH_FWSM_FW_VALID 0x00008000
+#define E1000_ICH_FWSM_FW_VALID 0x00008000
+#define E1000_ICH_FWSM_PCIM2PCI 0x01000000 /* ME PCIm-to-PCI active */
+#define E1000_ICH_FWSM_PCIM2PCI_COUNT 2000
-#define E1000_ICH_MNG_IAMT_MODE 0x2
+#define E1000_ICH_MNG_IAMT_MODE 0x2
-#define E1000_FWSM_PROXY_MODE 0x00000008 /* FW is in proxy mode */
+#define E1000_FWSM_PROXY_MODE 0x00000008 /* FW is in proxy mode */
+#define E1000_FWSM_MEMC 0x00000010 /* ME Messaging capable */
/* Shared Receive Address Registers */
-#define E1000_SHRAL(_i) (0x05438 + ((_i) * 8))
-#define E1000_SHRAH(_i) (0x0543C + ((_i) * 8))
-#define E1000_SHRAH_AV 0x80000000 /* Addr Valid bit */
-#define E1000_SHRAH_MAV 0x40000000 /* Multicast Addr Valid bit */
-
-#define E1000_H2ME 0x05B50 /* Host to ME */
-#define E1000_H2ME_LSECREQ 0x00000001 /* Linksec Request */
-#define E1000_H2ME_LSECA 0x00000002 /* Linksec Active */
-#define E1000_H2ME_LSECSF 0x00000004 /* Linksec Failed */
-#define E1000_H2ME_LSECD 0x00000008 /* Linksec Disabled */
-#define E1000_H2ME_SLCAPD 0x00000010 /* Start LCAPD */
-#define E1000_H2ME_IPV4_ARP_EN 0x00000020 /* Arp Offload enable bit */
-#define E1000_H2ME_IPV6_NS_EN 0x00000040 /* NS Offload enable bit */
-
-#define ID_LED_DEFAULT_ICH8LAN ((ID_LED_DEF1_DEF2 << 12) | \
- (ID_LED_OFF1_OFF2 << 8) | \
- (ID_LED_OFF1_ON2 << 4) | \
- (ID_LED_DEF1_DEF2))
-
-#define E1000_ICH_NVM_SIG_WORD 0x13
-#define E1000_ICH_NVM_SIG_MASK 0xC000
-#define E1000_ICH_NVM_VALID_SIG_MASK 0xC0
-#define E1000_ICH_NVM_SIG_VALUE 0x80
-
-#define E1000_ICH8_LAN_INIT_TIMEOUT 1500
-
-#define E1000_FEXTNVM_SW_CONFIG 1
-#define E1000_FEXTNVM_SW_CONFIG_ICH8M (1 << 27) /* Bit redefined for ICH8M */
-
-#define E1000_FEXTNVM4_BEACON_DURATION_MASK 0x7
-#define E1000_FEXTNVM4_BEACON_DURATION_8USEC 0x7
-#define E1000_FEXTNVM4_BEACON_DURATION_16USEC 0x3
-
-#define PCIE_ICH8_SNOOP_ALL PCIE_NO_SNOOP_ALL
-
-#define E1000_ICH_RAR_ENTRIES 7
-#define E1000_PCH2_RAR_ENTRIES 5 /* RAR[0], SHRA[0-3] */
-
-#define PHY_PAGE_SHIFT 5
-#define PHY_REG(page, reg) (((page) << PHY_PAGE_SHIFT) | \
- ((reg) & MAX_PHY_REG_ADDRESS))
-#define IGP3_KMRN_DIAG PHY_REG(770, 19) /* KMRN Diagnostic */
-#define IGP3_VR_CTRL PHY_REG(776, 18) /* Voltage Regulator Control */
-#define IGP3_CAPABILITY PHY_REG(776, 19) /* Capability */
-#define IGP3_PM_CTRL PHY_REG(769, 20) /* Power Management Control */
-
-#define IGP3_KMRN_DIAG_PCS_LOCK_LOSS 0x0002
-#define IGP3_VR_CTRL_DEV_POWERDOWN_MODE_MASK 0x0300
-#define IGP3_VR_CTRL_MODE_SHUTDOWN 0x0200
-#define IGP3_PM_CTRL_FORCE_PWR_DOWN 0x0020
+#define E1000_SHRAL(_i) (0x05438 + ((_i) * 8))
+#define E1000_SHRAH(_i) (0x0543C + ((_i) * 8))
+#define E1000_SHRAH_AV 0x80000000 /* Addr Valid bit */
+#define E1000_SHRAH_MAV 0x40000000 /* Multicast Addr Valid bit */
+
+#define E1000_H2ME 0x05B50 /* Host to ME */
+#define E1000_H2ME_LSECREQ 0x00000001 /* Linksec Request */
+#define E1000_H2ME_LSECA 0x00000002 /* Linksec Active */
+#define E1000_H2ME_LSECSF 0x00000004 /* Linksec Failed */
+#define E1000_H2ME_LSECD 0x00000008 /* Linksec Disabled */
+#define E1000_H2ME_SLCAPD 0x00000010 /* Start LCAPD */
+#define E1000_H2ME_IPV4_ARP_EN 0x00000020 /* Arp Offload enable bit */
+#define E1000_H2ME_IPV6_NS_EN 0x00000040 /* NS Offload enable bit */
+
+#define ID_LED_DEFAULT_ICH8LAN ((ID_LED_DEF1_DEF2 << 12) | \
+ (ID_LED_OFF1_OFF2 << 8) | \
+ (ID_LED_OFF1_ON2 << 4) | \
+ (ID_LED_DEF1_DEF2))
+
+#define E1000_ICH_NVM_SIG_WORD 0x13
+#define E1000_ICH_NVM_SIG_MASK 0xC000
+#define E1000_ICH_NVM_VALID_SIG_MASK 0xC0
+#define E1000_ICH_NVM_SIG_VALUE 0x80
+
+#define E1000_ICH8_LAN_INIT_TIMEOUT 1500
+
+#define E1000_FEXTNVM_SW_CONFIG 1
+#define E1000_FEXTNVM_SW_CONFIG_ICH8M (1 << 27) /* Bit redefined for ICH8M */
+
+#define E1000_FEXTNVM4_BEACON_DURATION_MASK 0x7
+#define E1000_FEXTNVM4_BEACON_DURATION_8USEC 0x7
+#define E1000_FEXTNVM4_BEACON_DURATION_16USEC 0x3
+
+#define PCIE_ICH8_SNOOP_ALL PCIE_NO_SNOOP_ALL
+
+#define E1000_ICH_RAR_ENTRIES 7
+#define E1000_PCH2_RAR_ENTRIES 5 /* RAR[0], SHRA[0-3] */
+
+#define PHY_PAGE_SHIFT 5
+#define PHY_REG(page, reg) (((page) << PHY_PAGE_SHIFT) | \
+ ((reg) & MAX_PHY_REG_ADDRESS))
+#define IGP3_KMRN_DIAG PHY_REG(770, 19) /* KMRN Diagnostic */
+#define IGP3_VR_CTRL PHY_REG(776, 18) /* Voltage Regulator Control */
+#define IGP3_CAPABILITY PHY_REG(776, 19) /* Capability */
+#define IGP3_PM_CTRL PHY_REG(769, 20) /* Power Management Control */
+
+#define IGP3_KMRN_DIAG_PCS_LOCK_LOSS 0x0002
+#define IGP3_VR_CTRL_DEV_POWERDOWN_MODE_MASK 0x0300
+#define IGP3_VR_CTRL_MODE_SHUTDOWN 0x0200
+#define IGP3_PM_CTRL_FORCE_PWR_DOWN 0x0020
/* PHY Wakeup Registers and defines */
-#define BM_RCTL PHY_REG(BM_WUC_PAGE, 0)
-#define BM_WUC PHY_REG(BM_WUC_PAGE, 1)
-#define BM_WUFC PHY_REG(BM_WUC_PAGE, 2)
-#define BM_WUS PHY_REG(BM_WUC_PAGE, 3)
-#define BM_RAR_L(_i) (BM_PHY_REG(BM_WUC_PAGE, 16 + ((_i) << 2)))
-#define BM_RAR_M(_i) (BM_PHY_REG(BM_WUC_PAGE, 17 + ((_i) << 2)))
-#define BM_RAR_H(_i) (BM_PHY_REG(BM_WUC_PAGE, 18 + ((_i) << 2)))
-#define BM_RAR_CTRL(_i) (BM_PHY_REG(BM_WUC_PAGE, 19 + ((_i) << 2)))
-#define BM_MTA(_i) (BM_PHY_REG(BM_WUC_PAGE, 128 + ((_i) << 1)))
-#define BM_IPAV (BM_PHY_REG(BM_WUC_PAGE, 64))
-#define BM_IP4AT_L(_i) (BM_PHY_REG(BM_WUC_PAGE, 82 + ((_i) * 2)))
-#define BM_IP4AT_H(_i) (BM_PHY_REG(BM_WUC_PAGE, 83 + ((_i) * 2)))
-
-#define BM_SHRAL_LOWER(_i) (BM_PHY_REG(BM_WUC_PAGE, 44 + ((_i) * 4)))
-#define BM_SHRAL_UPPER(_i) (BM_PHY_REG(BM_WUC_PAGE, 45 + ((_i) * 4)))
-#define BM_SHRAH_LOWER(_i) (BM_PHY_REG(BM_WUC_PAGE, 46 + ((_i) * 4)))
-#define BM_SHRAH_UPPER(_i) (BM_PHY_REG(BM_WUC_PAGE, 47 + ((_i) * 4)))
-
-#define BM_RCTL_UPE 0x0001 /* Unicast Promiscuous Mode */
-#define BM_RCTL_MPE 0x0002 /* Multicast Promiscuous Mode */
-#define BM_RCTL_MO_SHIFT 3 /* Multicast Offset Shift */
-#define BM_RCTL_MO_MASK (3 << 3) /* Multicast Offset Mask */
-#define BM_RCTL_BAM 0x0020 /* Broadcast Accept Mode */
-#define BM_RCTL_PMCF 0x0040 /* Pass MAC Control Frames */
-#define BM_RCTL_RFCE 0x0080 /* Rx Flow Control Enable */
-
-#define HV_LED_CONFIG PHY_REG(768, 30) /* LED Configuration */
-#define HV_MUX_DATA_CTRL PHY_REG(776, 16)
-#define HV_MUX_DATA_CTRL_GEN_TO_MAC 0x0400
-#define HV_MUX_DATA_CTRL_FORCE_SPEED 0x0004
-#define HV_SCC_UPPER PHY_REG(778, 16) /* Single Collision Count */
-#define HV_SCC_LOWER PHY_REG(778, 17)
-#define HV_ECOL_UPPER PHY_REG(778, 18) /* Excessive Collision Count */
-#define HV_ECOL_LOWER PHY_REG(778, 19)
-#define HV_MCC_UPPER PHY_REG(778, 20) /* Multiple Collision Count */
-#define HV_MCC_LOWER PHY_REG(778, 21)
-#define HV_LATECOL_UPPER PHY_REG(778, 23) /* Late Collision Count */
-#define HV_LATECOL_LOWER PHY_REG(778, 24)
-#define HV_COLC_UPPER PHY_REG(778, 25) /* Collision Count */
-#define HV_COLC_LOWER PHY_REG(778, 26)
-#define HV_DC_UPPER PHY_REG(778, 27) /* Defer Count */
-#define HV_DC_LOWER PHY_REG(778, 28)
-#define HV_TNCRS_UPPER PHY_REG(778, 29) /* Transmit with no CRS */
-#define HV_TNCRS_LOWER PHY_REG(778, 30)
-
-#define E1000_FCRTV_PCH 0x05F40 /* PCH Flow Control Refresh Timer Value */
-
-#define E1000_NVM_K1_CONFIG 0x1B /* NVM K1 Config Word */
-#define E1000_NVM_K1_ENABLE 0x1 /* NVM Enable K1 bit */
+#define BM_PORT_GEN_CFG PHY_REG(BM_PORT_CTRL_PAGE, 17)
+#define BM_RCTL PHY_REG(BM_WUC_PAGE, 0)
+#define BM_WUC PHY_REG(BM_WUC_PAGE, 1)
+#define BM_WUFC PHY_REG(BM_WUC_PAGE, 2)
+#define BM_WUS PHY_REG(BM_WUC_PAGE, 3)
+#define BM_RAR_L(_i) (BM_PHY_REG(BM_WUC_PAGE, 16 + ((_i) << 2)))
+#define BM_RAR_M(_i) (BM_PHY_REG(BM_WUC_PAGE, 17 + ((_i) << 2)))
+#define BM_RAR_H(_i) (BM_PHY_REG(BM_WUC_PAGE, 18 + ((_i) << 2)))
+#define BM_RAR_CTRL(_i) (BM_PHY_REG(BM_WUC_PAGE, 19 + ((_i) << 2)))
+#define BM_MTA(_i) (BM_PHY_REG(BM_WUC_PAGE, 128 + ((_i) << 1)))
+#define BM_IPAV (BM_PHY_REG(BM_WUC_PAGE, 64))
+#define BM_IP4AT_L(_i) (BM_PHY_REG(BM_WUC_PAGE, 82 + ((_i) * 2)))
+#define BM_IP4AT_H(_i) (BM_PHY_REG(BM_WUC_PAGE, 83 + ((_i) * 2)))
+
+#define BM_SHRAL_LOWER(_i) (BM_PHY_REG(BM_WUC_PAGE, 44 + ((_i) * 4)))
+#define BM_SHRAL_UPPER(_i) (BM_PHY_REG(BM_WUC_PAGE, 45 + ((_i) * 4)))
+#define BM_SHRAH_LOWER(_i) (BM_PHY_REG(BM_WUC_PAGE, 46 + ((_i) * 4)))
+#define BM_SHRAH_UPPER(_i) (BM_PHY_REG(BM_WUC_PAGE, 47 + ((_i) * 4)))
+
+#define BM_RCTL_UPE 0x0001 /* Unicast Promiscuous Mode */
+#define BM_RCTL_MPE 0x0002 /* Multicast Promiscuous Mode */
+#define BM_RCTL_MO_SHIFT 3 /* Multicast Offset Shift */
+#define BM_RCTL_MO_MASK (3 << 3) /* Multicast Offset Mask */
+#define BM_RCTL_BAM 0x0020 /* Broadcast Accept Mode */
+#define BM_RCTL_PMCF 0x0040 /* Pass MAC Control Frames */
+#define BM_RCTL_RFCE 0x0080 /* Rx Flow Control Enable */
+
+#define HV_LED_CONFIG PHY_REG(768, 30) /* LED Configuration */
+#define HV_MUX_DATA_CTRL PHY_REG(776, 16)
+#define HV_MUX_DATA_CTRL_GEN_TO_MAC 0x0400
+#define HV_MUX_DATA_CTRL_FORCE_SPEED 0x0004
+#define HV_STATS_PAGE 778
+#define HV_SCC_UPPER PHY_REG(HV_STATS_PAGE, 16) /* Single Collision Count */
+#define HV_SCC_LOWER PHY_REG(HV_STATS_PAGE, 17)
+#define HV_ECOL_UPPER PHY_REG(HV_STATS_PAGE, 18) /* Excessive Coll. Count */
+#define HV_ECOL_LOWER PHY_REG(HV_STATS_PAGE, 19)
+#define HV_MCC_UPPER PHY_REG(HV_STATS_PAGE, 20) /* Multiple Coll. Count */
+#define HV_MCC_LOWER PHY_REG(HV_STATS_PAGE, 21)
+#define HV_LATECOL_UPPER PHY_REG(HV_STATS_PAGE, 23) /* Late Collision Count */
+#define HV_LATECOL_LOWER PHY_REG(HV_STATS_PAGE, 24)
+#define HV_COLC_UPPER PHY_REG(HV_STATS_PAGE, 25) /* Collision Count */
+#define HV_COLC_LOWER PHY_REG(HV_STATS_PAGE, 26)
+#define HV_DC_UPPER PHY_REG(HV_STATS_PAGE, 27) /* Defer Count */
+#define HV_DC_LOWER PHY_REG(HV_STATS_PAGE, 28)
+#define HV_TNCRS_UPPER PHY_REG(HV_STATS_PAGE, 29) /* Transmit with no CRS */
+#define HV_TNCRS_LOWER PHY_REG(HV_STATS_PAGE, 30)
+
+#define E1000_FCRTV_PCH 0x05F40 /* PCH Flow Control Refresh Timer Value */
+
+/*
+ * For ICH, the name used for NVM word 17h is LED1 Config.
+ * For PCH, the word was re-named to OEM Config.
+ */
+#define E1000_NVM_LED1_CONFIG 0x17 /* NVM LED1/LPLU Config Word */
+#define E1000_NVM_LED1_CONFIG_LPLU_NONDOA 0x0400 /* NVM LPLU in non-D0a Bit */
+#define E1000_NVM_OEM_CONFIG E1000_NVM_LED1_CONFIG
+#define E1000_NVM_OEM_CONFIG_LPLU_NONDOA E1000_NVM_LED1_CONFIG_LPLU_NONDOA
+
+#define E1000_NVM_K1_CONFIG 0x1B /* NVM K1 Config Word */
+#define E1000_NVM_K1_ENABLE 0x1 /* NVM Enable K1 bit */
/* SMBus Address Phy Register */
-#define HV_SMB_ADDR PHY_REG(768, 26)
-#define HV_SMB_ADDR_MASK 0x007F
-#define HV_SMB_ADDR_PEC_EN 0x0200
-#define HV_SMB_ADDR_VALID 0x0080
+#define HV_SMB_ADDR PHY_REG(768, 26)
+#define HV_SMB_ADDR_MASK 0x007F
+#define HV_SMB_ADDR_PEC_EN 0x0200
+#define HV_SMB_ADDR_VALID 0x0080
/* Strapping Option Register - RO */
-#define E1000_STRAP 0x0000C
-#define E1000_STRAP_SMBUS_ADDRESS_MASK 0x00FE0000
-#define E1000_STRAP_SMBUS_ADDRESS_SHIFT 17
+#define E1000_STRAP 0x0000C
+#define E1000_STRAP_SMBUS_ADDRESS_MASK 0x00FE0000
+#define E1000_STRAP_SMBUS_ADDRESS_SHIFT 17
/* OEM Bits Phy Register */
-#define HV_OEM_BITS PHY_REG(768, 25)
-#define HV_OEM_BITS_LPLU 0x0004 /* Low Power Link Up */
-#define HV_OEM_BITS_GBE_DIS 0x0040 /* Gigabit Disable */
-#define HV_OEM_BITS_RESTART_AN 0x0400 /* Restart Auto-negotiation */
+#define HV_OEM_BITS PHY_REG(768, 25)
+#define HV_OEM_BITS_LPLU 0x0004 /* Low Power Link Up */
+#define HV_OEM_BITS_GBE_DIS 0x0040 /* Gigabit Disable */
+#define HV_OEM_BITS_RESTART_AN 0x0400 /* Restart Auto-negotiation */
-#define LCD_CFG_PHY_ADDR_BIT 0x0020 /* Phy address bit from LCD Config word */
+#define LCD_CFG_PHY_ADDR_BIT 0x0020 /* Phy addr bit from LCD Config word */
/* KMRN Mode Control */
-#define HV_KMRN_MODE_CTRL PHY_REG(769, 16)
-#define HV_KMRN_MDIO_SLOW 0x0400
+#define HV_KMRN_MODE_CTRL PHY_REG(769, 16)
+#define HV_KMRN_MDIO_SLOW 0x0400
+
+/* KMRN FIFO Control and Status */
+#define HV_KMRN_FIFO_CTRLSTA PHY_REG(770, 16)
+#define HV_KMRN_FIFO_CTRLSTA_PREAMBLE_MASK 0x7000
+#define HV_KMRN_FIFO_CTRLSTA_PREAMBLE_SHIFT 12
/* PHY Power Management Control */
-#define HV_PM_CTRL PHY_REG(770, 17)
+#define HV_PM_CTRL PHY_REG(770, 17)
-#define SW_FLAG_TIMEOUT 1000 /* SW Semaphore flag timeout in milliseconds */
+#define SW_FLAG_TIMEOUT 1000 /* SW Semaphore flag timeout in ms */
/* PHY Low Power Idle Control */
-#define I82579_LPI_CTRL PHY_REG(772, 20)
-#define I82579_LPI_CTRL_ENABLE_MASK 0x6000
+#define I82579_LPI_CTRL PHY_REG(772, 20)
+#define I82579_LPI_CTRL_ENABLE_MASK 0x6000
+#define I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT 0x80
/* EMI Registers */
-#define I82579_EMI_ADDR 0x10
-#define I82579_EMI_DATA 0x11
-#define I82579_LPI_UPDATE_TIMER 0x4805 /* in 40ns units + 40 ns base value */
+#define I82579_EMI_ADDR 0x10
+#define I82579_EMI_DATA 0x11
+#define I82579_LPI_UPDATE_TIMER 0x4805 /* in 40ns units + 40 ns base value */
+#define I82579_MSE_THRESHOLD 0x084F /* Mean Square Error Threshold */
+#define I82579_MSE_LINK_DOWN 0x2411 /* MSE count before dropping link */
/*
* Additional interrupts need to be handled for ICH family:
@@ -219,33 +241,32 @@
* EPRST = Manageability reset event
*/
#define IMS_ICH_ENABLE_MASK (\
- E1000_IMS_DSW | \
- E1000_IMS_PHYINT | \
- E1000_IMS_EPRST)
+ E1000_IMS_DSW | \
+ E1000_IMS_PHYINT | \
+ E1000_IMS_EPRST)
/* Additional interrupt register bit definitions */
-#define E1000_ICR_LSECPNC 0x00004000 /* PN threshold - client */
-#define E1000_IMS_LSECPNC E1000_ICR_LSECPNC /* PN threshold - client */
-#define E1000_ICS_LSECPNC E1000_ICR_LSECPNC /* PN threshold - client */
+#define E1000_ICR_LSECPNC 0x00004000 /* PN threshold - client */
+#define E1000_IMS_LSECPNC E1000_ICR_LSECPNC /* PN threshold - client */
+#define E1000_ICS_LSECPNC E1000_ICR_LSECPNC /* PN threshold - client */
/* Security Processing bit Indication */
-#define E1000_RXDEXT_LINKSEC_STATUS_LSECH 0x01000000
-#define E1000_RXDEXT_LINKSEC_ERROR_BIT_MASK 0x60000000
-#define E1000_RXDEXT_LINKSEC_ERROR_NO_SA_MATCH 0x20000000
-#define E1000_RXDEXT_LINKSEC_ERROR_REPLAY_ERROR 0x40000000
-#define E1000_RXDEXT_LINKSEC_ERROR_BAD_SIG 0x60000000
+#define E1000_RXDEXT_LINKSEC_STATUS_LSECH 0x01000000
+#define E1000_RXDEXT_LINKSEC_ERROR_BIT_MASK 0x60000000
+#define E1000_RXDEXT_LINKSEC_ERROR_NO_SA_MATCH 0x20000000
+#define E1000_RXDEXT_LINKSEC_ERROR_REPLAY_ERROR 0x40000000
+#define E1000_RXDEXT_LINKSEC_ERROR_BAD_SIG 0x60000000
/* Receive Address Initial CRC Calculation */
-#define E1000_PCH_RAICC(_n) (0x05F50 + ((_n) * 4))
+#define E1000_PCH_RAICC(_n) (0x05F50 + ((_n) * 4))
void e1000_set_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw,
- bool state);
+ bool state);
void e1000_igp3_phy_powerdown_workaround_ich8lan(struct e1000_hw *hw);
void e1000_gig_downshift_workaround_ich8lan(struct e1000_hw *hw);
-void e1000_disable_gig_wol_ich8lan(struct e1000_hw *hw);
+void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw);
+void e1000_resume_workarounds_pchlan(struct e1000_hw *hw);
s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable);
-s32 e1000_oem_bits_config_ich8lan(struct e1000_hw *hw, bool d0_config);
-s32 e1000_hv_phy_powerdown_workaround_ich8lan(struct e1000_hw *hw);
void e1000_copy_rx_addrs_to_phy_ich8lan(struct e1000_hw *hw);
s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable);
#endif
diff --git a/sys/dev/e1000/e1000_mac.c b/sys/dev/e1000/e1000_mac.c
index b29a38a..4fc2a7c 100644
--- a/sys/dev/e1000/e1000_mac.c
+++ b/sys/dev/e1000/e1000_mac.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -177,8 +177,8 @@ s32 e1000_get_bus_info_pci_generic(struct e1000_hw *hw)
/* Bus speed */
if (bus->type == e1000_bus_type_pci) {
bus->speed = (status & E1000_STATUS_PCI66)
- ? e1000_bus_speed_66
- : e1000_bus_speed_33;
+ ? e1000_bus_speed_66
+ : e1000_bus_speed_33;
} else {
switch (status & E1000_STATUS_PCIX_SPEED) {
case E1000_STATUS_PCIX_SPEED_66:
@@ -198,8 +198,8 @@ s32 e1000_get_bus_info_pci_generic(struct e1000_hw *hw)
/* Bus width */
bus->width = (status & E1000_STATUS_BUS64)
- ? e1000_bus_width_64
- : e1000_bus_width_32;
+ ? e1000_bus_width_64
+ : e1000_bus_width_32;
/* Which PCI(-X) function? */
mac->ops.set_lan_id(hw);
@@ -226,9 +226,8 @@ s32 e1000_get_bus_info_pcie_generic(struct e1000_hw *hw)
bus->type = e1000_bus_type_pci_express;
- ret_val = e1000_read_pcie_cap_reg(hw,
- PCIE_LINK_STATUS,
- &pcie_link_status);
+ ret_val = e1000_read_pcie_cap_reg(hw, PCIE_LINK_STATUS,
+ &pcie_link_status);
if (ret_val) {
bus->width = e1000_bus_width_unknown;
bus->speed = e1000_bus_speed_unknown;
@@ -246,8 +245,7 @@ s32 e1000_get_bus_info_pcie_generic(struct e1000_hw *hw)
}
bus->width = (enum e1000_bus_width)((pcie_link_status &
- PCIE_LINK_WIDTH_MASK) >>
- PCIE_LINK_WIDTH_SHIFT);
+ PCIE_LINK_WIDTH_MASK) >> PCIE_LINK_WIDTH_SHIFT);
}
mac->ops.set_lan_id(hw);
@@ -292,7 +290,7 @@ void e1000_set_lan_id_multi_port_pci(struct e1000_hw *hw)
if (pci_header_type & PCI_HEADER_TYPE_MULTIFUNC) {
status = E1000_READ_REG(hw, E1000_STATUS);
bus->func = (status & E1000_STATUS_FUNC_MASK)
- >> E1000_STATUS_FUNC_SHIFT;
+ >> E1000_STATUS_FUNC_SHIFT;
} else {
bus->func = 0;
}
@@ -352,7 +350,7 @@ void e1000_write_vfta_generic(struct e1000_hw *hw, u32 offset, u32 value)
* @hw: pointer to the HW structure
* @rar_count: receive address registers
*
- * Setups the receive address registers by setting the base receive address
+ * Setup the receive address registers by setting the base receive address
* register to the devices MAC address and clearing all the other receive
* address registers to 0.
**/
@@ -399,23 +397,28 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)
if (ret_val)
goto out;
- /* Check for LOM (vs. NIC) or one of two valid mezzanine cards */
- if (!((nvm_data & NVM_COMPAT_LOM) ||
- (hw->device_id == E1000_DEV_ID_82571EB_SERDES_DUAL) ||
- (hw->device_id == E1000_DEV_ID_82571EB_SERDES_QUAD)))
+ /* not supported on older hardware or 82573 */
+ if ((hw->mac.type < e1000_82571) || (hw->mac.type == e1000_82573))
+ goto out;
+
+ /*
+ * Alternate MAC address is handled by the option ROM for 82580
+ * and newer. SW support not required.
+ */
+ if (hw->mac.type >= e1000_82580)
goto out;
ret_val = hw->nvm.ops.read(hw, NVM_ALT_MAC_ADDR_PTR, 1,
- &nvm_alt_mac_addr_offset);
+ &nvm_alt_mac_addr_offset);
if (ret_val) {
DEBUGOUT("NVM Read Error\n");
goto out;
}
- if (nvm_alt_mac_addr_offset == 0xFFFF) {
+ if ((nvm_alt_mac_addr_offset == 0xFFFF) ||
+ (nvm_alt_mac_addr_offset == 0x0000))
/* There is no Alternate MAC Address */
goto out;
- }
if (hw->bus.func == E1000_FUNC_1)
nvm_alt_mac_addr_offset += E1000_ALT_MAC_ADDRESS_OFFSET_LAN1;
@@ -472,9 +475,8 @@ void e1000_rar_set_generic(struct e1000_hw *hw, u8 *addr, u32 index)
* HW expects these in little endian so we reverse the byte order
* from network order (big endian) to little endian
*/
- rar_low = ((u32) addr[0] |
- ((u32) addr[1] << 8) |
- ((u32) addr[2] << 16) | ((u32) addr[3] << 24));
+ rar_low = ((u32) addr[0] | ((u32) addr[1] << 8) |
+ ((u32) addr[2] << 16) | ((u32) addr[3] << 24));
rar_high = ((u32) addr[4] | ((u32) addr[5] << 8));
@@ -503,7 +505,7 @@ void e1000_rar_set_generic(struct e1000_hw *hw, u8 *addr, u32 index)
* The caller must have a packed mc_addr_list of multicast addresses.
**/
void e1000_update_mc_addr_list_generic(struct e1000_hw *hw,
- u8 *mc_addr_list, u32 mc_addr_count)
+ u8 *mc_addr_list, u32 mc_addr_count)
{
u32 hash_value, hash_bit, hash_reg;
int i;
@@ -574,7 +576,7 @@ u32 e1000_hash_mc_addr_generic(struct e1000_hw *hw, u8 *mc_addr)
* values resulting from each mc_filter_type...
* [0] [1] [2] [3] [4] [5]
* 01 AA 00 12 34 56
- * LSB MSB
+ * LSB MSB
*
* case 0: hash_value = ((0x34 >> 4) | (0x56 << 4)) & 0xFFF = 0x563
* case 1: hash_value = ((0x34 >> 3) | (0x56 << 5)) & 0xFFF = 0xAC6
@@ -597,7 +599,7 @@ u32 e1000_hash_mc_addr_generic(struct e1000_hw *hw, u8 *mc_addr)
}
hash_value = hash_mask & (((mc_addr[4] >> (8 - bit_shift)) |
- (((u16) mc_addr[5]) << bit_shift)));
+ (((u16) mc_addr[5]) << bit_shift)));
return hash_value;
}
@@ -627,9 +629,9 @@ void e1000_pcix_mmrbc_workaround_generic(struct e1000_hw *hw)
e1000_read_pci_cfg(hw, PCIX_COMMAND_REGISTER, &pcix_cmd);
e1000_read_pci_cfg(hw, PCIX_STATUS_REGISTER_HI, &pcix_stat_hi_word);
cmd_mmrbc = (pcix_cmd & PCIX_COMMAND_MMRBC_MASK) >>
- PCIX_COMMAND_MMRBC_SHIFT;
+ PCIX_COMMAND_MMRBC_SHIFT;
stat_mmrbc = (pcix_stat_hi_word & PCIX_STATUS_HI_MMRBC_MASK) >>
- PCIX_STATUS_HI_MMRBC_SHIFT;
+ PCIX_STATUS_HI_MMRBC_SHIFT;
if (stat_mmrbc == PCIX_STATUS_HI_MMRBC_4K)
stat_mmrbc = PCIX_STATUS_HI_MMRBC_2K;
if (cmd_mmrbc > stat_mmrbc) {
@@ -926,12 +928,10 @@ s32 e1000_check_for_serdes_link_generic(struct e1000_hw *hw)
if (rxcw & E1000_RXCW_SYNCH) {
if (!(rxcw & E1000_RXCW_IV)) {
mac->serdes_has_link = TRUE;
- DEBUGOUT("SERDES: Link up - autoneg "
- "completed sucessfully.\n");
+ DEBUGOUT("SERDES: Link up - autoneg completed successfully.\n");
} else {
mac->serdes_has_link = FALSE;
- DEBUGOUT("SERDES: Link down - invalid"
- "codewords detected in autoneg.\n");
+ DEBUGOUT("SERDES: Link down - invalid codewords detected in autoneg.\n");
}
} else {
mac->serdes_has_link = FALSE;
@@ -1423,8 +1423,7 @@ s32 e1000_config_fc_after_link_up_generic(struct e1000_hw *hw)
goto out;
if (!(mii_status_reg & MII_SR_AUTONEG_COMPLETE)) {
- DEBUGOUT("Copper PHY and Auto Neg "
- "has not completed.\n");
+ DEBUGOUT("Copper PHY and Auto Neg has not completed.\n");
goto out;
}
@@ -1436,11 +1435,11 @@ s32 e1000_config_fc_after_link_up_generic(struct e1000_hw *hw)
* flow control was negotiated.
*/
ret_val = hw->phy.ops.read_reg(hw, PHY_AUTONEG_ADV,
- &mii_nway_adv_reg);
+ &mii_nway_adv_reg);
if (ret_val)
goto out;
ret_val = hw->phy.ops.read_reg(hw, PHY_LP_ABILITY,
- &mii_nway_lp_ability_reg);
+ &mii_nway_lp_ability_reg);
if (ret_val)
goto out;
@@ -1485,15 +1484,14 @@ s32 e1000_config_fc_after_link_up_generic(struct e1000_hw *hw)
* of pause frames. In this case, we had to advertise
* FULL flow control because we could not advertise Rx
* ONLY. Hence, we must now check to see if we need to
- * turn OFF the TRANSMISSION of PAUSE frames.
+ * turn OFF the TRANSMISSION of PAUSE frames.
*/
if (hw->fc.requested_mode == e1000_fc_full) {
hw->fc.current_mode = e1000_fc_full;
- DEBUGOUT("Flow Control = FULL.\r\n");
+ DEBUGOUT("Flow Control = FULL.\n");
} else {
hw->fc.current_mode = e1000_fc_rx_pause;
- DEBUGOUT("Flow Control = "
- "Rx PAUSE frames only.\r\n");
+ DEBUGOUT("Flow Control = Rx PAUSE frames only.\n");
}
}
/*
@@ -1505,11 +1503,11 @@ s32 e1000_config_fc_after_link_up_generic(struct e1000_hw *hw)
* 0 | 1 | 1 | 1 | e1000_fc_tx_pause
*/
else if (!(mii_nway_adv_reg & NWAY_AR_PAUSE) &&
- (mii_nway_adv_reg & NWAY_AR_ASM_DIR) &&
- (mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE) &&
- (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) {
+ (mii_nway_adv_reg & NWAY_AR_ASM_DIR) &&
+ (mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE) &&
+ (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) {
hw->fc.current_mode = e1000_fc_tx_pause;
- DEBUGOUT("Flow Control = Tx PAUSE frames only.\r\n");
+ DEBUGOUT("Flow Control = Tx PAUSE frames only.\n");
}
/*
* For transmitting PAUSE frames ONLY.
@@ -1520,18 +1518,18 @@ s32 e1000_config_fc_after_link_up_generic(struct e1000_hw *hw)
* 1 | 1 | 0 | 1 | e1000_fc_rx_pause
*/
else if ((mii_nway_adv_reg & NWAY_AR_PAUSE) &&
- (mii_nway_adv_reg & NWAY_AR_ASM_DIR) &&
- !(mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE) &&
- (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) {
+ (mii_nway_adv_reg & NWAY_AR_ASM_DIR) &&
+ !(mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE) &&
+ (mii_nway_lp_ability_reg & NWAY_LPAR_ASM_DIR)) {
hw->fc.current_mode = e1000_fc_rx_pause;
- DEBUGOUT("Flow Control = Rx PAUSE frames only.\r\n");
+ DEBUGOUT("Flow Control = Rx PAUSE frames only.\n");
} else {
/*
* Per the IEEE spec, at this point flow control
* should be disabled.
*/
hw->fc.current_mode = e1000_fc_none;
- DEBUGOUT("Flow Control = NONE.\r\n");
+ DEBUGOUT("Flow Control = NONE.\n");
}
/*
@@ -1573,7 +1571,7 @@ out:
* speed and duplex for copper connections.
**/
s32 e1000_get_speed_and_duplex_copper_generic(struct e1000_hw *hw, u16 *speed,
- u16 *duplex)
+ u16 *duplex)
{
u32 status;
@@ -1612,7 +1610,7 @@ s32 e1000_get_speed_and_duplex_copper_generic(struct e1000_hw *hw, u16 *speed,
* for fiber/serdes links.
**/
s32 e1000_get_speed_and_duplex_fiber_serdes_generic(struct e1000_hw *hw,
- u16 *speed, u16 *duplex)
+ u16 *speed, u16 *duplex)
{
DEBUGFUNC("e1000_get_speed_and_duplex_fiber_serdes_generic");
@@ -1843,11 +1841,10 @@ s32 e1000_setup_led_generic(struct e1000_hw *hw)
ledctl = E1000_READ_REG(hw, E1000_LEDCTL);
hw->mac.ledctl_default = ledctl;
/* Turn off LED0 */
- ledctl &= ~(E1000_LEDCTL_LED0_IVRT |
- E1000_LEDCTL_LED0_BLINK |
- E1000_LEDCTL_LED0_MODE_MASK);
+ ledctl &= ~(E1000_LEDCTL_LED0_IVRT | E1000_LEDCTL_LED0_BLINK |
+ E1000_LEDCTL_LED0_MODE_MASK);
ledctl |= (E1000_LEDCTL_MODE_LED_OFF <<
- E1000_LEDCTL_LED0_MODE_SHIFT);
+ E1000_LEDCTL_LED0_MODE_SHIFT);
E1000_WRITE_REG(hw, E1000_LEDCTL, ledctl);
} else if (hw->phy.media_type == e1000_media_type_copper) {
E1000_WRITE_REG(hw, E1000_LEDCTL, hw->mac.ledctl_mode1);
@@ -1899,7 +1896,7 @@ s32 e1000_blink_led_generic(struct e1000_hw *hw)
if (((hw->mac.ledctl_mode2 >> (i * 8)) & 0xFF) ==
E1000_LEDCTL_MODE_LED_ON)
ledctl_blink |= (E1000_LEDCTL_LED0_BLINK <<
- (i * 8));
+ (i * 8));
}
E1000_WRITE_REG(hw, E1000_LEDCTL, ledctl_blink);
@@ -2090,7 +2087,8 @@ void e1000_update_adaptive_generic(struct e1000_hw *hw)
else
mac->current_ifs_val +=
mac->ifs_step_size;
- E1000_WRITE_REG(hw, E1000_AIT, mac->current_ifs_val);
+ E1000_WRITE_REG(hw, E1000_AIT,
+ mac->current_ifs_val);
}
}
} else {
@@ -2141,7 +2139,7 @@ out:
* completion.
**/
s32 e1000_write_8bit_ctrl_reg_generic(struct e1000_hw *hw, u32 reg,
- u32 offset, u8 data)
+ u32 offset, u8 data)
{
u32 i, regvalue = 0;
s32 ret_val = E1000_SUCCESS;
diff --git a/sys/dev/e1000/e1000_nvm.c b/sys/dev/e1000/e1000_nvm.c
index e10ac8c..d8df089 100644
--- a/sys/dev/e1000/e1000_nvm.c
+++ b/sys/dev/e1000/e1000_nvm.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -313,8 +313,7 @@ static void e1000_standby_nvm(struct e1000_hw *hw)
usec_delay(nvm->delay_usec);
e1000_lower_eec_clk(hw, &eecd);
- } else
- if (nvm->type == e1000_nvm_eeprom_spi) {
+ } else if (nvm->type == e1000_nvm_eeprom_spi) {
/* Toggle CS to flush commands */
eecd |= E1000_EECD_CS;
E1000_WRITE_REG(hw, E1000_EECD, eecd);
@@ -394,13 +393,13 @@ static s32 e1000_ready_nvm_eeprom(struct e1000_hw *hw)
/* Set CS */
eecd |= E1000_EECD_CS;
E1000_WRITE_REG(hw, E1000_EECD, eecd);
- } else
- if (nvm->type == e1000_nvm_eeprom_spi) {
+ } else if (nvm->type == e1000_nvm_eeprom_spi) {
u16 timeout = NVM_MAX_RETRY_SPI;
/* Clear SK and CS */
eecd &= ~(E1000_EECD_CS | E1000_EECD_SK);
E1000_WRITE_REG(hw, E1000_EECD, eecd);
+ E1000_WRITE_FLUSH(hw);
usec_delay(1);
/*
@@ -411,7 +410,7 @@ static s32 e1000_ready_nvm_eeprom(struct e1000_hw *hw)
*/
while (timeout) {
e1000_shift_out_eec_bits(hw, NVM_RDSR_OPCODE_SPI,
- hw->nvm.opcode_bits);
+ hw->nvm.opcode_bits);
spi_stat_reg = (u8)e1000_shift_in_eec_bits(hw, 8);
if (!(spi_stat_reg & NVM_STATUS_RDY_SPI))
break;
@@ -506,7 +505,7 @@ out:
* Reads a 16 bit word from the EEPROM.
**/
s32 e1000_read_nvm_microwire(struct e1000_hw *hw, u16 offset, u16 words,
- u16 *data)
+ u16 *data)
{
struct e1000_nvm_info *nvm = &hw->nvm;
u32 i = 0;
@@ -593,7 +592,7 @@ s32 e1000_read_nvm_eerd(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
break;
data[i] = (E1000_READ_REG(hw, E1000_EERD) >>
- E1000_NVM_RW_REG_DATA);
+ E1000_NVM_RW_REG_DATA);
}
out:
@@ -646,7 +645,7 @@ s32 e1000_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
/* Send the WRITE ENABLE command (8 bit opcode) */
e1000_shift_out_eec_bits(hw, NVM_WREN_OPCODE_SPI,
- nvm->opcode_bits);
+ nvm->opcode_bits);
e1000_standby_nvm(hw);
@@ -660,7 +659,7 @@ s32 e1000_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
/* Send the Write command (8-bit opcode + addr) */
e1000_shift_out_eec_bits(hw, write_opcode, nvm->opcode_bits);
e1000_shift_out_eec_bits(hw, (u16)((offset + widx) * 2),
- nvm->address_bits);
+ nvm->address_bits);
/* Loop to allow for up to whole page write of eeprom */
while (widx < words) {
@@ -697,7 +696,7 @@ out:
* EEPROM will most likely contain an invalid checksum.
**/
s32 e1000_write_nvm_microwire(struct e1000_hw *hw, u16 offset, u16 words,
- u16 *data)
+ u16 *data)
{
struct e1000_nvm_info *nvm = &hw->nvm;
s32 ret_val;
@@ -727,7 +726,7 @@ s32 e1000_write_nvm_microwire(struct e1000_hw *hw, u16 offset, u16 words,
goto release;
e1000_shift_out_eec_bits(hw, NVM_EWEN_OPCODE_MICROWIRE,
- (u16)(nvm->opcode_bits + 2));
+ (u16)(nvm->opcode_bits + 2));
e1000_shift_out_eec_bits(hw, 0, (u16)(nvm->address_bits - 2));
@@ -735,10 +734,10 @@ s32 e1000_write_nvm_microwire(struct e1000_hw *hw, u16 offset, u16 words,
while (words_written < words) {
e1000_shift_out_eec_bits(hw, NVM_WRITE_OPCODE_MICROWIRE,
- nvm->opcode_bits);
+ nvm->opcode_bits);
e1000_shift_out_eec_bits(hw, (u16)(offset + words_written),
- nvm->address_bits);
+ nvm->address_bits);
e1000_shift_out_eec_bits(hw, data[words_written], 16);
@@ -763,7 +762,7 @@ s32 e1000_write_nvm_microwire(struct e1000_hw *hw, u16 offset, u16 words,
}
e1000_shift_out_eec_bits(hw, NVM_EWDS_OPCODE_MICROWIRE,
- (u16)(nvm->opcode_bits + 2));
+ (u16)(nvm->opcode_bits + 2));
e1000_shift_out_eec_bits(hw, 0, (u16)(nvm->address_bits - 2));
@@ -784,7 +783,7 @@ out:
* the value in pba_num.
**/
s32 e1000_read_pba_string_generic(struct e1000_hw *hw, u8 *pba_num,
- u32 pba_num_size)
+ u32 pba_num_size)
{
s32 ret_val;
u16 nvm_data;
diff --git a/sys/dev/e1000/e1000_nvm.h b/sys/dev/e1000/e1000_nvm.h
index 61ea0b1..ed23eb3 100644
--- a/sys/dev/e1000/e1000_nvm.h
+++ b/sys/dev/e1000/e1000_nvm.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -45,25 +45,23 @@ s32 e1000_acquire_nvm_generic(struct e1000_hw *hw);
s32 e1000_poll_eerd_eewr_done(struct e1000_hw *hw, int ee_reg);
s32 e1000_read_mac_addr_generic(struct e1000_hw *hw);
s32 e1000_read_pba_string_generic(struct e1000_hw *hw, u8 *pba_num,
- u32 pba_num_size);
+ u32 pba_num_size);
s32 e1000_read_pba_length_generic(struct e1000_hw *hw, u32 *pba_num_size);
s32 e1000_read_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
s32 e1000_read_nvm_microwire(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data);
+ u16 words, u16 *data);
s32 e1000_read_nvm_eerd(struct e1000_hw *hw, u16 offset, u16 words,
- u16 *data);
+ u16 *data);
s32 e1000_valid_led_default_generic(struct e1000_hw *hw, u16 *data);
s32 e1000_validate_nvm_checksum_generic(struct e1000_hw *hw);
-s32 e1000_write_nvm_eewr(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data);
s32 e1000_write_nvm_microwire(struct e1000_hw *hw, u16 offset,
- u16 words, u16 *data);
+ u16 words, u16 *data);
s32 e1000_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words,
- u16 *data);
+ u16 *data);
s32 e1000_update_nvm_checksum_generic(struct e1000_hw *hw);
void e1000_stop_nvm(struct e1000_hw *hw);
void e1000_release_nvm_generic(struct e1000_hw *hw);
-#define E1000_STM_OPCODE 0xDB00
+#define E1000_STM_OPCODE 0xDB00
#endif
diff --git a/sys/dev/e1000/e1000_osdep.h b/sys/dev/e1000/e1000_osdep.h
index 25231a7..7eb7bb6 100644
--- a/sys/dev/e1000/e1000_osdep.h
+++ b/sys/dev/e1000/e1000_osdep.h
@@ -73,9 +73,11 @@
#define STATIC static
#define FALSE 0
-#define false FALSE
#define TRUE 1
+#ifndef __bool_true_false_are_defined
+#define false FALSE
#define true TRUE
+#endif
#define CMD_MEM_WRT_INVALIDATE 0x0010 /* BIT_4 */
#define PCI_COMMAND_REGISTER PCIR_COMMAND
@@ -96,7 +98,9 @@ typedef int64_t s64;
typedef int32_t s32;
typedef int16_t s16;
typedef int8_t s8;
+#ifndef __bool_true_false_are_defined
typedef boolean_t bool;
+#endif
#define __le16 u16
#define __le32 u32
diff --git a/sys/dev/e1000/e1000_phy.c b/sys/dev/e1000/e1000_phy.c
index 40fd2bd..ead72690 100644
--- a/sys/dev/e1000/e1000_phy.c
+++ b/sys/dev/e1000/e1000_phy.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -36,17 +36,17 @@
static u32 e1000_get_phy_addr_for_bm_page(u32 page, u32 reg);
static s32 e1000_access_phy_wakeup_reg_bm(struct e1000_hw *hw, u32 offset,
- u16 *data, bool read);
+ u16 *data, bool read, bool page_set);
static u32 e1000_get_phy_addr_for_hv_page(u32 page);
static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,
- u16 *data, bool read);
+ u16 *data, bool read);
/* Cable length tables */
static const u16 e1000_m88_cable_length_table[] = {
0, 50, 80, 110, 140, 140, E1000_CABLE_LENGTH_UNDEFINED };
#define M88E1000_CABLE_LENGTH_TABLE_SIZE \
- (sizeof(e1000_m88_cable_length_table) / \
- sizeof(e1000_m88_cable_length_table[0]))
+ (sizeof(e1000_m88_cable_length_table) / \
+ sizeof(e1000_m88_cable_length_table[0]))
static const u16 e1000_igp_2_cable_length_table[] = {
0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 8, 11, 13, 16, 18, 21, 0, 0, 0, 3,
@@ -58,8 +58,8 @@ static const u16 e1000_igp_2_cable_length_table[] = {
100, 105, 109, 113, 116, 119, 122, 124, 104, 109, 114, 118, 121,
124};
#define IGP02E1000_CABLE_LENGTH_TABLE_SIZE \
- (sizeof(e1000_igp_2_cable_length_table) / \
- sizeof(e1000_igp_2_cable_length_table[0]))
+ (sizeof(e1000_igp_2_cable_length_table) / \
+ sizeof(e1000_igp_2_cable_length_table[0]))
/**
* e1000_init_phy_ops_generic - Initialize PHY function pointers
@@ -82,20 +82,35 @@ void e1000_init_phy_ops_generic(struct e1000_hw *hw)
phy->ops.get_cfg_done = e1000_null_ops_generic;
phy->ops.get_cable_length = e1000_null_ops_generic;
phy->ops.get_info = e1000_null_ops_generic;
+ phy->ops.set_page = e1000_null_set_page;
phy->ops.read_reg = e1000_null_read_reg;
phy->ops.read_reg_locked = e1000_null_read_reg;
+ phy->ops.read_reg_page = e1000_null_read_reg;
phy->ops.release = e1000_null_phy_generic;
phy->ops.reset = e1000_null_ops_generic;
phy->ops.set_d0_lplu_state = e1000_null_lplu_state;
phy->ops.set_d3_lplu_state = e1000_null_lplu_state;
phy->ops.write_reg = e1000_null_write_reg;
phy->ops.write_reg_locked = e1000_null_write_reg;
+ phy->ops.write_reg_page = e1000_null_write_reg;
phy->ops.power_up = e1000_null_phy_generic;
phy->ops.power_down = e1000_null_phy_generic;
+ phy->ops.read_i2c_byte = e1000_read_i2c_byte_generic;
+ phy->ops.write_i2c_byte = e1000_write_i2c_byte_generic;
phy->ops.cfg_on_link_up = e1000_null_ops_generic;
}
/**
+ * e1000_null_set_page - No-op function, return 0
+ * @hw: pointer to the HW structure
+ **/
+s32 e1000_null_set_page(struct e1000_hw *hw, u16 data)
+{
+ DEBUGFUNC("e1000_null_set_page");
+ return E1000_SUCCESS;
+}
+
+/**
* e1000_null_read_reg - No-op function, return 0
* @hw: pointer to the HW structure
**/
@@ -250,8 +265,8 @@ s32 e1000_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data)
* PHY to retrieve the desired data.
*/
mdic = ((offset << E1000_MDIC_REG_SHIFT) |
- (phy->addr << E1000_MDIC_PHY_SHIFT) |
- (E1000_MDIC_OP_READ));
+ (phy->addr << E1000_MDIC_PHY_SHIFT) |
+ (E1000_MDIC_OP_READ));
E1000_WRITE_REG(hw, E1000_MDIC, mdic);
@@ -316,9 +331,9 @@ s32 e1000_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data)
* PHY to retrieve the desired data.
*/
mdic = (((u32)data) |
- (offset << E1000_MDIC_REG_SHIFT) |
- (phy->addr << E1000_MDIC_PHY_SHIFT) |
- (E1000_MDIC_OP_WRITE));
+ (offset << E1000_MDIC_REG_SHIFT) |
+ (phy->addr << E1000_MDIC_PHY_SHIFT) |
+ (E1000_MDIC_OP_WRITE));
E1000_WRITE_REG(hw, E1000_MDIC, mdic);
@@ -377,8 +392,8 @@ s32 e1000_read_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 *data)
* PHY to retrieve the desired data.
*/
i2ccmd = ((offset << E1000_I2CCMD_REG_ADDR_SHIFT) |
- (phy->addr << E1000_I2CCMD_PHY_ADDR_SHIFT) |
- (E1000_I2CCMD_OPCODE_READ));
+ (phy->addr << E1000_I2CCMD_PHY_ADDR_SHIFT) |
+ (E1000_I2CCMD_OPCODE_READ));
E1000_WRITE_REG(hw, E1000_I2CCMD, i2ccmd);
@@ -420,6 +435,13 @@ s32 e1000_write_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 data)
DEBUGFUNC("e1000_write_phy_reg_i2c");
+ /* Prevent overwritting SFP I2C EEPROM which is at A0 address.*/
+ if ((hw->phy.addr == 0) || (hw->phy.addr > 7)) {
+ DEBUGOUT1("PHY I2C Address %d is out of range.\n",
+ hw->phy.addr);
+ return -E1000_ERR_CONFIG;
+ }
+
/* Swap the data bytes for the I2C interface */
phy_data_swapped = ((data >> 8) & 0x00FF) | ((data << 8) & 0xFF00);
@@ -429,9 +451,9 @@ s32 e1000_write_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 data)
* PHY to retrieve the desired data.
*/
i2ccmd = ((offset << E1000_I2CCMD_REG_ADDR_SHIFT) |
- (phy->addr << E1000_I2CCMD_PHY_ADDR_SHIFT) |
- E1000_I2CCMD_OPCODE_WRITE |
- phy_data_swapped);
+ (phy->addr << E1000_I2CCMD_PHY_ADDR_SHIFT) |
+ E1000_I2CCMD_OPCODE_WRITE |
+ phy_data_swapped);
E1000_WRITE_REG(hw, E1000_I2CCMD, i2ccmd);
@@ -455,6 +477,139 @@ s32 e1000_write_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 data)
}
/**
+ * e1000_read_sfp_data_byte - Reads SFP module data.
+ * @hw: pointer to the HW structure
+ * @offset: byte location offset to be read
+ * @data: read data buffer pointer
+ *
+ * Reads one byte from SFP module data stored
+ * in SFP resided EEPROM memory or SFP diagnostic area.
+ * Function should be called with
+ * E1000_I2CCMD_SFP_DATA_ADDR(<byte offset>) for SFP module database access
+ * E1000_I2CCMD_SFP_DIAG_ADDR(<byte offset>) for SFP diagnostics parameters
+ * access
+ **/
+s32 e1000_read_sfp_data_byte(struct e1000_hw *hw, u16 offset, u8 *data)
+{
+ u32 i = 0;
+ u32 i2ccmd = 0;
+ u32 data_local = 0;
+
+ DEBUGFUNC("e1000_read_sfp_data_byte");
+
+ if (offset > E1000_I2CCMD_SFP_DIAG_ADDR(255)) {
+ DEBUGOUT("I2CCMD command address exceeds upper limit\n");
+ return -E1000_ERR_PHY;
+ }
+
+ /*
+ * Set up Op-code, EEPROM Address,in the I2CCMD
+ * register. The MAC will take care of interfacing with the
+ * EEPROM to retrieve the desired data.
+ */
+ i2ccmd = ((offset << E1000_I2CCMD_REG_ADDR_SHIFT) |
+ E1000_I2CCMD_OPCODE_READ);
+
+ E1000_WRITE_REG(hw, E1000_I2CCMD, i2ccmd);
+
+ /* Poll the ready bit to see if the I2C read completed */
+ for (i = 0; i < E1000_I2CCMD_PHY_TIMEOUT; i++) {
+ usec_delay(50);
+ data_local = E1000_READ_REG(hw, E1000_I2CCMD);
+ if (data_local & E1000_I2CCMD_READY)
+ break;
+ }
+ if (!(data_local & E1000_I2CCMD_READY)) {
+ DEBUGOUT("I2CCMD Read did not complete\n");
+ return -E1000_ERR_PHY;
+ }
+ if (data_local & E1000_I2CCMD_ERROR) {
+ DEBUGOUT("I2CCMD Error bit set\n");
+ return -E1000_ERR_PHY;
+ }
+ *data = (u8) data_local & 0xFF;
+
+ return E1000_SUCCESS;
+}
+
+/**
+ * e1000_write_sfp_data_byte - Writes SFP module data.
+ * @hw: pointer to the HW structure
+ * @offset: byte location offset to write to
+ * @data: data to write
+ *
+ * Writes one byte to SFP module data stored
+ * in SFP resided EEPROM memory or SFP diagnostic area.
+ * Function should be called with
+ * E1000_I2CCMD_SFP_DATA_ADDR(<byte offset>) for SFP module database access
+ * E1000_I2CCMD_SFP_DIAG_ADDR(<byte offset>) for SFP diagnostics parameters
+ * access
+ **/
+s32 e1000_write_sfp_data_byte(struct e1000_hw *hw, u16 offset, u8 data)
+{
+ u32 i = 0;
+ u32 i2ccmd = 0;
+ u32 data_local = 0;
+
+ DEBUGFUNC("e1000_write_sfp_data_byte");
+
+ if (offset > E1000_I2CCMD_SFP_DIAG_ADDR(255)) {
+ DEBUGOUT("I2CCMD command address exceeds upper limit\n");
+ return -E1000_ERR_PHY;
+ }
+ /*
+ * The programming interface is 16 bits wide
+ * so we need to read the whole word first
+ * then update appropriate byte lane and write
+ * the updated word back.
+ */
+ /*
+ * Set up Op-code, EEPROM Address,in the I2CCMD
+ * register. The MAC will take care of interfacing
+ * with an EEPROM to write the data given.
+ */
+ i2ccmd = ((offset << E1000_I2CCMD_REG_ADDR_SHIFT) |
+ E1000_I2CCMD_OPCODE_READ);
+ /* Set a command to read single word */
+ E1000_WRITE_REG(hw, E1000_I2CCMD, i2ccmd);
+ for (i = 0; i < E1000_I2CCMD_PHY_TIMEOUT; i++) {
+ usec_delay(50);
+ /*
+ * Poll the ready bit to see if lastly
+ * launched I2C operation completed
+ */
+ i2ccmd = E1000_READ_REG(hw, E1000_I2CCMD);
+ if (i2ccmd & E1000_I2CCMD_READY) {
+ /* Check if this is READ or WRITE phase */
+ if ((i2ccmd & E1000_I2CCMD_OPCODE_READ) ==
+ E1000_I2CCMD_OPCODE_READ) {
+ /*
+ * Write the selected byte
+ * lane and update whole word
+ */
+ data_local = i2ccmd & 0xFF00;
+ data_local |= data;
+ i2ccmd = ((offset <<
+ E1000_I2CCMD_REG_ADDR_SHIFT) |
+ E1000_I2CCMD_OPCODE_WRITE | data_local);
+ E1000_WRITE_REG(hw, E1000_I2CCMD, i2ccmd);
+ } else {
+ break;
+ }
+ }
+ }
+ if (!(i2ccmd & E1000_I2CCMD_READY)) {
+ DEBUGOUT("I2CCMD Write did not complete\n");
+ return -E1000_ERR_PHY;
+ }
+ if (i2ccmd & E1000_I2CCMD_ERROR) {
+ DEBUGOUT("I2CCMD Error bit set\n");
+ return -E1000_ERR_PHY;
+ }
+ return E1000_SUCCESS;
+}
+
+/**
* e1000_read_phy_reg_m88 - Read m88 PHY register
* @hw: pointer to the HW structure
* @offset: register offset to be read
@@ -478,7 +633,7 @@ s32 e1000_read_phy_reg_m88(struct e1000_hw *hw, u32 offset, u16 *data)
goto out;
ret_val = e1000_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
- data);
+ data);
hw->phy.ops.release(hw);
@@ -509,7 +664,7 @@ s32 e1000_write_phy_reg_m88(struct e1000_hw *hw, u32 offset, u16 data)
goto out;
ret_val = e1000_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
- data);
+ data);
hw->phy.ops.release(hw);
@@ -518,6 +673,26 @@ out:
}
/**
+ * e1000_set_page_igp - Set page as on IGP-like PHY(s)
+ * @hw: pointer to the HW structure
+ * @page: page to set (shifted left when necessary)
+ *
+ * Sets PHY page required for PHY register access. Assumes semaphore is
+ * already acquired. Note, this function sets phy.addr to 1 so the caller
+ * must set it appropriately (if necessary) after this function returns.
+ **/
+s32 e1000_set_page_igp(struct e1000_hw *hw, u16 page)
+{
+ DEBUGFUNC("e1000_set_page_igp");
+
+ DEBUGOUT1("Setting page 0x%x\n", page);
+
+ hw->phy.addr = 1;
+
+ return e1000_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT, page);
+}
+
+/**
* __e1000_read_phy_reg_igp - Read igp PHY register
* @hw: pointer to the HW structure
* @offset: register offset to be read
@@ -529,7 +704,7 @@ out:
* semaphores before exiting.
**/
static s32 __e1000_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data,
- bool locked)
+ bool locked)
{
s32 ret_val = E1000_SUCCESS;
@@ -546,14 +721,14 @@ static s32 __e1000_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data,
if (offset > MAX_PHY_MULTI_PAGE_REG) {
ret_val = e1000_write_phy_reg_mdic(hw,
- IGP01E1000_PHY_PAGE_SELECT,
- (u16)offset);
+ IGP01E1000_PHY_PAGE_SELECT,
+ (u16)offset);
if (ret_val)
goto release;
}
ret_val = e1000_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
- data);
+ data);
release:
if (!locked)
@@ -602,7 +777,7 @@ s32 e1000_read_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 *data)
* at the offset. Release any acquired semaphores before exiting.
**/
static s32 __e1000_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data,
- bool locked)
+ bool locked)
{
s32 ret_val = E1000_SUCCESS;
@@ -619,14 +794,14 @@ static s32 __e1000_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data,
if (offset > MAX_PHY_MULTI_PAGE_REG) {
ret_val = e1000_write_phy_reg_mdic(hw,
- IGP01E1000_PHY_PAGE_SELECT,
- (u16)offset);
+ IGP01E1000_PHY_PAGE_SELECT,
+ (u16)offset);
if (ret_val)
goto release;
}
ret_val = e1000_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
- data);
+ data);
release:
if (!locked)
@@ -676,7 +851,7 @@ s32 e1000_write_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 data)
* Release any acquired semaphores before exiting.
**/
static s32 __e1000_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data,
- bool locked)
+ bool locked)
{
u32 kmrnctrlsta;
s32 ret_val = E1000_SUCCESS;
@@ -693,8 +868,9 @@ static s32 __e1000_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data,
}
kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) &
- E1000_KMRNCTRLSTA_OFFSET) | E1000_KMRNCTRLSTA_REN;
+ E1000_KMRNCTRLSTA_OFFSET) | E1000_KMRNCTRLSTA_REN;
E1000_WRITE_REG(hw, E1000_KMRNCTRLSTA, kmrnctrlsta);
+ E1000_WRITE_FLUSH(hw);
usec_delay(2);
@@ -750,7 +926,7 @@ s32 e1000_read_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 *data)
* before exiting.
**/
static s32 __e1000_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data,
- bool locked)
+ bool locked)
{
u32 kmrnctrlsta;
s32 ret_val = E1000_SUCCESS;
@@ -767,8 +943,9 @@ static s32 __e1000_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data,
}
kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) &
- E1000_KMRNCTRLSTA_OFFSET) | data;
+ E1000_KMRNCTRLSTA_OFFSET) | data;
E1000_WRITE_REG(hw, E1000_KMRNCTRLSTA, kmrnctrlsta);
+ E1000_WRITE_FLUSH(hw);
usec_delay(2);
@@ -820,11 +997,6 @@ s32 e1000_copper_link_setup_82577(struct e1000_hw *hw)
DEBUGFUNC("e1000_copper_link_setup_82577");
- if (hw->phy.reset_disable) {
- ret_val = E1000_SUCCESS;
- goto out;
- }
-
if (hw->phy.type == e1000_phy_82580) {
ret_val = hw->phy.ops.reset(hw);
if (ret_val) {
@@ -844,6 +1016,37 @@ s32 e1000_copper_link_setup_82577(struct e1000_hw *hw)
phy_data |= I82577_CFG_ENABLE_DOWNSHIFT;
ret_val = hw->phy.ops.write_reg(hw, I82577_CFG_REG, phy_data);
+ if (ret_val)
+ goto out;
+
+ /* Resolve Master/Slave mode */
+ ret_val = hw->phy.ops.read_reg(hw, PHY_1000T_CTRL, &phy_data);
+ if (ret_val)
+ goto out;
+
+ /* load defaults for future use */
+ hw->phy.original_ms_type = (phy_data & CR_1000T_MS_ENABLE) ?
+ ((phy_data & CR_1000T_MS_VALUE) ?
+ e1000_ms_force_master :
+ e1000_ms_force_slave) : e1000_ms_auto;
+
+ switch (hw->phy.ms_type) {
+ case e1000_ms_force_master:
+ phy_data |= (CR_1000T_MS_ENABLE | CR_1000T_MS_VALUE);
+ break;
+ case e1000_ms_force_slave:
+ phy_data |= CR_1000T_MS_ENABLE;
+ phy_data &= ~(CR_1000T_MS_VALUE);
+ break;
+ case e1000_ms_auto:
+ phy_data &= ~CR_1000T_MS_ENABLE;
+ default:
+ break;
+ }
+
+ ret_val = hw->phy.ops.write_reg(hw, PHY_1000T_CTRL, phy_data);
+ if (ret_val)
+ goto out;
out:
return ret_val;
@@ -864,10 +1067,6 @@ s32 e1000_copper_link_setup_m88(struct e1000_hw *hw)
DEBUGFUNC("e1000_copper_link_setup_m88");
- if (phy->reset_disable) {
- ret_val = E1000_SUCCESS;
- goto out;
- }
/* Enable CRS on Tx. This must be set for half-duplex operation. */
ret_val = phy->ops.read_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);
@@ -931,7 +1130,7 @@ s32 e1000_copper_link_setup_m88(struct e1000_hw *hw)
* to 25MHz clock.
*/
ret_val = phy->ops.read_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL,
- &phy_data);
+ &phy_data);
if (ret_val)
goto out;
@@ -945,12 +1144,12 @@ s32 e1000_copper_link_setup_m88(struct e1000_hw *hw)
} else {
/* Configure Master and Slave downshift values */
phy_data &= ~(M88E1000_EPSCR_MASTER_DOWNSHIFT_MASK |
- M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK);
+ M88E1000_EPSCR_SLAVE_DOWNSHIFT_MASK);
phy_data |= (M88E1000_EPSCR_MASTER_DOWNSHIFT_1X |
- M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X);
+ M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X);
}
ret_val = phy->ops.write_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL,
- phy_data);
+ phy_data);
if (ret_val)
goto out;
}
@@ -976,7 +1175,7 @@ s32 e1000_copper_link_setup_m88(struct e1000_hw *hw)
if (phy->type == e1000_phy_82578) {
ret_val = phy->ops.read_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL,
- &phy_data);
+ &phy_data);
if (ret_val)
goto out;
@@ -984,7 +1183,7 @@ s32 e1000_copper_link_setup_m88(struct e1000_hw *hw)
phy_data |= I82578_EPSCR_DOWNSHIFT_ENABLE;
phy_data &= ~I82578_EPSCR_DOWNSHIFT_COUNTER_MASK;
ret_val = phy->ops.write_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL,
- phy_data);
+ phy_data);
if (ret_val)
goto out;
}
@@ -1008,10 +1207,6 @@ s32 e1000_copper_link_setup_m88_gen2(struct e1000_hw *hw)
DEBUGFUNC("e1000_copper_link_setup_m88_gen2");
- if (phy->reset_disable) {
- ret_val = E1000_SUCCESS;
- goto out;
- }
/* Enable CRS on Tx. This must be set for half-duplex operation. */
ret_val = phy->ops.read_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);
@@ -1093,10 +1288,6 @@ s32 e1000_copper_link_setup_igp(struct e1000_hw *hw)
DEBUGFUNC("e1000_copper_link_setup_igp");
- if (phy->reset_disable) {
- ret_val = E1000_SUCCESS;
- goto out;
- }
ret_val = hw->phy.ops.reset(hw);
if (ret_val) {
@@ -1164,15 +1355,15 @@ s32 e1000_copper_link_setup_igp(struct e1000_hw *hw)
if (phy->autoneg_advertised == ADVERTISE_1000_FULL) {
/* Disable SmartSpeed */
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
@@ -1278,8 +1469,7 @@ s32 e1000_copper_link_autoneg(struct e1000_hw *hw)
if (phy->autoneg_wait_to_complete) {
ret_val = hw->mac.ops.wait_autoneg(hw);
if (ret_val) {
- DEBUGOUT("Error while waiting for "
- "autoneg to complete\n");
+ DEBUGOUT("Error while waiting for autoneg to complete\n");
goto out;
}
}
@@ -1318,7 +1508,7 @@ s32 e1000_phy_setup_autoneg(struct e1000_hw *hw)
if (phy->autoneg_mask & ADVERTISE_1000_FULL) {
/* Read the MII 1000Base-T Control Register (Address 9). */
ret_val = phy->ops.read_reg(hw, PHY_1000T_CTRL,
- &mii_1000t_ctrl_reg);
+ &mii_1000t_ctrl_reg);
if (ret_val)
goto out;
}
@@ -1337,9 +1527,9 @@ s32 e1000_phy_setup_autoneg(struct e1000_hw *hw)
* the 1000Base-T Control Register (Address 9).
*/
mii_autoneg_adv_reg &= ~(NWAY_AR_100TX_FD_CAPS |
- NWAY_AR_100TX_HD_CAPS |
- NWAY_AR_10T_FD_CAPS |
- NWAY_AR_10T_HD_CAPS);
+ NWAY_AR_100TX_HD_CAPS |
+ NWAY_AR_10T_FD_CAPS |
+ NWAY_AR_10T_HD_CAPS);
mii_1000t_ctrl_reg &= ~(CR_1000T_HD_CAPS | CR_1000T_FD_CAPS);
DEBUGOUT1("autoneg_advertised %x\n", phy->autoneg_advertised);
@@ -1445,9 +1635,8 @@ s32 e1000_phy_setup_autoneg(struct e1000_hw *hw)
DEBUGOUT1("Auto-Neg Advertising %x\n", mii_autoneg_adv_reg);
if (phy->autoneg_mask & ADVERTISE_1000_FULL) {
- ret_val = phy->ops.write_reg(hw,
- PHY_1000T_CTRL,
- mii_1000t_ctrl_reg);
+ ret_val = phy->ops.write_reg(hw, PHY_1000T_CTRL,
+ mii_1000t_ctrl_reg);
if (ret_val)
goto out;
}
@@ -1497,10 +1686,8 @@ s32 e1000_setup_copper_link_generic(struct e1000_hw *hw)
* Check link status. Wait up to 100 microseconds for link to become
* valid.
*/
- ret_val = e1000_phy_has_link_generic(hw,
- COPPER_LINK_UP_LIMIT,
- 10,
- &link);
+ ret_val = e1000_phy_has_link_generic(hw, COPPER_LINK_UP_LIMIT, 10,
+ &link);
if (ret_val)
goto out;
@@ -1565,10 +1752,8 @@ s32 e1000_phy_force_speed_duplex_igp(struct e1000_hw *hw)
if (phy->autoneg_wait_to_complete) {
DEBUGOUT("Waiting for forced speed/duplex link on IGP phy.\n");
- ret_val = e1000_phy_has_link_generic(hw,
- PHY_FORCE_LIMIT,
- 100000,
- &link);
+ ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
+ 100000, &link);
if (ret_val)
goto out;
@@ -1576,10 +1761,8 @@ s32 e1000_phy_force_speed_duplex_igp(struct e1000_hw *hw)
DEBUGOUT("Link taking longer than expected.\n");
/* Try once more */
- ret_val = e1000_phy_has_link_generic(hw,
- PHY_FORCE_LIMIT,
- 100000,
- &link);
+ ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
+ 100000, &link);
if (ret_val)
goto out;
}
@@ -1641,7 +1824,7 @@ s32 e1000_phy_force_speed_duplex_m88(struct e1000_hw *hw)
DEBUGOUT("Waiting for forced speed/duplex link on M88 phy.\n");
ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
- 100000, &link);
+ 100000, &link);
if (ret_val)
goto out;
@@ -1669,7 +1852,7 @@ s32 e1000_phy_force_speed_duplex_m88(struct e1000_hw *hw)
/* Try once more */
ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
- 100000, &link);
+ 100000, &link);
if (ret_val)
goto out;
}
@@ -1755,10 +1938,8 @@ s32 e1000_phy_force_speed_duplex_ife(struct e1000_hw *hw)
if (phy->autoneg_wait_to_complete) {
DEBUGOUT("Waiting for forced speed/duplex link on IFE phy.\n");
- ret_val = e1000_phy_has_link_generic(hw,
- PHY_FORCE_LIMIT,
- 100000,
- &link);
+ ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
+ 100000, &link);
if (ret_val)
goto out;
@@ -1766,10 +1947,8 @@ s32 e1000_phy_force_speed_duplex_ife(struct e1000_hw *hw)
DEBUGOUT("Link taking longer than expected.\n");
/* Try once more */
- ret_val = e1000_phy_has_link_generic(hw,
- PHY_FORCE_LIMIT,
- 100000,
- &link);
+ ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
+ 100000, &link);
if (ret_val)
goto out;
}
@@ -1872,7 +2051,7 @@ s32 e1000_set_d3_lplu_state_generic(struct e1000_hw *hw, bool active)
if (!active) {
data &= ~IGP02E1000_PM_D3_LPLU;
ret_val = phy->ops.write_reg(hw, IGP02E1000_PHY_POWER_MGMT,
- data);
+ data);
if (ret_val)
goto out;
/*
@@ -1883,49 +2062,49 @@ s32 e1000_set_d3_lplu_state_generic(struct e1000_hw *hw, bool active)
*/
if (phy->smart_speed == e1000_smart_speed_on) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data |= IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
} else if (phy->smart_speed == e1000_smart_speed_off) {
ret_val = phy->ops.read_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ &data);
if (ret_val)
goto out;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw,
- IGP01E1000_PHY_PORT_CONFIG,
- data);
+ IGP01E1000_PHY_PORT_CONFIG,
+ data);
if (ret_val)
goto out;
}
} else if ((phy->autoneg_advertised == E1000_ALL_SPEED_DUPLEX) ||
- (phy->autoneg_advertised == E1000_ALL_NOT_GIG) ||
- (phy->autoneg_advertised == E1000_ALL_10_SPEED)) {
+ (phy->autoneg_advertised == E1000_ALL_NOT_GIG) ||
+ (phy->autoneg_advertised == E1000_ALL_10_SPEED)) {
data |= IGP02E1000_PM_D3_LPLU;
ret_val = phy->ops.write_reg(hw, IGP02E1000_PHY_POWER_MGMT,
- data);
+ data);
if (ret_val)
goto out;
/* When LPLU is enabled, we should disable SmartSpeed */
ret_val = phy->ops.read_reg(hw, IGP01E1000_PHY_PORT_CONFIG,
- &data);
+ &data);
if (ret_val)
goto out;
data &= ~IGP01E1000_PSCFR_SMART_SPEED;
ret_val = phy->ops.write_reg(hw, IGP01E1000_PHY_PORT_CONFIG,
- data);
+ data);
}
out:
@@ -1953,14 +2132,14 @@ s32 e1000_check_downshift_generic(struct e1000_hw *hw)
case e1000_phy_gg82563:
case e1000_phy_bm:
case e1000_phy_82578:
- offset = M88E1000_PHY_SPEC_STATUS;
- mask = M88E1000_PSSR_DOWNSHIFT;
+ offset = M88E1000_PHY_SPEC_STATUS;
+ mask = M88E1000_PSSR_DOWNSHIFT;
break;
case e1000_phy_igp:
case e1000_phy_igp_2:
case e1000_phy_igp_3:
- offset = IGP01E1000_PHY_LINK_HEALTH;
- mask = IGP01E1000_PLHR_SS_DOWNGRADE;
+ offset = IGP01E1000_PHY_LINK_HEALTH;
+ mask = IGP01E1000_PLHR_SS_DOWNGRADE;
break;
default:
/* speed downshift not supported */
@@ -1998,8 +2177,8 @@ s32 e1000_check_polarity_m88(struct e1000_hw *hw)
if (!ret_val)
phy->cable_polarity = (data & M88E1000_PSSR_REV_POLARITY)
- ? e1000_rev_polarity_reversed
- : e1000_rev_polarity_normal;
+ ? e1000_rev_polarity_reversed
+ : e1000_rev_polarity_normal;
return ret_val;
}
@@ -2031,23 +2210,23 @@ s32 e1000_check_polarity_igp(struct e1000_hw *hw)
if ((data & IGP01E1000_PSSR_SPEED_MASK) ==
IGP01E1000_PSSR_SPEED_1000MBPS) {
- offset = IGP01E1000_PHY_PCS_INIT_REG;
- mask = IGP01E1000_PHY_POLARITY_MASK;
+ offset = IGP01E1000_PHY_PCS_INIT_REG;
+ mask = IGP01E1000_PHY_POLARITY_MASK;
} else {
/*
* This really only applies to 10Mbps since
* there is no polarity for 100Mbps (always 0).
*/
- offset = IGP01E1000_PHY_PORT_STATUS;
- mask = IGP01E1000_PSSR_POLARITY_REVERSED;
+ offset = IGP01E1000_PHY_PORT_STATUS;
+ mask = IGP01E1000_PSSR_POLARITY_REVERSED;
}
ret_val = phy->ops.read_reg(hw, offset, &data);
if (!ret_val)
phy->cable_polarity = (data & mask)
- ? e1000_rev_polarity_reversed
- : e1000_rev_polarity_normal;
+ ? e1000_rev_polarity_reversed
+ : e1000_rev_polarity_normal;
out:
return ret_val;
@@ -2082,8 +2261,8 @@ s32 e1000_check_polarity_ife(struct e1000_hw *hw)
if (!ret_val)
phy->cable_polarity = (phy_data & mask)
- ? e1000_rev_polarity_reversed
- : e1000_rev_polarity_normal;
+ ? e1000_rev_polarity_reversed
+ : e1000_rev_polarity_normal;
return ret_val;
}
@@ -2135,7 +2314,7 @@ s32 e1000_wait_autoneg_generic(struct e1000_hw *hw)
* Polls the PHY status register for link, 'iterations' number of times.
**/
s32 e1000_phy_has_link_generic(struct e1000_hw *hw, u32 iterations,
- u32 usec_interval, bool *success)
+ u32 usec_interval, bool *success)
{
s32 ret_val = E1000_SUCCESS;
u16 i, phy_status;
@@ -2203,7 +2382,7 @@ s32 e1000_get_cable_length_m88(struct e1000_hw *hw)
goto out;
index = (phy_data & M88E1000_PSSR_CABLE_LENGTH) >>
- M88E1000_PSSR_CABLE_LENGTH_SHIFT;
+ M88E1000_PSSR_CABLE_LENGTH_SHIFT;
if (index >= M88E1000_CABLE_LENGTH_TABLE_SIZE - 1) {
ret_val = -E1000_ERR_PHY;
goto out;
@@ -2250,14 +2429,14 @@ s32 e1000_get_cable_length_m88_gen2(struct e1000_hw *hw)
if (ret_val)
goto out;
- is_cm = !(phy_data & I347AT4_PCDC_CABLE_LENGTH_UNIT);
+ is_cm = !(phy_data2 & I347AT4_PCDC_CABLE_LENGTH_UNIT);
/* Populate the phy structure with cable length in meters */
phy->min_cable_length = phy_data / (is_cm ? 100 : 1);
phy->max_cable_length = phy_data / (is_cm ? 100 : 1);
phy->cable_length = phy_data / (is_cm ? 100 : 1);
- /* Reset the page selec to its original value */
+ /* Reset the page select to its original value */
ret_val = phy->ops.write_reg(hw, I347AT4_PAGE_SELECT,
default_page);
if (ret_val)
@@ -2327,10 +2506,10 @@ s32 e1000_get_cable_length_igp_2(struct e1000_hw *hw)
u16 cur_agc_index, max_agc_index = 0;
u16 min_agc_index = IGP02E1000_CABLE_LENGTH_TABLE_SIZE - 1;
static const u16 agc_reg_array[IGP02E1000_PHY_CHANNEL_NUM] = {
- IGP02E1000_PHY_AGC_A,
- IGP02E1000_PHY_AGC_B,
- IGP02E1000_PHY_AGC_C,
- IGP02E1000_PHY_AGC_D
+ IGP02E1000_PHY_AGC_A,
+ IGP02E1000_PHY_AGC_B,
+ IGP02E1000_PHY_AGC_C,
+ IGP02E1000_PHY_AGC_D
};
DEBUGFUNC("e1000_get_cable_length_igp_2");
@@ -2348,7 +2527,7 @@ s32 e1000_get_cable_length_igp_2(struct e1000_hw *hw)
* approximate cable length.
*/
cur_agc_index = (phy_data >> IGP02E1000_AGC_LENGTH_SHIFT) &
- IGP02E1000_AGC_LENGTH_MASK;
+ IGP02E1000_AGC_LENGTH_MASK;
/* Array index bound check. */
if ((cur_agc_index >= IGP02E1000_CABLE_LENGTH_TABLE_SIZE) ||
@@ -2369,12 +2548,12 @@ s32 e1000_get_cable_length_igp_2(struct e1000_hw *hw)
}
agc_value -= (e1000_igp_2_cable_length_table[min_agc_index] +
- e1000_igp_2_cable_length_table[max_agc_index]);
+ e1000_igp_2_cable_length_table[max_agc_index]);
agc_value /= (IGP02E1000_PHY_CHANNEL_NUM - 2);
/* Calculate cable length with the error range of +/- 10 meters. */
phy->min_cable_length = ((agc_value - IGP02E1000_AGC_RANGE) > 0) ?
- (agc_value - IGP02E1000_AGC_RANGE) : 0;
+ (agc_value - IGP02E1000_AGC_RANGE) : 0;
phy->max_cable_length = agc_value + IGP02E1000_AGC_RANGE;
phy->cable_length = (phy->min_cable_length + phy->max_cable_length) / 2;
@@ -2423,7 +2602,7 @@ s32 e1000_get_phy_info_m88(struct e1000_hw *hw)
goto out;
phy->polarity_correction = (phy_data & M88E1000_PSCR_POLARITY_REVERSAL)
- ? TRUE : FALSE;
+ ? TRUE : FALSE;
ret_val = e1000_check_polarity_m88(hw);
if (ret_val)
@@ -2445,12 +2624,12 @@ s32 e1000_get_phy_info_m88(struct e1000_hw *hw)
goto out;
phy->local_rx = (phy_data & SR_1000T_LOCAL_RX_STATUS)
- ? e1000_1000t_rx_status_ok
- : e1000_1000t_rx_status_not_ok;
+ ? e1000_1000t_rx_status_ok
+ : e1000_1000t_rx_status_not_ok;
phy->remote_rx = (phy_data & SR_1000T_REMOTE_RX_STATUS)
- ? e1000_1000t_rx_status_ok
- : e1000_1000t_rx_status_not_ok;
+ ? e1000_1000t_rx_status_ok
+ : e1000_1000t_rx_status_not_ok;
} else {
/* Set values to "undefined" */
phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;
@@ -2513,12 +2692,12 @@ s32 e1000_get_phy_info_igp(struct e1000_hw *hw)
goto out;
phy->local_rx = (data & SR_1000T_LOCAL_RX_STATUS)
- ? e1000_1000t_rx_status_ok
- : e1000_1000t_rx_status_not_ok;
+ ? e1000_1000t_rx_status_ok
+ : e1000_1000t_rx_status_not_ok;
phy->remote_rx = (data & SR_1000T_REMOTE_RX_STATUS)
- ? e1000_1000t_rx_status_ok
- : e1000_1000t_rx_status_not_ok;
+ ? e1000_1000t_rx_status_ok
+ : e1000_1000t_rx_status_not_ok;
} else {
phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;
phy->local_rx = e1000_1000t_rx_status_undefined;
@@ -2558,7 +2737,7 @@ s32 e1000_get_phy_info_ife(struct e1000_hw *hw)
if (ret_val)
goto out;
phy->polarity_correction = (data & IFE_PSC_AUTO_POLARITY_DISABLE)
- ? FALSE : TRUE;
+ ? FALSE : TRUE;
if (phy->polarity_correction) {
ret_val = e1000_check_polarity_ife(hw);
@@ -2567,8 +2746,8 @@ s32 e1000_get_phy_info_ife(struct e1000_hw *hw)
} else {
/* Polarity is forced */
phy->cable_polarity = (data & IFE_PSC_FORCE_POLARITY)
- ? e1000_rev_polarity_reversed
- : e1000_rev_polarity_normal;
+ ? e1000_rev_polarity_reversed
+ : e1000_rev_polarity_normal;
}
ret_val = phy->ops.read_reg(hw, IFE_PHY_MDIX_CONTROL, &data);
@@ -2903,7 +3082,7 @@ s32 e1000_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)
/* Page 800 works differently than the rest so it has its own func */
if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data,
- FALSE);
+ FALSE, FALSE);
goto out;
}
@@ -2927,13 +3106,13 @@ s32 e1000_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)
/* Page is shifted left, PHY expects (page x 32) */
ret_val = e1000_write_phy_reg_mdic(hw, page_select,
- (page << page_shift));
+ (page << page_shift));
if (ret_val)
goto out;
}
ret_val = e1000_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
- data);
+ data);
out:
hw->phy.ops.release(hw);
@@ -2964,7 +3143,7 @@ s32 e1000_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data)
/* Page 800 works differently than the rest so it has its own func */
if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data,
- TRUE);
+ TRUE, FALSE);
goto out;
}
@@ -2988,13 +3167,13 @@ s32 e1000_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data)
/* Page is shifted left, PHY expects (page x 32) */
ret_val = e1000_write_phy_reg_mdic(hw, page_select,
- (page << page_shift));
+ (page << page_shift));
if (ret_val)
goto out;
}
ret_val = e1000_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
- data);
+ data);
out:
hw->phy.ops.release(hw);
return ret_val;
@@ -3015,7 +3194,7 @@ s32 e1000_read_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 *data)
s32 ret_val;
u16 page = (u16)(offset >> IGP_PAGE_SHIFT);
- DEBUGFUNC("e1000_write_phy_reg_bm2");
+ DEBUGFUNC("e1000_read_phy_reg_bm2");
ret_val = hw->phy.ops.acquire(hw);
if (ret_val)
@@ -3024,7 +3203,7 @@ s32 e1000_read_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 *data)
/* Page 800 works differently than the rest so it has its own func */
if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data,
- TRUE);
+ TRUE, FALSE);
goto out;
}
@@ -3034,14 +3213,14 @@ s32 e1000_read_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 *data)
/* Page is shifted left, PHY expects (page x 32) */
ret_val = e1000_write_phy_reg_mdic(hw, BM_PHY_PAGE_SELECT,
- page);
+ page);
if (ret_val)
goto out;
}
ret_val = e1000_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
- data);
+ data);
out:
hw->phy.ops.release(hw);
return ret_val;
@@ -3070,7 +3249,7 @@ s32 e1000_write_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 data)
/* Page 800 works differently than the rest so it has its own func */
if (page == BM_WUC_PAGE) {
ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data,
- FALSE);
+ FALSE, FALSE);
goto out;
}
@@ -3079,14 +3258,14 @@ s32 e1000_write_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 data)
if (offset > MAX_PHY_MULTI_PAGE_REG) {
/* Page is shifted left, PHY expects (page x 32) */
ret_val = e1000_write_phy_reg_mdic(hw, BM_PHY_PAGE_SELECT,
- page);
+ page);
if (ret_val)
goto out;
}
ret_val = e1000_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset,
- data);
+ data);
out:
hw->phy.ops.release(hw);
@@ -3094,106 +3273,176 @@ out:
}
/**
- * e1000_access_phy_wakeup_reg_bm - Read BM PHY wakeup register
+ * e1000_enable_phy_wakeup_reg_access_bm - enable access to BM wakeup registers
* @hw: pointer to the HW structure
- * @offset: register offset to be read or written
- * @data: pointer to the data to read or write
- * @read: determines if operation is read or write
- *
- * Acquires semaphore, if necessary, then reads the PHY register at offset
- * and storing the retrieved information in data. Release any acquired
- * semaphores before exiting. Note that procedure to read the wakeup
- * registers are different. It works as such:
- * 1) Set page 769, register 17, bit 2 = 1
- * 2) Set page to 800 for host (801 if we were manageability)
- * 3) Write the address using the address opcode (0x11)
- * 4) Read or write the data using the data opcode (0x12)
- * 5) Restore 769_17.2 to its original value
+ * @phy_reg: pointer to store original contents of BM_WUC_ENABLE_REG
*
- * Assumes semaphore already acquired.
+ * Assumes semaphore already acquired and phy_reg points to a valid memory
+ * address to store contents of the BM_WUC_ENABLE_REG register.
**/
-static s32 e1000_access_phy_wakeup_reg_bm(struct e1000_hw *hw, u32 offset,
- u16 *data, bool read)
+s32 e1000_enable_phy_wakeup_reg_access_bm(struct e1000_hw *hw, u16 *phy_reg)
{
s32 ret_val;
- u16 reg = BM_PHY_REG_NUM(offset);
- u16 phy_reg = 0;
+ u16 temp;
- DEBUGFUNC("e1000_access_phy_wakeup_reg_bm");
+ DEBUGFUNC("e1000_enable_phy_wakeup_reg_access_bm");
- /* Gig must be disabled for MDIO accesses to page 800 */
- if ((hw->mac.type == e1000_pchlan) &&
- (!(E1000_READ_REG(hw, E1000_PHY_CTRL) & E1000_PHY_CTRL_GBE_DISABLE)))
- DEBUGOUT("Attempting to access page 800 while gig enabled.\n");
+ if (!phy_reg) {
+ ret_val = -E1000_ERR_PARAM;
+ goto out;
+ }
- /* All operations in this function are phy address 1 */
+ /* All page select, port ctrl and wakeup registers use phy address 1 */
hw->phy.addr = 1;
- /* Set page 769 */
- e1000_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT,
- (BM_WUC_ENABLE_PAGE << IGP_PAGE_SHIFT));
+ /* Select Port Control Registers page */
+ ret_val = e1000_set_page_igp(hw, (BM_PORT_CTRL_PAGE << IGP_PAGE_SHIFT));
+ if (ret_val) {
+ DEBUGOUT("Could not set Port Control page\n");
+ goto out;
+ }
- ret_val = e1000_read_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, &phy_reg);
+ ret_val = e1000_read_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, phy_reg);
if (ret_val) {
- DEBUGOUT("Could not read PHY page 769\n");
+ DEBUGOUT2("Could not read PHY register %d.%d\n",
+ BM_PORT_CTRL_PAGE, BM_WUC_ENABLE_REG);
goto out;
}
- /* First clear bit 4 to avoid a power state change */
- phy_reg &= ~(BM_WUC_HOST_WU_BIT);
- ret_val = e1000_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, phy_reg);
+ /*
+ * Enable both PHY wakeup mode and Wakeup register page writes.
+ * Prevent a power state change by disabling ME and Host PHY wakeup.
+ */
+ temp = *phy_reg;
+ temp |= BM_WUC_ENABLE_BIT;
+ temp &= ~(BM_WUC_ME_WU_BIT | BM_WUC_HOST_WU_BIT);
+
+ ret_val = e1000_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, temp);
if (ret_val) {
- DEBUGOUT("Could not clear PHY page 769 bit 4\n");
+ DEBUGOUT2("Could not write PHY register %d.%d\n",
+ BM_PORT_CTRL_PAGE, BM_WUC_ENABLE_REG);
goto out;
}
- /* Write bit 2 = 1, and clear bit 4 to 769_17 */
- ret_val = e1000_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG,
- phy_reg | BM_WUC_ENABLE_BIT);
+ /* Select Host Wakeup Registers page */
+ ret_val = e1000_set_page_igp(hw, (BM_WUC_PAGE << IGP_PAGE_SHIFT));
+
+ /* caller now able to write registers on the Wakeup registers page */
+out:
+ return ret_val;
+}
+
+/**
+ * e1000_disable_phy_wakeup_reg_access_bm - disable access to BM wakeup regs
+ * @hw: pointer to the HW structure
+ * @phy_reg: pointer to original contents of BM_WUC_ENABLE_REG
+ *
+ * Restore BM_WUC_ENABLE_REG to its original value.
+ *
+ * Assumes semaphore already acquired and *phy_reg is the contents of the
+ * BM_WUC_ENABLE_REG before register(s) on BM_WUC_PAGE were accessed by
+ * caller.
+ **/
+s32 e1000_disable_phy_wakeup_reg_access_bm(struct e1000_hw *hw, u16 *phy_reg)
+{
+ s32 ret_val = E1000_SUCCESS;
+
+ DEBUGFUNC("e1000_disable_phy_wakeup_reg_access_bm");
+
+ if (!phy_reg)
+ return -E1000_ERR_PARAM;
+
+ /* Select Port Control Registers page */
+ ret_val = e1000_set_page_igp(hw, (BM_PORT_CTRL_PAGE << IGP_PAGE_SHIFT));
if (ret_val) {
- DEBUGOUT("Could not write PHY page 769 bit 2\n");
+ DEBUGOUT("Could not set Port Control page\n");
goto out;
}
- /* Select page 800 */
- ret_val = e1000_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT,
- (BM_WUC_PAGE << IGP_PAGE_SHIFT));
+ /* Restore 769.17 to its original value */
+ ret_val = e1000_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, *phy_reg);
+ if (ret_val)
+ DEBUGOUT2("Could not restore PHY register %d.%d\n",
+ BM_PORT_CTRL_PAGE, BM_WUC_ENABLE_REG);
+out:
+ return ret_val;
+}
- /* Write the page 800 offset value using opcode 0x11 */
+/**
+ * e1000_access_phy_wakeup_reg_bm - Read/write BM PHY wakeup register
+ * @hw: pointer to the HW structure
+ * @offset: register offset to be read or written
+ * @data: pointer to the data to read or write
+ * @read: determines if operation is read or write
+ * @page_set: BM_WUC_PAGE already set and access enabled
+ *
+ * Read the PHY register at offset and store the retrieved information in
+ * data, or write data to PHY register at offset. Note the procedure to
+ * access the PHY wakeup registers is different than reading the other PHY
+ * registers. It works as such:
+ * 1) Set 769.17.2 (page 769, register 17, bit 2) = 1
+ * 2) Set page to 800 for host (801 if we were manageability)
+ * 3) Write the address using the address opcode (0x11)
+ * 4) Read or write the data using the data opcode (0x12)
+ * 5) Restore 769.17.2 to its original value
+ *
+ * Steps 1 and 2 are done by e1000_enable_phy_wakeup_reg_access_bm() and
+ * step 5 is done by e1000_disable_phy_wakeup_reg_access_bm().
+ *
+ * Assumes semaphore is already acquired. When page_set==TRUE, assumes
+ * the PHY page is set to BM_WUC_PAGE (i.e. a function in the call stack
+ * is responsible for calls to e1000_[enable|disable]_phy_wakeup_reg_bm()).
+ **/
+static s32 e1000_access_phy_wakeup_reg_bm(struct e1000_hw *hw, u32 offset,
+ u16 *data, bool read, bool page_set)
+{
+ s32 ret_val;
+ u16 reg = BM_PHY_REG_NUM(offset);
+ u16 phy_reg = 0;
+
+ DEBUGFUNC("e1000_access_phy_wakeup_reg_bm");
+
+ /* Gig must be disabled for MDIO accesses to Host Wakeup reg page */
+ if ((hw->mac.type == e1000_pchlan) &&
+ (!(E1000_READ_REG(hw, E1000_PHY_CTRL) & E1000_PHY_CTRL_GBE_DISABLE)))
+ DEBUGOUT1("Attempting to access page %d while gig enabled.\n",
+ page);
+
+ if (!page_set) {
+ /* Enable access to PHY wakeup registers */
+ ret_val = e1000_enable_phy_wakeup_reg_access_bm(hw, &phy_reg);
+ if (ret_val) {
+ DEBUGOUT("Could not enable PHY wakeup reg access\n");
+ goto out;
+ }
+ }
+
+ DEBUGOUT2("Accessing PHY page %d reg 0x%x\n", page, reg);
+
+ /* Write the Wakeup register page offset value using opcode 0x11 */
ret_val = e1000_write_phy_reg_mdic(hw, BM_WUC_ADDRESS_OPCODE, reg);
if (ret_val) {
- DEBUGOUT("Could not write address opcode to page 800\n");
+ DEBUGOUT1("Could not write address opcode to page %d\n", page);
goto out;
}
if (read) {
- /* Read the page 800 value using opcode 0x12 */
+ /* Read the Wakeup register page value using opcode 0x12 */
ret_val = e1000_read_phy_reg_mdic(hw, BM_WUC_DATA_OPCODE,
- data);
+ data);
} else {
- /* Write the page 800 value using opcode 0x12 */
+ /* Write the Wakeup register page value using opcode 0x12 */
ret_val = e1000_write_phy_reg_mdic(hw, BM_WUC_DATA_OPCODE,
- *data);
+ *data);
}
if (ret_val) {
- DEBUGOUT("Could not access data value from page 800\n");
+ DEBUGOUT2("Could not access PHY reg %d.%d\n", page, reg);
goto out;
}
- /*
- * Restore 769_17.2 to its original value
- * Set page 769
- */
- e1000_write_phy_reg_mdic(hw, IGP01E1000_PHY_PAGE_SELECT,
- (BM_WUC_ENABLE_PAGE << IGP_PAGE_SHIFT));
-
- /* Clear 769_17.2 */
- ret_val = e1000_write_phy_reg_mdic(hw, BM_WUC_ENABLE_REG, phy_reg);
- if (ret_val) {
- DEBUGOUT("Could not clear PHY page 769 bit 2\n");
- goto out;
- }
+ if (!page_set)
+ ret_val = e1000_disable_phy_wakeup_reg_access_bm(hw, &phy_reg);
out:
return ret_val;
@@ -3248,11 +3497,12 @@ void e1000_power_down_phy_copper(struct e1000_hw *hw)
* semaphore before exiting.
**/
static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data,
- bool locked)
+ bool locked, bool page_set)
{
s32 ret_val;
u16 page = BM_PHY_REG_PAGE(offset);
u16 reg = BM_PHY_REG_NUM(offset);
+ u32 phy_addr = hw->phy.addr = e1000_get_phy_addr_for_hv_page(page);
DEBUGFUNC("__e1000_read_phy_reg_hv");
@@ -3264,39 +3514,38 @@ static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data,
/* Page 800 works differently than the rest so it has its own func */
if (page == BM_WUC_PAGE) {
- ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset,
- data, TRUE);
+ ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, data,
+ TRUE, page_set);
goto out;
}
if (page > 0 && page < HV_INTC_FC_PAGE_START) {
ret_val = e1000_access_phy_debug_regs_hv(hw, offset,
- data, TRUE);
+ data, TRUE);
goto out;
}
- hw->phy.addr = e1000_get_phy_addr_for_hv_page(page);
+ if (!page_set) {
+ if (page == HV_INTC_FC_PAGE_START)
+ page = 0;
- if (page == HV_INTC_FC_PAGE_START)
- page = 0;
+ if (reg > MAX_PHY_MULTI_PAGE_REG) {
+ /* Page is shifted left, PHY expects (page x 32) */
+ ret_val = e1000_set_page_igp(hw,
+ (page << IGP_PAGE_SHIFT));
- if (reg > MAX_PHY_MULTI_PAGE_REG) {
- u32 phy_addr = hw->phy.addr;
+ hw->phy.addr = phy_addr;
- hw->phy.addr = 1;
-
- /* Page is shifted left, PHY expects (page x 32) */
- ret_val = e1000_write_phy_reg_mdic(hw,
- IGP01E1000_PHY_PAGE_SELECT,
- (page << IGP_PAGE_SHIFT));
- hw->phy.addr = phy_addr;
-
- if (ret_val)
- goto out;
+ if (ret_val)
+ goto out;
+ }
}
+ DEBUGOUT3("reading PHY page %d (or 0x%x shifted) reg 0x%x\n", page,
+ page << IGP_PAGE_SHIFT, reg);
+
ret_val = e1000_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg,
- data);
+ data);
out:
if (!locked)
hw->phy.ops.release(hw);
@@ -3316,7 +3565,7 @@ out:
**/
s32 e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data)
{
- return __e1000_read_phy_reg_hv(hw, offset, data, FALSE);
+ return __e1000_read_phy_reg_hv(hw, offset, data, FALSE, FALSE);
}
/**
@@ -3330,7 +3579,21 @@ s32 e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data)
**/
s32 e1000_read_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, u16 *data)
{
- return __e1000_read_phy_reg_hv(hw, offset, data, TRUE);
+ return __e1000_read_phy_reg_hv(hw, offset, data, TRUE, FALSE);
+}
+
+/**
+ * e1000_read_phy_reg_page_hv - Read HV PHY register
+ * @hw: pointer to the HW structure
+ * @offset: register offset to write to
+ * @data: data to write at register offset
+ *
+ * Reads the PHY register at offset and stores the retrieved information
+ * in data. Assumes semaphore already acquired and page already set.
+ **/
+s32 e1000_read_phy_reg_page_hv(struct e1000_hw *hw, u32 offset, u16 *data)
+{
+ return __e1000_read_phy_reg_hv(hw, offset, data, TRUE, true);
}
/**
@@ -3344,11 +3607,12 @@ s32 e1000_read_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, u16 *data)
* at the offset. Release any acquired semaphores before exiting.
**/
static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data,
- bool locked)
+ bool locked, bool page_set)
{
s32 ret_val;
u16 page = BM_PHY_REG_PAGE(offset);
u16 reg = BM_PHY_REG_NUM(offset);
+ u32 phy_addr = hw->phy.addr = e1000_get_phy_addr_for_hv_page(page);
DEBUGFUNC("__e1000_write_phy_reg_hv");
@@ -3360,55 +3624,55 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data,
/* Page 800 works differently than the rest so it has its own func */
if (page == BM_WUC_PAGE) {
- ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset,
- &data, FALSE);
+ ret_val = e1000_access_phy_wakeup_reg_bm(hw, offset, &data,
+ FALSE, page_set);
goto out;
}
if (page > 0 && page < HV_INTC_FC_PAGE_START) {
ret_val = e1000_access_phy_debug_regs_hv(hw, offset,
- &data, FALSE);
+ &data, FALSE);
goto out;
}
- hw->phy.addr = e1000_get_phy_addr_for_hv_page(page);
+ if (!page_set) {
+ if (page == HV_INTC_FC_PAGE_START)
+ page = 0;
- if (page == HV_INTC_FC_PAGE_START)
- page = 0;
-
- /*
- * Workaround MDIO accesses being disabled after entering IEEE Power
- * Down (whenever bit 11 of the PHY Control register is set)
- */
- if ((hw->phy.type == e1000_phy_82578) &&
- (hw->phy.revision >= 1) &&
- (hw->phy.addr == 2) &&
- ((MAX_PHY_REG_ADDRESS & reg) == 0) &&
- (data & (1 << 11))) {
- u16 data2 = 0x7EFF;
- ret_val = e1000_access_phy_debug_regs_hv(hw, (1 << 6) | 0x3,
- &data2, FALSE);
- if (ret_val)
- goto out;
- }
-
- if (reg > MAX_PHY_MULTI_PAGE_REG) {
- u32 phy_addr = hw->phy.addr;
+ /*
+ * Workaround MDIO accesses being disabled after entering IEEE
+ * Power Down (when bit 11 of the PHY Control register is set)
+ */
+ if ((hw->phy.type == e1000_phy_82578) &&
+ (hw->phy.revision >= 1) &&
+ (hw->phy.addr == 2) &&
+ ((MAX_PHY_REG_ADDRESS & reg) == 0) &&
+ (data & (1 << 11))) {
+ u16 data2 = 0x7EFF;
+ ret_val = e1000_access_phy_debug_regs_hv(hw,
+ (1 << 6) | 0x3,
+ &data2, FALSE);
+ if (ret_val)
+ goto out;
+ }
- hw->phy.addr = 1;
+ if (reg > MAX_PHY_MULTI_PAGE_REG) {
+ /* Page is shifted left, PHY expects (page x 32) */
+ ret_val = e1000_set_page_igp(hw,
+ (page << IGP_PAGE_SHIFT));
- /* Page is shifted left, PHY expects (page x 32) */
- ret_val = e1000_write_phy_reg_mdic(hw,
- IGP01E1000_PHY_PAGE_SELECT,
- (page << IGP_PAGE_SHIFT));
- hw->phy.addr = phy_addr;
+ hw->phy.addr = phy_addr;
- if (ret_val)
- goto out;
+ if (ret_val)
+ goto out;
+ }
}
+ DEBUGOUT3("writing PHY page %d (or 0x%x shifted) reg 0x%x\n", page,
+ page << IGP_PAGE_SHIFT, reg);
+
ret_val = e1000_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg,
- data);
+ data);
out:
if (!locked)
@@ -3428,7 +3692,7 @@ out:
**/
s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data)
{
- return __e1000_write_phy_reg_hv(hw, offset, data, FALSE);
+ return __e1000_write_phy_reg_hv(hw, offset, data, FALSE, FALSE);
}
/**
@@ -3442,7 +3706,21 @@ s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data)
**/
s32 e1000_write_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, u16 data)
{
- return __e1000_write_phy_reg_hv(hw, offset, data, TRUE);
+ return __e1000_write_phy_reg_hv(hw, offset, data, TRUE, FALSE);
+}
+
+/**
+ * e1000_write_phy_reg_page_hv - Write HV PHY register
+ * @hw: pointer to the HW structure
+ * @offset: register offset to write to
+ * @data: data to write at register offset
+ *
+ * Writes the data to PHY register at the offset. Assumes semaphore
+ * already acquired and page already set.
+ **/
+s32 e1000_write_phy_reg_page_hv(struct e1000_hw *hw, u32 offset, u16 data)
+{
+ return __e1000_write_phy_reg_hv(hw, offset, data, TRUE, true);
}
/**
@@ -3464,14 +3742,15 @@ static u32 e1000_get_phy_addr_for_hv_page(u32 page)
* @hw: pointer to the HW structure
* @offset: register offset to be read or written
* @data: pointer to the data to be read or written
- * @read: determines if operation is read or written
+ * @read: determines if operation is read or write
*
* Reads the PHY register at offset and stores the retreived information
* in data. Assumes semaphore already acquired. Note that the procedure
- * to read these regs uses the address port and data port to read/write.
+ * to access these regs uses the address port and data port to read/write.
+ * These accesses done with PHY address 2 and without using pages.
**/
static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,
- u16 *data, bool read)
+ u16 *data, bool read)
{
s32 ret_val;
u32 addr_reg = 0;
@@ -3481,7 +3760,7 @@ static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,
/* This takes care of the difference with desktop vs mobile phy */
addr_reg = (hw->phy.type == e1000_phy_82578) ?
- I82578_ADDR_REG : I82577_ADDR_REG;
+ I82578_ADDR_REG : I82577_ADDR_REG;
data_reg = addr_reg + 1;
/* All operations in this function are phy address 2 */
@@ -3490,7 +3769,7 @@ static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,
/* masking with 0x3F to remove the page from offset */
ret_val = e1000_write_phy_reg_mdic(hw, addr_reg, (u16)offset & 0x3F);
if (ret_val) {
- DEBUGOUT("Could not write PHY the HV address register\n");
+ DEBUGOUT("Could not write the Address Offset port register\n");
goto out;
}
@@ -3501,7 +3780,7 @@ static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,
ret_val = e1000_write_phy_reg_mdic(hw, data_reg, *data);
if (ret_val) {
- DEBUGOUT("Could not read data value from HV data register\n");
+ DEBUGOUT("Could not access the Data port register\n");
goto out;
}
@@ -3540,26 +3819,24 @@ s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw)
if (ret_val)
goto out;
- data &= BM_CS_STATUS_LINK_UP |
- BM_CS_STATUS_RESOLVED |
- BM_CS_STATUS_SPEED_MASK;
+ data &= BM_CS_STATUS_LINK_UP | BM_CS_STATUS_RESOLVED |
+ BM_CS_STATUS_SPEED_MASK;
- if (data != (BM_CS_STATUS_LINK_UP |
- BM_CS_STATUS_RESOLVED |
- BM_CS_STATUS_SPEED_1000))
+ if (data != (BM_CS_STATUS_LINK_UP | BM_CS_STATUS_RESOLVED |
+ BM_CS_STATUS_SPEED_1000))
goto out;
msec_delay(200);
/* flush the packets in the fifo buffer */
ret_val = hw->phy.ops.write_reg(hw, HV_MUX_DATA_CTRL,
- HV_MUX_DATA_CTRL_GEN_TO_MAC |
- HV_MUX_DATA_CTRL_FORCE_SPEED);
+ HV_MUX_DATA_CTRL_GEN_TO_MAC |
+ HV_MUX_DATA_CTRL_FORCE_SPEED);
if (ret_val)
goto out;
ret_val = hw->phy.ops.write_reg(hw, HV_MUX_DATA_CTRL,
- HV_MUX_DATA_CTRL_GEN_TO_MAC);
+ HV_MUX_DATA_CTRL_GEN_TO_MAC);
out:
return ret_val;
@@ -3585,8 +3862,8 @@ s32 e1000_check_polarity_82577(struct e1000_hw *hw)
if (!ret_val)
phy->cable_polarity = (data & I82577_PHY_STATUS2_REV_POLARITY)
- ? e1000_rev_polarity_reversed
- : e1000_rev_polarity_normal;
+ ? e1000_rev_polarity_reversed
+ : e1000_rev_polarity_normal;
return ret_val;
}
@@ -3621,10 +3898,8 @@ s32 e1000_phy_force_speed_duplex_82577(struct e1000_hw *hw)
if (phy->autoneg_wait_to_complete) {
DEBUGOUT("Waiting for forced speed/duplex link on 82577 phy\n");
- ret_val = e1000_phy_has_link_generic(hw,
- PHY_FORCE_LIMIT,
- 100000,
- &link);
+ ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
+ 100000, &link);
if (ret_val)
goto out;
@@ -3632,10 +3907,8 @@ s32 e1000_phy_force_speed_duplex_82577(struct e1000_hw *hw)
DEBUGOUT("Link taking longer than expected.\n");
/* Try once more */
- ret_val = e1000_phy_has_link_generic(hw,
- PHY_FORCE_LIMIT,
- 100000,
- &link);
+ ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
+ 100000, &link);
if (ret_val)
goto out;
}
@@ -3695,12 +3968,12 @@ s32 e1000_get_phy_info_82577(struct e1000_hw *hw)
goto out;
phy->local_rx = (data & SR_1000T_LOCAL_RX_STATUS)
- ? e1000_1000t_rx_status_ok
- : e1000_1000t_rx_status_not_ok;
+ ? e1000_1000t_rx_status_ok
+ : e1000_1000t_rx_status_not_ok;
phy->remote_rx = (data & SR_1000T_REMOTE_RX_STATUS)
- ? e1000_1000t_rx_status_ok
- : e1000_1000t_rx_status_not_ok;
+ ? e1000_1000t_rx_status_ok
+ : e1000_1000t_rx_status_not_ok;
} else {
phy->cable_length = E1000_CABLE_LENGTH_UNDEFINED;
phy->local_rx = e1000_1000t_rx_status_undefined;
@@ -3731,7 +4004,7 @@ s32 e1000_get_cable_length_82577(struct e1000_hw *hw)
goto out;
length = (phy_data & I82577_DSTATUS_CABLE_LENGTH) >>
- I82577_DSTATUS_CABLE_LENGTH_SHIFT;
+ I82577_DSTATUS_CABLE_LENGTH_SHIFT;
if (length == E1000_CABLE_LENGTH_UNDEFINED)
ret_val = -E1000_ERR_PHY;
diff --git a/sys/dev/e1000/e1000_phy.h b/sys/dev/e1000/e1000_phy.h
index 0da4a88..93d0afc 100644
--- a/sys/dev/e1000/e1000_phy.h
+++ b/sys/dev/e1000/e1000_phy.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -40,6 +40,7 @@ s32 e1000_null_read_reg(struct e1000_hw *hw, u32 offset, u16 *data);
void e1000_null_phy_generic(struct e1000_hw *hw);
s32 e1000_null_lplu_state(struct e1000_hw *hw, bool active);
s32 e1000_null_write_reg(struct e1000_hw *hw, u32 offset, u16 data);
+s32 e1000_null_set_page(struct e1000_hw *hw, u16 data);
s32 e1000_check_downshift_generic(struct e1000_hw *hw);
s32 e1000_check_polarity_m88(struct e1000_hw *hw);
s32 e1000_check_polarity_igp(struct e1000_hw *hw);
@@ -67,6 +68,7 @@ s32 e1000_phy_hw_reset_generic(struct e1000_hw *hw);
s32 e1000_phy_reset_dsp_generic(struct e1000_hw *hw);
s32 e1000_read_kmrn_reg_generic(struct e1000_hw *hw, u32 offset, u16 *data);
s32 e1000_read_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 *data);
+s32 e1000_set_page_igp(struct e1000_hw *hw, u16 page);
s32 e1000_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data);
s32 e1000_read_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 *data);
s32 e1000_read_phy_reg_m88(struct e1000_hw *hw, u32 offset, u16 *data);
@@ -80,12 +82,14 @@ s32 e1000_write_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 data);
s32 e1000_write_phy_reg_m88(struct e1000_hw *hw, u32 offset, u16 data);
s32 e1000_phy_reset_dsp(struct e1000_hw *hw);
s32 e1000_phy_has_link_generic(struct e1000_hw *hw, u32 iterations,
- u32 usec_interval, bool *success);
+ u32 usec_interval, bool *success);
s32 e1000_phy_init_script_igp3(struct e1000_hw *hw);
enum e1000_phy_type e1000_get_phy_type_from_id(u32 phy_id);
s32 e1000_determine_phy_address(struct e1000_hw *hw);
s32 e1000_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data);
s32 e1000_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data);
+s32 e1000_enable_phy_wakeup_reg_access_bm(struct e1000_hw *hw, u16 *phy_reg);
+s32 e1000_disable_phy_wakeup_reg_access_bm(struct e1000_hw *hw, u16 *phy_reg);
s32 e1000_read_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 *data);
s32 e1000_write_phy_reg_bm2(struct e1000_hw *hw, u32 offset, u16 data);
void e1000_power_up_phy_copper(struct e1000_hw *hw);
@@ -94,10 +98,14 @@ s32 e1000_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data);
s32 e1000_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data);
s32 e1000_read_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 *data);
s32 e1000_write_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 data);
+s32 e1000_read_sfp_data_byte(struct e1000_hw *hw, u16 offset, u8 *data);
+s32 e1000_write_sfp_data_byte(struct e1000_hw *hw, u16 offset, u8 data);
s32 e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data);
s32 e1000_read_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, u16 *data);
+s32 e1000_read_phy_reg_page_hv(struct e1000_hw *hw, u32 offset, u16 *data);
s32 e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data);
s32 e1000_write_phy_reg_hv_locked(struct e1000_hw *hw, u32 offset, u16 data);
+s32 e1000_write_phy_reg_page_hv(struct e1000_hw *hw, u32 offset, u16 data);
s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw);
s32 e1000_copper_link_setup_82577(struct e1000_hw *hw);
s32 e1000_check_polarity_82577(struct e1000_hw *hw);
@@ -105,34 +113,34 @@ s32 e1000_get_phy_info_82577(struct e1000_hw *hw);
s32 e1000_phy_force_speed_duplex_82577(struct e1000_hw *hw);
s32 e1000_get_cable_length_82577(struct e1000_hw *hw);
-#define E1000_MAX_PHY_ADDR 4
+#define E1000_MAX_PHY_ADDR 8
/* IGP01E1000 Specific Registers */
-#define IGP01E1000_PHY_PORT_CONFIG 0x10 /* Port Config */
-#define IGP01E1000_PHY_PORT_STATUS 0x11 /* Status */
-#define IGP01E1000_PHY_PORT_CTRL 0x12 /* Control */
-#define IGP01E1000_PHY_LINK_HEALTH 0x13 /* PHY Link Health */
-#define IGP01E1000_GMII_FIFO 0x14 /* GMII FIFO */
-#define IGP01E1000_PHY_CHANNEL_QUALITY 0x15 /* PHY Channel Quality */
-#define IGP02E1000_PHY_POWER_MGMT 0x19 /* Power Management */
-#define IGP01E1000_PHY_PAGE_SELECT 0x1F /* Page Select */
-#define BM_PHY_PAGE_SELECT 22 /* Page Select for BM */
-#define IGP_PAGE_SHIFT 5
-#define PHY_REG_MASK 0x1F
+#define IGP01E1000_PHY_PORT_CONFIG 0x10 /* Port Config */
+#define IGP01E1000_PHY_PORT_STATUS 0x11 /* Status */
+#define IGP01E1000_PHY_PORT_CTRL 0x12 /* Control */
+#define IGP01E1000_PHY_LINK_HEALTH 0x13 /* PHY Link Health */
+#define IGP01E1000_GMII_FIFO 0x14 /* GMII FIFO */
+#define IGP01E1000_PHY_CHANNEL_QUALITY 0x15 /* PHY Channel Quality */
+#define IGP02E1000_PHY_POWER_MGMT 0x19 /* Power Management */
+#define IGP01E1000_PHY_PAGE_SELECT 0x1F /* Page Select */
+#define BM_PHY_PAGE_SELECT 22 /* Page Select for BM */
+#define IGP_PAGE_SHIFT 5
+#define PHY_REG_MASK 0x1F
/* BM/HV Specific Registers */
-#define BM_PORT_CTRL_PAGE 769
-#define BM_PORT_GEN_CFG_REG PHY_REG(BM_PORT_CTRL_PAGE, 17)
-#define BM_PCIE_PAGE 770
-#define BM_WUC_PAGE 800
-#define BM_WUC_ADDRESS_OPCODE 0x11
-#define BM_WUC_DATA_OPCODE 0x12
-#define BM_WUC_ENABLE_PAGE BM_PORT_CTRL_PAGE
-#define BM_WUC_ENABLE_REG 17
-#define BM_WUC_ENABLE_BIT (1 << 2)
-#define BM_WUC_HOST_WU_BIT (1 << 4)
-
-#define PHY_UPPER_SHIFT 21
+#define BM_PORT_CTRL_PAGE 769
+#define BM_PCIE_PAGE 770
+#define BM_WUC_PAGE 800
+#define BM_WUC_ADDRESS_OPCODE 0x11
+#define BM_WUC_DATA_OPCODE 0x12
+#define BM_WUC_ENABLE_PAGE BM_PORT_CTRL_PAGE
+#define BM_WUC_ENABLE_REG 17
+#define BM_WUC_ENABLE_BIT (1 << 2)
+#define BM_WUC_HOST_WU_BIT (1 << 4)
+#define BM_WUC_ME_WU_BIT (1 << 5)
+
+#define PHY_UPPER_SHIFT 21
#define BM_PHY_REG(page, reg) \
(((reg) & MAX_PHY_REG_ADDRESS) |\
(((page) & 0xFFFF) << PHY_PAGE_SHIFT) |\
@@ -144,132 +152,156 @@ s32 e1000_get_cable_length_82577(struct e1000_hw *hw);
(((offset) >> (PHY_UPPER_SHIFT - PHY_PAGE_SHIFT)) &\
~MAX_PHY_REG_ADDRESS)))
-#define HV_INTC_FC_PAGE_START 768
-#define I82578_ADDR_REG 29
-#define I82577_ADDR_REG 16
-#define I82577_CFG_REG 22
-#define I82577_CFG_ASSERT_CRS_ON_TX (1 << 15)
-#define I82577_CFG_ENABLE_DOWNSHIFT (3 << 10) /* auto downshift 100/10 */
-#define I82577_CTRL_REG 23
+#define HV_INTC_FC_PAGE_START 768
+#define I82578_ADDR_REG 29
+#define I82577_ADDR_REG 16
+#define I82577_CFG_REG 22
+#define I82577_CFG_ASSERT_CRS_ON_TX (1 << 15)
+#define I82577_CFG_ENABLE_DOWNSHIFT (3 << 10) /* auto downshift 100/10 */
+#define I82577_CTRL_REG 23
/* 82577 specific PHY registers */
-#define I82577_PHY_CTRL_2 18
-#define I82577_PHY_LBK_CTRL 19
-#define I82577_PHY_STATUS_2 26
-#define I82577_PHY_DIAG_STATUS 31
+#define I82577_PHY_CTRL_2 18
+#define I82577_PHY_LBK_CTRL 19
+#define I82577_PHY_STATUS_2 26
+#define I82577_PHY_DIAG_STATUS 31
/* I82577 PHY Status 2 */
-#define I82577_PHY_STATUS2_REV_POLARITY 0x0400
-#define I82577_PHY_STATUS2_MDIX 0x0800
-#define I82577_PHY_STATUS2_SPEED_MASK 0x0300
-#define I82577_PHY_STATUS2_SPEED_1000MBPS 0x0200
-#define I82577_PHY_STATUS2_SPEED_100MBPS 0x0100
+#define I82577_PHY_STATUS2_REV_POLARITY 0x0400
+#define I82577_PHY_STATUS2_MDIX 0x0800
+#define I82577_PHY_STATUS2_SPEED_MASK 0x0300
+#define I82577_PHY_STATUS2_SPEED_1000MBPS 0x0200
+#define I82577_PHY_STATUS2_SPEED_100MBPS 0x0100
/* I82577 PHY Control 2 */
-#define I82577_PHY_CTRL2_AUTO_MDIX 0x0400
-#define I82577_PHY_CTRL2_FORCE_MDI_MDIX 0x0200
+#define I82577_PHY_CTRL2_AUTO_MDIX 0x0400
+#define I82577_PHY_CTRL2_FORCE_MDI_MDIX 0x0200
/* I82577 PHY Diagnostics Status */
-#define I82577_DSTATUS_CABLE_LENGTH 0x03FC
-#define I82577_DSTATUS_CABLE_LENGTH_SHIFT 2
+#define I82577_DSTATUS_CABLE_LENGTH 0x03FC
+#define I82577_DSTATUS_CABLE_LENGTH_SHIFT 2
/* 82580 PHY Power Management */
-#define E1000_82580_PHY_POWER_MGMT 0xE14
-#define E1000_82580_PM_SPD 0x0001 /* Smart Power Down */
-#define E1000_82580_PM_D0_LPLU 0x0002 /* For D0a states */
-#define E1000_82580_PM_D3_LPLU 0x0004 /* For all other states */
+#define E1000_82580_PHY_POWER_MGMT 0xE14
+#define E1000_82580_PM_SPD 0x0001 /* Smart Power Down */
+#define E1000_82580_PM_D0_LPLU 0x0002 /* For D0a states */
+#define E1000_82580_PM_D3_LPLU 0x0004 /* For all other states */
/* BM PHY Copper Specific Control 1 */
-#define BM_CS_CTRL1 16
-#define BM_CS_CTRL1_ENERGY_DETECT 0x0300 /* Enable Energy Detect */
+#define BM_CS_CTRL1 16
+#define BM_CS_CTRL1_ENERGY_DETECT 0x0300 /* Enable Energy Detect */
/* BM PHY Copper Specific Status */
-#define BM_CS_STATUS 17
-#define BM_CS_STATUS_ENERGY_DETECT 0x0010 /* Energy Detect Status */
-#define BM_CS_STATUS_LINK_UP 0x0400
-#define BM_CS_STATUS_RESOLVED 0x0800
-#define BM_CS_STATUS_SPEED_MASK 0xC000
-#define BM_CS_STATUS_SPEED_1000 0x8000
+#define BM_CS_STATUS 17
+#define BM_CS_STATUS_ENERGY_DETECT 0x0010 /* Energy Detect Status */
+#define BM_CS_STATUS_LINK_UP 0x0400
+#define BM_CS_STATUS_RESOLVED 0x0800
+#define BM_CS_STATUS_SPEED_MASK 0xC000
+#define BM_CS_STATUS_SPEED_1000 0x8000
/* 82577 Mobile Phy Status Register */
-#define HV_M_STATUS 26
-#define HV_M_STATUS_AUTONEG_COMPLETE 0x1000
-#define HV_M_STATUS_SPEED_MASK 0x0300
-#define HV_M_STATUS_SPEED_1000 0x0200
-#define HV_M_STATUS_LINK_UP 0x0040
+#define HV_M_STATUS 26
+#define HV_M_STATUS_AUTONEG_COMPLETE 0x1000
+#define HV_M_STATUS_SPEED_MASK 0x0300
+#define HV_M_STATUS_SPEED_1000 0x0200
+#define HV_M_STATUS_LINK_UP 0x0040
-#define IGP01E1000_PHY_PCS_INIT_REG 0x00B4
-#define IGP01E1000_PHY_POLARITY_MASK 0x0078
+#define IGP01E1000_PHY_PCS_INIT_REG 0x00B4
+#define IGP01E1000_PHY_POLARITY_MASK 0x0078
-#define IGP01E1000_PSCR_AUTO_MDIX 0x1000
-#define IGP01E1000_PSCR_FORCE_MDI_MDIX 0x2000 /* 0=MDI, 1=MDIX */
+#define IGP01E1000_PSCR_AUTO_MDIX 0x1000
+#define IGP01E1000_PSCR_FORCE_MDI_MDIX 0x2000 /* 0=MDI, 1=MDIX */
-#define IGP01E1000_PSCFR_SMART_SPEED 0x0080
+#define IGP01E1000_PSCFR_SMART_SPEED 0x0080
/* Enable flexible speed on link-up */
-#define IGP01E1000_GMII_FLEX_SPD 0x0010
-#define IGP01E1000_GMII_SPD 0x0020 /* Enable SPD */
-
-#define IGP02E1000_PM_SPD 0x0001 /* Smart Power Down */
-#define IGP02E1000_PM_D0_LPLU 0x0002 /* For D0a states */
-#define IGP02E1000_PM_D3_LPLU 0x0004 /* For all other states */
-
-#define IGP01E1000_PLHR_SS_DOWNGRADE 0x8000
-
-#define IGP01E1000_PSSR_POLARITY_REVERSED 0x0002
-#define IGP01E1000_PSSR_MDIX 0x0800
-#define IGP01E1000_PSSR_SPEED_MASK 0xC000
-#define IGP01E1000_PSSR_SPEED_1000MBPS 0xC000
-
-#define IGP02E1000_PHY_CHANNEL_NUM 4
-#define IGP02E1000_PHY_AGC_A 0x11B1
-#define IGP02E1000_PHY_AGC_B 0x12B1
-#define IGP02E1000_PHY_AGC_C 0x14B1
-#define IGP02E1000_PHY_AGC_D 0x18B1
-
-#define IGP02E1000_AGC_LENGTH_SHIFT 9 /* Course - 15:13, Fine - 12:9 */
-#define IGP02E1000_AGC_LENGTH_MASK 0x7F
-#define IGP02E1000_AGC_RANGE 15
-
-#define IGP03E1000_PHY_MISC_CTRL 0x1B
-#define IGP03E1000_PHY_MISC_DUPLEX_MANUAL_SET 0x1000 /* Manually Set Duplex */
-
-#define E1000_CABLE_LENGTH_UNDEFINED 0xFF
-
-#define E1000_KMRNCTRLSTA_OFFSET 0x001F0000
-#define E1000_KMRNCTRLSTA_OFFSET_SHIFT 16
-#define E1000_KMRNCTRLSTA_REN 0x00200000
-#define E1000_KMRNCTRLSTA_CTRL_OFFSET 0x1 /* Kumeran Control */
-#define E1000_KMRNCTRLSTA_DIAG_OFFSET 0x3 /* Kumeran Diagnostic */
-#define E1000_KMRNCTRLSTA_TIMEOUTS 0x4 /* Kumeran Timeouts */
-#define E1000_KMRNCTRLSTA_INBAND_PARAM 0x9 /* Kumeran InBand Parameters */
-#define E1000_KMRNCTRLSTA_IBIST_DISABLE 0x0200 /* Kumeran IBIST Disable */
-#define E1000_KMRNCTRLSTA_DIAG_NELPBK 0x1000 /* Nearend Loopback mode */
-#define E1000_KMRNCTRLSTA_K1_CONFIG 0x7
-#define E1000_KMRNCTRLSTA_K1_ENABLE 0x0002
-#define E1000_KMRNCTRLSTA_HD_CTRL 0x10 /* Kumeran HD Control */
-
-#define IFE_PHY_EXTENDED_STATUS_CONTROL 0x10
-#define IFE_PHY_SPECIAL_CONTROL 0x11 /* 100BaseTx PHY Special Control */
-#define IFE_PHY_SPECIAL_CONTROL_LED 0x1B /* PHY Special and LED Control */
-#define IFE_PHY_MDIX_CONTROL 0x1C /* MDI/MDI-X Control */
+#define IGP01E1000_GMII_FLEX_SPD 0x0010
+#define IGP01E1000_GMII_SPD 0x0020 /* Enable SPD */
+
+#define IGP02E1000_PM_SPD 0x0001 /* Smart Power Down */
+#define IGP02E1000_PM_D0_LPLU 0x0002 /* For D0a states */
+#define IGP02E1000_PM_D3_LPLU 0x0004 /* For all other states */
+
+#define IGP01E1000_PLHR_SS_DOWNGRADE 0x8000
+
+#define IGP01E1000_PSSR_POLARITY_REVERSED 0x0002
+#define IGP01E1000_PSSR_MDIX 0x0800
+#define IGP01E1000_PSSR_SPEED_MASK 0xC000
+#define IGP01E1000_PSSR_SPEED_1000MBPS 0xC000
+
+#define IGP02E1000_PHY_CHANNEL_NUM 4
+#define IGP02E1000_PHY_AGC_A 0x11B1
+#define IGP02E1000_PHY_AGC_B 0x12B1
+#define IGP02E1000_PHY_AGC_C 0x14B1
+#define IGP02E1000_PHY_AGC_D 0x18B1
+
+#define IGP02E1000_AGC_LENGTH_SHIFT 9 /* Course - 15:13, Fine - 12:9 */
+#define IGP02E1000_AGC_LENGTH_MASK 0x7F
+#define IGP02E1000_AGC_RANGE 15
+
+#define IGP03E1000_PHY_MISC_CTRL 0x1B
+#define IGP03E1000_PHY_MISC_DUPLEX_MANUAL_SET 0x1000 /* Manually Set Duplex */
+
+#define E1000_CABLE_LENGTH_UNDEFINED 0xFF
+
+#define E1000_KMRNCTRLSTA_OFFSET 0x001F0000
+#define E1000_KMRNCTRLSTA_OFFSET_SHIFT 16
+#define E1000_KMRNCTRLSTA_REN 0x00200000
+#define E1000_KMRNCTRLSTA_CTRL_OFFSET 0x1 /* Kumeran Control */
+#define E1000_KMRNCTRLSTA_DIAG_OFFSET 0x3 /* Kumeran Diagnostic */
+#define E1000_KMRNCTRLSTA_TIMEOUTS 0x4 /* Kumeran Timeouts */
+#define E1000_KMRNCTRLSTA_INBAND_PARAM 0x9 /* Kumeran InBand Parameters */
+#define E1000_KMRNCTRLSTA_IBIST_DISABLE 0x0200 /* Kumeran IBIST Disable */
+#define E1000_KMRNCTRLSTA_DIAG_NELPBK 0x1000 /* Nearend Loopback mode */
+#define E1000_KMRNCTRLSTA_K1_CONFIG 0x7
+#define E1000_KMRNCTRLSTA_K1_ENABLE 0x0002
+#define E1000_KMRNCTRLSTA_HD_CTRL 0x10 /* Kumeran HD Control */
+
+#define IFE_PHY_EXTENDED_STATUS_CONTROL 0x10
+#define IFE_PHY_SPECIAL_CONTROL 0x11 /* 100BaseTx PHY Special Control */
+#define IFE_PHY_SPECIAL_CONTROL_LED 0x1B /* PHY Special and LED Control */
+#define IFE_PHY_MDIX_CONTROL 0x1C /* MDI/MDI-X Control */
/* IFE PHY Extended Status Control */
-#define IFE_PESC_POLARITY_REVERSED 0x0100
+#define IFE_PESC_POLARITY_REVERSED 0x0100
/* IFE PHY Special Control */
-#define IFE_PSC_AUTO_POLARITY_DISABLE 0x0010
-#define IFE_PSC_FORCE_POLARITY 0x0020
-#define IFE_PSC_DISABLE_DYNAMIC_POWER_DOWN 0x0100
+#define IFE_PSC_AUTO_POLARITY_DISABLE 0x0010
+#define IFE_PSC_FORCE_POLARITY 0x0020
+#define IFE_PSC_DISABLE_DYNAMIC_POWER_DOWN 0x0100
/* IFE PHY Special Control and LED Control */
-#define IFE_PSCL_PROBE_MODE 0x0020
-#define IFE_PSCL_PROBE_LEDS_OFF 0x0006 /* Force LEDs 0 and 2 off */
-#define IFE_PSCL_PROBE_LEDS_ON 0x0007 /* Force LEDs 0 and 2 on */
+#define IFE_PSCL_PROBE_MODE 0x0020
+#define IFE_PSCL_PROBE_LEDS_OFF 0x0006 /* Force LEDs 0 and 2 off */
+#define IFE_PSCL_PROBE_LEDS_ON 0x0007 /* Force LEDs 0 and 2 on */
/* IFE PHY MDIX Control */
-#define IFE_PMC_MDIX_STATUS 0x0020 /* 1=MDI-X, 0=MDI */
-#define IFE_PMC_FORCE_MDIX 0x0040 /* 1=force MDI-X, 0=force MDI */
-#define IFE_PMC_AUTO_MDIX 0x0080 /* 1=enable auto MDI/MDI-X, 0=disable */
+#define IFE_PMC_MDIX_STATUS 0x0020 /* 1=MDI-X, 0=MDI */
+#define IFE_PMC_FORCE_MDIX 0x0040 /* 1=force MDI-X, 0=force MDI */
+#define IFE_PMC_AUTO_MDIX 0x0080 /* 1=enable auto, 0=disable */
+
+/* SFP modules ID memory locations */
+#define E1000_SFF_IDENTIFIER_OFFSET 0x00
+#define E1000_SFF_IDENTIFIER_SFF 0x02
+#define E1000_SFF_IDENTIFIER_SFP 0x03
+
+#define E1000_SFF_ETH_FLAGS_OFFSET 0x06
+/* Flags for SFP modules compatible with ETH up to 1Gb */
+struct sfp_e1000_flags {
+ u8 e1000_base_sx:1;
+ u8 e1000_base_lx:1;
+ u8 e1000_base_cx:1;
+ u8 e1000_base_t:1;
+ u8 e100_base_lx:1;
+ u8 e100_base_fx:1;
+ u8 e10_base_bx10:1;
+ u8 e10_base_px:1;
+};
+
+/* Vendor OUIs: format of OUI is 0x[byte0][byte1][byte2][00] */
+#define E1000_SFF_VENDOR_OUI_TYCO 0x00407600
+#define E1000_SFF_VENDOR_OUI_FTL 0x00906500
+#define E1000_SFF_VENDOR_OUI_AVAGO 0x00176A00
+#define E1000_SFF_VENDOR_OUI_INTEL 0x001B2100
#endif
diff --git a/sys/dev/e1000/e1000_regs.h b/sys/dev/e1000/e1000_regs.h
index f3f265d..2cc89d5 100644
--- a/sys/dev/e1000/e1000_regs.h
+++ b/sys/dev/e1000/e1000_regs.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -35,104 +35,114 @@
#ifndef _E1000_REGS_H_
#define _E1000_REGS_H_
-#define E1000_CTRL 0x00000 /* Device Control - RW */
-#define E1000_CTRL_DUP 0x00004 /* Device Control Duplicate (Shadow) - RW */
-#define E1000_STATUS 0x00008 /* Device Status - RO */
-#define E1000_EECD 0x00010 /* EEPROM/Flash Control - RW */
-#define E1000_EERD 0x00014 /* EEPROM Read - RW */
-#define E1000_CTRL_EXT 0x00018 /* Extended Device Control - RW */
-#define E1000_FLA 0x0001C /* Flash Access - RW */
-#define E1000_MDIC 0x00020 /* MDI Control - RW */
-#define E1000_MDICNFG 0x00E04 /* MDI Config - RW */
-#define E1000_REGISTER_SET_SIZE 0x20000 /* CSR Size */
-#define E1000_EEPROM_INIT_CTRL_WORD_2 0x0F /* EEPROM Init Ctrl Word 2 */
-#define E1000_BARCTRL 0x5BBC /* BAR ctrl reg */
-#define E1000_BARCTRL_FLSIZE 0x0700 /* BAR ctrl Flsize */
-#define E1000_BARCTRL_CSRSIZE 0x2000 /* BAR ctrl CSR size */
-#define E1000_SCTL 0x00024 /* SerDes Control - RW */
-#define E1000_FCAL 0x00028 /* Flow Control Address Low - RW */
-#define E1000_FCAH 0x0002C /* Flow Control Address High -RW */
-#define E1000_FEXT 0x0002C /* Future Extended - RW */
-#define E1000_FEXTNVM4 0x00024 /* Future Extended NVM 4 - RW */
-#define E1000_FEXTNVM 0x00028 /* Future Extended NVM - RW */
-#define E1000_FCT 0x00030 /* Flow Control Type - RW */
-#define E1000_CONNSW 0x00034 /* Copper/Fiber switch control - RW */
-#define E1000_VET 0x00038 /* VLAN Ether Type - RW */
-#define E1000_ICR 0x000C0 /* Interrupt Cause Read - R/clr */
-#define E1000_ITR 0x000C4 /* Interrupt Throttling Rate - RW */
-#define E1000_ICS 0x000C8 /* Interrupt Cause Set - WO */
-#define E1000_IMS 0x000D0 /* Interrupt Mask Set - RW */
-#define E1000_IMC 0x000D8 /* Interrupt Mask Clear - WO */
-#define E1000_IAM 0x000E0 /* Interrupt Acknowledge Auto Mask */
-#define E1000_IVAR 0x000E4 /* Interrupt Vector Allocation Register - RW */
-#define E1000_SVCR 0x000F0
-#define E1000_SVT 0x000F4
-#define E1000_RCTL 0x00100 /* Rx Control - RW */
-#define E1000_FCTTV 0x00170 /* Flow Control Transmit Timer Value - RW */
-#define E1000_TXCW 0x00178 /* Tx Configuration Word - RW */
-#define E1000_RXCW 0x00180 /* Rx Configuration Word - RO */
-#define E1000_PBA_ECC 0x01100 /* PBA ECC Register */
-#define E1000_EICR 0x01580 /* Ext. Interrupt Cause Read - R/clr */
-#define E1000_EITR(_n) (0x01680 + (0x4 * (_n)))
-#define E1000_EICS 0x01520 /* Ext. Interrupt Cause Set - W0 */
-#define E1000_EIMS 0x01524 /* Ext. Interrupt Mask Set/Read - RW */
-#define E1000_EIMC 0x01528 /* Ext. Interrupt Mask Clear - WO */
-#define E1000_EIAC 0x0152C /* Ext. Interrupt Auto Clear - RW */
-#define E1000_EIAM 0x01530 /* Ext. Interrupt Ack Auto Clear Mask - RW */
-#define E1000_GPIE 0x01514 /* General Purpose Interrupt Enable - RW */
-#define E1000_IVAR0 0x01700 /* Interrupt Vector Allocation (array) - RW */
-#define E1000_IVAR_MISC 0x01740 /* IVAR for "other" causes - RW */
-#define E1000_TCTL 0x00400 /* Tx Control - RW */
-#define E1000_TCTL_EXT 0x00404 /* Extended Tx Control - RW */
-#define E1000_TIPG 0x00410 /* Tx Inter-packet gap -RW */
-#define E1000_TBT 0x00448 /* Tx Burst Timer - RW */
-#define E1000_AIT 0x00458 /* Adaptive Interframe Spacing Throttle - RW */
-#define E1000_LEDCTL 0x00E00 /* LED Control - RW */
-#define E1000_EXTCNF_CTRL 0x00F00 /* Extended Configuration Control */
-#define E1000_EXTCNF_SIZE 0x00F08 /* Extended Configuration Size */
-#define E1000_PHY_CTRL 0x00F10 /* PHY Control Register in CSR */
-#define E1000_POEMB E1000_PHY_CTRL /* PHY OEM Bits */
-#define E1000_PBA 0x01000 /* Packet Buffer Allocation - RW */
-#define E1000_PBS 0x01008 /* Packet Buffer Size */
-#define E1000_EEMNGCTL 0x01010 /* MNG EEprom Control */
-#define E1000_EEARBC 0x01024 /* EEPROM Auto Read Bus Control */
-#define E1000_FLASHT 0x01028 /* FLASH Timer Register */
-#define E1000_EEWR 0x0102C /* EEPROM Write Register - RW */
-#define E1000_FLSWCTL 0x01030 /* FLASH control register */
-#define E1000_FLSWDATA 0x01034 /* FLASH data register */
-#define E1000_FLSWCNT 0x01038 /* FLASH Access Counter */
-#define E1000_FLOP 0x0103C /* FLASH Opcode Register */
-#define E1000_I2CCMD 0x01028 /* SFPI2C Command Register - RW */
-#define E1000_I2CPARAMS 0x0102C /* SFPI2C Parameters Register - RW */
-#define E1000_WDSTP 0x01040 /* Watchdog Setup - RW */
-#define E1000_SWDSTS 0x01044 /* SW Device Status - RW */
-#define E1000_FRTIMER 0x01048 /* Free Running Timer - RW */
-#define E1000_TCPTIMER 0x0104C /* TCP Timer - RW */
-#define E1000_VPDDIAG 0x01060 /* VPD Diagnostic - RO */
-#define E1000_ICR_V2 0x01500 /* Interrupt Cause - new location - RC */
-#define E1000_ICS_V2 0x01504 /* Interrupt Cause Set - new location - WO */
-#define E1000_IMS_V2 0x01508 /* Interrupt Mask Set/Read - new location - RW */
-#define E1000_IMC_V2 0x0150C /* Interrupt Mask Clear - new location - WO */
-#define E1000_IAM_V2 0x01510 /* Interrupt Ack Auto Mask - new location - RW */
-#define E1000_ERT 0x02008 /* Early Rx Threshold - RW */
-#define E1000_FCRTL 0x02160 /* Flow Control Receive Threshold Low - RW */
-#define E1000_FCRTH 0x02168 /* Flow Control Receive Threshold High - RW */
-#define E1000_PSRCTL 0x02170 /* Packet Split Receive Control - RW */
-#define E1000_RDFPCQ(_n) (0x02430 + (0x4 * (_n)))
-#define E1000_PBRTH 0x02458 /* PB Rx Arbitration Threshold - RW */
-#define E1000_FCRTV 0x02460 /* Flow Control Refresh Timer Value - RW */
+#define E1000_CTRL 0x00000 /* Device Control - RW */
+#define E1000_CTRL_DUP 0x00004 /* Device Control Duplicate (Shadow) - RW */
+#define E1000_STATUS 0x00008 /* Device Status - RO */
+#define E1000_EECD 0x00010 /* EEPROM/Flash Control - RW */
+#define E1000_EERD 0x00014 /* EEPROM Read - RW */
+#define E1000_CTRL_EXT 0x00018 /* Extended Device Control - RW */
+#define E1000_FLA 0x0001C /* Flash Access - RW */
+#define E1000_MDIC 0x00020 /* MDI Control - RW */
+#define E1000_MDICNFG 0x00E04 /* MDI Config - RW */
+#define E1000_REGISTER_SET_SIZE 0x20000 /* CSR Size */
+#define E1000_EEPROM_INIT_CTRL_WORD_2 0x0F /* EEPROM Init Ctrl Word 2 */
+#define E1000_EEPROM_PCIE_CTRL_WORD_2 0x28 /* EEPROM PCIe Ctrl Word 2 */
+#define E1000_BARCTRL 0x5BBC /* BAR ctrl reg */
+#define E1000_BARCTRL_FLSIZE 0x0700 /* BAR ctrl Flsize */
+#define E1000_BARCTRL_CSRSIZE 0x2000 /* BAR ctrl CSR size */
+#define E1000_I350_BARCTRL 0x5BFC /* BAR ctrl reg */
+#define E1000_SCTL 0x00024 /* SerDes Control - RW */
+#define E1000_FCAL 0x00028 /* Flow Control Address Low - RW */
+#define E1000_FCAH 0x0002C /* Flow Control Address High -RW */
+#define E1000_FEXT 0x0002C /* Future Extended - RW */
+#define E1000_FEXTNVM4 0x00024 /* Future Extended NVM 4 - RW */
+#define E1000_FEXTNVM 0x00028 /* Future Extended NVM - RW */
+#define E1000_FCT 0x00030 /* Flow Control Type - RW */
+#define E1000_CONNSW 0x00034 /* Copper/Fiber switch control - RW */
+#define E1000_VET 0x00038 /* VLAN Ether Type - RW */
+#define E1000_ICR 0x000C0 /* Interrupt Cause Read - R/clr */
+#define E1000_ITR 0x000C4 /* Interrupt Throttling Rate - RW */
+#define E1000_ICS 0x000C8 /* Interrupt Cause Set - WO */
+#define E1000_IMS 0x000D0 /* Interrupt Mask Set - RW */
+#define E1000_IMC 0x000D8 /* Interrupt Mask Clear - WO */
+#define E1000_IAM 0x000E0 /* Interrupt Acknowledge Auto Mask */
+#define E1000_IVAR 0x000E4 /* Interrupt Vector Allocation Register - RW */
+#define E1000_SVCR 0x000F0
+#define E1000_SVT 0x000F4
+#define E1000_RCTL 0x00100 /* Rx Control - RW */
+#define E1000_FCTTV 0x00170 /* Flow Control Transmit Timer Value - RW */
+#define E1000_TXCW 0x00178 /* Tx Configuration Word - RW */
+#define E1000_RXCW 0x00180 /* Rx Configuration Word - RO */
+#define E1000_PBA_ECC 0x01100 /* PBA ECC Register */
+#define E1000_EICR 0x01580 /* Ext. Interrupt Cause Read - R/clr */
+#define E1000_EITR(_n) (0x01680 + (0x4 * (_n)))
+#define E1000_EICS 0x01520 /* Ext. Interrupt Cause Set - W0 */
+#define E1000_EIMS 0x01524 /* Ext. Interrupt Mask Set/Read - RW */
+#define E1000_EIMC 0x01528 /* Ext. Interrupt Mask Clear - WO */
+#define E1000_EIAC 0x0152C /* Ext. Interrupt Auto Clear - RW */
+#define E1000_EIAM 0x01530 /* Ext. Interrupt Ack Auto Clear Mask - RW */
+#define E1000_GPIE 0x01514 /* General Purpose Interrupt Enable - RW */
+#define E1000_IVAR0 0x01700 /* Interrupt Vector Allocation (array) - RW */
+#define E1000_IVAR_MISC 0x01740 /* IVAR for "other" causes - RW */
+#define E1000_TCTL 0x00400 /* Tx Control - RW */
+#define E1000_TCTL_EXT 0x00404 /* Extended Tx Control - RW */
+#define E1000_TIPG 0x00410 /* Tx Inter-packet gap -RW */
+#define E1000_TBT 0x00448 /* Tx Burst Timer - RW */
+#define E1000_AIT 0x00458 /* Adaptive Interframe Spacing Throttle - RW */
+#define E1000_LEDCTL 0x00E00 /* LED Control - RW */
+#define E1000_EXTCNF_CTRL 0x00F00 /* Extended Configuration Control */
+#define E1000_EXTCNF_SIZE 0x00F08 /* Extended Configuration Size */
+#define E1000_PHY_CTRL 0x00F10 /* PHY Control Register in CSR */
+#define E1000_POEMB E1000_PHY_CTRL /* PHY OEM Bits */
+#define E1000_PBA 0x01000 /* Packet Buffer Allocation - RW */
+#define E1000_PBS 0x01008 /* Packet Buffer Size */
+#define E1000_EEMNGCTL 0x01010 /* MNG EEprom Control */
+#define E1000_EEARBC 0x01024 /* EEPROM Auto Read Bus Control */
+#define E1000_FLASHT 0x01028 /* FLASH Timer Register */
+#define E1000_EEWR 0x0102C /* EEPROM Write Register - RW */
+#define E1000_FLSWCTL 0x01030 /* FLASH control register */
+#define E1000_FLSWDATA 0x01034 /* FLASH data register */
+#define E1000_FLSWCNT 0x01038 /* FLASH Access Counter */
+#define E1000_FLOP 0x0103C /* FLASH Opcode Register */
+#define E1000_I2CCMD 0x01028 /* SFPI2C Command Register - RW */
+#define E1000_I2CPARAMS 0x0102C /* SFPI2C Parameters Register - RW */
+#define E1000_I2CBB_EN 0x00000100 /* I2C - Bit Bang Enable */
+#define E1000_I2C_CLK_OUT 0x00000200 /* I2C- Clock */
+#define E1000_I2C_DATA_OUT 0x00000400 /* I2C- Data Out */
+#define E1000_I2C_DATA_OE_N 0x00000800 /* I2C- Data Output Enable */
+#define E1000_I2C_DATA_IN 0x00001000 /* I2C- Data In */
+#define E1000_I2C_CLK_OE_N 0x00002000 /* I2C- Clock Output Enable */
+#define E1000_I2C_CLK_IN 0x00004000 /* I2C- Clock In */
+#define E1000_I2C_CLK_STRETCH_DIS 0x00008000 /* I2C- Dis Clk Stretching */
+#define E1000_WDSTP 0x01040 /* Watchdog Setup - RW */
+#define E1000_SWDSTS 0x01044 /* SW Device Status - RW */
+#define E1000_FRTIMER 0x01048 /* Free Running Timer - RW */
+#define E1000_TCPTIMER 0x0104C /* TCP Timer - RW */
+#define E1000_VPDDIAG 0x01060 /* VPD Diagnostic - RO */
+#define E1000_ICR_V2 0x01500 /* Intr Cause - new location - RC */
+#define E1000_ICS_V2 0x01504 /* Intr Cause Set - new location - WO */
+#define E1000_IMS_V2 0x01508 /* Intr Mask Set/Read - new location - RW */
+#define E1000_IMC_V2 0x0150C /* Intr Mask Clear - new location - WO */
+#define E1000_IAM_V2 0x01510 /* Intr Ack Auto Mask - new location - RW */
+#define E1000_ERT 0x02008 /* Early Rx Threshold - RW */
+#define E1000_FCRTL 0x02160 /* Flow Control Receive Threshold Low - RW */
+#define E1000_FCRTH 0x02168 /* Flow Control Receive Threshold High - RW */
+#define E1000_PSRCTL 0x02170 /* Packet Split Receive Control - RW */
+#define E1000_RDFPCQ(_n) (0x02430 + (0x4 * (_n)))
+#define E1000_PBRTH 0x02458 /* PB Rx Arbitration Threshold - RW */
+#define E1000_FCRTV 0x02460 /* Flow Control Refresh Timer Value - RW */
/* Split and Replication Rx Control - RW */
-#define E1000_RDPUMB 0x025CC /* DMA Rx Descriptor uC Mailbox - RW */
-#define E1000_RDPUAD 0x025D0 /* DMA Rx Descriptor uC Addr Command - RW */
-#define E1000_RDPUWD 0x025D4 /* DMA Rx Descriptor uC Data Write - RW */
-#define E1000_RDPURD 0x025D8 /* DMA Rx Descriptor uC Data Read - RW */
-#define E1000_RDPUCTL 0x025DC /* DMA Rx Descriptor uC Control - RW */
-#define E1000_PBDIAG 0x02458 /* Packet Buffer Diagnostic - RW */
-#define E1000_RXPBS 0x02404 /* Rx Packet Buffer Size - RW */
-#define E1000_IRPBS 0x02404 /* Same as RXPBS, renamed for newer adapters - RW */
-#define E1000_PBRWAC 0x024E8 /* Rx packet buffer wrap around counter - RO */
-#define E1000_RDTR 0x02820 /* Rx Delay Timer - RW */
-#define E1000_RADV 0x0282C /* Rx Interrupt Absolute Delay Timer - RW */
+#define E1000_RDPUMB 0x025CC /* DMA Rx Descriptor uC Mailbox - RW */
+#define E1000_RDPUAD 0x025D0 /* DMA Rx Descriptor uC Addr Command - RW */
+#define E1000_RDPUWD 0x025D4 /* DMA Rx Descriptor uC Data Write - RW */
+#define E1000_RDPURD 0x025D8 /* DMA Rx Descriptor uC Data Read - RW */
+#define E1000_RDPUCTL 0x025DC /* DMA Rx Descriptor uC Control - RW */
+#define E1000_PBDIAG 0x02458 /* Packet Buffer Diagnostic - RW */
+#define E1000_RXPBS 0x02404 /* Rx Packet Buffer Size - RW */
+#define E1000_IRPBS 0x02404 /* Same as RXPBS, renamed for newer Si - RW */
+#define E1000_PBRWAC 0x024E8 /* Rx packet buffer wrap around counter - RO */
+#define E1000_RDTR 0x02820 /* Rx Delay Timer - RW */
+#define E1000_RADV 0x0282C /* Rx Interrupt Absolute Delay Timer - RW */
/*
* Convenience macros
*
@@ -141,442 +151,470 @@
* Example usage:
* E1000_RDBAL_REG(current_rx_queue)
*/
-#define E1000_RDBAL(_n) ((_n) < 4 ? (0x02800 + ((_n) * 0x100)) : \
- (0x0C000 + ((_n) * 0x40)))
-#define E1000_RDBAH(_n) ((_n) < 4 ? (0x02804 + ((_n) * 0x100)) : \
- (0x0C004 + ((_n) * 0x40)))
-#define E1000_RDLEN(_n) ((_n) < 4 ? (0x02808 + ((_n) * 0x100)) : \
- (0x0C008 + ((_n) * 0x40)))
-#define E1000_SRRCTL(_n) ((_n) < 4 ? (0x0280C + ((_n) * 0x100)) : \
- (0x0C00C + ((_n) * 0x40)))
-#define E1000_RDH(_n) ((_n) < 4 ? (0x02810 + ((_n) * 0x100)) : \
- (0x0C010 + ((_n) * 0x40)))
-#define E1000_RXCTL(_n) ((_n) < 4 ? (0x02814 + ((_n) * 0x100)) : \
- (0x0C014 + ((_n) * 0x40)))
-#define E1000_DCA_RXCTRL(_n) E1000_RXCTL(_n)
-#define E1000_RDT(_n) ((_n) < 4 ? (0x02818 + ((_n) * 0x100)) : \
- (0x0C018 + ((_n) * 0x40)))
-#define E1000_RXDCTL(_n) ((_n) < 4 ? (0x02828 + ((_n) * 0x100)) : \
- (0x0C028 + ((_n) * 0x40)))
-#define E1000_RQDPC(_n) ((_n) < 4 ? (0x02830 + ((_n) * 0x100)) : \
- (0x0C030 + ((_n) * 0x40)))
-#define E1000_TDBAL(_n) ((_n) < 4 ? (0x03800 + ((_n) * 0x100)) : \
- (0x0E000 + ((_n) * 0x40)))
-#define E1000_TDBAH(_n) ((_n) < 4 ? (0x03804 + ((_n) * 0x100)) : \
- (0x0E004 + ((_n) * 0x40)))
-#define E1000_TDLEN(_n) ((_n) < 4 ? (0x03808 + ((_n) * 0x100)) : \
- (0x0E008 + ((_n) * 0x40)))
-#define E1000_TDH(_n) ((_n) < 4 ? (0x03810 + ((_n) * 0x100)) : \
- (0x0E010 + ((_n) * 0x40)))
-#define E1000_TXCTL(_n) ((_n) < 4 ? (0x03814 + ((_n) * 0x100)) : \
- (0x0E014 + ((_n) * 0x40)))
+#define E1000_RDBAL(_n) ((_n) < 4 ? (0x02800 + ((_n) * 0x100)) : \
+ (0x0C000 + ((_n) * 0x40)))
+#define E1000_RDBAH(_n) ((_n) < 4 ? (0x02804 + ((_n) * 0x100)) : \
+ (0x0C004 + ((_n) * 0x40)))
+#define E1000_RDLEN(_n) ((_n) < 4 ? (0x02808 + ((_n) * 0x100)) : \
+ (0x0C008 + ((_n) * 0x40)))
+#define E1000_SRRCTL(_n) ((_n) < 4 ? (0x0280C + ((_n) * 0x100)) : \
+ (0x0C00C + ((_n) * 0x40)))
+#define E1000_RDH(_n) ((_n) < 4 ? (0x02810 + ((_n) * 0x100)) : \
+ (0x0C010 + ((_n) * 0x40)))
+#define E1000_RXCTL(_n) ((_n) < 4 ? (0x02814 + ((_n) * 0x100)) : \
+ (0x0C014 + ((_n) * 0x40)))
+#define E1000_DCA_RXCTRL(_n) E1000_RXCTL(_n)
+#define E1000_RDT(_n) ((_n) < 4 ? (0x02818 + ((_n) * 0x100)) : \
+ (0x0C018 + ((_n) * 0x40)))
+#define E1000_RXDCTL(_n) ((_n) < 4 ? (0x02828 + ((_n) * 0x100)) : \
+ (0x0C028 + ((_n) * 0x40)))
+#define E1000_RQDPC(_n) ((_n) < 4 ? (0x02830 + ((_n) * 0x100)) : \
+ (0x0C030 + ((_n) * 0x40)))
+#define E1000_TDBAL(_n) ((_n) < 4 ? (0x03800 + ((_n) * 0x100)) : \
+ (0x0E000 + ((_n) * 0x40)))
+#define E1000_TDBAH(_n) ((_n) < 4 ? (0x03804 + ((_n) * 0x100)) : \
+ (0x0E004 + ((_n) * 0x40)))
+#define E1000_TDLEN(_n) ((_n) < 4 ? (0x03808 + ((_n) * 0x100)) : \
+ (0x0E008 + ((_n) * 0x40)))
+#define E1000_TDH(_n) ((_n) < 4 ? (0x03810 + ((_n) * 0x100)) : \
+ (0x0E010 + ((_n) * 0x40)))
+#define E1000_TXCTL(_n) ((_n) < 4 ? (0x03814 + ((_n) * 0x100)) : \
+ (0x0E014 + ((_n) * 0x40)))
#define E1000_DCA_TXCTRL(_n) E1000_TXCTL(_n)
-#define E1000_TDT(_n) ((_n) < 4 ? (0x03818 + ((_n) * 0x100)) : \
- (0x0E018 + ((_n) * 0x40)))
-#define E1000_TXDCTL(_n) ((_n) < 4 ? (0x03828 + ((_n) * 0x100)) : \
- (0x0E028 + ((_n) * 0x40)))
-#define E1000_TDWBAL(_n) ((_n) < 4 ? (0x03838 + ((_n) * 0x100)) : \
- (0x0E038 + ((_n) * 0x40)))
-#define E1000_TDWBAH(_n) ((_n) < 4 ? (0x0383C + ((_n) * 0x100)) : \
- (0x0E03C + ((_n) * 0x40)))
-#define E1000_TARC(_n) (0x03840 + ((_n) * 0x100))
-#define E1000_RSRPD 0x02C00 /* Rx Small Packet Detect - RW */
-#define E1000_RAID 0x02C08 /* Receive Ack Interrupt Delay - RW */
-#define E1000_TXDMAC 0x03000 /* Tx DMA Control - RW */
-#define E1000_KABGTXD 0x03004 /* AFE Band Gap Transmit Ref Data */
-#define E1000_PSRTYPE(_i) (0x05480 + ((_i) * 4))
-#define E1000_RAL(_i) (((_i) <= 15) ? (0x05400 + ((_i) * 8)) : \
- (0x054E0 + ((_i - 16) * 8)))
-#define E1000_RAH(_i) (((_i) <= 15) ? (0x05404 + ((_i) * 8)) : \
- (0x054E4 + ((_i - 16) * 8)))
-#define E1000_SHRAL(_i) (0x05438 + ((_i) * 8))
-#define E1000_SHRAH(_i) (0x0543C + ((_i) * 8))
-#define E1000_IP4AT_REG(_i) (0x05840 + ((_i) * 8))
-#define E1000_IP6AT_REG(_i) (0x05880 + ((_i) * 4))
-#define E1000_WUPM_REG(_i) (0x05A00 + ((_i) * 4))
-#define E1000_FFMT_REG(_i) (0x09000 + ((_i) * 8))
-#define E1000_FFVT_REG(_i) (0x09800 + ((_i) * 8))
-#define E1000_FFLT_REG(_i) (0x05F00 + ((_i) * 8))
-#define E1000_PBSLAC 0x03100 /* Packet Buffer Slave Access Control */
-#define E1000_PBSLAD(_n) (0x03110 + (0x4 * (_n))) /* Packet Buffer DWORD (_n) */
-#define E1000_TXPBS 0x03404 /* Tx Packet Buffer Size - RW */
-#define E1000_ITPBS 0x03404 /* Same as TXPBS, renamed for newer adpaters - RW */
-#define E1000_TDFH 0x03410 /* Tx Data FIFO Head - RW */
-#define E1000_TDFT 0x03418 /* Tx Data FIFO Tail - RW */
-#define E1000_TDFHS 0x03420 /* Tx Data FIFO Head Saved - RW */
-#define E1000_TDFTS 0x03428 /* Tx Data FIFO Tail Saved - RW */
-#define E1000_TDFPC 0x03430 /* Tx Data FIFO Packet Count - RW */
-#define E1000_TDPUMB 0x0357C /* DMA Tx Descriptor uC Mail Box - RW */
-#define E1000_TDPUAD 0x03580 /* DMA Tx Descriptor uC Addr Command - RW */
-#define E1000_TDPUWD 0x03584 /* DMA Tx Descriptor uC Data Write - RW */
-#define E1000_TDPURD 0x03588 /* DMA Tx Descriptor uC Data Read - RW */
-#define E1000_TDPUCTL 0x0358C /* DMA Tx Descriptor uC Control - RW */
-#define E1000_DTXCTL 0x03590 /* DMA Tx Control - RW */
-#define E1000_DTXTCPFLGL 0x0359C /* DMA Tx Control flag low - RW */
-#define E1000_DTXTCPFLGH 0x035A0 /* DMA Tx Control flag high - RW */
-#define E1000_DTXMXSZRQ 0x03540 /* DMA Tx Max Total Allow Size Requests - RW */
-#define E1000_TIDV 0x03820 /* Tx Interrupt Delay Value - RW */
-#define E1000_TADV 0x0382C /* Tx Interrupt Absolute Delay Val - RW */
-#define E1000_TSPMT 0x03830 /* TCP Segmentation PAD & Min Threshold - RW */
-#define E1000_CRCERRS 0x04000 /* CRC Error Count - R/clr */
-#define E1000_ALGNERRC 0x04004 /* Alignment Error Count - R/clr */
-#define E1000_SYMERRS 0x04008 /* Symbol Error Count - R/clr */
-#define E1000_RXERRC 0x0400C /* Receive Error Count - R/clr */
-#define E1000_MPC 0x04010 /* Missed Packet Count - R/clr */
-#define E1000_SCC 0x04014 /* Single Collision Count - R/clr */
-#define E1000_ECOL 0x04018 /* Excessive Collision Count - R/clr */
-#define E1000_MCC 0x0401C /* Multiple Collision Count - R/clr */
-#define E1000_LATECOL 0x04020 /* Late Collision Count - R/clr */
-#define E1000_COLC 0x04028 /* Collision Count - R/clr */
-#define E1000_DC 0x04030 /* Defer Count - R/clr */
-#define E1000_TNCRS 0x04034 /* Tx-No CRS - R/clr */
-#define E1000_SEC 0x04038 /* Sequence Error Count - R/clr */
-#define E1000_CEXTERR 0x0403C /* Carrier Extension Error Count - R/clr */
-#define E1000_RLEC 0x04040 /* Receive Length Error Count - R/clr */
-#define E1000_XONRXC 0x04048 /* XON Rx Count - R/clr */
-#define E1000_XONTXC 0x0404C /* XON Tx Count - R/clr */
-#define E1000_XOFFRXC 0x04050 /* XOFF Rx Count - R/clr */
-#define E1000_XOFFTXC 0x04054 /* XOFF Tx Count - R/clr */
-#define E1000_FCRUC 0x04058 /* Flow Control Rx Unsupported Count- R/clr */
-#define E1000_PRC64 0x0405C /* Packets Rx (64 bytes) - R/clr */
-#define E1000_PRC127 0x04060 /* Packets Rx (65-127 bytes) - R/clr */
-#define E1000_PRC255 0x04064 /* Packets Rx (128-255 bytes) - R/clr */
-#define E1000_PRC511 0x04068 /* Packets Rx (255-511 bytes) - R/clr */
-#define E1000_PRC1023 0x0406C /* Packets Rx (512-1023 bytes) - R/clr */
-#define E1000_PRC1522 0x04070 /* Packets Rx (1024-1522 bytes) - R/clr */
-#define E1000_GPRC 0x04074 /* Good Packets Rx Count - R/clr */
-#define E1000_BPRC 0x04078 /* Broadcast Packets Rx Count - R/clr */
-#define E1000_MPRC 0x0407C /* Multicast Packets Rx Count - R/clr */
-#define E1000_GPTC 0x04080 /* Good Packets Tx Count - R/clr */
-#define E1000_GORCL 0x04088 /* Good Octets Rx Count Low - R/clr */
-#define E1000_GORCH 0x0408C /* Good Octets Rx Count High - R/clr */
-#define E1000_GOTCL 0x04090 /* Good Octets Tx Count Low - R/clr */
-#define E1000_GOTCH 0x04094 /* Good Octets Tx Count High - R/clr */
-#define E1000_RNBC 0x040A0 /* Rx No Buffers Count - R/clr */
-#define E1000_RUC 0x040A4 /* Rx Undersize Count - R/clr */
-#define E1000_RFC 0x040A8 /* Rx Fragment Count - R/clr */
-#define E1000_ROC 0x040AC /* Rx Oversize Count - R/clr */
-#define E1000_RJC 0x040B0 /* Rx Jabber Count - R/clr */
-#define E1000_MGTPRC 0x040B4 /* Management Packets Rx Count - R/clr */
-#define E1000_MGTPDC 0x040B8 /* Management Packets Dropped Count - R/clr */
-#define E1000_MGTPTC 0x040BC /* Management Packets Tx Count - R/clr */
-#define E1000_TORL 0x040C0 /* Total Octets Rx Low - R/clr */
-#define E1000_TORH 0x040C4 /* Total Octets Rx High - R/clr */
-#define E1000_TOTL 0x040C8 /* Total Octets Tx Low - R/clr */
-#define E1000_TOTH 0x040CC /* Total Octets Tx High - R/clr */
-#define E1000_TPR 0x040D0 /* Total Packets Rx - R/clr */
-#define E1000_TPT 0x040D4 /* Total Packets Tx - R/clr */
-#define E1000_PTC64 0x040D8 /* Packets Tx (64 bytes) - R/clr */
-#define E1000_PTC127 0x040DC /* Packets Tx (65-127 bytes) - R/clr */
-#define E1000_PTC255 0x040E0 /* Packets Tx (128-255 bytes) - R/clr */
-#define E1000_PTC511 0x040E4 /* Packets Tx (256-511 bytes) - R/clr */
-#define E1000_PTC1023 0x040E8 /* Packets Tx (512-1023 bytes) - R/clr */
-#define E1000_PTC1522 0x040EC /* Packets Tx (1024-1522 Bytes) - R/clr */
-#define E1000_MPTC 0x040F0 /* Multicast Packets Tx Count - R/clr */
-#define E1000_BPTC 0x040F4 /* Broadcast Packets Tx Count - R/clr */
-#define E1000_TSCTC 0x040F8 /* TCP Segmentation Context Tx - R/clr */
-#define E1000_TSCTFC 0x040FC /* TCP Segmentation Context Tx Fail - R/clr */
-#define E1000_IAC 0x04100 /* Interrupt Assertion Count */
-#define E1000_ICRXPTC 0x04104 /* Interrupt Cause Rx Pkt Timer Expire Count */
-#define E1000_ICRXATC 0x04108 /* Interrupt Cause Rx Abs Timer Expire Count */
-#define E1000_ICTXPTC 0x0410C /* Interrupt Cause Tx Pkt Timer Expire Count */
-#define E1000_ICTXATC 0x04110 /* Interrupt Cause Tx Abs Timer Expire Count */
-#define E1000_ICTXQEC 0x04118 /* Interrupt Cause Tx Queue Empty Count */
-#define E1000_ICTXQMTC 0x0411C /* Interrupt Cause Tx Queue Min Thresh Count */
-#define E1000_ICRXDMTC 0x04120 /* Interrupt Cause Rx Desc Min Thresh Count */
-#define E1000_ICRXOC 0x04124 /* Interrupt Cause Receiver Overrun Count */
-#define E1000_CRC_OFFSET 0x05F50 /* CRC Offset register */
+#define E1000_TDT(_n) ((_n) < 4 ? (0x03818 + ((_n) * 0x100)) : \
+ (0x0E018 + ((_n) * 0x40)))
+#define E1000_TXDCTL(_n) ((_n) < 4 ? (0x03828 + ((_n) * 0x100)) : \
+ (0x0E028 + ((_n) * 0x40)))
+#define E1000_TDWBAL(_n) ((_n) < 4 ? (0x03838 + ((_n) * 0x100)) : \
+ (0x0E038 + ((_n) * 0x40)))
+#define E1000_TDWBAH(_n) ((_n) < 4 ? (0x0383C + ((_n) * 0x100)) : \
+ (0x0E03C + ((_n) * 0x40)))
+#define E1000_TARC(_n) (0x03840 + ((_n) * 0x100))
+#define E1000_RSRPD 0x02C00 /* Rx Small Packet Detect - RW */
+#define E1000_RAID 0x02C08 /* Receive Ack Interrupt Delay - RW */
+#define E1000_TXDMAC 0x03000 /* Tx DMA Control - RW */
+#define E1000_KABGTXD 0x03004 /* AFE Band Gap Transmit Ref Data */
+#define E1000_PSRTYPE(_i) (0x05480 + ((_i) * 4))
+#define E1000_RAL(_i) (((_i) <= 15) ? (0x05400 + ((_i) * 8)) : \
+ (0x054E0 + ((_i - 16) * 8)))
+#define E1000_RAH(_i) (((_i) <= 15) ? (0x05404 + ((_i) * 8)) : \
+ (0x054E4 + ((_i - 16) * 8)))
+#define E1000_SHRAL(_i) (0x05438 + ((_i) * 8))
+#define E1000_SHRAH(_i) (0x0543C + ((_i) * 8))
+#define E1000_IP4AT_REG(_i) (0x05840 + ((_i) * 8))
+#define E1000_IP6AT_REG(_i) (0x05880 + ((_i) * 4))
+#define E1000_WUPM_REG(_i) (0x05A00 + ((_i) * 4))
+#define E1000_FFMT_REG(_i) (0x09000 + ((_i) * 8))
+#define E1000_FFVT_REG(_i) (0x09800 + ((_i) * 8))
+#define E1000_FFLT_REG(_i) (0x05F00 + ((_i) * 8))
+#define E1000_PBSLAC 0x03100 /* Pkt Buffer Slave Access Control */
+#define E1000_PBSLAD(_n) (0x03110 + (0x4 * (_n))) /* Pkt Buffer DWORD */
+#define E1000_TXPBS 0x03404 /* Tx Packet Buffer Size - RW */
+/* Same as TXPBS, renamed for newer Si - RW */
+#define E1000_ITPBS 0x03404
+#define E1000_TDFH 0x03410 /* Tx Data FIFO Head - RW */
+#define E1000_TDFT 0x03418 /* Tx Data FIFO Tail - RW */
+#define E1000_TDFHS 0x03420 /* Tx Data FIFO Head Saved - RW */
+#define E1000_TDFTS 0x03428 /* Tx Data FIFO Tail Saved - RW */
+#define E1000_TDFPC 0x03430 /* Tx Data FIFO Packet Count - RW */
+#define E1000_TDPUMB 0x0357C /* DMA Tx Desc uC Mail Box - RW */
+#define E1000_TDPUAD 0x03580 /* DMA Tx Desc uC Addr Command - RW */
+#define E1000_TDPUWD 0x03584 /* DMA Tx Desc uC Data Write - RW */
+#define E1000_TDPURD 0x03588 /* DMA Tx Desc uC Data Read - RW */
+#define E1000_TDPUCTL 0x0358C /* DMA Tx Desc uC Control - RW */
+#define E1000_DTXCTL 0x03590 /* DMA Tx Control - RW */
+#define E1000_DTXTCPFLGL 0x0359C /* DMA Tx Control flag low - RW */
+#define E1000_DTXTCPFLGH 0x035A0 /* DMA Tx Control flag high - RW */
+/* DMA Tx Max Total Allow Size Reqs - RW */
+#define E1000_DTXMXSZRQ 0x03540
+#define E1000_TIDV 0x03820 /* Tx Interrupt Delay Value - RW */
+#define E1000_TADV 0x0382C /* Tx Interrupt Absolute Delay Val - RW */
+#define E1000_TSPMT 0x03830 /* TCP Segmentation PAD & Min Threshold - RW */
+#define E1000_CRCERRS 0x04000 /* CRC Error Count - R/clr */
+#define E1000_ALGNERRC 0x04004 /* Alignment Error Count - R/clr */
+#define E1000_SYMERRS 0x04008 /* Symbol Error Count - R/clr */
+#define E1000_RXERRC 0x0400C /* Receive Error Count - R/clr */
+#define E1000_MPC 0x04010 /* Missed Packet Count - R/clr */
+#define E1000_SCC 0x04014 /* Single Collision Count - R/clr */
+#define E1000_ECOL 0x04018 /* Excessive Collision Count - R/clr */
+#define E1000_MCC 0x0401C /* Multiple Collision Count - R/clr */
+#define E1000_LATECOL 0x04020 /* Late Collision Count - R/clr */
+#define E1000_COLC 0x04028 /* Collision Count - R/clr */
+#define E1000_DC 0x04030 /* Defer Count - R/clr */
+#define E1000_TNCRS 0x04034 /* Tx-No CRS - R/clr */
+#define E1000_SEC 0x04038 /* Sequence Error Count - R/clr */
+#define E1000_CEXTERR 0x0403C /* Carrier Extension Error Count - R/clr */
+#define E1000_RLEC 0x04040 /* Receive Length Error Count - R/clr */
+#define E1000_XONRXC 0x04048 /* XON Rx Count - R/clr */
+#define E1000_XONTXC 0x0404C /* XON Tx Count - R/clr */
+#define E1000_XOFFRXC 0x04050 /* XOFF Rx Count - R/clr */
+#define E1000_XOFFTXC 0x04054 /* XOFF Tx Count - R/clr */
+#define E1000_FCRUC 0x04058 /* Flow Control Rx Unsupported Count- R/clr */
+#define E1000_PRC64 0x0405C /* Packets Rx (64 bytes) - R/clr */
+#define E1000_PRC127 0x04060 /* Packets Rx (65-127 bytes) - R/clr */
+#define E1000_PRC255 0x04064 /* Packets Rx (128-255 bytes) - R/clr */
+#define E1000_PRC511 0x04068 /* Packets Rx (255-511 bytes) - R/clr */
+#define E1000_PRC1023 0x0406C /* Packets Rx (512-1023 bytes) - R/clr */
+#define E1000_PRC1522 0x04070 /* Packets Rx (1024-1522 bytes) - R/clr */
+#define E1000_GPRC 0x04074 /* Good Packets Rx Count - R/clr */
+#define E1000_BPRC 0x04078 /* Broadcast Packets Rx Count - R/clr */
+#define E1000_MPRC 0x0407C /* Multicast Packets Rx Count - R/clr */
+#define E1000_GPTC 0x04080 /* Good Packets Tx Count - R/clr */
+#define E1000_GORCL 0x04088 /* Good Octets Rx Count Low - R/clr */
+#define E1000_GORCH 0x0408C /* Good Octets Rx Count High - R/clr */
+#define E1000_GOTCL 0x04090 /* Good Octets Tx Count Low - R/clr */
+#define E1000_GOTCH 0x04094 /* Good Octets Tx Count High - R/clr */
+#define E1000_RNBC 0x040A0 /* Rx No Buffers Count - R/clr */
+#define E1000_RUC 0x040A4 /* Rx Undersize Count - R/clr */
+#define E1000_RFC 0x040A8 /* Rx Fragment Count - R/clr */
+#define E1000_ROC 0x040AC /* Rx Oversize Count - R/clr */
+#define E1000_RJC 0x040B0 /* Rx Jabber Count - R/clr */
+#define E1000_MGTPRC 0x040B4 /* Management Packets Rx Count - R/clr */
+#define E1000_MGTPDC 0x040B8 /* Management Packets Dropped Count - R/clr */
+#define E1000_MGTPTC 0x040BC /* Management Packets Tx Count - R/clr */
+#define E1000_TORL 0x040C0 /* Total Octets Rx Low - R/clr */
+#define E1000_TORH 0x040C4 /* Total Octets Rx High - R/clr */
+#define E1000_TOTL 0x040C8 /* Total Octets Tx Low - R/clr */
+#define E1000_TOTH 0x040CC /* Total Octets Tx High - R/clr */
+#define E1000_TPR 0x040D0 /* Total Packets Rx - R/clr */
+#define E1000_TPT 0x040D4 /* Total Packets Tx - R/clr */
+#define E1000_PTC64 0x040D8 /* Packets Tx (64 bytes) - R/clr */
+#define E1000_PTC127 0x040DC /* Packets Tx (65-127 bytes) - R/clr */
+#define E1000_PTC255 0x040E0 /* Packets Tx (128-255 bytes) - R/clr */
+#define E1000_PTC511 0x040E4 /* Packets Tx (256-511 bytes) - R/clr */
+#define E1000_PTC1023 0x040E8 /* Packets Tx (512-1023 bytes) - R/clr */
+#define E1000_PTC1522 0x040EC /* Packets Tx (1024-1522 Bytes) - R/clr */
+#define E1000_MPTC 0x040F0 /* Multicast Packets Tx Count - R/clr */
+#define E1000_BPTC 0x040F4 /* Broadcast Packets Tx Count - R/clr */
+#define E1000_TSCTC 0x040F8 /* TCP Segmentation Context Tx - R/clr */
+#define E1000_TSCTFC 0x040FC /* TCP Segmentation Context Tx Fail - R/clr */
+#define E1000_IAC 0x04100 /* Interrupt Assertion Count */
+#define E1000_ICRXPTC 0x04104 /* Interrupt Cause Rx Pkt Timer Expire Count */
+#define E1000_ICRXATC 0x04108 /* Interrupt Cause Rx Abs Timer Expire Count */
+#define E1000_ICTXPTC 0x0410C /* Interrupt Cause Tx Pkt Timer Expire Count */
+#define E1000_ICTXATC 0x04110 /* Interrupt Cause Tx Abs Timer Expire Count */
+#define E1000_ICTXQEC 0x04118 /* Interrupt Cause Tx Queue Empty Count */
+#define E1000_ICTXQMTC 0x0411C /* Interrupt Cause Tx Queue Min Thresh Count */
+#define E1000_ICRXDMTC 0x04120 /* Interrupt Cause Rx Desc Min Thresh Count */
+#define E1000_ICRXOC 0x04124 /* Interrupt Cause Receiver Overrun Count */
+#define E1000_CRC_OFFSET 0x05F50 /* CRC Offset register */
-#define E1000_VFGPRC 0x00F10
-#define E1000_VFGORC 0x00F18
-#define E1000_VFMPRC 0x00F3C
-#define E1000_VFGPTC 0x00F14
-#define E1000_VFGOTC 0x00F34
-#define E1000_VFGOTLBC 0x00F50
-#define E1000_VFGPTLBC 0x00F44
-#define E1000_VFGORLBC 0x00F48
-#define E1000_VFGPRLBC 0x00F40
+#define E1000_VFGPRC 0x00F10
+#define E1000_VFGORC 0x00F18
+#define E1000_VFMPRC 0x00F3C
+#define E1000_VFGPTC 0x00F14
+#define E1000_VFGOTC 0x00F34
+#define E1000_VFGOTLBC 0x00F50
+#define E1000_VFGPTLBC 0x00F44
+#define E1000_VFGORLBC 0x00F48
+#define E1000_VFGPRLBC 0x00F40
/* Virtualization statistical counters */
-#define E1000_PFVFGPRC(_n) (0x010010 + (0x100 * (_n)))
-#define E1000_PFVFGPTC(_n) (0x010014 + (0x100 * (_n)))
-#define E1000_PFVFGORC(_n) (0x010018 + (0x100 * (_n)))
-#define E1000_PFVFGOTC(_n) (0x010034 + (0x100 * (_n)))
-#define E1000_PFVFMPRC(_n) (0x010038 + (0x100 * (_n)))
-#define E1000_PFVFGPRLBC(_n) (0x010040 + (0x100 * (_n)))
-#define E1000_PFVFGPTLBC(_n) (0x010044 + (0x100 * (_n)))
-#define E1000_PFVFGORLBC(_n) (0x010048 + (0x100 * (_n)))
-#define E1000_PFVFGOTLBC(_n) (0x010050 + (0x100 * (_n)))
+#define E1000_PFVFGPRC(_n) (0x010010 + (0x100 * (_n)))
+#define E1000_PFVFGPTC(_n) (0x010014 + (0x100 * (_n)))
+#define E1000_PFVFGORC(_n) (0x010018 + (0x100 * (_n)))
+#define E1000_PFVFGOTC(_n) (0x010034 + (0x100 * (_n)))
+#define E1000_PFVFMPRC(_n) (0x010038 + (0x100 * (_n)))
+#define E1000_PFVFGPRLBC(_n) (0x010040 + (0x100 * (_n)))
+#define E1000_PFVFGPTLBC(_n) (0x010044 + (0x100 * (_n)))
+#define E1000_PFVFGORLBC(_n) (0x010048 + (0x100 * (_n)))
+#define E1000_PFVFGOTLBC(_n) (0x010050 + (0x100 * (_n)))
-#define E1000_LSECTXUT 0x04300 /* LinkSec Tx Untagged Packet Count - OutPktsUntagged */
-#define E1000_LSECTXPKTE 0x04304 /* LinkSec Encrypted Tx Packets Count - OutPktsEncrypted */
-#define E1000_LSECTXPKTP 0x04308 /* LinkSec Protected Tx Packet Count - OutPktsProtected */
-#define E1000_LSECTXOCTE 0x0430C /* LinkSec Encrypted Tx Octets Count - OutOctetsEncrypted */
-#define E1000_LSECTXOCTP 0x04310 /* LinkSec Protected Tx Octets Count - OutOctetsProtected */
-#define E1000_LSECRXUT 0x04314 /* LinkSec Untagged non-Strict Rx Packet Count - InPktsUntagged/InPktsNoTag */
-#define E1000_LSECRXOCTD 0x0431C /* LinkSec Rx Octets Decrypted Count - InOctetsDecrypted */
-#define E1000_LSECRXOCTV 0x04320 /* LinkSec Rx Octets Validated - InOctetsValidated */
-#define E1000_LSECRXBAD 0x04324 /* LinkSec Rx Bad Tag - InPktsBadTag */
-#define E1000_LSECRXNOSCI 0x04328 /* LinkSec Rx Packet No SCI Count - InPktsNoSci */
-#define E1000_LSECRXUNSCI 0x0432C /* LinkSec Rx Packet Unknown SCI Count - InPktsUnknownSci */
-#define E1000_LSECRXUNCH 0x04330 /* LinkSec Rx Unchecked Packets Count - InPktsUnchecked */
-#define E1000_LSECRXDELAY 0x04340 /* LinkSec Rx Delayed Packet Count - InPktsDelayed */
-#define E1000_LSECRXLATE 0x04350 /* LinkSec Rx Late Packets Count - InPktsLate */
-#define E1000_LSECRXOK(_n) (0x04360 + (0x04 * (_n))) /* LinkSec Rx Packet OK Count - InPktsOk */
-#define E1000_LSECRXINV(_n) (0x04380 + (0x04 * (_n))) /* LinkSec Rx Invalid Count - InPktsInvalid */
-#define E1000_LSECRXNV(_n) (0x043A0 + (0x04 * (_n))) /* LinkSec Rx Not Valid Count - InPktsNotValid */
-#define E1000_LSECRXUNSA 0x043C0 /* LinkSec Rx Unused SA Count - InPktsUnusedSa */
-#define E1000_LSECRXNUSA 0x043D0 /* LinkSec Rx Not Using SA Count - InPktsNotUsingSa */
-#define E1000_LSECTXCAP 0x0B000 /* LinkSec Tx Capabilities Register - RO */
-#define E1000_LSECRXCAP 0x0B300 /* LinkSec Rx Capabilities Register - RO */
-#define E1000_LSECTXCTRL 0x0B004 /* LinkSec Tx Control - RW */
-#define E1000_LSECRXCTRL 0x0B304 /* LinkSec Rx Control - RW */
-#define E1000_LSECTXSCL 0x0B008 /* LinkSec Tx SCI Low - RW */
-#define E1000_LSECTXSCH 0x0B00C /* LinkSec Tx SCI High - RW */
-#define E1000_LSECTXSA 0x0B010 /* LinkSec Tx SA0 - RW */
-#define E1000_LSECTXPN0 0x0B018 /* LinkSec Tx SA PN 0 - RW */
-#define E1000_LSECTXPN1 0x0B01C /* LinkSec Tx SA PN 1 - RW */
-#define E1000_LSECRXSCL 0x0B3D0 /* LinkSec Rx SCI Low - RW */
-#define E1000_LSECRXSCH 0x0B3E0 /* LinkSec Rx SCI High - RW */
-#define E1000_LSECTXKEY0(_n) (0x0B020 + (0x04 * (_n))) /* LinkSec Tx 128-bit Key 0 - WO */
-#define E1000_LSECTXKEY1(_n) (0x0B030 + (0x04 * (_n))) /* LinkSec Tx 128-bit Key 1 - WO */
-#define E1000_LSECRXSA(_n) (0x0B310 + (0x04 * (_n))) /* LinkSec Rx SAs - RW */
-#define E1000_LSECRXPN(_n) (0x0B330 + (0x04 * (_n))) /* LinkSec Rx SAs - RW */
+/* LinkSec */
+#define E1000_LSECTXUT 0x04300 /* Tx Untagged Pkt Cnt */
+#define E1000_LSECTXPKTE 0x04304 /* Encrypted Tx Pkts Cnt */
+#define E1000_LSECTXPKTP 0x04308 /* Protected Tx Pkt Cnt */
+#define E1000_LSECTXOCTE 0x0430C /* Encrypted Tx Octets Cnt */
+#define E1000_LSECTXOCTP 0x04310 /* Protected Tx Octets Cnt */
+#define E1000_LSECRXUT 0x04314 /* Untagged non-Strict Rx Pkt Cnt */
+#define E1000_LSECRXOCTD 0x0431C /* Rx Octets Decrypted Count */
+#define E1000_LSECRXOCTV 0x04320 /* Rx Octets Validated */
+#define E1000_LSECRXBAD 0x04324 /* Rx Bad Tag */
+#define E1000_LSECRXNOSCI 0x04328 /* Rx Packet No SCI Count */
+#define E1000_LSECRXUNSCI 0x0432C /* Rx Packet Unknown SCI Count */
+#define E1000_LSECRXUNCH 0x04330 /* Rx Unchecked Packets Count */
+#define E1000_LSECRXDELAY 0x04340 /* Rx Delayed Packet Count */
+#define E1000_LSECRXLATE 0x04350 /* Rx Late Packets Count */
+#define E1000_LSECRXOK(_n) (0x04360 + (0x04 * (_n))) /* Rx Pkt OK Cnt */
+#define E1000_LSECRXINV(_n) (0x04380 + (0x04 * (_n))) /* Rx Invalid Cnt */
+#define E1000_LSECRXNV(_n) (0x043A0 + (0x04 * (_n))) /* Rx Not Valid Cnt */
+#define E1000_LSECRXUNSA 0x043C0 /* Rx Unused SA Count */
+#define E1000_LSECRXNUSA 0x043D0 /* Rx Not Using SA Count */
+#define E1000_LSECTXCAP 0x0B000 /* Tx Capabilities Register - RO */
+#define E1000_LSECRXCAP 0x0B300 /* Rx Capabilities Register - RO */
+#define E1000_LSECTXCTRL 0x0B004 /* Tx Control - RW */
+#define E1000_LSECRXCTRL 0x0B304 /* Rx Control - RW */
+#define E1000_LSECTXSCL 0x0B008 /* Tx SCI Low - RW */
+#define E1000_LSECTXSCH 0x0B00C /* Tx SCI High - RW */
+#define E1000_LSECTXSA 0x0B010 /* Tx SA0 - RW */
+#define E1000_LSECTXPN0 0x0B018 /* Tx SA PN 0 - RW */
+#define E1000_LSECTXPN1 0x0B01C /* Tx SA PN 1 - RW */
+#define E1000_LSECRXSCL 0x0B3D0 /* Rx SCI Low - RW */
+#define E1000_LSECRXSCH 0x0B3E0 /* Rx SCI High - RW */
+/* LinkSec Tx 128-bit Key 0 - WO */
+#define E1000_LSECTXKEY0(_n) (0x0B020 + (0x04 * (_n)))
+/* LinkSec Tx 128-bit Key 1 - WO */
+#define E1000_LSECTXKEY1(_n) (0x0B030 + (0x04 * (_n)))
+#define E1000_LSECRXSA(_n) (0x0B310 + (0x04 * (_n))) /* Rx SAs - RW */
+#define E1000_LSECRXPN(_n) (0x0B330 + (0x04 * (_n))) /* Rx SAs - RW */
/*
* LinkSec Rx Keys - where _n is the SA no. and _m the 4 dwords of the 128 bit
* key - RW.
*/
-#define E1000_LSECRXKEY(_n, _m) (0x0B350 + (0x10 * (_n)) + (0x04 * (_m)))
+#define E1000_LSECRXKEY(_n, _m) (0x0B350 + (0x10 * (_n)) + (0x04 * (_m)))
-#define E1000_SSVPC 0x041A0 /* Switch Security Violation Packet Count */
-#define E1000_IPSCTRL 0xB430 /* IpSec Control Register */
-#define E1000_IPSRXCMD 0x0B408 /* IPSec Rx Command Register - RW */
-#define E1000_IPSRXIDX 0x0B400 /* IPSec Rx Index - RW */
-#define E1000_IPSRXIPADDR(_n) (0x0B420+ (0x04 * (_n))) /* IPSec Rx IPv4/v6 Address - RW */
-#define E1000_IPSRXKEY(_n) (0x0B410 + (0x04 * (_n))) /* IPSec Rx 128-bit Key - RW */
-#define E1000_IPSRXSALT 0x0B404 /* IPSec Rx Salt - RW */
-#define E1000_IPSRXSPI 0x0B40C /* IPSec Rx SPI - RW */
-#define E1000_IPSTXKEY(_n) (0x0B460 + (0x04 * (_n))) /* IPSec Tx 128-bit Key - RW */
-#define E1000_IPSTXSALT 0x0B454 /* IPSec Tx Salt - RW */
-#define E1000_IPSTXIDX 0x0B450 /* IPSec Tx SA IDX - RW */
-#define E1000_PCS_CFG0 0x04200 /* PCS Configuration 0 - RW */
-#define E1000_PCS_LCTL 0x04208 /* PCS Link Control - RW */
-#define E1000_PCS_LSTAT 0x0420C /* PCS Link Status - RO */
-#define E1000_CBTMPC 0x0402C /* Circuit Breaker Tx Packet Count */
-#define E1000_HTDPMC 0x0403C /* Host Transmit Discarded Packets */
-#define E1000_CBRDPC 0x04044 /* Circuit Breaker Rx Dropped Count */
-#define E1000_CBRMPC 0x040FC /* Circuit Breaker Rx Packet Count */
-#define E1000_RPTHC 0x04104 /* Rx Packets To Host */
-#define E1000_HGPTC 0x04118 /* Host Good Packets Tx Count */
-#define E1000_HTCBDPC 0x04124 /* Host Tx Circuit Breaker Dropped Count */
-#define E1000_HGORCL 0x04128 /* Host Good Octets Received Count Low */
-#define E1000_HGORCH 0x0412C /* Host Good Octets Received Count High */
-#define E1000_HGOTCL 0x04130 /* Host Good Octets Transmit Count Low */
-#define E1000_HGOTCH 0x04134 /* Host Good Octets Transmit Count High */
-#define E1000_LENERRS 0x04138 /* Length Errors Count */
-#define E1000_SCVPC 0x04228 /* SerDes/SGMII Code Violation Pkt Count */
-#define E1000_HRMPC 0x0A018 /* Header Redirection Missed Packet Count */
-#define E1000_PCS_ANADV 0x04218 /* AN advertisement - RW */
-#define E1000_PCS_LPAB 0x0421C /* Link Partner Ability - RW */
-#define E1000_PCS_NPTX 0x04220 /* AN Next Page Transmit - RW */
-#define E1000_PCS_LPABNP 0x04224 /* Link Partner Ability Next Page - RW */
-#define E1000_1GSTAT_RCV 0x04228 /* 1GSTAT Code Violation Packet Count - RW */
-#define E1000_RXCSUM 0x05000 /* Rx Checksum Control - RW */
-#define E1000_RLPML 0x05004 /* Rx Long Packet Max Length */
-#define E1000_RFCTL 0x05008 /* Receive Filter Control*/
-#define E1000_MTA 0x05200 /* Multicast Table Array - RW Array */
-#define E1000_RA 0x05400 /* Receive Address - RW Array */
-#define E1000_RA2 0x054E0 /* 2nd half of receive address array - RW Array */
-#define E1000_VFTA 0x05600 /* VLAN Filter Table Array - RW Array */
-#define E1000_VT_CTL 0x0581C /* VMDq Control - RW */
-#define E1000_VFQA0 0x0B000 /* VLAN Filter Queue Array 0 - RW Array */
-#define E1000_VFQA1 0x0B200 /* VLAN Filter Queue Array 1 - RW Array */
-#define E1000_WUC 0x05800 /* Wakeup Control - RW */
-#define E1000_WUFC 0x05808 /* Wakeup Filter Control - RW */
-#define E1000_WUS 0x05810 /* Wakeup Status - RO */
-#define E1000_MANC 0x05820 /* Management Control - RW */
-#define E1000_IPAV 0x05838 /* IP Address Valid - RW */
-#define E1000_IP4AT 0x05840 /* IPv4 Address Table - RW Array */
-#define E1000_IP6AT 0x05880 /* IPv6 Address Table - RW Array */
-#define E1000_WUPL 0x05900 /* Wakeup Packet Length - RW */
-#define E1000_WUPM 0x05A00 /* Wakeup Packet Memory - RO A */
-#define E1000_PBACL 0x05B68 /* MSIx PBA Clear - Read/Write 1's to clear */
-#define E1000_FFLT 0x05F00 /* Flexible Filter Length Table - RW Array */
-#define E1000_HOST_IF 0x08800 /* Host Interface */
-#define E1000_FFMT 0x09000 /* Flexible Filter Mask Table - RW Array */
-#define E1000_FFVT 0x09800 /* Flexible Filter Value Table - RW Array */
-#define E1000_FHFT(_n) (0x09000 + (_n * 0x100)) /* Flexible Host Filter Table */
-#define E1000_FHFT_EXT(_n) (0x09A00 + (_n * 0x100)) /* Ext Flexible Host Filter Table */
+#define E1000_SSVPC 0x041A0 /* Switch Security Violation Pkt Cnt */
+#define E1000_IPSCTRL 0xB430 /* IpSec Control Register */
+#define E1000_IPSRXCMD 0x0B408 /* IPSec Rx Command Register - RW */
+#define E1000_IPSRXIDX 0x0B400 /* IPSec Rx Index - RW */
+/* IPSec Rx IPv4/v6 Address - RW */
+#define E1000_IPSRXIPADDR(_n) (0x0B420 + (0x04 * (_n)))
+/* IPSec Rx 128-bit Key - RW */
+#define E1000_IPSRXKEY(_n) (0x0B410 + (0x04 * (_n)))
+#define E1000_IPSRXSALT 0x0B404 /* IPSec Rx Salt - RW */
+#define E1000_IPSRXSPI 0x0B40C /* IPSec Rx SPI - RW */
+/* IPSec Tx 128-bit Key - RW */
+#define E1000_IPSTXKEY(_n) (0x0B460 + (0x04 * (_n)))
+#define E1000_IPSTXSALT 0x0B454 /* IPSec Tx Salt - RW */
+#define E1000_IPSTXIDX 0x0B450 /* IPSec Tx SA IDX - RW */
+#define E1000_PCS_CFG0 0x04200 /* PCS Configuration 0 - RW */
+#define E1000_PCS_LCTL 0x04208 /* PCS Link Control - RW */
+#define E1000_PCS_LSTAT 0x0420C /* PCS Link Status - RO */
+#define E1000_CBTMPC 0x0402C /* Circuit Breaker Tx Packet Count */
+#define E1000_HTDPMC 0x0403C /* Host Transmit Discarded Packets */
+#define E1000_CBRDPC 0x04044 /* Circuit Breaker Rx Dropped Count */
+#define E1000_CBRMPC 0x040FC /* Circuit Breaker Rx Packet Count */
+#define E1000_RPTHC 0x04104 /* Rx Packets To Host */
+#define E1000_HGPTC 0x04118 /* Host Good Packets Tx Count */
+#define E1000_HTCBDPC 0x04124 /* Host Tx Circuit Breaker Dropped Count */
+#define E1000_HGORCL 0x04128 /* Host Good Octets Received Count Low */
+#define E1000_HGORCH 0x0412C /* Host Good Octets Received Count High */
+#define E1000_HGOTCL 0x04130 /* Host Good Octets Transmit Count Low */
+#define E1000_HGOTCH 0x04134 /* Host Good Octets Transmit Count High */
+#define E1000_LENERRS 0x04138 /* Length Errors Count */
+#define E1000_SCVPC 0x04228 /* SerDes/SGMII Code Violation Pkt Count */
+#define E1000_HRMPC 0x0A018 /* Header Redirection Missed Packet Count */
+#define E1000_PCS_ANADV 0x04218 /* AN advertisement - RW */
+#define E1000_PCS_LPAB 0x0421C /* Link Partner Ability - RW */
+#define E1000_PCS_NPTX 0x04220 /* AN Next Page Transmit - RW */
+#define E1000_PCS_LPABNP 0x04224 /* Link Partner Ability Next Pg - RW */
+#define E1000_1GSTAT_RCV 0x04228 /* 1GSTAT Code Violation Pkt Cnt - RW */
+#define E1000_RXCSUM 0x05000 /* Rx Checksum Control - RW */
+#define E1000_RLPML 0x05004 /* Rx Long Packet Max Length */
+#define E1000_RFCTL 0x05008 /* Receive Filter Control*/
+#define E1000_MTA 0x05200 /* Multicast Table Array - RW Array */
+#define E1000_RA 0x05400 /* Receive Address - RW Array */
+#define E1000_RA2 0x054E0 /* 2nd half of Rx address array - RW Array */
+#define E1000_VFTA 0x05600 /* VLAN Filter Table Array - RW Array */
+#define E1000_VT_CTL 0x0581C /* VMDq Control - RW */
+#define E1000_CIAA 0x05B88 /* Config Indirect Access Address - RW */
+#define E1000_CIAD 0x05B8C /* Config Indirect Access Data - RW */
+#define E1000_VFQA0 0x0B000 /* VLAN Filter Queue Array 0 - RW Array */
+#define E1000_VFQA1 0x0B200 /* VLAN Filter Queue Array 1 - RW Array */
+#define E1000_WUC 0x05800 /* Wakeup Control - RW */
+#define E1000_WUFC 0x05808 /* Wakeup Filter Control - RW */
+#define E1000_WUS 0x05810 /* Wakeup Status - RO */
+#define E1000_MANC 0x05820 /* Management Control - RW */
+#define E1000_IPAV 0x05838 /* IP Address Valid - RW */
+#define E1000_IP4AT 0x05840 /* IPv4 Address Table - RW Array */
+#define E1000_IP6AT 0x05880 /* IPv6 Address Table - RW Array */
+#define E1000_WUPL 0x05900 /* Wakeup Packet Length - RW */
+#define E1000_WUPM 0x05A00 /* Wakeup Packet Memory - RO A */
+#define E1000_PBACL 0x05B68 /* MSIx PBA Clear - Read/Write 1's to clear */
+#define E1000_FFLT 0x05F00 /* Flexible Filter Length Table - RW Array */
+#define E1000_HOST_IF 0x08800 /* Host Interface */
+#define E1000_FFMT 0x09000 /* Flexible Filter Mask Table - RW Array */
+#define E1000_FFVT 0x09800 /* Flexible Filter Value Table - RW Array */
+/* Flexible Host Filter Table */
+#define E1000_FHFT(_n) (0x09000 + (_n * 0x100))
+/* Ext Flexible Host Filter Table */
+#define E1000_FHFT_EXT(_n) (0x09A00 + (_n * 0x100))
-#define E1000_KMRNCTRLSTA 0x00034 /* MAC-PHY interface - RW */
-#define E1000_MDPHYA 0x0003C /* PHY address - RW */
-#define E1000_MANC2H 0x05860 /* Management Control To Host - RW */
-#define E1000_MDEF(_n) (0x05890 + (4 * (_n))) /* Mngmt Decision Filters */
-#define E1000_SW_FW_SYNC 0x05B5C /* Software-Firmware Synchronization - RW */
-#define E1000_CCMCTL 0x05B48 /* CCM Control Register */
-#define E1000_GIOCTL 0x05B44 /* GIO Analog Control Register */
-#define E1000_SCCTL 0x05B4C /* PCIc PLL Configuration Register */
-#define E1000_GCR 0x05B00 /* PCI-Ex Control */
-#define E1000_GCR2 0x05B64 /* PCI-Ex Control #2 */
-#define E1000_GSCL_1 0x05B10 /* PCI-Ex Statistic Control #1 */
-#define E1000_GSCL_2 0x05B14 /* PCI-Ex Statistic Control #2 */
-#define E1000_GSCL_3 0x05B18 /* PCI-Ex Statistic Control #3 */
-#define E1000_GSCL_4 0x05B1C /* PCI-Ex Statistic Control #4 */
-#define E1000_FACTPS 0x05B30 /* Function Active and Power State to MNG */
-#define E1000_SWSM 0x05B50 /* SW Semaphore */
-#define E1000_FWSM 0x05B54 /* FW Semaphore */
-#define E1000_SWSM2 0x05B58 /* Driver-only SW semaphore (not used by BOOT agents) */
-#define E1000_DCA_ID 0x05B70 /* DCA Requester ID Information - RO */
-#define E1000_DCA_CTRL 0x05B74 /* DCA Control - RW */
-#define E1000_UFUSE 0x05B78 /* UFUSE - RO */
-#define E1000_FFLT_DBG 0x05F04 /* Debug Register */
-#define E1000_HICR 0x08F00 /* Host Interface Control */
-#define E1000_FWSTS 0x08F0C /* FW Status */
+#define E1000_KMRNCTRLSTA 0x00034 /* MAC-PHY interface - RW */
+#define E1000_MDPHYA 0x0003C /* PHY address - RW */
+#define E1000_MANC2H 0x05860 /* Management Control To Host - RW */
+/* Management Decision Filters */
+#define E1000_MDEF(_n) (0x05890 + (4 * (_n)))
+#define E1000_SW_FW_SYNC 0x05B5C /* SW-FW Synchronization - RW */
+#define E1000_CCMCTL 0x05B48 /* CCM Control Register */
+#define E1000_GIOCTL 0x05B44 /* GIO Analog Control Register */
+#define E1000_SCCTL 0x05B4C /* PCIc PLL Configuration Register */
+#define E1000_GCR 0x05B00 /* PCI-Ex Control */
+#define E1000_GCR2 0x05B64 /* PCI-Ex Control #2 */
+#define E1000_GSCL_1 0x05B10 /* PCI-Ex Statistic Control #1 */
+#define E1000_GSCL_2 0x05B14 /* PCI-Ex Statistic Control #2 */
+#define E1000_GSCL_3 0x05B18 /* PCI-Ex Statistic Control #3 */
+#define E1000_GSCL_4 0x05B1C /* PCI-Ex Statistic Control #4 */
+#define E1000_FACTPS 0x05B30 /* Function Active and Power State to MNG */
+#define E1000_SWSM 0x05B50 /* SW Semaphore */
+#define E1000_FWSM 0x05B54 /* FW Semaphore */
+/* Driver-only SW semaphore (not used by BOOT agents) */
+#define E1000_SWSM2 0x05B58
+#define E1000_DCA_ID 0x05B70 /* DCA Requester ID Information - RO */
+#define E1000_DCA_CTRL 0x05B74 /* DCA Control - RW */
+#define E1000_UFUSE 0x05B78 /* UFUSE - RO */
+#define E1000_FFLT_DBG 0x05F04 /* Debug Register */
+#define E1000_HICR 0x08F00 /* Host Interface Control */
+#define E1000_FWSTS 0x08F0C /* FW Status */
/* RSS registers */
-#define E1000_CPUVEC 0x02C10 /* CPU Vector Register - RW */
-#define E1000_MRQC 0x05818 /* Multiple Receive Control - RW */
-#define E1000_IMIR(_i) (0x05A80 + ((_i) * 4)) /* Immediate Interrupt */
-#define E1000_IMIREXT(_i) (0x05AA0 + ((_i) * 4)) /* Immediate Interrupt Ext*/
-#define E1000_IMIRVP 0x05AC0 /* Immediate Interrupt Rx VLAN Priority - RW */
-#define E1000_MSIXBM(_i) (0x01600 + ((_i) * 4)) /* MSI-X Allocation Register
- * (_i) - RW */
-#define E1000_MSIXTADD(_i) (0x0C000 + ((_i) * 0x10)) /* MSI-X Table entry addr
- * low reg - RW */
-#define E1000_MSIXTUADD(_i) (0x0C004 + ((_i) * 0x10)) /* MSI-X Table entry addr
- * upper reg - RW */
-#define E1000_MSIXTMSG(_i) (0x0C008 + ((_i) * 0x10)) /* MSI-X Table entry
- * message reg - RW */
-#define E1000_MSIXVCTRL(_i) (0x0C00C + ((_i) * 0x10)) /* MSI-X Table entry
- * vector ctrl reg - RW */
-#define E1000_MSIXPBA 0x0E000 /* MSI-X Pending bit array */
-#define E1000_RETA(_i) (0x05C00 + ((_i) * 4)) /* Redirection Table - RW */
-#define E1000_RSSRK(_i) (0x05C80 + ((_i) * 4)) /* RSS Random Key - RW */
-#define E1000_RSSIM 0x05864 /* RSS Interrupt Mask */
-#define E1000_RSSIR 0x05868 /* RSS Interrupt Request */
+#define E1000_CPUVEC 0x02C10 /* CPU Vector Register - RW */
+#define E1000_MRQC 0x05818 /* Multiple Receive Control - RW */
+#define E1000_IMIR(_i) (0x05A80 + ((_i) * 4)) /* Immediate Interrupt */
+#define E1000_IMIREXT(_i) (0x05AA0 + ((_i) * 4)) /* Immediate INTR Ext*/
+#define E1000_IMIRVP 0x05AC0 /* Immediate INT Rx VLAN Priority -RW */
+#define E1000_MSIXBM(_i) (0x01600 + ((_i) * 4)) /* MSI-X Alloc Reg -RW */
+/* MSI-X Table entry addr low reg - RW */
+#define E1000_MSIXTADD(_i) (0x0C000 + ((_i) * 0x10))
+/* MSI-X Table entry addr upper reg - RW */
+#define E1000_MSIXTUADD(_i) (0x0C004 + ((_i) * 0x10))
+/* MSI-X Table entry message reg - RW */
+#define E1000_MSIXTMSG(_i) (0x0C008 + ((_i) * 0x10))
+/* MSI-X Table entry vector ctrl reg - RW */
+#define E1000_MSIXVCTRL(_i) (0x0C00C + ((_i) * 0x10))
+#define E1000_MSIXPBA 0x0E000 /* MSI-X Pending bit array */
+#define E1000_RETA(_i) (0x05C00 + ((_i) * 4)) /* Redirection Table - RW */
+#define E1000_RSSRK(_i) (0x05C80 + ((_i) * 4)) /* RSS Random Key - RW */
+#define E1000_RSSIM 0x05864 /* RSS Interrupt Mask */
+#define E1000_RSSIR 0x05868 /* RSS Interrupt Request */
/* VT Registers */
-#define E1000_SWPBS 0x03004 /* Switch Packet Buffer Size - RW */
-#define E1000_MBVFICR 0x00C80 /* Mailbox VF Cause - RWC */
-#define E1000_MBVFIMR 0x00C84 /* Mailbox VF int Mask - RW */
-#define E1000_VFLRE 0x00C88 /* VF Register Events - RWC */
-#define E1000_VFRE 0x00C8C /* VF Receive Enables */
-#define E1000_VFTE 0x00C90 /* VF Transmit Enables */
-#define E1000_QDE 0x02408 /* Queue Drop Enable - RW */
-#define E1000_DTXSWC 0x03500 /* DMA Tx Switch Control - RW */
-#define E1000_WVBR 0x03554 /* VM Wrong Behavior - RWS */
-#define E1000_RPLOLR 0x05AF0 /* Replication Offload - RW */
-#define E1000_UTA 0x0A000 /* Unicast Table Array - RW */
-#define E1000_IOVTCL 0x05BBC /* IOV Control Register */
-#define E1000_VMRCTL 0X05D80 /* Virtual Mirror Rule Control */
-#define E1000_VMRVLAN 0x05D90 /* Virtual Mirror Rule VLAN */
-#define E1000_VMRVM 0x05DA0 /* Virtual Mirror Rule VM */
-#define E1000_MDFB 0x03558 /* Malicious Driver free block */
-#define E1000_LVMMC 0x03548 /* Last VM Misbehavior cause */
-#define E1000_TXSWC 0x05ACC /* Tx Switch Control */
-#define E1000_SCCRL 0x05DB0 /* Storm Control Control */
-#define E1000_BSCTRH 0x05DB8 /* Broadcast Storm Control Threshold */
-#define E1000_MSCTRH 0x05DBC /* Multicast Storm Control Threshold */
+#define E1000_SWPBS 0x03004 /* Switch Packet Buffer Size - RW */
+#define E1000_MBVFICR 0x00C80 /* Mailbox VF Cause - RWC */
+#define E1000_MBVFIMR 0x00C84 /* Mailbox VF int Mask - RW */
+#define E1000_VFLRE 0x00C88 /* VF Register Events - RWC */
+#define E1000_VFRE 0x00C8C /* VF Receive Enables */
+#define E1000_VFTE 0x00C90 /* VF Transmit Enables */
+#define E1000_QDE 0x02408 /* Queue Drop Enable - RW */
+#define E1000_DTXSWC 0x03500 /* DMA Tx Switch Control - RW */
+#define E1000_WVBR 0x03554 /* VM Wrong Behavior - RWS */
+#define E1000_RPLOLR 0x05AF0 /* Replication Offload - RW */
+#define E1000_UTA 0x0A000 /* Unicast Table Array - RW */
+#define E1000_IOVTCL 0x05BBC /* IOV Control Register */
+#define E1000_VMRCTL 0X05D80 /* Virtual Mirror Rule Control */
+#define E1000_VMRVLAN 0x05D90 /* Virtual Mirror Rule VLAN */
+#define E1000_VMRVM 0x05DA0 /* Virtual Mirror Rule VM */
+#define E1000_MDFB 0x03558 /* Malicious Driver free block */
+#define E1000_LVMMC 0x03548 /* Last VM Misbehavior cause */
+#define E1000_TXSWC 0x05ACC /* Tx Switch Control */
+#define E1000_SCCRL 0x05DB0 /* Storm Control Control */
+#define E1000_BSCTRH 0x05DB8 /* Broadcast Storm Control Threshold */
+#define E1000_MSCTRH 0x05DBC /* Multicast Storm Control Threshold */
/* These act per VF so an array friendly macro is used */
-#define E1000_V2PMAILBOX(_n) (0x00C40 + (4 * (_n)))
-#define E1000_P2VMAILBOX(_n) (0x00C00 + (4 * (_n)))
-#define E1000_VMBMEM(_n) (0x00800 + (64 * (_n)))
-#define E1000_VFVMBMEM(_n) (0x00800 + (_n))
-#define E1000_VMOLR(_n) (0x05AD0 + (4 * (_n)))
-#define E1000_VLVF(_n) (0x05D00 + (4 * (_n))) /* VLAN Virtual Machine
- * Filter - RW */
-#define E1000_VMVIR(_n) (0x03700 + (4 * (_n)))
-#define E1000_DVMOLR(_n) (0x0C038 + (0x40 * (_n))) /* DMA VM offload */
-/* Time Sync */
-#define E1000_TSYNCRXCTL 0x0B620 /* Rx Time Sync Control register - RW */
-#define E1000_TSYNCTXCTL 0x0B614 /* Tx Time Sync Control register - RW */
-#define E1000_TSYNCRXCFG 0x05F50 /* Time Sync Rx Configuration - RW */
-#define E1000_RXSTMPL 0x0B624 /* Rx timestamp Low - RO */
-#define E1000_RXSTMPH 0x0B628 /* Rx timestamp High - RO */
-#define E1000_RXSATRL 0x0B62C /* Rx timestamp attribute low - RO */
-#define E1000_RXSATRH 0x0B630 /* Rx timestamp attribute high - RO */
-#define E1000_TXSTMPL 0x0B618 /* Tx timestamp value Low - RO */
-#define E1000_TXSTMPH 0x0B61C /* Tx timestamp value High - RO */
-#define E1000_SYSTIML 0x0B600 /* System time register Low - RO */
-#define E1000_SYSTIMH 0x0B604 /* System time register High - RO */
-#define E1000_TIMINCA 0x0B608 /* Increment attributes register - RW */
-#define E1000_TSAUXC 0x0B640 /* Timesync Auxiliary Control register */
-#define E1000_SYSTIMR 0x0B6F8 /* System time register Residue */
-#define E1000_RXMTRL 0x0B634 /* Time sync Rx EtherType and Msg Type - RW */
-#define E1000_RXUDP 0x0B638 /* Time Sync Rx UDP Port - RW */
+#define E1000_V2PMAILBOX(_n) (0x00C40 + (4 * (_n)))
+#define E1000_P2VMAILBOX(_n) (0x00C00 + (4 * (_n)))
+#define E1000_VMBMEM(_n) (0x00800 + (64 * (_n)))
+#define E1000_VFVMBMEM(_n) (0x00800 + (_n))
+#define E1000_VMOLR(_n) (0x05AD0 + (4 * (_n)))
+/* VLAN Virtual Machine Filter - RW */
+#define E1000_VLVF(_n) (0x05D00 + (4 * (_n)))
+#define E1000_VMVIR(_n) (0x03700 + (4 * (_n)))
+#define E1000_DVMOLR(_n) (0x0C038 + (0x40 * (_n))) /* DMA VM offload */
+#define E1000_VTCTRL(_n) (0x10000 + (0x100 * (_n))) /* VT Control */
+#define E1000_TSYNCRXCTL 0x0B620 /* Rx Time Sync Control register - RW */
+#define E1000_TSYNCTXCTL 0x0B614 /* Tx Time Sync Control register - RW */
+#define E1000_TSYNCRXCFG 0x05F50 /* Time Sync Rx Configuration - RW */
+#define E1000_RXSTMPL 0x0B624 /* Rx timestamp Low - RO */
+#define E1000_RXSTMPH 0x0B628 /* Rx timestamp High - RO */
+#define E1000_RXSATRL 0x0B62C /* Rx timestamp attribute low - RO */
+#define E1000_RXSATRH 0x0B630 /* Rx timestamp attribute high - RO */
+#define E1000_TXSTMPL 0x0B618 /* Tx timestamp value Low - RO */
+#define E1000_TXSTMPH 0x0B61C /* Tx timestamp value High - RO */
+#define E1000_SYSTIML 0x0B600 /* System time register Low - RO */
+#define E1000_SYSTIMH 0x0B604 /* System time register High - RO */
+#define E1000_TIMINCA 0x0B608 /* Increment attributes register - RW */
+#define E1000_TSAUXC 0x0B640 /* Timesync Auxiliary Control register */
+#define E1000_SYSTIMR 0x0B6F8 /* System time register Residue */
+#define E1000_RXMTRL 0x0B634 /* Time sync Rx EtherType and Msg Type - RW */
+#define E1000_RXUDP 0x0B638 /* Time Sync Rx UDP Port - RW */
/* Filtering Registers */
-#define E1000_SAQF(_n) (0x05980 + (4 * (_n))) /* Source Address Queue Fltr */
-#define E1000_DAQF(_n) (0x059A0 + (4 * (_n))) /* Dest Address Queue Fltr */
-#define E1000_SPQF(_n) (0x059C0 + (4 * (_n))) /* Source Port Queue Fltr */
-#define E1000_FTQF(_n) (0x059E0 + (4 * (_n))) /* 5-tuple Queue Fltr */
-#define E1000_TTQF(_n) (0x059E0 + (4 * (_n))) /* 2-tuple Queue Fltr */
-#define E1000_SYNQF(_n) (0x055FC + (4 * (_n))) /* SYN Packet Queue Fltr */
-#define E1000_ETQF(_n) (0x05CB0 + (4 * (_n))) /* EType Queue Fltr */
+#define E1000_SAQF(_n) (0x05980 + (4 * (_n))) /* Source Address Queue Fltr */
+#define E1000_DAQF(_n) (0x059A0 + (4 * (_n))) /* Dest Address Queue Fltr */
+#define E1000_SPQF(_n) (0x059C0 + (4 * (_n))) /* Source Port Queue Fltr */
+#define E1000_FTQF(_n) (0x059E0 + (4 * (_n))) /* 5-tuple Queue Fltr */
+#define E1000_TTQF(_n) (0x059E0 + (4 * (_n))) /* 2-tuple Queue Fltr */
+#define E1000_SYNQF(_n) (0x055FC + (4 * (_n))) /* SYN Packet Queue Fltr */
+#define E1000_ETQF(_n) (0x05CB0 + (4 * (_n))) /* EType Queue Fltr */
-#define E1000_RTTDCS 0x3600 /* Reedtown Tx Desc plane control and status */
-#define E1000_RTTPCS 0x3474 /* Reedtown Tx Packet Plane control and status */
-#define E1000_RTRPCS 0x2474 /* Rx packet plane control and status */
-#define E1000_RTRUP2TC 0x05AC4 /* Rx User Priority to Traffic Class */
-#define E1000_RTTUP2TC 0x0418 /* Transmit User Priority to Traffic Class */
-#define E1000_RTTDTCRC(_n) (0x3610 + ((_n) * 4)) /* Tx Desc plane TC Rate-scheduler config */
-#define E1000_RTTPTCRC(_n) (0x3480 + ((_n) * 4)) /* Tx Packet plane TC Rate-Scheduler Config */
-#define E1000_RTRPTCRC(_n) (0x2480 + ((_n) * 4)) /* Rx Packet plane TC Rate-Scheduler Config */
-#define E1000_RTTDTCRS(_n) (0x3630 + ((_n) * 4)) /* Tx Desc Plane TC Rate-Scheduler Status */
-#define E1000_RTTDTCRM(_n) (0x3650 + ((_n) * 4)) /* Tx Desc Plane TC Rate-Scheduler MMW */
-#define E1000_RTTPTCRS(_n) (0x34A0 + ((_n) * 4)) /* Tx Packet plane TC Rate-Scheduler Status */
-#define E1000_RTTPTCRM(_n) (0x34C0 + ((_n) * 4)) /* Tx Packet plane TC Rate-scheduler MMW */
-#define E1000_RTRPTCRS(_n) (0x24A0 + ((_n) * 4)) /* Rx Packet plane TC Rate-Scheduler Status */
-#define E1000_RTRPTCRM(_n) (0x24C0 + ((_n) * 4)) /* Rx Packet plane TC Rate-Scheduler MMW */
-#define E1000_RTTDVMRM(_n) (0x3670 + ((_n) * 4)) /* Tx Desc plane VM Rate-Scheduler MMW*/
-#define E1000_RTTBCNRM(_n) (0x3690 + ((_n) * 4)) /* Tx BCN Rate-Scheduler MMW */
-#define E1000_RTTDQSEL 0x3604 /* Tx Desc Plane Queue Select */
-#define E1000_RTTDVMRC 0x3608 /* Tx Desc Plane VM Rate-Scheduler Config */
-#define E1000_RTTDVMRS 0x360C /* Tx Desc Plane VM Rate-Scheduler Status */
-#define E1000_RTTBCNRC 0x36B0 /* Tx BCN Rate-Scheduler Config */
-#define E1000_RTTBCNRS 0x36B4 /* Tx BCN Rate-Scheduler Status */
-#define E1000_RTTBCNCR 0xB200 /* Tx BCN Control Register */
-#define E1000_RTTBCNTG 0x35A4 /* Tx BCN Tagging */
-#define E1000_RTTBCNCP 0xB208 /* Tx BCN Congestion point */
-#define E1000_RTRBCNCR 0xB20C /* Rx BCN Control Register */
-#define E1000_RTTBCNRD 0x36B8 /* Tx BCN Rate Drift */
-#define E1000_PFCTOP 0x1080 /* Priority Flow Control Type and Opcode */
-#define E1000_RTTBCNIDX 0xB204 /* Tx BCN Congestion Point */
-#define E1000_RTTBCNACH 0x0B214 /* Tx BCN Control High */
-#define E1000_RTTBCNACL 0x0B210 /* Tx BCN Control Low */
+#define E1000_RTTDCS 0x3600 /* Reedtown Tx Desc plane control and status */
+#define E1000_RTTPCS 0x3474 /* Reedtown Tx Packet Plane control and status */
+#define E1000_RTRPCS 0x2474 /* Rx packet plane control and status */
+#define E1000_RTRUP2TC 0x05AC4 /* Rx User Priority to Traffic Class */
+#define E1000_RTTUP2TC 0x0418 /* Transmit User Priority to Traffic Class */
+/* Tx Desc plane TC Rate-scheduler config */
+#define E1000_RTTDTCRC(_n) (0x3610 + ((_n) * 4))
+/* Tx Packet plane TC Rate-Scheduler Config */
+#define E1000_RTTPTCRC(_n) (0x3480 + ((_n) * 4))
+/* Rx Packet plane TC Rate-Scheduler Config */
+#define E1000_RTRPTCRC(_n) (0x2480 + ((_n) * 4))
+/* Tx Desc Plane TC Rate-Scheduler Status */
+#define E1000_RTTDTCRS(_n) (0x3630 + ((_n) * 4))
+/* Tx Desc Plane TC Rate-Scheduler MMW */
+#define E1000_RTTDTCRM(_n) (0x3650 + ((_n) * 4))
+/* Tx Packet plane TC Rate-Scheduler Status */
+#define E1000_RTTPTCRS(_n) (0x34A0 + ((_n) * 4))
+/* Tx Packet plane TC Rate-scheduler MMW */
+#define E1000_RTTPTCRM(_n) (0x34C0 + ((_n) * 4))
+/* Rx Packet plane TC Rate-Scheduler Status */
+#define E1000_RTRPTCRS(_n) (0x24A0 + ((_n) * 4))
+/* Rx Packet plane TC Rate-Scheduler MMW */
+#define E1000_RTRPTCRM(_n) (0x24C0 + ((_n) * 4))
+/* Tx Desc plane VM Rate-Scheduler MMW*/
+#define E1000_RTTDVMRM(_n) (0x3670 + ((_n) * 4))
+/* Tx BCN Rate-Scheduler MMW */
+#define E1000_RTTBCNRM(_n) (0x3690 + ((_n) * 4))
+#define E1000_RTTDQSEL 0x3604 /* Tx Desc Plane Queue Select */
+#define E1000_RTTDVMRC 0x3608 /* Tx Desc Plane VM Rate-Scheduler Config */
+#define E1000_RTTDVMRS 0x360C /* Tx Desc Plane VM Rate-Scheduler Status */
+#define E1000_RTTBCNRC 0x36B0 /* Tx BCN Rate-Scheduler Config */
+#define E1000_RTTBCNRS 0x36B4 /* Tx BCN Rate-Scheduler Status */
+#define E1000_RTTBCNCR 0xB200 /* Tx BCN Control Register */
+#define E1000_RTTBCNTG 0x35A4 /* Tx BCN Tagging */
+#define E1000_RTTBCNCP 0xB208 /* Tx BCN Congestion point */
+#define E1000_RTRBCNCR 0xB20C /* Rx BCN Control Register */
+#define E1000_RTTBCNRD 0x36B8 /* Tx BCN Rate Drift */
+#define E1000_PFCTOP 0x1080 /* Priority Flow Control Type and Opcode */
+#define E1000_RTTBCNIDX 0xB204 /* Tx BCN Congestion Point */
+#define E1000_RTTBCNACH 0x0B214 /* Tx BCN Control High */
+#define E1000_RTTBCNACL 0x0B210 /* Tx BCN Control Low */
/* DMA Coalescing registers */
-#define E1000_DMACR 0x02508 /* Control Register */
-#define E1000_DMCTXTH 0x03550 /* Transmit Threshold */
-#define E1000_DMCTLX 0x02514 /* Time to Lx Request */
-#define E1000_DMCRTRH 0x05DD0 /* Receive Packet Rate Threshold */
-#define E1000_DMCCNT 0x05DD4 /* Current Rx Count */
-#define E1000_FCRTC 0x02170 /* Flow Control Rx high watermark */
-#define E1000_PCIEMISC 0x05BB8 /* PCIE misc config register */
+#define E1000_DMACR 0x02508 /* Control Register */
+#define E1000_DMCTXTH 0x03550 /* Transmit Threshold */
+#define E1000_DMCTLX 0x02514 /* Time to Lx Request */
+#define E1000_DMCRTRH 0x05DD0 /* Receive Packet Rate Threshold */
+#define E1000_DMCCNT 0x05DD4 /* Current Rx Count */
+#define E1000_FCRTC 0x02170 /* Flow Control Rx high watermark */
+#define E1000_PCIEMISC 0x05BB8 /* PCIE misc config register */
/* PCIe Parity Status Register */
-#define E1000_PCIEERRSTS 0x05BA8
+#define E1000_PCIEERRSTS 0x05BA8
-#define E1000_PROXYS 0x5F64 /* Proxying Status */
-#define E1000_PROXYFC 0x5F60 /* Proxying Filter Control */
+#define E1000_LTRMINV 0x5BB0 /* LTR Minimum Value */
+#define E1000_LTRMAXV 0x5BB4 /* LTR Maximum Value */
+#define E1000_DOBFFCTL 0x3F24 /* DMA OBFF Control Register */
+
+#define E1000_PROXYS 0x5F64 /* Proxying Status */
+#define E1000_PROXYFC 0x5F60 /* Proxying Filter Control */
/* Thermal sensor configuration and status registers */
-#define E1000_THMJT 0x08100 /* Junction Temperature */
-#define E1000_THLOWTC 0x08104 /* Low Threshold Control */
-#define E1000_THMIDTC 0x08108 /* Mid Threshold Control */
-#define E1000_THHIGHTC 0x0810C /* High Threshold Control */
-#define E1000_THSTAT 0x08110 /* Thermal Sensor Status */
+#define E1000_THMJT 0x08100 /* Junction Temperature */
+#define E1000_THLOWTC 0x08104 /* Low Threshold Control */
+#define E1000_THMIDTC 0x08108 /* Mid Threshold Control */
+#define E1000_THHIGHTC 0x0810C /* High Threshold Control */
+#define E1000_THSTAT 0x08110 /* Thermal Sensor Status */
/*Energy Efficient Ethernet "EEE" registers */
-#define E1000_IPCNFG 0x0E38 /* Internal PHY Configuration */
-#define E1000_LTRC 0x01A0 /* Latency Tolerance Reporting Control */
-#define E1000_EEER 0x0E30 /* Energy Efficient Ethernet "EEE"*/
-#define E1000_EEE_SU 0x0E34 /* EEE Setup */
-#define E1000_TLPIC 0x4148 /* EEE Tx LPI Count - TLPIC */
-#define E1000_RLPIC 0x414C /* EEE Rx LPI Count - RLPIC */
+#define E1000_IPCNFG 0x0E38 /* Internal PHY Configuration */
+#define E1000_LTRC 0x01A0 /* Latency Tolerance Reporting Control */
+#define E1000_EEER 0x0E30 /* Energy Efficient Ethernet "EEE"*/
+#define E1000_EEE_SU 0x0E34 /* EEE Setup */
+#define E1000_TLPIC 0x4148 /* EEE Tx LPI Count - TLPIC */
+#define E1000_RLPIC 0x414C /* EEE Rx LPI Count - RLPIC */
/* OS2BMC Registers */
-#define E1000_B2OSPC 0x08FE0 /* BMC2OS packets sent by BMC */
-#define E1000_B2OGPRC 0x04158 /* BMC2OS packets received by host */
-#define E1000_O2BGPTC 0x08FE4 /* OS2BMC packets received by BMC */
-#define E1000_O2BSPC 0x0415C /* OS2BMC packets transmitted by host */
+#define E1000_B2OSPC 0x08FE0 /* BMC2OS packets sent by BMC */
+#define E1000_B2OGPRC 0x04158 /* BMC2OS packets received by host */
+#define E1000_O2BGPTC 0x08FE4 /* OS2BMC packets received by BMC */
+#define E1000_O2BSPC 0x0415C /* OS2BMC packets transmitted by host */
#endif
diff --git a/sys/dev/e1000/e1000_vf.c b/sys/dev/e1000/e1000_vf.c
index 3eeda24..d1286ad 100644
--- a/sys/dev/e1000/e1000_vf.c
+++ b/sys/dev/e1000/e1000_vf.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -36,21 +36,21 @@
#include "e1000_api.h"
-static s32 e1000_init_phy_params_vf(struct e1000_hw *hw);
-static s32 e1000_init_nvm_params_vf(struct e1000_hw *hw);
-static void e1000_release_vf(struct e1000_hw *hw);
-static s32 e1000_acquire_vf(struct e1000_hw *hw);
-static s32 e1000_setup_link_vf(struct e1000_hw *hw);
-static s32 e1000_get_bus_info_pcie_vf(struct e1000_hw *hw);
-static s32 e1000_init_mac_params_vf(struct e1000_hw *hw);
-static s32 e1000_check_for_link_vf(struct e1000_hw *hw);
-static s32 e1000_get_link_up_info_vf(struct e1000_hw *hw, u16 *speed,
- u16 *duplex);
-static s32 e1000_init_hw_vf(struct e1000_hw *hw);
-static s32 e1000_reset_hw_vf(struct e1000_hw *hw);
-static void e1000_update_mc_addr_list_vf(struct e1000_hw *hw, u8 *, u32);
-static void e1000_rar_set_vf(struct e1000_hw *, u8 *, u32);
-static s32 e1000_read_mac_addr_vf(struct e1000_hw *);
+static s32 e1000_init_phy_params_vf(struct e1000_hw *hw);
+static s32 e1000_init_nvm_params_vf(struct e1000_hw *hw);
+static void e1000_release_vf(struct e1000_hw *hw);
+static s32 e1000_acquire_vf(struct e1000_hw *hw);
+static s32 e1000_setup_link_vf(struct e1000_hw *hw);
+static s32 e1000_get_bus_info_pcie_vf(struct e1000_hw *hw);
+static s32 e1000_init_mac_params_vf(struct e1000_hw *hw);
+static s32 e1000_check_for_link_vf(struct e1000_hw *hw);
+static s32 e1000_get_link_up_info_vf(struct e1000_hw *hw, u16 *speed,
+ u16 *duplex);
+static s32 e1000_init_hw_vf(struct e1000_hw *hw);
+static s32 e1000_reset_hw_vf(struct e1000_hw *hw);
+static void e1000_update_mc_addr_list_vf(struct e1000_hw *hw, u8 *, u32);
+static void e1000_rar_set_vf(struct e1000_hw *, u8 *, u32);
+static s32 e1000_read_mac_addr_vf(struct e1000_hw *);
/**
* e1000_init_phy_params_vf - Inits PHY params
@@ -219,7 +219,7 @@ static s32 e1000_get_bus_info_pcie_vf(struct e1000_hw *hw)
* the status register's data which is often stale and inaccurate.
**/
static s32 e1000_get_link_up_info_vf(struct e1000_hw *hw, u16 *speed,
- u16 *duplex)
+ u16 *duplex)
{
s32 status;
@@ -288,7 +288,7 @@ static s32 e1000_reset_hw_vf(struct e1000_hw *hw)
ret_val = mbx->ops.read_posted(hw, msgbuf, 3, 0);
if (!ret_val) {
if (msgbuf[0] == (E1000_VF_RESET |
- E1000_VT_MSGTYPE_ACK))
+ E1000_VT_MSGTYPE_ACK))
memcpy(hw->mac.perm_addr, addr, 6);
else
ret_val = -E1000_ERR_MAC_INIT;
@@ -369,11 +369,22 @@ static u32 e1000_hash_mc_addr_vf(struct e1000_hw *hw, u8 *mc_addr)
bit_shift++;
hash_value = hash_mask & (((mc_addr[4] >> (8 - bit_shift)) |
- (((u16) mc_addr[5]) << bit_shift)));
+ (((u16) mc_addr[5]) << bit_shift)));
return hash_value;
}
+static void e1000_write_msg_read_ack(struct e1000_hw *hw,
+ u32 *msg, u16 size)
+{
+ struct e1000_mbx_info *mbx = &hw->mbx;
+ u32 retmsg[E1000_VFMAILBOX_SIZE];
+ s32 retval = mbx->ops.write_posted(hw, msg, size, 0);
+
+ if (!retval)
+ mbx->ops.read_posted(hw, retmsg, E1000_VFMAILBOX_SIZE, 0);
+}
+
/**
* e1000_update_mc_addr_list_vf - Update Multicast addresses
* @hw: pointer to the HW structure
@@ -384,9 +395,8 @@ static u32 e1000_hash_mc_addr_vf(struct e1000_hw *hw, u8 *mc_addr)
* The caller must have a packed mc_addr_list of multicast addresses.
**/
void e1000_update_mc_addr_list_vf(struct e1000_hw *hw,
- u8 *mc_addr_list, u32 mc_addr_count)
+ u8 *mc_addr_list, u32 mc_addr_count)
{
- struct e1000_mbx_info *mbx = &hw->mbx;
u32 msgbuf[E1000_VFMAILBOX_SIZE];
u16 *hash_list = (u16 *)&msgbuf[1];
u32 hash_value;
@@ -420,7 +430,7 @@ void e1000_update_mc_addr_list_vf(struct e1000_hw *hw,
mc_addr_list += ETH_ADDR_LEN;
}
- mbx->ops.write_posted(hw, msgbuf, E1000_VFMAILBOX_SIZE, 0);
+ e1000_write_msg_read_ack(hw, msgbuf, E1000_VFMAILBOX_SIZE);
}
/**
@@ -431,7 +441,6 @@ void e1000_update_mc_addr_list_vf(struct e1000_hw *hw,
**/
void e1000_vfta_set_vf(struct e1000_hw *hw, u16 vid, bool set)
{
- struct e1000_mbx_info *mbx = &hw->mbx;
u32 msgbuf[2];
msgbuf[0] = E1000_VF_SET_VLAN;
@@ -440,7 +449,7 @@ void e1000_vfta_set_vf(struct e1000_hw *hw, u16 vid, bool set)
if (set)
msgbuf[0] |= E1000_VF_SET_VLAN_ADD;
- mbx->ops.write_posted(hw, msgbuf, 2, 0);
+ e1000_write_msg_read_ack(hw, msgbuf, 2);
}
/** e1000_rlpml_set_vf - Set the maximum receive packet length
@@ -449,13 +458,12 @@ void e1000_vfta_set_vf(struct e1000_hw *hw, u16 vid, bool set)
**/
void e1000_rlpml_set_vf(struct e1000_hw *hw, u16 max_size)
{
- struct e1000_mbx_info *mbx = &hw->mbx;
u32 msgbuf[2];
msgbuf[0] = E1000_VF_SET_LPE;
msgbuf[1] = max_size;
- mbx->ops.write_posted(hw, msgbuf, 2, 0);
+ e1000_write_msg_read_ack(hw, msgbuf, 2);
}
/**
diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c
index 10d556e..3d21da3 100644
--- a/sys/dev/e1000/if_em.c
+++ b/sys/dev/e1000/if_em.c
@@ -35,6 +35,7 @@
#ifdef HAVE_KERNEL_OPTION_HEADERS
#include "opt_device_polling.h"
#include "opt_inet.h"
+#include "opt_inet6.h"
#endif
#include <sys/param.h>
@@ -93,7 +94,7 @@ int em_display_debug_stats = 0;
/*********************************************************************
* Driver version:
*********************************************************************/
-char em_driver_version[] = "7.2.3";
+char em_driver_version[] = "7.3.2";
/*********************************************************************
* PCI Device ID Table
@@ -286,6 +287,7 @@ static void em_handle_link(void *context, int pending);
static void em_set_sysctl_value(struct adapter *, const char *,
const char *, int *, int);
+static int em_set_flowcntl(SYSCTL_HANDLER_ARGS);
static __inline void em_rx_discard(struct rx_ring *, int);
@@ -382,13 +384,8 @@ static int em_rx_process_limit = 100;
TUNABLE_INT("hw.em.rx_process_limit", &em_rx_process_limit);
SYSCTL_INT(_hw_em, OID_AUTO, rx_process_limit, CTLFLAG_RDTUN,
&em_rx_process_limit, 0,
- "Maximum number of received packets to process at a time, -1 means unlimited");
-
-/* Flow control setting - default to FULL */
-static int em_fc_setting = e1000_fc_full;
-TUNABLE_INT("hw.em.fc_setting", &em_fc_setting);
-SYSCTL_INT(_hw_em, OID_AUTO, fc_setting, CTLFLAG_RDTUN, &em_fc_setting, 0,
- "Flow control");
+ "Maximum number of received packets to process "
+ "at a time, -1 means unlimited");
/* Energy efficient ethernet - default to OFF */
static int eee_setting = 0;
@@ -399,6 +396,10 @@ SYSCTL_INT(_hw_em, OID_AUTO, eee_setting, CTLFLAG_RDTUN, &eee_setting, 0,
/* Global used in WOL setup with multiport cards */
static int global_quad_port_a = 0;
+#ifdef DEV_NETMAP /* see ixgbe.c for details */
+#include <dev/netmap/if_em_netmap.h>
+#endif /* DEV_NETMAP */
+
/*********************************************************************
* Device identification routine
*
@@ -469,6 +470,11 @@ em_attach(device_t dev)
INIT_DEBUGOUT("em_attach: begin");
+ if (resource_disabled("em", device_get_unit(dev))) {
+ device_printf(dev, "Disabled by device hint\n");
+ return (ENXIO);
+ }
+
adapter = device_get_softc(dev);
adapter->dev = adapter->osdep.dev = dev;
hw = &adapter->hw;
@@ -485,6 +491,11 @@ em_attach(device_t dev)
OID_AUTO, "debug", CTLTYPE_INT|CTLFLAG_RW, adapter, 0,
em_sysctl_debug_info, "I", "Debug Information");
+ SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
+ OID_AUTO, "fc", CTLTYPE_INT|CTLFLAG_RW, adapter, 0,
+ em_set_flowcntl, "I", "Flow Control");
+
callout_init_mtx(&adapter->timer, &adapter->core_mtx, 0);
/* Determine hardware and mac info */
@@ -556,11 +567,6 @@ em_attach(device_t dev)
"max number of rx packets to process", &adapter->rx_process_limit,
em_rx_process_limit);
- /* Sysctl for setting the interface flow control */
- em_set_sysctl_value(adapter, "flow_control",
- "configure flow control",
- &adapter->fc_setting, em_fc_setting);
-
/*
* Validate number of transmit and receive descriptors. It
* must not exceed hardware maximum, and must be multiple
@@ -710,10 +716,14 @@ em_attach(device_t dev)
em_get_hw_control(adapter);
/* Tell the stack that the interface is not active */
- adapter->ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ adapter->ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ adapter->ifp->if_drv_flags |= IFF_DRV_OACTIVE;
adapter->led_dev = led_create(em_led_func, adapter,
device_get_nameunit(dev));
+#ifdef DEV_NETMAP
+ em_netmap_attach(adapter);
+#endif /* DEV_NETMAP */
INIT_DEBUGOUT("em_attach: end");
@@ -785,6 +795,10 @@ em_detach(device_t dev)
ether_ifdetach(adapter->ifp);
callout_drain(&adapter->timer);
+#ifdef DEV_NETMAP
+ netmap_detach(ifp);
+#endif /* DEV_NETMAP */
+
em_free_pci_resources(adapter);
bus_generic_detach(dev);
if_free(ifp);
@@ -836,6 +850,8 @@ em_resume(device_t dev)
struct ifnet *ifp = adapter->ifp;
EM_CORE_LOCK(adapter);
+ if (adapter->hw.mac.type == e1000_pch2lan)
+ e1000_resume_workarounds_pchlan(&adapter->hw);
em_init_locked(adapter);
em_init_manageability(adapter);
EM_CORE_UNLOCK(adapter);
@@ -845,17 +861,15 @@ em_resume(device_t dev)
}
+#ifdef EM_MULTIQUEUE
/*********************************************************************
- * Transmit entry point
+ * Multiqueue Transmit routines
*
- * em_start is called by the stack to initiate a transmit.
- * The driver will remain in this routine as long as there are
- * packets to transmit and transmit resources are available.
- * In case resources are not available stack is notified and
- * the packet is requeued.
+ * em_mq_start is called by the stack to initiate a transmit.
+ * however, if busy the driver can queue the request rather
+ * than do an immediate send. It is this that is an advantage
+ * in this driver, rather than also having multiple tx queues.
**********************************************************************/
-
-#ifdef EM_MULTIQUEUE
static int
em_mq_start_locked(struct ifnet *ifp, struct tx_ring *txr, struct mbuf *m)
{
@@ -870,10 +884,6 @@ em_mq_start_locked(struct ifnet *ifp, struct tx_ring *txr, struct mbuf *m)
return (err);
}
- /* Call cleanup if number of TX descriptors low */
- if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
- em_txeof(txr);
-
enq = 0;
if (m == NULL) {
next = drbr_dequeue(ifp, txr->br);
@@ -896,10 +906,6 @@ em_mq_start_locked(struct ifnet *ifp, struct tx_ring *txr, struct mbuf *m)
ETHER_BPF_MTAP(ifp, next);
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
break;
- if (txr->tx_avail < EM_MAX_SCATTER) {
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
- break;
- }
next = drbr_dequeue(ifp, txr->br);
}
@@ -908,6 +914,11 @@ em_mq_start_locked(struct ifnet *ifp, struct tx_ring *txr, struct mbuf *m)
txr->queue_status = EM_QUEUE_WORKING;
txr->watchdog_time = ticks;
}
+
+ if (txr->tx_avail < EM_MAX_SCATTER)
+ em_txeof(txr);
+ if (txr->tx_avail < EM_MAX_SCATTER)
+ ifp->if_drv_flags |= IFF_DRV_OACTIVE;
return (err);
}
@@ -948,7 +959,6 @@ em_qflush(struct ifnet *ifp)
}
if_qflush(ifp);
}
-
#endif /* EM_MULTIQUEUE */
static void
@@ -984,7 +994,6 @@ em_start_locked(struct ifnet *ifp, struct tx_ring *txr)
if (em_xmit(txr, &m_head)) {
if (m_head == NULL)
break;
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
break;
}
@@ -1011,6 +1020,12 @@ em_start(struct ifnet *ifp)
em_start_locked(ifp, txr);
EM_TX_UNLOCK(txr);
}
+ /*
+ ** If we went inactive schedule
+ ** a task to clean up.
+ */
+ if (ifp->if_drv_flags & IFF_DRV_OACTIVE)
+ taskqueue_enqueue(txr->tq, &txr->tx_task);
return;
}
@@ -1027,11 +1042,12 @@ static int
em_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
{
struct adapter *adapter = ifp->if_softc;
- struct ifreq *ifr = (struct ifreq *)data;
-#ifdef INET
- struct ifaddr *ifa = (struct ifaddr *)data;
+ struct ifreq *ifr = (struct ifreq *)data;
+#if defined(INET) || defined(INET6)
+ struct ifaddr *ifa = (struct ifaddr *)data;
#endif
- int error = 0;
+ bool avoid_reset = FALSE;
+ int error = 0;
if (adapter->in_detach)
return (error);
@@ -1039,23 +1055,26 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
switch (command) {
case SIOCSIFADDR:
#ifdef INET
- if (ifa->ifa_addr->sa_family == AF_INET) {
- /*
- * XXX
- * Since resetting hardware takes a very long time
- * and results in link renegotiation we only
- * initialize the hardware only when it is absolutely
- * required.
- */
+ if (ifa->ifa_addr->sa_family == AF_INET)
+ avoid_reset = TRUE;
+#endif
+#ifdef INET6
+ if (ifa->ifa_addr->sa_family == AF_INET6)
+ avoid_reset = TRUE;
+#endif
+ /*
+ ** Calling init results in link renegotiation,
+ ** so we avoid doing it when possible.
+ */
+ if (avoid_reset) {
ifp->if_flags |= IFF_UP;
- if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) {
- EM_CORE_LOCK(adapter);
- em_init_locked(adapter);
- EM_CORE_UNLOCK(adapter);
- }
- arp_ifinit(ifp, ifa);
- } else
+ if (!(ifp->if_drv_flags & IFF_DRV_RUNNING))
+ em_init(adapter);
+#ifdef INET
+ if (!(ifp->if_flags & IFF_NOARP))
+ arp_ifinit(ifp, ifa);
#endif
+ } else
error = ether_ioctl(ifp, command, data);
break;
case SIOCSIFMTU:
@@ -1072,6 +1091,7 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
case e1000_ich10lan:
case e1000_pch2lan:
case e1000_82574:
+ case e1000_82583:
case e1000_80003es2lan: /* 9K Jumbo Frame size */
max_frame_size = 9234;
break;
@@ -1079,7 +1099,6 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
max_frame_size = 4096;
break;
/* Adapters that do not support jumbo frames */
- case e1000_82583:
case e1000_ich8lan:
max_frame_size = ETHER_MAX_LEN;
break;
@@ -1134,11 +1153,6 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
}
break;
case SIOCSIFMEDIA:
- /*
- ** As the speed/duplex settings are being
- ** changed, we need to reset the PHY.
- */
- adapter->hw.phy.reset_disable = FALSE;
/* Check SOL/IDER usage */
EM_CORE_LOCK(adapter);
if (e1000_check_reset_block(&adapter->hw)) {
@@ -1197,6 +1211,10 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
ifp->if_capenable ^= IFCAP_VLAN_HWFILTER;
reinit = 1;
}
+ if (mask & IFCAP_VLAN_HWTSO) {
+ ifp->if_capenable ^= IFCAP_VLAN_HWTSO;
+ reinit = 1;
+ }
if ((mask & IFCAP_WOL) &&
(ifp->if_capabilities & IFCAP_WOL) != 0) {
if (mask & IFCAP_WOL_MCAST)
@@ -1235,7 +1253,6 @@ em_init_locked(struct adapter *adapter)
{
struct ifnet *ifp = adapter->ifp;
device_t dev = adapter->dev;
- u32 pba;
INIT_DEBUGOUT("em_init: begin");
@@ -1244,46 +1261,6 @@ em_init_locked(struct adapter *adapter)
em_disable_intr(adapter);
callout_stop(&adapter->timer);
- /*
- * Packet Buffer Allocation (PBA)
- * Writing PBA sets the receive portion of the buffer
- * the remainder is used for the transmit buffer.
- */
- switch (adapter->hw.mac.type) {
- /* Total Packet Buffer on these is 48K */
- case e1000_82571:
- case e1000_82572:
- case e1000_80003es2lan:
- pba = E1000_PBA_32K; /* 32K for Rx, 16K for Tx */
- break;
- case e1000_82573: /* 82573: Total Packet Buffer is 32K */
- pba = E1000_PBA_12K; /* 12K for Rx, 20K for Tx */
- break;
- case e1000_82574:
- case e1000_82583:
- pba = E1000_PBA_20K; /* 20K for Rx, 20K for Tx */
- break;
- case e1000_ich8lan:
- pba = E1000_PBA_8K;
- break;
- case e1000_ich9lan:
- case e1000_ich10lan:
- pba = E1000_PBA_10K;
- break;
- case e1000_pchlan:
- case e1000_pch2lan:
- pba = E1000_PBA_26K;
- break;
- default:
- if (adapter->max_frame_size > 8192)
- pba = E1000_PBA_40K; /* 40K for Rx, 24K for Tx */
- else
- pba = E1000_PBA_48K; /* 48K for Rx, 16K for Tx */
- }
-
- INIT_DEBUGOUT1("em_init: pba=%dK",pba);
- E1000_WRITE_REG(&adapter->hw, E1000_PBA, pba);
-
/* Get the latest mac address, User can use a LAA */
bcopy(IF_LLADDR(adapter->ifp), adapter->hw.mac.addr,
ETHER_ADDR_LEN);
@@ -1362,6 +1339,7 @@ em_init_locked(struct adapter *adapter)
/* Don't lose promiscuous settings */
em_set_promisc(adapter);
+ /* Set the interface as ACTIVE */
ifp->if_drv_flags |= IFF_DRV_RUNNING;
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
@@ -1392,9 +1370,6 @@ em_init_locked(struct adapter *adapter)
/* AMT based hardware can now take control from firmware */
if (adapter->has_manage && adapter->has_amt)
em_get_hw_control(adapter);
-
- /* Don't reset the phy next time init gets called */
- adapter->hw.phy.reset_disable = TRUE;
}
static void
@@ -1984,6 +1959,14 @@ retry:
em_transmit_checksum_setup(txr, m_head,
ip_off, ip, &txd_upper, &txd_lower);
+ if (m_head->m_flags & M_VLANTAG) {
+ /* Set the vlan id. */
+ txd_upper |=
+ (htole16(m_head->m_pkthdr.ether_vtag) << 16);
+ /* Tell hardware to add tag */
+ txd_lower |= htole32(E1000_TXD_CMD_VLE);
+ }
+
i = txr->next_avail_desc;
/* Set up our transmit descriptors */
@@ -2041,15 +2024,13 @@ retry:
if (tso_desc) /* TSO used an extra for sentinel */
txr->tx_avail -= txd_used;
- if (m_head->m_flags & M_VLANTAG) {
- /* Set the vlan id. */
- ctxd->upper.fields.special =
- htole16(m_head->m_pkthdr.ether_vtag);
- /* Tell hardware to add tag */
- ctxd->lower.data |= htole32(E1000_TXD_CMD_VLE);
- }
-
tx_buffer->m_head = m_head;
+ /*
+ ** Here we swap the map so the last descriptor,
+ ** which gets the completion interrupt has the
+ ** real map, and the first descriptor gets the
+ ** unused map from this descriptor.
+ */
tx_buffer_mapped->map = tx_buffer->map;
tx_buffer->map = map;
bus_dmamap_sync(txr->txtag, map, BUS_DMASYNC_PREWRITE);
@@ -2219,22 +2200,21 @@ em_local_timer(void *arg)
else
trigger = E1000_ICS_RXDMT0;
- /*
- ** Don't do TX watchdog check if we've been paused
- */
- if (adapter->pause_frames) {
- adapter->pause_frames = 0;
- goto out;
- }
/*
** Check on the state of the TX queue(s), this
** can be done without the lock because its RO
** and the HUNG state will be static if set.
*/
- for (int i = 0; i < adapter->num_queues; i++, txr++)
- if (txr->queue_status == EM_QUEUE_HUNG)
+ for (int i = 0; i < adapter->num_queues; i++, txr++) {
+ if ((txr->queue_status == EM_QUEUE_HUNG) &&
+ (adapter->pause_frames == 0))
goto hung;
-out:
+ /* Schedule a TX tasklet if needed */
+ if (txr->tx_avail <= EM_MAX_SCATTER)
+ taskqueue_enqueue(txr->tq, &txr->tx_task);
+ }
+
+ adapter->pause_frames = 0;
callout_reset(&adapter->timer, hz, em_local_timer, adapter);
#ifndef DEVICE_POLLING
/* Trigger an RX interrupt to guarantee mbuf refresh */
@@ -2253,6 +2233,7 @@ hung:
txr->me, txr->tx_avail, txr->next_to_clean);
ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
adapter->watchdog_events++;
+ adapter->pause_frames = 0;
em_init_locked(adapter);
}
@@ -2351,7 +2332,8 @@ em_stop(void *arg)
callout_stop(&adapter->timer);
/* Tell the stack that the interface is no longer active */
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ ifp->if_drv_flags |= IFF_DRV_OACTIVE;
/* Unarm watchdog timer. */
for (int i = 0; i < adapter->num_queues; i++, txr++) {
@@ -2447,6 +2429,7 @@ int
em_allocate_legacy(struct adapter *adapter)
{
device_t dev = adapter->dev;
+ struct tx_ring *txr = adapter->tx_rings;
int error, rid = 0;
/* Manually turn off all interrupts */
@@ -2468,11 +2451,17 @@ em_allocate_legacy(struct adapter *adapter)
* deferred processing contexts.
*/
TASK_INIT(&adapter->que_task, 0, em_handle_que, adapter);
- TASK_INIT(&adapter->link_task, 0, em_handle_link, adapter);
adapter->tq = taskqueue_create_fast("em_taskq", M_NOWAIT,
taskqueue_thread_enqueue, &adapter->tq);
- taskqueue_start_threads(&adapter->tq, 1, PI_NET, "%s taskq",
+ taskqueue_start_threads(&adapter->tq, 1, PI_NET, "%s que",
device_get_nameunit(adapter->dev));
+ /* Use a TX only tasklet for local timer */
+ TASK_INIT(&txr->tx_task, 0, em_handle_tx, txr);
+ txr->tq = taskqueue_create_fast("em_txq", M_NOWAIT,
+ taskqueue_thread_enqueue, &txr->tq);
+ taskqueue_start_threads(&txr->tq, 1, PI_NET, "%s txq",
+ device_get_nameunit(adapter->dev));
+ TASK_INIT(&adapter->link_task, 0, em_handle_link, adapter);
if ((error = bus_setup_intr(dev, adapter->res, INTR_TYPE_NET,
em_irq_fast, NULL, adapter, &adapter->tag)) != 0) {
device_printf(dev, "Failed to register fast interrupt "
@@ -2489,7 +2478,8 @@ em_allocate_legacy(struct adapter *adapter)
*
* Setup the MSIX Interrupt handlers
* This is not really Multiqueue, rather
- * its just multiple interrupt vectors.
+ * its just seperate interrupt vectors
+ * for TX, RX, and Link.
*
**********************************************************************/
int
@@ -2681,7 +2671,6 @@ em_setup_msix(struct adapter *adapter)
device_t dev = adapter->dev;
int val = 0;
-
/*
** Setup MSI/X for Hartwell: tests have shown
** use of two queues to be unstable, and to
@@ -2701,16 +2690,18 @@ em_setup_msix(struct adapter *adapter)
goto msi;
}
val = pci_msix_count(dev);
- if (val < 3) {
+ /* We only need 3 vectors */
+ if (val > 3)
+ val = 3;
+ if ((val != 3) && (val != 5)) {
bus_release_resource(dev, SYS_RES_MEMORY,
PCIR_BAR(EM_MSIX_BAR), adapter->msix_mem);
adapter->msix_mem = NULL;
device_printf(adapter->dev,
- "MSIX: insufficient vectors, using MSI\n");
+ "MSIX: incorrect vectors, using MSI\n");
goto msi;
}
- val = 3;
- adapter->num_queues = 1;
+
if (pci_alloc_msix(dev, &val) == 0) {
device_printf(adapter->dev,
"Using MSIX interrupts "
@@ -2745,6 +2736,7 @@ em_reset(struct adapter *adapter)
struct ifnet *ifp = adapter->ifp;
struct e1000_hw *hw = &adapter->hw;
u16 rx_buffer_size;
+ u32 pba;
INIT_DEBUGOUT("em_reset: begin");
@@ -2760,6 +2752,48 @@ em_reset(struct adapter *adapter)
}
/*
+ * Packet Buffer Allocation (PBA)
+ * Writing PBA sets the receive portion of the buffer
+ * the remainder is used for the transmit buffer.
+ */
+ switch (hw->mac.type) {
+ /* Total Packet Buffer on these is 48K */
+ case e1000_82571:
+ case e1000_82572:
+ case e1000_80003es2lan:
+ pba = E1000_PBA_32K; /* 32K for Rx, 16K for Tx */
+ break;
+ case e1000_82573: /* 82573: Total Packet Buffer is 32K */
+ pba = E1000_PBA_12K; /* 12K for Rx, 20K for Tx */
+ break;
+ case e1000_82574:
+ case e1000_82583:
+ pba = E1000_PBA_20K; /* 20K for Rx, 20K for Tx */
+ break;
+ case e1000_ich8lan:
+ pba = E1000_PBA_8K;
+ break;
+ case e1000_ich9lan:
+ case e1000_ich10lan:
+ /* Boost Receive side for jumbo frames */
+ if (adapter->max_frame_size > 4096)
+ pba = E1000_PBA_14K;
+ else
+ pba = E1000_PBA_10K;
+ break;
+ case e1000_pchlan:
+ case e1000_pch2lan:
+ pba = E1000_PBA_26K;
+ break;
+ default:
+ if (adapter->max_frame_size > 8192)
+ pba = E1000_PBA_40K; /* 40K for Rx, 24K for Tx */
+ else
+ pba = E1000_PBA_48K; /* 48K for Rx, 16K for Tx */
+ }
+ E1000_WRITE_REG(&adapter->hw, E1000_PBA, pba);
+
+ /*
* These parameters control the automatic generation (Tx) and
* response (Rx) to Ethernet PAUSE frames.
* - High water mark should allow for at least two frames to be
@@ -2774,11 +2808,15 @@ em_reset(struct adapter *adapter)
* - The pause time is fairly large at 1000 x 512ns = 512 usec.
*/
rx_buffer_size = ((E1000_READ_REG(hw, E1000_PBA) & 0xffff) << 10 );
-
hw->fc.high_water = rx_buffer_size -
roundup2(adapter->max_frame_size, 1024);
hw->fc.low_water = hw->fc.high_water - 1500;
+ if (adapter->fc) /* locally set flow control value? */
+ hw->fc.requested_mode = adapter->fc;
+ else
+ hw->fc.requested_mode = e1000_fc_full;
+
if (hw->mac.type == e1000_80003es2lan)
hw->fc.pause_time = 0xFFFF;
else
@@ -2786,15 +2824,22 @@ em_reset(struct adapter *adapter)
hw->fc.send_xon = TRUE;
- /* Set Flow control, use the tunable location if sane */
- hw->fc.requested_mode = adapter->fc_setting;
-
- /* Workaround: no TX flow ctrl for PCH */
- if (hw->mac.type == e1000_pchlan)
+ /* Device specific overrides/settings */
+ switch (hw->mac.type) {
+ case e1000_pchlan:
+ /* Workaround: no TX flow ctrl for PCH */
hw->fc.requested_mode = e1000_fc_rx_pause;
-
- /* Override - settings for PCH2LAN, ya its magic :) */
- if (hw->mac.type == e1000_pch2lan) {
+ hw->fc.pause_time = 0xFFFF; /* override */
+ if (ifp->if_mtu > ETHERMTU) {
+ hw->fc.high_water = 0x3500;
+ hw->fc.low_water = 0x1500;
+ } else {
+ hw->fc.high_water = 0x5000;
+ hw->fc.low_water = 0x3000;
+ }
+ hw->fc.refresh_time = 0x1000;
+ break;
+ case e1000_pch2lan:
hw->fc.high_water = 0x5C20;
hw->fc.low_water = 0x5048;
hw->fc.pause_time = 0x0650;
@@ -2804,13 +2849,26 @@ em_reset(struct adapter *adapter)
E1000_WRITE_REG(hw, E1000_PBA, 12);
else
E1000_WRITE_REG(hw, E1000_PBA, 26);
+ break;
+ case e1000_ich9lan:
+ case e1000_ich10lan:
+ if (ifp->if_mtu > ETHERMTU) {
+ hw->fc.high_water = 0x2800;
+ hw->fc.low_water = hw->fc.high_water - 8;
+ break;
+ }
+ /* else fall thru */
+ default:
+ if (hw->mac.type == e1000_80003es2lan)
+ hw->fc.pause_time = 0xFFFF;
+ break;
}
/* Issue a global reset */
e1000_reset_hw(hw);
E1000_WRITE_REG(hw, E1000_WUC, 0);
em_disable_aspm(adapter);
-
+ /* and a re-init */
if (e1000_init_hw(hw) < 0) {
device_printf(dev, "Hardware Initialization Failed\n");
return;
@@ -2855,28 +2913,25 @@ em_setup_interface(device_t dev, struct adapter *adapter)
ifp->if_capabilities = ifp->if_capenable = 0;
#ifdef EM_MULTIQUEUE
- /* Multiqueue tx functions */
+ /* Multiqueue stack interface */
ifp->if_transmit = em_mq_start;
ifp->if_qflush = em_qflush;
#endif
ifp->if_capabilities |= IFCAP_HWCSUM | IFCAP_VLAN_HWCSUM;
- ifp->if_capenable |= IFCAP_HWCSUM | IFCAP_VLAN_HWCSUM;
-
- /* Enable TSO by default, can disable with ifconfig */
ifp->if_capabilities |= IFCAP_TSO4;
- ifp->if_capenable |= IFCAP_TSO4;
-
/*
* Tell the upper layer(s) we
* support full VLAN capability
*/
ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header);
- ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU;
- ifp->if_capenable |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU;
+ ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING
+ | IFCAP_VLAN_HWTSO
+ | IFCAP_VLAN_MTU;
+ ifp->if_capenable = ifp->if_capabilities;
/*
- ** Dont turn this on by default, if vlans are
+ ** Don't turn this on by default, if vlans are
** created on another pseudo device (eg. lagg)
** then vlan events are not passed thru, breaking
** operation, but with HW FILTER off it works. If
@@ -3213,9 +3268,17 @@ em_setup_transmit_ring(struct tx_ring *txr)
struct adapter *adapter = txr->adapter;
struct em_buffer *txbuf;
int i;
+#ifdef DEV_NETMAP
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_slot *slot;
+#endif /* DEV_NETMAP */
/* Clear the old descriptor contents */
EM_TX_LOCK(txr);
+#ifdef DEV_NETMAP
+ slot = netmap_reset(na, NR_TX, txr->me, 0);
+#endif /* DEV_NETMAP */
+
bzero((void *)txr->tx_base,
(sizeof(struct e1000_tx_desc)) * adapter->num_tx_desc);
/* Reset indices */
@@ -3232,6 +3295,22 @@ em_setup_transmit_ring(struct tx_ring *txr)
m_freem(txbuf->m_head);
txbuf->m_head = NULL;
}
+#ifdef DEV_NETMAP
+ if (slot) {
+ int si = i + na->tx_rings[txr->me].nkr_hwofs;
+ void *addr;
+
+ if (si >= na->num_tx_desc)
+ si -= na->num_tx_desc;
+ addr = NMB(slot + si);
+ txr->tx_base[i].buffer_addr =
+ htole64(vtophys(addr));
+ /* reload the map for netmap mode */
+ netmap_load_map(txr->txtag,
+ txbuf->map, addr, na->buff_size);
+ }
+#endif /* DEV_NETMAP */
+
/* clear the watch index */
txbuf->next_eop = -1;
}
@@ -3304,11 +3383,6 @@ em_initialize_transmit_unit(struct adapter *adapter)
/* Set the default values for the Tx Inter Packet Gap timer */
switch (adapter->hw.mac.type) {
- case e1000_82542:
- tipg = DEFAULT_82542_TIPG_IPGT;
- tipg |= DEFAULT_82542_TIPG_IPGR1 << E1000_TIPG_IPGR1_SHIFT;
- tipg |= DEFAULT_82542_TIPG_IPGR2 << E1000_TIPG_IPGR2_SHIFT;
- break;
case e1000_80003es2lan:
tipg = DEFAULT_82543_TIPG_IPGR1;
tipg |= DEFAULT_80003ES2LAN_TIPG_IPGR2 <<
@@ -3682,6 +3756,19 @@ em_txeof(struct tx_ring *txr)
struct ifnet *ifp = adapter->ifp;
EM_TX_LOCK_ASSERT(txr);
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_adapter *na = NA(ifp);
+
+ selwakeuppri(&na->tx_rings[txr->me].si, PI_NET);
+ EM_TX_UNLOCK(txr);
+ EM_CORE_LOCK(adapter);
+ selwakeuppri(&na->tx_rings[na->num_queues + 1].si, PI_NET);
+ EM_CORE_UNLOCK(adapter);
+ EM_TX_LOCK(txr);
+ return (FALSE);
+ }
+#endif /* DEV_NETMAP */
/* No work, make sure watchdog is off */
if (txr->tx_avail == adapter->num_tx_desc) {
@@ -3765,9 +3852,12 @@ em_txeof(struct tx_ring *txr)
/*
* If we have a minimum free, clear IFF_DRV_OACTIVE
* to tell the stack that it is OK to send packets.
+ * Notice that all writes of OACTIVE happen under the
+ * TX lock which, with a single queue, guarantees
+ * sanity.
*/
- if (txr->tx_avail > EM_MAX_SCATTER)
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if (txr->tx_avail >= EM_MAX_SCATTER)
+ ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
/* Disable watchdog if all clean */
if (txr->tx_avail == adapter->num_tx_desc) {
@@ -3930,26 +4020,31 @@ em_setup_receive_ring(struct rx_ring *rxr)
struct adapter *adapter = rxr->adapter;
struct em_buffer *rxbuf;
bus_dma_segment_t seg[1];
- int i, j, nsegs, error = 0;
+ int rsize, nsegs, error;
/* Clear the ring contents */
EM_RX_LOCK(rxr);
+ rsize = roundup2(adapter->num_rx_desc *
+ sizeof(struct e1000_rx_desc), EM_DBA_ALIGN);
+ bzero((void *)rxr->rx_base, rsize);
- /* Invalidate all descriptors */
- for (i = 0; i < adapter->num_rx_desc; i++) {
- struct e1000_rx_desc* cur;
- cur = &rxr->rx_base[i];
- cur->status = 0;
+ /*
+ ** Free current RX buffer structs and their mbufs
+ */
+ for (int i = 0; i < adapter->num_rx_desc; i++) {
+ rxbuf = &rxr->rx_buffers[i];
+ if (rxbuf->m_head != NULL) {
+ bus_dmamap_sync(rxr->rxtag, rxbuf->map,
+ BUS_DMASYNC_POSTREAD);
+ bus_dmamap_unload(rxr->rxtag, rxbuf->map);
+ m_freem(rxbuf->m_head);
+ }
}
/* Now replenish the mbufs */
- i = j = rxr->next_to_refresh;
- if (++j == adapter->num_rx_desc)
- j = 0;
-
- while (j != rxr->next_to_check) {
- rxbuf = &rxr->rx_buffers[i];
+ for (int j = 0; j != adapter->num_rx_desc; ++j) {
+ rxbuf = &rxr->rx_buffers[j];
rxbuf->m_head = m_getjcl(M_DONTWAIT, MT_DATA,
M_PKTHDR, adapter->rx_mbuf_sz);
if (rxbuf->m_head == NULL) {
@@ -3973,16 +4068,66 @@ em_setup_receive_ring(struct rx_ring *rxr)
rxbuf->map, BUS_DMASYNC_PREREAD);
/* Update descriptor */
- rxr->rx_base[i].buffer_addr = htole64(seg[0].ds_addr);
- i = j;
- if (++j == adapter->num_rx_desc)
- j = 0;
+ rxr->rx_base[j].buffer_addr = htole64(seg[0].ds_addr);
}
-
-fail:
- rxr->next_to_refresh = i;
+ rxr->next_to_check = 0;
+ rxr->next_to_refresh = 0;
bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+
+#ifdef DEV_NETMAP
+ {
+ /*
+ * This driver is slightly different from the standard:
+ * it refills the rings in blocks of 8, so the while()
+ * above completes any leftover work. Also, after if_init()
+ * the ring starts at rxr->next_to_check instead of 0.
+ *
+ * Currently: we leave the mbufs allocated even in netmap
+ * mode, and simply make the NIC ring point to the
+ * correct buffer (netmap_buf or mbuf) depending on
+ * the mode. To avoid mbuf leaks, when in netmap mode we
+ * must make sure that next_to_refresh == next_to_check - 1
+ * so that the above while() loop is never run on init.
+ *
+ * A better way would be to free the mbufs when entering
+ * netmap mode, and set next_to_refresh/check in
+ * a way that the mbufs are completely reallocated
+ * when going back to standard mode.
+ */
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_slot *slot = netmap_reset(na,
+ NR_RX, rxr->me, rxr->next_to_check);
+ int sj = slot ? na->rx_rings[rxr->me].nkr_hwofs : 0;
+
+ /* slot sj corresponds to entry j in the NIC ring */
+ if (sj < 0)
+ sj += adapter->num_rx_desc;
+
+ for (int j = 0; j != adapter->num_rx_desc; j++, sj++) {
+ void *addr;
+ int sz;
+
+ rxbuf = &rxr->rx_buffers[j];
+ /* no mbuf and regular mode -> skip this entry */
+ if (rxbuf->m_head == NULL && !slot)
+ continue;
+ /* Handle wrap. Cannot use "na" here, could be NULL */
+ if (sj >= adapter->num_rx_desc)
+ sj -= adapter->num_rx_desc;
+ /* see comment, set slot addr and map */
+ addr = slot ? NMB(slot + sj) : rxbuf->m_head->m_data;
+ sz = slot ? na->buff_size : adapter->rx_mbuf_sz;
+ // XXX load or reload ?
+ netmap_load_map(rxr->rxtag, rxbuf->map, addr, sz);
+ /* Update descriptor */
+ rxr->rx_base[j].buffer_addr = htole64(vtophys(addr));
+ bus_dmamap_sync(rxr->rxtag, rxbuf->map, BUS_DMASYNC_PREREAD);
+ }
+ }
+#endif /* DEV_NETMAP */
+
+fail:
EM_RX_UNLOCK(rxr);
return (error);
}
@@ -4009,10 +4154,9 @@ fail:
* the rings that completed, the failing case will have
* cleaned up for itself. 'q' failed, so its the terminus.
*/
- for (int i = 0, n = 0; i < q; ++i) {
+ for (int i = 0; i < q; ++i) {
rxr = &adapter->rx_rings[i];
- n = rxr->next_to_check;
- while(n != rxr->next_to_refresh) {
+ for (int n = 0; n < adapter->num_rx_desc; n++) {
struct em_buffer *rxbuf;
rxbuf = &rxr->rx_buffers[n];
if (rxbuf->m_head != NULL) {
@@ -4022,8 +4166,6 @@ fail:
m_freem(rxbuf->m_head);
rxbuf->m_head = NULL;
}
- if (++n == adapter->num_rx_desc)
- n = 0;
}
rxr->next_to_check = 0;
rxr->next_to_refresh = 0;
@@ -4067,8 +4209,7 @@ em_free_receive_buffers(struct rx_ring *rxr)
INIT_DEBUGOUT("free_receive_buffers: begin");
if (rxr->rx_buffers != NULL) {
- int i = rxr->next_to_check;
- while(i != rxr->next_to_refresh) {
+ for (int i = 0; i < adapter->num_rx_desc; i++) {
rxbuf = &rxr->rx_buffers[i];
if (rxbuf->map != NULL) {
bus_dmamap_sync(rxr->rxtag, rxbuf->map,
@@ -4080,8 +4221,6 @@ em_free_receive_buffers(struct rx_ring *rxr)
m_freem(rxbuf->m_head);
rxbuf->m_head = NULL;
}
- if (++i == adapter->num_rx_desc)
- i = 0;
}
free(rxr->rx_buffers, M_DEVBUF);
rxr->rx_buffers = NULL;
@@ -4122,7 +4261,9 @@ em_initialize_receive_unit(struct adapter *adapter)
* up the descriptor ring
*/
rctl = E1000_READ_REG(hw, E1000_RCTL);
- E1000_WRITE_REG(hw, E1000_RCTL, rctl & ~E1000_RCTL_EN);
+ /* Do not disable if ever enabled on this hardware */
+ if ((hw->mac.type != e1000_82574) && (hw->mac.type != e1000_82583))
+ E1000_WRITE_REG(hw, E1000_RCTL, rctl & ~E1000_RCTL_EN);
E1000_WRITE_REG(&adapter->hw, E1000_RADV,
adapter->rx_abs_int_delay.value);
@@ -4136,14 +4277,13 @@ em_initialize_receive_unit(struct adapter *adapter)
** When using MSIX interrupts we need to throttle
** using the EITR register (82574 only)
*/
- if (hw->mac.type == e1000_82574)
+ if (hw->mac.type == e1000_82574) {
for (int i = 0; i < 4; i++)
E1000_WRITE_REG(hw, E1000_EITR_82574(i),
DEFAULT_ITR);
-
- /* Disable accelerated ackknowledge */
- if (adapter->hw.mac.type == e1000_82574)
+ /* Disable accelerated acknowledge */
E1000_WRITE_REG(hw, E1000_RFCTL, E1000_RFCTL_ACK_DIS);
+ }
if (ifp->if_capenable & IFCAP_RXCSUM) {
rxcsum = E1000_READ_REG(hw, E1000_RXCSUM);
@@ -4169,18 +4309,35 @@ em_initialize_receive_unit(struct adapter *adapter)
E1000_WRITE_REG(hw, E1000_RDBAH(i), (u32)(bus_addr >> 32));
E1000_WRITE_REG(hw, E1000_RDBAL(i), (u32)bus_addr);
/* Setup the Head and Tail Descriptor Pointers */
- E1000_WRITE_REG(hw, E1000_RDH(i), rxr->next_to_check);
- E1000_WRITE_REG(hw, E1000_RDT(i), rxr->next_to_refresh);
+ E1000_WRITE_REG(hw, E1000_RDH(i), 0);
+ E1000_WRITE_REG(hw, E1000_RDT(i), adapter->num_rx_desc - 1);
+#ifdef DEV_NETMAP
+ /*
+ * an init() while a netmap client is active must
+ * preserve the rx buffers passed to userspace.
+ * In this driver it means we adjust RDT to
+ * something different from next_to_refresh.
+ */
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_kring *kring = &na->rx_rings[i];
+ int t = rxr->next_to_refresh - kring->nr_hwavail;
+
+ if (t < 0)
+ t += na->num_rx_desc;
+ E1000_WRITE_REG(hw, E1000_RDT(i), t);
+ } else
+#endif /* DEV_NETMAP */
+ E1000_WRITE_REG(hw, E1000_RDT(i), adapter->num_rx_desc - 1);
}
- /* Set early receive threshold on appropriate hw */
+ /* Set PTHRESH for improved jumbo performance */
if (((adapter->hw.mac.type == e1000_ich9lan) ||
(adapter->hw.mac.type == e1000_pch2lan) ||
(adapter->hw.mac.type == e1000_ich10lan)) &&
(ifp->if_mtu > ETHERMTU)) {
u32 rxdctl = E1000_READ_REG(hw, E1000_RXDCTL(0));
E1000_WRITE_REG(hw, E1000_RXDCTL(0), rxdctl | 3);
- E1000_WRITE_REG(hw, E1000_ERT, 0x100 | (1 << 13));
}
if (adapter->hw.mac.type == e1000_pch2lan) {
@@ -4247,6 +4404,19 @@ em_rxeof(struct rx_ring *rxr, int count, int *done)
EM_RX_LOCK(rxr);
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_adapter *na = NA(ifp);
+
+ selwakeuppri(&na->rx_rings[rxr->me].si, PI_NET);
+ EM_RX_UNLOCK(rxr);
+ EM_CORE_LOCK(adapter);
+ selwakeuppri(&na->rx_rings[na->num_queues + 1].si, PI_NET);
+ EM_CORE_UNLOCK(adapter);
+ return (0);
+ }
+#endif /* DEV_NETMAP */
+
for (i = rxr->next_to_check, processed = 0; count != 0;) {
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
@@ -4314,10 +4484,6 @@ em_rxeof(struct rx_ring *rxr, int count, int *done)
E1000_RXD_SPC_VLAN_MASK);
sendmp->m_flags |= M_VLANTAG;
}
-#ifdef EM_MULTIQUEUE
- sendmp->m_pkthdr.flowid = rxr->msix;
- sendmp->m_flags |= M_FLOWID;
-#endif
#ifndef __NO_STRICT_ALIGNMENT
skip:
#endif
@@ -4792,7 +4958,7 @@ em_enable_wakeup(device_t dev)
(adapter->hw.mac.type == e1000_pchlan) ||
(adapter->hw.mac.type == e1000_ich9lan) ||
(adapter->hw.mac.type == e1000_ich10lan))
- e1000_disable_gig_wol_ich8lan(&adapter->hw);
+ e1000_suspend_workarounds_ich8lan(&adapter->hw);
/* Keep the laser running on Fiber adapters */
if (adapter->hw.phy.media_type == e1000_media_type_fiber ||
@@ -5389,7 +5555,7 @@ em_add_hw_stats(struct adapter *adapter)
static int
em_sysctl_nvm_info(SYSCTL_HANDLER_ARGS)
{
- struct adapter *adapter;
+ struct adapter *adapter = (struct adapter *)arg1;
int error;
int result;
@@ -5404,10 +5570,8 @@ em_sysctl_nvm_info(SYSCTL_HANDLER_ARGS)
* first 32 16-bit words of the EEPROM to
* the screen.
*/
- if (result == 1) {
- adapter = (struct adapter *)arg1;
+ if (result == 1)
em_print_nvm_info(adapter);
- }
return (error);
}
@@ -5497,6 +5661,49 @@ em_set_sysctl_value(struct adapter *adapter, const char *name,
OID_AUTO, name, CTLTYPE_INT|CTLFLAG_RW, limit, value, description);
}
+
+/*
+** Set flow control using sysctl:
+** Flow control values:
+** 0 - off
+** 1 - rx pause
+** 2 - tx pause
+** 3 - full
+*/
+static int
+em_set_flowcntl(SYSCTL_HANDLER_ARGS)
+{
+ int error;
+ static int input = 3; /* default is full */
+ struct adapter *adapter = (struct adapter *) arg1;
+
+ error = sysctl_handle_int(oidp, &input, 0, req);
+
+ if ((error) || (req->newptr == NULL))
+ return (error);
+
+ if (input == adapter->fc) /* no change? */
+ return (error);
+
+ switch (input) {
+ case e1000_fc_rx_pause:
+ case e1000_fc_tx_pause:
+ case e1000_fc_full:
+ case e1000_fc_none:
+ adapter->hw.fc.requested_mode = input;
+ adapter->fc = input;
+ break;
+ default:
+ /* Do nothing */
+ return (error);
+ }
+
+ adapter->hw.fc.current_mode = adapter->hw.fc.requested_mode;
+ e1000_force_mac_fc(&adapter->hw);
+ return (error);
+}
+
+
static int
em_sysctl_debug_info(SYSCTL_HANDLER_ARGS)
{
@@ -5533,10 +5740,11 @@ em_print_debug_info(struct adapter *adapter)
printf("Interface is RUNNING ");
else
printf("Interface is NOT RUNNING\n");
+
if (adapter->ifp->if_drv_flags & IFF_DRV_OACTIVE)
- printf("and ACTIVE\n");
- else
printf("and INACTIVE\n");
+ else
+ printf("and ACTIVE\n");
device_printf(dev, "hw tdh = %d, hw tdt = %d\n",
E1000_READ_REG(&adapter->hw, E1000_TDH(0)),
diff --git a/sys/dev/e1000/if_em.h b/sys/dev/e1000/if_em.h
index e25904e..f1afbad 100644
--- a/sys/dev/e1000/if_em.h
+++ b/sys/dev/e1000/if_em.h
@@ -212,7 +212,8 @@
#define EM_BAR_MEM_TYPE_64BIT 0x00000004
#define EM_MSIX_BAR 3 /* On 82575 */
-#if !defined(SYSCTL_ADD_UQUAD)
+/* More backward compatibility */
+#if __FreeBSD_version < 900000
#define SYSCTL_ADD_UQUAD SYSCTL_ADD_QUAD
#endif
@@ -418,11 +419,11 @@ struct adapter {
u32 shadow_vfta[EM_VFTA_SIZE];
/* Info about the interface */
- u8 link_active;
+ u16 link_active;
+ u16 fc;
u16 link_speed;
u16 link_duplex;
u32 smartspeed;
- u32 fc_setting;
struct em_int_delay_info tx_int_delay;
struct em_int_delay_info tx_abs_int_delay;
diff --git a/sys/dev/e1000/if_igb.c b/sys/dev/e1000/if_igb.c
index 4ae4204..1380c3b 100644
--- a/sys/dev/e1000/if_igb.c
+++ b/sys/dev/e1000/if_igb.c
@@ -100,7 +100,7 @@ int igb_display_debug_stats = 0;
/*********************************************************************
* Driver version:
*********************************************************************/
-char igb_driver_version[] = "version - 2.2.5";
+char igb_driver_version[] = "version - 2.3.1";
/*********************************************************************
@@ -171,15 +171,13 @@ static int igb_detach(device_t);
static int igb_shutdown(device_t);
static int igb_suspend(device_t);
static int igb_resume(device_t);
+static void igb_start(struct ifnet *);
+static void igb_start_locked(struct tx_ring *, struct ifnet *ifp);
#if __FreeBSD_version >= 800000
static int igb_mq_start(struct ifnet *, struct mbuf *);
static int igb_mq_start_locked(struct ifnet *,
struct tx_ring *, struct mbuf *);
static void igb_qflush(struct ifnet *);
-static void igb_deferred_mq_start(void *, int);
-#else
-static void igb_start(struct ifnet *);
-static void igb_start_locked(struct tx_ring *, struct ifnet *ifp);
#endif
static int igb_ioctl(struct ifnet *, u_long, caddr_t);
static void igb_init(void *);
@@ -225,8 +223,9 @@ static __inline void igb_rx_input(struct rx_ring *,
static bool igb_rxeof(struct igb_queue *, int, int *);
static void igb_rx_checksum(u32, struct mbuf *, u32);
-static int igb_tx_ctx_setup(struct tx_ring *, struct mbuf *);
-static bool igb_tso_setup(struct tx_ring *, struct mbuf *, u32 *);
+static bool igb_tx_ctx_setup(struct tx_ring *, struct mbuf *);
+static bool igb_tso_setup(struct tx_ring *, struct mbuf *, int,
+ struct ip *, struct tcphdr *);
static void igb_set_promisc(struct adapter *);
static void igb_disable_promisc(struct adapter *);
static void igb_set_multi(struct adapter *);
@@ -348,7 +347,7 @@ SYSCTL_INT(_hw_igb, OID_AUTO, max_interrupt_rate, CTLFLAG_RDTUN,
** into the header and thus use no cluster. Its
** a very workload dependent type feature.
*/
-static bool igb_header_split = FALSE;
+static int igb_header_split = FALSE;
TUNABLE_INT("hw.igb.hdr_split", &igb_header_split);
SYSCTL_INT(_hw_igb, OID_AUTO, header_split, CTLFLAG_RDTUN, &igb_header_split, 0,
"Enable receive mbuf header split");
@@ -369,6 +368,9 @@ SYSCTL_INT(_hw_igb, OID_AUTO, rx_process_limit, CTLFLAG_RDTUN,
&igb_rx_process_limit, 0,
"Maximum number of received packets to process at a time, -1 means unlimited");
+#ifdef DEV_NETMAP /* see ixgbe.c for details */
+#include <dev/netmap/if_igb_netmap.h>
+#endif /* DEV_NETMAP */
/*********************************************************************
* Device identification routine
*
@@ -611,16 +613,6 @@ igb_attach(device_t dev)
goto err_late;
}
- /*
- ** Configure Interrupts
- */
- if ((adapter->msix > 1) && (igb_enable_msix))
- error = igb_allocate_msix(adapter);
- else /* MSI or Legacy */
- error = igb_allocate_legacy(adapter);
- if (error)
- goto err_late;
-
/* Setup OS specific network interface */
if (igb_setup_interface(dev, adapter) != 0)
goto err_late;
@@ -659,11 +651,25 @@ igb_attach(device_t dev)
igb_add_hw_stats(adapter);
/* Tell the stack that the interface is not active */
- adapter->ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ adapter->ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ adapter->ifp->if_drv_flags |= IFF_DRV_OACTIVE;
adapter->led_dev = led_create(igb_led_func, adapter,
device_get_nameunit(dev));
+ /*
+ ** Configure Interrupts
+ */
+ if ((adapter->msix > 1) && (igb_enable_msix))
+ error = igb_allocate_msix(adapter);
+ else /* MSI or Legacy */
+ error = igb_allocate_legacy(adapter);
+ if (error)
+ goto err_late;
+
+#ifdef DEV_NETMAP
+ igb_netmap_attach(adapter);
+#endif /* DEV_NETMAP */
INIT_DEBUGOUT("igb_attach: end");
return (0);
@@ -673,10 +679,10 @@ err_late:
igb_free_transmit_structures(adapter);
igb_free_receive_structures(adapter);
igb_release_hw_control(adapter);
- if (adapter->ifp != NULL)
- if_free(adapter->ifp);
err_pci:
igb_free_pci_resources(adapter);
+ if (adapter->ifp != NULL)
+ if_free(adapter->ifp);
free(adapter->mta, M_DEVBUF);
IGB_CORE_LOCK_DESTROY(adapter);
@@ -707,8 +713,6 @@ igb_detach(device_t dev)
return (EBUSY);
}
- ether_ifdetach(adapter->ifp);
-
if (adapter->led_dev != NULL)
led_destroy(adapter->led_dev);
@@ -740,8 +744,13 @@ igb_detach(device_t dev)
if (adapter->vlan_detach != NULL)
EVENTHANDLER_DEREGISTER(vlan_unconfig, adapter->vlan_detach);
+ ether_ifdetach(adapter->ifp);
+
callout_drain(&adapter->timer);
+#ifdef DEV_NETMAP
+ netmap_detach(adapter->ifp);
+#endif /* DEV_NETMAP */
igb_free_pci_resources(adapter);
bus_generic_detach(dev);
if_free(ifp);
@@ -799,27 +808,14 @@ igb_resume(device_t dev)
{
struct adapter *adapter = device_get_softc(dev);
struct ifnet *ifp = adapter->ifp;
-#if __FreeBSD_version >= 800000
- struct tx_ring *txr = adapter->tx_rings;
-#endif
IGB_CORE_LOCK(adapter);
igb_init_locked(adapter);
igb_init_manageability(adapter);
if ((ifp->if_flags & IFF_UP) &&
- (ifp->if_drv_flags & IFF_DRV_RUNNING)) {
-#if __FreeBSD_version < 800000
+ (ifp->if_drv_flags & IFF_DRV_RUNNING))
igb_start(ifp);
-#else
- for (int i = 0; i < adapter->num_queues; i++, txr++) {
- IGB_TX_LOCK(txr);
- if (!drbr_empty(ifp, txr->br))
- igb_mq_start_locked(ifp, txr, NULL);
- IGB_TX_UNLOCK(txr);
- }
-#endif
- }
IGB_CORE_UNLOCK(adapter);
@@ -827,7 +823,6 @@ igb_resume(device_t dev)
}
-#if __FreeBSD_version < 800000
/*********************************************************************
* Transmit entry point
*
@@ -858,7 +853,7 @@ igb_start_locked(struct tx_ring *txr, struct ifnet *ifp)
while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
if (txr->tx_avail <= IGB_MAX_SCATTER) {
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ txr->queue_status |= IGB_QUEUE_DEPLETED;
break;
}
IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
@@ -869,10 +864,10 @@ igb_start_locked(struct tx_ring *txr, struct ifnet *ifp)
* NULL on failure. In that event, we can't requeue.
*/
if (igb_xmit(txr, &m_head)) {
- if (m_head == NULL)
- break;
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
- IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
+ if (m_head != NULL)
+ IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
+ if (txr->tx_avail <= IGB_MAX_SCATTER)
+ txr->queue_status |= IGB_QUEUE_DEPLETED;
break;
}
@@ -881,7 +876,7 @@ igb_start_locked(struct tx_ring *txr, struct ifnet *ifp)
/* Set watchdog on */
txr->watchdog_time = ticks;
- txr->queue_status = IGB_QUEUE_WORKING;
+ txr->queue_status |= IGB_QUEUE_WORKING;
}
}
@@ -904,7 +899,7 @@ igb_start(struct ifnet *ifp)
return;
}
-#else /* __FreeBSD_version >= 800000 */
+#if __FreeBSD_version >= 800000
/*
** Multiqueue Transmit driver
**
@@ -915,21 +910,25 @@ igb_mq_start(struct ifnet *ifp, struct mbuf *m)
struct adapter *adapter = ifp->if_softc;
struct igb_queue *que;
struct tx_ring *txr;
- int i = 0, err = 0;
+ int i, err = 0;
+ bool moveable = TRUE;
/* Which queue to use */
- if ((m->m_flags & M_FLOWID) != 0)
+ if ((m->m_flags & M_FLOWID) != 0) {
i = m->m_pkthdr.flowid % adapter->num_queues;
+ moveable = FALSE;
+ } else
+ i = curcpu % adapter->num_queues;
txr = &adapter->tx_rings[i];
que = &adapter->queues[i];
-
- if (IGB_TX_TRYLOCK(txr)) {
+ if (((txr->queue_status & IGB_QUEUE_DEPLETED) == 0) &&
+ IGB_TX_TRYLOCK(txr)) {
err = igb_mq_start_locked(ifp, txr, m);
IGB_TX_UNLOCK(txr);
} else {
err = drbr_enqueue(ifp, txr->br, m);
- taskqueue_enqueue(que->tq, &txr->txq_task);
+ taskqueue_enqueue(que->tq, &que->que_task);
}
return (err);
@@ -944,8 +943,9 @@ igb_mq_start_locked(struct ifnet *ifp, struct tx_ring *txr, struct mbuf *m)
IGB_TX_LOCK_ASSERT(txr);
- if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
- IFF_DRV_RUNNING || adapter->link_active == 0) {
+ if (((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) ||
+ (txr->queue_status == IGB_QUEUE_DEPLETED) ||
+ adapter->link_active == 0) {
if (m != NULL)
err = drbr_enqueue(ifp, txr->br, m);
return (err);
@@ -973,39 +973,21 @@ igb_mq_start_locked(struct ifnet *ifp, struct tx_ring *txr, struct mbuf *m)
ETHER_BPF_MTAP(ifp, next);
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
break;
- if (txr->tx_avail <= IGB_TX_CLEANUP_THRESHOLD)
- igb_txeof(txr);
- if (txr->tx_avail <= IGB_MAX_SCATTER) {
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
- break;
- }
next = drbr_dequeue(ifp, txr->br);
}
if (enq > 0) {
/* Set the watchdog */
- txr->queue_status = IGB_QUEUE_WORKING;
+ txr->queue_status |= IGB_QUEUE_WORKING;
txr->watchdog_time = ticks;
}
+ if (txr->tx_avail <= IGB_TX_CLEANUP_THRESHOLD)
+ igb_txeof(txr);
+ if (txr->tx_avail <= IGB_MAX_SCATTER)
+ txr->queue_status |= IGB_QUEUE_DEPLETED;
return (err);
}
/*
- * Called from a taskqueue to drain queued transmit packets.
- */
-static void
-igb_deferred_mq_start(void *arg, int pending)
-{
- struct tx_ring *txr = arg;
- struct adapter *adapter = txr->adapter;
- struct ifnet *ifp = adapter->ifp;
-
- IGB_TX_LOCK(txr);
- if (!drbr_empty(ifp, txr->br))
- igb_mq_start_locked(ifp, txr, NULL);
- IGB_TX_UNLOCK(txr);
-}
-
-/*
** Flush all ring buffers
*/
static void
@@ -1023,7 +1005,7 @@ igb_qflush(struct ifnet *ifp)
}
if_qflush(ifp);
}
-#endif /* __FreeBSD_version < 800000 */
+#endif /* __FreeBSD_version >= 800000 */
/*********************************************************************
* Ioctl entry point
@@ -1129,11 +1111,6 @@ igb_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
}
break;
case SIOCSIFMEDIA:
- /*
- ** As the speed/duplex settings are being
- ** changed, we need toreset the PHY.
- */
- adapter->hw.phy.reset_disable = FALSE;
/* Check SOL/IDER usage */
IGB_CORE_LOCK(adapter);
if (e1000_check_reset_block(&adapter->hw)) {
@@ -1324,10 +1301,8 @@ igb_init_locked(struct adapter *adapter)
}
/* Set Energy Efficient Ethernet */
- e1000_set_eee_i350(&adapter->hw);
- /* Don't reset the phy next time init gets called */
- adapter->hw.phy.reset_disable = TRUE;
+ e1000_set_eee_i350(&adapter->hw);
}
static void
@@ -1352,18 +1327,21 @@ igb_handle_que(void *context, int pending)
if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
bool more;
- more = igb_rxeof(que, -1, NULL);
+ more = igb_rxeof(que, adapter->rx_process_limit, NULL);
IGB_TX_LOCK(txr);
if (igb_txeof(txr))
more = TRUE;
#if __FreeBSD_version >= 800000
- if (!drbr_empty(ifp, txr->br))
+ /* Process the stack queue only if not depleted */
+ if (((txr->queue_status & IGB_QUEUE_DEPLETED) == 0) &&
+ !drbr_empty(ifp, txr->br))
igb_mq_start_locked(ifp, txr, NULL);
#else
igb_start_locked(txr, ifp);
#endif
IGB_TX_UNLOCK(txr);
+ /* Do we need another? */
if (more || (ifp->if_drv_flags & IFF_DRV_OACTIVE)) {
taskqueue_enqueue(que->tq, &que->que_task);
return;
@@ -1494,7 +1472,7 @@ igb_poll(struct ifnet *ifp, enum poll_cmd cmd, int count)
/*********************************************************************
*
- * MSIX TX Interrupt Service routine
+ * MSIX Que Interrupt Service routine
*
**********************************************************************/
static void
@@ -1569,8 +1547,7 @@ igb_msix_que(void *arg)
no_calc:
/* Schedule a clean task if needed*/
- if (more_tx || more_rx ||
- (adapter->ifp->if_drv_flags & IFF_DRV_OACTIVE))
+ if (more_tx || more_rx)
taskqueue_enqueue(que->tq, &que->que_task);
else
/* Reenable this interrupt */
@@ -1718,10 +1695,8 @@ igb_media_change(struct ifnet *ifp)
/*********************************************************************
*
* This routine maps the mbufs to Advanced TX descriptors.
- * used by the 82575 adapter.
*
**********************************************************************/
-
static int
igb_xmit(struct tx_ring *txr, struct mbuf **m_headp)
{
@@ -1730,22 +1705,123 @@ igb_xmit(struct tx_ring *txr, struct mbuf **m_headp)
bus_dmamap_t map;
struct igb_tx_buffer *tx_buffer, *tx_buffer_mapped;
union e1000_adv_tx_desc *txd = NULL;
- struct mbuf *m_head;
- u32 olinfo_status = 0, cmd_type_len = 0;
- int nsegs, i, j, error, first, last = 0;
- u32 hdrlen = 0;
-
- m_head = *m_headp;
-
+ struct mbuf *m_head = *m_headp;
+ struct ether_vlan_header *eh = NULL;
+ struct ip *ip = NULL;
+ struct tcphdr *th = NULL;
+ u32 hdrlen, cmd_type_len, olinfo_status = 0;
+ int ehdrlen, poff;
+ int nsegs, i, first, last = 0;
+ int error, do_tso, remap = 1;
/* Set basic descriptor constants */
- cmd_type_len |= E1000_ADVTXD_DTYP_DATA;
+ cmd_type_len = E1000_ADVTXD_DTYP_DATA;
cmd_type_len |= E1000_ADVTXD_DCMD_IFCS | E1000_ADVTXD_DCMD_DEXT;
if (m_head->m_flags & M_VLANTAG)
cmd_type_len |= E1000_ADVTXD_DCMD_VLE;
+retry:
+ m_head = *m_headp;
+ do_tso = ((m_head->m_pkthdr.csum_flags & CSUM_TSO) != 0);
+ hdrlen = ehdrlen = poff = 0;
+
/*
- * Map the packet for DMA.
+ * Intel recommends entire IP/TCP header length reside in a single
+ * buffer. If multiple descriptors are used to describe the IP and
+ * TCP header, each descriptor should describe one or more
+ * complete headers; descriptors referencing only parts of headers
+ * are not supported. If all layer headers are not coalesced into
+ * a single buffer, each buffer should not cross a 4KB boundary,
+ * or be larger than the maximum read request size.
+ * Controller also requires modifing IP/TCP header to make TSO work
+ * so we firstly get a writable mbuf chain then coalesce ethernet/
+ * IP/TCP header into a single buffer to meet the requirement of
+ * controller. This also simplifies IP/TCP/UDP checksum offloading
+ * which also has similiar restrictions.
+ */
+ if (do_tso || m_head->m_pkthdr.csum_flags & CSUM_OFFLOAD) {
+ if (do_tso || (m_head->m_next != NULL &&
+ m_head->m_pkthdr.csum_flags & CSUM_OFFLOAD)) {
+ if (M_WRITABLE(*m_headp) == 0) {
+ m_head = m_dup(*m_headp, M_DONTWAIT);
+ m_freem(*m_headp);
+ if (m_head == NULL) {
+ *m_headp = NULL;
+ return (ENOBUFS);
+ }
+ *m_headp = m_head;
+ }
+ }
+ /*
+ * Assume IPv4, we don't have TSO/checksum offload support
+ * for IPv6 yet.
+ */
+ ehdrlen = sizeof(struct ether_header);
+ m_head = m_pullup(m_head, ehdrlen);
+ if (m_head == NULL) {
+ *m_headp = NULL;
+ return (ENOBUFS);
+ }
+ eh = mtod(m_head, struct ether_vlan_header *);
+ if (eh->evl_encap_proto == htons(ETHERTYPE_VLAN)) {
+ ehdrlen = sizeof(struct ether_vlan_header);
+ m_head = m_pullup(m_head, ehdrlen);
+ if (m_head == NULL) {
+ *m_headp = NULL;
+ return (ENOBUFS);
+ }
+ }
+ m_head = m_pullup(m_head, ehdrlen + sizeof(struct ip));
+ if (m_head == NULL) {
+ *m_headp = NULL;
+ return (ENOBUFS);
+ }
+ ip = (struct ip *)(mtod(m_head, char *) + ehdrlen);
+ poff = ehdrlen + (ip->ip_hl << 2);
+ if (do_tso) {
+ m_head = m_pullup(m_head, poff + sizeof(struct tcphdr));
+ if (m_head == NULL) {
+ *m_headp = NULL;
+ return (ENOBUFS);
+ }
+ /*
+ * The pseudo TCP checksum does not include TCP payload
+ * length so driver should recompute the checksum here
+ * what hardware expect to see. This is adherence of
+ * Microsoft's Large Send specification.
+ */
+ th = (struct tcphdr *)(mtod(m_head, char *) + poff);
+ th->th_sum = in_pseudo(ip->ip_src.s_addr,
+ ip->ip_dst.s_addr, htons(IPPROTO_TCP));
+ /* Keep track of the full header length */
+ hdrlen = poff + (th->th_off << 2);
+ } else if (m_head->m_pkthdr.csum_flags & CSUM_TCP) {
+ m_head = m_pullup(m_head, poff + sizeof(struct tcphdr));
+ if (m_head == NULL) {
+ *m_headp = NULL;
+ return (ENOBUFS);
+ }
+ th = (struct tcphdr *)(mtod(m_head, char *) + poff);
+ m_head = m_pullup(m_head, poff + (th->th_off << 2));
+ if (m_head == NULL) {
+ *m_headp = NULL;
+ return (ENOBUFS);
+ }
+ ip = (struct ip *)(mtod(m_head, char *) + ehdrlen);
+ th = (struct tcphdr *)(mtod(m_head, char *) + poff);
+ } else if (m_head->m_pkthdr.csum_flags & CSUM_UDP) {
+ m_head = m_pullup(m_head, poff + sizeof(struct udphdr));
+ if (m_head == NULL) {
+ *m_headp = NULL;
+ return (ENOBUFS);
+ }
+ ip = (struct ip *)(mtod(m_head, char *) + ehdrlen);
+ }
+ *m_headp = m_head;
+ }
+
+ /*
+ * Map the packet for DMA
*
* Capture the first descriptor index,
* this descriptor will have the index
@@ -1760,7 +1836,16 @@ igb_xmit(struct tx_ring *txr, struct mbuf **m_headp)
error = bus_dmamap_load_mbuf_sg(txr->txtag, map,
*m_headp, segs, &nsegs, BUS_DMA_NOWAIT);
- if (error == EFBIG) {
+ /*
+ * There are two types of errors we can (try) to handle:
+ * - EFBIG means the mbuf chain was too long and bus_dma ran
+ * out of segments. Defragment the mbuf chain and try again.
+ * - ENOMEM means bus_dma could not obtain enough bounce buffers
+ * at this point in time. Defer sending and try again later.
+ * All other errors, in particular EINVAL, are fatal and prevent the
+ * mbuf chain from ever going through. Drop it and report error.
+ */
+ if (error == EFBIG && remap) {
struct mbuf *m;
m = m_defrag(*m_headp, M_DONTWAIT);
@@ -1772,19 +1857,9 @@ igb_xmit(struct tx_ring *txr, struct mbuf **m_headp)
}
*m_headp = m;
- /* Try it again */
- error = bus_dmamap_load_mbuf_sg(txr->txtag, map,
- *m_headp, segs, &nsegs, BUS_DMA_NOWAIT);
-
- if (error == ENOMEM) {
- adapter->no_tx_dma_setup++;
- return (error);
- } else if (error != 0) {
- adapter->no_tx_dma_setup++;
- m_freem(*m_headp);
- *m_headp = NULL;
- return (error);
- }
+ /* Try it again, but only once */
+ remap = 0;
+ goto retry;
} else if (error == ENOMEM) {
adapter->no_tx_dma_setup++;
return (error);
@@ -1795,29 +1870,35 @@ igb_xmit(struct tx_ring *txr, struct mbuf **m_headp)
return (error);
}
- /* Check again to be sure we have enough descriptors */
- if (nsegs > (txr->tx_avail - 2)) {
+ /*
+ ** Make sure we don't overrun the ring,
+ ** we need nsegs descriptors and one for
+ ** the context descriptor used for the
+ ** offloads.
+ */
+ if ((nsegs + 1) > (txr->tx_avail - 2)) {
txr->no_desc_avail++;
bus_dmamap_unload(txr->txtag, map);
return (ENOBUFS);
}
m_head = *m_headp;
- /*
- * Set up the context descriptor:
- * used when any hardware offload is done.
- * This includes CSUM, VLAN, and TSO. It
- * will use the first descriptor.
+ /* Do hardware assists:
+ * Set up the context descriptor, used
+ * when any hardware offload is done.
+ * This includes CSUM, VLAN, and TSO.
+ * It will use the first descriptor.
*/
- if (m_head->m_pkthdr.csum_flags & CSUM_TSO) {
- if (igb_tso_setup(txr, m_head, &hdrlen)) {
+
+ if (m_head->m_pkthdr.csum_flags & CSUM_TSO) {
+ if (igb_tso_setup(txr, m_head, ehdrlen, ip, th)) {
cmd_type_len |= E1000_ADVTXD_DCMD_TSE;
olinfo_status |= E1000_TXD_POPTS_IXSM << 8;
olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
} else
- return (ENXIO);
+ return (ENXIO);
} else if (igb_tx_ctx_setup(txr, m_head))
- olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
+ olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
/* Calculate payload length */
olinfo_status |= ((m_head->m_pkthdr.len - hdrlen)
@@ -1829,7 +1910,7 @@ igb_xmit(struct tx_ring *txr, struct mbuf **m_headp)
/* Set up our transmit descriptors */
i = txr->next_avail_desc;
- for (j = 0; j < nsegs; j++) {
+ for (int j = 0; j < nsegs; j++) {
bus_size_t seg_len;
bus_addr_t seg_addr;
@@ -1850,8 +1931,14 @@ igb_xmit(struct tx_ring *txr, struct mbuf **m_headp)
txr->next_avail_desc = i;
txr->tx_avail -= nsegs;
-
tx_buffer->m_head = m_head;
+
+ /*
+ ** Here we swap the map so the last descriptor,
+ ** which gets the completion interrupt has the
+ ** real map, and the first descriptor gets the
+ ** unused map from this descriptor.
+ */
tx_buffer_mapped->map = tx_buffer->map;
tx_buffer->map = map;
bus_dmamap_sync(txr->txtag, map, BUS_DMASYNC_PREWRITE);
@@ -1869,6 +1956,7 @@ igb_xmit(struct tx_ring *txr, struct mbuf **m_headp)
*/
tx_buffer = &txr->tx_buffers[first];
tx_buffer->next_eop = last;
+ /* Update the watchdog time early and often */
txr->watchdog_time = ticks;
/*
@@ -1881,9 +1969,7 @@ igb_xmit(struct tx_ring *txr, struct mbuf **m_headp)
++txr->tx_packets;
return (0);
-
}
-
static void
igb_set_promisc(struct adapter *adapter)
{
@@ -1990,7 +2076,10 @@ igb_local_timer(void *arg)
{
struct adapter *adapter = arg;
device_t dev = adapter->dev;
+ struct ifnet *ifp = adapter->ifp;
struct tx_ring *txr = adapter->tx_rings;
+ struct igb_queue *que = adapter->queues;
+ int hung = 0, busy = 0;
IGB_CORE_LOCK_ASSERT(adapter);
@@ -1998,22 +2087,29 @@ igb_local_timer(void *arg)
igb_update_link_status(adapter);
igb_update_stats_counters(adapter);
- /*
- ** If flow control has paused us since last checking
- ** it invalidates the watchdog timing, so dont run it.
- */
- if (adapter->pause_frames) {
- adapter->pause_frames = 0;
- goto out;
- }
-
/*
- ** Watchdog: check for time since any descriptor was cleaned
+ ** Check the TX queues status
+ ** - central locked handling of OACTIVE
+ ** - watchdog only if all queues show hung
*/
- for (int i = 0; i < adapter->num_queues; i++, txr++)
- if (txr->queue_status == IGB_QUEUE_HUNG)
- goto timeout;
-out:
+ for (int i = 0; i < adapter->num_queues; i++, que++, txr++) {
+ if ((txr->queue_status & IGB_QUEUE_HUNG) &&
+ (adapter->pause_frames == 0))
+ ++hung;
+ if (txr->queue_status & IGB_QUEUE_DEPLETED)
+ ++busy;
+ if ((txr->queue_status & IGB_QUEUE_IDLE) == 0)
+ taskqueue_enqueue(que->tq, &que->que_task);
+ }
+ if (hung == adapter->num_queues)
+ goto timeout;
+ if (busy == adapter->num_queues)
+ ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ else if ((ifp->if_drv_flags & IFF_DRV_OACTIVE) &&
+ (busy < adapter->num_queues))
+ ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+
+ adapter->pause_frames = 0;
callout_reset(&adapter->timer, hz, igb_local_timer, adapter);
#ifndef DEVICE_POLLING
/* Schedule all queue interrupts - deadlock protection */
@@ -2106,7 +2202,7 @@ igb_update_link_status(struct adapter *adapter)
adapter->link_active = 0;
/* This can sleep */
if_link_state_change(ifp, LINK_STATE_DOWN);
- /* Turn off watchdogs */
+ /* Reset queue state */
for (int i = 0; i < adapter->num_queues; i++, txr++)
txr->queue_status = IGB_QUEUE_IDLE;
}
@@ -2135,9 +2231,10 @@ igb_stop(void *arg)
callout_stop(&adapter->timer);
/* Tell the stack that the interface is no longer active */
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ ifp->if_drv_flags |= IFF_DRV_OACTIVE;
- /* Unarm watchdog timer. */
+ /* Disarm watchdog timer. */
for (int i = 0; i < adapter->num_queues; i++, txr++) {
IGB_TX_LOCK(txr);
txr->queue_status = IGB_QUEUE_IDLE;
@@ -2232,7 +2329,6 @@ igb_allocate_legacy(struct adapter *adapter)
{
device_t dev = adapter->dev;
struct igb_queue *que = adapter->queues;
- struct tx_ring *txr = adapter->tx_rings;
int error, rid = 0;
/* Turn off all interrupts */
@@ -2251,10 +2347,6 @@ igb_allocate_legacy(struct adapter *adapter)
return (ENXIO);
}
-#if __FreeBSD_version >= 800000
- TASK_INIT(&txr->txq_task, 0, igb_deferred_mq_start, txr);
-#endif
-
/*
* Try allocating a fast interrupt and the associated deferred
* processing contexts.
@@ -2292,6 +2384,9 @@ igb_allocate_msix(struct adapter *adapter)
struct igb_queue *que = adapter->queues;
int error, rid, vector = 0;
+ /* Be sure to start with all interrupts disabled */
+ E1000_WRITE_REG(&adapter->hw, E1000_IMC, ~0);
+ E1000_WRITE_FLUSH(&adapter->hw);
for (int i = 0; i < adapter->num_queues; i++, vector++, que++) {
rid = vector +1;
@@ -2325,13 +2420,9 @@ igb_allocate_msix(struct adapter *adapter)
*/
if (adapter->num_queues > 1)
bus_bind_intr(dev, que->res, i);
-#if __FreeBSD_version >= 800000
- TASK_INIT(&que->txr->txq_task, 0, igb_deferred_mq_start,
- que->txr);
-#endif
/* Make tasklet for deferred handling */
TASK_INIT(&que->que_task, 0, igb_handle_que, que);
- que->tq = taskqueue_create("igb_que", M_NOWAIT,
+ que->tq = taskqueue_create_fast("igb_que", M_NOWAIT,
taskqueue_thread_enqueue, &que->tq);
taskqueue_start_threads(&que->tq, 1, PI_NET, "%s que",
device_get_nameunit(adapter->dev));
@@ -2538,24 +2629,13 @@ igb_free_pci_resources(struct adapter *adapter)
else
(adapter->msix != 0) ? (rid = 1):(rid = 0);
- que = adapter->queues;
if (adapter->tag != NULL) {
- taskqueue_drain(que->tq, &adapter->link_task);
bus_teardown_intr(dev, adapter->res, adapter->tag);
adapter->tag = NULL;
}
if (adapter->res != NULL)
bus_release_resource(dev, SYS_RES_IRQ, rid, adapter->res);
- for (int i = 0; i < adapter->num_queues; i++, que++) {
- if (que->tq != NULL) {
-#if __FreeBSD_version >= 800000
- taskqueue_drain(que->tq, &que->txr->txq_task);
-#endif
- taskqueue_drain(que->tq, &que->que_task);
- taskqueue_free(que->tq);
- }
- }
mem:
if (adapter->msix)
pci_release_msi(dev);
@@ -2686,7 +2766,6 @@ igb_reset(struct adapter *adapter)
pba = E1000_READ_REG(hw, E1000_RXPBS);
pba = e1000_rxpbs_adjust_82580(pba);
break;
- pba = E1000_PBA_35K;
default:
break;
}
@@ -2741,12 +2820,10 @@ igb_reset(struct adapter *adapter)
fc->pause_time = IGB_FC_PAUSE_TIME;
fc->send_xon = TRUE;
- if (fc->requested_mode)
- fc->current_mode = fc->requested_mode;
+ if (adapter->fc)
+ fc->requested_mode = adapter->fc;
else
- fc->current_mode = e1000_fc_full;
-
- adapter->fc = fc->current_mode;
+ fc->requested_mode = e1000_fc_default;
/* Issue a global reset */
e1000_reset_hw(hw);
@@ -2827,11 +2904,10 @@ igb_setup_interface(device_t dev, struct adapter *adapter)
ifp->if_softc = adapter;
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
ifp->if_ioctl = igb_ioctl;
+ ifp->if_start = igb_start;
#if __FreeBSD_version >= 800000
ifp->if_transmit = igb_mq_start;
ifp->if_qflush = igb_qflush;
-#else
- ifp->if_start = igb_start;
#endif
IFQ_SET_MAXLEN(&ifp->if_snd, adapter->num_tx_desc - 1);
ifp->if_snd.ifq_drv_maxlen = adapter->num_tx_desc - 1;
@@ -3212,9 +3288,16 @@ igb_setup_transmit_ring(struct tx_ring *txr)
struct adapter *adapter = txr->adapter;
struct igb_tx_buffer *txbuf;
int i;
+#ifdef DEV_NETMAP
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_slot *slot;
+#endif /* DEV_NETMAP */
/* Clear the old descriptor contents */
IGB_TX_LOCK(txr);
+#ifdef DEV_NETMAP
+ slot = netmap_reset(na, NR_TX, txr->me, 0);
+#endif /* DEV_NETMAP */
bzero((void *)txr->tx_base,
(sizeof(union e1000_adv_tx_desc)) * adapter->num_tx_desc);
/* Reset indices */
@@ -3231,6 +3314,17 @@ igb_setup_transmit_ring(struct tx_ring *txr)
m_freem(txbuf->m_head);
txbuf->m_head = NULL;
}
+#ifdef DEV_NETMAP
+ if (slot) {
+ /* slot si is mapped to the i-th NIC-ring entry */
+ int si = i + na->tx_rings[txr->me].nkr_hwofs;
+
+ if (si < 0)
+ si += na->num_tx_desc;
+ netmap_load_map(txr->txtag, txbuf->map,
+ NMB(slot + si), na->buff_size);
+ }
+#endif /* DEV_NETMAP */
/* clear the watch index */
txbuf->next_eop = -1;
}
@@ -3396,8 +3490,9 @@ igb_free_transmit_buffers(struct tx_ring *txr)
* Setup work for hardware segmentation offload (TSO)
*
**********************************************************************/
-static boolean_t
-igb_tso_setup(struct tx_ring *txr, struct mbuf *mp, u32 *hdrlen)
+static bool
+igb_tso_setup(struct tx_ring *txr, struct mbuf *mp, int ehdrlen,
+ struct ip *ip, struct tcphdr *th)
{
struct adapter *adapter = txr->adapter;
struct e1000_adv_tx_context_desc *TXD;
@@ -3405,45 +3500,15 @@ igb_tso_setup(struct tx_ring *txr, struct mbuf *mp, u32 *hdrlen)
u32 vlan_macip_lens = 0, type_tucmd_mlhl = 0;
u32 mss_l4len_idx = 0;
u16 vtag = 0;
- int ctxd, ehdrlen, ip_hlen, tcp_hlen;
- struct ether_vlan_header *eh;
- struct ip *ip;
- struct tcphdr *th;
-
-
- /*
- * Determine where frame payload starts.
- * Jump over vlan headers if already present
- */
- eh = mtod(mp, struct ether_vlan_header *);
- if (eh->evl_encap_proto == htons(ETHERTYPE_VLAN))
- ehdrlen = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN;
- else
- ehdrlen = ETHER_HDR_LEN;
-
- /* Ensure we have at least the IP+TCP header in the first mbuf. */
- if (mp->m_len < ehdrlen + sizeof(struct ip) + sizeof(struct tcphdr))
- return FALSE;
+ int ctxd, ip_hlen, tcp_hlen;
- /* Only supports IPV4 for now */
ctxd = txr->next_avail_desc;
tx_buffer = &txr->tx_buffers[ctxd];
TXD = (struct e1000_adv_tx_context_desc *) &txr->tx_base[ctxd];
- ip = (struct ip *)(mp->m_data + ehdrlen);
- if (ip->ip_p != IPPROTO_TCP)
- return FALSE; /* 0 */
ip->ip_sum = 0;
ip_hlen = ip->ip_hl << 2;
- th = (struct tcphdr *)((caddr_t)ip + ip_hlen);
- th->th_sum = in_pseudo(ip->ip_src.s_addr,
- ip->ip_dst.s_addr, htons(IPPROTO_TCP));
tcp_hlen = th->th_off << 2;
- /*
- * Calculate header length, this is used
- * in the transmit desc in igb_xmit
- */
- *hdrlen = ehdrlen + ip_hlen + tcp_hlen;
/* VLAN MACLEN IPLEN */
if (mp->m_flags & M_VLANTAG) {
@@ -3626,6 +3691,19 @@ igb_txeof(struct tx_ring *txr)
IGB_TX_LOCK_ASSERT(txr);
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_adapter *na = NA(ifp);
+
+ selwakeuppri(&na->tx_rings[txr->me].si, PI_NET);
+ IGB_TX_UNLOCK(txr);
+ IGB_CORE_LOCK(adapter);
+ selwakeuppri(&na->tx_rings[na->num_queues + 1].si, PI_NET);
+ IGB_CORE_UNLOCK(adapter);
+ IGB_TX_LOCK(txr);
+ return FALSE;
+ }
+#endif /* DEV_NETMAP */
if (txr->tx_avail == adapter->num_tx_desc) {
txr->queue_status = IGB_QUEUE_IDLE;
return FALSE;
@@ -3705,20 +3783,20 @@ igb_txeof(struct tx_ring *txr)
** for too long indicates a hang.
*/
if ((!processed) && ((ticks - txr->watchdog_time) > IGB_WATCHDOG))
- txr->queue_status = IGB_QUEUE_HUNG;
-
+ txr->queue_status |= IGB_QUEUE_HUNG;
/*
- * If we have a minimum free, clear IFF_DRV_OACTIVE
- * to tell the stack that it is OK to send packets.
+ * If we have a minimum free,
+ * clear depleted state bit
*/
- if (txr->tx_avail > IGB_TX_CLEANUP_THRESHOLD) {
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
- /* All clean, turn off the watchdog */
- if (txr->tx_avail == adapter->num_tx_desc) {
- txr->queue_status = IGB_QUEUE_IDLE;
- return (FALSE);
- }
+ if (txr->tx_avail >= IGB_QUEUE_THRESHOLD)
+ txr->queue_status &= ~IGB_QUEUE_DEPLETED;
+
+ /* All clean, turn off the watchdog */
+ if (txr->tx_avail == adapter->num_tx_desc) {
+ txr->queue_status = IGB_QUEUE_IDLE;
+ return (FALSE);
}
+
return (TRUE);
}
@@ -3949,6 +4027,10 @@ igb_setup_receive_ring(struct rx_ring *rxr)
bus_dma_segment_t pseg[1], hseg[1];
struct lro_ctrl *lro = &rxr->lro;
int rsize, nsegs, error = 0;
+#ifdef DEV_NETMAP
+ struct netmap_adapter *na = NA(rxr->adapter->ifp);
+ struct netmap_slot *slot;
+#endif /* DEV_NETMAP */
adapter = rxr->adapter;
dev = adapter->dev;
@@ -3956,6 +4038,9 @@ igb_setup_receive_ring(struct rx_ring *rxr)
/* Clear the ring contents */
IGB_RX_LOCK(rxr);
+#ifdef DEV_NETMAP
+ slot = netmap_reset(na, NR_RX, rxr->me, 0);
+#endif /* DEV_NETMAP */
rsize = roundup2(adapter->num_rx_desc *
sizeof(union e1000_adv_rx_desc), IGB_DBA_ALIGN);
bzero((void *)rxr->rx_base, rsize);
@@ -3974,6 +4059,22 @@ igb_setup_receive_ring(struct rx_ring *rxr)
struct mbuf *mh, *mp;
rxbuf = &rxr->rx_buffers[j];
+#ifdef DEV_NETMAP
+ if (slot) {
+ /* slot sj is mapped to the i-th NIC-ring entry */
+ int sj = j + na->rx_rings[rxr->me].nkr_hwofs;
+ void *addr;
+
+ if (sj < 0)
+ sj += na->num_rx_desc;
+ addr = NMB(slot + sj);
+ netmap_load_map(rxr->ptag,
+ rxbuf->pmap, addr, na->buff_size);
+ /* Update descriptor */
+ rxr->rx_base[j].read.pkt_addr = htole64(vtophys(addr));
+ continue;
+ }
+#endif /* DEV_NETMAP */
if (rxr->hdr_split == FALSE)
goto skip_head;
@@ -4258,6 +4359,26 @@ igb_initialize_receive_units(struct adapter *adapter)
for (int i = 0; i < adapter->num_queues; i++) {
rxr = &adapter->rx_rings[i];
E1000_WRITE_REG(hw, E1000_RDH(i), rxr->next_to_check);
+#ifdef DEV_NETMAP
+ /*
+ * an init() while a netmap client is active must
+ * preserve the rx buffers passed to userspace.
+ * In this driver it means we adjust RDT to
+ * somthing different from next_to_refresh
+ * (which is not used in netmap mode).
+ */
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_kring *kring = &na->rx_rings[i];
+ int t = rxr->next_to_refresh - kring->nr_hwavail;
+
+ if (t >= adapter->num_rx_desc)
+ t -= adapter->num_rx_desc;
+ else if (t < 0)
+ t += adapter->num_rx_desc;
+ E1000_WRITE_REG(hw, E1000_RDT(i), t);
+ } else
+#endif /* DEV_NETMAP */
E1000_WRITE_REG(hw, E1000_RDT(i), rxr->next_to_refresh);
}
return;
@@ -4436,6 +4557,19 @@ igb_rxeof(struct igb_queue *que, int count, int *done)
bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_adapter *na = NA(ifp);
+
+ selwakeuppri(&na->rx_rings[rxr->me].si, PI_NET);
+ IGB_RX_UNLOCK(rxr);
+ IGB_CORE_LOCK(adapter);
+ selwakeuppri(&na->rx_rings[na->num_queues + 1].si, PI_NET);
+ IGB_CORE_UNLOCK(adapter);
+ return (0);
+ }
+#endif /* DEV_NETMAP */
+
/* Main clean loop */
for (i = rxr->next_to_check; count != 0;) {
struct mbuf *sendmp, *mh, *mp;
@@ -4762,8 +4896,8 @@ igb_setup_vlan_hw_support(struct adapter *adapter)
e1000_vfta_set_vf(hw,
adapter->shadow_vfta[i], TRUE);
else
- E1000_WRITE_REG_ARRAY(hw, E1000_VFTA,
- i, adapter->shadow_vfta[i]);
+ e1000_write_vfta(hw,
+ i, adapter->shadow_vfta[i]);
}
}
@@ -5629,23 +5763,26 @@ igb_set_sysctl_value(struct adapter *adapter, const char *name,
static int
igb_set_flowcntl(SYSCTL_HANDLER_ARGS)
{
- int error;
- struct adapter *adapter = (struct adapter *) arg1;
+ int error;
+ static int input = 3; /* default is full */
+ struct adapter *adapter = (struct adapter *) arg1;
- error = sysctl_handle_int(oidp, &adapter->fc, 0, req);
+ error = sysctl_handle_int(oidp, &input, 0, req);
if ((error) || (req->newptr == NULL))
return (error);
- switch (adapter->fc) {
+ switch (input) {
case e1000_fc_rx_pause:
case e1000_fc_tx_pause:
case e1000_fc_full:
- adapter->hw.fc.requested_mode = adapter->fc;
- break;
case e1000_fc_none:
+ adapter->hw.fc.requested_mode = input;
+ adapter->fc = input;
+ break;
default:
- adapter->hw.fc.requested_mode = e1000_fc_none;
+ /* Do nothing */
+ return (error);
}
adapter->hw.fc.current_mode = adapter->hw.fc.requested_mode;
diff --git a/sys/dev/e1000/if_igb.h b/sys/dev/e1000/if_igb.h
index 80abf6e..9989206 100644
--- a/sys/dev/e1000/if_igb.h
+++ b/sys/dev/e1000/if_igb.h
@@ -188,9 +188,13 @@
#define IGB_TX_BUFFER_SIZE ((uint32_t) 1514)
#define IGB_FC_PAUSE_TIME 0x0680
#define IGB_EEPROM_APME 0x400;
-#define IGB_QUEUE_IDLE 0
-#define IGB_QUEUE_WORKING 1
-#define IGB_QUEUE_HUNG 2
+/* Queue minimum free for use */
+#define IGB_QUEUE_THRESHOLD (adapter->num_tx_desc / 8)
+/* Queue bit defines */
+#define IGB_QUEUE_IDLE 1
+#define IGB_QUEUE_WORKING 2
+#define IGB_QUEUE_HUNG 4
+#define IGB_QUEUE_DEPLETED 8
/*
* TDBA/RDBA should be aligned on 16 byte boundary. But TDLEN/RDLEN should be
@@ -297,7 +301,6 @@ struct tx_ring {
struct buf_ring *br;
#endif
bus_dma_tag_t txtag;
- struct task txq_task;
u32 bytes;
u32 packets;
diff --git a/sys/dev/e1000/if_lem.c b/sys/dev/e1000/if_lem.c
index a9202f0..5fe24be 100644
--- a/sys/dev/e1000/if_lem.c
+++ b/sys/dev/e1000/if_lem.c
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -35,6 +35,7 @@
#ifdef HAVE_KERNEL_OPTION_HEADERS
#include "opt_device_polling.h"
#include "opt_inet.h"
+#include "opt_inet6.h"
#endif
#include <sys/param.h>
@@ -84,7 +85,7 @@
/*********************************************************************
* Legacy Em Driver version:
*********************************************************************/
-char lem_driver_version[] = "1.0.3";
+char lem_driver_version[] = "1.0.4";
/*********************************************************************
* PCI Device ID Table
@@ -316,6 +317,10 @@ TUNABLE_INT("hw.em.fc_setting", &lem_fc_setting);
/* Global used in WOL setup with multiport cards */
static int global_quad_port_a = 0;
+#ifdef DEV_NETMAP /* see ixgbe.c for details */
+#include <dev/netmap/if_lem_netmap.h>
+#endif /* DEV_NETMAP */
+
/*********************************************************************
* Device identification routine
*
@@ -386,6 +391,11 @@ lem_attach(device_t dev)
INIT_DEBUGOUT("lem_attach: begin");
+ if (resource_disabled("lem", device_get_unit(dev))) {
+ device_printf(dev, "Disabled by device hint\n");
+ return (ENXIO);
+ }
+
adapter = device_get_softc(dev);
adapter->dev = adapter->osdep.dev = dev;
EM_CORE_LOCK_INIT(adapter, device_get_nameunit(dev));
@@ -449,7 +459,7 @@ lem_attach(device_t dev)
/* Sysctl for setting the interface flow control */
lem_set_flow_cntrl(adapter, "flow_control",
- "max number of rx packets to process",
+ "flow control setting",
&adapter->fc_setting, lem_fc_setting);
/*
@@ -646,6 +656,9 @@ lem_attach(device_t dev)
adapter->led_dev = led_create(lem_led_func, adapter,
device_get_nameunit(dev));
+#ifdef DEV_NETMAP
+ lem_netmap_attach(adapter);
+#endif /* DEV_NETMAP */
INIT_DEBUGOUT("lem_attach: end");
return (0);
@@ -724,6 +737,9 @@ lem_detach(device_t dev)
callout_drain(&adapter->timer);
callout_drain(&adapter->tx_fifo_timer);
+#ifdef DEV_NETMAP
+ netmap_detach(ifp);
+#endif /* DEV_NETMAP */
lem_free_pci_resources(adapter);
bus_generic_detach(dev);
if_free(ifp);
@@ -880,11 +896,12 @@ static int
lem_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
{
struct adapter *adapter = ifp->if_softc;
- struct ifreq *ifr = (struct ifreq *)data;
-#ifdef INET
- struct ifaddr *ifa = (struct ifaddr *)data;
+ struct ifreq *ifr = (struct ifreq *)data;
+#if defined(INET) || defined(INET6)
+ struct ifaddr *ifa = (struct ifaddr *)data;
#endif
- int error = 0;
+ bool avoid_reset = FALSE;
+ int error = 0;
if (adapter->in_detach)
return (error);
@@ -892,23 +909,26 @@ lem_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
switch (command) {
case SIOCSIFADDR:
#ifdef INET
- if (ifa->ifa_addr->sa_family == AF_INET) {
- /*
- * XXX
- * Since resetting hardware takes a very long time
- * and results in link renegotiation we only
- * initialize the hardware only when it is absolutely
- * required.
- */
+ if (ifa->ifa_addr->sa_family == AF_INET)
+ avoid_reset = TRUE;
+#endif
+#ifdef INET6
+ if (ifa->ifa_addr->sa_family == AF_INET6)
+ avoid_reset = TRUE;
+#endif
+ /*
+ ** Calling init results in link renegotiation,
+ ** so we avoid doing it when possible.
+ */
+ if (avoid_reset) {
ifp->if_flags |= IFF_UP;
- if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) {
- EM_CORE_LOCK(adapter);
- lem_init_locked(adapter);
- EM_CORE_UNLOCK(adapter);
- }
- arp_ifinit(ifp, ifa);
- } else
+ if (!(ifp->if_drv_flags & IFF_DRV_RUNNING))
+ lem_init(adapter);
+#ifdef INET
+ if (!(ifp->if_flags & IFF_NOARP))
+ arp_ifinit(ifp, ifa);
#endif
+ } else
error = ether_ioctl(ifp, command, data);
break;
case SIOCSIFMTU:
@@ -1207,9 +1227,6 @@ lem_init_locked(struct adapter *adapter)
/* AMT based hardware can now take control from firmware */
if (adapter->has_manage && adapter->has_amt)
lem_get_hw_control(adapter);
-
- /* Don't reset the phy next time init gets called */
- adapter->hw.phy.reset_disable = TRUE;
}
static void
@@ -1508,11 +1525,6 @@ lem_media_change(struct ifnet *ifp)
device_printf(adapter->dev, "Unsupported media type\n");
}
- /* As the speed/duplex settings my have changed we need to
- * reset the PHY.
- */
- adapter->hw.phy.reset_disable = FALSE;
-
lem_init_locked(adapter);
EM_CORE_UNLOCK(adapter);
@@ -2637,6 +2649,11 @@ static void
lem_setup_transmit_structures(struct adapter *adapter)
{
struct em_buffer *tx_buffer;
+#ifdef DEV_NETMAP
+ /* we are already locked */
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_slot *slot = netmap_reset(na, NR_TX, 0, 0);
+#endif /* DEV_NETMAP */
/* Clear the old ring contents */
bzero(adapter->tx_desc_base,
@@ -2650,6 +2667,22 @@ lem_setup_transmit_structures(struct adapter *adapter)
bus_dmamap_unload(adapter->txtag, tx_buffer->map);
m_freem(tx_buffer->m_head);
tx_buffer->m_head = NULL;
+#ifdef DEV_NETMAP
+ if (slot) {
+ /* slot si is mapped to the i-th NIC-ring entry */
+ int si = i + na->tx_rings[0].nkr_hwofs;
+ void *addr;
+
+ if (si > na->num_tx_desc)
+ si -= na->num_tx_desc;
+ addr = NMB(slot + si);
+ adapter->tx_desc_base[si].buffer_addr =
+ htole64(vtophys(addr));
+ /* reload the map for netmap mode */
+ netmap_load_map(adapter->txtag,
+ tx_buffer->map, addr, na->buff_size);
+ }
+#endif /* DEV_NETMAP */
tx_buffer->next_eop = -1;
}
@@ -2951,6 +2984,12 @@ lem_txeof(struct adapter *adapter)
EM_TX_LOCK_ASSERT(adapter);
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ selwakeuppri(&NA(ifp)->tx_rings[0].si, PI_NET);
+ return;
+ }
+#endif /* DEV_NETMAP */
if (adapter->num_tx_desc_avail == adapter->num_tx_desc)
return;
@@ -3181,6 +3220,11 @@ lem_setup_receive_structures(struct adapter *adapter)
{
struct em_buffer *rx_buffer;
int i, error;
+#ifdef DEV_NETMAP
+ /* we are already under lock */
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_slot *slot = netmap_reset(na, NR_RX, 0, 0);
+#endif
/* Reset descriptor ring */
bzero(adapter->rx_desc_base,
@@ -3200,6 +3244,23 @@ lem_setup_receive_structures(struct adapter *adapter)
/* Allocate new ones. */
for (i = 0; i < adapter->num_rx_desc; i++) {
+#ifdef DEV_NETMAP
+ if (slot) {
+ /* slot si is mapped to the i-th NIC-ring entry */
+ int si = i + na->rx_rings[0].nkr_hwofs;
+ void *addr;
+
+ if (si > na->num_rx_desc)
+ si -= na->num_rx_desc;
+ addr = NMB(slot + si);
+ netmap_load_map(adapter->rxtag,
+ rx_buffer->map, addr, na->buff_size);
+ /* Update descriptor */
+ adapter->rx_desc_base[i].buffer_addr =
+ htole64(vtophys(addr));
+ continue;
+ }
+#endif /* DEV_NETMAP */
error = lem_get_buf(adapter, i);
if (error)
return (error);
@@ -3324,6 +3385,18 @@ lem_initialize_receive_unit(struct adapter *adapter)
* Tail Descriptor Pointers
*/
E1000_WRITE_REG(&adapter->hw, E1000_RDH(0), 0);
+#ifdef DEV_NETMAP
+ /* preserve buffers already made available to clients */
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_kring *kring = &na->rx_rings[0];
+ int t = na->num_rx_desc - 1 - kring->nr_hwavail;
+
+ if (t >= na->num_rx_desc)
+ t -= na->num_rx_desc;
+ E1000_WRITE_REG(&adapter->hw, E1000_RDT(0), t);
+ } else
+#endif /* DEV_NETMAP */
E1000_WRITE_REG(&adapter->hw, E1000_RDT(0), adapter->num_rx_desc - 1);
return;
@@ -3407,6 +3480,14 @@ lem_rxeof(struct adapter *adapter, int count, int *done)
bus_dmamap_sync(adapter->rxdma.dma_tag, adapter->rxdma.dma_map,
BUS_DMASYNC_POSTREAD);
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ selwakeuppri(&NA(ifp)->rx_rings[0].si, PI_NET);
+ EM_RX_UNLOCK(adapter);
+ return (0);
+ }
+#endif /* DEV_NETMAP */
+
if (!((current_desc->status) & E1000_RXD_STAT_DD)) {
if (done != NULL)
*done = rx_sent;
diff --git a/sys/dev/e1000/if_lem.h b/sys/dev/e1000/if_lem.h
index 46ebad1..c1973e5 100644
--- a/sys/dev/e1000/if_lem.h
+++ b/sys/dev/e1000/if_lem.h
@@ -1,6 +1,6 @@
/******************************************************************************
- Copyright (c) 2001-2010, Intel Corporation
+ Copyright (c) 2001-2011, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -217,7 +217,7 @@
#define EM_BAR_MEM_TYPE_64BIT 0x00000004
#define EM_MSIX_BAR 3 /* On 82575 */
-#if !defined(SYSCTL_ADD_UQUAD)
+#if __FreeBSD_version < 900000
#define SYSCTL_ADD_UQUAD SYSCTL_ADD_QUAD
#endif
diff --git a/sys/dev/ed/if_ed.c b/sys/dev/ed/if_ed.c
index b0e1c0c..80446a6 100644
--- a/sys/dev/ed/if_ed.c
+++ b/sys/dev/ed/if_ed.c
@@ -1709,12 +1709,19 @@ ed_shmem_write_mbufs(struct ed_softc *sc, struct mbuf *m, bus_size_t dst)
break;
}
}
- for (len = 0; m != 0; m = m->m_next) {
- if (sc->isa16bit)
- bus_space_write_region_2(sc->mem_bst,
- sc->mem_bsh, dst,
- mtod(m, uint16_t *), (m->m_len + 1)/ 2);
- else
+ for (len = 0; m != NULL; m = m->m_next) {
+ if (m->m_len == 0)
+ continue;
+ if (sc->isa16bit) {
+ if (m->m_len > 1)
+ bus_space_write_region_2(sc->mem_bst,
+ sc->mem_bsh, dst,
+ mtod(m, uint16_t *), m->m_len / 2);
+ if ((m->m_len & 1) != 0)
+ bus_space_write_1(sc->mem_bst, sc->mem_bsh,
+ dst + m->m_len - 1,
+ *(mtod(m, uint8_t *) + m->m_len - 1));
+ } else
bus_space_write_region_1(sc->mem_bst,
sc->mem_bsh, dst,
mtod(m, uint8_t *), m->m_len);
diff --git a/sys/dev/eisa/eisaconf.c b/sys/dev/eisa/eisaconf.c
index 689efb6..8ec3419 100644
--- a/sys/dev/eisa/eisaconf.c
+++ b/sys/dev/eisa/eisaconf.c
@@ -557,7 +557,6 @@ static device_method_t eisa_methods[] = {
DEVMETHOD(bus_probe_nomatch, eisa_probe_nomatch),
DEVMETHOD(bus_read_ivar, eisa_read_ivar),
DEVMETHOD(bus_write_ivar, eisa_write_ivar),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
DEVMETHOD(bus_alloc_resource, eisa_alloc_resource),
DEVMETHOD(bus_release_resource, eisa_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
@@ -570,7 +569,7 @@ static device_method_t eisa_methods[] = {
DEVMETHOD(eisa_add_iospace, eisa_add_iospace_m),
DEVMETHOD(eisa_add_mspace, eisa_add_mspace_m),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t eisa_driver = {
diff --git a/sys/dev/esp/esp_pci.c b/sys/dev/esp/esp_pci.c
index 2fa2030..cd88f6b 100644
--- a/sys/dev/esp/esp_pci.c
+++ b/sys/dev/esp/esp_pci.c
@@ -146,7 +146,7 @@ static device_method_t esp_pci_methods[] = {
DEVMETHOD(device_suspend, esp_pci_suspend),
DEVMETHOD(device_resume, esp_pci_resume),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t esp_pci_driver = {
diff --git a/sys/dev/esp/esp_sbus.c b/sys/dev/esp/esp_sbus.c
index c1ff021..01ffb8d 100644
--- a/sys/dev/esp/esp_sbus.c
+++ b/sys/dev/esp/esp_sbus.c
@@ -117,7 +117,7 @@ static device_method_t esp_dma_methods[] = {
DEVMETHOD(device_suspend, esp_suspend),
DEVMETHOD(device_resume, esp_resume),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t esp_dma_driver = {
@@ -136,7 +136,7 @@ static device_method_t esp_sbus_methods[] = {
DEVMETHOD(device_suspend, esp_suspend),
DEVMETHOD(device_resume, esp_resume),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t esp_sbus_driver = {
diff --git a/sys/dev/esp/ncr53c9x.c b/sys/dev/esp/ncr53c9x.c
index b9d4990..93ad337 100644
--- a/sys/dev/esp/ncr53c9x.c
+++ b/sys/dev/esp/ncr53c9x.c
@@ -316,7 +316,7 @@ ncr53c9x_attach(struct ncr53c9x_softc *sc)
* The recommended timeout is 250ms. This register is loaded
* with a value calculated as follows, from the docs:
*
- * (timout period) x (CLK frequency)
+ * (timeout period) x (CLK frequency)
* reg = -------------------------------------
* 8192 x (Clock Conversion Factor)
*
diff --git a/sys/dev/et/if_et.c b/sys/dev/et/if_et.c
index 539224a..426ae88 100644
--- a/sys/dev/et/if_et.c
+++ b/sys/dev/et/if_et.c
@@ -87,6 +87,8 @@ static int et_probe(device_t);
static int et_attach(device_t);
static int et_detach(device_t);
static int et_shutdown(device_t);
+static int et_suspend(device_t);
+static int et_resume(device_t);
static int et_miibus_readreg(device_t, int, int);
static int et_miibus_writereg(device_t, int, int, int);
@@ -97,7 +99,7 @@ static void et_init(void *);
static int et_ioctl(struct ifnet *, u_long, caddr_t);
static void et_start_locked(struct ifnet *);
static void et_start(struct ifnet *);
-static void et_watchdog(struct et_softc *);
+static int et_watchdog(struct et_softc *);
static int et_ifmedia_upd_locked(struct ifnet *);
static int et_ifmedia_upd(struct ifnet *);
static void et_ifmedia_sts(struct ifnet *, struct ifmediareq *);
@@ -107,29 +109,25 @@ static int et_sysctl_rx_intr_npkts(SYSCTL_HANDLER_ARGS);
static int et_sysctl_rx_intr_delay(SYSCTL_HANDLER_ARGS);
static void et_intr(void *);
-static void et_enable_intrs(struct et_softc *, uint32_t);
-static void et_disable_intrs(struct et_softc *);
static void et_rxeof(struct et_softc *);
static void et_txeof(struct et_softc *);
-static int et_dma_alloc(device_t);
-static void et_dma_free(device_t);
-static int et_dma_mem_create(device_t, bus_size_t, bus_dma_tag_t *,
- void **, bus_addr_t *, bus_dmamap_t *);
-static void et_dma_mem_destroy(bus_dma_tag_t, void *, bus_dmamap_t);
-static int et_dma_mbuf_create(device_t);
-static void et_dma_mbuf_destroy(device_t, int, const int[]);
-static void et_dma_ring_addr(void *, bus_dma_segment_t *, int, int);
-static void et_dma_buf_addr(void *, bus_dma_segment_t *, int,
- bus_size_t, int);
-static int et_init_tx_ring(struct et_softc *);
+static int et_dma_alloc(struct et_softc *);
+static void et_dma_free(struct et_softc *);
+static void et_dma_map_addr(void *, bus_dma_segment_t *, int, int);
+static int et_dma_ring_alloc(struct et_softc *, bus_size_t, bus_size_t,
+ bus_dma_tag_t *, uint8_t **, bus_dmamap_t *, bus_addr_t *,
+ const char *);
+static void et_dma_ring_free(struct et_softc *, bus_dma_tag_t *, uint8_t **,
+ bus_dmamap_t *);
+static void et_init_tx_ring(struct et_softc *);
static int et_init_rx_ring(struct et_softc *);
static void et_free_tx_ring(struct et_softc *);
static void et_free_rx_ring(struct et_softc *);
static int et_encap(struct et_softc *, struct mbuf **);
-static int et_newbuf(struct et_rxbuf_data *, int, int, int);
-static int et_newbuf_cluster(struct et_rxbuf_data *, int, int);
-static int et_newbuf_hdr(struct et_rxbuf_data *, int, int);
+static int et_newbuf_cluster(struct et_rxbuf_data *, int);
+static int et_newbuf_hdr(struct et_rxbuf_data *, int);
+static void et_rxbuf_discard(struct et_rxbuf_data *, int);
static void et_stop(struct et_softc *);
static int et_chip_init(struct et_softc *);
@@ -143,14 +141,12 @@ static int et_start_rxdma(struct et_softc *);
static int et_start_txdma(struct et_softc *);
static int et_stop_rxdma(struct et_softc *);
static int et_stop_txdma(struct et_softc *);
-static int et_enable_txrx(struct et_softc *, int);
static void et_reset(struct et_softc *);
static int et_bus_config(struct et_softc *);
static void et_get_eaddr(device_t, uint8_t[]);
static void et_setmulti(struct et_softc *);
static void et_tick(void *);
-static void et_setmedia(struct et_softc *);
-static void et_setup_rxdesc(struct et_rxbuf_data *, int, bus_addr_t);
+static void et_stats_update(struct et_softc *);
static const struct et_dev {
uint16_t vid;
@@ -169,15 +165,14 @@ static device_method_t et_methods[] = {
DEVMETHOD(device_attach, et_attach),
DEVMETHOD(device_detach, et_detach),
DEVMETHOD(device_shutdown, et_shutdown),
-
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
+ DEVMETHOD(device_suspend, et_suspend),
+ DEVMETHOD(device_resume, et_resume),
DEVMETHOD(miibus_readreg, et_miibus_readreg),
DEVMETHOD(miibus_writereg, et_miibus_writereg),
DEVMETHOD(miibus_statchg, et_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t et_driver = {
@@ -201,18 +196,6 @@ TUNABLE_INT("hw.et.rx_intr_npkts", &et_rx_intr_npkts);
TUNABLE_INT("hw.et.rx_intr_delay", &et_rx_intr_delay);
TUNABLE_INT("hw.et.tx_intr_nsegs", &et_tx_intr_nsegs);
-struct et_bsize {
- int bufsize;
- et_newbuf_t newbuf;
-};
-
-static const struct et_bsize et_bufsize_std[ET_RX_NRING] = {
- { .bufsize = ET_RXDMA_CTRL_RING0_128,
- .newbuf = et_newbuf_hdr },
- { .bufsize = ET_RXDMA_CTRL_RING1_2048,
- .newbuf = et_newbuf_cluster },
-};
-
static int
et_probe(device_t dev)
{
@@ -225,7 +208,7 @@ et_probe(device_t dev)
for (d = et_devices; d->desc != NULL; ++d) {
if (vid == d->vid && did == d->did) {
device_set_desc(dev, d->desc);
- return (0);
+ return (BUS_PROBE_DEFAULT);
}
}
return (ENXIO);
@@ -237,12 +220,14 @@ et_attach(device_t dev)
struct et_softc *sc;
struct ifnet *ifp;
uint8_t eaddr[ETHER_ADDR_LEN];
+ uint32_t pmcfg;
int cap, error, msic;
sc = device_get_softc(dev);
sc->dev = dev;
mtx_init(&sc->sc_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK,
MTX_DEF);
+ callout_init_mtx(&sc->sc_tick, &sc->sc_mtx, 0);
ifp = sc->ifp = if_alloc(IFT_ETHER);
if (ifp == NULL) {
@@ -265,9 +250,9 @@ et_attach(device_t dev)
/*
* Allocate IO memory
*/
- sc->sc_mem_rid = ET_PCIR_BAR;
+ sc->sc_mem_rid = PCIR_BAR(0);
sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
- &sc->sc_mem_rid, RF_ACTIVE);
+ &sc->sc_mem_rid, RF_ACTIVE);
if (sc->sc_mem_res == NULL) {
device_printf(dev, "can't allocate IO memory\n");
return (ENXIO);
@@ -311,20 +296,24 @@ et_attach(device_t dev)
goto fail;
}
+ if (pci_get_device(dev) == PCI_PRODUCT_LUCENT_ET1310_FAST)
+ sc->sc_flags |= ET_FLAG_FASTETHER;
+
error = et_bus_config(sc);
if (error)
goto fail;
et_get_eaddr(dev, eaddr);
- CSR_WRITE_4(sc, ET_PM,
- ET_PM_SYSCLK_GATE | ET_PM_TXCLK_GATE | ET_PM_RXCLK_GATE);
+ /* Take PHY out of COMA and enable clocks. */
+ pmcfg = ET_PM_SYSCLK_GATE | ET_PM_TXCLK_GATE | ET_PM_RXCLK_GATE;
+ if ((sc->sc_flags & ET_FLAG_FASTETHER) == 0)
+ pmcfg |= EM_PM_GIGEPHY_ENB;
+ CSR_WRITE_4(sc, ET_PM, pmcfg);
et_reset(sc);
- et_disable_intrs(sc);
-
- error = et_dma_alloc(dev);
+ error = et_dma_alloc(sc);
if (error)
goto fail;
@@ -334,23 +323,26 @@ et_attach(device_t dev)
ifp->if_init = et_init;
ifp->if_ioctl = et_ioctl;
ifp->if_start = et_start;
- ifp->if_mtu = ETHERMTU;
ifp->if_capabilities = IFCAP_TXCSUM | IFCAP_VLAN_MTU;
ifp->if_capenable = ifp->if_capabilities;
- IFQ_SET_MAXLEN(&ifp->if_snd, ET_TX_NDESC);
+ ifp->if_snd.ifq_drv_maxlen = ET_TX_NDESC - 1;
+ IFQ_SET_MAXLEN(&ifp->if_snd, ET_TX_NDESC - 1);
IFQ_SET_READY(&ifp->if_snd);
et_chip_attach(sc);
error = mii_attach(dev, &sc->sc_miibus, ifp, et_ifmedia_upd,
- et_ifmedia_sts, BMSR_DEFCAPMASK, MII_PHY_ANY, MII_OFFSET_ANY, 0);
+ et_ifmedia_sts, BMSR_DEFCAPMASK, MII_PHY_ANY, MII_OFFSET_ANY,
+ MIIF_DOPAUSE);
if (error) {
device_printf(dev, "attaching PHYs failed\n");
goto fail;
}
ether_ifattach(ifp, eaddr);
- callout_init_mtx(&sc->sc_tick, &sc->sc_mtx, 0);
+
+ /* Tell the upper layer(s) we support long frames. */
+ ifp->if_hdrlen = sizeof(struct ether_vlan_header);
error = bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_NET | INTR_MPSAFE,
NULL, et_intr, sc, &sc->sc_irq_handle);
@@ -374,36 +366,32 @@ et_detach(device_t dev)
struct et_softc *sc = device_get_softc(dev);
if (device_is_attached(dev)) {
- struct ifnet *ifp = sc->ifp;
-
+ ether_ifdetach(sc->ifp);
ET_LOCK(sc);
et_stop(sc);
- bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_irq_handle);
ET_UNLOCK(sc);
-
- ether_ifdetach(ifp);
+ callout_drain(&sc->sc_tick);
}
if (sc->sc_miibus != NULL)
device_delete_child(dev, sc->sc_miibus);
bus_generic_detach(dev);
- if (sc->sc_irq_res != NULL) {
- bus_release_resource(dev, SYS_RES_IRQ, sc->sc_irq_rid,
- sc->sc_irq_res);
- }
+ if (sc->sc_irq_handle != NULL)
+ bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_irq_handle);
+ if (sc->sc_irq_res != NULL)
+ bus_release_resource(dev, SYS_RES_IRQ,
+ rman_get_rid(sc->sc_irq_res), sc->sc_irq_res);
if ((sc->sc_flags & ET_FLAG_MSI) != 0)
pci_release_msi(dev);
-
- if (sc->sc_mem_res != NULL) {
- bus_release_resource(dev, SYS_RES_MEMORY, sc->sc_mem_rid,
- sc->sc_mem_res);
- }
+ if (sc->sc_mem_res != NULL)
+ bus_release_resource(dev, SYS_RES_MEMORY,
+ rman_get_rid(sc->sc_mem_res), sc->sc_mem_res);
if (sc->ifp != NULL)
if_free(sc->ifp);
- et_dma_free(dev);
+ et_dma_free(sc);
mtx_destroy(&sc->sc_mtx);
@@ -506,7 +494,100 @@ et_miibus_writereg(device_t dev, int phy, int reg, int val0)
static void
et_miibus_statchg(device_t dev)
{
- et_setmedia(device_get_softc(dev));
+ struct et_softc *sc;
+ struct mii_data *mii;
+ struct ifnet *ifp;
+ uint32_t cfg1, cfg2, ctrl;
+ int i;
+
+ sc = device_get_softc(dev);
+
+ mii = device_get_softc(sc->sc_miibus);
+ ifp = sc->ifp;
+ if (mii == NULL || ifp == NULL ||
+ (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ return;
+
+ sc->sc_flags &= ~ET_FLAG_LINK;
+ if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) ==
+ (IFM_ACTIVE | IFM_AVALID)) {
+ switch (IFM_SUBTYPE(mii->mii_media_active)) {
+ case IFM_10_T:
+ case IFM_100_TX:
+ sc->sc_flags |= ET_FLAG_LINK;
+ break;
+ case IFM_1000_T:
+ if ((sc->sc_flags & ET_FLAG_FASTETHER) == 0)
+ sc->sc_flags |= ET_FLAG_LINK;
+ break;
+ }
+ }
+
+ /* XXX Stop TX/RX MAC? */
+ if ((sc->sc_flags & ET_FLAG_LINK) == 0)
+ return;
+
+ /* Program MACs with resolved speed/duplex/flow-control. */
+ ctrl = CSR_READ_4(sc, ET_MAC_CTRL);
+ ctrl &= ~(ET_MAC_CTRL_GHDX | ET_MAC_CTRL_MODE_MII);
+ cfg1 = CSR_READ_4(sc, ET_MAC_CFG1);
+ cfg1 &= ~(ET_MAC_CFG1_TXFLOW | ET_MAC_CFG1_RXFLOW |
+ ET_MAC_CFG1_LOOPBACK);
+ cfg2 = CSR_READ_4(sc, ET_MAC_CFG2);
+ cfg2 &= ~(ET_MAC_CFG2_MODE_MII | ET_MAC_CFG2_MODE_GMII |
+ ET_MAC_CFG2_FDX | ET_MAC_CFG2_BIGFRM);
+ cfg2 |= ET_MAC_CFG2_LENCHK | ET_MAC_CFG2_CRC | ET_MAC_CFG2_PADCRC |
+ ((7 << ET_MAC_CFG2_PREAMBLE_LEN_SHIFT) &
+ ET_MAC_CFG2_PREAMBLE_LEN_MASK);
+
+ if (IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_T)
+ cfg2 |= ET_MAC_CFG2_MODE_GMII;
+ else {
+ cfg2 |= ET_MAC_CFG2_MODE_MII;
+ ctrl |= ET_MAC_CTRL_MODE_MII;
+ }
+
+ if (IFM_OPTIONS(mii->mii_media_active) & IFM_FDX) {
+ cfg2 |= ET_MAC_CFG2_FDX;
+ /*
+ * Controller lacks automatic TX pause frame
+ * generation so it should be handled by driver.
+ * Even though driver can send pause frame with
+ * arbitrary pause time, controller does not
+ * provide a way that tells how many free RX
+ * buffers are available in controller. This
+ * limitation makes it hard to generate XON frame
+ * in time on driver side so don't enable TX flow
+ * control.
+ */
+#ifdef notyet
+ if (IFM_OPTIONS(mii->mii_media_active) & IFM_ETH_TXPAUSE)
+ cfg1 |= ET_MAC_CFG1_TXFLOW;
+#endif
+ if (IFM_OPTIONS(mii->mii_media_active) & IFM_ETH_RXPAUSE)
+ cfg1 |= ET_MAC_CFG1_RXFLOW;
+ } else
+ ctrl |= ET_MAC_CTRL_GHDX;
+
+ CSR_WRITE_4(sc, ET_MAC_CTRL, ctrl);
+ CSR_WRITE_4(sc, ET_MAC_CFG2, cfg2);
+ cfg1 |= ET_MAC_CFG1_TXEN | ET_MAC_CFG1_RXEN;
+ CSR_WRITE_4(sc, ET_MAC_CFG1, cfg1);
+
+#define NRETRY 50
+
+ for (i = 0; i < NRETRY; ++i) {
+ cfg1 = CSR_READ_4(sc, ET_MAC_CFG1);
+ if ((cfg1 & (ET_MAC_CFG1_SYNC_TXEN | ET_MAC_CFG1_SYNC_RXEN)) ==
+ (ET_MAC_CFG1_SYNC_TXEN | ET_MAC_CFG1_SYNC_RXEN))
+ break;
+ DELAY(100);
+ }
+ if (i == NRETRY)
+ if_printf(ifp, "can't enable RX/TX\n");
+ sc->sc_flags |= ET_FLAG_TXRX_ENABLED;
+
+#undef NRETRY
}
static int
@@ -537,10 +618,17 @@ et_ifmedia_upd(struct ifnet *ifp)
static void
et_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
{
- struct et_softc *sc = ifp->if_softc;
- struct mii_data *mii = device_get_softc(sc->sc_miibus);
+ struct et_softc *sc;
+ struct mii_data *mii;
+ sc = ifp->if_softc;
ET_LOCK(sc);
+ if ((ifp->if_flags & IFF_UP) == 0) {
+ ET_UNLOCK(sc);
+ return;
+ }
+
+ mii = device_get_softc(sc->sc_miibus);
mii_pollstat(mii);
ifmr->ifm_active = mii->mii_media_active;
ifmr->ifm_status = mii->mii_media_status;
@@ -555,17 +643,20 @@ et_stop(struct et_softc *sc)
ET_LOCK_ASSERT(sc);
callout_stop(&sc->sc_tick);
+ /* Disable interrupts. */
+ CSR_WRITE_4(sc, ET_INTR_MASK, 0xffffffff);
+
+ CSR_WRITE_4(sc, ET_MAC_CFG1, CSR_READ_4(sc, ET_MAC_CFG1) & ~(
+ ET_MAC_CFG1_TXEN | ET_MAC_CFG1_RXEN));
+ DELAY(100);
et_stop_rxdma(sc);
et_stop_txdma(sc);
-
- et_disable_intrs(sc);
+ et_stats_update(sc);
et_free_tx_ring(sc);
et_free_rx_ring(sc);
- et_reset(sc);
-
sc->sc_tx = 0;
sc->sc_tx_intr = 0;
sc->sc_flags &= ~ET_FLAG_TXRX_ENABLED;
@@ -643,12 +734,7 @@ et_bus_config(struct et_softc *sc)
/*
* Set max read request size to 2048 bytes
*/
- val = pci_read_config(sc->dev,
- sc->sc_expcap + PCIR_EXPRESS_DEVICE_CTL, 2);
- val &= ~PCIM_EXP_CTL_MAX_READ_REQUEST;
- val |= ET_PCIV_DEVICE_CTRL_RRSZ_2K;
- pci_write_config(sc->dev,
- sc->sc_expcap + PCIR_EXPRESS_DEVICE_CTL, val, 2);
+ pci_set_max_read_req(sc->dev, 2048);
return (0);
}
@@ -685,249 +771,254 @@ et_reset(struct et_softc *sc)
ET_MAC_CFG1_RST_TXFUNC | ET_MAC_CFG1_RST_RXFUNC |
ET_MAC_CFG1_RST_TXMC | ET_MAC_CFG1_RST_RXMC);
CSR_WRITE_4(sc, ET_MAC_CFG1, 0);
-}
-
-static void
-et_disable_intrs(struct et_softc *sc)
-{
+ /* Disable interrupts. */
CSR_WRITE_4(sc, ET_INTR_MASK, 0xffffffff);
}
+struct et_dmamap_arg {
+ bus_addr_t et_busaddr;
+};
+
static void
-et_enable_intrs(struct et_softc *sc, uint32_t intrs)
+et_dma_map_addr(void *arg, bus_dma_segment_t *segs, int nseg, int error)
{
- CSR_WRITE_4(sc, ET_INTR_MASK, ~intrs);
+ struct et_dmamap_arg *ctx;
+
+ if (error)
+ return;
+
+ KASSERT(nseg == 1, ("%s: %d segments returned!", __func__, nseg));
+
+ ctx = arg;
+ ctx->et_busaddr = segs->ds_addr;
}
static int
-et_dma_alloc(device_t dev)
+et_dma_ring_alloc(struct et_softc *sc, bus_size_t alignment, bus_size_t maxsize,
+ bus_dma_tag_t *tag, uint8_t **ring, bus_dmamap_t *map, bus_addr_t *paddr,
+ const char *msg)
{
- struct et_softc *sc = device_get_softc(dev);
- struct et_txdesc_ring *tx_ring = &sc->sc_tx_ring;
- struct et_txstatus_data *txsd = &sc->sc_tx_status;
- struct et_rxstat_ring *rxst_ring = &sc->sc_rxstat_ring;
- struct et_rxstatus_data *rxsd = &sc->sc_rx_status;
- int i, error;
+ struct et_dmamap_arg ctx;
+ int error;
- /*
- * Create top level DMA tag
- */
- error = bus_dma_tag_create(NULL, 1, 0,
- BUS_SPACE_MAXADDR_32BIT,
- BUS_SPACE_MAXADDR,
- NULL, NULL,
- MAXBSIZE,
- BUS_SPACE_UNRESTRICTED,
- BUS_SPACE_MAXSIZE_32BIT,
- 0, NULL, NULL, &sc->sc_dtag);
- if (error) {
- device_printf(dev, "can't create DMA tag\n");
+ error = bus_dma_tag_create(sc->sc_dtag, alignment, 0, BUS_SPACE_MAXADDR,
+ BUS_SPACE_MAXADDR, NULL, NULL, maxsize, 1, maxsize, 0, NULL, NULL,
+ tag);
+ if (error != 0) {
+ device_printf(sc->dev, "could not create %s dma tag\n", msg);
return (error);
}
-
- /*
- * Create TX ring DMA stuffs
- */
- error = et_dma_mem_create(dev, ET_TX_RING_SIZE, &tx_ring->tr_dtag,
- (void **)&tx_ring->tr_desc,
- &tx_ring->tr_paddr, &tx_ring->tr_dmap);
- if (error) {
- device_printf(dev, "can't create TX ring DMA stuffs\n");
+ /* Allocate DMA'able memory for ring. */
+ error = bus_dmamem_alloc(*tag, (void **)ring,
+ BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, map);
+ if (error != 0) {
+ device_printf(sc->dev,
+ "could not allocate DMA'able memory for %s\n", msg);
return (error);
}
-
- /*
- * Create TX status DMA stuffs
- */
- error = et_dma_mem_create(dev, sizeof(uint32_t), &txsd->txsd_dtag,
- (void **)&txsd->txsd_status,
- &txsd->txsd_paddr, &txsd->txsd_dmap);
- if (error) {
- device_printf(dev, "can't create TX status DMA stuffs\n");
+ /* Load the address of the ring. */
+ ctx.et_busaddr = 0;
+ error = bus_dmamap_load(*tag, *map, *ring, maxsize, et_dma_map_addr,
+ &ctx, BUS_DMA_NOWAIT);
+ if (error != 0) {
+ device_printf(sc->dev,
+ "could not load DMA'able memory for %s\n", msg);
return (error);
}
+ *paddr = ctx.et_busaddr;
+ return (0);
+}
- /*
- * Create DMA stuffs for RX rings
- */
- for (i = 0; i < ET_RX_NRING; ++i) {
- static const uint32_t rx_ring_posreg[ET_RX_NRING] =
- { ET_RX_RING0_POS, ET_RX_RING1_POS };
-
- struct et_rxdesc_ring *rx_ring = &sc->sc_rx_ring[i];
+static void
+et_dma_ring_free(struct et_softc *sc, bus_dma_tag_t *tag, uint8_t **ring,
+ bus_dmamap_t *map)
+{
- error = et_dma_mem_create(dev, ET_RX_RING_SIZE,
- &rx_ring->rr_dtag,
- (void **)&rx_ring->rr_desc,
- &rx_ring->rr_paddr,
- &rx_ring->rr_dmap);
- if (error) {
- device_printf(dev, "can't create DMA stuffs for "
- "the %d RX ring\n", i);
- return (error);
- }
- rx_ring->rr_posreg = rx_ring_posreg[i];
+ if (*map != NULL)
+ bus_dmamap_unload(*tag, *map);
+ if (*map != NULL && *ring != NULL) {
+ bus_dmamem_free(*tag, *ring, *map);
+ *ring = NULL;
+ *map = NULL;
}
-
- /*
- * Create RX stat ring DMA stuffs
- */
- error = et_dma_mem_create(dev, ET_RXSTAT_RING_SIZE,
- &rxst_ring->rsr_dtag,
- (void **)&rxst_ring->rsr_stat,
- &rxst_ring->rsr_paddr, &rxst_ring->rsr_dmap);
- if (error) {
- device_printf(dev, "can't create RX stat ring DMA stuffs\n");
- return (error);
+ if (*tag) {
+ bus_dma_tag_destroy(*tag);
+ *tag = NULL;
}
+}
- /*
- * Create RX status DMA stuffs
- */
- error = et_dma_mem_create(dev, sizeof(struct et_rxstatus),
- &rxsd->rxsd_dtag,
- (void **)&rxsd->rxsd_status,
- &rxsd->rxsd_paddr, &rxsd->rxsd_dmap);
- if (error) {
- device_printf(dev, "can't create RX status DMA stuffs\n");
+static int
+et_dma_alloc(struct et_softc *sc)
+{
+ struct et_txdesc_ring *tx_ring;
+ struct et_rxdesc_ring *rx_ring;
+ struct et_rxstat_ring *rxst_ring;
+ struct et_rxstatus_data *rxsd;
+ struct et_rxbuf_data *rbd;
+ struct et_txbuf_data *tbd;
+ struct et_txstatus_data *txsd;
+ int i, error;
+
+ error = bus_dma_tag_create(bus_get_dma_tag(sc->dev), 1, 0,
+ BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL,
+ BUS_SPACE_MAXSIZE_32BIT, 0, BUS_SPACE_MAXSIZE_32BIT, 0, NULL, NULL,
+ &sc->sc_dtag);
+ if (error != 0) {
+ device_printf(sc->dev, "could not allocate parent dma tag\n");
return (error);
}
- /*
- * Create mbuf DMA stuffs
- */
- error = et_dma_mbuf_create(dev);
+ /* TX ring. */
+ tx_ring = &sc->sc_tx_ring;
+ error = et_dma_ring_alloc(sc, ET_RING_ALIGN, ET_TX_RING_SIZE,
+ &tx_ring->tr_dtag, (uint8_t **)&tx_ring->tr_desc, &tx_ring->tr_dmap,
+ &tx_ring->tr_paddr, "TX ring");
if (error)
return (error);
- return (0);
-}
+ /* TX status block. */
+ txsd = &sc->sc_tx_status;
+ error = et_dma_ring_alloc(sc, ET_STATUS_ALIGN, sizeof(uint32_t),
+ &txsd->txsd_dtag, (uint8_t **)&txsd->txsd_status, &txsd->txsd_dmap,
+ &txsd->txsd_paddr, "TX status block");
+ if (error)
+ return (error);
-static void
-et_dma_free(device_t dev)
-{
- struct et_softc *sc = device_get_softc(dev);
- struct et_txdesc_ring *tx_ring = &sc->sc_tx_ring;
- struct et_txstatus_data *txsd = &sc->sc_tx_status;
- struct et_rxstat_ring *rxst_ring = &sc->sc_rxstat_ring;
- struct et_rxstatus_data *rxsd = &sc->sc_rx_status;
- int i, rx_done[ET_RX_NRING];
+ /* RX ring 0, used as to recive small sized frames. */
+ rx_ring = &sc->sc_rx_ring[0];
+ error = et_dma_ring_alloc(sc, ET_RING_ALIGN, ET_RX_RING_SIZE,
+ &rx_ring->rr_dtag, (uint8_t **)&rx_ring->rr_desc, &rx_ring->rr_dmap,
+ &rx_ring->rr_paddr, "RX ring 0");
+ rx_ring->rr_posreg = ET_RX_RING0_POS;
+ if (error)
+ return (error);
- /*
- * Destroy TX ring DMA stuffs
- */
- et_dma_mem_destroy(tx_ring->tr_dtag, tx_ring->tr_desc,
- tx_ring->tr_dmap);
+ /* RX ring 1, used as to store normal sized frames. */
+ rx_ring = &sc->sc_rx_ring[1];
+ error = et_dma_ring_alloc(sc, ET_RING_ALIGN, ET_RX_RING_SIZE,
+ &rx_ring->rr_dtag, (uint8_t **)&rx_ring->rr_desc, &rx_ring->rr_dmap,
+ &rx_ring->rr_paddr, "RX ring 1");
+ rx_ring->rr_posreg = ET_RX_RING1_POS;
+ if (error)
+ return (error);
- /*
- * Destroy TX status DMA stuffs
- */
- et_dma_mem_destroy(txsd->txsd_dtag, txsd->txsd_status,
- txsd->txsd_dmap);
+ /* RX stat ring. */
+ rxst_ring = &sc->sc_rxstat_ring;
+ error = et_dma_ring_alloc(sc, ET_RING_ALIGN, ET_RXSTAT_RING_SIZE,
+ &rxst_ring->rsr_dtag, (uint8_t **)&rxst_ring->rsr_stat,
+ &rxst_ring->rsr_dmap, &rxst_ring->rsr_paddr, "RX stat ring");
+ if (error)
+ return (error);
- /*
- * Destroy DMA stuffs for RX rings
- */
- for (i = 0; i < ET_RX_NRING; ++i) {
- struct et_rxdesc_ring *rx_ring = &sc->sc_rx_ring[i];
+ /* RX status block. */
+ rxsd = &sc->sc_rx_status;
+ error = et_dma_ring_alloc(sc, ET_STATUS_ALIGN,
+ sizeof(struct et_rxstatus), &rxsd->rxsd_dtag,
+ (uint8_t **)&rxsd->rxsd_status, &rxsd->rxsd_dmap,
+ &rxsd->rxsd_paddr, "RX status block");
+ if (error)
+ return (error);
- et_dma_mem_destroy(rx_ring->rr_dtag, rx_ring->rr_desc,
- rx_ring->rr_dmap);
+ /* Create parent DMA tag for mbufs. */
+ error = bus_dma_tag_create(bus_get_dma_tag(sc->dev), 1, 0,
+ BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL,
+ BUS_SPACE_MAXSIZE_32BIT, 0, BUS_SPACE_MAXSIZE_32BIT, 0, NULL, NULL,
+ &sc->sc_mbuf_dtag);
+ if (error != 0) {
+ device_printf(sc->dev,
+ "could not allocate parent dma tag for mbuf\n");
+ return (error);
}
- /*
- * Destroy RX stat ring DMA stuffs
- */
- et_dma_mem_destroy(rxst_ring->rsr_dtag, rxst_ring->rsr_stat,
- rxst_ring->rsr_dmap);
-
- /*
- * Destroy RX status DMA stuffs
- */
- et_dma_mem_destroy(rxsd->rxsd_dtag, rxsd->rxsd_status,
- rxsd->rxsd_dmap);
-
- /*
- * Destroy mbuf DMA stuffs
- */
- for (i = 0; i < ET_RX_NRING; ++i)
- rx_done[i] = ET_RX_NDESC;
- et_dma_mbuf_destroy(dev, ET_TX_NDESC, rx_done);
-
- /*
- * Destroy top level DMA tag
- */
- if (sc->sc_dtag != NULL)
- bus_dma_tag_destroy(sc->sc_dtag);
-}
+ /* Create DMA tag for mini RX mbufs to use RX ring 0. */
+ error = bus_dma_tag_create(sc->sc_mbuf_dtag, 1, 0,
+ BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, MHLEN, 1,
+ MHLEN, 0, NULL, NULL, &sc->sc_rx_mini_tag);
+ if (error) {
+ device_printf(sc->dev, "could not create mini RX dma tag\n");
+ return (error);
+ }
-static int
-et_dma_mbuf_create(device_t dev)
-{
- struct et_softc *sc = device_get_softc(dev);
- struct et_txbuf_data *tbd = &sc->sc_tx_data;
- int i, error, rx_done[ET_RX_NRING];
+ /* Create DMA tag for standard RX mbufs to use RX ring 1. */
+ error = bus_dma_tag_create(sc->sc_mbuf_dtag, 1, 0,
+ BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES, 1,
+ MCLBYTES, 0, NULL, NULL, &sc->sc_rx_tag);
+ if (error) {
+ device_printf(sc->dev, "could not create RX dma tag\n");
+ return (error);
+ }
- /*
- * Create mbuf DMA tag
- */
- error = bus_dma_tag_create(sc->sc_dtag, 1, 0,
- BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR,
- NULL, NULL,
- ET_JUMBO_FRAMELEN, ET_NSEG_MAX,
- BUS_SPACE_MAXSIZE_32BIT,
- BUS_DMA_ALLOCNOW, NULL, NULL, &sc->sc_mbuf_dtag);
+ /* Create DMA tag for TX mbufs. */
+ error = bus_dma_tag_create(sc->sc_mbuf_dtag, 1, 0,
+ BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL,
+ MCLBYTES * ET_NSEG_MAX, ET_NSEG_MAX, MCLBYTES, 0, NULL, NULL,
+ &sc->sc_tx_tag);
if (error) {
- device_printf(dev, "can't create mbuf DMA tag\n");
+ device_printf(sc->dev, "could not create TX dma tag\n");
return (error);
}
- /*
- * Create spare DMA map for RX mbufs
- */
- error = bus_dmamap_create(sc->sc_mbuf_dtag, 0, &sc->sc_mbuf_tmp_dmap);
+ /* Initialize RX ring 0. */
+ rbd = &sc->sc_rx_data[0];
+ rbd->rbd_bufsize = ET_RXDMA_CTRL_RING0_128;
+ rbd->rbd_newbuf = et_newbuf_hdr;
+ rbd->rbd_discard = et_rxbuf_discard;
+ rbd->rbd_softc = sc;
+ rbd->rbd_ring = &sc->sc_rx_ring[0];
+ /* Create DMA maps for mini RX buffers, ring 0. */
+ for (i = 0; i < ET_RX_NDESC; i++) {
+ error = bus_dmamap_create(sc->sc_rx_mini_tag, 0,
+ &rbd->rbd_buf[i].rb_dmap);
+ if (error) {
+ device_printf(sc->dev,
+ "could not create DMA map for mini RX mbufs\n");
+ return (error);
+ }
+ }
+
+ /* Create a spare DMA map for mini RX buffers, ring 0. */
+ error = bus_dmamap_create(sc->sc_rx_mini_tag, 0,
+ &sc->sc_rx_mini_sparemap);
if (error) {
- device_printf(dev, "can't create spare mbuf DMA map\n");
- bus_dma_tag_destroy(sc->sc_mbuf_dtag);
- sc->sc_mbuf_dtag = NULL;
+ device_printf(sc->dev,
+ "could not create spare DMA map for mini RX mbuf\n");
return (error);
}
- /*
- * Create DMA maps for RX mbufs
- */
- bzero(rx_done, sizeof(rx_done));
- for (i = 0; i < ET_RX_NRING; ++i) {
- struct et_rxbuf_data *rbd = &sc->sc_rx_data[i];
- int j;
-
- for (j = 0; j < ET_RX_NDESC; ++j) {
- error = bus_dmamap_create(sc->sc_mbuf_dtag, 0,
- &rbd->rbd_buf[j].rb_dmap);
- if (error) {
- device_printf(dev, "can't create %d RX mbuf "
- "for %d RX ring\n", j, i);
- rx_done[i] = j;
- et_dma_mbuf_destroy(dev, 0, rx_done);
- return (error);
- }
+ /* Initialize RX ring 1. */
+ rbd = &sc->sc_rx_data[1];
+ rbd->rbd_bufsize = ET_RXDMA_CTRL_RING1_2048;
+ rbd->rbd_newbuf = et_newbuf_cluster;
+ rbd->rbd_discard = et_rxbuf_discard;
+ rbd->rbd_softc = sc;
+ rbd->rbd_ring = &sc->sc_rx_ring[1];
+ /* Create DMA maps for standard RX buffers, ring 1. */
+ for (i = 0; i < ET_RX_NDESC; i++) {
+ error = bus_dmamap_create(sc->sc_rx_tag, 0,
+ &rbd->rbd_buf[i].rb_dmap);
+ if (error) {
+ device_printf(sc->dev,
+ "could not create DMA map for mini RX mbufs\n");
+ return (error);
}
- rx_done[i] = ET_RX_NDESC;
+ }
- rbd->rbd_softc = sc;
- rbd->rbd_ring = &sc->sc_rx_ring[i];
+ /* Create a spare DMA map for standard RX buffers, ring 1. */
+ error = bus_dmamap_create(sc->sc_rx_tag, 0, &sc->sc_rx_sparemap);
+ if (error) {
+ device_printf(sc->dev,
+ "could not create spare DMA map for RX mbuf\n");
+ return (error);
}
- /*
- * Create DMA maps for TX mbufs
- */
- for (i = 0; i < ET_TX_NDESC; ++i) {
- error = bus_dmamap_create(sc->sc_mbuf_dtag, 0,
- &tbd->tbd_buf[i].tb_dmap);
+ /* Create DMA maps for TX buffers. */
+ tbd = &sc->sc_tx_data;
+ for (i = 0; i < ET_TX_NDESC; i++) {
+ error = bus_dmamap_create(sc->sc_tx_tag, 0,
+ &tbd->tbd_buf[i].tb_dmap);
if (error) {
- device_printf(dev, "can't create %d TX mbuf "
- "DMA map\n", i);
- et_dma_mbuf_destroy(dev, i, rx_done);
+ device_printf(sc->dev,
+ "could not create DMA map for TX mbufs\n");
return (error);
}
}
@@ -936,106 +1027,97 @@ et_dma_mbuf_create(device_t dev)
}
static void
-et_dma_mbuf_destroy(device_t dev, int tx_done, const int rx_done[])
+et_dma_free(struct et_softc *sc)
{
- struct et_softc *sc = device_get_softc(dev);
- struct et_txbuf_data *tbd = &sc->sc_tx_data;
+ struct et_txdesc_ring *tx_ring;
+ struct et_rxdesc_ring *rx_ring;
+ struct et_txstatus_data *txsd;
+ struct et_rxstat_ring *rxst_ring;
+ struct et_rxstatus_data *rxsd;
+ struct et_rxbuf_data *rbd;
+ struct et_txbuf_data *tbd;
int i;
- if (sc->sc_mbuf_dtag == NULL)
- return;
-
- /*
- * Destroy DMA maps for RX mbufs
- */
- for (i = 0; i < ET_RX_NRING; ++i) {
- struct et_rxbuf_data *rbd = &sc->sc_rx_data[i];
- int j;
-
- for (j = 0; j < rx_done[i]; ++j) {
- struct et_rxbuf *rb = &rbd->rbd_buf[j];
-
- KASSERT(rb->rb_mbuf == NULL,
- ("RX mbuf in %d RX ring is not freed yet\n", i));
- bus_dmamap_destroy(sc->sc_mbuf_dtag, rb->rb_dmap);
+ /* Destroy DMA maps for mini RX buffers, ring 0. */
+ rbd = &sc->sc_rx_data[0];
+ for (i = 0; i < ET_RX_NDESC; i++) {
+ if (rbd->rbd_buf[i].rb_dmap) {
+ bus_dmamap_destroy(sc->sc_rx_mini_tag,
+ rbd->rbd_buf[i].rb_dmap);
+ rbd->rbd_buf[i].rb_dmap = NULL;
}
}
-
- /*
- * Destroy DMA maps for TX mbufs
- */
- for (i = 0; i < tx_done; ++i) {
- struct et_txbuf *tb = &tbd->tbd_buf[i];
-
- KASSERT(tb->tb_mbuf == NULL, ("TX mbuf is not freed yet\n"));
- bus_dmamap_destroy(sc->sc_mbuf_dtag, tb->tb_dmap);
+ if (sc->sc_rx_mini_sparemap) {
+ bus_dmamap_destroy(sc->sc_rx_mini_tag, sc->sc_rx_mini_sparemap);
+ sc->sc_rx_mini_sparemap = NULL;
}
-
- /*
- * Destroy spare mbuf DMA map
- */
- bus_dmamap_destroy(sc->sc_mbuf_dtag, sc->sc_mbuf_tmp_dmap);
-
- /*
- * Destroy mbuf DMA tag
- */
- bus_dma_tag_destroy(sc->sc_mbuf_dtag);
- sc->sc_mbuf_dtag = NULL;
-}
-
-static int
-et_dma_mem_create(device_t dev, bus_size_t size, bus_dma_tag_t *dtag,
- void **addr, bus_addr_t *paddr, bus_dmamap_t *dmap)
-{
- struct et_softc *sc = device_get_softc(dev);
- int error;
-
- error = bus_dma_tag_create(sc->sc_dtag, ET_ALIGN, 0,
- BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR,
- NULL, NULL,
- size, 1, BUS_SPACE_MAXSIZE_32BIT,
- 0, NULL, NULL, dtag);
- if (error) {
- device_printf(dev, "can't create DMA tag\n");
- return (error);
+ if (sc->sc_rx_mini_tag) {
+ bus_dma_tag_destroy(sc->sc_rx_mini_tag);
+ sc->sc_rx_mini_tag = NULL;
}
- error = bus_dmamem_alloc(*dtag, addr, BUS_DMA_WAITOK | BUS_DMA_ZERO,
- dmap);
- if (error) {
- device_printf(dev, "can't allocate DMA mem\n");
- bus_dma_tag_destroy(*dtag);
- *dtag = NULL;
- return (error);
+ /* Destroy DMA maps for standard RX buffers, ring 1. */
+ rbd = &sc->sc_rx_data[1];
+ for (i = 0; i < ET_RX_NDESC; i++) {
+ if (rbd->rbd_buf[i].rb_dmap) {
+ bus_dmamap_destroy(sc->sc_rx_tag,
+ rbd->rbd_buf[i].rb_dmap);
+ rbd->rbd_buf[i].rb_dmap = NULL;
+ }
}
-
- error = bus_dmamap_load(*dtag, *dmap, *addr, size,
- et_dma_ring_addr, paddr, BUS_DMA_WAITOK);
- if (error) {
- device_printf(dev, "can't load DMA mem\n");
- bus_dmamem_free(*dtag, *addr, *dmap);
- bus_dma_tag_destroy(*dtag);
- *dtag = NULL;
- return (error);
+ if (sc->sc_rx_sparemap) {
+ bus_dmamap_destroy(sc->sc_rx_tag, sc->sc_rx_sparemap);
+ sc->sc_rx_sparemap = NULL;
+ }
+ if (sc->sc_rx_tag) {
+ bus_dma_tag_destroy(sc->sc_rx_tag);
+ sc->sc_rx_tag = NULL;
}
- return (0);
-}
-static void
-et_dma_mem_destroy(bus_dma_tag_t dtag, void *addr, bus_dmamap_t dmap)
-{
- if (dtag != NULL) {
- bus_dmamap_unload(dtag, dmap);
- bus_dmamem_free(dtag, addr, dmap);
- bus_dma_tag_destroy(dtag);
+ /* Destroy DMA maps for TX buffers. */
+ tbd = &sc->sc_tx_data;
+ for (i = 0; i < ET_TX_NDESC; i++) {
+ if (tbd->tbd_buf[i].tb_dmap) {
+ bus_dmamap_destroy(sc->sc_tx_tag,
+ tbd->tbd_buf[i].tb_dmap);
+ tbd->tbd_buf[i].tb_dmap = NULL;
+ }
+ }
+ if (sc->sc_tx_tag) {
+ bus_dma_tag_destroy(sc->sc_tx_tag);
+ sc->sc_tx_tag = NULL;
}
-}
-static void
-et_dma_ring_addr(void *arg, bus_dma_segment_t *seg, int nseg, int error)
-{
- KASSERT(nseg == 1, ("too many segments\n"));
- *((bus_addr_t *)arg) = seg->ds_addr;
+ /* Destroy mini RX ring, ring 0. */
+ rx_ring = &sc->sc_rx_ring[0];
+ et_dma_ring_free(sc, &rx_ring->rr_dtag, (void *)&rx_ring->rr_desc,
+ &rx_ring->rr_dmap);
+ /* Destroy standard RX ring, ring 1. */
+ rx_ring = &sc->sc_rx_ring[1];
+ et_dma_ring_free(sc, &rx_ring->rr_dtag, (void *)&rx_ring->rr_desc,
+ &rx_ring->rr_dmap);
+ /* Destroy RX stat ring. */
+ rxst_ring = &sc->sc_rxstat_ring;
+ et_dma_ring_free(sc, &rxst_ring->rsr_dtag, (void *)&rxst_ring->rsr_stat,
+ &rxst_ring->rsr_dmap);
+ /* Destroy RX status block. */
+ rxsd = &sc->sc_rx_status;
+ et_dma_ring_free(sc, &rxst_ring->rsr_dtag, (void *)&rxst_ring->rsr_stat,
+ &rxst_ring->rsr_dmap);
+ /* Destroy TX ring. */
+ tx_ring = &sc->sc_tx_ring;
+ et_dma_ring_free(sc, &tx_ring->tr_dtag, (void *)&tx_ring->tr_desc,
+ &tx_ring->tr_dmap);
+ /* Destroy TX status block. */
+ txsd = &sc->sc_tx_status;
+ et_dma_ring_free(sc, &txsd->txsd_dtag, (void *)&txsd->txsd_status,
+ &txsd->txsd_dmap);
+
+ /* Destroy the parent tag. */
+ if (sc->sc_dtag) {
+ bus_dma_tag_destroy(sc->sc_dtag);
+ sc->sc_dtag = NULL;
+ }
}
static void
@@ -1083,78 +1165,92 @@ et_intr(void *xsc)
{
struct et_softc *sc = xsc;
struct ifnet *ifp;
- uint32_t intrs;
+ uint32_t status;
ET_LOCK(sc);
ifp = sc->ifp;
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
- ET_UNLOCK(sc);
- return;
- }
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ goto done;
- et_disable_intrs(sc);
+ status = CSR_READ_4(sc, ET_INTR_STATUS);
+ if ((status & ET_INTRS) == 0)
+ goto done;
- intrs = CSR_READ_4(sc, ET_INTR_STATUS);
- intrs &= ET_INTRS;
- if (intrs == 0) /* Not interested */
- goto back;
+ /* Disable further interrupts. */
+ CSR_WRITE_4(sc, ET_INTR_MASK, 0xffffffff);
- if (intrs & ET_INTR_RXEOF)
+ if (status & (ET_INTR_RXDMA_ERROR | ET_INTR_TXDMA_ERROR)) {
+ device_printf(sc->dev, "DMA error(0x%08x) -- resetting\n",
+ status);
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ et_init_locked(sc);
+ ET_UNLOCK(sc);
+ return;
+ }
+ if (status & ET_INTR_RXDMA)
et_rxeof(sc);
- if (intrs & (ET_INTR_TXEOF | ET_INTR_TIMER))
+ if (status & (ET_INTR_TXDMA | ET_INTR_TIMER))
et_txeof(sc);
- if (intrs & ET_INTR_TIMER)
+ if (status & ET_INTR_TIMER)
CSR_WRITE_4(sc, ET_TIMER, sc->sc_timer);
-back:
- et_enable_intrs(sc, ET_INTRS);
+ if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ CSR_WRITE_4(sc, ET_INTR_MASK, ~ET_INTRS);
+ if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ et_start_locked(ifp);
+ }
+done:
ET_UNLOCK(sc);
}
static void
et_init_locked(struct et_softc *sc)
{
- struct ifnet *ifp = sc->ifp;
- const struct et_bsize *arr;
- int error, i;
+ struct ifnet *ifp;
+ int error;
ET_LOCK_ASSERT(sc);
+ ifp = sc->ifp;
if (ifp->if_drv_flags & IFF_DRV_RUNNING)
return;
et_stop(sc);
+ et_reset(sc);
- arr = et_bufsize_std;
- for (i = 0; i < ET_RX_NRING; ++i) {
- sc->sc_rx_data[i].rbd_bufsize = arr[i].bufsize;
- sc->sc_rx_data[i].rbd_newbuf = arr[i].newbuf;
- }
-
- error = et_init_tx_ring(sc);
- if (error)
- goto back;
-
+ et_init_tx_ring(sc);
error = et_init_rx_ring(sc);
if (error)
- goto back;
+ return;
error = et_chip_init(sc);
if (error)
- goto back;
+ goto fail;
- error = et_enable_txrx(sc, 1);
+ /*
+ * Start TX/RX DMA engine
+ */
+ error = et_start_rxdma(sc);
if (error)
- goto back;
+ return;
- et_enable_intrs(sc, ET_INTRS);
+ error = et_start_txdma(sc);
+ if (error)
+ return;
- callout_reset(&sc->sc_tick, hz, et_tick, sc);
+ /* Enable interrupts. */
+ CSR_WRITE_4(sc, ET_INTR_MASK, ~ET_INTRS);
CSR_WRITE_4(sc, ET_TIMER, sc->sc_timer);
ifp->if_drv_flags |= IFF_DRV_RUNNING;
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
-back:
+
+ sc->sc_flags &= ~ET_FLAG_LINK;
+ et_ifmedia_upd_locked(ifp);
+
+ callout_reset(&sc->sc_tick, hz, et_tick, sc);
+
+fail:
if (error)
et_stop(sc);
}
@@ -1208,11 +1304,11 @@ et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
ET_LOCK(sc);
et_setmulti(sc);
ET_UNLOCK(sc);
- error = 0;
}
break;
case SIOCSIFMTU:
+ ET_LOCK(sc);
#if 0
if (sc->sc_flags & ET_FLAG_JUMBO)
max_framelen = ET_JUMBO_FRAMELEN;
@@ -1222,14 +1318,18 @@ et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
if (ET_FRAMELEN(ifr->ifr_mtu) > max_framelen) {
error = EOPNOTSUPP;
+ ET_UNLOCK(sc);
break;
}
if (ifp->if_mtu != ifr->ifr_mtu) {
ifp->if_mtu = ifr->ifr_mtu;
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
- et_init(sc);
+ if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ et_init_locked(sc);
+ }
}
+ ET_UNLOCK(sc);
break;
case SIOCSIFCAP:
@@ -1256,44 +1356,69 @@ et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
static void
et_start_locked(struct ifnet *ifp)
{
- struct et_softc *sc = ifp->if_softc;
+ struct et_softc *sc;
+ struct mbuf *m_head = NULL;
+ struct et_txdesc_ring *tx_ring;
struct et_txbuf_data *tbd;
- int trans;
+ uint32_t tx_ready_pos;
+ int enq;
+ sc = ifp->if_softc;
ET_LOCK_ASSERT(sc);
- tbd = &sc->sc_tx_data;
- if ((sc->sc_flags & ET_FLAG_TXRX_ENABLED) == 0)
+ if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
+ IFF_DRV_RUNNING ||
+ (sc->sc_flags & (ET_FLAG_LINK | ET_FLAG_TXRX_ENABLED)) !=
+ (ET_FLAG_LINK | ET_FLAG_TXRX_ENABLED))
return;
- if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING)
- return;
-
- trans = 0;
- for (;;) {
- struct mbuf *m;
+ /*
+ * Driver does not request TX completion interrupt for every
+ * queued frames to prevent generating excessive interrupts.
+ * This means driver may wait for TX completion interrupt even
+ * though some frames were sucessfully transmitted. Reclaiming
+ * transmitted frames will ensure driver see all available
+ * descriptors.
+ */
+ tbd = &sc->sc_tx_data;
+ if (tbd->tbd_used > (ET_TX_NDESC * 2) / 3)
+ et_txeof(sc);
- if ((tbd->tbd_used + ET_NSEG_SPARE) > ET_TX_NDESC) {
+ for (enq = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd); ) {
+ if (tbd->tbd_used + ET_NSEG_SPARE >= ET_TX_NDESC) {
ifp->if_drv_flags |= IFF_DRV_OACTIVE;
break;
}
- IFQ_DEQUEUE(&ifp->if_snd, m);
- if (m == NULL)
+ IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
+ if (m_head == NULL)
break;
- if (et_encap(sc, &m)) {
- ifp->if_oerrors++;
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ if (et_encap(sc, &m_head)) {
+ if (m_head == NULL) {
+ ifp->if_oerrors++;
+ break;
+ }
+ IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
+ if (tbd->tbd_used > 0)
+ ifp->if_drv_flags |= IFF_DRV_OACTIVE;
break;
}
- trans = 1;
-
- BPF_MTAP(ifp, m);
+ enq++;
+ ETHER_BPF_MTAP(ifp, m_head);
}
- if (trans)
+ if (enq > 0) {
+ tx_ring = &sc->sc_tx_ring;
+ bus_dmamap_sync(tx_ring->tr_dtag, tx_ring->tr_dmap,
+ BUS_DMASYNC_PREWRITE);
+ tx_ready_pos = tx_ring->tr_ready_index &
+ ET_TX_READY_POS_INDEX_MASK;
+ if (tx_ring->tr_ready_wrap)
+ tx_ready_pos |= ET_TX_READY_POS_WRAP;
+ CSR_WRITE_4(sc, ET_TX_READY_POS, tx_ready_pos);
sc->watchdog_timer = 5;
+ }
}
static void
@@ -1306,20 +1431,26 @@ et_start(struct ifnet *ifp)
ET_UNLOCK(sc);
}
-static void
+static int
et_watchdog(struct et_softc *sc)
{
+ uint32_t status;
+
ET_LOCK_ASSERT(sc);
if (sc->watchdog_timer == 0 || --sc->watchdog_timer)
- return;
+ return (0);
- if_printf(sc->ifp, "watchdog timed out\n");
+ bus_dmamap_sync(sc->sc_tx_status.txsd_dtag, sc->sc_tx_status.txsd_dmap,
+ BUS_DMASYNC_POSTREAD);
+ status = le32toh(*(sc->sc_tx_status.txsd_status));
+ if_printf(sc->ifp, "watchdog timed out (0x%08x) -- resetting\n",
+ status);
sc->ifp->if_oerrors++;
sc->ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
et_init_locked(sc);
- et_start_locked(sc->ifp);
+ return (EJUSTRETURN);
}
static int
@@ -1347,49 +1478,59 @@ et_stop_txdma(struct et_softc *sc)
static void
et_free_tx_ring(struct et_softc *sc)
{
- struct et_txbuf_data *tbd = &sc->sc_tx_data;
- struct et_txdesc_ring *tx_ring = &sc->sc_tx_ring;
+ struct et_txdesc_ring *tx_ring;
+ struct et_txbuf_data *tbd;
+ struct et_txbuf *tb;
int i;
+ tbd = &sc->sc_tx_data;
+ tx_ring = &sc->sc_tx_ring;
for (i = 0; i < ET_TX_NDESC; ++i) {
- struct et_txbuf *tb = &tbd->tbd_buf[i];
-
+ tb = &tbd->tbd_buf[i];
if (tb->tb_mbuf != NULL) {
+ bus_dmamap_sync(sc->sc_tx_tag, tb->tb_dmap,
+ BUS_DMASYNC_POSTWRITE);
bus_dmamap_unload(sc->sc_mbuf_dtag, tb->tb_dmap);
m_freem(tb->tb_mbuf);
tb->tb_mbuf = NULL;
}
}
-
- bzero(tx_ring->tr_desc, ET_TX_RING_SIZE);
- bus_dmamap_sync(tx_ring->tr_dtag, tx_ring->tr_dmap,
- BUS_DMASYNC_PREWRITE);
}
static void
et_free_rx_ring(struct et_softc *sc)
{
- int n;
-
- for (n = 0; n < ET_RX_NRING; ++n) {
- struct et_rxbuf_data *rbd = &sc->sc_rx_data[n];
- struct et_rxdesc_ring *rx_ring = &sc->sc_rx_ring[n];
- int i;
-
- for (i = 0; i < ET_RX_NDESC; ++i) {
- struct et_rxbuf *rb = &rbd->rbd_buf[i];
+ struct et_rxbuf_data *rbd;
+ struct et_rxdesc_ring *rx_ring;
+ struct et_rxbuf *rb;
+ int i;
- if (rb->rb_mbuf != NULL) {
- bus_dmamap_unload(sc->sc_mbuf_dtag,
- rb->rb_dmap);
- m_freem(rb->rb_mbuf);
- rb->rb_mbuf = NULL;
- }
+ /* Ring 0 */
+ rx_ring = &sc->sc_rx_ring[0];
+ rbd = &sc->sc_rx_data[0];
+ for (i = 0; i < ET_RX_NDESC; ++i) {
+ rb = &rbd->rbd_buf[i];
+ if (rb->rb_mbuf != NULL) {
+ bus_dmamap_sync(sc->sc_rx_mini_tag, rx_ring->rr_dmap,
+ BUS_DMASYNC_POSTREAD);
+ bus_dmamap_unload(sc->sc_rx_mini_tag, rb->rb_dmap);
+ m_freem(rb->rb_mbuf);
+ rb->rb_mbuf = NULL;
}
+ }
- bzero(rx_ring->rr_desc, ET_RX_RING_SIZE);
- bus_dmamap_sync(rx_ring->rr_dtag, rx_ring->rr_dmap,
- BUS_DMASYNC_PREWRITE);
+ /* Ring 1 */
+ rx_ring = &sc->sc_rx_ring[1];
+ rbd = &sc->sc_rx_data[1];
+ for (i = 0; i < ET_RX_NDESC; ++i) {
+ rb = &rbd->rbd_buf[i];
+ if (rb->rb_mbuf != NULL) {
+ bus_dmamap_sync(sc->sc_rx_tag, rx_ring->rr_dmap,
+ BUS_DMASYNC_POSTREAD);
+ bus_dmamap_unload(sc->sc_rx_tag, rb->rb_dmap);
+ m_freem(rb->rb_mbuf);
+ rb->rb_mbuf = NULL;
+ }
}
}
@@ -1516,40 +1657,41 @@ et_chip_init(struct et_softc *sc)
return (0);
}
-static int
+static void
et_init_tx_ring(struct et_softc *sc)
{
- struct et_txdesc_ring *tx_ring = &sc->sc_tx_ring;
- struct et_txstatus_data *txsd = &sc->sc_tx_status;
- struct et_txbuf_data *tbd = &sc->sc_tx_data;
+ struct et_txdesc_ring *tx_ring;
+ struct et_txbuf_data *tbd;
+ struct et_txstatus_data *txsd;
+ tx_ring = &sc->sc_tx_ring;
bzero(tx_ring->tr_desc, ET_TX_RING_SIZE);
bus_dmamap_sync(tx_ring->tr_dtag, tx_ring->tr_dmap,
- BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREWRITE);
+ tbd = &sc->sc_tx_data;
tbd->tbd_start_index = 0;
tbd->tbd_start_wrap = 0;
tbd->tbd_used = 0;
+ txsd = &sc->sc_tx_status;
bzero(txsd->txsd_status, sizeof(uint32_t));
bus_dmamap_sync(txsd->txsd_dtag, txsd->txsd_dmap,
- BUS_DMASYNC_PREWRITE);
- return (0);
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
}
static int
et_init_rx_ring(struct et_softc *sc)
{
- struct et_rxstatus_data *rxsd = &sc->sc_rx_status;
- struct et_rxstat_ring *rxst_ring = &sc->sc_rxstat_ring;
- int n;
+ struct et_rxstatus_data *rxsd;
+ struct et_rxstat_ring *rxst_ring;
+ struct et_rxbuf_data *rbd;
+ int i, error, n;
for (n = 0; n < ET_RX_NRING; ++n) {
- struct et_rxbuf_data *rbd = &sc->sc_rx_data[n];
- int i, error;
-
+ rbd = &sc->sc_rx_data[n];
for (i = 0; i < ET_RX_NDESC; ++i) {
- error = rbd->rbd_newbuf(rbd, i, 1);
+ error = rbd->rbd_newbuf(rbd, i);
if (error) {
if_printf(sc->ifp, "%d ring %d buf, "
"newbuf failed: %d\n", n, i, error);
@@ -1558,37 +1700,19 @@ et_init_rx_ring(struct et_softc *sc)
}
}
+ rxsd = &sc->sc_rx_status;
bzero(rxsd->rxsd_status, sizeof(struct et_rxstatus));
bus_dmamap_sync(rxsd->rxsd_dtag, rxsd->rxsd_dmap,
- BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+ rxst_ring = &sc->sc_rxstat_ring;
bzero(rxst_ring->rsr_stat, ET_RXSTAT_RING_SIZE);
bus_dmamap_sync(rxst_ring->rsr_dtag, rxst_ring->rsr_dmap,
- BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
return (0);
}
-static void
-et_dma_buf_addr(void *xctx, bus_dma_segment_t *segs, int nsegs,
- bus_size_t mapsz __unused, int error)
-{
- struct et_dmamap_ctx *ctx = xctx;
- int i;
-
- if (error)
- return;
-
- if (nsegs > ctx->nsegs) {
- ctx->nsegs = 0;
- return;
- }
-
- ctx->nsegs = nsegs;
- for (i = 0; i < nsegs; ++i)
- ctx->segs[i] = segs[i];
-}
-
static int
et_init_rxdma(struct et_softc *sc)
{
@@ -1837,8 +1961,12 @@ et_init_txmac(struct et_softc *sc)
/* Disable TX MAC and FC(?) */
CSR_WRITE_4(sc, ET_TXMAC_CTRL, ET_TXMAC_CTRL_FC_DISABLE);
- /* No flow control yet */
- CSR_WRITE_4(sc, ET_TXMAC_FLOWCTRL, 0);
+ /*
+ * Initialize pause time.
+ * This register should be set before XON/XOFF frame is
+ * sent by driver.
+ */
+ CSR_WRITE_4(sc, ET_TXMAC_FLOWCTRL, 0 << ET_TXMAC_FLOWCTRL_CFPT_SHIFT);
/* Enable TX MAC but leave FC(?) diabled */
CSR_WRITE_4(sc, ET_TXMAC_CTRL,
@@ -1873,66 +2001,23 @@ et_start_txdma(struct et_softc *sc)
return (0);
}
-static int
-et_enable_txrx(struct et_softc *sc, int media_upd)
-{
- struct ifnet *ifp = sc->ifp;
- uint32_t val;
- int i, error;
-
- val = CSR_READ_4(sc, ET_MAC_CFG1);
- val |= ET_MAC_CFG1_TXEN | ET_MAC_CFG1_RXEN;
- val &= ~(ET_MAC_CFG1_TXFLOW | ET_MAC_CFG1_RXFLOW |
- ET_MAC_CFG1_LOOPBACK);
- CSR_WRITE_4(sc, ET_MAC_CFG1, val);
-
- if (media_upd)
- et_ifmedia_upd_locked(ifp);
- else
- et_setmedia(sc);
-
-#define NRETRY 50
-
- for (i = 0; i < NRETRY; ++i) {
- val = CSR_READ_4(sc, ET_MAC_CFG1);
- if ((val & (ET_MAC_CFG1_SYNC_TXEN | ET_MAC_CFG1_SYNC_RXEN)) ==
- (ET_MAC_CFG1_SYNC_TXEN | ET_MAC_CFG1_SYNC_RXEN))
- break;
-
- DELAY(100);
- }
- if (i == NRETRY) {
- if_printf(ifp, "can't enable RX/TX\n");
- return (0);
- }
- sc->sc_flags |= ET_FLAG_TXRX_ENABLED;
-
-#undef NRETRY
-
- /*
- * Start TX/RX DMA engine
- */
- error = et_start_rxdma(sc);
- if (error)
- return (error);
-
- error = et_start_txdma(sc);
- if (error)
- return (error);
-
- return (0);
-}
-
static void
et_rxeof(struct et_softc *sc)
{
- struct ifnet *ifp;
struct et_rxstatus_data *rxsd;
struct et_rxstat_ring *rxst_ring;
- uint32_t rxs_stat_ring, rxst_info2;
- int rxst_wrap, rxst_index;
+ struct et_rxbuf_data *rbd;
+ struct et_rxdesc_ring *rx_ring;
+ struct et_rxstat *st;
+ struct ifnet *ifp;
+ struct mbuf *m;
+ uint32_t rxstat_pos, rxring_pos;
+ uint32_t rxst_info1, rxst_info2, rxs_stat_ring;
+ int buflen, buf_idx, npost[2], ring_idx;
+ int rxst_index, rxst_wrap;
ET_LOCK_ASSERT(sc);
+
ifp = sc->ifp;
rxsd = &sc->sc_rx_status;
rxst_ring = &sc->sc_rxstat_ring;
@@ -1941,26 +2026,24 @@ et_rxeof(struct et_softc *sc)
return;
bus_dmamap_sync(rxsd->rxsd_dtag, rxsd->rxsd_dmap,
- BUS_DMASYNC_POSTREAD);
+ BUS_DMASYNC_POSTREAD);
bus_dmamap_sync(rxst_ring->rsr_dtag, rxst_ring->rsr_dmap,
- BUS_DMASYNC_POSTREAD);
+ BUS_DMASYNC_POSTREAD);
+ npost[0] = npost[1] = 0;
rxs_stat_ring = le32toh(rxsd->rxsd_status->rxs_stat_ring);
rxst_wrap = (rxs_stat_ring & ET_RXS_STATRING_WRAP) ? 1 : 0;
rxst_index = (rxs_stat_ring & ET_RXS_STATRING_INDEX_MASK) >>
ET_RXS_STATRING_INDEX_SHIFT;
while (rxst_index != rxst_ring->rsr_index ||
- rxst_wrap != rxst_ring->rsr_wrap) {
- struct et_rxbuf_data *rbd;
- struct et_rxdesc_ring *rx_ring;
- struct et_rxstat *st;
- struct mbuf *m;
- int buflen, buf_idx, ring_idx;
- uint32_t rxstat_pos, rxring_pos;
+ rxst_wrap != rxst_ring->rsr_wrap) {
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ break;
MPASS(rxst_ring->rsr_index < ET_RX_NSTAT);
st = &rxst_ring->rsr_stat[rxst_ring->rsr_index];
+ rxst_info1 = le32toh(st->rxst_info1);
rxst_info2 = le32toh(st->rxst_info2);
buflen = (rxst_info2 & ET_RXST_INFO2_LEN_MASK) >>
ET_RXST_INFO2_LEN_SHIFT;
@@ -1991,32 +2074,32 @@ et_rxeof(struct et_softc *sc)
rbd = &sc->sc_rx_data[ring_idx];
m = rbd->rbd_buf[buf_idx].rb_mbuf;
-
- if (rbd->rbd_newbuf(rbd, buf_idx, 0) == 0) {
- if (buflen < ETHER_CRC_LEN) {
+ if ((rxst_info1 & ET_RXST_INFO1_OK) == 0){
+ /* Discard errored frame. */
+ rbd->rbd_discard(rbd, buf_idx);
+ } else if (rbd->rbd_newbuf(rbd, buf_idx) != 0) {
+ /* No available mbufs, discard it. */
+ ifp->if_iqdrops++;
+ rbd->rbd_discard(rbd, buf_idx);
+ } else {
+ buflen -= ETHER_CRC_LEN;
+ if (buflen < ETHER_HDR_LEN) {
m_freem(m);
- m = NULL;
ifp->if_ierrors++;
} else {
- m->m_pkthdr.len = m->m_len =
- buflen - ETHER_CRC_LEN;
+ m->m_pkthdr.len = m->m_len = buflen;
m->m_pkthdr.rcvif = ifp;
- ifp->if_ipackets++;
ET_UNLOCK(sc);
ifp->if_input(ifp, m);
ET_LOCK(sc);
}
- } else {
- ifp->if_ierrors++;
}
- m = NULL; /* Catch invalid reference */
rx_ring = &sc->sc_rx_ring[ring_idx];
-
if (buf_idx != rx_ring->rr_index) {
- if_printf(ifp, "WARNING!! ring %d, "
- "buf_idx %d, rr_idx %d\n",
- ring_idx, buf_idx, rx_ring->rr_index);
+ if_printf(ifp,
+ "WARNING!! ring %d, buf_idx %d, rr_idx %d\n",
+ ring_idx, buf_idx, rx_ring->rr_index);
}
MPASS(rx_ring->rr_index < ET_RX_NDESC);
@@ -2029,81 +2112,66 @@ et_rxeof(struct et_softc *sc)
rxring_pos |= ET_RX_RING_POS_WRAP;
CSR_WRITE_4(sc, rx_ring->rr_posreg, rxring_pos);
}
+
+ bus_dmamap_sync(rxsd->rxsd_dtag, rxsd->rxsd_dmap,
+ BUS_DMASYNC_PREREAD);
+ bus_dmamap_sync(rxst_ring->rsr_dtag, rxst_ring->rsr_dmap,
+ BUS_DMASYNC_PREREAD);
}
static int
et_encap(struct et_softc *sc, struct mbuf **m0)
{
- struct mbuf *m = *m0;
- bus_dma_segment_t segs[ET_NSEG_MAX];
- struct et_dmamap_ctx ctx;
- struct et_txdesc_ring *tx_ring = &sc->sc_tx_ring;
- struct et_txbuf_data *tbd = &sc->sc_tx_data;
+ struct et_txdesc_ring *tx_ring;
+ struct et_txbuf_data *tbd;
struct et_txdesc *td;
+ struct mbuf *m;
+ bus_dma_segment_t segs[ET_NSEG_MAX];
bus_dmamap_t map;
- int error, maxsegs, first_idx, last_idx, i;
- uint32_t csum_flags, tx_ready_pos, last_td_ctrl2;
-
- maxsegs = ET_TX_NDESC - tbd->tbd_used;
- if (maxsegs > ET_NSEG_MAX)
- maxsegs = ET_NSEG_MAX;
- KASSERT(maxsegs >= ET_NSEG_SPARE,
- ("not enough spare TX desc (%d)\n", maxsegs));
+ uint32_t csum_flags, last_td_ctrl2;
+ int error, i, idx, first_idx, last_idx, nsegs;
+ tx_ring = &sc->sc_tx_ring;
MPASS(tx_ring->tr_ready_index < ET_TX_NDESC);
+ tbd = &sc->sc_tx_data;
first_idx = tx_ring->tr_ready_index;
map = tbd->tbd_buf[first_idx].tb_dmap;
- ctx.nsegs = maxsegs;
- ctx.segs = segs;
- error = bus_dmamap_load_mbuf(sc->sc_mbuf_dtag, map, m,
- et_dma_buf_addr, &ctx, BUS_DMA_NOWAIT);
- if (!error && ctx.nsegs == 0) {
- bus_dmamap_unload(sc->sc_mbuf_dtag, map);
- error = EFBIG;
- }
- if (error && error != EFBIG) {
- if_printf(sc->ifp, "can't load TX mbuf, error %d\n",
- error);
- goto back;
- }
- if (error) { /* error == EFBIG */
- struct mbuf *m_new;
-
- m_new = m_defrag(m, M_DONTWAIT);
- if (m_new == NULL) {
- if_printf(sc->ifp, "can't defrag TX mbuf\n");
- error = ENOBUFS;
- goto back;
- } else {
- *m0 = m = m_new;
+ error = bus_dmamap_load_mbuf_sg(sc->sc_tx_tag, map, *m0, segs, &nsegs,
+ 0);
+ if (error == EFBIG) {
+ m = m_collapse(*m0, M_DONTWAIT, ET_NSEG_MAX);
+ if (m == NULL) {
+ m_freem(*m0);
+ *m0 = NULL;
+ return (ENOMEM);
}
-
- ctx.nsegs = maxsegs;
- ctx.segs = segs;
- error = bus_dmamap_load_mbuf(sc->sc_mbuf_dtag, map, m,
- et_dma_buf_addr, &ctx,
- BUS_DMA_NOWAIT);
- if (error || ctx.nsegs == 0) {
- if (ctx.nsegs == 0) {
- bus_dmamap_unload(sc->sc_mbuf_dtag, map);
- error = EFBIG;
- }
- if_printf(sc->ifp,
- "can't load defraged TX mbuf\n");
- goto back;
+ *m0 = m;
+ error = bus_dmamap_load_mbuf_sg(sc->sc_tx_tag, map, *m0, segs,
+ &nsegs, 0);
+ if (error != 0) {
+ m_freem(*m0);
+ *m0 = NULL;
+ return (error);
}
- }
+ } else if (error != 0)
+ return (error);
- bus_dmamap_sync(sc->sc_mbuf_dtag, map, BUS_DMASYNC_PREWRITE);
+ /* Check for descriptor overruns. */
+ if (tbd->tbd_used + nsegs > ET_TX_NDESC - 1) {
+ bus_dmamap_unload(sc->sc_tx_tag, map);
+ return (ENOBUFS);
+ }
+ bus_dmamap_sync(sc->sc_tx_tag, map, BUS_DMASYNC_PREWRITE);
last_td_ctrl2 = ET_TDCTRL2_LAST_FRAG;
- sc->sc_tx += ctx.nsegs;
+ sc->sc_tx += nsegs;
if (sc->sc_tx / sc->sc_tx_intr_nsegs != sc->sc_tx_intr) {
sc->sc_tx_intr = sc->sc_tx / sc->sc_tx_intr_nsegs;
last_td_ctrl2 |= ET_TDCTRL2_INTR;
}
+ m = *m0;
csum_flags = 0;
if ((m->m_pkthdr.csum_flags & ET_CSUM_FEATURES) != 0) {
if ((m->m_pkthdr.csum_flags & CSUM_IP) != 0)
@@ -2114,15 +2182,14 @@ et_encap(struct et_softc *sc, struct mbuf **m0)
csum_flags |= ET_TDCTRL2_CSUM_TCP;
}
last_idx = -1;
- for (i = 0; i < ctx.nsegs; ++i) {
- int idx;
-
+ for (i = 0; i < nsegs; ++i) {
idx = (first_idx + i) % ET_TX_NDESC;
td = &tx_ring->tr_desc[idx];
td->td_addr_hi = htole32(ET_ADDR_HI(segs[i].ds_addr));
td->td_addr_lo = htole32(ET_ADDR_LO(segs[i].ds_addr));
td->td_ctrl1 = htole32(segs[i].ds_len & ET_TDCTRL1_LEN_MASK);
- if (i == ctx.nsegs - 1) { /* Last frag */
+ if (i == nsegs - 1) {
+ /* Last frag */
td->td_ctrl2 = htole32(last_td_ctrl2 | csum_flags);
last_idx = idx;
} else
@@ -2135,43 +2202,32 @@ et_encap(struct et_softc *sc, struct mbuf **m0)
}
}
td = &tx_ring->tr_desc[first_idx];
- td->td_ctrl2 |= htole32(ET_TDCTRL2_FIRST_FRAG); /* First frag */
+ /* First frag */
+ td->td_ctrl2 |= htole32(ET_TDCTRL2_FIRST_FRAG);
MPASS(last_idx >= 0);
tbd->tbd_buf[first_idx].tb_dmap = tbd->tbd_buf[last_idx].tb_dmap;
tbd->tbd_buf[last_idx].tb_dmap = map;
tbd->tbd_buf[last_idx].tb_mbuf = m;
- tbd->tbd_used += ctx.nsegs;
+ tbd->tbd_used += nsegs;
MPASS(tbd->tbd_used <= ET_TX_NDESC);
- bus_dmamap_sync(tx_ring->tr_dtag, tx_ring->tr_dmap,
- BUS_DMASYNC_PREWRITE);
-
- tx_ready_pos = tx_ring->tr_ready_index & ET_TX_READY_POS_INDEX_MASK;
- if (tx_ring->tr_ready_wrap)
- tx_ready_pos |= ET_TX_READY_POS_WRAP;
- CSR_WRITE_4(sc, ET_TX_READY_POS, tx_ready_pos);
-
- error = 0;
-back:
- if (error) {
- m_freem(m);
- *m0 = NULL;
- }
- return (error);
+ return (0);
}
static void
et_txeof(struct et_softc *sc)
{
- struct ifnet *ifp;
struct et_txdesc_ring *tx_ring;
struct et_txbuf_data *tbd;
+ struct et_txbuf *tb;
+ struct ifnet *ifp;
uint32_t tx_done;
int end, wrap;
ET_LOCK_ASSERT(sc);
+
ifp = sc->ifp;
tx_ring = &sc->sc_tx_ring;
tbd = &sc->sc_tx_data;
@@ -2182,26 +2238,22 @@ et_txeof(struct et_softc *sc)
if (tbd->tbd_used == 0)
return;
+ bus_dmamap_sync(tx_ring->tr_dtag, tx_ring->tr_dmap,
+ BUS_DMASYNC_POSTWRITE);
+
tx_done = CSR_READ_4(sc, ET_TX_DONE_POS);
end = tx_done & ET_TX_DONE_POS_INDEX_MASK;
wrap = (tx_done & ET_TX_DONE_POS_WRAP) ? 1 : 0;
while (tbd->tbd_start_index != end || tbd->tbd_start_wrap != wrap) {
- struct et_txbuf *tb;
-
MPASS(tbd->tbd_start_index < ET_TX_NDESC);
tb = &tbd->tbd_buf[tbd->tbd_start_index];
-
- bzero(&tx_ring->tr_desc[tbd->tbd_start_index],
- sizeof(struct et_txdesc));
- bus_dmamap_sync(tx_ring->tr_dtag, tx_ring->tr_dmap,
- BUS_DMASYNC_PREWRITE);
-
if (tb->tb_mbuf != NULL) {
- bus_dmamap_unload(sc->sc_mbuf_dtag, tb->tb_dmap);
+ bus_dmamap_sync(sc->sc_tx_tag, tb->tb_dmap,
+ BUS_DMASYNC_POSTWRITE);
+ bus_dmamap_unload(sc->sc_tx_tag, tb->tb_dmap);
m_freem(tb->tb_mbuf);
tb->tb_mbuf = NULL;
- ifp->if_opackets++;
}
if (++tbd->tbd_start_index == ET_TX_NDESC) {
@@ -2215,10 +2267,8 @@ et_txeof(struct et_softc *sc)
if (tbd->tbd_used == 0)
sc->watchdog_timer = 0;
- if (tbd->tbd_used + ET_NSEG_SPARE <= ET_TX_NDESC)
+ if (tbd->tbd_used + ET_NSEG_SPARE < ET_TX_NDESC)
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
-
- et_start_locked(ifp);
}
static void
@@ -2233,104 +2283,124 @@ et_tick(void *xsc)
mii = device_get_softc(sc->sc_miibus);
mii_tick(mii);
- if ((sc->sc_flags & ET_FLAG_TXRX_ENABLED) == 0 &&
- (mii->mii_media_status & IFM_ACTIVE) &&
- IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) {
- if_printf(ifp, "Link up, enable TX/RX\n");
- if (et_enable_txrx(sc, 0) == 0)
- et_start_locked(ifp);
- }
- et_watchdog(sc);
+ et_stats_update(sc);
+ if (et_watchdog(sc) == EJUSTRETURN)
+ return;
callout_reset(&sc->sc_tick, hz, et_tick, sc);
}
static int
-et_newbuf_cluster(struct et_rxbuf_data *rbd, int buf_idx, int init)
+et_newbuf_cluster(struct et_rxbuf_data *rbd, int buf_idx)
{
- return (et_newbuf(rbd, buf_idx, init, MCLBYTES));
+ struct et_softc *sc;
+ struct et_rxdesc *desc;
+ struct et_rxbuf *rb;
+ struct mbuf *m;
+ bus_dma_segment_t segs[1];
+ bus_dmamap_t dmap;
+ int nsegs;
+
+ MPASS(buf_idx < ET_RX_NDESC);
+ m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
+ if (m == NULL)
+ return (ENOBUFS);
+ m->m_len = m->m_pkthdr.len = MCLBYTES;
+ m_adj(m, ETHER_ALIGN);
+
+ sc = rbd->rbd_softc;
+ rb = &rbd->rbd_buf[buf_idx];
+
+ if (bus_dmamap_load_mbuf_sg(sc->sc_rx_tag, sc->sc_rx_sparemap, m,
+ segs, &nsegs, 0) != 0) {
+ m_freem(m);
+ return (ENOBUFS);
+ }
+ KASSERT(nsegs == 1, ("%s: %d segments returned!", __func__, nsegs));
+
+ if (rb->rb_mbuf != NULL) {
+ bus_dmamap_sync(sc->sc_rx_tag, rb->rb_dmap,
+ BUS_DMASYNC_POSTREAD);
+ bus_dmamap_unload(sc->sc_rx_tag, rb->rb_dmap);
+ }
+ dmap = rb->rb_dmap;
+ rb->rb_dmap = sc->sc_rx_sparemap;
+ sc->sc_rx_sparemap = dmap;
+ bus_dmamap_sync(sc->sc_rx_tag, rb->rb_dmap, BUS_DMASYNC_PREREAD);
+
+ rb->rb_mbuf = m;
+ desc = &rbd->rbd_ring->rr_desc[buf_idx];
+ desc->rd_addr_hi = htole32(ET_ADDR_HI(segs[0].ds_addr));
+ desc->rd_addr_lo = htole32(ET_ADDR_LO(segs[0].ds_addr));
+ desc->rd_ctrl = htole32(buf_idx & ET_RDCTRL_BUFIDX_MASK);
+ bus_dmamap_sync(rbd->rbd_ring->rr_dtag, rbd->rbd_ring->rr_dmap,
+ BUS_DMASYNC_PREWRITE);
+ return (0);
}
-static int
-et_newbuf_hdr(struct et_rxbuf_data *rbd, int buf_idx, int init)
+static void
+et_rxbuf_discard(struct et_rxbuf_data *rbd, int buf_idx)
{
- return (et_newbuf(rbd, buf_idx, init, MHLEN));
+ struct et_rxdesc *desc;
+
+ desc = &rbd->rbd_ring->rr_desc[buf_idx];
+ desc->rd_ctrl = htole32(buf_idx & ET_RDCTRL_BUFIDX_MASK);
+ bus_dmamap_sync(rbd->rbd_ring->rr_dtag, rbd->rbd_ring->rr_dmap,
+ BUS_DMASYNC_PREWRITE);
}
static int
-et_newbuf(struct et_rxbuf_data *rbd, int buf_idx, int init, int len0)
+et_newbuf_hdr(struct et_rxbuf_data *rbd, int buf_idx)
{
- struct et_softc *sc = rbd->rbd_softc;
+ struct et_softc *sc;
+ struct et_rxdesc *desc;
struct et_rxbuf *rb;
struct mbuf *m;
- struct et_dmamap_ctx ctx;
- bus_dma_segment_t seg;
+ bus_dma_segment_t segs[1];
bus_dmamap_t dmap;
- int error, len;
+ int nsegs;
MPASS(buf_idx < ET_RX_NDESC);
- rb = &rbd->rbd_buf[buf_idx];
-
- m = m_getl(len0, /* init ? M_WAIT :*/ M_DONTWAIT, MT_DATA, M_PKTHDR, &len);
- if (m == NULL) {
- error = ENOBUFS;
+ MGETHDR(m, M_DONTWAIT, MT_DATA);
+ if (m == NULL)
+ return (ENOBUFS);
+ m->m_len = m->m_pkthdr.len = MHLEN;
+ m_adj(m, ETHER_ALIGN);
- if (init) {
- if_printf(sc->ifp,
- "m_getl failed, size %d\n", len0);
- return (error);
- } else {
- goto back;
- }
- }
- m->m_len = m->m_pkthdr.len = len;
+ sc = rbd->rbd_softc;
+ rb = &rbd->rbd_buf[buf_idx];
- /*
- * Try load RX mbuf into temporary DMA tag
- */
- ctx.nsegs = 1;
- ctx.segs = &seg;
- error = bus_dmamap_load_mbuf(sc->sc_mbuf_dtag, sc->sc_mbuf_tmp_dmap, m,
- et_dma_buf_addr, &ctx,
- init ? BUS_DMA_WAITOK : BUS_DMA_NOWAIT);
- if (error || ctx.nsegs == 0) {
- if (!error) {
- bus_dmamap_unload(sc->sc_mbuf_dtag,
- sc->sc_mbuf_tmp_dmap);
- error = EFBIG;
- if_printf(sc->ifp, "too many segments?!\n");
- }
+ if (bus_dmamap_load_mbuf_sg(sc->sc_rx_mini_tag, sc->sc_rx_mini_sparemap,
+ m, segs, &nsegs, 0) != 0) {
m_freem(m);
- m = NULL;
-
- if (init) {
- if_printf(sc->ifp, "can't load RX mbuf\n");
- return (error);
- } else {
- goto back;
- }
+ return (ENOBUFS);
}
+ KASSERT(nsegs == 1, ("%s: %d segments returned!", __func__, nsegs));
- if (!init) {
- bus_dmamap_sync(sc->sc_mbuf_dtag, rb->rb_dmap,
- BUS_DMASYNC_POSTREAD);
- bus_dmamap_unload(sc->sc_mbuf_dtag, rb->rb_dmap);
+ if (rb->rb_mbuf != NULL) {
+ bus_dmamap_sync(sc->sc_rx_mini_tag, rb->rb_dmap,
+ BUS_DMASYNC_POSTREAD);
+ bus_dmamap_unload(sc->sc_rx_mini_tag, rb->rb_dmap);
}
- rb->rb_mbuf = m;
- rb->rb_paddr = seg.ds_addr;
-
- /*
- * Swap RX buf's DMA map with the loaded temporary one
- */
dmap = rb->rb_dmap;
- rb->rb_dmap = sc->sc_mbuf_tmp_dmap;
- sc->sc_mbuf_tmp_dmap = dmap;
+ rb->rb_dmap = sc->sc_rx_mini_sparemap;
+ sc->sc_rx_mini_sparemap = dmap;
+ bus_dmamap_sync(sc->sc_rx_mini_tag, rb->rb_dmap, BUS_DMASYNC_PREREAD);
- error = 0;
-back:
- et_setup_rxdesc(rbd, buf_idx, rb->rb_paddr);
- return (error);
+ rb->rb_mbuf = m;
+ desc = &rbd->rbd_ring->rr_desc[buf_idx];
+ desc->rd_addr_hi = htole32(ET_ADDR_HI(segs[0].ds_addr));
+ desc->rd_addr_lo = htole32(ET_ADDR_LO(segs[0].ds_addr));
+ desc->rd_ctrl = htole32(buf_idx & ET_RDCTRL_BUFIDX_MASK);
+ bus_dmamap_sync(rbd->rbd_ring->rr_dtag, rbd->rbd_ring->rr_dmap,
+ BUS_DMASYNC_PREWRITE);
+ return (0);
}
+#define ET_SYSCTL_STAT_ADD32(c, h, n, p, d) \
+ SYSCTL_ADD_UINT(c, h, OID_AUTO, n, CTLFLAG_RD, p, 0, d)
+#define ET_SYSCTL_STAT_ADD64(c, h, n, p, d) \
+ SYSCTL_ADD_UQUAD(c, h, OID_AUTO, n, CTLFLAG_RD, p, d)
+
/*
* Create sysctl tree
*/
@@ -2338,7 +2408,9 @@ static void
et_add_sysctls(struct et_softc * sc)
{
struct sysctl_ctx_list *ctx;
- struct sysctl_oid_list *children;
+ struct sysctl_oid_list *children, *parent;
+ struct sysctl_oid *tree;
+ struct et_hw_stats *stats;
ctx = device_get_sysctl_ctx(sc->dev);
children = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev));
@@ -2354,8 +2426,116 @@ et_add_sysctls(struct et_softc * sc)
"TX IM, # segments per TX interrupt");
SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "timer",
CTLFLAG_RW, &sc->sc_timer, 0, "TX timer");
+
+ tree = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, "stats", CTLFLAG_RD,
+ NULL, "ET statistics");
+ parent = SYSCTL_CHILDREN(tree);
+
+ /* TX/RX statistics. */
+ stats = &sc->sc_stats;
+ ET_SYSCTL_STAT_ADD64(ctx, parent, "frames_64", &stats->pkts_64,
+ "0 to 64 bytes frames");
+ ET_SYSCTL_STAT_ADD64(ctx, parent, "frames_65_127", &stats->pkts_65,
+ "65 to 127 bytes frames");
+ ET_SYSCTL_STAT_ADD64(ctx, parent, "frames_128_255", &stats->pkts_128,
+ "128 to 255 bytes frames");
+ ET_SYSCTL_STAT_ADD64(ctx, parent, "frames_256_511", &stats->pkts_256,
+ "256 to 511 bytes frames");
+ ET_SYSCTL_STAT_ADD64(ctx, parent, "frames_512_1023", &stats->pkts_512,
+ "512 to 1023 bytes frames");
+ ET_SYSCTL_STAT_ADD64(ctx, parent, "frames_1024_1518", &stats->pkts_1024,
+ "1024 to 1518 bytes frames");
+ ET_SYSCTL_STAT_ADD64(ctx, parent, "frames_1519_1522", &stats->pkts_1519,
+ "1519 to 1522 bytes frames");
+
+ /* RX statistics. */
+ tree = SYSCTL_ADD_NODE(ctx, parent, OID_AUTO, "rx", CTLFLAG_RD,
+ NULL, "RX MAC statistics");
+ children = SYSCTL_CHILDREN(tree);
+ ET_SYSCTL_STAT_ADD64(ctx, children, "bytes",
+ &stats->rx_bytes, "Good bytes");
+ ET_SYSCTL_STAT_ADD64(ctx, children, "frames",
+ &stats->rx_frames, "Good frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "crc_errs",
+ &stats->rx_crcerrs, "CRC errors");
+ ET_SYSCTL_STAT_ADD64(ctx, children, "mcast_frames",
+ &stats->rx_mcast, "Multicast frames");
+ ET_SYSCTL_STAT_ADD64(ctx, children, "bcast_frames",
+ &stats->rx_bcast, "Broadcast frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "control",
+ &stats->rx_control, "Control frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "pause",
+ &stats->rx_pause, "Pause frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "unknown_control",
+ &stats->rx_unknown_control, "Unknown control frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "align_errs",
+ &stats->rx_alignerrs, "Alignment errors");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "len_errs",
+ &stats->rx_lenerrs, "Frames with length mismatched");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "code_errs",
+ &stats->rx_codeerrs, "Frames with code error");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "cs_errs",
+ &stats->rx_cserrs, "Frames with carrier sense error");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "runts",
+ &stats->rx_runts, "Too short frames");
+ ET_SYSCTL_STAT_ADD64(ctx, children, "oversize",
+ &stats->rx_oversize, "Oversized frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "fragments",
+ &stats->rx_fragments, "Fragmented frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "jabbers",
+ &stats->rx_jabbers, "Frames with jabber error");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "drop",
+ &stats->rx_drop, "Dropped frames");
+
+ /* TX statistics. */
+ tree = SYSCTL_ADD_NODE(ctx, parent, OID_AUTO, "tx", CTLFLAG_RD,
+ NULL, "TX MAC statistics");
+ children = SYSCTL_CHILDREN(tree);
+ ET_SYSCTL_STAT_ADD64(ctx, children, "bytes",
+ &stats->tx_bytes, "Good bytes");
+ ET_SYSCTL_STAT_ADD64(ctx, children, "frames",
+ &stats->tx_frames, "Good frames");
+ ET_SYSCTL_STAT_ADD64(ctx, children, "mcast_frames",
+ &stats->tx_mcast, "Multicast frames");
+ ET_SYSCTL_STAT_ADD64(ctx, children, "bcast_frames",
+ &stats->tx_bcast, "Broadcast frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "pause",
+ &stats->tx_pause, "Pause frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "deferred",
+ &stats->tx_deferred, "Deferred frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "excess_deferred",
+ &stats->tx_excess_deferred, "Excessively deferred frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "single_colls",
+ &stats->tx_single_colls, "Single collisions");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "multi_colls",
+ &stats->tx_multi_colls, "Multiple collisions");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "late_colls",
+ &stats->tx_late_colls, "Late collisions");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "excess_colls",
+ &stats->tx_excess_colls, "Excess collisions");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "total_colls",
+ &stats->tx_total_colls, "Total collisions");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "pause_honored",
+ &stats->tx_pause_honored, "Honored pause frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "drop",
+ &stats->tx_drop, "Dropped frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "jabbers",
+ &stats->tx_jabbers, "Frames with jabber errors");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "crc_errs",
+ &stats->tx_crcerrs, "Frames with CRC errors");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "control",
+ &stats->tx_control, "Control frames");
+ ET_SYSCTL_STAT_ADD64(ctx, children, "oversize",
+ &stats->tx_oversize, "Oversized frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "undersize",
+ &stats->tx_undersize, "Undersized frames");
+ ET_SYSCTL_STAT_ADD32(ctx, children, "fragments",
+ &stats->tx_fragments, "Fragmented frames");
}
+#undef ET_SYSCTL_STAT_ADD32
+#undef ET_SYSCTL_STAT_ADD64
+
static int
et_sysctl_rx_intr_npkts(SYSCTL_HANDLER_ARGS)
{
@@ -2407,50 +2587,107 @@ back:
}
static void
-et_setmedia(struct et_softc *sc)
+et_stats_update(struct et_softc *sc)
{
- struct mii_data *mii = device_get_softc(sc->sc_miibus);
- uint32_t cfg2, ctrl;
-
- cfg2 = CSR_READ_4(sc, ET_MAC_CFG2);
- cfg2 &= ~(ET_MAC_CFG2_MODE_MII | ET_MAC_CFG2_MODE_GMII |
- ET_MAC_CFG2_FDX | ET_MAC_CFG2_BIGFRM);
- cfg2 |= ET_MAC_CFG2_LENCHK | ET_MAC_CFG2_CRC | ET_MAC_CFG2_PADCRC |
- ((7 << ET_MAC_CFG2_PREAMBLE_LEN_SHIFT) &
- ET_MAC_CFG2_PREAMBLE_LEN_MASK);
-
- ctrl = CSR_READ_4(sc, ET_MAC_CTRL);
- ctrl &= ~(ET_MAC_CTRL_GHDX | ET_MAC_CTRL_MODE_MII);
-
- if (IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_T) {
- cfg2 |= ET_MAC_CFG2_MODE_GMII;
- } else {
- cfg2 |= ET_MAC_CFG2_MODE_MII;
- ctrl |= ET_MAC_CTRL_MODE_MII;
- }
-
- if ((mii->mii_media_active & IFM_GMASK) == IFM_FDX)
- cfg2 |= ET_MAC_CFG2_FDX;
- else
- ctrl |= ET_MAC_CTRL_GHDX;
-
- CSR_WRITE_4(sc, ET_MAC_CTRL, ctrl);
- CSR_WRITE_4(sc, ET_MAC_CFG2, cfg2);
+ struct ifnet *ifp;
+ struct et_hw_stats *stats;
+
+ stats = &sc->sc_stats;
+ stats->pkts_64 += CSR_READ_4(sc, ET_STAT_PKTS_64);
+ stats->pkts_65 += CSR_READ_4(sc, ET_STAT_PKTS_65_127);
+ stats->pkts_128 += CSR_READ_4(sc, ET_STAT_PKTS_128_255);
+ stats->pkts_256 += CSR_READ_4(sc, ET_STAT_PKTS_256_511);
+ stats->pkts_512 += CSR_READ_4(sc, ET_STAT_PKTS_512_1023);
+ stats->pkts_1024 += CSR_READ_4(sc, ET_STAT_PKTS_1024_1518);
+ stats->pkts_1519 += CSR_READ_4(sc, ET_STAT_PKTS_1519_1522);
+
+ stats->rx_bytes += CSR_READ_4(sc, ET_STAT_RX_BYTES);
+ stats->rx_frames += CSR_READ_4(sc, ET_STAT_RX_FRAMES);
+ stats->rx_crcerrs += CSR_READ_4(sc, ET_STAT_RX_CRC_ERR);
+ stats->rx_mcast += CSR_READ_4(sc, ET_STAT_RX_MCAST);
+ stats->rx_bcast += CSR_READ_4(sc, ET_STAT_RX_BCAST);
+ stats->rx_control += CSR_READ_4(sc, ET_STAT_RX_CTL);
+ stats->rx_pause += CSR_READ_4(sc, ET_STAT_RX_PAUSE);
+ stats->rx_unknown_control += CSR_READ_4(sc, ET_STAT_RX_UNKNOWN_CTL);
+ stats->rx_alignerrs += CSR_READ_4(sc, ET_STAT_RX_ALIGN_ERR);
+ stats->rx_lenerrs += CSR_READ_4(sc, ET_STAT_RX_LEN_ERR);
+ stats->rx_codeerrs += CSR_READ_4(sc, ET_STAT_RX_CODE_ERR);
+ stats->rx_cserrs += CSR_READ_4(sc, ET_STAT_RX_CS_ERR);
+ stats->rx_runts += CSR_READ_4(sc, ET_STAT_RX_RUNT);
+ stats->rx_oversize += CSR_READ_4(sc, ET_STAT_RX_OVERSIZE);
+ stats->rx_fragments += CSR_READ_4(sc, ET_STAT_RX_FRAG);
+ stats->rx_jabbers += CSR_READ_4(sc, ET_STAT_RX_JABBER);
+ stats->rx_drop += CSR_READ_4(sc, ET_STAT_RX_DROP);
+
+ stats->tx_bytes += CSR_READ_4(sc, ET_STAT_TX_BYTES);
+ stats->tx_frames += CSR_READ_4(sc, ET_STAT_TX_FRAMES);
+ stats->tx_mcast += CSR_READ_4(sc, ET_STAT_TX_MCAST);
+ stats->tx_bcast += CSR_READ_4(sc, ET_STAT_TX_BCAST);
+ stats->tx_pause += CSR_READ_4(sc, ET_STAT_TX_PAUSE);
+ stats->tx_deferred += CSR_READ_4(sc, ET_STAT_TX_DEFER);
+ stats->tx_excess_deferred += CSR_READ_4(sc, ET_STAT_TX_EXCESS_DEFER);
+ stats->tx_single_colls += CSR_READ_4(sc, ET_STAT_TX_SINGLE_COL);
+ stats->tx_multi_colls += CSR_READ_4(sc, ET_STAT_TX_MULTI_COL);
+ stats->tx_late_colls += CSR_READ_4(sc, ET_STAT_TX_LATE_COL);
+ stats->tx_excess_colls += CSR_READ_4(sc, ET_STAT_TX_EXCESS_COL);
+ stats->tx_total_colls += CSR_READ_4(sc, ET_STAT_TX_TOTAL_COL);
+ stats->tx_pause_honored += CSR_READ_4(sc, ET_STAT_TX_PAUSE_HONOR);
+ stats->tx_drop += CSR_READ_4(sc, ET_STAT_TX_DROP);
+ stats->tx_jabbers += CSR_READ_4(sc, ET_STAT_TX_JABBER);
+ stats->tx_crcerrs += CSR_READ_4(sc, ET_STAT_TX_CRC_ERR);
+ stats->tx_control += CSR_READ_4(sc, ET_STAT_TX_CTL);
+ stats->tx_oversize += CSR_READ_4(sc, ET_STAT_TX_OVERSIZE);
+ stats->tx_undersize += CSR_READ_4(sc, ET_STAT_TX_UNDERSIZE);
+ stats->tx_fragments += CSR_READ_4(sc, ET_STAT_TX_FRAG);
+
+ /* Update ifnet counters. */
+ ifp = sc->ifp;
+ ifp->if_opackets = (u_long)stats->tx_frames;
+ ifp->if_collisions = stats->tx_total_colls;
+ ifp->if_oerrors = stats->tx_drop + stats->tx_jabbers +
+ stats->tx_crcerrs + stats->tx_excess_deferred +
+ stats->tx_late_colls;
+ ifp->if_ipackets = (u_long)stats->rx_frames;
+ ifp->if_ierrors = stats->rx_crcerrs + stats->rx_alignerrs +
+ stats->rx_lenerrs + stats->rx_codeerrs + stats->rx_cserrs +
+ stats->rx_runts + stats->rx_jabbers + stats->rx_drop;
}
-static void
-et_setup_rxdesc(struct et_rxbuf_data *rbd, int buf_idx, bus_addr_t paddr)
+static int
+et_suspend(device_t dev)
{
- struct et_rxdesc_ring *rx_ring = rbd->rbd_ring;
- struct et_rxdesc *desc;
+ struct et_softc *sc;
+ uint32_t pmcfg;
- MPASS(buf_idx < ET_RX_NDESC);
- desc = &rx_ring->rr_desc[buf_idx];
+ sc = device_get_softc(dev);
+ ET_LOCK(sc);
+ if ((sc->ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ et_stop(sc);
+ /* Diable all clocks and put PHY into COMA. */
+ pmcfg = CSR_READ_4(sc, ET_PM);
+ pmcfg &= ~(EM_PM_GIGEPHY_ENB | ET_PM_SYSCLK_GATE | ET_PM_TXCLK_GATE |
+ ET_PM_RXCLK_GATE);
+ pmcfg |= ET_PM_PHY_SW_COMA;
+ CSR_WRITE_4(sc, ET_PM, pmcfg);
+ ET_UNLOCK(sc);
+ return (0);
+}
- desc->rd_addr_hi = htole32(ET_ADDR_HI(paddr));
- desc->rd_addr_lo = htole32(ET_ADDR_LO(paddr));
- desc->rd_ctrl = htole32(buf_idx & ET_RDCTRL_BUFIDX_MASK);
+static int
+et_resume(device_t dev)
+{
+ struct et_softc *sc;
+ uint32_t pmcfg;
- bus_dmamap_sync(rx_ring->rr_dtag, rx_ring->rr_dmap,
- BUS_DMASYNC_PREWRITE);
+ sc = device_get_softc(dev);
+ ET_LOCK(sc);
+ /* Take PHY out of COMA and enable clocks. */
+ pmcfg = ET_PM_SYSCLK_GATE | ET_PM_TXCLK_GATE | ET_PM_RXCLK_GATE;
+ if ((sc->sc_flags & ET_FLAG_FASTETHER) == 0)
+ pmcfg |= EM_PM_GIGEPHY_ENB;
+ CSR_WRITE_4(sc, ET_PM, pmcfg);
+ if ((sc->ifp->if_flags & IFF_UP) != 0)
+ et_init_locked(sc);
+ ET_UNLOCK(sc);
+ return (0);
}
diff --git a/sys/dev/et/if_etreg.h b/sys/dev/et/if_etreg.h
index 3a270c1..a314921 100644
--- a/sys/dev/et/if_etreg.h
+++ b/sys/dev/et/if_etreg.h
@@ -34,50 +34,15 @@
* $DragonFly: src/sys/dev/netif/et/if_etreg.h,v 1.3 2007/10/23 14:28:42 sephe Exp $
* $FreeBSD$
*/
-/*-
- * Portions of this code is derived from NetBSD which is covered by
- * the following license:
- *
- * Copyright (c) 2004, 2005 David Young. All rights reserved.
- *
- * Programmed for NetBSD by David Young.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of David Young may not be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY David Young ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL David
- * Young BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * $DragonFly: src/sys/sys/bitops.h,v 1.1 2007/10/14 04:15:17 sephe Exp $
- */
#ifndef _IF_ETREG_H
#define _IF_ETREG_H
-#define ET_MEM_TXSIZE_EX 182
-#define ET_MEM_RXSIZE_MIN 608
-#define ET_MEM_RXSIZE_DEFAULT 11216
-#define ET_MEM_SIZE 16384
-#define ET_MEM_UNIT 16
+#define ET_MEM_TXSIZE_EX 182
+#define ET_MEM_RXSIZE_MIN 608
+#define ET_MEM_RXSIZE_DEFAULT 11216
+#define ET_MEM_SIZE 16384
+#define ET_MEM_UNIT 16
/*
* PCI registers
@@ -88,313 +53,366 @@
* ET_PCIV_REPLAY_TIMER_{128,256} are from
* PCI EXPRESS BASE SPECIFICATION, REV. 1.0a, Table 3-4
*/
-#define ET_PCIR_BAR PCIR_BAR(0)
-
-#define ET_PCIR_DEVICE_CAPS 0x4c
-#define ET_PCIM_DEVICE_CAPS_MAX_PLSZ 0x7 /* Max playload size */
-#define ET_PCIV_DEVICE_CAPS_PLSZ_128 0x0
-#define ET_PCIV_DEVICE_CAPS_PLSZ_256 0x1
+#define ET_PCIR_DEVICE_CAPS 0x4C
+#define ET_PCIM_DEVICE_CAPS_MAX_PLSZ 0x7 /* Max playload size */
+#define ET_PCIV_DEVICE_CAPS_PLSZ_128 0x0
+#define ET_PCIV_DEVICE_CAPS_PLSZ_256 0x1
-#define ET_PCIR_DEVICE_CTRL 0x50
-#define ET_PCIM_DEVICE_CTRL_MAX_RRSZ 0x7000 /* Max read request size */
-#define ET_PCIV_DEVICE_CTRL_RRSZ_2K 0x4000
+#define ET_PCIR_DEVICE_CTRL 0x50
+#define ET_PCIM_DEVICE_CTRL_MAX_RRSZ 0x7000 /* Max read request size */
+#define ET_PCIV_DEVICE_CTRL_RRSZ_2K 0x4000
-#define ET_PCIR_MAC_ADDR0 0xa4
-#define ET_PCIR_MAC_ADDR1 0xa8
+#define ET_PCIR_MAC_ADDR0 0xA4
+#define ET_PCIR_MAC_ADDR1 0xA8
-#define ET_PCIR_EEPROM_STATUS 0xb2 /* XXX undocumented */
-#define ET_PCIM_EEPROM_STATUS_ERROR 0x4c
+#define ET_PCIR_EEPROM_STATUS 0xB2 /* XXX undocumented */
+#define ET_PCIM_EEPROM_STATUS_ERROR 0x4C
-#define ET_PCIR_ACK_LATENCY 0xc0
-#define ET_PCIV_ACK_LATENCY_128 237
-#define ET_PCIV_ACK_LATENCY_256 416
+#define ET_PCIR_ACK_LATENCY 0xC0
+#define ET_PCIV_ACK_LATENCY_128 237
+#define ET_PCIV_ACK_LATENCY_256 416
-#define ET_PCIR_REPLAY_TIMER 0xc2
-#define ET_REPLAY_TIMER_RX_L0S_ADJ 250 /* XXX infered from default */
-#define ET_PCIV_REPLAY_TIMER_128 (711 + ET_REPLAY_TIMER_RX_L0S_ADJ)
-#define ET_PCIV_REPLAY_TIMER_256 (1248 + ET_REPLAY_TIMER_RX_L0S_ADJ)
+#define ET_PCIR_REPLAY_TIMER 0xC2
+#define ET_REPLAY_TIMER_RX_L0S_ADJ 250 /* XXX infered from default */
+#define ET_PCIV_REPLAY_TIMER_128 (711 + ET_REPLAY_TIMER_RX_L0S_ADJ)
+#define ET_PCIV_REPLAY_TIMER_256 (1248 + ET_REPLAY_TIMER_RX_L0S_ADJ)
-#define ET_PCIR_L0S_L1_LATENCY 0xcf
+#define ET_PCIR_L0S_L1_LATENCY 0xCF
/*
* CSR
*/
-#define ET_TXQUEUE_START 0x0000
-#define ET_TXQUEUE_END 0x0004
-#define ET_RXQUEUE_START 0x0008
-#define ET_RXQUEUE_END 0x000c
-#define ET_QUEUE_ADDR(addr) (((addr) / ET_MEM_UNIT) - 1)
-#define ET_QUEUE_ADDR_START 0
-#define ET_QUEUE_ADDR_END ET_QUEUE_ADDR(ET_MEM_SIZE)
-
-#define ET_PM 0x0010
-#define ET_PM_SYSCLK_GATE 0x00000008
-#define ET_PM_TXCLK_GATE 0x00000010
-#define ET_PM_RXCLK_GATE 0x00000020
-
-#define ET_INTR_STATUS 0x0018
-#define ET_INTR_MASK 0x001c
-
-#define ET_SWRST 0x0028
-#define ET_SWRST_TXDMA 0x00000001
-#define ET_SWRST_RXDMA 0x00000002
-#define ET_SWRST_TXMAC 0x00000004
-#define ET_SWRST_RXMAC 0x00000008
-#define ET_SWRST_MAC 0x00000010
-#define ET_SWRST_MAC_STAT 0x00000020
-#define ET_SWRST_MMC 0x00000040
-#define ET_SWRST_SELFCLR_DISABLE 0x80000000
-
-#define ET_MSI_CFG 0x0030
-
-#define ET_LOOPBACK 0x0034
-
-#define ET_TIMER 0x0038
-
-#define ET_TXDMA_CTRL 0x1000
-#define ET_TXDMA_CTRL_HALT 0x00000001
-#define ET_TXDMA_CTRL_CACHE_THR_MASK 0x000000F0
-#define ET_TXDMA_CTRL_SINGLE_EPKT 0x00000100 /* ??? */
-
-#define ET_TX_RING_HI 0x1004
-#define ET_TX_RING_LO 0x1008
-#define ET_TX_RING_CNT 0x100c
-
-#define ET_TX_STATUS_HI 0x101c
-#define ET_TX_STATUS_LO 0x1020
-
-#define ET_TX_READY_POS 0x1024
-#define ET_TX_READY_POS_INDEX_MASK 0x000003FF
-#define ET_TX_READY_POS_WRAP 0x00000400
-
-#define ET_TX_DONE_POS 0x1060
-#define ET_TX_DONE_POS_INDEX_MASK 0x0000003FF
-#define ET_TX_DONE_POS_WRAP 0x000000400
-
-#define ET_RXDMA_CTRL 0x2000
-#define ET_RXDMA_CTRL_HALT 0x00000001
-#define ET_RXDMA_CTRL_RING0_SIZE_MASK 0x00000300
-#define ET_RXDMA_CTRL_RING0_128 0x00000000 /* 127 */
-#define ET_RXDMA_CTRL_RING0_256 0x00000100 /* 255 */
-#define ET_RXDMA_CTRL_RING0_512 0x00000200 /* 511 */
-#define ET_RXDMA_CTRL_RING0_1024 0x00000300 /* 1023 */
-#define ET_RXDMA_CTRL_RING0_ENABLE 0x00000400
-#define ET_RXDMA_CTRL_RING1_SIZE_MASK 0x00001800
-#define ET_RXDMA_CTRL_RING1_2048 0x00000000 /* 2047 */
-#define ET_RXDMA_CTRL_RING1_4096 0x00000800 /* 4095 */
-#define ET_RXDMA_CTRL_RING1_8192 0x00001000 /* 8191 */
-#define ET_RXDMA_CTRL_RING1_16384 0x00001800 /* 16383 (9022?) */
-#define ET_RXDMA_CTRL_RING1_ENABLE 0x00002000
-#define ET_RXDMA_CTRL_HALTED 0x00020000
-
-#define ET_RX_STATUS_LO 0x2004
-#define ET_RX_STATUS_HI 0x2008
-
-#define ET_RX_INTR_NPKTS 0x200c
-#define ET_RX_INTR_DELAY 0x2010
-
-#define ET_RXSTAT_LO 0x2020
-#define ET_RXSTAT_HI 0x2024
-#define ET_RXSTAT_CNT 0x2028
-
-#define ET_RXSTAT_POS 0x2030
-#define ET_RXSTAT_POS_INDEX_MASK 0x00000FFF
-#define ET_RXSTAT_POS_WRAP 0x00001000
-
-#define ET_RXSTAT_MINCNT 0x2038
-
-#define ET_RX_RING0_LO 0x203c
-#define ET_RX_RING0_HI 0x2040
-#define ET_RX_RING0_CNT 0x2044
-
-#define ET_RX_RING0_POS 0x204c
-#define ET_RX_RING0_POS_INDEX_MASK 0x000003FF
-#define ET_RX_RING0_POS_WRAP 0x00000400
-
-#define ET_RX_RING0_MINCNT 0x2054
-
-#define ET_RX_RING1_LO 0x2058
-#define ET_RX_RING1_HI 0x205c
-#define ET_RX_RING1_CNT 0x2060
-
-#define ET_RX_RING1_POS 0x2068
-#define ET_RX_RING1_POS_INDEX 0x000003FF
-#define ET_RX_RING1_POS_WRAP 0x00000400
-
-#define ET_RX_RING1_MINCNT 0x2070
-
-#define ET_TXMAC_CTRL 0x3000
-#define ET_TXMAC_CTRL_ENABLE 0x00000001
-#define ET_TXMAC_CTRL_FC_DISABLE 0x00000008
-
-#define ET_TXMAC_FLOWCTRL 0x3010
-
-#define ET_RXMAC_CTRL 0x4000
-#define ET_RXMAC_CTRL_ENABLE 0x00000001
-#define ET_RXMAC_CTRL_NO_PKTFILT 0x00000004
-#define ET_RXMAC_CTRL_WOL_DISABLE 0x00000008
-
-#define ET_WOL_CRC 0x4004
-#define ET_WOL_SA_LO 0x4010
-#define ET_WOL_SA_HI 0x4014
-#define ET_WOL_MASK 0x4018
-
-#define ET_UCAST_FILTADDR1 0x4068
-#define ET_UCAST_FILTADDR2 0x406c
-#define ET_UCAST_FILTADDR3 0x4070
-
-#define ET_MULTI_HASH 0x4074
-
-#define ET_PKTFILT 0x4084
-#define ET_PKTFILT_BCAST 0x00000001
-#define ET_PKTFILT_MCAST 0x00000002
-#define ET_PKTFILT_UCAST 0x00000004
-#define ET_PKTFILT_FRAG 0x00000008
-#define ET_PKTFILT_MINLEN_MASK 0x007F0000
-#define ET_PKTFILT_MINLEN_SHIFT 16
-
-#define ET_RXMAC_MC_SEGSZ 0x4088
-#define ET_RXMAC_MC_SEGSZ_ENABLE 0x00000001
-#define ET_RXMAC_MC_SEGSZ_FC 0x00000002
-#define ET_RXMAC_MC_SEGSZ_MAX_MASK 0x000003FC
-#define ET_RXMAC_SEGSZ(segsz) ((segsz) / ET_MEM_UNIT)
-#define ET_RXMAC_CUT_THRU_FRMLEN 8074
-
-#define ET_RXMAC_MC_WATERMARK 0x408c
-#define ET_RXMAC_SPACE_AVL 0x4094
-
-#define ET_RXMAC_MGT 0x4098
-#define ET_RXMAC_MGT_PASS_ECRC 0x00000010
-#define ET_RXMAC_MGT_PASS_ELEN 0x00000020
-#define ET_RXMAC_MGT_PASS_ETRUNC 0x00010000
-#define ET_RXMAC_MGT_CHECK_PKT 0x00020000
-
-#define ET_MAC_CFG1 0x5000
-#define ET_MAC_CFG1_TXEN 0x00000001
-#define ET_MAC_CFG1_SYNC_TXEN 0x00000002
-#define ET_MAC_CFG1_RXEN 0x00000004
-#define ET_MAC_CFG1_SYNC_RXEN 0x00000008
-#define ET_MAC_CFG1_TXFLOW 0x00000010
-#define ET_MAC_CFG1_RXFLOW 0x00000020
-#define ET_MAC_CFG1_LOOPBACK 0x00000100
-#define ET_MAC_CFG1_RST_TXFUNC 0x00010000
-#define ET_MAC_CFG1_RST_RXFUNC 0x00020000
-#define ET_MAC_CFG1_RST_TXMC 0x00040000
-#define ET_MAC_CFG1_RST_RXMC 0x00080000
-#define ET_MAC_CFG1_SIM_RST 0x40000000
-#define ET_MAC_CFG1_SOFT_RST 0x80000000
-
-#define ET_MAC_CFG2 0x5004
-#define ET_MAC_CFG2_FDX 0x00000001
-#define ET_MAC_CFG2_CRC 0x00000002
-#define ET_MAC_CFG2_PADCRC 0x00000004
-#define ET_MAC_CFG2_LENCHK 0x00000010
-#define ET_MAC_CFG2_BIGFRM 0x00000020
-#define ET_MAC_CFG2_MODE_MII 0x00000100
-#define ET_MAC_CFG2_MODE_GMII 0x00000200
-#define ET_MAC_CFG2_PREAMBLE_LEN_MASK 0x0000F000
-#define ET_MAC_CFG2_PREAMBLE_LEN_SHIFT 12
-
-#define ET_IPG 0x5008
-#define ET_IPG_B2B_MASK 0x0000007F
-#define ET_IPG_MINIFG_MASK 0x0000FF00
-#define ET_IPG_NONB2B_2_MASK 0x007F0000
-#define ET_IPG_NONB2B_1_MASK 0x7F000000
-#define ET_IPG_B2B_SHIFT 0
-#define ET_IPG_MINIFG_SHIFT 8
-#define ET_IPG_NONB2B_2_SHIFT 16
-#define ET_IPG_NONB2B_1_SHIFT 24
-
-#define ET_MAC_HDX 0x500c
-#define ET_MAC_HDX_COLLWIN_MASK 0x000003FF
-#define ET_MAC_HDX_REXMIT_MAX_MASK 0x0000F000
-#define ET_MAC_HDX_EXC_DEFER 0x00010000
-#define ET_MAC_HDX_NOBACKOFF 0x00020000
-#define ET_MAC_HDX_BP_NOBACKOFF 0x00040000
-#define ET_MAC_HDX_ALT_BEB 0x00080000
-#define ET_MAC_HDX_ALT_BEB_TRUNC_MASK 0x00F00000
-#define ET_MAC_HDX_COLLWIN_SHIFT 0
-#define ET_MAC_HDX_REXMIT_MAX_SHIFT 12
-#define ET_MAC_HDX_ALT_BEB_TRUNC_SHIFT 20
-
-#define ET_MAX_FRMLEN 0x5010
-
-#define ET_MII_CFG 0x5020
-#define ET_MII_CFG_CLKRST 0x00000007
-#define ET_MII_CFG_PREAMBLE_SUP 0x00000010
-#define ET_MII_CFG_SCAN_AUTOINC 0x00000020
-#define ET_MII_CFG_RST 0x80000000
-
-#define ET_MII_CMD 0x5024
-#define ET_MII_CMD_READ 0x00000001
-
-#define ET_MII_ADDR 0x5028
-#define ET_MII_ADDR_REG_MASK 0x0000001F
-#define ET_MII_ADDR_PHY_MASK 0x00001F00
-#define ET_MII_ADDR_REG_SHIFT 0
-#define ET_MII_ADDR_PHY_SHIFT 8
-
-#define ET_MII_CTRL 0x502c
-#define ET_MII_CTRL_VALUE_MASK 0x0000FFFF
-#define ET_MII_CTRL_VALUE_SHIFT 0
-
-#define ET_MII_STAT 0x5030
-#define ET_MII_STAT_VALUE_MASK 0x0000FFFF
-
-#define ET_MII_IND 0x5034
-#define ET_MII_IND_BUSY 0x00000001
-#define ET_MII_IND_INVALID 0x00000004
-
-#define ET_MAC_CTRL 0x5038
-#define ET_MAC_CTRL_MODE_MII 0x01000000
-#define ET_MAC_CTRL_LHDX 0x02000000
-#define ET_MAC_CTRL_GHDX 0x04000000
-
-#define ET_MAC_ADDR1 0x5040
-#define ET_MAC_ADDR2 0x5044
-
-#define ET_MMC_CTRL 0x7000
-#define ET_MMC_CTRL_ENABLE 0x00000001
-#define ET_MMC_CTRL_ARB_DISABLE 0x00000002
-#define ET_MMC_CTRL_RXMAC_DISABLE 0x00000004
-#define ET_MMC_CTRL_TXMAC_DISABLE 0x00000008
-#define ET_MMC_CTRL_TXDMA_DISABLE 0x00000010
-#define ET_MMC_CTRL_RXDMA_DISABLE 0x00000020
-#define ET_MMC_CTRL_FORCE_CE 0x00000040
+#define ET_TXQUEUE_START 0x0000
+#define ET_TXQUEUE_END 0x0004
+#define ET_RXQUEUE_START 0x0008
+#define ET_RXQUEUE_END 0x000C
+#define ET_QUEUE_ADDR(addr) (((addr) / ET_MEM_UNIT) - 1)
+#define ET_QUEUE_ADDR_START 0
+#define ET_QUEUE_ADDR_END ET_QUEUE_ADDR(ET_MEM_SIZE)
+
+#define ET_PM 0x0010
+#define EM_PM_GIGEPHY_ENB 0x00000001
+#define ET_PM_SYSCLK_GATE 0x00000008
+#define ET_PM_TXCLK_GATE 0x00000010
+#define ET_PM_RXCLK_GATE 0x00000020
+#define ET_PM_PHY_SW_COMA 0x00000040
+
+#define ET_INTR_STATUS 0x0018
+#define ET_INTR_MASK 0x001C
+
+#define ET_SWRST 0x0028
+#define ET_SWRST_TXDMA 0x00000001
+#define ET_SWRST_RXDMA 0x00000002
+#define ET_SWRST_TXMAC 0x00000004
+#define ET_SWRST_RXMAC 0x00000008
+#define ET_SWRST_MAC 0x00000010
+#define ET_SWRST_MAC_STAT 0x00000020
+#define ET_SWRST_MMC 0x00000040
+#define ET_SWRST_SELFCLR_DISABLE 0x80000000
+
+#define ET_MSI_CFG 0x0030
+
+#define ET_LOOPBACK 0x0034
+
+#define ET_TIMER 0x0038
+
+#define ET_TXDMA_CTRL 0x1000
+#define ET_TXDMA_CTRL_HALT 0x00000001
+#define ET_TXDMA_CTRL_CACHE_THR_MASK 0x000000F0
+#define ET_TXDMA_CTRL_SINGLE_EPKT 0x00000100 /* ??? */
+
+#define ET_TX_RING_HI 0x1004
+#define ET_TX_RING_LO 0x1008
+#define ET_TX_RING_CNT 0x100C
+
+#define ET_TX_STATUS_HI 0x101C
+#define ET_TX_STATUS_LO 0x1020
+
+#define ET_TX_READY_POS 0x1024
+#define ET_TX_READY_POS_INDEX_MASK 0x000003FF
+#define ET_TX_READY_POS_WRAP 0x00000400
+
+#define ET_TX_DONE_POS 0x1060
+#define ET_TX_DONE_POS_INDEX_MASK 0x0000003FF
+#define ET_TX_DONE_POS_WRAP 0x000000400
+
+#define ET_RXDMA_CTRL 0x2000
+#define ET_RXDMA_CTRL_HALT 0x00000001
+#define ET_RXDMA_CTRL_RING0_SIZE_MASK 0x00000300
+#define ET_RXDMA_CTRL_RING0_128 0x00000000 /* 127 */
+#define ET_RXDMA_CTRL_RING0_256 0x00000100 /* 255 */
+#define ET_RXDMA_CTRL_RING0_512 0x00000200 /* 511 */
+#define ET_RXDMA_CTRL_RING0_1024 0x00000300 /* 1023 */
+#define ET_RXDMA_CTRL_RING0_ENABLE 0x00000400
+#define ET_RXDMA_CTRL_RING1_SIZE_MASK 0x00001800
+#define ET_RXDMA_CTRL_RING1_2048 0x00000000 /* 2047 */
+#define ET_RXDMA_CTRL_RING1_4096 0x00000800 /* 4095 */
+#define ET_RXDMA_CTRL_RING1_8192 0x00001000 /* 8191 */
+#define ET_RXDMA_CTRL_RING1_16384 0x00001800 /* 16383 (9022?) */
+#define ET_RXDMA_CTRL_RING1_ENABLE 0x00002000
+#define ET_RXDMA_CTRL_HALTED 0x00020000
+
+#define ET_RX_STATUS_LO 0x2004
+#define ET_RX_STATUS_HI 0x2008
+
+#define ET_RX_INTR_NPKTS 0x200C
+#define ET_RX_INTR_DELAY 0x2010
+
+#define ET_RXSTAT_LO 0x2020
+#define ET_RXSTAT_HI 0x2024
+#define ET_RXSTAT_CNT 0x2028
+
+#define ET_RXSTAT_POS 0x2030
+#define ET_RXSTAT_POS_INDEX_MASK 0x00000FFF
+#define ET_RXSTAT_POS_WRAP 0x00001000
+
+#define ET_RXSTAT_MINCNT 0x2038
+
+#define ET_RX_RING0_LO 0x203C
+#define ET_RX_RING0_HI 0x2040
+#define ET_RX_RING0_CNT 0x2044
+
+#define ET_RX_RING0_POS 0x204C
+#define ET_RX_RING0_POS_INDEX_MASK 0x000003FF
+#define ET_RX_RING0_POS_WRAP 0x00000400
+
+#define ET_RX_RING0_MINCNT 0x2054
+
+#define ET_RX_RING1_LO 0x2058
+#define ET_RX_RING1_HI 0x205C
+#define ET_RX_RING1_CNT 0x2060
+
+#define ET_RX_RING1_POS 0x2068
+#define ET_RX_RING1_POS_INDEX 0x000003FF
+#define ET_RX_RING1_POS_WRAP 0x00000400
+
+#define ET_RX_RING1_MINCNT 0x2070
+
+#define ET_TXMAC_CTRL 0x3000
+#define ET_TXMAC_CTRL_ENABLE 0x00000001
+#define ET_TXMAC_CTRL_FC_DISABLE 0x00000008
+
+#define ET_TXMAC_FLOWCTRL 0x3010
+#define ET_TXMAC_FLOWCTRL_CFPT_MASK 0x0000FFFF
+#define ET_TXMAC_FLOWCTRL_CFEP_MASK 0xFFFF0000
+#define ET_TXMAC_FLOWCTRL_CFPT_SHIFT 0
+
+#define ET_TXMAC_BP_CTRL 0x3020
+#define ET_TXMAC_BP_CTRL_XONXOFF 0x00000001
+#define ET_TXMAC_BP_CTRL_REQ 0x00000002
+
+#define ET_RXMAC_CTRL 0x4000
+#define ET_RXMAC_CTRL_ENABLE 0x00000001
+#define ET_RXMAC_CTRL_NO_PKTFILT 0x00000004
+#define ET_RXMAC_CTRL_WOL_DISABLE 0x00000008
+
+#define ET_WOL_CRC 0x4004
+#define ET_WOL_SA_LO 0x4010
+#define ET_WOL_SA_HI 0x4014
+#define ET_WOL_MASK 0x4018
+
+#define ET_UCAST_FILTADDR1 0x4068
+#define ET_UCAST_FILTADDR2 0x406C
+#define ET_UCAST_FILTADDR3 0x4070
+
+#define ET_MULTI_HASH 0x4074
+
+#define ET_PKTFILT 0x4084
+#define ET_PKTFILT_BCAST 0x00000001
+#define ET_PKTFILT_MCAST 0x00000002
+#define ET_PKTFILT_UCAST 0x00000004
+#define ET_PKTFILT_FRAG 0x00000008
+#define ET_PKTFILT_MINLEN_MASK 0x007F0000
+#define ET_PKTFILT_MINLEN_SHIFT 16
+
+#define ET_RXMAC_MC_SEGSZ 0x4088
+#define ET_RXMAC_MC_SEGSZ_ENABLE 0x00000001
+#define ET_RXMAC_MC_SEGSZ_FC 0x00000002
+#define ET_RXMAC_MC_SEGSZ_MAX_MASK 0x000003FC
+#define ET_RXMAC_SEGSZ(segsz) ((segsz) / ET_MEM_UNIT)
+#define ET_RXMAC_CUT_THRU_FRMLEN 8074
+
+#define ET_RXMAC_MC_WATERMARK 0x408C
+#define ET_RXMAC_SPACE_AVL 0x4094
+
+#define ET_RXMAC_MGT 0x4098
+#define ET_RXMAC_MGT_PASS_ECRC 0x00000010
+#define ET_RXMAC_MGT_PASS_ELEN 0x00000020
+#define ET_RXMAC_MGT_PASS_ETRUNC 0x00010000
+#define ET_RXMAC_MGT_CHECK_PKT 0x00020000
+
+#define ET_MAC_CFG1 0x5000
+#define ET_MAC_CFG1_TXEN 0x00000001
+#define ET_MAC_CFG1_SYNC_TXEN 0x00000002
+#define ET_MAC_CFG1_RXEN 0x00000004
+#define ET_MAC_CFG1_SYNC_RXEN 0x00000008
+#define ET_MAC_CFG1_TXFLOW 0x00000010
+#define ET_MAC_CFG1_RXFLOW 0x00000020
+#define ET_MAC_CFG1_LOOPBACK 0x00000100
+#define ET_MAC_CFG1_RST_TXFUNC 0x00010000
+#define ET_MAC_CFG1_RST_RXFUNC 0x00020000
+#define ET_MAC_CFG1_RST_TXMC 0x00040000
+#define ET_MAC_CFG1_RST_RXMC 0x00080000
+#define ET_MAC_CFG1_SIM_RST 0x40000000
+#define ET_MAC_CFG1_SOFT_RST 0x80000000
+
+#define ET_MAC_CFG2 0x5004
+#define ET_MAC_CFG2_FDX 0x00000001
+#define ET_MAC_CFG2_CRC 0x00000002
+#define ET_MAC_CFG2_PADCRC 0x00000004
+#define ET_MAC_CFG2_LENCHK 0x00000010
+#define ET_MAC_CFG2_BIGFRM 0x00000020
+#define ET_MAC_CFG2_MODE_MII 0x00000100
+#define ET_MAC_CFG2_MODE_GMII 0x00000200
+#define ET_MAC_CFG2_PREAMBLE_LEN_MASK 0x0000F000
+#define ET_MAC_CFG2_PREAMBLE_LEN_SHIFT 12
+
+#define ET_IPG 0x5008
+#define ET_IPG_B2B_MASK 0x0000007F
+#define ET_IPG_MINIFG_MASK 0x0000FF00
+#define ET_IPG_NONB2B_2_MASK 0x007F0000
+#define ET_IPG_NONB2B_1_MASK 0x7F000000
+#define ET_IPG_B2B_SHIFT 0
+#define ET_IPG_MINIFG_SHIFT 8
+#define ET_IPG_NONB2B_2_SHIFT 16
+#define ET_IPG_NONB2B_1_SHIFT 24
+
+#define ET_MAC_HDX 0x500C
+#define ET_MAC_HDX_COLLWIN_MASK 0x000003FF
+#define ET_MAC_HDX_REXMIT_MAX_MASK 0x0000F000
+#define ET_MAC_HDX_EXC_DEFER 0x00010000
+#define ET_MAC_HDX_NOBACKOFF 0x00020000
+#define ET_MAC_HDX_BP_NOBACKOFF 0x00040000
+#define ET_MAC_HDX_ALT_BEB 0x00080000
+#define ET_MAC_HDX_ALT_BEB_TRUNC_MASK 0x00F00000
+#define ET_MAC_HDX_COLLWIN_SHIFT 0
+#define ET_MAC_HDX_REXMIT_MAX_SHIFT 12
+#define ET_MAC_HDX_ALT_BEB_TRUNC_SHIFT 20
+
+#define ET_MAX_FRMLEN 0x5010
+
+#define ET_MII_CFG 0x5020
+#define ET_MII_CFG_CLKRST 0x00000007
+#define ET_MII_CFG_PREAMBLE_SUP 0x00000010
+#define ET_MII_CFG_SCAN_AUTOINC 0x00000020
+#define ET_MII_CFG_RST 0x80000000
+
+#define ET_MII_CMD 0x5024
+#define ET_MII_CMD_READ 0x00000001
+
+#define ET_MII_ADDR 0x5028
+#define ET_MII_ADDR_REG_MASK 0x0000001F
+#define ET_MII_ADDR_PHY_MASK 0x00001F00
+#define ET_MII_ADDR_REG_SHIFT 0
+#define ET_MII_ADDR_PHY_SHIFT 8
+
+#define ET_MII_CTRL 0x502C
+#define ET_MII_CTRL_VALUE_MASK 0x0000FFFF
+#define ET_MII_CTRL_VALUE_SHIFT 0
+
+#define ET_MII_STAT 0x5030
+#define ET_MII_STAT_VALUE_MASK 0x0000FFFF
+
+#define ET_MII_IND 0x5034
+#define ET_MII_IND_BUSY 0x00000001
+#define ET_MII_IND_INVALID 0x00000004
+
+#define ET_MAC_CTRL 0x5038
+#define ET_MAC_CTRL_MODE_MII 0x01000000
+#define ET_MAC_CTRL_LHDX 0x02000000
+#define ET_MAC_CTRL_GHDX 0x04000000
+
+#define ET_MAC_ADDR1 0x5040
+#define ET_MAC_ADDR2 0x5044
+
+/* MAC statistics counters. */
+#define ET_STAT_PKTS_64 0x6080
+#define ET_STAT_PKTS_65_127 0x6084
+#define ET_STAT_PKTS_128_255 0x6088
+#define ET_STAT_PKTS_256_511 0x608C
+#define ET_STAT_PKTS_512_1023 0x6090
+#define ET_STAT_PKTS_1024_1518 0x6094
+#define ET_STAT_PKTS_1519_1522 0x6098
+#define ET_STAT_RX_BYTES 0x609C
+#define ET_STAT_RX_FRAMES 0x60A0
+#define ET_STAT_RX_CRC_ERR 0x60A4
+#define ET_STAT_RX_MCAST 0x60A8
+#define ET_STAT_RX_BCAST 0x60AC
+#define ET_STAT_RX_CTL 0x60B0
+#define ET_STAT_RX_PAUSE 0x60B4
+#define ET_STAT_RX_UNKNOWN_CTL 0x60B8
+#define ET_STAT_RX_ALIGN_ERR 0x60BC
+#define ET_STAT_RX_LEN_ERR 0x60C0
+#define ET_STAT_RX_CODE_ERR 0x60C4
+#define ET_STAT_RX_CS_ERR 0x60C8
+#define ET_STAT_RX_RUNT 0x60CC
+#define ET_STAT_RX_OVERSIZE 0x60D0
+#define ET_STAT_RX_FRAG 0x60D4
+#define ET_STAT_RX_JABBER 0x60D8
+#define ET_STAT_RX_DROP 0x60DC
+#define ET_STAT_TX_BYTES 0x60E0
+#define ET_STAT_TX_FRAMES 0x60E4
+#define ET_STAT_TX_MCAST 0x60E8
+#define ET_STAT_TX_BCAST 0x60EC
+#define ET_STAT_TX_PAUSE 0x60F0
+#define ET_STAT_TX_DEFER 0x60F4
+#define ET_STAT_TX_EXCESS_DEFER 0x60F8
+#define ET_STAT_TX_SINGLE_COL 0x60FC
+#define ET_STAT_TX_MULTI_COL 0x6100
+#define ET_STAT_TX_LATE_COL 0x6104
+#define ET_STAT_TX_EXCESS_COL 0x6108
+#define ET_STAT_TX_TOTAL_COL 0x610C
+#define ET_STAT_TX_PAUSE_HONOR 0x6110
+#define ET_STAT_TX_DROP 0x6114
+#define ET_STAT_TX_JABBER 0x6118
+#define ET_STAT_TX_CRC_ERR 0x611C
+#define ET_STAT_TX_CTL 0x6120
+#define ET_STAT_TX_OVERSIZE 0x6124
+#define ET_STAT_TX_UNDERSIZE 0x6128
+#define ET_STAT_TX_FRAG 0x612C
+
+#define ET_MMC_CTRL 0x7000
+#define ET_MMC_CTRL_ENABLE 0x00000001
+#define ET_MMC_CTRL_ARB_DISABLE 0x00000002
+#define ET_MMC_CTRL_RXMAC_DISABLE 0x00000004
+#define ET_MMC_CTRL_TXMAC_DISABLE 0x00000008
+#define ET_MMC_CTRL_TXDMA_DISABLE 0x00000010
+#define ET_MMC_CTRL_RXDMA_DISABLE 0x00000020
+#define ET_MMC_CTRL_FORCE_CE 0x00000040
/*
* Interrupts
*/
-#define ET_INTR_TXEOF 0x00000008
-#define ET_INTR_TXDMA_ERROR 0x00000010
-#define ET_INTR_RXEOF 0x00000020
-#define ET_INTR_RXRING0_LOW 0x00000040
-#define ET_INTR_RXRING1_LOW 0x00000080
-#define ET_INTR_RXSTAT_LOW 0x00000100
-#define ET_INTR_RXDMA_ERROR 0x00000200
-#define ET_INTR_TIMER 0x00004000
-#define ET_INTR_WOL 0x00008000
-#define ET_INTR_PHY 0x00010000
-#define ET_INTR_TXMAC 0x00020000
-#define ET_INTR_RXMAC 0x00040000
-#define ET_INTR_MAC_STATS 0x00080000
-#define ET_INTR_SLAVE_TO 0x00100000
-
-#define ET_INTRS (ET_INTR_TXEOF | \
- ET_INTR_RXEOF | \
- ET_INTR_TIMER)
+#define ET_INTR_TXDMA 0x00000008
+#define ET_INTR_TXDMA_ERROR 0x00000010
+#define ET_INTR_RXDMA 0x00000020
+#define ET_INTR_RXRING0_LOW 0x00000040
+#define ET_INTR_RXRING1_LOW 0x00000080
+#define ET_INTR_RXSTAT_LOW 0x00000100
+#define ET_INTR_RXDMA_ERROR 0x00000200
+#define ET_INTR_TIMER 0x00004000
+#define ET_INTR_WOL 0x00008000
+#define ET_INTR_PHY 0x00010000
+#define ET_INTR_TXMAC 0x00020000
+#define ET_INTR_RXMAC 0x00040000
+#define ET_INTR_MAC_STATS 0x00080000
+#define ET_INTR_SLAVE_TO 0x00100000
+
+#define ET_INTRS \
+ (ET_INTR_TXDMA | ET_INTR_RXDMA | ET_INTR_TIMER | \
+ ET_INTR_TXDMA_ERROR | ET_INTR_RXDMA_ERROR)
/*
* RX ring position uses same layout
*/
-#define ET_RX_RING_POS_INDEX_MASK 0x000003FF
-#define ET_RX_RING_POS_WRAP 0x00000400
+#define ET_RX_RING_POS_INDEX_MASK 0x000003FF
+#define ET_RX_RING_POS_WRAP 0x00000400
/*
* PCI IDs
*/
-#define PCI_VENDOR_LUCENT 0x11c1
-#define PCI_PRODUCT_LUCENT_ET1310 0xed00 /* ET1310 10/100/1000M Ethernet */
-#define PCI_PRODUCT_LUCENT_ET1310_FAST 0xed01 /* ET1310 10/100M Ethernet */
+#define PCI_VENDOR_LUCENT 0x11C1
+#define PCI_PRODUCT_LUCENT_ET1310 0xED00 /* ET1310 10/100/1000M Ethernet */
+#define PCI_PRODUCT_LUCENT_ET1310_FAST 0xED01 /* ET1310 10/100M Ethernet */
#endif /* !_IF_ETREG_H */
diff --git a/sys/dev/et/if_etvar.h b/sys/dev/et/if_etvar.h
index cc2ebcf..e2e30ea 100644
--- a/sys/dev/et/if_etvar.h
+++ b/sys/dev/et/if_etvar.h
@@ -38,66 +38,39 @@
#ifndef _IF_ETVAR_H
#define _IF_ETVAR_H
-/* DragonFly compatibility */
-#define EVL_ENCAPLEN ETHER_VLAN_ENCAP_LEN
+#define ET_RING_ALIGN 4096
+#define ET_STATUS_ALIGN 8
+#define ET_NSEG_MAX 32 /* XXX no limit actually */
+#define ET_NSEG_SPARE 4
-/*
- * Allocate the right type of mbuf for the desired total length.
- */
-static __inline struct mbuf *
-m_getl(int len, int how, int type, int flags, int *psize)
-{
- struct mbuf *m;
- int size;
-
- if (len >= MINCLSIZE) {
- m = m_getcl(how, type, flags);
- size = MCLBYTES;
- } else if (flags & M_PKTHDR) {
- m = m_gethdr(how, type);
- size = MHLEN;
- } else {
- m = m_get(how, type);
- size = MLEN;
- }
- if (psize != NULL)
- *psize = size;
- return (m);
-}
-
-
-#define ET_ALIGN 0x1000
-#define ET_NSEG_MAX 32 /* XXX no limit actually */
-#define ET_NSEG_SPARE 8
-
-#define ET_TX_NDESC 512
-#define ET_RX_NDESC 512
-#define ET_RX_NRING 2
-#define ET_RX_NSTAT (ET_RX_NRING * ET_RX_NDESC)
-
-#define ET_TX_RING_SIZE (ET_TX_NDESC * sizeof(struct et_txdesc))
-#define ET_RX_RING_SIZE (ET_RX_NDESC * sizeof(struct et_rxdesc))
-#define ET_RXSTAT_RING_SIZE (ET_RX_NSTAT * sizeof(struct et_rxstat))
-
-#define ET_JUMBO_FRAMELEN (ET_MEM_SIZE - ET_MEM_RXSIZE_MIN - \
+#define ET_TX_NDESC 512
+#define ET_RX_NDESC 512
+#define ET_RX_NRING 2
+#define ET_RX_NSTAT (ET_RX_NRING * ET_RX_NDESC)
+
+#define ET_TX_RING_SIZE (ET_TX_NDESC * sizeof(struct et_txdesc))
+#define ET_RX_RING_SIZE (ET_RX_NDESC * sizeof(struct et_rxdesc))
+#define ET_RXSTAT_RING_SIZE (ET_RX_NSTAT * sizeof(struct et_rxstat))
+
+#define ET_JUMBO_FRAMELEN (ET_MEM_SIZE - ET_MEM_RXSIZE_MIN - \
ET_MEM_TXSIZE_EX)
-#define ET_JUMBO_MTU (ET_JUMBO_FRAMELEN - ETHER_HDR_LEN - \
+#define ET_JUMBO_MTU (ET_JUMBO_FRAMELEN - ETHER_HDR_LEN - \
EVL_ENCAPLEN - ETHER_CRC_LEN)
-#define ET_FRAMELEN(mtu) (ETHER_HDR_LEN + EVL_ENCAPLEN + (mtu) + \
- ETHER_CRC_LEN)
+#define ET_FRAMELEN(mtu) (ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN + \
+ (mtu) + ETHER_CRC_LEN)
-#define ET_JSLOTS (ET_RX_NDESC + 128)
-#define ET_JLEN (ET_JUMBO_FRAMELEN + ETHER_ALIGN)
-#define ET_JUMBO_MEM_SIZE (ET_JSLOTS * ET_JLEN)
+#define ET_JSLOTS (ET_RX_NDESC + 128)
+#define ET_JLEN (ET_JUMBO_FRAMELEN + ETHER_ALIGN)
+#define ET_JUMBO_MEM_SIZE (ET_JSLOTS * ET_JLEN)
-#define CSR_WRITE_4(sc, reg, val) \
+#define CSR_WRITE_4(sc, reg, val) \
bus_write_4((sc)->sc_mem_res, (reg), (val))
-#define CSR_READ_4(sc, reg) \
+#define CSR_READ_4(sc, reg) \
bus_read_4((sc)->sc_mem_res, (reg))
-#define ET_ADDR_HI(addr) ((uint64_t) (addr) >> 32)
-#define ET_ADDR_LO(addr) ((uint64_t) (addr) & 0xffffffff)
+#define ET_ADDR_HI(addr) ((uint64_t) (addr) >> 32)
+#define ET_ADDR_LO(addr) ((uint64_t) (addr) & 0xffffffff)
struct et_txdesc {
uint32_t td_addr_hi;
@@ -106,23 +79,23 @@ struct et_txdesc {
uint32_t td_ctrl2; /* ET_TDCTRL2_ */
};
-#define ET_TDCTRL1_LEN_MASK 0x0000FFFF
-
-#define ET_TDCTRL2_LAST_FRAG 0x00000001
-#define ET_TDCTRL2_FIRST_FRAG 0x00000002
-#define ET_TDCTRL2_INTR 0x00000004
-#define ET_TDCTRL2_CTRL_WORD 0x00000008
-#define ET_TDCTRL2_HDX_BACKP 0x00000010
-#define ET_TDCTRL2_XMIT_PAUSE 0x00000020
-#define ET_TDCTRL2_FRAME_ERR 0x00000040
-#define ET_TDCTRL2_NO_CRC 0x00000080
-#define ET_TDCTRL2_MAC_OVRRD 0x00000100
-#define ET_TDCTRL2_PAD_PACKET 0x00000200
-#define ET_TDCTRL2_JUMBO_PACKET 0x00000400
-#define ET_TDCTRL2_INS_VLAN 0x00000800
-#define ET_TDCTRL2_CSUM_IP 0x00001000
-#define ET_TDCTRL2_CSUM_TCP 0x00002000
-#define ET_TDCTRL2_CSUM_UDP 0x00004000
+#define ET_TDCTRL1_LEN_MASK 0x0000FFFF
+
+#define ET_TDCTRL2_LAST_FRAG 0x00000001
+#define ET_TDCTRL2_FIRST_FRAG 0x00000002
+#define ET_TDCTRL2_INTR 0x00000004
+#define ET_TDCTRL2_CTRL_WORD 0x00000008
+#define ET_TDCTRL2_HDX_BACKP 0x00000010
+#define ET_TDCTRL2_XMIT_PAUSE 0x00000020
+#define ET_TDCTRL2_FRAME_ERR 0x00000040
+#define ET_TDCTRL2_NO_CRC 0x00000080
+#define ET_TDCTRL2_MAC_OVRRD 0x00000100
+#define ET_TDCTRL2_PAD_PACKET 0x00000200
+#define ET_TDCTRL2_JUMBO_PACKET 0x00000400
+#define ET_TDCTRL2_INS_VLAN 0x00000800
+#define ET_TDCTRL2_CSUM_IP 0x00001000
+#define ET_TDCTRL2_CSUM_TCP 0x00002000
+#define ET_TDCTRL2_CSUM_UDP 0x00004000
struct et_rxdesc {
uint32_t rd_addr_lo;
@@ -130,33 +103,56 @@ struct et_rxdesc {
uint32_t rd_ctrl; /* ET_RDCTRL_ */
};
-#define ET_RDCTRL_BUFIDX_MASK 0x000003FF
+#define ET_RDCTRL_BUFIDX_MASK 0x000003FF
struct et_rxstat {
uint32_t rxst_info1;
uint32_t rxst_info2; /* ET_RXST_INFO2_ */
};
-#define ET_RXST_INFO2_LEN_MASK 0x0000FFFF
-#define ET_RXST_INFO2_LEN_SHIFT 0
-#define ET_RXST_INFO2_BUFIDX_MASK 0x03FF0000
-#define ET_RXST_INFO2_BUFIDX_SHIFT 16
-#define ET_RXST_INFO2_RINGIDX_MASK 0x0C000000
-#define ET_RXST_INFO2_RINGIDX_SHIFT 26
+#define ET_RXST_INFO1_HASH_PASS 0x00000001
+#define ET_RXST_INFO1_IPCSUM 0x00000002
+#define ET_RXST_INFO1_IPCSUM_OK 0x00000004
+#define ET_RXST_INFO1_TCPCSUM 0x00000008
+#define ET_RXST_INFO1_TCPCSUM_OK 0x00000010
+#define ET_RXST_INFO1_WOL 0x00000020
+#define ET_RXST_INFO1_RXMAC_ERR 0x00000040
+#define ET_RXST_INFO1_DROP 0x00000080
+#define ET_RXST_INFO1_FRAME_TRUNC 0x00000100
+#define ET_RXST_INFO1_JUMBO 0x00000200
+#define ET_RXST_INFO1_VLAN 0x00000400
+#define ET_RXST_INFO1_PREV_FRMAE_DROP 0x00010000
+#define ET_RXST_INFO1_SHORT 0x00020000
+#define ET_RXST_INFO1_BAD_CARRIER 0x00040000
+#define ET_RXST_INFO1_CODE_ERR 0x00080000
+#define ET_RXST_INFO1_CRC_ERR 0x00100000
+#define ET_RXST_INFO1_LEN_MISMATCH 0x00200000
+#define ET_RXST_INFO1_TOO_LONG 0x00400000
+#define ET_RXST_INFO1_OK 0x00800000
+#define ET_RXST_INFO1_MULTICAST 0x01000000
+#define ET_RXST_INFO1_BROADCAST 0x02000000
+#define ET_RXST_INFO1_DRIBBLE 0x04000000
+#define ET_RXST_INFO1_CTL_FRAME 0x08000000
+#define ET_RXST_INFO1_PAUSE_FRAME 0x10000000
+#define ET_RXST_INFO1_UNKWN_CTL_FRAME 0x20000000
+#define ET_RXST_INFO1_VLAN_TAG 0x40000000
+#define ET_RXST_INFO1_LONG_EVENT 0x80000000
+
+#define ET_RXST_INFO2_LEN_MASK 0x0000FFFF
+#define ET_RXST_INFO2_LEN_SHIFT 0
+#define ET_RXST_INFO2_BUFIDX_MASK 0x03FF0000
+#define ET_RXST_INFO2_BUFIDX_SHIFT 16
+#define ET_RXST_INFO2_RINGIDX_MASK 0x0C000000
+#define ET_RXST_INFO2_RINGIDX_SHIFT 26
struct et_rxstatus {
uint32_t rxs_ring;
uint32_t rxs_stat_ring; /* ET_RXS_STATRING_ */
};
-#define ET_RXS_STATRING_INDEX_MASK 0x0FFF0000
-#define ET_RXS_STATRING_INDEX_SHIFT 16
-#define ET_RXS_STATRING_WRAP 0x10000000
-
-struct et_dmamap_ctx {
- int nsegs;
- bus_dma_segment_t *segs;
-};
+#define ET_RXS_STATRING_INDEX_MASK 0x0FFF0000
+#define ET_RXS_STATRING_INDEX_SHIFT 16
+#define ET_RXS_STATRING_WRAP 0x10000000
struct et_txbuf {
struct mbuf *tb_mbuf;
@@ -166,7 +162,6 @@ struct et_txbuf {
struct et_rxbuf {
struct mbuf *rb_mbuf;
bus_dmamap_t rb_dmap;
- bus_addr_t rb_paddr;
};
struct et_txstatus_data {
@@ -224,7 +219,6 @@ struct et_txbuf_data {
struct et_softc;
struct et_rxbuf_data;
-typedef int (*et_newbuf_t)(struct et_rxbuf_data *, int, int);
struct et_rxbuf_data {
struct et_rxbuf rbd_buf[ET_RX_NDESC];
@@ -233,7 +227,58 @@ struct et_rxbuf_data {
struct et_rxdesc_ring *rbd_ring;
int rbd_bufsize;
- et_newbuf_t rbd_newbuf;
+ int (*rbd_newbuf)(struct et_rxbuf_data *, int);
+ void (*rbd_discard)(struct et_rxbuf_data *, int);
+};
+
+struct et_hw_stats {
+ /* RX/TX stats. */
+ uint64_t pkts_64;
+ uint64_t pkts_65;
+ uint64_t pkts_128;
+ uint64_t pkts_256;
+ uint64_t pkts_512;
+ uint64_t pkts_1024;
+ uint64_t pkts_1519;
+ /* RX stats. */
+ uint64_t rx_bytes;
+ uint64_t rx_frames;
+ uint32_t rx_crcerrs;
+ uint64_t rx_mcast;
+ uint64_t rx_bcast;
+ uint32_t rx_control;
+ uint32_t rx_pause;
+ uint32_t rx_unknown_control;
+ uint32_t rx_alignerrs;
+ uint32_t rx_lenerrs;
+ uint32_t rx_codeerrs;
+ uint32_t rx_cserrs;
+ uint32_t rx_runts;
+ uint64_t rx_oversize;
+ uint32_t rx_fragments;
+ uint32_t rx_jabbers;
+ uint32_t rx_drop;
+ /* TX stats. */
+ uint64_t tx_bytes;
+ uint64_t tx_frames;
+ uint64_t tx_mcast;
+ uint64_t tx_bcast;
+ uint32_t tx_pause;
+ uint32_t tx_deferred;
+ uint32_t tx_excess_deferred;
+ uint32_t tx_single_colls;
+ uint32_t tx_multi_colls;
+ uint32_t tx_late_colls;
+ uint32_t tx_excess_colls;
+ uint32_t tx_total_colls;
+ uint32_t tx_pause_honored;
+ uint32_t tx_drop;
+ uint32_t tx_jabbers;
+ uint32_t tx_crcerrs;
+ uint32_t tx_control;
+ uint64_t tx_oversize;
+ uint32_t tx_undersize;
+ uint32_t tx_fragments;
};
struct et_softc {
@@ -245,7 +290,6 @@ struct et_softc {
struct resource *sc_irq_res;
struct resource *sc_mem_res;
- struct arpcom arpcom;
int sc_if_flags;
uint32_t sc_flags; /* ET_FLAG_ */
int sc_expcap;
@@ -268,10 +312,15 @@ struct et_softc {
struct et_txstatus_data sc_tx_status;
bus_dma_tag_t sc_mbuf_dtag;
- bus_dmamap_t sc_mbuf_tmp_dmap;
+ bus_dma_tag_t sc_rx_mini_tag;
+ bus_dmamap_t sc_rx_mini_sparemap;
+ bus_dma_tag_t sc_rx_tag;
+ bus_dmamap_t sc_rx_sparemap;
+ bus_dma_tag_t sc_tx_tag;
struct et_rxbuf_data sc_rx_data[ET_RX_NRING];
struct et_txbuf_data sc_tx_data;
+ struct et_hw_stats sc_stats;
uint32_t sc_tx;
uint32_t sc_tx_intr;
@@ -284,13 +333,15 @@ struct et_softc {
uint32_t sc_timer;
};
-#define ET_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)
-#define ET_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx)
-#define ET_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->sc_mtx, MA_OWNED)
+#define ET_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)
+#define ET_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx)
+#define ET_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->sc_mtx, MA_OWNED)
-#define ET_FLAG_PCIE 0x0001
-#define ET_FLAG_MSI 0x0002
-#define ET_FLAG_TXRX_ENABLED 0x0100
-#define ET_FLAG_JUMBO 0x0200
+#define ET_FLAG_PCIE 0x0001
+#define ET_FLAG_MSI 0x0002
+#define ET_FLAG_FASTETHER 0x0004
+#define ET_FLAG_TXRX_ENABLED 0x0100
+#define ET_FLAG_JUMBO 0x0200
+#define ET_FLAG_LINK 0x8000
#endif /* !_IF_ETVAR_H */
diff --git a/sys/dev/fb/fb.c b/sys/dev/fb/fb.c
index b201d29..183e20c 100644
--- a/sys/dev/fb/fb.c
+++ b/sys/dev/fb/fb.c
@@ -315,8 +315,7 @@ static device_method_t fb_methods[] = {
DEVMETHOD(device_probe, fbprobe),
DEVMETHOD(device_attach, fbattach),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t fb_driver = {
diff --git a/sys/dev/fb/splash_txt.c b/sys/dev/fb/splash_txt.c
new file mode 100644
index 0000000..7bd9ff9
--- /dev/null
+++ b/sys/dev/fb/splash_txt.c
@@ -0,0 +1,135 @@
+/*-
+ * Copyright (c) 1999 Michael Smith <msmith@freebsd.org>
+ * Copyright (c) 1999 Kazutaka YOKOTA <yokota@freebsd.org>
+ * Copyright (c) 2005 Antony Mawer <antony@mawer.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/module.h>
+#include <sys/kernel.h>
+#include <sys/consio.h>
+#include <sys/fbio.h>
+
+#include <machine/pc/display.h>
+
+#include <dev/fb/fbreg.h>
+#include <dev/fb/splashreg.h>
+#include <dev/syscons/syscons.h>
+
+static int splash_on = FALSE;
+
+static int txt_init(video_adapter_t *adp);
+static int txt_end(video_adapter_t *adp);
+static int txt_splash(video_adapter_t * adp, const int on);
+
+/* These are rows by columns of the text-mode display device. */
+#define BIN_IMAGE_WIDTH 80
+#define BIN_IMAGE_HEIGHT 25
+
+static splash_decoder_t txt_decoder = {
+ .name = "splash_txt",
+ .init = txt_init,
+ .term = txt_end,
+ .splash = txt_splash,
+ .data_type = SPLASH_IMAGE,
+};
+
+SPLASH_DECODER(splash_txt, txt_decoder);
+
+static void
+draw_text_splash(sc_softc_t *sc)
+{
+ u_int x, y;
+ u_char ch, attr;
+ u_char *pdata = txt_decoder.data;
+
+ /* Init failed. */
+ if (txt_decoder.data == NULL)
+ return;
+ for (y = 0; y < BIN_IMAGE_HEIGHT; y++) {
+ for (x = 0; x < BIN_IMAGE_WIDTH; x++) {
+ ch = *pdata++;
+ attr = *pdata++;
+ sc_vtb_putc(&sc->cur_scp->scr,
+ (y * sc->cur_scp->xsize) + x,
+ sc->scr_map[ch], (int)attr << 8);
+ }
+ }
+}
+
+static int
+txt_init(video_adapter_t *adp)
+{
+
+ /* Ensure that the image data exists. */
+ if (txt_decoder.data == NULL || txt_decoder.data_size <= 0) {
+ printf("splash_txt: No ASCII bitmap file found\n");
+ return (ENODEV);
+ }
+ return (0);
+}
+
+static int
+txt_end(video_adapter_t *adp)
+{
+
+ return (0);
+}
+
+static int
+txt_splash(video_adapter_t *adp, const int on)
+{
+ sc_softc_t *sc;
+ scr_stat *scp;
+
+ sc = sc_find_softc(adp, NULL);
+ if (sc == NULL)
+ return (EAGAIN);
+ scp = sc->cur_scp;
+ if (on) {
+ if (!splash_on) {
+ if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
+ return EAGAIN;
+ /* Clear screen and set border colour. */
+ sc_vtb_clear(&scp->scr, sc->scr_map[0x20],
+ (FG_LIGHTGREY | BG_BLACK) << 8);
+ (*vidsw[adp->va_index]->set_hw_cursor)(adp, -1, -1);
+ sc_set_border(scp, 0);
+ splash_on = TRUE;
+ /* Display the splash screen. */
+ draw_text_splash(sc);
+ }
+ return (0);
+ } else {
+ /* The video mode will be restored by the caller. */
+ splash_on = FALSE;
+ return (0);
+ }
+}
+
+
diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c
index 00cdcd6..52260c1 100644
--- a/sys/dev/fdc/fdc.c
+++ b/sys/dev/fdc/fdc.c
@@ -314,14 +314,14 @@ fdsettype(struct fd_data *fd, struct fd_type *ft)
/*
* Bus space handling (access to low-level IO).
*/
-__inline static void
+static inline void
fdregwr(struct fdc_data *fdc, int reg, uint8_t v)
{
bus_space_write_1(fdc->iot, fdc->ioh[reg], fdc->ioff[reg], v);
}
-__inline static uint8_t
+static inline uint8_t
fdregrd(struct fdc_data *fdc, int reg)
{
diff --git a/sys/dev/fdt/fdt_common.c b/sys/dev/fdt/fdt_common.c
index d25715b..8702df2 100644
--- a/sys/dev/fdt/fdt_common.c
+++ b/sys/dev/fdt/fdt_common.c
@@ -74,13 +74,13 @@ fdt_immr_addr(vm_offset_t immr_va)
/*
* Try to access the SOC node directly i.e. through /aliases/.
*/
- if ((node = OF_finddevice("soc")) != 0)
+ if ((node = OF_finddevice("soc")) != -1)
if (fdt_is_compatible_strict(node, "simple-bus"))
goto moveon;
/*
* Find the node the long way.
*/
- if ((node = OF_finddevice("/")) == 0)
+ if ((node = OF_finddevice("/")) == -1)
return (ENXIO);
if ((node = fdt_find_compatible(node, "simple-bus", 1)) == 0)
@@ -576,7 +576,7 @@ fdt_get_mem_regions(struct mem_region *mr, int *mrcnt, uint32_t *memsize)
max_size = sizeof(reg);
memory = OF_finddevice("/memory");
- if (memory <= 0) {
+ if (memory == -1) {
rv = ENXIO;
goto out;
}
diff --git a/sys/dev/fdt/fdt_pci.c b/sys/dev/fdt/fdt_pci.c
index 14aa270..7f0ddd3 100644
--- a/sys/dev/fdt/fdt_pci.c
+++ b/sys/dev/fdt/fdt_pci.c
@@ -46,9 +46,6 @@ __FBSDID("$FreeBSD$");
#include "ofw_bus_if.h"
#include "pcib_if.h"
-#define DEBUG
-#undef DEBUG
-
#ifdef DEBUG
#define debugf(fmt, args...) do { printf("%s(): ", __func__); \
printf(fmt,##args); } while (0)
diff --git a/sys/dev/fdt/fdt_powerpc.c b/sys/dev/fdt/fdt_powerpc.c
index ea614db..ac81c08 100644
--- a/sys/dev/fdt/fdt_powerpc.c
+++ b/sys/dev/fdt/fdt_powerpc.c
@@ -62,7 +62,7 @@ fdt_fixup_busfreq(phandle_t root)
* This fixup uses /cpus/ bus-frequency prop value to set simple-bus
* bus-frequency property.
*/
- if ((cpus = OF_finddevice("/cpus")) == 0)
+ if ((cpus = OF_finddevice("/cpus")) == -1)
return;
if ((child = OF_child(cpus)) == 0)
diff --git a/sys/dev/fdt/fdtbus.c b/sys/dev/fdt/fdtbus.c
index a2530cd..577b159 100644
--- a/sys/dev/fdt/fdtbus.c
+++ b/sys/dev/fdt/fdtbus.c
@@ -46,9 +46,6 @@ __FBSDID("$FreeBSD$");
#include "fdt_common.h"
#include "ofw_bus_if.h"
-#define DEBUG
-#undef DEBUG
-
#ifdef DEBUG
#define debugf(fmt, args...) do { printf("%s(): ", __func__); \
printf(fmt,##args); } while (0)
@@ -177,7 +174,7 @@ fdtbus_attach(device_t dev)
u_long start, end;
int error;
- if ((root = OF_peer(0)) == 0)
+ if ((root = OF_finddevice("/")) == -1)
panic("fdtbus_attach: no root node.");
sc = device_get_softc(dev);
diff --git a/sys/dev/fdt/simplebus.c b/sys/dev/fdt/simplebus.c
index 3fa1dd8..e6887b4 100644
--- a/sys/dev/fdt/simplebus.c
+++ b/sys/dev/fdt/simplebus.c
@@ -49,9 +49,6 @@ __FBSDID("$FreeBSD$");
#include "fdt_common.h"
#include "ofw_bus_if.h"
-#define DEBUG
-#undef DEBUG
-
#ifdef DEBUG
#define debugf(fmt, args...) do { printf("%s(): ", __func__); \
printf(fmt,##args); } while (0)
diff --git a/sys/dev/firewire/firewire.c b/sys/dev/firewire/firewire.c
index 490f39b..aa0f1aa 100644
--- a/sys/dev/firewire/firewire.c
+++ b/sys/dev/firewire/firewire.c
@@ -30,11 +30,11 @@
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
- *
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/types.h>
@@ -128,9 +128,8 @@ static device_method_t firewire_methods[] = {
/* Bus interface */
DEVMETHOD(bus_add_child, firewire_add_child),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- { 0, 0 }
+ DEVMETHOD_END
};
char *linkspeed[] = {
"S100", "S200", "S400", "S800",
diff --git a/sys/dev/firewire/fwohci_pci.c b/sys/dev/firewire/fwohci_pci.c
index 0bb66a9..979f587 100644
--- a/sys/dev/firewire/fwohci_pci.c
+++ b/sys/dev/firewire/fwohci_pci.c
@@ -30,10 +30,11 @@
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#define BOUNCE_BUFFER_TEST 0
#include <sys/param.h>
@@ -536,9 +537,8 @@ static device_method_t fwohci_methods[] = {
/* Bus interface */
DEVMETHOD(bus_add_child, fwohci_pci_add_child),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t fwohci_driver = {
diff --git a/sys/dev/fxp/if_fxp.c b/sys/dev/fxp/if_fxp.c
index 62c8dc2..0255b91 100644
--- a/sys/dev/fxp/if_fxp.c
+++ b/sys/dev/fxp/if_fxp.c
@@ -1454,7 +1454,7 @@ fxp_encap(struct fxp_softc *sc, struct mbuf **m_head)
return (ENOBUFS);
}
tcp = (struct tcphdr *)(mtod(m, char *) + poff);
- m = m_pullup(m, poff + sizeof(struct tcphdr) + tcp->th_off);
+ m = m_pullup(m, poff + (tcp->th_off << 2));
if (m == NULL) {
*m_head = NULL;
return (ENOBUFS);
diff --git a/sys/dev/gem/if_gem_pci.c b/sys/dev/gem/if_gem_pci.c
index c5e1acd..a3376fd 100644
--- a/sys/dev/gem/if_gem_pci.c
+++ b/sys/dev/gem/if_gem_pci.c
@@ -82,16 +82,12 @@ static device_method_t gem_pci_methods[] = {
/* Use the suspend handler here, it is all that is required. */
DEVMETHOD(device_shutdown, gem_pci_suspend),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, gem_mii_readreg),
DEVMETHOD(miibus_writereg, gem_mii_writereg),
DEVMETHOD(miibus_statchg, gem_mii_statchg),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t gem_pci_driver = {
diff --git a/sys/dev/gem/if_gem_sbus.c b/sys/dev/gem/if_gem_sbus.c
index 205285d..4265b8c 100644
--- a/sys/dev/gem/if_gem_sbus.c
+++ b/sys/dev/gem/if_gem_sbus.c
@@ -78,16 +78,12 @@ static device_method_t gem_sbus_methods[] = {
/* Use the suspend handler here, it is all that is required. */
DEVMETHOD(device_shutdown, gem_sbus_suspend),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, gem_mii_readreg),
DEVMETHOD(miibus_writereg, gem_mii_writereg),
DEVMETHOD(miibus_statchg, gem_mii_statchg),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t gem_sbus_driver = {
diff --git a/sys/dev/gpio/gpiobus.c b/sys/dev/gpio/gpiobus.c
index 54644a2..09ebe4e 100644
--- a/sys/dev/gpio/gpiobus.c
+++ b/sys/dev/gpio/gpiobus.c
@@ -229,7 +229,7 @@ gpiobus_detach(device_t dev)
return (err);
/* detach and delete all children */
- device_delete_all_children(dev);
+ device_delete_children(dev);
if (sc->sc_pins_mapped) {
free(sc->sc_pins_mapped, M_DEVBUF);
@@ -458,7 +458,6 @@ static device_method_t gpiobus_methods[] = {
/* Bus interface */
DEVMETHOD(bus_add_child, gpiobus_add_child),
DEVMETHOD(bus_print_child, gpiobus_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
DEVMETHOD(bus_child_pnpinfo_str, gpiobus_child_pnpinfo_str),
DEVMETHOD(bus_child_location_str, gpiobus_child_location_str),
DEVMETHOD(bus_hinted_child, gpiobus_hinted_child),
@@ -475,7 +474,7 @@ static device_method_t gpiobus_methods[] = {
DEVMETHOD(gpiobus_pin_set, gpiobus_pin_set),
DEVMETHOD(gpiobus_pin_toggle, gpiobus_pin_toggle),
- { 0, 0 }
+ DEVMETHOD_END
};
driver_t gpiobus_driver = {
diff --git a/sys/dev/gpio/gpioiic.c b/sys/dev/gpio/gpioiic.c
index e9611dd..2a6d093 100644
--- a/sys/dev/gpio/gpioiic.c
+++ b/sys/dev/gpio/gpioiic.c
@@ -48,15 +48,16 @@ __FBSDID("$FreeBSD$");
#include "iicbb_if.h"
-#define SCL_PIN 0 /* gpiobus mapped pin 6 */
-#define SDA_PIN 1 /* gpiobus mapped pin 7 */
+#define SCL_PIN_DEFAULT 0 /* default index of SCL pin on gpiobus */
+#define SDA_PIN_DEFAULT 1
struct gpioiic_softc
{
device_t sc_dev;
device_t sc_busdev;
- struct mtx sc_mtx;
struct cdev *sc_leddev;
+ int scl_pin;
+ int sda_pin;
};
static int gpioiic_probe(device_t);
@@ -88,6 +89,12 @@ gpioiic_attach(device_t dev)
sc->sc_dev = dev;
sc->sc_busdev = device_get_parent(dev);
+ if (resource_int_value(device_get_name(dev),
+ device_get_unit(dev), "scl", &sc->scl_pin))
+ sc->scl_pin = SCL_PIN_DEFAULT;
+ if (resource_int_value(device_get_name(dev),
+ device_get_unit(dev), "sda", &sc->sda_pin))
+ sc->sda_pin = SDA_PIN_DEFAULT;
/* add generic bit-banging code */
bitbang = device_add_child(dev, "iicbb", -1);
@@ -105,9 +112,9 @@ gpioiic_reset_bus(device_t dev)
{
struct gpioiic_softc *sc = device_get_softc(dev);
- GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, SDA_PIN,
+ GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, sc->sda_pin,
GPIO_PIN_INPUT);
- GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, SCL_PIN,
+ GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, sc->scl_pin,
GPIO_PIN_INPUT);
}
@@ -140,16 +147,14 @@ gpioiic_setsda(device_t dev, int val)
{
struct gpioiic_softc *sc = device_get_softc(dev);
- GPIOBUS_LOCK_BUS(sc->sc_busdev);
if (val == 0) {
- GPIOBUS_PIN_SET(sc->sc_busdev, sc->sc_dev, SDA_PIN, 0);
- GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, SDA_PIN,
+ GPIOBUS_PIN_SET(sc->sc_busdev, sc->sc_dev, sc->sda_pin, 0);
+ GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, sc->sda_pin,
GPIO_PIN_OUTPUT);
} else {
- GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, SDA_PIN,
+ GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, sc->sda_pin,
GPIO_PIN_INPUT);
}
- GPIOBUS_UNLOCK_BUS(sc->sc_busdev);
}
static void
@@ -157,16 +162,14 @@ gpioiic_setscl(device_t dev, int val)
{
struct gpioiic_softc *sc = device_get_softc(dev);
- GPIOBUS_LOCK_BUS(sc->sc_busdev);
if (val == 0) {
- GPIOBUS_PIN_SET(sc->sc_busdev, sc->sc_dev, SCL_PIN, 0);
- GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, SCL_PIN,
+ GPIOBUS_PIN_SET(sc->sc_busdev, sc->sc_dev, sc->scl_pin, 0);
+ GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, sc->scl_pin,
GPIO_PIN_OUTPUT);
} else {
- GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, SCL_PIN,
+ GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, sc->scl_pin,
GPIO_PIN_INPUT);
}
- GPIOBUS_UNLOCK_BUS(sc->sc_busdev);
}
static int
@@ -175,11 +178,9 @@ gpioiic_getscl(device_t dev)
struct gpioiic_softc *sc = device_get_softc(dev);
unsigned int val;
- GPIOBUS_LOCK_BUS(sc->sc_busdev);
- GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, SCL_PIN,
+ GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, sc->scl_pin,
GPIO_PIN_INPUT);
- GPIOBUS_PIN_GET(sc->sc_busdev, sc->sc_dev, SCL_PIN, &val);
- GPIOBUS_UNLOCK_BUS(sc->sc_busdev);
+ GPIOBUS_PIN_GET(sc->sc_busdev, sc->sc_dev, sc->scl_pin, &val);
return ((int)val);
}
@@ -190,11 +191,9 @@ gpioiic_getsda(device_t dev)
struct gpioiic_softc *sc = device_get_softc(dev);
unsigned int val;
- GPIOBUS_LOCK_BUS(sc->sc_busdev);
- GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, SDA_PIN,
+ GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, sc->sda_pin,
GPIO_PIN_INPUT);
- GPIOBUS_PIN_GET(sc->sc_busdev, sc->sc_dev, SDA_PIN, &val);
- GPIOBUS_UNLOCK_BUS(sc->sc_busdev);
+ GPIOBUS_PIN_GET(sc->sc_busdev, sc->sc_dev, sc->sda_pin, &val);
return ((int)val);
}
diff --git a/sys/dev/hifn/hifn7751.c b/sys/dev/hifn/hifn7751.c
index 2da5a9e..7e3a65f 100644
--- a/sys/dev/hifn/hifn7751.c
+++ b/sys/dev/hifn/hifn7751.c
@@ -113,16 +113,12 @@ static device_method_t hifn_methods[] = {
DEVMETHOD(device_resume, hifn_resume),
DEVMETHOD(device_shutdown, hifn_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* crypto device methods */
DEVMETHOD(cryptodev_newsession, hifn_newsession),
DEVMETHOD(cryptodev_freesession,hifn_freesession),
DEVMETHOD(cryptodev_process, hifn_process),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t hifn_driver = {
"hifn",
diff --git a/sys/dev/hme/if_hme_pci.c b/sys/dev/hme/if_hme_pci.c
index 9f68df2..d114fd8 100644
--- a/sys/dev/hme/if_hme_pci.c
+++ b/sys/dev/hme/if_hme_pci.c
@@ -93,16 +93,12 @@ static device_method_t hme_pci_methods[] = {
/* Can just use the suspend method here. */
DEVMETHOD(device_shutdown, hme_pci_suspend),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, hme_mii_readreg),
DEVMETHOD(miibus_writereg, hme_mii_writereg),
DEVMETHOD(miibus_statchg, hme_mii_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t hme_pci_driver = {
diff --git a/sys/dev/hme/if_hme_sbus.c b/sys/dev/hme/if_hme_sbus.c
index 846ee11..946597e 100644
--- a/sys/dev/hme/if_hme_sbus.c
+++ b/sys/dev/hme/if_hme_sbus.c
@@ -95,16 +95,12 @@ static device_method_t hme_sbus_methods[] = {
/* Can just use the suspend method here. */
DEVMETHOD(device_shutdown, hme_sbus_suspend),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, hme_mii_readreg),
DEVMETHOD(miibus_writereg, hme_mii_writereg),
DEVMETHOD(miibus_statchg, hme_mii_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t hme_sbus_driver = {
diff --git a/sys/dev/hpt27xx/README b/sys/dev/hpt27xx/README
new file mode 100644
index 0000000..57085f7
--- /dev/null
+++ b/sys/dev/hpt27xx/README
@@ -0,0 +1,196 @@
+RocketRAID Controller Driver for FreeBSD
+Copyright (C) 2011 HighPoint Technologies, Inc. All rights reserved.
+
+#############################################################################
+Revision History:
+ v1.0 2011-12-27
+ First source code release
+
+#############################################################################
+
+1. Overview
+---------------------
+ This package contains FreeBSD driver source code for HighPoint RocketRAID
+ controller, include:
+ SAS Controller: RR271x, RR272x, RR274x, RR276x, RR278x.
+
+ NO WARRANTY
+
+ THE DRIVER SOURCE CODE HIGHPOINT PROVIDED IS FREE OF CHARGE, AND THERE IS
+ NO WARRANTY FOR THE PROGRAM. THERE ARE NO RESTRICTIONS ON THE USE OF THIS
+ FREE SOURCE CODE. HIGHPOINT DOES NOT PROVIDE ANY TECHNICAL SUPPORT IF THE
+ CODE HAS BEEN CHANGED FROM ORIGINAL SOURCE CODE.
+
+ LIMITATION OF LIABILITY
+
+ IN NO EVENT WILL HIGHPOINT BE LIABLE FOR DIRECT, INDIRECT, SPECIAL,
+ INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF OR
+ INABILITY TO USE THIS PRODUCT OR DOCUMENTATION, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGES. IN PARTICULAR, HIGHPOINT SHALL NOT HAVE
+ LIABILITY FOR ANY HARDWARE, SOFTWARE, OR DATA STORED USED WITH THE
+ PRODUCT, INCLUDING THE COSTS OF REPAIRING, REPLACING, OR RECOVERING
+ SUCH HARDWARE, OR DATA.
+
+
+2. Rebuild the kernel with HighPoint RocketRAID support
+-----------------------------------------------
+
+ 1) Install kernel source package and building tools.
+
+ 2) Extract the driver files under the kernel source tree:
+
+ # cd /usr/src/sys/
+ # tar xvzf /your/path/to/hpt27xx-freebsd-src-v1.0-111227.tgz
+
+ 3) Update the kernel configuration file to include the HighPoint source.
+ Assume the configure file is GENERIC, and new kernel configure file is
+ MYKERNEL:
+
+ # cd i386/conf (or amd64/conf for AMD64)
+ # cp GENERIC MYKERNEL
+
+ 4) Edit MYKERNEL, and add the following line under "RAID controllers
+ interfaced to the SCSI subsystem":
+
+ device "hpt27xx" #HighPoint RocketRAID
+
+ 5) For i386 system, edit /usr/src/sys/conf/files.i386 and append the lines
+ shown below:
+
+ hpt27xx_lib.o optional hpt27xx \
+ dependency "$S/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu" \
+ compile-with "uudecode < $S/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu" \
+ no-implicit-rule
+
+ dev/hpt27xx/os_bsd.c optional hpt27xx
+ dev/hpt27xx/osm_bsd.c optional hpt27xx
+ dev/hpt27xx/hpt27xx_config.c optional hpt27xx
+
+ For amd64 system, edit /usr/src/sys/conf/files.amd64 and append the lines
+ shown below:
+
+ hpt27xx_lib.o optional hpt27xx \
+ dependency "$S/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu" \
+ compile-with "uudecode < $S/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu" \
+ no-implicit-rule
+
+ dev/hpt27xx/os_bsd.c optional hpt27xx
+ dev/hpt27xx/osm_bsd.c optional hpt27xx
+ dev/hpt27xx/hpt27xx_config.c optional hpt27xx
+
+ 6) Rebuild and install the kernel:
+
+ a) for FreeBSD 5.x-i386/6.x-i386/7.x-i386/8.x-i386/9.x-i386:
+
+ # cd /usr/src/sys/i386/conf/
+ # /usr/sbin/config MYKERNEL
+ # cd ../compile/MYKERNEL/
+ # make depend
+ # make
+ # make install
+
+ b) for FreeBSD 5.x-amd64/6.x-amd64/7.x-amd64/8.x-amd64/9.x-amd64:
+
+ # cd /usr/src/sys/amd64/conf/
+ # /usr/sbin/config MYKERNEL
+ # cd ../compile/MYKERNEL/
+ # make depend
+ # make
+ # make install
+
+ c) for FreeBSD 4.x:
+
+ # cd /usr/src/sys/i386/conf/
+ # /usr/sbin/config MYKERNEL
+ # cd ../../compile/MYKERNEL/
+ # make depend
+ # make
+ # make install
+
+ If the driver was previously configured as an auto-loaded module by
+ /boot/defaults/loader.conf, please remove the entry hpt27xx_load="YES"
+ from loader.conf to prevent the driver from being loaded twice.
+
+ 7) Reboot from the new kernel.
+
+
+3. Build/Load the driver as a kernel module
+------------------------------------------------
+
+ 1) Install kernel source package and building tools.
+
+ 2) Extract the driver files under the kernel source tree:
+
+ # cd /usr/src/sys/
+ # tar xvzf /your/path/to/hpt27xx-freebsd-src-v1.0-111227.tgz
+
+
+ 4) Build the driver module:
+
+ # cd modules/hpt27xx
+ # make
+
+ 5) Copy the driver module to the kernel module directory
+
+ For FreeBSD 4.x:
+
+ # cp hpt27xx.ko /modules/
+
+ For FreeBSD 5.x/6.x/7.x/8.x/9.x:
+
+ # cp hpt27xx.ko /boot/kernel/
+
+ 6) Reboot and load the driver under loader prompt. e.g:
+
+ BTX loader 1.00 BTX version is 1.01
+ Console: internal video/keyboard
+ BIOS driver A: is disk0
+ BIOS driver C: is disk2
+ BIOS 636kB/74512kB available memory
+
+ FreeBSD/i386 bootstrap loader, Revision 0.8
+ (mailto:jkh@narf.osd.bsdi.com, Sat Apr 21 08:46:19 GMT 2001)
+ Loading /boot/defaults/loader.conf
+ /kernel text=0x24f1db data=0x3007ec+0x2062c -
+
+ Hit [Enter] to boot immediagely, or any other key for command prompt.
+ Booting [kernel] in 9 seconds¡­
+
+ <-- press SPACE key here
+ Type '?' for a list of commands, 'help' for more detailed help.
+ ok load hpt27xx
+ /modules/hpt27xx.ko text=0xf571 data=0x2c8+0x254
+ ok boot
+
+ For FreeBSD 5.x/6.x/7.x/8.x/9.x, you can select 6 on the boot menu to get a loader
+ prompt.
+
+ 7) You can add a below line into /boot/defaults/loader.conf to load the
+ driver automatically:
+
+ hpt27xx_load="YES"
+
+ Please refer to the installation guide in HighPoint FreeBSD driver release
+ package for more information.
+
+
+#############################################################################
+Technical support and service
+
+ If you have questions about installing or using your HighPoint product,
+ check the user's guide or readme file first, and you will find answers to
+ most of your questions here. If you need further assistance, please
+ contact us. We offer the following support and information services:
+
+ 1) The HighPoint Web Site provides information on software upgrades,
+ answers to common questions, and other topics. The Web Site is
+ available from Internet 24 hours a day, 7 days a week, at
+ http://www.highpoint-tech.com.
+
+ 2) For technical support, send e-mail to support@highpoint-tech.com
+
+ NOTE: Before you send an e-mail, please visit our Web Site
+ (http://www.highpoint-tech.com) to check if there is a new or
+ updated device driver for your system.
+
+$FreeBSD$
diff --git a/sys/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu b/sys/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu
new file mode 100644
index 0000000..8bb1b3a
--- /dev/null
+++ b/sys/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu
@@ -0,0 +1,22893 @@
+begin 644 hpt27xx_lib.o
+M?T5,1@(!`0D```````````$`/@`!`````````````````````````(A^"@``
+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
+MP>`("<$/MD=%"<'K#KH`````N0````!F9F:02(F7B````(F/D````&:#3R(!
+M\\-F9F:09F9FD&9F9I!32(/L8$B)^T0/MD\[1`^V1SH/MD\Y#[97.`^V1T>)
+M1"18#[9'1HE$)%`/MD=%B40D2`^V1T2)1"1`#[9'0XE$)#@/MD="B40D,`^V
+M1T&)1"0H#[9'0(E$)"`/MD<_B40D&`^V1SZ)1"00#[9'/8E$)`@/MD<\B00D
+M2(G^2,?'`````+@`````Z``````/MW,@2,?'`````+@`````Z`````!(@\1@
+M6\-F9F:09F9FD+K_____N0````!F.?%S(4G'P``````/M\$/M@0X,=`/ML#!
+MZ@A!,Q2`_\%F.?%RYHG0PY"0D)"0D)"0D)"0D)!(BP>+D`0!``")%0````")
+MT8'A?O_^_TB+!XF(!`$``(G1@>%^__+_2(M'"(D(2(M'"(E(#$B+1PB)2!!(
+MBT<(B4@42(M'"(E(&$B+1PB)2`1(BP>+@%0!``")!0````")P8'A_@#__TB+
+M!XF(5`$``,-F9F:09F9FD&9FD&9FD%532(/L"(GS2(LO@_X#=AB-!-W@____
+MBX0HH`$``(D%`````(G!ZQB-!-T`````B<"+A"B``0``B04`````B<&#X?Z#
+M^P-V$(T$W>#___^)C"B@`0``ZQ"-!-T`````B<")C"B``0``A-(/A*````"#
+M^P-V&(T$G?#___^+A"C@`0``B04`````B<'K&(T$G0````")P(N$*-`!``")
+M!0````")P8/)`H/[`W80C02=\/___XF,*.`!``#K$(T$G0````")P(F,*-`!
+M``"-!)T`````C7#PB<)F9F:09F:0@_L#=A&+A"[@`0``B04`````B<'K#XN$
+M*M`!``")!0````")P?;!`G76Z94```"0@_L#=A2-!-W@____QX0H4`(`````
+M``#K%(T$W0````")P,>$*%`"````````OQ`G``#H`````(/[`W88C03=X/__
+M_XN$*%0"``")!0````")P>L8C03=`````(G`BX0H5`(``(D%`````(G!@\D!
+M@_L#=A"-!-W@____B8PH5`(``.L0C03=`````(G`B8PH5`(``$B#Q`A;7<-F
+M9I!FD$%6055!5%5328G\08GU08G62(LONP````"`?SX`#X1.`@``1(GJ#[;"
+MB=E(T_BH`0^$*P(``(/[`W88C03=X/___XN$**0!``")!0````")PNL8C03=
+M`````(G`BX0HA`$``(D%`````(G"@^+^@_L#=A"-!-W@____B90HI`$``.L0
+MC03=`````(G`B90HA`$``+\0)P``Z`````!%A/8/A)H```"#^P-V&(T$G?#_
+M__^+A"C@`0``B04`````B<+K&(T$G0````")P(N$*-`!``")!0````")PH/*
+M`H/[`W80C02=\/___XF4*.`!``#K$(T$G0````")P(F4*-`!``"-!)T`````
+MC7#PB<&0@_L#=A&+A"[@`0``B04`````B<+K#XN$*=`!``")!0````")PO;"
+M`G76Z94```"0@_L#=A2-!-W@____QX0H4`(```````#K%(T$W0````")P,>$
+M*%`"````````OQ`G``#H`````(/[`W88C03=X/___XN$*%0"``")!0````")
+MPNL8C03=`````(G`BX0H5`(``(D%`````(G"@\H!@_L#=A"-!-W@____B90H
+M5`(``.L0C03=`````(G`B90H5`(``(/[`W87C03=X/___\>$**`!```!````
+MZQ=F9I"-!-T`````B<#'A"B``0```0```(/[`W88C03=X/___XN$**0!``")
+M!0````")PNL8C03=`````(G`BX0HA`$``(D%`````(G"@\H!@_L#=A"-!-W@
+M____B90HI`$``.L0C03=`````(G`B90HA`$``/_#00^V1"0^.=@/A[+]__];
+M74%<05U!7L-F9I!F9I")\4B+!XN`!`$``(D%`````$&)P`^W1SQF/8!D#Y3"
+M9CV`D0^4P`G0J`%U"&:!?SR`E'42#[;)@\$(N`$```#3X$$)P.L10`^VSH/!
+M#+@!````T^!!"<!(BP=$B8`$`0``PV9F9I!F9F:09F:09F:0B?%(BP>+@`0!
+M``")!0````!!B<`/MT<\9CV`9`^4PF8]@)$/E,`)T*@!=0AF@7\\@)1U$@^V
+MR8/!"+C^____T\!!(<#K$4`/MLZ#P0RX_O___]/`02'`2(L'1(F`!`$``,-F
+M9F:09F9FD&9FD&9FD$B#[!A(B5PD"$R)9"0028G\0`^VWHG>Z`````"_$"<`
+M`.@`````B=Y,B>?H`````$B+7"0(3(MD)!!(@\08PY")\4"`_O]T>$"`_A]W
+M-HN7&`$``(D5`````+@!````T^")P??0(=")AQ@!``"+AU@!``")!0`````A
+MR'1#B8=8`0``PXN7'`$``(D5`````$`/MLZ#Z2"X`0```-/@B<'WT"'0B8<<
+M`0``BX=@`0``B04`````(<AT!HF'8`$``//#9F9FD&9F9I!F9I!F9I!!5%53
+M2(G5B?-,BR=`@/X#=AY(C03=`````"7X!P``0L>$(``"```,`0``ZQQF9I!(
+MC03=`````"7X!P``0L>$(``"```,`0``OQ`G``#H`````(#[`W8X2(T,W0``
+M``"!X?@'```/ME4#P>(8#[9%`L'@$`G"#[9%`<'@"`G"#[9%``G"0HF4(00"
+M``#K-I!(C0S=`````('A^`<```^V50/!XA@/MD4"P>`0"<(/MD4!P>`("<(/
+MMD4`"<)"B90A!`(``(#[`W8;2(T$W0`````E^`<``$+'A"```@``$`$``.L9
+M2(T$W0`````E^`<``$+'A"```@``$`$``+\0)P``Z`````"`^P-V-TB-#-T`
+M````@>'X!P``#[95!\'B&`^V10;!X!`)P@^V107!X`@)P@^V100)PD*)E"$$
+M`@``ZS5(C0S=`````('A^`<```^V50?!XA@/MD4&P>`0"<(/MD4%P>`("<(/
+MMD4$"<)"B90A!`(``%M=05S#D)!32(/L8$B)^P^W?SQ(C40D7DB)1"0X2(U$
+M)%Q(B40D,$B-1"1:2(E$)"A(C40D6$B)1"0@2(U$)%9(B40D&$B-1"152(E$
+M)!!(C40D5$B)1"0(2(U$)%)(B00D3(U,)%%,C40D3DB-3"1-2(U4)$Q(C70D
+M2^@`````#[94)$L/MG0D3$B-?"1$Z`````!(#[94)$M(:=*(`0``2(MS($B-
+MN_@(``"Y`0```.@`````2`^V5"1-2&G2T````$B+<R!(C;L@"0``N0$```#H
+M`````$@/ME0D3$AITL@/``!(BW,@2(V[2`D``+D!````Z`````!(#[=4)%9(
+MP>(#2(MS($B-NW`)``"Y`0```.@`````2`^W5"1.2&G2J````$B+<R!(C;M(
+M"@``N0$```#H`````$@/ME0D44@/MT0D3D@/K]!(C1122,'B`DB+<R!(C;O8
+M"0``N0$```#H`````$B+<R!(C;L`"@``N0$```"Z``(``.@`````#[9,)$M(
+MBW,@2(V[$`L``+H`"```Z`````!(#[94)%1(P>(%2(MS($B-NY@*``"Y`0``
+M`.@`````2`^V5"152(T4DDC!X@5(BW,@2(V[P`H``+D!````Z`````!(#[=4
+M)%)(C1222,'B`TB+<R!(C;OH"@``N0$```#H`````$@/MU0D5D@!TDB+<R!(
+MC;LP#P``N0$```#H`````$@/ME0D2T@!TDB+<R!(C;MH#P``N0$```#H````
+M`$@/ME0D34@!TDB+<R!(C;N@#P``N0$```#H`````$@/ME0D3$@!TDB+<R!(
+MC;O8#P``N0$```#H`````$@/ME,^2`'22(MS($B-NQ`0``"Y`0```.@`````
+M2`^W5"182(T44DC!X@1(BW,@2(V[<`H``+D!````Z`````"+5"1$2(MS($B-
+MNT@0``"Y`0```.@`````2`^W5"162,'B!DB+<R!(C;MP$```0;@!````N4``
+M``#H`````$B+<R!(C;N@$```0;@!````N0`!``"Z`!D``.@`````2`^W5"16
+M2&G2L`0``$B+<R!(C;O0$```0;@!````N8````#H`````$@/MU0D7$C!X@)(
+MBW,@2(V[`!$``$&X`0```+D$````Z`````!(#[=4)%Y(P>("2(MS($B-NS`1
+M``!!N`$```"Y!````.@`````#[94)%3!X@M(BW,@2(V[8!$``$&X`0```+D(
+M````Z`````!(#[=4)%)(:=*,`0``2(MS($B!PY`1``!!N`$```"Y"````$B)
+MW^@`````N`````!(@\1@6\-F9I!FD$%6055!5%532(/L8$F)_$&^`````,9'
+M40#&1U``QD=/`$C'A_@3````````QH?Q$P```+D`````NJ`!``!(C8=`$@``
+MB`A(_\!(_\IU]DF-A"3H````28F$).@```!)B80D\````$F-A"3X````28F$
+M)/@```!)B80D``$``$F-A"0(`0``28F$)`@!``!)B80D$`$``$F-A"08`0``
+M28F$)!@!``!)B80D(`$``$F-A"0H`0``28F$)"@!``!)B80D,`$``$F-A"1(
+M`0``28F$)$@!``!)B80D4`$``$F-A"18`0``28F$)%@!``!)B80D8`$``$F-
+MA"0X`0``28F$)#@!``!)B80D0`$``$$/MWPD/$B-1"1>2(E$)#A(C40D7$B)
+M1"0P2(U$)%I(B40D*$B-1"182(E$)"!(C40D5DB)1"082(U$)%5(B40D$$B-
+M1"142(E$)`A(C40D4DB)!"1,C4PD44R-1"1.2(U,)$U(C50D3$B-="1+Z```
+M```/MD0D2T&(1"1&#[9$)$Q!B$0D1P^V1"1-08B$).$````/MT0D5F9!B40D
+M6(M$)%QF08F$)#P2```/MT0D7O_(9D&)A"0^$@``00^W1"0\/8"1``!T"SV`
+ME```#X4C"0``0<9$)$T$0<9$)$,$0<9$)$Y`0<9$)$P`0<:$)-X````)0<9$
+M)$0`28V\)/@(``#H`````$F)A"08"0``N0````!(#[94)$M(:=*(`0``ZPB(
+M"$C_RDC_P$B%TG7S28V\)"`)``#H`````$F)A"1`"0``N0````!(#[94)$U(
+M:=+0````2(72=`J("$C_P$C_RG7V28V\)$@)``#H`````$F)A"1H"0``N0``
+M``!(#[94)$Q(:=+(#P``2(72=`J("$C_P$C_RG7V28V\)'`)``#H`````$F)
+MA"20"0``N0````!(#[=4)%9(P>(#=`J("$C_P$C_RG7V28V\)``*``#H````
+M`$F)A"0@"@``28V\)-@)``#H`````$F)A"3X"0``2(G#28V\)$@*``#H````
+M`$F)A"1H"@``2(G"O0````!F.VPD3G-$28V,)`@!``!(B5I@#[9$)%&(0EA(
+MBT$(2(E1"$B)"DB)0@A(B1!(#[9$)%%(C01`2(T<@TB!PJ@```#_Q68[;"1.
+M<L1)C;PD<`H``.@`````28F$))`*``!(B<*]`````&8[;"18<RM)C8PD&`$`
+M`,9"$`!(BT$(2(E1"$B)"DB)0@A(B1!(@\(P_\5F.VPD6'+=28V\))@*``#H
+M`````$F)A"2X"@``2(G"O0````"`?"14`'0K28V,)"@!``!(BT$(2(E1"$B)
+M"DB)0@A(B1!(@\(@_\5F#[9$)%1F.>AWW4F-O"3`"@``Z`````!)B80DX`H`
+M`$B)PKT`````@'PD50!T+DF-C"1(`0``2(M!"$B)40A(B0I(B4((2(D02('"
+MH````/_%9@^V1"159CGH=]I)C;PDZ`H``.@`````28F$)`@+``!(B<*]````
+M`&8[;"12<R=)C8PD.`$``$B+00A(B5$(2(D*2(E""$B)$$B#PBC_Q68[;"12
+M<N&]`````(!\)$L`=#]-C:PD6`$```^WW4F-O"00"P``Z`````!)B83<,`L`
+M`$F+50A)B44(3(DH2(E0"$B)`O_%9@^V1"1+9CGH=\E)C;PD,`\``.@`````
+M28F$)%`/``!)B80D6`\```^W1"169D&)A"1B#P``#[?P28V\)%@/``#H````
+M`$F-O"1H#P``Z`````!)B80DB`\``$F)A"20#P``9@^V1"1+9D&)A"2:#P``
+M#[?P28V\))`/``#H`````$F-O"2@#P``Z`````!)B80DP`\``$F)A"3(#P``
+M9@^V1"1-9D&)A"32#P``#[?P28V\),@/``#H`````$F-O"38#P``Z`````!)
+MB80D^`\``$F)A"0`$```9@^V1"1,9D&)A"0*$```#[?P28V\)``0``#H````
+M`$F-O"00$```Z`````!)B80D,!```$F)A"0X$```9D$/MD0D/F9!B80D0A``
+M`$$/MG0D/DF-O"0X$```Z`````!)C;PD2!```.@`````28F$)&@0``!(#[94
+M)$Q(C132B=;!Y@>!QF!7``"Y`````(GR2(72=`J("$C_P$C_RG7V28N$)&@0
+M``"),$F+E"1H$```#[9$)$R(0@0/ME0D3$F+O"1H$```Z`````"]`````$&`
+M?"0^`'1]#[?%2&G`J````$P!X$R-L*`!``!!B&X(0<9&"0!,B:"@`0``0<9&
+M#@!!QD98`$'&1B@`0<>&H`````````!(C9#0`0``28E6,$F)5CA(C9#H`0``
+M28E62$F)5E!(!0`"``!)B49@28E&:$'&1@H"_\5F00^V1"0^9CGH=X-!QD0D
+M3`"]``````^WQ4+&A"#&"```___%9H/]`W;LO0````"`?"1+``^$D`````^W
+MS4F+E"08"0``2&G!B`$``,9$$$,!28N4)!@)``#&1!!"`$F+E"08"0``QD00
+M>/])BY0D&`D``,9$$&K_28N4)!@)``!FQX00P```````2<>$S$`$````````
+M2(G!20.,)!@)``!(C5$@2(E1($D#A"08"0``2(/`($B)0`C_Q68/MD0D2V8Y
+MZ`^'</___V9!QX0DW```````O0````!F9I!F9I`/M\5"QH0@0`@``/__Q6:!
+M_84`=NN]`````(!\)$P`#X3"````#[?528N$)&@)``!(:=+(#P``QD0"6`!)
+MBX0D:`D``,9$`ED`28N$)&@)``!(QT0"$`````!(B=%)`XPD:`D``$B-01A(
+MB4$82(G020.$)&@)``!(@\`82(E`"$B)T4D#C"1H"0``2(U!*$B)02A(B=!)
+M`X0D:`D``$B#P"A(B4`(28N$)&@)``!,B70""$B)T4D#C"1H"0``2(U!2$B)
+M04A)`Y0D:`D``$B#PDA(B5((_\5F#[9$)$QF.>@/AS[___]!QH0DWP```("]
+M`````(!\)$T`#X2'````#[?528N$)$`)``!(:=+0````9L=$`DX$`$F+A"1`
+M"0``QD0"0@!)BX0D0`D``,9$`D3_28N$)$`)``#&1`)0_TB)T4D#C"1`"0``
+M2(U!*$B)02A(B=!)`X0D0`D``$B#P"A(B4`(28N$)$`)``!,B;0"B````/_%
+M9@^V1"1-9CGH#X=Y____0<:$).````""28VT))@0``!)C;PD<!```.@`````
+M28F$))`0``!)C;0DR!```$F-O"2@$```Z`````!)B80DP!```$F-M"3X$```
+M28V\)-`0``#H`````$F)A"3P$```28VT)"@1``!)C;PD`!$``.@`````28F$
+M)"`1``!)C;0D6!$``$F-O"0P$0``Z`````!)B80D4!$``$F-M"2($0``28V\
+M)&`1``#H`````$F)A"2`$0``38NT)(@1``!)B<6]`````(!\)%0`=$A)C9PD
+M*`$``$B)W^@`````2(G"3(EH$$R)<!A(BT,(2(E3"$B)&DB)0@A(B1!)@<4`
+M"```28'&``@``/_%9@^V1"149CGH=\!)C;0DN!$``$F-O"20$0``Z`````!)
+MB80DL!$``$V+M"2X$0``28G%O0````!F.VPD4G-$28V<)#@!``!(B=_H````
+M`$B)PDR):!!,B7`82(M#"$B)4PA(B1I(B4((2(D028'%C`$``$F!QHP!``#_
+MQ68[;"12<L1(@\1@6UU!7$%=05[#9F9FD&9F9I!F9I!F9I!!5T%6055!5%53
+M2(/L"$F)_,9$)`<`2`^V1"0'0@^VE"#&"```@/K_#X2;````#[;"2&G`J```
+M`$Z-M""@`0``0;T`````08!^#@!V?$F-;F!-B?=(B>_H`````$B)PTB+10A(
+MB5T(2(DK2(E#"$B)&$B#>S@`=!I(BU,X28NT)-`(``"_!0```.@`````@$M$
+M`DB)VKX"````3(GWZ`````"`>WL`=!A,B>?H`````+\!````Z`````"`>WL`
+M=>A!_\5%.&\.=XO^1"0'@'PD!P,/AC[___],B>?H`````$B#Q`A;74%<05U!
+M7D%?PY!(@^P(2#E^*'5F#[9..(#Y"`^5P(#Y*`^5P@^VP(7"=&B`^:AT8X#Y
+MB'1>@/D*#Y7`@/DJ#Y7"#[;`A<)T2X#YJG1&@/F*=$%(C9?H````2(N'Z```
+M`$B)<`A(B09(B58(2(FWZ````.L?9F:09F:02(V'Z````$B+4`A(B7`(2(D&
+M2(E6"$B),N@`````2(/$",-F9F:09F:09F:09F:02(/L".@`````2(/$",-F
+MD$%455-(B?-(B=5!O`````!F@7XXX0%U"P^V1CJ#Z!$\`78R2(L72(NR&`D`
+M`$R-IGB&`0!F@7L@A0!W&4@/MT,@2`^VA!!`"```2&G`B`$``$R-)`;&100%
+M@&4%_H!E`-^Z`````&:!>SCA`742#[9#.O_(/`&X`0````]&T&:0B=#!X`</
+MME4`@^)_"<*(50`/MH.6````@^`!P>`&@^*_"<*(50!F@7LXX0%U$@^V0SJ#
+MZ!$\`7<'9HE-".L<D/:#E@````%T#DR)Y^@`````9HE%".L$9HE-"`^W10B(
+M0R5F@7LXX0%U+@^V0SK_R#P!=PP/ME,[ZS%F9I!F9I!F@7LXX0%U$`^V0SJ#
+MZ!&Z#P```#P!=A.Z`````$F#?"18`'0&00^V5"1Y@^(/#[9%`(/@\`G0B$4`
+M6UU!7,.02(/L"$B+/^@`````2(/$",-F9F:09F9FD&9F9I!F9I!,BP</MX<X
+M$@``_\!FB8<X$@``9CN'/!(``'()9L>'.!(`````2`^WCS@2``!(BY<@$0``
+MBP:)!(H/MX<X$@``08F`+`$``,-F9F:09F9FD$&)T4&X`````+H$````2(G(
+M1(@`2/_`2/_*=?6)\H'B_P\``(L!)0#P__\)T(D!#[97#<'B#"7_#_#_"=")
+M`4@/MD<*2-'H@^`!@_@!&<"#X`+_P,'@'8L1@>+___\?"<*)$0^V00.#R!"#
+MX/>(00/V1PH!=!1$B<J#XG_!XA2+`27__P_X"=")`?/#9F9FD$B#[#A(B5PD
+M"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?Q(B?-)B==!O@`````/MD8X
+M/`@/E,(\*`^4P`G0J`%U#(!^.*AT!H!^.(AU#X.+E`````KK+69FD&9FD`^V
+M1C@\"@^4PCPJ#Y3`"="H`74,@'XXJG0&@'XXBG4'@XN4`````F:!>SCA`74A
+M#[9#.H/H$3P!=Q:#BY0````(N`````#I104``&9FD&:0BT,X)?___P`]X0$0
+M``^%(`$``&:!>R"%``^'H0```$@/MT,@0H"\($`(``#_#X2-````9H-[(']W
+M)$H/MH0@0`@``$F+E"08"0``2&G`B`$``$B+1!!(1`^V:`CK:&:!>R"!`'<I
+M2`^W0R!*#[:$($`(``!)BY0D:`D``$AIP,@/``!(BT00"$0/MF@(ZS=(#[=#
+M($H/MH0@0`@``$F+E"1`"0``2&G`T````$B+A!"(````1`^V:`CK"V9FD&:0
+M0;W_____1(GJ#[;"2@^VK"#&"```2&GMJ````$J-K"6@`0``28N4)&@)``!(
+MC8(XN`\`9H%[((4`=QE(#[=#($H/MH0@0`@``$AIP,@/``!(C00"]D!=$`^%
+M@@$``,9#)`1!QP<`````N`$```#I#00``&:!>R"%``^'H0```$@/MT,@0H"\
+M($`(``#_#X2-````9H-[(']W)DH/MH0@0`@``$F+E"08"0``2&G`B`$``$B+
+M1!!(1`^V:`CK:&:09H%[(($`=RE(#[=#($H/MH0@0`@``$F+E"1H"0``2&G`
+MR`\``$B+1!`(1`^V:`CK-4@/MT,@2@^VA"!`"```28N4)$`)``!(:<#0````
+M2(N$$(@```!$#[9H".L)9F:00;W_____NO\```!F@7L@A0!W#T@/MT,@9D(/
+MMI0@0`@``$2)Z0^VP4H/MJP@Q@@``$AI[:@```!*C:PEH`$```^WPDAIP(@!
+M``!)B<9-`[0D&`D``&:!>SCA`74*#[9#.O_(/`%V*6:!^O\`=`=!]D9#!'4;
+MQD,D!D''!P````"X`0```.G6`@``9F:09F:020^V1D"H`70GJ`1T(T$/MD0D
+M1$$Z1"1.<A9!QP<!````N`$```#II0(``&9FD&:0387V#X37````20^V1D"H
+M`0^$R@```*@$#X3"````2(G>3(GWZ`````"$P'45QD,D!$''!P````"X`0``
+M`.E>`@``08!^>Q]V$4''!P$```"X`0```.E&`@``]H.6`````70&]D4,`70;
+M]H.6`````74&]D4,`74,@'LD@70&]D4,"'0A00^V]4R)Y^@`````A,!T$4''
+M!P$```"X`0```.G[`0``]H.6`````0^$;@$``/9%#`$/A&0!``!,B??H````
+M`&:#^!\/AE(!``!!QP<!````N`$```#IP0$``)#V10H"="N+0S@E____`#WA
+M`1``=!Q!#[9&>T$Z1GIR$4''!P$```"X`0```.F/`0``BT,X)?___P`]X0$0
+M``^$_````$D/MT9B2(G"2-'J@^(!N0$```"`>SCA#X7?````@'LY`0^%U0``
+M``^V0SJ#Z`:#^`D/AZT```")P/\DQ0`````/MLFZ`0```$B)WDR)Y^@`````
+MA,`/A:$```!!QP<"````N`$```#I$`$```^VR;H`````2(G>3(GGZ`````"$
+MP'5Y0<<'`@```+@!````Z>@````/MM*Y`0```$B)WDR)Y^@`````A,!U44''
+M!P(```"X`0```.G`````#[;2N0````!(B=Y,B>?H`````(3`=2E!QP<"````
+MN`$```#IF````,9#)`1!QP<`````N`$```#I@P```&9FD$F-O"18#P``Z```
+M``"$P'0/0<<'`0```+@!````ZV&0@'LXX751@'LY`75+@'LZ#W5%@'L]`74_
+M9@^V<SS!Y@AF#[9#.P'&#[?V3(GGZ`````!(.4-H#Y7"2(7`#Y3`"="H`702
+MQD,D!$''!P````"X`0```.L)N`````!F9F:02(M<)`A(BVPD$$R+9"083(ML
+M)"!,BW0D*$R+?"0P2(/$.,-F9F:09F:09F:09F:0N0````"Z#0```$B)\&9F
+MD(@(2/_`2/_*=?8/MD<YB`8/MD<ZB$8!#[9'.XA&`@^V1SR(1@,/MD<]B$8$
+M#[9'/HA&!0^V1S^(1@;VAY8````$=",/MD=`B$8(#[9'08A&"0^V1T*(1@H/
+MMD=#B$8+#[9'1(A&#+@!````PV9F9I"Z`````$&Y`````&9FD&:0N0<```!)
+M8\%$#[8$,&9FD`'21(G`T_BH`705]\(````!=1V!\G<GVP#K%69FD&:0B=`U
+M=R?;`/?"`````0]%T/_)><Q!_\%!@_D'?K.)T,'H$(@'B=#!Z`B(1P&(5P+#
+M05=!5D%505154TB#[%A)B?Y(B?5(BX?P$```2(E$)"!(QT0D$`````!!O```
+M``!(QT0D"`````!!O0````!FQT8R_P](C50D/.@`````A,!T"8M$)#SID`P`
+M`(M%."7___\`/>$!$``/A1(!``"_B!,``.@`````9H%]((4`#X><````2`^W
+M12!"@+PP0`@``/\/A(@```!F@WT@?W<B2@^VA#!`"```28N6&`D``$AIP(@!
+M``!(BT002`^V0`CK9&:!?2"!`'<G2`^W12!*#[:$,$`(``!)BY9H"0``2&G`
+MR`\``$B+1!`(#[9`".LU2`^W12!*#[:$,$`(``!)BY9`"0``2&G`T````$B+
+MA!"(````#[9`".L+9F:09F:0N/____\/ML!*#[:$,,8(``!(:="H````2HV,
+M,J`!``!(B4PD&$F+EF@)``!,C:(XN`\`9H%]((4`#X>8`0``2`^W12!*#[:$
+M,$`(``!(:<#(#P``3(TD`NEZ`0``9F:0N?\```!F@7T@A0!W#T@/MT4@9D(/
+MMHPP0`@``&:!?3CA`74/#[9%.H/H$3P!#X;?````9H%]((4`#X>6````2`^W
+M12!"@+PP0`@``/\/A((```!F@WT@?W<B2@^VA#!`"```28N6&`D``$AIP(@!
+M``!(BT002`^V0`CK7F:!?2"!`'<G2`^W12!*#[:$,$`(``!)BY9H"0``2&G`
+MR`\``$B+1!`(#[9`".LO2`^W12!*#[:$,$`(``!)BY9`"0``2&G`T````$B+
+MA!"(````#[9`".L%N/____\/ML!*#[:$,,8(``!(:=BH````2HV$,Z`!``!(
+MB40D&`^WP4AIP(@!``!)`X88"0``2(E$)!#K(@^WP4AIP-````!)`X9`"0``
+M2(E$)`A(BY"(````2(E4)!AF@7TXX0%U&P^V13J-4.^`^@$/E\+_R#P!#Y?`
+M#[;2A=!T(&:!^?\`=`M(BTPD$/9!0P1U#L9%)`:X`````.GT"0``2(UT)#!,
+MB??H`````$&)QV:)13),B??H`````$B)P[@"````2(7;#X3'"0``2(F=@```
+M`$$/M\](:<FP!```2`-,)"!(B<A)*X;P$```2(G&20.V^!```$B#QB!(BT0D
+M,(EP($B)\DC!ZB!(BT0D,(E0)$B+<QA(BT0D,(EP*$B)\DC!ZB!(BT0D,(E0
+M+$B+1"0P9D2)>`B^`````+JP!```2(G(9F9FD$"(,$C_P$C_RG7U9H%]..$!
+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
+M)"$$``!,B>[H`````$F-O"0E!```3(GNZ`````!(BT4X28F$)$0$``!(BT5`
+M28F$)$P$``!!Q@0DD4B+3"00#[:1X@```(/B#TB+3"0@#[9$"P&#X/`)T(A$
+M"P%(BU0D$`^W0C#_P`^VT,'B"`^VQ`G09HE$"P)-A>T/A)(```!!#[?'2&G`
+ML`0``$F+50!(BTPD($B)5`@$ZW=(BUPD&/9#"@%T;$$/M\](BU0D,$B)[DB)
+MW^@`````]H66`````7002(M$)#`/MT`(P>`#B$0D04B-3"1`00^WUTAITK`$
+M``!(`U0D($B)[DB+?"08Z`````#VA98````!=`M(BT0D&(!(#`'K"4B+5"08
+M@&(,_D$/M]=)BX:0"0``2(DLT$2)^F;!Z@4/M])$B?F#X1^X`0```$C3X$$)
+MA):8"0``BT4X)?___P`]X0$0`'4O00^W]TB-3"0LN@````!(BWPD&.@`````
+MBT0D+"7___\?#0```$")1"0LZ:$```!F@7TXX0%U-@^V13J#Z!$\`7<K2(MT
+M)`A,B??H`````$B+3"0(#[914$$/M_=(C4PD+$B+?"08Z`````#K8TB+="00
+M3(GWZ`````!(BUPD$`^V4VI!#[?W2(U,)"Q(BWPD&.@`````2`^V0T"H`G0Q
+MJ`1T+:@!9I!T)XM$)"PE____'PT```!@B40D+`^V4VJ#XG_!XA0E__\/^`G0
+MB40D+$B-="0L3(GWZ`````"X`P```$B#Q%A;74%<05U!7D%?PV9FD&9FD$B#
+M["!(B5PD"$B);"003(ED)!B)\DB+'XGP9L'H!0^WZ(M$JUQ!B=1!@^0?1(GA
+M2-/XJ`%U.@^W]DB-3"0$N@````#H`````(%,)`0```#@2(UT)`2`9@/W2(G?
+MZ`````"X`0```$2)X4C3X`E$JUQ(BUPD"$B+;"003(MD)!A(@\0@PV9F9I!F
+M9F:09F9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD($F)_$B)]4B+1G!,BV@H
+M9H%^((4`#X>N````2`^W1B"`O#A`"```_P^$FP```&:#?B!_=RE(#[:$.$`(
+M``!(BY<8"0``2&G`B`$``$B+1!!(2`^V0`A(!<`(``#K<&:!?B"!`'<N2`^W
+M1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(2`^V0`A(!<`(``#K.D@/
+MMT8@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B````$@/MD`(2`7`"```
+MZPEF9F:0N+\)``!)#[9<!`9(:=NH````2HV<(Z`!``!(@WUX`'0/2(MU>$R)
+MY^@`````9F:02(GN3(GGZ`````!,B>Y(B=]!_Y6@````2(M<)`A(BVPD$$R+
+M9"083(ML)"!(@\0HPV9F9I!F9F:09F9FD&9FD$B#[#A(B5PD"$B);"003(ED
+M)!A,B6PD($R)="0H3(E\)#!)B?9)B?U,BS](C5](2(G?Z`````!)B<1)@^PX
+M3(G_Z`````!(B<5)C40D.$B+4PA(B4,(28E<)#A(B5`(2(D"N`$```!(A>UT
+M>4B-?5C&13CAQD4Y`<9%.A"`33L!28N&H````$B)16A(BT5P3(EP*$F-AI``
+M``!(B450QD4ES&9!#[9$)%MFB44@28M%`$B)12C'1320````3(EU2$C'A:``
+M````````O@````#H`````$B)[DR)_^@`````N`````!(BUPD"$B+;"003(MD
+M)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!F9F:02(/L*$B)'"1(B6PD"$R)
+M9"003(EL)!A,B70D($B)\TB)_4R+;TA-BV4`#[=.,HG.9L'N!0^WQD&+1(1<
+M@^$?2-/XJ`$/A68#``!)BQ0D#[?&C02%``,``(F"<`$``$F+!"2+@'0!``")
+M!0````")PL9#)"&+0S@E____`#WA`0\`=2*^`````$B)W^@`````N@````!(
+MB=Y,B>?H`````.D+`P``B=`/MTLR@^$?2-/XJ`%T&[X!````2(G?Z`````!,
+MB>?H`````&9FD&9FD`^VA>````"#^`0/A]`"``")P/\DQ0````#&A>`````!
+MN@$```!(B=Y,B>_H`````.FK`@``QH7@`````KH(````2(G>3(GOZ`````#I
+MCP(``,:%X`````-(B>J^(0```$R)[^@`````2(-]4`!T(`^V57E(BW500;@`
+M````N0$```!,B>_H`````.E1`@``00^V=0VZ`````$R)Y^@`````Z3H"``#&
+MA>`````$2(-]4`!T,$B)ZKXA````3(GOZ``````/ME5Y2(MU4$&X`````+D"
+M````3(GOZ`````#I_`$``+H`````OB$```!,B>_H`````$$/MG4-N@$```!,
+MB>?H`````.G3`0``2(GJO@8```!,B>_H`````$B#?3@`=!9(BT4XBT@$C5$!
+MB5`$@_D%#X:F`0``QD5#`<9%0@"`?7L`=!A,B>?H`````+\!````Z`````"`
+M?7L`=>A(@WU0`'082(M5&$B+11!(B5`(2(D"2(M%4/Y(6.L92(-]6`!T$DB+
+M55A(#[9%>4C'1,)8`````$B+50A(BT4`2(E0"$B)`D'^30Y(@[T8`0```'08
+M#[:U!0$``$B+O1@!``"Z`0```.@`````2(-]4`!T$@^V=7E(BWU0N@$```#H
+M`````$B#?3@`#X2"````2(M%.$C'0&``````0?Z$).\3``!,B>?H`````$B+
+M13@/MG`!N@$```!,B>?H`````$B+13@/ME`"#[9P`4C'QP````"X`````.@`
+M````2(M5.$F+M"30"```OP$```#H`````$B+53A)B[0DT`@``+\&````Z```
+M``!(QT4X`````$B)[DR)Y^@`````08!]"?]T6T&^`````$&`?0X`=CE)C5U@
+M2(G?Z`````!(B<5(BT,(2(EK"$B)70!(B44(2(DH@'U"_W4+0?_&13AU#G?3
+MZP9%.'4.=Q5!QD4)_TR)[DR)Y^@`````9F:09I!(BQPD2(ML)`A,BV0D$$R+
+M;"083(MT)"!(@\0HPV9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H
+M3(E\)#!(B?-(B?U,BV=(38LL)$&_`````$'V1"0,$'0'QH?@````!@^VA>``
+M``"#^`$/A(L```"#^`%_"X7`=!YFD.G[`P``@_@$#X2B````@_@&#X3Y`0``
+MZ>0#``#&A>`````!2(GN3(GOZ`````#&0R2!08!,)`P(2(.[@`````!T#TB-
+MLX````!,B>_H`````$F-E>@```!)BX7H````2(E8"$B)`TB)4PA)B9WH````
+M3(GOZ`````#I@@,``&:008!D)`SW_H7C````QH7@`````,9#)`)(B=Y,B>_H
+M`````$R)[^@`````Z5$#``"0QH7C`````$B#?3@`#X1.`0``2(M%.(M(!(U1
+M`8E0!(/Y!0^'.`$``$&`9"0,]TB#NX``````=`](C;.`````3(GOZ`````!)
+MC97H````28N%Z````$B)6`A(B0-(B5,(28F=Z````$&`3"0,$$B#?5``="`/
+MME5Y2(MU4$&X`````+D"````3(GGZ`````#IO`(``,9$)`<`08!\)`X`#X:G
+M````38UT)&!F9I!F9I!,B??H`````$B)PTF+1@A)B5X(3(DS2(E#"$B)&$B#
+M>S@`=!Q(BU,X28NUT`@``+\%````Z`````"`2T0"9F:02(G:O@8```!,B>?H
+M`````(![>P!T,D2)^$'_QSU_EI@`=R5,B>_H`````+\!````Z`````"`>WL`
+M=`U$B?A!_\<]?Y:8`';;_D0D!P^V1"0'03A$)`X/AV3____&14(#2(GN3(GO
+MZ`````#I\`$``$F-E>@```!)BX7H````2(E8"$B)`TB)4PA)B9WH````2(-]
+M.`!T%DB+13B+2`2-40&)4`2#^04/AI8!``!(Q\<`````N`````#H`````$B)
+MZKX&````3(GGZ`````!!_DPD#DB+50A(BT4`2(E0"$B)`DB#?5``=!A(BT50
+M_DA82(M5&$B+11!(B5`(2(D"ZQ](@WU8`'082(M56$@/MD5Y2,=$PE@`````
+M9F:09F:0@'U[`'0R1(GX0?_'/7^6F`!W)4R)[^@`````OP$```#H`````(!]
+M>P!T#42)^$'_QSU_EI@`=MM(BU4(2(M%`$B)4`A(B0)(@[T8`0```'0?#[:U
+M!0$``$B+O1@!``"Z`0```.@`````9F9FD&9FD$B#?5``=!D/MG5Y2(M]4+H!
+M````Z`````!F9F:09F:02(-].`!T?TB+13A(QT!@`````$'^A>\3``!,B>_H
+M`````$B+13@/MG`!N@$```!,B>_H`````$B+13@/ME`"#[9P`4C'QP````"X
+M`````.@`````2(M5.$F+M=`(``"_`0```.@`````2(M5.$F+M=`(``"_!@``
+M`.@`````2,=%.`````!(B>Y,B>_H`````.L02(GJO@(```!,B>?H`````$R)
+M[^@`````9F:09I!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0X
+MPV9F9I!F9I!F9I!F9I!!5D%505154TB)\TF)_$R+KX@```!)BVT`0?9%#!!T
+M!,9'409!#[9$)%&#^`$/A(D```"#^`%_#87`="!F9F:0Z7L#``"#^`0/A)H`
+M``"#^`4/A)<!``#I9`,``$'&1"11`4R)YDB)[^@`````QD,D@4&`30P(2(.[
+M@`````!T#TB-LX````!(B>_H`````$B-E>@```!(BX7H````2(E8"$B)`TB)
+M4PA(B9WH````2(GOZ`````#I!`,``$&`90SW0?Y$)%)!QD0D40#&0R0"2(G>
+M2(GOZ`````!(B>_H`````.G8`@``08!E#/=(@[N``````'0/2(VS@````$B)
+M[^@`````2(V%Z````$B+E>@```!(B5H(2(D32(E#"$B)G>@```"Z`````+X&
+M````3(GOZ`````!!#[9U#;H!````2(GOZ`````!!O@````!!@'T.``^&?```
+M`$V-96"03(GGZ`````!(B<-)BT0D"$F)7"0(3(DC2(E#"$B)&$B#>S@`=!I(
+MBU,X2(NUT`@``+\%````Z`````"`2T0"D$B)VKX&````3(GOZ`````"`>WL`
+M=!A(B>_H`````+\!````Z`````"`>WL`=>A!_\9%.'4.=XE!QD4)`$&`30P0
+M3(GOZ`````#IT@$``$&`90SW2(.[@`````!T#TB-LX````!(B>_H`````$B-
+MA>@```!(BY7H````2(E:"$B)$TB)0PA(B9WH````28U%8$B)PDDY16`/A.$`
+M``!)B<9(B=?H`````$B)PTB#>#@`=!Y(BU`X2(NUT`@``+\%````Z`````"`
+M2T0"9F:09I!(B=J^!@```$R)[^@`````@'M[`'082(GOZ`````"_`0```.@`
+M````@'M[`'7H2(-[.`!T84B+0SA(QT!@`````/Z%[Q,``$B)[^@`````2(M#
+M.`^V<`&Z`0```$B)[^@`````2(M3.$B+M=`(``"_`0```.@`````2(M3.$B+
+MM=`(``"_!@```.@`````2,=#.`````!(B=Y(B>_H`````$R)\DTY=6`/A2+_
+M__^Z`````+X&````3(GOZ`````!,B>9(B>_H`````$G'14``````2(M%`(N0
+M6`$``(D5`````(72=`I(BT4`B9!8`0``0?9%"@%T6$&^`````(!]0P!V&TD/
+MME4-2(G01(GQ2-/XJ`%U"4'_QD0X=4-WZD$/MO9(B>_H`````$R)[DB)[^@`
+M````1(GR#[;"2&O`:$C'A"A($@```````&9F9I!;74%<05U!7L-F9F:09F:0
+M05=!5D%505154TB#[`A)B?Q,BW=(28L>2(G^2(G?Z`````!!@+PDXP````%V
+M"4'&A"3@````!$F-;"0@23EL)"`/A#D"``!(B>_H`````$F)QTF+1"0@3(EX
+M"$F)!TF);PA-B7PD($&]`````.G6`0``00^WU4B+@Y`)``!(BRS02(7M#X2[
+M`0``00^W1"0P9CM%(`^%JP$```^WBSH2``!(BX-0$0``.0AT5&9F9I#_P0^W
+M@SX2```YR+@`````#T;(C5$!2(N#4!$``(L$D*D```@`=1XE_P\``&9!.<5U
+M$TDY[W492(G?Z`````"0Z8L!``!(BX-0$0``.0AUL$&`?E@`#X4Z`0``9H%]
+M((4`#X<N`0``2`^W12"`O!A`"```_P^$&P$``$V%Y`^$``$``$D/MD0D0*@!
+M#X3R````J`0/A.H```!(BQ,/MT4R9L'H!0^WP(T$A0`#``")@G`!``!(BP,/
+MMTTR@^$?N@$```!(B=9(T^:)L'0!``!(#[=-,DB+@Y`)``!(QP3(``````^W
+M33*)R&;!Z`4/M\"#X1](B=9(T^9(B?'WT2&,@Y@)```/MTTRB<AFP>@%#[?`
+M@^$?2-/B]](A5(-<3#G]=$E(BU4(2(M%`$B)4`A(B0)(@[V``````'0/2(VU
+M@````$B)W^@`````2(V3Z````$B+@^@```!(B6@(2(E%`$B)50A(B:OH````
+M#[=U,DB-NU@/``#H`````$'^3"1[ZQ)!]D8*`G0+2(GN3(GGZ`````!!_\5F
+M1#EK6`^''_[__TV%Y'0H20^V1"1`J`%T'J@$=!I)BU<(28L'2(E0"$B)`DR)
+M_DR)Y^@`````D$B#Q`A;74%<05U!7D%?PY!!5D%505154TF)_$R+MX@```!)
+MBQY(B?Y(B=_H`````$&`?"12`78&0<9$)%$$28UL)"A).6PD*`^$\@$``$B)
+M[^@`````28G%28M$)"A,B6@(28E%`$F);0A-B6PD*+T`````Z9L!``!F9F:0
+M9F:0#[?52(N#D`D``$B+--!(A?8/A'L!``!!#[=$)$!F.T8@#X5K`0``#[>+
+M.A(``$B+@U`1```Y"'179F9FD&9FD/_!#[>#/A(``#G(N``````/1LB-40%(
+MBX-0$0``BP20J0``"`!U'B7_#P``9CG%=11).?5U&DB)W^@`````9I#I.P$`
+M`$B+@U`1```Y"'6P9H%^((4`#X?V````2`^W1B"`O!A`"```_P^$XP```$&`
+M?E@`#X78````0?9&"@$/A,T```!(BQ,/MT8R9L'H!0^WP(T$A0`#``")@G`!
+M``!(BP,/MTXR@^$?N@$```!(B==(T^>)N'0!``!(#[=.,DB+@Y`)``!(QP3(
+M``````^W3C*)R&;!Z`4/M\"#X1](B==(T^=(B?GWT2&,@Y@)```/MTXRB<AF
+MP>@%#[?`@^$?2-/B]](A5(-<3#GN="Y(BU8(2(L&2(E0"$B)`DB-D^@```!(
+MBX/H````2(EP"$B)!DB)5@A(B;/H````#[=V,DB-NU@/``#H`````$'^3"1%
+M_\5F.6M8#X=B_O__0?9&"@%T&TF+50A)BT4`2(E0"$B)`DR)[DR)Y^@`````
+MD%M=05Q!74%>PV9F9I!F9I!!5T%6055!5%532(/L"$B)_4&^`````$B-A^@`
+M``!(B<)(.8?H````#X33`0``28G'28G%28G42(G7Z`````!(B<-(@WAP`'4O
+M2(GOZ`````!(B4-P2(7`=1Y(BX7H````2(E8"$B)`TR)8PA(B9WH````Z8D!
+M``"+0S@E____`#WA`1``#X3L````9H%[((``#X3@````9@^V0R!FB4,@9H/X
+M?W8:9H%[..$!=2D/MD,Z@^@1/`%W'F9F9I!F9I!F@7L@A0!W#T@/MT,@@+PH
+M0`@``/]U&<9#)`9(B=Y(B>_H`````.D&`0``9F:09I!F@7LXX0%U"P^V0SJ#
+MZ!$\`78O2(N5&`D``$R-LGB&`0!F@7L@A0!W&4@/MT,@2`^VA"A`"```2&G`
+MB`$``$R--`)F@7LXX0%U"@^V0SK_R#P!=C-F@7L@@`!T*V:!>SCA`74+#[9#
+M.H/H$3P!=AA!]D9#!'41QD,D!DB)WDB)[^@`````ZWI(B=Y(B>_H`````(/X
+M`G<+@_@!<R9F9F:0ZQ"#^`-T3V9FD&9FD&9FD.M/2(G>2(GOZ`````!F9I#K
+M/TB#NX``````=`](C;.`````2(GOZ`````!(BX7H````2(E8"$B)`TR)>PA(
+MB9WH````ZQM(B=Y(B>_H`````$R)ZDPYK>@````/A3/^__](@\0(6UU!7$%=
+M05Y!7\-!5T%6055!5%532(/L2$F)_4"(="0P2`^V5"0P2&O2:$@!^DR+LD@2
+M``!(Q\#^____B?%(T\`B@FD2``"(1"0O3(L_QT0D*`````!`@/X#=@U!QX=P
+M`0``Q`$``.L+0<>'<`$``*@!``!!BX=T`0``B04`````#[9,)#"#X0.[!P``
+M`-/CB<4)W4&)KW0!``"_Z`,``.@`````]],AW4&)KW0!``"`?"0P`W8@#[9$
+M)#!(P>`")?P#``!"BX0XT`$``(D%`````(G%ZQX/MD0D,$C!X`(E_`,``$*+
+MA#C0`0``B04`````B<6#S0B`?"0P`W88#[9$)#!(P>`")?P#``!"B:PXT`$`
+M`.L6#[9$)#!(P>`")?P#``!"B:PXT`$``(!\)#`#=AP/MD0D,$C!X`,E^`<`
+M`$+'A#@``@``.````.L:#[9$)#!(P>`#)?@'``!"QX0X``(``#@```"_$"<`
+M`.@`````@'PD,`-V'`^V1"0P2,'@`R7X!P``0L>$.`0"````````ZQH/MD0D
+M,$C!X`,E^`<``$+'A#@$`@```````$V%]@^$[@<``$&\`````$&`?4,`=BUF
+M9F:020^V1@U!#[;,2-/XJ`%T$+H!````B<Y,B>_H`````)!!_\1%.&5#=]=!
+M]D8*`71B3(GV3(GOZ``````/MG0D,$R)[^@`````2`^V1"0P2&O`:$J-E"A@
+M$@``BT(,J0``$`!T""7__^__B4(,3(GV3(GOZ`````!(#[9$)#!(:\!H2L>$
+M*$@2````````Z4L'``!!@'Y8`'0328N]:!```$R)]N@`````0?Y.6(!\)"\`
+M#X2I`@``2,=$)"``````QD0D'P`/MG0D,$R)[^@`````2`^V1"0P2&O`:$J-
+ME"A@$@``BT(,J0``$`!T""7__^__B4(,#[9$)"]!B$8-0;P`````08!]0P`/
+MAI,!``!(#[94)"](B50D$`^VR(E,)`Q!#[;,2(M$)!!(T_BH`0^$8`$``$2)
+MX@^VPDAKP&@/ME0D+T*(E"AI$@``08#\`W87C03-`````$B80L>$.``"```X
+M````ZQE*C03E`````"7X!P``0L>$.``"```X````OQ`G``#H`````$&`_`-V
+M&TJ-!.4`````)?@'``"+3"0,0HF,.`0"``#K&4J-!.4`````)?@'``"+5"0,
+M0HF4.`0"``!!@/P#=@U!QX=P`0``Q`$``.L+0<>'<`$``*@!``!!BX=T`0``
+MB04`````1(GA@^$#NP<```#3XXG%"=U!B:]T`0``O^@#``#H`````/?3(=U!
+MB:]T`0``08#\`W8?2HT$I0`````E_`,``$*+A#C0`0``B04`````B<7K'4J-
+M!*4`````)?P#``!"BX0XT`$``(D%`````(G%@\T(08#\`W872HT$I0`````E
+M_`,``$*)K#C0`0``ZQ5*C02E`````"7\`P``0HFL.-`!``!!_\1%.&5##X=_
+M_O__28U&2$B)PDDY1DAT-DB)TTB)U^@`````2(U(R$B)3"0@2(M3"$B)0PA(
+MB1A(B5`(2(D"2(-XV`!T"4B)VDDY7DAURDB#?"0@`'1%2(M$)"#&0%H`0;P`
+M````08!]0P!V+TD/MD8-1(GA2-/XJ`%T%T@/MD0D'TB+5"0@1(AD$'#^0EK^
+M1"0?0?_$13AE0W?1N@````"^@0```$R)]^@`````2`^V1"0P2&O`:$K'A"A(
+M$@```````.EH`P``N@````"^!@```$R)]^@`````#[9T)#!,B>_H`````$@/
+MMD0D,$AKP&A*C90H8!(``(M"#*D``!``=`@E___O_XE"#$F-1DA(B<)).49(
+M#X3L`0``2(D$)$B)U^@`````3(U@R$B-4!!(.5`0#X2Q`0``28U\)$CH````
+M`$B-6/"`>T$-=1I(C;!(`0``2(M#2$B+`$B+>"CH`````&9FD$B+4PA(BP-(
+MB5`(2(D"@'M[`'083(GOZ`````"_`0```.@`````@'M[`'7H2(-[.``/A"@!
+M``!(BT,X2,=`8`````"`>WL`#X29````O0````!F08-]6``/A(@```!FD$AC
+MU4F+A9`)``!(BS302(7V=&0/MT8@9CM#,'5:9CV%`'=4#[?`0H"\*$`(``#_
+M=$9)BU4`#[=&,F;!Z`4/M\"-!(4``P``B8)P`0``28M%``^W3C*#X1^Z`0``
+M`$C3XHF0=`$``,9&)"&Z`````$R)[^@`````_\5!#[=%6#GH#X]Z____]D-$
+M!'4D0?Z%[Q,``$R)[^@`````2(M#.`^V<`&Z`0```$R)[^@`````2(M#.`^V
+M4`(/MG`!2,?'`````+@`````Z`````!(BU,X28NUT`@``+\!````Z`````!(
+MBU,X28NUT`@``+\&````Z`````!(QT,X`````$'^3@Y!_DPD6$B)WDR)[^@`
+M````28U$)$A).40D2`^%3_[__T'^3BA,B>9,B>_H`````$B+%"1).59(#X48
+M_O__28U&8$B)PDDY1F`/A/8```!(B<5(B=?H`````$B)PX!X>P!T-HM$)"C_
+M1"0H/7^6F`!W)TR)[^@`````OP$```#H`````(![>P!T#XM$)"C_1"0H/7^6
+MF`!VV4B#>S@`#X2%````2(M#.$C'0&``````]D-$!'4D0?Z%[Q,``$R)[^@`
+M````2(M#.`^V<`&Z`0```$R)[^@`````2(M#.`^V4`(/MG`!2,?'`````+@`
+M````Z`````!(BU,X28NUT`@``+\!````Z`````!(BU,X28NUT`@``+\&````
+MZ`````!(QT,X`````$'^3@Y(B=Y,B>_H`````$B)ZDDY;F`/A0W___],B?9,
+MB>_H`````$@/MD0D,$AKP&A*QX0H2!(```````!!O`````!!@'U#``^&!`$`
+M`$P/MG0D+Y!,B?)$B>%(T_I$.F0D,`^4P`G0J`$/A-4```!!@/P#=@U!QX=P
+M`0``Q`$``.L+0<>'<`$``*@!``!!BX=T`0``B04`````1(GA@^$#C0Q)NP<`
+M``#3XXG%"=U!B:]T`0``O^@#``#H`````/?3(=U!B:]T`0``08#\`W8?2HT$
+MI0`````E_`,``$*+A#C0`0``B04`````B<7K'4J-!*4`````)?P#``!"BX0X
+MT`$``(D%`````(G%@\T(08#\`W872HT$I0`````E_`,``$*)K#C0`0``ZQA*
+MC02E`````"7\`P``0HFL.-`!``!F9I!!_\1%.&5##X<#____2(/$2%M=05Q!
+M74%>05_#9F9FD$B#[`A,BP>Z`````$&`>$,`=AP/ML)(:\!H2HV$`$`2``!(
+M.?AT"/_"03A00W?D#[;"2&O`:$P!P$B+L$@2``!(A?9T:_9&"@)T94@%0!(`
+M`$@Y1B!U68!^6`!T*/Y&6.M._D9800^VB;L```!)B[AH$```2<?``````$R)
+MRN@`````ZRM(BU9(3(U*R$B-1DA(.<)T&DB)PDF#>1``=,))BT$X3(U(R$@Y
+MT'7L9F:02(/$",-F9F:09F9FD&9FD$%505154TB#[`A!B?1)B?V[`````(GR
+M#[;"2&O`:$B-%#A(BZI($@``2(7M#X2!`0``2,?`_O___XGQ2-/`A$4-#X5L
+M`0``2(U%2$@Y14AT$4B-ND`2``#H`````.G^`@``0;P`````@'T.``^&[@(`
+M`$B-76!(B=_H`````$B)P4B+0PA(B4L(2(D92(E!"$B)"(!Y00`/A00!``!(
+M#[=!,$F#O,5`!````'4+2(-Y.``/A-,```!(#[=!,$F+A,5`!```2(.X@```
+M```/A*$```#&@>``````2`^V04"H`G0MJ`1T*:@!="7&04(%QD%#!`^V47E(
+MBW%02(MY2.@`````Z9@```!F9F:09F:02`^V04"H`G4GJ`1F9I!FD'0>J`%T
+M&L9!0@/&04,$2(G.3(GOZ`````#K9F9FD&:02`^V04"H`G18J`1F9I!FD'1/
+MJ`%U2\9!0P;&04(%9L>!P```````2(G.3(GOZ`````#K+4B+43A)B[70"```
+MOP0```#H`````.L62`^W43!)B[70"```OP(```#H`````$'_Q$0X90X/A\C^
+M___IK0$``&:!^_,!=V=*C02E`````$B)Q8'E_`,``&9FD&:0OQ`G``#H````
+M`$&`_`-V($F+10"+A"C0`0``B04`````J0``$`!U*>L>9F:09F:028M%`(N$
+M*-`!``")!0````"I```0`'4)_\-F@?OS`7:O00^V]$R)[^@`````3(GOZ```
+M``!$B>(/ML)(:\!H2HNL*$@2``!(A>T/A!`!``"[`````$&`?4,`=BQF9F:0
+M2`^V10T/MLM(T_BH`701N@````")SDR)[^@`````9I#_PT$X74-WV$2)X0^V
+MP4AKP&A*C80H0!(``$B)12!(C45(2#E%2'4.2(U%8$@Y16`/A(8```"^````
+M`$&\`````$B-14A(B<)(.45(=#-FD$B)TTB)U^@`````2(UPR$B+4PA(B4,(
+M2(D82(E0"$B)`DB#>-@`=`E(B=I(.5U(=<](A?9T6L9&6@"Y`````$&`?4,`
+M=DI(#[9%#4C3^*@!=!!$B>(/ML*(3#!P_D9:0?_$_\%!.$U#=]SK)/9%"@%T
+M#4B)[DR)[^@`````ZQ&^`````$B)[^@`````9F9FD$B#Q`A;74%<05W#9F:0
+M9I!(@^P(2(GX2(L_9L=`3B``2(G&Z`````!(@\0(PV9FD%-(BP]$BT<PNP``
+M``"`>4,`=AL/ML-(:\!H2(V$"$`2``!(.?AT!__#.%E#=^6`^P-V+4B-!)T`
+M````)?P#``!(BQ&+A`+0`0``B04`````J0``$`!U+>L[9F9FD&9FD$B-!)T`
+M````)?P#``!(BQ&+A`+0`0``B04`````J0``$`!T$`^V\T2)PDB)S^@`````
+MZPL/MO-(B<_H`````%O#9F9FD&9F9I!F9F:09F:02(N'P!```(L`B04`````
+M2(N'P!```(M`!(D%`````$B+A\`0``"+0`B)!0````!(BX?`$```BT`,B04`
+M````PT%7059!54%455-(@^P8B70D%$F)_$&^`````(!_0P`/ADD(``"+="04
+M00^VUHU*"$B)\$C3^*@!=1&-2A!(B?!(T_BH`0^$%0@``$&`_@-V)TJ-!/4`
+M````)?@'``!)BQ0DBX0"@`$``(D%`````*D```@`=2?K0TJ-!/4`````)?@'
+M``!)BQ0DBX0"@`$``(D%`````*D```@`=!Y,B>?H`````$2)\@^VPDAKP&A"
+M@8P@<!(`````"`!)BS0D1(GQ08#^`W8H2HT$]0`````E^`<``(N$,(`!``")
+M!0````")PH'B```!`.LF9F9FD$B-!,T`````)?@'``"+A#"``0``B04`````
+MB<*!X@```0"%TG11@/D#=AI(C03-`````"7X!P``QX0P@`$``````0#K&$B-
+M!,T`````)?@'``#'A#"``0`````!`(72=!9$B?$/ML%(:\!H0H&,('`2````
+M``$`08!\)%$!#X5M!@``08#^`W8G2HT$]0`````E^`<``$F+%"2+A`*``0``
+MB04`````J`%U*^DJ`0``2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````
+MJ`$/A`0!``!$B?(/ML)(:\!H2HT<($B-LW@2``!)BWPD*.@`````2(.[2!(`
+M```/A($```!,BZM($@``0;\`````08!]#@!V9DF-;6!F9I!FD$B)[^@`````
+M2(G#2(M%"$B)70A(B2M(B4,(2(D8]D-$`G4Q2(-[.`!T&DB+4SA)B[0DT`@`
+M`+\%````Z`````"`2T0"2(G:O@8```!,B>_H`````$'_QT4X?0YWH[H@H0<`
+MZR!!#[;VN@$```!,B>?H`````+^@A@$`Z`````"Z`"TQ`42)\0^VP4AKP&A,
+M`>!(C;!X$@``B9!X$@``2,=&$`````!(!4`2``!(B48828M\)"CH`````$&`
+M_@-V($J-!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````.L>2HT$]0`````E
+M^`<``$F+%"2+A`*``0``B04`````08#^`W8L2HT$]0`````E^`<``$F+%"2+
+MA`*``0``B04`````J8````!U,.G"````9I!*C03U`````"7X!P``28L4)(N$
+M`H`!``")!0````"I@`````^$EP```$&`_@-V(DJ-!/4`````)?@'``!)BQ0D
+MBX0"A`$``(D%`````(G&ZR!*C03U`````"7X!P``28L4)(N$`H0!``")!0``
+M``")QD&`_@-V(DJ-!/4`````)?@'``!)BPPDB?*!R@```0")E`&$`0``ZR=*
+MC03U`````"7X!P``28L,)(GR@<H```$`B90!A`$``&9F9I!F9I!!@/X#=BI*
+MC03U`````"7X!P``28L4)(N$`H`!``")!0````"I```$`'4NZ48"``!*C03U
+M`````"7X!P``28L4)(N$`H`!``")!0````"I```$``^$'0(``$&`_@-V(DJ-
+M!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````(G&ZR!*C03U`````"7X!P``
+M28L4)(N$`H`!``")!0````")QH'.```$`$&`_@-V&DJ-!/4`````)?@'``!)
+MBQ0DB;0"@`$``.L82HT$]0`````E^`<``$F+%"2)M`*``0``1(GR#[;"2&O`
+M:$J#O"!($@````^%B````$&`_@-V(DJ-!/4`````)?@'``!)BQ0DBX0"@`$`
+M`(D%`````(G!ZR!*C03U`````"7X!P``28L4)(N$`H`!``")!0````")P4&`
+M_@-V'4J-!/4`````)?@'``!)BQ0DB8P"@`$``.D+`P``2HT$]0`````E^`<`
+M`$F+%"2)C`*``0``Z>X"``!$B?$/ML%(:\!H3HNL($@2``!)@WU```^$V0``
+M`$F+14!(#[=03O;&`0^%QP```$B)Q?;"`@^$M0```$B-L)````!)BWPD*.@`
+M````0;X`````@'T[`'9I1(GR#[;"2(M<Q5A(A=MT4$B#>S@`=!I(BU,X28NT
+M)-`(``"_!0```.@`````@$M$`DB)VKX&````3(GOZ`````"`>WL`=!F03(GG
+MZ`````"_`0```.@`````@'M[`'7H0?_&1#AU.W>7QX60````(*$'`$C'A:``
+M````````2(FMJ````$B-M9````!)BWPD*.@`````ZP9F@4A.@`!!@/X#=BA*
+MC03U`````"7X!P``28L4)(N$`H`!``")!0````#VQ`%U+.D\`0``2HT$]0``
+M```E^`<``$F+%"2+A`*``0``B04`````]L0!#X05`0``08#^`W8G2HT$]0``
+M```E^`<``$F+%"2+A`*``0``B04`````J`%T*^GH````2HT$]0`````E^`<`
+M`$F+%"2+A`*``0``B04`````J`$/A<(```!$B?%$#[;I36OM:$^-K"5`$@``
+M28-]"``/A*0```!)BT4(2(E$)`A)C74X28M\)"CH`````$&_`````$B+5"0(
+M@'H.`'932(G52(/%8$B)[^@`````2(G#2(M%"$B)70A(B2M(B4,(2(D82(-[
+M.`!T&DB+4SA)B[0DT`@``+\%````Z`````"`2T0"0?_'2(M,)`A$.'D.=[1!
+MQT4X@(0>`$G'14@`````38EM4$F-=3A)BWPD*.@`````9F9FD&9FD$&`_@-V
+M(DJ-!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````(G!ZR!*C03U`````"7X
+M!P``28L4)(N$`H`!``")!0````")P4&`_@-V&DJ-!/4`````)?@'``!)BQ0D
+MB8P"@`$``.L82HT$]0`````E^`<``$F+%"2)C`*``0``0?_&13AT)$,/A[?W
+M__](@\086UU!7$%=05Y!7\-F9I!!5T%6055!5%532(/L&$B)_4F)]4B+EQ@)
+M``!,C:)XA@$`9H%^((4`=QE(#[=&($@/MH0X0`@``$AIP(@!``!,C20"00^V
+M1"1JP>`(2)A(BY7`$```BX0"0`@``(D%`````$&)QD'![A!!B<=!P>\800^V
+M1"1JP>`(2)A(BY7`$```BX0"1`@``(D%`````(A$)!!(C70D$(G"P>H(B%8!
+MP>@0B$8"00^V1"1JP>`(2)A(BY7`$```BX0"2`@``(D%`````(A&`XG"P>H(
+MB%8$P>@0B$8%QD8&`,9&!P"+3"0000^VUT$/MMY$BT8$B=Y(Q\<`````N```
+M``#H`````$6$]@^5P(/S`878=!)!QD4D`+@`````Z;,"``!F9I!!@'TD@74I
+M00^VUT$/MO9(C4PD$$R)[^@`````0<9%)`*X`````.F%`@``9F:09I!!BT4X
+M)?___P`]X0$.`'400<9%)"&X`````.EA`@``D$'VA98````!=19!]L8!=!!!
+M@'PD0O\/A2<"``!F9F:03(GF2(GOZ`````!,B>9(B>_H`````$B+50!!#[=%
+M,F;!Z`4/M\"-!(4``P``B8)P`0``2(M%`$$/MTTR@^$?N@$```!(B=-(T^.)
+MF'0!``!)#[=-,DB+A9`)``!(QP3(`````$$/MTTRB<AFP>@%#[?`@^$?2(G3
+M2-/C2(G9]]$AC(68"0``00^W33*)R&;!Z`4/M\"#X1](T^+WTB%4A5Q)BU4(
+M28M%`$B)4`A(B0)!#[=U,DB-O5@/``#H`````$'^3"1[0<9%)(%)@[V`````
+M`'0/28VU@````$B)[^@`````28U$)"!(B<)).40D(`^$!@$``$&^`0```$B-
+MA>@```!(B40D"$F)UV9F9I!(B=?H`````$B)PTB+50`/MT`R9L'H!0^WP(T$
+MA0`#``")@G`!``!(BT4`#[=+,H/A'TR)\DC3XHF0=`$``$@/MU,R2(N%D`D`
+M`$C'!-``````#[=+,HG(9L'H!0^WP(/A'TR)\DC3XDB)T??1(8R%F`D```^W
+M2S*)R&;!Z`4/M\"#X1],B?)(T^)(B='WT2%,A5P/MW,R2(V]6`\``.@`````
+M0?Y,)'M(@[N``````'0/2(VS@````$B)[^@`````2(N%Z````$B)6`A(B0-(
+MBT0D"$B)0PA(B9WH````3(GZ33E\)"`/A1/___]!@:64````___^_T'&A"3@
+M````!$R)[DR)Y^@`````N`$```#K'4$/MM=!#[;V2(U,)!!,B>_H`````+@`
+M````9F:02(/$&%M=05Q!74%>05_#D$B#[$A(B5PD&$B);"0@3(ED)"A,B6PD
+M,$R)="0X3(E\)$!(B50D$(GU2(L?3(NS\!```$&]`````$B%T@^$!0,```^W
+MUDAIPK`$``!"]D0P(0)T$4B+@Y`)``!(BP30QD`D`NL2#[?&2(N3D`D``$B+
+M!,+&0"0A#[?%2(N3D`D``$B+%,*+0C@E____`#WA`1``#X2X`0``N/____]F
+M@7H@A0!W#4@/MT(@#[:$&$`(```\_W4:#[?%2(N3D`D``$B+!,+&0"0&Z3,)
+M``!F9I`/ML!(:<"(`0``28G%3`.K&`D``(!\)!,`>6])#[9%0*@"="RH!'0H
+MJ`%T)$B+`XN`6`$``(D%`````(G"A<!T#TB+`XF06`$``&9FD&9FD$B+`XN`
+M4`$``(D%`````(G"@\H"2(L#B9!0`0``2(L#BX`$`0``B04`````B<*`SO](
+MBP.)D`0!```/M\5(:<"P!```9D+W1#`@`@@/A-X```!!N`````"^`````(![
+M0P!V?$&Y`0```&9F9I!F9I!(#[9'#4`/MLY(T_BH`7170(#^`W8BC02-````
+M`$B82(L3BX0"T`$``(D%`````*D``!``=2;K+TB-!+4`````)?P#``!(BQ.+
+MA`+0`0``B04`````J0``$`!T"TR)R(GQ2-/@00G`_\9`.'-#=Y%%A,!T3$0X
+M1PUU1HGH9L'H!0^WP(M$@UR)Z8/A'TC3^*@!=2U!@+W@`````G<(0<:%X```
+M``,/M\5(BY.0"0``2(LTPDR)[^@`````Z;`'``#V1"03`0^$I0<```^WQ4B+
+MDY`)``!(BSS"QD<D(8M'."7___\`/>$!#@`/A(`'``!!#[9%:L'@"$B82(N3
+MP!```(N$`D`(``")!0````")QL'N$$&)P$'!Z!A!#[9%:L'@"$B82(N3P!``
+M`(N$`D0(``")!0````"(1"0(2(U,)`B)PL'J"(A1`<'H$(A!`D$/MD5JP>`(
+M2)A(BY/`$```BX0"2`@``(D%`````(A!`XG"P>H(B%$$P>@0B$$%QD$&`,9!
+M!P#VAY8````!=1A`#[;V0/;&`70.00^VT.@`````Z<D&``!(B?Y(B=_H````
+M`.FY!@``#[?62(N#D`D``$B+!-!F@7@XX0$/A2\!```/MD@Z@_D0#X>2!@``
+MN`$```!(T^"IP#````^%\@```*D`@```=0VI```!`'5?D.EK!@``#[?62(N#
+MD`D``$B+#-!,:<*P!```0P^V1#`SB$$D2(N#D`D``$B+!-#V0",$#X0X!@``
+M@'@D``^$+@8``$B#>%``#X0C!@``2(M04$,/MD0P,X@"Z1(&```/M]9(:=*P
+M!```1`^WYDB+@Y`)``!*BPS@0@^V1#(JB$$D2(N#D`D``$J+!.!(@WA(``^$
+MV@4``$(/MKPR(00``.@`````B<)(BX.0"0``2HL$X#M0-'8#BU`T#[?U2(N#
+MD`D``$B+!/!(BWA(B=)(:?:P!```2HUT-BCH`````.F-!0``#[?&2(N3D`D`
+M`$B+!,+&0"0`Z78%``!F9I!F9I`/M]9(BX.0"0``3(LDT$V+?"1HN/____]F
+M08%\)""%`'<.20^W1"0@#[:$&$`(```/ML!(:<"(`0``28G%3`.K&`D``$'&
+MA>``````20^V14"H`@^$EP$``*@$#X2/`0``J`$/A(<!``!!QD0D)`!!BY0D
+ME````$C!ZA5-A?\/E<`/ML"%P@^$Y`0``$'VAZD````"#X2=````28._H```
+M``!T&$F+OZ````!!BU0D-$F+="1(Z`````#K>TF#?"1(`'1S0;X`````28._
+ML`````!T$T'VAZD````!=0E-B[>P````ZR%(B[,@"@``N@$```!,B?]!_Y>X
+M````A<!T!TR+LR`*``!!@WPD-`!T)TF+;"1(28M^"$&+%DB)[N@`````08L&
+M2`'%28U&!$F#QA"#.`!TWD$/MD5JP>`(2)A(BY/`$```BX0"0`@``(D%````
+M`(G"P>H008B7FP```,'H&&9!B8>0````00^V16K!X`A(F$B+D\`0``"+E`)$
+M"```B14`````9@^VPF9!B8>4````#[;&9D&)AY8```")T,'H$&8/ML!F08F'
+MF````,'J&$&(EYH```!!#[9%:L'@"$B82(N3P!```(N$`DP(``")!0````!F
+M#[;`9D&)AY(```#IA0,``&9FD&:0#[?52&G*L`0``$(/MD0Q,X3`#X6_````
+M2(N#D`D``$B+!-#&0"0`08N4))0```!(P>H4387_#Y7`#[;`A<(/A#P#``!"
+M#[9$,3-!B(>2````00^VAZD```"H`@^$'P,``+T`````28._L`````!T#:@!
+M=0E)BZ^P````ZR%(B[,@"@``N@$```!,B?]!_Y>X````A<!T!TB+JR`*``!!
+M@WPD-``/A-8"``!)BUPD2)!(BWT(BU4`2(G>Z`````"+10!(`<-(C44$2(/%
+M$(,X`'3>Z:D"```\`@^%6`(```^W_4AI_[`$``!*C7PW0+Y_````0"(WQD0D
+M`P#&1"0"`,9$)`$`#[?%2&G`L`0``$*+1#`XB40D!$B-3"0$#[94)`3!XA@/
+MMD$!P>`0"<(/MD$"P>`("<(/MD$#08G500G%0(#^<78P08/]`78+#[9'`8/@
+M#XA$)`-!@_T"=@@/MD\"B$PD`D&#_0-V30^V?P-`B'PD`>M"08/]`G8+#[9'
+M`H/@#XA$)`-!@_T'=BL/MD<'@\`(03G%1`]'Z$&#_0QV"`^V3PR(3"0"08/]
+M#78)#[9_#4"(?"0!#[?U2(N#D`D``$B+#/"`>3``#Y7`187M#Y7"#[;`A<)T
+M2<9!)"!(BX.0"0``2(L$\$0X:#!S!40/MF@P#[?-2(N#D`D``$B+!,A(@WA0
+M`'0L2(MX4$2)ZDAI\;`$``!*C70V0.@`````ZQ(/M\5(BY.0"0``2(L$PL9`
+M)"*`?"0#!'42#[?%2(N3D`D``$B+!,+&0"0"23E<)"@/E<!-A?\/E<(/ML"%
+MP@^$&`$``$'VA"26````$'13#[?%2&G`L`0``$(/MD0P,T&(AY(```!!]H>I
+M`````G0R1(GH13AL)#!S!D$/MD0D,(3`=!Y)B[^@````#[;0#[?U2&GVL`0`
+M`$J-=#9`Z``````/MD0D`X/X"W==B<#_),4`````0<:'J@````'IF@```(!\
+M)`($#Y3`@'PD`0(/E,(/ML`AT(/X`1G`@^#Q@\`108B'J@```.MQ0<:'J@``
+M`!#K9T'&AZH````+ZUU!QH>J````!NM30<:'J@````WK23PH=1]!#[9%>__(
+M08A%>@^WU4B+@Y`)``!(BP30QD`D@>LF/`AU"K\0)P``Z``````/M\5(BY.0
+M"0``2(L$PL9`)"%F9I!F9I!(BUPD&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\
+M)$!(@\1(PV9F9I!F9I!F9I!F9I!54TB#[`A(B?M(B?U(BP>+@%`!``")!0``
+M``")QDB+!XFP4`$``/?&`/__`'0(2(GOZ#KI__](BP.+@%`!``")!0````")
+MQDB+`XFP4`$``/?&`/__`'7.N`````!(@\0(6UW#9F9FD&9F9I!F9F:005=!
+M5D%505154TB#[$A(B?U(B7PD.$0/MZ<Z$@``2(L'BX!``0``B04`````9B7_
+M#V:)ASH2``"X`````&9$.:<Z$@``#X0L!P``9H&_.A(``/\/#X2J!@``9D0Y
+MISH2```/A)P&``!(C8?H````2(E$)!A(C9?X````2(E4)!!(B50D"$B)%"1F
+M9F:09F:02(N-\!```$'_Q&9$.:4^$@``N`````!$#T;@00^WU$B+A5`1``"+
+M=)`$]\8```@`#X2A````2(M%`(N`4`$``(D%`````(G"2(M%`(F04`$``+L`
+M````]\(`__\`=%&^`````(!]0P!T1HG79D0/MD5##[?6C4H(2(GX2-/XJ`%U
+M#8U*$$B)^$C3^*@!=!0/M\9(:<"H````2(V<**`!``#K#?_&9D$Y\'?'9F:0
+M9I!(A=MU$$B+?"0XZ`````"0Z:$%``!(BWPD..@`````B$,/Z8\%``!!B?5F
+M08'E_P]!#[?%2&G0L`0``$B+?`H@2(N5D`D``$R+-,)-A?8/A&(%``#WQ@``
+M(``/A)$!``!!@'XD@0^%90$``$'&1B0A20^W5C)(BX60"0``2,<$T`````!!
+M#[=.,HG(9L'H!0^WP(/A'[H!````2-/B2(G1]]$AC(68"0``00^W3C*)R&;!
+MZ`4/M\"#X1^Z`0```$C3XDB)T??1(4R%7$$/MW8R2(V]6`\``.@`````28.^
+M@`````!T#TF-MH````!(B>_H`````&9!@7X@A0`/A\X```!)#[=&(("\*$`(
+M``#_#X2[````9D&#?B!_=R=(#[:$*$`(``!(BY48"0``2&G`B`$``$B+1!!(
+M@'@(_W5AZ8P```!F08%^(($`=RE)#[=&($@/MH0H0`@``$B+E6@)``!(:<#(
+M#P``2(M$$`B`>`C_=2SK6DD/MT8@2`^VA"A`"```2(N50`D``$AIP-````!(
+MBX00B````(!X"/]T,$R)]DB)[^@`````2(N%Z````$R)<`A)B09(BTPD&$F)
+M3@A,B;7H````Z>@#``!FD$F-1A!(BTPD$$B+40A(B4$(28E.$$B)4`A(B0+I
+MQ0,``$2)Z&;!Z`4/M\"+1(5<1(GI@^$?2-/XJ`$/A:8#``!!#[?52(N%D`D`
+M`$B+!-!F@7@@A0`/A[,```!(#[=0(("\*D`(``#_#X2@````9H-X(']W(D@/
+MMH0J0`@``$B+E1@)``!(:<"(`0``2(M$$$@/ME`(ZWQ!#[?52(N%D`D``$B+
+M!-!F@7@@@0!W)T@/MT`@2`^VA"A`"```2(N5:`D``$AIP,@/``!(BT00"`^V
+M4`CK/D$/M]5(BX60"0``2(L$T$@/MT`@2`^VA"A`"```2(N50`D``$AIP-``
+M``!(BX00B`````^V4`CK!;K_____@/K_=`T/ML*`O"C&"```_W5&1(GH9L'H
+M!0^WP(M$A5Q$B>F#X1](T_BH`0^%H@(``$'&1B0&O@````!,B??H`````+H`
+M````3(GV2(GOZ`````#I>P(```^VPD@/MIPHQ@@``$AIVZ@```!(C9PKH`$`
+M`$B%_W0(]\8```(`=06_`````/9#"@(/A($!``!!#[?U2(GZ2(G?Z`````!$
+MB>AFP>@%#[?`BT2%7$2)Z8/A'TC3^*@!#X46`@``08!^)($/A9$```!)#[=6
+M,DB+A9`)``!(QP30`````$$/MTXRB<AFP>@%#[?`@^$?N@$```!(T^)(B='W
+MT2&,A9@)``!!#[=V,DB-O5@/``#H`````$R)]DB)[^@`````28.^@`````!T
+M#TF-MH````!(B>_H`````$B+A>@```!,B7`(28D&2(M,)!A)B4X(3(FUZ```
+M`.EZ`0``0;\`````QD0D(`!(BX7X````2#E$)!!T$DB-E?@```!!_\=(BP!(
+M.<)U]46$_W0\2(M<)`A(B=_H`````$B-2/!(BU,(2(E#"$B)&$B)4`A(B0),
+M.?&X`0````^V5"0@#T30B%0D($'^SW7)@'PD(``/A0,!``!)C4802(M,)!!(
+MBU$(2(E!"$F)3A!(B5`(2(D"1(GH9L'H!0^WP$2)Z8/A'[H!````2-/B"92%
+MG````.G#````00^W]4B)^DB)W^@`````0;\`````QD0D(`!(BX7X````2#E$
+M)!!T$DB-E?@```!!_\=(BP!(.<)U]46$_W0[2(L<)$B)W^@`````2(U(\$B+
+M4PA(B4,(2(D82(E0"$B)`DPY\;@!````#[9,)"`/1,B(3"0@0?[/=<F`?"0@
+M`'5"08!^)(%T.TF-1A!(BTPD$$B+40A(B4$(28E.$$B)4`A(B0)$B>AFP>@%
+M#[?`1(GI@^$?N@$```!(T^()E(6<````9D0YI3H2```/A8SY__](C87X````
+M2(G"2#F%^````'130;P!````9F:02(G32(G7Z`````!(C7#P#[=.,HG(9L'H
+M!0^WP(/A'TR)XDC3XDB)T??1(8R%G````+H`````2(GOZ`````!(B=I(.9WX
+M````=;9(B>_H`````+@!````2(/$2%M=05Q!74%>05_#9F9FD&9FD&9FD$B#
+M["A(B5PD"$B);"003(ED)!A,B6PD(&;'1"0&``!(BZ_0"```0;P`````3(UL
+M)`9(BT4`BX!0`0``B04`````2(M5`(F"4`$``(7`="%(BT4`QX!0`0```0``
+M`$ECW$B)[^@`````08A$'0!F9I!(@<4`%```0?_$08/\`7ZQ@'PD!@!U#+@`
+M````@'PD!P!T!;@!````2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9F9I!F
+M9F:09F9FD&9FD$%7059!54%455-(@^P(2(G]28GUN0````!F#[9'0XG&9H/X
+M`'8;20^V50UF9I!FD$B)T$C3^*@!=0?_P68YSG?O28-]0`!T($F+=4!(@<:0
+M````2(M]*.@`````28MU0$B)[^@`````28U%8$B)PDDY16`/A&<!``!)B<9F
+M9F:02(G7Z`````!(B<-(@W@X``^$+@$``(!X>P`/A*````!!O`````!F@WU8
+M``^$CP```$&_`0```$ECU$B+A9`)``!(BS302(7V=&8/MT8@9CM#,'5<9CV%
+M`'=6#[?`@+PH0`@``/]T24B+50`/MT8R9L'H!0^WP(T$A0`#``")@G`!``!(
+MBT4`#[=.,H/A'TR)^DC3XHF0=`$``,9&)"&Z`````$B)[^@`````9F:09I!!
+M_\0/MT581#G@#X]W____2(M#.$C'0&``````]D-$!'4C_H7O$P``2(GOZ```
+M``!(BT,X#[9P`;H!````2(GOZ`````!(BT,X#[90`@^V<`%(Q\<`````N```
+M``#H`````$B+4SA(B[70"```OP$```#H`````$B+4SA(B[70"```OP8```#H
+M`````$C'0S@`````0?Y-#DB)WDB)[^@`````3(GR33EU8`^%H/[__TG'14``
+M````2(M%`(N(6`$``(D-`````(7)=`I(BT4`B8A8`0``2(/$"%M=05Q!74%>
+M05_#9F9FD&9F9I!F9I!!5%532(G]28GTNP````"`?T,`=AY(#[96#69FD&9F
+MD$B)T(G92-/XJ`%U!__#.%U#=^U!]D0D#`)U#$F-1"1@23E$)&!U:4R)Y^@`
+M````A,!T4$B)[^@`````2(G&2(7`=$U)C40D8$B+4`A(B7`(2(D&2(E6"$B)
+M,D'^1"0.3(EF2,9&0`7&1D$`QD9Y#[D!````N@$```!,B>?H`````.L-#[;S
+M2(GOZ`````!FD%M=05S#9F9FD&9F9I!F9I!(@^PH2(D<)$B);"0(3(ED)!!,
+MB6PD&$R)="0@28G]28GT3(NVB`````^V5D=(B?Y,B??H`````$B)Q69!@TPD
+M3A"[`````&9!#[9%0XG&9H/X`'8>20^V5@UF9I!F9I!(B=")V4C3^*@!=0?_
+MPV8YWG?M9H/[`W8G2(T$G0`````E_/\#`$F+50"+A`+0`0``B04`````J0``
+M$`!U-^LE2(T$G0`````E_/\#`$F+50"+A`+0`0``B04`````J0``$`!U$`^V
+M\TR)[^@`````Z9L!``!)C49@23E&8`^$C0$``$B%[0^$A`$``$@/MD5Y2<=$
+MQ%@`````2(M5"$B+10!(B5`(2(D"2(GJO@8```!,B??H`````(!]>P!T&9!,
+MB>_H`````+\!````Z`````"`?7L`=>A(@WTX`'132(M%.$C'0&``````]D5$
+M!'4/0?Z%[Q,``$R)[^@`````2(M5.$F+M=`(``"_`0```.@`````2(M5.$F+
+MM=`(``"_!@```.@`````2,=%.`````!!_DX.2(GN3(GOZ`````!)BT4`BY!8
+M`0``B14`````A=)T"DF+10")D%@!``!!QD0D0@!F08-D)$[ONP````!!@'PD
+M.P!T(69!#[94)#L/M\-)BVS$6$B%[70&@'U"_W5]_\-F.=IWYD'V1"1.@'0-
+M3(GF3(GOZ`````#K8;L`````08!\)#L`=$)F9F:0#[?#28MLQ%A(A>UT(_9%
+M1`)T'4B+53A)B[70"```OP8```#H`````(!E1/UF9F:0_\-F00^V1"0[9CG8
+M=\)F0<=$)$X"`$&`9"1)_69F9I!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(
+M@\0HPV9FD$B#[`A(BX:(````N0````"`?T,`=AM(#[90#69FD&:02(G02-/X
+MJ`%U!__!.$]#=^_&1D(,Z`````!(@\0(PY!!54%455-(@^P(28G\B?6[````
+M`$B-!*T`````28G%08'E_`,``+\0)P``Z`````!`@/T#=AM)BP0D0HN$*-`!
+M``")!0````"I```0`'4DZQE)BP0D0HN$*-`!``")!0````"I```0`'4)_\-F
+M@?OS`7:S0`^V]4R)Y^@`````3(GGZ`````")Z@^VPDAKP&A,`>#V@&@2```!
+M=`](B[!($@``3(GGZ`````!(@\0(6UU!7$%=PV9F9I!F9I!F9I!(@^PH2(E<
+M)`A(B6PD$$R)9"083(EL)"!(B10D3(LG#[?V28N$))`)``!(BQSP0;T`````
+MO0````!F@7LXX0%U'P^V0SJ#Z!$\`7<42(MO0$B%TG5*QD51`.M$9F:09I!)
+MBY0D&`D``$R-JGB&`0!F@7L@A0!W&4@/MT,@2@^VA"!`"```2&G`B`$``$R-
+M+`)(@SPD`'4(0<:%X`````"`>R2!=0N`9PSW9F9FD&9FD$B#/"0`#X7[````
+MQD,D`/:#E@```"`/A!8"``!(BVMH2(7M#X0)`@``]H6I`````G0D2(.]H```
+M``!T&DB#>T@`=!-(B[V@````BU,T2(MS2.@`````00^V16K!X`A(F$F+E"3`
+M$```BX0"0`@``(D%`````(G"P>H0B)6;````P>@89HF%D````$$/MD5JP>`(
+M2)A)BY0DP!```(N4`D0(``")%0````!F#[;"9HF%E`````^VQF:)A98```")
+MT,'H$&8/ML!FB868````P>H8B)6:````00^V16K!X`A(F$F+E"3`$```BX0"
+M3`@``(D%`````&8/ML!FB862````Z2P!``"`>R2`=03&0R0A2(LT)$C'QP``
+M``"X`````.@`````9H%[..$!=1@/MD,Z@^@1/`%W#4B)[^@`````Z>T```#V
+M1"0#`71YBT,X)?___P`]X0$.`'1J00^V16K!X`A(F$F+E"3`$```BX0"0`@`
+M`(D%`````$$/MD5JP>`(2)A)BY0DP!```(N$`D0(``")!0````!!#[9%:L'@
+M"$B828N4),`0``"+A`)("```B04`````2(G>3(GGZ`````#K;8!\)`,`>21)
+MBP0DBX!8`0``B04`````B<&%P'1028L$)(F(6`$``.M$9I"`/"0`>#R`?"0'
+M`'DU28L4)`^W0S)FP>@%#[?`C02%``,``(F"<`$``$F+%"0/MTLR@^$?N`$`
+M``!(T^")@G0!``!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#D)"0D)!(@^PH
+M2(E<)`A(B6PD$$R)9"083(EL)"!(B?-)B?Q$#[9N)$B+EQ@)``!(C:IXA@$`
+M9H%^((4`=QE(#[=&($@/MH0X0`@``$AIP(@!``!(C2P"183M=2!FQX7`````
+M``"`>S@<=1&`>SH"=0M(B=Y(B>_H`````$B#>W@`=!)(C7-X3(GGZ`````!F
+M9I!F9I!(B=Y,B>?H`````$&`_09T/4B-G5@!``!)BWPD*$B)WN@`````QX58
+M`0``@(0>`$C'A6@!````````2(FM<`$``$F+?"0H2(G>Z`````!(BUPD"$B+
+M;"003(MD)!A,BVPD($B#Q"C#9F:09F:09F:02(/L*$B)'"1(B6PD"$R)9"00
+M3(EL)!A,B70D($B)_4B%_P^$PP```$B+1TA,BRA,B>_H`````$B)PTR-<%A(
+MA<`/A*0```!,B>_H`````$F)Q$B%P'402(G>3(GOZ`````#IA````,9#):P/
+MMT4P9HE#($R):RC'@Y0````(````3(EC>$F+1"002(E#2,=#-``(``!(C87D
+M````2(E#4,9#,"!(QX.@`````````,9#.!S&0SD!QD,Z`L9#.PC&0SP`O@``
+M``!,B??H`````(M3-$F+="083(GWZ`````!(B=Y,B>_H`````$B+'"1(BVPD
+M"$R+9"003(ML)!A,BW0D($B#Q"C#9F9FD&9F9I!!5T%6055!5%532(/L"$F)
+M_TF)]4&)UDB+1TA(BRA!O`````!$B>(/ML(/MH0H0`@``#S_=$L/ML!(:=B(
+M`0``2(G?2`.]&`D``$B!Q\P```"Z"````$F-=0SH`````(3`=!Y(BX48"0``
+M1(BT`P8!``!(BX48"0``3(F\`Q@!``!!_L1YGDB#Q`A;74%<05U!7D%?PV9F
+M9I!F9F:09F:02(/L2$B)7"082(EL)"!,B60D*$R);"0P3(ET)#A,B7PD0$B)
+M?"003(MV2$$/MD8"08G%0<'E"&9!#[9&`T$!Q4$/M\6#P`0/MU8T.=`/C]L`
+M``!)C5X(0;\`````00^WQ4J-1#`$2#G8#X:P````D`^V`X3`#XB%````@^`/
+M/`9U?O9#`\!T!O9#!<!U<O8#$'0P2(UK"$&\`````(![!`!V70^V4P-(B>Y(
+MBWPD$.@`````2(/%'$'_Q$0X8P1WXNL]2(UK!$&\`````(![`@!V+4$/ML>)
+M1"0,9F:09I"+5"0,2(GN2(M\)!#H`````$B#Q1Q!_\1$.&,"=^)FD$'_QT@/
+MMD,!2(U<&`)!#[?%2HU$,`1(.=@/AU'___^^`0```$B+?"00Z`````!(BUPD
+M&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\)$!(@\1(PV9F9I!F9F:09F9FD&9F
+MD$&)RTB+1TA,BPBY`````$2-%!8/ML%"#[:$"$`(```\_W0]#[;`28N1&`D`
+M`$QIP(@!``!!.+00!@$``'4B23F\$!@!``!U&$6(E!`%`0``28N!&`D``$6(
+MG``$`0``D/[!>:_SPV9F9I!F9I!F9I!(BW]0@+_`````3W<W2`^VA\````!(
+MC01`2,'@!(T4%HB4.,D```!(#[:'P````$B-!$!(P>`$B(PXR````/Z'P```
+M`//#9F9FD&9FD&9FD$%7059!54%455-(@^P(28G_2(M.2`^V00+!X`AF#[91
+M`P'0#[?`@\`$#[=6-#G0#X\%`0``2(U1",9$)`<`0;X`````#[9)`0^V0@(`
+M1"0'2`^V0@-(C50"!$'_QD0X\7/F2(G50;T`````0;X`````1#IT)`</@Z8`
+M``!F9F:0#[9-`4$!S0^V10`\`0^4PCP7#Y3`"="H`70U1(GK*,M$..MS:T&-
+M1@%$#[;@9F:0#[9-``^V\T2)XDR)_^@`````_\-$..MRY^M%9F:09I!)BT=0
+M@+C!`````70S1(GK*ET!1#CK<RA!C48!1`^VX`^V30`/MO-$B>),B?_H````
+M`/_#1#CK<N=F9F:09F:02(/%!$'_QD0Z="0'#X)>____28M'4,:`P0````&^
+M!P```$R)_^@`````2(/$"%M=05Q!74%>05_#9F9FD&9FD$B#["A)B?E!N/__
+M__](B>?\N0(```"X`````/-(J\<'`````&8Y\7-59F9FD&9FD&:#^0YW"P^W
+MT4(/M@0*B`04#[?!0@^V!`B#Z#`\"7<A08#X_[@`````1`]$P$$/ML!KP`H/
+MM]%"`@0*1(U`T.L&08#X_W4'_\%F.?%RLD$/ML!(@\0HPV9FD&9FD&9FD$&)
+MT4B+1TA,BP"Z`````)`/ML)"#[:$`$`(```\_W0P#[;`28N(&`D``$AIP(@!
+M``!(.;P(&`$``'450#BT"`4!``!U"T2(C`@'`0``PV:0_L)YO//#9F9FD&9F
+MD&9FD$%505154TB#[`A)B?5!B=1(BV]0NP````!F9F:09F:02&/#2(T$0$C!
+MX`1(C8PHP`````^V40B`^@$/E\"`^A</E<(/ML"%PG0V1#AA"74P00^V50.`
+M^B&X(`````]#T$AC^TB-/'](P><$2(V\+]@````/MM))C74$Z`````"0_\.#
+M^T]^F4B#Q`A;74%<05W#9F9FD&9F9I!F9I!F9I!!5T%6055!5%532(/L*$B)
+M?"0@0;T`````2(M&2$B)1"08#[9``HG!P>$(2(M4)!AF#[9"`P'!#[?!@\`$
+M#[=6-#G0#X\7`0``3(MD)!A)@\0(QD0D%P`/M\%(BU0D&$B-1!`$3#G@#X;D
+M````#[?!2(U$$`1(B40D"`^WR4B)#"1!#[9$)`+!X`AF00^V5"0#1(TT`D$/
+MM_9)C7PD!.@`````//]U:4&)Q4$/M\9*C5P@!$@Y7"0(=FU(BP0D2(M4)!A,
+MC7P0!`^V0P+!X`AF#[93`XTL`@^W]4B->P3H`````#S_=0Y!@/W_=3I!O0``
+M``#K,D0XZ$0/0N@/M\5(C5P8!$DYWW>_ZQQF9I!FD(G"1"CJ#[;2#[9T)!=(
+MBWPD(.@`````#[94)!=,B>9(BWPD(.@`````_D0D%T$/M\9.C60@!$PY9"0(
+M#X<P____O@(```!(BWPD(.@`````2(/$*%M=05Q!74%>05_#D%-(B?M(BTY(
+M#[9!`L'@"&8/ME$#`=`/M\"-4`0/MT8T.<)_'TB+OR`!``!(8])(B<[H````
+M`+X`````2(G?Z`````!;PV9F9I!F9F:09F:02(/L.$B)7"0(2(EL)!!,B60D
+M&$R);"0@3(ET)"A,B7PD,$F)]4F)_@^V1B2(1"0'9H%^((4`#X>K````2`^W
+M1B"`O#A`"```_P^$F````&:#?B!_=RI(#[:$.$`(``!(BY<8"0``2&G`B`$`
+M`$B+1!!(2`^V0`A(!<`(``#K;9!F@7X@@0!W+D@/MT8@2`^VA#A`"```2(N7
+M:`D``$AIP,@/``!(BT00"$@/MD`(2`7`"```ZS9(#[=&($@/MH0X0`@``$B+
+MET`)``!(:<#0````2(N$$(@```!(#[9`"$@%P`@``.L%N+\)``!-#[9\!@9-
+M:?^H````3XV\-Z`!``!)BY88"0``2(VJ>(8!`&9!@7T@A0!W&4D/MT4@2@^V
+MA#!`"```2&G`B`$``$B-+`*`?"0'``^%-`(``&;'A<```````$&`?3@<#X4@
+M`@``00^V13J#^`)T48/X`G\*@_@!="?I!P(``(/X!V9F9I!T*8/X"@^%]0$`
+M`$R)[DB)[^@`````Z>4!``!,B>Y(B>_H`````.G5`0``3(GN2(GOZ`````#I
+MQ0$``$R)[DB)[^@`````2(V=6`$``$B+14A(BP!(BW@H2(G>Z`````#'A5@!
+M``"`A!X`2,>%:`$```````!(B:UP`0``2(M%2$B+`$B+>"A(B=[H`````)#&
+M14+_0;P`````08!_#@`/AJ\```!)C5]@9F9FD&9FD$B)W^@`````2(G%2(M#
+M"$B):PA(B5T`2(E%"$B)*(!]0O]T;(!]00!U;8"]X0`````/A!D!``!(#[9%
+M0*@"=`RH!'0(J`$/A=(```!(#[9%0*@"=0RH!'0(J`$/A=(```!(#[9%0*@"
+M#X3B````J`0/A-H```"H`0^%T@```$B)[DR)]^@`````Z<(```!FD,:%X0``
+M``!!_\1%.&<.#X=<____13AG#G570;P`````08!_#@!V2DF-7V!F9I!FD$B)
+MW^@`````2(G%2(M#"$B):PA(B5T`2(E%"$B)*(!]0O]T%`^V14$\(@^4PCP-
+M#Y3`"="H`75*0?_$13AG#G>_0<9'"?],B?Y,B??H`````(!\)`<`#X6%````
+MZS(/ME5Y2(MU4$B)Z4R)_^@`````ZQU(B>Y,B??H`````&:0ZPZ^"@```$B)
+M[^@`````D$F#?7@`=`Q)C75X3(GWZ`````!,B>Y,B??H`````(!\)`<`="QF
+M_X7`````9H.]P`````IV#F;'A<```````.E,_O__O@H```!(B>_H`````$B+
+M7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9F9I!F9F:0
+M2(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$B)_4&)]TB+1TA,
+MBRA,B>_H`````$B)PTR-<%A(A<`/A*0```!,B>_H`````$F)Q$B%P'402(G>
+M3(GOZ`````#IA````,9#):P/MT4P9HE#($R):RC'@Y0````(````3(EC>$F+
+M1"002(E#2,=#-``(``!(C87D````2(E#4,9#,"!(QX.@`````````,9#.!S&
+M0SD!1(A[.L9#.PC&0SP`O@````!,B??H`````(M3-$F+="083(GWZ`````!(
+MB=Y,B>_H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#
+M9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G]2(M'2$R+
+M,$B+ER`!```/MD("B</!XPAF#[9"`P'##[?#@\`$/0`(```/C\X```!,B??H
+M`````$B)Q4B%P`^$N@```$R)]^@`````28G'2(7`=1!(B>Y,B??H`````.F:
+M````3(UE6$B+>!`/M]N#PP1(8]-)B[4@`0``Z`````#&126L00^W13!FB44@
+M3(EU*(E=-(.-E````!))BT<02(E%2$R)?7A)C87D````2(E%4,9%,"!(QX6@
+M`````````,9%.!W&13D0QD4Z`@^VQXA%.XA=/+X`````3(GGZ`````"+531)
+MBW<83(GGZ`````!(B>Y,B??H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT
+M)"A,BWPD,$B#Q#C#9F9FD&9F9I!F9I!328G208G+2(M'2$R+`$R+3U"[````
+M``^VPT(/MI0`0`@``(#Z_W18#[;"28N(&`D``$AIP(@!``!(.;P(&`$``'4]
+M0#BT"`4!``!U,T6$VW0-2(N$"!`!``!)B0+K)0^VPDF+B!@)``!(:<"(`0``
+M28L22(F4"!`!``#K!V9FD/[#>9.[`````&9F9I!F9I`/ML-(C01`2,'@!$J-
+M/`A(C8_`````#[91"(#Z`0^7P(#Z%P^5P@^VP(7"=#-`.'$)=2U%A-MT#$B+
+MA]````!)B0+K(P^VPTB-!$!(P>`$28L22HF4"-````#K"V9F9I#_PX#[3W:9
+M6\-F9F:09F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@28G\B?%(BY<@`0``
+M#[9"`HG'P><(9@^V0@,!QP^WQX/`!#T`"```?V1`A/9T#D$/MH0D"`$``(A"
+M`>L,#[9"`4&(A"0(`0``2(U""$B)!"2[``````^WQTB-1!`$2#L$)'8J1`^V
+MZ0^WQTB-;!`$#[;S1(GI2(GB3(GGZ`````#_PTB#!"0$2#LL)'?B2(M<)`A(
+MBVPD$$R+9"083(ML)"!(@\0HPV:02(/L&$B)7"0(2(EL)!!(B?N)U4C'!"0`
+M````@']#`70_0`^V]KD!````2(GBZ`````!(@SPD`'0G2(L$)(`(@$"$[70+
+M2(L$)(!(`R#K"9!(BP0D@&`#WTB)W^@`````2(M<)`A(BVPD$$B#Q!C#D$B#
+M[!A(B1PD2(EL)`A,B60D$$B)\TF)_$B+;FAF@7X@A0`/AY@```!(#[=&(("\
+M.$`(``#_#X2%````9H-^(']W(D@/MH0X0`@``$B+EQ@)``!(:<"(`0``2(M$
+M$$@/ME`(ZV%F@7X@@0!W)T@/MT8@2`^VA#A`"```2(N7:`D``$AIP,@/``!(
+MBT00"`^V4`CK,D@/MT8@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B```
+M``^V4`CK"&9FD+K_____N?____]F@7L@A0!W#D@/MT,@0@^VC"!`"```@/K_
+M="$/ML)"@+P@Q@@``/\/E,*`^?\/E,`)T*@!=0:`>R0&=3I(@WMX`'032(US
+M>$R)Y^@`````9F9FD&9FD$B)WDR)Y^@`````QT50_____TB)[_]52.MV9F:0
+M9F:0@'LD`'4[]H.4````"&9FD'002(M],(M3-$B+<TCH`````,=%4`````!(
+M@WTX`'0)2(M5.(M%((D"2(GO_U5(ZP_'15#_____2(GO_U5(9I!(@WMX`'0,
+M2(US>$R)Y^@`````2(G>3(GGZ`````!FD$B+'"1(BVPD"$R+9"002(/$&,-F
+M9F:09F:09F:09F:02(/L2$B)7"082(EL)"!,B60D*$R);"0P3(ET)#A,B7PD
+M0$B)_4&)UT&)SDR)1"0(0(AT)!=(BT=(3(LH3(GOZ`````!(B<-(C4!82(D$
+M)$B%VP^$V````$R)[^@`````28G$2(7`=1!(B=Y,B>_H`````.FX````QD,E
+MK`^W13!FB4,@2(M4)`A(B5-H3(EK*,>#E`````@```!,B6-X28M$)!!(B4-(
+M1(ES-$B-A>0```!(B4-0QD,P($C'@Z``````````QD,X/,9#.0(/MD0D%XA#
+M.D2)^,'H$(A#.TR)^@^VQHA#/$2(>SU$B?#!Z!"(0SY,B?(/ML:(0S]$B'-`
+MQD-!`+X`````2(L\).@`````BU,T28MT)!A(BSPDZ`````!(B=Y,B>_H````
+M`$B+7"082(ML)"!,BV0D*$R+;"0P3(MT)#A,BWPD0$B#Q$C#9F9FD&9FD&9F
+MD&9FD$B#[$A(B5PD&$B);"0@3(ED)"A,B6PD,$R)="0X3(E\)$!)B?R)TT&)
+MSDR)1"0(0(AT)!=(BT=(3(LX3(G_Z`````!(B<5(A<`/A.X```!,B?_H````
+M`$F)Q4B%P'412(GN3(G_Z`````#IS@```)!(C4582(D$)$F+?1!$B?))B[0D
+M(`$``.@`````QD4EK$$/MT0D,&:)12!(BU0D"$B)56A,B7TH1(EU-(.-E```
+M`!))BT402(E%2$R);7A)C80DY````$B)15#&13`@2,>%H`````````#&13@[
+MQD4Y`@^V1"07B$4ZB=C!Z!"(13L/ML>(13R(73U$B?#!Z!"(13Y,B?(/ML:(
+M13]$B'5`QD5!`+X`````2(L\).@`````BU4T28MU&$B+/"3H`````$B)[DR)
+M_^@`````2(M<)!A(BVPD($R+9"0H3(ML)#!,BW0D.$R+?"1`2(/$2,-)B=%(
+MA?\/E,)(A?8/E,`)T*@!=1)-A<D/E,)(A<D/E,`)T*@!=`FX`````,-F9I!F
+M08'XA0!W#D$/M\"`O#A`"```_W4&N`````##0<9!..%!QD$Y`4'&03H39D6)
+M02!)B7$H28F)H````+@!````PV9F9I!F9F:09F9FD&9FD$B+1PB+0`2)!0``
+M``")PH'*```,`"7___/_0(3VB=$/1,A(BT<(B0A(BT<(B4@,2(M'"(E($$B+
+M1PB)2!1(BT<(B4@82(M'"(E(!,.0D)"03(M4)"!,BUPD,`^WQST1)P``?T`]
+M$"<```^-@0```#TB(0``='H](B$``&9FD&:0?Q`]("$``'1G9F9FD&9FD.MD
+M/4`A``!T5SU$(0``9I!T3NM2/8`G``!F9F:09F:0=#X]@"<``'\,+2`G``"#
+M^`)W,^LK/8"1``!T)#V`D0``?P\]@B<``'069F:09F:0ZQ0]@)0``'4-9F9F
+MD&9FD,8&0,8"`L8!!`^V%DB+1"08B!!F0<<"@`!F0<<#``!!Q@$@2(M$)`AF
+MQP```0^V%DB+1"00B!!F#[8&9D$#`F9!`P-(BU0D*&:)`F9!B0!!#[<22(M$
+M)#AFB1!!#[<2@\(+2(M$)$!FB1##9F:09I!!5T%6055!5%532(/L&$F)_TF)
+MUD"(="072(LONP````!F@WU8``^&AP(``&9F9I")V&;!Z`4/M\"+A(6<````
+MB=F#X1](T_BH`0^%5P(```^WTTB+A9`)``!(BPS02(7)#X1``@``O@````"+
+M03@E____`#WA`1``#X7!````387V#X4?`@``9H%Y((4`#X>>````2`^W02"`
+MO"A`"```_P^$BP```&:#>2!_=R5(#[:$*$`(``!(BY48"0``2&G`B`$``$B+
+M1!!(#[90".E5`0``9H%Y(($`=RI(#[=!($@/MH0H0`@``$B+E6@)``!(:<#(
+M#P``2(M$$`@/ME`(Z2,!``!(#[=!($@/MH0H0`@``$B+E4`)``!(:<#0````
+M2(N$$(@````/ME`(Z?8```"Z_____^GL````9F9FD&:!>2"%``^'E0```$@/
+MMT$@@+PH0`@``/\/A((```!F@WD@?W<B2`^VA"A`"```2(N5&`D``$AIP(@!
+M``!(BT002`^V4`CK7F:!>2"!`'<G2`^W02!(#[:$*$`(``!(BY5H"0``2&G`
+MR`\``$B+1!`(#[90".LO2`^W02!(#[:$*$`(``!(BY5`"0``2&G`T````$B+
+MA!"(````#[90".L%NO____]F@7D@A0!W.D@/MT$@@+PH0`@``/]T*TB+M1@)
+M``!F@7D@A0!W%4@/MH0H0`@``$AIP(@!``!(`<;K!TB!QGB&`0!!.%<(=7E-
+MA?9T"T$/MT8P9CM!('5I@'PD%P9T3XM1.('B____`('ZX0$0`'0^2`^V1D"H
+M`G0UJ`1T,:@!=2V`ON``````9I!U(H'ZX0$/`'0M#[9$)!>(022Z`0```$B)
+MSDR)_^@`````ZQ,/MD0D%XA!)`^W\TR)_^@`````_\-F.5U8#X=]_?__@'PD
+M%X$/A(<!``!!O`````!(BY7H````2(V%Z````$@YT'0+0?_$2(L22#G0=?5F
+M187D#X19`0``2(V%Z````$B)PD@YA>@````/A$(!``!)B<5(B40D"&9FD&:0
+M2(G32(G7Z`````!(B<%-A?9T)4$/MT8P9CM!('0:2(M#"$B)2PA(B1E(B4$(
+M2(D(0?_,Z>4```!F@7D@A0`/AY4```!(#[=!(("\*$`(``#_#X2"````9H-Y
+M(']W(D@/MH0H0`@``$B+E1@)``!(:<"(`0``2(M$$$@/ME`(ZUYF@7D@@0!W
+M)T@/MT$@2`^VA"A`"```2(N5:`D``$AIP,@/``!(BT00"`^V4`CK+T@/MT$@
+M2`^VA"A`"```2(N50`D``$AIP-````!(BX00B`````^V4`CK!;K_____03A7
+M"'4DBT$X)?___P`]X0$/`'05#[9$)!>(021(B<Y(B>_H`````.L228M%"$F)
+M30A,B2E(B4$(2(D(0?_,9D6%Y'022(M4)`A(.97H````#X7+_O__2(/$&%M=
+M05Q!74%>05_#9F9FD&9F9I!F9F:00;@`````9H-_6``/AAT!``!,BX^0"0``
+M00^WP$F+#,%(A<D/A/<```!F@7D@A0`/AYL```!(#[=!(("\.$`(``#_#X2(
+M````9H-Y(']W(D@/MH0X0`@``$B+EQ@)``!(:<"(`0``2(M$$$@/ME`(ZV1F
+M@7D@@0!W)T@/MT$@2`^VA#A`"```2(N7:`D``$AIP,@/``!(BT00"`^V4`CK
+M-4@/MT$@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B`````^V4`CK"V9F
+MD&9FD+K_____N/\```!F@7D@A0!W#D@/MT$@9@^VA#A`"```#[?`2&G`B`$`
+M`$@#AQ@)``!`./)U&D@/MD!`J`%T$:@$=`VX`0```,-F9F:09F:00?_`9D0Y
+M1U@/A^K^__^X`````,-F9F:09F9FD&9F9I!(BT=(3(L`38N8D!```$&Z````
+M`+X`````9D&#>%@`=DA-BXB0"0``#[?628,\T0!T+DF+#-&+03@E____`#WA
+M`1``=!L/MT<P9CM!('412(G02,'@!F9&.508"'0+9I#_QF9!.7!8=[]F03EP
+M6'0*0?_"9D&#^A]VFD$/M\)FD,-F9F:09F9FD&9F9I!F9I!(@W]0`'0>2(M'
+M4,8`<$B+1U!`B'`"2(M'4,9`!P!(BT=0B%`,\\-F9I!F9I!F9I#SPV9F9I!F
+M9F:09F:09F:028GXB?)(B=&!X?\!``!(BX>0"0``2(,\R`!T+$B+/,@/MD<E
+M00^VL-X```")\=/@1`^WP`^WTKC__P``T^`APDB)^$$YT'0%N`````#SPY!5
+M4TB#[`A(B?5F@7XXX0$/A:T````/MD8Z@^@1/`$/AYX```"X_P```&:!?B"%
+M`'<-2`^W1B`/MH0X0`@``(G`2&G`T````$B)PT@#GT`)``"`>T3_=4RX%```
+M`("]F`````!T"0^VA9@````!P`^VP&G`0$(/`(F#D````$C'@Z``````````
+M2(F;J````$B-LY````!(BW\HZ`````#&0T0`2(U#*$B+4`A(B6@(2(E%`$B)
+M50A(B2K^0T7IJ````+C_````9H%]((4`=PU(#[=%(`^VA#A`"```B<!(:<"(
+M`0``2(G#2`.?&`D``(M%."7___\`/>$!$`!T;(![>/]U3+@4````@+V8````
+M`'0)#[:%F`````'`#[;`:<!`0@\`B8,H`0``2,>#.`$```````!(B9M``0``
+M2(VS*`$``$B+?RCH`````,9#>`!(C4,@2(M0"$B):`A(B44`2(E5"$B)*OY#
+M>TB#Q`A;7<-F9F:09F9FD&9F9I!F9I!32(GS@'YX_W042(VV*`$``$B+?RCH
+M`````,9#>/];PU-(B?.`?D3_=!1(C;:0````2(M_*.@`````QD-$_UO#2(/L
+M*$B)7"0(2(EL)!!,B60D&$R);"0@28G\2(GS9H%^..$!#X76````#[9&.H/H
+M$3P!#X?'````N?\```!F@7X@A0!W#4@/MT8@#[:,.$`(``")R$AIP-````!(
+MB<5)`ZPD0`D``('Y_P````^$8@$``/Y-14R-;2A,B>_H`````$B)P4@YV'5+
+M2(GN3(GGZ`````!,.6TH#X0V`0``QX60`````"TQ`4C'A:``````````2(FM
+MJ````$B-M9````!)BWPD*.@`````QD5$`.D``0``2(U5*$B+12A(B4@(2(D!
+M2(E1"$B)32A(BU,(2(L#2(E0"$B)`NG6````D+G_````9H%[((4`=PY(#[=#
+M($(/MHP@0`@``(G(2&G`B`$``$B)Q4D#K"08"0``BT,X)?___P`]X0$0``^5
+MP('Y_P````^5P@^VP(7"#X2"````_DU[3(UM($R)[^@`````2(G!2#G8=49(
+MB>Y,B>?H`````$PY;2!T6L>%*`$````M,0%(QX4X`0```````$B)K4`!``!(
+MC;4H`0``28M\)"CH`````,9%>`#K)V:02(U5($B+12!(B4@(2(D!2(E1"$B)
+M32!(BU,(2(L#2(E0"$B)`DB+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-FD$B#
+M[!A(B1PD2(EL)`A,B60D$$B)^TB)]4@/MT8P9D0/MJ0X0`@``$$/M_1(:?:(
+M`0``2`.W&`D``$B!QB`!``#H`````$@/MU4P2(.\TT`$````=!Y(BX330`0`
+M`$B#N(``````=0Q(QX330`0```````!(#[=%,,:$&$`(``#_00^W]$B-NY`/
+M``#H`````$$/M\1(BY,8"0``2&G`B`$``(!\$&K_=`Q(C3002(G?Z`````!(
+MB>Y(B=_H`````$$/M\1(BY,8"0``2&G`B`$``,9$$$(`2(N3&`D``,9$$$,!
+M2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9I!F9I!!5T%6055!5%532(/L"$F)
+M_4&)]T&^@````&9FD&9FD$$/M\9F0@^VA"A`"```9CW_``^$ZP```&9!@?Z!
+M``^'?`````^WP$AIP,@/``!)B<1-`Z5H"0``O0````!!@'PD6``/AK<```!)
+MC5PD2&:02(G?Z`````!(C4CP2(M3"$B)0PA(B1A(B5`(2(D"BT%`)0#__P`]
+M``#_`'45]D%#!'0/2(-Y.`!T"$B+03A$B'@!_\5!.&PD6'>UZV-F9I`/M\!(
+M:<#0````2(G"20.50`D``+T`````@'H[`'9!D(GI#[;!2(M,PEA(A<ET)(M!
+M0"4`__\`/0``_P!U%?9!0P1T#TB#>3@`=`A(BT$X1(AX`?_%0#AJ.W?%9F:0
+M9I!!_\=!_\9F08'^A0`/AN[^__]-.:W0"```=1))@<4`%```1(G^3(GOZ+/^
+M__](@\0(6UU!7$%=05Y!7\-F9F:04TB)^T@/MD9;9@^VM#A`"```QH0X0`@`
+M`/\/M_9(C;\`$```Z`````!(B[O0"```O@````#H9O[__UO#9F9FD%532(/L
+M"$B)_4@/MT9`9@^VG#A`"```QH0X0`@``/\/M_-(C;_(#P``Z``````/M]M(
+MBY5`"0``2&G#T````(!\$%#_=`Q(C3002(GOZ`````!(B[W0"```O@````#H
+M_?W__TB#Q`A;7<-F9I!F9I"Y`````+K0````2(GX9F:0B`A(_\!(_\IU]L9'
+M1/_&1U#_2(U'*$B)1RA(B4<PPY!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!(
+MB?U(C;_(#P``Z`````"Z`````(3`#X71````2(V]R`\``.@`````08G%NX+_
+M__\/ML.`O"A`"```_W40.)W@````<P^(G>````#K!__#@/N%=MRZ`````(#[
+MA@^$BP````^VPT2(K"A`"```00^WQ4QIX-````!,B>=(`[U`"0``Z`````!(
+MBY5`"0``9@^VPV9!B4040(!]40%U#TB+A4`)``!F0<=$!$S__T$/M]U(BX5`
+M"0``2&G;T````,9$`T(`2(N%0`D``&;'1`-.``!(B[W0"```O@````#HQ?S_
+M_TB)VD@#E4`)``!(B=!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#9F9FD&9F
+M9I!F9F:09F:02(/L"$@/MD8(9@^VM#C&"```QH0XQ@@``/\/M_9(@<<X$```
+MZ`````!(@\0(PV:0N0````"ZB`$``$B)^&9FD(@(2/_`2/_*=?;&1WC_QD=J
+M_\9'>A](C4<@2(E'($B)1RC#9F9FD&9FD&9FD&9FD$%505154TB#[`A(B?U(
+MC;^0#P``Z`````"Z`````(3`#X4_`0``2(V]D`\``.@`````08G%NP````!F
+M9I!F9I`/ML.`O"A`"```_W469@^VPV8YA=P```!S#6:)A=P```#K!/[#>=FZ
+M`````(#[@`^$\`````^VPT2(K"A`"```00^WQ4QIX(@!``!,B>=(`[T8"0``
+MZ`````!(BY48"0``9@^VPV9!B404,$B+A1@)``!!QD0$0@!(BX48"0``0<9$
+M!&7_2(N%&`D``$'&1`1D_TB+A1@)``!!QD0$9O](BX48"0``0<9$!&C_2(N%
+M&`D``$'&1`1G_TB+A1@)``!!QD0$:?](BX48"0``0<:$!.(`````2(N%&`D`
+M`$'&A`0'`0``_TB)[^@`````2(N5&`D``$F)A!0@`0``@'U1`74-2(N%&`D`
+M`$&`3`1$`4$/M\5(:<"(`0``2(G"2`.5&`D``$B)T$B#Q`A;74%<05W#9F9F
+MD&9FD&9FD&9FD%532(/L"$B)_4B-OP`0``#H`````+H`````A,`/A1H!``!(
+MC;T`$```Z`````")Q[Z`____B?(/ML*`O"A`"```_W420#BUWP```',10(BU
+MWP```.L(_\9`@/Z!=M>Z`````$"`_H(/A,\```")\@^VPD"(O"A`"```#[?'
+M2&G`R`\``+D`````NL@/``!(`X5H"0``B`A(_\!(_\IU]@^WWTAIV\@/``!(
+MB=I(`Y5H"0``2(U"&$B)0AA(B=A(`X5H"0``2(/`&$B)0`A(B=I(`Y5H"0``
+M2(U"*$B)0BA(B=A(`X5H"0``2(/`*$B)0`A(B=I(`Y5H"0``2(U"2$B)0DA(
+MB=A(`X5H"0``2(/`2$B)0`A(BX5H"0``0(AT`UM(B[W0"```O@````#H;OG_
+M_TB)VD@#E6@)``!(B=!(@\0(6UW#9F9FD&9FD&9FD%-(B?M(C;\X$```Z```
+M``"Z`````(3`#X7+````2(V[.!```.@`````B<>^`````(GR#[;"@+P8Q@@`
+M`/]U$4`X<TQS$T"(<TSK#69FD&:0_\9`@/X#=MBZ`````$"`_@0/A($```")
+M\@^VPD"(O!C&"```#[?'2&G`J````+D`````NJ@```!(C808H`$``(@(2/_`
+M2/_*=?8/M]=(:=*H````2`':2(V"T`$``$B)@M`!``!(B4`(2(V"Z`$``$B)
+M@N@!``!(B4`(2(V"``(``$B)@@`"``!(B4`(2('"H`$``$"(<@A(B=!;PV9F
+MD$B#[!A(B5PD"$B);"002(G]2(V'"`$``+H`````2#F'"`$``'0F2(V_"`$`
+M`.@`````2(G#2(G'Z`````!(B>_H`````$B)0W!(B=I(B=!(BUPD"$B+;"00
+M2(/$&,-FD$B#[`A(C8<(`0``2(M0"$B)<`A(B09(B58(2(DR2(-^<`!T#$B#
+MQG#H`````&9FD$B#Q`C#9F9FD&9F9I!F9I!(@^P(2(V'&`$``+H`````2#F'
+M&`$``'032(''&`$``.@`````QD`0`$B)PDB)T$B#Q`C#9F9FD&9F9I!F9F:0
+M2(L&2(''&`$``$B+5PA(B4<(2(DX2(E0"$B)`DC'!@````##9F9FD&9F9I!F
+M9F:02(/L"$B-ER@!``"X`````$@YER@!``!T"$B)U^@`````2(/$",-F9F:0
+M9F:09F:02(L&2(''*`$``$B+5PA(B4<(2(DX2(E0"$B)`DC'!@````##9F9F
+MD&9F9I!F9F:02(/L"$B-ET@!``"X`````$@YET@!``!T(DB)U^@`````O@``
+M``"YH````$B)PF:00(@R2/_"2/_)=?5(@\0(PTB!QT@!``!(BT<(2(EW"$B)
+M/DB)1@A(B3##9F:09F:02(/L"$B-EU@!``"X`````$@YEU@!``!T"$B)U^@`
+M````2(/$",-F9F:09F:09F:02(L&2(''6`$``$B+5PA(B4<(2(DX2(E0"$B)
+M`DC'!@````##9F9FD&9F9I!F9F:02(/L"$B-AS@!``"Z`````$@YAS@!``!T
+M%TB!QS@!``#H`````$C'0"``````2(G"2(G02(/$",-F9F:09F9FD$B+!DB!
+MQS@!``!(BU<(2(E'"$B).$B)4`A(B0)(QP8`````PV9F9I!F9F:09F9FD$B#
+M[$A(B5PD&$B);"0@3(ED)"A,B6PD,$R)="0X3(E\)$!(B?U)B?1F@7X@A0`/
+MAYP```!(#[=&(("\.$`(``#_#X2)````9H-^(']W(D@/MH0X0`@``$B+EQ@)
+M``!(:<"(`0``2(M$$$@/MD`(ZV5F@7X@@0!W)T@/MT8@2`^VA#A`"```2(N7
+M:`D``$AIP,@/``!(BT00"`^V0`CK-D@/MT8@2`^VA#A`"```2(N70`D``$AI
+MP-````!(BX00B`````^V0`CK#&9F9I!F9I"X_____P^VP$P/MK0HQ@@``$UI
+M]J@```!-C;0NH`$``$B+E6@)``!,C;HXN`\`9D&!?"0@A0!W&DD/MT0D($@/
+MMH0H0`@``$AIP,@/``!,C3P"28M4)$@/MD(!@_@2=!`]D0````^$)0$``.F0
+M`0``28L&2(E$)`B]``````^V0@F(1"07#[92&HA4)!9!O0````!!@'X.`'8_
+M28U>8&:02(G?Z`````!(B<5(BT,(2(EK"$B)70!(B44(2(DH3#E]4'4,#[9%
+M>4$Z1"0E=`J00?_%13AN#G?'28-\)'@`=`])BW0D>$B+?"0(Z`````!,B>9(
+MBWPD".@`````#[:5P@```(U"`8B%P@```(#Z`W<F@'PD%@!U'T$/ME0D)4B+
+M=5!!N`````"Y`@```$R)]^@`````ZSH/MI7"````C4(!B(7"````@/H"=B6`
+M?"06`'4>QD5#`L9%0O^`943^2(GN2(M\)`CH`````.FN````#[9,)!8/ME0D
+M%TR)_DR)]^@`````Z90```!F9F:0N0````!!O0````!!@'X.`'8[28U>8$B)
+MW^@`````2(G!2(M#"$B)2PA(B1E(B4$(2(D(3#EY4'4+#[9!>4$Z1"0E=`E!
+M_\5%.&X.=\E(#[9!0*@"=!JH!'06J`%T$D$/ME0D)4B+<5!,B??H`````$F#
+M?"1X`'0-28MT)'A(B>_H`````$R)YDB)[^@`````2(M<)!A(BVPD($R+9"0H
+M3(ML)#!,BW0D.$R+?"1`2(/$2,-F9F:09F:09F:09F:02(/L*$B)7"0(2(EL
+M)!!,B60D&$R);"0@28G\28GU2(LO2(GOZ`````!(B<-(A<!T<4B)[^@`````
+M2(G"2(7`=&%(C7M8QD,XX<9#.0'&0SH0QD,ENV9!#[9%6V:)0R!)BP0D2(E#
+M*,=#-)````!(C4(02(E#2$B)4WC&0`$`QD(00$C'@Z``````````O@````#H
+M`````$B)WDB)[^@`````2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9FD&:0
+M2(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($F)_$F)]4&)UDB++TB)[^@`
+M````2(G#2(7`='5(B>_H`````$B)PDB%P'1E2(U[6,9#..'&0SD!QD,Z$,9#
+M);MF00^V15MFB4,@28L$)$B)0RC'0S20````2(U"$$B)0TA(B5-XQD`!$,9"
+M$$!$B'`)2,>#H`````````"^`````.@`````2(G>2(GOZ`````!(BQPD2(ML
+M)`A,BV0D$$R+;"083(MT)"!(@\0HPV9FD&9FD$B#[#A(B5PD"$B);"003(ED
+M)!A,B6PD($R)="0H3(E\)#!)B?Q)B?5!B=9!B<](BR](B>_H`````$B)PTB%
+MP`^$@P```$B)[^@`````2(G"2(7`='-(C7M8QD,XX<9#.0'&0SH01(AS)69!
+M#[9%6V:)0R!)BP0D2(E#*,=#-)````!(C4(02(E#2$B)4WC&0`&1QD(00$2(
+M<`E$B'@*2,>#H`````````"^`````.@`````2(G>2(GOZ`````"_H(8!`.@`
+M````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9I!FD$B#
+M[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?Q)B?=)B<U!B=9(
+MBR](B>_H`````$B)PTB%P'4/0<:%X0````'IC````&:02(GOZ`````!(B<)(
+MA<!U%4B)WDB)[^@`````0<:%X0````'K94B->UC&0SCAQD,Y`<9#.A!$B',E
+M9D$/MD=;9HE#($F+!"1(B4,HQT,TD````$B-0A!(B4-(2(E3>,9``1+&0A!`
+M1(AP"4C'@Z``````````O@````#H`````$B)WDB)[^@`````2(M<)`A(BVPD
+M$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9I!54TB#[`A(B?U(B?-F@7X@
+MA0`/AY@```!(#[=&(("\.$`(``#_#X2%````9H-^(']W(T@/MH0X0`@``$B+
+MEQ@)``!(:<"(`0``2(M$$$AF#[9(".M@9H%^(($`=RA(#[=&($@/MH0X0`@`
+M`$B+EV@)``!(:<#(#P``2(M$$`AF#[9(".LP2`^W1B!(#[:$.$`(``!(BY=`
+M"0``2&G`T````$B+A!"(````9@^V2`CK!;G_````OO\```!F@7L@A0!W#D@/
+MMT,@9@^VM"A`"```9H'Y_P!T'`^WP8"\*,8(``#_#Y3"9H'^_P`/E,`)T*@!
+M=!!(B=Y(B>_H`````.F(````#[?!2`^VO"C&"```2&G_J````$B-O"^@`0``
+M9@^V4SMF#[9#/,'@"`'"9H'B_P$/MD,]@_@!=`6#^`AU0`^WTDB+A9`)``!(
+MBP302#M#:'4L#[=(,HG*9L'J!0^WTH/A'TC'P/[___](T\`A1)5<2(M#:`^W
+M<#+H`````)!(B=Y(B>_H`````$B#Q`A;7<-F9F:09F9FD&9FD&9FD$B#[#A(
+MB5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?U)B?1!B==(BR](#[=&
+M($@/MH0H0`@``$AIP(@!``!)B<9,`[48"0``2(GOZ`````!(B<-!#[=4)#*)
+MT&;!Z`4/M\"+1(5<B=&#X1](T_BH`0^%J0```$B%VP^$H````$B->UA!#[9$
+M)"4/MHW>````T^`)T,9#..'&0SD!QD,Z#XA#.V;!Z`B(0SQ$B'L]28N&U```
+M`$B)0SY,B6-HQD,EJD$/MT8P9HE#($F+10!(B4,HQT,T`````$C'0T@`````
+M2,>#H`````````"^`````.@`````2(G>2(GOZ`````!!#[=,)#*)RF;!Z@4/
+MM]*#X1^X`0```$C3X`E$E5Q(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\
+M)#!(@\0XPV9FD&9FD&9FD$B#["A(B1PD2(EL)`A,B60D$$R);"083(ET)"!)
+MB?Q(BT=(3(LP3(GWZ`````!(B<5(A<!U#D'&A"3A`````>FC````3(GWZ```
+M``!)B<5(A<!U'$'&A"3A`````4B)[DR)]^@`````ZWUF9I!F9I!(C5U8QD4X
+M)<9%):M!#[=$)#!FB44@3(EU*,=%-`@```#'A90````(````28M%$$B)14A(
+MC4`(2(E%4,9%,"1,B6UX2,>%H`````````"^`````$B)W^@`````28MU&+H(
+M````2(G?Z`````!(B>Y,B??H`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D
+M($B#Q"C#9F9FD&9F9I!F9F:02(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D
+M($F)_$B+1TA,BS!,B??H`````$B)Q4B%P'4.0<:$).$````!Z:L```!,B??H
+M`````$F)Q4B%P'4<0<:$).$````!2(GN3(GWZ`````#I@@```&9FD$B-75C&
+M13B>QD4Y$,9%12#&126K00^W1"0P9HE%($R)=2C'130@````QX64````"```
+M`$F+11!(B45(3(EM>$B-0"!(B450QD4P)$C'A:``````````O@````!(B=_H
+M`````$F+=1BZ(````$B)W^@`````2(GN3(GWZ`````!(BQPD2(ML)`A,BV0D
+M$$R+;"083(MT)"!(@\0HPV9F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,
+MB70D*$R)?"0P28G\08GV2(M'2$R+*$R)[^@`````2(G#2(7`=1%!QH0DX0``
+M``'IN@```&9FD$R)[^@`````2(G%2(7`=2!!QH0DX0````%(B=Y,B>_H````
+M`.F.````9F9FD&9FD$R->UC&0S@2183V=!/&0SD!QD,Z@,9#/$#K"69FD&:0
+MQD,\),9#):M!#[=$)#!FB4,@3(EK*,=#-&````#'@Y0````(````2(M%$$B)
+M0TA(B6MX2,>#H`````````"^`````$R)_^@`````2(MU&+I@````3(G_Z```
+M``!(B=Y,B>_H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#
+MQ#C#9F:09F:02(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($B)^TB+1TA,
+MBS!,B??H`````$B)Q4&\``@``$B%P'4,QH/A`````>G!````3(GWZ`````!)
+MB<5(A<!U&,:#X0````%(B>Y,B??H`````.F:````D&9!@?P``;C_````1`]#
+MX,9%.!K&13D(QD4Z",9%.P!$B&4\QD4]`,9%):L/MT,P9HE%($R)=2A%#[?D
+M1(EE-,>%E`````@```!)BU402(E52$2)X$@!T$B)15#&13`D3(EM>$C'A:``
+M````````2(U=6+X`````2(G?Z`````!)BW481(GB2(G?Z`````!(B>Y,B??H
+M`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F9FD&9FD&9FD$B#
+M[!A(B1PD2(EL)`A,B60D$$F)_$B+1TA(BRA(B>_H`````$B)PTB%P'4+0<:$
+M).$````!ZU_&0#@5QD`EJT$/MT0D,&:)0R!(B6LHN0$```"Z`0```$B)WDB)
+M[^@`````A,!U&DB)WDB)[^@`````0<:$).$````!ZQIF9F:02,>#H```````
+M``!(B=Y(B>_H`````$B+'"1(BVPD"$R+9"002(/$&,-F9F:09F:0N@0```!`
+M#[;'@_@7=T>)P/\DQ0````"#PB3K.8/".)#K,X/"$.LN@\(<ZRF#PDB0ZR.#
+MPASK'H/"/.L9@\(DD.L3@\(8ZPZ#PA3K"8/"2)#K`X/",(G0PV9F9I!F9F:0
+M2(/L&$B)7"0(2(EL)!!(B?U(B?.`?FK_=!,/MG9J2(L_Z`````#&0VK__DU$
+M2(M<)`A(BVPD$$B#Q!C#9F9FD$@/MD9`J`)T#*@$=`BH`0^$ZP```(!^:O\/
+MA>$```!(BP>+@!@!``")!0````!!B<&Y`````+@!````9F:09I!!B<!!T^!%
+MA<AU.8A.:DB+%T2)R$0)P(F"&`$``$B+!XN`6`$``(D%`````$&)P44AP0^$
+M?P```$B+!T2)B%@!``#K<__!@/D?=K5(BP>+@!P!``")!0````!!B<&Y````
+M`+@!````08G`0=/@187(=3Z-02"(1FI(BQ=$B<A$"<")@AP!``!(BP>+@&`!
+M``")!0````!!B<%%(<%T&4B+!T2)B&`!``#K#69FD&9FD/_!@/D?=K#^1T1F
+M9I!F9I#SPV9F9I!F9F:09F:09F:02(/L&$B)7"0(2(EL)!!(B?U(B?.`?E#_
+M=!,/MG902(L_Z`````#&0U#__DU$2(M<)`A(BVPD$$B#Q!C#9F9FD(!^4/\/
+MA=8```!(BP>+@!@!``")!0````!!B<&Y`````+@!````08G`0=/@187(=36(
+M3E!(BQ=$B<A$"<")@A@!``!(BP>+@%@!``")!0````!!B<%%(<%T?4B+!T2)
+MB%@!``#K<?_!@/D?=KE(BP>+@!P!``")!0````!!B<&Y`````+@!````9F9F
+MD&9FD$&)P$'3X$6%R'4UB$Y02(L71(G(1`G`B8(<`0``2(L'BX!@`0``B04`
+M````08G!12'!=!-(BP=$B8A@`0``ZP?_P8#Y'W:Y_D=$9F:09F:0\\-F9F:0
+M9F9FD&9FD&9FD$%455-)B?Q(BQ^]`````&:#>U@`#X8B`0``9F:09F:0#[?5
+M2(N#D`D``$B#/-``#X3[````00^V3"0(2(L$T&:!>""%``^'Q0```$@/MU`@
+M@+P:0`@``/\/A+(```!F@W@@?W<M2`^VA!I`"```2(N3&`D``$AIP(@!``!(
+MBT002`^V0`@YR`^$BP```.F>````#[?52(N#D`D``$B+!-!F@7@@@0!W*T@/
+MMT`@2`^VA!A`"```2(N3:`D``$AIP,@/``!(BT00"`^V0`@YR'1'ZUT/M]5(
+MBX.0"0``2(L$T$@/MT`@2`^VA!A`"```2(N30`D``$AIP-````!(BX00B```
+M``^V0`@YR'0+ZR&0@?G_````=1@/M\5(BY.0"0``2(L\PKX`````Z`````#_
+MQ68Y:U@/A^3^__];74%<PV9F9I!F9F:09F9FD&9FD$B+5G!(A=)T'$B+1CA(
+MB4(82(M&0$B)0B!(BT9(2(E"*,9"$`'SPV9FD&9FD&9FD$B+5G!(A=)T&$B+
+M0AA(B48X2(M"($B)1D!(BT(H2(E&2//#9F9FD&9FD&9FD&9FD%532(/L"$B)
+M_4B)\T@Y?B@/A,H```"`?B0`#X6G````#[9&.(/X%70)@_A5#X65````2(M3
+M<$B%T@^$B````(!Z$`$/A7X```!F@7H8X0&0=75(BXT8"0``2(VQ>(8!`&:!
+M>R"%`'<92`^W0R!(#[:$*$`(``!(:<"(`0``2(TT`0^V0AJ#^`=T'X/X!W\'
+M@_@&=![K,8/X#&9F9I!F9I!T((/X#702ZQYF@V9B_6:0ZQ5F@TYB`NL.9H-F
+M8O=FD.L%9H-.8@A(@WMX`'022(US>$B)[^@`````9F:09F:09H%[..$!#X5F
+M`0``9H%[((4`#X><````2`^W0R"`O"A`"```_P^$B0```$B+E1@)``!(C;)X
+MA@$`9H%[((4`=Q1(#[:$*$`(``!(:<"(`0``2(TT`H![)`!U60^V0SJ#^`=T
+M((/X!W\)@_@&="1FD.M"@_@,=#B#^`UF9I!F9I!T%^LP9H-F8OUF9F:09F:0
+MZR)F@TYB`NL;9H-F8O=FD.L2#[?!ZV(/M\'IIP```&:#3F((9H%[..$!#X6R
+M````@'LZ"P^%J````$B)[@^W2R`/M]$/MD5&_\C_P3G"?20/MD5&C5#_9H'Y
+MA0!W#0^WP8"\,$`(``#_=:</M\'_P3G0?..X_P```&8]_P!T7TB)[@^W2R`/
+MM]$/MD5&_\C_P3G"?2P/MD5&C5#_9F9FD&:!^84`=Q$/M\&`O#!`"```_P^%
+M7____P^WP?_!.=!\W[C_````9HE#(,9#)(!(B=Y(B>_H`````.DR`0``QD,D
+M`$@Y:RAT)TB+0W!(A<"0=!V`>!`!=0M(B=Y(B>_H`````$B-<W!(B>_H````
+M`$B#NX``````=`](C;.`````2(GOZ`````!(BWLH2(G>_Y.@````9H%[..$!
+M=6,/MD,Z@^@1/`%W6+K_````9H%[((4`=PU(#[=#(`^VE"A`"```@?K_````
+M#X2B````B=!(:<#0````2(G&2`.U0`D``(!^10`/A84```"`?E#_='](B>_H
+M`````.MU9F:09I"Z_P```&:!>R"%`'<-2`^W0R`/MI0H0`@``(G02&G`B`$`
+M`$B)QD@#M1@)``"+0S@E____`#WA`1``#Y7`@?K_````#Y7"#[;`A<)T(V:!
+M>SCA`74+#[9#.H/H$3P!=A"`?GL`=0I(B>_H`````&:02(/$"%M=PV9FD&9F
+MD&9FD$B#[!A(B5PD"$B);"002(G[2(GU#[=6,HG09L'H!0^W\(G1@^$?2,?`
+M_O___TC3P"%$MUQF@?K_#W1%#[?Z2(N+D`D``$B#//D`=#1(QP3Y`````"&$
+MLY@)```/M_)(C;M8#P``Z`````!(B>Y(B=_H`````$B)[DB)W^@`````2(M<
+M)`A(BVPD$$B#Q!C#D$%44TB#[`A)B?1(BY^0$```2(''6`\``.@`````B<8/
+MM\!(P>`&2`'828D$)+D`````ND````"("$C_P$C_RG7V#[?&2(/$"%M!7,-F
+M9F:00;@`````N`````!(@W]``'1;ZPQ)B<#K,V9F9I!F9I!(BW=`N0````!F
+M9F:09F:0#[;!2(-\QE@`=`I(BT3&6#A0>73/_\&`^01VY$B+1T!F@7A`A0`/
+MEL!-A<`/E<(/ML"%PK@`````20]%P//#D$B#["!(B1PD2(EL)`A,B60D$$R)
+M;"0828G\28G-9@^V^L'F"(T\/KX`````08!\)#``#X3H````28-\)%``#X3<
+M````08N$))0```"H";@!````#T3PNP````!(Q\4`````#[;+B?AF(T3-`&8[
+M1,T`#X69````#[9$S04\`P^4PCP'#Y3`"="H`70'0#ATS01U?4'&1"0D(`^V
+MVP^V5-T&#[9TW05,B>?H`````$F+5"10#[9$W0>(0@U-A>UT.TF+30!)BT0D
+M4$B)RDC!ZB")4`-)BT0D4(`(@$'VA"26````!'052(72=!!)BT0D4(E("$F+
+M1"10@"!_28M4)%!!#[9$)#"#Z`>(0@?K$F:0_\.`^P\/AD?___]F9I!FD$B+
+M'"1(BVPD"$R+9"003(ML)!A(@\0@PV9F9I!F9F:02(/L*$B)7"0(2(EL)!!,
+MB60D&$R);"0@2(G]2(GS9H%^((4`#X>6````2`^W1B"`O#A`"```_P^$@P``
+M`&:#?B!_=R)(#[:$.$`(``!(BY<8"0``2&G`B`$``$B+1!!(#[90".M?9H%^
+M(($`=R=(#[=&($@/MH0X0`@``$B+EV@)``!(:<#(#P``2(M$$`@/ME`(ZS!(
+M#[=&($@/MH0X0`@``$B+ET`)``!(:<#0````2(N$$(@````/ME`(ZP:0NO__
+M__^^_P```&:!>R"%`'<.2`^W0R!F#[:T*$`(``"`^O\/A)<````/MLJ`O"G&
+M"```_P^4PF:!_O\`#Y3`"="H`75[@'LD!G1U3`^VI"G&"```36GDJ````$V-
+MI"R@`0``#[?&2&G`B`$``$F)Q4P#K1@)``"`>SH!=2>_"@```.@`````2(G>
+M2(GOZ`````"Z`@```$R)[DR)Y^@`````ZQR_]`$``.@`````2(G>2(GOZ```
+M``!F9F:09F:02(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9F9I!F9I!(@^PH
+M2(E<)`A(B6PD$$R)9"083(EL)"!)B?2)U4B+'TB)W^@`````2(G"2(7`=%_&
+M0#CAQD`Y`4"(:#K&0#L/00^W1"0P9HE"($B)6BC'0C0`````2,="2`````!(
+MQX*@`````````$B)UDB)W^@`````0(#]`74,OP4```#H`````.L*OU##``#H
+M`````$B+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-F9F:09F9FD%532(/L"$B)
+M_4B)\V:!?B"%``^'F````$@/MT8@@+PX0`@``/\/A(4```!F@WX@?W<B2`^V
+MA#A`"```2(N7&`D``$AIP(@!``!(BT002`^V2`CK86:!?B"!`'<G2`^W1B!(
+M#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(#[9(".LR2`^W1B!(#[:$.$`(
+M``!(BY=`"0``2&G`T````$B+A!"(````#[9(".L(9F:0N?____^^_____V:!
+M>R"%`'<-2`^W0R`/MK0H0`@``(#Y_W0A#[;!@+PHQ@@``/\/E,)`@/[_#Y3`
+M"="H`74&@'LD!G4@2(-[>`!T#$B-<WA(B>_H`````$B)WDB)[^@`````ZVL/
+MML%(#[:\*,8(``!(:?^H````2(V\+Z`!``")\@^VPDAIP(@!``!(B<9(`[48
+M"0``@'LD`'0*N@$```#H`````$B#>W@`=!-(C7-X2(GOZ`````!F9F:09F:0
+M2(G>2(GOZ`````!F9I!FD$B#Q`A;7<-F9I!F9I!F9I!(@^PX2(E<)`A(B6PD
+M$$R)9"083(EL)"!,B70D*$R)?"0P28G_28GT3(LW3(GWZ`````!(B<5(A<`/
+MA(X```!,B??H`````$F)Q4B%P'412(GN3(GWZ`````#K<69F9I!(C5U8QD4X
+MX<9%.0'&13H.00^W1"0P9HE%(&9!@V0D8/=)BP=(B44HQT4T``@``$F+11!(
+MB45(3(EM>$C'A:``````````O@````!(B=_H`````(M5-$F+=1A(B=_H````
+M`$B)[DR)]^@`````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$
+M.,-(@^P82(D<)$B);"0(3(ED)!!(B?U!B?1(BT=(2(L82(G?Z`````!(B<)(
+MA<!T1,9`.!O&0#D!1(A@/`^W13!FB4(@QH*8````#TB)6BC'0C0`````2,="
+M2`````!(QX*@`````````$B)UDB)W^@`````2(L<)$B+;"0(3(MD)!!(@\08
+MPV9F9I!F9I!F9I!(@^P82(D<)$B);"0(3(ED)!!(B?U(BT=(3(L@3(GGZ```
+M``!(B<-(A<!T<$R)Y^@`````2(G"2(7`=13&A>$````!2(G>3(GGZ`````#K
+M3,9#.``/MT4P9HE#(,:#F`````],B6,HQT,T`````$C'0T@`````2(M"$$B)
+M0U#&0S`D2(E3>$C'@Z``````````2(G>3(GGZ`````!(BQPD2(ML)`A,BV0D
+M$$B#Q!C#D$%6055!5%5328G^28GU2(G3QD)#`<9"0@"^!@```$R)[^@`````
+M2(-[4`!T%DB+4QA(BT,02(E0"$B)`DB+0U#^2%B`>WL`=!]F9F:09F:03(GW
+MZ`````"_`0```.@`````@'M[`'7H2(.[&`$```!T'@^VLP4!``!(B[L8`0``
+MN@$```#H`````&9FD&9FD$B#>U``=!D/MG-Y2(M[4+H!````Z`````!F9F:0
+M9F:02(-[.``/A)D```!(BVLX2(.]@`````!U>TB#O8@`````=7'V0T0$=21!
+M_H;O$P``3(GWZ`````!(BT,X#[9P`;H!````3(GWZ`````!(BT,X#[90`@^V
+M<`%(Q\<`````N`````#H`````$B+4SA)B[;0"```OP$```#H`````$B+4SA)
+MB[;0"```OP8```#H`````$C'0S@`````2,=%8`````!(@WM8`'022(M36$@/
+MMD-Y2,=$PE@`````2(M3"$B+`TB)4`A(B0)!_DT.2(G>3(GWZ`````!!@'T)
+M_W150;P`````08!]#@!V.$F-;6!(B>_H`````$B)PTB+10A(B5T(2(DK2(E#
+M"$B)&(![0O]U"T'_Q$4X90YWU.L&13AE#G<00<9%"?],B>Y,B??H`````%M=
+M05Q!74%>PY")\`^VP$B-!,!(P>`'!6!7``")!\-F9F:09F9FD&9FD$&)T$B)
+M^;\`````B?)(B<A(A=)T"T"(.$C_P$C_RG7UB3&)\DB!ZF!7``!(N(_C.([C
+M.([C2/?B2,'J"HA1!$0XPG8$1(A!!+H`````@'D$`'8?#[;"QD0!!_](C03`
+M2,'@!\:$",17``#]_\(X401WX<9!!@#&004`N@````"0#[;"2&G`L````$B-
+MA`@`0@``QD`+`8A0"O_"@/H?=N#SPV9F9I!F9F:09F:09F:005154TF)]$B)
+M^[T`````@'\$`'9#B>H/ML)(C03`2,'@!T@!V("XQ%<``/UT(DB-N+Q7``"Z
+M"````$R)YN@`````A,!T"D`/ML7K$69F9I#_Q4`X:P1WO;C_````6UU!7,-F
+M9F:09F9FD&9FD&9FD%-(B?OH`````+H)````//]T$P^VP$B-!,!(P>`'#[:4
+M&&97``")T%O#9F9FD&9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD($F)_4B)
+M\TB-MI````!)B=Q(BZN8````@'T&``^$3@$``$B)[^@`````B<$\_P^$/`$`
+M``^V0P&#^`%T<(/X`7\,A<!T*&9FD.DB`0``@_@0#X21````/9`````/A-4`
+M``!F9F:09F:0Z0(!``"`O0M"````9F9FD`^%\0```,:%"T(```'^308/MM%!
+MN0````!!N`````"Y`````$R)[DB)[^@`````Z<,```"`O0M"````#X6V````
+MQH4+0@```?Y-!@^VT4&Y`````$&X`````+D!````3(GN2(GOZ`````#IB```
+M`+H!````#[;"2&G`L````$B-A"@`0@``.$@(=0L/MD`)03I$)`ET!__"@/H?
+M=M?^308/MM%-B>%%#[9$)`FY$````$R)[DB)[^@`````ZSE(#[:#J@```$AI
+MP+````#&A"@+0@```?Y-!@^VT4&Y`````$&X`````+F0````3(GN2(GOZ```
+M``!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#055!5%532(GU28G538G,08G)
+MNP`````/ML-(:<!0$```2#EL."!U:+D`````#[;#2&GP4!````^WP4C!X`5(
+M`?!,C10X38U:0$$/MD,,A,`/E,(\\`^4P`G0J`%T(DF):C!-B6HX9D6)0P)%
+MB$I`28L$)$F)0D1!QD,,_^L29I#_P6:!^8$`=JYF9F:09F:0_\.`^P-V@%M=
+M05Q!7<-FD$B#[`A)B?.)T$B)_DR-EV!!``#&APM"````0;D`````0;B0````
+M3(G19F9FD&9FD$2("4C_P4G_R'7U0<9"`0!!Q@)`2,>&`$(```````!(B;[X
+M00``#[;`2(T$P$C!X`=(BX0PO%<``$B)AO!!``!(@<9@00``3(G?Z`````!(
+M@\0(PV9F9I!F9F:09F9FD$B#[`A)B?.)T$B)_DR-EV!!``#&APM"````0;D`
+M````0;B0````3(G19F9FD&9FD$2("4C_P4G_R'7U0<9"`0%!Q@)`2,>&`$(`
+M``````!(B;[X00``#[;`2(T$P$C!X`=(BX0PO%<``$B)AO!!``!(@<9@00``
+M3(G?Z`````!(@\0(PV9F9I!F9F:09F9FD%532(/L"$B)]8G328GYN@$````/
+MML-(C03`28G#2<'C!P^VPDAIP+````!*C80(`$(``(!X"P$/A;,```"(6`B(
+M2`G&0`L`2`^V0`I(:<"P````3HV4"&!!``!!N`````"^D````$R)T&9F9I!F
+M9I!$B`!(_\!(_\YU]4'&0@$00<8"0$&(2@D/MM)(:=*P````3`'*2(V*`$(`
+M`$@/MD$*2&G`L````$P!R$C'@`!"````````2(FX^$$``$N+A`N\5P``2(F"
+M\$$``$@/MG$*2&GVL````$J-M`Y@00``2(GOZ`````#K%F9FD&9FD/_"@/H?
+M#X8F____N`$```!(@\0(6UW#9F:09F:09F:0055!5%532(/L"$F)]4F)U$R)
+MS4&)R42)P4F)^KH!````#[;=#[;"2&G`L````$P!T$B-L`!"``"`?@L!#X62
+M````QD8+`$R)D/A!``!(#[9&"DAIP+````!.C9P08$$``$&X`````+Z0````
+M3(G8D$2(`$C_P$C_SG7U0<9#`9!!Q@-`08A;!D&(2P=%B$L)2(M%`$F)0Q`/
+MMO)(:?:P````3`'62,>&`$(```````!(B;[X00``28M$)%Q(B8;P00``2('&
+M8$$``$R)[^@`````ZQ#_PH#Z'P^&1?___[@!````2(/$"%M=05Q!7<.04TB)
+M\TF)TT2)PDB)_DR-EV!!``!!N0````!!N)````!,B=!$B`A(_\!)_\AU]4'&
+M0@$30<8"0`^VQD&(0@9!B%('08A*"4C'A@!"````````2(F^^$$``$F+0UQ(
+MB8;P00``2('&8$$``$B)W^@`````6\-F9F:09F9FD&9F9I`/MM(/MTQ6>/_!
+M9HE,5GAF#[9&`@'(#[?`PV9FD&9FD+H!````B=!(:<"P````@+PX"T(```%U
+M"(G0PV9FD&:0_\*#^A]VWKC__P``9F9FD,-F9F:09F9FD&9F9I!F9I"Y`0``
+M`(G(2&G`L````$B-A#@`0@``0#AP"'4*.%`)=07&0`L!P__!@_D?9F:09I!V
+MT_/#9F9FD&9F9I!F9F:02(/L6$B)7"0H2(EL)#!,B60D.$R);"1`3(ET)$A,
+MB7PD4$F)_TB)="0808G61(A$)!=)B?Q-B<T/ML)(C03`2,'@!X"\.,17``#]
+MN/W___\/1,@/ML&#^!`/A)$"``"#^!!_'(7`#X2D````@_@!D`^$/0$``.D%
+M"0``9F:09I`]X@````^$9@@``#WB````?Q,]D`````^$5P<``&9FD.G;"```
+M/?\```!F9I!F9I`/A<H(```/ML)(C03`2,'@!\:$.,17``#_@+\+0@```74?
+M00^VUDB+="08Z`````"%P`^%F`@``$'^1P;ICP@``$2)\0^VP<9$!P<!2(M4
+M)!A(B53'$.EU"```9F:09I!(C8]@00``@+\+0@```750#[;"2(T$P$C!X`=(
+M`?@/ME$)B)!B5P``2`7`5P``#[91"H/B`8A0!<9`!`!!#[;62(MT)!CH````
+M`(7`#X4>"```0?Y'!ND5"```9F:09I`/ML+&1`<'`4B+5"082(E4QQ#I^0<`
+M`$'&1`0'_P^VTDF+=,000;D`````0;@`````N?\```!,B?_H`````.G-!P``
+MNP````!(C9=@00``1(GQ#[;!2(T$P$C!X`=(C0PX#[9",HB!LE<```^W0C!F
+MB8&P5P``2(M"*$B)@:!7``!(BT(,2(F!<%<``$B+0A1(B8&`5P``2(M"'$B)
+M@8A7``"+0B2)@9A7``#&@<17```!@'\&'P^$5`<``("Y8E<```!T?4$/ML:)
+M1"001(GR#[;"2(T$P$B)Q4C!Y0=)B<U,C;0]L%<``&9F9I!F9I`/MLN+5"00
+M2(MT)!A,B?_H`````(7`=2#_PT'^1"0&03B=8E<``'4*0<:%LU<```#K#D&(
+M7@/K"$&(7@/K%&:008!\)`8?=`I".)PE8E<``'>N0<:$)`M"```!N@````!!
+M@'PD!``/AK0&``!F9F:0#[;"08!\!`<!#X2H_O___\)!.%0D!'?HZ9,&``!F
+M9I#&1"0/_TF+01A(B40D(`^VPDB-!,!(P>`'2(TL.$B-A<!7``#&0`000?9!
+M#'`/A(`#``!(@[W(5P```'1Y#[98!DB+O<A7``!(@\=<N@@```!(C70D(.@`
+M````A,!U5T'V10\/=%!(BZW(5P``2(7M=$2`?64`=#0/MMN)VDB)[DR)Y^@`
+M````38U-&$0/M\")V4B)ZDB+="083(G_Z``````/MEUF2(MM:.L%O0````!(
+MA>UUO$$/ME4/]L(-#X0<`0``1(GQ#[;!2(T,P$B)R$C!X`=,`>"`N&!7```?
+M#X?[````#[:88%<``/;""'06#[;#2(T$R$C!X`1"QH0@X%D```;K'D2)\@^V
+MP@^VTTB-!,!(C03"2,'@!$+&A"#@60``!T2)\`^VR`^VPTB-#,E(C13(2,'B
+M!$P!XDB-LN!9``#&1@$`00^V10^(1@-(BT0D($B)@NA9``!!#[9%"8A&`DC!
+MX0=!#[9%#8/@#T(/MI0A9E<``#C"#T?0@^(/#[9&!(/@\`G0B$8$1(GR#[;"
+M2(T$P$B)\4C!X`>^#P```$$B=2E"#[:4(&97``!`./(/1];!X@0/MD$$@^`/
+M"="(001$B?$/ML%(C03`2,'@!T+^A"!@5P``Z=,!``!!]D4/`@^$R`$``$B-
+M="0@3(GGZ`````!!B<`\_P^%4@$``,9$)`\`08!\)`0`=C=(#[9$)`](C03`
+M2,'@!T(/MH0@Q%<``#S_#Y3"//T/E,`)T*@!=1#^1"0/#[9$)`]!.$0D!'?)
+M2`^V1"0/2(T$P$C!X`>Y`````+ID````2HV$(&!7``"("$C_P$C_RG7V2`^V
+M5"0/2(T4TDC!X@=,`>)$B?$/ML%(C03`2,'@!TP!X$B-N&!7``!(B;K(5P``
+M2(N(O%<``$B)BK17``!(BTPD&$B)BMA9``!(BX#05P``2(F"T%<``,:"Q%<`
+M`/](C8I@5P``2`^V<0=!#[9%"8B$,FA7``#^00=!#[95#8/B#P^V1P8XT`]'
+MPHA!!D@/MD0D#TB-!,!(P>`'3`'@2(M4)"!(B9"\5P``00^V50^(D&-7```/
+MME0D%XB0QE<``$$/MD0D!4$Z1"0$=09!QD0D!0!!_D0D!>M+QD4#`.D[`P``
+M1(GQ#[;12(T4TDC!X@</ML!(C03`2,'@!TJ--"!(C8Y@5P``2CF,(LA7``!T
+M%$@/ME$'00^V10F(A!9H5P``_D$'08#X_W462`^V1"0/0<9$!`<!2(M4)!A)
+MB53$$$$/ME4)00^V]DR)Y^@`````1(GQ#[;!2(G"2(T$P$C!X`=*C0P@2(V!
+ML%<``(!X`P`/A+8```!!@'PD!A\/A)H"```/MD`#.H%B5P``#X.*`@``10^V
+M[DF)UF9FD$B-!-)(P>`'2HT<(,:#Q%<``!!(C:NP5P``#[9-`T2)ZDB+="08
+M3(G_Z`````"%P`^%2@(``$'^1"0&#[9%`__`#[:38E<``#G0#X3L_O__3(GR
+M2XT$]DC!X`=*C30@2(V&L%<```^V2`/_P8A(`T&`?"0&'P^$!0(``#J.8E<`
+M``^">?___^GT`0``9F9FD$&`?"0&``^%Y`$``$$/MM9!N0````!!N`````"Y
+MD````$B+="083(G_Z`````#IO0$``$'&1`0'_P^VTDF+=,000;D`````0;@`
+M````N?\```!,B?_H`````,9$)`<!Z<L```#&1"0'`,=$)`@`````BT0D"$AI
+MP%`0``!(BU0D&$HY5"`@=6>]`````(M$)`A,:>A0$```B>A(P>`%3`'H3`'@
+M2(U80(![#/]U-T&`?"0&'P^$-@$```^V2$!,C4A$1`^W0P)(BU`X2(MT)!A,
+MB?_H`````(7`=0E!_D0D!L9##/#_Q8']@0```':I_T0D"(-\)`@##X9S____
+M08!\)`8`#X7F````N@````!!@'PD!`!V&`^VPD&`?`0'`0^$#?_____"03A4
+M)`1WZ(!\)`<`#X6V````00^VUD&Y`````$&X`````+GB````2(MT)!A,B?_H
+M`````.F/````NP````"`?P0`=CMF9F:0#[;#2(T$P$C!X`=*C8P@P%<```^V
+M402`^OT/E<"`^O\/E<(/ML"%PG0$QD$$_O_#03A<)`1WR42)\0^VP4B-!,!(
+MP>`'2HNL(-!7``"[``````^VPTAIP%`0``!,`>!(C5`@@'H(`74-QD((`$B+
+M<"!,B?__U?_#@/L#=M5F9I!(BUPD*$B+;"0P3(MD)#A,BVPD0$R+="1(3(M\
+M)%!(@\18PV9F9I!F9I!F9I!F9I!!B='&`?ZZ`````$&X`````(!_!`!V,P^V
+MPDB-!,!(P>`'2`'X2#FPV%D``'4513C(=0T/MH#$5P``B`'#9F:00?_`_\(X
+M5P1WS?/#9F9FD%532(/L"$F)TTR)Q4&)R$B)^P^V1P4Z1P1U!,9'!0`/MDL%
+MN@`````/ML)(:<!0$```2`'83(U(($@Y<"!U04'&00@!N0````"`>P0`=E\/
+MML%(C03`2,'@!T@!V$@YL-A9``!U#@^V@,17``"#P`,\`78Z_\$X2P1WU.LQ
+M9F:0#[;"2&G`4!```$@!V$R-2"!(@W@@`'4+2(EP($'&00@!ZPO_PH#Z`P^&
+M>O___P^VPDAIP%`0``!!N@````!!N0(0``!(C408,&9F9I!F9I!$B!!(_\!)
+M_\EU]0^VP4B)=,,02(T$P$C!X`=!N@````!!N60```!(C8088%<``$2($$C_
+MP$G_R77U#[;!2(T$P$C!X`=!N@````!!N0`"``!(C808V%<``$2($$C_P$G_
+MR77U#[;!2(T$P$C!X`=(`=A(B;#860``2(FHT%<``,:`Q%<``/](QX#(5P``
+M`````$F+$TB)D+Q7``!$B(!F5P``#[;10;D`````0;@`````N?\```#H````
+M`/Y#!4B#Q`A;7<-F9F:09F:09F:04[L`````@'\$``^&D0````^VPTB-!,!(
+MP>`'2#FT.-A9``!U<;H!````#[;"2&G`L````$B-A#@`0@``.%@(=03&0`L!
+M_\*`^A]VW@^VPTB-!,!(P>`'2`'X2,>`V%D```````"Y`````+ID````2(V`
+M8%<``(@(2/_`2/_*=?8/ML-(C03`2,'@!\:$.,17``#]_D\%_\,X7P0/AV__
+M__^[``````^VPTAIP%`0``!(`?A(C5`@2#EP('4Q2,=`(`````#&0@@`N@``
+M```/ML-(:<A0$```#[;"2,'@!4@!R,9$.$P`_\*`^H%VZO_#@/L#=K%;PV9F
+MD&9FD&9FD%-)B?E!N@````"_`````(#Z`0^%*`$``$V%P`^$`P$``$&`>00`
+M=BA$B=(/ML)(C03`2,'@!THYM`C860``=0=`.,]T"__'0?_"13A1!'?81(G0
+M#[;(2(G/2(T,R4C!X0=,`<E(C9%@5P``2(N!8%<``$F)`$B+0@A)B4`(2(M"
+M$$F)0!!(BT(828E`&$B+0B!)B4`@2(M"*$F)0"A(BT(P28E`,$B+0CA)B4`X
+M2(M"0$F)0$!(BT)(28E`2$B+0E!)B4!02(M"6$F)0%B+0F!!B4!@NP````"`
+MN6!7````=D(/ML-(B<%(P>$$3`'!2(TT_TB-!/!(P>`$3`'(2(N0X%D``$B)
+M461(BX#H60``2(E!;/_#2,'F!T(XG`Y@5P``=[Y$B=(/ML)(C03`2,'@!T(/
+MMH0(8%<``.LZ9F:00;H`````NP````!!@'D$`'8A#[;#2(T$P$C!X`=*.;0(
+MV%D```^4P$$!PO_#03A9!'??00^VPEO#D)"0D)"0D$B+%TR+`KD`````@'I#
+M`'862`^V=PU(B?!(T_BH`74'_\$X2D-W[X#Y`W8D2(T$C0`````E_`,``$*+
+MA`#0`0``B04`````ZR)F9F:09F:02(T$C0`````E_`,``$*+A`#0`0``B04`
+M````J0``$``/E<`/ML##9F:09F:09F:005=!5D%505154TB#[`A(B3PD3(LO
+M38ME`,9&00#&1D`%QD9#!DB+!"1(B49(0;\`````0;X`````NP````!!@'U#
+M`'8?2(L,)$@/ME$-9I!(B=")V4C3^*@!=0C_PT$X74-W[(#[`W8;2(T$W0``
+M```E^`<``$+'A"```@``+````.L92(T$W0`````E^`<``$+'A"```@``+```
+M`+\0)P``Z`````"`^P-V)$B-!-T`````)?@'``!"BX0@!`(``(D%``````^V
+MZ.LB9F9FD$B-!-T`````)?@'``!"BX0@!`(``(D%``````^VZ$$)[H#[`W8;
+M2(T$W0`````E^`<``$+'A"```@``)````.L92(T$W0`````E^`<``$+'A"``
+M`@``)````+\0)P``Z`````"`^P-V)TB-!-T`````)?@'``!"BX0@!`(``(D%
+M`````(G%@>7___\`ZR5FD$B-!-T`````)?@'``!"BX0@!`(``(D%`````(G%
+M@>7___\`B>C!X`A!"<:`^P-V($B-!-T`````)?@'``!"QX0@``(``"````#K
+M'F9FD&:02(T$W0`````E^`<``$+'A"```@``(````+\0)P``Z`````"`^P-V
+M'TB-!-T`````)?@'``!"BX0@!`(``(D%`````(G%ZQU(C03=`````"7X!P``
+M0HN$(`0"``")!0````")Q4&!_@$!:99U%TB+!"2`2`P&B>C!Z!`\4`^4P`^V
+MP.M`08'^`0$``'43B>C!Z!`\4`^4P`^VP.LH9F9FD+^($P``Z`````!!_\=!
+M@/\$#X;,_?__B>C!Z!`\4`^4P`^VP$B#Q`A;74%<05U!7D%?PV9F9I!F9I!F
+M9I!F9I!54TB#[`A(B?U(BQ_H`````(3`=1'&10G_2(GN2(G?Z`````#K;+D`
+M````@'M#`'862`^V50U(B=!(T_BH`74'_\$X2T-W[TB)W^@`````2(G&2(7`
+M=#M(C45@2(M0"$B)<`A(B09(B58(2(DR_D4.2(EN2,9&0`7&1D$`QD9Y#[D!
+M````N@$```!(B>_H`````$B#Q`A;7<-F9F:09F:0055!5%532(/L"$F)_$B)
+M]4R++[L*````2(GN3(GGZ`````"$P'4.O^@#``#H`````/_+=>.Y`````$&`
+M?4,`=AA)#[94)`U(B=!(T_BH`74(_\%!.$U#=^Y(BU4(2(M%`$B)4`A(B0)!
+M_DPD#DB)[DR)[^@`````0?9$)`P"=%5)@WPD0`!U($R)[V9FD&:0Z`````!(
+MB<9(A<`/A(\!``!)B40D0.L%28MT)$!,B2Y,B::(````QD9&`,9&1P#&1D(`
+M9H-.3@1,B>_H`````.E;`0``28-\)$``#X3@````28MT)$!(@<:0````28M]
+M*.@`````28MT)$!,B>_H`````$F-1"1@2(G"23E$)&`/A*(```!(B<-F9F:0
+M9F:02(G7Z`````!(B<5(@W@X`'1H2(M`.$C'0&``````]D5$!'4D0?Z%[Q,`
+M`$R)[^@`````2(M%.`^V<`&Z`0```$R)[^@`````2(M5.$F+M=`(``"_`0``
+M`.@`````2(M5.$F+M=`(``"_!@```.@`````2,=%.`````!!_DPD#DB)[DR)
+M[^@`````2(G:23E<)&`/A6C___])QT0D0`````!!@'PD#@!T%$F-?"1@Z```
+M``!(B<5!_DPD#NL+3(GOZ`````!(B<5(A>UT0TF-1"1@2(M0"$B):`A(B44`
+M2(E5"$B)*D'^1"0.3(EE2,9%0`7&14$`QD5#!L9%0@-(B>Y,B>_H`````&9F
+M9I!F9I!(@\0(6UU!7$%=PV9FD&:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@
+M3(ET)"A,B7PD,$F)_$F)]4&)UD&)STB+!TB)!"2Z`````+T`````@'\.`'9$
+M2(U?8&9F9I!F9I!(B=_H`````$B)PDB+0PA(B5,(2(D:2(E""$B)$$PY:E!U
+M#40X<GET$&9F9I!F9I#_Q4$X;"0.=\=!.&PD#F:0="Y!@/]0=2C&0D,&QD)"
+M!<9"0`?&0D$`3(EJ4$R)8DA(B=9(BSPDZ`````!F9F:02(M<)`A(BVPD$$R+
+M9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:09F:09F:09F:02(/L.$B)7"0(
+M2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)_4F)]DR+)T&______[N`____
+MO?____^`^X5W#`^VPT(/MJP@0`@``$"`_?]T-8GJ#[;"28N4)&@)``!(:<#(
+M#P``3#EL$`AU&DB-/!"Z"````$R)]N@`````A,!T!4&)[^L+_\.`^X%F9F:0
+M=J1!#[;'2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:0
+M9F:005=!5D%505154TB![$@"``!)B?Y(B70D.(A4)#=(BT<(2(E$)"A,BR@/
+MME=8B%0D)TB-1TA(B<)(.4=(#X1L`@``@'PD)P`/A&$"``!,C7PD0$B)1"0(
+M2(D$)&9FD&:02(G7Z`````!(C6CP#[9,)#=-B?BZ`0```$B+="0H2(M\)#CH
+M`````$&\`````(!\)$``#X;M````2(U5$$B)5"082(M,)`A(B4PD$&9F9I!$
+MB>(/ML)(P>`$2HT<.$B->VRZ"````$B-M<P```#H`````(3`#X2=````2(U3
+M8`^V0@B#X`^(A>(````/MTU@9H'AW_V)R(/($&:)16`/MD((P.@$/`EU"8G(
+M@\@P9HE%8$2)X0^VP4C!X`1"#[9$.&C`Z`0\"G4&9H%-8``"2(M4)!!(BT((
+M2(M,)!A(B4H(2(E5$$B)00A(B0@/MD5$J`)T,H/@_8A%1$B#?3@`="5(BU4X
+M28NUT`@``+\&````Z`````#K#D'_Q$4X)P^'+/___^L)13@G#X<&`0``2(GJ
+MO@8```!(BWPD*.@`````@'U[`'083(GOZ`````"_`0```.@`````@'U[`'7H
+M2(.]&`$```!T&`^VM04!``!(B[T8`0``N@$```#H`````$B#?5``=!@/MG5Y
+M2(M]4+H!````Z`````!F9I!F9I!(@WTX`'1H2(M%.$C'0&``````]D5$!'4D
+M0?Z%[Q,``$R)[^@`````2(M%.`^V<`&Z`0```$R)[^@`````2(M5.$F+M=`(
+M``"_!@```.@`````2(M5.$F+M=`(``"_`0```.@`````2,=%.`````!(BU4(
+M2(M%`$B)4`A(B0)(BT0D*/Y(#D'^3EA(B>Y,B>_H`````/Y,)"=(BQ0D23E6
+M2'0+@'PD)P`/A;+]__](@<1(`@``6UU!7$%=05Y!7\-!5T%6055!5%532('L
+M.`(``$B)?"0H28GU2(E4)"!(BP=(B40D&,9$)!<`2(U<)#!$#[;A28G81(GA
+MN@$```!(B?Y,B>_H`````$F)WD2)XDR)[DB+?"0@Z`````!(BTPD($B+44A,
+MC7KP2(G(2(/`2$@YPG0]2(G!9F9FD&9FD$$/MD=!/`T/E,(\(@^4P`G0J`%T
+M$<9$)!<!0<9'0@5!QD=#!.L-28M'$$R->/!(.<AUS;T`````08`^``^&#`(`
+M`$B+1"0@2(/`2$B)1"0(2(D$)$B+3"0@2(M!2$R-8/!(.T0D"'0YB>H/ML)(
+MB<-(P>,$3(LL)$F-O"3,````N@@```!*C70S;.@`````A,!U#DF+1"003(U@
+M\$PYZ'7728U$)!!(.T0D"`^%D@$``,9$)!<`2(M\)!CH`````$F)Q$B%P`^$
+ME@$``$B+3"0H_D$.QD!"!<:`X`````#&0$,$9L>`P```````QH#"`````$C'
+M0'````4`B>H/ML)(P>`$2HU$,&`/ME`$08A4)$`/ME`%08A4)$%)B4PD2`^V
+M4`B#X@]!B)0DX@```$$/MTPD8&:!X=_]B<J#RA!F08E4)&`/MD`(P.@$/`EU
+M"XG(@\@P9D&)1"1@B>D/ML%(P>`$0@^V1#!HP.@$/`IU"&9!@4PD8``"2(M$
+M)"!)B40D4(GJ#[;"2,'@!$P!\`^V4&9!B%0D>4B+0&Q)B80DS````$F)A"3$
+M````2(M,)"#^05A(BT0D*$B#P&!(BU`(3(E@"$F)!"1)B50D"$R)(DF-1"00
+M2(M,)`A(BU$(2(E!"$F)3"002(E0"$B)`DD/MD0D0*@"=">H!'0CJ`%T'T$/
+MME0D>4R)X4B+="0@2(M\)"CH`````.LH9F:09I!)#[9$)$"H`G09J`1F9F:0
+M=!&H`74-3(GF2(M\)!CH`````/_%03@N#X<&_O__@'PD%P!T#;X*````3(G_
+MZ`````!(@<0X`@``6UU!7$%=05Y!7\-F9F:09F9FD&9F9I!!5T%6055!5%53
+M2('L2`(``$F)_$B)="0X3(LO#[9'*(A$)#=(C4=(2(G"2#E'2`^$1@,``(!\
+M)#<`#X0[`P``2(E$)!!(B40D"$B)U^@`````2(UHR$&X`````+D`````N@``
+M``!,B>9(BWPD..@`````08G'0;X`````03C&#X/<`0``2(U4)$!(B50D*$B-
+M33A(B4PD($B+1"002(E$)!A!#[;>0;@`````B=FZ`0```$R)YDB+?"0XZ```
+M```/ML!(P>`$2(/`9$@]``(```^'7P$``$R+1"0HB=FZ`0```$R)YDB+?"0X
+MZ`````!(BUPD*$B->URZ"````$B)[N@`````A,`/A"@!``!(BU0D&$B+0@A(
+MBTPD($B)2@A(B54X2(E!"$B)"`^V1"1"B$592(US5$R)Y^@`````//]T%0^V
+MP$AIP,@/``!)`X5H"0``2(E%$$6$]G11#[9#`]'H@^`!P>`$#[9578/B[PG"
+MB%5=#[9#`\'H`X/@`<'@!8/BWPG"B%5=#[9#`\'H`H/@`<'@`X/B]PG"B%5=
+M#[9#!HB%NP```.F6````#[9#`HA%64R)90@/MD,&B(6[````#[=#!(E%8`^W
+M0U!FB86X````#[9#4HB%N@```$B+0T!(B86H````2(M#2$B)A;````!(BT,0
+M2(E%>$B+0QA(B86`````2(M#($B)A8@```!(BT,H2(F%D````$B+0S!(B868
+M````2(M#.$B)A:````#K#D'_QD4X_@^"8/[__^L=00^VSDB)ZDB+="0X3(GG
+MZ`````!%./X/@O\```!(C45(2(G"2#E%2`^$W@```$F)QDB)U^@`````2(U8
+M\$B)VKX&````3(GGZ`````"`>WL`=!A,B>_H`````+\!````Z`````"`>WL`
+M=>A(@WLX`'1L2(M#.$C'0&``````]D-$!'4H0?Z%[Q,``$R)[^@`````2(M#
+M.`^V<`&Z`0```$R)[^@`````9F9FD$B+4SA)B[70"```OP$```#H`````$B+
+M4SA)B[70"```OP8```#H`````$C'0S@`````2(M3"$B+`TB)4`A(B0)!_DPD
+M#OY-6$B)WDR)[^@`````3(GR3#EU2`^%)?___T'^3"0H2(GN3(GOZ`````#^
+M3"0W2(M4)`A).50D2'0+@'PD-P`/A<_\__](@<1(`@``6UU!7$%=05Y!7\-F
+M9I!!5T%6055!5%532('L*`(``$F)_DB)]4B+!DB)1"082(G^2(GOZ`````!!
+MN`````"Y`````+H`````2(GN3(GWZ`````"(1"070;P`````03C$#X-&`P``
+M2(U58$B)%"1!#[;<0;@`````B=FZ`0```$B)[DR)]^@`````#[;`2,'@!$B#
+MP&1(/0`"```/A_T"``!,C40D((G9N@$```!(B>Y,B??H`````$R-;"0@28UU
+M7$B)[^@`````//\/A<T"``!(BWPD&.@`````2(G#2(7`#X3<`@``_D4HQD!8
+M`$B+1"1\2(D#28UU5$B)[^@`````//]T&@^VP$AIP,@/``!(BU0D&$@#@F@)
+M``!(B4,000^V10*(0UE!#[9%`]'H@^`!P>`$#[9378/B[PG"B%-=00^V10/!
+MZ`.#X`'!X`6#XM\)PHA374$/MD4#P>@"@^`!P>`#@^+W"<*(4UU(B6L(00^V
+M10:(@[L```!)BT4(2(E#<$$/MD4'B$-:00^W102)0V!!#[=%4&:)@[@```!!
+M#[9%4HB#N@```$F+14!(B8.H````28M%2$B)@[````!)BT402(E#>$F+11A(
+MB8.`````28M%($B)@X@```!)BT4H2(F#D````$F+13!(B8.8````28M%.$B)
+M@Z````!(C5,X2(U%2$B+2`A(B5`(2(E#.$B)2@A(B1%FQT0D%```08!]```/
+MA'$!``!(BP0D2(E$)`A,C7M(9F9FD$B+?"08Z`````!(B<%(A<`/A&\!``#^
+M10[&0$(%QH#@`````,9`0P1(QT!P```%`&;'@,```````$@/MU0D%$C!X@1*
+MC50J8`^V0@2(04`/MD(%B$%!2(EI2$B)65`/MD(&B$%Y#[9""(/@#XB!X@``
+M``^W<6!F@>;?_8GP@\@09HE!8`^V0@C`Z`0\"74)B?"#R#!FB4%@2`^W1"04
+M2,'@!$(/MD0H:,#H!#P*=09F@4E@``)(#[=$)!1(P>`$2HM$*&Q(B8',````
+M2(F!Q````/Y#6$B+5"0(2(M""$B)2@A(B1%(B4$(2(D(2(U!$$F+5PA)B4<(
+M3(EY$$B)4`A(B0)(#[9!0*@"=!FH!'05J`%T$0^V47E(B=Y(B>_H`````.L>
+M2`^V04"H`G05J`1T$:@!=0U(B<Y(BWPD&.@`````9O]$)!1F00^V10!F.T0D
+M%`^'I_[__V9F9I!F9I!!_\1$.F0D%P^"POS__X!]#@!U$<9%"?](B>Y(BWPD
+M&.@`````2('$*`(``%M=05Q!74%>05_#9F:09F:09F:0055!5%532(/L"$F)
+M_4B)]4&X`````+D`````N@````#H`````$&)Q+L`````.,-S)0^VTTB-3"0'
+M2(GN3(GOZ`````"`?"0'_@^%D0```/_#1#CC<MO^35B`?5@`=&A,BV4`QD58
+M`$B+54A(C5K(2(U%2$@YPG1H2(G"9F:09I!(@WL0`'0/2(M#.$B-6,A(.=!U
+M[.M*_D582(GN3(GOZ``````/MHN[````28N\)&@0``!)Q\``````2(G:2(GN
+MZ`````#K&4B)[DR)[^@`````2(GN3(GOZ`````!F9I!(@\0(6UU!7$%=PV9F
+MD&:02(L7O@H```"Y`````(!Z0P!V-4@/MG\-2(GX2-/XJ`%T'P^VP4AKP&B+
+MA!!L$@``)0```P#!Z!"#P`A`./`/0O#_P3A*0W?00`^VQL-F9I!(BQ>^"```
+M`+D`````@'I#`'8U2`^V?PU(B?A(T_BH`70?#[;!2&O`:(N$$&P2```E```#
+M`,'H$(/`"$`X\`]'\/_!.$I#=]!`#[;&PV9FD$B#[%A(B5PD*$B);"0P3(ED
+M)#A,B6PD0$R)="1(3(E\)%!)B?U,BR=!OP````"`?PT`#X2=`P``O0`````/
+MMD<-B<*H`74,_\6)T(GIT_BH`73TB>H/ML)(:\!H2HV4(%`2``"+0@RI```"
+M`'0-#0``!``E___]_XE"#(GI#[;!2&O`:$+VA"!>$@``!`^$CP(``$V-M"0`
+M%```33FD)-`(``!T"$V+M"30"```B>H/ML)(:\!H3`'@1`^VB&(2``!$#[:`
+M81(```^VB&`2``!!#[94)$%`#[;U#[:X9Q(``(E\)"`/MKAF$@``B7PD&`^V
+MN&42``")?"00#[:X9!(``(E\)`@/MH!C$@``B00D2,?'`````+@`````Z```
+M``!!N(````")Z0^VP4AKP&A.C8P@8!(``/Q!#[?`9D(/MH0P0`@``&8]_P!T
+M+P^WP$AIP,@/``!(B<-)`YYH"0``2(G>3(G/N0@```#SI@^7P@^2P#C"#X14
+M`0``0?_`9D&!^($`=K),B>?H`````$B)PTB%P`^$.@(``(GJ#[;"2&O`:$+V
+MA"!=$@``!'0$@$M=`HGI#[;!2&O`:$+VA"!>$@``!'0$@$M=$(GJ#[;"2&O`
+M:$+VA"!=$@``"'0$@$M=!(GI#[;!2&O`:$+VA"!>$@``"'0$@$M=((GJ#[;"
+M2&O`:$+VA"!=$@```G0$@$M=`8GI#[;!2&O`:$+VA"!>$@```G0$@$M=",9#
+M6`")Z@^VPDAKP&A*BX0@8!(``$B)`TR):PA,B>_H`````(B#NP```$'^12BY
+M`````$&`?"1#`'8E20^V10U(T_BH`7001(GZ#[;"B$P8</Y#6D'_Q__!03A,
+M)$-WVTB-4SA)C45(2(M("$B)4`A(B4,X2(E*"$B)$4'^15@/MHN[````28N\
+M)&@0``!)Q\``````2(G:3(GNZ`````#I!0$``$0/MDL$1`^V0P,/MDL"#[93
+M`0^V,P^V0P>)1"00#[9#!HE$)`@/MD,%B00D2,?'`````+@`````Z`````!!
+MQD4)_TR)[DR)Y^@`````Z;,```")Z0^VP4AKP&A*C2P@]H5>$@``"`^$F0``
+M`$R)Y^@`````2(G#2(7`#X2%````QD!#!L9`0@5FQX#```````#&0$`&QD!!
+M`$C'0'````4`2(N%8!(``$B)@\P```!(B8/$````3(EK2$R)[^@`````B(/B
+M````9H-+8!!,B>_H`````#P)=@9F@4M@``)!QD4.`4F-16!(BU`(2(E8"$B)
+M`TB)4PA(B1I(B=Y,B>?H`````$B+7"0H2(ML)#!,BV0D.$R+;"1`3(MT)$A,
+MBWPD4$B#Q%C#9F9FD&9F9I!!5T%6055!5%532(/L"$B)^TF)];@`````2(7V
+M=`0/MD8)#[;`0;P`````A<!T$3W_````#X1L`0``Z=$%``"01(GB#[;"#[:$
+M&,8(```\_W02#[;`2&G`J````$R-K!B@`0``0?_$08#\`W;30;P`````1(GB
+M#[;"#[:$&,8(```\_W0S#[;`2&G`J````$R-K!B@`0``0?9%"@)T$KX`````
+M3(GOZ`````#K"V9FD$R)[^@`````0?_$08#\`Y!VL68/MD,^9CF#0!````^%
+M/`4``$V%[0^%M````(![40`/A2D%``#&0U$!O0`````/M]5(B[330`0``$B%
+M]G0X2(.^@`````!T+DB+AH````!(QX:``````````$C'A--`!````````$B+
+MOI````"Z_______0ZT@/M]5(@[S30`0```!T.DB+A--`!```2(.XB`````!T
+M*$B+AH@```!(QX:(`````````$C'A--`!````````$B+OI````#_T)#_Q6:#
+M_3\/AF3____I?P0``$'&10G_3(GN2(G?Z`````#I:@0``,9$)`<`9F:09I!(
+M#[9$)`</MH08Q@@``#S_#X3Q````#[;`2&G`J````$R-K!B@`0``08!]"?\/
+MA-0```!!O`````!!@'T.``^&N0```$V-=6!,B??H`````$B)Q4F+1@A)B6X(
+M3(EU`$B)10A(B2B`?4+_#X2`````@+WA`````'1H2`^V14"H`G0>J`1T&J@!
+M=!8/ME5Y2(MU4$B)Z4R)[^@`````ZT*02`^V14"H`G4:J`1F9I!FD'01J`%T
+M#4B)[DB)W^@`````ZQY(#[9%0*@"=!6H!&:0=`^H`74+2(GN2(G?Z`````"X
+M`0```.EZ`P``9F:09I!!_\1%.&4.#X=+____N`$```#I7@,``/Y$)`>`?"0'
+M`P^&ZO[__\9$)`<`@'M1``^%L````+T`````9F:09F:0#[?%2(NTPT`$``!F
+M#[:4&$`(``!(A?9T=TB#OH``````=&U(@WY@`'5F9H'Z_P"0="X/M\)(BXL8
+M"0``2&G`B`$``/9$"$,$=!:`?`A!`'4/#[?22(G?Z`````#K,F:02(N&@```
+M``^WU4C'A--`!````````$C'AH``````````2(N^D````+K______]"0_\5F
+M@_T_#X9D____QD-1`>F+`@``2`^V1"0'#[:$&,8(```\_P^$90(```^VP$AI
+MP*@```!,C:P8H`$``$&\`````$&`?0X`#X9"`@``38UU8$R)]^@`````2(G%
+M28M&"$F);@A,B74`2(E%"$B)*(!]0O\/A0D"```/MT4P9HE$)`0/M\!F#[:4
+M&$`(``!FB50D`DR+O,-`!```#[9%1*@$='%-A?]T;$F#OX``````=&))@W]@
+M`'5;@^#[B$5$]D5#!'02#[=4)`),B?Y(B=_H`````.L]28N'@````$@/MU0D
+M!$C'A--`!````````$G'AX``````````2,=%.`````!)B[^0````NO____],
+MB?[_T/9%0P0/A$4!``#&A>``````08!E#.?V140!#X3[````@&5$_DB#?3@`
+M=$V`?4$`=2WV14,$="</MU0D!`^V0T'!X`8!PDACTDB+L]`(``"_!P```.@`
+M````Z?$```!(BU4X2(NST`@``+\!````Z`````#IUP```$V%_W1J28._@```
+M``!T8(!]00!U&_9%0P1T%0^W5"0"3(G^2(G?Z`````#IIP```$F+AX````!(
+M#[=4)`1(QX330`0```````!)QX>``````````$C'13@`````28N_D````+K_
+M____3(G^_]#K:(!]00!U8O9%0P1T7`^W5"0$#[9#0<'@!@'"2&/22(NST`@`
+M`+\"````Z`````#K.&9F9I!(@WTX`'0M2(M5.$B#NH@`````=!](BX*(````
+M2,>"B`````````!(BU4X2(NZD````/_0]D5$`G092(M5.$B+L]`(``"_!@``
+M`.@`````@&5$_4'_Q$4X90X/A\+]___^1"0'@'PD!P,/AG;]__^0N`$```!(
+M@\0(6UU!7$%=05Y!7\-F9F:09F9FD&9F9I!(@^PX2(E<)`A(B6PD$$R)9"08
+M3(EL)"!,B70D*$R)?"0P28G^2(GS3(MN2$@/MT8PN@````"`O#A`"```_P^$
+ML0(```^V1D*#^`\/A`0!``"#^`]_2H/X#`^$R0```(/X#'\<@_@%=&R#^`MF
+M9F:0#X2E````Z74"``!F9I!FD(/X#0^$K````(/X#F9F9I`/A*\```#I50(`
+M`&9FD&:0@_@9?Q*#^!A]7X/X%&9FD'0XZ3D"``"#^!MF9I!F9I!T-3W_````
+M#X2,````9F:0Z1L"``"^`0```$B)WV9FD.@`````Z08"``!(B??H`````.GY
+M`0``O@````!(B=_H`````.GG`0``O@$```!(B=_H`````.G5`0``2(GWZ```
+M``#IR`$``$B)]^@`````Z;L!``!(B??H`````&9FD.FK`0``2(GWZ`````!F
+M9I#IFP$``,9&0O])B=]!O`````!!@'T.``^&QP```$F-;6!(B>_H`````$B)
+MPTB+10A(B5T(2(DK2(E#"$B)&(![0O\/A(@```"`>T$`#X6%````@+OA````
+M`'1F2`^V0T"H`G0=J`1T&:@!=!4/ME-Y2(MS4$B)V4R)[^@`````ZT!(#[9#
+M0*@"=1FH!&9F9I!T$:@!=`U(B=Y,B??H`````.L>2`^V0T"H`G05J`1FD'0/
+MJ`%U"TB)WDR)]^@`````N@$```#IV@```&9FD&:0QH/A`````$'_Q$4X90X/
+MASW___]%.&4.#X6B````00^V1T$\(@^4PCP-#Y3`"="H`70_O@H```!,B?_H
+M`````+H!````Z8L```!(B=Y(Q\<`````N`````#H`````+X*````2(G?Z```
+M``"Z`0```.MC0;P`````08!]#@!V04F-;6!(B>_H`````$B)PTB+10A(B5T(
+M2(DK2(E#"$B)&`^V0T$\(@^4PCP-#Y3`"="H`7660?_$13AE#G?&9F:00<9%
+M"?],B>Y,B??H`````+H!````B=!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H
+M3(M\)#!(@\0XPV9FD&9FD$B#[%A(B5PD*$B);"0P3(ED)#A,B6PD0$R)="1(
+M3(E\)%!)B?U(B?-,BWY(2`^W1C"Z`````("\.$`(``#_#X2B!@``#[9&0H/X
+M"0^$=P,``(/X"7]*@_@%#X3[````@_@%?Q>#^`,/A)X```"#^`0/A,(```#I
+M9@8``(/X!V:0#X0T`P``@_@'9F9FD&9FD`^/%@,``.FI`@``9F:09I"#^!8/
+MA.<"``"#^!9F9F:0?R.#^!0/A"H#``"#^!1FD`^/I`(``(/X"@^$!P,``)#I
+M#`8``(/X&@^$2P(``(/X&G\2@_@7#X2R`@``9F9FD.GL!0``/?\```!F9I!F
+M9I`/A.,"``#IU@4``$F+1R"!8##___[_2(M^2+D`````N@$```#H`````+\%
+M````Z`````#IJ04``$B+?DBY`````+H`````Z`````"_4,,``.@`````Z8<%
+M``!!O@````"`?T,`=B!)#[97#69FD&:02(G01(GQ2-/XJ`%U"4'_QD4X=4-W
+MZD@/MD-`J`)T#*@$=`BH`0^%TP```$F+5R"+0C"I```!`'0-)?___O^)0C#I
+MN````+T0)P``1(AT)!!*C03U`````"7X!P``2(E$)`A$B?!(P>`#28G$08'D
+M^`<``$F+50!!@/X#=AE(BTPD"(N$$8`!``")!0`````E```!`.L308N$%(`!
+M``")!0`````E```!`(7`="6`?"00`W8.0<>$%(`!``````$`ZPQ!QX04@`$`
+M`````0"%P'40O^@#``#H`````/_-=9/K!(7M=1C&0T,"QD-"_TB)WDR)[^@`
+M````Z7,$``!!]D<*`70X2(G>3(G_9F:09I#H`````(3`=22]^@```&:02(G>
+M3(G_Z`````"$P'4.O^@#``#H`````/_-=>-!@/X#=B=*C03U`````"7X!P``
+M28M-`(N4`8`!``")%0````")E`&``0``ZT]*C03U`````$B)QH'F^`<``$F+
+M30!!@/X#=@^+A#&``0``B04`````ZQY*C03U`````"7X!P``28M5`(N$`H`!
+M``")!0````")A#&``0``2(M[2$B)WNBK*```OR!.``#H`````.F=`P``#[=V
+M,$C'QP````"X`````.@`````2(M[2$B)WN@[+P``Z7<#```/MW8P2,?'````
+M`+@`````Z`````!(BWM(2(G>Z*4O``#I40,``$B+?DCH1R@``.E#`P``2(M^
+M2.B9+```Z34#``!(BWY(Z.LK``#I)P,``$B+?DCH'2T``.D9`P``2(M^2.B?
+M+0``Z0L#``!(BWY(Z"$N``"0Z?P"``#&1D+_2`^V0T"H`G0(J`1T!*@!=19(
+M@WM8`)!U#DR)_^@`````B(/B````0?9'#`(/A(H!``!-BV=`00^V5"1&00^V
+M1"0[_\@YPGTR0?Y$)$9!_D0D1T'&1"1"`$$/MT0D3H/@_H/("&9!B40D3DR)
+MYDR)[^@`````Z7X"``!!O@````!!@'\.``^&P````$F-;V!(B>_H`````$B)
+MPTB+10A(B5T(2(DK2(E#"$B)&(![0O\/A($```"`N^$`````=&E(#[9#0*@"
+M=!^H!'0;J`%T%P^V4WE(BW-02(G93(G_Z`````#K0V:02`^V0T"H`G4:J`1F
+M9I!FD'01J`%T#4B)WDR)[^@`````ZQY(#[9#0*@"=!6H!&:0=`^H`74+2(G>
+M3(GOZ`````"Z`0```.G+`0``9F:09I#&@^$`````0?_&13AW#@^'1/___T'V
+M1"1.@'0>0?9$)$D#=!9!QD0D0@!,B>9,B>_H`````.F'`0``0<9'"?]!QD0D
+M0@!!#[=$)$Z#X/.#R`)F08E$)$Y!@&0D2?Y,B?Y,B>_H`````.E4`0``O@H`
+M``!(B=_H`````+H!````D.E!`0``0;X`````08!_#@`/AL8```!)C6]@9F:0
+M9F:02(GOZ`````!(B<-(BT4(2(E="$B)*TB)0PA(B1B`>T+_#X2(````@'M!
+M`'5[@+OA`````'1K2`^V0T"H`G0AJ`1T':@!=!D/ME-Y2(MS4$B)V4R)_^@`
+M````ZT5F9F:02`^V0T"H`G4:J`1F9I!FD'01J`%T#4B)WDR)[^@`````ZQY(
+M#[9#0*@"=!6H!&:0=`^H`74+2(G>3(GOZ`````"Z`0```.M^QH/A`````$'_
+MQD4X=PX/AT3___]%.'<.=4]!O@````!!@'\.`'9"28UO8$B)[^@`````2(G#
+M2(M%"$B)70A(B2M(B4,(2(D8#[9#03PB#Y3"/`T/E,`)T*@!#X7%_O__0?_&
+M13AW#G?"0<9'"?],B?Y,B>_H`````+H!````B=!(BUPD*$B+;"0P3(MD)#A,
+MBVPD0$R+="1(3(M\)%!(@\18PV9FD&:02(/L*$B)'"1(B6PD"$R)9"003(EL
+M)!A,B70D($F)_$B)\TB+%TB+KH@````/MD9"@_@9#X==!```B<#_),4`````
+M]D9.!'0,9L=&3@$`QD9"`>L\9H-^3B!U#&;'1DX(`,9&0@WK*?9&3H!T&?9&
+M20-T$P^W1DXD?X/("&:)1D[&1D(-ZPKV0TX(=`3&0T('2(G>3(GGZ`````#I
+M]@,``(N"!`$``(D%`````(/(4(F"!`$``+D!````N@(```"^`0```$B)W^@`
+M````Z<4#``"Y`0```+H`````O@$```!(B=_H`````.FI`P``N0$```"Z`0``
+M`+X!````2(G?Z`````#IC0,``+D!````NF````"^`0```$B)W^@`````Z7$#
+M```/MDY(0;@!````NF````"^`0```$B)W^@`````Z5`#``!!N`$```"Y```!
+M!+HA````O@$```!(B=_H`````.DN`P``0;@!````N0$```"Z`@```+X`````
+M2(G?Z`````#I#`,``$&X`0```+D`````N@(```"^`````$B)W^@`````Z>H"
+M``!(BT4@@6`P___W_T&X`0```+D!````N@(```"^`````$B)W^@`````Z;T"
+M``!!N`$```"Y`````+H"````O@````!(B=_H`````.F;`@``N0$```"Z`@``
+M`+X`````2(G?Z`````#I?P(``+D!````N@````"^`````$B)W^@`````Z6,"
+M``"Y`0```+H!````O@````!(B=_H`````.E'`@``2(M%((%@,/__]_]!N`$`
+M``"Y_____[H!````O@````!(B=_H`````.D:`@``N0$```"Z`````+X`````
+M2(G?Z`````#I_@$``$@/MD9'3(MTQEA)B6Y(28EV6`^V1D=!B$9Y0<9&0@-!
+MQD9!`$&`3D`%_D4.2(U%8$B+4`A,B7`(28D&28E6"$R),K^`&@8`Z`````!!
+MO0````!!@'PD0P!V'$@/ME4-2(G01(GI2-/XJ`%U"D'_Q44X;"1#=^E(BU4@
+MBT(PJ0``"`!T"B7___?_B4(PZV"[F#H``$J-!.T`````2(G%@>7X!P``9F9F
+MD$&`_0-V&DF+!"2+A"B``0``B04`````J0``"`!U*.L828L$)(N$*(`!``")
+M!0````"I```(`'4.O^@#``#H`````/_+=;I,B?9,B>?H`````.D``0``OT`-
+M`P#H`````+D`````NB````"^`0```$B)W^@`````OQ`G``#H`````.G0````
+MN0````"Z`0```+X`````2(G?Z`````"_$"<``.@`````Z:H```!(BT4@@6`P
+M___W_T&X`````+G_____N@$```"^`````$B)W^@`````OQ`G``#H`````.MV
+MN0````"Z`````+X`````2(G?Z`````"_$"<``.@`````ZU.Y`````+H@````
+MO@$```!(B=_H`````+\0)P``Z`````#K,.@`````9F:09I#K).@`````ZQU!
+MN`$```"Y\````+J;````O@$```!(B=_H`````+@!````2(L<)$B+;"0(3(MD
+M)!!,BVPD&$R+="0@2(/$*,-F9F:09F9FD$%7059!54%455-(@^PH28G\2(L'
+M2(E$)"!!OP````"`?T,`#X:F`@``9F9FD&9FD$2)^@^VPDAKP&A*C30@2(V6
+M8!(``/9"#A`/A'("``"X`0```$2)^4C3X`A""4B+MD@2``!(B70D&/9""`(/
+MA-T```!!C5\!03A<)$,/ALX````/ML%(:\!H3`'@2(E$)`@/ML-(:\!H3HTT
+M($F-KF`2``#V10X0#X24````3(ML)`A!]X5<$@`````.``^$?@```$F-A6`2
+M``!(B40D$+H(````2(GN2(G'Z`````"$P'1>28VV5!(``+H(````28V]5!(`
+M`.@`````A,!T0K@!````B=E(T^!(BU0D$`I""8A""8A%"4B#?"08`'4.38NV
+M2!(``$R)="08ZQ0/ML-(:\!H2(M,)!A*B8P@2!(``/_#03A<)$,/AT/___]F
+MD$B#?"08``^%I````$R)Y^@`````2(E$)!A(A<`/A%T!``!$B?H/ML)(:\!H
+M3`'@2(M,)!A(B8A($@``2(V00!(``$B)42`/MH!H$@``B$$*QD$)`$R)(<9!
+M#@#&05@`QD$H`$&-7P%!.%PD0W991(GZ#[;"2&O`:$H/MI0@:1(``$B)T(G9
+M2-/XJ`%T%`^VPTAKP&A(BTPD&$J)C"!($@``_\-!.%PD0W?7ZQMF9F:01(GZ
+M#[;"2&O`:$B+3"082HF,($@2``!$B?H/ML)(:\!H2HV$(&`2```/ME`)2(M,
+M)!B(40T/ME@)08#_`W8A2HT$_0`````E^`<``$B+5"0@QX00``(``#@```#K
+M'V:02HT$_0`````E^`<``$B+3"0@QX0(``(``#@```"_$"<``.@`````08#_
+M`W8;2HT$_0`````E^`<``$B+5"0@B9P0!`(``.L92HT$_0`````E^`<``$B+
+M3"0@B9P(!`(``$'_QT4X?"1##X=A_?__2(/$*%M=05Q!74%>05_#9I!(@^P8
+M2(D<)$B);"0(3(ED)!!)B?R)\TB++T"`_@-V($B-!-T`````)?@'``#'A"@P
+M`@``#````.L>9F:09F:02(T$W0`````E^`<``,>$*%`"```,````OQ`G``#H
+M`````(#[`W8<2(T$W0`````E^`<``(N$*#0"``")!0````#K&DB-!-T`````
+M)?@'``"+A"A4`@``B04`````B<*!X@``/P#!ZA`/ML-(:\!H2HV,(&`2```/
+MMD$(@^#\B$$(@_H0=0J#R`*(00CK$F:0#[;#2&O`:$*`C"!H$@```4B+'"1(
+MBVPD"$R+9"002(/$&,-F9F:09F:09F:09F:005=!5D%505154TB#["A!B?1)
+MB==(BR^[`````$*-!.4`````1(UPX$&)Q69FD&:008/\`W81C02=``$``$&)
+MA"X@`@``ZP^-!)T``0``08F$+0`"``"_$"<``.@`````B=I!@_P#=A!!BX0N
+M)`(``(D%`````.L.08N$+00"``")!0````")!)3_PX/[!G:@2(L$)$F)!TB+
+M1"0(28E'"$B+1"0028E'$(M$)!A!B4<82(/$*%M=05Q!74%>05_#05=!5D%5
+M05154TB#["A!B?1)B==(BR^[`````$*-!.4`````1(UPX$&)Q69FD&:008/\
+M`W81C02='`$``$&)A"X@`@``ZP^-!)T<`0``08F$+0`"``"_$"<``.@`````
+MB=I!@_P#=A!!BX0N)`(``(D%`````.L.08N$+00"``")!0````")!)3_PX/[
+M!G:@2(L$)$F)!TB+1"0(28E'"$B+1"0028E'$(M$)!A!B4<82(/$*%M=05Q!
+M74%>05_##[8'P.@$@^`'B<*`S@+V1P($#T7"B<*!R@```@#V1P,$#T7"B<*`
+MS@CV1P((#T7"B<*!R@``"`#V1P,(#T7"B<*`S@3V1P("#T7"B<*!R@``!`#V
+M1P,"#T7"#[97%,'B&`G0PV9F9I!F9F:09F9FD.@`````\\-F9I!F9I!F9I!!
+M5T%6055!5%532(/L*$F)_HGU3(L_B?(/ML)(:\!H2`'X2(FX0!(``,:`:1(`
+M``!`#[;VZ`````"Y`````+H@````2(G@B`A(_\!(_\IU]D0/MNU(B>)$B>Y,
+MB??H`````(GI#[;92&O;:$P!\TB)Y^@`````B8-0$@``2(M$)`Q(B8-4$@``
+M2(V38!(``$"`_0-V&D*-!*T`````2)A"BX0XT`$``(D%`````.L;2(T$K0``
+M```E_`,``$*+A#C0`0``B04`````B4(,B>H/ML)(:\!H2HV4,'`2``!`@/T#
+M=AU(C03M`````"7X!P``0HN$.(`!``")!0````#K&TB-!.T`````)?@'``!"
+MBX0X@`$``(D%`````(D"B>D/ML%(:\!H2HV$,&`2``#V0`X0#X11`0``]D`(
+M`G18N0````"Z(````$B)X&9F9I"("$C_P$C_RG7V0`^V]4B)XDR)]^@`````
+MB>@/MMA(:]MH3`'S3(VC4!(``$B)Y^@`````08E$)`Q(BT0D#$B)@V`2``#K
+M%8GJ#[;"2&O`:$+'A#!<$@```0`"`$"`_0-V&TB-!.T`````)?@'``!"QX0X
+M,`(``!@```#K&4B-!.T`````)?@'``!"QX0X4`(``!@```"_$"<``.@`````
+M0(#]`W8?2(T$[0`````E^`<``$*+A#@T`@``B04`````B<+K'4B-!.T`````
+M)?@'``!"BX0X5`(``(D%`````(G"B>D/ML%(:\!HB=&!X?___]^!R@```"!"
+M]X0P;!(``````P`/1-%`@/T#=A=(C03M`````"7X!P``0HF4.#0"``#K%4B-
+M!.T`````)?@'``!"B90X5`(``$B#Q"A;74%<05U!7D%?PV9F9I!F9I"+A_`(
+M```E____`#U0`9,`=1,/MH?S"```P.@$N@$````\#'0%N@````")T,-F9I!!
+M54%455-(@^P(28G]3(LGN`````"P4+0%2"7__P#_2`T```0`2+K___\`____
+M_T@AT$@-````,$BZ_____P#___]((=!(N@`````1````2`G02+K______P#_
+M_T@AT$BZ``````"K``!(B<5("=5(QX?X$P```````$@YO]`(```/A>D```!(
+MC9\`%```2(V7\`@``$&X`0```+D(````O@```@#H`````$&+A>@(``!!#[:5
+M\P@``(U$@OQ!B(7S"```3(GOZ`````"$P'4'28FM\`@``(L%`````$$/MI7S
+M"````<+_P(D%`````$&(E?,(``!!#[:%\`@``(B#\`@``$$/MH7Q"```B(/Q
+M"```00^VA?((``"(@_((``!!#[:%\P@``(/``HB#\P@``$$/MH7T"```B(/T
+M"```00^VA?4(``"(@_4(``!!#[:%]@@``(B#]@@``$$/MH7W"```B(/W"```
+M9F9FD&9FD$G'A?@3````````08N$)``!``")!0`````/M]#VPB!U&XG0@\@@
+M08F$)``!``!!BX0D``$``(D%`````$F+10#'@`0!````````28M%`,>`&`$`
+M``````!)BT4`QX`<`0```````+^`A!X`Z`````!!QX0D<`$``!@!``!!BX0D
+M=`$``(D%`````(#D_4''A"1P`0``&`$``(#,!$&)A"1T`0``0<>$)'`!```H
+M`0``0<>$)'0!``!_?P``0<>$)'`!```D`0``08N$)'0!``")!0````!FN```
+M0<>$)'`!```D`0``#?\_``!!B80D=`$``$''A"1P`0``/`$``$''A"1T`0``
+M``!Z`$''A"1P`0``I`$``$''A"1T`0``?;_O_T''A"1P`0``N`$``$&+A"1T
+M`0``B04`````#[?`0<>$)'`!``"X`0``#0``^@!!B80D=`$``$''A"2<````
+M_P```$''A"20`@``1`$``$''A"24`@``!A``"$''A"20`@``M`$``$''A"24
+M`@``7W```$''A"20`@``,````$&+A"24`@``B04`````,.2`S#-!B80DE`(`
+M`+T`````08!]0P`/AEL#``!F9F:00(#]`W8;2(T$[0`````E^`<``$+'A"`P
+M`@``"````.L92(T$[0`````E^`<``$+'A"!0`@``"````+\0)P``Z`````!`
+M@/T#=AU(C03M`````"7X!P``0HN$(#0"``")!0````#K&TB-!.T`````)?@'
+M``!"BX0@5`(``(D%`````(G"0(#]`W8=2(T$[0`````E^`<``('*``"``$*)
+ME"`T`@``ZQM(C03M`````"7X!P``@<H``(``0HF4(%0"``!`#[;=28V5\`@`
+M`(G>3(GOZ`````")WDR)[^@`````0(#]`W89C03=`````$B80L>$(#`"``!$
+M`0``ZQMFD$B-!.T`````)?@'``!"QX0@4`(``$0!``"_$"<``.@`````0(#]
+M`W8;2(T$[0`````E^`<``$+'A"`T`@``!A``".L92(T$[0`````E^`<``$+'
+MA"!4`@``!A``"$"`_0-V'4B-!.T`````)?@'``!"QX0@,`(``+0!``#K&V:0
+M2(T$[0`````E^`<``$+'A"!0`@``M`$``+\0)P``Z`````!`@/T#=AM(C03M
+M`````"7X!P``0L>$(#0"``!?<```ZQE(C03M`````"7X!P``0L>$(%0"``!?
+M<```0(#]`W8=2(T$[0`````E^`<``$+'A"`P`@``"````.L;9I!(C03M````
+M`"7X!P``0L>$(%`"```(````OQ`G``#H`````+K_5(``0(#]`W8B2(T$[0``
+M```E^`<``('B_U0``$*)E"`T`@``ZR!F9I!FD$B-!.T`````)?@'``"!XO__
+M?_U"B90@5`(``$`/MMVZ`0```(G>3(GOZ`````"_(*$'`.@`````0(#]`W89
+MC03=`````$B80HN$((`!``")!0````#K&TB-!.T`````)?@'``!"BX0@@`$`
+M`(D%`````(G"@>+___[_0(#]`W872(T$[0`````E^`<``$*)E""``0``ZQ5(
+MC03M`````"7X!P``0HF4((`!``"Z!0'(`$"`_0-V&4B-!.T`````)?@'``!"
+MB90@A`$``.L79I!(C03M`````"7X!P``0HF4((0!``"_H(8!`.@`````0`^V
+M]4R)[^@`````_\5!.&U##X>I_/__3(GOZ`````!!BX0D!`$``(D%`````(/(
+M`D&)A"0$`0``08N$)``!``")!0````"#X/V#R`U!B80D``$``$&+A"0``0``
+MB04`````28N%F!```$&)A"0(`0``08N%G!```$&)A"0,`0``28N%R!```$&)
+MA"00`0``08N%S!```$&)A"04`0``0<>$)"`!````````00^WA3P2```E_P\`
+M``T```$`08F$)"`!``!)BX4H$0``08F$)"0!``!!BX4L$0``08F$)"@!``!)
+MBX50$0``QP#_#P``0<>$)#0!````````00^WA3X2```E_P\```T```$`08F$
+M)#0!``!)BX58$0``08F$)#@!``!!BX5<$0``08F$)#P!``!!QX0D2`$`````
+M``!!QX0D3`$````!``!!BX0D!`$``(D%`````(/(64&)A"0$`0``0<>$)%0!
+M``#[_P`,0<>$)%P!``#__P``2(/$"%M=05Q!7<-F9I!F9I!F9I!32(G[Z.?W
+M__^Z`````&:0#[;"QX2#F`D```````#'1(-<`````/_"@/H/=N-FQX,X$@``
+M_P]FQX,Z$@``_P_&0U`!N`$```!;PV9FD&9FD+D`````.?%]+69F9I!F9I!(
+M8\$/MA0XA-(/E<"`^B`/E<(/ML"%PG0'N`````##D/_!.?%\VK@!````9F:0
+M9I##9F9FD&9F9I!F9F:09F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET
+M)"A,B7PD,$F)_$B)]6:!?B"%``^'G````$@/MT8@@+PX0`@``/\/A(D```!F
+M@WX@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!``!(BT002`^V2`CK96:!?B"!
+M`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(#[9(".LV2`^W
+M1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(````#[9(".L,9F9FD&9F
+MD+G_____N_____]F@7T@A0!W#D@/MT4@0@^VG"!`"```@/G_="$/ML%"@+P@
+MQ@@``/\/E,*`^_\/E,`)T*@!=0:`?20&=2I(@WUX`'032(UU>$R)Y^@`````
+M9F9FD&9FD$B)[DR)Y^@`````Z;`&```/ML%.#[:L(,8(``!-:>VH````3XVL
+M):`!```/ML-(:<"(`0``2(G#20.<)!@)``!F@;O`````JPUW!H!])`)U-DB#
+M?7@`=`Q(C75X3(GGZ`````!(B>Y,B>?H`````,9#0O_&0T,"2(G>3(GGZ```
+M``#I.08```^V13B#^!H/A%P%``"#^!I_+(/X$G1=@_@2?Q*%P`^$_P0``&9F
+MD&:0Z=\%``"#^!4/A,<%``!FD.G/!0``@_@E#X2S`@``@_@E?Q*#^!L/A,4$
+M``!F9F:0Z:\%```]G@```&9FD&9FD`^$>P,``.F9!0``@'TD`)`/A6$"``!(
+MBTU(@'TY`&:0=&F`>T(9#Y3`@\`+B$-"2(7)=$F`>0&`=4.`>0(`=3V`>0,\
+M=S</ME$#OR````"^%````$B-0WQ`B#A(_\!(_\YU]8/Z%+@4````#T/0B=)(
+MC7M\2(UQ!.@`````9L>#P```````Z1D%``#&0T(8]D$&0'4/#[8!@^`?@_@-
+M#X4[`0``#[8!@^`?@_@-N"(```"Z#0````]$PHA#00^V\$C'QP````"X````
+M`.@`````2(-]>`!T#$B-=7A,B>?H`````$B)[DR)Y^@`````0;X`````08!]
+M#@!V04F-;6!(B>_H`````$B)PTB+10A(B5T(2(DK2(E#"$B)&`^V4T&`^B(/
+ME<"`^@T/E<(/ML"%PG4)0?_&13AU#G?#13AU#@^%B00``&;'1"0&``!!OP``
+M``!!O@````!!@'T.`'9528UM8$B)[^@`````2(G#2(M%"$B)70A(B2M(B4,(
+M2(D8#[9#03PB#Y3"/`T/E,`)T*@!=!</MT0D!F8Y0S!R#$F)WP^W6S!FB5PD
+M!D'_QD4X=0YWKTV%_P^$$00``$&`?T+_#X0&!```0<9'0O],B?Y,B>?H````
+M`.GQ`P``#[8!@^`?@_@!=0W&0T$!QD-"_^FM`P``]D$%`70$QD-"&4B#?4@`
+M#X28`P``2(M-2+X`````NB@```!(C8.0````0(@P2/_`2/_*=?6^`````+H(
+M````2(V#N````$"(,$C_P$C_RG7U2(M!"$B)@Y````!(BT$02(F#F````$B+
+M01A(B8.@````BT$@B8.X````Z2T#``!F_X/`````OQ`G``#H`````,9#0@7I
+M$P,``$B+34A(BT50#[9``H/@#X!])`!U<P^V40</MD$&P>`(`<(/MD$%P>`0
+M`<(/MD$$P>`8`<*)D]P````/ME$##[9!`L'@"`'"#[9!`<'@$`'"#[8!P>`8
+M`<)(B5-P@[O<`````'4:9O^#P````+\0)P``Z`````#&0T(+Z90"``#&0T(-
+MZ8L"``"`?20@9F:0=2X\!@^4PCP"#Y3`"="H`70>9O^#P````+\0)P``Z```
+M``#&0T(%Z5@"``!F9F:02(-]>`!T#$B-=7A,B>?H`````$B)[DR)Y^@`````
+M2(G:3(GN3(GGZ`````#I3P(``$B+15`/MD`"@^`/2(M-2(!])``/A;$````/
+MME$+#[9!"L'@"`'"#[9!"<'@$`'"#[9!",'@&`'"B9/<````#[91!P^V00;!
+MX`@!P@^V007!X!`!P@^V003!X!@!PDACTD@/MD$#2,'@($@!PD@/MD$"2,'@
+M*$@!PD@/MD$!2,'@,$@!PD@/M@%(P>`X2`'"2(E3</9!#`%T!6:#2V($@[O<
+M`````'4:9O^#P````+\0)P``Z`````#&0T(9Z6(!``#&0T(-Z5D!``"`?20@
+MD'4N/`8/E,(\`@^4P`G0J`%T'F;_@\````"_$"<``.@`````QD-"&>DH`0``
+M9F9FD$B#?7@`=`Q(C75X3(GGZ`````!(B>Y,B>?H`````$B)VDR)[DR)Y^@`
+M````Z1\!``#&0T(4Z>H```"`?20@9I!U-4B+15`/MD`"@^`//`8/E,(\`@^4
+MP`G0J`%T&F;_@\````"_$"<``.@`````QD-"%.FM````QD-"&^FD````@'TD
+M`'5,2(M-2`^W0V!F@TMB`0R&9HE#8(!Y`P!U!8`Y%G<79O^#P````+\0)P``
+MZ`````#&0T(-ZVGV008$=`=F@TMB`NM'9H-C8OUF9I#K/8!])"!U,DB+15`/
+MMD`"@^`//`8/E,(\`@^4P`G0J`%T'&;_@\````"_$"<``.@`````QD-"!>L:
+M9H-C8/G&0T(.ZP^`?20`=05F@TMB`\9#0@](@WUX`'0,2(UU>$R)Y^@`````
+M2(GN3(GGZ`````!(B=Y,B>?H`````&9FD$B+7"0(2(ML)!!,BV0D&$R+;"0@
+M3(MT)"A,BWPD,$B#Q#C#9F9FD&9FD&9FD&9FD$B#["A(B5PD"$B);"003(ED
+M)!A,B6PD($B)_4B)\V:!?B"%``^'E@```$@/MT8@@+PX0`@``/\/A(,```!F
+M@WX@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!``!(BT002`^V2`CK7V:!?B"!
+M`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(#[9(".LP2`^W
+M1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(````#[9(".L&D+G_____
+MOO____]F@7L@A0!W#4@/MT,@#[:T*$`(``"`^?]T(0^VP8"\*,8(``#_#Y3"
+M0(#^_P^4P`G0J`%U!H![)`9U(TB#>W@`=`Q(C7-X2(GOZ`````!(B=Y(B>_H
+M`````.EX`@``#[;!3`^VI"C&"```36GDJ````$V-I"R@`0``B?(/ML)(:<"(
+M`0``28G%3`.M&`D``$B+<TB`>R0`#X2I````@'LZ!@^$GP```(![.@P/A)4`
+M``!!#[>5P````(U"`69!B87`````9H/Z"78F08!]0@9T'T'&14,"0<9%0O]!
+M@&5$_DR)[DB)[^@`````Z>8!``"_Z`,``.@`````20^V14"H`G0IJ`1T):@!
+M="%!#[95>4F+=5!!N`````"Y`@```$R)Y^@`````Z:H!``!!QD5"`TR)[DB)
+M[^@`````Z94!``!F9I!FD(![.@%U#T'&14($9F:09I#I30$``(![.@)U"D'&
+M14(%Z3T!``"`>SH##X6:````08!]0@5U+&:!?@3(-V9F9I!U($$/MW4P2,?'
+M`````+@`````Z`````!!QD5"!ND``0``3(GOZ`````!)C;V0````OB@```#H
+M!?7__X3`=3A)C7U\OA0```#H\_3__X3`=29)C;VX````O@@```#HWO3__X3`
+M=1%)@WUP`'0*0<9%0A?IJP```$'&14(:9D'_A<````#IF0```(![.A=U"D'&
+M14(5Z8D```"`>SH89F:0=0=!QD5"%NMY@'LZ!&9FD'4'0<9%0@?K:8![.@5F
+M9I!U!T'&14((ZUF`>SH&9F:0=0=!QD5"">M)@'LZ#&9FD'4'0<9%0@KK.8![
+M.A9F9I!U!T'&14(4ZRF`>SH.9F:0=2!(@WMX`'0,2(US>$B)[^@`````2(G>
+M2(GOZ`````#K+DB#>W@`=`Q(C7-X2(GOZ`````!(B=Y(B>_H`````$R)[DB)
+M[^@`````9F:09I!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#9F9FD&9FD$B#
+M["A(B5PD"$B);"003(ED)!A,B6PD($B)_4B)\V:!?B"%``^'E@```$@/MT8@
+M@+PX0`@``/\/A(,```!F@WX@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!``!(
+MBT002`^V2`CK7V:!?B"!`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\`
+M`$B+1!`(#[9(".LP2`^W1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(
+M````#[9(".L&D+G_____OO\```!F@7L@A0!W#D@/MT,@9@^VM"A`"```@/G_
+M#Y3"9H'^_P`/E,`)T*@!="-(@WMX`'0,2(US>$B)[^@`````2(G>2(GOZ```
+M``#IRP````^VP4P/MJ0HQ@@``$UIY*@```!-C:0LH`$```^WQDAIP(@!``!)
+MB<5,`ZT8"0``@'LD`'1$#[;Q2,?'`````+@`````Z`````!)BU4(28M%`$B)
+M4`A(B0)!_DPD#DR)[DB)[^@`````0<9$)`G_3(GF2(GOZ`````"`>SH!=2R_
+M$"<``.@`````2(G>2(GOZ`````"Y`0```+H`````3(GN3(GGZ`````#K(+]0
+MPP``Z`````!(B=Y(B>_H`````$R)[DR)Y^@`````2(M<)`A(BVPD$$R+9"08
+M3(ML)"!(@\0HPV9FD&:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@2(GU08G4
+M08G-2(L?2(G?Z`````!(B<%(A<!U#<:%X0````'&14(#ZW7&0#CAQD`Y`4&`
+M_`$9P/?0@\`"B$$ZN`\```!%A.UU$+@`````2(-]6`!T!`^V17F(03L/MT4P
+M9HE!($B)62C'030`````2,=!2`````!%A.U(Q\``````2,?"`````$@/1<)(
+MB8&@````2(G.2(G?Z`````!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#D$%7
+M059!54%455-(@^P(28G]2(GU3(LW3(GWZ`````!(B<-(A<!U#,:%X0````'I
+MGP```$R)]^@`````28G$2(7`=13&A>$````!2(G>3(GWZ`````#K>TR->UC&
+M0SCAQD,Y`<9#.@,/MT4P9HE#($F+10!(B4,HQT,T``(``$F+1"002(E#2+D`
+M````N@`"``"("$C_P$C_RG7V3(EC>$C'@Z``````````O@````!,B?_H````
+M`(M3-$F+="083(G_Z`````!(B=Y,B??H`````$B#Q`A;74%<05U!7D%?PV9F
+M9I!F9F:09F9FD&9FD$&)T+D`````.=%S'V9F9I`/MA</MD<!B`:(5@%(@\8"
+M2(/'`O_!1#G!<N7SPV9FD$%455-(B?M(B?5)B?1F@SX`>0X/MP8E`!\``,'X
+M"(A'04B+111(B4-\2(M%'$B)@X0```"+122)@XP```!(BT4N2(F#N````$B+
+M139(B8.0````2(M%/DB)@Y@```!(BT5&2(F#H````$B+14Y(B8.H````2(M%
+M5DB)@[````!(C7M\N@H```!(B?[H0/___TB-N[@```"Z!````$B)_N@L____
+M2(V[D````+H4````2(G^Z!C___]FQT-@``!FQT-B``!F08.\)+(!```!#Y3"
+MP>(##[9#1(/@]PG0B$-$]H6G````!'0&9L=#8`$`]H6D`````70H9H-+8`+V
+MA:H````!=`5F@TMB`?:%J`````%T#&:!2V```69FD&9FD/:%I````"!T%V:#
+M2V`$]H6J````('0)9H-+8@)F9F:0]H6D````0'079H%+8(``]H6J````0'0(
+M9H-+8@AF9I#&0WH"]H69`````70G]D-@`70*9H-+8`AF@TMB$`^VA98```"#
+MX!__P(A#>CP@=03&0WH?]H68````"'0&9H%+8``"]H68````!'0%9H-+8"#V
+MA9@````"=`5F@TM@$/:%J````"!T#O:%K@```"!T!6:#2V!`]D-@`7042(N%
+MR````$B)0W#K#F9F9I!F9I"+17A(B4-P2/]+</9%:@)T'_:%@`````]T%F:#
+MO8`````"&<"#P`2(0V3K"&9F9I#&0V0"QD-E__9%?@1T!L9#90+K'/9%?@)T
+M",9#90%FD.L.]D5^`70(QD-E`&9F9I#&0V;_]D5J!'0?N0````"02`^WA;``
+M``!(T_BH`70#B$MF_\&`^09VY[X``@``2(GOZ`````")@\0```"X`0```%M=
+M05S#9F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)_4B)\TR+)TR)Y^@`
+M````2(G"#[9+9DB%P'4)QH/A`````>M'QD`XX<9`.0'&0#H$B$@[#[=#,&:)
+M0B!(BT4`2(E"*,="-`````!(QT)(`````$C'@J``````````B$MI2(G63(GG
+MZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9F9I!F9I!F9I!(@^P82(D<
+M)$B);"0(3(ED)!!(B?U(B?-,BR=,B>?H`````$B)P@^V2V1(A<!U"<:#X0``
+M``'K1\9`..'&0#D!QD`Z!8A(.P^W0S!FB4(@2(M%`$B)0BC'0C0`````2,="
+M2`````!(QX*@`````````(A+9TB)UDR)Y^@`````2(L<)$B+;"0(3(MD)!!(
+M@\08PV9F9I!F9F:09F:09F:02(/L&$B)'"1(B6PD"$R)9"002(G[2(GU3(LG
+M3(GGZ`````!(B<)(A<!U"<:%X0````'K0,9`..'&0#D!QD`Z!@^W13!FB4(@
+M2(L#2(E"*,="-`````!(QT)(`````$C'@J``````````2(G63(GGZ`````!(
+MBQPD2(ML)`A,BV0D$$B#Q!C#9F:09F:09F:02(/L&$B)'"1(B6PD"$R)9"00
+M2(G[2(GU3(LG3(GGZ`````!(B<)(A<!U"<:%X0````'K0,9`..'&0#D!QD`Z
+M#`^W13!FB4(@2(L#2(E"*,="-`````!(QT)(`````$C'@J``````````2(G6
+M3(GGZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#9F:09F:09F:02(/L&$B)'"1(
+MB6PD"$R)9"002(G[2(GU3(LG3(GGZ`````!(B<)(A<!U"<:%X0````'K2\9`
+M..'&0#D!QD`Z%L9`/`$/MT4P9HE"(,:"F`````](BP-(B4(HQT(T`````$C'
+M0D@`````2,>"H`````````!(B=9,B>?H`````$B+'"1(BVPD"$R+9"002(/$
+M&,-F9F:09F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)^TB)]4R+)TR)
+MY^@`````2(G"2(7`=0G&A>$````!ZT#&0#CAQD`Y`<9`.A</MT4P9HE"($B+
+M`TB)0BC'0C0`````2,="2`````!(QX*@`````````$B)UDR)Y^@`````2(L<
+M)$B+;"0(3(MD)!!(@\08PV9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)
+M^TB)]4R+)TR)Y^@`````2(G"2(7`=0G&A>$````!ZT#&0#CAQD`Y`<9`.A@/
+MMT4P9HE"($B+`TB)0BC'0C0`````2,="2`````!(QX*@`````````$B)UDR)
+MY^@`````2(L<)$B+;"0(3(MD)!!(@\08PV9FD&9FD&9FD$B#["A(B1PD2(EL
+M)`A,B60D$$R);"083(ET)"!(B?U!B?1!B=5!B<Y(BX>(````2(L82(G?Z```
+M``!(B<;&0#CAQD`Y`<9`.A&X#P```$6$Y'4$#[9%1XA&.T2(;CP/MT5`9HE&
+M($B)7BC'1C0`````2,=&2`````!%A/9(Q\``````2,?"`````$@/1<)(B8:@
+M````2(G?Z`````!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(@\0HPV9FD&9F
+MD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?R)RT&)]4&)
+MUD6)QTB+AX@```!(BRA(B>_H`````$B)QL9`..'&0#D!QD`Z$K@/````183M
+M=09!#[9$)$>(1CM$B'8\#[;'B$8]B=C!Z!"(1CZ)V,'H&(A&/XA>0$$/MT0D
+M0&:)1B!(B6XHQT8T`````$C'1D@`````183_2,?``````$C'P@````!(#T7"
+M2(F&H````$B)[^@`````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P
+M2(/$.,-F9F:09F9FD&9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H
+M3(E\)#!)B?Q(B?5!O@````!F@7X@A0`/AY8```!(#[=&(("\.$`(``#_#X2#
+M````9H-^(']W(D@/MH0X0`@``$B+EQ@)``!(:<"(`0``2(M$$$@/ME`(ZU]F
+M@7X@@0!W)T@/MT8@2`^VA#A`"```2(N7:`D``$AIP,@/``!(BT00"`^V4`CK
+M,$@/MT8@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B`````^V4`CK!I"Z
+M_____[G_____9H%]((4`=PY(#[=%($(/MHP@0`@```^VPDH/MIP@Q@@``$AI
+MVZ@```!*C9PCH`$```^VP4AIP-````!)B<5-`ZPD0`D``(!]/`(/A88````/
+MMD5`)?````"#^"`/E,*#^!`/E,`)T*@!=&L/ME5`B="#X`^#^`%U)8G1@>'P
+M````0;@!````N@(```"^`````$R)[^@`````Z;$&``!)#[9%1TV+=,58#[9%
+M0"7P````@_@@#Y3`@\`(08B&X@```$F+1EAF@6!.__[I?P8``&9FD&9FD(!]
+M)`!T/P^V721(@WUX`'0/2(UU>$R)Y^@`````9F:02(GN3(GGZ`````"`^P(/
+MA44&``!,B>Y,B>?H`````)#I-`8``$$/MD5"@_@9#X?]!0``B<#_),4`````
+M00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````(G"@_@%N`4````/1L)!
+MB$4[@'L/`'0.0<9%0@#&0P\`Z;`%``!!QD5"`NFF!0``00^V15#!X`A(F$F+
+ME"3`$```BX0"3`@``(D%`````&8/ML!F08E%/$$/MD50P>`(2)A)BY0DP!``
+M`(N$`D0(``")!0````")PL'H"&9!B44^#[;"P>`(9D$)13QF08%]/D!!N`,`
+M``"Z&0````]$PD&(14+I+04``$$/MD50P>`(2)A)BY0DP!```(N$`D0(``")
+M!0````!!B$4Y00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````(G"J`AT
+M!T'&13H,ZR>H!'0,0<9%.@MF9I!FD.L72(G02-'H@^`!@_@!&<#WT(/@"D&(
+M13I!QD5"!.FM!```00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````(/(
+M"$&(14A!QD5"!>E]!```0<9%0@;I<P0``$$/MD50P>`(2)A)BY0DP!```(N$
+M`DP(``")!0````!!@'U'`1G`@^`"@\`408A%0ND^!```00^V14?_P$&(14=!
+M.D4[<PI!QD5"%NDC!```0<9%1P!!QD5"%[\@H0<`Z`````#I"@0``$'&14(4
+MZ0`$``!!QD5"".GV`P``0<9%0A20Z>L#``!!QD5*`N@`````28F%P````$'&
+M14(5Z=`#``!!#[9%4,'@"$B828N4),`0``"+A`),"```B04`````1`^V^$$/
+MMD50P>`(2)A)BY0DP!```(N$`D0(``")!0`````/ML#!X`A!"<?H`````$F)
+MA<@```!$B?B#X`^#^`-U$4&`?4H`=`I!QD5""NE=`P``28N%R````$$KA<``
+M```M0`T#`'@'08!]2@!T&4'&14(508!]2@`/A#$#``!!_DU*Z2@#``!)#[9%
+M1TF#?,58``^$U0```,9$)`<`@'L.`'8[3(U[8$R)_^@`````28G&20^V14=-
+M.73%6'0@28M'"$V)=PA-B3Y)B48(3(DP_D0D!P^V1"0'.$,.=\G^2PY)@WXX
+M`'1L28M&.$C'0&``````0?9&1`1U)4'^A"3O$P``3(GGZ`````!)BT8X#[9P
+M`;H!````3(GGZ`````!)BU8X28NT)-`(``"_`0```.@`````28M6.$F+M"30
+M"```OP8```#H`````$G'1C@`````20^V14=)QT3%6`````!,B?9,B>?H````
+M`$'&14()Z3@"``!!#[9%4,'@"$B828N4),`0``"+A`),"```B04`````#[;(
+M00^V15#!X`A(F$F+E"3`$```BX0"1`@``(D%`````,'@"`G!08E-5$&`?4(*
+M=`CWP0```0!T$4'&14(+Z=4!``#^2PYFD.MF0<9%0@Q)#[9%1TF#?,58`'1)
+MQD0D!@"`>PX`=DE,C7M@2(U[8.@`````28G&20^V14=-.73%6'3`28M'"$V)
+M=PA-B3Y)B48(3(DP_D0D!@^V1"0&.$,.=\CK"TR)Y^@`````28G&387V#X2(
+M`0``20^V14=-B73%6$$/MD5+08B&X@```.E$`0``0;X_0@\`2(M#(/9`,@AU
+M)4R)Y^@`````OP$```#H`````$'_SD&#_O]T"DB+0R#V0#((=-M!QD5"">D%
+M`0``00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````$0/MOA!#[9%4,'@
+M"$B828N4),`0``"+A`)$"```B04`````#[;`P>`(00G'1(GY@>'_#P``@?D3
+M`0``#Y3"@?DC`0``#Y3`"="H`70M0<9%0AB!^1,!``!U"D'&14L(Z8(```!$
+MB?@E_P\``#TC`0``=7-!QD5+">ML00^V549!#[9%.__(.<)]#T'^149!_D5'
+M0<9%0@?K34'&14(`00^W14Z#X/>#R`)F08E%3DB#?7@`=`Q(C75X3(GGZ```
+M``!(B>Y,B>?H`````,9#"?](B=Y,B>?H`````.LR0<9%0@-F9F:02(-]>`!T
+M#$B-=7A,B>?H`````$B)[DR)Y^@`````3(GN3(GGZ`````!(BUPD"$B+;"00
+M3(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!(@^PX2(E<)`A(B6PD$$R)
+M9"083(EL)"!,B70D*$R)?"0P2(G[28GT0;\`````O@````!F08%\)""%``^'
+MGP```$D/MT0D(("\.$`(``#_#X2+````9D&#?"0@?W<B2`^VA#A`"```2(N7
+M&`D``$AIP(@!``!(BT002`^V4`CK969!@7PD(($`=RA)#[=$)"!(#[:$.$`(
+M``!(BY=H"0``2&G`R`\``$B+1!`(#[90".LS20^W1"0@2`^VA#A`"```2(N7
+M0`D``$AIP-````!(BX00B`````^V4`CK"&9FD+K_____N?____]F08%\)""%
+M`'<.20^W1"0@#[:,&$`(```/ML%(:<#0````28G%3`.K0`D```^VPD@/MJP8
+MQ@@``$AI[:@```!(C:P=H`$``(#Z_W0?@+P8Q@@``/\/E,*`^?\/E,`)T*@!
+M=0A!@'PD)`9U*TF#?"1X`'0328UT)'A(B=_H`````&9FD&9FD$R)YDB)W^@`
+M````Z=`%``!!@'PD)`!T&$B)[DB)WV:0Z`````#IM@4``&9FD&9FD$$/MD5"
+M@^@-@_@$#X=O!0``B<#_),4`````00^V15#!X`A(F$B+D\`0``"+A`),"```
+MB04`````1`^VR$$/MD50P>`(2)A(BY/`$```BX0"1`@``(D%`````,'@"$$)
+MP;\`````0;@`````0;X`````08!].P!V,D2)RF9FD&:02(G01(GQ2-/XJ`%T
+M%/_&#[;!28-\Q5@`=`5!_\#K`O_'0?_&13AU.W?60(3_=`5!@$U)`46$P'0%
+M08!-20)`@/X!#X4]`0``0;X`````08!].P!V4$2)RD$/MLY(B=!(T_BH`70<
+MB<I(B=Y(B>_H`````$B%P'052(EH2$R):%CK"T'_QD4X=3MWS>L818AU1T4X
+M=3MV#D'&14(.9F9FD.E;!```13AU.P^%400```^V=0VZ`0```$B)W^@`````
+MQD0D`P"`?0X`#X:`````3(UU8$R)]^@`````28G'28M&"$V)?@A-B3=)B4<(
+M3(DX28-_.`!T&DF+5SA(B[/0"```OP4```#H`````$&`3T0"3(GZO@8```!(
+MB>_H`````$&`?WL`=!E(B=_H`````+\!````Z`````!!@'][`'7G_D0D`P^V
+M1"0#.$4.=X1)@WPD>`!T#4F-="1X2(G?Z`````!,B>9(B=_H`````$'&14D`
+MQD4)`$B)[^@`````Z:L#``!F08%-3H``0;X`````08!].P!V342)RD$/MLY(
+MB=!(T_BH`70<B<I(B=Y(B>_H`````$B%P'062(EH2$R):%CK#$'_QD4X=3MW
+MS9#K%$6(=4=%.'4[=@I!QD5"#^D:`P``13AU.P^%$`,```^V=0VZ`0```$B)
+MW^@`````QD0D`@"`?0X`#X:`````3(UU8$R)]^@`````28G'28M&"$V)?@A-
+MB3=)B4<(3(DX28-_.`!T&DF+5SA(B[/0"```OP4```#H`````$&`3T0"3(GZ
+MO@8```!(B>_H`````$&`?WL`=!E(B=_H`````+\!````Z`````!!@'][`'7G
+M_D0D`@^V3"0".$T.=X1)@WPD>`!T#4F-="1X2(G?Z`````!,B>9(B=_H````
+M`$'&14D`QD4)`$B)[^@`````Z6H"``!!#[9%4,'@"$B82(N3P!```(N$`DP(
+M``")!0````!$#[;(00^V15#!X`A(F$B+D\`0``"+A`)$"```B04`````P>`(
+M00G!0??!```$`'0'0?9%20%U$$'WP?__^_]T$4'V14D"=`I!QD5"#^G*`0``
+M0<9%20!F9I!FD.GK`0``0;X_0@\`2(M%(/9`,@AU)4B)W^@`````OP$```#H
+M`````$'_SD&#_O]T"DB+12#V0#((=-M!QD5"$.E\`0``00^V15#!X`A(F$B+
+MD\`0``"+A`),"```B04`````#[;`B40D!$$/MD50P>`(2)A(BY/`$```BX0"
+M1`@``(D%``````^VP,'@"`E$)`2+1"0$@^`/@_@##X7`````0?9%20%T#$'&
+M14(2ZPK^30[K9D'&14(220^V14=)@WS%6`!T2<9$)`$`@'T.`'9)3(UU8$B-
+M?6#H`````$F)QTD/MD5'33E\Q5ATPDF+1@A-B7X(38DW28E'"$R)./Y$)`$/
+MMD0D`3A%#G?(ZPM(B=_H`````$F)QTV%_P^$S0```$D/MD5'38E\Q5B+1"0$
+M)?\/```]$P$``'4*0<:'X@````CK>8M$)`0E_P\``#TC`0``=6E!QH?B````
+M">M?0<9%0A/K6$$/MD50P>`(2)A(BY/`$```BX0"3`@``(D%`````$$/MD50
+MP>`(2)A(BY/`$```BX0"1`@``(D%`````$D/MD5)@^`!@_@!&<#WT(/`$T&(
+M14)F9I!F9I!)@WPD>`!T#4F-="1X2(G?Z`````!,B>9(B=_H`````$R)[DB)
+MW^@`````9F:09I!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0X
+MPY"0D)"0D)"0D)"0D)!(BT<(2"T``@$`@^('P>((@,X@2,'F"('F`/\``(F4
+M!AS%```/MX0&',4``&:)!0`````/ML##9F:09F:09F:02(M'"$@M``(!`(/B
+M!\'B"(C*@,X02,'F"('F`/\``(F4!AS%``##9F:09F:09F:0055!5%53NP``
+M``!!NP````!!NO____]!N0````"]`0```$&XP.'D`$$/MLG_P8GNT^:Y````
+M``^VP?_`B<(/K]9$B<!!B=6Z`````$'W]8GZ*<(Y^+C_____#T;"1#G0<PE!
+MB<)$B<M!B<O_P8#Y#W;%0?_!08#Y!W:M00^VP\'@`PG8#[;`6UU!7$%=PV:0
+M2(/L&$B)'"1,B60D"$R);"0028G\3(VOP!$``$`/MMZY`````+H'````B=[H
+M#____T$/MDT!N@,```")WDR)Y^C[_O__2(L<)$R+9"0(3(ML)!!(@\08PV9F
+M9I!F9F:005154TF)_+L`````0`^V[KH"````B>Y,B>?H@?[__Z@(=`VX````
+M`.L?9F:09F:0OP$```#H`````/_#@?L/)P``=LRX_P```%M=05S#9I!3B?,/
+MMO*Z`P```.A`_O__.-@/E,`/ML!;PV9FD&9FD$B#["A(B1PD2(EL)`A,B60D
+M$$R);"083(ET)"!(B?U!B<Y!B?1!B=4/MLI`#[;>N@$```")WN@U_O__N4``
+M``"Z`@```(G>2(GOZ"'^__^)WDB)[^@W____NO\```"%P'5S187V=$E!]L4!
+M="-!#[;4OD````!(B>_H8O___[K_````A<!T3NM'9F9FD&9FD$$/MM2^&```
+M`$B)[^@_____NO\```"%P'0KZR1F9F:000^VU+XH````2(GOZ!____^Z_P``
+M`(7`=`MF9I!F9I"Z`````(G02(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$
+M*,-F9F:09F9FD&9F9I!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!(B?U)B<V)
+M\T&)U$`/MO;H9/[__[K_____A<!U,0^VTT$/MO1(B>_HG/[__[K_____A<!T
+M&0^V\[H!````2(GOZ-/\__]!B$4`N@````")T$B+7"0(2(ML)!!,BV0D&$R+
+M;"0@2(/$*,-F9F:09F9FD&9F9I!F9I!!5T%6055!5%532(/L"$B)_4F)ST6)
+MQD&)]4&)U,=$)`0`````A-(/A/@```!`#[;>N60```"Z`@```(G>Z)[\__^)
+MWDB)[^BT_?__A<!U$+H#````B=Y(B>_H0?S__Y!!#[;400^V];D!````2(GO
+MZ/O]__^Z_____X3`#X6)`0``NP````!$.?,/C7<!``!!C4;_B00D10^VY69F
+MD&:0.1PD=3NY0````+H"````1(GF2(GOZ";\__](8\M,`?FZ6````$2)YDB)
+M[^B@_O__A<`/A2\!``#K.69FD&9FD+E$````N@(```!$B>9(B>_HZ_O__TAC
+MRTP!^;I0````1(GF2(GOZ&7^__^%P`^%]````/]$)`3_PT0Y\WR"9I#IX@``
+M`+^@A@$`Z.'[__\/MLA!#[;=N@,```")WDB)[^B;^___B=Y(B>_HL?S__X7`
+M="`/MHW!$0``N@,```")WDB)[^AW^___NO_____IF````$$/MMV)VKY@````
+M2(GOZ,K\__^%P'4=#[:-P1$``+H#````B=Y(B>_H0/O__[K_____ZV2[````
+M`$0Y\WT^10^VY;E$````N@(```!$B>9(B>_H%OO__TACRTP!^;J`````1(GF
+M2(GOZ)#]__^%P'4+_T0D!/_#1#GS?,8/MHW!$0``00^V];H#````2(GOZ-GZ
+M__^+5"0$B=!(@\0(6UU!7$%=05Y!7\-F9F:02(/L&$B)7"0(3(ED)!!)B?Q(
+MB=!`#[;608G(2(G!O@````#HN/W__XG#N50```"Z`@```+X`````3(GGZ'_Z
+M__^)V$B+7"0(3(MD)!!(@\08PV9F9I!F9F:09F:09F:02(/L&$B)7"0(3(ED
+M)!!)B?Q(B=!`#[;608G(2(G!O@$```#H6/W__XG#N50```"Z`@```+X!````
+M3(GGZ!_Z__^)V$B+7"0(3(MD)!!(@\08PV9F9I!F9F:09F:09F:02(/L.$B)
+M7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)_$F)ST6)Q8GU08G60`^V
+MWKED````N@(```")WNB[^?__B=Y,B>?HT?K__X7`=0^Z`P```(G>3(GGZ%[Y
+M__]!#[;60`^V];D!````3(GGZ!G[__^Z_____X3`=4?K#KK_____ZSYF9F:0
+M9F:0NP````!$.>M]*$`/MNUFD$ACPT(/MA0XN0````")[DR)Y^C9^O__A,!U
+MQ__#1#GK?-ZZ`````(G02(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P
+M2(/$.,-F9F:02(/L&$B)7"0(3(ED)!!)B?Q(B=!`#[;608G(2(G!O@````#H
+MZ/[__XG#N50```"Z`@```+X`````3(GGZ,_X__^)V$B+7"0(3(MD)!!(@\08
+MPV9F9I!F9F:09F:09F:02(/L&$B)7"0(3(ED)!!)B?Q(B=!`#[;608G(2(G!
+MO@$```#HB/[__XG#N50```"Z`@```+X!````3(GGZ&_X__^)V$B+7"0(3(MD
+M)!!(@\08PV9F9I!F9F:09F:09F:005=!5D%505154TB#["A(B70D($R+=BA)
+M_\9%#[96`L9$)!\`2,=$)!``````0;@`````2(NWT`@``+F`____10^VR@^V
+MP68/MI0P0`@``&:!^O\`=$I$B<!!_\!$.<AU/X#Y@7<8#[?"2&G`R`\``$@#
+MAF@)``!(B40D$.LB2(M$)"#'0%#_____2(G'_U!(N`````#INP$``&9FD&9F
+MD/_!@/F%=IQ(B[?0"```2('&`!0``+F`____00^V^F:0#[;!9@^VE#!`"```
+M9H'Z_P!T0T2)P$'_P#GX=3F`^8%W&`^WPDAIP,@/``!(`X9H"0``2(E$)!#K
+M'$B+1"0@QT!0_____TB)Q_]02+@`````Z3\!``#_P8#YA7:C00^V5@1%#[9N
+M!4'!Y1!!#[9&!L'@"$$)Q4$/MD8'00G%10^V9@A!P>0000^V1@G!X`A!"<1!
+M#[9&"D$)Q$B#?"00``^$S````$&_`````$B+1"00@'A8``^&MP```$B)PTB#
+MPT@/MM*)5"0,9F9FD&9FD$B)W^@`````2(UH\$B+4PA(B4,(2(D82(E0"$B)
+M`@^V14$\#0^4PCPB#Y3`"="H`71>00^V1@.#^#MT(X/X/'5/QD0D'P%,BT0D
+M($2)Z42)XHMT)`Q(B>_H`````.LQ2(N](`$``$2)ZDF-=@OH`````$R+1"0@
+M1(GI1(GBBW0D#$B)[^@`````QD0D'P%FD$'_QTB+1"001#AX6`^'7O___[@!
+M````@'PD'P!U%TB+1"0@QT!0_____TB)Q_]02+@`````2(/$*%M=05Q!74%>
+M05_#9F9FD&9F9I!F9F:02(/L2$B)7"082(EL)"!,B60D*$R);"0P3(ET)#A,
+MB7PD0$F)_TF)]$R+;BA)_\6+1AS_R(E$)!3'1"00`````$B+5C!(B50D"$&`
+M?0$!=1#'1E``````Z3L"``!F9F:008!]`0)U64&`?0(!9F9FD'4^2(._V`@`
+M``!T!TR+O]@(``!)BX?0"```00^V50.(D.X3``!!#[95`XB0[B<``$''1"10
+M`````.GI`0``9I#'1E#^____Z=L!``!F9F:008!]`01U&4$/MD4#@^@[/`%W
+M#>BX_/__Z=4!``!F9I!!@'T!`W5N08!]`@%F9F:0=55!#[9-`T$/MD<^C30`
+MB<B9]_Z)T3G6?B]!#[95!`^VV8G>3(G_Z`````!!#[95!(G>3(G_Z`````!!
+MQT0D4`````#I7@$``$''1"10_O___^E0`0``0<=$)%#^____Z4(!``!)@[_8
+M"````'0'38N_V`@``$R)ZT&`?0$`#X2N````#[8K2/_##[8#2/_#B<$/MM#V
+MP@%T.T2+="0000'N13MT)"`/A]D```"+3"002`-,)`A!B>B^`````$R)_^A*
+M]___.>@/A;@```!$B70D$.M32&/%3(TT&$R)\$PIZ$B#P`)(8U0D%$@YT`^/
+MD@````^VT4&)Z$B)V;X`````3(G_Z.;Y__^%P'5X3(GS08`^`'4'08!^`0!T
+M%+\0)P``Z`````"`>P$`#X52____#[8KA>UT5[E4````N@(```"^`````$R)
+M_^B@\___08M$)"`K1"00.<4/1^B+3"002`-,)`A!B>BZ`````+X`````3(G_
+MZ)3V__^%P'@&`40D$.L*0<=$)%#_____D+E4````N@(```"^`````$R)_^A)
+M\___28-\)#@`=`M)BT0D.(M4)!")$$R)YT'_5"1(2(M<)!A(BVPD($R+9"0H
+M3(ML)#!,BW0D.$R+?"1`2(/$2,-F9F:09F9FD&9FD$B#[`A(@[_8"````'0'
+M2(N_V`@``("_[A,```!U(L8%``````&Y(````$C'P@````"^#@```.@`````
+M9F:09I!(@\0(PV9F9I!F9F:09F:02(/L"$B#O]@(````=`=(B[_8"```Q@4`
+M`````+D@````2,?"`````+X.````Z`````!(@\0(PV9FD&9FD&9FD$B#[`@/
+MMM)`#[;V2(N_T`@``.@`````2(/$",-F9F:02(/L"(GP2(._V`@```!T!TB+
+MO]@(``"(!0````"Y(````$C'P@````"^#@```.@`````2(/$",-F9F:09F9F
+MD$B#[`B)\832=!:X`0```-/@9@F'[!,``.L49F:09F:0N/[____3P&8AA^P3
+M```/MK?L$P``Z`````!(@\0(PY!!5%532(G]2(._V`@```!T!TB+K]@(``!!
+MO`````!!#[;<N0````"Z!P```(G>2(GOZ)KQ__^Y1````+H"````B=Y(B>_H
+MAO'__[G0````N@````")WDB)[^AR\?__N0````"Z!````(G>2(GOZ%[Q__]!
+M_\1!@_P!=J._H(8!`.A[\?__B(7!$0``#[;(N@,```"^`````$B)[^@P\?__
+M6UU!7,.0D)"0D)"0D)"0D$B+1PA(+0`"`0")]HL$!HD%`````,-F9F:09F:0
+M9F:02(M'"$@M``(!`(GVB10&PU-(B?M(BU<(QX*`_O__`````(N"!/___XD%
+M`````(#,`8F"!/___[H$````O@S"``#H`````+JX"P``O@C"``!(B=_H````
+M`+H!``P`O@#"``!(B=_H`````+H$````O@S#``!(B=_H`````+JX"P``O@C#
+M``!(B=_H`````+H!``P`O@##``!(B=_H`````+H`````OE#"``!(B=_H````
+M`+H`````OE##``!(B=_H`````%O#9F9FD&9FD&9FD$@YO]`(``!!#Y7`@^8#
+MC31VN`<```")\=/@]]!!B<%$(T]41(E/5(32=`VX!````-/@1`G(B4=4BU=4
+M00^V\,'F"('&4,(``$B+O]`(``#H`````//#9F9FD&9FD&9FD$B#[!A(B1PD
+M2(EL)`A,B60D$$B)_4B)\TB-CR@2``!(BY=H"0``3(VB.+@/`&:!?B"%`'<9
+M2`^W1B!(#[:$.$`(``!(:<#(#P``3(TD`DB+4TB`>@$"=0](BT($2(D!2(M"
+M#$B)00A(@WMX`'022(MS>$B)[^@`````9F:09F:02(G>2(GOZ`````!!QD0D
+M7`!(BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9F9I!F9F:02(/L.$B)7"0(2(EL
+M)!!,B60D&$R);"0@3(ET)"A,B7PD,$B)_4&)]4&)UD&)STB+1PA,BR!,B>?H
+M`````$B)PTB%P'1\3(GGZ`````!(B<)(A<!T;,9%7`%(C7M8QD,XX<9#.0'&
+M0SH0QD,ENV8/MD5;9HE#($R)8RC'0S20````2(U"$$B)0TA(B5-XQD`!`L9"
+M$$!$B&@"1(AP`T2(>`1(QX.@`````````+X`````Z`````!(B=Y,B>?H````
+M`$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9F9I!F
+M9F:005=!5D%505154TB#[`A(B?U!B?9!B==!B<U(BT<(3(L@3(GGZ`````!(
+MB<-(A<`/A/````!,B>?H`````$B)PDB%P`^$W````,9%7`%(C4-82(D$),9#
+M..'&0SD!QD,Z$,9#);MF#[9%6V:)0R!,B6,HQT,TD````$B-0A!(B4-(2(E3
+M>$B)QKD`````NI````"("$C_P$C_RG7VQD8!@L8&0$2(=@)$B'X#1(AN!$&`
+M_0)W(4J-%*T`````@>+\`P``2(U^"$F-M"0H$@``Z`````#K*TF+A"0H$@``
+M2(E&"$$/MM6-%)7X____2&/22(U^$$F-M"0P$@``Z`````!(QX.@````````
+M`+X`````2(L\).@`````2(G>3(GGZ`````!(@\0(6UU!7$%=05Y!7\-F9F:0
+M9F9FD&9F9I!!5D%505154TB)^T&)UHGPP.@"08G$0;T#````02'U2(M'"$B+
+M*+D"````N@````"^`````.@`````@'M<`'082(GOZ`````"_`0```.@`````
+M@'M<`'7H2(M#"$B+$$B!PB@2```/MD("A,!X0H/(@(A"`KD!````N@````"^
+M`````$B)W^@`````@'M<`'0?2(GOZ`````"_`0```.@`````@'M<`'7H9F9F
+MD&9FD$$/MM2Y`0```+X#````2(G?Z`````"`>UP`=!QF9F:02(GOZ`````"_
+M`0```.@`````@'M<`'7H2(M#"$B+,$B!QB@2``!!#[;%N0,````IP4ACR46$
+M]@^5P@^VTL'B`XL$#H/@YPG0B00.00^VU+D!````O@,```!(B=_H`````%M=
+M05Q!74%>PY"0D)"0D$R+AQ@)``!F@7X@A0!W(4@/MT8@2`^VA#A`"```2&G`
+MB`$``$F-/`#K#69FD&9FD$F-N'B&`0!,C8(@!```QH(@!```)V:!?CCA`74K
+M#[9&.O_(/`%W"0^V5COK*V9FD&:!?CCA`740#[9&.H/H$;H/````/`%V$+H`
+M````2(-_6`!T!`^V5WF#X@]!#[9``8/@\`G008A``;H`````9H%^..$!=0H/
+MMD8Z_\@\`78%N@$```#!X@=!#[9``8/@?PG008A``0^V009!B$`"#[8!08A`
+M`P^V005!B$`'#[9!!T&(0`\/MD$"08A`!`^V00-!B$`%#[9!!$&(0`8/MD$!
+M08A`#`^V00I!B$`(#[9!"T&(0`D/MD$,08A`"@^V00A!B$`+#[9!"4&(0`W#
+M9I!32(GS2(M/2$R+`0^V1CB#^"\/A'T```"#^"]_,X/X&P^$3@$``(/X&W\,
+M@_@29I!T8^E9`0``@_@H9F:09F:0=%.#^"IT3NE$`0``9F9FD#V*````=#X]
+MB@```&9F9I!_%8/X-0^$"0$``#V(````="/I&0$``#V/````9F9FD'03/>$`
+M```/A(P```!F9I#I^P```/9'8`%F9F:09F:0=`J!BY0```````0`]D=B$`^$
+MZ@````^V0S@\*`^4PCPJ#Y3`"="H`746@'LXB'00@'LXB@^%Q@```&9FD&9F
+MD/9!#`%U&@^V<0A,B<?H`````(3`#X2F````9F:09F:0@'LD@0^$E@```(&+
+ME````````0#IAP```+@`````@'XY`0^%?0````^V3CJ#^1QW/+@!````2-/@
+MJ?8_P!UU&ZD(0`8`=0NI```@`'469I#K&X..E`````CK18..E`````'K/(..
+ME````"#K,[@`````ZS'V1V`!=`J!BY0```````0`@XN4`````>L39F:0N```
+M``#V@Y8````@=`=FD+@!````6\-F9I!F9I!F9I!`#[;'PV9F9I!F9F:09F:0
+MB?@/ML3#9F9FD&9FD&9FD,9')`)(BT=00(AP`DB+1U#&0`<`2(M'4(A0#,-F
+M9F:0#[9'/8A&`@^V1SR(1@,/MD<[B$8$#[9'.HA&"L-F9I`/MD=!B$8"#[9'
+M0(A&`P^V1S^(1@0/MD<^B$8*#[9'/8A&"P^V1SR(1@S#9F:09I"Y`````#G1
+M?1QF9F:09F:0B=`IR(/X`@^=P`^VP(U,`0$YT7SK\\-F9I!F9I!F9I!(@^PH
+M2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@2(G[2(G508GV#[9'.(/X*G0I@_@J
+M?PV#^"AT'^GS````9F:0/8@```!T*3V*````9F9FD'0>Z=D```!$#[9C0$0/
+MMFL_2(GN2(G?Z`````#K%V:01`^V8T5$#[9K1$B)[DB)W^@`````QD4%0/:#
+ME@````%T-42(90!$B&T(0HT$]0````"(10$/MD,X/"@/E,(\B`^4P`G0@^`!
+M@_@!&<#WT(/`88A%!NMI]H.6````!'0P1(AE`42(;0D/MD,X/"@/E,(\B`^4
+MP`G0@^`!@_@!&<"#X!"#P"6(10;K-69FD&:01(AE`0^V0SJ#X`\(104/MD,X
+M/"@/E,(\B`^4P`G0@^`!@_@!&<"#X`*#Z#B(10:02(L<)$B+;"0(3(MD)!!,
+MBVPD&$R+="0@2(/$*,-F9I!54TB#["A(B?-(BW9(2(GG_+D$````N`````#S
+M2*OVAJ<````$=`Q(BY;(````2/_*ZP6+5GC_RH![."5U8KT(````2(G02,'H
+M&(@$)$B)T$C!Z!"(1"0!2(G02,'H"(A$)`*(5"0#]H;5````$'4/QD0D!@+&
+M1"0'`.FG````2('&Z@```$B-?"0$N@0```#H`````.F,````9F:09F:0O2``
+M``!(B=!(P>@XB`0D2(G02,'H,(A$)`%(B=!(P>@HB$0D`DB)T$C!Z""(1"0#
+M2(G02,'H&(A$)`1(B=!(P>@0B$0D!4B)T$C!Z`B(1"0&B%0D!_:&U0```!!U
+M$L9$)`H"QD0D"P#K'&9FD&9FD$B!QNH```!(C7PD"+H$````Z`````!(BWM(
+M2&/52(GFZ`````!(@\0H6UW#9F9FD`^V1SH*1SL*1SP*1ST/ML`/ME=`@^(!
+M"=!T%;HD````O@4```#H`````//#9F9FD,9&!NQ(QX>@`````````,-(@^P@
+M2(D<)$B);"0(3(ED)!!,B6PD&$B)^TB)]0^V1SB#^"]T"CV/````=!7K4Y!$
+M#[9G0$0/MF\_Z`````"0ZP]$#[9G140/MF]$Z`````#&105`]H.6````!'02
+M1(AE`42(;0G&109"ZQ9F9F:01(AE`0^V0SJ#X`\(107&109`2(L<)$B+;"0(
+M3(MD)!!,BVPD&$B#Q"##9F:09F:02(GQQD(%0`^V1CB#^#5T$#V1````="'K
+M)V9F9I!F9I!(#[='8(/@`8/X`1G`@^#]@^@6B$(&ZQS&0@;JZQ9FD+HD````
+MO@4```!(B<_H`````//#]D$Y`G0$QD$D`//#]D<\\'0/NB0```"^!0```.@`
+M````\\-F9I!F9I!F9I!)B?)!N0````!!N`T```!(B<A$B`A(_\!)_\AU]4$/
+MMD(X@_@U#X2=````@_@U?RR#^"AT<(/X*'\1@_@;9F:0#X22````Z;4"``"#
+M^"IFD'13@_@O=&'II`(``#V/````=%4]CP```'\;/8@```"0=#,]B@```'0L
+M9F9FD&9FD.E[`@``/9$```!F9I!F9I!T-CWA````=&AF9F:09F:0Z5L"```/
+MMO)(B<I,B=?H`````.E.`@``2(G.3(G7Z`````#I/@(``$B)RDR)UN@`````
+MZ2X"``!!]D(\`709QD$&<,9!!`#&00,`QD$"`,9!!4#I#@(``,9!!N#I!0(`
+M`+@`````08!Z.0$/A?H!``!!#[9".H/X'`^'U0$``(G`_R3%`````,9!!P3I
+MU0$``,9!!P#IS`$``,9!!NQFD.G!`0``QD$&[\8!`T$/MD([@\A`B$$!Z:H!
+M``#&00;OQ@$'Z9X!``#&009`QD$!`<9!!4#IC0$``,9!!N_&`0-!#[9".X/(
+M"(A!`>EV`0``QD$&[\8!`NEJ`0``QD$&[\8!@NE>`0``QD$&[\8!!NE2`0``
+MQD$&[\8!ANE&`0``QD$&XT$/MD([B$$!Z34!``#&00:PQ@'8QD$#3\9!!,+I
+M(0$``,9!!K#&`=G&00-/QD$$PND-`0``QD$&L,8!VL9!`T_&003"Z?D```!(
+M#[='8(/@`8/X`1G`@^#]@^@6B$$&Z=X```#&00;OQ@&JZ=(```#&00;OQ@%5
+MZ<8```#&008OQD$!`<9!`A#IM0```,9!!N1!#[9"/(@!00^V0CN(007IG0``
+M`$$/MD([B$$&00^V0CR(`4$/MD(]B$$"00^V0CZ(00-!#[9"/XA!!$$/MD)!
+MB$$*00^V0D"(00'K9,9!!NA!#[9"/(@!00^V0CN(005!#[9"/8A!`D$/MD(^
+MB$$#00^V0C^(001!#[9"0(A!`>LO0?9"/`%T*,9!!G#&000`QD$#`,9!`@#&
+M005`ZQ*X`````,-F9I!F9I"X`````,.X`0```//#D)"005154XGU3(MG"$F!
+M[``"`0"[`````#GS<S9F9I!F9I!!BX0D`,@``(D%`````*@!=0ZX`````.L<
+M9F9FD&9FD+\*````Z`````#_PSGK<M"X_____UM=05S#9F:09F:02(M_"$B!
+M[P`"`0`/MM+!X@A%#[;`0<'@!$0)PHG0@\@$A,D/1=!!@_G_=!%$B<@E__\#
+M`(F'!,@``(/*`HD6PTB+1PB#S@&)L`#&___#9I!(@^PH2(E<)!!(B6PD&$R)
+M9"0@2(G[28GT2(MO"$B+A_@3```/ME`"0;G_____0;@!````N0$```!(C70D
+M#.AM____BW0D#$B)W^BA____OA`G``!(B=_H]/[__[K_____A<!U&8N%#,;_
+M_XD%`````(E$)`Q!B`0DN@````")T$B+7"002(ML)!A,BV0D($B#Q"C#9F9F
+MD&9F9I!F9F:0059!54%455-(@^P028G\B<U!B?9!B=6[`````#G+<S1(C70D
+M#TR)Y^@S____A<!U$T2)\")$)`]$..AU![@`````ZQ6_"@```.@`````_\,Y
+MZW+,N/____](@\006UU!7$%=05[#9F9FD&9FD&9FD%-(@^P02(G[2(N'^!,`
+M``^V$$&Y_____T&X`````+D`````2(UT)`SH<_[__XMT)`Q(B=_HI_[__[X0
+M)P``2(G?Z/K]__^Z_____X7`=1ZYX),$`+H"````O@,```!(B=_H*O___X/X
+M`1G2]]*)T$B#Q!!;PV9F9I!F9F:09F:055-(@^P(2(G[2(G52(N'^!,```^V
+M4`M!B?%!N`$```"Y`0```$B-="0$Z/']__^+="0$2(G?Z"7^__^^$"<``$B)
+MW^AX_?__NO____^%P'482(M#"(N`#,;__XD%`````(A%`+H`````B=!(@\0(
+M6UW#9F9FD&9F9I!F9I!F9I!54TB#[`A(B?N)]<9$)`?_2(U4)`?H`````+K_
+M____A<!U?KH`````@'PD!P!T<DB)W^C)_O__B<*#^/]T8TB+@_@3```/ME`*
+M08GI0;@`````N0````!(B>9(B=_H/OW__XLT)$B)W^AS_?__OA`G``!(B=_H
+MQOS__[K_____A<!U'KG@DP0`N@````"^`P```$B)W^CV_?__@_@!&=+WTHG0
+M2(/$"%M=PV9FD&9FD%532(/L"$B)^XGUZ$#^__^)PH/X_W1F2(N#^!,```^V
+M4`9!B>E!N`````"Y`````$B-="0$2(G?Z+/\__^+="0$2(G?Z.?\__^^$"<`
+M`$B)W^@Z_/__NO____^%P'4>N>"3!`"Z`````+X#````2(G?Z&K]__^#^`$9
+MTO?2B=!(@\0(6UW#9F9FD&9FD&9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD
+M($B)_4&)]4&)U$B+7PCHEOW__T2)HPC&__](BX7X$P``#[90!46)Z4&X!```
+M`+D`````2(UT)`1(B>_H"?S__XMT)`1(B>_H/?S__[X0)P``2(GOZ)#[__^Z
+M_____X7`=1ZYB!,``+H`````O@$```!(B>_HP/S__X/X`1G2]]*)T$B+7"0(
+M2(ML)!!,BV0D&$R+;"0@2(/$*,-F9F:09F9FD&9FD&9FD$B#["A(B1PD2(EL
+M)`A,B60D$$R);"083(ET)"!)B?Y!B?5)B=2)S;L`````.<MS'XG80HL4($&-
+M=!T`3(GWZ/W^__^#^/]T#(/#!#GK<N&X`````$B+'"1(BVPD"$R+9"003(ML
+M)!A,BW0D($B#Q"C#9F9FD&9F9I!F9F:09F:02(/L*$B)7"002(EL)!A,B60D
+M($B)^TF)U$B+;PA(@>T``@$`@/D%N`0````/0\A(BX?X$P``#[90!$&)\40/
+MML&Y`0```$B-="0,Z-#Z__^+="0,2(G?Z`3[__^^$"<``$B)W^A7^O__NO__
+M__^%P'49BX4,R```B04`````B40D#$&)!"2Z`````(G02(M<)!!(BVPD&$R+
+M9"0@2(/$*,-F9F:09F9FD&9F9I!F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL
+M)"!,B70D*$R)?"0P28G^08GT2(G518T\#(GS@^/\08GU08/E`W1)N00```!(
+MC50D!(G>Z`+___^-0P2Y!````$0Y^'8)1(GY1"GA1`'I1(GJ03G-<Q=(C70D
+M!(G0#[8$!HA%`$C_Q?_".<IR[H/#!$6)_4&#Y?Q$.>MS)[D$````2(U4)`2)
+MWDR)]^BJ_O__BT0D!(E%`$B#Q02#PP1$.>MRV40Y^W,YN00```!(C50D!(G>
+M3(GWZ'[^__]$B?DIV;H`````.<IS%TB-="0$B=`/M@0&B$4`2/_%_\(YRG+N
+MN`````!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPY!54TB#
+M[`A(B?O'1"0$`````$B+;PC&A_`3````#[85`````$&Y`````$&X`@```+D!
+M````2(UT)`3H$OG__XMT)`1(B=_H1OG__[X0)P``2(G?Z)GX__^%P'4[BX4,
+MQO__B04`````B40D!#V_0P``=23'@^`3``"_0P``QX/D$P`````@`,>#Z!,`
+M```0``!FN```ZP6X_____TB#Q`A;7<-F9F:09F9FD&9FD&9FD%532(/L"$B)
+M^\=$)`0`````2(MO",:'\!,````/MA4`````0;D`````0;@"````N0$```!(
+MC70D!.AB^/__BW0D!$B)W^B6^/__OA`G``!(B=_HZ??__X7`=3N+A0S&__^)
+M!0````")1"0$/1]C``!U),>#X!,``!]C``#'@^03``````0`QX/H$P`````!
+M`&:X``#K!;C_____2(/$"%M=PV9F9I!F9F:09F:09F:055-(@^P(2(G[QT0D
+M!`````!(BV\(QH?P$P```0^V%0````!!N?____]!N`(```"Y`0```$B-="0$
+MZ++W__^+="0$2(G?Z.;W__^^$"<``$B)W^@Y]___A<!U:HN%#,;__XD%````
+M`(E$)`0]'T,``'0N/1]$``!U3,>#X!,``!]$``#'@^03``````0`QX/H$P``
+M```!`&:X``#K+69FD,>#X!,``!]#``#'@^03``````0`QX/H$P`````!`+@`
+M````ZP6X_____TB#Q`A;7<-F9F:09F9FD&9F9I!F9I!54TB#[`A(B?O'1"0$
+M`````$B+;PC&A_`3````#[85`````$&Y`````$&X`@```+D!````2(UT)`3H
+MTO;__XMT)`1(B=_H!O?__[X0)P``2(G?Z%GV__^%P'5UBX4,QO__B04`````
+MB40D!#WO$0``=`X][Q(``'0LZU5F9I!FD,>#X!,``.\1``#'@^03``````0`
+MQX/H$P`````!`+@`````ZS#'@^`3``#O$@``QX/D$P`````$`,>#Z!,`````
+M`0"X`````.L+9F:09F:0N/____](@\0(6UW#9F9FD%-(B?OHA_W__X7`=1-(
+MQX/X$P```````+H`````ZV&02(G?Z!C^__^%P'422,>#^!,```````"Z````
+M`.M"2(G?Z)K\__^%P'422,>#^!,```````"Z`````.LD2(G?Z+S^__^Z____
+M_X7`=1-(QX/X$P```````+H`````9F:0B=!;PV9F9I!F9F:09F9FD$B#["A(
+MB5PD"$B);"003(ED)!A,B6PD($B)^XGU08G-28G4N@````!(@[_X$P````^$
+MN@```$6$P'0M@_[_=1$/MX?@$P``9D&)!"3IE@```$R)XNC7^O__N@````"%
+MP`^%B@```.M_@_[_9F:09I!U$T&`/"0/#Y2'\1,``+H!````ZVNZ`````("_
+M\1,```!T78GPN@````#WM^@3``"%TG4J@+_P$P```'0.Z`````"Z`````(7`
+M=36)[DB)W^CK]___N@````"%P'4B1(GI3(GBB>Y(B=_H(OG__[H`````A<!U
+M";H!````9F9FD(G02(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPY"0D)"0QX?H
+M"````0```,-F9I!FD+@`````PV9F9I!F9I!F9I"X`````#L]`````'TW2&/'
+M2,?!`````$B-!$!(P>`##[<4"&:)%@^W5`@"9HE6`@^V5`@(B%8(#[9$"`F(
+M1@FX`0```//#9F9FD&9FD&9FD$%6055!5%532(/L"(E\)`2]`````$G'Q@``
+M``!)Q\4`````2&/%2(G"2,'@!69"@SPP``^$L0```$&Z`````$V)Z$*`?"@,
+M``^$D0```$C'PP````#\0;P`````28G3D$F)T4ECPDB-!-!(C32#2(U\)`2Y
+M!````/.F#Y?"#Y+`.,)U/$R)QDR)R4C!X05"#[9$`0W_P$*(1`$-0H!\`0P`
+M=!U".D0!#'869@^VP&9"#[9\`0Q$B>)F]_>(5#$-D$'_PDR)VDG'P`````!,
+MB=A(P>`%0@^V1``,1#G0?X'_Q8/]`P^..?___TB#Q`A;74%<05U!7L-F9I!F
+M9I!F9I!!5T%6055!5%532(/L&,9$)!<`0;\`````#[9$)!>)1"0,0;X`````
+M00^VWXE<)!!!#[;6N0````"+="00BWPD#.@`````08G$0;D`````1#L-````
+M``^-2@$``$C'Q0````!)8\%(C01`2,'@`P^W5"@"P>(0#[<$*`G"1#GB#X41
+M`0``NP````!)Q\,`````26/!2(T$0$B--,4`````2<?%`````$G'P@````!F
+MD`^VTTB)T4C!X05F0H,\&0!U4DB+A@````!*B009BX8`````0HE$&0A*#[9$
+M*0Q(P>(#2(T$`@^V7"0708A<@PU*#[9$*0Q(C00"18A\@PY*#[9$*0Q(`<)%
+MB'23#T+^1"D,ZW</MOM)Q\``````2(GY2,'A!4(/MD0!#+H`````0O=T%@2%
+MTG1'2@^V1`$,2(T4_0````!(C00"#[9<)!=!B%R##4H/MD0!#$B-!`)%B'R#
+M#DH/MD0!#$@!PD6(=),/0OY$`0SK$F9F9I!F9I#_PX#[`P^&)?___TECP4B-
+M!$#_1,4,0?_!1#L-``````^,O?[__T'^Q@^$@?[__T'_QT&`_Q\/AF;^___^
+M1"07@'PD%_\/A4C^__](@\086UU!7$%=05Y!7\-F9I!F9I!!5T%6055!5%53
+M2(/L"$B)\TF)U$&]`````(,]``````!U#\<%``````$```#H[OW__TB%VW0#
+MQ@,`0;H`````1#L5`````'T[2,?!`````$C'Q@````!)8\)(C01`2(T4Q0``
+M``!$`VP*#$B%VW0(#[8#`@0RB`-!_\)$.Q4`````?---A>0/A*L```!!N@``
+M``!)8\)(B<)(P>`%9H.X```````/A(T```!!N`````"`N```````='%(Q\4`
+M````_$G'QP````!)B=9)P>8%28G328G126/`2(T$T$B-=(4`3(GGN00```#S
+MI@^7P@^2P#C"=1Q(A=MT#TR)R$C!X`5"#[9$.`V(`T</MFP^#.L90?_`3(G:
+M3(G82,'@!0^V@`````!$.<!_J$'_PD&#^@,/CEO___]!#[;%2(/$"%M=05Q!
+M74%>05_#9F:09I"X`"@``,-F9F:09F:09F:0N-````##9F9FD&9FD&9FD+@(
+M````PV9F9I!F9I!F9I!!5D%505154TF)_$&)]4B)TTF)SDB-J@`4``"Y````
+M`+H`*```2(G8B`A(_\!(_\IU]DR)<R"+%0````"-0@&)!0````"(4T!$B6LX
+MQD-!`$$/MP0D9HE#,$$/MT0D`F:)0S)!BT0D!(E#-$R)=2"(54!$B6TXQD5!
+M`4$/MP0D9HE%,$$/MT0D`F:)13)!BT0D!(E%-`^W0S(](B<``']K/2`G```/
+MC?4````]0"$```^$Z@```#U`(0``9F:09I!_&ST@(0``#X33````/2(A```/
+MA,@```#IUP```#U$(0``#X2X````/40A``!F9I`/C+X````M$"<``(/X`6:0
+M#X>N````Z94````]8"<```^$B@```#U@)P``9F:09I!_,#U`)P``='<]0"<`
+M`&:0?Q`],"<``'1G9F9FD&9FD.MR/40G``!T5V9F9I!F9I#K8CV")P``=$<]
+M@B<``&:0?Q`]@"<``'0W9F9FD&9FD.M"/8"1``!T"SV`E```9I!T'NLP9L=#
+M/("1QD,^!&;'13R`D<9%/@3K&F9FD&9FD&;'0SR`E,9#/@1FQT4\@)3&13X$
+M00^V1"0(B$-"00^V1"0(B$5"N0``!`"Z`````+X"````3(GWZ`````!(B0.Y
+M`"```+H`````O@````!,B??H`````$B)0Q!(@SL`=`5(A<!U"K@`````Z?$`
+M``!(BP-(C8@``@$`2(E+"$B-D````@!(B1-(!0!``@!(B44`2(E-"$B+0Q!(
+MB4400;@`````1#L%`````'U62,?'`````$2+#0````!)8\!(C01`2(T,Q0``
+M``!!BP0D.00Y=2A(Q\8`````BP0Q_\")!#&#?#D,`'02.T0Y#'8,N@````#W
+M=#D,B10Q0?_`13G(?+A(BT,(QX`@@O__`?`#`$B+0PC'@"B"__\!``#H2(M[
+M(+YX````Z`````")PB4`<```/0`@``!V$0^V\DB+>R"Z>````.@`````1(GO
+MZ*SX__](B=_H-/C__[@!````6UU!7$%=05[#9F:09F:04TB)^^@`````2('#
+M`!0``$B)W^@`````N`$```!;PY!(@^P82(E<)`A(B6PD$$B)_4B+G]`(``!(
+M@<,`%```Z`````"`?5$!=0:`>U$!=#M(C9UP`0``2(M]*$B)WN@`````QX5P
+M`0``Z`,``$C'A8`!````````2(FMB`$``$B+?2A(B=[H`````$B+7"0(2(ML
+M)!!(@\08PV9FD&9FD%532(/L"$B)^TB-KP`4``#H`````$B)0RA(B44H2(F;
+MT`@``$B)G=`(``"+@^@(``")A>@(``!(B=_H`````$B)[^@`````2(G?Z```
+M``"Z`````(3`='Y(B>_H`````+H`````A,!T;4B)W^@`````O]`'``#H````
+M`$B)W^@`````2(G?Z`````#'@W`!``#H`P``2,>#@`$```````!(B9N(`0``
+M2(VS<`$``$B+>RCH`````+X`````2(G?Z`````"^`````$B)[^@`````N@$`
+M``")T$B#Q`A;7<.005154TB#[#!(B?NX`````+!MM/]()?__`/](#0``(P!(
+MNO___P#_____2"'02`T````42+K_____`/___T@AT$BZ`````#H```!("=!(
+MNO______`/__2"'02+H``````.\``$@)T$BZ________`/]((=!(N@``````
+M`!8`2`G02+K_________`$@AT$BZ`````````))("=!(B40D"$B#O]@(````
+M=`=(BY_8"```N0````"Z(````$B-1"00B`A(_\!(_\IU]L9$)!0!0;P`````
+M2(UL)!"Y(````$B)ZKX.````2(G?Z`````"%P'5'OX`:!@#H`````+D@````
+M2(GJO@\```!(B=_H`````(/X('4C2(UT)"!(C7PD"+D(````_/.F#Y?`#Y+"
+M.-"X`0```$0/1.!%A.1U$4C'QP````"X`````.@`````00^VQ$B#Q#!;74%<
+MPV9FD//#9F9FD&9F9I!F9I!F9I!54TB#[`A(B?U(B?.Y`````+J`````2(GP
+M9F9FD&9FD(@(2/_`2/_*=?:#O>@(```!#Y1#$XM%.(D#@$L1$`^W13!FB4,$
+M#[=%,F:)0P:+A>@(``"(0W#&0Q(@#[=%,F8]("$/E,)F/2(A#Y3`"="H`71$
+MQD,7`L=#/%)O8VO'0T!E=%)!QT-$240@4\=#2%-$(#+'0TPQ,G@@QT-00V]N
+M=,=#5')O;&QFQT-897+&0UH`Z>(````/MU4RC8+PV/__9H/X`0^6P6:!^D`A
+M#Y3`"<BH`74+9H'Z1"$/A:0```#&0Q<$#[=%,F8M$"=F@_@!=SW'0SQ2;V-K
+MQT-`97120<=#1$E$(#+'0T@W,7@@QT-,4T%3(,=#4$-O;G3'0U1R;VQL9L=#
+M6&5RQD-:`.MI#[=%,F8]0"$/E,)F/40A#Y3`"="H`711QT,\4F]C:\=#0&5T
+M4D''0T1)1"!3QT-(4T0@,L=#3#$T>"#'0U!#;VYTQT-4<F]L;&;'0UAE<L9#
+M6@#K%,9#%PA(C7L\2,?&`````.@`````#[9#%_9C$HA#$(3`=03&0Q"`QT,8
+M2&EG:,=#'%!O:6['0R!T(%1EQT,D8VAN;\=#*&QO9VG'0RQE<RP@QT,P26YC
+M+L9#-`!(@[W@"````'012(N%X`@``$B+0!!(B4-HZPA(BT402(E#:,=#8``@
+M``!(@\0(6UW#9F9FD&9F9I!F9F:09F:0QH?+`````,-F9F:09F9FD$B#[%A(
+MB5PD0$B);"1(3(ED)%!(B?U,BV=X28N$)-`(``"`>#\`#X6K````2(N?@```
+M`$B+?V!$#[:/!P$``$0/MD4`#[9-`@^V50&+=0@/MH?3````B40D.`^VA](`
+M``")1"0P#[:'T0```(E$)"@/MH?0````B40D(`^VA\\```")1"08#[:'S@``
+M`(E$)!`/MH?-````B40D"`^VA\P```")!"1!@^`!2,?'`````+@`````Z```
+M``!(QX6``````````(M5"$B+O9````!(B>[_T^L]2(V?F````$F+?"0H2(G>
+MZ`````#'A9@```#T`0``2,>%J`````````!(B:VP````28M\)"A(B=[H````
+M`$B+7"1`2(ML)$A,BV0D4$B#Q%C#9F9FD&9F9I!!5T%6055!5%532(/L"$F)
+M_4F)]`^WTDAITH@!``!(B=5(`Z\8"0``2(N_T`@``$B!QP`4``!(B6Y@2(EU
+M.$B#?5``=0M(@WU8``^$HP,``+X`````08`,)`%(BT5828E$)'!(BT5028E$
+M)&BZ`````$&`?4,`=B5(BTU(9F9FD`^VPDAKP&A*.XPH2!(```^$A`(``/_"
+M03A50W?CNH#___])BXW0"```#[;"#[:$"$`(```\_W0D2(-]4`!T&P^VP$AI
+MP,@/``!(`X%H"0``2#M%4`^$-0(``/_&_\*`^H%VQKJ"____28N-T`@``)`/
+MML(/MH0(0`@``#S_=!T/ML!(:<#0````2`.!0`D``$@[15@/A.L!``#_QO_"
+M@/J%=LVZ@/___P^VP@^VA#A`"```//]T)$B#?5``=!L/ML!(:<#(#P``2`.'
+M:`D``$@[15`/A)\!``#_QO_"@/J!=L:Z@O___P^VP@^VA#A`"```//]T'0^V
+MP$AIP-````!(`X=`"0``2#M%6`^$70$``/_&_\*`^H5VS4&`?5$!=3](@WU0
+M`'02#[9U>4B+?5"Z`````.@`````2(.]&`$````/A`D"```/MK4%`0``2(N]
+M&`$``+H`````Z`````!(@[T8`0````^$XP$``$R+?5!!O@````!!@']8`'9*
+M28U?2$B)W^@`````2(U(\$B+4PA(B4,(2(D82(E0"$B)`H"Y!P$``/]U%H!Y
+M00!U$$B#N1@!````=0]F9I!F9I!!_\9%.'=8=[I%.'=8#X7;````#[:%!P$`
+M`$&(1"0"0;X`````08!_6``/AL`!``!)C5](2(G?Z`````!(C4CP2(M3"$B)
+M0PA(B1A(B5`(2(D"2(-Y.`!T1TB+43@/MD(".H$'`0``=#=(@[J``````'4M
+M2(.ZB`````!U(P^V@0<!``"(0@)(#[=1,$F+M=`(``"_!P```.@`````9F:0
+M0?_&13AW6'>+Z4(!``!!B'0D`>FB_O__08AT)`%F9I#IE?[__T&(="0!Z8O^
+M__]!B'0D`>F!_O__00^V14&-!()!B(0DS````.EO_?__#[9%>4&(1"0"QH4'
+M`0``_T&^`````$&`?U@`#X;A````28U?2$B)W^@`````2(U(\$B+4PA(B4,(
+M2(D82(E0"$B)`H"Y!P$``/]T3,:!!P$``/](@WDX`'0^2(M1.`^V0@(Z07ET
+M,4B#NH``````=2=(@[J(`````'4=#[9!>8A"`D@/MU$P28NUT`@``+\'````
+MZ`````!!_\9%.'=8=X3K7P^V17E!B$0D`NM400^V14&-!()!B$0D`4&(A"3,
+M````ZRFZ`````$&`?4,`=AU(BTU(#[;"2&O`:$H[C"A($@``=,C_PD$X54-W
+MYT$X54-U!D'&1"0!_T'&1"0"`&:02(N%D````$F)1"0@2(N%F````$F)1"0H
+M2(N%H````$F)1"0P2(N%J````$F)1"0X2(N%L````$F)1"1`2(M%?$F)1"0,
+M2(N%A````$F)1"04BX6,````08E$)!Q(BX6X````28E$)$@/MT5@9D&)1"18
+M#[=%8F9!B40D6DB+17!)B40D4`^V17I!B$0D7/9%1`1U(T&`O>\3````=!%!
+M_HWO$P``08"][Q,```!U"$R)[^@`````2(M%.`^V<`&Z`````$R)[^@`````
+M2`^V14"H`G0/J`1T"Z@!=0=!@`PD`NL%08`D)/T/ME5$T.J#X@1!#[8$)(/@
+M^PG008@$)$R)Y^B8^?__2(/$"%M=05Q!74%>05_#9F:09F:09F:005=!5D%5
+M05154TB#[`A)B?V)]4F)U+X`````NM````!,B>!`B#!(_\!(_\IU]4&);"0(
+M@_T_?@I)@<4`%```@^U`2&/%N@````!)@[S%0`0````/A8,"``!(8\5-B:3%
+M0`0``$V);"1X28F,)(````!-B80DD````+H!````08!]40$/A5,"``!FQT0D
+M!O\`@?V%````?P]F0@^VA"A`"```9HE$)`9F@7PD!O\`#X3^`0``2`^W1"0&
+M28N-&`D``$AIT(@!``#V1`I#!`^$WP$``(M$"D`E`/__`#T``/\`#X7+`0``
+M2(T<"O9#1`0/A$P!``#&@^``````2`^V0T"H`G0RJ`1T+J@!="K&0T(%QD-#
+M!`^V4WE(BW-02(M[2$B)V>@`````Z7T!``#&@^$````!ZW)(#[9#0*@"9I`/
+MA8````"H!'1\J`%T>$R+8TC&0T(#QD-#!$&^`````$&`?"0.`'1!28UL)&!(
+MB>_H`````$B+50A(B44(2(DH2(E0"$B)`H!X0O\/E<)(.=@/E<`/MM*%T'63
+M0?_&00^V1"0.1#GP?\2`N^$````!#X3U````2(G>3(GOZ`````#IY0```$@/
+MMD-`J`(/A-@```"H!`^$T````*@!9F:0#X7%````2(M#2`^V0`V]`````$&`
+M?3X`=BE$#[;@0`^VS4R)X$C3^*@!=`^Z`````(G.3(GOZ`````#_Q4$X;3YW
+MV\9#0P;&0T(%9L>#P```````2(G>3(GOZ`````#K:DR+>TC&1"0%`$&`?PX`
+M=DI-C7=@3(GWZ`````!(B<-)BT8(28E>"$R),TB)0PA(B1B`>T+_=!0/MD-!
+M/"(/E,(\#0^4P`G0J`%U//Y$)`4/MD0D!4$X1PYWN@^W5"0&3(GF3(GOZ```
+M``"Z`0```.LJ2&/%2<>$Q4`$````````N@````#K%$ACQ4G'A,5`!```````
+M`+H`````B=!(@\0(6UU!7$%=05Y!7\-F9I!(@^PH2(D<)$B);"0(3(ED)!!,
+MB6PD&$R)="0@2(G[28GU28G42(MO8$B%[74*2(G7_];I"`$``$B#OX@`````
+M=0I(@[^``````'0+3(GG0?_5Z>D```"`O>``````9I`/A<X```!(BWU(2`^V
+M1PRH$`^%O0```*@(#X6U````3(LW@'U[`'0-2(GJO@8```#H`````$R)JX@`
+M``!,B:.0````2`^V14"H`G0FJ`1T(J@!=![&14(%QD5#!`^V57E(BW502(M]
+M2$B)Z>@`````ZVY(#[9%0*@"=26H!&9FD'0>J`%T&L9%0@/&14,$2(GN3(GW
+MZ`````#K169FD&:02`^V14"H`G0WJ`1F9I!FD'0NJ`%U*L9%0@7&14,&9L>%
+MP```````2(GN3(GWZ`````#K#$R)YT'_U69FD&9FD$B+'"1(BVPD"$R+9"00
+M3(ML)!A,BW0D($B#Q"C#9F:02(/L&$B)'"1(B6PD"$R)9"002(GS2(M'2$R+
+M($B+;F@/MD8D@_@@=$^#^"!_$H7`="*#^`9_.NLO9F9FD&9FD(/X(G0S@_@B
+M?!Z#P("#^`%W'^L42(M'.,=`!`````#&A:H````!ZQ#&A:H````-ZP>X````
+M`.LQ2(-[>`!T$4B-<WA,B>?H`````&9FD&:02(G>3(GGZ`````!(B>__E<``
+M``"X`0```$B+'"1(BVPD"$R+9"002(/$&,-F9F:02(/L.$B)7"0(2(EL)!!,
+MB60D&$R);"0@3(ET)"A,B7PD,$B)^TB)]4R+;WA(BT9(2(DX2(-_8`!U%L:&
+MJ@````)(B??_EL````#I!P8``)!(BT=@]D!$`G05QH:J`````DB)]_^6P```
+M`.GG!0``3(GOZ`````!)B<1(A<!U%<:%J@````)(B>__E<````#IP@4``,>`
+ME`````````!(B6AH2(M#8$F)1"0H2(M#8`^W0#!F08E$)"!!QD0D)(`/MH6H
+M````@_@"#X2D`0``@_@"?PF%P'0CZ8,#``"#^`,/A#0"``"#^`1F9F:09F:0
+M#X3T`0``Z64#``!(BT-@]D!@`0^$Q````/:%J0````)T"$'&1"0XB.L9#[:%
+MJ0```(/@!#P!&<"#X`6#Z'9!B$0D.$B+E9`````/MXV8````0<9$)#D`2(G0
+M2,'H.$&(1"0Z2(G02,'H,$&(1"0[2(G02,'H*$&(1"0\2(G02,'H($&(1"0]
+M2(G02,'H&$&(1"0^2(G02,'H$$&(1"0_2(G02,'H"$&(1"1`08A4)$%!QD0D
+M0@!!QD0D0P")R&;!Z`A!B$0D1$&(3"1%0<9$)$8`0<9$)$<`Z8,```#VA:D`
+M```"=`A!QD0D."CK&0^VA:D```"#X`0\`1G`@^`%@\`J08A$)#A(BY60````
+M#[>-F````$'&1"0Y`$B)T$C!Z!A!B$0D.DB)T$C!Z!!!B$0D.TB)T$C!Z`A!
+MB$0D/$&(5"0]0<9$)#X`B<AFP>@(08A$)#]!B$PD0$'&1"1!`$B+0V!(!>0`
+M``!)B40D4$'&1"0P($&#C"24`````NGY`0``@+V0````$'<%]@,"=0S&A:H`
+M```&Z;4#``!(#[:5D````$B+M9@```!)C7PD..@`````2(M#8$@%Y````$F)
+M1"100<9$)#`@08&,))0``````!``0<9$)"6K]H6I````!@^$D@$``(N%E```
+M`$&)1"0TZ8(!```/MH6I````@^`P/"!U%T'&1"0X&T'&1"0Y`4'&1"0\`.E=
+M`0``0<9$)#@UZ5(!``!(BT-@2`^V0$"H`70$J`1U#,:%J@````;I"P,``$&!
+MC"24```````@``^WA9P```!F.X62````=$L/MH6;````@_A"=#^#^$)_#H/X
+M0'0U9F9FD&9FD.L@/;````!T"3WL````9I!U$`^WA9P```!FB862````ZPS&
+MA:H````&Z:0"``!!QD0D.+`/MX60````08A$)#D/MX62````08A$)#H/MX64
+M````08A$)#L/MX66````08A$)#P/MX68````08A$)#T/MH6:````08A$)#X/
+MMH6;````08A$)#]F#[:%D0```$&(1"1`9@^VA9,```!!B$0D068/MH65````
+M08A$)$)F#[:%EP```$&(1"1#9@^VA9D```!!B$0D1/:%J0````9T*@^WA9P`
+M``#!X`E!B40D-$&#C"24````!.L09F9FD,:%J@````;IU@$``$V-="182<>$
+M)*``````````#[:%J0```*@&#X2@`0``NP````"H`G0+08.,))0````(ZPE!
+M@XPDE````!!(@[VP`````'02]H6I`````70)2(N=L````.LJ2(.]N`````!T
+M($F+M2`*``"Z`````$B)[_^5N````(7`=`=)BYT@"@``2(7;=#5,B>?H````
+M`+X`````3(GWZ`````!(BW,(BQ-,B??H`````$B-0P1(@\,0@S@`=.7I#`$`
+M`$R)[^@`````2(D$)$B%P'4,QH6J````!NG\````2(L4)$B+0A!)B40D2$F)
+M5"1XN0````"Z``(``(@(2/_`2/_*=?;VA:D````$#X2/````0?:$))8````@
+M=!A)BWPD2$&+5"0T2(NUH````.@`````ZVQ!]H0DE@```!!T84V+?"1(2(.]
+ML`````!T$O:%J0````%U"4B+G;````#K($F+M2`*``"Z`0```$B)[_^5N```
+M`(7`=`=)BYT@"@``2(MS"(L33(G_Z`````"+`TD!QTB-0P1(@\,0@S@`=."^
+M`````$R)]^@`````08M4)#1(BP0D2(MP&$R)]^@`````ZPE!@XPDE`````%,
+MB>9,B>_H`````.L43(GF3(GOZ`````!(B>__E<````!(BUPD"$B+;"003(MD
+M)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!F9I!(@^QH2(E<)#A(B6PD0$R)
+M9"1(3(EL)%!,B70D6$R)?"1@2(G[28GT2(E,)#!!B=5$B$0D+\=$)!3_____
+MB=#!X`EFB40D$DR+?V!-A?]T"8"_RP````!T"8M$)!3I#P,``$F+5TA(B50D
+M"$R+=WAFQX?(````$"=,B??H`````$B)Q8M$)!1(A>T/A.$"``!,B??H````
+M`$B)1"0@2(7`=11(B>Y,B??H`````(M$)!3INP(``$F+MM`(``#&1C\!2(G:
+MOP4```#H`````$&`3T0"2(M38+XA````2(M\)`CH`````$B-15A(B40D&(!\
+M)"\`=!#'A90````*````QD4X*.LGQX64````$@```,9%."I(BU0D($B+>A!(
+M#[=4)!)(BW0D,.@`````2(M#8/9`8`%T?H!\)"\!&<"#X`*#Z'B(13C&13D`
+M3(G@2,'H.(A%.DR)X$C!Z#"(13M,B>!(P>@HB$4\3(G@2,'H((A%/4R)X$C!
+MZ!B(13Y,B>!(P>@0B$4_3(G@2,'H"(A%0$2(94'&14(`QD5#`$2)Z&;!Z`B(
+M141$B&U%QD5&`,9%1P#K3(!\)"\!&<"#X`*#P"B(13C&13D`3(G@2,'H&(A%
+M.DR)X$C!Z!"(13M,B>!(P>@(B$4\1(AE/<9%/@!$B>AFP>@(B$4_1(AM0,9%
+M00!(B>_H`````$B+0V`/MT`P9HE%(,9%)(!(B5TH2(M4)"!(BT(02(E%2`^W
+M1"02B44T2(E5>,9%,"!(BT-@2`7D````2(E%4$C'A:``````````O@````!(
+MBWPD&.@`````BU4T2(M$)"!(BW`82(M\)!CH`````,:#RP````%(B>Y,B??H
+M`````$B%VP^$GP```$B#>V``=%2`N\L`````=$MF@;O(````E@!U$DB+4V!(
+MBWI(OB$```#H`````&;_B\@```"_T`<``.@`````3(GWZ`````!(A=MT5$B#
+M>V``=`F`N\L`````=;5(A=MT/TB#>V``=#AF@[O(`````'0N@'TD`'4HQT0D
+M%`````"`?"0O`'092`^W5"022(M$)"!(BW`02(M\)##H`````$B#?7@`=`Q(
+MC75X3(GWZ`````!(B>Y,B??H`````$F+MM`(``#&1C\`2(G:OP8```#H````
+M`$&`9T3]BT0D%$B+7"0X2(ML)$!,BV0D2$R+;"103(MT)%A,BWPD8$B#Q&C#
+M9F9FD&9F9I!F9F:02(/L&$B)7"0(3(ED)!!)B?Q!B'0D3T`/MMZ)WN@`````
+M28'$`!0``(G>3(GGZ`````"X`0```$B+7"0(3(MD)!!(@\08PV9F9I!F9I!F
+M9I!(@^P(Z``````/ML!(@\0(PV9F9I!F9F:09F9FD&9FD+@`````PV9F9I!F
+M9I!F9I"Y`````+J`````2(NWT`@```^WPH"\,$`(``#_#Y7`#[;``<'_PF:!
+M^H4`=N1(B[_0"```2(''`!0``+J`````#[?"@+PX0`@``/\/E<`/ML`!P?_"
+M9H'ZA0!VY(G(PY")\HGPP.@$/`EV!8/`5^L(B?#`Z`2#P#"(!XG0@^`/@_@)
+M?@R)T(/@#X/`5^L*9I")T(/@#X/`,(A'`<-F9F:02(/L$$B)'"1,B60D"$B)
+M^T&)]$R)X`^V].BB____00^V]$B#PP)(B=_HDO___TB+'"1,BV0D"$B#Q!##
+M9F9FD%532(G50;D`````N0````"Z``$``$B)Z(@(2/_`2/_*=?:Y@````$R+
+MA]`(```/M\%F0@^VE`!`"```9H'Z_P`/A&(!``!$B<A!_\$Y\`^%5`$``&:!
+M^8$`#X?%````#[?"2&G`R`\``$B)PDD#D&@)``!(@WH0`'1GN8````!,B<8/
+MM\%F#[:$,$`(``!F/?\`=!</M\!(:<#(#P``2`.&:`D``$@[0A!T,?_!9H'Y
+M@0!VSKL`````@'I:`'8QO@$````/ML,/MDP0<(GPT^`)12#_PSA:6G?JZQ2(
+M30+KT\9%`O](BT((#[9`#8E%(,9%``$/MD)9B$4!2(M">$B)101(BX*(````
+M2(E%#$B+@I````!(B444BX*@````B44<ZWI(BX?0"```#[?22&G2T````$B)
+MTT@#F$`)``#&10+_QD4``DB+A]`(``!(BX!`"0``#[9$`CN(10%(BX.(````
+M#[9`#8E%(,9%!'8/MW,\2(U]!>A$_O__QD4,9`^W<SY(C7T-Z#/^___&11QR
+M#[9S.4B-?1WHXOW__[@`````Z9H!``#_P6:!^84`#X9R_O__2(N_T`@``$B!
+MQP`4``"Y@`````^WP68/MI0X0`@``&:!^O\`#X11`0``1(G(0?_!.?`/A4,!
+M``!F@?F!``^'P@````^WPDAIP,@/``!(B<)(`Y=H"0``2(-Z$`!T9+F`````
+M#[?!9@^VA#A`"```9CW_`'07#[?`2&G`R`\``$@#AV@)``!(.T(0=#'_P6:!
+M^8$`=LZ[`````(!Z6@!V,;X!````#[;##[9,$'")\-/@"44@_\,X6EIWZNL4
+MB$T"Z]/&10+_2(M""`^V0`V)12#&10`!#[9"68A%`4B+0GA(B44$2(N"B```
+M`$B)10Q(BX*0````2(E%%(N"H````(E%'.ML#[?22&G2T````$B)TT@#GT`)
+M``#&10+_QD4``DB+AT`)```/MD0".XA%`4B+@X@````/MD`-B44@QD4$=@^W
+M<SQ(C7T%Z+S\___&10QD#[=S/DB-?0WHJ_S__\9%''(/MG,Y2(U]'>A:_/__
+MN`````#K%69FD/_!9H'YA0`/AHO^__^X_____UM=PV9F9I!F9F:09F:055-(
+MB=5!N0````"Y`````+JD#```2(GHB`A(_\!(_\IU]KF`````3(N'T`@```^W
+MP69"#[:4`$`(``!F@?K_``^$"@,``$2)R$'_P3GP#X7\`@``9H'Y@0`/AVD"
+M```/M\)(:<#(#P``20.`:`D``$F)P$B#>!``=&ZZ@````$B+C]`(```/M\)F
+M#[:$"$`(``!F/?\`=!</M\!(:<#(#P``2`.!:`D``$D[0!!T-/_"9H'Z@0!V
+MSKH`````08!X6@!V,[X!````#[;"0@^V3`!PB?#3X`E%(/_"03A06G?HZQ2(
+M50+KT,9%`O](BT`(#[9`#8E%(,9%``%!#[9`68A%`4F+0'A(B44$28N`B```
+M`$B)10Q)BX"0````2(E%%$&+@*````")11R[`````$&`N,``````#X8$`@``
+M#[;#2(T,@$B-3,T`2(T$0$C!X`1,`<!(C;#`````#[96"(A1)`^V5@F(425(
+MBX#0````#[8`@^`/B$$F#[9!)(/X`W0R@_@#?PZ#^`(/A.$```#IS0```(/X
+M!&9F9I!F9I!T28/X$@^$BP```&9FD&:0Z:X````/MLM(C01)2,'@!$J+A`#0
+M````#[90`8/B!P^VTL'B"$B-#(D/MD`"`=!KP`J)1,THZ8<````/MM-(C012
+M2,'@!$J+A`#0````@'@"`'4.2(T$DL=$Q2@`````ZV`/ML-(C12`2(T$0$C!
+MX`1*BX0`T`````^V0`*#Z!2)1-4HZSP/MLM(C01)2,'@!$J+A`#0````#[90
+M`L'B"$B-#(D/MD`#`=!KP`J)1,THZP\/ML-(C02`QT3%*``````/ML-(C12`
+M2(U4U0!(C7(L2(T$0$C!X`1,`<!(C8C8````2(N`V````$B)0BQ(BT$(2(E&
+M"$B+01!(B4802(M!&$B)1AC_PT$XF,`````/AWC^___K>DB+A]`(```/M])(
+M:=+0````2(G32`.80`D``,9%`O_&10`"2(N'T`@``$B+@$`)```/MD0".XA%
+M`4B+@X@````/MD`-B44@QD4$=@^W<SQ(C7T%Z%#Y___&10QD#[=S/DB-?0WH
+M/_G__\9%''(/MG,Y2(U]'>CN^/__N`````#I/@,``&9F9I#_P6:!^84`#X;*
+M_/__2(N_T`@``$B!QP`4``"Y@`````^WP68/MI0X0`@``&:!^O\`#X3Q`@``
+M1(G(0?_!.?`/A>,"``!F@?F!``^'90(```^WPDAIP,@/``!)B<!,`X=H"0``
+M28-X$`!T9[J`````#[?"9@^VA#A`"```9CW_`'07#[?`2&G`R`\``$@#AV@)
+M``!).T`0=#3_PF:!^H$`=LZZ`````$&`>%H`=C.^`0````^VPD(/MDP`<(GP
+MT^`)12#_PD$X4%IWZ.L4B%4"Z]#&10+_28M`"`^V0`V)12#&10`!00^V0%F(
+M10%)BT!X2(E%!$F+@(@```!(B44,28N`D````$B)111!BX"@````B44<NP``
+M``!!@+C```````^&^0$```^VPTB-#(!(C4S-`$B-!$!(P>`$3`'`2(VPP```
+M``^V5@B(420/ME8)B%$E2(N`T`````^V`(/@#XA!)@^V022#^`-T,X/X`W\3
+M@_@"#X3D````9F:09I#IRP```(/X!'1,@_@29F:0#X2+````Z;4```!F9I!F
+MD`^VRTB-!$E(P>`$2HN$`-`````/ME`!@^('#[;2P>((2(T,B0^V0`(!T&O`
+M"HE$S2CIB0````^VTTB-!%)(P>`$2HN$`-````"`>`(`=0Y(C022QT3%*```
+M``#K8@^VPTB-%(!(C01`2,'@!$J+A`#0````#[9``H/H%(E$U2CK/@^VRTB-
+M!$E(P>`$2HN$`-`````/ME`"P>((2(T,B0^V0`,!T&O`"HE$S2CK$6:0#[;#
+M2(T$@,=$Q2@`````#[;#2(T4@$B-5-4`2(UR+$B-!$!(P>`$3`'`2(V(V```
+M`$B+@-@```!(B4(L2(M!"$B)1@A(BT$02(E&$$B+01A(B488_\-!.)C`````
+M#X=U_O__ZVP/M])(:=+0````2(G32`.?0`D``,9%`O_&10`"2(N'0`D```^V
+M1`([B$4!2(N#B`````^V0`V)12#&101V#[=S/$B-?07H(?;__\9%#&0/MW,^
+M2(U]#>@0]O__QD4<<@^V<SE(C7T=Z+_U__^X`````.L2_\%F@?F%``^&Z_S_
+M_[C_____6UW#9F:005154T&)]$B)U4&X`````+D`````NJ0,``!(B>AF9I"(
+M"$C_P$C_RG7VN8````!(B[?0"```#[?!9@^VE#!`"```9H'Z_P`/A"D#``!$
+MB<!!_\!$.>`/A1H#``!F@?F!``^'AP(```^WPDAIP,@/``!)B<!,`X9H"0``
+M28-X$`!T:KJ`````2(GQ#[?"9@^VA`A`"```9CW_`'07#[?`2&G`R`\``$@#
+M@6@)``!).T`0=#3_PF:!^H$`=LZZ`````$&`>%H`=C.^`0````^VPD(/MDP`
+M<(GPT^`)12#_PD$X4%IWZ.L4B%4"Z]#&10+_28M`"`^V0`V)12#&10`!00^V
+M0%F(10%)BT!X2(E%!$F+@(@```!(B44,28N`D````$B)111!BX"@````B44<
+M1(EE)+L`````08"XP``````/AB8"```/ML-(C0R`2(U,S0!(C01`2,'@!$P!
+MP$B-L,`````/ME8(B)&H````#[96"8B1J0```$B+@-`````/M@"#X`^(@:H`
+M```/MH&H````@_@#="Z#^`-_#H/X`@^$[0```.G6````@_@$9F:0=$R#^!(/
+MA)0```!F9I!FD.F[````#[;+2(T$24C!X`1*BX0`T`````^V4`&#X@</MM+!
+MX@A(C0R)#[9``@'0:\`*B83-K````.F4````#[;32(T$4DC!X`1*BX0`T```
+M`(!X`@!U$4B-!)+'A,6L`````````.MJ#[;#2(T4@$B-!$!(P>`$2HN$`-``
+M```/MD`"@^@4B835K````.M##[;+2(T$24C!X`1*BX0`T`````^V4`+!X@A(
+MC0R)#[9``P'0:\`*B83-K````.L3D`^VPTB-!(#'A,6L``````````^VPTB-
+M%(!(C535`$B-LK````!(C01`2,'@!$P!P$B-B-@```!(BX#8````2(F"L```
+M`$B+00A(B48(2(M!$$B)1A!(BT$82(E&&/_#03B8P`````^'6O[__^M^2(N'
+MT`@```^WTDAITM````!(B=-(`YA`"0``QD4"_\9%``)(BX?0"```2(N`0`D`
+M``^V1`([B$4!2(N#B`````^V0`V)12#&101V#[=S/$B-?07HFO+__\9%#&0/
+MMW,^2(U]#>B)\O__QD4<<@^V<SE(C7T=Z#CR__]$B64DN`````#I80,``/_!
+M9H'YA0`/AJS\__](B[_0"```2(''`!0``+F`````#[?!9@^VE#A`"```9H'Z
+M_P`/A!@#``!$B<!!_\!$.>`/A0D#``!F@?F!``^'AP(```^WPDAIP,@/``!)
+MB<!,`X=H"0``28-X$`!T9[J`````#[?"9@^VA#A`"```9CW_`'07#[?`2&G`
+MR`\``$@#AV@)``!).T`0=#3_PF:!^H$`=LZZ`````$&`>%H`=C.^`0````^V
+MPD(/MDP`<(GPT^`)12#_PD$X4%IWZ.L4B%4"Z]#&10+_28M`"`^V0`V)12#&
+M10`!00^V0%F(10%)BT!X2(E%!$F+@(@```!(B44,28N`D````$B)111!BX"@
+M````B44<1(EE)+L`````08"XP``````/AAL"```/ML-(C0R`2(U,S0!(C01`
+M2,'@!$P!P$B-L,`````/ME8(B)&H````#[96"8B1J0```$B+@-`````/M@"#
+MX`^(@:H````/MH&H````@_@#=#&#^`-_#H/X`@^$\````.G9````@_@$9F:0
+M9F:0=$R#^!(/A)0```!F9I!FD.F[````#[;+2(T$24C!X`1*BX0`T`````^V
+M4`&#X@</MM+!X@A(C0R)#[9``@'0:\`*B83-K````.F4````#[;32(T$4DC!
+MX`1*BX0`T````(!X`@!U$4B-!)+'A,6L`````````.MJ#[;#2(T4@$B-!$!(
+MP>`$2HN$`-`````/MD`"@^@4B835K````.M##[;+2(T$24C!X`1*BX0`T```
+M``^V4`+!X@A(C0R)#[9``P'0:\`*B83-K````.L3D`^VPTB-!(#'A,6L````
+M``````^VPTB-%(!(C535`$B-LK````!(C01`2,'@!$P!P$B-B-@```!(BX#8
+M````2(F"L````$B+00A(B48(2(M!$$B)1A!(BT$82(E&&/_#03B8P`````^'
+M5_[__^MP#[?22&G2T````$B)TT@#GT`)``#&10+_QD4``DB+AT`)```/MD0"
+M.XA%`4B+@X@````/MD`-B44@QD4$=@^W<SQ(C7T%Z$CO___&10QD#[=S/DB-
+M?0WH-^___\9%''(/MG,Y2(U]'>CF[O__1(EE)+@`````ZQ+_P6:!^84`#X;$
+M_/__N/____];74%<PV9F9I!)B?!,BT]XN0````"Z*````$B)\(@(2/_`2/_*
+M=?9)B[$@"@``N0````"Z``(``$B)\(@(2/_`2/_*=?9(C58VN0````"-00%(
+MF`^V1#@@B`)(_\)(8\$/MD0X((@"2/_"@\$"@_DG?MQ(C584N0````"-00%(
+MF`^V1`<,B`)(_\)(8\$/MD0'#(@"2/_"@\$"@_D3?MQ(C58NN0````"-00%(
+MF`^V1#A(B`)(_\)(8\$/MD0X2(@"2/_"@\$"@_D'?MQ)B7`82(M'4$C_P$F)
+M`$B#?V``=5?V!P%T4DB#?V@`#Y7`387)#Y7"#[;`A<)T%$B+1VA(#[9`6T*`
+MO`A`"```_W4I2(-_<``/E<!-A<D/E<(/ML"%PG1!2(M'<$@/MT!`0H"\"$`(
+M``#_="U(BT=X9H%X,A$G=1?V!P%U$D@/MD<!#[:``````$&(0`SK#P^V1P%!
+MB$`,ZP5!QD`,_P^V1P)!B$`-#[9'7$&(0`Y!QD`2$$'&0!$0#[8'@^`!`<"^
+M_?___T$B<`H)QD&(<`H/M@>#X`'!X`5!#[9("(/AWPG!08A("$@/MT=82,'H
+M!X/@`<'@!H/AOPG!08A("$@/MT=82,'H`H/@`4$/ME`)@^+^"<)!B%`)2`^W
+M1UI(P>@#@^`!P>`'@^%_"<%!B$@(2`^W1UI(T>B#X`$!P(/B_0G"08A0"4@/
+MMT=82,'H`X/@`<'@!H/BOPG"08A0"4@/MT=:2,'H!(/@`<'@!X/B?PG"08A0
+M"8/)$$&(2`@/M@?0Z(/@`8/F_@G&08AP"@^V!X/@!(/F^PG&08AP"F9!QT`4
+M`!`/MH?,````08A`(,-F9F:09F:09F:09F:0QT($`````,<"`````+@`````
+MPV9F9I!F9I!F9I!F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)
+M?"0P2(G[08GU0;______2(MO8$R+=WA(A>UT%8"_RP````!U#/8'`G0/9F9F
+MD&9FD$2)^.D-`0``3(GW9F:09I#H`````$F)Q$2)^$V%Y`^$\0```$'&1"0X
+MX4'&1"0Y`4&`_0(/E<"#P!I!B$0D.D'&1"0D@`^W13!F08E$)"!)B5PD*$''
+M1"0T`````$G'1"1(`````$G'A"2@`````````$R)YDR)]^@`````QH/+````
+M`6;'@\@```#Z`$B%VW1<2(-[8`!T569F9I!F9I!F@;O(````E@!U%4B+4V!(
+MBWI(OB$```#H`````&9FD&;_B\@```"_T`<``.@`````3(GWZ`````!(A=MT
+M$$B#>V``=`F`N\L`````=;)F@[O(`````'0/08!\)"0`N`````!$#T3X3(GF
+M3(GWZ`````!$B?A(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0X
+MPV9F9I!F9F:02(/L2$B)7"082(EL)"!,B60D*$R);"0P3(ET)#A,B7PD0$B)
+M^T&)]D&______TR+9V!,BV]X387D=`F`O\L`````=`Q$B?CI9`0``&9F9I!,
+MB>_H`````$B)Q42)^$B%[0^$200``/8#`@^%`0$``$&`_A1W#$$/MO9K]@QF
+M9I#K&F9!#[;&9FG`B0!FP>@(P.@$#[;P@<;P````QD4XX<9%.0'&13H<0(AU
+M.\9%)(!!#[=$)#!FB44@2(E=*,=%-`````!(QT5(`````$C'A:``````````
+M2(GN3(GOZ`````#&@\L````!9L>#R````,0)2(7;=%9(@WM@`'1/D&:!N\@`
+M``"6`'452(M38$B+>DB^(0```.@`````9F:09O^+R````+_0!P``Z`````!,
+MB>_H`````$B%VW002(-[8`!T"8"[RP````!ULF:#N\@`````#X1$`P``@'TD
+M``^%.@,``$&_`````.DO`P``3(GOZ`````!(B40D$$B%P`^$&0,``$B-15A(
+MB40D"$B+1"002(M`$$B)!"3&13@:QD4Y",9%.AK&13L`QD4\$,9%/0!(BT0D
+M$$B)17C&122`00^W1"0P9HE%($B)72A(BT0D$$B+0!!(B45(QT4T$````$B+
+M0V!(!>0```!(B450QD4P($C'A:``````````O@````!(BWPD".@`````BU4T
+M2(M$)!!(BW`82(M\)`CH`````$B)[DR)[^@`````QH/+`````6;'@\@```#Z
+M`$B%VW122(-[8`!T2V:!N\@```"6`'422(M38$B+>DB^(0```.@`````9O^+
+MR````+_0!P``Z`````!,B>_H`````$B%VW002(-[8`!T"8"[RP````!UM6:#
+MN\@`````=`:`?20`=!)(C70D$$R)[^@`````Z>8!``!(B>Y,B>_H`````$R)
+M[^@`````2(G%2(7`=15(C70D$$R)[^@`````1(GXZ<8!``!(C5!82(E4)`A(
+MBSPD2(/'!$B+%"1(#[9"`P^V1!`$B$($QD<!"L9'`@"Y`````+H$````2(L$
+M)(@(2/_`2/_*=?9%A/9U!H!G`_SK-T$/MO9I]E@"``"`3P,#B?'!Z1B(3P2)
+M\L'J$(A7!8GPP>@(B$<&0(AW!XA/"(A7"8A'"D"(=PM(BT0D$$B)17C&13@5
+M#[8'P/@']]"#P!&(13G&13H`QD4[`,9%/!#&13T`@"<_QD4D@$$/MT0D,&:)
+M12!(B5TH2(M$)!!(BT`02(E%2,=%-!````!(BT-@2`7D````2(E%4,9%,"!(
+MQX6@`````````+X`````2(M\)`CH`````(M5-$B+1"002(MP&$B+?"0(Z```
+M``!(B>Y,B>_H`````,:#RP````%FQX/(````^@!(A=MT4DB#>V``=$MF@;O(
+M````E@!U$DB+4V!(BWI(OB$```#H`````&;_B\@```"_T`<``.@`````3(GO
+MZ`````!(A=MT$$B#>V``=`F`N\L`````=;5F@[O(`````'0-@'TD`+@`````
+M1`]$^$B-="003(GOZ`````!F9I!F9I!(B>Y,B>_H`````$2)^&:02(M<)!A(
+MBVPD($R+9"0H3(ML)#!,BW0D.$R+?"1`2(/$2,-F9F:09F:09F:09F:02(/L
+M*$B)7"0(2(EL)!!,B60D&$R);"0@2(G[08GUN/____],BV=X2(MO8/9'6`@/
+MA(,```!)B[0DT`@``$B)^K\%````Z`````"`340"2(M]2$B)ZKXA````Z```
+M``"`?7L`=!B_T`<``.@`````3(GGZ`````"`?7L`=>A%A>UT#F:#2UH09H--
+M8A#K#&:09H-C6N]F@V5B[TF+M"30"```2(G:OP8```#H`````(!E1/VX````
+M`$B+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-F9F:09F9FD&9F9I!F9I!(@^P8
+M2(E<)`A(B6PD$(GU2(M/>$B+7V#V!P%T.TB#>U``=!%`#[;6#[9S>4B+>U#H
+M`````$B#NQ@!````="U`#[;5#[:S!0$``$B+NQ@!``#H`````.L40`^VUDB+
+M0S@/MG`!2(G/Z`````!(BUPD"$B+;"002(/$&,-F9I!FD$B#[#A(B5PD"$B)
+M;"003(ED)!A,B6PD($R)="0H3(E\)#!(B?M!B?9!B=?'1"0$_____TR+9V!,
+MBV]X387D=`F`O\L`````=`F+1"0$Z1,!``!,B>_H`````$B)Q8M$)`1(A>T/
+MA/L```#&13CAQD4Y`46$]G0-08#_`1G`]]"#P`?K"T&`_P$9P/?0@\`-B$4Z
+MQD4D@$$/MT0D,&:)12!(B5THQT4T`````$C'14@`````2,>%H`````````!(
+MB>Y,B>_H`````,:#RP````%FQX/(````]`%(A=MT5$B#>V``=$UF@;O(````
+ME@!U$DB+4V!(BWI(OB$```#H`````&;_B\@```"_T`<``.@`````3(GOZ```
+M``!(A=MT$DB#>V``=`N`N\L`````9I!ULV:#N\@`````=!J`?20`=11(BT-@
+M#[=`8F:)0UK'1"0$`````$B)[DR)[^@`````BT0D!$B+7"0(2(ML)!!,BV0D
+M&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9F9I!(@^P(#[8&@_@)#X>"````
+MB<#_),4`````9F9FD&9FD$B+?@C&A^\3````Z`````"X`````.M@#[96"+X`
+M````Z"O^___K4`^V5@B^`0```.@;_O__ZT`/MG8(Z`````#K-0^V5@D/MG8(
+MZ*'\__^0ZR4/MG8(Z`````!F9I!FD.L5#[9V".@`````N`````#K!;C_____
+M2(/$",-F9F:02(M'8$B%P'132,=`.`````"`2$0$2,='8`````!(QT=P````
+M`$C'1V@`````@W\(/W\52(M7>$AC1PA(QX3"0`0```````##2(M7>$AC1PA(
+MQX3"0`(```````#SPV:02(M'8$B%P'132,=`.`````"`8$3[2,='8`````!(
+MQT=P`````$C'1V@`````@W\(/W\52(M7>$AC1PA(QX3"0`0```````##2(M7
+M>$AC1PA(QX3"0`(```````#SPV:04TB)^^@`````2(N[T`@``$B!QP`4``#H
+M`````%O#9I!32(G[Z`````!(B[O0"```2(''`!0``.@`````6\-FD$%50515
+M4TB#[%A)B?Q,BZ_0"```28'%`!0``$B#/P!T%DB+-TB![@```@!(B3=(BW\@
+MZ`````!)@WPD$`!T$4F+="0028M\)"#H`````&:028-\)!@`=`])BW0D&$F+
+M?"0@Z`````!!#[=\)#Q(C40D5DB)1"0X2(U$)%1(B40D,$B-1"122(E$)"A(
+MC40D4$B)1"0@2(U$)$Y(B40D&$B-1"1-2(E$)!!(C40D3$B)1"0(2(U$)$I(
+MB00D3(U,)$E,C40D1DB-3"1%2(U4)$1(C70D0^@`````28.\)!@)````="M)
+MB[0D&`D``$F-O"3X"```Z`````!)B[48"0``28V]^`@``.@`````9F:028.\
+M)$`)````="A)B[0D0`D``$F-O"0@"0``Z`````!)B[5`"0``28V](`D``.@`
+M````28.\)&@)````="A)B[0D:`D``$F-O"1("0``Z`````!)B[5H"0``28V]
+M2`D``.@`````28.\).`*````="])B[0DX`H``$F-O"3`"@``Z`````!)B[7@
+M"@``28V]P`H``.@`````9F9FD&9FD+T`````0#IL)$-S.V9F9I")Z`^VV$F+
+MM-PP"P``28V\)!`+``#H`````$F+M-TP"P``28V]$`L``.@`````_\5`.FPD
+M0W+)28.\),`/````="Y)B[0DP`\``$F-O"2@#P``Z`````!)B[7`#P``28V]
+MH`\``.@`````9F:09F:028.\)/@/````="A)B[0D^`\``$F-O"38#P``Z```
+M``!)B[7X#P``28V]V`\``.@`````28.\)&@0````="A)B[0D:!```$F-O"1(
+M$```Z`````!)B[5H$```28V]2!```.@`````28.\))`)````="])B[0DD`D`
+M`$F-O"1P"0``Z`````!)B[60"0``28V]<`D``.@`````9F9FD&9FD$F#O"1H
+M"@```'0H28NT)&@*``!)C;PD2`H``.@`````28NU:`H``$F-O4@*``#H````
+M`$F#O"3X"0```'0H28NT)/@)``!)C;PDV`D``.@`````28NU^`D``$F-O=@)
+M``#H`````$F#O"0@"@```'0O28NT)"`*``!)C;PD``H``.@`````28NU(`H`
+M`$F-O0`*``#H`````&9F9I!F9I!)@[PDN`H```!T*$F+M"2X"@``28V\))@*
+M``#H`````$F+M;@*``!)C;V8"@``Z`````!)@[PD"`L```!T*$F+M"0("P``
+M28V\).@*``#H`````$F+M0@+``!)C;WH"@``Z`````!)@[PD4`\```!T+TF+
+MM"10#P``28V\)#`/``#H`````$F+M5`/``!)C;TP#P``Z`````!F9F:09F:0
+M28.\)(@/````="A)B[0DB`\``$F-O"1H#P``Z`````!)B[6(#P``28V]:`\`
+M`.@`````28.\)#`0````="A)B[0D,!```$F-O"00$```Z`````!)B[4P$```
+M28V]$!```.@`````28.\))`*````="])B[0DD`H``$F-O"1P"@``Z`````!)
+MB[60"@``28V]<`H``.@`````9F9FD&9FD$F#O"20$````'0W28N4))@0``!)
+MB[0DD!```$F-O"1P$```Z`````!)BY68$```28NUD!```$F-O7`0``#H````
+M`$F#O"3`$````'0W28N4),@0``!)B[0DP!```$F-O"2@$```Z`````!)BY7(
+M$```28NUP!```$F-O:`0``#H`````$F#O"3P$````'0W28N4)/@0``!)B[0D
+M\!```$F-O"30$```Z`````!)BY7X$```28NU\!```$F-O=`0``#H`````$F#
+MO"10$0```'0W28N4)%@1``!)B[0D4!$``$F-O"0P$0``Z`````!)BY58$0``
+M28NU4!$``$F-O3`1``#H`````$F#O"0@$0```'0]28N4)"@1``!)B[0D(!$`
+M`$F-O"0`$0``Z`````!)BY4H$0``28NU(!$``$F-O0`1``#H`````&9FD&9F
+MD$F#O"2`$0```'0W28N4)(@1``!)B[0D@!$``$F-O"1@$0``Z`````!)BY6(
+M$0``28NU@!$``$F-O6`1``#H`````$F#O"2P$0```'0W28N4)+@1``!)B[0D
+ML!$``$F-O"20$0``Z`````!)BY6X$0``28NUL!$``$F-O9`1``#H`````$B#
+MQ%A;74%<05W#D$B#[!A(B5PD"$R)9"002(G[Z`````!,C:,`%```3(GGZ```
+M``!(B=_H`````+_0!P``Z`````!(B=_H`````$B)W^@`````O@$```!(B=_H
+M`````+X!````3(GGZ`````!(BUPD"$R+9"002(/$&,-(@^P(2,?'`````.@`
+M````N`````!(@\0(PY"0D)"0D,8'",9'`1)`@/X!&<#WT(/@!(A'`L9'`P#&
+M1P0`QD<%`,9'!@#&1P<`QD<(`,9'"0#&1PH`QD<+`(#Z`1G`@^`@B$<,QD<-
+M`,9'#@#&1P\`QD<0`,9'$0#&1Q(`QD<3`+@4````PV9F9I!F9I!F9I!(@^PX
+M2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G_2(GU08G608G-Z```
+M``!)B<2X`````$V%Y`^$HP```$F+7"0000^VU4$/MO9(C7L$Z`````!!B<7&
+M`P#&0P$`QD,"`,9#`P!(B>Y,B?_H`````+D`````NA````!(C44XB`A(_\!(
+M_\IU]D&-103&13@5QD4Y$8A%/,9%/0!(C5U81`^VZ$2);33'A90`````````
+M28M$)!!(B45(3(EE>+X`````2(G?Z`````!)BW0D&$2)ZDB)W^@`````N`$`
+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
+MBT<(B4@42(M'"(E(&$B+1PB)2`1(BP>+@%0!``")!0````")P8'A_@#__TB+
+M!XF(5`$``,-F9F:09F9FD&9FD&9FD%532(/L"(GS2(LO@_X#=AB-!-W@____
+MBX0HH`$``(D%`````(G!ZQB-!-T`````B<"+A"B``0``B04`````B<&#X?Z#
+M^P-V$(T$W>#___^)C"B@`0``ZQ"-!-T`````B<")C"B``0``A-(/A*````"#
+M^P-V&(T$G?#___^+A"C@`0``B04`````B<'K&(T$G0````")P(N$*-`!``")
+M!0````")P8/)`H/[`W80C02=\/___XF,*.`!``#K$(T$G0````")P(F,*-`!
+M``"-!)T`````C7#PB<)F9F:09F:0@_L#=A&+A"[@`0``B04`````B<'K#XN$
+M*M`!``")!0````")P?;!`G76Z94```"0@_L#=A2-!-W@____QX0H4`(`````
+M``#K%(T$W0````")P,>$*%`"````````OQ`G``#H`````(/[`W88C03=X/__
+M_XN$*%0"``")!0````")P>L8C03=`````(G`BX0H5`(``(D%`````(G!@\D!
+M@_L#=A"-!-W@____B8PH5`(``.L0C03=`````(G`B8PH5`(``$B#Q`A;7<-F
+M9I!FD$%6055!5%5328G\08GU08G62(LONP````"`?SX`#X1.`@``1(GJ#[;"
+MB=E(T_BH`0^$*P(``(/[`W88C03=X/___XN$**0!``")!0````")PNL8C03=
+M`````(G`BX0HA`$``(D%`````(G"@^+^@_L#=A"-!-W@____B90HI`$``.L0
+MC03=`````(G`B90HA`$``+\0)P``Z`````!%A/8/A)H```"#^P-V&(T$G?#_
+M__^+A"C@`0``B04`````B<+K&(T$G0````")P(N$*-`!``")!0````")PH/*
+M`H/[`W80C02=\/___XF4*.`!``#K$(T$G0````")P(F4*-`!``"-!)T`````
+MC7#PB<&0@_L#=A&+A"[@`0``B04`````B<+K#XN$*=`!``")!0````")PO;"
+M`G76Z94```"0@_L#=A2-!-W@____QX0H4`(```````#K%(T$W0````")P,>$
+M*%`"````````OQ`G``#H`````(/[`W88C03=X/___XN$*%0"``")!0````")
+MPNL8C03=`````(G`BX0H5`(``(D%`````(G"@\H!@_L#=A"-!-W@____B90H
+M5`(``.L0C03=`````(G`B90H5`(``(/[`W87C03=X/___\>$**`!```!````
+MZQ=F9I"-!-T`````B<#'A"B``0```0```(/[`W88C03=X/___XN$**0!``")
+M!0````")PNL8C03=`````(G`BX0HA`$``(D%`````(G"@\H!@_L#=A"-!-W@
+M____B90HI`$``.L0C03=`````(G`B90HA`$``/_#00^V1"0^.=@/A[+]__];
+M74%<05U!7L-F9I!F9I")\4B+!XN`!`$``(D%`````$&)P`^W1SQF/8!D#Y3"
+M9CV`D0^4P`G0J`%U"&:!?SR`E'42#[;)@\$(N`$```#3X$$)P.L10`^VSH/!
+M#+@!````T^!!"<!(BP=$B8`$`0``PV9F9I!F9F:09F:09F:0B?%(BP>+@`0!
+M``")!0````!!B<`/MT<\9CV`9`^4PF8]@)$/E,`)T*@!=0AF@7\\@)1U$@^V
+MR8/!"+C^____T\!!(<#K$4`/MLZ#P0RX_O___]/`02'`2(L'1(F`!`$``,-F
+M9F:09F9FD&9FD&9FD$B#[!A(B5PD"$R)9"0028G\0`^VWHG>Z`````"_$"<`
+M`.@`````B=Y,B>?H`````$B+7"0(3(MD)!!(@\08PY")\4"`_O]T>$"`_A]W
+M-HN7&`$``(D5`````+@!````T^")P??0(=")AQ@!``"+AU@!``")!0`````A
+MR'1#B8=8`0``PXN7'`$``(D5`````$`/MLZ#Z2"X`0```-/@B<'WT"'0B8<<
+M`0``BX=@`0``B04`````(<AT!HF'8`$``//#9F9FD&9F9I!F9I!F9I!!5%53
+M2(G5B?-,BR=`@/X#=AY(C03=`````"7X!P``0L>$(``"```,`0``ZQQF9I!(
+MC03=`````"7X!P``0L>$(``"```,`0``OQ`G``#H`````(#[`W8X2(T,W0``
+M``"!X?@'```/ME4#P>(8#[9%`L'@$`G"#[9%`<'@"`G"#[9%``G"0HF4(00"
+M``#K-I!(C0S=`````('A^`<```^V50/!XA@/MD4"P>`0"<(/MD4!P>`("<(/
+MMD4`"<)"B90A!`(``(#[`W8;2(T$W0`````E^`<``$+'A"```@``$`$``.L9
+M2(T$W0`````E^`<``$+'A"```@``$`$``+\0)P``Z`````"`^P-V-TB-#-T`
+M````@>'X!P``#[95!\'B&`^V10;!X!`)P@^V107!X`@)P@^V100)PD*)E"$$
+M`@``ZS5(C0S=`````('A^`<```^V50?!XA@/MD4&P>`0"<(/MD4%P>`("<(/
+MMD4$"<)"B90A!`(``%M=05S#D)!32(/L8$B)^P^W?SQ(C40D7DB)1"0X2(U$
+M)%Q(B40D,$B-1"1:2(E$)"A(C40D6$B)1"0@2(U$)%9(B40D&$B-1"152(E$
+M)!!(C40D5$B)1"0(2(U$)%)(B00D3(U,)%%,C40D3DB-3"1-2(U4)$Q(C70D
+M2^@`````#[94)$L/MG0D3$B-?"1$Z`````!(#[94)$M(:=*(`0``2(MS($B-
+MN_@(``"Y`0```.@`````2`^V5"1-2&G2T````$B+<R!(C;L@"0``N0$```#H
+M`````$@/ME0D3$AITL@/``!(BW,@2(V[2`D``+D!````Z`````!(#[=4)%9(
+MP>(#2(MS($B-NW`)``"Y`0```.@`````2`^W5"1.2&G2J````$B+<R!(C;M(
+M"@``N0$```#H`````$@/ME0D44@/MT0D3D@/K]!(C1122,'B`DB+<R!(C;O8
+M"0``N0$```#H`````$B+<R!(C;L`"@``N0$```"Z``(``.@`````#[9,)$M(
+MBW,@2(V[$`L``+H`"```Z`````!(#[94)%1(P>(%2(MS($B-NY@*``"Y`0``
+M`.@`````2`^V5"152(T4DDC!X@5(BW,@2(V[P`H``+D!````Z`````!(#[=4
+M)%)(C1222,'B`TB+<R!(C;OH"@``N0$```#H`````$@/MU0D5D@!TDB+<R!(
+MC;LP#P``N0$```#H`````$@/ME0D2T@!TDB+<R!(C;MH#P``N0$```#H````
+M`$@/ME0D34@!TDB+<R!(C;N@#P``N0$```#H`````$@/ME0D3$@!TDB+<R!(
+MC;O8#P``N0$```#H`````$@/ME,^2`'22(MS($B-NQ`0``"Y`0```.@`````
+M2`^W5"182(T44DC!X@1(BW,@2(V[<`H``+D!````Z`````"+5"1$2(MS($B-
+MNT@0``"Y`0```.@`````2`^W5"162,'B!DB+<R!(C;MP$```0;@!````N4``
+M``#H`````$B+<R!(C;N@$```0;@!````N0`!``"Z`!D``.@`````2`^W5"16
+M2&G2L`0``$B+<R!(C;O0$```0;@!````N8````#H`````$@/MU0D7$C!X@)(
+MBW,@2(V[`!$``$&X`0```+D$````Z`````!(#[=4)%Y(P>("2(MS($B-NS`1
+M``!!N`$```"Y!````.@`````#[94)%3!X@M(BW,@2(V[8!$``$&X`0```+D(
+M````Z`````!(#[=4)%)(:=*,`0``2(MS($B!PY`1``!!N`$```"Y"````$B)
+MW^@`````N`````!(@\1@6\-F9I!FD$%6055!5%532(/L8$F)_$&^`````,9'
+M40#&1U``QD=/`$C'A_@3````````QH?Q$P```+D`````NJ`!``!(C8=`$@``
+MB`A(_\!(_\IU]DF-A"3H````28F$).@```!)B80D\````$F-A"3X````28F$
+M)/@```!)B80D``$``$F-A"0(`0``28F$)`@!``!)B80D$`$``$F-A"08`0``
+M28F$)!@!``!)B80D(`$``$F-A"0H`0``28F$)"@!``!)B80D,`$``$F-A"1(
+M`0``28F$)$@!``!)B80D4`$``$F-A"18`0``28F$)%@!``!)B80D8`$``$F-
+MA"0X`0``28F$)#@!``!)B80D0`$``$$/MWPD/$B-1"1>2(E$)#A(C40D7$B)
+M1"0P2(U$)%I(B40D*$B-1"182(E$)"!(C40D5DB)1"082(U$)%5(B40D$$B-
+M1"142(E$)`A(C40D4DB)!"1,C4PD44R-1"1.2(U,)$U(C50D3$B-="1+Z```
+M```/MD0D2T&(1"1&#[9$)$Q!B$0D1P^V1"1-08B$).$````/MT0D5F9!B40D
+M6(M$)%QF08F$)#P2```/MT0D7O_(9D&)A"0^$@``00^W1"0\/8"1``!T"SV`
+ME```#X4C"0``0<9$)$T$0<9$)$,$0<9$)$Y`0<9$)$P`0<:$)-X````)0<9$
+M)$0`28V\)/@(``#H`````$F)A"08"0``N0````!(#[94)$M(:=*(`0``ZPB(
+M"$C_RDC_P$B%TG7S28V\)"`)``#H`````$F)A"1`"0``N0````!(#[94)$U(
+M:=+0````2(72=`J("$C_P$C_RG7V28V\)$@)``#H`````$F)A"1H"0``N0``
+M``!(#[94)$Q(:=+(#P``2(72=`J("$C_P$C_RG7V28V\)'`)``#H`````$F)
+MA"20"0``N0````!(#[=4)%9(P>(#=`J("$C_P$C_RG7V28V\)``*``#H````
+M`$F)A"0@"@``28V\)-@)``#H`````$F)A"3X"0``2(G#28V\)$@*``#H````
+M`$F)A"1H"@``2(G"O0````!F.VPD3G-$28V,)`@!``!(B5I@#[9$)%&(0EA(
+MBT$(2(E1"$B)"DB)0@A(B1!(#[9$)%%(C01`2(T<@TB!PJ@```#_Q68[;"1.
+M<L1)C;PD<`H``.@`````28F$))`*``!(B<*]`````&8[;"18<RM)C8PD&`$`
+M`,9"$`!(BT$(2(E1"$B)"DB)0@A(B1!(@\(P_\5F.VPD6'+=28V\))@*``#H
+M`````$F)A"2X"@``2(G"O0````"`?"14`'0K28V,)"@!``!(BT$(2(E1"$B)
+M"DB)0@A(B1!(@\(@_\5F#[9$)%1F.>AWW4F-O"3`"@``Z`````!)B80DX`H`
+M`$B)PKT`````@'PD50!T+DF-C"1(`0``2(M!"$B)40A(B0I(B4((2(D02('"
+MH````/_%9@^V1"159CGH=]I)C;PDZ`H``.@`````28F$)`@+``!(B<*]````
+M`&8[;"12<R=)C8PD.`$``$B+00A(B5$(2(D*2(E""$B)$$B#PBC_Q68[;"12
+M<N&]`````(!\)$L`=#]-C:PD6`$```^WW4F-O"00"P``Z`````!)B83<,`L`
+M`$F+50A)B44(3(DH2(E0"$B)`O_%9@^V1"1+9CGH=\E)C;PD,`\``.@`````
+M28F$)%`/``!)B80D6`\```^W1"169D&)A"1B#P``#[?P28V\)%@/``#H````
+M`$F-O"1H#P``Z`````!)B80DB`\``$F)A"20#P``9@^V1"1+9D&)A"2:#P``
+M#[?P28V\))`/``#H`````$F-O"2@#P``Z`````!)B80DP`\``$F)A"3(#P``
+M9@^V1"1-9D&)A"32#P``#[?P28V\),@/``#H`````$F-O"38#P``Z`````!)
+MB80D^`\``$F)A"0`$```9@^V1"1,9D&)A"0*$```#[?P28V\)``0``#H````
+M`$F-O"00$```Z`````!)B80D,!```$F)A"0X$```9D$/MD0D/F9!B80D0A``
+M`$$/MG0D/DF-O"0X$```Z`````!)C;PD2!```.@`````28F$)&@0``!(#[94
+M)$Q(C132B=;!Y@>!QF!7``"Y`````(GR2(72=`J("$C_P$C_RG7V28N$)&@0
+M``"),$F+E"1H$```#[9$)$R(0@0/ME0D3$F+O"1H$```Z`````"]`````$&`
+M?"0^`'1]#[?%2&G`J````$P!X$R-L*`!``!!B&X(0<9&"0!,B:"@`0``0<9&
+M#@!!QD98`$'&1B@`0<>&H`````````!(C9#0`0``28E6,$F)5CA(C9#H`0``
+M28E62$F)5E!(!0`"``!)B49@28E&:$'&1@H"_\5F00^V1"0^9CGH=X-!QD0D
+M3`"]``````^WQ4+&A"#&"```___%9H/]`W;LO0````"`?"1+``^$D`````^W
+MS4F+E"08"0``2&G!B`$``,9$$$,!28N4)!@)``#&1!!"`$F+E"08"0``QD00
+M>/])BY0D&`D``,9$$&K_28N4)!@)``!FQX00P```````2<>$S$`$````````
+M2(G!20.,)!@)``!(C5$@2(E1($D#A"08"0``2(/`($B)0`C_Q68/MD0D2V8Y
+MZ`^'</___V9!QX0DW```````O0````!F9I!F9I`/M\5"QH0@0`@``/__Q6:!
+M_84`=NN]`````(!\)$P`#X3"````#[?528N$)&@)``!(:=+(#P``QD0"6`!)
+MBX0D:`D``,9$`ED`28N$)&@)``!(QT0"$`````!(B=%)`XPD:`D``$B-01A(
+MB4$82(G020.$)&@)``!(@\`82(E`"$B)T4D#C"1H"0``2(U!*$B)02A(B=!)
+M`X0D:`D``$B#P"A(B4`(28N$)&@)``!,B70""$B)T4D#C"1H"0``2(U!2$B)
+M04A)`Y0D:`D``$B#PDA(B5((_\5F#[9$)$QF.>@/AS[___]!QH0DWP```("]
+M`````(!\)$T`#X2'````#[?528N$)$`)``!(:=+0````9L=$`DX$`$F+A"1`
+M"0``QD0"0@!)BX0D0`D``,9$`D3_28N$)$`)``#&1`)0_TB)T4D#C"1`"0``
+M2(U!*$B)02A(B=!)`X0D0`D``$B#P"A(B4`(28N$)$`)``!,B;0"B````/_%
+M9@^V1"1-9CGH#X=Y____0<:$).````""28VT))@0``!)C;PD<!```.@`````
+M28F$))`0``!)C;0DR!```$F-O"2@$```Z`````!)B80DP!```$F-M"3X$```
+M28V\)-`0``#H`````$F)A"3P$```28VT)"@1``!)C;PD`!$``.@`````28F$
+M)"`1``!)C;0D6!$``$F-O"0P$0``Z`````!)B80D4!$``$F-M"2($0``28V\
+M)&`1``#H`````$F)A"2`$0``38NT)(@1``!)B<6]`````(!\)%0`=$A)C9PD
+M*`$``$B)W^@`````2(G"3(EH$$R)<!A(BT,(2(E3"$B)&DB)0@A(B1!)@<4`
+M"```28'&``@``/_%9@^V1"149CGH=\!)C;0DN!$``$F-O"20$0``Z`````!)
+MB80DL!$``$V+M"2X$0``28G%O0````!F.VPD4G-$28V<)#@!``!(B=_H````
+M`$B)PDR):!!,B7`82(M#"$B)4PA(B1I(B4((2(D028'%C`$``$F!QHP!``#_
+MQ68[;"12<L1(@\1@6UU!7$%=05[#9F9FD&9F9I!F9I!F9I!!5T%6055!5%53
+M2(/L"$F)_,9$)`<`2`^V1"0'0@^VE"#&"```@/K_#X2;````#[;"2&G`J```
+M`$Z-M""@`0``0;T`````08!^#@!V?$F-;F!-B?=(B>_H`````$B)PTB+10A(
+MB5T(2(DK2(E#"$B)&$B#>S@`=!I(BU,X28NT)-`(``"_!0```.@`````@$M$
+M`DB)VKX"````3(GWZ`````"`>WL`=!A,B>?H`````+\!````Z`````"`>WL`
+M=>A!_\5%.&\.=XO^1"0'@'PD!P,/AC[___],B>?H`````$B#Q`A;74%<05U!
+M7D%?PY!(@^P(2#E^*'5F#[9..(#Y"`^5P(#Y*`^5P@^VP(7"=&B`^:AT8X#Y
+MB'1>@/D*#Y7`@/DJ#Y7"#[;`A<)T2X#YJG1&@/F*=$%(C9?H````2(N'Z```
+M`$B)<`A(B09(B58(2(FWZ````.L?9F:09F:02(V'Z````$B+4`A(B7`(2(D&
+M2(E6"$B),N@`````2(/$",-F9F:09F:09F:09F:02(/L".@`````2(/$",-F
+MD$%455-(B?-(B=5!O`````!F@7XXX0%U"P^V1CJ#Z!$\`78R2(L72(NR&`D`
+M`$R-IGB&`0!F@7L@A0!W&4@/MT,@2`^VA!!`"```2&G`B`$``$R-)`;&100%
+M@&4%_H!E`-^Z`````&:!>SCA`742#[9#.O_(/`&X`0````]&T&:0B=#!X`</
+MME4`@^)_"<*(50`/MH.6````@^`!P>`&@^*_"<*(50!F@7LXX0%U$@^V0SJ#
+MZ!$\`7<'9HE-".L<D/:#E@````%T#DR)Y^@`````9HE%".L$9HE-"`^W10B(
+M0R5F@7LXX0%U+@^V0SK_R#P!=PP/ME,[ZS%F9I!F9I!F@7LXX0%U$`^V0SJ#
+MZ!&Z#P```#P!=A.Z`````$F#?"18`'0&00^V5"1Y@^(/#[9%`(/@\`G0B$4`
+M6UU!7,.02(/L"$B+/^@`````2(/$",-F9F:09F9FD&9F9I!F9I!,BP</MX<X
+M$@``_\!FB8<X$@``9CN'/!(``'()9L>'.!(`````2`^WCS@2``!(BY<@$0``
+MBP:)!(H/MX<X$@``08F`+`$``,-F9F:09F9FD$&)T4&X`````+H$````2(G(
+M1(@`2/_`2/_*=?6)\H'B_P\``(L!)0#P__\)T(D!#[97#<'B#"7_#_#_"=")
+M`4@/MD<*2-'H@^`!@_@!&<"#X`+_P,'@'8L1@>+___\?"<*)$0^V00.#R!"#
+MX/>(00/V1PH!=!1$B<J#XG_!XA2+`27__P_X"=")`?/#9F9FD$B#[#A(B5PD
+M"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?Q(B?-)B==!O@`````/MD8X
+M/`@/E,(\*`^4P`G0J`%U#(!^.*AT!H!^.(AU#X.+E`````KK+69FD&9FD`^V
+M1C@\"@^4PCPJ#Y3`"="H`74,@'XXJG0&@'XXBG4'@XN4`````F:!>SCA`74A
+M#[9#.H/H$3P!=Q:#BY0````(N`````#I104``&9FD&:0BT,X)?___P`]X0$0
+M``^%(`$``&:!>R"%``^'H0```$@/MT,@0H"\($`(``#_#X2-````9H-[(']W
+M)$H/MH0@0`@``$F+E"08"0``2&G`B`$``$B+1!!(1`^V:`CK:&:!>R"!`'<I
+M2`^W0R!*#[:$($`(``!)BY0D:`D``$AIP,@/``!(BT00"$0/MF@(ZS=(#[=#
+M($H/MH0@0`@``$F+E"1`"0``2&G`T````$B+A!"(````1`^V:`CK"V9FD&:0
+M0;W_____1(GJ#[;"2@^VK"#&"```2&GMJ````$J-K"6@`0``28N4)&@)``!(
+MC8(XN`\`9H%[((4`=QE(#[=#($H/MH0@0`@``$AIP,@/``!(C00"]D!=$`^%
+M@@$``,9#)`1!QP<`````N`$```#I#00``&:!>R"%``^'H0```$@/MT,@0H"\
+M($`(``#_#X2-````9H-[(']W)DH/MH0@0`@``$F+E"08"0``2&G`B`$``$B+
+M1!!(1`^V:`CK:&:09H%[(($`=RE(#[=#($H/MH0@0`@``$F+E"1H"0``2&G`
+MR`\``$B+1!`(1`^V:`CK-4@/MT,@2@^VA"!`"```28N4)$`)``!(:<#0````
+M2(N$$(@```!$#[9H".L)9F:00;W_____NO\```!F@7L@A0!W#T@/MT,@9D(/
+MMI0@0`@``$2)Z0^VP4H/MJP@Q@@``$AI[:@```!*C:PEH`$```^WPDAIP(@!
+M``!)B<9-`[0D&`D``&:!>SCA`74*#[9#.O_(/`%V*6:!^O\`=`=!]D9#!'4;
+MQD,D!D''!P````"X`0```.G6`@``9F:09F:020^V1D"H`70GJ`1T(T$/MD0D
+M1$$Z1"1.<A9!QP<!````N`$```#II0(``&9FD&:0387V#X37````20^V1D"H
+M`0^$R@```*@$#X3"````2(G>3(GWZ`````"$P'45QD,D!$''!P````"X`0``
+M`.E>`@``08!^>Q]V$4''!P$```"X`0```.E&`@``]H.6`````70&]D4,`70;
+M]H.6`````74&]D4,`74,@'LD@70&]D4,"'0A00^V]4R)Y^@`````A,!T$4''
+M!P$```"X`0```.G[`0``]H.6`````0^$;@$``/9%#`$/A&0!``!,B??H````
+M`&:#^!\/AE(!``!!QP<!````N`$```#IP0$``)#V10H"="N+0S@E____`#WA
+M`1``=!Q!#[9&>T$Z1GIR$4''!P$```"X`0```.F/`0``BT,X)?___P`]X0$0
+M``^$_````$D/MT9B2(G"2-'J@^(!N0$```"`>SCA#X7?````@'LY`0^%U0``
+M``^V0SJ#Z`:#^`D/AZT```")P/\DQ0`````/MLFZ`0```$B)WDR)Y^@`````
+MA,`/A:$```!!QP<"````N`$```#I$`$```^VR;H`````2(G>3(GGZ`````"$
+MP'5Y0<<'`@```+@!````Z>@````/MM*Y`0```$B)WDR)Y^@`````A,!U44''
+M!P(```"X`0```.G`````#[;2N0````!(B=Y,B>?H`````(3`=2E!QP<"````
+MN`$```#IF````,9#)`1!QP<`````N`$```#I@P```&9FD$F-O"18#P``Z```
+M``"$P'0/0<<'`0```+@!````ZV&0@'LXX751@'LY`75+@'LZ#W5%@'L]`74_
+M9@^V<SS!Y@AF#[9#.P'&#[?V3(GGZ`````!(.4-H#Y7"2(7`#Y3`"="H`702
+MQD,D!$''!P````"X`0```.L)N`````!F9F:02(M<)`A(BVPD$$R+9"083(ML
+M)"!,BW0D*$R+?"0P2(/$.,-F9F:09F:09F:09F:0N0````"Z#0```$B)\&9F
+MD(@(2/_`2/_*=?8/MD<YB`8/MD<ZB$8!#[9'.XA&`@^V1SR(1@,/MD<]B$8$
+M#[9'/HA&!0^V1S^(1@;VAY8````$=",/MD=`B$8(#[9'08A&"0^V1T*(1@H/
+MMD=#B$8+#[9'1(A&#+@!````PV9F9I"Z`````$&Y`````&9FD&:0N0<```!)
+M8\%$#[8$,&9FD`'21(G`T_BH`705]\(````!=1V!\G<GVP#K%69FD&:0B=`U
+M=R?;`/?"`````0]%T/_)><Q!_\%!@_D'?K.)T,'H$(@'B=#!Z`B(1P&(5P+#
+M05=!5D%505154TB#[%A)B?Y(B?5(BX?P$```2(E$)"!(QT0D$`````!!O```
+M``!(QT0D"`````!!O0````!FQT8R_P](C50D/.@`````A,!T"8M$)#SID`P`
+M`(M%."7___\`/>$!$``/A1(!``"_B!,``.@`````9H%]((4`#X><````2`^W
+M12!"@+PP0`@``/\/A(@```!F@WT@?W<B2@^VA#!`"```28N6&`D``$AIP(@!
+M``!(BT002`^V0`CK9&:!?2"!`'<G2`^W12!*#[:$,$`(``!)BY9H"0``2&G`
+MR`\``$B+1!`(#[9`".LU2`^W12!*#[:$,$`(``!)BY9`"0``2&G`T````$B+
+MA!"(````#[9`".L+9F:09F:0N/____\/ML!*#[:$,,8(``!(:="H````2HV,
+M,J`!``!(B4PD&$F+EF@)``!,C:(XN`\`9H%]((4`#X>8`0``2`^W12!*#[:$
+M,$`(``!(:<#(#P``3(TD`NEZ`0``9F:0N?\```!F@7T@A0!W#T@/MT4@9D(/
+MMHPP0`@``&:!?3CA`74/#[9%.H/H$3P!#X;?````9H%]((4`#X>6````2`^W
+M12!"@+PP0`@``/\/A((```!F@WT@?W<B2@^VA#!`"```28N6&`D``$AIP(@!
+M``!(BT002`^V0`CK7F:!?2"!`'<G2`^W12!*#[:$,$`(``!)BY9H"0``2&G`
+MR`\``$B+1!`(#[9`".LO2`^W12!*#[:$,$`(``!)BY9`"0``2&G`T````$B+
+MA!"(````#[9`".L%N/____\/ML!*#[:$,,8(``!(:=BH````2HV$,Z`!``!(
+MB40D&`^WP4AIP(@!``!)`X88"0``2(E$)!#K(@^WP4AIP-````!)`X9`"0``
+M2(E$)`A(BY"(````2(E4)!AF@7TXX0%U&P^V13J-4.^`^@$/E\+_R#P!#Y?`
+M#[;2A=!T(&:!^?\`=`M(BTPD$/9!0P1U#L9%)`:X`````.GT"0``2(UT)#!,
+MB??H`````$&)QV:)13),B??H`````$B)P[@"````2(7;#X3'"0``2(F=@```
+M`$$/M\](:<FP!```2`-,)"!(B<A)*X;P$```2(G&20.V^!```$B#QB!(BT0D
+M,(EP($B)\DC!ZB!(BT0D,(E0)$B+<QA(BT0D,(EP*$B)\DC!ZB!(BT0D,(E0
+M+$B+1"0P9D2)>`B^`````+JP!```2(G(9F9FD$"(,$C_P$C_RG7U9H%]..$!
+M=6H/MD4Z@^@1/`%W7TB-3"1`2(M$)#`/ME`(2(GN2(M\)!#H`````$$/M\=(
+M:<"P!```2`-$)"!)*X;P$```2(G&20.V^!```$B!QB`$``!(BT0D,(EP$$B)
+M\DC!ZB!(BT0D,(E0%.F8`0``2(M$)!CV0`H!=2V+13@E____`#WA`1``#X0%
+M`0``2(M4)!!(#[9"0*@!#X3S````J`0/A.L```#VA98````@=`](C70D0$B)
+M[^@`````ZQM(C4PD0$B+1"0P#[90"$B)[DB+?"00Z`````!!#[?'2&G`L`0`
+M`$@#1"0@22N&\!```$B)QDD#MO@0``!(@<8@!```2(M$)#")<!!(B?)(P>H@
+M2(M$)#")4!1F@7TXX0%U#P^V13J#Z!$\`0^&UP```$B+3"002`^V04"H`@^$
+MQ0```*@$#X2]````J`$/A+4```!!#[?'2&G`L`0``$@#1"0@22N&\!```$B)
+MQDD#MO@0``!(BT0D,(EP&$B)\DC!ZB!(BT0D,(E0'.M[9F:09F:02(M$)!CV
+M0`H"=&I!#[?'2&G`L`0``$@#1"0@2(G"22N6\!```$B)UDD#MO@0``!(BU0D
+M,(ER&$B)\4C!Z2!(BU0D,(E*'$DKAO`0``!(B<9)`[;X$```2('&(`0``$B+
+M1"0PB7`02(GR2,'J($B+1"0PB5`42(M$)#"`2`$"9@^V55E(BT0D,&:)4`*_
+M`````(!]60!T+8GX2(T$0$C!X`)(B<9(`W,02(M-8$B+%`A(B1:+1`@(B48(
+M_\</MD59.?AWTXM5-$B+1"0PB5`,9H%]..$!=5$/MD4Z@^@1/`%W1D$/M\](
+MBU0D,$B)[DB+?"08Z`````!(C4PD0$$/M]=(:=*P!```2`-4)"!(B>Y(BWPD
+M&.@`````2(M4)!B`8@S^Z6,%``!(BTPD&/9!"@(/A-T$``!(BT0D,,9`!OY(
+MBT0D,(!@!_Y(@WPD$``/A.T```!(BUPD$$@/MD-`J`(/A-L```"H!`^$TP``
+M`*@!#X3+````00^WSTB+5"0P2(GN2(M\)!CH`````/:%E@````%T$$B+1"0P
+M#[=`",'@`XA$)$%(C4PD0$$/M]=(:=*P!```2`-4)"!(B>Y(BWPD&.@`````
+M]H66`````70+2(M$)!B`2`P!ZPE(BU0D&(!B#/Y!#[?/2&G)L`0``$B+7"0@
+MQ@09H4B+1"00#[:0X@```(/B#P^V1!D!@^#P"="(1!D!2(M4)!`/MT(P_\`/
+MMM#!X@@/ML0)T&:)1!D"3(ML)!!)@<7,````Z:X#``!F@7TXX0$/A7@"```/
+MMD4Z@_@/=`Z#^!`/A.(```#IBP,``&8/ME4\P>((9@^V13L!PDB+1"0PQD`$
+M#4B+1"0P@&`%_H!,)"\(2(MT)#`/MD4E00^VCMX```#3X&8)1@A(BTPD,`^V
+M00&#X!^#R""(00%!#[?/2&G)L`0``$B+7"0@2(TT&4B+13Y(B88X!```#[;"
+MP>`(#[;6"<)FB9091`0```^V13V(A!E"!```Q@:12(M4)!`/MT(P_\`/MM#!
+MX@@/ML0)T&:)1!D"2(M<)!`/MI/B````@^(/2(M<)"`/MD09`8/@\`G0B$09
+M`4R+;"0028'%S````.FN`@``2(M4)#`/MD4E00^VCMX```#3X&8)0@A!#[?7
+M2&G2L`0``$B+1"0@Q@0"@6;'1`("__]!#[:,)+L```"#X0](BUPD(`^V1!H!
+M@^#P"<B(1!H!2(-]2`!U#L9%)"&X`````.D#!```]D4[`70]2(-]4`!T-DR+
+M;5!!#[??2&G;L`0``$F+OF@0``!,B>[H`````(/@#TB+3"0@#[94"P&#XO`)
+MPHA4"P'K`TV)Y;X$````2(M52`^V0@$]DP```'=VB<#_),4`````@\8$ZVB#
+MQ@3K8X/&".M>@\8(9F:0ZU:#Q@CK48/&".M,@\8(D.M&@\8(ZT&#QACK/(/&
+M&)#K-H/&#.LQ@\8(ZRP/MG($C32U"````.L?@<:(````D.L6@\8DZQ&#QB3K
+M#(/&))#K!H'&B````(U6`\'J`DB+1"0PB%`$2(M,)#!FP>H(@^(!#[9!!8/@
+M_@G0B$$%00^W_TAI_[`$``!(BUPD($B-O!\@!```B?)(BW5(Z`````#I*@$`
+M``^V13B#Z`0]JP```'<_B<#_),4`````#[9%0,'@"`^V54&-#!"#^0UW&+@!
+M````2-/@J=@^``!T"4B+1"0P@$@!!$B+1"0P@$@!`>L)2(M$)#"`8`'[2(M$
+M)##&0`0-2(M$)#"`8`7^2(M4)#`/MD4E00^VCMX```#3X&8)0@A(BT0D,(!@
+M`1]!#[??2&G;L`0``$B+1"0@QH0#(`0```9,BVPD$$F!Q<P```!,C20#28V\
+M)"$$``!,B>[H`````$F-O"0E!```3(GNZ`````!(BT4X28F$)$0$``!(BT5`
+M28F$)$P$``!!Q@0DD4B+3"00#[:1X@```(/B#TB+3"0@#[9$"P&#X/`)T(A$
+M"P%(BU0D$`^W0C#_P`^VT,'B"`^VQ`G09HE$"P)-A>T/A)(```!!#[?'2&G`
+ML`0``$F+50!(BTPD($B)5`@$ZW=(BUPD&/9#"@%T;$$/M\](BU0D,$B)[DB)
+MW^@`````]H66`````7002(M$)#`/MT`(P>`#B$0D04B-3"1`00^WUTAITK`$
+M``!(`U0D($B)[DB+?"08Z`````#VA98````!=`M(BT0D&(!(#`'K"4B+5"08
+M@&(,_D$/M]=)BX:0"0``2(DLT$2)^F;!Z@4/M])$B?F#X1^X`0```$C3X$$)
+MA):8"0``BT4X)?___P`]X0$0`'4O00^W]TB-3"0LN@````!(BWPD&.@`````
+MBT0D+"7___\?#0```$")1"0LZ:$```!F@7TXX0%U-@^V13J#Z!$\`7<K2(MT
+M)`A,B??H`````$B+3"0(#[914$$/M_=(C4PD+$B+?"08Z`````#K8TB+="00
+M3(GWZ`````!(BUPD$`^V4VI!#[?W2(U,)"Q(BWPD&.@`````2`^V0T"H`G0Q
+MJ`1T+:@!9I!T)XM$)"PE____'PT```!@B40D+`^V4VJ#XG_!XA0E__\/^`G0
+MB40D+$B-="0L3(GWZ`````"X`P```$B#Q%A;74%<05U!7D%?PV9FD&9FD$B#
+M["!(B5PD"$B);"003(ED)!B)\DB+'XGP9L'H!0^WZ(M$JUQ!B=1!@^0?1(GA
+M2-/XJ`%U.@^W]DB-3"0$N@````#H`````(%,)`0```#@2(UT)`2`9@/W2(G?
+MZ`````"X`0```$2)X4C3X`E$JUQ(BUPD"$B+;"003(MD)!A(@\0@PV9F9I!F
+M9F:09F9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD($F)_$B)]4B+1G!,BV@H
+M9H%^((4`#X>N````2`^W1B"`O#A`"```_P^$FP```&:#?B!_=RE(#[:$.$`(
+M``!(BY<8"0``2&G`B`$``$B+1!!(2`^V0`A(!<`(``#K<&:!?B"!`'<N2`^W
+M1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(2`^V0`A(!<`(``#K.D@/
+MMT8@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B````$@/MD`(2`7`"```
+MZPEF9F:0N+\)``!)#[9<!`9(:=NH````2HV<(Z`!``!(@WUX`'0/2(MU>$R)
+MY^@`````9F:02(GN3(GGZ`````!,B>Y(B=]!_Y6@````2(M<)`A(BVPD$$R+
+M9"083(ML)"!(@\0HPV9F9I!F9F:09F9FD&9FD$B#[#A(B5PD"$B);"003(ED
+M)!A,B6PD($R)="0H3(E\)#!)B?9)B?U,BS](C5](2(G?Z`````!)B<1)@^PX
+M3(G_Z`````!(B<5)C40D.$B+4PA(B4,(28E<)#A(B5`(2(D"N`$```!(A>UT
+M>4B-?5C&13CAQD4Y`<9%.A"`33L!28N&H````$B)16A(BT5P3(EP*$F-AI``
+M``!(B450QD4ES&9!#[9$)%MFB44@28M%`$B)12C'1320````3(EU2$C'A:``
+M````````O@````#H`````$B)[DR)_^@`````N`````!(BUPD"$B+;"003(MD
+M)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!F9F:02(/L*$B)'"1(B6PD"$R)
+M9"003(EL)!A,B70D($B)\TB)_4R+;TA-BV4`#[=.,HG.9L'N!0^WQD&+1(1<
+M@^$?2-/XJ`$/A68#``!)BQ0D#[?&C02%``,``(F"<`$``$F+!"2+@'0!``")
+M!0````")PL9#)"&+0S@E____`#WA`0\`=2*^`````$B)W^@`````N@````!(
+MB=Y,B>?H`````.D+`P``B=`/MTLR@^$?2-/XJ`%T&[X!````2(G?Z`````!,
+MB>?H`````&9FD&9FD`^VA>````"#^`0/A]`"``")P/\DQ0````#&A>`````!
+MN@$```!(B=Y,B>_H`````.FK`@``QH7@`````KH(````2(G>3(GOZ`````#I
+MCP(``,:%X`````-(B>J^(0```$R)[^@`````2(-]4`!T(`^V57E(BW500;@`
+M````N0$```!,B>_H`````.E1`@``00^V=0VZ`````$R)Y^@`````Z3H"``#&
+MA>`````$2(-]4`!T,$B)ZKXA````3(GOZ``````/ME5Y2(MU4$&X`````+D"
+M````3(GOZ`````#I_`$``+H`````OB$```!,B>_H`````$$/MG4-N@$```!,
+MB>?H`````.G3`0``2(GJO@8```!,B>_H`````$B#?3@`=!9(BT4XBT@$C5$!
+MB5`$@_D%#X:F`0``QD5#`<9%0@"`?7L`=!A,B>?H`````+\!````Z`````"`
+M?7L`=>A(@WU0`'082(M5&$B+11!(B5`(2(D"2(M%4/Y(6.L92(-]6`!T$DB+
+M55A(#[9%>4C'1,)8`````$B+50A(BT4`2(E0"$B)`D'^30Y(@[T8`0```'08
+M#[:U!0$``$B+O1@!``"Z`0```.@`````2(-]4`!T$@^V=7E(BWU0N@$```#H
+M`````$B#?3@`#X2"````2(M%.$C'0&``````0?Z$).\3``!,B>?H`````$B+
+M13@/MG`!N@$```!,B>?H`````$B+13@/ME`"#[9P`4C'QP````"X`````.@`
+M````2(M5.$F+M"30"```OP$```#H`````$B+53A)B[0DT`@``+\&````Z```
+M``!(QT4X`````$B)[DR)Y^@`````08!]"?]T6T&^`````$&`?0X`=CE)C5U@
+M2(G?Z`````!(B<5(BT,(2(EK"$B)70!(B44(2(DH@'U"_W4+0?_&13AU#G?3
+MZP9%.'4.=Q5!QD4)_TR)[DR)Y^@`````9F:09I!(BQPD2(ML)`A,BV0D$$R+
+M;"083(MT)"!(@\0HPV9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H
+M3(E\)#!(B?-(B?U,BV=(38LL)$&_`````$'V1"0,$'0'QH?@````!@^VA>``
+M``"#^`$/A(L```"#^`%_"X7`=!YFD.G[`P``@_@$#X2B````@_@&#X3Y`0``
+MZ>0#``#&A>`````!2(GN3(GOZ`````#&0R2!08!,)`P(2(.[@`````!T#TB-
+MLX````!,B>_H`````$F-E>@```!)BX7H````2(E8"$B)`TB)4PA)B9WH````
+M3(GOZ`````#I@@,``&:008!D)`SW_H7C````QH7@`````,9#)`)(B=Y,B>_H
+M`````$R)[^@`````Z5$#``"0QH7C`````$B#?3@`#X1.`0``2(M%.(M(!(U1
+M`8E0!(/Y!0^'.`$``$&`9"0,]TB#NX``````=`](C;.`````3(GOZ`````!)
+MC97H````28N%Z````$B)6`A(B0-(B5,(28F=Z````$&`3"0,$$B#?5``="`/
+MME5Y2(MU4$&X`````+D"````3(GGZ`````#IO`(``,9$)`<`08!\)`X`#X:G
+M````38UT)&!F9I!F9I!,B??H`````$B)PTF+1@A)B5X(3(DS2(E#"$B)&$B#
+M>S@`=!Q(BU,X28NUT`@``+\%````Z`````"`2T0"9F:02(G:O@8```!,B>?H
+M`````(![>P!T,D2)^$'_QSU_EI@`=R5,B>_H`````+\!````Z`````"`>WL`
+M=`U$B?A!_\<]?Y:8`';;_D0D!P^V1"0'03A$)`X/AV3____&14(#2(GN3(GO
+MZ`````#I\`$``$F-E>@```!)BX7H````2(E8"$B)`TB)4PA)B9WH````2(-]
+M.`!T%DB+13B+2`2-40&)4`2#^04/AI8!``!(Q\<`````N`````#H`````$B)
+MZKX&````3(GGZ`````!!_DPD#DB+50A(BT4`2(E0"$B)`DB#?5``=!A(BT50
+M_DA82(M5&$B+11!(B5`(2(D"ZQ](@WU8`'082(M56$@/MD5Y2,=$PE@`````
+M9F:09F:0@'U[`'0R1(GX0?_'/7^6F`!W)4R)[^@`````OP$```#H`````(!]
+M>P!T#42)^$'_QSU_EI@`=MM(BU4(2(M%`$B)4`A(B0)(@[T8`0```'0?#[:U
+M!0$``$B+O1@!``"Z`0```.@`````9F9FD&9FD$B#?5``=!D/MG5Y2(M]4+H!
+M````Z`````!F9F:09F:02(-].`!T?TB+13A(QT!@`````$'^A>\3``!,B>_H
+M`````$B+13@/MG`!N@$```!,B>_H`````$B+13@/ME`"#[9P`4C'QP````"X
+M`````.@`````2(M5.$F+M=`(``"_`0```.@`````2(M5.$F+M=`(``"_!@``
+M`.@`````2,=%.`````!(B>Y,B>_H`````.L02(GJO@(```!,B>?H`````$R)
+M[^@`````9F:09I!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0X
+MPV9F9I!F9I!F9I!F9I!!5D%505154TB)\TF)_$R+KX@```!)BVT`0?9%#!!T
+M!,9'409!#[9$)%&#^`$/A(D```"#^`%_#87`="!F9F:0Z7L#``"#^`0/A)H`
+M``"#^`4/A)<!``#I9`,``$'&1"11`4R)YDB)[^@`````QD,D@4&`30P(2(.[
+M@`````!T#TB-LX````!(B>_H`````$B-E>@```!(BX7H````2(E8"$B)`TB)
+M4PA(B9WH````2(GOZ`````#I!`,``$&`90SW0?Y$)%)!QD0D40#&0R0"2(G>
+M2(GOZ`````!(B>_H`````.G8`@``08!E#/=(@[N``````'0/2(VS@````$B)
+M[^@`````2(V%Z````$B+E>@```!(B5H(2(D32(E#"$B)G>@```"Z`````+X&
+M````3(GOZ`````!!#[9U#;H!````2(GOZ`````!!O@````!!@'T.``^&?```
+M`$V-96"03(GGZ`````!(B<-)BT0D"$F)7"0(3(DC2(E#"$B)&$B#>S@`=!I(
+MBU,X2(NUT`@``+\%````Z`````"`2T0"D$B)VKX&````3(GOZ`````"`>WL`
+M=!A(B>_H`````+\!````Z`````"`>WL`=>A!_\9%.'4.=XE!QD4)`$&`30P0
+M3(GOZ`````#IT@$``$&`90SW2(.[@`````!T#TB-LX````!(B>_H`````$B-
+MA>@```!(BY7H````2(E:"$B)$TB)0PA(B9WH````28U%8$B)PDDY16`/A.$`
+M``!)B<9(B=?H`````$B)PTB#>#@`=!Y(BU`X2(NUT`@``+\%````Z`````"`
+M2T0"9F:09I!(B=J^!@```$R)[^@`````@'M[`'082(GOZ`````"_`0```.@`
+M````@'M[`'7H2(-[.`!T84B+0SA(QT!@`````/Z%[Q,``$B)[^@`````2(M#
+M.`^V<`&Z`0```$B)[^@`````2(M3.$B+M=`(``"_`0```.@`````2(M3.$B+
+MM=`(``"_!@```.@`````2,=#.`````!(B=Y(B>_H`````$R)\DTY=6`/A2+_
+M__^Z`````+X&````3(GOZ`````!,B>9(B>_H`````$G'14``````2(M%`(N0
+M6`$``(D5`````(72=`I(BT4`B9!8`0``0?9%"@%T6$&^`````(!]0P!V&TD/
+MME4-2(G01(GQ2-/XJ`%U"4'_QD0X=4-WZD$/MO9(B>_H`````$R)[DB)[^@`
+M````1(GR#[;"2&O`:$C'A"A($@```````&9F9I!;74%<05U!7L-F9F:09F:0
+M05=!5D%505154TB#[`A)B?Q,BW=(28L>2(G^2(G?Z`````!!@+PDXP````%V
+M"4'&A"3@````!$F-;"0@23EL)"`/A#D"``!(B>_H`````$F)QTF+1"0@3(EX
+M"$F)!TF);PA-B7PD($&]`````.G6`0``00^WU4B+@Y`)``!(BRS02(7M#X2[
+M`0``00^W1"0P9CM%(`^%JP$```^WBSH2``!(BX-0$0``.0AT5&9F9I#_P0^W
+M@SX2```YR+@`````#T;(C5$!2(N#4!$``(L$D*D```@`=1XE_P\``&9!.<5U
+M$TDY[W492(G?Z`````"0Z8L!``!(BX-0$0``.0AUL$&`?E@`#X4Z`0``9H%]
+M((4`#X<N`0``2`^W12"`O!A`"```_P^$&P$``$V%Y`^$``$``$D/MD0D0*@!
+M#X3R````J`0/A.H```!(BQ,/MT4R9L'H!0^WP(T$A0`#``")@G`!``!(BP,/
+MMTTR@^$?N@$```!(B=9(T^:)L'0!``!(#[=-,DB+@Y`)``!(QP3(``````^W
+M33*)R&;!Z`4/M\"#X1](B=9(T^9(B?'WT2&,@Y@)```/MTTRB<AFP>@%#[?`
+M@^$?2-/B]](A5(-<3#G]=$E(BU4(2(M%`$B)4`A(B0)(@[V``````'0/2(VU
+M@````$B)W^@`````2(V3Z````$B+@^@```!(B6@(2(E%`$B)50A(B:OH````
+M#[=U,DB-NU@/``#H`````$'^3"1[ZQ)!]D8*`G0+2(GN3(GGZ`````!!_\5F
+M1#EK6`^''_[__TV%Y'0H20^V1"1`J`%T'J@$=!I)BU<(28L'2(E0"$B)`DR)
+M_DR)Y^@`````D$B#Q`A;74%<05U!7D%?PY!!5D%505154TF)_$R+MX@```!)
+MBQY(B?Y(B=_H`````$&`?"12`78&0<9$)%$$28UL)"A).6PD*`^$\@$``$B)
+M[^@`````28G%28M$)"A,B6@(28E%`$F);0A-B6PD*+T`````Z9L!``!F9F:0
+M9F:0#[?52(N#D`D``$B+--!(A?8/A'L!``!!#[=$)$!F.T8@#X5K`0``#[>+
+M.A(``$B+@U`1```Y"'179F9FD&9FD/_!#[>#/A(``#G(N``````/1LB-40%(
+MBX-0$0``BP20J0``"`!U'B7_#P``9CG%=11).?5U&DB)W^@`````9I#I.P$`
+M`$B+@U`1```Y"'6P9H%^((4`#X?V````2`^W1B"`O!A`"```_P^$XP```$&`
+M?E@`#X78````0?9&"@$/A,T```!(BQ,/MT8R9L'H!0^WP(T$A0`#``")@G`!
+M``!(BP,/MTXR@^$?N@$```!(B==(T^>)N'0!``!(#[=.,DB+@Y`)``!(QP3(
+M``````^W3C*)R&;!Z`4/M\"#X1](B==(T^=(B?GWT2&,@Y@)```/MTXRB<AF
+MP>@%#[?`@^$?2-/B]](A5(-<3#GN="Y(BU8(2(L&2(E0"$B)`DB-D^@```!(
+MBX/H````2(EP"$B)!DB)5@A(B;/H````#[=V,DB-NU@/``#H`````$'^3"1%
+M_\5F.6M8#X=B_O__0?9&"@%T&TF+50A)BT4`2(E0"$B)`DR)[DR)Y^@`````
+MD%M=05Q!74%>PV9F9I!F9I!!5T%6055!5%532(/L"$B)_4&^`````$B-A^@`
+M``!(B<)(.8?H````#X33`0``28G'28G%28G42(G7Z`````!(B<-(@WAP`'4O
+M2(GOZ`````!(B4-P2(7`=1Y(BX7H````2(E8"$B)`TR)8PA(B9WH````Z8D!
+M``"+0S@E____`#WA`1``#X3L````9H%[((``#X3@````9@^V0R!FB4,@9H/X
+M?W8:9H%[..$!=2D/MD,Z@^@1/`%W'F9F9I!F9I!F@7L@A0!W#T@/MT,@@+PH
+M0`@``/]U&<9#)`9(B=Y(B>_H`````.D&`0``9F:09I!F@7LXX0%U"P^V0SJ#
+MZ!$\`78O2(N5&`D``$R-LGB&`0!F@7L@A0!W&4@/MT,@2`^VA"A`"```2&G`
+MB`$``$R--`)F@7LXX0%U"@^V0SK_R#P!=C-F@7L@@`!T*V:!>SCA`74+#[9#
+M.H/H$3P!=AA!]D9#!'41QD,D!DB)WDB)[^@`````ZWI(B=Y(B>_H`````(/X
+M`G<+@_@!<R9F9F:0ZQ"#^`-T3V9FD&9FD&9FD.M/2(G>2(GOZ`````!F9I#K
+M/TB#NX``````=`](C;.`````2(GOZ`````!(BX7H````2(E8"$B)`TR)>PA(
+MB9WH````ZQM(B=Y(B>_H`````$R)ZDPYK>@````/A3/^__](@\0(6UU!7$%=
+M05Y!7\-!5T%6055!5%532(/L2$F)_4"(="0P2`^V5"0P2&O2:$@!^DR+LD@2
+M``!(Q\#^____B?%(T\`B@FD2``"(1"0O3(L_QT0D*`````!`@/X#=@U!QX=P
+M`0``Q`$``.L+0<>'<`$``*@!``!!BX=T`0``B04`````#[9,)#"#X0.[!P``
+M`-/CB<4)W4&)KW0!``"_Z`,``.@`````]],AW4&)KW0!``"`?"0P`W8@#[9$
+M)#!(P>`")?P#``!"BX0XT`$``(D%`````(G%ZQX/MD0D,$C!X`(E_`,``$*+
+MA#C0`0``B04`````B<6#S0B`?"0P`W88#[9$)#!(P>`")?P#``!"B:PXT`$`
+M`.L6#[9$)#!(P>`")?P#``!"B:PXT`$``(!\)#`#=AP/MD0D,$C!X`,E^`<`
+M`$+'A#@``@``.````.L:#[9$)#!(P>`#)?@'``!"QX0X``(``#@```"_$"<`
+M`.@`````@'PD,`-V'`^V1"0P2,'@`R7X!P``0L>$.`0"````````ZQH/MD0D
+M,$C!X`,E^`<``$+'A#@$`@```````$V%]@^$[@<``$&\`````$&`?4,`=BUF
+M9F:020^V1@U!#[;,2-/XJ`%T$+H!````B<Y,B>_H`````)!!_\1%.&5#=]=!
+M]D8*`71B3(GV3(GOZ``````/MG0D,$R)[^@`````2`^V1"0P2&O`:$J-E"A@
+M$@``BT(,J0``$`!T""7__^__B4(,3(GV3(GOZ`````!(#[9$)#!(:\!H2L>$
+M*$@2````````Z4L'``!!@'Y8`'0328N]:!```$R)]N@`````0?Y.6(!\)"\`
+M#X2I`@``2,=$)"``````QD0D'P`/MG0D,$R)[^@`````2`^V1"0P2&O`:$J-
+ME"A@$@``BT(,J0``$`!T""7__^__B4(,#[9$)"]!B$8-0;P`````08!]0P`/
+MAI,!``!(#[94)"](B50D$`^VR(E,)`Q!#[;,2(M$)!!(T_BH`0^$8`$``$2)
+MX@^VPDAKP&@/ME0D+T*(E"AI$@``08#\`W87C03-`````$B80L>$.``"```X
+M````ZQE*C03E`````"7X!P``0L>$.``"```X````OQ`G``#H`````$&`_`-V
+M&TJ-!.4`````)?@'``"+3"0,0HF,.`0"``#K&4J-!.4`````)?@'``"+5"0,
+M0HF4.`0"``!!@/P#=@U!QX=P`0``Q`$``.L+0<>'<`$``*@!``!!BX=T`0``
+MB04`````1(GA@^$#NP<```#3XXG%"=U!B:]T`0``O^@#``#H`````/?3(=U!
+MB:]T`0``08#\`W8?2HT$I0`````E_`,``$*+A#C0`0``B04`````B<7K'4J-
+M!*4`````)?P#``!"BX0XT`$``(D%`````(G%@\T(08#\`W872HT$I0`````E
+M_`,``$*)K#C0`0``ZQ5*C02E`````"7\`P``0HFL.-`!``!!_\1%.&5##X=_
+M_O__28U&2$B)PDDY1DAT-DB)TTB)U^@`````2(U(R$B)3"0@2(M3"$B)0PA(
+MB1A(B5`(2(D"2(-XV`!T"4B)VDDY7DAURDB#?"0@`'1%2(M$)"#&0%H`0;P`
+M````08!]0P!V+TD/MD8-1(GA2-/XJ`%T%T@/MD0D'TB+5"0@1(AD$'#^0EK^
+M1"0?0?_$13AE0W?1N@````"^@0```$R)]^@`````2`^V1"0P2&O`:$K'A"A(
+M$@```````.EH`P``N@````"^!@```$R)]^@`````#[9T)#!,B>_H`````$@/
+MMD0D,$AKP&A*C90H8!(``(M"#*D``!``=`@E___O_XE"#$F-1DA(B<)).49(
+M#X3L`0``2(D$)$B)U^@`````3(U@R$B-4!!(.5`0#X2Q`0``28U\)$CH````
+M`$B-6/"`>T$-=1I(C;!(`0``2(M#2$B+`$B+>"CH`````&9FD$B+4PA(BP-(
+MB5`(2(D"@'M[`'083(GOZ`````"_`0```.@`````@'M[`'7H2(-[.``/A"@!
+M``!(BT,X2,=`8`````"`>WL`#X29````O0````!F08-]6``/A(@```!FD$AC
+MU4F+A9`)``!(BS302(7V=&0/MT8@9CM#,'5:9CV%`'=4#[?`0H"\*$`(``#_
+M=$9)BU4`#[=&,F;!Z`4/M\"-!(4``P``B8)P`0``28M%``^W3C*#X1^Z`0``
+M`$C3XHF0=`$``,9&)"&Z`````$R)[^@`````_\5!#[=%6#GH#X]Z____]D-$
+M!'4D0?Z%[Q,``$R)[^@`````2(M#.`^V<`&Z`0```$R)[^@`````2(M#.`^V
+M4`(/MG`!2,?'`````+@`````Z`````!(BU,X28NUT`@``+\!````Z`````!(
+MBU,X28NUT`@``+\&````Z`````!(QT,X`````$'^3@Y!_DPD6$B)WDR)[^@`
+M````28U$)$A).40D2`^%3_[__T'^3BA,B>9,B>_H`````$B+%"1).59(#X48
+M_O__28U&8$B)PDDY1F`/A/8```!(B<5(B=?H`````$B)PX!X>P!T-HM$)"C_
+M1"0H/7^6F`!W)TR)[^@`````OP$```#H`````(![>P!T#XM$)"C_1"0H/7^6
+MF`!VV4B#>S@`#X2%````2(M#.$C'0&``````]D-$!'4D0?Z%[Q,``$R)[^@`
+M````2(M#.`^V<`&Z`0```$R)[^@`````2(M#.`^V4`(/MG`!2,?'`````+@`
+M````Z`````!(BU,X28NUT`@``+\!````Z`````!(BU,X28NUT`@``+\&````
+MZ`````!(QT,X`````$'^3@Y(B=Y,B>_H`````$B)ZDDY;F`/A0W___],B?9,
+MB>_H`````$@/MD0D,$AKP&A*QX0H2!(```````!!O`````!!@'U#``^&!`$`
+M`$P/MG0D+Y!,B?)$B>%(T_I$.F0D,`^4P`G0J`$/A-4```!!@/P#=@U!QX=P
+M`0``Q`$``.L+0<>'<`$``*@!``!!BX=T`0``B04`````1(GA@^$#C0Q)NP<`
+M``#3XXG%"=U!B:]T`0``O^@#``#H`````/?3(=U!B:]T`0``08#\`W8?2HT$
+MI0`````E_`,``$*+A#C0`0``B04`````B<7K'4J-!*4`````)?P#``!"BX0X
+MT`$``(D%`````(G%@\T(08#\`W872HT$I0`````E_`,``$*)K#C0`0``ZQA*
+MC02E`````"7\`P``0HFL.-`!``!F9I!!_\1%.&5##X<#____2(/$2%M=05Q!
+M74%>05_#9F9FD$B#[`A,BP>Z`````$&`>$,`=AP/ML)(:\!H2HV$`$`2``!(
+M.?AT"/_"03A00W?D#[;"2&O`:$P!P$B+L$@2``!(A?9T:_9&"@)T94@%0!(`
+M`$@Y1B!U68!^6`!T*/Y&6.M._D9800^VB;L```!)B[AH$```2<?``````$R)
+MRN@`````ZRM(BU9(3(U*R$B-1DA(.<)T&DB)PDF#>1``=,))BT$X3(U(R$@Y
+MT'7L9F:02(/$",-F9F:09F9FD&9FD$%505154TB#[`A!B?1)B?V[`````(GR
+M#[;"2&O`:$B-%#A(BZI($@``2(7M#X2!`0``2,?`_O___XGQ2-/`A$4-#X5L
+M`0``2(U%2$@Y14AT$4B-ND`2``#H`````.G^`@``0;P`````@'T.``^&[@(`
+M`$B-76!(B=_H`````$B)P4B+0PA(B4L(2(D92(E!"$B)"(!Y00`/A00!``!(
+M#[=!,$F#O,5`!````'4+2(-Y.``/A-,```!(#[=!,$F+A,5`!```2(.X@```
+M```/A*$```#&@>``````2`^V04"H`G0MJ`1T*:@!="7&04(%QD%#!`^V47E(
+MBW%02(MY2.@`````Z9@```!F9F:09F:02`^V04"H`G4GJ`1F9I!FD'0>J`%T
+M&L9!0@/&04,$2(G.3(GOZ`````#K9F9FD&:02`^V04"H`G18J`1F9I!FD'1/
+MJ`%U2\9!0P;&04(%9L>!P```````2(G.3(GOZ`````#K+4B+43A)B[70"```
+MOP0```#H`````.L62`^W43!)B[70"```OP(```#H`````$'_Q$0X90X/A\C^
+M___IK0$``&:!^_,!=V=*C02E`````$B)Q8'E_`,``&9FD&:0OQ`G``#H````
+M`$&`_`-V($F+10"+A"C0`0``B04`````J0``$`!U*>L>9F:09F:028M%`(N$
+M*-`!``")!0````"I```0`'4)_\-F@?OS`7:O00^V]$R)[^@`````3(GOZ```
+M``!$B>(/ML)(:\!H2HNL*$@2``!(A>T/A!`!``"[`````$&`?4,`=BQF9F:0
+M2`^V10T/MLM(T_BH`701N@````")SDR)[^@`````9I#_PT$X74-WV$2)X0^V
+MP4AKP&A*C80H0!(``$B)12!(C45(2#E%2'4.2(U%8$@Y16`/A(8```"^````
+M`$&\`````$B-14A(B<)(.45(=#-FD$B)TTB)U^@`````2(UPR$B+4PA(B4,(
+M2(D82(E0"$B)`DB#>-@`=`E(B=I(.5U(=<](A?9T6L9&6@"Y`````$&`?4,`
+M=DI(#[9%#4C3^*@!=!!$B>(/ML*(3#!P_D9:0?_$_\%!.$U#=]SK)/9%"@%T
+M#4B)[DR)[^@`````ZQ&^`````$B)[^@`````9F9FD$B#Q`A;74%<05W#9F:0
+M9I!(@^P(2(GX2(L_9L=`3B``2(G&Z`````!(@\0(PV9FD%-(BP]$BT<PNP``
+M``"`>4,`=AL/ML-(:\!H2(V$"$`2``!(.?AT!__#.%E#=^6`^P-V+4B-!)T`
+M````)?P#``!(BQ&+A`+0`0``B04`````J0``$`!U+>L[9F9FD&9FD$B-!)T`
+M````)?P#``!(BQ&+A`+0`0``B04`````J0``$`!T$`^V\T2)PDB)S^@`````
+MZPL/MO-(B<_H`````%O#9F9FD&9F9I!F9F:09F:02(N'P!```(L`B04`````
+M2(N'P!```(M`!(D%`````$B+A\`0``"+0`B)!0````!(BX?`$```BT`,B04`
+M````PT%7059!54%455-(@^P8B70D%$F)_$&^`````(!_0P`/ADD(``"+="04
+M00^VUHU*"$B)\$C3^*@!=1&-2A!(B?!(T_BH`0^$%0@``$&`_@-V)TJ-!/4`
+M````)?@'``!)BQ0DBX0"@`$``(D%`````*D```@`=2?K0TJ-!/4`````)?@'
+M``!)BQ0DBX0"@`$``(D%`````*D```@`=!Y,B>?H`````$2)\@^VPDAKP&A"
+M@8P@<!(`````"`!)BS0D1(GQ08#^`W8H2HT$]0`````E^`<``(N$,(`!``")
+M!0````")PH'B```!`.LF9F9FD$B-!,T`````)?@'``"+A#"``0``B04`````
+MB<*!X@```0"%TG11@/D#=AI(C03-`````"7X!P``QX0P@`$``````0#K&$B-
+M!,T`````)?@'``#'A#"``0`````!`(72=!9$B?$/ML%(:\!H0H&,('`2````
+M``$`08!\)%$!#X5M!@``08#^`W8G2HT$]0`````E^`<``$F+%"2+A`*``0``
+MB04`````J`%U*^DJ`0``2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````
+MJ`$/A`0!``!$B?(/ML)(:\!H2HT<($B-LW@2``!)BWPD*.@`````2(.[2!(`
+M```/A($```!,BZM($@``0;\`````08!]#@!V9DF-;6!F9I!FD$B)[^@`````
+M2(G#2(M%"$B)70A(B2M(B4,(2(D8]D-$`G4Q2(-[.`!T&DB+4SA)B[0DT`@`
+M`+\%````Z`````"`2T0"2(G:O@8```!,B>_H`````$'_QT4X?0YWH[H@H0<`
+MZR!!#[;VN@$```!,B>?H`````+^@A@$`Z`````"Z`"TQ`42)\0^VP4AKP&A,
+M`>!(C;!X$@``B9!X$@``2,=&$`````!(!4`2``!(B48828M\)"CH`````$&`
+M_@-V($J-!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````.L>2HT$]0`````E
+M^`<``$F+%"2+A`*``0``B04`````08#^`W8L2HT$]0`````E^`<``$F+%"2+
+MA`*``0``B04`````J8````!U,.G"````9I!*C03U`````"7X!P``28L4)(N$
+M`H`!``")!0````"I@`````^$EP```$&`_@-V(DJ-!/4`````)?@'``!)BQ0D
+MBX0"A`$``(D%`````(G&ZR!*C03U`````"7X!P``28L4)(N$`H0!``")!0``
+M``")QD&`_@-V(DJ-!/4`````)?@'``!)BPPDB?*!R@```0")E`&$`0``ZR=*
+MC03U`````"7X!P``28L,)(GR@<H```$`B90!A`$``&9F9I!F9I!!@/X#=BI*
+MC03U`````"7X!P``28L4)(N$`H`!``")!0````"I```$`'4NZ48"``!*C03U
+M`````"7X!P``28L4)(N$`H`!``")!0````"I```$``^$'0(``$&`_@-V(DJ-
+M!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````(G&ZR!*C03U`````"7X!P``
+M28L4)(N$`H`!``")!0````")QH'.```$`$&`_@-V&DJ-!/4`````)?@'``!)
+MBQ0DB;0"@`$``.L82HT$]0`````E^`<``$F+%"2)M`*``0``1(GR#[;"2&O`
+M:$J#O"!($@````^%B````$&`_@-V(DJ-!/4`````)?@'``!)BQ0DBX0"@`$`
+M`(D%`````(G!ZR!*C03U`````"7X!P``28L4)(N$`H`!``")!0````")P4&`
+M_@-V'4J-!/4`````)?@'``!)BQ0DB8P"@`$``.D+`P``2HT$]0`````E^`<`
+M`$F+%"2)C`*``0``Z>X"``!$B?$/ML%(:\!H3HNL($@2``!)@WU```^$V0``
+M`$F+14!(#[=03O;&`0^%QP```$B)Q?;"`@^$M0```$B-L)````!)BWPD*.@`
+M````0;X`````@'T[`'9I1(GR#[;"2(M<Q5A(A=MT4$B#>S@`=!I(BU,X28NT
+M)-`(``"_!0```.@`````@$M$`DB)VKX&````3(GOZ`````"`>WL`=!F03(GG
+MZ`````"_`0```.@`````@'M[`'7H0?_&1#AU.W>7QX60````(*$'`$C'A:``
+M````````2(FMJ````$B-M9````!)BWPD*.@`````ZP9F@4A.@`!!@/X#=BA*
+MC03U`````"7X!P``28L4)(N$`H`!``")!0````#VQ`%U+.D\`0``2HT$]0``
+M```E^`<``$F+%"2+A`*``0``B04`````]L0!#X05`0``08#^`W8G2HT$]0``
+M```E^`<``$F+%"2+A`*``0``B04`````J`%T*^GH````2HT$]0`````E^`<`
+M`$F+%"2+A`*``0``B04`````J`$/A<(```!$B?%$#[;I36OM:$^-K"5`$@``
+M28-]"``/A*0```!)BT4(2(E$)`A)C74X28M\)"CH`````$&_`````$B+5"0(
+M@'H.`'932(G52(/%8$B)[^@`````2(G#2(M%"$B)70A(B2M(B4,(2(D82(-[
+M.`!T&DB+4SA)B[0DT`@``+\%````Z`````"`2T0"0?_'2(M,)`A$.'D.=[1!
+MQT4X@(0>`$G'14@`````38EM4$F-=3A)BWPD*.@`````9F9FD&9FD$&`_@-V
+M(DJ-!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````(G!ZR!*C03U`````"7X
+M!P``28L4)(N$`H`!``")!0````")P4&`_@-V&DJ-!/4`````)?@'``!)BQ0D
+MB8P"@`$``.L82HT$]0`````E^`<``$F+%"2)C`*``0``0?_&13AT)$,/A[?W
+M__](@\086UU!7$%=05Y!7\-F9I!!5T%6055!5%532(/L&$B)_4F)]4B+EQ@)
+M``!,C:)XA@$`9H%^((4`=QE(#[=&($@/MH0X0`@``$AIP(@!``!,C20"00^V
+M1"1JP>`(2)A(BY7`$```BX0"0`@``(D%`````$&)QD'![A!!B<=!P>\800^V
+M1"1JP>`(2)A(BY7`$```BX0"1`@``(D%`````(A$)!!(C70D$(G"P>H(B%8!
+MP>@0B$8"00^V1"1JP>`(2)A(BY7`$```BX0"2`@``(D%`````(A&`XG"P>H(
+MB%8$P>@0B$8%QD8&`,9&!P"+3"0000^VUT$/MMY$BT8$B=Y(Q\<`````N```
+M``#H`````$6$]@^5P(/S`878=!)!QD4D`+@`````Z;,"``!F9I!!@'TD@74I
+M00^VUT$/MO9(C4PD$$R)[^@`````0<9%)`*X`````.F%`@``9F:09I!!BT4X
+M)?___P`]X0$.`'400<9%)"&X`````.EA`@``D$'VA98````!=19!]L8!=!!!
+M@'PD0O\/A2<"``!F9F:03(GF2(GOZ`````!,B>9(B>_H`````$B+50!!#[=%
+M,F;!Z`4/M\"-!(4``P``B8)P`0``2(M%`$$/MTTR@^$?N@$```!(B=-(T^.)
+MF'0!``!)#[=-,DB+A9`)``!(QP3(`````$$/MTTRB<AFP>@%#[?`@^$?2(G3
+M2-/C2(G9]]$AC(68"0``00^W33*)R&;!Z`4/M\"#X1](T^+WTB%4A5Q)BU4(
+M28M%`$B)4`A(B0)!#[=U,DB-O5@/``#H`````$'^3"1[0<9%)(%)@[V`````
+M`'0/28VU@````$B)[^@`````28U$)"!(B<)).40D(`^$!@$``$&^`0```$B-
+MA>@```!(B40D"$F)UV9F9I!(B=?H`````$B)PTB+50`/MT`R9L'H!0^WP(T$
+MA0`#``")@G`!``!(BT4`#[=+,H/A'TR)\DC3XHF0=`$``$@/MU,R2(N%D`D`
+M`$C'!-``````#[=+,HG(9L'H!0^WP(/A'TR)\DC3XDB)T??1(8R%F`D```^W
+M2S*)R&;!Z`4/M\"#X1],B?)(T^)(B='WT2%,A5P/MW,R2(V]6`\``.@`````
+M0?Y,)'M(@[N``````'0/2(VS@````$B)[^@`````2(N%Z````$B)6`A(B0-(
+MBT0D"$B)0PA(B9WH````3(GZ33E\)"`/A1/___]!@:64````___^_T'&A"3@
+M````!$R)[DR)Y^@`````N`$```#K'4$/MM=!#[;V2(U,)!!,B>_H`````+@`
+M````9F:02(/$&%M=05Q!74%>05_#D$B#[$A(B5PD&$B);"0@3(ED)"A,B6PD
+M,$R)="0X3(E\)$!(B50D$(GU2(L?3(NS\!```$&]`````$B%T@^$!0,```^W
+MUDAIPK`$``!"]D0P(0)T$4B+@Y`)``!(BP30QD`D`NL2#[?&2(N3D`D``$B+
+M!,+&0"0A#[?%2(N3D`D``$B+%,*+0C@E____`#WA`1``#X2X`0``N/____]F
+M@7H@A0!W#4@/MT(@#[:$&$`(```\_W4:#[?%2(N3D`D``$B+!,+&0"0&Z3,)
+M``!F9I`/ML!(:<"(`0``28G%3`.K&`D``(!\)!,`>6])#[9%0*@"="RH!'0H
+MJ`%T)$B+`XN`6`$``(D%`````(G"A<!T#TB+`XF06`$``&9FD&9FD$B+`XN`
+M4`$``(D%`````(G"@\H"2(L#B9!0`0``2(L#BX`$`0``B04`````B<*`SO](
+MBP.)D`0!```/M\5(:<"P!```9D+W1#`@`@@/A-X```!!N`````"^`````(![
+M0P!V?$&Y`0```&9F9I!F9I!(#[9'#4`/MLY(T_BH`7170(#^`W8BC02-````
+M`$B82(L3BX0"T`$``(D%`````*D``!``=2;K+TB-!+4`````)?P#``!(BQ.+
+MA`+0`0``B04`````J0``$`!T"TR)R(GQ2-/@00G`_\9`.'-#=Y%%A,!T3$0X
+M1PUU1HGH9L'H!0^WP(M$@UR)Z8/A'TC3^*@!=2U!@+W@`````G<(0<:%X```
+M``,/M\5(BY.0"0``2(LTPDR)[^@`````Z;`'``#V1"03`0^$I0<```^WQ4B+
+MDY`)``!(BSS"QD<D(8M'."7___\`/>$!#@`/A(`'``!!#[9%:L'@"$B82(N3
+MP!```(N$`D`(``")!0````")QL'N$$&)P$'!Z!A!#[9%:L'@"$B82(N3P!``
+M`(N$`D0(``")!0````"(1"0(2(U,)`B)PL'J"(A1`<'H$(A!`D$/MD5JP>`(
+M2)A(BY/`$```BX0"2`@``(D%`````(A!`XG"P>H(B%$$P>@0B$$%QD$&`,9!
+M!P#VAY8````!=1A`#[;V0/;&`70.00^VT.@`````Z<D&``!(B?Y(B=_H````
+M`.FY!@``#[?62(N#D`D``$B+!-!F@7@XX0$/A2\!```/MD@Z@_D0#X>2!@``
+MN`$```!(T^"IP#````^%\@```*D`@```=0VI```!`'5?D.EK!@``#[?62(N#
+MD`D``$B+#-!,:<*P!```0P^V1#`SB$$D2(N#D`D``$B+!-#V0",$#X0X!@``
+M@'@D``^$+@8``$B#>%``#X0C!@``2(M04$,/MD0P,X@"Z1(&```/M]9(:=*P
+M!```1`^WYDB+@Y`)``!*BPS@0@^V1#(JB$$D2(N#D`D``$J+!.!(@WA(``^$
+MV@4``$(/MKPR(00``.@`````B<)(BX.0"0``2HL$X#M0-'8#BU`T#[?U2(N#
+MD`D``$B+!/!(BWA(B=)(:?:P!```2HUT-BCH`````.F-!0``#[?&2(N3D`D`
+M`$B+!,+&0"0`Z78%``!F9I!F9I`/M]9(BX.0"0``3(LDT$V+?"1HN/____]F
+M08%\)""%`'<.20^W1"0@#[:$&$`(```/ML!(:<"(`0``28G%3`.K&`D``$'&
+MA>``````20^V14"H`@^$EP$``*@$#X2/`0``J`$/A(<!``!!QD0D)`!!BY0D
+ME````$C!ZA5-A?\/E<`/ML"%P@^$Y`0``$'VAZD````"#X2=````28._H```
+M``!T&$F+OZ````!!BU0D-$F+="1(Z`````#K>TF#?"1(`'1S0;X`````28._
+ML`````!T$T'VAZD````!=0E-B[>P````ZR%(B[,@"@``N@$```!,B?]!_Y>X
+M````A<!T!TR+LR`*``!!@WPD-`!T)TF+;"1(28M^"$&+%DB)[N@`````08L&
+M2`'%28U&!$F#QA"#.`!TWD$/MD5JP>`(2)A(BY/`$```BX0"0`@``(D%````
+M`(G"P>H008B7FP```,'H&&9!B8>0````00^V16K!X`A(F$B+D\`0``"+E`)$
+M"```B14`````9@^VPF9!B8>4````#[;&9D&)AY8```")T,'H$&8/ML!F08F'
+MF````,'J&$&(EYH```!!#[9%:L'@"$B82(N3P!```(N$`DP(``")!0````!F
+M#[;`9D&)AY(```#IA0,``&9FD&:0#[?52&G*L`0``$(/MD0Q,X3`#X6_````
+M2(N#D`D``$B+!-#&0"0`08N4))0```!(P>H4387_#Y7`#[;`A<(/A#P#``!"
+M#[9$,3-!B(>2````00^VAZD```"H`@^$'P,``+T`````28._L`````!T#:@!
+M=0E)BZ^P````ZR%(B[,@"@``N@$```!,B?]!_Y>X````A<!T!TB+JR`*``!!
+M@WPD-``/A-8"``!)BUPD2)!(BWT(BU4`2(G>Z`````"+10!(`<-(C44$2(/%
+M$(,X`'3>Z:D"```\`@^%6`(```^W_4AI_[`$``!*C7PW0+Y_````0"(WQD0D
+M`P#&1"0"`,9$)`$`#[?%2&G`L`0``$*+1#`XB40D!$B-3"0$#[94)`3!XA@/
+MMD$!P>`0"<(/MD$"P>`("<(/MD$#08G500G%0(#^<78P08/]`78+#[9'`8/@
+M#XA$)`-!@_T"=@@/MD\"B$PD`D&#_0-V30^V?P-`B'PD`>M"08/]`G8+#[9'
+M`H/@#XA$)`-!@_T'=BL/MD<'@\`(03G%1`]'Z$&#_0QV"`^V3PR(3"0"08/]
+M#78)#[9_#4"(?"0!#[?U2(N#D`D``$B+#/"`>3``#Y7`187M#Y7"#[;`A<)T
+M2<9!)"!(BX.0"0``2(L$\$0X:#!S!40/MF@P#[?-2(N#D`D``$B+!,A(@WA0
+M`'0L2(MX4$2)ZDAI\;`$``!*C70V0.@`````ZQ(/M\5(BY.0"0``2(L$PL9`
+M)"*`?"0#!'42#[?%2(N3D`D``$B+!,+&0"0"23E<)"@/E<!-A?\/E<(/ML"%
+MP@^$&`$``$'VA"26````$'13#[?%2&G`L`0``$(/MD0P,T&(AY(```!!]H>I
+M`````G0R1(GH13AL)#!S!D$/MD0D,(3`=!Y)B[^@````#[;0#[?U2&GVL`0`
+M`$J-=#9`Z``````/MD0D`X/X"W==B<#_),4`````0<:'J@````'IF@```(!\
+M)`($#Y3`@'PD`0(/E,(/ML`AT(/X`1G`@^#Q@\`108B'J@```.MQ0<:'J@``
+M`!#K9T'&AZH````+ZUU!QH>J````!NM30<:'J@````WK23PH=1]!#[9%>__(
+M08A%>@^WU4B+@Y`)``!(BP30QD`D@>LF/`AU"K\0)P``Z``````/M\5(BY.0
+M"0``2(L$PL9`)"%F9I!F9I!(BUPD&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\
+M)$!(@\1(PV9F9I!F9I!F9I!F9I!54TB#[`A(B?M(B?U(BP>+@%`!``")!0``
+M``")QDB+!XFP4`$``/?&`/__`'0(2(GOZ#KI__](BP.+@%`!``")!0````")
+MQDB+`XFP4`$``/?&`/__`'7.N`````!(@\0(6UW#9F9FD&9F9I!F9F:005=!
+M5D%505154TB#[$A(B?U(B7PD.$0/MZ<Z$@``2(L'BX!``0``B04`````9B7_
+M#V:)ASH2``"X`````&9$.:<Z$@``#X0L!P``9H&_.A(``/\/#X2J!@``9D0Y
+MISH2```/A)P&``!(C8?H````2(E$)!A(C9?X````2(E4)!!(B50D"$B)%"1F
+M9F:09F:02(N-\!```$'_Q&9$.:4^$@``N`````!$#T;@00^WU$B+A5`1``"+
+M=)`$]\8```@`#X2A````2(M%`(N`4`$``(D%`````(G"2(M%`(F04`$``+L`
+M````]\(`__\`=%&^`````(!]0P!T1HG79D0/MD5##[?6C4H(2(GX2-/XJ`%U
+M#8U*$$B)^$C3^*@!=!0/M\9(:<"H````2(V<**`!``#K#?_&9D$Y\'?'9F:0
+M9I!(A=MU$$B+?"0XZ`````"0Z:$%``!(BWPD..@`````B$,/Z8\%``!!B?5F
+M08'E_P]!#[?%2&G0L`0``$B+?`H@2(N5D`D``$R+-,)-A?8/A&(%``#WQ@``
+M(``/A)$!``!!@'XD@0^%90$``$'&1B0A20^W5C)(BX60"0``2,<$T`````!!
+M#[=.,HG(9L'H!0^WP(/A'[H!````2-/B2(G1]]$AC(68"0``00^W3C*)R&;!
+MZ`4/M\"#X1^Z`0```$C3XDB)T??1(4R%7$$/MW8R2(V]6`\``.@`````28.^
+M@`````!T#TF-MH````!(B>_H`````&9!@7X@A0`/A\X```!)#[=&(("\*$`(
+M``#_#X2[````9D&#?B!_=R=(#[:$*$`(``!(BY48"0``2&G`B`$``$B+1!!(
+M@'@(_W5AZ8P```!F08%^(($`=RE)#[=&($@/MH0H0`@``$B+E6@)``!(:<#(
+M#P``2(M$$`B`>`C_=2SK6DD/MT8@2`^VA"A`"```2(N50`D``$AIP-````!(
+MBX00B````(!X"/]T,$R)]DB)[^@`````2(N%Z````$R)<`A)B09(BTPD&$F)
+M3@A,B;7H````Z>@#``!FD$F-1A!(BTPD$$B+40A(B4$(28E.$$B)4`A(B0+I
+MQ0,``$2)Z&;!Z`4/M\"+1(5<1(GI@^$?2-/XJ`$/A:8#``!!#[?52(N%D`D`
+M`$B+!-!F@7@@A0`/A[,```!(#[=0(("\*D`(``#_#X2@````9H-X(']W(D@/
+MMH0J0`@``$B+E1@)``!(:<"(`0``2(M$$$@/ME`(ZWQ!#[?52(N%D`D``$B+
+M!-!F@7@@@0!W)T@/MT`@2`^VA"A`"```2(N5:`D``$AIP,@/``!(BT00"`^V
+M4`CK/D$/M]5(BX60"0``2(L$T$@/MT`@2`^VA"A`"```2(N50`D``$AIP-``
+M``!(BX00B`````^V4`CK!;K_____@/K_=`T/ML*`O"C&"```_W5&1(GH9L'H
+M!0^WP(M$A5Q$B>F#X1](T_BH`0^%H@(``$'&1B0&O@````!,B??H`````+H`
+M````3(GV2(GOZ`````#I>P(```^VPD@/MIPHQ@@``$AIVZ@```!(C9PKH`$`
+M`$B%_W0(]\8```(`=06_`````/9#"@(/A($!``!!#[?U2(GZ2(G?Z`````!$
+MB>AFP>@%#[?`BT2%7$2)Z8/A'TC3^*@!#X46`@``08!^)($/A9$```!)#[=6
+M,DB+A9`)``!(QP30`````$$/MTXRB<AFP>@%#[?`@^$?N@$```!(T^)(B='W
+MT2&,A9@)``!!#[=V,DB-O5@/``#H`````$R)]DB)[^@`````28.^@`````!T
+M#TF-MH````!(B>_H`````$B+A>@```!,B7`(28D&2(M,)!A)B4X(3(FUZ```
+M`.EZ`0``0;\`````QD0D(`!(BX7X````2#E$)!!T$DB-E?@```!!_\=(BP!(
+M.<)U]46$_W0\2(M<)`A(B=_H`````$B-2/!(BU,(2(E#"$B)&$B)4`A(B0),
+M.?&X`0````^V5"0@#T30B%0D($'^SW7)@'PD(``/A0,!``!)C4802(M,)!!(
+MBU$(2(E!"$F)3A!(B5`(2(D"1(GH9L'H!0^WP$2)Z8/A'[H!````2-/B"92%
+MG````.G#````00^W]4B)^DB)W^@`````0;\`````QD0D(`!(BX7X````2#E$
+M)!!T$DB-E?@```!!_\=(BP!(.<)U]46$_W0[2(L<)$B)W^@`````2(U(\$B+
+M4PA(B4,(2(D82(E0"$B)`DPY\;@!````#[9,)"`/1,B(3"0@0?[/=<F`?"0@
+M`'5"08!^)(%T.TF-1A!(BTPD$$B+40A(B4$(28E.$$B)4`A(B0)$B>AFP>@%
+M#[?`1(GI@^$?N@$```!(T^()E(6<````9D0YI3H2```/A8SY__](C87X````
+M2(G"2#F%^````'130;P!````9F:02(G32(G7Z`````!(C7#P#[=.,HG(9L'H
+M!0^WP(/A'TR)XDC3XDB)T??1(8R%G````+H`````2(GOZ`````!(B=I(.9WX
+M````=;9(B>_H`````+@!````2(/$2%M=05Q!74%>05_#9F9FD&9FD&9FD$B#
+M["A(B5PD"$B);"003(ED)!A,B6PD(&;'1"0&``!(BZ_0"```0;P`````3(UL
+M)`9(BT4`BX!0`0``B04`````2(M5`(F"4`$``(7`="%(BT4`QX!0`0```0``
+M`$ECW$B)[^@`````08A$'0!F9I!(@<4`%```0?_$08/\`7ZQ@'PD!@!U#+@`
+M````@'PD!P!T!;@!````2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9F9I!F
+M9F:09F9FD&9FD$%7059!54%455-(@^P(2(G]28GUN0````!F#[9'0XG&9H/X
+M`'8;20^V50UF9I!FD$B)T$C3^*@!=0?_P68YSG?O28-]0`!T($F+=4!(@<:0
+M````2(M]*.@`````28MU0$B)[^@`````28U%8$B)PDDY16`/A&<!``!)B<9F
+M9F:02(G7Z`````!(B<-(@W@X``^$+@$``(!X>P`/A*````!!O`````!F@WU8
+M``^$CP```$&_`0```$ECU$B+A9`)``!(BS302(7V=&8/MT8@9CM#,'5<9CV%
+M`'=6#[?`@+PH0`@``/]T24B+50`/MT8R9L'H!0^WP(T$A0`#``")@G`!``!(
+MBT4`#[=.,H/A'TR)^DC3XHF0=`$``,9&)"&Z`````$B)[^@`````9F:09I!!
+M_\0/MT581#G@#X]W____2(M#.$C'0&``````]D-$!'4C_H7O$P``2(GOZ```
+M``!(BT,X#[9P`;H!````2(GOZ`````!(BT,X#[90`@^V<`%(Q\<`````N```
+M``#H`````$B+4SA(B[70"```OP$```#H`````$B+4SA(B[70"```OP8```#H
+M`````$C'0S@`````0?Y-#DB)WDB)[^@`````3(GR33EU8`^%H/[__TG'14``
+M````2(M%`(N(6`$``(D-`````(7)=`I(BT4`B8A8`0``2(/$"%M=05Q!74%>
+M05_#9F9FD&9F9I!F9I!!5%532(G]28GTNP````"`?T,`=AY(#[96#69FD&9F
+MD$B)T(G92-/XJ`%U!__#.%U#=^U!]D0D#`)U#$F-1"1@23E$)&!U:4R)Y^@`
+M````A,!T4$B)[^@`````2(G&2(7`=$U)C40D8$B+4`A(B7`(2(D&2(E6"$B)
+M,D'^1"0.3(EF2,9&0`7&1D$`QD9Y#[D!````N@$```!,B>?H`````.L-#[;S
+M2(GOZ`````!FD%M=05S#9F9FD&9F9I!F9I!(@^PH2(D<)$B);"0(3(ED)!!,
+MB6PD&$R)="0@28G]28GT3(NVB`````^V5D=(B?Y,B??H`````$B)Q69!@TPD
+M3A"[`````&9!#[9%0XG&9H/X`'8>20^V5@UF9I!F9I!(B=")V4C3^*@!=0?_
+MPV8YWG?M9H/[`W8G2(T$G0`````E_/\#`$F+50"+A`+0`0``B04`````J0``
+M$`!U-^LE2(T$G0`````E_/\#`$F+50"+A`+0`0``B04`````J0``$`!U$`^V
+M\TR)[^@`````Z9L!``!)C49@23E&8`^$C0$``$B%[0^$A`$``$@/MD5Y2<=$
+MQ%@`````2(M5"$B+10!(B5`(2(D"2(GJO@8```!,B??H`````(!]>P!T&9!,
+MB>_H`````+\!````Z`````"`?7L`=>A(@WTX`'132(M%.$C'0&``````]D5$
+M!'4/0?Z%[Q,``$R)[^@`````2(M5.$F+M=`(``"_`0```.@`````2(M5.$F+
+MM=`(``"_!@```.@`````2,=%.`````!!_DX.2(GN3(GOZ`````!)BT4`BY!8
+M`0``B14`````A=)T"DF+10")D%@!``!!QD0D0@!F08-D)$[ONP````!!@'PD
+M.P!T(69!#[94)#L/M\-)BVS$6$B%[70&@'U"_W5]_\-F.=IWYD'V1"1.@'0-
+M3(GF3(GOZ`````#K8;L`````08!\)#L`=$)F9F:0#[?#28MLQ%A(A>UT(_9%
+M1`)T'4B+53A)B[70"```OP8```#H`````(!E1/UF9F:0_\-F00^V1"0[9CG8
+M=\)F0<=$)$X"`$&`9"1)_69F9I!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(
+M@\0HPV9FD$B#[`A(BX:(````N0````"`?T,`=AM(#[90#69FD&:02(G02-/X
+MJ`%U!__!.$]#=^_&1D(,Z`````!(@\0(PY!!54%455-(@^P(28G\B?6[````
+M`$B-!*T`````28G%08'E_`,``+\0)P``Z`````!`@/T#=AM)BP0D0HN$*-`!
+M``")!0````"I```0`'4DZQE)BP0D0HN$*-`!``")!0````"I```0`'4)_\-F
+M@?OS`7:S0`^V]4R)Y^@`````3(GGZ`````")Z@^VPDAKP&A,`>#V@&@2```!
+M=`](B[!($@``3(GGZ`````!(@\0(6UU!7$%=PV9F9I!F9I!F9I!(@^PH2(E<
+M)`A(B6PD$$R)9"083(EL)"!(B10D3(LG#[?V28N$))`)``!(BQSP0;T`````
+MO0````!F@7LXX0%U'P^V0SJ#Z!$\`7<42(MO0$B%TG5*QD51`.M$9F:09I!)
+MBY0D&`D``$R-JGB&`0!F@7L@A0!W&4@/MT,@2@^VA"!`"```2&G`B`$``$R-
+M+`)(@SPD`'4(0<:%X`````"`>R2!=0N`9PSW9F9FD&9FD$B#/"0`#X7[````
+MQD,D`/:#E@```"`/A!8"``!(BVMH2(7M#X0)`@``]H6I`````G0D2(.]H```
+M``!T&DB#>T@`=!-(B[V@````BU,T2(MS2.@`````00^V16K!X`A(F$F+E"3`
+M$```BX0"0`@``(D%`````(G"P>H0B)6;````P>@89HF%D````$$/MD5JP>`(
+M2)A)BY0DP!```(N4`D0(``")%0````!F#[;"9HF%E`````^VQF:)A98```")
+MT,'H$&8/ML!FB868````P>H8B)6:````00^V16K!X`A(F$F+E"3`$```BX0"
+M3`@``(D%`````&8/ML!FB862````Z2P!``"`>R2`=03&0R0A2(LT)$C'QP``
+M``"X`````.@`````9H%[..$!=1@/MD,Z@^@1/`%W#4B)[^@`````Z>T```#V
+M1"0#`71YBT,X)?___P`]X0$.`'1J00^V16K!X`A(F$F+E"3`$```BX0"0`@`
+M`(D%`````$$/MD5JP>`(2)A)BY0DP!```(N$`D0(``")!0````!!#[9%:L'@
+M"$B828N4),`0``"+A`)("```B04`````2(G>3(GGZ`````#K;8!\)`,`>21)
+MBP0DBX!8`0``B04`````B<&%P'1028L$)(F(6`$``.M$9I"`/"0`>#R`?"0'
+M`'DU28L4)`^W0S)FP>@%#[?`C02%``,``(F"<`$``$F+%"0/MTLR@^$?N`$`
+M``!(T^")@G0!``!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#D)"0D)!(@^PH
+M2(E<)`A(B6PD$$R)9"083(EL)"!(B?-)B?Q$#[9N)$B+EQ@)``!(C:IXA@$`
+M9H%^((4`=QE(#[=&($@/MH0X0`@``$AIP(@!``!(C2P"183M=2!FQX7`````
+M``"`>S@<=1&`>SH"=0M(B=Y(B>_H`````$B#>W@`=!)(C7-X3(GGZ`````!F
+M9I!F9I!(B=Y,B>?H`````$&`_09T/4B-G5@!``!)BWPD*$B)WN@`````QX58
+M`0``@(0>`$C'A6@!````````2(FM<`$``$F+?"0H2(G>Z`````!(BUPD"$B+
+M;"003(MD)!A,BVPD($B#Q"C#9F:09F:09F:02(/L*$B)'"1(B6PD"$R)9"00
+M3(EL)!A,B70D($B)_4B%_P^$PP```$B+1TA,BRA,B>_H`````$B)PTR-<%A(
+MA<`/A*0```!,B>_H`````$F)Q$B%P'402(G>3(GOZ`````#IA````,9#):P/
+MMT4P9HE#($R):RC'@Y0````(````3(EC>$F+1"002(E#2,=#-``(``!(C87D
+M````2(E#4,9#,"!(QX.@`````````,9#.!S&0SD!QD,Z`L9#.PC&0SP`O@``
+M``!,B??H`````(M3-$F+="083(GWZ`````!(B=Y,B>_H`````$B+'"1(BVPD
+M"$R+9"003(ML)!A,BW0D($B#Q"C#9F9FD&9F9I!!5T%6055!5%532(/L"$F)
+M_TF)]4&)UDB+1TA(BRA!O`````!$B>(/ML(/MH0H0`@``#S_=$L/ML!(:=B(
+M`0``2(G?2`.]&`D``$B!Q\P```"Z"````$F-=0SH`````(3`=!Y(BX48"0``
+M1(BT`P8!``!(BX48"0``3(F\`Q@!``!!_L1YGDB#Q`A;74%<05U!7D%?PV9F
+M9I!F9F:09F:02(/L2$B)7"082(EL)"!,B60D*$R);"0P3(ET)#A,B7PD0$B)
+M?"003(MV2$$/MD8"08G%0<'E"&9!#[9&`T$!Q4$/M\6#P`0/MU8T.=`/C]L`
+M``!)C5X(0;\`````00^WQ4J-1#`$2#G8#X:P````D`^V`X3`#XB%````@^`/
+M/`9U?O9#`\!T!O9#!<!U<O8#$'0P2(UK"$&\`````(![!`!V70^V4P-(B>Y(
+MBWPD$.@`````2(/%'$'_Q$0X8P1WXNL]2(UK!$&\`````(![`@!V+4$/ML>)
+M1"0,9F:09I"+5"0,2(GN2(M\)!#H`````$B#Q1Q!_\1$.&,"=^)FD$'_QT@/
+MMD,!2(U<&`)!#[?%2HU$,`1(.=@/AU'___^^`0```$B+?"00Z`````!(BUPD
+M&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\)$!(@\1(PV9F9I!F9F:09F9FD&9F
+MD$&)RTB+1TA,BPBY`````$2-%!8/ML%"#[:$"$`(```\_W0]#[;`28N1&`D`
+M`$QIP(@!``!!.+00!@$``'4B23F\$!@!``!U&$6(E!`%`0``28N!&`D``$6(
+MG``$`0``D/[!>:_SPV9F9I!F9I!F9I!(BW]0@+_`````3W<W2`^VA\````!(
+MC01`2,'@!(T4%HB4.,D```!(#[:'P````$B-!$!(P>`$B(PXR````/Z'P```
+M`//#9F9FD&9FD&9FD$%7059!54%455-(@^P(28G_2(M.2`^V00+!X`AF#[91
+M`P'0#[?`@\`$#[=6-#G0#X\%`0``2(U1",9$)`<`0;X`````#[9)`0^V0@(`
+M1"0'2`^V0@-(C50"!$'_QD0X\7/F2(G50;T`````0;X`````1#IT)`</@Z8`
+M``!F9F:0#[9-`4$!S0^V10`\`0^4PCP7#Y3`"="H`70U1(GK*,M$..MS:T&-
+M1@%$#[;@9F:0#[9-``^V\T2)XDR)_^@`````_\-$..MRY^M%9F:09I!)BT=0
+M@+C!`````70S1(GK*ET!1#CK<RA!C48!1`^VX`^V30`/MO-$B>),B?_H````
+M`/_#1#CK<N=F9F:09F:02(/%!$'_QD0Z="0'#X)>____28M'4,:`P0````&^
+M!P```$R)_^@`````2(/$"%M=05Q!74%>05_#9F9FD&9FD$B#["A)B?E!N/__
+M__](B>?\N0(```"X`````/-(J\<'`````&8Y\7-59F9FD&9FD&:#^0YW"P^W
+MT4(/M@0*B`04#[?!0@^V!`B#Z#`\"7<A08#X_[@`````1`]$P$$/ML!KP`H/
+MM]%"`@0*1(U`T.L&08#X_W4'_\%F.?%RLD$/ML!(@\0HPV9FD&9FD&9FD$&)
+MT4B+1TA,BP"Z`````)`/ML)"#[:$`$`(```\_W0P#[;`28N(&`D``$AIP(@!
+M``!(.;P(&`$``'450#BT"`4!``!U"T2(C`@'`0``PV:0_L)YO//#9F9FD&9F
+MD&9FD$%505154TB#[`A)B?5!B=1(BV]0NP````!F9F:09F:02&/#2(T$0$C!
+MX`1(C8PHP`````^V40B`^@$/E\"`^A</E<(/ML"%PG0V1#AA"74P00^V50.`
+M^B&X(`````]#T$AC^TB-/'](P><$2(V\+]@````/MM))C74$Z`````"0_\.#
+M^T]^F4B#Q`A;74%<05W#9F9FD&9F9I!F9I!F9I!!5T%6055!5%532(/L*$B)
+M?"0@0;T`````2(M&2$B)1"08#[9``HG!P>$(2(M4)!AF#[9"`P'!#[?!@\`$
+M#[=6-#G0#X\7`0``3(MD)!A)@\0(QD0D%P`/M\%(BU0D&$B-1!`$3#G@#X;D
+M````#[?!2(U$$`1(B40D"`^WR4B)#"1!#[9$)`+!X`AF00^V5"0#1(TT`D$/
+MM_9)C7PD!.@`````//]U:4&)Q4$/M\9*C5P@!$@Y7"0(=FU(BP0D2(M4)!A,
+MC7P0!`^V0P+!X`AF#[93`XTL`@^W]4B->P3H`````#S_=0Y!@/W_=3I!O0``
+M``#K,D0XZ$0/0N@/M\5(C5P8!$DYWW>_ZQQF9I!FD(G"1"CJ#[;2#[9T)!=(
+MBWPD(.@`````#[94)!=,B>9(BWPD(.@`````_D0D%T$/M\9.C60@!$PY9"0(
+M#X<P____O@(```!(BWPD(.@`````2(/$*%M=05Q!74%>05_#D%-(B?M(BTY(
+M#[9!`L'@"&8/ME$#`=`/M\"-4`0/MT8T.<)_'TB+OR`!``!(8])(B<[H````
+M`+X`````2(G?Z`````!;PV9F9I!F9F:09F:02(/L.$B)7"0(2(EL)!!,B60D
+M&$R);"0@3(ET)"A,B7PD,$F)]4F)_@^V1B2(1"0'9H%^((4`#X>K````2`^W
+M1B"`O#A`"```_P^$F````&:#?B!_=RI(#[:$.$`(``!(BY<8"0``2&G`B`$`
+M`$B+1!!(2`^V0`A(!<`(``#K;9!F@7X@@0!W+D@/MT8@2`^VA#A`"```2(N7
+M:`D``$AIP,@/``!(BT00"$@/MD`(2`7`"```ZS9(#[=&($@/MH0X0`@``$B+
+MET`)``!(:<#0````2(N$$(@```!(#[9`"$@%P`@``.L%N+\)``!-#[9\!@9-
+M:?^H````3XV\-Z`!``!)BY88"0``2(VJ>(8!`&9!@7T@A0!W&4D/MT4@2@^V
+MA#!`"```2&G`B`$``$B-+`*`?"0'``^%-`(``&;'A<```````$&`?3@<#X4@
+M`@``00^V13J#^`)T48/X`G\*@_@!="?I!P(``(/X!V9F9I!T*8/X"@^%]0$`
+M`$R)[DB)[^@`````Z>4!``!,B>Y(B>_H`````.G5`0``3(GN2(GOZ`````#I
+MQ0$``$R)[DB)[^@`````2(V=6`$``$B+14A(BP!(BW@H2(G>Z`````#'A5@!
+M``"`A!X`2,>%:`$```````!(B:UP`0``2(M%2$B+`$B+>"A(B=[H`````)#&
+M14+_0;P`````08!_#@`/AJ\```!)C5]@9F9FD&9FD$B)W^@`````2(G%2(M#
+M"$B):PA(B5T`2(E%"$B)*(!]0O]T;(!]00!U;8"]X0`````/A!D!``!(#[9%
+M0*@"=`RH!'0(J`$/A=(```!(#[9%0*@"=0RH!'0(J`$/A=(```!(#[9%0*@"
+M#X3B````J`0/A-H```"H`0^%T@```$B)[DR)]^@`````Z<(```!FD,:%X0``
+M``!!_\1%.&<.#X=<____13AG#G570;P`````08!_#@!V2DF-7V!F9I!FD$B)
+MW^@`````2(G%2(M#"$B):PA(B5T`2(E%"$B)*(!]0O]T%`^V14$\(@^4PCP-
+M#Y3`"="H`75*0?_$13AG#G>_0<9'"?],B?Y,B??H`````(!\)`<`#X6%````
+MZS(/ME5Y2(MU4$B)Z4R)_^@`````ZQU(B>Y,B??H`````&:0ZPZ^"@```$B)
+M[^@`````D$F#?7@`=`Q)C75X3(GWZ`````!,B>Y,B??H`````(!\)`<`="QF
+M_X7`````9H.]P`````IV#F;'A<```````.E,_O__O@H```!(B>_H`````$B+
+M7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9F9I!F9F:0
+M2(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$B)_4&)]TB+1TA,
+MBRA,B>_H`````$B)PTR-<%A(A<`/A*0```!,B>_H`````$F)Q$B%P'402(G>
+M3(GOZ`````#IA````,9#):P/MT4P9HE#($R):RC'@Y0````(````3(EC>$F+
+M1"002(E#2,=#-``(``!(C87D````2(E#4,9#,"!(QX.@`````````,9#.!S&
+M0SD!1(A[.L9#.PC&0SP`O@````!,B??H`````(M3-$F+="083(GWZ`````!(
+MB=Y,B>_H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#
+M9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G]2(M'2$R+
+M,$B+ER`!```/MD("B</!XPAF#[9"`P'##[?#@\`$/0`(```/C\X```!,B??H
+M`````$B)Q4B%P`^$N@```$R)]^@`````28G'2(7`=1!(B>Y,B??H`````.F:
+M````3(UE6$B+>!`/M]N#PP1(8]-)B[4@`0``Z`````#&126L00^W13!FB44@
+M3(EU*(E=-(.-E````!))BT<02(E%2$R)?7A)C87D````2(E%4,9%,"!(QX6@
+M`````````,9%.!W&13D0QD4Z`@^VQXA%.XA=/+X`````3(GGZ`````"+531)
+MBW<83(GGZ`````!(B>Y,B??H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT
+M)"A,BWPD,$B#Q#C#9F9FD&9F9I!F9I!328G208G+2(M'2$R+`$R+3U"[````
+M``^VPT(/MI0`0`@``(#Z_W18#[;"28N(&`D``$AIP(@!``!(.;P(&`$``'4]
+M0#BT"`4!``!U,T6$VW0-2(N$"!`!``!)B0+K)0^VPDF+B!@)``!(:<"(`0``
+M28L22(F4"!`!``#K!V9FD/[#>9.[`````&9F9I!F9I`/ML-(C01`2,'@!$J-
+M/`A(C8_`````#[91"(#Z`0^7P(#Z%P^5P@^VP(7"=#-`.'$)=2U%A-MT#$B+
+MA]````!)B0+K(P^VPTB-!$!(P>`$28L22HF4"-````#K"V9F9I#_PX#[3W:9
+M6\-F9F:09F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@28G\B?%(BY<@`0``
+M#[9"`HG'P><(9@^V0@,!QP^WQX/`!#T`"```?V1`A/9T#D$/MH0D"`$``(A"
+M`>L,#[9"`4&(A"0(`0``2(U""$B)!"2[``````^WQTB-1!`$2#L$)'8J1`^V
+MZ0^WQTB-;!`$#[;S1(GI2(GB3(GGZ`````#_PTB#!"0$2#LL)'?B2(M<)`A(
+MBVPD$$R+9"083(ML)"!(@\0HPV:02(/L&$B)7"0(2(EL)!!(B?N)U4C'!"0`
+M````@']#`70_0`^V]KD!````2(GBZ`````!(@SPD`'0G2(L$)(`(@$"$[70+
+M2(L$)(!(`R#K"9!(BP0D@&`#WTB)W^@`````2(M<)`A(BVPD$$B#Q!C#D$B#
+M[!A(B1PD2(EL)`A,B60D$$B)\TF)_$B+;FAF@7X@A0`/AY@```!(#[=&(("\
+M.$`(``#_#X2%````9H-^(']W(D@/MH0X0`@``$B+EQ@)``!(:<"(`0``2(M$
+M$$@/ME`(ZV%F@7X@@0!W)T@/MT8@2`^VA#A`"```2(N7:`D``$AIP,@/``!(
+MBT00"`^V4`CK,D@/MT8@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B```
+M``^V4`CK"&9FD+K_____N?____]F@7L@A0!W#D@/MT,@0@^VC"!`"```@/K_
+M="$/ML)"@+P@Q@@``/\/E,*`^?\/E,`)T*@!=0:`>R0&=3I(@WMX`'032(US
+M>$R)Y^@`````9F9FD&9FD$B)WDR)Y^@`````QT50_____TB)[_]52.MV9F:0
+M9F:0@'LD`'4[]H.4````"&9FD'002(M],(M3-$B+<TCH`````,=%4`````!(
+M@WTX`'0)2(M5.(M%((D"2(GO_U5(ZP_'15#_____2(GO_U5(9I!(@WMX`'0,
+M2(US>$R)Y^@`````2(G>3(GGZ`````!FD$B+'"1(BVPD"$R+9"002(/$&,-F
+M9F:09F:09F:09F:02(/L2$B)7"082(EL)"!,B60D*$R);"0P3(ET)#A,B7PD
+M0$B)_4&)UT&)SDR)1"0(0(AT)!=(BT=(3(LH3(GOZ`````!(B<-(C4!82(D$
+M)$B%VP^$V````$R)[^@`````28G$2(7`=1!(B=Y,B>_H`````.FX````QD,E
+MK`^W13!FB4,@2(M4)`A(B5-H3(EK*,>#E`````@```!,B6-X28M$)!!(B4-(
+M1(ES-$B-A>0```!(B4-0QD,P($C'@Z``````````QD,X/,9#.0(/MD0D%XA#
+M.D2)^,'H$(A#.TR)^@^VQHA#/$2(>SU$B?#!Z!"(0SY,B?(/ML:(0S]$B'-`
+MQD-!`+X`````2(L\).@`````BU,T28MT)!A(BSPDZ`````!(B=Y,B>_H````
+M`$B+7"082(ML)"!,BV0D*$R+;"0P3(MT)#A,BWPD0$B#Q$C#9F9FD&9FD&9F
+MD&9FD$B#[$A(B5PD&$B);"0@3(ED)"A,B6PD,$R)="0X3(E\)$!)B?R)TT&)
+MSDR)1"0(0(AT)!=(BT=(3(LX3(G_Z`````!(B<5(A<`/A.X```!,B?_H````
+M`$F)Q4B%P'412(GN3(G_Z`````#IS@```)!(C4582(D$)$F+?1!$B?))B[0D
+M(`$``.@`````QD4EK$$/MT0D,&:)12!(BU0D"$B)56A,B7TH1(EU-(.-E```
+M`!))BT402(E%2$R);7A)C80DY````$B)15#&13`@2,>%H`````````#&13@[
+MQD4Y`@^V1"07B$4ZB=C!Z!"(13L/ML>(13R(73U$B?#!Z!"(13Y,B?(/ML:(
+M13]$B'5`QD5!`+X`````2(L\).@`````BU4T28MU&$B+/"3H`````$B)[DR)
+M_^@`````2(M<)!A(BVPD($R+9"0H3(ML)#!,BW0D.$R+?"1`2(/$2,-)B=%(
+MA?\/E,)(A?8/E,`)T*@!=1)-A<D/E,)(A<D/E,`)T*@!=`FX`````,-F9I!F
+M08'XA0!W#D$/M\"`O#A`"```_W4&N`````##0<9!..%!QD$Y`4'&03H39D6)
+M02!)B7$H28F)H````+@!````PV9F9I!F9F:09F9FD&9FD$B+1PB+0`2)!0``
+M``")PH'*```,`"7___/_0(3VB=$/1,A(BT<(B0A(BT<(B4@,2(M'"(E($$B+
+M1PB)2!1(BT<(B4@82(M'"(E(!,.0D)"03(M4)"!,BUPD,`^WQST1)P``?T`]
+M$"<```^-@0```#TB(0``='H](B$``&9FD&:0?Q`]("$``'1G9F9FD&9FD.MD
+M/4`A``!T5SU$(0``9I!T3NM2/8`G``!F9F:09F:0=#X]@"<``'\,+2`G``"#
+M^`)W,^LK/8"1``!T)#V`D0``?P\]@B<``'069F:09F:0ZQ0]@)0``'4-9F9F
+MD&9FD,8&0,8"`L8!!`^V%DB+1"08B!!F0<<"@`!F0<<#``!!Q@$@2(M$)`AF
+MQP```0^V%DB+1"00B!!F#[8&9D$#`F9!`P-(BU0D*&:)`F9!B0!!#[<22(M$
+M)#AFB1!!#[<2@\(+2(M$)$!FB1##9F:09I!!5T%6055!5%532(/L&$F)_TF)
+MUD"(="072(LONP````!F@WU8``^&AP(``&9F9I")V&;!Z`4/M\"+A(6<````
+MB=F#X1](T_BH`0^%5P(```^WTTB+A9`)``!(BPS02(7)#X1``@``O@````"+
+M03@E____`#WA`1``#X7!````387V#X4?`@``9H%Y((4`#X>>````2`^W02"`
+MO"A`"```_P^$BP```&:#>2!_=R5(#[:$*$`(``!(BY48"0``2&G`B`$``$B+
+M1!!(#[90".E5`0``9H%Y(($`=RI(#[=!($@/MH0H0`@``$B+E6@)``!(:<#(
+M#P``2(M$$`@/ME`(Z2,!``!(#[=!($@/MH0H0`@``$B+E4`)``!(:<#0````
+M2(N$$(@````/ME`(Z?8```"Z_____^GL````9F9FD&:!>2"%``^'E0```$@/
+MMT$@@+PH0`@``/\/A((```!F@WD@?W<B2`^VA"A`"```2(N5&`D``$AIP(@!
+M``!(BT002`^V4`CK7F:!>2"!`'<G2`^W02!(#[:$*$`(``!(BY5H"0``2&G`
+MR`\``$B+1!`(#[90".LO2`^W02!(#[:$*$`(``!(BY5`"0``2&G`T````$B+
+MA!"(````#[90".L%NO____]F@7D@A0!W.D@/MT$@@+PH0`@``/]T*TB+M1@)
+M``!F@7D@A0!W%4@/MH0H0`@``$AIP(@!``!(`<;K!TB!QGB&`0!!.%<(=7E-
+MA?9T"T$/MT8P9CM!('5I@'PD%P9T3XM1.('B____`('ZX0$0`'0^2`^V1D"H
+M`G0UJ`1T,:@!=2V`ON``````9I!U(H'ZX0$/`'0M#[9$)!>(022Z`0```$B)
+MSDR)_^@`````ZQ,/MD0D%XA!)`^W\TR)_^@`````_\-F.5U8#X=]_?__@'PD
+M%X$/A(<!``!!O`````!(BY7H````2(V%Z````$@YT'0+0?_$2(L22#G0=?5F
+M187D#X19`0``2(V%Z````$B)PD@YA>@````/A$(!``!)B<5(B40D"&9FD&:0
+M2(G32(G7Z`````!(B<%-A?9T)4$/MT8P9CM!('0:2(M#"$B)2PA(B1E(B4$(
+M2(D(0?_,Z>4```!F@7D@A0`/AY4```!(#[=!(("\*$`(``#_#X2"````9H-Y
+M(']W(D@/MH0H0`@``$B+E1@)``!(:<"(`0``2(M$$$@/ME`(ZUYF@7D@@0!W
+M)T@/MT$@2`^VA"A`"```2(N5:`D``$AIP,@/``!(BT00"`^V4`CK+T@/MT$@
+M2`^VA"A`"```2(N50`D``$AIP-````!(BX00B`````^V4`CK!;K_____03A7
+M"'4DBT$X)?___P`]X0$/`'05#[9$)!>(021(B<Y(B>_H`````.L228M%"$F)
+M30A,B2E(B4$(2(D(0?_,9D6%Y'022(M4)`A(.97H````#X7+_O__2(/$&%M=
+M05Q!74%>05_#9F9FD&9F9I!F9F:00;@`````9H-_6``/AAT!``!,BX^0"0``
+M00^WP$F+#,%(A<D/A/<```!F@7D@A0`/AYL```!(#[=!(("\.$`(``#_#X2(
+M````9H-Y(']W(D@/MH0X0`@``$B+EQ@)``!(:<"(`0``2(M$$$@/ME`(ZV1F
+M@7D@@0!W)T@/MT$@2`^VA#A`"```2(N7:`D``$AIP,@/``!(BT00"`^V4`CK
+M-4@/MT$@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B`````^V4`CK"V9F
+MD&9FD+K_____N/\```!F@7D@A0!W#D@/MT$@9@^VA#A`"```#[?`2&G`B`$`
+M`$@#AQ@)``!`./)U&D@/MD!`J`%T$:@$=`VX`0```,-F9F:09F:00?_`9D0Y
+M1U@/A^K^__^X`````,-F9F:09F9FD&9F9I!(BT=(3(L`38N8D!```$&Z````
+M`+X`````9D&#>%@`=DA-BXB0"0``#[?628,\T0!T+DF+#-&+03@E____`#WA
+M`1``=!L/MT<P9CM!('412(G02,'@!F9&.508"'0+9I#_QF9!.7!8=[]F03EP
+M6'0*0?_"9D&#^A]VFD$/M\)FD,-F9F:09F9FD&9F9I!F9I!(@W]0`'0>2(M'
+M4,8`<$B+1U!`B'`"2(M'4,9`!P!(BT=0B%`,\\-F9I!F9I!F9I#SPV9F9I!F
+M9F:09F:09F:028GXB?)(B=&!X?\!``!(BX>0"0``2(,\R`!T+$B+/,@/MD<E
+M00^VL-X```")\=/@1`^WP`^WTKC__P``T^`APDB)^$$YT'0%N`````#SPY!5
+M4TB#[`A(B?5F@7XXX0$/A:T````/MD8Z@^@1/`$/AYX```"X_P```&:!?B"%
+M`'<-2`^W1B`/MH0X0`@``(G`2&G`T````$B)PT@#GT`)``"`>T3_=4RX%```
+M`("]F`````!T"0^VA9@````!P`^VP&G`0$(/`(F#D````$C'@Z``````````
+M2(F;J````$B-LY````!(BW\HZ`````#&0T0`2(U#*$B+4`A(B6@(2(E%`$B)
+M50A(B2K^0T7IJ````+C_````9H%]((4`=PU(#[=%(`^VA#A`"```B<!(:<"(
+M`0``2(G#2`.?&`D``(M%."7___\`/>$!$`!T;(![>/]U3+@4````@+V8````
+M`'0)#[:%F`````'`#[;`:<!`0@\`B8,H`0``2,>#.`$```````!(B9M``0``
+M2(VS*`$``$B+?RCH`````,9#>`!(C4,@2(M0"$B):`A(B44`2(E5"$B)*OY#
+M>TB#Q`A;7<-F9F:09F9FD&9F9I!F9I!32(GS@'YX_W042(VV*`$``$B+?RCH
+M`````,9#>/];PU-(B?.`?D3_=!1(C;:0````2(M_*.@`````QD-$_UO#2(/L
+M*$B)7"0(2(EL)!!,B60D&$R);"0@28G\2(GS9H%^..$!#X76````#[9&.H/H
+M$3P!#X?'````N?\```!F@7X@A0!W#4@/MT8@#[:,.$`(``")R$AIP-````!(
+MB<5)`ZPD0`D``('Y_P````^$8@$``/Y-14R-;2A,B>_H`````$B)P4@YV'5+
+M2(GN3(GGZ`````!,.6TH#X0V`0``QX60`````"TQ`4C'A:``````````2(FM
+MJ````$B-M9````!)BWPD*.@`````QD5$`.D``0``2(U5*$B+12A(B4@(2(D!
+M2(E1"$B)32A(BU,(2(L#2(E0"$B)`NG6````D+G_````9H%[((4`=PY(#[=#
+M($(/MHP@0`@``(G(2&G`B`$``$B)Q4D#K"08"0``BT,X)?___P`]X0$0``^5
+MP('Y_P````^5P@^VP(7"#X2"````_DU[3(UM($R)[^@`````2(G!2#G8=49(
+MB>Y,B>?H`````$PY;2!T6L>%*`$````M,0%(QX4X`0```````$B)K4`!``!(
+MC;4H`0``28M\)"CH`````,9%>`#K)V:02(U5($B+12!(B4@(2(D!2(E1"$B)
+M32!(BU,(2(L#2(E0"$B)`DB+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-FD$B#
+M[!A(B1PD2(EL)`A,B60D$$B)^TB)]4@/MT8P9D0/MJ0X0`@``$$/M_1(:?:(
+M`0``2`.W&`D``$B!QB`!``#H`````$@/MU4P2(.\TT`$````=!Y(BX330`0`
+M`$B#N(``````=0Q(QX330`0```````!(#[=%,,:$&$`(``#_00^W]$B-NY`/
+M``#H`````$$/M\1(BY,8"0``2&G`B`$``(!\$&K_=`Q(C3002(G?Z`````!(
+MB>Y(B=_H`````$$/M\1(BY,8"0``2&G`B`$``,9$$$(`2(N3&`D``,9$$$,!
+M2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9I!F9I!!5T%6055!5%532(/L"$F)
+M_4&)]T&^@````&9FD&9FD$$/M\9F0@^VA"A`"```9CW_``^$ZP```&9!@?Z!
+M``^'?`````^WP$AIP,@/``!)B<1-`Z5H"0``O0````!!@'PD6``/AK<```!)
+MC5PD2&:02(G?Z`````!(C4CP2(M3"$B)0PA(B1A(B5`(2(D"BT%`)0#__P`]
+M``#_`'45]D%#!'0/2(-Y.`!T"$B+03A$B'@!_\5!.&PD6'>UZV-F9I`/M\!(
+M:<#0````2(G"20.50`D``+T`````@'H[`'9!D(GI#[;!2(M,PEA(A<ET)(M!
+M0"4`__\`/0``_P!U%?9!0P1T#TB#>3@`=`A(BT$X1(AX`?_%0#AJ.W?%9F:0
+M9I!!_\=!_\9F08'^A0`/AN[^__]-.:W0"```=1))@<4`%```1(G^3(GOZ+/^
+M__](@\0(6UU!7$%=05Y!7\-F9F:04TB)^T@/MD9;9@^VM#A`"```QH0X0`@`
+M`/\/M_9(C;\`$```Z`````!(B[O0"```O@````#H9O[__UO#9F9FD%532(/L
+M"$B)_4@/MT9`9@^VG#A`"```QH0X0`@``/\/M_-(C;_(#P``Z``````/M]M(
+MBY5`"0``2&G#T````(!\$%#_=`Q(C3002(GOZ`````!(B[W0"```O@````#H
+M_?W__TB#Q`A;7<-F9I!F9I"Y`````+K0````2(GX9F:0B`A(_\!(_\IU]L9'
+M1/_&1U#_2(U'*$B)1RA(B4<PPY!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!(
+MB?U(C;_(#P``Z`````"Z`````(3`#X71````2(V]R`\``.@`````08G%NX+_
+M__\/ML.`O"A`"```_W40.)W@````<P^(G>````#K!__#@/N%=MRZ`````(#[
+MA@^$BP````^VPT2(K"A`"```00^WQ4QIX-````!,B>=(`[U`"0``Z`````!(
+MBY5`"0``9@^VPV9!B4040(!]40%U#TB+A4`)``!F0<=$!$S__T$/M]U(BX5`
+M"0``2&G;T````,9$`T(`2(N%0`D``&;'1`-.``!(B[W0"```O@````#HQ?S_
+M_TB)VD@#E4`)``!(B=!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#9F9FD&9F
+M9I!F9F:09F:02(/L"$@/MD8(9@^VM#C&"```QH0XQ@@``/\/M_9(@<<X$```
+MZ`````!(@\0(PV:0N0````"ZB`$``$B)^&9FD(@(2/_`2/_*=?;&1WC_QD=J
+M_\9'>A](C4<@2(E'($B)1RC#9F9FD&9FD&9FD&9FD$%505154TB#[`A(B?U(
+MC;^0#P``Z`````"Z`````(3`#X4_`0``2(V]D`\``.@`````08G%NP````!F
+M9I!F9I`/ML.`O"A`"```_W469@^VPV8YA=P```!S#6:)A=P```#K!/[#>=FZ
+M`````(#[@`^$\`````^VPT2(K"A`"```00^WQ4QIX(@!``!,B>=(`[T8"0``
+MZ`````!(BY48"0``9@^VPV9!B404,$B+A1@)``!!QD0$0@!(BX48"0``0<9$
+M!&7_2(N%&`D``$'&1`1D_TB+A1@)``!!QD0$9O](BX48"0``0<9$!&C_2(N%
+M&`D``$'&1`1G_TB+A1@)``!!QD0$:?](BX48"0``0<:$!.(`````2(N%&`D`
+M`$'&A`0'`0``_TB)[^@`````2(N5&`D``$F)A!0@`0``@'U1`74-2(N%&`D`
+M`$&`3`1$`4$/M\5(:<"(`0``2(G"2`.5&`D``$B)T$B#Q`A;74%<05W#9F9F
+MD&9FD&9FD&9FD%532(/L"$B)_4B-OP`0``#H`````+H`````A,`/A1H!``!(
+MC;T`$```Z`````")Q[Z`____B?(/ML*`O"A`"```_W420#BUWP```',10(BU
+MWP```.L(_\9`@/Z!=M>Z`````$"`_H(/A,\```")\@^VPD"(O"A`"```#[?'
+M2&G`R`\``+D`````NL@/``!(`X5H"0``B`A(_\!(_\IU]@^WWTAIV\@/``!(
+MB=I(`Y5H"0``2(U"&$B)0AA(B=A(`X5H"0``2(/`&$B)0`A(B=I(`Y5H"0``
+M2(U"*$B)0BA(B=A(`X5H"0``2(/`*$B)0`A(B=I(`Y5H"0``2(U"2$B)0DA(
+MB=A(`X5H"0``2(/`2$B)0`A(BX5H"0``0(AT`UM(B[W0"```O@````#H;OG_
+M_TB)VD@#E6@)``!(B=!(@\0(6UW#9F9FD&9FD&9FD%-(B?M(C;\X$```Z```
+M``"Z`````(3`#X7+````2(V[.!```.@`````B<>^`````(GR#[;"@+P8Q@@`
+M`/]U$4`X<TQS$T"(<TSK#69FD&:0_\9`@/X#=MBZ`````$"`_@0/A($```")
+M\@^VPD"(O!C&"```#[?'2&G`J````+D`````NJ@```!(C808H`$``(@(2/_`
+M2/_*=?8/M]=(:=*H````2`':2(V"T`$``$B)@M`!``!(B4`(2(V"Z`$``$B)
+M@N@!``!(B4`(2(V"``(``$B)@@`"``!(B4`(2('"H`$``$"(<@A(B=!;PV9F
+MD$B#[!A(B5PD"$B);"002(G]2(V'"`$``+H`````2#F'"`$``'0F2(V_"`$`
+M`.@`````2(G#2(G'Z`````!(B>_H`````$B)0W!(B=I(B=!(BUPD"$B+;"00
+M2(/$&,-FD$B#[`A(C8<(`0``2(M0"$B)<`A(B09(B58(2(DR2(-^<`!T#$B#
+MQG#H`````&9FD$B#Q`C#9F9FD&9F9I!F9I!(@^P(2(V'&`$``+H`````2#F'
+M&`$``'032(''&`$``.@`````QD`0`$B)PDB)T$B#Q`C#9F9FD&9F9I!F9F:0
+M2(L&2(''&`$``$B+5PA(B4<(2(DX2(E0"$B)`DC'!@````##9F9FD&9F9I!F
+M9F:02(/L"$B-ER@!``"X`````$@YER@!``!T"$B)U^@`````2(/$",-F9F:0
+M9F:09F:02(L&2(''*`$``$B+5PA(B4<(2(DX2(E0"$B)`DC'!@````##9F9F
+MD&9F9I!F9F:02(/L"$B-ET@!``"X`````$@YET@!``!T(DB)U^@`````O@``
+M``"YH````$B)PF:00(@R2/_"2/_)=?5(@\0(PTB!QT@!``!(BT<(2(EW"$B)
+M/DB)1@A(B3##9F:09F:02(/L"$B-EU@!``"X`````$@YEU@!``!T"$B)U^@`
+M````2(/$",-F9F:09F:09F:02(L&2(''6`$``$B+5PA(B4<(2(DX2(E0"$B)
+M`DC'!@````##9F9FD&9F9I!F9F:02(/L"$B-AS@!``"Z`````$@YAS@!``!T
+M%TB!QS@!``#H`````$C'0"``````2(G"2(G02(/$",-F9F:09F9FD$B+!DB!
+MQS@!``!(BU<(2(E'"$B).$B)4`A(B0)(QP8`````PV9F9I!F9F:09F9FD$B#
+M[$A(B5PD&$B);"0@3(ED)"A,B6PD,$R)="0X3(E\)$!(B?U)B?1F@7X@A0`/
+MAYP```!(#[=&(("\.$`(``#_#X2)````9H-^(']W(D@/MH0X0`@``$B+EQ@)
+M``!(:<"(`0``2(M$$$@/MD`(ZV5F@7X@@0!W)T@/MT8@2`^VA#A`"```2(N7
+M:`D``$AIP,@/``!(BT00"`^V0`CK-D@/MT8@2`^VA#A`"```2(N70`D``$AI
+MP-````!(BX00B`````^V0`CK#&9F9I!F9I"X_____P^VP$P/MK0HQ@@``$UI
+M]J@```!-C;0NH`$``$B+E6@)``!,C;HXN`\`9D&!?"0@A0!W&DD/MT0D($@/
+MMH0H0`@``$AIP,@/``!,C3P"28M4)$@/MD(!@_@2=!`]D0````^$)0$``.F0
+M`0``28L&2(E$)`B]``````^V0@F(1"07#[92&HA4)!9!O0````!!@'X.`'8_
+M28U>8&:02(G?Z`````!(B<5(BT,(2(EK"$B)70!(B44(2(DH3#E]4'4,#[9%
+M>4$Z1"0E=`J00?_%13AN#G?'28-\)'@`=`])BW0D>$B+?"0(Z`````!,B>9(
+MBWPD".@`````#[:5P@```(U"`8B%P@```(#Z`W<F@'PD%@!U'T$/ME0D)4B+
+M=5!!N`````"Y`@```$R)]^@`````ZSH/MI7"````C4(!B(7"````@/H"=B6`
+M?"06`'4>QD5#`L9%0O^`943^2(GN2(M\)`CH`````.FN````#[9,)!8/ME0D
+M%TR)_DR)]^@`````Z90```!F9F:0N0````!!O0````!!@'X.`'8[28U>8$B)
+MW^@`````2(G!2(M#"$B)2PA(B1E(B4$(2(D(3#EY4'4+#[9!>4$Z1"0E=`E!
+M_\5%.&X.=\E(#[9!0*@"=!JH!'06J`%T$D$/ME0D)4B+<5!,B??H`````$F#
+M?"1X`'0-28MT)'A(B>_H`````$R)YDB)[^@`````2(M<)!A(BVPD($R+9"0H
+M3(ML)#!,BW0D.$R+?"1`2(/$2,-F9F:09F:09F:09F:02(/L*$B)7"0(2(EL
+M)!!,B60D&$R);"0@28G\28GU2(LO2(GOZ`````!(B<-(A<!T<4B)[^@`````
+M2(G"2(7`=&%(C7M8QD,XX<9#.0'&0SH0QD,ENV9!#[9%6V:)0R!)BP0D2(E#
+M*,=#-)````!(C4(02(E#2$B)4WC&0`$`QD(00$C'@Z``````````O@````#H
+M`````$B)WDB)[^@`````2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9FD&:0
+M2(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($F)_$F)]4&)UDB++TB)[^@`
+M````2(G#2(7`='5(B>_H`````$B)PDB%P'1E2(U[6,9#..'&0SD!QD,Z$,9#
+M);MF00^V15MFB4,@28L$)$B)0RC'0S20````2(U"$$B)0TA(B5-XQD`!$,9"
+M$$!$B'`)2,>#H`````````"^`````.@`````2(G>2(GOZ`````!(BQPD2(ML
+M)`A,BV0D$$R+;"083(MT)"!(@\0HPV9FD&9FD$B#[#A(B5PD"$B);"003(ED
+M)!A,B6PD($R)="0H3(E\)#!)B?Q)B?5!B=9!B<](BR](B>_H`````$B)PTB%
+MP`^$@P```$B)[^@`````2(G"2(7`='-(C7M8QD,XX<9#.0'&0SH01(AS)69!
+M#[9%6V:)0R!)BP0D2(E#*,=#-)````!(C4(02(E#2$B)4WC&0`&1QD(00$2(
+M<`E$B'@*2,>#H`````````"^`````.@`````2(G>2(GOZ`````"_H(8!`.@`
+M````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9I!FD$B#
+M[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?Q)B?=)B<U!B=9(
+MBR](B>_H`````$B)PTB%P'4/0<:%X0````'IC````&:02(GOZ`````!(B<)(
+MA<!U%4B)WDB)[^@`````0<:%X0````'K94B->UC&0SCAQD,Y`<9#.A!$B',E
+M9D$/MD=;9HE#($F+!"1(B4,HQT,TD````$B-0A!(B4-(2(E3>,9``1+&0A!`
+M1(AP"4C'@Z``````````O@````#H`````$B)WDB)[^@`````2(M<)`A(BVPD
+M$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9I!54TB#[`A(B?U(B?-F@7X@
+MA0`/AY@```!(#[=&(("\.$`(``#_#X2%````9H-^(']W(T@/MH0X0`@``$B+
+MEQ@)``!(:<"(`0``2(M$$$AF#[9(".M@9H%^(($`=RA(#[=&($@/MH0X0`@`
+M`$B+EV@)``!(:<#(#P``2(M$$`AF#[9(".LP2`^W1B!(#[:$.$`(``!(BY=`
+M"0``2&G`T````$B+A!"(````9@^V2`CK!;G_````OO\```!F@7L@A0!W#D@/
+MMT,@9@^VM"A`"```9H'Y_P!T'`^WP8"\*,8(``#_#Y3"9H'^_P`/E,`)T*@!
+M=!!(B=Y(B>_H`````.F(````#[?!2`^VO"C&"```2&G_J````$B-O"^@`0``
+M9@^V4SMF#[9#/,'@"`'"9H'B_P$/MD,]@_@!=`6#^`AU0`^WTDB+A9`)``!(
+MBP302#M#:'4L#[=(,HG*9L'J!0^WTH/A'TC'P/[___](T\`A1)5<2(M#:`^W
+M<#+H`````)!(B=Y(B>_H`````$B#Q`A;7<-F9F:09F9FD&9FD&9FD$B#[#A(
+MB5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?U)B?1!B==(BR](#[=&
+M($@/MH0H0`@``$AIP(@!``!)B<9,`[48"0``2(GOZ`````!(B<-!#[=4)#*)
+MT&;!Z`4/M\"+1(5<B=&#X1](T_BH`0^%J0```$B%VP^$H````$B->UA!#[9$
+M)"4/MHW>````T^`)T,9#..'&0SD!QD,Z#XA#.V;!Z`B(0SQ$B'L]28N&U```
+M`$B)0SY,B6-HQD,EJD$/MT8P9HE#($F+10!(B4,HQT,T`````$C'0T@`````
+M2,>#H`````````"^`````.@`````2(G>2(GOZ`````!!#[=,)#*)RF;!Z@4/
+MM]*#X1^X`0```$C3X`E$E5Q(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\
+M)#!(@\0XPV9FD&9FD&9FD$B#["A(B1PD2(EL)`A,B60D$$R);"083(ET)"!)
+MB?Q(BT=(3(LP3(GWZ`````!(B<5(A<!U#D'&A"3A`````>FC````3(GWZ```
+M``!)B<5(A<!U'$'&A"3A`````4B)[DR)]^@`````ZWUF9I!F9I!(C5U8QD4X
+M)<9%):M!#[=$)#!FB44@3(EU*,=%-`@```#'A90````(````28M%$$B)14A(
+MC4`(2(E%4,9%,"1,B6UX2,>%H`````````"^`````$B)W^@`````28MU&+H(
+M````2(G?Z`````!(B>Y,B??H`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D
+M($B#Q"C#9F9FD&9F9I!F9F:02(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D
+M($F)_$B+1TA,BS!,B??H`````$B)Q4B%P'4.0<:$).$````!Z:L```!,B??H
+M`````$F)Q4B%P'4<0<:$).$````!2(GN3(GWZ`````#I@@```&9FD$B-75C&
+M13B>QD4Y$,9%12#&126K00^W1"0P9HE%($R)=2C'130@````QX64````"```
+M`$F+11!(B45(3(EM>$B-0"!(B450QD4P)$C'A:``````````O@````!(B=_H
+M`````$F+=1BZ(````$B)W^@`````2(GN3(GWZ`````!(BQPD2(ML)`A,BV0D
+M$$R+;"083(MT)"!(@\0HPV9F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,
+MB70D*$R)?"0P28G\08GV2(M'2$R+*$R)[^@`````2(G#2(7`=1%!QH0DX0``
+M``'IN@```&9FD$R)[^@`````2(G%2(7`=2!!QH0DX0````%(B=Y,B>_H````
+M`.F.````9F9FD&9FD$R->UC&0S@2183V=!/&0SD!QD,Z@,9#/$#K"69FD&:0
+MQD,\),9#):M!#[=$)#!FB4,@3(EK*,=#-&````#'@Y0````(````2(M%$$B)
+M0TA(B6MX2,>#H`````````"^`````$R)_^@`````2(MU&+I@````3(G_Z```
+M``!(B=Y,B>_H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#
+MQ#C#9F:09F:02(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($B)^TB+1TA,
+MBS!,B??H`````$B)Q4&\``@``$B%P'4,QH/A`````>G!````3(GWZ`````!)
+MB<5(A<!U&,:#X0````%(B>Y,B??H`````.F:````D&9!@?P``;C_````1`]#
+MX,9%.!K&13D(QD4Z",9%.P!$B&4\QD4]`,9%):L/MT,P9HE%($R)=2A%#[?D
+M1(EE-,>%E`````@```!)BU402(E52$2)X$@!T$B)15#&13`D3(EM>$C'A:``
+M````````2(U=6+X`````2(G?Z`````!)BW481(GB2(G?Z`````!(B>Y,B??H
+M`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F9FD&9FD&9FD$B#
+M[!A(B1PD2(EL)`A,B60D$$F)_$B+1TA(BRA(B>_H`````$B)PTB%P'4+0<:$
+M).$````!ZU_&0#@5QD`EJT$/MT0D,&:)0R!(B6LHN0$```"Z`0```$B)WDB)
+M[^@`````A,!U&DB)WDB)[^@`````0<:$).$````!ZQIF9F:02,>#H```````
+M``!(B=Y(B>_H`````$B+'"1(BVPD"$R+9"002(/$&,-F9F:09F:0N@0```!`
+M#[;'@_@7=T>)P/\DQ0````"#PB3K.8/".)#K,X/"$.LN@\(<ZRF#PDB0ZR.#
+MPASK'H/"/.L9@\(DD.L3@\(8ZPZ#PA3K"8/"2)#K`X/",(G0PV9F9I!F9F:0
+M2(/L&$B)7"0(2(EL)!!(B?U(B?.`?FK_=!,/MG9J2(L_Z`````#&0VK__DU$
+M2(M<)`A(BVPD$$B#Q!C#9F9FD$@/MD9`J`)T#*@$=`BH`0^$ZP```(!^:O\/
+MA>$```!(BP>+@!@!``")!0````!!B<&Y`````+@!````9F:09I!!B<!!T^!%
+MA<AU.8A.:DB+%T2)R$0)P(F"&`$``$B+!XN`6`$``(D%`````$&)P44AP0^$
+M?P```$B+!T2)B%@!``#K<__!@/D?=K5(BP>+@!P!``")!0````!!B<&Y````
+M`+@!````08G`0=/@187(=3Z-02"(1FI(BQ=$B<A$"<")@AP!``!(BP>+@&`!
+M``")!0````!!B<%%(<%T&4B+!T2)B&`!``#K#69FD&9FD/_!@/D?=K#^1T1F
+M9I!F9I#SPV9F9I!F9F:09F:09F:02(/L&$B)7"0(2(EL)!!(B?U(B?.`?E#_
+M=!,/MG902(L_Z`````#&0U#__DU$2(M<)`A(BVPD$$B#Q!C#9F9FD(!^4/\/
+MA=8```!(BP>+@!@!``")!0````!!B<&Y`````+@!````08G`0=/@187(=36(
+M3E!(BQ=$B<A$"<")@A@!``!(BP>+@%@!``")!0````!!B<%%(<%T?4B+!T2)
+MB%@!``#K<?_!@/D?=KE(BP>+@!P!``")!0````!!B<&Y`````+@!````9F9F
+MD&9FD$&)P$'3X$6%R'4UB$Y02(L71(G(1`G`B8(<`0``2(L'BX!@`0``B04`
+M````08G!12'!=!-(BP=$B8A@`0``ZP?_P8#Y'W:Y_D=$9F:09F:0\\-F9F:0
+M9F9FD&9FD&9FD$%455-)B?Q(BQ^]`````&:#>U@`#X8B`0``9F:09F:0#[?5
+M2(N#D`D``$B#/-``#X3[````00^V3"0(2(L$T&:!>""%``^'Q0```$@/MU`@
+M@+P:0`@``/\/A+(```!F@W@@?W<M2`^VA!I`"```2(N3&`D``$AIP(@!``!(
+MBT002`^V0`@YR`^$BP```.F>````#[?52(N#D`D``$B+!-!F@7@@@0!W*T@/
+MMT`@2`^VA!A`"```2(N3:`D``$AIP,@/``!(BT00"`^V0`@YR'1'ZUT/M]5(
+MBX.0"0``2(L$T$@/MT`@2`^VA!A`"```2(N30`D``$AIP-````!(BX00B```
+M``^V0`@YR'0+ZR&0@?G_````=1@/M\5(BY.0"0``2(L\PKX`````Z`````#_
+MQ68Y:U@/A^3^__];74%<PV9F9I!F9F:09F9FD&9FD$B+5G!(A=)T'$B+1CA(
+MB4(82(M&0$B)0B!(BT9(2(E"*,9"$`'SPV9FD&9FD&9FD$B+5G!(A=)T&$B+
+M0AA(B48X2(M"($B)1D!(BT(H2(E&2//#9F9FD&9FD&9FD&9FD%532(/L"$B)
+M_4B)\T@Y?B@/A,H```"`?B0`#X6G````#[9&.(/X%70)@_A5#X65````2(M3
+M<$B%T@^$B````(!Z$`$/A7X```!F@7H8X0&0=75(BXT8"0``2(VQ>(8!`&:!
+M>R"%`'<92`^W0R!(#[:$*$`(``!(:<"(`0``2(TT`0^V0AJ#^`=T'X/X!W\'
+M@_@&=![K,8/X#&9F9I!F9I!T((/X#702ZQYF@V9B_6:0ZQ5F@TYB`NL.9H-F
+M8O=FD.L%9H-.8@A(@WMX`'022(US>$B)[^@`````9F:09F:09H%[..$!#X5F
+M`0``9H%[((4`#X><````2`^W0R"`O"A`"```_P^$B0```$B+E1@)``!(C;)X
+MA@$`9H%[((4`=Q1(#[:$*$`(``!(:<"(`0``2(TT`H![)`!U60^V0SJ#^`=T
+M((/X!W\)@_@&="1FD.M"@_@,=#B#^`UF9I!F9I!T%^LP9H-F8OUF9F:09F:0
+MZR)F@TYB`NL;9H-F8O=FD.L2#[?!ZV(/M\'IIP```&:#3F((9H%[..$!#X6R
+M````@'LZ"P^%J````$B)[@^W2R`/M]$/MD5&_\C_P3G"?20/MD5&C5#_9H'Y
+MA0!W#0^WP8"\,$`(``#_=:</M\'_P3G0?..X_P```&8]_P!T7TB)[@^W2R`/
+MM]$/MD5&_\C_P3G"?2P/MD5&C5#_9F9FD&:!^84`=Q$/M\&`O#!`"```_P^%
+M7____P^WP?_!.=!\W[C_````9HE#(,9#)(!(B=Y(B>_H`````.DR`0``QD,D
+M`$@Y:RAT)TB+0W!(A<"0=!V`>!`!=0M(B=Y(B>_H`````$B-<W!(B>_H````
+M`$B#NX``````=`](C;.`````2(GOZ`````!(BWLH2(G>_Y.@````9H%[..$!
+M=6,/MD,Z@^@1/`%W6+K_````9H%[((4`=PU(#[=#(`^VE"A`"```@?K_````
+M#X2B````B=!(:<#0````2(G&2`.U0`D``(!^10`/A84```"`?E#_='](B>_H
+M`````.MU9F:09I"Z_P```&:!>R"%`'<-2`^W0R`/MI0H0`@``(G02&G`B`$`
+M`$B)QD@#M1@)``"+0S@E____`#WA`1``#Y7`@?K_````#Y7"#[;`A<)T(V:!
+M>SCA`74+#[9#.H/H$3P!=A"`?GL`=0I(B>_H`````&:02(/$"%M=PV9FD&9F
+MD&9FD$B#[!A(B5PD"$B);"002(G[2(GU#[=6,HG09L'H!0^W\(G1@^$?2,?`
+M_O___TC3P"%$MUQF@?K_#W1%#[?Z2(N+D`D``$B#//D`=#1(QP3Y`````"&$
+MLY@)```/M_)(C;M8#P``Z`````!(B>Y(B=_H`````$B)[DB)W^@`````2(M<
+M)`A(BVPD$$B#Q!C#D$%44TB#[`A)B?1(BY^0$```2(''6`\``.@`````B<8/
+MM\!(P>`&2`'828D$)+D`````ND````"("$C_P$C_RG7V#[?&2(/$"%M!7,-F
+M9F:00;@`````N`````!(@W]``'1;ZPQ)B<#K,V9F9I!F9I!(BW=`N0````!F
+M9F:09F:0#[;!2(-\QE@`=`I(BT3&6#A0>73/_\&`^01VY$B+1T!F@7A`A0`/
+MEL!-A<`/E<(/ML"%PK@`````20]%P//#D$B#["!(B1PD2(EL)`A,B60D$$R)
+M;"0828G\28G-9@^V^L'F"(T\/KX`````08!\)#``#X3H````28-\)%``#X3<
+M````08N$))0```"H";@!````#T3PNP````!(Q\4`````#[;+B?AF(T3-`&8[
+M1,T`#X69````#[9$S04\`P^4PCP'#Y3`"="H`70'0#ATS01U?4'&1"0D(`^V
+MVP^V5-T&#[9TW05,B>?H`````$F+5"10#[9$W0>(0@U-A>UT.TF+30!)BT0D
+M4$B)RDC!ZB")4`-)BT0D4(`(@$'VA"26````!'052(72=!!)BT0D4(E("$F+
+M1"10@"!_28M4)%!!#[9$)#"#Z`>(0@?K$F:0_\.`^P\/AD?___]F9I!FD$B+
+M'"1(BVPD"$R+9"003(ML)!A(@\0@PV9F9I!F9F:02(/L*$B)7"0(2(EL)!!,
+MB60D&$R);"0@2(G]2(GS9H%^((4`#X>6````2`^W1B"`O#A`"```_P^$@P``
+M`&:#?B!_=R)(#[:$.$`(``!(BY<8"0``2&G`B`$``$B+1!!(#[90".M?9H%^
+M(($`=R=(#[=&($@/MH0X0`@``$B+EV@)``!(:<#(#P``2(M$$`@/ME`(ZS!(
+M#[=&($@/MH0X0`@``$B+ET`)``!(:<#0````2(N$$(@````/ME`(ZP:0NO__
+M__^^_P```&:!>R"%`'<.2`^W0R!F#[:T*$`(``"`^O\/A)<````/MLJ`O"G&
+M"```_P^4PF:!_O\`#Y3`"="H`75[@'LD!G1U3`^VI"G&"```36GDJ````$V-
+MI"R@`0``#[?&2&G`B`$``$F)Q4P#K1@)``"`>SH!=2>_"@```.@`````2(G>
+M2(GOZ`````"Z`@```$R)[DR)Y^@`````ZQR_]`$``.@`````2(G>2(GOZ```
+M``!F9F:09F:02(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9F9I!F9I!(@^PH
+M2(E<)`A(B6PD$$R)9"083(EL)"!)B?2)U4B+'TB)W^@`````2(G"2(7`=%_&
+M0#CAQD`Y`4"(:#K&0#L/00^W1"0P9HE"($B)6BC'0C0`````2,="2`````!(
+MQX*@`````````$B)UDB)W^@`````0(#]`74,OP4```#H`````.L*OU##``#H
+M`````$B+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-F9F:09F9FD%532(/L"$B)
+M_4B)\V:!?B"%``^'F````$@/MT8@@+PX0`@``/\/A(4```!F@WX@?W<B2`^V
+MA#A`"```2(N7&`D``$AIP(@!``!(BT002`^V2`CK86:!?B"!`'<G2`^W1B!(
+M#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(#[9(".LR2`^W1B!(#[:$.$`(
+M``!(BY=`"0``2&G`T````$B+A!"(````#[9(".L(9F:0N?____^^_____V:!
+M>R"%`'<-2`^W0R`/MK0H0`@``(#Y_W0A#[;!@+PHQ@@``/\/E,)`@/[_#Y3`
+M"="H`74&@'LD!G4@2(-[>`!T#$B-<WA(B>_H`````$B)WDB)[^@`````ZVL/
+MML%(#[:\*,8(``!(:?^H````2(V\+Z`!``")\@^VPDAIP(@!``!(B<9(`[48
+M"0``@'LD`'0*N@$```#H`````$B#>W@`=!-(C7-X2(GOZ`````!F9F:09F:0
+M2(G>2(GOZ`````!F9I!FD$B#Q`A;7<-F9I!F9I!F9I!(@^PX2(E<)`A(B6PD
+M$$R)9"083(EL)"!,B70D*$R)?"0P28G_28GT3(LW3(GWZ`````!(B<5(A<`/
+MA(X```!,B??H`````$F)Q4B%P'412(GN3(GWZ`````#K<69F9I!(C5U8QD4X
+MX<9%.0'&13H.00^W1"0P9HE%(&9!@V0D8/=)BP=(B44HQT4T``@``$F+11!(
+MB45(3(EM>$C'A:``````````O@````!(B=_H`````(M5-$F+=1A(B=_H````
+M`$B)[DR)]^@`````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$
+M.,-(@^P82(D<)$B);"0(3(ED)!!(B?U!B?1(BT=(2(L82(G?Z`````!(B<)(
+MA<!T1,9`.!O&0#D!1(A@/`^W13!FB4(@QH*8````#TB)6BC'0C0`````2,="
+M2`````!(QX*@`````````$B)UDB)W^@`````2(L<)$B+;"0(3(MD)!!(@\08
+MPV9F9I!F9I!F9I!(@^P82(D<)$B);"0(3(ED)!!(B?U(BT=(3(L@3(GGZ```
+M``!(B<-(A<!T<$R)Y^@`````2(G"2(7`=13&A>$````!2(G>3(GGZ`````#K
+M3,9#.``/MT4P9HE#(,:#F`````],B6,HQT,T`````$C'0T@`````2(M"$$B)
+M0U#&0S`D2(E3>$C'@Z``````````2(G>3(GGZ`````!(BQPD2(ML)`A,BV0D
+M$$B#Q!C#D$%6055!5%5328G^28GU2(G3QD)#`<9"0@"^!@```$R)[^@`````
+M2(-[4`!T%DB+4QA(BT,02(E0"$B)`DB+0U#^2%B`>WL`=!]F9F:09F:03(GW
+MZ`````"_`0```.@`````@'M[`'7H2(.[&`$```!T'@^VLP4!``!(B[L8`0``
+MN@$```#H`````&9FD&9FD$B#>U``=!D/MG-Y2(M[4+H!````Z`````!F9F:0
+M9F:02(-[.``/A)D```!(BVLX2(.]@`````!U>TB#O8@`````=7'V0T0$=21!
+M_H;O$P``3(GWZ`````!(BT,X#[9P`;H!````3(GWZ`````!(BT,X#[90`@^V
+M<`%(Q\<`````N`````#H`````$B+4SA)B[;0"```OP$```#H`````$B+4SA)
+MB[;0"```OP8```#H`````$C'0S@`````2,=%8`````!(@WM8`'022(M36$@/
+MMD-Y2,=$PE@`````2(M3"$B+`TB)4`A(B0)!_DT.2(G>3(GWZ`````!!@'T)
+M_W150;P`````08!]#@!V.$F-;6!(B>_H`````$B)PTB+10A(B5T(2(DK2(E#
+M"$B)&(![0O]U"T'_Q$4X90YWU.L&13AE#G<00<9%"?],B>Y,B??H`````%M=
+M05Q!74%>PY")\`^VP$B-!,!(P>`'!6!7``")!\-F9F:09F9FD&9FD$&)T$B)
+M^;\`````B?)(B<A(A=)T"T"(.$C_P$C_RG7UB3&)\DB!ZF!7``!(N(_C.([C
+M.([C2/?B2,'J"HA1!$0XPG8$1(A!!+H`````@'D$`'8?#[;"QD0!!_](C03`
+M2,'@!\:$",17``#]_\(X401WX<9!!@#&004`N@````"0#[;"2&G`L````$B-
+MA`@`0@``QD`+`8A0"O_"@/H?=N#SPV9F9I!F9F:09F:09F:005154TF)]$B)
+M^[T`````@'\$`'9#B>H/ML)(C03`2,'@!T@!V("XQ%<``/UT(DB-N+Q7``"Z
+M"````$R)YN@`````A,!T"D`/ML7K$69F9I#_Q4`X:P1WO;C_````6UU!7,-F
+M9F:09F9FD&9FD&9FD%-(B?OH`````+H)````//]T$P^VP$B-!,!(P>`'#[:4
+M&&97``")T%O#9F9FD&9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD($F)_4B)
+M\TB-MI````!)B=Q(BZN8````@'T&``^$3@$``$B)[^@`````B<$\_P^$/`$`
+M``^V0P&#^`%T<(/X`7\,A<!T*&9FD.DB`0``@_@0#X21````/9`````/A-4`
+M``!F9F:09F:0Z0(!``"`O0M"````9F9FD`^%\0```,:%"T(```'^308/MM%!
+MN0````!!N`````"Y`````$R)[DB)[^@`````Z<,```"`O0M"````#X6V````
+MQH4+0@```?Y-!@^VT4&Y`````$&X`````+D!````3(GN2(GOZ`````#IB```
+M`+H!````#[;"2&G`L````$B-A"@`0@``.$@(=0L/MD`)03I$)`ET!__"@/H?
+M=M?^308/MM%-B>%%#[9$)`FY$````$R)[DB)[^@`````ZSE(#[:#J@```$AI
+MP+````#&A"@+0@```?Y-!@^VT4&Y`````$&X`````+F0````3(GN2(GOZ```
+M``!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#055!5%532(GU28G538G,08G)
+MNP`````/ML-(:<!0$```2#EL."!U:+D`````#[;#2&GP4!````^WP4C!X`5(
+M`?!,C10X38U:0$$/MD,,A,`/E,(\\`^4P`G0J`%T(DF):C!-B6HX9D6)0P)%
+MB$I`28L$)$F)0D1!QD,,_^L29I#_P6:!^8$`=JYF9F:09F:0_\.`^P-V@%M=
+M05Q!7<-FD$B#[`A)B?.)T$B)_DR-EV!!``#&APM"````0;D`````0;B0````
+M3(G19F9FD&9FD$2("4C_P4G_R'7U0<9"`0!!Q@)`2,>&`$(```````!(B;[X
+M00``#[;`2(T$P$C!X`=(BX0PO%<``$B)AO!!``!(@<9@00``3(G?Z`````!(
+M@\0(PV9F9I!F9F:09F9FD$B#[`A)B?.)T$B)_DR-EV!!``#&APM"````0;D`
+M````0;B0````3(G19F9FD&9FD$2("4C_P4G_R'7U0<9"`0%!Q@)`2,>&`$(`
+M``````!(B;[X00``#[;`2(T$P$C!X`=(BX0PO%<``$B)AO!!``!(@<9@00``
+M3(G?Z`````!(@\0(PV9F9I!F9F:09F9FD%532(/L"$B)]8G328GYN@$````/
+MML-(C03`28G#2<'C!P^VPDAIP+````!*C80(`$(``(!X"P$/A;,```"(6`B(
+M2`G&0`L`2`^V0`I(:<"P````3HV4"&!!``!!N`````"^D````$R)T&9F9I!F
+M9I!$B`!(_\!(_\YU]4'&0@$00<8"0$&(2@D/MM)(:=*P````3`'*2(V*`$(`
+M`$@/MD$*2&G`L````$P!R$C'@`!"````````2(FX^$$``$N+A`N\5P``2(F"
+M\$$``$@/MG$*2&GVL````$J-M`Y@00``2(GOZ`````#K%F9FD&9FD/_"@/H?
+M#X8F____N`$```!(@\0(6UW#9F:09F:09F:0055!5%532(/L"$F)]4F)U$R)
+MS4&)R42)P4F)^KH!````#[;=#[;"2&G`L````$P!T$B-L`!"``"`?@L!#X62
+M````QD8+`$R)D/A!``!(#[9&"DAIP+````!.C9P08$$``$&X`````+Z0````
+M3(G8D$2(`$C_P$C_SG7U0<9#`9!!Q@-`08A;!D&(2P=%B$L)2(M%`$F)0Q`/
+MMO)(:?:P````3`'62,>&`$(```````!(B;[X00``28M$)%Q(B8;P00``2('&
+M8$$``$R)[^@`````ZQ#_PH#Z'P^&1?___[@!````2(/$"%M=05Q!7<.04TB)
+M\TF)TT2)PDB)_DR-EV!!``!!N0````!!N)````!,B=!$B`A(_\!)_\AU]4'&
+M0@$30<8"0`^VQD&(0@9!B%('08A*"4C'A@!"````````2(F^^$$``$F+0UQ(
+MB8;P00``2('&8$$``$B)W^@`````6\-F9F:09F9FD&9F9I`/MM(/MTQ6>/_!
+M9HE,5GAF#[9&`@'(#[?`PV9FD&9FD+H!````B=!(:<"P````@+PX"T(```%U
+M"(G0PV9FD&:0_\*#^A]VWKC__P``9F9FD,-F9F:09F9FD&9F9I!F9I"Y`0``
+M`(G(2&G`L````$B-A#@`0@``0#AP"'4*.%`)=07&0`L!P__!@_D?9F:09I!V
+MT_/#9F9FD&9F9I!F9F:02(/L6$B)7"0H2(EL)#!,B60D.$R);"1`3(ET)$A,
+MB7PD4$F)_TB)="0808G61(A$)!=)B?Q-B<T/ML)(C03`2,'@!X"\.,17``#]
+MN/W___\/1,@/ML&#^!`/A)$"``"#^!!_'(7`#X2D````@_@!D`^$/0$``.D%
+M"0``9F:09I`]X@````^$9@@``#WB````?Q,]D`````^$5P<``&9FD.G;"```
+M/?\```!F9I!F9I`/A<H(```/ML)(C03`2,'@!\:$.,17``#_@+\+0@```74?
+M00^VUDB+="08Z`````"%P`^%F`@``$'^1P;ICP@``$2)\0^VP<9$!P<!2(M4
+M)!A(B53'$.EU"```9F:09I!(C8]@00``@+\+0@```750#[;"2(T$P$C!X`=(
+M`?@/ME$)B)!B5P``2`7`5P``#[91"H/B`8A0!<9`!`!!#[;62(MT)!CH````
+M`(7`#X4>"```0?Y'!ND5"```9F:09I`/ML+&1`<'`4B+5"082(E4QQ#I^0<`
+M`$'&1`0'_P^VTDF+=,000;D`````0;@`````N?\```!,B?_H`````.G-!P``
+MNP````!(C9=@00``1(GQ#[;!2(T$P$C!X`=(C0PX#[9",HB!LE<```^W0C!F
+MB8&P5P``2(M"*$B)@:!7``!(BT(,2(F!<%<``$B+0A1(B8&`5P``2(M"'$B)
+M@8A7``"+0B2)@9A7``#&@<17```!@'\&'P^$5`<``("Y8E<```!T?4$/ML:)
+M1"001(GR#[;"2(T$P$B)Q4C!Y0=)B<U,C;0]L%<``&9F9I!F9I`/MLN+5"00
+M2(MT)!A,B?_H`````(7`=2#_PT'^1"0&03B=8E<``'4*0<:%LU<```#K#D&(
+M7@/K"$&(7@/K%&:008!\)`8?=`I".)PE8E<``'>N0<:$)`M"```!N@````!!
+M@'PD!``/AK0&``!F9F:0#[;"08!\!`<!#X2H_O___\)!.%0D!'?HZ9,&``!F
+M9I#&1"0/_TF+01A(B40D(`^VPDB-!,!(P>`'2(TL.$B-A<!7``#&0`000?9!
+M#'`/A(`#``!(@[W(5P```'1Y#[98!DB+O<A7``!(@\=<N@@```!(C70D(.@`
+M````A,!U5T'V10\/=%!(BZW(5P``2(7M=$2`?64`=#0/MMN)VDB)[DR)Y^@`
+M````38U-&$0/M\")V4B)ZDB+="083(G_Z``````/MEUF2(MM:.L%O0````!(
+MA>UUO$$/ME4/]L(-#X0<`0``1(GQ#[;!2(T,P$B)R$C!X`=,`>"`N&!7```?
+M#X?[````#[:88%<``/;""'06#[;#2(T$R$C!X`1"QH0@X%D```;K'D2)\@^V
+MP@^VTTB-!,!(C03"2,'@!$+&A"#@60``!T2)\`^VR`^VPTB-#,E(C13(2,'B
+M!$P!XDB-LN!9``#&1@$`00^V10^(1@-(BT0D($B)@NA9``!!#[9%"8A&`DC!
+MX0=!#[9%#8/@#T(/MI0A9E<``#C"#T?0@^(/#[9&!(/@\`G0B$8$1(GR#[;"
+M2(T$P$B)\4C!X`>^#P```$$B=2E"#[:4(&97``!`./(/1];!X@0/MD$$@^`/
+M"="(001$B?$/ML%(C03`2,'@!T+^A"!@5P``Z=,!``!!]D4/`@^$R`$``$B-
+M="0@3(GGZ`````!!B<`\_P^%4@$``,9$)`\`08!\)`0`=C=(#[9$)`](C03`
+M2,'@!T(/MH0@Q%<``#S_#Y3"//T/E,`)T*@!=1#^1"0/#[9$)`]!.$0D!'?)
+M2`^V1"0/2(T$P$C!X`>Y`````+ID````2HV$(&!7``"("$C_P$C_RG7V2`^V
+M5"0/2(T4TDC!X@=,`>)$B?$/ML%(C03`2,'@!TP!X$B-N&!7``!(B;K(5P``
+M2(N(O%<``$B)BK17``!(BTPD&$B)BMA9``!(BX#05P``2(F"T%<``,:"Q%<`
+M`/](C8I@5P``2`^V<0=!#[9%"8B$,FA7``#^00=!#[95#8/B#P^V1P8XT`]'
+MPHA!!D@/MD0D#TB-!,!(P>`'3`'@2(M4)"!(B9"\5P``00^V50^(D&-7```/
+MME0D%XB0QE<``$$/MD0D!4$Z1"0$=09!QD0D!0!!_D0D!>M+QD4#`.D[`P``
+M1(GQ#[;12(T4TDC!X@</ML!(C03`2,'@!TJ--"!(C8Y@5P``2CF,(LA7``!T
+M%$@/ME$'00^V10F(A!9H5P``_D$'08#X_W462`^V1"0/0<9$!`<!2(M4)!A)
+MB53$$$$/ME4)00^V]DR)Y^@`````1(GQ#[;!2(G"2(T$P$C!X`=*C0P@2(V!
+ML%<``(!X`P`/A+8```!!@'PD!A\/A)H"```/MD`#.H%B5P``#X.*`@``10^V
+M[DF)UF9FD$B-!-)(P>`'2HT<(,:#Q%<``!!(C:NP5P``#[9-`T2)ZDB+="08
+M3(G_Z`````"%P`^%2@(``$'^1"0&#[9%`__`#[:38E<``#G0#X3L_O__3(GR
+M2XT$]DC!X`=*C30@2(V&L%<```^V2`/_P8A(`T&`?"0&'P^$!0(``#J.8E<`
+M``^">?___^GT`0``9F9FD$&`?"0&``^%Y`$``$$/MM9!N0````!!N`````"Y
+MD````$B+="083(G_Z`````#IO0$``$'&1`0'_P^VTDF+=,000;D`````0;@`
+M````N?\```!,B?_H`````,9$)`<!Z<L```#&1"0'`,=$)`@`````BT0D"$AI
+MP%`0``!(BU0D&$HY5"`@=6>]`````(M$)`A,:>A0$```B>A(P>`%3`'H3`'@
+M2(U80(![#/]U-T&`?"0&'P^$-@$```^V2$!,C4A$1`^W0P)(BU`X2(MT)!A,
+MB?_H`````(7`=0E!_D0D!L9##/#_Q8']@0```':I_T0D"(-\)`@##X9S____
+M08!\)`8`#X7F````N@````!!@'PD!`!V&`^VPD&`?`0'`0^$#?_____"03A4
+M)`1WZ(!\)`<`#X6V````00^VUD&Y`````$&X`````+GB````2(MT)!A,B?_H
+M`````.F/````NP````"`?P0`=CMF9F:0#[;#2(T$P$C!X`=*C8P@P%<```^V
+M402`^OT/E<"`^O\/E<(/ML"%PG0$QD$$_O_#03A<)`1WR42)\0^VP4B-!,!(
+MP>`'2HNL(-!7``"[``````^VPTAIP%`0``!,`>!(C5`@@'H(`74-QD((`$B+
+M<"!,B?__U?_#@/L#=M5F9I!(BUPD*$B+;"0P3(MD)#A,BVPD0$R+="1(3(M\
+M)%!(@\18PV9F9I!F9I!F9I!F9I!!B='&`?ZZ`````$&X`````(!_!`!V,P^V
+MPDB-!,!(P>`'2`'X2#FPV%D``'4513C(=0T/MH#$5P``B`'#9F:00?_`_\(X
+M5P1WS?/#9F9FD%532(/L"$F)TTR)Q4&)R$B)^P^V1P4Z1P1U!,9'!0`/MDL%
+MN@`````/ML)(:<!0$```2`'83(U(($@Y<"!U04'&00@!N0````"`>P0`=E\/
+MML%(C03`2,'@!T@!V$@YL-A9``!U#@^V@,17``"#P`,\`78Z_\$X2P1WU.LQ
+M9F:0#[;"2&G`4!```$@!V$R-2"!(@W@@`'4+2(EP($'&00@!ZPO_PH#Z`P^&
+M>O___P^VPDAIP%`0``!!N@````!!N0(0``!(C408,&9F9I!F9I!$B!!(_\!)
+M_\EU]0^VP4B)=,,02(T$P$C!X`=!N@````!!N60```!(C8088%<``$2($$C_
+MP$G_R77U#[;!2(T$P$C!X`=!N@````!!N0`"``!(C808V%<``$2($$C_P$G_
+MR77U#[;!2(T$P$C!X`=(`=A(B;#860``2(FHT%<``,:`Q%<``/](QX#(5P``
+M`````$F+$TB)D+Q7``!$B(!F5P``#[;10;D`````0;@`````N?\```#H````
+M`/Y#!4B#Q`A;7<-F9F:09F:09F:04[L`````@'\$``^&D0````^VPTB-!,!(
+MP>`'2#FT.-A9``!U<;H!````#[;"2&G`L````$B-A#@`0@``.%@(=03&0`L!
+M_\*`^A]VW@^VPTB-!,!(P>`'2`'X2,>`V%D```````"Y`````+ID````2(V`
+M8%<``(@(2/_`2/_*=?8/ML-(C03`2,'@!\:$.,17``#]_D\%_\,X7P0/AV__
+M__^[``````^VPTAIP%`0``!(`?A(C5`@2#EP('4Q2,=`(`````#&0@@`N@``
+M```/ML-(:<A0$```#[;"2,'@!4@!R,9$.$P`_\*`^H%VZO_#@/L#=K%;PV9F
+MD&9FD&9FD%-)B?E!N@````"_`````(#Z`0^%*`$``$V%P`^$`P$``$&`>00`
+M=BA$B=(/ML)(C03`2,'@!THYM`C860``=0=`.,]T"__'0?_"13A1!'?81(G0
+M#[;(2(G/2(T,R4C!X0=,`<E(C9%@5P``2(N!8%<``$F)`$B+0@A)B4`(2(M"
+M$$F)0!!(BT(828E`&$B+0B!)B4`@2(M"*$F)0"A(BT(P28E`,$B+0CA)B4`X
+M2(M"0$F)0$!(BT)(28E`2$B+0E!)B4!02(M"6$F)0%B+0F!!B4!@NP````"`
+MN6!7````=D(/ML-(B<%(P>$$3`'!2(TT_TB-!/!(P>`$3`'(2(N0X%D``$B)
+M461(BX#H60``2(E!;/_#2,'F!T(XG`Y@5P``=[Y$B=(/ML)(C03`2,'@!T(/
+MMH0(8%<``.LZ9F:00;H`````NP````!!@'D$`'8A#[;#2(T$P$C!X`=*.;0(
+MV%D```^4P$$!PO_#03A9!'??00^VPEO#D)"0D)"0D$B+%TR+`KD`````@'I#
+M`'862`^V=PU(B?!(T_BH`74'_\$X2D-W[X#Y`W8D2(T$C0`````E_`,``$*+
+MA`#0`0``B04`````ZR)F9F:09F:02(T$C0`````E_`,``$*+A`#0`0``B04`
+M````J0``$``/E<`/ML##9F:09F:09F:005=!5D%505154TB#[`A(B3PD3(LO
+M38ME`,9&00#&1D`%QD9#!DB+!"1(B49(0;\`````0;X`````NP````!!@'U#
+M`'8?2(L,)$@/ME$-9I!(B=")V4C3^*@!=0C_PT$X74-W[(#[`W8;2(T$W0``
+M```E^`<``$+'A"```@``+````.L92(T$W0`````E^`<``$+'A"```@``+```
+M`+\0)P``Z`````"`^P-V)$B-!-T`````)?@'``!"BX0@!`(``(D%``````^V
+MZ.LB9F9FD$B-!-T`````)?@'``!"BX0@!`(``(D%``````^VZ$$)[H#[`W8;
+M2(T$W0`````E^`<``$+'A"```@``)````.L92(T$W0`````E^`<``$+'A"``
+M`@``)````+\0)P``Z`````"`^P-V)TB-!-T`````)?@'``!"BX0@!`(``(D%
+M`````(G%@>7___\`ZR5FD$B-!-T`````)?@'``!"BX0@!`(``(D%`````(G%
+M@>7___\`B>C!X`A!"<:`^P-V($B-!-T`````)?@'``!"QX0@``(``"````#K
+M'F9FD&:02(T$W0`````E^`<``$+'A"```@``(````+\0)P``Z`````"`^P-V
+M'TB-!-T`````)?@'``!"BX0@!`(``(D%`````(G%ZQU(C03=`````"7X!P``
+M0HN$(`0"``")!0````")Q4&!_@$!:99U%TB+!"2`2`P&B>C!Z!`\4`^4P`^V
+MP.M`08'^`0$``'43B>C!Z!`\4`^4P`^VP.LH9F9FD+^($P``Z`````!!_\=!
+M@/\$#X;,_?__B>C!Z!`\4`^4P`^VP$B#Q`A;74%<05U!7D%?PV9F9I!F9I!F
+M9I!F9I!54TB#[`A(B?U(BQ_H`````(3`=1'&10G_2(GN2(G?Z`````#K;+D`
+M````@'M#`'862`^V50U(B=!(T_BH`74'_\$X2T-W[TB)W^@`````2(G&2(7`
+M=#M(C45@2(M0"$B)<`A(B09(B58(2(DR_D4.2(EN2,9&0`7&1D$`QD9Y#[D!
+M````N@$```!(B>_H`````$B#Q`A;7<-F9F:09F:0055!5%532(/L"$F)_$B)
+M]4R++[L*````2(GN3(GGZ`````"$P'4.O^@#``#H`````/_+=>.Y`````$&`
+M?4,`=AA)#[94)`U(B=!(T_BH`74(_\%!.$U#=^Y(BU4(2(M%`$B)4`A(B0)!
+M_DPD#DB)[DR)[^@`````0?9$)`P"=%5)@WPD0`!U($R)[V9FD&:0Z`````!(
+MB<9(A<`/A(\!``!)B40D0.L%28MT)$!,B2Y,B::(````QD9&`,9&1P#&1D(`
+M9H-.3@1,B>_H`````.E;`0``28-\)$``#X3@````28MT)$!(@<:0````28M]
+M*.@`````28MT)$!,B>_H`````$F-1"1@2(G"23E$)&`/A*(```!(B<-F9F:0
+M9F:02(G7Z`````!(B<5(@W@X`'1H2(M`.$C'0&``````]D5$!'4D0?Z%[Q,`
+M`$R)[^@`````2(M%.`^V<`&Z`0```$R)[^@`````2(M5.$F+M=`(``"_`0``
+M`.@`````2(M5.$F+M=`(``"_!@```.@`````2,=%.`````!!_DPD#DB)[DR)
+M[^@`````2(G:23E<)&`/A6C___])QT0D0`````!!@'PD#@!T%$F-?"1@Z```
+M``!(B<5!_DPD#NL+3(GOZ`````!(B<5(A>UT0TF-1"1@2(M0"$B):`A(B44`
+M2(E5"$B)*D'^1"0.3(EE2,9%0`7&14$`QD5#!L9%0@-(B>Y,B>_H`````&9F
+M9I!F9I!(@\0(6UU!7$%=PV9FD&:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@
+M3(ET)"A,B7PD,$F)_$F)]4&)UD&)STB+!TB)!"2Z`````+T`````@'\.`'9$
+M2(U?8&9F9I!F9I!(B=_H`````$B)PDB+0PA(B5,(2(D:2(E""$B)$$PY:E!U
+M#40X<GET$&9F9I!F9I#_Q4$X;"0.=\=!.&PD#F:0="Y!@/]0=2C&0D,&QD)"
+M!<9"0`?&0D$`3(EJ4$R)8DA(B=9(BSPDZ`````!F9F:02(M<)`A(BVPD$$R+
+M9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:09F:09F:09F:02(/L.$B)7"0(
+M2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)_4F)]DR+)T&______[N`____
+MO?____^`^X5W#`^VPT(/MJP@0`@``$"`_?]T-8GJ#[;"28N4)&@)``!(:<#(
+M#P``3#EL$`AU&DB-/!"Z"````$R)]N@`````A,!T!4&)[^L+_\.`^X%F9F:0
+M=J1!#[;'2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:0
+M9F:005=!5D%505154TB![$@"``!)B?Y(B70D.(A4)#=(BT<(2(E$)"A,BR@/
+MME=8B%0D)TB-1TA(B<)(.4=(#X1L`@``@'PD)P`/A&$"``!,C7PD0$B)1"0(
+M2(D$)&9FD&:02(G7Z`````!(C6CP#[9,)#=-B?BZ`0```$B+="0H2(M\)#CH
+M`````$&\`````(!\)$``#X;M````2(U5$$B)5"082(M,)`A(B4PD$&9F9I!$
+MB>(/ML)(P>`$2HT<.$B->VRZ"````$B-M<P```#H`````(3`#X2=````2(U3
+M8`^V0@B#X`^(A>(````/MTU@9H'AW_V)R(/($&:)16`/MD((P.@$/`EU"8G(
+M@\@P9HE%8$2)X0^VP4C!X`1"#[9$.&C`Z`0\"G4&9H%-8``"2(M4)!!(BT((
+M2(M,)!A(B4H(2(E5$$B)00A(B0@/MD5$J`)T,H/@_8A%1$B#?3@`="5(BU4X
+M28NUT`@``+\&````Z`````#K#D'_Q$4X)P^'+/___^L)13@G#X<&`0``2(GJ
+MO@8```!(BWPD*.@`````@'U[`'083(GOZ`````"_`0```.@`````@'U[`'7H
+M2(.]&`$```!T&`^VM04!``!(B[T8`0``N@$```#H`````$B#?5``=!@/MG5Y
+M2(M]4+H!````Z`````!F9I!F9I!(@WTX`'1H2(M%.$C'0&``````]D5$!'4D
+M0?Z%[Q,``$R)[^@`````2(M%.`^V<`&Z`0```$R)[^@`````2(M5.$F+M=`(
+M``"_!@```.@`````2(M5.$F+M=`(``"_`0```.@`````2,=%.`````!(BU4(
+M2(M%`$B)4`A(B0)(BT0D*/Y(#D'^3EA(B>Y,B>_H`````/Y,)"=(BQ0D23E6
+M2'0+@'PD)P`/A;+]__](@<1(`@``6UU!7$%=05Y!7\-!5T%6055!5%532('L
+M.`(``$B)?"0H28GU2(E4)"!(BP=(B40D&,9$)!<`2(U<)#!$#[;A28G81(GA
+MN@$```!(B?Y,B>_H`````$F)WD2)XDR)[DB+?"0@Z`````!(BTPD($B+44A,
+MC7KP2(G(2(/`2$@YPG0]2(G!9F9FD&9FD$$/MD=!/`T/E,(\(@^4P`G0J`%T
+M$<9$)!<!0<9'0@5!QD=#!.L-28M'$$R->/!(.<AUS;T`````08`^``^&#`(`
+M`$B+1"0@2(/`2$B)1"0(2(D$)$B+3"0@2(M!2$R-8/!(.T0D"'0YB>H/ML)(
+MB<-(P>,$3(LL)$F-O"3,````N@@```!*C70S;.@`````A,!U#DF+1"003(U@
+M\$PYZ'7728U$)!!(.T0D"`^%D@$``,9$)!<`2(M\)!CH`````$F)Q$B%P`^$
+ME@$``$B+3"0H_D$.QD!"!<:`X`````#&0$,$9L>`P```````QH#"`````$C'
+M0'````4`B>H/ML)(P>`$2HU$,&`/ME`$08A4)$`/ME`%08A4)$%)B4PD2`^V
+M4`B#X@]!B)0DX@```$$/MTPD8&:!X=_]B<J#RA!F08E4)&`/MD`(P.@$/`EU
+M"XG(@\@P9D&)1"1@B>D/ML%(P>`$0@^V1#!HP.@$/`IU"&9!@4PD8``"2(M$
+M)"!)B40D4(GJ#[;"2,'@!$P!\`^V4&9!B%0D>4B+0&Q)B80DS````$F)A"3$
+M````2(M,)"#^05A(BT0D*$B#P&!(BU`(3(E@"$F)!"1)B50D"$R)(DF-1"00
+M2(M,)`A(BU$(2(E!"$F)3"002(E0"$B)`DD/MD0D0*@"=">H!'0CJ`%T'T$/
+MME0D>4R)X4B+="0@2(M\)"CH`````.LH9F:09I!)#[9$)$"H`G09J`1F9F:0
+M=!&H`74-3(GF2(M\)!CH`````/_%03@N#X<&_O__@'PD%P!T#;X*````3(G_
+MZ`````!(@<0X`@``6UU!7$%=05Y!7\-F9F:09F9FD&9F9I!!5T%6055!5%53
+M2('L2`(``$F)_$B)="0X3(LO#[9'*(A$)#=(C4=(2(G"2#E'2`^$1@,``(!\
+M)#<`#X0[`P``2(E$)!!(B40D"$B)U^@`````2(UHR$&X`````+D`````N@``
+M``!,B>9(BWPD..@`````08G'0;X`````03C&#X/<`0``2(U4)$!(B50D*$B-
+M33A(B4PD($B+1"002(E$)!A!#[;>0;@`````B=FZ`0```$R)YDB+?"0XZ```
+M```/ML!(P>`$2(/`9$@]``(```^'7P$``$R+1"0HB=FZ`0```$R)YDB+?"0X
+MZ`````!(BUPD*$B->URZ"````$B)[N@`````A,`/A"@!``!(BU0D&$B+0@A(
+MBTPD($B)2@A(B54X2(E!"$B)"`^V1"1"B$592(US5$R)Y^@`````//]T%0^V
+MP$AIP,@/``!)`X5H"0``2(E%$$6$]G11#[9#`]'H@^`!P>`$#[9578/B[PG"
+MB%5=#[9#`\'H`X/@`<'@!8/BWPG"B%5=#[9#`\'H`H/@`<'@`X/B]PG"B%5=
+M#[9#!HB%NP```.F6````#[9#`HA%64R)90@/MD,&B(6[````#[=#!(E%8`^W
+M0U!FB86X````#[9#4HB%N@```$B+0T!(B86H````2(M#2$B)A;````!(BT,0
+M2(E%>$B+0QA(B86`````2(M#($B)A8@```!(BT,H2(F%D````$B+0S!(B868
+M````2(M#.$B)A:````#K#D'_QD4X_@^"8/[__^L=00^VSDB)ZDB+="0X3(GG
+MZ`````!%./X/@O\```!(C45(2(G"2#E%2`^$W@```$F)QDB)U^@`````2(U8
+M\$B)VKX&````3(GGZ`````"`>WL`=!A,B>_H`````+\!````Z`````"`>WL`
+M=>A(@WLX`'1L2(M#.$C'0&``````]D-$!'4H0?Z%[Q,``$R)[^@`````2(M#
+M.`^V<`&Z`0```$R)[^@`````9F9FD$B+4SA)B[70"```OP$```#H`````$B+
+M4SA)B[70"```OP8```#H`````$C'0S@`````2(M3"$B+`TB)4`A(B0)!_DPD
+M#OY-6$B)WDR)[^@`````3(GR3#EU2`^%)?___T'^3"0H2(GN3(GOZ`````#^
+M3"0W2(M4)`A).50D2'0+@'PD-P`/A<_\__](@<1(`@``6UU!7$%=05Y!7\-F
+M9I!!5T%6055!5%532('L*`(``$F)_DB)]4B+!DB)1"082(G^2(GOZ`````!!
+MN`````"Y`````+H`````2(GN3(GWZ`````"(1"070;P`````03C$#X-&`P``
+M2(U58$B)%"1!#[;<0;@`````B=FZ`0```$B)[DR)]^@`````#[;`2,'@!$B#
+MP&1(/0`"```/A_T"``!,C40D((G9N@$```!(B>Y,B??H`````$R-;"0@28UU
+M7$B)[^@`````//\/A<T"``!(BWPD&.@`````2(G#2(7`#X3<`@``_D4HQD!8
+M`$B+1"1\2(D#28UU5$B)[^@`````//]T&@^VP$AIP,@/``!(BU0D&$@#@F@)
+M``!(B4,000^V10*(0UE!#[9%`]'H@^`!P>`$#[9378/B[PG"B%-=00^V10/!
+MZ`.#X`'!X`6#XM\)PHA374$/MD4#P>@"@^`!P>`#@^+W"<*(4UU(B6L(00^V
+M10:(@[L```!)BT4(2(E#<$$/MD4'B$-:00^W102)0V!!#[=%4&:)@[@```!!
+M#[9%4HB#N@```$F+14!(B8.H````28M%2$B)@[````!)BT402(E#>$F+11A(
+MB8.`````28M%($B)@X@```!)BT4H2(F#D````$F+13!(B8.8````28M%.$B)
+M@Z````!(C5,X2(U%2$B+2`A(B5`(2(E#.$B)2@A(B1%FQT0D%```08!]```/
+MA'$!``!(BP0D2(E$)`A,C7M(9F9FD$B+?"08Z`````!(B<%(A<`/A&\!``#^
+M10[&0$(%QH#@`````,9`0P1(QT!P```%`&;'@,```````$@/MU0D%$C!X@1*
+MC50J8`^V0@2(04`/MD(%B$%!2(EI2$B)65`/MD(&B$%Y#[9""(/@#XB!X@``
+M``^W<6!F@>;?_8GP@\@09HE!8`^V0@C`Z`0\"74)B?"#R#!FB4%@2`^W1"04
+M2,'@!$(/MD0H:,#H!#P*=09F@4E@``)(#[=$)!1(P>`$2HM$*&Q(B8',````
+M2(F!Q````/Y#6$B+5"0(2(M""$B)2@A(B1%(B4$(2(D(2(U!$$F+5PA)B4<(
+M3(EY$$B)4`A(B0)(#[9!0*@"=!FH!'05J`%T$0^V47E(B=Y(B>_H`````.L>
+M2`^V04"H`G05J`1T$:@!=0U(B<Y(BWPD&.@`````9O]$)!1F00^V10!F.T0D
+M%`^'I_[__V9F9I!F9I!!_\1$.F0D%P^"POS__X!]#@!U$<9%"?](B>Y(BWPD
+M&.@`````2('$*`(``%M=05Q!74%>05_#9F:09F:09F:0055!5%532(/L"$F)
+M_4B)]4&X`````+D`````N@````#H`````$&)Q+L`````.,-S)0^VTTB-3"0'
+M2(GN3(GOZ`````"`?"0'_@^%D0```/_#1#CC<MO^35B`?5@`=&A,BV4`QD58
+M`$B+54A(C5K(2(U%2$@YPG1H2(G"9F:09I!(@WL0`'0/2(M#.$B-6,A(.=!U
+M[.M*_D582(GN3(GOZ``````/MHN[````28N\)&@0``!)Q\``````2(G:2(GN
+MZ`````#K&4B)[DR)[^@`````2(GN3(GOZ`````!F9I!(@\0(6UU!7$%=PV9F
+MD&:02(L7O@H```"Y`````(!Z0P!V-4@/MG\-2(GX2-/XJ`%T'P^VP4AKP&B+
+MA!!L$@``)0```P#!Z!"#P`A`./`/0O#_P3A*0W?00`^VQL-F9I!(BQ>^"```
+M`+D`````@'I#`'8U2`^V?PU(B?A(T_BH`70?#[;!2&O`:(N$$&P2```E```#
+M`,'H$(/`"$`X\`]'\/_!.$I#=]!`#[;&PV9FD$B#[%A(B5PD*$B);"0P3(ED
+M)#A,B6PD0$R)="1(3(E\)%!)B?U,BR=!OP````"`?PT`#X2=`P``O0`````/
+MMD<-B<*H`74,_\6)T(GIT_BH`73TB>H/ML)(:\!H2HV4(%`2``"+0@RI```"
+M`'0-#0``!``E___]_XE"#(GI#[;!2&O`:$+VA"!>$@``!`^$CP(``$V-M"0`
+M%```33FD)-`(``!T"$V+M"30"```B>H/ML)(:\!H3`'@1`^VB&(2``!$#[:`
+M81(```^VB&`2``!!#[94)$%`#[;U#[:X9Q(``(E\)"`/MKAF$@``B7PD&`^V
+MN&42``")?"00#[:X9!(``(E\)`@/MH!C$@``B00D2,?'`````+@`````Z```
+M``!!N(````")Z0^VP4AKP&A.C8P@8!(``/Q!#[?`9D(/MH0P0`@``&8]_P!T
+M+P^WP$AIP,@/``!(B<-)`YYH"0``2(G>3(G/N0@```#SI@^7P@^2P#C"#X14
+M`0``0?_`9D&!^($`=K),B>?H`````$B)PTB%P`^$.@(``(GJ#[;"2&O`:$+V
+MA"!=$@``!'0$@$M=`HGI#[;!2&O`:$+VA"!>$@``!'0$@$M=$(GJ#[;"2&O`
+M:$+VA"!=$@``"'0$@$M=!(GI#[;!2&O`:$+VA"!>$@``"'0$@$M=((GJ#[;"
+M2&O`:$+VA"!=$@```G0$@$M=`8GI#[;!2&O`:$+VA"!>$@```G0$@$M=",9#
+M6`")Z@^VPDAKP&A*BX0@8!(``$B)`TR):PA,B>_H`````(B#NP```$'^12BY
+M`````$&`?"1#`'8E20^V10U(T_BH`7001(GZ#[;"B$P8</Y#6D'_Q__!03A,
+M)$-WVTB-4SA)C45(2(M("$B)4`A(B4,X2(E*"$B)$4'^15@/MHN[````28N\
+M)&@0``!)Q\``````2(G:3(GNZ`````#I!0$``$0/MDL$1`^V0P,/MDL"#[93
+M`0^V,P^V0P>)1"00#[9#!HE$)`@/MD,%B00D2,?'`````+@`````Z`````!!
+MQD4)_TR)[DR)Y^@`````Z;,```")Z0^VP4AKP&A*C2P@]H5>$@``"`^$F0``
+M`$R)Y^@`````2(G#2(7`#X2%````QD!#!L9`0@5FQX#```````#&0$`&QD!!
+M`$C'0'````4`2(N%8!(``$B)@\P```!(B8/$````3(EK2$R)[^@`````B(/B
+M````9H-+8!!,B>_H`````#P)=@9F@4M@``)!QD4.`4F-16!(BU`(2(E8"$B)
+M`TB)4PA(B1I(B=Y,B>?H`````$B+7"0H2(ML)#!,BV0D.$R+;"1`3(MT)$A,
+MBWPD4$B#Q%C#9F9FD&9F9I!!5T%6055!5%532(/L"$B)^TF)];@`````2(7V
+M=`0/MD8)#[;`0;P`````A<!T$3W_````#X1L`0``Z=$%``"01(GB#[;"#[:$
+M&,8(```\_W02#[;`2&G`J````$R-K!B@`0``0?_$08#\`W;30;P`````1(GB
+M#[;"#[:$&,8(```\_W0S#[;`2&G`J````$R-K!B@`0``0?9%"@)T$KX`````
+M3(GOZ`````#K"V9FD$R)[^@`````0?_$08#\`Y!VL68/MD,^9CF#0!````^%
+M/`4``$V%[0^%M````(![40`/A2D%``#&0U$!O0`````/M]5(B[330`0``$B%
+M]G0X2(.^@`````!T+DB+AH````!(QX:``````````$C'A--`!````````$B+
+MOI````"Z_______0ZT@/M]5(@[S30`0```!T.DB+A--`!```2(.XB`````!T
+M*$B+AH@```!(QX:(`````````$C'A--`!````````$B+OI````#_T)#_Q6:#
+M_3\/AF3____I?P0``$'&10G_3(GN2(G?Z`````#I:@0``,9$)`<`9F:09I!(
+M#[9$)`</MH08Q@@``#S_#X3Q````#[;`2&G`J````$R-K!B@`0``08!]"?\/
+MA-0```!!O`````!!@'T.``^&N0```$V-=6!,B??H`````$B)Q4F+1@A)B6X(
+M3(EU`$B)10A(B2B`?4+_#X2`````@+WA`````'1H2`^V14"H`G0>J`1T&J@!
+M=!8/ME5Y2(MU4$B)Z4R)[^@`````ZT*02`^V14"H`G4:J`1F9I!FD'01J`%T
+M#4B)[DB)W^@`````ZQY(#[9%0*@"=!6H!&:0=`^H`74+2(GN2(G?Z`````"X
+M`0```.EZ`P``9F:09I!!_\1%.&4.#X=+____N`$```#I7@,``/Y$)`>`?"0'
+M`P^&ZO[__\9$)`<`@'M1``^%L````+T`````9F:09F:0#[?%2(NTPT`$``!F
+M#[:4&$`(``!(A?9T=TB#OH``````=&U(@WY@`'5F9H'Z_P"0="X/M\)(BXL8
+M"0``2&G`B`$``/9$"$,$=!:`?`A!`'4/#[?22(G?Z`````#K,F:02(N&@```
+M``^WU4C'A--`!````````$C'AH``````````2(N^D````+K______]"0_\5F
+M@_T_#X9D____QD-1`>F+`@``2`^V1"0'#[:$&,8(```\_P^$90(```^VP$AI
+MP*@```!,C:P8H`$``$&\`````$&`?0X`#X9"`@``38UU8$R)]^@`````2(G%
+M28M&"$F);@A,B74`2(E%"$B)*(!]0O\/A0D"```/MT4P9HE$)`0/M\!F#[:4
+M&$`(``!FB50D`DR+O,-`!```#[9%1*@$='%-A?]T;$F#OX``````=&))@W]@
+M`'5;@^#[B$5$]D5#!'02#[=4)`),B?Y(B=_H`````.L]28N'@````$@/MU0D
+M!$C'A--`!````````$G'AX``````````2,=%.`````!)B[^0````NO____],
+MB?[_T/9%0P0/A$4!``#&A>``````08!E#.?V140!#X3[````@&5$_DB#?3@`
+M=$V`?4$`=2WV14,$="</MU0D!`^V0T'!X`8!PDACTDB+L]`(``"_!P```.@`
+M````Z?$```!(BU4X2(NST`@``+\!````Z`````#IUP```$V%_W1J28._@```
+M``!T8(!]00!U&_9%0P1T%0^W5"0"3(G^2(G?Z`````#IIP```$F+AX````!(
+M#[=4)`1(QX330`0```````!)QX>``````````$C'13@`````28N_D````+K_
+M____3(G^_]#K:(!]00!U8O9%0P1T7`^W5"0$#[9#0<'@!@'"2&/22(NST`@`
+M`+\"````Z`````#K.&9F9I!(@WTX`'0M2(M5.$B#NH@`````=!](BX*(````
+M2,>"B`````````!(BU4X2(NZD````/_0]D5$`G092(M5.$B+L]`(``"_!@``
+M`.@`````@&5$_4'_Q$4X90X/A\+]___^1"0'@'PD!P,/AG;]__^0N`$```!(
+M@\0(6UU!7$%=05Y!7\-F9F:09F9FD&9F9I!(@^PX2(E<)`A(B6PD$$R)9"08
+M3(EL)"!,B70D*$R)?"0P28G^2(GS3(MN2$@/MT8PN@````"`O#A`"```_P^$
+ML0(```^V1D*#^`\/A`0!``"#^`]_2H/X#`^$R0```(/X#'\<@_@%=&R#^`MF
+M9F:0#X2E````Z74"``!F9I!FD(/X#0^$K````(/X#F9F9I`/A*\```#I50(`
+M`&9FD&:0@_@9?Q*#^!A]7X/X%&9FD'0XZ3D"``"#^!MF9I!F9I!T-3W_````
+M#X2,````9F:0Z1L"``"^`0```$B)WV9FD.@`````Z08"``!(B??H`````.GY
+M`0``O@````!(B=_H`````.GG`0``O@$```!(B=_H`````.G5`0``2(GWZ```
+M``#IR`$``$B)]^@`````Z;L!``!(B??H`````&9FD.FK`0``2(GWZ`````!F
+M9I#IFP$``,9&0O])B=]!O`````!!@'T.``^&QP```$F-;6!(B>_H`````$B)
+MPTB+10A(B5T(2(DK2(E#"$B)&(![0O\/A(@```"`>T$`#X6%````@+OA````
+M`'1F2`^V0T"H`G0=J`1T&:@!=!4/ME-Y2(MS4$B)V4R)[^@`````ZT!(#[9#
+M0*@"=1FH!&9F9I!T$:@!=`U(B=Y,B??H`````.L>2`^V0T"H`G05J`1FD'0/
+MJ`%U"TB)WDR)]^@`````N@$```#IV@```&9FD&:0QH/A`````$'_Q$4X90X/
+MASW___]%.&4.#X6B````00^V1T$\(@^4PCP-#Y3`"="H`70_O@H```!,B?_H
+M`````+H!````Z8L```!(B=Y(Q\<`````N`````#H`````+X*````2(G?Z```
+M``"Z`0```.MC0;P`````08!]#@!V04F-;6!(B>_H`````$B)PTB+10A(B5T(
+M2(DK2(E#"$B)&`^V0T$\(@^4PCP-#Y3`"="H`7660?_$13AE#G?&9F:00<9%
+M"?],B>Y,B??H`````+H!````B=!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H
+M3(M\)#!(@\0XPV9FD&9FD$B#[%A(B5PD*$B);"0P3(ED)#A,B6PD0$R)="1(
+M3(E\)%!)B?U(B?-,BWY(2`^W1C"Z`````("\.$`(``#_#X2B!@``#[9&0H/X
+M"0^$=P,``(/X"7]*@_@%#X3[````@_@%?Q>#^`,/A)X```"#^`0/A,(```#I
+M9@8``(/X!V:0#X0T`P``@_@'9F9FD&9FD`^/%@,``.FI`@``9F:09I"#^!8/
+MA.<"``"#^!9F9F:0?R.#^!0/A"H#``"#^!1FD`^/I`(``(/X"@^$!P,``)#I
+M#`8``(/X&@^$2P(``(/X&G\2@_@7#X2R`@``9F9FD.GL!0``/?\```!F9I!F
+M9I`/A.,"``#IU@4``$F+1R"!8##___[_2(M^2+D`````N@$```#H`````+\%
+M````Z`````#IJ04``$B+?DBY`````+H`````Z`````"_4,,``.@`````Z8<%
+M``!!O@````"`?T,`=B!)#[97#69FD&:02(G01(GQ2-/XJ`%U"4'_QD4X=4-W
+MZD@/MD-`J`)T#*@$=`BH`0^%TP```$F+5R"+0C"I```!`'0-)?___O^)0C#I
+MN````+T0)P``1(AT)!!*C03U`````"7X!P``2(E$)`A$B?!(P>`#28G$08'D
+M^`<``$F+50!!@/X#=AE(BTPD"(N$$8`!``")!0`````E```!`.L308N$%(`!
+M``")!0`````E```!`(7`="6`?"00`W8.0<>$%(`!``````$`ZPQ!QX04@`$`
+M`````0"%P'40O^@#``#H`````/_-=9/K!(7M=1C&0T,"QD-"_TB)WDR)[^@`
+M````Z7,$``!!]D<*`70X2(G>3(G_9F:09I#H`````(3`=22]^@```&:02(G>
+M3(G_Z`````"$P'4.O^@#``#H`````/_-=>-!@/X#=B=*C03U`````"7X!P``
+M28M-`(N4`8`!``")%0````")E`&``0``ZT]*C03U`````$B)QH'F^`<``$F+
+M30!!@/X#=@^+A#&``0``B04`````ZQY*C03U`````"7X!P``28M5`(N$`H`!
+M``")!0````")A#&``0``2(M[2$B)WNBK*```OR!.``#H`````.F=`P``#[=V
+M,$C'QP````"X`````.@`````2(M[2$B)WN@[+P``Z7<#```/MW8P2,?'````
+M`+@`````Z`````!(BWM(2(G>Z*4O``#I40,``$B+?DCH1R@``.E#`P``2(M^
+M2.B9+```Z34#``!(BWY(Z.LK``#I)P,``$B+?DCH'2T``.D9`P``2(M^2.B?
+M+0``Z0L#``!(BWY(Z"$N``"0Z?P"``#&1D+_2`^V0T"H`G0(J`1T!*@!=19(
+M@WM8`)!U#DR)_^@`````B(/B````0?9'#`(/A(H!``!-BV=`00^V5"1&00^V
+M1"0[_\@YPGTR0?Y$)$9!_D0D1T'&1"1"`$$/MT0D3H/@_H/("&9!B40D3DR)
+MYDR)[^@`````Z7X"``!!O@````!!@'\.``^&P````$F-;V!(B>_H`````$B)
+MPTB+10A(B5T(2(DK2(E#"$B)&(![0O\/A($```"`N^$`````=&E(#[9#0*@"
+M=!^H!'0;J`%T%P^V4WE(BW-02(G93(G_Z`````#K0V:02`^V0T"H`G4:J`1F
+M9I!FD'01J`%T#4B)WDR)[^@`````ZQY(#[9#0*@"=!6H!&:0=`^H`74+2(G>
+M3(GOZ`````"Z`0```.G+`0``9F:09I#&@^$`````0?_&13AW#@^'1/___T'V
+M1"1.@'0>0?9$)$D#=!9!QD0D0@!,B>9,B>_H`````.F'`0``0<9'"?]!QD0D
+M0@!!#[=$)$Z#X/.#R`)F08E$)$Y!@&0D2?Y,B?Y,B>_H`````.E4`0``O@H`
+M``!(B=_H`````+H!````D.E!`0``0;X`````08!_#@`/AL8```!)C6]@9F:0
+M9F:02(GOZ`````!(B<-(BT4(2(E="$B)*TB)0PA(B1B`>T+_#X2(````@'M!
+M`'5[@+OA`````'1K2`^V0T"H`G0AJ`1T':@!=!D/ME-Y2(MS4$B)V4R)_^@`
+M````ZT5F9F:02`^V0T"H`G4:J`1F9I!FD'01J`%T#4B)WDR)[^@`````ZQY(
+M#[9#0*@"=!6H!&:0=`^H`74+2(G>3(GOZ`````"Z`0```.M^QH/A`````$'_
+MQD4X=PX/AT3___]%.'<.=4]!O@````!!@'\.`'9"28UO8$B)[^@`````2(G#
+M2(M%"$B)70A(B2M(B4,(2(D8#[9#03PB#Y3"/`T/E,`)T*@!#X7%_O__0?_&
+M13AW#G?"0<9'"?],B?Y,B>_H`````+H!````B=!(BUPD*$B+;"0P3(MD)#A,
+MBVPD0$R+="1(3(M\)%!(@\18PV9FD&:02(/L*$B)'"1(B6PD"$R)9"003(EL
+M)!A,B70D($F)_$B)\TB+%TB+KH@````/MD9"@_@9#X==!```B<#_),4`````
+M]D9.!'0,9L=&3@$`QD9"`>L\9H-^3B!U#&;'1DX(`,9&0@WK*?9&3H!T&?9&
+M20-T$P^W1DXD?X/("&:)1D[&1D(-ZPKV0TX(=`3&0T('2(G>3(GGZ`````#I
+M]@,``(N"!`$``(D%`````(/(4(F"!`$``+D!````N@(```"^`0```$B)W^@`
+M````Z<4#``"Y`0```+H`````O@$```!(B=_H`````.FI`P``N0$```"Z`0``
+M`+X!````2(G?Z`````#IC0,``+D!````NF````"^`0```$B)W^@`````Z7$#
+M```/MDY(0;@!````NF````"^`0```$B)W^@`````Z5`#``!!N`$```"Y```!
+M!+HA````O@$```!(B=_H`````.DN`P``0;@!````N0$```"Z`@```+X`````
+M2(G?Z`````#I#`,``$&X`0```+D`````N@(```"^`````$B)W^@`````Z>H"
+M``!(BT4@@6`P___W_T&X`0```+D!````N@(```"^`````$B)W^@`````Z;T"
+M``!!N`$```"Y`````+H"````O@````!(B=_H`````.F;`@``N0$```"Z`@``
+M`+X`````2(G?Z`````#I?P(``+D!````N@````"^`````$B)W^@`````Z6,"
+M``"Y`0```+H!````O@````!(B=_H`````.E'`@``2(M%((%@,/__]_]!N`$`
+M``"Y_____[H!````O@````!(B=_H`````.D:`@``N0$```"Z`````+X`````
+M2(G?Z`````#I_@$``$@/MD9'3(MTQEA)B6Y(28EV6`^V1D=!B$9Y0<9&0@-!
+MQD9!`$&`3D`%_D4.2(U%8$B+4`A,B7`(28D&28E6"$R),K^`&@8`Z`````!!
+MO0````!!@'PD0P!V'$@/ME4-2(G01(GI2-/XJ`%U"D'_Q44X;"1#=^E(BU4@
+MBT(PJ0``"`!T"B7___?_B4(PZV"[F#H``$J-!.T`````2(G%@>7X!P``9F9F
+MD$&`_0-V&DF+!"2+A"B``0``B04`````J0``"`!U*.L828L$)(N$*(`!``")
+M!0````"I```(`'4.O^@#``#H`````/_+=;I,B?9,B>?H`````.D``0``OT`-
+M`P#H`````+D`````NB````"^`0```$B)W^@`````OQ`G``#H`````.G0````
+MN0````"Z`0```+X`````2(G?Z`````"_$"<``.@`````Z:H```!(BT4@@6`P
+M___W_T&X`````+G_____N@$```"^`````$B)W^@`````OQ`G``#H`````.MV
+MN0````"Z`````+X`````2(G?Z`````"_$"<``.@`````ZU.Y`````+H@````
+MO@$```!(B=_H`````+\0)P``Z`````#K,.@`````9F:09I#K).@`````ZQU!
+MN`$```"Y\````+J;````O@$```!(B=_H`````+@!````2(L<)$B+;"0(3(MD
+M)!!,BVPD&$R+="0@2(/$*,-F9F:09F9FD$%7059!54%455-(@^PH28G\2(L'
+M2(E$)"!!OP````"`?T,`#X:F`@``9F9FD&9FD$2)^@^VPDAKP&A*C30@2(V6
+M8!(``/9"#A`/A'("``"X`0```$2)^4C3X`A""4B+MD@2``!(B70D&/9""`(/
+MA-T```!!C5\!03A<)$,/ALX````/ML%(:\!H3`'@2(E$)`@/ML-(:\!H3HTT
+M($F-KF`2``#V10X0#X24````3(ML)`A!]X5<$@`````.``^$?@```$F-A6`2
+M``!(B40D$+H(````2(GN2(G'Z`````"$P'1>28VV5!(``+H(````28V]5!(`
+M`.@`````A,!T0K@!````B=E(T^!(BU0D$`I""8A""8A%"4B#?"08`'4.38NV
+M2!(``$R)="08ZQ0/ML-(:\!H2(M,)!A*B8P@2!(``/_#03A<)$,/AT/___]F
+MD$B#?"08``^%I````$R)Y^@`````2(E$)!A(A<`/A%T!``!$B?H/ML)(:\!H
+M3`'@2(M,)!A(B8A($@``2(V00!(``$B)42`/MH!H$@``B$$*QD$)`$R)(<9!
+M#@#&05@`QD$H`$&-7P%!.%PD0W991(GZ#[;"2&O`:$H/MI0@:1(``$B)T(G9
+M2-/XJ`%T%`^VPTAKP&A(BTPD&$J)C"!($@``_\-!.%PD0W?7ZQMF9F:01(GZ
+M#[;"2&O`:$B+3"082HF,($@2``!$B?H/ML)(:\!H2HV$(&`2```/ME`)2(M,
+M)!B(40T/ME@)08#_`W8A2HT$_0`````E^`<``$B+5"0@QX00``(``#@```#K
+M'V:02HT$_0`````E^`<``$B+3"0@QX0(``(``#@```"_$"<``.@`````08#_
+M`W8;2HT$_0`````E^`<``$B+5"0@B9P0!`(``.L92HT$_0`````E^`<``$B+
+M3"0@B9P(!`(``$'_QT4X?"1##X=A_?__2(/$*%M=05Q!74%>05_#9I!(@^P8
+M2(D<)$B);"0(3(ED)!!)B?R)\TB++T"`_@-V($B-!-T`````)?@'``#'A"@P
+M`@``#````.L>9F:09F:02(T$W0`````E^`<``,>$*%`"```,````OQ`G``#H
+M`````(#[`W8<2(T$W0`````E^`<``(N$*#0"``")!0````#K&DB-!-T`````
+M)?@'``"+A"A4`@``B04`````B<*!X@``/P#!ZA`/ML-(:\!H2HV,(&`2```/
+MMD$(@^#\B$$(@_H0=0J#R`*(00CK$F:0#[;#2&O`:$*`C"!H$@```4B+'"1(
+MBVPD"$R+9"002(/$&,-F9F:09F:09F:09F:005=!5D%505154TB#["A!B?1)
+MB==(BR^[`````$*-!.4`````1(UPX$&)Q69FD&:008/\`W81C02=``$``$&)
+MA"X@`@``ZP^-!)T``0``08F$+0`"``"_$"<``.@`````B=I!@_P#=A!!BX0N
+M)`(``(D%`````.L.08N$+00"``")!0````")!)3_PX/[!G:@2(L$)$F)!TB+
+M1"0(28E'"$B+1"0028E'$(M$)!A!B4<82(/$*%M=05Q!74%>05_#05=!5D%5
+M05154TB#["A!B?1)B==(BR^[`````$*-!.4`````1(UPX$&)Q69FD&:008/\
+M`W81C02='`$``$&)A"X@`@``ZP^-!)T<`0``08F$+0`"``"_$"<``.@`````
+MB=I!@_P#=A!!BX0N)`(``(D%`````.L.08N$+00"``")!0````")!)3_PX/[
+M!G:@2(L$)$F)!TB+1"0(28E'"$B+1"0028E'$(M$)!A!B4<82(/$*%M=05Q!
+M74%>05_##[8'P.@$@^`'B<*`S@+V1P($#T7"B<*!R@```@#V1P,$#T7"B<*`
+MS@CV1P((#T7"B<*!R@``"`#V1P,(#T7"B<*`S@3V1P("#T7"B<*!R@``!`#V
+M1P,"#T7"#[97%,'B&`G0PV9F9I!F9F:09F9FD.@`````\\-F9I!F9I!F9I!!
+M5T%6055!5%532(/L*$F)_HGU3(L_B?(/ML)(:\!H2`'X2(FX0!(``,:`:1(`
+M``!`#[;VZ`````"Y`````+H@````2(G@B`A(_\!(_\IU]D0/MNU(B>)$B>Y,
+MB??H`````(GI#[;92&O;:$P!\TB)Y^@`````B8-0$@``2(M$)`Q(B8-4$@``
+M2(V38!(``$"`_0-V&D*-!*T`````2)A"BX0XT`$``(D%`````.L;2(T$K0``
+M```E_`,``$*+A#C0`0``B04`````B4(,B>H/ML)(:\!H2HV4,'`2``!`@/T#
+M=AU(C03M`````"7X!P``0HN$.(`!``")!0````#K&TB-!.T`````)?@'``!"
+MBX0X@`$``(D%`````(D"B>D/ML%(:\!H2HV$,&`2``#V0`X0#X11`0``]D`(
+M`G18N0````"Z(````$B)X&9F9I"("$C_P$C_RG7V0`^V]4B)XDR)]^@`````
+MB>@/MMA(:]MH3`'S3(VC4!(``$B)Y^@`````08E$)`Q(BT0D#$B)@V`2``#K
+M%8GJ#[;"2&O`:$+'A#!<$@```0`"`$"`_0-V&TB-!.T`````)?@'``!"QX0X
+M,`(``!@```#K&4B-!.T`````)?@'``!"QX0X4`(``!@```"_$"<``.@`````
+M0(#]`W8?2(T$[0`````E^`<``$*+A#@T`@``B04`````B<+K'4B-!.T`````
+M)?@'``!"BX0X5`(``(D%`````(G"B>D/ML%(:\!HB=&!X?___]^!R@```"!"
+M]X0P;!(``````P`/1-%`@/T#=A=(C03M`````"7X!P``0HF4.#0"``#K%4B-
+M!.T`````)?@'``!"B90X5`(``$B#Q"A;74%<05U!7D%?PV9F9I!F9I"+A_`(
+M```E____`#U0`9,`=1,/MH?S"```P.@$N@$````\#'0%N@````")T,-F9I!!
+M54%455-(@^P(28G]3(LGN`````"P4+0%2"7__P#_2`T```0`2+K___\`____
+M_T@AT$@-````,$BZ_____P#___]((=!(N@`````1````2`G02+K______P#_
+M_T@AT$BZ``````"K``!(B<5("=5(QX?X$P```````$@YO]`(```/A>D```!(
+MC9\`%```2(V7\`@``$&X`0```+D(````O@```@#H`````$&+A>@(``!!#[:5
+M\P@``(U$@OQ!B(7S"```3(GOZ`````"$P'4'28FM\`@``(L%`````$$/MI7S
+M"````<+_P(D%`````$&(E?,(``!!#[:%\`@``(B#\`@``$$/MH7Q"```B(/Q
+M"```00^VA?((``"(@_((``!!#[:%\P@``(/``HB#\P@``$$/MH7T"```B(/T
+M"```00^VA?4(``"(@_4(``!!#[:%]@@``(B#]@@``$$/MH7W"```B(/W"```
+M9F9FD&9FD$G'A?@3````````08N$)``!``")!0`````/M]#VPB!U&XG0@\@@
+M08F$)``!``!!BX0D``$``(D%`````$F+10#'@`0!````````28M%`,>`&`$`
+M``````!)BT4`QX`<`0```````+^`A!X`Z`````!!QX0D<`$``!@!``!!BX0D
+M=`$``(D%`````(#D_4''A"1P`0``&`$``(#,!$&)A"1T`0``0<>$)'`!```H
+M`0``0<>$)'0!``!_?P``0<>$)'`!```D`0``08N$)'0!``")!0````!FN```
+M0<>$)'`!```D`0``#?\_``!!B80D=`$``$''A"1P`0``/`$``$''A"1T`0``
+M``!Z`$''A"1P`0``I`$``$''A"1T`0``?;_O_T''A"1P`0``N`$``$&+A"1T
+M`0``B04`````#[?`0<>$)'`!``"X`0``#0``^@!!B80D=`$``$''A"2<````
+M_P```$''A"20`@``1`$``$''A"24`@``!A``"$''A"20`@``M`$``$''A"24
+M`@``7W```$''A"20`@``,````$&+A"24`@``B04`````,.2`S#-!B80DE`(`
+M`+T`````08!]0P`/AEL#``!F9F:00(#]`W8;2(T$[0`````E^`<``$+'A"`P
+M`@``"````.L92(T$[0`````E^`<``$+'A"!0`@``"````+\0)P``Z`````!`
+M@/T#=AU(C03M`````"7X!P``0HN$(#0"``")!0````#K&TB-!.T`````)?@'
+M``!"BX0@5`(``(D%`````(G"0(#]`W8=2(T$[0`````E^`<``('*``"``$*)
+ME"`T`@``ZQM(C03M`````"7X!P``@<H``(``0HF4(%0"``!`#[;=28V5\`@`
+M`(G>3(GOZ`````")WDR)[^@`````0(#]`W89C03=`````$B80L>$(#`"``!$
+M`0``ZQMFD$B-!.T`````)?@'``!"QX0@4`(``$0!``"_$"<``.@`````0(#]
+M`W8;2(T$[0`````E^`<``$+'A"`T`@``!A``".L92(T$[0`````E^`<``$+'
+MA"!4`@``!A``"$"`_0-V'4B-!.T`````)?@'``!"QX0@,`(``+0!``#K&V:0
+M2(T$[0`````E^`<``$+'A"!0`@``M`$``+\0)P``Z`````!`@/T#=AM(C03M
+M`````"7X!P``0L>$(#0"``!?<```ZQE(C03M`````"7X!P``0L>$(%0"``!?
+M<```0(#]`W8=2(T$[0`````E^`<``$+'A"`P`@``"````.L;9I!(C03M````
+M`"7X!P``0L>$(%`"```(````OQ`G``#H`````+K_5(``0(#]`W8B2(T$[0``
+M```E^`<``('B_U0``$*)E"`T`@``ZR!F9I!FD$B-!.T`````)?@'``"!XO__
+M?_U"B90@5`(``$`/MMVZ`0```(G>3(GOZ`````"_(*$'`.@`````0(#]`W89
+MC03=`````$B80HN$((`!``")!0````#K&TB-!.T`````)?@'``!"BX0@@`$`
+M`(D%`````(G"@>+___[_0(#]`W872(T$[0`````E^`<``$*)E""``0``ZQ5(
+MC03M`````"7X!P``0HF4((`!``"Z!0'(`$"`_0-V&4B-!.T`````)?@'``!"
+MB90@A`$``.L79I!(C03M`````"7X!P``0HF4((0!``"_H(8!`.@`````0`^V
+M]4R)[^@`````_\5!.&U##X>I_/__3(GOZ`````!!BX0D!`$``(D%`````(/(
+M`D&)A"0$`0``08N$)``!``")!0````"#X/V#R`U!B80D``$``$&+A"0``0``
+MB04`````28N%F!```$&)A"0(`0``08N%G!```$&)A"0,`0``28N%R!```$&)
+MA"00`0``08N%S!```$&)A"04`0``0<>$)"`!````````00^WA3P2```E_P\`
+M``T```$`08F$)"`!``!)BX4H$0``08F$)"0!``!!BX4L$0``08F$)"@!``!)
+MBX50$0``QP#_#P``0<>$)#0!````````00^WA3X2```E_P\```T```$`08F$
+M)#0!``!)BX58$0``08F$)#@!``!!BX5<$0``08F$)#P!``!!QX0D2`$`````
+M``!!QX0D3`$````!``!!BX0D!`$``(D%`````(/(64&)A"0$`0``0<>$)%0!
+M``#[_P`,0<>$)%P!``#__P``2(/$"%M=05Q!7<-F9I!F9I!F9I!32(G[Z.?W
+M__^Z`````&:0#[;"QX2#F`D```````#'1(-<`````/_"@/H/=N-FQX,X$@``
+M_P]FQX,Z$@``_P_&0U`!N`$```!;PV9FD&9FD+D`````.?%]+69F9I!F9I!(
+M8\$/MA0XA-(/E<"`^B`/E<(/ML"%PG0'N`````##D/_!.?%\VK@!````9F:0
+M9I##9F9FD&9F9I!F9F:09F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET
+M)"A,B7PD,$F)_$B)]6:!?B"%``^'G````$@/MT8@@+PX0`@``/\/A(D```!F
+M@WX@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!``!(BT002`^V2`CK96:!?B"!
+M`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(#[9(".LV2`^W
+M1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(````#[9(".L,9F9FD&9F
+MD+G_____N_____]F@7T@A0!W#D@/MT4@0@^VG"!`"```@/G_="$/ML%"@+P@
+MQ@@``/\/E,*`^_\/E,`)T*@!=0:`?20&=2I(@WUX`'032(UU>$R)Y^@`````
+M9F9FD&9FD$B)[DR)Y^@`````Z;`&```/ML%.#[:L(,8(``!-:>VH````3XVL
+M):`!```/ML-(:<"(`0``2(G#20.<)!@)``!F@;O`````JPUW!H!])`)U-DB#
+M?7@`=`Q(C75X3(GGZ`````!(B>Y,B>?H`````,9#0O_&0T,"2(G>3(GGZ```
+M``#I.08```^V13B#^!H/A%P%``"#^!I_+(/X$G1=@_@2?Q*%P`^$_P0``&9F
+MD&:0Z=\%``"#^!4/A,<%``!FD.G/!0``@_@E#X2S`@``@_@E?Q*#^!L/A,4$
+M``!F9F:0Z:\%```]G@```&9FD&9FD`^$>P,``.F9!0``@'TD`)`/A6$"``!(
+MBTU(@'TY`&:0=&F`>T(9#Y3`@\`+B$-"2(7)=$F`>0&`=4.`>0(`=3V`>0,\
+M=S</ME$#OR````"^%````$B-0WQ`B#A(_\!(_\YU]8/Z%+@4````#T/0B=)(
+MC7M\2(UQ!.@`````9L>#P```````Z1D%``#&0T(8]D$&0'4/#[8!@^`?@_@-
+M#X4[`0``#[8!@^`?@_@-N"(```"Z#0````]$PHA#00^V\$C'QP````"X````
+M`.@`````2(-]>`!T#$B-=7A,B>?H`````$B)[DR)Y^@`````0;X`````08!]
+M#@!V04F-;6!(B>_H`````$B)PTB+10A(B5T(2(DK2(E#"$B)&`^V4T&`^B(/
+ME<"`^@T/E<(/ML"%PG4)0?_&13AU#G?#13AU#@^%B00``&;'1"0&``!!OP``
+M``!!O@````!!@'T.`'9528UM8$B)[^@`````2(G#2(M%"$B)70A(B2M(B4,(
+M2(D8#[9#03PB#Y3"/`T/E,`)T*@!=!</MT0D!F8Y0S!R#$F)WP^W6S!FB5PD
+M!D'_QD4X=0YWKTV%_P^$$00``$&`?T+_#X0&!```0<9'0O],B?Y,B>?H````
+M`.GQ`P``#[8!@^`?@_@!=0W&0T$!QD-"_^FM`P``]D$%`70$QD-"&4B#?4@`
+M#X28`P``2(M-2+X`````NB@```!(C8.0````0(@P2/_`2/_*=?6^`````+H(
+M````2(V#N````$"(,$C_P$C_RG7U2(M!"$B)@Y````!(BT$02(F#F````$B+
+M01A(B8.@````BT$@B8.X````Z2T#``!F_X/`````OQ`G``#H`````,9#0@7I
+M$P,``$B+34A(BT50#[9``H/@#X!])`!U<P^V40</MD$&P>`(`<(/MD$%P>`0
+M`<(/MD$$P>`8`<*)D]P````/ME$##[9!`L'@"`'"#[9!`<'@$`'"#[8!P>`8
+M`<)(B5-P@[O<`````'4:9O^#P````+\0)P``Z`````#&0T(+Z90"``#&0T(-
+MZ8L"``"`?20@9F:0=2X\!@^4PCP"#Y3`"="H`70>9O^#P````+\0)P``Z```
+M``#&0T(%Z5@"``!F9F:02(-]>`!T#$B-=7A,B>?H`````$B)[DR)Y^@`````
+M2(G:3(GN3(GGZ`````#I3P(``$B+15`/MD`"@^`/2(M-2(!])``/A;$````/
+MME$+#[9!"L'@"`'"#[9!"<'@$`'"#[9!",'@&`'"B9/<````#[91!P^V00;!
+MX`@!P@^V007!X!`!P@^V003!X!@!PDACTD@/MD$#2,'@($@!PD@/MD$"2,'@
+M*$@!PD@/MD$!2,'@,$@!PD@/M@%(P>`X2`'"2(E3</9!#`%T!6:#2V($@[O<
+M`````'4:9O^#P````+\0)P``Z`````#&0T(9Z6(!``#&0T(-Z5D!``"`?20@
+MD'4N/`8/E,(\`@^4P`G0J`%T'F;_@\````"_$"<``.@`````QD-"&>DH`0``
+M9F9FD$B#?7@`=`Q(C75X3(GGZ`````!(B>Y,B>?H`````$B)VDR)[DR)Y^@`
+M````Z1\!``#&0T(4Z>H```"`?20@9I!U-4B+15`/MD`"@^`//`8/E,(\`@^4
+MP`G0J`%T&F;_@\````"_$"<``.@`````QD-"%.FM````QD-"&^FD````@'TD
+M`'5,2(M-2`^W0V!F@TMB`0R&9HE#8(!Y`P!U!8`Y%G<79O^#P````+\0)P``
+MZ`````#&0T(-ZVGV008$=`=F@TMB`NM'9H-C8OUF9I#K/8!])"!U,DB+15`/
+MMD`"@^`//`8/E,(\`@^4P`G0J`%T'&;_@\````"_$"<``.@`````QD-"!>L:
+M9H-C8/G&0T(.ZP^`?20`=05F@TMB`\9#0@](@WUX`'0,2(UU>$R)Y^@`````
+M2(GN3(GGZ`````!(B=Y,B>?H`````&9FD$B+7"0(2(ML)!!,BV0D&$R+;"0@
+M3(MT)"A,BWPD,$B#Q#C#9F9FD&9FD&9FD&9FD$B#["A(B5PD"$B);"003(ED
+M)!A,B6PD($B)_4B)\V:!?B"%``^'E@```$@/MT8@@+PX0`@``/\/A(,```!F
+M@WX@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!``!(BT002`^V2`CK7V:!?B"!
+M`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(#[9(".LP2`^W
+M1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(````#[9(".L&D+G_____
+MOO____]F@7L@A0!W#4@/MT,@#[:T*$`(``"`^?]T(0^VP8"\*,8(``#_#Y3"
+M0(#^_P^4P`G0J`%U!H![)`9U(TB#>W@`=`Q(C7-X2(GOZ`````!(B=Y(B>_H
+M`````.EX`@``#[;!3`^VI"C&"```36GDJ````$V-I"R@`0``B?(/ML)(:<"(
+M`0``28G%3`.M&`D``$B+<TB`>R0`#X2I````@'LZ!@^$GP```(![.@P/A)4`
+M``!!#[>5P````(U"`69!B87`````9H/Z"78F08!]0@9T'T'&14,"0<9%0O]!
+M@&5$_DR)[DB)[^@`````Z>8!``"_Z`,``.@`````20^V14"H`G0IJ`1T):@!
+M="%!#[95>4F+=5!!N`````"Y`@```$R)Y^@`````Z:H!``!!QD5"`TR)[DB)
+M[^@`````Z94!``!F9I!FD(![.@%U#T'&14($9F:09I#I30$``(![.@)U"D'&
+M14(%Z3T!``"`>SH##X6:````08!]0@5U+&:!?@3(-V9F9I!U($$/MW4P2,?'
+M`````+@`````Z`````!!QD5"!ND``0``3(GOZ`````!)C;V0````OB@```#H
+M!?7__X3`=3A)C7U\OA0```#H\_3__X3`=29)C;VX````O@@```#HWO3__X3`
+M=1%)@WUP`'0*0<9%0A?IJP```$'&14(:9D'_A<````#IF0```(![.A=U"D'&
+M14(5Z8D```"`>SH89F:0=0=!QD5"%NMY@'LZ!&9FD'4'0<9%0@?K:8![.@5F
+M9I!U!T'&14((ZUF`>SH&9F:0=0=!QD5"">M)@'LZ#&9FD'4'0<9%0@KK.8![
+M.A9F9I!U!T'&14(4ZRF`>SH.9F:0=2!(@WMX`'0,2(US>$B)[^@`````2(G>
+M2(GOZ`````#K+DB#>W@`=`Q(C7-X2(GOZ`````!(B=Y(B>_H`````$R)[DB)
+M[^@`````9F:09I!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#9F9FD&9FD$B#
+M["A(B5PD"$B);"003(ED)!A,B6PD($B)_4B)\V:!?B"%``^'E@```$@/MT8@
+M@+PX0`@``/\/A(,```!F@WX@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!``!(
+MBT002`^V2`CK7V:!?B"!`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\`
+M`$B+1!`(#[9(".LP2`^W1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(
+M````#[9(".L&D+G_____OO\```!F@7L@A0!W#D@/MT,@9@^VM"A`"```@/G_
+M#Y3"9H'^_P`/E,`)T*@!="-(@WMX`'0,2(US>$B)[^@`````2(G>2(GOZ```
+M``#IRP````^VP4P/MJ0HQ@@``$UIY*@```!-C:0LH`$```^WQDAIP(@!``!)
+MB<5,`ZT8"0``@'LD`'1$#[;Q2,?'`````+@`````Z`````!)BU4(28M%`$B)
+M4`A(B0)!_DPD#DR)[DB)[^@`````0<9$)`G_3(GF2(GOZ`````"`>SH!=2R_
+M$"<``.@`````2(G>2(GOZ`````"Y`0```+H`````3(GN3(GGZ`````#K(+]0
+MPP``Z`````!(B=Y(B>_H`````$R)[DR)Y^@`````2(M<)`A(BVPD$$R+9"08
+M3(ML)"!(@\0HPV9FD&:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@2(GU08G4
+M08G-2(L?2(G?Z`````!(B<%(A<!U#<:%X0````'&14(#ZW7&0#CAQD`Y`4&`
+M_`$9P/?0@\`"B$$ZN`\```!%A.UU$+@`````2(-]6`!T!`^V17F(03L/MT4P
+M9HE!($B)62C'030`````2,=!2`````!%A.U(Q\``````2,?"`````$@/1<)(
+MB8&@````2(G.2(G?Z`````!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#D$%7
+M059!54%455-(@^P(28G]2(GU3(LW3(GWZ`````!(B<-(A<!U#,:%X0````'I
+MGP```$R)]^@`````28G$2(7`=13&A>$````!2(G>3(GWZ`````#K>TR->UC&
+M0SCAQD,Y`<9#.@,/MT4P9HE#($F+10!(B4,HQT,T``(``$F+1"002(E#2+D`
+M````N@`"``"("$C_P$C_RG7V3(EC>$C'@Z``````````O@````!,B?_H````
+M`(M3-$F+="083(G_Z`````!(B=Y,B??H`````$B#Q`A;74%<05U!7D%?PV9F
+M9I!F9F:09F9FD&9FD$&)T+D`````.=%S'V9F9I`/MA</MD<!B`:(5@%(@\8"
+M2(/'`O_!1#G!<N7SPV9FD$%455-(B?M(B?5)B?1F@SX`>0X/MP8E`!\``,'X
+M"(A'04B+111(B4-\2(M%'$B)@X0```"+122)@XP```!(BT4N2(F#N````$B+
+M139(B8.0````2(M%/DB)@Y@```!(BT5&2(F#H````$B+14Y(B8.H````2(M%
+M5DB)@[````!(C7M\N@H```!(B?[H0/___TB-N[@```"Z!````$B)_N@L____
+M2(V[D````+H4````2(G^Z!C___]FQT-@``!FQT-B``!F08.\)+(!```!#Y3"
+MP>(##[9#1(/@]PG0B$-$]H6G````!'0&9L=#8`$`]H6D`````70H9H-+8`+V
+MA:H````!=`5F@TMB`?:%J`````%T#&:!2V```69FD&9FD/:%I````"!T%V:#
+M2V`$]H6J````('0)9H-+8@)F9F:0]H6D````0'079H%+8(``]H6J````0'0(
+M9H-+8@AF9I#&0WH"]H69`````70G]D-@`70*9H-+8`AF@TMB$`^VA98```"#
+MX!__P(A#>CP@=03&0WH?]H68````"'0&9H%+8``"]H68````!'0%9H-+8"#V
+MA9@````"=`5F@TM@$/:%J````"!T#O:%K@```"!T!6:#2V!`]D-@`7042(N%
+MR````$B)0W#K#F9F9I!F9I"+17A(B4-P2/]+</9%:@)T'_:%@`````]T%F:#
+MO8`````"&<"#P`2(0V3K"&9F9I#&0V0"QD-E__9%?@1T!L9#90+K'/9%?@)T
+M",9#90%FD.L.]D5^`70(QD-E`&9F9I#&0V;_]D5J!'0?N0````"02`^WA;``
+M``!(T_BH`70#B$MF_\&`^09VY[X``@``2(GOZ`````")@\0```"X`0```%M=
+M05S#9F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)_4B)\TR+)TR)Y^@`
+M````2(G"#[9+9DB%P'4)QH/A`````>M'QD`XX<9`.0'&0#H$B$@[#[=#,&:)
+M0B!(BT4`2(E"*,="-`````!(QT)(`````$C'@J``````````B$MI2(G63(GG
+MZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9F9I!F9I!F9I!(@^P82(D<
+M)$B);"0(3(ED)!!(B?U(B?-,BR=,B>?H`````$B)P@^V2V1(A<!U"<:#X0``
+M``'K1\9`..'&0#D!QD`Z!8A(.P^W0S!FB4(@2(M%`$B)0BC'0C0`````2,="
+M2`````!(QX*@`````````(A+9TB)UDR)Y^@`````2(L<)$B+;"0(3(MD)!!(
+M@\08PV9F9I!F9F:09F:09F:02(/L&$B)'"1(B6PD"$R)9"002(G[2(GU3(LG
+M3(GGZ`````!(B<)(A<!U"<:%X0````'K0,9`..'&0#D!QD`Z!@^W13!FB4(@
+M2(L#2(E"*,="-`````!(QT)(`````$C'@J``````````2(G63(GGZ`````!(
+MBQPD2(ML)`A,BV0D$$B#Q!C#9F:09F:09F:02(/L&$B)'"1(B6PD"$R)9"00
+M2(G[2(GU3(LG3(GGZ`````!(B<)(A<!U"<:%X0````'K0,9`..'&0#D!QD`Z
+M#`^W13!FB4(@2(L#2(E"*,="-`````!(QT)(`````$C'@J``````````2(G6
+M3(GGZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#9F:09F:09F:02(/L&$B)'"1(
+MB6PD"$R)9"002(G[2(GU3(LG3(GGZ`````!(B<)(A<!U"<:%X0````'K2\9`
+M..'&0#D!QD`Z%L9`/`$/MT4P9HE"(,:"F`````](BP-(B4(HQT(T`````$C'
+M0D@`````2,>"H`````````!(B=9,B>?H`````$B+'"1(BVPD"$R+9"002(/$
+M&,-F9F:09F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)^TB)]4R+)TR)
+MY^@`````2(G"2(7`=0G&A>$````!ZT#&0#CAQD`Y`<9`.A</MT4P9HE"($B+
+M`TB)0BC'0C0`````2,="2`````!(QX*@`````````$B)UDR)Y^@`````2(L<
+M)$B+;"0(3(MD)!!(@\08PV9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)
+M^TB)]4R+)TR)Y^@`````2(G"2(7`=0G&A>$````!ZT#&0#CAQD`Y`<9`.A@/
+MMT4P9HE"($B+`TB)0BC'0C0`````2,="2`````!(QX*@`````````$B)UDR)
+MY^@`````2(L<)$B+;"0(3(MD)!!(@\08PV9FD&9FD&9FD$B#["A(B1PD2(EL
+M)`A,B60D$$R);"083(ET)"!(B?U!B?1!B=5!B<Y(BX>(````2(L82(G?Z```
+M``!(B<;&0#CAQD`Y`<9`.A&X#P```$6$Y'4$#[9%1XA&.T2(;CP/MT5`9HE&
+M($B)7BC'1C0`````2,=&2`````!%A/9(Q\``````2,?"`````$@/1<)(B8:@
+M````2(G?Z`````!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(@\0HPV9FD&9F
+MD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?R)RT&)]4&)
+MUD6)QTB+AX@```!(BRA(B>_H`````$B)QL9`..'&0#D!QD`Z$K@/````183M
+M=09!#[9$)$>(1CM$B'8\#[;'B$8]B=C!Z!"(1CZ)V,'H&(A&/XA>0$$/MT0D
+M0&:)1B!(B6XHQT8T`````$C'1D@`````183_2,?``````$C'P@````!(#T7"
+M2(F&H````$B)[^@`````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P
+M2(/$.,-F9F:09F9FD&9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H
+M3(E\)#!)B?Q(B?5!O@````!F@7X@A0`/AY8```!(#[=&(("\.$`(``#_#X2#
+M````9H-^(']W(D@/MH0X0`@``$B+EQ@)``!(:<"(`0``2(M$$$@/ME`(ZU]F
+M@7X@@0!W)T@/MT8@2`^VA#A`"```2(N7:`D``$AIP,@/``!(BT00"`^V4`CK
+M,$@/MT8@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B`````^V4`CK!I"Z
+M_____[G_____9H%]((4`=PY(#[=%($(/MHP@0`@```^VPDH/MIP@Q@@``$AI
+MVZ@```!*C9PCH`$```^VP4AIP-````!)B<5-`ZPD0`D``(!]/`(/A88````/
+MMD5`)?````"#^"`/E,*#^!`/E,`)T*@!=&L/ME5`B="#X`^#^`%U)8G1@>'P
+M````0;@!````N@(```"^`````$R)[^@`````Z;$&``!)#[9%1TV+=,58#[9%
+M0"7P````@_@@#Y3`@\`(08B&X@```$F+1EAF@6!.__[I?P8``&9FD&9FD(!]
+M)`!T/P^V721(@WUX`'0/2(UU>$R)Y^@`````9F:02(GN3(GGZ`````"`^P(/
+MA44&``!,B>Y,B>?H`````)#I-`8``$$/MD5"@_@9#X?]!0``B<#_),4`````
+M00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````(G"@_@%N`4````/1L)!
+MB$4[@'L/`'0.0<9%0@#&0P\`Z;`%``!!QD5"`NFF!0``00^V15#!X`A(F$F+
+ME"3`$```BX0"3`@``(D%`````&8/ML!F08E%/$$/MD50P>`(2)A)BY0DP!``
+M`(N$`D0(``")!0````")PL'H"&9!B44^#[;"P>`(9D$)13QF08%]/D!!N`,`
+M``"Z&0````]$PD&(14+I+04``$$/MD50P>`(2)A)BY0DP!```(N$`D0(``")
+M!0````!!B$4Y00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````(G"J`AT
+M!T'&13H,ZR>H!'0,0<9%.@MF9I!FD.L72(G02-'H@^`!@_@!&<#WT(/@"D&(
+M13I!QD5"!.FM!```00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````(/(
+M"$&(14A!QD5"!>E]!```0<9%0@;I<P0``$$/MD50P>`(2)A)BY0DP!```(N$
+M`DP(``")!0````!!@'U'`1G`@^`"@\`408A%0ND^!```00^V14?_P$&(14=!
+M.D4[<PI!QD5"%NDC!```0<9%1P!!QD5"%[\@H0<`Z`````#I"@0``$'&14(4
+MZ0`$``!!QD5"".GV`P``0<9%0A20Z>L#``!!QD5*`N@`````28F%P````$'&
+M14(5Z=`#``!!#[9%4,'@"$B828N4),`0``"+A`),"```B04`````1`^V^$$/
+MMD50P>`(2)A)BY0DP!```(N$`D0(``")!0`````/ML#!X`A!"<?H`````$F)
+MA<@```!$B?B#X`^#^`-U$4&`?4H`=`I!QD5""NE=`P``28N%R````$$KA<``
+M```M0`T#`'@'08!]2@!T&4'&14(508!]2@`/A#$#``!!_DU*Z2@#``!)#[9%
+M1TF#?,58``^$U0```,9$)`<`@'L.`'8[3(U[8$R)_^@`````28G&20^V14=-
+M.73%6'0@28M'"$V)=PA-B3Y)B48(3(DP_D0D!P^V1"0'.$,.=\G^2PY)@WXX
+M`'1L28M&.$C'0&``````0?9&1`1U)4'^A"3O$P``3(GGZ`````!)BT8X#[9P
+M`;H!````3(GGZ`````!)BU8X28NT)-`(``"_`0```.@`````28M6.$F+M"30
+M"```OP8```#H`````$G'1C@`````20^V14=)QT3%6`````!,B?9,B>?H````
+M`$'&14()Z3@"``!!#[9%4,'@"$B828N4),`0``"+A`),"```B04`````#[;(
+M00^V15#!X`A(F$F+E"3`$```BX0"1`@``(D%`````,'@"`G!08E-5$&`?4(*
+M=`CWP0```0!T$4'&14(+Z=4!``#^2PYFD.MF0<9%0@Q)#[9%1TF#?,58`'1)
+MQD0D!@"`>PX`=DE,C7M@2(U[8.@`````28G&20^V14=-.73%6'3`28M'"$V)
+M=PA-B3Y)B48(3(DP_D0D!@^V1"0&.$,.=\CK"TR)Y^@`````28G&387V#X2(
+M`0``20^V14=-B73%6$$/MD5+08B&X@```.E$`0``0;X_0@\`2(M#(/9`,@AU
+M)4R)Y^@`````OP$```#H`````$'_SD&#_O]T"DB+0R#V0#((=-M!QD5"">D%
+M`0``00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````$0/MOA!#[9%4,'@
+M"$B828N4),`0``"+A`)$"```B04`````#[;`P>`(00G'1(GY@>'_#P``@?D3
+M`0``#Y3"@?DC`0``#Y3`"="H`70M0<9%0AB!^1,!``!U"D'&14L(Z8(```!$
+MB?@E_P\``#TC`0``=7-!QD5+">ML00^V549!#[9%.__(.<)]#T'^149!_D5'
+M0<9%0@?K34'&14(`00^W14Z#X/>#R`)F08E%3DB#?7@`=`Q(C75X3(GGZ```
+M``!(B>Y,B>?H`````,9#"?](B=Y,B>?H`````.LR0<9%0@-F9F:02(-]>`!T
+M#$B-=7A,B>?H`````$B)[DR)Y^@`````3(GN3(GGZ`````!(BUPD"$B+;"00
+M3(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!(@^PX2(E<)`A(B6PD$$R)
+M9"083(EL)"!,B70D*$R)?"0P2(G[28GT0;\`````O@````!F08%\)""%``^'
+MGP```$D/MT0D(("\.$`(``#_#X2+````9D&#?"0@?W<B2`^VA#A`"```2(N7
+M&`D``$AIP(@!``!(BT002`^V4`CK969!@7PD(($`=RA)#[=$)"!(#[:$.$`(
+M``!(BY=H"0``2&G`R`\``$B+1!`(#[90".LS20^W1"0@2`^VA#A`"```2(N7
+M0`D``$AIP-````!(BX00B`````^V4`CK"&9FD+K_____N?____]F08%\)""%
+M`'<.20^W1"0@#[:,&$`(```/ML%(:<#0````28G%3`.K0`D```^VPD@/MJP8
+MQ@@``$AI[:@```!(C:P=H`$``(#Z_W0?@+P8Q@@``/\/E,*`^?\/E,`)T*@!
+M=0A!@'PD)`9U*TF#?"1X`'0328UT)'A(B=_H`````&9FD&9FD$R)YDB)W^@`
+M````Z=`%``!!@'PD)`!T&$B)[DB)WV:0Z`````#IM@4``&9FD&9FD$$/MD5"
+M@^@-@_@$#X=O!0``B<#_),4`````00^V15#!X`A(F$B+D\`0``"+A`),"```
+MB04`````1`^VR$$/MD50P>`(2)A(BY/`$```BX0"1`@``(D%`````,'@"$$)
+MP;\`````0;@`````0;X`````08!].P!V,D2)RF9FD&:02(G01(GQ2-/XJ`%T
+M%/_&#[;!28-\Q5@`=`5!_\#K`O_'0?_&13AU.W?60(3_=`5!@$U)`46$P'0%
+M08!-20)`@/X!#X4]`0``0;X`````08!].P!V4$2)RD$/MLY(B=!(T_BH`70<
+MB<I(B=Y(B>_H`````$B%P'052(EH2$R):%CK"T'_QD4X=3MWS>L818AU1T4X
+M=3MV#D'&14(.9F9FD.E;!```13AU.P^%400```^V=0VZ`0```$B)W^@`````
+MQD0D`P"`?0X`#X:`````3(UU8$R)]^@`````28G'28M&"$V)?@A-B3=)B4<(
+M3(DX28-_.`!T&DF+5SA(B[/0"```OP4```#H`````$&`3T0"3(GZO@8```!(
+MB>_H`````$&`?WL`=!E(B=_H`````+\!````Z`````!!@'][`'7G_D0D`P^V
+M1"0#.$4.=X1)@WPD>`!T#4F-="1X2(G?Z`````!,B>9(B=_H`````$'&14D`
+MQD4)`$B)[^@`````Z:L#``!F08%-3H``0;X`````08!].P!V342)RD$/MLY(
+MB=!(T_BH`70<B<I(B=Y(B>_H`````$B%P'062(EH2$R):%CK#$'_QD4X=3MW
+MS9#K%$6(=4=%.'4[=@I!QD5"#^D:`P``13AU.P^%$`,```^V=0VZ`0```$B)
+MW^@`````QD0D`@"`?0X`#X:`````3(UU8$R)]^@`````28G'28M&"$V)?@A-
+MB3=)B4<(3(DX28-_.`!T&DF+5SA(B[/0"```OP4```#H`````$&`3T0"3(GZ
+MO@8```!(B>_H`````$&`?WL`=!E(B=_H`````+\!````Z`````!!@'][`'7G
+M_D0D`@^V3"0".$T.=X1)@WPD>`!T#4F-="1X2(G?Z`````!,B>9(B=_H````
+M`$'&14D`QD4)`$B)[^@`````Z6H"``!!#[9%4,'@"$B82(N3P!```(N$`DP(
+M``")!0````!$#[;(00^V15#!X`A(F$B+D\`0``"+A`)$"```B04`````P>`(
+M00G!0??!```$`'0'0?9%20%U$$'WP?__^_]T$4'V14D"=`I!QD5"#^G*`0``
+M0<9%20!F9I!FD.GK`0``0;X_0@\`2(M%(/9`,@AU)4B)W^@`````OP$```#H
+M`````$'_SD&#_O]T"DB+12#V0#((=-M!QD5"$.E\`0``00^V15#!X`A(F$B+
+MD\`0``"+A`),"```B04`````#[;`B40D!$$/MD50P>`(2)A(BY/`$```BX0"
+M1`@``(D%``````^VP,'@"`E$)`2+1"0$@^`/@_@##X7`````0?9%20%T#$'&
+M14(2ZPK^30[K9D'&14(220^V14=)@WS%6`!T2<9$)`$`@'T.`'9)3(UU8$B-
+M?6#H`````$F)QTD/MD5'33E\Q5ATPDF+1@A-B7X(38DW28E'"$R)./Y$)`$/
+MMD0D`3A%#G?(ZPM(B=_H`````$F)QTV%_P^$S0```$D/MD5'38E\Q5B+1"0$
+M)?\/```]$P$``'4*0<:'X@````CK>8M$)`0E_P\``#TC`0``=6E!QH?B````
+M">M?0<9%0A/K6$$/MD50P>`(2)A(BY/`$```BX0"3`@``(D%`````$$/MD50
+MP>`(2)A(BY/`$```BX0"1`@``(D%`````$D/MD5)@^`!@_@!&<#WT(/`$T&(
+M14)F9I!F9I!)@WPD>`!T#4F-="1X2(G?Z`````!,B>9(B=_H`````$R)[DB)
+MW^@`````9F:09I!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0X
+MPY"0D)"0D)"0D)"0D)!(BT<(2"T``@$`@^('P>((@,X@2,'F"('F`/\``(F4
+M!AS%```/MX0&',4``&:)!0`````/ML##9F:09F:09F:02(M'"$@M``(!`(/B
+M!\'B"(C*@,X02,'F"('F`/\``(F4!AS%``##9F:09F:09F:0055!5%53NP``
+M``!!NP````!!NO____]!N0````"]`0```$&XP.'D`$$/MLG_P8GNT^:Y````
+M``^VP?_`B<(/K]9$B<!!B=6Z`````$'W]8GZ*<(Y^+C_____#T;"1#G0<PE!
+MB<)$B<M!B<O_P8#Y#W;%0?_!08#Y!W:M00^VP\'@`PG8#[;`6UU!7$%=PV:0
+M2(/L&$B)'"1,B60D"$R);"0028G\3(VOP!$``$`/MMZY`````+H'````B=[H
+M#____T$/MDT!N@,```")WDR)Y^C[_O__2(L<)$R+9"0(3(ML)!!(@\08PV9F
+M9I!F9F:005154TF)_+L`````0`^V[KH"````B>Y,B>?H@?[__Z@(=`VX````
+M`.L?9F:09F:0OP$```#H`````/_#@?L/)P``=LRX_P```%M=05S#9I!3B?,/
+MMO*Z`P```.A`_O__.-@/E,`/ML!;PV9FD&9FD$B#["A(B1PD2(EL)`A,B60D
+M$$R);"083(ET)"!(B?U!B<Y!B?1!B=4/MLI`#[;>N@$```")WN@U_O__N4``
+M``"Z`@```(G>2(GOZ"'^__^)WDB)[^@W____NO\```"%P'5S187V=$E!]L4!
+M="-!#[;4OD````!(B>_H8O___[K_````A<!T3NM'9F9FD&9FD$$/MM2^&```
+M`$B)[^@_____NO\```"%P'0KZR1F9F:000^VU+XH````2(GOZ!____^Z_P``
+M`(7`=`MF9I!F9I"Z`````(G02(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$
+M*,-F9F:09F9FD&9F9I!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!(B?U)B<V)
+M\T&)U$`/MO;H9/[__[K_____A<!U,0^VTT$/MO1(B>_HG/[__[K_____A<!T
+M&0^V\[H!````2(GOZ-/\__]!B$4`N@````")T$B+7"0(2(ML)!!,BV0D&$R+
+M;"0@2(/$*,-F9F:09F9FD&9F9I!F9I!!5T%6055!5%532(/L"$B)_4F)ST6)
+MQD&)]4&)U,=$)`0`````A-(/A/@```!`#[;>N60```"Z`@```(G>Z)[\__^)
+MWDB)[^BT_?__A<!U$+H#````B=Y(B>_H0?S__Y!!#[;400^V];D!````2(GO
+MZ/O]__^Z_____X3`#X6)`0``NP````!$.?,/C7<!``!!C4;_B00D10^VY69F
+MD&:0.1PD=3NY0````+H"````1(GF2(GOZ";\__](8\M,`?FZ6````$2)YDB)
+M[^B@_O__A<`/A2\!``#K.69FD&9FD+E$````N@(```!$B>9(B>_HZ_O__TAC
+MRTP!^;I0````1(GF2(GOZ&7^__^%P`^%]````/]$)`3_PT0Y\WR"9I#IX@``
+M`+^@A@$`Z.'[__\/MLA!#[;=N@,```")WDB)[^B;^___B=Y(B>_HL?S__X7`
+M="`/MHW!$0``N@,```")WDB)[^AW^___NO_____IF````$$/MMV)VKY@````
+M2(GOZ,K\__^%P'4=#[:-P1$``+H#````B=Y(B>_H0/O__[K_____ZV2[````
+M`$0Y\WT^10^VY;E$````N@(```!$B>9(B>_H%OO__TACRTP!^;J`````1(GF
+M2(GOZ)#]__^%P'4+_T0D!/_#1#GS?,8/MHW!$0``00^V];H#````2(GOZ-GZ
+M__^+5"0$B=!(@\0(6UU!7$%=05Y!7\-F9F:02(/L&$B)7"0(3(ED)!!)B?Q(
+MB=!`#[;608G(2(G!O@````#HN/W__XG#N50```"Z`@```+X`````3(GGZ'_Z
+M__^)V$B+7"0(3(MD)!!(@\08PV9F9I!F9F:09F:09F:02(/L&$B)7"0(3(ED
+M)!!)B?Q(B=!`#[;608G(2(G!O@$```#H6/W__XG#N50```"Z`@```+X!````
+M3(GGZ!_Z__^)V$B+7"0(3(MD)!!(@\08PV9F9I!F9F:09F:09F:02(/L.$B)
+M7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)_$F)ST6)Q8GU08G60`^V
+MWKED````N@(```")WNB[^?__B=Y,B>?HT?K__X7`=0^Z`P```(G>3(GGZ%[Y
+M__]!#[;60`^V];D!````3(GGZ!G[__^Z_____X3`=4?K#KK_____ZSYF9F:0
+M9F:0NP````!$.>M]*$`/MNUFD$ACPT(/MA0XN0````")[DR)Y^C9^O__A,!U
+MQ__#1#GK?-ZZ`````(G02(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P
+M2(/$.,-F9F:02(/L&$B)7"0(3(ED)!!)B?Q(B=!`#[;608G(2(G!O@````#H
+MZ/[__XG#N50```"Z`@```+X`````3(GGZ,_X__^)V$B+7"0(3(MD)!!(@\08
+MPV9F9I!F9F:09F:09F:02(/L&$B)7"0(3(ED)!!)B?Q(B=!`#[;608G(2(G!
+MO@$```#HB/[__XG#N50```"Z`@```+X!````3(GGZ&_X__^)V$B+7"0(3(MD
+M)!!(@\08PV9F9I!F9F:09F:09F:005=!5D%505154TB#["A(B70D($R+=BA)
+M_\9%#[96`L9$)!\`2,=$)!``````0;@`````2(NWT`@``+F`____10^VR@^V
+MP68/MI0P0`@``&:!^O\`=$I$B<!!_\!$.<AU/X#Y@7<8#[?"2&G`R`\``$@#
+MAF@)``!(B40D$.LB2(M$)"#'0%#_____2(G'_U!(N`````#INP$``&9FD&9F
+MD/_!@/F%=IQ(B[?0"```2('&`!0``+F`____00^V^F:0#[;!9@^VE#!`"```
+M9H'Z_P!T0T2)P$'_P#GX=3F`^8%W&`^WPDAIP,@/``!(`X9H"0``2(E$)!#K
+M'$B+1"0@QT!0_____TB)Q_]02+@`````Z3\!``#_P8#YA7:C00^V5@1%#[9N
+M!4'!Y1!!#[9&!L'@"$$)Q4$/MD8'00G%10^V9@A!P>0000^V1@G!X`A!"<1!
+M#[9&"D$)Q$B#?"00``^$S````$&_`````$B+1"00@'A8``^&MP```$B)PTB#
+MPT@/MM*)5"0,9F9FD&9FD$B)W^@`````2(UH\$B+4PA(B4,(2(D82(E0"$B)
+M`@^V14$\#0^4PCPB#Y3`"="H`71>00^V1@.#^#MT(X/X/'5/QD0D'P%,BT0D
+M($2)Z42)XHMT)`Q(B>_H`````.LQ2(N](`$``$2)ZDF-=@OH`````$R+1"0@
+M1(GI1(GBBW0D#$B)[^@`````QD0D'P%FD$'_QTB+1"001#AX6`^'7O___[@!
+M````@'PD'P!U%TB+1"0@QT!0_____TB)Q_]02+@`````2(/$*%M=05Q!74%>
+M05_#9F9FD&9F9I!F9F:02(/L2$B)7"082(EL)"!,B60D*$R);"0P3(ET)#A,
+MB7PD0$F)_TF)]$R+;BA)_\6+1AS_R(E$)!3'1"00`````$B+5C!(B50D"$&`
+M?0$!=1#'1E``````Z3L"``!F9F:008!]`0)U64&`?0(!9F9FD'4^2(._V`@`
+M``!T!TR+O]@(``!)BX?0"```00^V50.(D.X3``!!#[95`XB0[B<``$''1"10
+M`````.GI`0``9I#'1E#^____Z=L!``!F9F:008!]`01U&4$/MD4#@^@[/`%W
+M#>BX_/__Z=4!``!F9I!!@'T!`W5N08!]`@%F9F:0=55!#[9-`T$/MD<^C30`
+MB<B9]_Z)T3G6?B]!#[95!`^VV8G>3(G_Z`````!!#[95!(G>3(G_Z`````!!
+MQT0D4`````#I7@$``$''1"10_O___^E0`0``0<=$)%#^____Z4(!``!)@[_8
+M"````'0'38N_V`@``$R)ZT&`?0$`#X2N````#[8K2/_##[8#2/_#B<$/MM#V
+MP@%T.T2+="0000'N13MT)"`/A]D```"+3"002`-,)`A!B>B^`````$R)_^A*
+M]___.>@/A;@```!$B70D$.M32&/%3(TT&$R)\$PIZ$B#P`)(8U0D%$@YT`^/
+MD@````^VT4&)Z$B)V;X`````3(G_Z.;Y__^%P'5X3(GS08`^`'4'08!^`0!T
+M%+\0)P``Z`````"`>P$`#X52____#[8KA>UT5[E4````N@(```"^`````$R)
+M_^B@\___08M$)"`K1"00.<4/1^B+3"002`-,)`A!B>BZ`````+X`````3(G_
+MZ)3V__^%P'@&`40D$.L*0<=$)%#_____D+E4````N@(```"^`````$R)_^A)
+M\___28-\)#@`=`M)BT0D.(M4)!")$$R)YT'_5"1(2(M<)!A(BVPD($R+9"0H
+M3(ML)#!,BW0D.$R+?"1`2(/$2,-F9F:09F9FD&9FD$B#[`A(@[_8"````'0'
+M2(N_V`@``("_[A,```!U(L8%``````&Y(````$C'P@````"^#@```.@`````
+M9F:09I!(@\0(PV9F9I!F9F:09F:02(/L"$B#O]@(````=`=(B[_8"```Q@4`
+M`````+D@````2,?"`````+X.````Z`````!(@\0(PV9FD&9FD&9FD$B#[!A(
+MB1PD3(ED)`A,B6PD$$F)_0^VVD0/MN9(B[_0"```B=I$B>;H`````(G:1(GF
+M3(GOZ`````!(BQPD3(MD)`A,BVPD$$B#Q!C#9F:02(M'"&;'@&S^___LF$B+
+M1PAFB;!H_O__PV9F9I!F9I!(@^P(B?&)UK@`````L`6T#T@E__\`_T@-```"
+M`$BZ____`/____]((=!(#0````-(NO____\`____2"'02+H`````!@```$@)
+MT$BZ______\`__]((=!(N@``````!P``2`G02+K_______\`_T@AT$BZ````
+M````"P!("=!(NO________\`2"'02+H`````````#$@)T$B)!"2`^0=W0$"$
+M]G0:#[;!#[8,!+C^____T\!F(8?L$P``ZQAF9I`/ML$/M@P$N`$```#3X&8)
+MA^P3```/M[?L$P``Z`````!(@\0(PV9F9I!F9I!F9I!!5%532(G]2(._V`@`
+M``!T!TB+K]@(``!!O`````!!#[;<N0````"Z!P```(G>2(GOZ-KP__^Y1```
+M`+H"````B=Y(B>_HQO#__[G0````N@````")WDB)[^BR\/__N0````"Z!```
+M`(G>2(GOZ)[P__]!_\1!@_P!=J._H(8!`.B[\/__B(7!$0``#[;(N@,```"^
+M`````$B)[^AP\/__6UU!7,.0D)"0D)"0D)"0D$B+1PA(+0`"`0")]HL$!HD%
+M`````,-F9F:09F:09F:02(M'"$@M``(!`(GVB10&PU-(B?M(BU<(QX*`_O__
+M`````(N"!/___XD%`````(#,`8F"!/___[H$````O@S"``#H`````+JX"P``
+MO@C"``!(B=_H`````+H!``P`O@#"``!(B=_H`````+H$````O@S#``!(B=_H
+M`````+JX"P``O@C#``!(B=_H`````+H!``P`O@##``!(B=_H`````+H`````
+MOE#"``!(B=_H`````+H`````OE##``!(B=_H`````$B+0PAFQX!,_O__``!(
+MBT,(9L>`;/[__^R82(M#"&;'@&C^___LF&;'@^P3``#__UO#9F9FD&9FD&9F
+MD$@YO]`(``!!#Y7`@^8#C31VN`<```")\=/@]]!!B<%$(T]41(E/5(32=`VX
+M!````-/@1`G(B4=4BU=400^V\,'F"('&4,(``$B+O]`(``#H`````//#9F9F
+MD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)_4B)\TB-CR@2``!(BY=H"0``
+M3(VB.+@/`&:!?B"%`'<92`^W1B!(#[:$.$`(``!(:<#(#P``3(TD`DB+4TB`
+M>@$"=0](BT($2(D!2(M"#$B)00A(@WMX`'022(MS>$B)[^@`````9F:09F:0
+M2(G>2(GOZ`````!!QD0D7`!(BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9F9I!F
+M9F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$B)_4&)]4&)
+MUD&)STB+1PA,BR!,B>?H`````$B)PTB%P'1\3(GGZ`````!(B<)(A<!T;,9%
+M7`%(C7M8QD,XX<9#.0'&0SH0QD,ENV8/MD5;9HE#($R)8RC'0S20````2(U"
+M$$B)0TA(B5-XQD`!`L9"$$!$B&@"1(AP`T2(>`1(QX.@`````````+X`````
+MZ`````!(B=Y,B>?H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD
+M,$B#Q#C#9F9FD&9F9I!F9F:005=!5D%505154TB#[`A(B?U!B?9!B==!B<U(
+MBT<(3(L@3(GGZ`````!(B<-(A<`/A/````!,B>?H`````$B)PDB%P`^$W```
+M`,9%7`%(C4-82(D$),9#..'&0SD!QD,Z$,9#);MF#[9%6V:)0R!,B6,HQT,T
+MD````$B-0A!(B4-(2(E3>$B)QKD`````NI````"("$C_P$C_RG7VQD8!@L8&
+M0$2(=@)$B'X#1(AN!$&`_0)W(4J-%*T`````@>+\`P``2(U^"$F-M"0H$@``
+MZ`````#K*TF+A"0H$@``2(E&"$$/MM6-%)7X____2&/22(U^$$F-M"0P$@``
+MZ`````!(QX.@`````````+X`````2(L\).@`````2(G>3(GGZ`````!(@\0(
+M6UU!7$%=05Y!7\-F9F:09F9FD&9F9I!!5D%505154TB)^T&)UHGPP.@"08G$
+M0;T#````02'U2(M'"$B+*+D"````N@````"^`````.@`````@'M<`'082(GO
+MZ`````"_`0```.@`````@'M<`'7H2(M#"$B+$$B!PB@2```/MD("A,!X0H/(
+M@(A"`KD!````N@````"^`````$B)W^@`````@'M<`'0?2(GOZ`````"_`0``
+M`.@`````@'M<`'7H9F9FD&9FD$$/MM2Y`0```+X#````2(G?Z`````"`>UP`
+M=!QF9F:02(GOZ`````"_`0```.@`````@'M<`'7H2(M#"$B+,$B!QB@2``!!
+M#[;%N0,````IP4ACR46$]@^5P@^VTL'B`XL$#H/@YPG0B00.00^VU+D!````
+MO@,```!(B=_H`````%M=05Q!74%>PY"0D)"0D$R+AQ@)``!F@7X@A0!W(4@/
+MMT8@2`^VA#A`"```2&G`B`$``$F-/`#K#69FD&9FD$F-N'B&`0!,C8(@!```
+MQH(@!```)V:!?CCA`74K#[9&.O_(/`%W"0^V5COK*V9FD&:!?CCA`740#[9&
+M.H/H$;H/````/`%V$+H`````2(-_6`!T!`^V5WF#X@]!#[9``8/@\`G008A`
+M`;H`````9H%^..$!=0H/MD8Z_\@\`78%N@$```#!X@=!#[9``8/@?PG008A`
+M`0^V009!B$`"#[8!08A``P^V005!B$`'#[9!!T&(0`\/MD$"08A`!`^V00-!
+MB$`%#[9!!$&(0`8/MD$!08A`#`^V00I!B$`(#[9!"T&(0`D/MD$,08A`"@^V
+M00A!B$`+#[9!"4&(0`W#9I!32(GS2(M/2$R+`0^V1CB#^"\/A'T```"#^"]_
+M,X/X&P^$3@$``(/X&W\,@_@29I!T8^E9`0``@_@H9F:09F:0=%.#^"IT3NE$
+M`0``9F9FD#V*````=#X]B@```&9F9I!_%8/X-0^$"0$``#V(````="/I&0$`
+M`#V/````9F9FD'03/>$````/A(P```!F9I#I^P```/9'8`%F9F:09F:0=`J!
+MBY0```````0`]D=B$`^$Z@````^V0S@\*`^4PCPJ#Y3`"="H`746@'LXB'00
+M@'LXB@^%Q@```&9FD&9FD/9!#`%U&@^V<0A,B<?H`````(3`#X2F````9F:0
+M9F:0@'LD@0^$E@```(&+E````````0#IAP```+@`````@'XY`0^%?0````^V
+M3CJ#^1QW/+@!````2-/@J?8_P!UU&ZD(0`8`=0NI```@`'469I#K&X..E```
+M``CK18..E`````'K/(..E````"#K,[@`````ZS'V1V`!=`J!BY0```````0`
+M@XN4`````>L39F:0N`````#V@Y8````@=`=FD+@!````6\-F9I!F9I!F9I!`
+M#[;'PV9F9I!F9F:09F:0B?@/ML3#9F9FD&9FD&9FD,9')`)(BT=00(AP`DB+
+M1U#&0`<`2(M'4(A0#,-F9F:0#[9'/8A&`@^V1SR(1@,/MD<[B$8$#[9'.HA&
+M"L-F9I`/MD=!B$8"#[9'0(A&`P^V1S^(1@0/MD<^B$8*#[9'/8A&"P^V1SR(
+M1@S#9F:09I"Y`````#G1?1QF9F:09F:0B=`IR(/X`@^=P`^VP(U,`0$YT7SK
+M\\-F9I!F9I!F9I!(@^PH2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@2(G[2(G5
+M08GV#[9'.(/X*G0I@_@J?PV#^"AT'^GS````9F:0/8@```!T*3V*````9F9F
+MD'0>Z=D```!$#[9C0$0/MFL_2(GN2(G?Z`````#K%V:01`^V8T5$#[9K1$B)
+M[DB)W^@`````QD4%0/:#E@````%T-42(90!$B&T(0HT$]0````"(10$/MD,X
+M/"@/E,(\B`^4P`G0@^`!@_@!&<#WT(/`88A%!NMI]H.6````!'0P1(AE`42(
+M;0D/MD,X/"@/E,(\B`^4P`G0@^`!@_@!&<"#X!"#P"6(10;K-69FD&:01(AE
+M`0^V0SJ#X`\(104/MD,X/"@/E,(\B`^4P`G0@^`!@_@!&<"#X`*#Z#B(10:0
+M2(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$*,-F9I!54TB#["A(B?-(BW9(
+M2(GG_+D$````N`````#S2*OVAJ<````$=`Q(BY;(````2/_*ZP6+5GC_RH![
+M."5U8KT(````2(G02,'H&(@$)$B)T$C!Z!"(1"0!2(G02,'H"(A$)`*(5"0#
+M]H;5````$'4/QD0D!@+&1"0'`.FG````2('&Z@```$B-?"0$N@0```#H````
+M`.F,````9F:09F:0O2````!(B=!(P>@XB`0D2(G02,'H,(A$)`%(B=!(P>@H
+MB$0D`DB)T$C!Z""(1"0#2(G02,'H&(A$)`1(B=!(P>@0B$0D!4B)T$C!Z`B(
+M1"0&B%0D!_:&U0```!!U$L9$)`H"QD0D"P#K'&9FD&9FD$B!QNH```!(C7PD
+M"+H$````Z`````!(BWM(2&/52(GFZ`````!(@\0H6UW#9F9FD`^V1SH*1SL*
+M1SP*1ST/ML`/ME=`@^(!"=!T%;HD````O@4```#H`````//#9F9FD,9&!NQ(
+MQX>@`````````,-(@^P@2(D<)$B);"0(3(ED)!!,B6PD&$B)^TB)]0^V1SB#
+M^"]T"CV/````=!7K4Y!$#[9G0$0/MF\_Z`````"0ZP]$#[9G140/MF]$Z```
+M``#&105`]H.6````!'021(AE`42(;0G&109"ZQ9F9F:01(AE`0^V0SJ#X`\(
+M107&109`2(L<)$B+;"0(3(MD)!!,BVPD&$B#Q"##9F:09F:02(GQQD(%0`^V
+M1CB#^#5T$#V1````="'K)V9F9I!F9I!(#[='8(/@`8/X`1G`@^#]@^@6B$(&
+MZQS&0@;JZQ9FD+HD````O@4```!(B<_H`````//#]D$Y`G0$QD$D`//#]D<\
+M\'0/NB0```"^!0```.@`````\\-F9I!F9I!F9I!)B?)!N0````!!N`T```!(
+MB<A$B`A(_\!)_\AU]4$/MD(X@_@U#X2=````@_@U?RR#^"AT<(/X*'\1@_@;
+M9F:0#X22````Z;4"``"#^"IFD'13@_@O=&'II`(``#V/````=%4]CP```'\;
+M/8@```"0=#,]B@```'0L9F9FD&9FD.E[`@``/9$```!F9I!F9I!T-CWA````
+M=&AF9F:09F:0Z5L"```/MO)(B<I,B=?H`````.E.`@``2(G.3(G7Z`````#I
+M/@(``$B)RDR)UN@`````Z2X"``!!]D(\`709QD$&<,9!!`#&00,`QD$"`,9!
+M!4#I#@(``,9!!N#I!0(``+@`````08!Z.0$/A?H!``!!#[9".H/X'`^'U0$`
+M`(G`_R3%`````,9!!P3IU0$``,9!!P#IS`$``,9!!NQFD.G!`0``QD$&[\8!
+M`T$/MD([@\A`B$$!Z:H!``#&00;OQ@$'Z9X!``#&009`QD$!`<9!!4#IC0$`
+M`,9!!N_&`0-!#[9".X/("(A!`>EV`0``QD$&[\8!`NEJ`0``QD$&[\8!@NE>
+M`0``QD$&[\8!!NE2`0``QD$&[\8!ANE&`0``QD$&XT$/MD([B$$!Z34!``#&
+M00:PQ@'8QD$#3\9!!,+I(0$``,9!!K#&`=G&00-/QD$$PND-`0``QD$&L,8!
+MVL9!`T_&003"Z?D```!(#[='8(/@`8/X`1G`@^#]@^@6B$$&Z=X```#&00;O
+MQ@&JZ=(```#&00;OQ@%5Z<8```#&008OQD$!`<9!`A#IM0```,9!!N1!#[9"
+M/(@!00^V0CN(007IG0```$$/MD([B$$&00^V0CR(`4$/MD(]B$$"00^V0CZ(
+M00-!#[9"/XA!!$$/MD)!B$$*00^V0D"(00'K9,9!!NA!#[9"/(@!00^V0CN(
+M005!#[9"/8A!`D$/MD(^B$$#00^V0C^(001!#[9"0(A!`>LO0?9"/`%T*,9!
+M!G#&000`QD$#`,9!`@#&005`ZQ*X`````,-F9I!F9I"X`````,.X`0```//#
+MD)"005154XGU3(MG"$F![``"`0"[`````#GS<S9F9I!F9I!!BX0D`,@``(D%
+M`````*@!=0ZX`````.L<9F9FD&9FD+\*````Z`````#_PSGK<M"X_____UM=
+M05S#9F:09F:02(M_"$B![P`"`0`/MM+!X@A%#[;`0<'@!$0)PHG0@\@$A,D/
+M1=!!@_G_=!%$B<@E__\#`(F'!,@``(/*`HD6PTB+1PB#S@&)L`#&___#9I!(
+M@^PH2(E<)!!(B6PD&$R)9"0@2(G[28GT2(MO"$B+A_@3```/ME`"0;G_____
+M0;@!````N0$```!(C70D#.AM____BW0D#$B)W^BA____OA`G``!(B=_H]/[_
+M_[K_____A<!U&8N%#,;__XD%`````(E$)`Q!B`0DN@````")T$B+7"002(ML
+M)!A,BV0D($B#Q"C#9F9FD&9F9I!F9F:0059!54%455-(@^P028G\B<U!B?9!
+MB=6[`````#G+<S1(C70D#TR)Y^@S____A<!U$T2)\")$)`]$..AU![@`````
+MZQ6_"@```.@`````_\,YZW+,N/____](@\006UU!7$%=05[#9F9FD&9FD&9F
+MD%-(@^P02(G[2(N'^!,```^V$$&Y_____T&X`````+D`````2(UT)`SH<_[_
+M_XMT)`Q(B=_HI_[__[X0)P``2(G?Z/K]__^Z_____X7`=1ZYX),$`+H"````
+MO@,```!(B=_H*O___X/X`1G2]]*)T$B#Q!!;PV9F9I!F9F:09F:055-(@^P(
+M2(G[2(G52(N'^!,```^V4`M!B?%!N`$```"Y`0```$B-="0$Z/']__^+="0$
+M2(G?Z"7^__^^$"<``$B)W^AX_?__NO____^%P'482(M#"(N`#,;__XD%````
+M`(A%`+H`````B=!(@\0(6UW#9F9FD&9F9I!F9I!F9I!54TB#[`A(B?N)]<9$
+M)`?_2(U4)`?H`````+K_____A<!U?KH`````@'PD!P!T<DB)W^C)_O__B<*#
+M^/]T8TB+@_@3```/ME`*08GI0;@`````N0````!(B>9(B=_H/OW__XLT)$B)
+MW^AS_?__OA`G``!(B=_HQOS__[K_____A<!U'KG@DP0`N@````"^`P```$B)
+MW^CV_?__@_@!&=+WTHG02(/$"%M=PV9FD&9FD%532(/L"$B)^XGUZ$#^__^)
+MPH/X_W1F2(N#^!,```^V4`9!B>E!N`````"Y`````$B-="0$2(G?Z+/\__^+
+M="0$2(G?Z.?\__^^$"<``$B)W^@Z_/__NO____^%P'4>N>"3!`"Z`````+X#
+M````2(G?Z&K]__^#^`$9TO?2B=!(@\0(6UW#9F9FD&9FD&9FD$B#["A(B5PD
+M"$B);"003(ED)!A,B6PD($B)_4&)]4&)U$B+7PCHEOW__T2)HPC&__](BX7X
+M$P``#[90!46)Z4&X!````+D`````2(UT)`1(B>_H"?S__XMT)`1(B>_H/?S_
+M_[X0)P``2(GOZ)#[__^Z_____X7`=1ZYB!,``+H`````O@$```!(B>_HP/S_
+M_X/X`1G2]]*)T$B+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-F9F:09F9FD&9F
+MD&9FD$B#["A(B1PD2(EL)`A,B60D$$R);"083(ET)"!)B?Y!B?5)B=2)S;L`
+M````.<MS'XG80HL4($&-=!T`3(GWZ/W^__^#^/]T#(/#!#GK<N&X`````$B+
+M'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F9FD&9F9I!F9F:09F:02(/L
+M*$B)7"002(EL)!A,B60D($B)^TF)U$B+;PA(@>T``@$`@/D%N`0````/0\A(
+MBX?X$P``#[90!$&)\40/ML&Y`0```$B-="0,Z-#Z__^+="0,2(G?Z`3[__^^
+M$"<``$B)W^A7^O__NO____^%P'49BX4,R```B04`````B40D#$&)!"2Z````
+M`(G02(M<)!!(BVPD&$R+9"0@2(/$*,-F9F:09F9FD&9F9I!F9I!(@^PX2(E<
+M)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G^08GT2(G518T\#(GS@^/\
+M08GU08/E`W1)N00```!(C50D!(G>Z`+___^-0P2Y!````$0Y^'8)1(GY1"GA
+M1`'I1(GJ03G-<Q=(C70D!(G0#[8$!HA%`$C_Q?_".<IR[H/#!$6)_4&#Y?Q$
+M.>MS)[D$````2(U4)`2)WDR)]^BJ_O__BT0D!(E%`$B#Q02#PP1$.>MRV40Y
+M^W,YN00```!(C50D!(G>3(GWZ'[^__]$B?DIV;H`````.<IS%TB-="0$B=`/
+MM@0&B$4`2/_%_\(YRG+NN`````!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H
+M3(M\)#!(@\0XPY!54TB#[`A(B?O'1"0$`````$B+;PC&A_`3````#[85````
+M`$&Y`````$&X`@```+D!````2(UT)`3H$OG__XMT)`1(B=_H1OG__[X0)P``
+M2(G?Z)GX__^%P'4[BX4,QO__B04`````B40D!#V_0P``=23'@^`3``"_0P``
+MQX/D$P`````@`,>#Z!,````0``!FN```ZP6X_____TB#Q`A;7<-F9F:09F9F
+MD&9FD&9FD%532(/L"$B)^\=$)`0`````2(MO",:'\!,````/MA4`````0;D`
+M````0;@"````N0$```!(C70D!.AB^/__BW0D!$B)W^B6^/__OA`G``!(B=_H
+MZ??__X7`=3N+A0S&__^)!0````")1"0$/1]C``!U),>#X!,``!]C``#'@^03
+M``````0`QX/H$P`````!`&:X``#K!;C_____2(/$"%M=PV9F9I!F9F:09F:0
+M9F:055-(@^P(2(G[QT0D!`````!(BV\(QH?P$P```0^V%0````!!N?____]!
+MN`(```"Y`0```$B-="0$Z++W__^+="0$2(G?Z.;W__^^$"<``$B)W^@Y]___
+MA<!U:HN%#,;__XD%`````(E$)`0]'T,``'0N/1]$``!U3,>#X!,``!]$``#'
+M@^03``````0`QX/H$P`````!`&:X``#K+69FD,>#X!,``!]#``#'@^03````
+M``0`QX/H$P`````!`+@`````ZP6X_____TB#Q`A;7<-F9F:09F9FD&9F9I!F
+M9I!54TB#[`A(B?O'1"0$`````$B+;PC&A_`3````#[85`````$&Y`````$&X
+M`@```+D!````2(UT)`3HTO;__XMT)`1(B=_H!O?__[X0)P``2(G?Z%GV__^%
+MP'5UBX4,QO__B04`````B40D!#WO$0``=`X][Q(``'0LZU5F9I!FD,>#X!,`
+M`.\1``#'@^03``````0`QX/H$P`````!`+@`````ZS#'@^`3``#O$@``QX/D
+M$P`````$`,>#Z!,``````0"X`````.L+9F:09F:0N/____](@\0(6UW#9F9F
+MD%-(B?OHA_W__X7`=1-(QX/X$P```````+H`````ZV&02(G?Z!C^__^%P'42
+M2,>#^!,```````"Z`````.M"2(G?Z)K\__^%P'422,>#^!,```````"Z````
+M`.LD2(G?Z+S^__^Z_____X7`=1-(QX/X$P```````+H`````9F:0B=!;PV9F
+M9I!F9F:09F9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD($B)^XGU08G-28G4
+MN@````!(@[_X$P````^$N@```$6$P'0M@_[_=1$/MX?@$P``9D&)!"3IE@``
+M`$R)XNC7^O__N@````"%P`^%B@```.M_@_[_9F:09I!U$T&`/"0/#Y2'\1,`
+M`+H!````ZVNZ`````("_\1,```!T78GPN@````#WM^@3``"%TG4J@+_P$P``
+M`'0.Z`````"Z`````(7`=36)[DB)W^CK]___N@````"%P'4B1(GI3(GBB>Y(
+MB=_H(OG__[H`````A<!U";H!````9F9FD(G02(M<)`A(BVPD$$R+9"083(ML
+M)"!(@\0HPY"0D)"005154TB#[#!(B?VX`````+!MM/]()?__`/](#0``(P!(
+MNO___P#_____2"'02`T````42+K_____`/___T@AT$BZ`````#H```!("=!(
+MNO______`/__2"'02+H``````.\``$@)T$BZ________`/]((=!(N@``````
+M`!8`2`G02+K_________`$@AT$BZ`````````))("=!(B40D"+D`````NB``
+M``!(C40D$)"("$C_P$C_RG7VQD0D%`%!O`````!(C5PD$+D@````2(G:O@X`
+M``!(B>_H`````(7`=5N_@!H&`.@`````N2````!(B=J^#P```$B)[^@`````
+M@_@@=3=(C70D($B-?"0(N0@```#\\Z8/E\(/DL`XPG4;0;P!````#[9$)![!
+MX`@/ME0D'PG0B87L"```00^VQ$B#Q#!;74%<PV9FD&:0N0,1`">Z`````$B#
+M?Q``=#1(BT<0BP")!0````")QDB+1Q")"$B+1Q"+`(D%`````+H`````.<AU
+M"TB+1Q"),+H!````B=##9F9FD&9F9I!!5T%6055!5%532(/L"$B)^TB+!XN`
+M8`#__XD%`````(/@`X/X`70:@_@!<@>#^`)T;^MWQX?H"````0```&:0ZVGH
+M`````(3`="6+!0````!(8]!(B1S5`````/_`B04`````QX/H"````@```.L[
+M2(G?Z`````"$P'0OBP4`````2&/02(D<U0````#_P(D%`````,>#Z`@```0`
+M``#K"L>'Z`@```,```"+!0````!(8]!(B1S5`````/_`B04`````@#T`````
+M``^%J````$&]`````(7`#XZ@`@``2(,]``````!T-T2)Z`^VT$C'Q@````!(
+MBPT`````2#L,UG0=2(L$UDB)B-@(``!(BQ362(L%`````$B)@M@<``!(@ST`
+M`````'0W1(GH#[;02,?&`````$B+#0````!(.PS6=!U(BP362(F(X`@``$B+
+M%-9(BP4`````2(F"X!P``$'_Q4$/ML4[!0`````/C&O____I!@(``$&]````
+M`$R+%0````!-A=(/A.X```!!OP````!)Q\8`````0;@`````1#L]``````^-
+MN````$G'Q`````!$B<`/MM!)BP342(.XV`@````/A88```!,.=`/A'T```"[
+M``````^V#0````"$R71M1(G"1`^VRDC'Q0````!)Q\,`````9F9FD$J+=,T`
+M.$XY<C</ME8Y#[;!B<<#/0`````Y^G,D03A*.7(>00^V0CDY^',53(F6V`@`
+M`$J+1,T`3(F0V!P``.L3_\,/ML-(P>`%0@^V3!@-A,EUK$'_P$$/ML`[!0``
+M```/C$____]!_\5$B>H/ML)-BQ3&3872#X4?____0;T`````3(L5`````$V%
+MT@^$[````$&_`````$G'Q@````!!N`````!$.ST`````#XVV````2<?$````
+M`&9FD&9FD$2)P`^VT$F+!-1(@[C@"`````^%?@```$PYT'1YNP`````/M@T`
+M````A,ET:42)PD0/MLI(Q\4`````2<?#`````$J+=,T`.$XY<C</ME8Y#[;!
+MB<<#/0`````Y^G,D03A*.7(>00^V0CDY^',53(F6X`@``$J+1,T`3(F0X!P`
+M`.L3_\,/ML-(P>`%0@^V3!@-A,EUK$'_P$$/ML`[!0`````/C%?___]!_\5$
+MB>H/ML)-BQ3&3872#X4A____2(/$"%M=05Q!74%>05_#9I!3NP````"X`0``
+M`(`]``````!T:>L*N`$```#K8&9FD`^VPTC!X`7_PP^VB`````"$R71$1(L-
+M`````$G'P@`````X3SER'@^V5SD/ML%&C00(1#G"<PXX3CER"0^V1CE$.<!R
+ML0^VPTC!X`7_PT(/MDP0#83)=<JX`````%O#D(N'Z`@``+H!````.X;H"```
+M=PZ+A^@(```[AN@(```9THG0PV9F9I!F9F:09F9FD+@`````.ST`````?3=(
+M8\=(Q\$`````2(T$0$C!X`,/MQ0(9HD6#[=4"`)FB58"#[94"`B(5@@/MD0(
+M"8A&";@!````\\-F9F:09F:09F:0059!54%455-(@^P(B7PD!+T`````2<?&
+M`````$G'Q0````!(8\5(B<)(P>`%9D*#/#``#X2Q````0;H`````38GH0H!\
+M*`P`#X21````2,?#`````/Q!O`````!)B=.028G126/"2(T$T$B--(-(C7PD
+M!+D$````\Z8/E\(/DL`XPG4\3(G&3(G)2,'A!4(/MD0!#?_`0HA$`0U"@'P!
+M#`!T'4(Z1`$,=A9F#[;`9D(/MGP!#$2)XF;W]XA4,0V00?_"3(G:2<?`````
+M`$R)V$C!X`5"#[9$``Q$.=!_@?_%@_T##XXY____2(/$"%M=05Q!74%>PV9F
+MD&9FD&9FD$%7059!54%455-(@^P8QD0D%P#&1"06``^V1"07B40D#$&_````
+M``^V7"06B5PD$$$/MM>Y`````(MT)!"+?"0,Z`````!!B<9!N0````!$.PT`
+M````#XV*`0``2,?%`````$0/MF0D%T2)9"0(9I!)8\%(C01`2,'@`P^W5"@"
+MP>(0#[<$*`G"1#GR#X5$`0``NP````!)Q\(`````26/!2(T$0$B-/,4`````
+M2<?#`````(M$)`B)1"0$2;T```````````^VTTB)T4C!X05F0H,\$0!U:$B+
+MAP````!*B001BX<`````0HE$$0A(#[:!`````$C!X@-(C00"#[9<)!=!B%R"
+M#4@/MH$`````2(T$`@^V7"0608A<@@Y(#[:!`````$@!PD6(?)(/_H$`````
+MZ9(```!F9F:09F:0#[;S2<?``````$B)\4C!X05"#[9$`0RZ`````$+W=!\$
+MA=)T6TH/MD0!#$B-%/4`````2(TT`D$/MD2U#42+9"0$02G$08/\`7\U#[9$
+M)!=!B$2R#4H/MD0!#$B-!`(/MEPD%D&(7((.2@^V1`$,2(T$`D6(?((/0OY$
+M`0SK#)#_PX#[`P^&^_[__TECP4B-!$#_1,4,0?_!1#L-``````^,BO[__T'^
+MQP^$0?[___Y$)!:`?"06'P^&(_[___Y$)!>`?"07_P^%!O[__TB#Q!A;74%<
+M05U!7D%?PV9F9I!!5T%6055!5%532(/L"$B)\TF)U$&]`````(,]``````!U
+M#\<%``````$```#HKOW__TB%VW0#Q@,`0;H`````1#L5`````'T[2,?!````
+M`$C'Q@````!)8\)(C01`2(T4Q0````!$`VP*#$B%VW0(#[8#`@0RB`-!_\)$
+M.Q4`````?---A>0/A*L```!!N@````!)8\)(B<)(P>`%9H.X```````/A(T`
+M``!!N`````"`N```````='%(Q\4`````_$G'QP````!)B=9)P>8%28G328G1
+M26/`2(T$T$B-=(4`3(GGN00```#SI@^7P@^2P#C"=1Q(A=MT#TR)R$C!X`5"
+M#[9$.`V(`T</MFP^#.L90?_`3(G:3(G82,'@!0^V@`````!$.<!_J$'_PD&#
+M^@,/CEO___]!#[;%2(/$"%M=05Q!74%>05_#9F:09I"X`"@``,-F9F:09F:0
+M9F:0N-````##9F9FD&9FD&9FD+@(````PV9F9I!F9I!F9I!!5D%505154TF)
+M_$&)]4B)TTF)SDB-J@`4``"Y`````+H`*```2(G8B`A(_\!(_\IU]DR)<R"+
+M%0````"-0@&)!0````"(4T!$B6LXQD-!`$$/MP0D9HE#,$$/MT0D`F:)0S)!
+MBT0D!(E#-$R)=2"(54!$B6TXQD5!`4$/MP0D9HE%,$$/MT0D`F:)13)!BT0D
+M!(E%-`^W0S(](B<``']K/2`G```/C?4````]0"$```^$Z@```#U`(0``9F:0
+M9I!_&ST@(0``#X33````/2(A```/A,@```#IUP```#U$(0``#X2X````/40A
+M``!F9I`/C+X````M$"<``(/X`6:0#X>N````Z94````]8"<```^$B@```#U@
+M)P``9F:09I!_,#U`)P``='<]0"<``&:0?Q`],"<``'1G9F9FD&9FD.MR/40G
+M``!T5V9F9I!F9I#K8CV")P``=$<]@B<``&:0?Q`]@"<``'0W9F9FD&9FD.M"
+M/8"1``!T"SV`E```9I!T'NLP9L=#/("1QD,^!&;'13R`D<9%/@3K&F9FD&9F
+MD&;'0SR`E,9#/@1FQT4\@)3&13X$00^V1"0(B$-"00^V1"0(B$5"N0``!`"Z
+M`````+X"````3(GWZ`````!(B0.Y`"```+H`````O@````!,B??H`````$B)
+M0Q!(@SL`=`5(A<!U"K@`````Z?$```!(BP-(C8@``@$`2(E+"$B-D````@!(
+MB1-(!0!``@!(B44`2(E-"$B+0Q!(B4400;@`````1#L%`````'U62,?'````
+M`$2+#0````!)8\!(C01`2(T,Q0````!!BP0D.00Y=2A(Q\8`````BP0Q_\")
+M!#&#?#D,`'02.T0Y#'8,N@````#W=#D,B10Q0?_`13G(?+A(BT,(QX`@@O__
+M`?`#`$B+0PC'@"B"__\!``#H2(M[(+YX````Z`````")PB4`<```/0`@``!V
+M$0^V\DB+>R"Z>````.@`````1(GOZ&SX__](B=_HU//__[@!````6UU!7$%=
+M05[#9F:09F:04TB)^^@`````2('#`!0``$B)W^@`````N`$```!;PY!(@^P8
+M2(E<)`A(B6PD$$B)_4B+G]`(``!(@<,`%```Z`````"`?5$!=0:`>U$!=#M(
+MC9UP`0``2(M]*$B)WN@`````QX5P`0``Z`,``$C'A8`!````````2(FMB`$`
+M`$B+?2A(B=[H`````$B+7"0(2(ML)!!(@\08PV9FD&9FD%532(/L"$B)^TB-
+MKP`4``#H`````$B)0RA(B44H2(F;T`@``$B)G=`(``"+@^@(``")A>@(``!(
+MB=_H`````$B)[^@`````2(G?Z`````"Z`````(3`='Y(B>_H`````+H`````
+MA,!T;4B)W^@`````O]`'``#H`````$B)W^@`````2(G?Z`````#'@W`!``#H
+M`P``2,>#@`$```````!(B9N(`0``2(VS<`$``$B+>RCH`````+X`````2(G?
+MZ`````"^`````$B)[^@`````N@$```")T$B#Q`A;7<.005154TB#[#!(B?NX
+M`````+!MM/]()?__`/](#0``(P!(NO___P#_____2"'02`T````42+K_____
+M`/___T@AT$BZ`````#H```!("=!(NO______`/__2"'02+H``````.\``$@)
+MT$BZ________`/]((=!(N@```````!8`2`G02+K_________`$@AT$BZ````
+M`````))("=!(B40D"$B#O]@(````=`=(BY_8"```N0````"Z(````$B-1"00
+MB`A(_\!(_\IU]L9$)!0!0;P`````2(UL)!"Y(````$B)ZKX.````2(G?Z```
+M``"%P'5'OX`:!@#H`````+D@````2(GJO@\```!(B=_H`````(/X('4C2(UT
+M)"!(C7PD"+D(````_/.F#Y?`#Y+".-"X`0```$0/1.!%A.1U$4C'QP````"X
+M`````.@`````00^VQ$B#Q#!;74%<PV9FD//#9F9FD&9F9I!F9I!F9I!54TB#
+M[`A(B?U(B?.Y`````+J`````2(GP9F9FD&9FD(@(2/_`2/_*=?:#O>@(```!
+M#Y1#$XM%.(D#@$L1$`^W13!FB4,$#[=%,F:)0P:+A>@(``"(0W#&0Q(@#[=%
+M,F8]("$/E,)F/2(A#Y3`"="H`71$QD,7`L=#/%)O8VO'0T!E=%)!QT-$240@
+M4\=#2%-$(#+'0TPQ,G@@QT-00V]N=,=#5')O;&QFQT-897+&0UH`Z>(````/
+MMU4RC8+PV/__9H/X`0^6P6:!^D`A#Y3`"<BH`74+9H'Z1"$/A:0```#&0Q<$
+M#[=%,F8M$"=F@_@!=SW'0SQ2;V-KQT-`97120<=#1$E$(#+'0T@W,7@@QT-,
+M4T%3(,=#4$-O;G3'0U1R;VQL9L=#6&5RQD-:`.MI#[=%,F8]0"$/E,)F/40A
+M#Y3`"="H`711QT,\4F]C:\=#0&5T4D''0T1)1"!3QT-(4T0@,L=#3#$T>"#'
+M0U!#;VYTQT-4<F]L;&;'0UAE<L9#6@#K%,9#%PA(C7L\2,?&`````.@`````
+M#[9#%_9C$HA#$(3`=03&0Q"`QT,82&EG:,=#'%!O:6['0R!T(%1EQT,D8VAN
+M;\=#*&QO9VG'0RQE<RP@QT,P26YC+L9#-`!(@[W@"````'012(N%X`@``$B+
+M0!!(B4-HZPA(BT402(E#:,=#8``@``!(@\0(6UW#9F9FD&9F9I!F9F:09F:0
+MQH?+`````,-F9F:09F9FD$B#[%A(B5PD0$B);"1(3(ED)%!(B?U,BV=X28N$
+M)-`(``"`>#\`#X6K````2(N?@````$B+?V!$#[:/!P$``$0/MD4`#[9-`@^V
+M50&+=0@/MH?3````B40D.`^VA](```")1"0P#[:'T0```(E$)"@/MH?0````
+MB40D(`^VA\\```")1"08#[:'S@```(E$)!`/MH?-````B40D"`^VA\P```")
+M!"1!@^`!2,?'`````+@`````Z`````!(QX6``````````(M5"$B+O9````!(
+MB>[_T^L]2(V?F````$F+?"0H2(G>Z`````#'A9@```#T`0``2,>%J```````
+M``!(B:VP````28M\)"A(B=[H`````$B+7"1`2(ML)$A,BV0D4$B#Q%C#9F9F
+MD&9F9I!!5T%6055!5%532(/L"$F)_4F)]`^WTDAITH@!``!(B=5(`Z\8"0``
+M2(N_T`@``$B!QP`4``!(B6Y@2(EU.$B#?5``=0M(@WU8``^$HP,``+X`````
+M08`,)`%(BT5828E$)'!(BT5028E$)&BZ`````$&`?4,`=B5(BTU(9F9FD`^V
+MPDAKP&A*.XPH2!(```^$A`(``/_"03A50W?CNH#___])BXW0"```#[;"#[:$
+M"$`(```\_W0D2(-]4`!T&P^VP$AIP,@/``!(`X%H"0``2#M%4`^$-0(``/_&
+M_\*`^H%VQKJ"____28N-T`@``)`/ML(/MH0(0`@``#S_=!T/ML!(:<#0````
+M2`.!0`D``$@[15@/A.L!``#_QO_"@/J%=LVZ@/___P^VP@^VA#A`"```//]T
+M)$B#?5``=!L/ML!(:<#(#P``2`.':`D``$@[15`/A)\!``#_QO_"@/J!=L:Z
+M@O___P^VP@^VA#A`"```//]T'0^VP$AIP-````!(`X=`"0``2#M%6`^$70$`
+M`/_&_\*`^H5VS4&`?5$!=3](@WU0`'02#[9U>4B+?5"Z`````.@`````2(.]
+M&`$````/A`D"```/MK4%`0``2(N]&`$``+H`````Z`````!(@[T8`0````^$
+MXP$``$R+?5!!O@````!!@']8`'9*28U?2$B)W^@`````2(U(\$B+4PA(B4,(
+M2(D82(E0"$B)`H"Y!P$``/]U%H!Y00!U$$B#N1@!````=0]F9I!F9I!!_\9%
+M.'=8=[I%.'=8#X7;````#[:%!P$``$&(1"0"0;X`````08!_6``/AL`!``!)
+MC5](2(G?Z`````!(C4CP2(M3"$B)0PA(B1A(B5`(2(D"2(-Y.`!T1TB+43@/
+MMD(".H$'`0``=#=(@[J``````'4M2(.ZB`````!U(P^V@0<!``"(0@)(#[=1
+M,$F+M=`(``"_!P```.@`````9F:00?_&13AW6'>+Z4(!``!!B'0D`>FB_O__
+M08AT)`%F9I#IE?[__T&(="0!Z8O^__]!B'0D`>F!_O__00^V14&-!()!B(0D
+MS````.EO_?__#[9%>4&(1"0"QH4'`0``_T&^`````$&`?U@`#X;A````28U?
+M2$B)W^@`````2(U(\$B+4PA(B4,(2(D82(E0"$B)`H"Y!P$``/]T3,:!!P$`
+M`/](@WDX`'0^2(M1.`^V0@(Z07ET,4B#NH``````=2=(@[J(`````'4=#[9!
+M>8A"`D@/MU$P28NUT`@``+\'````Z`````!!_\9%.'=8=X3K7P^V17E!B$0D
+M`NM400^V14&-!()!B$0D`4&(A"3,````ZRFZ`````$&`?4,`=AU(BTU(#[;"
+M2&O`:$H[C"A($@``=,C_PD$X54-WYT$X54-U!D'&1"0!_T'&1"0"`&:02(N%
+MD````$F)1"0@2(N%F````$F)1"0H2(N%H````$F)1"0P2(N%J````$F)1"0X
+M2(N%L````$F)1"1`2(M%?$F)1"0,2(N%A````$F)1"04BX6,````08E$)!Q(
+MBX6X````28E$)$@/MT5@9D&)1"18#[=%8F9!B40D6DB+17!)B40D4`^V17I!
+MB$0D7/9%1`1U(T&`O>\3````=!%!_HWO$P``08"][Q,```!U"$R)[^@`````
+M2(M%.`^V<`&Z`````$R)[^@`````2`^V14"H`G0/J`1T"Z@!=0=!@`PD`NL%
+M08`D)/T/ME5$T.J#X@1!#[8$)(/@^PG008@$)$R)Y^B8^?__2(/$"%M=05Q!
+M74%>05_#9F:09F:09F:005=!5D%505154TB#[`A)B?V)]4F)U+X`````NM``
+M``!,B>!`B#!(_\!(_\IU]4&);"0(@_T_?@I)@<4`%```@^U`2&/%N@````!)
+M@[S%0`0````/A8,"``!(8\5-B:3%0`0``$V);"1X28F,)(````!-B80DD```
+M`+H!````08!]40$/A5,"``!FQT0D!O\`@?V%````?P]F0@^VA"A`"```9HE$
+M)`9F@7PD!O\`#X3^`0``2`^W1"0&28N-&`D``$AIT(@!``#V1`I#!`^$WP$`
+M`(M$"D`E`/__`#T``/\`#X7+`0``2(T<"O9#1`0/A$P!``#&@^``````2`^V
+M0T"H`G0RJ`1T+J@!="K&0T(%QD-#!`^V4WE(BW-02(M[2$B)V>@`````Z7T!
+M``#&@^$````!ZW)(#[9#0*@"9I`/A8````"H!'1\J`%T>$R+8TC&0T(#QD-#
+M!$&^`````$&`?"0.`'1!28UL)&!(B>_H`````$B+50A(B44(2(DH2(E0"$B)
+M`H!X0O\/E<)(.=@/E<`/MM*%T'630?_&00^V1"0.1#GP?\2`N^$````!#X3U
+M````2(G>3(GOZ`````#IY0```$@/MD-`J`(/A-@```"H!`^$T````*@!9F:0
+M#X7%````2(M#2`^V0`V]`````$&`?3X`=BE$#[;@0`^VS4R)X$C3^*@!=`^Z
+M`````(G.3(GOZ`````#_Q4$X;3YWV\9#0P;&0T(%9L>#P```````2(G>3(GO
+MZ`````#K:DR+>TC&1"0%`$&`?PX`=DI-C7=@3(GWZ`````!(B<-)BT8(28E>
+M"$R),TB)0PA(B1B`>T+_=!0/MD-!/"(/E,(\#0^4P`G0J`%U//Y$)`4/MD0D
+M!4$X1PYWN@^W5"0&3(GF3(GOZ`````"Z`0```.LJ2&/%2<>$Q4`$````````
+MN@````#K%$ACQ4G'A,5`!````````+H`````B=!(@\0(6UU!7$%=05Y!7\-F
+M9I!(@^PH2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@2(G[28GU28G42(MO8$B%
+M[74*2(G7_];I"`$``$B#OX@`````=0I(@[^``````'0+3(GG0?_5Z>D```"`
+MO>``````9I`/A<X```!(BWU(2`^V1PRH$`^%O0```*@(#X6U````3(LW@'U[
+M`'0-2(GJO@8```#H`````$R)JX@```!,B:.0````2`^V14"H`G0FJ`1T(J@!
+M=![&14(%QD5#!`^V57E(BW502(M]2$B)Z>@`````ZVY(#[9%0*@"=26H!&9F
+MD'0>J`%T&L9%0@/&14,$2(GN3(GWZ`````#K169FD&:02`^V14"H`G0WJ`1F
+M9I!FD'0NJ`%U*L9%0@7&14,&9L>%P```````2(GN3(GWZ`````#K#$R)YT'_
+MU69FD&9FD$B+'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F:02(/L&$B)
+M'"1(B6PD"$R)9"002(GS2(M'2$R+($B+;F@/MD8D@_@@=$^#^"!_$H7`="*#
+M^`9_.NLO9F9FD&9FD(/X(G0S@_@B?!Z#P("#^`%W'^L42(M'.,=`!`````#&
+MA:H````!ZQ#&A:H````-ZP>X`````.LQ2(-[>`!T$4B-<WA,B>?H`````&9F
+MD&:02(G>3(GGZ`````!(B>__E<````"X`0```$B+'"1(BVPD"$R+9"002(/$
+M&,-F9F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$B)^TB)
+M]4R+;WA(BT9(2(DX2(-_8`!U%L:&J@````)(B??_EL````#I!P8``)!(BT=@
+M]D!$`G05QH:J`````DB)]_^6P````.GG!0``3(GOZ`````!)B<1(A<!U%<:%
+MJ@````)(B>__E<````#IP@4``,>`E`````````!(B6AH2(M#8$F)1"0H2(M#
+M8`^W0#!F08E$)"!!QD0D)(`/MH6H````@_@"#X2D`0``@_@"?PF%P'0CZ8,#
+M``"#^`,/A#0"``"#^`1F9F:09F:0#X3T`0``Z64#``!(BT-@]D!@`0^$Q```
+M`/:%J0````)T"$'&1"0XB.L9#[:%J0```(/@!#P!&<"#X`6#Z'9!B$0D.$B+
+ME9`````/MXV8````0<9$)#D`2(G02,'H.$&(1"0Z2(G02,'H,$&(1"0[2(G0
+M2,'H*$&(1"0\2(G02,'H($&(1"0]2(G02,'H&$&(1"0^2(G02,'H$$&(1"0_
+M2(G02,'H"$&(1"1`08A4)$%!QD0D0@!!QD0D0P")R&;!Z`A!B$0D1$&(3"1%
+M0<9$)$8`0<9$)$<`Z8,```#VA:D````"=`A!QD0D."CK&0^VA:D```"#X`0\
+M`1G`@^`%@\`J08A$)#A(BY60````#[>-F````$'&1"0Y`$B)T$C!Z!A!B$0D
+M.DB)T$C!Z!!!B$0D.TB)T$C!Z`A!B$0D/$&(5"0]0<9$)#X`B<AFP>@(08A$
+M)#]!B$PD0$'&1"1!`$B+0V!(!>0```!)B40D4$'&1"0P($&#C"24`````NGY
+M`0``@+V0````$'<%]@,"=0S&A:H````&Z;4#``!(#[:5D````$B+M9@```!)
+MC7PD..@`````2(M#8$@%Y````$F)1"100<9$)#`@08&,))0``````!``0<9$
+M)"6K]H6I````!@^$D@$``(N%E````$&)1"0TZ8(!```/MH6I````@^`P/"!U
+M%T'&1"0X&T'&1"0Y`4'&1"0\`.E=`0``0<9$)#@UZ5(!``!(BT-@2`^V0$"H
+M`70$J`1U#,:%J@````;I"P,``$&!C"24```````@``^WA9P```!F.X62````
+M=$L/MH6;````@_A"=#^#^$)_#H/X0'0U9F9FD&9FD.L@/;````!T"3WL````
+M9I!U$`^WA9P```!FB862````ZPS&A:H````&Z:0"``!!QD0D.+`/MX60````
+M08A$)#D/MX62````08A$)#H/MX64````08A$)#L/MX66````08A$)#P/MX68
+M````08A$)#T/MH6:````08A$)#X/MH6;````08A$)#]F#[:%D0```$&(1"1`
+M9@^VA9,```!!B$0D068/MH65````08A$)$)F#[:%EP```$&(1"1#9@^VA9D`
+M``!!B$0D1/:%J0````9T*@^WA9P```#!X`E!B40D-$&#C"24````!.L09F9F
+MD,:%J@````;IU@$``$V-="182<>$)*``````````#[:%J0```*@&#X2@`0``
+MNP````"H`G0+08.,))0````(ZPE!@XPDE````!!(@[VP`````'02]H6I````
+M`70)2(N=L````.LJ2(.]N`````!T($F+M2`*``"Z`````$B)[_^5N````(7`
+M=`=)BYT@"@``2(7;=#5,B>?H`````+X`````3(GWZ`````!(BW,(BQ-,B??H
+M`````$B-0P1(@\,0@S@`=.7I#`$``$R)[^@`````2(D$)$B%P'4,QH6J````
+M!NG\````2(L4)$B+0A!)B40D2$F)5"1XN0````"Z``(``(@(2/_`2/_*=?;V
+MA:D````$#X2/````0?:$))8````@=!A)BWPD2$&+5"0T2(NUH````.@`````
+MZVQ!]H0DE@```!!T84V+?"1(2(.]L`````!T$O:%J0````%U"4B+G;````#K
+M($F+M2`*``"Z`0```$B)[_^5N````(7`=`=)BYT@"@``2(MS"(L33(G_Z```
+M``"+`TD!QTB-0P1(@\,0@S@`=."^`````$R)]^@`````08M4)#1(BP0D2(MP
+M&$R)]^@`````ZPE!@XPDE`````%,B>9,B>_H`````.L43(GF3(GOZ`````!(
+MB>__E<````!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F
+M9I!F9I!(@^QH2(E<)#A(B6PD0$R)9"1(3(EL)%!,B70D6$R)?"1@2(G[28GT
+M2(E,)#!!B=5$B$0D+\=$)!3_____B=#!X`EFB40D$DR+?V!-A?]T"8"_RP``
+M``!T"8M$)!3I#P,``$F+5TA(B50D"$R+=WAFQX?(````$"=,B??H`````$B)
+MQ8M$)!1(A>T/A.$"``!,B??H`````$B)1"0@2(7`=11(B>Y,B??H`````(M$
+M)!3INP(``$F+MM`(``#&1C\!2(G:OP4```#H`````$&`3T0"2(M38+XA````
+M2(M\)`CH`````$B-15A(B40D&(!\)"\`=!#'A90````*````QD4X*.LGQX64
+M````$@```,9%."I(BU0D($B+>A!(#[=4)!)(BW0D,.@`````2(M#8/9`8`%T
+M?H!\)"\!&<"#X`*#Z'B(13C&13D`3(G@2,'H.(A%.DR)X$C!Z#"(13M,B>!(
+MP>@HB$4\3(G@2,'H((A%/4R)X$C!Z!B(13Y,B>!(P>@0B$4_3(G@2,'H"(A%
+M0$2(94'&14(`QD5#`$2)Z&;!Z`B(141$B&U%QD5&`,9%1P#K3(!\)"\!&<"#
+MX`*#P"B(13C&13D`3(G@2,'H&(A%.DR)X$C!Z!"(13M,B>!(P>@(B$4\1(AE
+M/<9%/@!$B>AFP>@(B$4_1(AM0,9%00!(B>_H`````$B+0V`/MT`P9HE%(,9%
+M)(!(B5TH2(M4)"!(BT(02(E%2`^W1"02B44T2(E5>,9%,"!(BT-@2`7D````
+M2(E%4$C'A:``````````O@````!(BWPD&.@`````BU4T2(M$)"!(BW`82(M\
+M)!CH`````,:#RP````%(B>Y,B??H`````$B%VP^$GP```$B#>V``=%2`N\L`
+M````=$MF@;O(````E@!U$DB+4V!(BWI(OB$```#H`````&;_B\@```"_T`<`
+M`.@`````3(GWZ`````!(A=MT5$B#>V``=`F`N\L`````=;5(A=MT/TB#>V``
+M=#AF@[O(`````'0N@'TD`'4HQT0D%`````"`?"0O`'092`^W5"022(M$)"!(
+MBW`02(M\)##H`````$B#?7@`=`Q(C75X3(GWZ`````!(B>Y,B??H`````$F+
+MMM`(``#&1C\`2(G:OP8```#H`````$&`9T3]BT0D%$B+7"0X2(ML)$!,BV0D
+M2$R+;"103(MT)%A,BWPD8$B#Q&C#9F9FD&9F9I!F9F:02(/L&$B)7"0(3(ED
+M)!!)B?Q!B'0D3T`/MMZ)WN@`````28'$`!0``(G>3(GGZ`````"X`0```$B+
+M7"0(3(MD)!!(@\08PV9F9I!F9I!F9I!(@^P(Z``````/ML!(@\0(PV9F9I!F
+M9F:09F9FD&9FD+@`````PV9F9I!F9I!F9I"Y`````+J`````2(NWT`@```^W
+MPH"\,$`(``#_#Y7`#[;``<'_PF:!^H4`=N1(B[_0"```2(''`!0``+J`````
+M#[?"@+PX0`@``/\/E<`/ML`!P?_"9H'ZA0!VY(G(PY")\HGPP.@$/`EV!8/`
+M5^L(B?#`Z`2#P#"(!XG0@^`/@_@)?@R)T(/@#X/`5^L*9I")T(/@#X/`,(A'
+M`<-F9F:02(/L$$B)'"1,B60D"$B)^T&)]$R)X`^V].BB____00^V]$B#PP)(
+MB=_HDO___TB+'"1,BV0D"$B#Q!##9F9FD%532(G50;D`````N0````"Z``$`
+M`$B)Z(@(2/_`2/_*=?:Y@````$R+A]`(```/M\%F0@^VE`!`"```9H'Z_P`/
+MA&(!``!$B<A!_\$Y\`^%5`$``&:!^8$`#X?%````#[?"2&G`R`\``$B)PDD#
+MD&@)``!(@WH0`'1GN8````!,B<8/M\%F#[:$,$`(``!F/?\`=!</M\!(:<#(
+M#P``2`.&:`D``$@[0A!T,?_!9H'Y@0!VSKL`````@'I:`'8QO@$````/ML,/
+MMDP0<(GPT^`)12#_PSA:6G?JZQ2(30+KT\9%`O](BT((#[9`#8E%(,9%``$/
+MMD)9B$4!2(M">$B)101(BX*(````2(E%#$B+@I````!(B444BX*@````B44<
+MZWI(BX?0"```#[?22&G2T````$B)TT@#F$`)``#&10+_QD4``DB+A]`(``!(
+MBX!`"0``#[9$`CN(10%(BX.(````#[9`#8E%(,9%!'8/MW,\2(U]!>A$_O__
+MQD4,9`^W<SY(C7T-Z#/^___&11QR#[9S.4B-?1WHXOW__[@`````Z9H!``#_
+MP6:!^84`#X9R_O__2(N_T`@``$B!QP`4``"Y@`````^WP68/MI0X0`@``&:!
+M^O\`#X11`0``1(G(0?_!.?`/A4,!``!F@?F!``^'P@````^WPDAIP,@/``!(
+MB<)(`Y=H"0``2(-Z$`!T9+F`````#[?!9@^VA#A`"```9CW_`'07#[?`2&G`
+MR`\``$@#AV@)``!(.T(0=#'_P6:!^8$`=LZ[`````(!Z6@!V,;X!````#[;#
+M#[9,$'")\-/@"44@_\,X6EIWZNL4B$T"Z]/&10+_2(M""`^V0`V)12#&10`!
+M#[9"68A%`4B+0GA(B44$2(N"B````$B)10Q(BX*0````2(E%%(N"H````(E%
+M'.ML#[?22&G2T````$B)TT@#GT`)``#&10+_QD4``DB+AT`)```/MD0".XA%
+M`4B+@X@````/MD`-B44@QD4$=@^W<SQ(C7T%Z+S\___&10QD#[=S/DB-?0WH
+MJ_S__\9%''(/MG,Y2(U]'>A:_/__N`````#K%69FD/_!9H'YA0`/AHO^__^X
+M_____UM=PV9F9I!F9F:09F:055-(B=5!N0````"Y`````+JD#```2(GHB`A(
+M_\!(_\IU]KF`````3(N'T`@```^WP69"#[:4`$`(``!F@?K_``^$"@,``$2)
+MR$'_P3GP#X7\`@``9H'Y@0`/AVD"```/M\)(:<#(#P``20.`:`D``$F)P$B#
+M>!``=&ZZ@````$B+C]`(```/M\)F#[:$"$`(``!F/?\`=!</M\!(:<#(#P``
+M2`.!:`D``$D[0!!T-/_"9H'Z@0!VSKH`````08!X6@!V,[X!````#[;"0@^V
+M3`!PB?#3X`E%(/_"03A06G?HZQ2(50+KT,9%`O](BT`(#[9`#8E%(,9%``%!
+M#[9`68A%`4F+0'A(B44$28N`B````$B)10Q)BX"0````2(E%%$&+@*````")
+M11R[`````$&`N,``````#X8$`@``#[;#2(T,@$B-3,T`2(T$0$C!X`1,`<!(
+MC;#`````#[96"(A1)`^V5@F(425(BX#0````#[8`@^`/B$$F#[9!)(/X`W0R
+M@_@#?PZ#^`(/A.$```#IS0```(/X!&9F9I!F9I!T28/X$@^$BP```&9FD&:0
+MZ:X````/MLM(C01)2,'@!$J+A`#0````#[90`8/B!P^VTL'B"$B-#(D/MD`"
+M`=!KP`J)1,THZ8<````/MM-(C0122,'@!$J+A`#0````@'@"`'4.2(T$DL=$
+MQ2@`````ZV`/ML-(C12`2(T$0$C!X`1*BX0`T`````^V0`*#Z!2)1-4HZSP/
+MMLM(C01)2,'@!$J+A`#0````#[90`L'B"$B-#(D/MD`#`=!KP`J)1,THZP\/
+MML-(C02`QT3%*``````/ML-(C12`2(U4U0!(C7(L2(T$0$C!X`1,`<!(C8C8
+M````2(N`V````$B)0BQ(BT$(2(E&"$B+01!(B4802(M!&$B)1AC_PT$XF,``
+M```/AWC^___K>DB+A]`(```/M])(:=+0````2(G32`.80`D``,9%`O_&10`"
+M2(N'T`@``$B+@$`)```/MD0".XA%`4B+@X@````/MD`-B44@QD4$=@^W<SQ(
+MC7T%Z%#Y___&10QD#[=S/DB-?0WH/_G__\9%''(/MG,Y2(U]'>CN^/__N```
+M``#I/@,``&9F9I#_P6:!^84`#X;*_/__2(N_T`@``$B!QP`4``"Y@`````^W
+MP68/MI0X0`@``&:!^O\`#X3Q`@``1(G(0?_!.?`/A>,"``!F@?F!``^'90(`
+M``^WPDAIP,@/``!)B<!,`X=H"0``28-X$`!T9[J`````#[?"9@^VA#A`"```
+M9CW_`'07#[?`2&G`R`\``$@#AV@)``!).T`0=#3_PF:!^H$`=LZZ`````$&`
+M>%H`=C.^`0````^VPD(/MDP`<(GPT^`)12#_PD$X4%IWZ.L4B%4"Z]#&10+_
+M28M`"`^V0`V)12#&10`!00^V0%F(10%)BT!X2(E%!$F+@(@```!(B44,28N`
+MD````$B)111!BX"@````B44<NP````!!@+C```````^&^0$```^VPTB-#(!(
+MC4S-`$B-!$!(P>`$3`'`2(VPP`````^V5@B(420/ME8)B%$E2(N`T`````^V
+M`(/@#XA!)@^V022#^`-T,X/X`W\3@_@"#X3D````9F:09I#IRP```(/X!'1,
+M@_@29F:0#X2+````Z;4```!F9I!FD`^VRTB-!$E(P>`$2HN$`-`````/ME`!
+M@^('#[;2P>((2(T,B0^V0`(!T&O`"HE$S2CIB0````^VTTB-!%)(P>`$2HN$
+M`-````"`>`(`=0Y(C022QT3%*`````#K8@^VPTB-%(!(C01`2,'@!$J+A`#0
+M````#[9``H/H%(E$U2CK/@^VRTB-!$E(P>`$2HN$`-`````/ME`"P>((2(T,
+MB0^V0`,!T&O`"HE$S2CK$6:0#[;#2(T$@,=$Q2@`````#[;#2(T4@$B-5-4`
+M2(UR+$B-!$!(P>`$3`'`2(V(V````$B+@-@```!(B4(L2(M!"$B)1@A(BT$0
+M2(E&$$B+01A(B488_\-!.)C`````#X=U_O__ZVP/M])(:=+0````2(G32`.?
+M0`D``,9%`O_&10`"2(N'0`D```^V1`([B$4!2(N#B`````^V0`V)12#&101V
+M#[=S/$B-?07H(?;__\9%#&0/MW,^2(U]#>@0]O__QD4<<@^V<SE(C7T=Z+_U
+M__^X`````.L2_\%F@?F%``^&Z_S__[C_____6UW#9F:005154T&)]$B)U4&X
+M`````+D`````NJ0,``!(B>AF9I"("$C_P$C_RG7VN8````!(B[?0"```#[?!
+M9@^VE#!`"```9H'Z_P`/A"D#``!$B<!!_\!$.>`/A1H#``!F@?F!``^'AP(`
+M``^WPDAIP,@/``!)B<!,`X9H"0``28-X$`!T:KJ`````2(GQ#[?"9@^VA`A`
+M"```9CW_`'07#[?`2&G`R`\``$@#@6@)``!).T`0=#3_PF:!^H$`=LZZ````
+M`$&`>%H`=C.^`0````^VPD(/MDP`<(GPT^`)12#_PD$X4%IWZ.L4B%4"Z]#&
+M10+_28M`"`^V0`V)12#&10`!00^V0%F(10%)BT!X2(E%!$F+@(@```!(B44,
+M28N`D````$B)111!BX"@````B44<1(EE)+L`````08"XP``````/AB8"```/
+MML-(C0R`2(U,S0!(C01`2,'@!$P!P$B-L,`````/ME8(B)&H````#[96"8B1
+MJ0```$B+@-`````/M@"#X`^(@:H````/MH&H````@_@#="Z#^`-_#H/X`@^$
+M[0```.G6````@_@$9F:0=$R#^!(/A)0```!F9I!FD.F[````#[;+2(T$24C!
+MX`1*BX0`T`````^V4`&#X@</MM+!X@A(C0R)#[9``@'0:\`*B83-K````.F4
+M````#[;32(T$4DC!X`1*BX0`T````(!X`@!U$4B-!)+'A,6L`````````.MJ
+M#[;#2(T4@$B-!$!(P>`$2HN$`-`````/MD`"@^@4B835K````.M##[;+2(T$
+M24C!X`1*BX0`T`````^V4`+!X@A(C0R)#[9``P'0:\`*B83-K````.L3D`^V
+MPTB-!(#'A,6L``````````^VPTB-%(!(C535`$B-LK````!(C01`2,'@!$P!
+MP$B-B-@```!(BX#8````2(F"L````$B+00A(B48(2(M!$$B)1A!(BT$82(E&
+M&/_#03B8P`````^'6O[__^M^2(N'T`@```^WTDAITM````!(B=-(`YA`"0``
+MQD4"_\9%``)(BX?0"```2(N`0`D```^V1`([B$4!2(N#B`````^V0`V)12#&
+M101V#[=S/$B-?07HFO+__\9%#&0/MW,^2(U]#>B)\O__QD4<<@^V<SE(C7T=
+MZ#CR__]$B64DN`````#I80,``/_!9H'YA0`/AJS\__](B[_0"```2(''`!0`
+M`+F`````#[?!9@^VE#A`"```9H'Z_P`/A!@#``!$B<!!_\!$.>`/A0D#``!F
+M@?F!``^'AP(```^WPDAIP,@/``!)B<!,`X=H"0``28-X$`!T9[J`````#[?"
+M9@^VA#A`"```9CW_`'07#[?`2&G`R`\``$@#AV@)``!).T`0=#3_PF:!^H$`
+M=LZZ`````$&`>%H`=C.^`0````^VPD(/MDP`<(GPT^`)12#_PD$X4%IWZ.L4
+MB%4"Z]#&10+_28M`"`^V0`V)12#&10`!00^V0%F(10%)BT!X2(E%!$F+@(@`
+M``!(B44,28N`D````$B)111!BX"@````B44<1(EE)+L`````08"XP``````/
+MAAL"```/ML-(C0R`2(U,S0!(C01`2,'@!$P!P$B-L,`````/ME8(B)&H````
+M#[96"8B1J0```$B+@-`````/M@"#X`^(@:H````/MH&H````@_@#=#&#^`-_
+M#H/X`@^$\````.G9````@_@$9F:09F:0=$R#^!(/A)0```!F9I!FD.F[````
+M#[;+2(T$24C!X`1*BX0`T`````^V4`&#X@</MM+!X@A(C0R)#[9``@'0:\`*
+MB83-K````.F4````#[;32(T$4DC!X`1*BX0`T````(!X`@!U$4B-!)+'A,6L
+M`````````.MJ#[;#2(T4@$B-!$!(P>`$2HN$`-`````/MD`"@^@4B835K```
+M`.M##[;+2(T$24C!X`1*BX0`T`````^V4`+!X@A(C0R)#[9``P'0:\`*B83-
+MK````.L3D`^VPTB-!(#'A,6L``````````^VPTB-%(!(C535`$B-LK````!(
+MC01`2,'@!$P!P$B-B-@```!(BX#8````2(F"L````$B+00A(B48(2(M!$$B)
+M1A!(BT$82(E&&/_#03B8P`````^'5_[__^MP#[?22&G2T````$B)TT@#GT`)
+M``#&10+_QD4``DB+AT`)```/MD0".XA%`4B+@X@````/MD`-B44@QD4$=@^W
+M<SQ(C7T%Z$CO___&10QD#[=S/DB-?0WH-^___\9%''(/MG,Y2(U]'>CF[O__
+M1(EE)+@`````ZQ+_P6:!^84`#X;$_/__N/____];74%<PV9F9I!)B?!,BT]X
+MN0````"Z*````$B)\(@(2/_`2/_*=?9)B[$@"@``N0````"Z``(``$B)\(@(
+M2/_`2/_*=?9(C58VN0````"-00%(F`^V1#@@B`)(_\)(8\$/MD0X((@"2/_"
+M@\$"@_DG?MQ(C584N0````"-00%(F`^V1`<,B`)(_\)(8\$/MD0'#(@"2/_"
+M@\$"@_D3?MQ(C58NN0````"-00%(F`^V1#A(B`)(_\)(8\$/MD0X2(@"2/_"
+M@\$"@_D'?MQ)B7`82(M'4$C_P$F)`$B#?V``=5?V!P%T4DB#?V@`#Y7`387)
+M#Y7"#[;`A<)T%$B+1VA(#[9`6T*`O`A`"```_W4I2(-_<``/E<!-A<D/E<(/
+MML"%PG0>2(M'<$@/MT!`0H"\"$`(``#_=`H/MD<!08A`#.L%0<9`#/\/MD<"
+M08A`#0^V1UQ!B$`.0<9`$A!!QD`1$`^V!X/@`0'`OOW___]!(G`*"<9!B'`*
+M#[8'@^`!P>`%00^V2`B#X=\)P4&(2`A(#[='6$C!Z`>#X`'!X`:#X;\)P4&(
+M2`A(#[='6$C!Z`*#X`%!#[90"8/B_@G"08A0"4@/MT=:2,'H`X/@`<'@!X/A
+M?PG!08A("$@/MT=:2-'H@^`!`<"#XOT)PD&(4`E(#[='6$C!Z`.#X`'!X`:#
+MXK\)PD&(4`E(#[='6DC!Z`2#X`'!X`>#XG\)PD&(4`F#R1!!B$@(#[8'T.B#
+MX`&#YOX)QD&(<`H/M@>#X`2#YOL)QD&(<`IF0<=`%``0#[:'S````$&(0"##
+MQT($`````,<"`````+@`````PV9F9I!F9I!F9I!F9I!(@^PX2(E<)`A(B6PD
+M$$R)9"083(EL)"!,B70D*$R)?"0P2(G[08GU0;______2(MO8$R+=WA(A>UT
+M%8"_RP````!U#/8'`G0/9F9FD&9FD$2)^.D-`0``3(GW9F:09I#H`````$F)
+MQ$2)^$V%Y`^$\0```$'&1"0XX4'&1"0Y`4&`_0(/E<"#P!I!B$0D.D'&1"0D
+M@`^W13!F08E$)"!)B5PD*$''1"0T`````$G'1"1(`````$G'A"2@````````
+M`$R)YDR)]^@`````QH/+`````6;'@\@```#Z`$B%VW1<2(-[8`!T569F9I!F
+M9I!F@;O(````E@!U%4B+4V!(BWI(OB$```#H`````&9FD&;_B\@```"_T`<`
+M`.@`````3(GWZ`````!(A=MT$$B#>V``=`F`N\L`````=;)F@[O(`````'0/
+M08!\)"0`N`````!$#T3X3(GF3(GWZ`````!$B?A(BUPD"$B+;"003(MD)!A,
+MBVPD($R+="0H3(M\)#!(@\0XPV9F9I!F9F:02(/L2$B)7"082(EL)"!,B60D
+M*$R);"0P3(ET)#A,B7PD0$B)^T&)]D&______TR+9V!,BV]X387D=`F`O\L`
+M````=`Q$B?CI9`0``&9F9I!,B>_H`````$B)Q42)^$B%[0^$200``/8#`@^%
+M`0$``$&`_A1W#$$/MO9K]@QF9I#K&F9!#[;&9FG`B0!FP>@(P.@$#[;P@<;P
+M````QD4XX<9%.0'&13H<0(AU.\9%)(!!#[=$)#!FB44@2(E=*,=%-`````!(
+MQT5(`````$C'A:``````````2(GN3(GOZ`````#&@\L````!9L>#R````,0)
+M2(7;=%9(@WM@`'1/D&:!N\@```"6`'452(M38$B+>DB^(0```.@`````9F:0
+M9O^+R````+_0!P``Z`````!,B>_H`````$B%VW002(-[8`!T"8"[RP````!U
+MLF:#N\@`````#X1$`P``@'TD``^%.@,``$&_`````.DO`P``3(GOZ`````!(
+MB40D$$B%P`^$&0,``$B-15A(B40D"$B+1"002(M`$$B)!"3&13@:QD4Y",9%
+M.AK&13L`QD4\$,9%/0!(BT0D$$B)17C&122`00^W1"0P9HE%($B)72A(BT0D
+M$$B+0!!(B45(QT4T$````$B+0V!(!>0```!(B450QD4P($C'A:``````````
+MO@````!(BWPD".@`````BU4T2(M$)!!(BW`82(M\)`CH`````$B)[DR)[^@`
+M````QH/+`````6;'@\@```#Z`$B%VW122(-[8`!T2V:!N\@```"6`'422(M3
+M8$B+>DB^(0```.@`````9O^+R````+_0!P``Z`````!,B>_H`````$B%VW00
+M2(-[8`!T"8"[RP````!UM6:#N\@`````=`:`?20`=!)(C70D$$R)[^@`````
+MZ>8!``!(B>Y,B>_H`````$R)[^@`````2(G%2(7`=15(C70D$$R)[^@`````
+M1(GXZ<8!``!(C5!82(E4)`A(BSPD2(/'!$B+%"1(#[9"`P^V1!`$B$($QD<!
+M"L9'`@"Y`````+H$````2(L$)(@(2/_`2/_*=?9%A/9U!H!G`_SK-T$/MO9I
+M]E@"``"`3P,#B?'!Z1B(3P2)\L'J$(A7!8GPP>@(B$<&0(AW!XA/"(A7"8A'
+M"D"(=PM(BT0D$$B)17C&13@5#[8'P/@']]"#P!&(13G&13H`QD4[`,9%/!#&
+M13T`@"<_QD4D@$$/MT0D,&:)12!(B5TH2(M$)!!(BT`02(E%2,=%-!````!(
+MBT-@2`7D````2(E%4,9%,"!(QX6@`````````+X`````2(M\)`CH`````(M5
+M-$B+1"002(MP&$B+?"0(Z`````!(B>Y,B>_H`````,:#RP````%FQX/(````
+M^@!(A=MT4DB#>V``=$MF@;O(````E@!U$DB+4V!(BWI(OB$```#H`````&;_
+MB\@```"_T`<``.@`````3(GOZ`````!(A=MT$$B#>V``=`F`N\L`````=;5F
+M@[O(`````'0-@'TD`+@`````1`]$^$B-="003(GOZ`````!F9I!F9I!(B>Y,
+MB>_H`````$2)^&:02(M<)!A(BVPD($R+9"0H3(ML)#!,BW0D.$R+?"1`2(/$
+M2,-F9F:09F:09F:09F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@2(G[08GU
+MN/____],BV=X2(MO8/9'6`@/A(,```!)B[0DT`@``$B)^K\%````Z`````"`
+M340"2(M]2$B)ZKXA````Z`````"`?7L`=!B_T`<``.@`````3(GGZ`````"`
+M?7L`=>A%A>UT#F:#2UH09H--8A#K#&:09H-C6N]F@V5B[TF+M"30"```2(G:
+MOP8```#H`````(!E1/VX`````$B+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-F
+M9F:09F9FD&9F9I!F9I!(@^P82(E<)`A(B6PD$(GU2(M/>$B+7V#V!P%T.TB#
+M>U``=!%`#[;6#[9S>4B+>U#H`````$B#NQ@!````="U`#[;5#[:S!0$``$B+
+MNQ@!``#H`````.L40`^VUDB+0S@/MG`!2(G/Z`````!(BUPD"$B+;"002(/$
+M&,-F9I!FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!(B?M!
+MB?9!B=?'1"0$_____TR+9V!,BV]X387D=`F`O\L`````=`F+1"0$Z1,!``!,
+MB>_H`````$B)Q8M$)`1(A>T/A/L```#&13CAQD4Y`46$]G0-08#_`1G`]]"#
+MP`?K"T&`_P$9P/?0@\`-B$4ZQD4D@$$/MT0D,&:)12!(B5THQT4T`````$C'
+M14@`````2,>%H`````````!(B>Y,B>_H`````,:#RP````%FQX/(````]`%(
+MA=MT5$B#>V``=$UF@;O(````E@!U$DB+4V!(BWI(OB$```#H`````&;_B\@`
+M``"_T`<``.@`````3(GOZ`````!(A=MT$DB#>V``=`N`N\L`````9I!ULV:#
+MN\@`````=!J`?20`=11(BT-@#[=`8F:)0UK'1"0$`````$B)[DR)[^@`````
+MBT0D!$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9F
+M9I!(@^P(#[8&@_@)#X>"````B<#_),4`````9F9FD&9FD$B+?@C&A^\3````
+MZ`````"X`````.M@#[96"+X`````Z"O^___K4`^V5@B^`0```.@;_O__ZT`/
+MMG8(Z`````#K-0^V5@D/MG8(Z*'\__^0ZR4/MG8(Z`````!F9I!FD.L5#[9V
+M".@`````N`````#K!;C_____2(/$",-F9F:02(M'8$B%P'132,=`.`````"`
+M2$0$2,='8`````!(QT=P`````$C'1V@`````@W\(/W\52(M7>$AC1PA(QX3"
+M0`0```````##2(M7>$AC1PA(QX3"0`(```````#SPV:02(M'8$B%P'132,=`
+M.`````"`8$3[2,='8`````!(QT=P`````$C'1V@`````@W\(/W\52(M7>$AC
+M1PA(QX3"0`0```````##2(M7>$AC1PA(QX3"0`(```````#SPV:04TB)^^@`
+M````2(N[T`@``$B!QP`4``#H`````%O#9I!32(G[Z`````!(B[O0"```2(''
+M`!0``.@`````6\-FD$%505154TB#[%A)B?Q,BZ_0"```28'%`!0``$B#/P!T
+M%DB+-TB![@```@!(B3=(BW\@Z`````!)@WPD$`!T$4F+="0028M\)"#H````
+M`&:028-\)!@`=`])BW0D&$F+?"0@Z`````!!#[=\)#Q(C40D5DB)1"0X2(U$
+M)%1(B40D,$B-1"122(E$)"A(C40D4$B)1"0@2(U$)$Y(B40D&$B-1"1-2(E$
+M)!!(C40D3$B)1"0(2(U$)$I(B00D3(U,)$E,C40D1DB-3"1%2(U4)$1(C70D
+M0^@`````28.\)!@)````="M)B[0D&`D``$F-O"3X"```Z`````!)B[48"0``
+M28V]^`@``.@`````9F:028.\)$`)````="A)B[0D0`D``$F-O"0@"0``Z```
+M``!)B[5`"0``28V](`D``.@`````28.\)&@)````="A)B[0D:`D``$F-O"1(
+M"0``Z`````!)B[5H"0``28V]2`D``.@`````28.\).`*````="])B[0DX`H`
+M`$F-O"3`"@``Z`````!)B[7@"@``28V]P`H``.@`````9F9FD&9FD+T`````
+M0#IL)$-S.V9F9I")Z`^VV$F+M-PP"P``28V\)!`+``#H`````$F+M-TP"P``
+M28V]$`L``.@`````_\5`.FPD0W+)28.\),`/````="Y)B[0DP`\``$F-O"2@
+M#P``Z`````!)B[7`#P``28V]H`\``.@`````9F:09F:028.\)/@/````="A)
+MB[0D^`\``$F-O"38#P``Z`````!)B[7X#P``28V]V`\``.@`````28.\)&@0
+M````="A)B[0D:!```$F-O"1($```Z`````!)B[5H$```28V]2!```.@`````
+M28.\))`)````="])B[0DD`D``$F-O"1P"0``Z`````!)B[60"0``28V]<`D`
+M`.@`````9F9FD&9FD$F#O"1H"@```'0H28NT)&@*``!)C;PD2`H``.@`````
+M28NU:`H``$F-O4@*``#H`````$F#O"3X"0```'0H28NT)/@)``!)C;PDV`D`
+M`.@`````28NU^`D``$F-O=@)``#H`````$F#O"0@"@```'0O28NT)"`*``!)
+MC;PD``H``.@`````28NU(`H``$F-O0`*``#H`````&9F9I!F9I!)@[PDN`H`
+M``!T*$F+M"2X"@``28V\))@*``#H`````$F+M;@*``!)C;V8"@``Z`````!)
+M@[PD"`L```!T*$F+M"0("P``28V\).@*``#H`````$F+M0@+``!)C;WH"@``
+MZ`````!)@[PD4`\```!T+TF+M"10#P``28V\)#`/``#H`````$F+M5`/``!)
+MC;TP#P``Z`````!F9F:09F:028.\)(@/````="A)B[0DB`\``$F-O"1H#P``
+MZ`````!)B[6(#P``28V]:`\``.@`````28.\)#`0````="A)B[0D,!```$F-
+MO"00$```Z`````!)B[4P$```28V]$!```.@`````28.\))`*````="])B[0D
+MD`H``$F-O"1P"@``Z`````!)B[60"@``28V]<`H``.@`````9F9FD&9FD$F#
+MO"20$````'0W28N4))@0``!)B[0DD!```$F-O"1P$```Z`````!)BY68$```
+M28NUD!```$F-O7`0``#H`````$F#O"3`$````'0W28N4),@0``!)B[0DP!``
+M`$F-O"2@$```Z`````!)BY7($```28NUP!```$F-O:`0``#H`````$F#O"3P
+M$````'0W28N4)/@0``!)B[0D\!```$F-O"30$```Z`````!)BY7X$```28NU
+M\!```$F-O=`0``#H`````$F#O"10$0```'0W28N4)%@1``!)B[0D4!$``$F-
+MO"0P$0``Z`````!)BY58$0``28NU4!$``$F-O3`1``#H`````$F#O"0@$0``
+M`'0]28N4)"@1``!)B[0D(!$``$F-O"0`$0``Z`````!)BY4H$0``28NU(!$`
+M`$F-O0`1``#H`````&9FD&9FD$F#O"2`$0```'0W28N4)(@1``!)B[0D@!$`
+M`$F-O"1@$0``Z`````!)BY6($0``28NU@!$``$F-O6`1``#H`````$F#O"2P
+M$0```'0W28N4)+@1``!)B[0DL!$``$F-O"20$0``Z`````!)BY6X$0``28NU
+ML!$``$F-O9`1``#H`````$B#Q%A;74%<05W#D$B#[!A(B5PD"$R)9"002(G[
+MZ`````!,C:,`%```3(GGZ`````!(B=_H`````+_0!P``Z`````!(B=_H````
+M`$B)W^@`````O@$```!(B=_H`````+X!````3(GGZ`````!(BUPD"$R+9"00
+M2(/$&,-(@^P(2,?'`````.@`````N`````!(@\0(PY"0D)"0D,8'",9'`1)`
+M@/X!&<#WT(/@!(A'`L9'`P#&1P0`QD<%`,9'!@#&1P<`QD<(`,9'"0#&1PH`
+MQD<+`(#Z`1G`@^`@B$<,QD<-`,9'#@#&1P\`QD<0`,9'$0#&1Q(`QD<3`+@4
+M````PV9F9I!F9I!F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)
+M?"0P28G_2(GU08G608G-Z`````!)B<2X`````$V%Y`^$HP```$F+7"0000^V
+MU4$/MO9(C7L$Z`````!!B<7&`P#&0P$`QD,"`,9#`P!(B>Y,B?_H`````+D`
+M````NA````!(C44XB`A(_\!(_\IU]D&-103&13@5QD4Y$8A%/,9%/0!(C5U8
+M1`^VZ$2);33'A90`````````28M$)!!(B45(3(EE>+X`````2(G?Z`````!)
+MBW0D&$2)ZDB)W^@`````N`$```!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H
+M3(M\)#!(@\0XPY"0D)"0D$&)\&:)=PC&1PX`9L='#```O@````!F1#G&<QYF
+M9F:0#[?.2(L71(G`9BGP_\AFB01*_\9F1#G&<N;SPV9F9I!!B?!FB7<(QD<.
+M`6;'1PP``+D`````9CGQ<Q=F9I!FD`^WT4B+!V:)#%#_P69$.<%R[O/#9F9F
+MD&9F9I!F9F:0@'\.`74J#[='#`^WR$B+%__`9HE'#`^W%$IF.T<*<@9FQT<,
+M``!F_T\(#[?"PV:09O]/"$@/MU<(2(L'#[<$4,-F9F:09F9FD&9F9I!F9I!(
+M@^P(@'\.`74J#[=7#`^W1PB)1"0$C00"#[=7"HD4))GW/"1(8])(BP]FB311
+M9O]'".L02`^W5PA(BP=FB3109O]'"$B#Q`C#9F9FD&9FD&:#?P@`#Y3`#[;`
+MPY"0D)"X`````$@Y/W012(L'2(M("$B+$$B)2@A(B1'SPV9FD+@`````2#D_
+M=!)(BT<(2(M("$B+$$B)2@A(B1'SPV:02(MW8$0/MD=8N0````"ZJ````$B)
+M^(@(2/_`2/_*=?9(B7=@1(A'6,-F9F:09F:02(/L"`^V1@&(1P$/MD8"B$<"
+MBT8$B4<$2(M'"$@/ME<!2(T44DC!X@)(BW8(2(G'Z`````!(@\0(PV9FD&9F
+MD+D`````.-%S(V9F9I!F9I`/M@<Z!G0)N`````##9F:02/_'2/_&_\$XT7+D
+MN`$```##9F9FD&9F9I!F9I!F9I#&1P$`0(AW`L='!`````##08G12`^V1P%(
+MC01`2(M7"$R-!(+^1P%$`4\$N0````"Z#````$R)P(@(2/_`2/_*=?9)B3!%
+MB$@(1(G(P>@(08A`"42)RL'J$(/B/T$/MD`*@^#`"=!!B$`*PV9FD&:0#[9'
+M`3H'#Y+`#[;`PV9FD+G_````N@`"``!(B?AF9I"("$C_P$C_RG7V\\-F9F:0
+MN``````/M\B`?(\"_W419HDTCXA4CP+K#V9F9I!F9I#_P&:#^']VW0^WP,-F
+M9F:008G1B?!$#[?`0H!\AP+_=0]F1HD,AT*(3(<"#[?`PY`/MM%!#[?QZ```
+M```/M\##N``````/M\@X5(\"=1-F.32/=0W&1(\"_V;'!(___^L(_\!F@_A_
+M=MP/M\##9F:0N0`````/M\$X5(<"=09F.32'=`C_P6:#^7]VZ6:!^8``N(`!
+M```/1,@/M\'#9F:0#[9/.(#Y"`^5P(#Y*`^5P@^VP(7"=#Z`^:AT.8#YB'0T
+M@/D*#Y7`@/DJ#Y7"#[;`A<)T(8#YJG0<@/F*=!>`^2\/E<"`^8\/E<(/ML"%
+MP@^%S0$```^V1SB#^"\/A*X```"#^"]_.8/X"G1[@_@*D'\.@_@(='#IA@$`
+M`&9F9I"#^"@/A(<```"#^"IF9F:0#X1Z````Z6<!``!F9I!FD#V/````#X3=
+M````/8\```!_'CV(````#X3+````/8H````/A,````#I-0$``&9FD#VH````
+M=&P]J@```&9F9I!T8>D;`0``#[9'.8/@'\'@$`^V5SK!X@@)T`^V5SL)T(G"
+M#[9//.D%`0``9F:09I`/ME<ZP>(8#[9'.\'@$`G"#[9'/,'@"`G"#[9'/0G"
+MB=(/MD\_P>$(#[9'0`G!Z<T````/ME<ZP>(8#[9'.\'@$`G"#[9'/,'@"`G"
+M#[9'/0G"B=(/MD\^P>$8#[9'/\'@$`G!#[9'0,'@"`G!#[9'00G!Z8@```!(
+M#[97.DC!XCA(#[9'.TC!X#!("<)(#[9'/$C!X"A("<)(#[9'/4C!X"!("<)(
+M#[9'/DC!X!A("<)(#[9'/TC!X!!("<)(#[9'0$C!X`A("<)(#[9'04@)P@^V
+M3T+!X1@/MD=#P>`0"<$/MD=$P>`("<$/MD=%"<'K#KH`````N0````!F9F:0
+M2(F7B````(F/D````&:#3R(!\\-F9F:09F9FD&9F9I!32(/L8$B)^T0/MD\[
+M1`^V1SH/MD\Y#[97.`^V1T>)1"18#[9'1HE$)%`/MD=%B40D2`^V1T2)1"1`
+M#[9'0XE$)#@/MD="B40D,`^V1T&)1"0H#[9'0(E$)"`/MD<_B40D&`^V1SZ)
+M1"00#[9'/8E$)`@/MD<\B00D2(G^2,?'`````+@`````Z``````/MW,@2,?'
+M`````+@`````Z`````!(@\1@6\-F9F:09F9FD+K_____N0````!F.?%S(4G'
+MP``````/M\$/M@0X,=`/ML#!Z@A!,Q2`_\%F.?%RYHG0PY"0D)"0D)"0D)"0
+MD)!(BP>+D`0!``")%0````")T8'A?O_^_TB+!XF(!`$``(G1@>%^__+_2(M'
+M"(D(2(M'"(E(#$B+1PB)2!!(BT<(B4@42(M'"(E(&$B+1PB)2`1(BP>+@%0!
+M``")!0````")P8'A_@#__TB+!XF(5`$``,-F9F:09F9FD&9FD&9FD%532(/L
+M"(GS2(LO@_X#=AB-!-W@____BX0HH`$``(D%`````(G!ZQB-!-T`````B<"+
+MA"B``0``B04`````B<&#X?Z#^P-V$(T$W>#___^)C"B@`0``ZQ"-!-T`````
+MB<")C"B``0``A-(/A*````"#^P-V&(T$G?#___^+A"C@`0``B04`````B<'K
+M&(T$G0````")P(N$*-`!``")!0````")P8/)`H/[`W80C02=\/___XF,*.`!
+M``#K$(T$G0````")P(F,*-`!``"-!)T`````C7#PB<)F9F:09F:0@_L#=A&+
+MA"[@`0``B04`````B<'K#XN$*M`!``")!0````")P?;!`G76Z94```"0@_L#
+M=A2-!-W@____QX0H4`(```````#K%(T$W0````")P,>$*%`"````````OQ`G
+M``#H`````(/[`W88C03=X/___XN$*%0"``")!0````")P>L8C03=`````(G`
+MBX0H5`(``(D%`````(G!@\D!@_L#=A"-!-W@____B8PH5`(``.L0C03=````
+M`(G`B8PH5`(``$B#Q`A;7<-F9I!FD$%6055!5%5328G\08GU08G62(LONP``
+M``"`?SX`#X1.`@``1(GJ#[;"B=E(T_BH`0^$*P(``(/[`W88C03=X/___XN$
+M**0!``")!0````")PNL8C03=`````(G`BX0HA`$``(D%`````(G"@^+^@_L#
+M=A"-!-W@____B90HI`$``.L0C03=`````(G`B90HA`$``+\0)P``Z`````!%
+MA/8/A)H```"#^P-V&(T$G?#___^+A"C@`0``B04`````B<+K&(T$G0````")
+MP(N$*-`!``")!0````")PH/*`H/[`W80C02=\/___XF4*.`!``#K$(T$G0``
+M``")P(F4*-`!``"-!)T`````C7#PB<&0@_L#=A&+A"[@`0``B04`````B<+K
+M#XN$*=`!``")!0````")PO;"`G76Z94```"0@_L#=A2-!-W@____QX0H4`(`
+M``````#K%(T$W0````")P,>$*%`"````````OQ`G``#H`````(/[`W88C03=
+MX/___XN$*%0"``")!0````")PNL8C03=`````(G`BX0H5`(``(D%`````(G"
+M@\H!@_L#=A"-!-W@____B90H5`(``.L0C03=`````(G`B90H5`(``(/[`W87
+MC03=X/___\>$**`!```!````ZQ=F9I"-!-T`````B<#'A"B``0```0```(/[
+M`W88C03=X/___XN$**0!``")!0````")PNL8C03=`````(G`BX0HA`$``(D%
+M`````(G"@\H!@_L#=A"-!-W@____B90HI`$``.L0C03=`````(G`B90HA`$`
+M`/_#00^V1"0^.=@/A[+]__];74%<05U!7L-F9I!F9I")\4B+!XN`!`$``(D%
+M`````$&)P`^W1SQF/8!D#Y3"9CV`D0^4P`G0J`%U"&:!?SR`E'42#[;)@\$(
+MN`$```#3X$$)P.L10`^VSH/!#+@!````T^!!"<!(BP=$B8`$`0``PV9F9I!F
+M9F:09F:09F:0B?%(BP>+@`0!``")!0````!!B<`/MT<\9CV`9`^4PF8]@)$/
+ME,`)T*@!=0AF@7\\@)1U$@^VR8/!"+C^____T\!!(<#K$4`/MLZ#P0RX_O__
+M_]/`02'`2(L'1(F`!`$``,-F9F:09F9FD&9FD&9FD$B#[!A(B5PD"$R)9"00
+M28G\0`^VWHG>Z`````"_$"<``.@`````B=Y,B>?H`````$B+7"0(3(MD)!!(
+M@\08PY")\4"`_O]T>$"`_A]W-HN7&`$``(D5`````+@!````T^")P??0(=")
+MAQ@!``"+AU@!``")!0`````AR'1#B8=8`0``PXN7'`$``(D5`````$`/MLZ#
+MZ2"X`0```-/@B<'WT"'0B8<<`0``BX=@`0``B04`````(<AT!HF'8`$``//#
+M9F9FD&9F9I!F9I!F9I!!5%532(G5B?-,BR=`@/X#=AY(C03=`````"7X!P``
+M0L>$(``"```,`0``ZQQF9I!(C03=`````"7X!P``0L>$(``"```,`0``OQ`G
+M``#H`````(#[`W8X2(T,W0````"!X?@'```/ME4#P>(8#[9%`L'@$`G"#[9%
+M`<'@"`G"#[9%``G"0HF4(00"``#K-I!(C0S=`````('A^`<```^V50/!XA@/
+MMD4"P>`0"<(/MD4!P>`("<(/MD4`"<)"B90A!`(``(#[`W8;2(T$W0`````E
+M^`<``$+'A"```@``$`$``.L92(T$W0`````E^`<``$+'A"```@``$`$``+\0
+M)P``Z`````"`^P-V-TB-#-T`````@>'X!P``#[95!\'B&`^V10;!X!`)P@^V
+M107!X`@)P@^V100)PD*)E"$$`@``ZS5(C0S=`````('A^`<```^V50?!XA@/
+MMD4&P>`0"<(/MD4%P>`("<(/MD4$"<)"B90A!`(``%M=05S#D)!32(/L8$B)
+M^P^W?SQ(C40D7DB)1"0X2(U$)%Q(B40D,$B-1"1:2(E$)"A(C40D6$B)1"0@
+M2(U$)%9(B40D&$B-1"152(E$)!!(C40D5$B)1"0(2(U$)%)(B00D3(U,)%%,
+MC40D3DB-3"1-2(U4)$Q(C70D2^@`````#[94)$L/MG0D3$B-?"1$Z`````!(
+M#[94)$M(:=*(`0``2(MS($B-N_@(``"Y`0```.@`````2`^V5"1-2&G2T```
+M`$B+<R!(C;L@"0``N0$```#H`````$@/ME0D3$AITL@/``!(BW,@2(V[2`D`
+M`+D!````Z`````!(#[=4)%9(P>(#2(MS($B-NW`)``"Y`0```.@`````2`^W
+M5"1.2&G2J````$B+<R!(C;M("@``N0$```#H`````$@/ME0D44@/MT0D3D@/
+MK]!(C1122,'B`DB+<R!(C;O8"0``N0$```#H`````$B+<R!(C;L`"@``N0$`
+M``"Z``(``.@`````#[9,)$M(BW,@2(V[$`L``+H`"```Z`````!(#[94)%1(
+MP>(%2(MS($B-NY@*``"Y`0```.@`````2`^V5"152(T4DDC!X@5(BW,@2(V[
+MP`H``+D!````Z`````!(#[=4)%)(C1222,'B`TB+<R!(C;OH"@``N0$```#H
+M`````$@/MU0D5D@!TDB+<R!(C;LP#P``N0$```#H`````$@/ME0D2T@!TDB+
+M<R!(C;MH#P``N0$```#H`````$@/ME0D34@!TDB+<R!(C;N@#P``N0$```#H
+M`````$@/ME0D3$@!TDB+<R!(C;O8#P``N0$```#H`````$@/ME,^2`'22(MS
+M($B-NQ`0``"Y`0```.@`````2`^W5"182(T44DC!X@1(BW,@2(V[<`H``+D!
+M````Z`````"+5"1$2(MS($B-NT@0``"Y`0```.@`````2`^W5"162,'B!DB+
+M<R!(C;MP$```0;@!````N4````#H`````$B+<R!(C;N@$```0;@!````N0`!
+M``"Z`!D``.@`````2`^W5"162&G2L`0``$B+<R!(C;O0$```0;@!````N8``
+M``#H`````$@/MU0D7$C!X@)(BW,@2(V[`!$``$&X`0```+D$````Z`````!(
+M#[=4)%Y(P>("2(MS($B-NS`1``!!N`$```"Y!````.@`````#[94)%3!X@M(
+MBW,@2(V[8!$``$&X`0```+D(````Z`````!(#[=4)%)(:=*,`0``2(MS($B!
+MPY`1``!!N`$```"Y"````$B)W^@`````N`````!(@\1@6\-F9I!FD$%6055!
+M5%532(/L8$F)_$&^`````,9'40#&1U``QD=/`$C'A_@3````````QH?Q$P``
+M`+D`````NJ`!``!(C8=`$@``B`A(_\!(_\IU]DF-A"3H````28F$).@```!)
+MB80D\````$F-A"3X````28F$)/@```!)B80D``$``$F-A"0(`0``28F$)`@!
+M``!)B80D$`$``$F-A"08`0``28F$)!@!``!)B80D(`$``$F-A"0H`0``28F$
+M)"@!``!)B80D,`$``$F-A"1(`0``28F$)$@!``!)B80D4`$``$F-A"18`0``
+M28F$)%@!``!)B80D8`$``$F-A"0X`0``28F$)#@!``!)B80D0`$``$$/MWPD
+M/$B-1"1>2(E$)#A(C40D7$B)1"0P2(U$)%I(B40D*$B-1"182(E$)"!(C40D
+M5DB)1"082(U$)%5(B40D$$B-1"142(E$)`A(C40D4DB)!"1,C4PD44R-1"1.
+M2(U,)$U(C50D3$B-="1+Z``````/MD0D2T&(1"1&#[9$)$Q!B$0D1P^V1"1-
+M08B$).$````/MT0D5F9!B40D6(M$)%QF08F$)#P2```/MT0D7O_(9D&)A"0^
+M$@``00^W1"0\/8"1``!T"SV`E```#X4C"0``0<9$)$T$0<9$)$,$0<9$)$Y`
+M0<9$)$P`0<:$)-X````)0<9$)$0`28V\)/@(``#H`````$F)A"08"0``N0``
+M``!(#[94)$M(:=*(`0``ZPB("$C_RDC_P$B%TG7S28V\)"`)``#H`````$F)
+MA"1`"0``N0````!(#[94)$U(:=+0````2(72=`J("$C_P$C_RG7V28V\)$@)
+M``#H`````$F)A"1H"0``N0````!(#[94)$Q(:=+(#P``2(72=`J("$C_P$C_
+MRG7V28V\)'`)``#H`````$F)A"20"0``N0````!(#[=4)%9(P>(#=`J("$C_
+MP$C_RG7V28V\)``*``#H`````$F)A"0@"@``28V\)-@)``#H`````$F)A"3X
+M"0``2(G#28V\)$@*``#H`````$F)A"1H"@``2(G"O0````!F.VPD3G-$28V,
+M)`@!``!(B5I@#[9$)%&(0EA(BT$(2(E1"$B)"DB)0@A(B1!(#[9$)%%(C01`
+M2(T<@TB!PJ@```#_Q68[;"1.<L1)C;PD<`H``.@`````28F$))`*``!(B<*]
+M`````&8[;"18<RM)C8PD&`$``,9"$`!(BT$(2(E1"$B)"DB)0@A(B1!(@\(P
+M_\5F.VPD6'+=28V\))@*``#H`````$F)A"2X"@``2(G"O0````"`?"14`'0K
+M28V,)"@!``!(BT$(2(E1"$B)"DB)0@A(B1!(@\(@_\5F#[9$)%1F.>AWW4F-
+MO"3`"@``Z`````!)B80DX`H``$B)PKT`````@'PD50!T+DF-C"1(`0``2(M!
+M"$B)40A(B0I(B4((2(D02('"H````/_%9@^V1"159CGH=]I)C;PDZ`H``.@`
+M````28F$)`@+``!(B<*]`````&8[;"12<R=)C8PD.`$``$B+00A(B5$(2(D*
+M2(E""$B)$$B#PBC_Q68[;"12<N&]`````(!\)$L`=#]-C:PD6`$```^WW4F-
+MO"00"P``Z`````!)B83<,`L``$F+50A)B44(3(DH2(E0"$B)`O_%9@^V1"1+
+M9CGH=\E)C;PD,`\``.@`````28F$)%`/``!)B80D6`\```^W1"169D&)A"1B
+M#P``#[?P28V\)%@/``#H`````$F-O"1H#P``Z`````!)B80DB`\``$F)A"20
+M#P``9@^V1"1+9D&)A"2:#P``#[?P28V\))`/``#H`````$F-O"2@#P``Z```
+M``!)B80DP`\``$F)A"3(#P``9@^V1"1-9D&)A"32#P``#[?P28V\),@/``#H
+M`````$F-O"38#P``Z`````!)B80D^`\``$F)A"0`$```9@^V1"1,9D&)A"0*
+M$```#[?P28V\)``0``#H`````$F-O"00$```Z`````!)B80D,!```$F)A"0X
+M$```9D$/MD0D/F9!B80D0A```$$/MG0D/DF-O"0X$```Z`````!)C;PD2!``
+M`.@`````28F$)&@0``!(#[94)$Q(C132B=;!Y@>!QF!7``"Y`````(GR2(72
+M=`J("$C_P$C_RG7V28N$)&@0``"),$F+E"1H$```#[9$)$R(0@0/ME0D3$F+
+MO"1H$```Z`````"]`````$&`?"0^`'1]#[?%2&G`J````$P!X$R-L*`!``!!
+MB&X(0<9&"0!,B:"@`0``0<9&#@!!QD98`$'&1B@`0<>&H`````````!(C9#0
+M`0``28E6,$F)5CA(C9#H`0``28E62$F)5E!(!0`"``!)B49@28E&:$'&1@H"
+M_\5F00^V1"0^9CGH=X-!QD0D3`"]``````^WQ4+&A"#&"```___%9H/]`W;L
+MO0````"`?"1+``^$D`````^WS4F+E"08"0``2&G!B`$``,9$$$,!28N4)!@)
+M``#&1!!"`$F+E"08"0``QD00>/])BY0D&`D``,9$$&K_28N4)!@)``!FQX00
+MP```````2<>$S$`$````````2(G!20.,)!@)``!(C5$@2(E1($D#A"08"0``
+M2(/`($B)0`C_Q68/MD0D2V8YZ`^'</___V9!QX0DW```````O0````!F9I!F
+M9I`/M\5"QH0@0`@``/__Q6:!_84`=NN]`````(!\)$P`#X3"````#[?528N$
+M)&@)``!(:=+(#P``QD0"6`!)BX0D:`D``,9$`ED`28N$)&@)``!(QT0"$```
+M``!(B=%)`XPD:`D``$B-01A(B4$82(G020.$)&@)``!(@\`82(E`"$B)T4D#
+MC"1H"0``2(U!*$B)02A(B=!)`X0D:`D``$B#P"A(B4`(28N$)&@)``!,B70"
+M"$B)T4D#C"1H"0``2(U!2$B)04A)`Y0D:`D``$B#PDA(B5((_\5F#[9$)$QF
+M.>@/AS[___]!QH0DWP```("]`````(!\)$T`#X2'````#[?528N$)$`)``!(
+M:=+0````9L=$`DX$`$F+A"1`"0``QD0"0@!)BX0D0`D``,9$`D3_28N$)$`)
+M``#&1`)0_TB)T4D#C"1`"0``2(U!*$B)02A(B=!)`X0D0`D``$B#P"A(B4`(
+M28N$)$`)``!,B;0"B````/_%9@^V1"1-9CGH#X=Y____0<:$).````""28VT
+M))@0``!)C;PD<!```.@`````28F$))`0``!)C;0DR!```$F-O"2@$```Z```
+M``!)B80DP!```$F-M"3X$```28V\)-`0``#H`````$F)A"3P$```28VT)"@1
+M``!)C;PD`!$``.@`````28F$)"`1``!)C;0D6!$``$F-O"0P$0``Z`````!)
+MB80D4!$``$F-M"2($0``28V\)&`1``#H`````$F)A"2`$0``38NT)(@1``!)
+MB<6]`````(!\)%0`=$A)C9PD*`$``$B)W^@`````2(G"3(EH$$R)<!A(BT,(
+M2(E3"$B)&DB)0@A(B1!)@<4`"```28'&``@``/_%9@^V1"149CGH=\!)C;0D
+MN!$``$F-O"20$0``Z`````!)B80DL!$``$V+M"2X$0``28G%O0````!F.VPD
+M4G-$28V<)#@!``!(B=_H`````$B)PDR):!!,B7`82(M#"$B)4PA(B1I(B4((
+M2(D028'%C`$``$F!QHP!``#_Q68[;"12<L1(@\1@6UU!7$%=05[#9F9FD&9F
+M9I!F9I!F9I!!5T%6055!5%532(/L"$F)_,9$)`<`2`^V1"0'0@^VE"#&"```
+M@/K_#X2;````#[;"2&G`J````$Z-M""@`0``0;T`````08!^#@!V?$F-;F!-
+MB?=(B>_H`````$B)PTB+10A(B5T(2(DK2(E#"$B)&$B#>S@`=!I(BU,X28NT
+M)-`(``"_!0```.@`````@$M$`DB)VKX"````3(GWZ`````"`>WL`=!A,B>?H
+M`````+\!````Z`````"`>WL`=>A!_\5%.&\.=XO^1"0'@'PD!P,/AC[___],
+MB>?H`````$B#Q`A;74%<05U!7D%?PY!(@^P(2#E^*'5F#[9..(#Y"`^5P(#Y
+M*`^5P@^VP(7"=&B`^:AT8X#YB'1>@/D*#Y7`@/DJ#Y7"#[;`A<)T2X#YJG1&
+M@/F*=$%(C9?H````2(N'Z````$B)<`A(B09(B58(2(FWZ````.L?9F:09F:0
+M2(V'Z````$B+4`A(B7`(2(D&2(E6"$B),N@`````2(/$",-F9F:09F:09F:0
+M9F:02(/L".@`````2(/$",-FD$%455-(B?-(B=5!O`````!F@7XXX0%U"P^V
+M1CJ#Z!$\`78R2(L72(NR&`D``$R-IGB&`0!F@7L@A0!W&4@/MT,@2`^VA!!`
+M"```2&G`B`$``$R-)`;&100%@&4%_H!E`-^Z`````&:!>SCA`742#[9#.O_(
+M/`&X`0````]&T&:0B=#!X`</ME4`@^)_"<*(50`/MH.6````@^`!P>`&@^*_
+M"<*(50!F@7LXX0%U$@^V0SJ#Z!$\`7<'9HE-".L<D/:#E@````%T#DR)Y^@`
+M````9HE%".L$9HE-"`^W10B(0R5F@7LXX0%U+@^V0SK_R#P!=PP/ME,[ZS%F
+M9I!F9I!F@7LXX0%U$`^V0SJ#Z!&Z#P```#P!=A.Z`````$F#?"18`'0&00^V
+M5"1Y@^(/#[9%`(/@\`G0B$4`6UU!7,.02(/L"$B+/^@`````2(/$",-F9F:0
+M9F9FD&9F9I!F9I!,BP</MX<X$@``_\!FB8<X$@``9CN'/!(``'()9L>'.!(`
+M````2`^WCS@2``!(BY<@$0``BP:)!(H/MX<X$@``08F`+`$``,-F9F:09F9F
+MD$&)T4&X`````+H$````2(G(1(@`2/_`2/_*=?6)\H'B_P\``(L!)0#P__\)
+MT(D!#[97#<'B#"7_#_#_"=")`4@/MD<*2-'H@^`!@_@!&<"#X`+_P,'@'8L1
+M@>+___\?"<*)$0^V00.#R!"#X/>(00/V1PH!=!1$B<J#XG_!XA2+`27__P_X
+M"=")`?/#9F9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)
+MB?Q(B?-)B==!O@`````/MD8X/`@/E,(\*`^4P`G0J`%U#(!^.*AT!H!^.(AU
+M#X.+E`````KK+69FD&9FD`^V1C@\"@^4PCPJ#Y3`"="H`74,@'XXJG0&@'XX
+MBG4'@XN4`````F:!>SCA`74A#[9#.H/H$3P!=Q:#BY0````(N`````#I104`
+M`&9FD&:0BT,X)?___P`]X0$0``^%(`$``&:!>R"%``^'H0```$@/MT,@0H"\
+M($`(``#_#X2-````9H-[(']W)$H/MH0@0`@``$F+E"08"0``2&G`B`$``$B+
+M1!!(1`^V:`CK:&:!>R"!`'<I2`^W0R!*#[:$($`(``!)BY0D:`D``$AIP,@/
+M``!(BT00"$0/MF@(ZS=(#[=#($H/MH0@0`@``$F+E"1`"0``2&G`T````$B+
+MA!"(````1`^V:`CK"V9FD&:00;W_____1(GJ#[;"2@^VK"#&"```2&GMJ```
+M`$J-K"6@`0``28N4)&@)``!(C8(XN`\`9H%[((4`=QE(#[=#($H/MH0@0`@`
+M`$AIP,@/``!(C00"]D!=$`^%@@$``,9#)`1!QP<`````N`$```#I#00``&:!
+M>R"%``^'H0```$@/MT,@0H"\($`(``#_#X2-````9H-[(']W)DH/MH0@0`@`
+M`$F+E"08"0``2&G`B`$``$B+1!!(1`^V:`CK:&:09H%[(($`=RE(#[=#($H/
+MMH0@0`@``$F+E"1H"0``2&G`R`\``$B+1!`(1`^V:`CK-4@/MT,@2@^VA"!`
+M"```28N4)$`)``!(:<#0````2(N$$(@```!$#[9H".L)9F:00;W_____NO\`
+M``!F@7L@A0!W#T@/MT,@9D(/MI0@0`@``$2)Z0^VP4H/MJP@Q@@``$AI[:@`
+M``!*C:PEH`$```^WPDAIP(@!``!)B<9-`[0D&`D``&:!>SCA`74*#[9#.O_(
+M/`%V*6:!^O\`=`=!]D9#!'4;QD,D!D''!P````"X`0```.G6`@``9F:09F:0
+M20^V1D"H`70GJ`1T(T$/MD0D1$$Z1"1.<A9!QP<!````N`$```#II0(``&9F
+MD&:0387V#X37````20^V1D"H`0^$R@```*@$#X3"````2(G>3(GWZ`````"$
+MP'45QD,D!$''!P````"X`0```.E>`@``08!^>Q]V$4''!P$```"X`0```.E&
+M`@``]H.6`````70&]D4,`70;]H.6`````74&]D4,`74,@'LD@70&]D4,"'0A
+M00^V]4R)Y^@`````A,!T$4''!P$```"X`0```.G[`0``]H.6`````0^$;@$`
+M`/9%#`$/A&0!``!,B??H`````&:#^!\/AE(!``!!QP<!````N`$```#IP0$`
+M`)#V10H"="N+0S@E____`#WA`1``=!Q!#[9&>T$Z1GIR$4''!P$```"X`0``
+M`.F/`0``BT,X)?___P`]X0$0``^$_````$D/MT9B2(G"2-'J@^(!N0$```"`
+M>SCA#X7?````@'LY`0^%U0````^V0SJ#Z`:#^`D/AZT```")P/\DQ0`````/
+MMLFZ`0```$B)WDR)Y^@`````A,`/A:$```!!QP<"````N`$```#I$`$```^V
+MR;H`````2(G>3(GGZ`````"$P'5Y0<<'`@```+@!````Z>@````/MM*Y`0``
+M`$B)WDR)Y^@`````A,!U44''!P(```"X`0```.G`````#[;2N0````!(B=Y,
+MB>?H`````(3`=2E!QP<"````N`$```#IF````,9#)`1!QP<`````N`$```#I
+M@P```&9FD$F-O"18#P``Z`````"$P'0/0<<'`0```+@!````ZV&0@'LXX751
+M@'LY`75+@'LZ#W5%@'L]`74_9@^V<SS!Y@AF#[9#.P'&#[?V3(GGZ`````!(
+M.4-H#Y7"2(7`#Y3`"="H`702QD,D!$''!P````"X`0```.L)N`````!F9F:0
+M2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:09F:09F:0
+M9F:0N0````"Z#0```$B)\&9FD(@(2/_`2/_*=?8/MD<YB`8/MD<ZB$8!#[9'
+M.XA&`@^V1SR(1@,/MD<]B$8$#[9'/HA&!0^V1S^(1@;VAY8````$=",/MD=`
+MB$8(#[9'08A&"0^V1T*(1@H/MD=#B$8+#[9'1(A&#+@!````PV9F9I"Z````
+M`$&Y`````&9FD&:0N0<```!)8\%$#[8$,&9FD`'21(G`T_BH`705]\(````!
+M=1V!\G<GVP#K%69FD&:0B=`U=R?;`/?"`````0]%T/_)><Q!_\%!@_D'?K.)
+MT,'H$(@'B=#!Z`B(1P&(5P+#05=!5D%505154TB#[%A)B?Y(B?5(BX?P$```
+M2(E$)"!(QT0D$`````!!O`````!(QT0D"`````!!O0````!FQT8R_P](C50D
+M/.@`````A,!T"8M$)#SID`P``(M%."7___\`/>$!$``/A1(!``"_B!,``.@`
+M````9H%]((4`#X><````2`^W12!"@+PP0`@``/\/A(@```!F@WT@?W<B2@^V
+MA#!`"```28N6&`D``$AIP(@!``!(BT002`^V0`CK9&:!?2"!`'<G2`^W12!*
+M#[:$,$`(``!)BY9H"0``2&G`R`\``$B+1!`(#[9`".LU2`^W12!*#[:$,$`(
+M``!)BY9`"0``2&G`T````$B+A!"(````#[9`".L+9F:09F:0N/____\/ML!*
+M#[:$,,8(``!(:="H````2HV,,J`!``!(B4PD&$F+EF@)``!,C:(XN`\`9H%]
+M((4`#X>8`0``2`^W12!*#[:$,$`(``!(:<#(#P``3(TD`NEZ`0``9F:0N?\`
+M``!F@7T@A0!W#T@/MT4@9D(/MHPP0`@``&:!?3CA`74/#[9%.H/H$3P!#X;?
+M````9H%]((4`#X>6````2`^W12!"@+PP0`@``/\/A((```!F@WT@?W<B2@^V
+MA#!`"```28N6&`D``$AIP(@!``!(BT002`^V0`CK7F:!?2"!`'<G2`^W12!*
+M#[:$,$`(``!)BY9H"0``2&G`R`\``$B+1!`(#[9`".LO2`^W12!*#[:$,$`(
+M``!)BY9`"0``2&G`T````$B+A!"(````#[9`".L%N/____\/ML!*#[:$,,8(
+M``!(:=BH````2HV$,Z`!``!(B40D&`^WP4AIP(@!``!)`X88"0``2(E$)!#K
+M(@^WP4AIP-````!)`X9`"0``2(E$)`A(BY"(````2(E4)!AF@7TXX0%U&P^V
+M13J-4.^`^@$/E\+_R#P!#Y?`#[;2A=!T(&:!^?\`=`M(BTPD$/9!0P1U#L9%
+M)`:X`````.GT"0``2(UT)#!,B??H`````$&)QV:)13),B??H`````$B)P[@"
+M````2(7;#X3'"0``2(F=@````$$/M\](:<FP!```2`-,)"!(B<A)*X;P$```
+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
+M@$@!`>L)2(M$)#"`8`'[2(M$)##&0`0-2(M$)#"`8`7^2(M4)#`/MD4E00^V
+MCMX```#3X&8)0@A(BT0D,(!@`1]!#[??2&G;L`0``$B+1"0@QH0#(`0```9,
+MBVPD$$F!Q<P```!,C20#28V\)"$$``!,B>[H`````$F-O"0E!```3(GNZ```
+M``!(BT4X28F$)$0$``!(BT5`28F$)$P$``!!Q@0DD4B+3"00#[:1X@```(/B
+M#TB+3"0@#[9$"P&#X/`)T(A$"P%(BU0D$`^W0C#_P`^VT,'B"`^VQ`G09HE$
+M"P)-A>T/A)(```!!#[?'2&G`L`0``$F+50!(BTPD($B)5`@$ZW=(BUPD&/9#
+M"@%T;$$/M\](BU0D,$B)[DB)W^@`````]H66`````7002(M$)#`/MT`(P>`#
+MB$0D04B-3"1`00^WUTAITK`$``!(`U0D($B)[DB+?"08Z`````#VA98````!
+M=`M(BT0D&(!(#`'K"4B+5"08@&(,_D$/M]=)BX:0"0``2(DLT$2)^F;!Z@4/
+MM])$B?F#X1^X`0```$C3X$$)A):8"0``BT4X)?___P`]X0$0`'4O00^W]TB-
+M3"0LN@````!(BWPD&.@`````BT0D+"7___\?#0```$")1"0LZ:$```!F@7TX
+MX0%U-@^V13J#Z!$\`7<K2(MT)`A,B??H`````$B+3"0(#[914$$/M_=(C4PD
+M+$B+?"08Z`````#K8TB+="003(GWZ`````!(BUPD$`^V4VI!#[?W2(U,)"Q(
+MBWPD&.@`````2`^V0T"H`G0QJ`1T+:@!9I!T)XM$)"PE____'PT```!@B40D
+M+`^V4VJ#XG_!XA0E__\/^`G0B40D+$B-="0L3(GWZ`````"X`P```$B#Q%A;
+M74%<05U!7D%?PV9FD&9FD$B#["!(B5PD"$B);"003(ED)!B)\DB+'XGP9L'H
+M!0^WZ(M$JUQ!B=1!@^0?1(GA2-/XJ`%U.@^W]DB-3"0$N@````#H`````(%,
+M)`0```#@2(UT)`2`9@/W2(G?Z`````"X`0```$2)X4C3X`E$JUQ(BUPD"$B+
+M;"003(MD)!A(@\0@PV9F9I!F9F:09F9FD$B#["A(B5PD"$B);"003(ED)!A,
+MB6PD($F)_$B)]4B+1G!,BV@H9H%^((4`#X>N````2`^W1B"`O#A`"```_P^$
+MFP```&:#?B!_=RE(#[:$.$`(``!(BY<8"0``2&G`B`$``$B+1!!(2`^V0`A(
+M!<`(``#K<&:!?B"!`'<N2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+
+M1!`(2`^V0`A(!<`(``#K.D@/MT8@2`^VA#A`"```2(N70`D``$AIP-````!(
+MBX00B````$@/MD`(2`7`"```ZPEF9F:0N+\)``!)#[9<!`9(:=NH````2HV<
+M(Z`!``!(@WUX`'0/2(MU>$R)Y^@`````9F:02(GN3(GGZ`````!,B>Y(B=]!
+M_Y6@````2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9F9I!F9F:09F9FD&9F
+MD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?9)B?U,BS](
+MC5](2(G?Z`````!)B<1)@^PX3(G_Z`````!(B<5)C40D.$B+4PA(B4,(28E<
+M)#A(B5`(2(D"N`$```!(A>UT>4B-?5C&13CAQD4Y`<9%.A"`33L!28N&H```
+M`$B)16A(BT5P3(EP*$F-AI````!(B450QD4ES&9!#[9$)%MFB44@28M%`$B)
+M12C'1320````3(EU2$C'A:``````````O@````#H`````$B)[DR)_^@`````
+MN`````!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!F
+M9F:02(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($B)\TB)_4R+;TA-BV4`
+M#[=.,HG.9L'N!0^WQD&+1(1<@^$?2-/XJ`$/A68#``!)BQ0D#[?&C02%``,`
+M`(F"<`$``$F+!"2+@'0!``")!0````")PL9#)"&+0S@E____`#WA`0\`=2*^
+M`````$B)W^@`````N@````!(B=Y,B>?H`````.D+`P``B=`/MTLR@^$?2-/X
+MJ`%T&[X!````2(G?Z`````!,B>?H`````&9FD&9FD`^VA>````"#^`0/A]`"
+M``")P/\DQ0````#&A>`````!N@$```!(B=Y,B>_H`````.FK`@``QH7@````
+M`KH(````2(G>3(GOZ`````#ICP(``,:%X`````-(B>J^(0```$R)[^@`````
+M2(-]4`!T(`^V57E(BW500;@`````N0$```!,B>_H`````.E1`@``00^V=0VZ
+M`````$R)Y^@`````Z3H"``#&A>`````$2(-]4`!T,$B)ZKXA````3(GOZ```
+M```/ME5Y2(MU4$&X`````+D"````3(GOZ`````#I_`$``+H`````OB$```!,
+MB>_H`````$$/MG4-N@$```!,B>?H`````.G3`0``2(GJO@8```!,B>_H````
+M`$B#?3@`=!9(BT4XBT@$C5$!B5`$@_D%#X:F`0``QD5#`<9%0@"`?7L`=!A,
+MB>?H`````+\!````Z`````"`?7L`=>A(@WU0`'082(M5&$B+11!(B5`(2(D"
+M2(M%4/Y(6.L92(-]6`!T$DB+55A(#[9%>4C'1,)8`````$B+50A(BT4`2(E0
+M"$B)`D'^30Y(@[T8`0```'08#[:U!0$``$B+O1@!``"Z`0```.@`````2(-]
+M4`!T$@^V=7E(BWU0N@$```#H`````$B#?3@`#X2"````2(M%.$C'0&``````
+M0?Z$).\3``!,B>?H`````$B+13@/MG`!N@$```!,B>?H`````$B+13@/ME`"
+M#[9P`4C'QP````"X`````.@`````2(M5.$F+M"30"```OP$```#H`````$B+
+M53A)B[0DT`@``+\&````Z`````!(QT4X`````$B)[DR)Y^@`````08!]"?]T
+M6T&^`````$&`?0X`=CE)C5U@2(G?Z`````!(B<5(BT,(2(EK"$B)70!(B44(
+M2(DH@'U"_W4+0?_&13AU#G?3ZP9%.'4.=Q5!QD4)_TR)[DR)Y^@`````9F:0
+M9I!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(@\0HPV9FD$B#[#A(B5PD"$B)
+M;"003(ED)!A,B6PD($R)="0H3(E\)#!(B?-(B?U,BV=(38LL)$&_`````$'V
+M1"0,$'0'QH?@````!@^VA>````"#^`$/A(L```"#^`%_"X7`=!YFD.G[`P``
+M@_@$#X2B````@_@&#X3Y`0``Z>0#``#&A>`````!2(GN3(GOZ`````#&0R2!
+M08!,)`P(2(.[@`````!T#TB-LX````!,B>_H`````$F-E>@```!)BX7H````
+M2(E8"$B)`TB)4PA)B9WH````3(GOZ`````#I@@,``&:008!D)`SW_H7C````
+MQH7@`````,9#)`)(B=Y,B>_H`````$R)[^@`````Z5$#``"0QH7C`````$B#
+M?3@`#X1.`0``2(M%.(M(!(U1`8E0!(/Y!0^'.`$``$&`9"0,]TB#NX``````
+M=`](C;.`````3(GOZ`````!)C97H````28N%Z````$B)6`A(B0-(B5,(28F=
+MZ````$&`3"0,$$B#?5``="`/ME5Y2(MU4$&X`````+D"````3(GGZ`````#I
+MO`(``,9$)`<`08!\)`X`#X:G````38UT)&!F9I!F9I!,B??H`````$B)PTF+
+M1@A)B5X(3(DS2(E#"$B)&$B#>S@`=!Q(BU,X28NUT`@``+\%````Z`````"`
+M2T0"9F:02(G:O@8```!,B>?H`````(![>P!T,D2)^$'_QSU_EI@`=R5,B>_H
+M`````+\!````Z`````"`>WL`=`U$B?A!_\<]?Y:8`';;_D0D!P^V1"0'03A$
+M)`X/AV3____&14(#2(GN3(GOZ`````#I\`$``$F-E>@```!)BX7H````2(E8
+M"$B)`TB)4PA)B9WH````2(-].`!T%DB+13B+2`2-40&)4`2#^04/AI8!``!(
+MQ\<`````N`````#H`````$B)ZKX&````3(GGZ`````!!_DPD#DB+50A(BT4`
+M2(E0"$B)`DB#?5``=!A(BT50_DA82(M5&$B+11!(B5`(2(D"ZQ](@WU8`'08
+M2(M56$@/MD5Y2,=$PE@`````9F:09F:0@'U[`'0R1(GX0?_'/7^6F`!W)4R)
+M[^@`````OP$```#H`````(!]>P!T#42)^$'_QSU_EI@`=MM(BU4(2(M%`$B)
+M4`A(B0)(@[T8`0```'0?#[:U!0$``$B+O1@!``"Z`0```.@`````9F9FD&9F
+MD$B#?5``=!D/MG5Y2(M]4+H!````Z`````!F9F:09F:02(-].`!T?TB+13A(
+MQT!@`````$'^A>\3``!,B>_H`````$B+13@/MG`!N@$```!,B>_H`````$B+
+M13@/ME`"#[9P`4C'QP````"X`````.@`````2(M5.$F+M=`(``"_`0```.@`
+M````2(M5.$F+M=`(``"_!@```.@`````2,=%.`````!(B>Y,B>_H`````.L0
+M2(GJO@(```!,B>?H`````$R)[^@`````9F:09I!(BUPD"$B+;"003(MD)!A,
+MBVPD($R+="0H3(M\)#!(@\0XPV9F9I!F9I!F9I!F9I!!5D%505154TB)\TF)
+M_$R+KX@```!)BVT`0?9%#!!T!,9'409!#[9$)%&#^`$/A(D```"#^`%_#87`
+M="!F9F:0Z7L#``"#^`0/A)H```"#^`4/A)<!``#I9`,``$'&1"11`4R)YDB)
+M[^@`````QD,D@4&`30P(2(.[@`````!T#TB-LX````!(B>_H`````$B-E>@`
+M``!(BX7H````2(E8"$B)`TB)4PA(B9WH````2(GOZ`````#I!`,``$&`90SW
+M0?Y$)%)!QD0D40#&0R0"2(G>2(GOZ`````!(B>_H`````.G8`@``08!E#/=(
+M@[N``````'0/2(VS@````$B)[^@`````2(V%Z````$B+E>@```!(B5H(2(D3
+M2(E#"$B)G>@```"Z`````+X&````3(GOZ`````!!#[9U#;H!````2(GOZ```
+M``!!O@````!!@'T.``^&?````$V-96"03(GGZ`````!(B<-)BT0D"$F)7"0(
+M3(DC2(E#"$B)&$B#>S@`=!I(BU,X2(NUT`@``+\%````Z`````"`2T0"D$B)
+MVKX&````3(GOZ`````"`>WL`=!A(B>_H`````+\!````Z`````"`>WL`=>A!
+M_\9%.'4.=XE!QD4)`$&`30P03(GOZ`````#IT@$``$&`90SW2(.[@`````!T
+M#TB-LX````!(B>_H`````$B-A>@```!(BY7H````2(E:"$B)$TB)0PA(B9WH
+M````28U%8$B)PDDY16`/A.$```!)B<9(B=?H`````$B)PTB#>#@`=!Y(BU`X
+M2(NUT`@``+\%````Z`````"`2T0"9F:09I!(B=J^!@```$R)[^@`````@'M[
+M`'082(GOZ`````"_`0```.@`````@'M[`'7H2(-[.`!T84B+0SA(QT!@````
+M`/Z%[Q,``$B)[^@`````2(M#.`^V<`&Z`0```$B)[^@`````2(M3.$B+M=`(
+M``"_`0```.@`````2(M3.$B+M=`(``"_!@```.@`````2,=#.`````!(B=Y(
+MB>_H`````$R)\DTY=6`/A2+___^Z`````+X&````3(GOZ`````!,B>9(B>_H
+M`````$G'14``````2(M%`(N06`$``(D5`````(72=`I(BT4`B9!8`0``0?9%
+M"@%T6$&^`````(!]0P!V&TD/ME4-2(G01(GQ2-/XJ`%U"4'_QD0X=4-WZD$/
+MMO9(B>_H`````$R)[DB)[^@`````1(GR#[;"2&O`:$C'A"A($@```````&9F
+M9I!;74%<05U!7L-F9F:09F:005=!5D%505154TB#[`A)B?Q,BW=(28L>2(G^
+M2(G?Z`````!!@+PDXP````%V"4'&A"3@````!$F-;"0@23EL)"`/A#D"``!(
+MB>_H`````$F)QTF+1"0@3(EX"$F)!TF);PA-B7PD($&]`````.G6`0``00^W
+MU4B+@Y`)``!(BRS02(7M#X2[`0``00^W1"0P9CM%(`^%JP$```^WBSH2``!(
+MBX-0$0``.0AT5&9F9I#_P0^W@SX2```YR+@`````#T;(C5$!2(N#4!$``(L$
+MD*D```@`=1XE_P\``&9!.<5U$TDY[W492(G?Z`````"0Z8L!``!(BX-0$0``
+M.0AUL$&`?E@`#X4Z`0``9H%]((4`#X<N`0``2`^W12"`O!A`"```_P^$&P$`
+M`$V%Y`^$``$``$D/MD0D0*@!#X3R````J`0/A.H```!(BQ,/MT4R9L'H!0^W
+MP(T$A0`#``")@G`!``!(BP,/MTTR@^$?N@$```!(B=9(T^:)L'0!``!(#[=-
+M,DB+@Y`)``!(QP3(``````^W33*)R&;!Z`4/M\"#X1](B=9(T^9(B?'WT2&,
+M@Y@)```/MTTRB<AFP>@%#[?`@^$?2-/B]](A5(-<3#G]=$E(BU4(2(M%`$B)
+M4`A(B0)(@[V``````'0/2(VU@````$B)W^@`````2(V3Z````$B+@^@```!(
+MB6@(2(E%`$B)50A(B:OH````#[=U,DB-NU@/``#H`````$'^3"1[ZQ)!]D8*
+M`G0+2(GN3(GGZ`````!!_\5F1#EK6`^''_[__TV%Y'0H20^V1"1`J`%T'J@$
+M=!I)BU<(28L'2(E0"$B)`DR)_DR)Y^@`````D$B#Q`A;74%<05U!7D%?PY!!
+M5D%505154TF)_$R+MX@```!)BQY(B?Y(B=_H`````$&`?"12`78&0<9$)%$$
+M28UL)"A).6PD*`^$\@$``$B)[^@`````28G%28M$)"A,B6@(28E%`$F);0A-
+MB6PD*+T`````Z9L!``!F9F:09F:0#[?52(N#D`D``$B+--!(A?8/A'L!``!!
+M#[=$)$!F.T8@#X5K`0``#[>+.A(``$B+@U`1```Y"'179F9FD&9FD/_!#[>#
+M/A(``#G(N``````/1LB-40%(BX-0$0``BP20J0``"`!U'B7_#P``9CG%=11)
+M.?5U&DB)W^@`````9I#I.P$``$B+@U`1```Y"'6P9H%^((4`#X?V````2`^W
+M1B"`O!A`"```_P^$XP```$&`?E@`#X78````0?9&"@$/A,T```!(BQ,/MT8R
+M9L'H!0^WP(T$A0`#``")@G`!``!(BP,/MTXR@^$?N@$```!(B==(T^>)N'0!
+M``!(#[=.,DB+@Y`)``!(QP3(``````^W3C*)R&;!Z`4/M\"#X1](B==(T^=(
+MB?GWT2&,@Y@)```/MTXRB<AFP>@%#[?`@^$?2-/B]](A5(-<3#GN="Y(BU8(
+M2(L&2(E0"$B)`DB-D^@```!(BX/H````2(EP"$B)!DB)5@A(B;/H````#[=V
+M,DB-NU@/``#H`````$'^3"1%_\5F.6M8#X=B_O__0?9&"@%T&TF+50A)BT4`
+M2(E0"$B)`DR)[DR)Y^@`````D%M=05Q!74%>PV9F9I!F9I!!5T%6055!5%53
+M2(/L"$B)_4&^`````$B-A^@```!(B<)(.8?H````#X33`0``28G'28G%28G4
+M2(G7Z`````!(B<-(@WAP`'4O2(GOZ`````!(B4-P2(7`=1Y(BX7H````2(E8
+M"$B)`TR)8PA(B9WH````Z8D!``"+0S@E____`#WA`1``#X3L````9H%[((``
+M#X3@````9@^V0R!FB4,@9H/X?W8:9H%[..$!=2D/MD,Z@^@1/`%W'F9F9I!F
+M9I!F@7L@A0!W#T@/MT,@@+PH0`@``/]U&<9#)`9(B=Y(B>_H`````.D&`0``
+M9F:09I!F@7LXX0%U"P^V0SJ#Z!$\`78O2(N5&`D``$R-LGB&`0!F@7L@A0!W
+M&4@/MT,@2`^VA"A`"```2&G`B`$``$R--`)F@7LXX0%U"@^V0SK_R#P!=C-F
+M@7L@@`!T*V:!>SCA`74+#[9#.H/H$3P!=AA!]D9#!'41QD,D!DB)WDB)[^@`
+M````ZWI(B=Y(B>_H`````(/X`G<+@_@!<R9F9F:0ZQ"#^`-T3V9FD&9FD&9F
+MD.M/2(G>2(GOZ`````!F9I#K/TB#NX``````=`](C;.`````2(GOZ`````!(
+MBX7H````2(E8"$B)`TR)>PA(B9WH````ZQM(B=Y(B>_H`````$R)ZDPYK>@`
+M```/A3/^__](@\0(6UU!7$%=05Y!7\-!5T%6055!5%532(/L2$F)_4"(="0P
+M2`^V5"0P2&O2:$@!^DR+LD@2``!(Q\#^____B?%(T\`B@FD2``"(1"0O3(L_
+MQT0D*`````!`@/X#=@U!QX=P`0``Q`$``.L+0<>'<`$``*@!``!!BX=T`0``
+MB04`````#[9,)#"#X0.[!P```-/CB<4)W4&)KW0!``"_Z`,``.@`````]],A
+MW4&)KW0!``"`?"0P`W8@#[9$)#!(P>`")?P#``!"BX0XT`$``(D%`````(G%
+MZQX/MD0D,$C!X`(E_`,``$*+A#C0`0``B04`````B<6#S0B`?"0P`W88#[9$
+M)#!(P>`")?P#``!"B:PXT`$``.L6#[9$)#!(P>`")?P#``!"B:PXT`$``(!\
+M)#`#=AP/MD0D,$C!X`,E^`<``$+'A#@``@``.````.L:#[9$)#!(P>`#)?@'
+M``!"QX0X``(``#@```"_$"<``.@`````@'PD,`-V'`^V1"0P2,'@`R7X!P``
+M0L>$.`0"````````ZQH/MD0D,$C!X`,E^`<``$+'A#@$`@```````$V%]@^$
+M[@<``$&\`````$&`?4,`=BUF9F:020^V1@U!#[;,2-/XJ`%T$+H!````B<Y,
+MB>_H`````)!!_\1%.&5#=]=!]D8*`71B3(GV3(GOZ``````/MG0D,$R)[^@`
+M````2`^V1"0P2&O`:$J-E"A@$@``BT(,J0``$`!T""7__^__B4(,3(GV3(GO
+MZ`````!(#[9$)#!(:\!H2L>$*$@2````````Z4L'``!!@'Y8`'0328N]:!``
+M`$R)]N@`````0?Y.6(!\)"\`#X2I`@``2,=$)"``````QD0D'P`/MG0D,$R)
+M[^@`````2`^V1"0P2&O`:$J-E"A@$@``BT(,J0``$`!T""7__^__B4(,#[9$
+M)"]!B$8-0;P`````08!]0P`/AI,!``!(#[94)"](B50D$`^VR(E,)`Q!#[;,
+M2(M$)!!(T_BH`0^$8`$``$2)X@^VPDAKP&@/ME0D+T*(E"AI$@``08#\`W87
+MC03-`````$B80L>$.``"```X````ZQE*C03E`````"7X!P``0L>$.``"```X
+M````OQ`G``#H`````$&`_`-V&TJ-!.4`````)?@'``"+3"0,0HF,.`0"``#K
+M&4J-!.4`````)?@'``"+5"0,0HF4.`0"``!!@/P#=@U!QX=P`0``Q`$``.L+
+M0<>'<`$``*@!``!!BX=T`0``B04`````1(GA@^$#NP<```#3XXG%"=U!B:]T
+M`0``O^@#``#H`````/?3(=U!B:]T`0``08#\`W8?2HT$I0`````E_`,``$*+
+MA#C0`0``B04`````B<7K'4J-!*4`````)?P#``!"BX0XT`$``(D%`````(G%
+M@\T(08#\`W872HT$I0`````E_`,``$*)K#C0`0``ZQ5*C02E`````"7\`P``
+M0HFL.-`!``!!_\1%.&5##X=__O__28U&2$B)PDDY1DAT-DB)TTB)U^@`````
+M2(U(R$B)3"0@2(M3"$B)0PA(B1A(B5`(2(D"2(-XV`!T"4B)VDDY7DAURDB#
+M?"0@`'1%2(M$)"#&0%H`0;P`````08!]0P!V+TD/MD8-1(GA2-/XJ`%T%T@/
+MMD0D'TB+5"0@1(AD$'#^0EK^1"0?0?_$13AE0W?1N@````"^@0```$R)]^@`
+M````2`^V1"0P2&O`:$K'A"A($@```````.EH`P``N@````"^!@```$R)]^@`
+M````#[9T)#!,B>_H`````$@/MD0D,$AKP&A*C90H8!(``(M"#*D``!``=`@E
+M___O_XE"#$F-1DA(B<)).49(#X3L`0``2(D$)$B)U^@`````3(U@R$B-4!!(
+M.5`0#X2Q`0``28U\)$CH`````$B-6/"`>T$-=1I(C;!(`0``2(M#2$B+`$B+
+M>"CH`````&9FD$B+4PA(BP-(B5`(2(D"@'M[`'083(GOZ`````"_`0```.@`
+M````@'M[`'7H2(-[.``/A"@!``!(BT,X2,=`8`````"`>WL`#X29````O0``
+M``!F08-]6``/A(@```!FD$ACU4F+A9`)``!(BS302(7V=&0/MT8@9CM#,'5:
+M9CV%`'=4#[?`0H"\*$`(``#_=$9)BU4`#[=&,F;!Z`4/M\"-!(4``P``B8)P
+M`0``28M%``^W3C*#X1^Z`0```$C3XHF0=`$``,9&)"&Z`````$R)[^@`````
+M_\5!#[=%6#GH#X]Z____]D-$!'4D0?Z%[Q,``$R)[^@`````2(M#.`^V<`&Z
+M`0```$R)[^@`````2(M#.`^V4`(/MG`!2,?'`````+@`````Z`````!(BU,X
+M28NUT`@``+\!````Z`````!(BU,X28NUT`@``+\&````Z`````!(QT,X````
+M`$'^3@Y!_DPD6$B)WDR)[^@`````28U$)$A).40D2`^%3_[__T'^3BA,B>9,
+MB>_H`````$B+%"1).59(#X48_O__28U&8$B)PDDY1F`/A/8```!(B<5(B=?H
+M`````$B)PX!X>P!T-HM$)"C_1"0H/7^6F`!W)TR)[^@`````OP$```#H````
+M`(![>P!T#XM$)"C_1"0H/7^6F`!VV4B#>S@`#X2%````2(M#.$C'0&``````
+M]D-$!'4D0?Z%[Q,``$R)[^@`````2(M#.`^V<`&Z`0```$R)[^@`````2(M#
+M.`^V4`(/MG`!2,?'`````+@`````Z`````!(BU,X28NUT`@``+\!````Z```
+M``!(BU,X28NUT`@``+\&````Z`````!(QT,X`````$'^3@Y(B=Y,B>_H````
+M`$B)ZDDY;F`/A0W___],B?9,B>_H`````$@/MD0D,$AKP&A*QX0H2!(`````
+M``!!O`````!!@'U#``^&!`$``$P/MG0D+Y!,B?)$B>%(T_I$.F0D,`^4P`G0
+MJ`$/A-4```!!@/P#=@U!QX=P`0``Q`$``.L+0<>'<`$``*@!``!!BX=T`0``
+MB04`````1(GA@^$#C0Q)NP<```#3XXG%"=U!B:]T`0``O^@#``#H`````/?3
+M(=U!B:]T`0``08#\`W8?2HT$I0`````E_`,``$*+A#C0`0``B04`````B<7K
+M'4J-!*4`````)?P#``!"BX0XT`$``(D%`````(G%@\T(08#\`W872HT$I0``
+M```E_`,``$*)K#C0`0``ZQA*C02E`````"7\`P``0HFL.-`!``!F9I!!_\1%
+M.&5##X<#____2(/$2%M=05Q!74%>05_#9F9FD$B#[`A,BP>Z`````$&`>$,`
+M=AP/ML)(:\!H2HV$`$`2``!(.?AT"/_"03A00W?D#[;"2&O`:$P!P$B+L$@2
+M``!(A?9T:_9&"@)T94@%0!(``$@Y1B!U68!^6`!T*/Y&6.M._D9800^VB;L`
+M``!)B[AH$```2<?``````$R)RN@`````ZRM(BU9(3(U*R$B-1DA(.<)T&DB)
+MPDF#>1``=,))BT$X3(U(R$@YT'7L9F:02(/$",-F9F:09F9FD&9FD$%50515
+M4TB#[`A!B?1)B?V[`````(GR#[;"2&O`:$B-%#A(BZI($@``2(7M#X2!`0``
+M2,?`_O___XGQ2-/`A$4-#X5L`0``2(U%2$@Y14AT$4B-ND`2``#H`````.G^
+M`@``0;P`````@'T.``^&[@(``$B-76!(B=_H`````$B)P4B+0PA(B4L(2(D9
+M2(E!"$B)"(!Y00`/A00!``!(#[=!,$F#O,5`!````'4+2(-Y.``/A-,```!(
+M#[=!,$F+A,5`!```2(.X@``````/A*$```#&@>``````2`^V04"H`G0MJ`1T
+M*:@!="7&04(%QD%#!`^V47E(BW%02(MY2.@`````Z9@```!F9F:09F:02`^V
+M04"H`G4GJ`1F9I!FD'0>J`%T&L9!0@/&04,$2(G.3(GOZ`````#K9F9FD&:0
+M2`^V04"H`G18J`1F9I!FD'1/J`%U2\9!0P;&04(%9L>!P```````2(G.3(GO
+MZ`````#K+4B+43A)B[70"```OP0```#H`````.L62`^W43!)B[70"```OP(`
+M``#H`````$'_Q$0X90X/A\C^___IK0$``&:!^_,!=V=*C02E`````$B)Q8'E
+M_`,``&9FD&:0OQ`G``#H`````$&`_`-V($F+10"+A"C0`0``B04`````J0``
+M$`!U*>L>9F:09F:028M%`(N$*-`!``")!0````"I```0`'4)_\-F@?OS`7:O
+M00^V]$R)[^@`````3(GOZ`````!$B>(/ML)(:\!H2HNL*$@2``!(A>T/A!`!
+M``"[`````$&`?4,`=BQF9F:02`^V10T/MLM(T_BH`701N@````")SDR)[^@`
+M````9I#_PT$X74-WV$2)X0^VP4AKP&A*C80H0!(``$B)12!(C45(2#E%2'4.
+M2(U%8$@Y16`/A(8```"^`````$&\`````$B-14A(B<)(.45(=#-FD$B)TTB)
+MU^@`````2(UPR$B+4PA(B4,(2(D82(E0"$B)`DB#>-@`=`E(B=I(.5U(=<](
+MA?9T6L9&6@"Y`````$&`?4,`=DI(#[9%#4C3^*@!=!!$B>(/ML*(3#!P_D9:
+M0?_$_\%!.$U#=]SK)/9%"@%T#4B)[DR)[^@`````ZQ&^`````$B)[^@`````
+M9F9FD$B#Q`A;74%<05W#9F:09I!(@^P(2(GX2(L_9L=`3B``2(G&Z`````!(
+M@\0(PV9FD%-(BP]$BT<PNP````"`>4,`=AL/ML-(:\!H2(V$"$`2``!(.?AT
+M!__#.%E#=^6`^P-V+4B-!)T`````)?P#``!(BQ&+A`+0`0``B04`````J0``
+M$`!U+>L[9F9FD&9FD$B-!)T`````)?P#``!(BQ&+A`+0`0``B04`````J0``
+M$`!T$`^V\T2)PDB)S^@`````ZPL/MO-(B<_H`````%O#9F9FD&9F9I!F9F:0
+M9F:02(N'P!```(L`B04`````2(N'P!```(M`!(D%`````$B+A\`0``"+0`B)
+M!0````!(BX?`$```BT`,B04`````PT%7059!54%455-(@^P8B70D%$F)_$&^
+M`````(!_0P`/ADD(``"+="0400^VUHU*"$B)\$C3^*@!=1&-2A!(B?!(T_BH
+M`0^$%0@``$&`_@-V)TJ-!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````*D`
+M``@`=2?K0TJ-!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````*D```@`=!Y,
+MB>?H`````$2)\@^VPDAKP&A"@8P@<!(`````"`!)BS0D1(GQ08#^`W8H2HT$
+M]0`````E^`<``(N$,(`!``")!0````")PH'B```!`.LF9F9FD$B-!,T`````
+M)?@'``"+A#"``0``B04`````B<*!X@```0"%TG11@/D#=AI(C03-`````"7X
+M!P``QX0P@`$``````0#K&$B-!,T`````)?@'``#'A#"``0`````!`(72=!9$
+MB?$/ML%(:\!H0H&,('`2``````$`08!\)%$!#X5M!@``08#^`W8G2HT$]0``
+M```E^`<``$F+%"2+A`*``0``B04`````J`%U*^DJ`0``2HT$]0`````E^`<`
+M`$F+%"2+A`*``0``B04`````J`$/A`0!``!$B?(/ML)(:\!H2HT<($B-LW@2
+M``!)BWPD*.@`````2(.[2!(````/A($```!,BZM($@``0;\`````08!]#@!V
+M9DF-;6!F9I!FD$B)[^@`````2(G#2(M%"$B)70A(B2M(B4,(2(D8]D-$`G4Q
+M2(-[.`!T&DB+4SA)B[0DT`@``+\%````Z`````"`2T0"2(G:O@8```!,B>_H
+M`````$'_QT4X?0YWH[H@H0<`ZR!!#[;VN@$```!,B>?H`````+^@A@$`Z```
+M``"Z`"TQ`42)\0^VP4AKP&A,`>!(C;!X$@``B9!X$@``2,=&$`````!(!4`2
+M``!(B48828M\)"CH`````$&`_@-V($J-!/4`````)?@'``!)BQ0DBX0"@`$`
+M`(D%`````.L>2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````08#^`W8L
+M2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````J8````!U,.G"````9I!*
+MC03U`````"7X!P``28L4)(N$`H`!``")!0````"I@`````^$EP```$&`_@-V
+M(DJ-!/4`````)?@'``!)BQ0DBX0"A`$``(D%`````(G&ZR!*C03U`````"7X
+M!P``28L4)(N$`H0!``")!0````")QD&`_@-V(DJ-!/4`````)?@'``!)BPPD
+MB?*!R@```0")E`&$`0``ZR=*C03U`````"7X!P``28L,)(GR@<H```$`B90!
+MA`$``&9F9I!F9I!!@/X#=BI*C03U`````"7X!P``28L4)(N$`H`!``")!0``
+M``"I```$`'4NZ48"``!*C03U`````"7X!P``28L4)(N$`H`!``")!0````"I
+M```$``^$'0(``$&`_@-V(DJ-!/4`````)?@'``!)BQ0DBX0"@`$``(D%````
+M`(G&ZR!*C03U`````"7X!P``28L4)(N$`H`!``")!0````")QH'.```$`$&`
+M_@-V&DJ-!/4`````)?@'``!)BQ0DB;0"@`$``.L82HT$]0`````E^`<``$F+
+M%"2)M`*``0``1(GR#[;"2&O`:$J#O"!($@````^%B````$&`_@-V(DJ-!/4`
+M````)?@'``!)BQ0DBX0"@`$``(D%`````(G!ZR!*C03U`````"7X!P``28L4
+M)(N$`H`!``")!0````")P4&`_@-V'4J-!/4`````)?@'``!)BQ0DB8P"@`$`
+M`.D+`P``2HT$]0`````E^`<``$F+%"2)C`*``0``Z>X"``!$B?$/ML%(:\!H
+M3HNL($@2``!)@WU```^$V0```$F+14!(#[=03O;&`0^%QP```$B)Q?;"`@^$
+MM0```$B-L)````!)BWPD*.@`````0;X`````@'T[`'9I1(GR#[;"2(M<Q5A(
+MA=MT4$B#>S@`=!I(BU,X28NT)-`(``"_!0```.@`````@$M$`DB)VKX&````
+M3(GOZ`````"`>WL`=!F03(GGZ`````"_`0```.@`````@'M[`'7H0?_&1#AU
+M.W>7QX60````(*$'`$C'A:``````````2(FMJ````$B-M9````!)BWPD*.@`
+M````ZP9F@4A.@`!!@/X#=BA*C03U`````"7X!P``28L4)(N$`H`!``")!0``
+M``#VQ`%U+.D\`0``2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````]L0!
+M#X05`0``08#^`W8G2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````J`%T
+M*^GH````2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````J`$/A<(```!$
+MB?%$#[;I36OM:$^-K"5`$@``28-]"``/A*0```!)BT4(2(E$)`A)C74X28M\
+M)"CH`````$&_`````$B+5"0(@'H.`'932(G52(/%8$B)[^@`````2(G#2(M%
+M"$B)70A(B2M(B4,(2(D82(-[.`!T&DB+4SA)B[0DT`@``+\%````Z`````"`
+M2T0"0?_'2(M,)`A$.'D.=[1!QT4X@(0>`$G'14@`````38EM4$F-=3A)BWPD
+M*.@`````9F9FD&9FD$&`_@-V(DJ-!/4`````)?@'``!)BQ0DBX0"@`$``(D%
+M`````(G!ZR!*C03U`````"7X!P``28L4)(N$`H`!``")!0````")P4&`_@-V
+M&DJ-!/4`````)?@'``!)BQ0DB8P"@`$``.L82HT$]0`````E^`<``$F+%"2)
+MC`*``0``0?_&13AT)$,/A[?W__](@\086UU!7$%=05Y!7\-F9I!!5T%6055!
+M5%532(/L&$B)_4F)]4B+EQ@)``!,C:)XA@$`9H%^((4`=QE(#[=&($@/MH0X
+M0`@``$AIP(@!``!,C20"00^V1"1JP>`(2)A(BY7`$```BX0"0`@``(D%````
+M`$&)QD'![A!!B<=!P>\800^V1"1JP>`(2)A(BY7`$```BX0"1`@``(D%````
+M`(A$)!!(C70D$(G"P>H(B%8!P>@0B$8"00^V1"1JP>`(2)A(BY7`$```BX0"
+M2`@``(D%`````(A&`XG"P>H(B%8$P>@0B$8%QD8&`,9&!P"+3"0000^VUT$/
+MMMY$BT8$B=Y(Q\<`````N`````#H`````$6$]@^5P(/S`878=!)!QD4D`+@`
+M````Z;,"``!F9I!!@'TD@74I00^VUT$/MO9(C4PD$$R)[^@`````0<9%)`*X
+M`````.F%`@``9F:09I!!BT4X)?___P`]X0$.`'400<9%)"&X`````.EA`@``
+MD$'VA98````!=19!]L8!=!!!@'PD0O\/A2<"``!F9F:03(GF2(GOZ`````!,
+MB>9(B>_H`````$B+50!!#[=%,F;!Z`4/M\"-!(4``P``B8)P`0``2(M%`$$/
+MMTTR@^$?N@$```!(B=-(T^.)F'0!``!)#[=-,DB+A9`)``!(QP3(`````$$/
+MMTTRB<AFP>@%#[?`@^$?2(G32-/C2(G9]]$AC(68"0``00^W33*)R&;!Z`4/
+MM\"#X1](T^+WTB%4A5Q)BU4(28M%`$B)4`A(B0)!#[=U,DB-O5@/``#H````
+M`$'^3"1[0<9%)(%)@[V``````'0/28VU@````$B)[^@`````28U$)"!(B<))
+M.40D(`^$!@$``$&^`0```$B-A>@```!(B40D"$F)UV9F9I!(B=?H`````$B)
+MPTB+50`/MT`R9L'H!0^WP(T$A0`#``")@G`!``!(BT4`#[=+,H/A'TR)\DC3
+MXHF0=`$``$@/MU,R2(N%D`D``$C'!-``````#[=+,HG(9L'H!0^WP(/A'TR)
+M\DC3XDB)T??1(8R%F`D```^W2S*)R&;!Z`4/M\"#X1],B?)(T^)(B='WT2%,
+MA5P/MW,R2(V]6`\``.@`````0?Y,)'M(@[N``````'0/2(VS@````$B)[^@`
+M````2(N%Z````$B)6`A(B0-(BT0D"$B)0PA(B9WH````3(GZ33E\)"`/A1/_
+M__]!@:64````___^_T'&A"3@````!$R)[DR)Y^@`````N`$```#K'4$/MM=!
+M#[;V2(U,)!!,B>_H`````+@`````9F:02(/$&%M=05Q!74%>05_#D$B#[$A(
+MB5PD&$B);"0@3(ED)"A,B6PD,$R)="0X3(E\)$!(B50D$(GU2(L?3(NS\!``
+M`$&]`````$B%T@^$!0,```^WUDAIPK`$``!"]D0P(0)T$4B+@Y`)``!(BP30
+MQD`D`NL2#[?&2(N3D`D``$B+!,+&0"0A#[?%2(N3D`D``$B+%,*+0C@E____
+M`#WA`1``#X2X`0``N/____]F@7H@A0!W#4@/MT(@#[:$&$`(```\_W4:#[?%
+M2(N3D`D``$B+!,+&0"0&Z3,)``!F9I`/ML!(:<"(`0``28G%3`.K&`D``(!\
+M)!,`>6])#[9%0*@"="RH!'0HJ`%T)$B+`XN`6`$``(D%`````(G"A<!T#TB+
+M`XF06`$``&9FD&9FD$B+`XN`4`$``(D%`````(G"@\H"2(L#B9!0`0``2(L#
+MBX`$`0``B04`````B<*`SO](BP.)D`0!```/M\5(:<"P!```9D+W1#`@`@@/
+MA-X```!!N`````"^`````(![0P!V?$&Y`0```&9F9I!F9I!(#[9'#4`/MLY(
+MT_BH`7170(#^`W8BC02-`````$B82(L3BX0"T`$``(D%`````*D``!``=2;K
+M+TB-!+4`````)?P#``!(BQ.+A`+0`0``B04`````J0``$`!T"TR)R(GQ2-/@
+M00G`_\9`.'-#=Y%%A,!T3$0X1PUU1HGH9L'H!0^WP(M$@UR)Z8/A'TC3^*@!
+M=2U!@+W@`````G<(0<:%X`````,/M\5(BY.0"0``2(LTPDR)[^@`````Z;`'
+M``#V1"03`0^$I0<```^WQ4B+DY`)``!(BSS"QD<D(8M'."7___\`/>$!#@`/
+MA(`'``!!#[9%:L'@"$B82(N3P!```(N$`D`(``")!0````")QL'N$$&)P$'!
+MZ!A!#[9%:L'@"$B82(N3P!```(N$`D0(``")!0````"(1"0(2(U,)`B)PL'J
+M"(A1`<'H$(A!`D$/MD5JP>`(2)A(BY/`$```BX0"2`@``(D%`````(A!`XG"
+MP>H(B%$$P>@0B$$%QD$&`,9!!P#VAY8````!=1A`#[;V0/;&`70.00^VT.@`
+M````Z<D&``!(B?Y(B=_H`````.FY!@``#[?62(N#D`D``$B+!-!F@7@XX0$/
+MA2\!```/MD@Z@_D0#X>2!@``N`$```!(T^"IP#````^%\@```*D`@```=0VI
+M```!`'5?D.EK!@``#[?62(N#D`D``$B+#-!,:<*P!```0P^V1#`SB$$D2(N#
+MD`D``$B+!-#V0",$#X0X!@``@'@D``^$+@8``$B#>%``#X0C!@``2(M04$,/
+MMD0P,X@"Z1(&```/M]9(:=*P!```1`^WYDB+@Y`)``!*BPS@0@^V1#(JB$$D
+M2(N#D`D``$J+!.!(@WA(``^$V@4``$(/MKPR(00``.@`````B<)(BX.0"0``
+M2HL$X#M0-'8#BU`T#[?U2(N#D`D``$B+!/!(BWA(B=)(:?:P!```2HUT-BCH
+M`````.F-!0``#[?&2(N3D`D``$B+!,+&0"0`Z78%``!F9I!F9I`/M]9(BX.0
+M"0``3(LDT$V+?"1HN/____]F08%\)""%`'<.20^W1"0@#[:$&$`(```/ML!(
+M:<"(`0``28G%3`.K&`D``$'&A>``````20^V14"H`@^$EP$``*@$#X2/`0``
+MJ`$/A(<!``!!QD0D)`!!BY0DE````$C!ZA5-A?\/E<`/ML"%P@^$Y`0``$'V
+MAZD````"#X2=````28._H`````!T&$F+OZ````!!BU0D-$F+="1(Z`````#K
+M>TF#?"1(`'1S0;X`````28._L`````!T$T'VAZD````!=0E-B[>P````ZR%(
+MB[,@"@``N@$```!,B?]!_Y>X````A<!T!TR+LR`*``!!@WPD-`!T)TF+;"1(
+M28M^"$&+%DB)[N@`````08L&2`'%28U&!$F#QA"#.`!TWD$/MD5JP>`(2)A(
+MBY/`$```BX0"0`@``(D%`````(G"P>H008B7FP```,'H&&9!B8>0````00^V
+M16K!X`A(F$B+D\`0``"+E`)$"```B14`````9@^VPF9!B8>4````#[;&9D&)
+MAY8```")T,'H$&8/ML!F08F'F````,'J&$&(EYH```!!#[9%:L'@"$B82(N3
+MP!```(N$`DP(``")!0````!F#[;`9D&)AY(```#IA0,``&9FD&:0#[?52&G*
+ML`0``$(/MD0Q,X3`#X6_````2(N#D`D``$B+!-#&0"0`08N4))0```!(P>H4
+M387_#Y7`#[;`A<(/A#P#``!"#[9$,3-!B(>2````00^VAZD```"H`@^$'P,`
+M`+T`````28._L`````!T#:@!=0E)BZ^P````ZR%(B[,@"@``N@$```!,B?]!
+M_Y>X````A<!T!TB+JR`*``!!@WPD-``/A-8"``!)BUPD2)!(BWT(BU4`2(G>
+MZ`````"+10!(`<-(C44$2(/%$(,X`'3>Z:D"```\`@^%6`(```^W_4AI_[`$
+M``!*C7PW0+Y_````0"(WQD0D`P#&1"0"`,9$)`$`#[?%2&G`L`0``$*+1#`X
+MB40D!$B-3"0$#[94)`3!XA@/MD$!P>`0"<(/MD$"P>`("<(/MD$#08G500G%
+M0(#^<78P08/]`78+#[9'`8/@#XA$)`-!@_T"=@@/MD\"B$PD`D&#_0-V30^V
+M?P-`B'PD`>M"08/]`G8+#[9'`H/@#XA$)`-!@_T'=BL/MD<'@\`(03G%1`]'
+MZ$&#_0QV"`^V3PR(3"0"08/]#78)#[9_#4"(?"0!#[?U2(N#D`D``$B+#/"`
+M>3``#Y7`187M#Y7"#[;`A<)T2<9!)"!(BX.0"0``2(L$\$0X:#!S!40/MF@P
+M#[?-2(N#D`D``$B+!,A(@WA0`'0L2(MX4$2)ZDAI\;`$``!*C70V0.@`````
+MZQ(/M\5(BY.0"0``2(L$PL9`)"*`?"0#!'42#[?%2(N3D`D``$B+!,+&0"0"
+M23E<)"@/E<!-A?\/E<(/ML"%P@^$&`$``$'VA"26````$'13#[?%2&G`L`0`
+M`$(/MD0P,T&(AY(```!!]H>I`````G0R1(GH13AL)#!S!D$/MD0D,(3`=!Y)
+MB[^@````#[;0#[?U2&GVL`0``$J-=#9`Z``````/MD0D`X/X"W==B<#_),4`
+M````0<:'J@````'IF@```(!\)`($#Y3`@'PD`0(/E,(/ML`AT(/X`1G`@^#Q
+M@\`108B'J@```.MQ0<:'J@```!#K9T'&AZH````+ZUU!QH>J````!NM30<:'
+MJ@````WK23PH=1]!#[9%>__(08A%>@^WU4B+@Y`)``!(BP30QD`D@>LF/`AU
+M"K\0)P``Z``````/M\5(BY.0"0``2(L$PL9`)"%F9I!F9I!(BUPD&$B+;"0@
+M3(MD)"A,BVPD,$R+="0X3(M\)$!(@\1(PV9F9I!F9I!F9I!F9I!54TB#[`A(
+MB?M(B?U(BP>+@%`!``")!0````")QDB+!XFP4`$``/?&`/__`'0(2(GOZ#KI
+M__](BP.+@%`!``")!0````")QDB+`XFP4`$``/?&`/__`'7.N`````!(@\0(
+M6UW#9F9FD&9F9I!F9F:005=!5D%505154TB#[$A(B?U(B7PD.$0/MZ<Z$@``
+M2(L'BX!``0``B04`````9B7_#V:)ASH2``"X`````&9$.:<Z$@``#X0L!P``
+M9H&_.A(``/\/#X2J!@``9D0YISH2```/A)P&``!(C8?H````2(E$)!A(C9?X
+M````2(E4)!!(B50D"$B)%"1F9F:09F:02(N-\!```$'_Q&9$.:4^$@``N```
+M``!$#T;@00^WU$B+A5`1``"+=)`$]\8```@`#X2A````2(M%`(N`4`$``(D%
+M`````(G"2(M%`(F04`$``+L`````]\(`__\`=%&^`````(!]0P!T1HG79D0/
+MMD5##[?6C4H(2(GX2-/XJ`%U#8U*$$B)^$C3^*@!=!0/M\9(:<"H````2(V<
+M**`!``#K#?_&9D$Y\'?'9F:09I!(A=MU$$B+?"0XZ`````"0Z:$%``!(BWPD
+M..@`````B$,/Z8\%``!!B?5F08'E_P]!#[?%2&G0L`0``$B+?`H@2(N5D`D`
+M`$R+-,)-A?8/A&(%``#WQ@``(``/A)$!``!!@'XD@0^%90$``$'&1B0A20^W
+M5C)(BX60"0``2,<$T`````!!#[=.,HG(9L'H!0^WP(/A'[H!````2-/B2(G1
+M]]$AC(68"0``00^W3C*)R&;!Z`4/M\"#X1^Z`0```$C3XDB)T??1(4R%7$$/
+MMW8R2(V]6`\``.@`````28.^@`````!T#TF-MH````!(B>_H`````&9!@7X@
+MA0`/A\X```!)#[=&(("\*$`(``#_#X2[````9D&#?B!_=R=(#[:$*$`(``!(
+MBY48"0``2&G`B`$``$B+1!!(@'@(_W5AZ8P```!F08%^(($`=RE)#[=&($@/
+MMH0H0`@``$B+E6@)``!(:<#(#P``2(M$$`B`>`C_=2SK6DD/MT8@2`^VA"A`
+M"```2(N50`D``$AIP-````!(BX00B````(!X"/]T,$R)]DB)[^@`````2(N%
+MZ````$R)<`A)B09(BTPD&$F)3@A,B;7H````Z>@#``!FD$F-1A!(BTPD$$B+
+M40A(B4$(28E.$$B)4`A(B0+IQ0,``$2)Z&;!Z`4/M\"+1(5<1(GI@^$?2-/X
+MJ`$/A:8#``!!#[?52(N%D`D``$B+!-!F@7@@A0`/A[,```!(#[=0(("\*D`(
+M``#_#X2@````9H-X(']W(D@/MH0J0`@``$B+E1@)``!(:<"(`0``2(M$$$@/
+MME`(ZWQ!#[?52(N%D`D``$B+!-!F@7@@@0!W)T@/MT`@2`^VA"A`"```2(N5
+M:`D``$AIP,@/``!(BT00"`^V4`CK/D$/M]5(BX60"0``2(L$T$@/MT`@2`^V
+MA"A`"```2(N50`D``$AIP-````!(BX00B`````^V4`CK!;K_____@/K_=`T/
+MML*`O"C&"```_W5&1(GH9L'H!0^WP(M$A5Q$B>F#X1](T_BH`0^%H@(``$'&
+M1B0&O@````!,B??H`````+H`````3(GV2(GOZ`````#I>P(```^VPD@/MIPH
+MQ@@``$AIVZ@```!(C9PKH`$``$B%_W0(]\8```(`=06_`````/9#"@(/A($!
+M``!!#[?U2(GZ2(G?Z`````!$B>AFP>@%#[?`BT2%7$2)Z8/A'TC3^*@!#X46
+M`@``08!^)($/A9$```!)#[=6,DB+A9`)``!(QP30`````$$/MTXRB<AFP>@%
+M#[?`@^$?N@$```!(T^)(B='WT2&,A9@)``!!#[=V,DB-O5@/``#H`````$R)
+M]DB)[^@`````28.^@`````!T#TF-MH````!(B>_H`````$B+A>@```!,B7`(
+M28D&2(M,)!A)B4X(3(FUZ````.EZ`0``0;\`````QD0D(`!(BX7X````2#E$
+M)!!T$DB-E?@```!!_\=(BP!(.<)U]46$_W0\2(M<)`A(B=_H`````$B-2/!(
+MBU,(2(E#"$B)&$B)4`A(B0),.?&X`0````^V5"0@#T30B%0D($'^SW7)@'PD
+M(``/A0,!``!)C4802(M,)!!(BU$(2(E!"$F)3A!(B5`(2(D"1(GH9L'H!0^W
+MP$2)Z8/A'[H!````2-/B"92%G````.G#````00^W]4B)^DB)W^@`````0;\`
+M````QD0D(`!(BX7X````2#E$)!!T$DB-E?@```!!_\=(BP!(.<)U]46$_W0[
+M2(L<)$B)W^@`````2(U(\$B+4PA(B4,(2(D82(E0"$B)`DPY\;@!````#[9,
+M)"`/1,B(3"0@0?[/=<F`?"0@`'5"08!^)(%T.TF-1A!(BTPD$$B+40A(B4$(
+M28E.$$B)4`A(B0)$B>AFP>@%#[?`1(GI@^$?N@$```!(T^()E(6<````9D0Y
+MI3H2```/A8SY__](C87X````2(G"2#F%^````'130;P!````9F:02(G32(G7
+MZ`````!(C7#P#[=.,HG(9L'H!0^WP(/A'TR)XDC3XDB)T??1(8R%G````+H`
+M````2(GOZ`````!(B=I(.9WX````=;9(B>_H`````+@!````2(/$2%M=05Q!
+M74%>05_#9F9FD&9FD&9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD(&;'1"0&
+M``!(BZ_0"```0;P`````3(UL)`9(BT4`BX!0`0``B04`````2(M5`(F"4`$`
+M`(7`="%(BT4`QX!0`0```0```$ECW$B)[^@`````08A$'0!F9I!(@<4`%```
+M0?_$08/\`7ZQ@'PD!@!U#+@`````@'PD!P!T!;@!````2(M<)`A(BVPD$$R+
+M9"083(ML)"!(@\0HPV9F9I!F9F:09F9FD&9FD$%7059!54%455-(@^P(2(G]
+M28GUN0````!F#[9'0XG&9H/X`'8;20^V50UF9I!FD$B)T$C3^*@!=0?_P68Y
+MSG?O28-]0`!T($F+=4!(@<:0````2(M]*.@`````28MU0$B)[^@`````28U%
+M8$B)PDDY16`/A&<!``!)B<9F9F:02(G7Z`````!(B<-(@W@X``^$+@$``(!X
+M>P`/A*````!!O`````!F@WU8``^$CP```$&_`0```$ECU$B+A9`)``!(BS30
+M2(7V=&8/MT8@9CM#,'5<9CV%`'=6#[?`@+PH0`@``/]T24B+50`/MT8R9L'H
+M!0^WP(T$A0`#``")@G`!``!(BT4`#[=.,H/A'TR)^DC3XHF0=`$``,9&)"&Z
+M`````$B)[^@`````9F:09I!!_\0/MT581#G@#X]W____2(M#.$C'0&``````
+M]D-$!'4C_H7O$P``2(GOZ`````!(BT,X#[9P`;H!````2(GOZ`````!(BT,X
+M#[90`@^V<`%(Q\<`````N`````#H`````$B+4SA(B[70"```OP$```#H````
+M`$B+4SA(B[70"```OP8```#H`````$C'0S@`````0?Y-#DB)WDB)[^@`````
+M3(GR33EU8`^%H/[__TG'14``````2(M%`(N(6`$``(D-`````(7)=`I(BT4`
+MB8A8`0``2(/$"%M=05Q!74%>05_#9F9FD&9F9I!F9I!!5%532(G]28GTNP``
+M``"`?T,`=AY(#[96#69FD&9FD$B)T(G92-/XJ`%U!__#.%U#=^U!]D0D#`)U
+M#$F-1"1@23E$)&!U:4R)Y^@`````A,!T4$B)[^@`````2(G&2(7`=$U)C40D
+M8$B+4`A(B7`(2(D&2(E6"$B),D'^1"0.3(EF2,9&0`7&1D$`QD9Y#[D!````
+MN@$```!,B>?H`````.L-#[;S2(GOZ`````!FD%M=05S#9F9FD&9F9I!F9I!(
+M@^PH2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@28G]28GT3(NVB`````^V5D=(
+MB?Y,B??H`````$B)Q69!@TPD3A"[`````&9!#[9%0XG&9H/X`'8>20^V5@UF
+M9I!F9I!(B=")V4C3^*@!=0?_PV8YWG?M9H/[`W8G2(T$G0`````E_/\#`$F+
+M50"+A`+0`0``B04`````J0``$`!U-^LE2(T$G0`````E_/\#`$F+50"+A`+0
+M`0``B04`````J0``$`!U$`^V\TR)[^@`````Z9L!``!)C49@23E&8`^$C0$`
+M`$B%[0^$A`$``$@/MD5Y2<=$Q%@`````2(M5"$B+10!(B5`(2(D"2(GJO@8`
+M``!,B??H`````(!]>P!T&9!,B>_H`````+\!````Z`````"`?7L`=>A(@WTX
+M`'132(M%.$C'0&``````]D5$!'4/0?Z%[Q,``$R)[^@`````2(M5.$F+M=`(
+M``"_`0```.@`````2(M5.$F+M=`(``"_!@```.@`````2,=%.`````!!_DX.
+M2(GN3(GOZ`````!)BT4`BY!8`0``B14`````A=)T"DF+10")D%@!``!!QD0D
+M0@!F08-D)$[ONP````!!@'PD.P!T(69!#[94)#L/M\-)BVS$6$B%[70&@'U"
+M_W5]_\-F.=IWYD'V1"1.@'0-3(GF3(GOZ`````#K8;L`````08!\)#L`=$)F
+M9F:0#[?#28MLQ%A(A>UT(_9%1`)T'4B+53A)B[70"```OP8```#H`````(!E
+M1/UF9F:0_\-F00^V1"0[9CG8=\)F0<=$)$X"`$&`9"1)_69F9I!(BQPD2(ML
+M)`A,BV0D$$R+;"083(MT)"!(@\0HPV9FD$B#[`A(BX:(````N0````"`?T,`
+M=AM(#[90#69FD&:02(G02-/XJ`%U!__!.$]#=^_&1D(,Z`````!(@\0(PY!!
+M54%455-(@^P(28G\B?6[`````$B-!*T`````28G%08'E_`,``+\0)P``Z```
+M``!`@/T#=AM)BP0D0HN$*-`!``")!0````"I```0`'4DZQE)BP0D0HN$*-`!
+M``")!0````"I```0`'4)_\-F@?OS`7:S0`^V]4R)Y^@`````3(GGZ`````")
+MZ@^VPDAKP&A,`>#V@&@2```!=`](B[!($@``3(GGZ`````!(@\0(6UU!7$%=
+MPV9F9I!F9I!F9I!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!(B10D3(LG#[?V
+M28N$))`)``!(BQSP0;T`````O0````!F@7LXX0%U'P^V0SJ#Z!$\`7<42(MO
+M0$B%TG5*QD51`.M$9F:09I!)BY0D&`D``$R-JGB&`0!F@7L@A0!W&4@/MT,@
+M2@^VA"!`"```2&G`B`$``$R-+`)(@SPD`'4(0<:%X`````"`>R2!=0N`9PSW
+M9F9FD&9FD$B#/"0`#X7[````QD,D`/:#E@```"`/A!8"``!(BVMH2(7M#X0)
+M`@``]H6I`````G0D2(.]H`````!T&DB#>T@`=!-(B[V@````BU,T2(MS2.@`
+M````00^V16K!X`A(F$F+E"3`$```BX0"0`@``(D%`````(G"P>H0B)6;````
+MP>@89HF%D````$$/MD5JP>`(2)A)BY0DP!```(N4`D0(``")%0````!F#[;"
+M9HF%E`````^VQF:)A98```")T,'H$&8/ML!FB868````P>H8B)6:````00^V
+M16K!X`A(F$F+E"3`$```BX0"3`@``(D%`````&8/ML!FB862````Z2P!``"`
+M>R2`=03&0R0A2(LT)$C'QP````"X`````.@`````9H%[..$!=1@/MD,Z@^@1
+M/`%W#4B)[^@`````Z>T```#V1"0#`71YBT,X)?___P`]X0$.`'1J00^V16K!
+MX`A(F$F+E"3`$```BX0"0`@``(D%`````$$/MD5JP>`(2)A)BY0DP!```(N$
+M`D0(``")!0````!!#[9%:L'@"$B828N4),`0``"+A`)("```B04`````2(G>
+M3(GGZ`````#K;8!\)`,`>21)BP0DBX!8`0``B04`````B<&%P'1028L$)(F(
+M6`$``.M$9I"`/"0`>#R`?"0'`'DU28L4)`^W0S)FP>@%#[?`C02%``,``(F"
+M<`$``$F+%"0/MTLR@^$?N`$```!(T^")@G0!``!(BUPD"$B+;"003(MD)!A,
+MBVPD($B#Q"C#D)"0D)!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!(B?-)B?Q$
+M#[9N)$B+EQ@)``!(C:IXA@$`9H%^((4`=QE(#[=&($@/MH0X0`@``$AIP(@!
+M``!(C2P"183M=2!FQX7```````"`>S@<=1&`>SH"=0M(B=Y(B>_H`````$B#
+M>W@`=!)(C7-X3(GGZ`````!F9I!F9I!(B=Y,B>?H`````$&`_09T/4B-G5@!
+M``!)BWPD*$B)WN@`````QX58`0``@(0>`$C'A6@!````````2(FM<`$``$F+
+M?"0H2(G>Z`````!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#9F:09F:09F:0
+M2(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($B)_4B%_P^$PP```$B+1TA,
+MBRA,B>_H`````$B)PTR-<%A(A<`/A*0```!,B>_H`````$F)Q$B%P'402(G>
+M3(GOZ`````#IA````,9#):P/MT4P9HE#($R):RC'@Y0````(````3(EC>$F+
+M1"002(E#2,=#-``(``!(C87D````2(E#4,9#,"!(QX.@`````````,9#.!S&
+M0SD!QD,Z`L9#.PC&0SP`O@````!,B??H`````(M3-$F+="083(GWZ`````!(
+MB=Y,B>_H`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F9FD&9F
+M9I!!5T%6055!5%532(/L"$F)_TF)]4&)UDB+1TA(BRA!O`````!$B>(/ML(/
+MMH0H0`@``#S_=$L/ML!(:=B(`0``2(G?2`.]&`D``$B!Q\P```"Z"````$F-
+M=0SH`````(3`=!Y(BX48"0``1(BT`P8!``!(BX48"0``3(F\`Q@!``!!_L1Y
+MGDB#Q`A;74%<05U!7D%?PV9F9I!F9F:09F:02(/L2$B)7"082(EL)"!,B60D
+M*$R);"0P3(ET)#A,B7PD0$B)?"003(MV2$$/MD8"08G%0<'E"&9!#[9&`T$!
+MQ4$/M\6#P`0/MU8T.=`/C]L```!)C5X(0;\`````00^WQ4J-1#`$2#G8#X:P
+M````D`^V`X3`#XB%````@^`//`9U?O9#`\!T!O9#!<!U<O8#$'0P2(UK"$&\
+M`````(![!`!V70^V4P-(B>Y(BWPD$.@`````2(/%'$'_Q$0X8P1WXNL]2(UK
+M!$&\`````(![`@!V+4$/ML>)1"0,9F:09I"+5"0,2(GN2(M\)!#H`````$B#
+MQ1Q!_\1$.&,"=^)FD$'_QT@/MD,!2(U<&`)!#[?%2HU$,`1(.=@/AU'___^^
+M`0```$B+?"00Z`````!(BUPD&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\)$!(
+M@\1(PV9F9I!F9F:09F9FD&9FD$&)RTB+1TA,BPBY`````$2-%!8/ML%"#[:$
+M"$`(```\_W0]#[;`28N1&`D``$QIP(@!``!!.+00!@$``'4B23F\$!@!``!U
+M&$6(E!`%`0``28N!&`D``$6(G``$`0``D/[!>:_SPV9F9I!F9I!F9I!(BW]0
+M@+_`````3W<W2`^VA\````!(C01`2,'@!(T4%HB4.,D```!(#[:'P````$B-
+M!$!(P>`$B(PXR````/Z'P````//#9F9FD&9FD&9FD$%7059!54%455-(@^P(
+M28G_2(M.2`^V00+!X`AF#[91`P'0#[?`@\`$#[=6-#G0#X\%`0``2(U1",9$
+M)`<`0;X`````#[9)`0^V0@(`1"0'2`^V0@-(C50"!$'_QD0X\7/F2(G50;T`
+M````0;X`````1#IT)`</@Z8```!F9F:0#[9-`4$!S0^V10`\`0^4PCP7#Y3`
+M"="H`70U1(GK*,M$..MS:T&-1@%$#[;@9F:0#[9-``^V\T2)XDR)_^@`````
+M_\-$..MRY^M%9F:09I!)BT=0@+C!`````70S1(GK*ET!1#CK<RA!C48!1`^V
+MX`^V30`/MO-$B>),B?_H`````/_#1#CK<N=F9F:09F:02(/%!$'_QD0Z="0'
+M#X)>____28M'4,:`P0````&^!P```$R)_^@`````2(/$"%M=05Q!74%>05_#
+M9F9FD&9FD$B#["A)B?E!N/____](B>?\N0(```"X`````/-(J\<'`````&8Y
+M\7-59F9FD&9FD&:#^0YW"P^WT4(/M@0*B`04#[?!0@^V!`B#Z#`\"7<A08#X
+M_[@`````1`]$P$$/ML!KP`H/M]%"`@0*1(U`T.L&08#X_W4'_\%F.?%RLD$/
+MML!(@\0HPV9FD&9FD&9FD$&)T4B+1TA,BP"Z`````)`/ML)"#[:$`$`(```\
+M_W0P#[;`28N(&`D``$AIP(@!``!(.;P(&`$``'450#BT"`4!``!U"T2(C`@'
+M`0``PV:0_L)YO//#9F9FD&9FD&9FD$%505154TB#[`A)B?5!B=1(BV]0NP``
+M``!F9F:09F:02&/#2(T$0$C!X`1(C8PHP`````^V40B`^@$/E\"`^A</E<(/
+MML"%PG0V1#AA"74P00^V50.`^B&X(`````]#T$AC^TB-/'](P><$2(V\+]@`
+M```/MM))C74$Z`````"0_\.#^T]^F4B#Q`A;74%<05W#9F9FD&9F9I!F9I!F
+M9I!!5T%6055!5%532(/L*$B)?"0@0;T`````2(M&2$B)1"08#[9``HG!P>$(
+M2(M4)!AF#[9"`P'!#[?!@\`$#[=6-#G0#X\7`0``3(MD)!A)@\0(QD0D%P`/
+MM\%(BU0D&$B-1!`$3#G@#X;D````#[?!2(U$$`1(B40D"`^WR4B)#"1!#[9$
+M)`+!X`AF00^V5"0#1(TT`D$/M_9)C7PD!.@`````//]U:4&)Q4$/M\9*C5P@
+M!$@Y7"0(=FU(BP0D2(M4)!A,C7P0!`^V0P+!X`AF#[93`XTL`@^W]4B->P3H
+M`````#S_=0Y!@/W_=3I!O0````#K,D0XZ$0/0N@/M\5(C5P8!$DYWW>_ZQQF
+M9I!FD(G"1"CJ#[;2#[9T)!=(BWPD(.@`````#[94)!=,B>9(BWPD(.@`````
+M_D0D%T$/M\9.C60@!$PY9"0(#X<P____O@(```!(BWPD(.@`````2(/$*%M=
+M05Q!74%>05_#D%-(B?M(BTY(#[9!`L'@"&8/ME$#`=`/M\"-4`0/MT8T.<)_
+M'TB+OR`!``!(8])(B<[H`````+X`````2(G?Z`````!;PV9F9I!F9F:09F:0
+M2(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)]4F)_@^V1B2(
+M1"0'9H%^((4`#X>K````2`^W1B"`O#A`"```_P^$F````&:#?B!_=RI(#[:$
+M.$`(``!(BY<8"0``2&G`B`$``$B+1!!(2`^V0`A(!<`(``#K;9!F@7X@@0!W
+M+D@/MT8@2`^VA#A`"```2(N7:`D``$AIP,@/``!(BT00"$@/MD`(2`7`"```
+MZS9(#[=&($@/MH0X0`@``$B+ET`)``!(:<#0````2(N$$(@```!(#[9`"$@%
+MP`@``.L%N+\)``!-#[9\!@9-:?^H````3XV\-Z`!``!)BY88"0``2(VJ>(8!
+M`&9!@7T@A0!W&4D/MT4@2@^VA#!`"```2&G`B`$``$B-+`*`?"0'``^%-`(`
+M`&;'A<```````$&`?3@<#X4@`@``00^V13J#^`)T48/X`G\*@_@!="?I!P(`
+M`(/X!V9F9I!T*8/X"@^%]0$``$R)[DB)[^@`````Z>4!``!,B>Y(B>_H````
+M`.G5`0``3(GN2(GOZ`````#IQ0$``$R)[DB)[^@`````2(V=6`$``$B+14A(
+MBP!(BW@H2(G>Z`````#'A5@!``"`A!X`2,>%:`$```````!(B:UP`0``2(M%
+M2$B+`$B+>"A(B=[H`````)#&14+_0;P`````08!_#@`/AJ\```!)C5]@9F9F
+MD&9FD$B)W^@`````2(G%2(M#"$B):PA(B5T`2(E%"$B)*(!]0O]T;(!]00!U
+M;8"]X0`````/A!D!``!(#[9%0*@"=`RH!'0(J`$/A=(```!(#[9%0*@"=0RH
+M!'0(J`$/A=(```!(#[9%0*@"#X3B````J`0/A-H```"H`0^%T@```$B)[DR)
+M]^@`````Z<(```!FD,:%X0````!!_\1%.&<.#X=<____13AG#G570;P`````
+M08!_#@!V2DF-7V!F9I!FD$B)W^@`````2(G%2(M#"$B):PA(B5T`2(E%"$B)
+M*(!]0O]T%`^V14$\(@^4PCP-#Y3`"="H`75*0?_$13AG#G>_0<9'"?],B?Y,
+MB??H`````(!\)`<`#X6%````ZS(/ME5Y2(MU4$B)Z4R)_^@`````ZQU(B>Y,
+MB??H`````&:0ZPZ^"@```$B)[^@`````D$F#?7@`=`Q)C75X3(GWZ`````!,
+MB>Y,B??H`````(!\)`<`="QF_X7`````9H.]P`````IV#F;'A<```````.E,
+M_O__O@H```!(B>_H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD
+M,$B#Q#C#9F9FD&9F9I!F9F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET
+M)"A,B7PD,$B)_4&)]TB+1TA,BRA,B>_H`````$B)PTR-<%A(A<`/A*0```!,
+MB>_H`````$F)Q$B%P'402(G>3(GOZ`````#IA````,9#):P/MT4P9HE#($R)
+M:RC'@Y0````(````3(EC>$F+1"002(E#2,=#-``(``!(C87D````2(E#4,9#
+M,"!(QX.@`````````,9#.!S&0SD!1(A[.L9#.PC&0SP`O@````!,B??H````
+M`(M3-$F+="083(GWZ`````!(B=Y,B>_H`````$B+7"0(2(ML)!!,BV0D&$R+
+M;"0@3(MT)"A,BWPD,$B#Q#C#9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,
+MB70D*$R)?"0P28G]2(M'2$R+,$B+ER`!```/MD("B</!XPAF#[9"`P'##[?#
+M@\`$/0`(```/C\X```!,B??H`````$B)Q4B%P`^$N@```$R)]^@`````28G'
+M2(7`=1!(B>Y,B??H`````.F:````3(UE6$B+>!`/M]N#PP1(8]-)B[4@`0``
+MZ`````#&126L00^W13!FB44@3(EU*(E=-(.-E````!))BT<02(E%2$R)?7A)
+MC87D````2(E%4,9%,"!(QX6@`````````,9%.!W&13D0QD4Z`@^VQXA%.XA=
+M/+X`````3(GGZ`````"+531)BW<83(GGZ`````!(B>Y,B??H`````$B+7"0(
+M2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9F9I!F9I!328G2
+M08G+2(M'2$R+`$R+3U"[``````^VPT(/MI0`0`@``(#Z_W18#[;"28N(&`D`
+M`$AIP(@!``!(.;P(&`$``'4]0#BT"`4!``!U,T6$VW0-2(N$"!`!``!)B0+K
+M)0^VPDF+B!@)``!(:<"(`0``28L22(F4"!`!``#K!V9FD/[#>9.[`````&9F
+M9I!F9I`/ML-(C01`2,'@!$J-/`A(C8_`````#[91"(#Z`0^7P(#Z%P^5P@^V
+MP(7"=#-`.'$)=2U%A-MT#$B+A]````!)B0+K(P^VPTB-!$!(P>`$28L22HF4
+M"-````#K"V9F9I#_PX#[3W:96\-F9F:09F:02(/L*$B)7"0(2(EL)!!,B60D
+M&$R);"0@28G\B?%(BY<@`0``#[9"`HG'P><(9@^V0@,!QP^WQX/`!#T`"```
+M?V1`A/9T#D$/MH0D"`$``(A"`>L,#[9"`4&(A"0(`0``2(U""$B)!"2[````
+M``^WQTB-1!`$2#L$)'8J1`^VZ0^WQTB-;!`$#[;S1(GI2(GB3(GGZ`````#_
+MPTB#!"0$2#LL)'?B2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV:02(/L&$B)
+M7"0(2(EL)!!(B?N)U4C'!"0`````@']#`70_0`^V]KD!````2(GBZ`````!(
+M@SPD`'0G2(L$)(`(@$"$[70+2(L$)(!(`R#K"9!(BP0D@&`#WTB)W^@`````
+M2(M<)`A(BVPD$$B#Q!C#D$B#[!A(B1PD2(EL)`A,B60D$$B)\TF)_$B+;FAF
+M@7X@A0`/AY@```!(#[=&(("\.$`(``#_#X2%````9H-^(']W(D@/MH0X0`@`
+M`$B+EQ@)``!(:<"(`0``2(M$$$@/ME`(ZV%F@7X@@0!W)T@/MT8@2`^VA#A`
+M"```2(N7:`D``$AIP,@/``!(BT00"`^V4`CK,D@/MT8@2`^VA#A`"```2(N7
+M0`D``$AIP-````!(BX00B`````^V4`CK"&9FD+K_____N?____]F@7L@A0!W
+M#D@/MT,@0@^VC"!`"```@/K_="$/ML)"@+P@Q@@``/\/E,*`^?\/E,`)T*@!
+M=0:`>R0&=3I(@WMX`'032(US>$R)Y^@`````9F9FD&9FD$B)WDR)Y^@`````
+MQT50_____TB)[_]52.MV9F:09F:0@'LD`'4[]H.4````"&9FD'002(M],(M3
+M-$B+<TCH`````,=%4`````!(@WTX`'0)2(M5.(M%((D"2(GO_U5(ZP_'15#_
+M____2(GO_U5(9I!(@WMX`'0,2(US>$R)Y^@`````2(G>3(GGZ`````!FD$B+
+M'"1(BVPD"$R+9"002(/$&,-F9F:09F:09F:09F:02(/L2$B)7"082(EL)"!,
+MB60D*$R);"0P3(ET)#A,B7PD0$B)_4&)UT&)SDR)1"0(0(AT)!=(BT=(3(LH
+M3(GOZ`````!(B<-(C4!82(D$)$B%VP^$V````$R)[^@`````28G$2(7`=1!(
+MB=Y,B>_H`````.FX````QD,EK`^W13!FB4,@2(M4)`A(B5-H3(EK*,>#E```
+M``@```!,B6-X28M$)!!(B4-(1(ES-$B-A>0```!(B4-0QD,P($C'@Z``````
+M````QD,X/,9#.0(/MD0D%XA#.D2)^,'H$(A#.TR)^@^VQHA#/$2(>SU$B?#!
+MZ!"(0SY,B?(/ML:(0S]$B'-`QD-!`+X`````2(L\).@`````BU,T28MT)!A(
+MBSPDZ`````!(B=Y,B>_H`````$B+7"082(ML)"!,BV0D*$R+;"0P3(MT)#A,
+MBWPD0$B#Q$C#9F9FD&9FD&9FD&9FD$B#[$A(B5PD&$B);"0@3(ED)"A,B6PD
+M,$R)="0X3(E\)$!)B?R)TT&)SDR)1"0(0(AT)!=(BT=(3(LX3(G_Z`````!(
+MB<5(A<`/A.X```!,B?_H`````$F)Q4B%P'412(GN3(G_Z`````#IS@```)!(
+MC4582(D$)$F+?1!$B?))B[0D(`$``.@`````QD4EK$$/MT0D,&:)12!(BU0D
+M"$B)56A,B7TH1(EU-(.-E````!))BT402(E%2$R);7A)C80DY````$B)15#&
+M13`@2,>%H`````````#&13@[QD4Y`@^V1"07B$4ZB=C!Z!"(13L/ML>(13R(
+M73U$B?#!Z!"(13Y,B?(/ML:(13]$B'5`QD5!`+X`````2(L\).@`````BU4T
+M28MU&$B+/"3H`````$B)[DR)_^@`````2(M<)!A(BVPD($R+9"0H3(ML)#!,
+MBW0D.$R+?"1`2(/$2,-)B=%(A?\/E,)(A?8/E,`)T*@!=1)-A<D/E,)(A<D/
+ME,`)T*@!=`FX`````,-F9I!F08'XA0!W#D$/M\"`O#A`"```_W4&N`````##
+M0<9!..%!QD$Y`4'&03H39D6)02!)B7$H28F)H````+@!````PV9F9I!F9F:0
+M9F9FD&9FD$B+1PB+0`2)!0````")PH'*```,`"7___/_0(3VB=$/1,A(BT<(
+MB0A(BT<(B4@,2(M'"(E($$B+1PB)2!1(BT<(B4@82(M'"(E(!,.0D)"03(M4
+M)"!,BUPD,`^WQST1)P``?T`]$"<```^-@0```#TB(0``='H](B$``&9FD&:0
+M?Q`]("$``'1G9F9FD&9FD.MD/4`A``!T5SU$(0``9I!T3NM2/8`G``!F9F:0
+M9F:0=#X]@"<``'\,+2`G``"#^`)W,^LK/8"1``!T)#V`D0``?P\]@B<``'06
+M9F:09F:0ZQ0]@)0``'4-9F9FD&9FD,8&0,8"`L8!!`^V%DB+1"08B!!F0<<"
+M@`!F0<<#``!!Q@$@2(M$)`AFQP```0^V%DB+1"00B!!F#[8&9D$#`F9!`P-(
+MBU0D*&:)`F9!B0!!#[<22(M$)#AFB1!!#[<2@\(+2(M$)$!FB1##9F:09I!!
+M5T%6055!5%532(/L&$F)_TF)UD"(="072(LONP````!F@WU8``^&AP(``&9F
+M9I")V&;!Z`4/M\"+A(6<````B=F#X1](T_BH`0^%5P(```^WTTB+A9`)``!(
+MBPS02(7)#X1``@``O@````"+03@E____`#WA`1``#X7!````387V#X4?`@``
+M9H%Y((4`#X>>````2`^W02"`O"A`"```_P^$BP```&:#>2!_=R5(#[:$*$`(
+M``!(BY48"0``2&G`B`$``$B+1!!(#[90".E5`0``9H%Y(($`=RI(#[=!($@/
+MMH0H0`@``$B+E6@)``!(:<#(#P``2(M$$`@/ME`(Z2,!``!(#[=!($@/MH0H
+M0`@``$B+E4`)``!(:<#0````2(N$$(@````/ME`(Z?8```"Z_____^GL````
+M9F9FD&:!>2"%``^'E0```$@/MT$@@+PH0`@``/\/A((```!F@WD@?W<B2`^V
+MA"A`"```2(N5&`D``$AIP(@!``!(BT002`^V4`CK7F:!>2"!`'<G2`^W02!(
+M#[:$*$`(``!(BY5H"0``2&G`R`\``$B+1!`(#[90".LO2`^W02!(#[:$*$`(
+M``!(BY5`"0``2&G`T````$B+A!"(````#[90".L%NO____]F@7D@A0!W.D@/
+MMT$@@+PH0`@``/]T*TB+M1@)``!F@7D@A0!W%4@/MH0H0`@``$AIP(@!``!(
+M`<;K!TB!QGB&`0!!.%<(=7E-A?9T"T$/MT8P9CM!('5I@'PD%P9T3XM1.('B
+M____`('ZX0$0`'0^2`^V1D"H`G0UJ`1T,:@!=2V`ON``````9I!U(H'ZX0$/
+M`'0M#[9$)!>(022Z`0```$B)SDR)_^@`````ZQ,/MD0D%XA!)`^W\TR)_^@`
+M````_\-F.5U8#X=]_?__@'PD%X$/A(<!``!!O`````!(BY7H````2(V%Z```
+M`$@YT'0+0?_$2(L22#G0=?5F187D#X19`0``2(V%Z````$B)PD@YA>@````/
+MA$(!``!)B<5(B40D"&9FD&:02(G32(G7Z`````!(B<%-A?9T)4$/MT8P9CM!
+M('0:2(M#"$B)2PA(B1E(B4$(2(D(0?_,Z>4```!F@7D@A0`/AY4```!(#[=!
+M(("\*$`(``#_#X2"````9H-Y(']W(D@/MH0H0`@``$B+E1@)``!(:<"(`0``
+M2(M$$$@/ME`(ZUYF@7D@@0!W)T@/MT$@2`^VA"A`"```2(N5:`D``$AIP,@/
+M``!(BT00"`^V4`CK+T@/MT$@2`^VA"A`"```2(N50`D``$AIP-````!(BX00
+MB`````^V4`CK!;K_____03A7"'4DBT$X)?___P`]X0$/`'05#[9$)!>(021(
+MB<Y(B>_H`````.L228M%"$F)30A,B2E(B4$(2(D(0?_,9D6%Y'022(M4)`A(
+M.97H````#X7+_O__2(/$&%M=05Q!74%>05_#9F9FD&9F9I!F9F:00;@`````
+M9H-_6``/AAT!``!,BX^0"0``00^WP$F+#,%(A<D/A/<```!F@7D@A0`/AYL`
+M``!(#[=!(("\.$`(``#_#X2(````9H-Y(']W(D@/MH0X0`@``$B+EQ@)``!(
+M:<"(`0``2(M$$$@/ME`(ZV1F@7D@@0!W)T@/MT$@2`^VA#A`"```2(N7:`D`
+M`$AIP,@/``!(BT00"`^V4`CK-4@/MT$@2`^VA#A`"```2(N70`D``$AIP-``
+M``!(BX00B`````^V4`CK"V9FD&9FD+K_____N/\```!F@7D@A0!W#D@/MT$@
+M9@^VA#A`"```#[?`2&G`B`$``$@#AQ@)``!`./)U&D@/MD!`J`%T$:@$=`VX
+M`0```,-F9F:09F:00?_`9D0Y1U@/A^K^__^X`````,-F9F:09F9FD&9F9I!(
+MBT=(3(L`38N8D!```$&Z`````+X`````9D&#>%@`=DA-BXB0"0``#[?628,\
+MT0!T+DF+#-&+03@E____`#WA`1``=!L/MT<P9CM!('412(G02,'@!F9&.508
+M"'0+9I#_QF9!.7!8=[]F03EP6'0*0?_"9D&#^A]VFD$/M\)FD,-F9F:09F9F
+MD&9F9I!F9I!(@W]0`'0>2(M'4,8`<$B+1U!`B'`"2(M'4,9`!P!(BT=0B%`,
+M\\-F9I!F9I!F9I#SPV9F9I!F9F:09F:09F:028GXB?)(B=&!X?\!``!(BX>0
+M"0``2(,\R`!T+$B+/,@/MD<E00^VL-X```")\=/@1`^WP`^WTKC__P``T^`A
+MPDB)^$$YT'0%N`````#SPY!54TB#[`A(B?5F@7XXX0$/A:T````/MD8Z@^@1
+M/`$/AYX```"X_P```&:!?B"%`'<-2`^W1B`/MH0X0`@``(G`2&G`T````$B)
+MPT@#GT`)``"`>T3_=4RX%````("]F`````!T"0^VA9@````!P`^VP&G`0$(/
+M`(F#D````$C'@Z``````````2(F;J````$B-LY````!(BW\HZ`````#&0T0`
+M2(U#*$B+4`A(B6@(2(E%`$B)50A(B2K^0T7IJ````+C_````9H%]((4`=PU(
+M#[=%(`^VA#A`"```B<!(:<"(`0``2(G#2`.?&`D``(M%."7___\`/>$!$`!T
+M;(![>/]U3+@4````@+V8`````'0)#[:%F`````'`#[;`:<!`0@\`B8,H`0``
+M2,>#.`$```````!(B9M``0``2(VS*`$``$B+?RCH`````,9#>`!(C4,@2(M0
+M"$B):`A(B44`2(E5"$B)*OY#>TB#Q`A;7<-F9F:09F9FD&9F9I!F9I!32(GS
+M@'YX_W042(VV*`$``$B+?RCH`````,9#>/];PU-(B?.`?D3_=!1(C;:0````
+M2(M_*.@`````QD-$_UO#2(/L*$B)7"0(2(EL)!!,B60D&$R);"0@28G\2(GS
+M9H%^..$!#X76````#[9&.H/H$3P!#X?'````N?\```!F@7X@A0!W#4@/MT8@
+M#[:,.$`(``")R$AIP-````!(B<5)`ZPD0`D``('Y_P````^$8@$``/Y-14R-
+M;2A,B>_H`````$B)P4@YV'5+2(GN3(GGZ`````!,.6TH#X0V`0``QX60````
+M`"TQ`4C'A:``````````2(FMJ````$B-M9````!)BWPD*.@`````QD5$`.D`
+M`0``2(U5*$B+12A(B4@(2(D!2(E1"$B)32A(BU,(2(L#2(E0"$B)`NG6````
+MD+G_````9H%[((4`=PY(#[=#($(/MHP@0`@``(G(2&G`B`$``$B)Q4D#K"08
+M"0``BT,X)?___P`]X0$0``^5P('Y_P````^5P@^VP(7"#X2"````_DU[3(UM
+M($R)[^@`````2(G!2#G8=49(B>Y,B>?H`````$PY;2!T6L>%*`$````M,0%(
+MQX4X`0```````$B)K4`!``!(C;4H`0``28M\)"CH`````,9%>`#K)V:02(U5
+M($B+12!(B4@(2(D!2(E1"$B)32!(BU,(2(L#2(E0"$B)`DB+7"0(2(ML)!!,
+MBV0D&$R+;"0@2(/$*,-FD$B#[!A(B1PD2(EL)`A,B60D$$B)^TB)]4@/MT8P
+M9D0/MJ0X0`@``$$/M_1(:?:(`0``2`.W&`D``$B!QB`!``#H`````$@/MU4P
+M2(.\TT`$````=!Y(BX330`0``$B#N(``````=0Q(QX330`0```````!(#[=%
+M,,:$&$`(``#_00^W]$B-NY`/``#H`````$$/M\1(BY,8"0``2&G`B`$``(!\
+M$&K_=`Q(C3002(G?Z`````!(B>Y(B=_H`````$$/M\1(BY,8"0``2&G`B`$`
+M`,9$$$(`2(N3&`D``,9$$$,!2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9I!F
+M9I!!5T%6055!5%532(/L"$F)_4&)]T&^@````&9FD&9FD$$/M\9F0@^VA"A`
+M"```9CW_``^$ZP```&9!@?Z!``^'?`````^WP$AIP,@/``!)B<1-`Z5H"0``
+MO0````!!@'PD6``/AK<```!)C5PD2&:02(G?Z`````!(C4CP2(M3"$B)0PA(
+MB1A(B5`(2(D"BT%`)0#__P`]``#_`'45]D%#!'0/2(-Y.`!T"$B+03A$B'@!
+M_\5!.&PD6'>UZV-F9I`/M\!(:<#0````2(G"20.50`D``+T`````@'H[`'9!
+MD(GI#[;!2(M,PEA(A<ET)(M!0"4`__\`/0``_P!U%?9!0P1T#TB#>3@`=`A(
+MBT$X1(AX`?_%0#AJ.W?%9F:09I!!_\=!_\9F08'^A0`/AN[^__]-.:W0"```
+M=1))@<4`%```1(G^3(GOZ+/^__](@\0(6UU!7$%=05Y!7\-F9F:04TB)^T@/
+MMD9;9@^VM#A`"```QH0X0`@``/\/M_9(C;\`$```Z`````!(B[O0"```O@``
+M``#H9O[__UO#9F9FD%532(/L"$B)_4@/MT9`9@^VG#A`"```QH0X0`@``/\/
+MM_-(C;_(#P``Z``````/M]M(BY5`"0``2&G#T````(!\$%#_=`Q(C3002(GO
+MZ`````!(B[W0"```O@````#H_?W__TB#Q`A;7<-F9I!F9I"Y`````+K0````
+M2(GX9F:0B`A(_\!(_\IU]L9'1/_&1U#_2(U'*$B)1RA(B4<PPY!(@^PH2(E<
+M)`A(B6PD$$R)9"083(EL)"!(B?U(C;_(#P``Z`````"Z`````(3`#X71````
+M2(V]R`\``.@`````08G%NX+___\/ML.`O"A`"```_W40.)W@````<P^(G>``
+M``#K!__#@/N%=MRZ`````(#[A@^$BP````^VPT2(K"A`"```00^WQ4QIX-``
+M``!,B>=(`[U`"0``Z`````!(BY5`"0``9@^VPV9!B4040(!]40%U#TB+A4`)
+M``!F0<=$!$S__T$/M]U(BX5`"0``2&G;T````,9$`T(`2(N%0`D``&;'1`-.
+M``!(B[W0"```O@````#HQ?S__TB)VD@#E4`)``!(B=!(BUPD"$B+;"003(MD
+M)!A,BVPD($B#Q"C#9F9FD&9F9I!F9F:09F:02(/L"$@/MD8(9@^VM#C&"```
+MQH0XQ@@``/\/M_9(@<<X$```Z`````!(@\0(PV:0N0````"ZB`$``$B)^&9F
+MD(@(2/_`2/_*=?;&1WC_QD=J_\9'>A](C4<@2(E'($B)1RC#9F9FD&9FD&9F
+MD&9FD$%505154TB#[`A(B?U(C;^0#P``Z`````"Z`````(3`#X4_`0``2(V]
+MD`\``.@`````08G%NP````!F9I!F9I`/ML.`O"A`"```_W469@^VPV8YA=P`
+M``!S#6:)A=P```#K!/[#>=FZ`````(#[@`^$\`````^VPT2(K"A`"```00^W
+MQ4QIX(@!``!,B>=(`[T8"0``Z`````!(BY48"0``9@^VPV9!B404,$B+A1@)
+M``!!QD0$0@!(BX48"0``0<9$!&7_2(N%&`D``$'&1`1D_TB+A1@)``!!QD0$
+M9O](BX48"0``0<9$!&C_2(N%&`D``$'&1`1G_TB+A1@)``!!QD0$:?](BX48
+M"0``0<:$!.(`````2(N%&`D``$'&A`0'`0``_TB)[^@`````2(N5&`D``$F)
+MA!0@`0``@'U1`74-2(N%&`D``$&`3`1$`4$/M\5(:<"(`0``2(G"2`.5&`D`
+M`$B)T$B#Q`A;74%<05W#9F9FD&9FD&9FD&9FD%532(/L"$B)_4B-OP`0``#H
+M`````+H`````A,`/A1H!``!(C;T`$```Z`````")Q[Z`____B?(/ML*`O"A`
+M"```_W420#BUWP```',10(BUWP```.L(_\9`@/Z!=M>Z`````$"`_H(/A,\`
+M``")\@^VPD"(O"A`"```#[?'2&G`R`\``+D`````NL@/``!(`X5H"0``B`A(
+M_\!(_\IU]@^WWTAIV\@/``!(B=I(`Y5H"0``2(U"&$B)0AA(B=A(`X5H"0``
+M2(/`&$B)0`A(B=I(`Y5H"0``2(U"*$B)0BA(B=A(`X5H"0``2(/`*$B)0`A(
+MB=I(`Y5H"0``2(U"2$B)0DA(B=A(`X5H"0``2(/`2$B)0`A(BX5H"0``0(AT
+M`UM(B[W0"```O@````#H;OG__TB)VD@#E6@)``!(B=!(@\0(6UW#9F9FD&9F
+MD&9FD%-(B?M(C;\X$```Z`````"Z`````(3`#X7+````2(V[.!```.@`````
+MB<>^`````(GR#[;"@+P8Q@@``/]U$4`X<TQS$T"(<TSK#69FD&:0_\9`@/X#
+M=MBZ`````$"`_@0/A($```")\@^VPD"(O!C&"```#[?'2&G`J````+D`````
+MNJ@```!(C808H`$``(@(2/_`2/_*=?8/M]=(:=*H````2`':2(V"T`$``$B)
+M@M`!``!(B4`(2(V"Z`$``$B)@N@!``!(B4`(2(V"``(``$B)@@`"``!(B4`(
+M2('"H`$``$"(<@A(B=!;PV9FD$B#[!A(B5PD"$B);"002(G]2(V'"`$``+H`
+M````2#F'"`$``'0F2(V_"`$``.@`````2(G#2(G'Z`````!(B>_H`````$B)
+M0W!(B=I(B=!(BUPD"$B+;"002(/$&,-FD$B#[`A(C8<(`0``2(M0"$B)<`A(
+MB09(B58(2(DR2(-^<`!T#$B#QG#H`````&9FD$B#Q`C#9F9FD&9F9I!F9I!(
+M@^P(2(V'&`$``+H`````2#F'&`$``'032(''&`$``.@`````QD`0`$B)PDB)
+MT$B#Q`C#9F9FD&9F9I!F9F:02(L&2(''&`$``$B+5PA(B4<(2(DX2(E0"$B)
+M`DC'!@````##9F9FD&9F9I!F9F:02(/L"$B-ER@!``"X`````$@YER@!``!T
+M"$B)U^@`````2(/$",-F9F:09F:09F:02(L&2(''*`$``$B+5PA(B4<(2(DX
+M2(E0"$B)`DC'!@````##9F9FD&9F9I!F9F:02(/L"$B-ET@!``"X`````$@Y
+MET@!``!T(DB)U^@`````O@````"YH````$B)PF:00(@R2/_"2/_)=?5(@\0(
+MPTB!QT@!``!(BT<(2(EW"$B)/DB)1@A(B3##9F:09F:02(/L"$B-EU@!``"X
+M`````$@YEU@!``!T"$B)U^@`````2(/$",-F9F:09F:09F:02(L&2(''6`$`
+M`$B+5PA(B4<(2(DX2(E0"$B)`DC'!@````##9F9FD&9F9I!F9F:02(/L"$B-
+MAS@!``"Z`````$@YAS@!``!T%TB!QS@!``#H`````$C'0"``````2(G"2(G0
+M2(/$",-F9F:09F9FD$B+!DB!QS@!``!(BU<(2(E'"$B).$B)4`A(B0)(QP8`
+M````PV9F9I!F9F:09F9FD$B#[$A(B5PD&$B);"0@3(ED)"A,B6PD,$R)="0X
+M3(E\)$!(B?U)B?1F@7X@A0`/AYP```!(#[=&(("\.$`(``#_#X2)````9H-^
+M(']W(D@/MH0X0`@``$B+EQ@)``!(:<"(`0``2(M$$$@/MD`(ZV5F@7X@@0!W
+M)T@/MT8@2`^VA#A`"```2(N7:`D``$AIP,@/``!(BT00"`^V0`CK-D@/MT8@
+M2`^VA#A`"```2(N70`D``$AIP-````!(BX00B`````^V0`CK#&9F9I!F9I"X
+M_____P^VP$P/MK0HQ@@``$UI]J@```!-C;0NH`$``$B+E6@)``!,C;HXN`\`
+M9D&!?"0@A0!W&DD/MT0D($@/MH0H0`@``$AIP,@/``!,C3P"28M4)$@/MD(!
+M@_@2=!`]D0````^$)0$``.F0`0``28L&2(E$)`B]``````^V0@F(1"07#[92
+M&HA4)!9!O0````!!@'X.`'8_28U>8&:02(G?Z`````!(B<5(BT,(2(EK"$B)
+M70!(B44(2(DH3#E]4'4,#[9%>4$Z1"0E=`J00?_%13AN#G?'28-\)'@`=`])
+MBW0D>$B+?"0(Z`````!,B>9(BWPD".@`````#[:5P@```(U"`8B%P@```(#Z
+M`W<F@'PD%@!U'T$/ME0D)4B+=5!!N`````"Y`@```$R)]^@`````ZSH/MI7"
+M````C4(!B(7"````@/H"=B6`?"06`'4>QD5#`L9%0O^`943^2(GN2(M\)`CH
+M`````.FN````#[9,)!8/ME0D%TR)_DR)]^@`````Z90```!F9F:0N0````!!
+MO0````!!@'X.`'8[28U>8$B)W^@`````2(G!2(M#"$B)2PA(B1E(B4$(2(D(
+M3#EY4'4+#[9!>4$Z1"0E=`E!_\5%.&X.=\E(#[9!0*@"=!JH!'06J`%T$D$/
+MME0D)4B+<5!,B??H`````$F#?"1X`'0-28MT)'A(B>_H`````$R)YDB)[^@`
+M````2(M<)!A(BVPD($R+9"0H3(ML)#!,BW0D.$R+?"1`2(/$2,-F9F:09F:0
+M9F:09F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@28G\28GU2(LO2(GOZ```
+M``!(B<-(A<!T<4B)[^@`````2(G"2(7`=&%(C7M8QD,XX<9#.0'&0SH0QD,E
+MNV9!#[9%6V:)0R!)BP0D2(E#*,=#-)````!(C4(02(E#2$B)4WC&0`$`QD(0
+M0$C'@Z``````````O@````#H`````$B)WDB)[^@`````2(M<)`A(BVPD$$R+
+M9"083(ML)"!(@\0HPV9FD&:02(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D
+M($F)_$F)]4&)UDB++TB)[^@`````2(G#2(7`='5(B>_H`````$B)PDB%P'1E
+M2(U[6,9#..'&0SD!QD,Z$,9#);MF00^V15MFB4,@28L$)$B)0RC'0S20````
+M2(U"$$B)0TA(B5-XQD`!$,9"$$!$B'`)2,>#H`````````"^`````.@`````
+M2(G>2(GOZ`````!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(@\0HPV9FD&9F
+MD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?Q)B?5!B=9!
+MB<](BR](B>_H`````$B)PTB%P`^$@P```$B)[^@`````2(G"2(7`='-(C7M8
+MQD,XX<9#.0'&0SH01(AS)69!#[9%6V:)0R!)BP0D2(E#*,=#-)````!(C4(0
+M2(E#2$B)4WC&0`&1QD(00$2(<`E$B'@*2,>#H`````````"^`````.@`````
+M2(G>2(GOZ`````"_H(8!`.@`````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D
+M*$R+?"0P2(/$.,-F9I!FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H
+M3(E\)#!)B?Q)B?=)B<U!B=9(BR](B>_H`````$B)PTB%P'4/0<:%X0````'I
+MC````&:02(GOZ`````!(B<)(A<!U%4B)WDB)[^@`````0<:%X0````'K94B-
+M>UC&0SCAQD,Y`<9#.A!$B',E9D$/MD=;9HE#($F+!"1(B4,HQT,TD````$B-
+M0A!(B4-(2(E3>,9``1+&0A!`1(AP"4C'@Z``````````O@````#H`````$B)
+MWDB)[^@`````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F
+M9I!54TB#[`A(B?U(B?-F@7X@A0`/AY@```!(#[=&(("\.$`(``#_#X2%````
+M9H-^(']W(T@/MH0X0`@``$B+EQ@)``!(:<"(`0``2(M$$$AF#[9(".M@9H%^
+M(($`=RA(#[=&($@/MH0X0`@``$B+EV@)``!(:<#(#P``2(M$$`AF#[9(".LP
+M2`^W1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(````9@^V2`CK!;G_
+M````OO\```!F@7L@A0!W#D@/MT,@9@^VM"A`"```9H'Y_P!T'`^WP8"\*,8(
+M``#_#Y3"9H'^_P`/E,`)T*@!=!!(B=Y(B>_H`````.F(````#[?!2`^VO"C&
+M"```2&G_J````$B-O"^@`0``9@^V4SMF#[9#/,'@"`'"9H'B_P$/MD,]@_@!
+M=`6#^`AU0`^WTDB+A9`)``!(BP302#M#:'4L#[=(,HG*9L'J!0^WTH/A'TC'
+MP/[___](T\`A1)5<2(M#:`^W<#+H`````)!(B=Y(B>_H`````$B#Q`A;7<-F
+M9F:09F9FD&9FD&9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\
+M)#!)B?U)B?1!B==(BR](#[=&($@/MH0H0`@``$AIP(@!``!)B<9,`[48"0``
+M2(GOZ`````!(B<-!#[=4)#*)T&;!Z`4/M\"+1(5<B=&#X1](T_BH`0^%J0``
+M`$B%VP^$H````$B->UA!#[9$)"4/MHW>````T^`)T,9#..'&0SD!QD,Z#XA#
+M.V;!Z`B(0SQ$B'L]28N&U````$B)0SY,B6-HQD,EJD$/MT8P9HE#($F+10!(
+MB4,HQT,T`````$C'0T@`````2,>#H`````````"^`````.@`````2(G>2(GO
+MZ`````!!#[=,)#*)RF;!Z@4/M]*#X1^X`0```$C3X`E$E5Q(BUPD"$B+;"00
+M3(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9FD&9FD&9FD$B#["A(B1PD2(EL
+M)`A,B60D$$R);"083(ET)"!)B?Q(BT=(3(LP3(GWZ`````!(B<5(A<!U#D'&
+MA"3A`````>FC````3(GWZ`````!)B<5(A<!U'$'&A"3A`````4B)[DR)]^@`
+M````ZWUF9I!F9I!(C5U8QD4X)<9%):M!#[=$)#!FB44@3(EU*,=%-`@```#'
+MA90````(````28M%$$B)14A(C4`(2(E%4,9%,"1,B6UX2,>%H`````````"^
+M`````$B)W^@`````28MU&+H(````2(G?Z`````!(B>Y,B??H`````$B+'"1(
+MBVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F9FD&9F9I!F9F:02(/L*$B)'"1(
+MB6PD"$R)9"003(EL)!A,B70D($F)_$B+1TA,BS!,B??H`````$B)Q4B%P'4.
+M0<:$).$````!Z:L```!,B??H`````$F)Q4B%P'4<0<:$).$````!2(GN3(GW
+MZ`````#I@@```&9FD$B-75C&13B>QD4Y$,9%12#&126K00^W1"0P9HE%($R)
+M=2C'130@````QX64````"````$F+11!(B45(3(EM>$B-0"!(B450QD4P)$C'
+MA:``````````O@````!(B=_H`````$F+=1BZ(````$B)W^@`````2(GN3(GW
+MZ`````!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(@\0HPV9F9I!(@^PX2(E<
+M)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G\08GV2(M'2$R+*$R)[^@`
+M````2(G#2(7`=1%!QH0DX0````'IN@```&9FD$R)[^@`````2(G%2(7`=2!!
+MQH0DX0````%(B=Y,B>_H`````.F.````9F9FD&9FD$R->UC&0S@2183V=!/&
+M0SD!QD,Z@,9#/$#K"69FD&:0QD,\),9#):M!#[=$)#!FB4,@3(EK*,=#-&``
+M``#'@Y0````(````2(M%$$B)0TA(B6MX2,>#H`````````"^`````$R)_^@`
+M````2(MU&+I@````3(G_Z`````!(B=Y,B>_H`````$B+7"0(2(ML)!!,BV0D
+M&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F:09F:02(/L*$B)'"1(B6PD"$R)9"00
+M3(EL)!A,B70D($B)^TB+1TA,BS!,B??H`````$B)Q4&\``@``$B%P'4,QH/A
+M`````>G!````3(GWZ`````!)B<5(A<!U&,:#X0````%(B>Y,B??H`````.F:
+M````D&9!@?P``;C_````1`]#X,9%.!K&13D(QD4Z",9%.P!$B&4\QD4]`,9%
+M):L/MT,P9HE%($R)=2A%#[?D1(EE-,>%E`````@```!)BU402(E52$2)X$@!
+MT$B)15#&13`D3(EM>$C'A:``````````2(U=6+X`````2(G?Z`````!)BW48
+M1(GB2(G?Z`````!(B>Y,B??H`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D
+M($B#Q"C#9F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$F)_$B+1TA(BRA(
+MB>_H`````$B)PTB%P'4+0<:$).$````!ZU_&0#@5QD`EJT$/MT0D,&:)0R!(
+MB6LHN0$```"Z`0```$B)WDB)[^@`````A,!U&DB)WDB)[^@`````0<:$).$`
+M```!ZQIF9F:02,>#H`````````!(B=Y(B>_H`````$B+'"1(BVPD"$R+9"00
+M2(/$&,-F9F:09F:0N@0```!`#[;'@_@7=T>)P/\DQ0````"#PB3K.8/".)#K
+M,X/"$.LN@\(<ZRF#PDB0ZR.#PASK'H/"/.L9@\(DD.L3@\(8ZPZ#PA3K"8/"
+M2)#K`X/",(G0PV9F9I!F9F:02(/L&$B)7"0(2(EL)!!(B?U(B?.`?FK_=!,/
+MMG9J2(L_Z`````#&0VK__DU$2(M<)`A(BVPD$$B#Q!C#9F9FD$@/MD9`J`)T
+M#*@$=`BH`0^$ZP```(!^:O\/A>$```!(BP>+@!@!``")!0````!!B<&Y````
+M`+@!````9F:09I!!B<!!T^!%A<AU.8A.:DB+%T2)R$0)P(F"&`$``$B+!XN`
+M6`$``(D%`````$&)P44AP0^$?P```$B+!T2)B%@!``#K<__!@/D?=K5(BP>+
+M@!P!``")!0````!!B<&Y`````+@!````08G`0=/@187(=3Z-02"(1FI(BQ=$
+MB<A$"<")@AP!``!(BP>+@&`!``")!0````!!B<%%(<%T&4B+!T2)B&`!``#K
+M#69FD&9FD/_!@/D?=K#^1T1F9I!F9I#SPV9F9I!F9F:09F:09F:02(/L&$B)
+M7"0(2(EL)!!(B?U(B?.`?E#_=!,/MG902(L_Z`````#&0U#__DU$2(M<)`A(
+MBVPD$$B#Q!C#9F9FD(!^4/\/A=8```!(BP>+@!@!``")!0````!!B<&Y````
+M`+@!````08G`0=/@187(=36(3E!(BQ=$B<A$"<")@A@!``!(BP>+@%@!``")
+M!0````!!B<%%(<%T?4B+!T2)B%@!``#K<?_!@/D?=KE(BP>+@!P!``")!0``
+M``!!B<&Y`````+@!````9F9FD&9FD$&)P$'3X$6%R'4UB$Y02(L71(G(1`G`
+MB8(<`0``2(L'BX!@`0``B04`````08G!12'!=!-(BP=$B8A@`0``ZP?_P8#Y
+M'W:Y_D=$9F:09F:0\\-F9F:09F9FD&9FD&9FD$%455-)B?Q(BQ^]`````&:#
+M>U@`#X8B`0``9F:09F:0#[?52(N#D`D``$B#/-``#X3[````00^V3"0(2(L$
+MT&:!>""%``^'Q0```$@/MU`@@+P:0`@``/\/A+(```!F@W@@?W<M2`^VA!I`
+M"```2(N3&`D``$AIP(@!``!(BT002`^V0`@YR`^$BP```.F>````#[?52(N#
+MD`D``$B+!-!F@7@@@0!W*T@/MT`@2`^VA!A`"```2(N3:`D``$AIP,@/``!(
+MBT00"`^V0`@YR'1'ZUT/M]5(BX.0"0``2(L$T$@/MT`@2`^VA!A`"```2(N3
+M0`D``$AIP-````!(BX00B`````^V0`@YR'0+ZR&0@?G_````=1@/M\5(BY.0
+M"0``2(L\PKX`````Z`````#_Q68Y:U@/A^3^__];74%<PV9F9I!F9F:09F9F
+MD&9FD$B+5G!(A=)T'$B+1CA(B4(82(M&0$B)0B!(BT9(2(E"*,9"$`'SPV9F
+MD&9FD&9FD$B+5G!(A=)T&$B+0AA(B48X2(M"($B)1D!(BT(H2(E&2//#9F9F
+MD&9FD&9FD&9FD%532(/L"$B)_4B)\T@Y?B@/A,H```"`?B0`#X6G````#[9&
+M.(/X%70)@_A5#X65````2(M3<$B%T@^$B````(!Z$`$/A7X```!F@7H8X0&0
+M=75(BXT8"0``2(VQ>(8!`&:!>R"%`'<92`^W0R!(#[:$*$`(``!(:<"(`0``
+M2(TT`0^V0AJ#^`=T'X/X!W\'@_@&=![K,8/X#&9F9I!F9I!T((/X#702ZQYF
+M@V9B_6:0ZQ5F@TYB`NL.9H-F8O=FD.L%9H-.8@A(@WMX`'022(US>$B)[^@`
+M````9F:09F:09H%[..$!#X5F`0``9H%[((4`#X><````2`^W0R"`O"A`"```
+M_P^$B0```$B+E1@)``!(C;)XA@$`9H%[((4`=Q1(#[:$*$`(``!(:<"(`0``
+M2(TT`H![)`!U60^V0SJ#^`=T((/X!W\)@_@&="1FD.M"@_@,=#B#^`UF9I!F
+M9I!T%^LP9H-F8OUF9F:09F:0ZR)F@TYB`NL;9H-F8O=FD.L2#[?!ZV(/M\'I
+MIP```&:#3F((9H%[..$!#X6R````@'LZ"P^%J````$B)[@^W2R`/M]$/MD5&
+M_\C_P3G"?20/MD5&C5#_9H'YA0!W#0^WP8"\,$`(``#_=:</M\'_P3G0?..X
+M_P```&8]_P!T7TB)[@^W2R`/M]$/MD5&_\C_P3G"?2P/MD5&C5#_9F9FD&:!
+M^84`=Q$/M\&`O#!`"```_P^%7____P^WP?_!.=!\W[C_````9HE#(,9#)(!(
+MB=Y(B>_H`````.DR`0``QD,D`$@Y:RAT)TB+0W!(A<"0=!V`>!`!=0M(B=Y(
+MB>_H`````$B-<W!(B>_H`````$B#NX``````=`](C;.`````2(GOZ`````!(
+MBWLH2(G>_Y.@````9H%[..$!=6,/MD,Z@^@1/`%W6+K_````9H%[((4`=PU(
+M#[=#(`^VE"A`"```@?K_````#X2B````B=!(:<#0````2(G&2`.U0`D``(!^
+M10`/A84```"`?E#_='](B>_H`````.MU9F:09I"Z_P```&:!>R"%`'<-2`^W
+M0R`/MI0H0`@``(G02&G`B`$``$B)QD@#M1@)``"+0S@E____`#WA`1``#Y7`
+M@?K_````#Y7"#[;`A<)T(V:!>SCA`74+#[9#.H/H$3P!=A"`?GL`=0I(B>_H
+M`````&:02(/$"%M=PV9FD&9FD&9FD$B#[!A(B5PD"$B);"002(G[2(GU#[=6
+M,HG09L'H!0^W\(G1@^$?2,?`_O___TC3P"%$MUQF@?K_#W1%#[?Z2(N+D`D`
+M`$B#//D`=#1(QP3Y`````"&$LY@)```/M_)(C;M8#P``Z`````!(B>Y(B=_H
+M`````$B)[DB)W^@`````2(M<)`A(BVPD$$B#Q!C#D$%44TB#[`A)B?1(BY^0
+M$```2(''6`\``.@`````B<8/M\!(P>`&2`'828D$)+D`````ND````"("$C_
+MP$C_RG7V#[?&2(/$"%M!7,-F9F:00;@`````N`````!(@W]``'1;ZPQ)B<#K
+M,V9F9I!F9I!(BW=`N0````!F9F:09F:0#[;!2(-\QE@`=`I(BT3&6#A0>73/
+M_\&`^01VY$B+1T!F@7A`A0`/EL!-A<`/E<(/ML"%PK@`````20]%P//#D$B#
+M["!(B1PD2(EL)`A,B60D$$R);"0828G\28G-9@^V^L'F"(T\/KX`````08!\
+M)#``#X3H````28-\)%``#X3<````08N$))0```"H";@!````#T3PNP````!(
+MQ\4`````#[;+B?AF(T3-`&8[1,T`#X69````#[9$S04\`P^4PCP'#Y3`"="H
+M`70'0#ATS01U?4'&1"0D(`^VVP^V5-T&#[9TW05,B>?H`````$F+5"10#[9$
+MW0>(0@U-A>UT.TF+30!)BT0D4$B)RDC!ZB")4`-)BT0D4(`(@$'VA"26````
+M!'052(72=!!)BT0D4(E("$F+1"10@"!_28M4)%!!#[9$)#"#Z`>(0@?K$F:0
+M_\.`^P\/AD?___]F9I!FD$B+'"1(BVPD"$R+9"003(ML)!A(@\0@PV9F9I!F
+M9F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@2(G]2(GS9H%^((4`#X>6````
+M2`^W1B"`O#A`"```_P^$@P```&:#?B!_=R)(#[:$.$`(``!(BY<8"0``2&G`
+MB`$``$B+1!!(#[90".M?9H%^(($`=R=(#[=&($@/MH0X0`@``$B+EV@)``!(
+M:<#(#P``2(M$$`@/ME`(ZS!(#[=&($@/MH0X0`@``$B+ET`)``!(:<#0````
+M2(N$$(@````/ME`(ZP:0NO____^^_P```&:!>R"%`'<.2`^W0R!F#[:T*$`(
+M``"`^O\/A)<````/MLJ`O"G&"```_P^4PF:!_O\`#Y3`"="H`75[@'LD!G1U
+M3`^VI"G&"```36GDJ````$V-I"R@`0``#[?&2&G`B`$``$F)Q4P#K1@)``"`
+M>SH!=2>_"@```.@`````2(G>2(GOZ`````"Z`@```$R)[DR)Y^@`````ZQR_
+M]`$``.@`````2(G>2(GOZ`````!F9F:09F:02(M<)`A(BVPD$$R+9"083(ML
+M)"!(@\0HPV9F9I!F9I!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!)B?2)U4B+
+M'TB)W^@`````2(G"2(7`=%_&0#CAQD`Y`4"(:#K&0#L/00^W1"0P9HE"($B)
+M6BC'0C0`````2,="2`````!(QX*@`````````$B)UDB)W^@`````0(#]`74,
+MOP4```#H`````.L*OU##``#H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@2(/$
+M*,-F9F:09F9FD%532(/L"$B)_4B)\V:!?B"%``^'F````$@/MT8@@+PX0`@`
+M`/\/A(4```!F@WX@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!``!(BT002`^V
+M2`CK86:!?B"!`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(
+M#[9(".LR2`^W1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(````#[9(
+M".L(9F:0N?____^^_____V:!>R"%`'<-2`^W0R`/MK0H0`@``(#Y_W0A#[;!
+M@+PHQ@@``/\/E,)`@/[_#Y3`"="H`74&@'LD!G4@2(-[>`!T#$B-<WA(B>_H
+M`````$B)WDB)[^@`````ZVL/ML%(#[:\*,8(``!(:?^H````2(V\+Z`!``")
+M\@^VPDAIP(@!``!(B<9(`[48"0``@'LD`'0*N@$```#H`````$B#>W@`=!-(
+MC7-X2(GOZ`````!F9F:09F:02(G>2(GOZ`````!F9I!FD$B#Q`A;7<-F9I!F
+M9I!F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G_28GT
+M3(LW3(GWZ`````!(B<5(A<`/A(X```!,B??H`````$F)Q4B%P'412(GN3(GW
+MZ`````#K<69F9I!(C5U8QD4XX<9%.0'&13H.00^W1"0P9HE%(&9!@V0D8/=)
+MBP=(B44HQT4T``@``$F+11!(B45(3(EM>$C'A:``````````O@````!(B=_H
+M`````(M5-$F+=1A(B=_H`````$B)[DR)]^@`````2(M<)`A(BVPD$$R+9"08
+M3(ML)"!,BW0D*$R+?"0P2(/$.,-(@^P82(D<)$B);"0(3(ED)!!(B?U!B?1(
+MBT=(2(L82(G?Z`````!(B<)(A<!T1,9`.!O&0#D!1(A@/`^W13!FB4(@QH*8
+M````#TB)6BC'0C0`````2,="2`````!(QX*@`````````$B)UDB)W^@`````
+M2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9I!F9I!(@^P82(D<)$B);"0(3(ED
+M)!!(B?U(BT=(3(L@3(GGZ`````!(B<-(A<!T<$R)Y^@`````2(G"2(7`=13&
+MA>$````!2(G>3(GGZ`````#K3,9#.``/MT4P9HE#(,:#F`````],B6,HQT,T
+M`````$C'0T@`````2(M"$$B)0U#&0S`D2(E3>$C'@Z``````````2(G>3(GG
+MZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#D$%6055!5%5328G^28GU2(G3QD)#
+M`<9"0@"^!@```$R)[^@`````2(-[4`!T%DB+4QA(BT,02(E0"$B)`DB+0U#^
+M2%B`>WL`=!]F9F:09F:03(GWZ`````"_`0```.@`````@'M[`'7H2(.[&`$`
+M``!T'@^VLP4!``!(B[L8`0``N@$```#H`````&9FD&9FD$B#>U``=!D/MG-Y
+M2(M[4+H!````Z`````!F9F:09F:02(-[.``/A)D```!(BVLX2(.]@`````!U
+M>TB#O8@`````=7'V0T0$=21!_H;O$P``3(GWZ`````!(BT,X#[9P`;H!````
+M3(GWZ`````!(BT,X#[90`@^V<`%(Q\<`````N`````#H`````$B+4SA)B[;0
+M"```OP$```#H`````$B+4SA)B[;0"```OP8```#H`````$C'0S@`````2,=%
+M8`````!(@WM8`'022(M36$@/MD-Y2,=$PE@`````2(M3"$B+`TB)4`A(B0)!
+M_DT.2(G>3(GWZ`````!!@'T)_W150;P`````08!]#@!V.$F-;6!(B>_H````
+M`$B)PTB+10A(B5T(2(DK2(E#"$B)&(![0O]U"T'_Q$4X90YWU.L&13AE#G<0
+M0<9%"?],B>Y,B??H`````%M=05Q!74%>PY")\`^VP$B-!,!(P>`'!6!7``")
+M!\-F9F:09F9FD&9FD$&)T$B)^;\`````B?)(B<A(A=)T"T"(.$C_P$C_RG7U
+MB3&)\DB!ZF!7``!(N(_C.([C.([C2/?B2,'J"HA1!$0XPG8$1(A!!+H`````
+M@'D$`'8?#[;"QD0!!_](C03`2,'@!\:$",17``#]_\(X401WX<9!!@#&004`
+MN@````"0#[;"2&G`L````$B-A`@`0@``QD`+`8A0"O_"@/H?=N#SPV9F9I!F
+M9F:09F:09F:005154TF)]$B)^[T`````@'\$`'9#B>H/ML)(C03`2,'@!T@!
+MV("XQ%<``/UT(DB-N+Q7``"Z"````$R)YN@`````A,!T"D`/ML7K$69F9I#_
+MQ4`X:P1WO;C_````6UU!7,-F9F:09F9FD&9FD&9FD%-(B?OH`````+H)````
+M//]T$P^VP$B-!,!(P>`'#[:4&&97``")T%O#9F9FD&9FD$B#["A(B5PD"$B)
+M;"003(ED)!A,B6PD($F)_4B)\TB-MI````!)B=Q(BZN8````@'T&``^$3@$`
+M`$B)[^@`````B<$\_P^$/`$```^V0P&#^`%T<(/X`7\,A<!T*&9FD.DB`0``
+M@_@0#X21````/9`````/A-4```!F9F:09F:0Z0(!``"`O0M"````9F9FD`^%
+M\0```,:%"T(```'^308/MM%!N0````!!N`````"Y`````$R)[DB)[^@`````
+MZ<,```"`O0M"````#X6V````QH4+0@```?Y-!@^VT4&Y`````$&X`````+D!
+M````3(GN2(GOZ`````#IB````+H!````#[;"2&G`L````$B-A"@`0@``.$@(
+M=0L/MD`)03I$)`ET!__"@/H?=M?^308/MM%-B>%%#[9$)`FY$````$R)[DB)
+M[^@`````ZSE(#[:#J@```$AIP+````#&A"@+0@```?Y-!@^VT4&Y`````$&X
+M`````+F0````3(GN2(GOZ`````!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#
+M055!5%532(GU28G538G,08G)NP`````/ML-(:<!0$```2#EL."!U:+D`````
+M#[;#2&GP4!````^WP4C!X`5(`?!,C10X38U:0$$/MD,,A,`/E,(\\`^4P`G0
+MJ`%T(DF):C!-B6HX9D6)0P)%B$I`28L$)$F)0D1!QD,,_^L29I#_P6:!^8$`
+M=JYF9F:09F:0_\.`^P-V@%M=05Q!7<-FD$B#[`A)B?.)T$B)_DR-EV!!``#&
+MAPM"````0;D`````0;B0````3(G19F9FD&9FD$2("4C_P4G_R'7U0<9"`0!!
+MQ@)`2,>&`$(```````!(B;[X00``#[;`2(T$P$C!X`=(BX0PO%<``$B)AO!!
+M``!(@<9@00``3(G?Z`````!(@\0(PV9F9I!F9F:09F9FD$B#[`A)B?.)T$B)
+M_DR-EV!!``#&APM"````0;D`````0;B0````3(G19F9FD&9FD$2("4C_P4G_
+MR'7U0<9"`0%!Q@)`2,>&`$(```````!(B;[X00``#[;`2(T$P$C!X`=(BX0P
+MO%<``$B)AO!!``!(@<9@00``3(G?Z`````!(@\0(PV9F9I!F9F:09F9FD%53
+M2(/L"$B)]8G328GYN@$````/ML-(C03`28G#2<'C!P^VPDAIP+````!*C80(
+M`$(``(!X"P$/A;,```"(6`B(2`G&0`L`2`^V0`I(:<"P````3HV4"&!!``!!
+MN`````"^D````$R)T&9F9I!F9I!$B`!(_\!(_\YU]4'&0@$00<8"0$&(2@D/
+MMM)(:=*P````3`'*2(V*`$(``$@/MD$*2&G`L````$P!R$C'@`!"````````
+M2(FX^$$``$N+A`N\5P``2(F"\$$``$@/MG$*2&GVL````$J-M`Y@00``2(GO
+MZ`````#K%F9FD&9FD/_"@/H?#X8F____N`$```!(@\0(6UW#9F:09F:09F:0
+M055!5%532(/L"$F)]4F)U$R)S4&)R42)P4F)^KH!````#[;=#[;"2&G`L```
+M`$P!T$B-L`!"``"`?@L!#X62````QD8+`$R)D/A!``!(#[9&"DAIP+````!.
+MC9P08$$``$&X`````+Z0````3(G8D$2(`$C_P$C_SG7U0<9#`9!!Q@-`08A;
+M!D&(2P=%B$L)2(M%`$F)0Q`/MO)(:?:P````3`'62,>&`$(```````!(B;[X
+M00``28M$)%Q(B8;P00``2('&8$$``$R)[^@`````ZQ#_PH#Z'P^&1?___[@!
+M````2(/$"%M=05Q!7<.04TB)\TF)TT2)PDB)_DR-EV!!``!!N0````!!N)``
+M``!,B=!$B`A(_\!)_\AU]4'&0@$30<8"0`^VQD&(0@9!B%('08A*"4C'A@!"
+M````````2(F^^$$``$F+0UQ(B8;P00``2('&8$$``$B)W^@`````6\-F9F:0
+M9F9FD&9F9I`/MM(/MTQ6>/_!9HE,5GAF#[9&`@'(#[?`PV9FD&9FD+H!````
+MB=!(:<"P````@+PX"T(```%U"(G0PV9FD&:0_\*#^A]VWKC__P``9F9FD,-F
+M9F:09F9FD&9F9I!F9I"Y`0```(G(2&G`L````$B-A#@`0@``0#AP"'4*.%`)
+M=07&0`L!P__!@_D?9F:09I!VT_/#9F9FD&9F9I!F9F:02(/L6$B)7"0H2(EL
+M)#!,B60D.$R);"1`3(ET)$A,B7PD4$F)_TB)="0808G61(A$)!=)B?Q-B<T/
+MML)(C03`2,'@!X"\.,17``#]N/W___\/1,@/ML&#^!`/A)$"``"#^!!_'(7`
+M#X2D````@_@!D`^$/0$``.D%"0``9F:09I`]X@````^$9@@``#WB````?Q,]
+MD`````^$5P<``&9FD.G;"```/?\```!F9I!F9I`/A<H(```/ML)(C03`2,'@
+M!\:$.,17``#_@+\+0@```74?00^VUDB+="08Z`````"%P`^%F`@``$'^1P;I
+MCP@``$2)\0^VP<9$!P<!2(M4)!A(B53'$.EU"```9F:09I!(C8]@00``@+\+
+M0@```750#[;"2(T$P$C!X`=(`?@/ME$)B)!B5P``2`7`5P``#[91"H/B`8A0
+M!<9`!`!!#[;62(MT)!CH`````(7`#X4>"```0?Y'!ND5"```9F:09I`/ML+&
+M1`<'`4B+5"082(E4QQ#I^0<``$'&1`0'_P^VTDF+=,000;D`````0;@`````
+MN?\```!,B?_H`````.G-!P``NP````!(C9=@00``1(GQ#[;!2(T$P$C!X`=(
+MC0PX#[9",HB!LE<```^W0C!FB8&P5P``2(M"*$B)@:!7``!(BT(,2(F!<%<`
+M`$B+0A1(B8&`5P``2(M"'$B)@8A7``"+0B2)@9A7``#&@<17```!@'\&'P^$
+M5`<``("Y8E<```!T?4$/ML:)1"001(GR#[;"2(T$P$B)Q4C!Y0=)B<U,C;0]
+ML%<``&9F9I!F9I`/MLN+5"002(MT)!A,B?_H`````(7`=2#_PT'^1"0&03B=
+M8E<``'4*0<:%LU<```#K#D&(7@/K"$&(7@/K%&:008!\)`8?=`I".)PE8E<`
+M`'>N0<:$)`M"```!N@````!!@'PD!``/AK0&``!F9F:0#[;"08!\!`<!#X2H
+M_O___\)!.%0D!'?HZ9,&``!F9I#&1"0/_TF+01A(B40D(`^VPDB-!,!(P>`'
+M2(TL.$B-A<!7``#&0`000?9!#'`/A(`#``!(@[W(5P```'1Y#[98!DB+O<A7
+M``!(@\=<N@@```!(C70D(.@`````A,!U5T'V10\/=%!(BZW(5P``2(7M=$2`
+M?64`=#0/MMN)VDB)[DR)Y^@`````38U-&$0/M\")V4B)ZDB+="083(G_Z```
+M```/MEUF2(MM:.L%O0````!(A>UUO$$/ME4/]L(-#X0<`0``1(GQ#[;!2(T,
+MP$B)R$C!X`=,`>"`N&!7```?#X?[````#[:88%<``/;""'06#[;#2(T$R$C!
+MX`1"QH0@X%D```;K'D2)\@^VP@^VTTB-!,!(C03"2,'@!$+&A"#@60``!T2)
+M\`^VR`^VPTB-#,E(C13(2,'B!$P!XDB-LN!9``#&1@$`00^V10^(1@-(BT0D
+M($B)@NA9``!!#[9%"8A&`DC!X0=!#[9%#8/@#T(/MI0A9E<``#C"#T?0@^(/
+M#[9&!(/@\`G0B$8$1(GR#[;"2(T$P$B)\4C!X`>^#P```$$B=2E"#[:4(&97
+M``!`./(/1];!X@0/MD$$@^`/"="(001$B?$/ML%(C03`2,'@!T+^A"!@5P``
+MZ=,!``!!]D4/`@^$R`$``$B-="0@3(GGZ`````!!B<`\_P^%4@$``,9$)`\`
+M08!\)`0`=C=(#[9$)`](C03`2,'@!T(/MH0@Q%<``#S_#Y3"//T/E,`)T*@!
+M=1#^1"0/#[9$)`]!.$0D!'?)2`^V1"0/2(T$P$C!X`>Y`````+ID````2HV$
+M(&!7``"("$C_P$C_RG7V2`^V5"0/2(T4TDC!X@=,`>)$B?$/ML%(C03`2,'@
+M!TP!X$B-N&!7``!(B;K(5P``2(N(O%<``$B)BK17``!(BTPD&$B)BMA9``!(
+MBX#05P``2(F"T%<``,:"Q%<``/](C8I@5P``2`^V<0=!#[9%"8B$,FA7``#^
+M00=!#[95#8/B#P^V1P8XT`]'PHA!!D@/MD0D#TB-!,!(P>`'3`'@2(M4)"!(
+MB9"\5P``00^V50^(D&-7```/ME0D%XB0QE<``$$/MD0D!4$Z1"0$=09!QD0D
+M!0!!_D0D!>M+QD4#`.D[`P``1(GQ#[;12(T4TDC!X@</ML!(C03`2,'@!TJ-
+M-"!(C8Y@5P``2CF,(LA7``!T%$@/ME$'00^V10F(A!9H5P``_D$'08#X_W46
+M2`^V1"0/0<9$!`<!2(M4)!A)B53$$$$/ME4)00^V]DR)Y^@`````1(GQ#[;!
+M2(G"2(T$P$C!X`=*C0P@2(V!L%<``(!X`P`/A+8```!!@'PD!A\/A)H"```/
+MMD`#.H%B5P``#X.*`@``10^V[DF)UF9FD$B-!-)(P>`'2HT<(,:#Q%<``!!(
+MC:NP5P``#[9-`T2)ZDB+="083(G_Z`````"%P`^%2@(``$'^1"0&#[9%`__`
+M#[:38E<``#G0#X3L_O__3(GR2XT$]DC!X`=*C30@2(V&L%<```^V2`/_P8A(
+M`T&`?"0&'P^$!0(``#J.8E<```^">?___^GT`0``9F9FD$&`?"0&``^%Y`$`
+M`$$/MM9!N0````!!N`````"YD````$B+="083(G_Z`````#IO0$``$'&1`0'
+M_P^VTDF+=,000;D`````0;@`````N?\```!,B?_H`````,9$)`<!Z<L```#&
+M1"0'`,=$)`@`````BT0D"$AIP%`0``!(BU0D&$HY5"`@=6>]`````(M$)`A,
+M:>A0$```B>A(P>`%3`'H3`'@2(U80(![#/]U-T&`?"0&'P^$-@$```^V2$!,
+MC4A$1`^W0P)(BU`X2(MT)!A,B?_H`````(7`=0E!_D0D!L9##/#_Q8']@0``
+M`':I_T0D"(-\)`@##X9S____08!\)`8`#X7F````N@````!!@'PD!`!V&`^V
+MPD&`?`0'`0^$#?_____"03A4)`1WZ(!\)`<`#X6V````00^VUD&Y`````$&X
+M`````+GB````2(MT)!A,B?_H`````.F/````NP````"`?P0`=CMF9F:0#[;#
+M2(T$P$C!X`=*C8P@P%<```^V402`^OT/E<"`^O\/E<(/ML"%PG0$QD$$_O_#
+M03A<)`1WR42)\0^VP4B-!,!(P>`'2HNL(-!7``"[``````^VPTAIP%`0``!,
+M`>!(C5`@@'H(`74-QD((`$B+<"!,B?__U?_#@/L#=M5F9I!(BUPD*$B+;"0P
+M3(MD)#A,BVPD0$R+="1(3(M\)%!(@\18PV9F9I!F9I!F9I!F9I!!B='&`?ZZ
+M`````$&X`````(!_!`!V,P^VPDB-!,!(P>`'2`'X2#FPV%D``'4513C(=0T/
+MMH#$5P``B`'#9F:00?_`_\(X5P1WS?/#9F9FD%532(/L"$F)TTR)Q4&)R$B)
+M^P^V1P4Z1P1U!,9'!0`/MDL%N@`````/ML)(:<!0$```2`'83(U(($@Y<"!U
+M04'&00@!N0````"`>P0`=E\/ML%(C03`2,'@!T@!V$@YL-A9``!U#@^V@,17
+M``"#P`,\`78Z_\$X2P1WU.LQ9F:0#[;"2&G`4!```$@!V$R-2"!(@W@@`'4+
+M2(EP($'&00@!ZPO_PH#Z`P^&>O___P^VPDAIP%`0``!!N@````!!N0(0``!(
+MC408,&9F9I!F9I!$B!!(_\!)_\EU]0^VP4B)=,,02(T$P$C!X`=!N@````!!
+MN60```!(C8088%<``$2($$C_P$G_R77U#[;!2(T$P$C!X`=!N@````!!N0`"
+M``!(C808V%<``$2($$C_P$G_R77U#[;!2(T$P$C!X`=(`=A(B;#860``2(FH
+MT%<``,:`Q%<``/](QX#(5P```````$F+$TB)D+Q7``!$B(!F5P``#[;10;D`
+M````0;@`````N?\```#H`````/Y#!4B#Q`A;7<-F9F:09F:09F:04[L`````
+M@'\$``^&D0````^VPTB-!,!(P>`'2#FT.-A9``!U<;H!````#[;"2&G`L```
+M`$B-A#@`0@``.%@(=03&0`L!_\*`^A]VW@^VPTB-!,!(P>`'2`'X2,>`V%D`
+M``````"Y`````+ID````2(V`8%<``(@(2/_`2/_*=?8/ML-(C03`2,'@!\:$
+M.,17``#]_D\%_\,X7P0/AV____^[``````^VPTAIP%`0``!(`?A(C5`@2#EP
+M('4Q2,=`(`````#&0@@`N@`````/ML-(:<A0$```#[;"2,'@!4@!R,9$.$P`
+M_\*`^H%VZO_#@/L#=K%;PV9FD&9FD&9FD%-)B?E!N@````"_`````(#Z`0^%
+M*`$``$V%P`^$`P$``$&`>00`=BA$B=(/ML)(C03`2,'@!THYM`C860``=0=`
+M.,]T"__'0?_"13A1!'?81(G0#[;(2(G/2(T,R4C!X0=,`<E(C9%@5P``2(N!
+M8%<``$F)`$B+0@A)B4`(2(M"$$F)0!!(BT(828E`&$B+0B!)B4`@2(M"*$F)
+M0"A(BT(P28E`,$B+0CA)B4`X2(M"0$F)0$!(BT)(28E`2$B+0E!)B4!02(M"
+M6$F)0%B+0F!!B4!@NP````"`N6!7````=D(/ML-(B<%(P>$$3`'!2(TT_TB-
+M!/!(P>`$3`'(2(N0X%D``$B)461(BX#H60``2(E!;/_#2,'F!T(XG`Y@5P``
+M=[Y$B=(/ML)(C03`2,'@!T(/MH0(8%<``.LZ9F:00;H`````NP````!!@'D$
+M`'8A#[;#2(T$P$C!X`=*.;0(V%D```^4P$$!PO_#03A9!'??00^VPEO#D)"0
+MD)"0D$B+%TR+`KD`````@'I#`'862`^V=PU(B?!(T_BH`74'_\$X2D-W[X#Y
+M`W8D2(T$C0`````E_`,``$*+A`#0`0``B04`````ZR)F9F:09F:02(T$C0``
+M```E_`,``$*+A`#0`0``B04`````J0``$``/E<`/ML##9F:09F:09F:005=!
+M5D%505154TB#[`A(B3PD3(LO38ME`,9&00#&1D`%QD9#!DB+!"1(B49(0;\`
+M````0;X`````NP````!!@'U#`'8?2(L,)$@/ME$-9I!(B=")V4C3^*@!=0C_
+MPT$X74-W[(#[`W8;2(T$W0`````E^`<``$+'A"```@``+````.L92(T$W0``
+M```E^`<``$+'A"```@``+````+\0)P``Z`````"`^P-V)$B-!-T`````)?@'
+M``!"BX0@!`(``(D%``````^VZ.LB9F9FD$B-!-T`````)?@'``!"BX0@!`(`
+M`(D%``````^VZ$$)[H#[`W8;2(T$W0`````E^`<``$+'A"```@``)````.L9
+M2(T$W0`````E^`<``$+'A"```@``)````+\0)P``Z`````"`^P-V)TB-!-T`
+M````)?@'``!"BX0@!`(``(D%`````(G%@>7___\`ZR5FD$B-!-T`````)?@'
+M``!"BX0@!`(``(D%`````(G%@>7___\`B>C!X`A!"<:`^P-V($B-!-T`````
+M)?@'``!"QX0@``(``"````#K'F9FD&:02(T$W0`````E^`<``$+'A"```@``
+M(````+\0)P``Z`````"`^P-V'TB-!-T`````)?@'``!"BX0@!`(``(D%````
+M`(G%ZQU(C03=`````"7X!P``0HN$(`0"``")!0````")Q4&!_@$!:99U%TB+
+M!"2`2`P&B>C!Z!`\4`^4P`^VP.M`08'^`0$``'43B>C!Z!`\4`^4P`^VP.LH
+M9F9FD+^($P``Z`````!!_\=!@/\$#X;,_?__B>C!Z!`\4`^4P`^VP$B#Q`A;
+M74%<05U!7D%?PV9F9I!F9I!F9I!F9I!54TB#[`A(B?U(BQ_H`````(3`=1'&
+M10G_2(GN2(G?Z`````#K;+D`````@'M#`'862`^V50U(B=!(T_BH`74'_\$X
+M2T-W[TB)W^@`````2(G&2(7`=#M(C45@2(M0"$B)<`A(B09(B58(2(DR_D4.
+M2(EN2,9&0`7&1D$`QD9Y#[D!````N@$```!(B>_H`````$B#Q`A;7<-F9F:0
+M9F:0055!5%532(/L"$F)_$B)]4R++[L*````2(GN3(GGZ`````"$P'4.O^@#
+M``#H`````/_+=>.Y`````$&`?4,`=AA)#[94)`U(B=!(T_BH`74(_\%!.$U#
+M=^Y(BU4(2(M%`$B)4`A(B0)!_DPD#DB)[DR)[^@`````0?9$)`P"=%5)@WPD
+M0`!U($R)[V9FD&:0Z`````!(B<9(A<`/A(\!``!)B40D0.L%28MT)$!,B2Y,
+MB::(````QD9&`,9&1P#&1D(`9H-.3@1,B>_H`````.E;`0``28-\)$``#X3@
+M````28MT)$!(@<:0````28M]*.@`````28MT)$!,B>_H`````$F-1"1@2(G"
+M23E$)&`/A*(```!(B<-F9F:09F:02(G7Z`````!(B<5(@W@X`'1H2(M`.$C'
+M0&``````]D5$!'4D0?Z%[Q,``$R)[^@`````2(M%.`^V<`&Z`0```$R)[^@`
+M````2(M5.$F+M=`(``"_`0```.@`````2(M5.$F+M=`(``"_!@```.@`````
+M2,=%.`````!!_DPD#DB)[DR)[^@`````2(G:23E<)&`/A6C___])QT0D0```
+M``!!@'PD#@!T%$F-?"1@Z`````!(B<5!_DPD#NL+3(GOZ`````!(B<5(A>UT
+M0TF-1"1@2(M0"$B):`A(B44`2(E5"$B)*D'^1"0.3(EE2,9%0`7&14$`QD5#
+M!L9%0@-(B>Y,B>_H`````&9F9I!F9I!(@\0(6UU!7$%=PV9FD&:02(/L.$B)
+M7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)_$F)]4&)UD&)STB+!TB)
+M!"2Z`````+T`````@'\.`'9$2(U?8&9F9I!F9I!(B=_H`````$B)PDB+0PA(
+MB5,(2(D:2(E""$B)$$PY:E!U#40X<GET$&9F9I!F9I#_Q4$X;"0.=\=!.&PD
+M#F:0="Y!@/]0=2C&0D,&QD)"!<9"0`?&0D$`3(EJ4$R)8DA(B=9(BSPDZ```
+M``!F9F:02(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:0
+M9F:09F:09F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)
+M_4F)]DR+)T&______[N`____O?____^`^X5W#`^VPT(/MJP@0`@``$"`_?]T
+M-8GJ#[;"28N4)&@)``!(:<#(#P``3#EL$`AU&DB-/!"Z"````$R)]N@`````
+MA,!T!4&)[^L+_\.`^X%F9F:0=J1!#[;'2(M<)`A(BVPD$$R+9"083(ML)"!,
+MBW0D*$R+?"0P2(/$.,-F9F:09F:005=!5D%505154TB![$@"``!)B?Y(B70D
+M.(A4)#=(BT<(2(E$)"A,BR@/ME=8B%0D)TB-1TA(B<)(.4=(#X1L`@``@'PD
+M)P`/A&$"``!,C7PD0$B)1"0(2(D$)&9FD&:02(G7Z`````!(C6CP#[9,)#=-
+MB?BZ`0```$B+="0H2(M\)#CH`````$&\`````(!\)$``#X;M````2(U5$$B)
+M5"082(M,)`A(B4PD$&9F9I!$B>(/ML)(P>`$2HT<.$B->VRZ"````$B-M<P`
+M``#H`````(3`#X2=````2(U38`^V0@B#X`^(A>(````/MTU@9H'AW_V)R(/(
+M$&:)16`/MD((P.@$/`EU"8G(@\@P9HE%8$2)X0^VP4C!X`1"#[9$.&C`Z`0\
+M"G4&9H%-8``"2(M4)!!(BT((2(M,)!A(B4H(2(E5$$B)00A(B0@/MD5$J`)T
+M,H/@_8A%1$B#?3@`="5(BU4X28NUT`@``+\&````Z`````#K#D'_Q$4X)P^'
+M+/___^L)13@G#X<&`0``2(GJO@8```!(BWPD*.@`````@'U[`'083(GOZ```
+M``"_`0```.@`````@'U[`'7H2(.]&`$```!T&`^VM04!``!(B[T8`0``N@$`
+M``#H`````$B#?5``=!@/MG5Y2(M]4+H!````Z`````!F9I!F9I!(@WTX`'1H
+M2(M%.$C'0&``````]D5$!'4D0?Z%[Q,``$R)[^@`````2(M%.`^V<`&Z`0``
+M`$R)[^@`````2(M5.$F+M=`(``"_!@```.@`````2(M5.$F+M=`(``"_`0``
+M`.@`````2,=%.`````!(BU4(2(M%`$B)4`A(B0)(BT0D*/Y(#D'^3EA(B>Y,
+MB>_H`````/Y,)"=(BQ0D23E62'0+@'PD)P`/A;+]__](@<1(`@``6UU!7$%=
+M05Y!7\-!5T%6055!5%532('L.`(``$B)?"0H28GU2(E4)"!(BP=(B40D&,9$
+M)!<`2(U<)#!$#[;A28G81(GAN@$```!(B?Y,B>_H`````$F)WD2)XDR)[DB+
+M?"0@Z`````!(BTPD($B+44A,C7KP2(G(2(/`2$@YPG0]2(G!9F9FD&9FD$$/
+MMD=!/`T/E,(\(@^4P`G0J`%T$<9$)!<!0<9'0@5!QD=#!.L-28M'$$R->/!(
+M.<AUS;T`````08`^``^&#`(``$B+1"0@2(/`2$B)1"0(2(D$)$B+3"0@2(M!
+M2$R-8/!(.T0D"'0YB>H/ML)(B<-(P>,$3(LL)$F-O"3,````N@@```!*C70S
+M;.@`````A,!U#DF+1"003(U@\$PYZ'7728U$)!!(.T0D"`^%D@$``,9$)!<`
+M2(M\)!CH`````$F)Q$B%P`^$E@$``$B+3"0H_D$.QD!"!<:`X`````#&0$,$
+M9L>`P```````QH#"`````$C'0'````4`B>H/ML)(P>`$2HU$,&`/ME`$08A4
+M)$`/ME`%08A4)$%)B4PD2`^V4`B#X@]!B)0DX@```$$/MTPD8&:!X=_]B<J#
+MRA!F08E4)&`/MD`(P.@$/`EU"XG(@\@P9D&)1"1@B>D/ML%(P>`$0@^V1#!H
+MP.@$/`IU"&9!@4PD8``"2(M$)"!)B40D4(GJ#[;"2,'@!$P!\`^V4&9!B%0D
+M>4B+0&Q)B80DS````$F)A"3$````2(M,)"#^05A(BT0D*$B#P&!(BU`(3(E@
+M"$F)!"1)B50D"$R)(DF-1"002(M,)`A(BU$(2(E!"$F)3"002(E0"$B)`DD/
+MMD0D0*@"=">H!'0CJ`%T'T$/ME0D>4R)X4B+="0@2(M\)"CH`````.LH9F:0
+M9I!)#[9$)$"H`G09J`1F9F:0=!&H`74-3(GF2(M\)!CH`````/_%03@N#X<&
+M_O__@'PD%P!T#;X*````3(G_Z`````!(@<0X`@``6UU!7$%=05Y!7\-F9F:0
+M9F9FD&9F9I!!5T%6055!5%532('L2`(``$F)_$B)="0X3(LO#[9'*(A$)#=(
+MC4=(2(G"2#E'2`^$1@,``(!\)#<`#X0[`P``2(E$)!!(B40D"$B)U^@`````
+M2(UHR$&X`````+D`````N@````!,B>9(BWPD..@`````08G'0;X`````03C&
+M#X/<`0``2(U4)$!(B50D*$B-33A(B4PD($B+1"002(E$)!A!#[;>0;@`````
+MB=FZ`0```$R)YDB+?"0XZ``````/ML!(P>`$2(/`9$@]``(```^'7P$``$R+
+M1"0HB=FZ`0```$R)YDB+?"0XZ`````!(BUPD*$B->URZ"````$B)[N@`````
+MA,`/A"@!``!(BU0D&$B+0@A(BTPD($B)2@A(B54X2(E!"$B)"`^V1"1"B$59
+M2(US5$R)Y^@`````//]T%0^VP$AIP,@/``!)`X5H"0``2(E%$$6$]G11#[9#
+M`]'H@^`!P>`$#[9578/B[PG"B%5=#[9#`\'H`X/@`<'@!8/BWPG"B%5=#[9#
+M`\'H`H/@`<'@`X/B]PG"B%5=#[9#!HB%NP```.F6````#[9#`HA%64R)90@/
+MMD,&B(6[````#[=#!(E%8`^W0U!FB86X````#[9#4HB%N@```$B+0T!(B86H
+M````2(M#2$B)A;````!(BT,02(E%>$B+0QA(B86`````2(M#($B)A8@```!(
+MBT,H2(F%D````$B+0S!(B868````2(M#.$B)A:````#K#D'_QD4X_@^"8/[_
+M_^L=00^VSDB)ZDB+="0X3(GGZ`````!%./X/@O\```!(C45(2(G"2#E%2`^$
+MW@```$F)QDB)U^@`````2(U8\$B)VKX&````3(GGZ`````"`>WL`=!A,B>_H
+M`````+\!````Z`````"`>WL`=>A(@WLX`'1L2(M#.$C'0&``````]D-$!'4H
+M0?Z%[Q,``$R)[^@`````2(M#.`^V<`&Z`0```$R)[^@`````9F9FD$B+4SA)
+MB[70"```OP$```#H`````$B+4SA)B[70"```OP8```#H`````$C'0S@`````
+M2(M3"$B+`TB)4`A(B0)!_DPD#OY-6$B)WDR)[^@`````3(GR3#EU2`^%)?__
+M_T'^3"0H2(GN3(GOZ`````#^3"0W2(M4)`A).50D2'0+@'PD-P`/A<_\__](
+M@<1(`@``6UU!7$%=05Y!7\-F9I!!5T%6055!5%532('L*`(``$F)_DB)]4B+
+M!DB)1"082(G^2(GOZ`````!!N`````"Y`````+H`````2(GN3(GWZ`````"(
+M1"070;P`````03C$#X-&`P``2(U58$B)%"1!#[;<0;@`````B=FZ`0```$B)
+M[DR)]^@`````#[;`2,'@!$B#P&1(/0`"```/A_T"``!,C40D((G9N@$```!(
+MB>Y,B??H`````$R-;"0@28UU7$B)[^@`````//\/A<T"``!(BWPD&.@`````
+M2(G#2(7`#X3<`@``_D4HQD!8`$B+1"1\2(D#28UU5$B)[^@`````//]T&@^V
+MP$AIP,@/``!(BU0D&$@#@F@)``!(B4,000^V10*(0UE!#[9%`]'H@^`!P>`$
+M#[9378/B[PG"B%-=00^V10/!Z`.#X`'!X`6#XM\)PHA374$/MD4#P>@"@^`!
+MP>`#@^+W"<*(4UU(B6L(00^V10:(@[L```!)BT4(2(E#<$$/MD4'B$-:00^W
+M102)0V!!#[=%4&:)@[@```!!#[9%4HB#N@```$F+14!(B8.H````28M%2$B)
+M@[````!)BT402(E#>$F+11A(B8.`````28M%($B)@X@```!)BT4H2(F#D```
+M`$F+13!(B8.8````28M%.$B)@Z````!(C5,X2(U%2$B+2`A(B5`(2(E#.$B)
+M2@A(B1%FQT0D%```08!]```/A'$!``!(BP0D2(E$)`A,C7M(9F9FD$B+?"08
+MZ`````!(B<%(A<`/A&\!``#^10[&0$(%QH#@`````,9`0P1(QT!P```%`&;'
+M@,```````$@/MU0D%$C!X@1*C50J8`^V0@2(04`/MD(%B$%!2(EI2$B)65`/
+MMD(&B$%Y#[9""(/@#XB!X@````^W<6!F@>;?_8GP@\@09HE!8`^V0@C`Z`0\
+M"74)B?"#R#!FB4%@2`^W1"042,'@!$(/MD0H:,#H!#P*=09F@4E@``)(#[=$
+M)!1(P>`$2HM$*&Q(B8',````2(F!Q````/Y#6$B+5"0(2(M""$B)2@A(B1%(
+MB4$(2(D(2(U!$$F+5PA)B4<(3(EY$$B)4`A(B0)(#[9!0*@"=!FH!'05J`%T
+M$0^V47E(B=Y(B>_H`````.L>2`^V04"H`G05J`1T$:@!=0U(B<Y(BWPD&.@`
+M````9O]$)!1F00^V10!F.T0D%`^'I_[__V9F9I!F9I!!_\1$.F0D%P^"POS_
+M_X!]#@!U$<9%"?](B>Y(BWPD&.@`````2('$*`(``%M=05Q!74%>05_#9F:0
+M9F:09F:0055!5%532(/L"$F)_4B)]4&X`````+D`````N@````#H`````$&)
+MQ+L`````.,-S)0^VTTB-3"0'2(GN3(GOZ`````"`?"0'_@^%D0```/_#1#CC
+M<MO^35B`?5@`=&A,BV4`QD58`$B+54A(C5K(2(U%2$@YPG1H2(G"9F:09I!(
+M@WL0`'0/2(M#.$B-6,A(.=!U[.M*_D582(GN3(GOZ``````/MHN[````28N\
+M)&@0``!)Q\``````2(G:2(GNZ`````#K&4B)[DR)[^@`````2(GN3(GOZ```
+M``!F9I!(@\0(6UU!7$%=PV9FD&:02(L7O@H```"Y`````(!Z0P!V-4@/MG\-
+M2(GX2-/XJ`%T'P^VP4AKP&B+A!!L$@``)0```P#!Z!"#P`A`./`/0O#_P3A*
+M0W?00`^VQL-F9I!(BQ>^"````+D`````@'I#`'8U2`^V?PU(B?A(T_BH`70?
+M#[;!2&O`:(N$$&P2```E```#`,'H$(/`"$`X\`]'\/_!.$I#=]!`#[;&PV9F
+MD$B#[%A(B5PD*$B);"0P3(ED)#A,B6PD0$R)="1(3(E\)%!)B?U,BR=!OP``
+M``"`?PT`#X2=`P``O0`````/MD<-B<*H`74,_\6)T(GIT_BH`73TB>H/ML)(
+M:\!H2HV4(%`2``"+0@RI```"`'0-#0``!``E___]_XE"#(GI#[;!2&O`:$+V
+MA"!>$@``!`^$CP(``$V-M"0`%```33FD)-`(``!T"$V+M"30"```B>H/ML)(
+M:\!H3`'@1`^VB&(2``!$#[:`81(```^VB&`2``!!#[94)$%`#[;U#[:X9Q(`
+M`(E\)"`/MKAF$@``B7PD&`^VN&42``")?"00#[:X9!(``(E\)`@/MH!C$@``
+MB00D2,?'`````+@`````Z`````!!N(````")Z0^VP4AKP&A.C8P@8!(``/Q!
+M#[?`9D(/MH0P0`@``&8]_P!T+P^WP$AIP,@/``!(B<-)`YYH"0``2(G>3(G/
+MN0@```#SI@^7P@^2P#C"#X14`0``0?_`9D&!^($`=K),B>?H`````$B)PTB%
+MP`^$.@(``(GJ#[;"2&O`:$+VA"!=$@``!'0$@$M=`HGI#[;!2&O`:$+VA"!>
+M$@``!'0$@$M=$(GJ#[;"2&O`:$+VA"!=$@``"'0$@$M=!(GI#[;!2&O`:$+V
+MA"!>$@``"'0$@$M=((GJ#[;"2&O`:$+VA"!=$@```G0$@$M=`8GI#[;!2&O`
+M:$+VA"!>$@```G0$@$M=",9#6`")Z@^VPDAKP&A*BX0@8!(``$B)`TR):PA,
+MB>_H`````(B#NP```$'^12BY`````$&`?"1#`'8E20^V10U(T_BH`7001(GZ
+M#[;"B$P8</Y#6D'_Q__!03A,)$-WVTB-4SA)C45(2(M("$B)4`A(B4,X2(E*
+M"$B)$4'^15@/MHN[````28N\)&@0``!)Q\``````2(G:3(GNZ`````#I!0$`
+M`$0/MDL$1`^V0P,/MDL"#[93`0^V,P^V0P>)1"00#[9#!HE$)`@/MD,%B00D
+M2,?'`````+@`````Z`````!!QD4)_TR)[DR)Y^@`````Z;,```")Z0^VP4AK
+MP&A*C2P@]H5>$@``"`^$F0```$R)Y^@`````2(G#2(7`#X2%````QD!#!L9`
+M0@5FQX#```````#&0$`&QD!!`$C'0'````4`2(N%8!(``$B)@\P```!(B8/$
+M````3(EK2$R)[^@`````B(/B````9H-+8!!,B>_H`````#P)=@9F@4M@``)!
+MQD4.`4F-16!(BU`(2(E8"$B)`TB)4PA(B1I(B=Y,B>?H`````$B+7"0H2(ML
+M)#!,BV0D.$R+;"1`3(MT)$A,BWPD4$B#Q%C#9F9FD&9F9I!!5T%6055!5%53
+M2(/L"$B)^TF)];@`````2(7V=`0/MD8)#[;`0;P`````A<!T$3W_````#X1L
+M`0``Z=$%``"01(GB#[;"#[:$&,8(```\_W02#[;`2&G`J````$R-K!B@`0``
+M0?_$08#\`W;30;P`````1(GB#[;"#[:$&,8(```\_W0S#[;`2&G`J````$R-
+MK!B@`0``0?9%"@)T$KX`````3(GOZ`````#K"V9FD$R)[^@`````0?_$08#\
+M`Y!VL68/MD,^9CF#0!````^%/`4``$V%[0^%M````(![40`/A2D%``#&0U$!
+MO0`````/M]5(B[330`0``$B%]G0X2(.^@`````!T+DB+AH````!(QX:`````
+M`````$C'A--`!````````$B+OI````"Z_______0ZT@/M]5(@[S30`0```!T
+M.DB+A--`!```2(.XB`````!T*$B+AH@```!(QX:(`````````$C'A--`!```
+M`````$B+OI````#_T)#_Q6:#_3\/AF3____I?P0``$'&10G_3(GN2(G?Z```
+M``#I:@0``,9$)`<`9F:09I!(#[9$)`</MH08Q@@``#S_#X3Q````#[;`2&G`
+MJ````$R-K!B@`0``08!]"?\/A-0```!!O`````!!@'T.``^&N0```$V-=6!,
+MB??H`````$B)Q4F+1@A)B6X(3(EU`$B)10A(B2B`?4+_#X2`````@+WA````
+M`'1H2`^V14"H`G0>J`1T&J@!=!8/ME5Y2(MU4$B)Z4R)[^@`````ZT*02`^V
+M14"H`G4:J`1F9I!FD'01J`%T#4B)[DB)W^@`````ZQY(#[9%0*@"=!6H!&:0
+M=`^H`74+2(GN2(G?Z`````"X`0```.EZ`P``9F:09I!!_\1%.&4.#X=+____
+MN`$```#I7@,``/Y$)`>`?"0'`P^&ZO[__\9$)`<`@'M1``^%L````+T`````
+M9F:09F:0#[?%2(NTPT`$``!F#[:4&$`(``!(A?9T=TB#OH``````=&U(@WY@
+M`'5F9H'Z_P"0="X/M\)(BXL8"0``2&G`B`$``/9$"$,$=!:`?`A!`'4/#[?2
+M2(G?Z`````#K,F:02(N&@`````^WU4C'A--`!````````$C'AH``````````
+M2(N^D````+K______]"0_\5F@_T_#X9D____QD-1`>F+`@``2`^V1"0'#[:$
+M&,8(```\_P^$90(```^VP$AIP*@```!,C:P8H`$``$&\`````$&`?0X`#X9"
+M`@``38UU8$R)]^@`````2(G%28M&"$F);@A,B74`2(E%"$B)*(!]0O\/A0D"
+M```/MT4P9HE$)`0/M\!F#[:4&$`(``!FB50D`DR+O,-`!```#[9%1*@$='%-
+MA?]T;$F#OX``````=&))@W]@`'5;@^#[B$5$]D5#!'02#[=4)`),B?Y(B=_H
+M`````.L]28N'@````$@/MU0D!$C'A--`!````````$G'AX``````````2,=%
+M.`````!)B[^0````NO____],B?[_T/9%0P0/A$4!``#&A>``````08!E#.?V
+M140!#X3[````@&5$_DB#?3@`=$V`?4$`=2WV14,$="</MU0D!`^V0T'!X`8!
+MPDACTDB+L]`(``"_!P```.@`````Z?$```!(BU4X2(NST`@``+\!````Z```
+M``#IUP```$V%_W1J28._@`````!T8(!]00!U&_9%0P1T%0^W5"0"3(G^2(G?
+MZ`````#IIP```$F+AX````!(#[=4)`1(QX330`0```````!)QX>`````````
+M`$C'13@`````28N_D````+K_____3(G^_]#K:(!]00!U8O9%0P1T7`^W5"0$
+M#[9#0<'@!@'"2&/22(NST`@``+\"````Z`````#K.&9F9I!(@WTX`'0M2(M5
+M.$B#NH@`````=!](BX*(````2,>"B`````````!(BU4X2(NZD````/_0]D5$
+M`G092(M5.$B+L]`(``"_!@```.@`````@&5$_4'_Q$4X90X/A\+]___^1"0'
+M@'PD!P,/AG;]__^0N`$```!(@\0(6UU!7$%=05Y!7\-F9F:09F9FD&9F9I!(
+M@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G^2(GS3(MN2$@/
+MMT8PN@````"`O#A`"```_P^$L0(```^V1D*#^`\/A`0!``"#^`]_2H/X#`^$
+MR0```(/X#'\<@_@%=&R#^`MF9F:0#X2E````Z74"``!F9I!FD(/X#0^$K```
+M`(/X#F9F9I`/A*\```#I50(``&9FD&:0@_@9?Q*#^!A]7X/X%&9FD'0XZ3D"
+M``"#^!MF9I!F9I!T-3W_````#X2,````9F:0Z1L"``"^`0```$B)WV9FD.@`
+M````Z08"``!(B??H`````.GY`0``O@````!(B=_H`````.GG`0``O@$```!(
+MB=_H`````.G5`0``2(GWZ`````#IR`$``$B)]^@`````Z;L!``!(B??H````
+M`&9FD.FK`0``2(GWZ`````!F9I#IFP$``,9&0O])B=]!O`````!!@'T.``^&
+MQP```$F-;6!(B>_H`````$B)PTB+10A(B5T(2(DK2(E#"$B)&(![0O\/A(@`
+M``"`>T$`#X6%````@+OA`````'1F2`^V0T"H`G0=J`1T&:@!=!4/ME-Y2(MS
+M4$B)V4R)[^@`````ZT!(#[9#0*@"=1FH!&9F9I!T$:@!=`U(B=Y,B??H````
+M`.L>2`^V0T"H`G05J`1FD'0/J`%U"TB)WDR)]^@`````N@$```#IV@```&9F
+MD&:0QH/A`````$'_Q$4X90X/ASW___]%.&4.#X6B````00^V1T$\(@^4PCP-
+M#Y3`"="H`70_O@H```!,B?_H`````+H!````Z8L```!(B=Y(Q\<`````N```
+M``#H`````+X*````2(G?Z`````"Z`0```.MC0;P`````08!]#@!V04F-;6!(
+MB>_H`````$B)PTB+10A(B5T(2(DK2(E#"$B)&`^V0T$\(@^4PCP-#Y3`"="H
+M`7660?_$13AE#G?&9F:00<9%"?],B>Y,B??H`````+H!````B=!(BUPD"$B+
+M;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9FD&9FD$B#[%A(B5PD*$B)
+M;"0P3(ED)#A,B6PD0$R)="1(3(E\)%!)B?U(B?-,BWY(2`^W1C"Z`````("\
+M.$`(``#_#X2B!@``#[9&0H/X"0^$=P,``(/X"7]*@_@%#X3[````@_@%?Q>#
+M^`,/A)X```"#^`0/A,(```#I9@8``(/X!V:0#X0T`P``@_@'9F9FD&9FD`^/
+M%@,``.FI`@``9F:09I"#^!8/A.<"``"#^!9F9F:0?R.#^!0/A"H#``"#^!1F
+MD`^/I`(``(/X"@^$!P,``)#I#`8``(/X&@^$2P(``(/X&G\2@_@7#X2R`@``
+M9F9FD.GL!0``/?\```!F9I!F9I`/A.,"``#IU@4``$F+1R"!8##___[_2(M^
+M2+D`````N@$```#H`````+\%````Z`````#IJ04``$B+?DBY`````+H`````
+MZ`````"_4,,``.@`````Z8<%``!!O@````"`?T,`=B!)#[97#69FD&:02(G0
+M1(GQ2-/XJ`%U"4'_QD4X=4-WZD@/MD-`J`)T#*@$=`BH`0^%TP```$F+5R"+
+M0C"I```!`'0-)?___O^)0C#IN````+T0)P``1(AT)!!*C03U`````"7X!P``
+M2(E$)`A$B?!(P>`#28G$08'D^`<``$F+50!!@/X#=AE(BTPD"(N$$8`!``")
+M!0`````E```!`.L308N$%(`!``")!0`````E```!`(7`="6`?"00`W8.0<>$
+M%(`!``````$`ZPQ!QX04@`$``````0"%P'40O^@#``#H`````/_-=9/K!(7M
+M=1C&0T,"QD-"_TB)WDR)[^@`````Z7,$``!!]D<*`70X2(G>3(G_9F:09I#H
+M`````(3`=22]^@```&:02(G>3(G_Z`````"$P'4.O^@#``#H`````/_-=>-!
+M@/X#=B=*C03U`````"7X!P``28M-`(N4`8`!``")%0````")E`&``0``ZT]*
+MC03U`````$B)QH'F^`<``$F+30!!@/X#=@^+A#&``0``B04`````ZQY*C03U
+M`````"7X!P``28M5`(N$`H`!``")!0````")A#&``0``2(M[2$B)WNBK*```
+MOR!.``#H`````.F=`P``#[=V,$C'QP````"X`````.@`````2(M[2$B)WN@[
+M+P``Z7<#```/MW8P2,?'`````+@`````Z`````!(BWM(2(G>Z*4O``#I40,`
+M`$B+?DCH1R@``.E#`P``2(M^2.B9+```Z34#``!(BWY(Z.LK``#I)P,``$B+
+M?DCH'2T``.D9`P``2(M^2.B?+0``Z0L#``!(BWY(Z"$N``"0Z?P"``#&1D+_
+M2`^V0T"H`G0(J`1T!*@!=19(@WM8`)!U#DR)_^@`````B(/B````0?9'#`(/
+MA(H!``!-BV=`00^V5"1&00^V1"0[_\@YPGTR0?Y$)$9!_D0D1T'&1"1"`$$/
+MMT0D3H/@_H/("&9!B40D3DR)YDR)[^@`````Z7X"``!!O@````!!@'\.``^&
+MP````$F-;V!(B>_H`````$B)PTB+10A(B5T(2(DK2(E#"$B)&(![0O\/A($`
+M``"`N^$`````=&E(#[9#0*@"=!^H!'0;J`%T%P^V4WE(BW-02(G93(G_Z```
+M``#K0V:02`^V0T"H`G4:J`1F9I!FD'01J`%T#4B)WDR)[^@`````ZQY(#[9#
+M0*@"=!6H!&:0=`^H`74+2(G>3(GOZ`````"Z`0```.G+`0``9F:09I#&@^$`
+M````0?_&13AW#@^'1/___T'V1"1.@'0>0?9$)$D#=!9!QD0D0@!,B>9,B>_H
+M`````.F'`0``0<9'"?]!QD0D0@!!#[=$)$Z#X/.#R`)F08E$)$Y!@&0D2?Y,
+MB?Y,B>_H`````.E4`0``O@H```!(B=_H`````+H!````D.E!`0``0;X`````
+M08!_#@`/AL8```!)C6]@9F:09F:02(GOZ`````!(B<-(BT4(2(E="$B)*TB)
+M0PA(B1B`>T+_#X2(````@'M!`'5[@+OA`````'1K2`^V0T"H`G0AJ`1T':@!
+M=!D/ME-Y2(MS4$B)V4R)_^@`````ZT5F9F:02`^V0T"H`G4:J`1F9I!FD'01
+MJ`%T#4B)WDR)[^@`````ZQY(#[9#0*@"=!6H!&:0=`^H`74+2(G>3(GOZ```
+M``"Z`0```.M^QH/A`````$'_QD4X=PX/AT3___]%.'<.=4]!O@````!!@'\.
+M`'9"28UO8$B)[^@`````2(G#2(M%"$B)70A(B2M(B4,(2(D8#[9#03PB#Y3"
+M/`T/E,`)T*@!#X7%_O__0?_&13AW#G?"0<9'"?],B?Y,B>_H`````+H!````
+MB=!(BUPD*$B+;"0P3(MD)#A,BVPD0$R+="1(3(M\)%!(@\18PV9FD&:02(/L
+M*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($F)_$B)\TB+%TB+KH@````/MD9"
+M@_@9#X==!```B<#_),4`````]D9.!'0,9L=&3@$`QD9"`>L\9H-^3B!U#&;'
+M1DX(`,9&0@WK*?9&3H!T&?9&20-T$P^W1DXD?X/("&:)1D[&1D(-ZPKV0TX(
+M=`3&0T('2(G>3(GGZ`````#I]@,``(N"!`$``(D%`````(/(4(F"!`$``+D!
+M````N@(```"^`0```$B)W^@`````Z<4#``"Y`0```+H`````O@$```!(B=_H
+M`````.FI`P``N0$```"Z`0```+X!````2(G?Z`````#IC0,``+D!````NF``
+M``"^`0```$B)W^@`````Z7$#```/MDY(0;@!````NF````"^`0```$B)W^@`
+M````Z5`#``!!N`$```"Y```!!+HA````O@$```!(B=_H`````.DN`P``0;@!
+M````N0$```"Z`@```+X`````2(G?Z`````#I#`,``$&X`0```+D`````N@(`
+M``"^`````$B)W^@`````Z>H"``!(BT4@@6`P___W_T&X`0```+D!````N@(`
+M``"^`````$B)W^@`````Z;T"``!!N`$```"Y`````+H"````O@````!(B=_H
+M`````.F;`@``N0$```"Z`@```+X`````2(G?Z`````#I?P(``+D!````N@``
+M``"^`````$B)W^@`````Z6,"``"Y`0```+H!````O@````!(B=_H`````.E'
+M`@``2(M%((%@,/__]_]!N`$```"Y_____[H!````O@````!(B=_H`````.D:
+M`@``N0$```"Z`````+X`````2(G?Z`````#I_@$``$@/MD9'3(MTQEA)B6Y(
+M28EV6`^V1D=!B$9Y0<9&0@-!QD9!`$&`3D`%_D4.2(U%8$B+4`A,B7`(28D&
+M28E6"$R),K^`&@8`Z`````!!O0````!!@'PD0P!V'$@/ME4-2(G01(GI2-/X
+MJ`%U"D'_Q44X;"1#=^E(BU4@BT(PJ0``"`!T"B7___?_B4(PZV"[F#H``$J-
+M!.T`````2(G%@>7X!P``9F9FD$&`_0-V&DF+!"2+A"B``0``B04`````J0``
+M"`!U*.L828L$)(N$*(`!``")!0````"I```(`'4.O^@#``#H`````/_+=;I,
+MB?9,B>?H`````.D``0``OT`-`P#H`````+D`````NB````"^`0```$B)W^@`
+M````OQ`G``#H`````.G0````N0````"Z`0```+X`````2(G?Z`````"_$"<`
+M`.@`````Z:H```!(BT4@@6`P___W_T&X`````+G_____N@$```"^`````$B)
+MW^@`````OQ`G``#H`````.MVN0````"Z`````+X`````2(G?Z`````"_$"<`
+M`.@`````ZU.Y`````+H@````O@$```!(B=_H`````+\0)P``Z`````#K,.@`
+M````9F:09I#K).@`````ZQU!N`$```"Y\````+J;````O@$```!(B=_H````
+M`+@!````2(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$*,-F9F:09F9FD$%7
+M059!54%455-(@^PH28G\2(L'2(E$)"!!OP````"`?T,`#X:F`@``9F9FD&9F
+MD$2)^@^VPDAKP&A*C30@2(V68!(``/9"#A`/A'("``"X`0```$2)^4C3X`A"
+M"4B+MD@2``!(B70D&/9""`(/A-T```!!C5\!03A<)$,/ALX````/ML%(:\!H
+M3`'@2(E$)`@/ML-(:\!H3HTT($F-KF`2``#V10X0#X24````3(ML)`A!]X5<
+M$@`````.``^$?@```$F-A6`2``!(B40D$+H(````2(GN2(G'Z`````"$P'1>
+M28VV5!(``+H(````28V]5!(``.@`````A,!T0K@!````B=E(T^!(BU0D$`I"
+M"8A""8A%"4B#?"08`'4.38NV2!(``$R)="08ZQ0/ML-(:\!H2(M,)!A*B8P@
+M2!(``/_#03A<)$,/AT/___]FD$B#?"08``^%I````$R)Y^@`````2(E$)!A(
+MA<`/A%T!``!$B?H/ML)(:\!H3`'@2(M,)!A(B8A($@``2(V00!(``$B)42`/
+MMH!H$@``B$$*QD$)`$R)(<9!#@#&05@`QD$H`$&-7P%!.%PD0W991(GZ#[;"
+M2&O`:$H/MI0@:1(``$B)T(G92-/XJ`%T%`^VPTAKP&A(BTPD&$J)C"!($@``
+M_\-!.%PD0W?7ZQMF9F:01(GZ#[;"2&O`:$B+3"082HF,($@2``!$B?H/ML)(
+M:\!H2HV$(&`2```/ME`)2(M,)!B(40T/ME@)08#_`W8A2HT$_0`````E^`<`
+M`$B+5"0@QX00``(``#@```#K'V:02HT$_0`````E^`<``$B+3"0@QX0(``(`
+M`#@```"_$"<``.@`````08#_`W8;2HT$_0`````E^`<``$B+5"0@B9P0!`(`
+M`.L92HT$_0`````E^`<``$B+3"0@B9P(!`(``$'_QT4X?"1##X=A_?__2(/$
+M*%M=05Q!74%>05_#9I!(@^P82(D<)$B);"0(3(ED)!!)B?R)\TB++T"`_@-V
+M($B-!-T`````)?@'``#'A"@P`@``#````.L>9F:09F:02(T$W0`````E^`<`
+M`,>$*%`"```,````OQ`G``#H`````(#[`W8<2(T$W0`````E^`<``(N$*#0"
+M``")!0````#K&DB-!-T`````)?@'``"+A"A4`@``B04`````B<*!X@``/P#!
+MZA`/ML-(:\!H2HV,(&`2```/MD$(@^#\B$$(@_H0=0J#R`*(00CK$F:0#[;#
+M2&O`:$*`C"!H$@```4B+'"1(BVPD"$R+9"002(/$&,-F9F:09F:09F:09F:0
+M05=!5D%505154TB#["A!B?1)B==(BR^[`````$*-!.4`````1(UPX$&)Q69F
+MD&:008/\`W81C02=``$``$&)A"X@`@``ZP^-!)T``0``08F$+0`"``"_$"<`
+M`.@`````B=I!@_P#=A!!BX0N)`(``(D%`````.L.08N$+00"``")!0````")
+M!)3_PX/[!G:@2(L$)$F)!TB+1"0(28E'"$B+1"0028E'$(M$)!A!B4<82(/$
+M*%M=05Q!74%>05_#05=!5D%505154TB#["A!B?1)B==(BR^[`````$*-!.4`
+M````1(UPX$&)Q69FD&:008/\`W81C02='`$``$&)A"X@`@``ZP^-!)T<`0``
+M08F$+0`"``"_$"<``.@`````B=I!@_P#=A!!BX0N)`(``(D%`````.L.08N$
+M+00"``")!0````")!)3_PX/[!G:@2(L$)$F)!TB+1"0(28E'"$B+1"0028E'
+M$(M$)!A!B4<82(/$*%M=05Q!74%>05_##[8'P.@$@^`'B<*`S@+V1P($#T7"
+MB<*!R@```@#V1P,$#T7"B<*`S@CV1P((#T7"B<*!R@``"`#V1P,(#T7"B<*`
+MS@3V1P("#T7"B<*!R@``!`#V1P,"#T7"#[97%,'B&`G0PV9F9I!F9F:09F9F
+MD.@`````\\-F9I!F9I!F9I!!5T%6055!5%532(/L*$F)_HGU3(L_B?(/ML)(
+M:\!H2`'X2(FX0!(``,:`:1(```!`#[;VZ`````"Y`````+H@````2(G@B`A(
+M_\!(_\IU]D0/MNU(B>)$B>Y,B??H`````(GI#[;92&O;:$P!\TB)Y^@`````
+MB8-0$@``2(M$)`Q(B8-4$@``2(V38!(``$"`_0-V&D*-!*T`````2)A"BX0X
+MT`$``(D%`````.L;2(T$K0`````E_`,``$*+A#C0`0``B04`````B4(,B>H/
+MML)(:\!H2HV4,'`2``!`@/T#=AU(C03M`````"7X!P``0HN$.(`!``")!0``
+M``#K&TB-!.T`````)?@'``!"BX0X@`$``(D%`````(D"B>D/ML%(:\!H2HV$
+M,&`2``#V0`X0#X11`0``]D`(`G18N0````"Z(````$B)X&9F9I"("$C_P$C_
+MRG7V0`^V]4B)XDR)]^@`````B>@/MMA(:]MH3`'S3(VC4!(``$B)Y^@`````
+M08E$)`Q(BT0D#$B)@V`2``#K%8GJ#[;"2&O`:$+'A#!<$@```0`"`$"`_0-V
+M&TB-!.T`````)?@'``!"QX0X,`(``!@```#K&4B-!.T`````)?@'``!"QX0X
+M4`(``!@```"_$"<``.@`````0(#]`W8?2(T$[0`````E^`<``$*+A#@T`@``
+MB04`````B<+K'4B-!.T`````)?@'``!"BX0X5`(``(D%`````(G"B>D/ML%(
+M:\!HB=&!X?___]^!R@```"!"]X0P;!(``````P`/1-%`@/T#=A=(C03M````
+M`"7X!P``0HF4.#0"``#K%4B-!.T`````)?@'``!"B90X5`(``$B#Q"A;74%<
+M05U!7D%?PV9F9I!F9I"+A_`(```E____`#U0`9,`=1,/MH?S"```P.@$N@$`
+M```\#'0%N@````")T,-F9I!!54%455-(@^P(28G]3(LGN`````"P4+0%2"7_
+M_P#_2`T```0`2+K___\`_____T@AT$@-````,$BZ_____P#___]((=!(N@``
+M```1````2`G02+K______P#__T@AT$BZ``````"K``!(B<5("=5(QX?X$P``
+M`````$@YO]`(```/A>D```!(C9\`%```2(V7\`@``$&X`0```+D(````O@``
+M`@#H`````$&+A>@(``!!#[:5\P@``(U$@OQ!B(7S"```3(GOZ`````"$P'4'
+M28FM\`@``(L%`````$$/MI7S"````<+_P(D%`````$&(E?,(``!!#[:%\`@`
+M`(B#\`@``$$/MH7Q"```B(/Q"```00^VA?((``"(@_((``!!#[:%\P@``(/`
+M`HB#\P@``$$/MH7T"```B(/T"```00^VA?4(``"(@_4(``!!#[:%]@@``(B#
+M]@@``$$/MH7W"```B(/W"```9F9FD&9FD$G'A?@3````````08N$)``!``")
+M!0`````/M]#VPB!U&XG0@\@@08F$)``!``!!BX0D``$``(D%`````$F+10#'
+M@`0!````````28M%`,>`&`$```````!)BT4`QX`<`0```````+^`A!X`Z```
+M``!!QX0D<`$``!@!``!!BX0D=`$``(D%`````(#D_4''A"1P`0``&`$``(#,
+M!$&)A"1T`0``0<>$)'`!```H`0``0<>$)'0!``!_?P``0<>$)'`!```D`0``
+M08N$)'0!``")!0````!FN```0<>$)'`!```D`0``#?\_``!!B80D=`$``$''
+MA"1P`0``/`$``$''A"1T`0````!Z`$''A"1P`0``I`$``$''A"1T`0``?;_O
+M_T''A"1P`0``N`$``$&+A"1T`0``B04`````#[?`0<>$)'`!``"X`0``#0``
+M^@!!B80D=`$``$''A"2<````_P```$''A"20`@``1`$``$''A"24`@``!A``
+M"$''A"20`@``M`$``$''A"24`@``7W```$''A"20`@``,````$&+A"24`@``
+MB04`````,.2`S#-!B80DE`(``+T`````08!]0P`/AEL#``!F9F:00(#]`W8;
+M2(T$[0`````E^`<``$+'A"`P`@``"````.L92(T$[0`````E^`<``$+'A"!0
+M`@``"````+\0)P``Z`````!`@/T#=AU(C03M`````"7X!P``0HN$(#0"``")
+M!0````#K&TB-!.T`````)?@'``!"BX0@5`(``(D%`````(G"0(#]`W8=2(T$
+M[0`````E^`<``('*``"``$*)E"`T`@``ZQM(C03M`````"7X!P``@<H``(``
+M0HF4(%0"``!`#[;=28V5\`@``(G>3(GOZ`````")WDR)[^@`````0(#]`W89
+MC03=`````$B80L>$(#`"``!$`0``ZQMFD$B-!.T`````)?@'``!"QX0@4`(`
+M`$0!``"_$"<``.@`````0(#]`W8;2(T$[0`````E^`<``$+'A"`T`@``!A``
+M".L92(T$[0`````E^`<``$+'A"!4`@``!A``"$"`_0-V'4B-!.T`````)?@'
+M``!"QX0@,`(``+0!``#K&V:02(T$[0`````E^`<``$+'A"!0`@``M`$``+\0
+M)P``Z`````!`@/T#=AM(C03M`````"7X!P``0L>$(#0"``!?<```ZQE(C03M
+M`````"7X!P``0L>$(%0"``!?<```0(#]`W8=2(T$[0`````E^`<``$+'A"`P
+M`@``"````.L;9I!(C03M`````"7X!P``0L>$(%`"```(````OQ`G``#H````
+M`+K_5(``0(#]`W8B2(T$[0`````E^`<``('B_U0``$*)E"`T`@``ZR!F9I!F
+MD$B-!.T`````)?@'``"!XO__?_U"B90@5`(``$`/MMVZ`0```(G>3(GOZ```
+M``"_(*$'`.@`````0(#]`W89C03=`````$B80HN$((`!``")!0````#K&TB-
+M!.T`````)?@'``!"BX0@@`$``(D%`````(G"@>+___[_0(#]`W872(T$[0``
+M```E^`<``$*)E""``0``ZQ5(C03M`````"7X!P``0HF4((`!``"Z!0'(`$"`
+M_0-V&4B-!.T`````)?@'``!"B90@A`$``.L79I!(C03M`````"7X!P``0HF4
+M((0!``"_H(8!`.@`````0`^V]4R)[^@`````_\5!.&U##X>I_/__3(GOZ```
+M``!!BX0D!`$``(D%`````(/(`D&)A"0$`0``08N$)``!``")!0````"#X/V#
+MR`U!B80D``$``$&+A"0``0``B04`````28N%F!```$&)A"0(`0``08N%G!``
+M`$&)A"0,`0``28N%R!```$&)A"00`0``08N%S!```$&)A"04`0``0<>$)"`!
+M````````00^WA3P2```E_P\```T```$`08F$)"`!``!)BX4H$0``08F$)"0!
+M``!!BX4L$0``08F$)"@!``!)BX50$0``QP#_#P``0<>$)#0!````````00^W
+MA3X2```E_P\```T```$`08F$)#0!``!)BX58$0``08F$)#@!``!!BX5<$0``
+M08F$)#P!``!!QX0D2`$```````!!QX0D3`$````!``!!BX0D!`$``(D%````
+M`(/(64&)A"0$`0``0<>$)%0!``#[_P`,0<>$)%P!``#__P``2(/$"%M=05Q!
+M7<-F9I!F9I!F9I!32(G[Z.?W__^Z`````&:0#[;"QX2#F`D```````#'1(-<
+M`````/_"@/H/=N-FQX,X$@``_P]FQX,Z$@``_P_&0U`!N`$```!;PV9FD&9F
+MD+D`````.?%]+69F9I!F9I!(8\$/MA0XA-(/E<"`^B`/E<(/ML"%PG0'N```
+M``##D/_!.?%\VK@!````9F:09I##9F9FD&9F9I!F9F:09F:02(/L.$B)7"0(
+M2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)_$B)]6:!?B"%``^'G````$@/
+MMT8@@+PX0`@``/\/A(D```!F@WX@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!
+M``!(BT002`^V2`CK96:!?B"!`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`
+MR`\``$B+1!`(#[9(".LV2`^W1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+
+MA!"(````#[9(".L,9F9FD&9FD+G_____N_____]F@7T@A0!W#D@/MT4@0@^V
+MG"!`"```@/G_="$/ML%"@+P@Q@@``/\/E,*`^_\/E,`)T*@!=0:`?20&=2I(
+M@WUX`'032(UU>$R)Y^@`````9F9FD&9FD$B)[DR)Y^@`````Z;`&```/ML%.
+M#[:L(,8(``!-:>VH````3XVL):`!```/ML-(:<"(`0``2(G#20.<)!@)``!F
+M@;O`````JPUW!H!])`)U-DB#?7@`=`Q(C75X3(GGZ`````!(B>Y,B>?H````
+M`,9#0O_&0T,"2(G>3(GGZ`````#I.08```^V13B#^!H/A%P%``"#^!I_+(/X
+M$G1=@_@2?Q*%P`^$_P0``&9FD&:0Z=\%``"#^!4/A,<%``!FD.G/!0``@_@E
+M#X2S`@``@_@E?Q*#^!L/A,4$``!F9F:0Z:\%```]G@```&9FD&9FD`^$>P,`
+M`.F9!0``@'TD`)`/A6$"``!(BTU(@'TY`&:0=&F`>T(9#Y3`@\`+B$-"2(7)
+M=$F`>0&`=4.`>0(`=3V`>0,\=S</ME$#OR````"^%````$B-0WQ`B#A(_\!(
+M_\YU]8/Z%+@4````#T/0B=)(C7M\2(UQ!.@`````9L>#P```````Z1D%``#&
+M0T(8]D$&0'4/#[8!@^`?@_@-#X4[`0``#[8!@^`?@_@-N"(```"Z#0````]$
+MPHA#00^V\$C'QP````"X`````.@`````2(-]>`!T#$B-=7A,B>?H`````$B)
+M[DR)Y^@`````0;X`````08!]#@!V04F-;6!(B>_H`````$B)PTB+10A(B5T(
+M2(DK2(E#"$B)&`^V4T&`^B(/E<"`^@T/E<(/ML"%PG4)0?_&13AU#G?#13AU
+M#@^%B00``&;'1"0&``!!OP````!!O@````!!@'T.`'9528UM8$B)[^@`````
+M2(G#2(M%"$B)70A(B2M(B4,(2(D8#[9#03PB#Y3"/`T/E,`)T*@!=!</MT0D
+M!F8Y0S!R#$F)WP^W6S!FB5PD!D'_QD4X=0YWKTV%_P^$$00``$&`?T+_#X0&
+M!```0<9'0O],B?Y,B>?H`````.GQ`P``#[8!@^`?@_@!=0W&0T$!QD-"_^FM
+M`P``]D$%`70$QD-"&4B#?4@`#X28`P``2(M-2+X`````NB@```!(C8.0````
+M0(@P2/_`2/_*=?6^`````+H(````2(V#N````$"(,$C_P$C_RG7U2(M!"$B)
+M@Y````!(BT$02(F#F````$B+01A(B8.@````BT$@B8.X````Z2T#``!F_X/`
+M````OQ`G``#H`````,9#0@7I$P,``$B+34A(BT50#[9``H/@#X!])`!U<P^V
+M40</MD$&P>`(`<(/MD$%P>`0`<(/MD$$P>`8`<*)D]P````/ME$##[9!`L'@
+M"`'"#[9!`<'@$`'"#[8!P>`8`<)(B5-P@[O<`````'4:9O^#P````+\0)P``
+MZ`````#&0T(+Z90"``#&0T(-Z8L"``"`?20@9F:0=2X\!@^4PCP"#Y3`"="H
+M`70>9O^#P````+\0)P``Z`````#&0T(%Z5@"``!F9F:02(-]>`!T#$B-=7A,
+MB>?H`````$B)[DR)Y^@`````2(G:3(GN3(GGZ`````#I3P(``$B+15`/MD`"
+M@^`/2(M-2(!])``/A;$````/ME$+#[9!"L'@"`'"#[9!"<'@$`'"#[9!",'@
+M&`'"B9/<````#[91!P^V00;!X`@!P@^V007!X!`!P@^V003!X!@!PDACTD@/
+MMD$#2,'@($@!PD@/MD$"2,'@*$@!PD@/MD$!2,'@,$@!PD@/M@%(P>`X2`'"
+M2(E3</9!#`%T!6:#2V($@[O<`````'4:9O^#P````+\0)P``Z`````#&0T(9
+MZ6(!``#&0T(-Z5D!``"`?20@D'4N/`8/E,(\`@^4P`G0J`%T'F;_@\````"_
+M$"<``.@`````QD-"&>DH`0``9F9FD$B#?7@`=`Q(C75X3(GGZ`````!(B>Y,
+MB>?H`````$B)VDR)[DR)Y^@`````Z1\!``#&0T(4Z>H```"`?20@9I!U-4B+
+M15`/MD`"@^`//`8/E,(\`@^4P`G0J`%T&F;_@\````"_$"<``.@`````QD-"
+M%.FM````QD-"&^FD````@'TD`'5,2(M-2`^W0V!F@TMB`0R&9HE#8(!Y`P!U
+M!8`Y%G<79O^#P````+\0)P``Z`````#&0T(-ZVGV008$=`=F@TMB`NM'9H-C
+M8OUF9I#K/8!])"!U,DB+15`/MD`"@^`//`8/E,(\`@^4P`G0J`%T'&;_@\``
+M``"_$"<``.@`````QD-"!>L:9H-C8/G&0T(.ZP^`?20`=05F@TMB`\9#0@](
+M@WUX`'0,2(UU>$R)Y^@`````2(GN3(GGZ`````!(B=Y,B>?H`````&9FD$B+
+M7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9FD&9FD&9F
+MD$B#["A(B5PD"$B);"003(ED)!A,B6PD($B)_4B)\V:!?B"%``^'E@```$@/
+MMT8@@+PX0`@``/\/A(,```!F@WX@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!
+M``!(BT002`^V2`CK7V:!?B"!`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`
+MR`\``$B+1!`(#[9(".LP2`^W1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+
+MA!"(````#[9(".L&D+G_____OO____]F@7L@A0!W#4@/MT,@#[:T*$`(``"`
+M^?]T(0^VP8"\*,8(``#_#Y3"0(#^_P^4P`G0J`%U!H![)`9U(TB#>W@`=`Q(
+MC7-X2(GOZ`````!(B=Y(B>_H`````.EX`@``#[;!3`^VI"C&"```36GDJ```
+M`$V-I"R@`0``B?(/ML)(:<"(`0``28G%3`.M&`D``$B+<TB`>R0`#X2I````
+M@'LZ!@^$GP```(![.@P/A)4```!!#[>5P````(U"`69!B87`````9H/Z"78F
+M08!]0@9T'T'&14,"0<9%0O]!@&5$_DR)[DB)[^@`````Z>8!``"_Z`,``.@`
+M````20^V14"H`G0IJ`1T):@!="%!#[95>4F+=5!!N`````"Y`@```$R)Y^@`
+M````Z:H!``!!QD5"`TR)[DB)[^@`````Z94!``!F9I!FD(![.@%U#T'&14($
+M9F:09I#I30$``(![.@)U"D'&14(%Z3T!``"`>SH##X6:````08!]0@5U+&:!
+M?@3(-V9F9I!U($$/MW4P2,?'`````+@`````Z`````!!QD5"!ND``0``3(GO
+MZ`````!)C;V0````OB@```#H!?7__X3`=3A)C7U\OA0```#H\_3__X3`=29)
+MC;VX````O@@```#HWO3__X3`=1%)@WUP`'0*0<9%0A?IJP```$'&14(:9D'_
+MA<````#IF0```(![.A=U"D'&14(5Z8D```"`>SH89F:0=0=!QD5"%NMY@'LZ
+M!&9FD'4'0<9%0@?K:8![.@5F9I!U!T'&14((ZUF`>SH&9F:0=0=!QD5"">M)
+M@'LZ#&9FD'4'0<9%0@KK.8![.A9F9I!U!T'&14(4ZRF`>SH.9F:0=2!(@WMX
+M`'0,2(US>$B)[^@`````2(G>2(GOZ`````#K+DB#>W@`=`Q(C7-X2(GOZ```
+M``!(B=Y(B>_H`````$R)[DB)[^@`````9F:09I!(BUPD"$B+;"003(MD)!A,
+MBVPD($B#Q"C#9F9FD&9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD($B)_4B)
+M\V:!?B"%``^'E@```$@/MT8@@+PX0`@``/\/A(,```!F@WX@?W<B2`^VA#A`
+M"```2(N7&`D``$AIP(@!``!(BT002`^V2`CK7V:!?B"!`'<G2`^W1B!(#[:$
+M.$`(``!(BY=H"0``2&G`R`\``$B+1!`(#[9(".LP2`^W1B!(#[:$.$`(``!(
+MBY=`"0``2&G`T````$B+A!"(````#[9(".L&D+G_____OO\```!F@7L@A0!W
+M#D@/MT,@9@^VM"A`"```@/G_#Y3"9H'^_P`/E,`)T*@!="-(@WMX`'0,2(US
+M>$B)[^@`````2(G>2(GOZ`````#IRP````^VP4P/MJ0HQ@@``$UIY*@```!-
+MC:0LH`$```^WQDAIP(@!``!)B<5,`ZT8"0``@'LD`'1$#[;Q2,?'`````+@`
+M````Z`````!)BU4(28M%`$B)4`A(B0)!_DPD#DR)[DB)[^@`````0<9$)`G_
+M3(GF2(GOZ`````"`>SH!=2R_$"<``.@`````2(G>2(GOZ`````"Y`0```+H`
+M````3(GN3(GGZ`````#K(+]0PP``Z`````!(B=Y(B>_H`````$R)[DR)Y^@`
+M````2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9FD&:02(/L*$B)7"0(2(EL
+M)!!,B60D&$R);"0@2(GU08G408G-2(L?2(G?Z`````!(B<%(A<!U#<:%X0``
+M``'&14(#ZW7&0#CAQD`Y`4&`_`$9P/?0@\`"B$$ZN`\```!%A.UU$+@`````
+M2(-]6`!T!`^V17F(03L/MT4P9HE!($B)62C'030`````2,=!2`````!%A.U(
+MQ\``````2,?"`````$@/1<)(B8&@````2(G.2(G?Z`````!(BUPD"$B+;"00
+M3(MD)!A,BVPD($B#Q"C#D$%7059!54%455-(@^P(28G]2(GU3(LW3(GWZ```
+M``!(B<-(A<!U#,:%X0````'IGP```$R)]^@`````28G$2(7`=13&A>$````!
+M2(G>3(GWZ`````#K>TR->UC&0SCAQD,Y`<9#.@,/MT4P9HE#($F+10!(B4,H
+MQT,T``(``$F+1"002(E#2+D`````N@`"``"("$C_P$C_RG7V3(EC>$C'@Z``
+M````````O@````!,B?_H`````(M3-$F+="083(G_Z`````!(B=Y,B??H````
+M`$B#Q`A;74%<05U!7D%?PV9F9I!F9F:09F9FD&9FD$&)T+D`````.=%S'V9F
+M9I`/MA</MD<!B`:(5@%(@\8"2(/'`O_!1#G!<N7SPV9FD$%455-(B?M(B?5)
+MB?1F@SX`>0X/MP8E`!\``,'X"(A'04B+111(B4-\2(M%'$B)@X0```"+122)
+M@XP```!(BT4N2(F#N````$B+139(B8.0````2(M%/DB)@Y@```!(BT5&2(F#
+MH````$B+14Y(B8.H````2(M%5DB)@[````!(C7M\N@H```!(B?[H0/___TB-
+MN[@```"Z!````$B)_N@L____2(V[D````+H4````2(G^Z!C___]FQT-@``!F
+MQT-B``!F08.\)+(!```!#Y3"P>(##[9#1(/@]PG0B$-$]H6G````!'0&9L=#
+M8`$`]H6D`````70H9H-+8`+VA:H````!=`5F@TMB`?:%J`````%T#&:!2V``
+M`69FD&9FD/:%I````"!T%V:#2V`$]H6J````('0)9H-+8@)F9F:0]H6D````
+M0'079H%+8(``]H6J````0'0(9H-+8@AF9I#&0WH"]H69`````70G]D-@`70*
+M9H-+8`AF@TMB$`^VA98```"#X!__P(A#>CP@=03&0WH?]H68````"'0&9H%+
+M8``"]H68````!'0%9H-+8"#VA9@````"=`5F@TM@$/:%J````"!T#O:%K@``
+M`"!T!6:#2V!`]D-@`7042(N%R````$B)0W#K#F9F9I!F9I"+17A(B4-P2/]+
+M</9%:@)T'_:%@`````]T%F:#O8`````"&<"#P`2(0V3K"&9F9I#&0V0"QD-E
+M__9%?@1T!L9#90+K'/9%?@)T",9#90%FD.L.]D5^`70(QD-E`&9F9I#&0V;_
+M]D5J!'0?N0````"02`^WA;````!(T_BH`70#B$MF_\&`^09VY[X``@``2(GO
+MZ`````")@\0```"X`0```%M=05S#9F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,
+MB60D$$B)_4B)\TR+)TR)Y^@`````2(G"#[9+9DB%P'4)QH/A`````>M'QD`X
+MX<9`.0'&0#H$B$@[#[=#,&:)0B!(BT4`2(E"*,="-`````!(QT)(`````$C'
+M@J``````````B$MI2(G63(GGZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#9F9F
+MD&9F9I!F9I!F9I!(@^P82(D<)$B);"0(3(ED)!!(B?U(B?-,BR=,B>?H````
+M`$B)P@^V2V1(A<!U"<:#X0````'K1\9`..'&0#D!QD`Z!8A(.P^W0S!FB4(@
+M2(M%`$B)0BC'0C0`````2,="2`````!(QX*@`````````(A+9TB)UDR)Y^@`
+M````2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9F:09F:09F:02(/L&$B)'"1(
+MB6PD"$R)9"002(G[2(GU3(LG3(GGZ`````!(B<)(A<!U"<:%X0````'K0,9`
+M..'&0#D!QD`Z!@^W13!FB4(@2(L#2(E"*,="-`````!(QT)(`````$C'@J``
+M````````2(G63(GGZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#9F:09F:09F:0
+M2(/L&$B)'"1(B6PD"$R)9"002(G[2(GU3(LG3(GGZ`````!(B<)(A<!U"<:%
+MX0````'K0,9`..'&0#D!QD`Z#`^W13!FB4(@2(L#2(E"*,="-`````!(QT)(
+M`````$C'@J``````````2(G63(GGZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#
+M9F:09F:09F:02(/L&$B)'"1(B6PD"$R)9"002(G[2(GU3(LG3(GGZ`````!(
+MB<)(A<!U"<:%X0````'K2\9`..'&0#D!QD`Z%L9`/`$/MT4P9HE"(,:"F```
+M``](BP-(B4(HQT(T`````$C'0D@`````2,>"H`````````!(B=9,B>?H````
+M`$B+'"1(BVPD"$R+9"002(/$&,-F9F:09F9FD&9FD&9FD$B#[!A(B1PD2(EL
+M)`A,B60D$$B)^TB)]4R+)TR)Y^@`````2(G"2(7`=0G&A>$````!ZT#&0#CA
+MQD`Y`<9`.A</MT4P9HE"($B+`TB)0BC'0C0`````2,="2`````!(QX*@````
+M`````$B)UDR)Y^@`````2(L<)$B+;"0(3(MD)!!(@\08PV9FD&9FD&9FD$B#
+M[!A(B1PD2(EL)`A,B60D$$B)^TB)]4R+)TR)Y^@`````2(G"2(7`=0G&A>$`
+M```!ZT#&0#CAQD`Y`<9`.A@/MT4P9HE"($B+`TB)0BC'0C0`````2,="2```
+M``!(QX*@`````````$B)UDR)Y^@`````2(L<)$B+;"0(3(MD)!!(@\08PV9F
+MD&9FD&9FD$B#["A(B1PD2(EL)`A,B60D$$R);"083(ET)"!(B?U!B?1!B=5!
+MB<Y(BX>(````2(L82(G?Z`````!(B<;&0#CAQD`Y`<9`.A&X#P```$6$Y'4$
+M#[9%1XA&.T2(;CP/MT5`9HE&($B)7BC'1C0`````2,=&2`````!%A/9(Q\``
+M````2,?"`````$@/1<)(B8:@````2(G?Z`````!(BQPD2(ML)`A,BV0D$$R+
+M;"083(MT)"!(@\0HPV9FD&9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)
+M="0H3(E\)#!)B?R)RT&)]4&)UD6)QTB+AX@```!(BRA(B>_H`````$B)QL9`
+M..'&0#D!QD`Z$K@/````183M=09!#[9$)$>(1CM$B'8\#[;'B$8]B=C!Z!"(
+M1CZ)V,'H&(A&/XA>0$$/MT0D0&:)1B!(B6XHQT8T`````$C'1D@`````183_
+M2,?``````$C'P@````!(#T7"2(F&H````$B)[^@`````2(M<)`A(BVPD$$R+
+M9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:09F9FD&9FD$B#[#A(B5PD"$B)
+M;"003(ED)!A,B6PD($R)="0H3(E\)#!)B?Q(B?5!O@````!F@7X@A0`/AY8`
+M``!(#[=&(("\.$`(``#_#X2#````9H-^(']W(D@/MH0X0`@``$B+EQ@)``!(
+M:<"(`0``2(M$$$@/ME`(ZU]F@7X@@0!W)T@/MT8@2`^VA#A`"```2(N7:`D`
+M`$AIP,@/``!(BT00"`^V4`CK,$@/MT8@2`^VA#A`"```2(N70`D``$AIP-``
+M``!(BX00B`````^V4`CK!I"Z_____[G_____9H%]((4`=PY(#[=%($(/MHP@
+M0`@```^VPDH/MIP@Q@@``$AIVZ@```!*C9PCH`$```^VP4AIP-````!)B<5-
+M`ZPD0`D``(!]/`(/A88````/MD5`)?````"#^"`/E,*#^!`/E,`)T*@!=&L/
+MME5`B="#X`^#^`%U)8G1@>'P````0;@!````N@(```"^`````$R)[^@`````
+MZ;$&``!)#[9%1TV+=,58#[9%0"7P````@_@@#Y3`@\`(08B&X@```$F+1EAF
+M@6!.__[I?P8``&9FD&9FD(!])`!T/P^V721(@WUX`'0/2(UU>$R)Y^@`````
+M9F:02(GN3(GGZ`````"`^P(/A44&``!,B>Y,B>?H`````)#I-`8``$$/MD5"
+M@_@9#X?]!0``B<#_),4`````00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%
+M`````(G"@_@%N`4````/1L)!B$4[@'L/`'0.0<9%0@#&0P\`Z;`%``!!QD5"
+M`NFF!0``00^V15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````&8/ML!F08E%
+M/$$/MD50P>`(2)A)BY0DP!```(N$`D0(``")!0````")PL'H"&9!B44^#[;"
+MP>`(9D$)13QF08%]/D!!N`,```"Z&0````]$PD&(14+I+04``$$/MD50P>`(
+M2)A)BY0DP!```(N$`D0(``")!0````!!B$4Y00^V15#!X`A(F$F+E"3`$```
+MBX0"3`@``(D%`````(G"J`AT!T'&13H,ZR>H!'0,0<9%.@MF9I!FD.L72(G0
+M2-'H@^`!@_@!&<#WT(/@"D&(13I!QD5"!.FM!```00^V15#!X`A(F$F+E"3`
+M$```BX0"3`@``(D%`````(/("$&(14A!QD5"!>E]!```0<9%0@;I<P0``$$/
+MMD50P>`(2)A)BY0DP!```(N$`DP(``")!0````!!@'U'`1G`@^`"@\`408A%
+M0ND^!```00^V14?_P$&(14=!.D4[<PI!QD5"%NDC!```0<9%1P!!QD5"%[\@
+MH0<`Z`````#I"@0``$'&14(4Z0`$``!!QD5"".GV`P``0<9%0A20Z>L#``!!
+MQD5*`N@`````28F%P````$'&14(5Z=`#``!!#[9%4,'@"$B828N4),`0``"+
+MA`),"```B04`````1`^V^$$/MD50P>`(2)A)BY0DP!```(N$`D0(``")!0``
+M```/ML#!X`A!"<?H`````$F)A<@```!$B?B#X`^#^`-U$4&`?4H`=`I!QD5"
+M"NE=`P``28N%R````$$KA<`````M0`T#`'@'08!]2@!T&4'&14(508!]2@`/
+MA#$#``!!_DU*Z2@#``!)#[9%1TF#?,58``^$U0```,9$)`<`@'L.`'8[3(U[
+M8$R)_^@`````28G&20^V14=-.73%6'0@28M'"$V)=PA-B3Y)B48(3(DP_D0D
+M!P^V1"0'.$,.=\G^2PY)@WXX`'1L28M&.$C'0&``````0?9&1`1U)4'^A"3O
+M$P``3(GGZ`````!)BT8X#[9P`;H!````3(GGZ`````!)BU8X28NT)-`(``"_
+M`0```.@`````28M6.$F+M"30"```OP8```#H`````$G'1C@`````20^V14=)
+MQT3%6`````!,B?9,B>?H`````$'&14()Z3@"``!!#[9%4,'@"$B828N4),`0
+M``"+A`),"```B04`````#[;(00^V15#!X`A(F$F+E"3`$```BX0"1`@``(D%
+M`````,'@"`G!08E-5$&`?4(*=`CWP0```0!T$4'&14(+Z=4!``#^2PYFD.MF
+M0<9%0@Q)#[9%1TF#?,58`'1)QD0D!@"`>PX`=DE,C7M@2(U[8.@`````28G&
+M20^V14=-.73%6'3`28M'"$V)=PA-B3Y)B48(3(DP_D0D!@^V1"0&.$,.=\CK
+M"TR)Y^@`````28G&387V#X2(`0``20^V14=-B73%6$$/MD5+08B&X@```.E$
+M`0``0;X_0@\`2(M#(/9`,@AU)4R)Y^@`````OP$```#H`````$'_SD&#_O]T
+M"DB+0R#V0#((=-M!QD5"">D%`0``00^V15#!X`A(F$F+E"3`$```BX0"3`@`
+M`(D%`````$0/MOA!#[9%4,'@"$B828N4),`0``"+A`)$"```B04`````#[;`
+MP>`(00G'1(GY@>'_#P``@?D3`0``#Y3"@?DC`0``#Y3`"="H`70M0<9%0AB!
+M^1,!``!U"D'&14L(Z8(```!$B?@E_P\``#TC`0``=7-!QD5+">ML00^V549!
+M#[9%.__(.<)]#T'^149!_D5'0<9%0@?K34'&14(`00^W14Z#X/>#R`)F08E%
+M3DB#?7@`=`Q(C75X3(GGZ`````!(B>Y,B>?H`````,9#"?](B=Y,B>?H````
+M`.LR0<9%0@-F9F:02(-]>`!T#$B-=7A,B>?H`````$B)[DR)Y^@`````3(GN
+M3(GGZ`````!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F
+M9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P2(G[28GT0;\`
+M````O@````!F08%\)""%``^'GP```$D/MT0D(("\.$`(``#_#X2+````9D&#
+M?"0@?W<B2`^VA#A`"```2(N7&`D``$AIP(@!``!(BT002`^V4`CK969!@7PD
+M(($`=RA)#[=$)"!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(#[90".LS
+M20^W1"0@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B`````^V4`CK"&9F
+MD+K_____N?____]F08%\)""%`'<.20^W1"0@#[:,&$`(```/ML%(:<#0````
+M28G%3`.K0`D```^VPD@/MJP8Q@@``$AI[:@```!(C:P=H`$``(#Z_W0?@+P8
+MQ@@``/\/E,*`^?\/E,`)T*@!=0A!@'PD)`9U*TF#?"1X`'0328UT)'A(B=_H
+M`````&9FD&9FD$R)YDB)W^@`````Z=`%``!!@'PD)`!T&$B)[DB)WV:0Z```
+M``#IM@4``&9FD&9FD$$/MD5"@^@-@_@$#X=O!0``B<#_),4`````00^V15#!
+MX`A(F$B+D\`0``"+A`),"```B04`````1`^VR$$/MD50P>`(2)A(BY/`$```
+MBX0"1`@``(D%`````,'@"$$)P;\`````0;@`````0;X`````08!].P!V,D2)
+MRF9FD&:02(G01(GQ2-/XJ`%T%/_&#[;!28-\Q5@`=`5!_\#K`O_'0?_&13AU
+M.W?60(3_=`5!@$U)`46$P'0%08!-20)`@/X!#X4]`0``0;X`````08!].P!V
+M4$2)RD$/MLY(B=!(T_BH`70<B<I(B=Y(B>_H`````$B%P'052(EH2$R):%CK
+M"T'_QD4X=3MWS>L818AU1T4X=3MV#D'&14(.9F9FD.E;!```13AU.P^%400`
+M``^V=0VZ`0```$B)W^@`````QD0D`P"`?0X`#X:`````3(UU8$R)]^@`````
+M28G'28M&"$V)?@A-B3=)B4<(3(DX28-_.`!T&DF+5SA(B[/0"```OP4```#H
+M`````$&`3T0"3(GZO@8```!(B>_H`````$&`?WL`=!E(B=_H`````+\!````
+MZ`````!!@'][`'7G_D0D`P^V1"0#.$4.=X1)@WPD>`!T#4F-="1X2(G?Z```
+M``!,B>9(B=_H`````$'&14D`QD4)`$B)[^@`````Z:L#``!F08%-3H``0;X`
+M````08!].P!V342)RD$/MLY(B=!(T_BH`70<B<I(B=Y(B>_H`````$B%P'06
+M2(EH2$R):%CK#$'_QD4X=3MWS9#K%$6(=4=%.'4[=@I!QD5"#^D:`P``13AU
+M.P^%$`,```^V=0VZ`0```$B)W^@`````QD0D`@"`?0X`#X:`````3(UU8$R)
+M]^@`````28G'28M&"$V)?@A-B3=)B4<(3(DX28-_.`!T&DF+5SA(B[/0"```
+MOP4```#H`````$&`3T0"3(GZO@8```!(B>_H`````$&`?WL`=!E(B=_H````
+M`+\!````Z`````!!@'][`'7G_D0D`@^V3"0".$T.=X1)@WPD>`!T#4F-="1X
+M2(G?Z`````!,B>9(B=_H`````$'&14D`QD4)`$B)[^@`````Z6H"``!!#[9%
+M4,'@"$B82(N3P!```(N$`DP(``")!0````!$#[;(00^V15#!X`A(F$B+D\`0
+M``"+A`)$"```B04`````P>`(00G!0??!```$`'0'0?9%20%U$$'WP?__^_]T
+M$4'V14D"=`I!QD5"#^G*`0``0<9%20!F9I!FD.GK`0``0;X_0@\`2(M%(/9`
+M,@AU)4B)W^@`````OP$```#H`````$'_SD&#_O]T"DB+12#V0#((=-M!QD5"
+M$.E\`0``00^V15#!X`A(F$B+D\`0``"+A`),"```B04`````#[;`B40D!$$/
+MMD50P>`(2)A(BY/`$```BX0"1`@``(D%``````^VP,'@"`E$)`2+1"0$@^`/
+M@_@##X7`````0?9%20%T#$'&14(2ZPK^30[K9D'&14(220^V14=)@WS%6`!T
+M2<9$)`$`@'T.`'9)3(UU8$B-?6#H`````$F)QTD/MD5'33E\Q5ATPDF+1@A-
+MB7X(38DW28E'"$R)./Y$)`$/MD0D`3A%#G?(ZPM(B=_H`````$F)QTV%_P^$
+MS0```$D/MD5'38E\Q5B+1"0$)?\/```]$P$``'4*0<:'X@````CK>8M$)`0E
+M_P\``#TC`0``=6E!QH?B````">M?0<9%0A/K6$$/MD50P>`(2)A(BY/`$```
+MBX0"3`@``(D%`````$$/MD50P>`(2)A(BY/`$```BX0"1`@``(D%`````$D/
+MMD5)@^`!@_@!&<#WT(/`$T&(14)F9I!F9I!)@WPD>`!T#4F-="1X2(G?Z```
+M``!,B>9(B=_H`````$R)[DB)W^@`````9F:09I!(BUPD"$B+;"003(MD)!A,
+MBVPD($R+="0H3(M\)#!(@\0XPY"0D)"0D)"0D)"0D)!(BT<(2"T``@$`@^('
+MP>((@,X@2,'F"('F`/\``(F4!AS%```/MX0&',4``&:)!0`````/ML##9F:0
+M9F:09F:02(M'"$@M``(!`(/B!\'B"(C*@,X02,'F"('F`/\``(F4!AS%``##
+M9F:09F:09F:0055!5%53NP````!!NP````!!NO____]!N0````"]`0```$&X
+MP.'D`$$/MLG_P8GNT^:Y``````^VP?_`B<(/K]9$B<!!B=6Z`````$'W]8GZ
+M*<(Y^+C_____#T;"1#G0<PE!B<)$B<M!B<O_P8#Y#W;%0?_!08#Y!W:M00^V
+MP\'@`PG8#[;`6UU!7$%=PV:02(/L&$B)'"1,B60D"$R);"0028G\3(VOP!$`
+M`$`/MMZY`````+H'````B=[H#____T$/MDT!N@,```")WDR)Y^C[_O__2(L<
+M)$R+9"0(3(ML)!!(@\08PV9F9I!F9F:005154TF)_+L`````0`^V[KH"````
+MB>Y,B>?H@?[__Z@(=`VX`````.L?9F:09F:0OP$```#H`````/_#@?L/)P``
+M=LRX_P```%M=05S#9I!3B?,/MO*Z`P```.A`_O__.-@/E,`/ML!;PV9FD&9F
+MD$B#["A(B1PD2(EL)`A,B60D$$R);"083(ET)"!(B?U!B<Y!B?1!B=4/MLI`
+M#[;>N@$```")WN@U_O__N4````"Z`@```(G>2(GOZ"'^__^)WDB)[^@W____
+MNO\```"%P'5S187V=$E!]L4!="-!#[;4OD````!(B>_H8O___[K_````A<!T
+M3NM'9F9FD&9FD$$/MM2^&````$B)[^@_____NO\```"%P'0KZR1F9F:000^V
+MU+XH````2(GOZ!____^Z_P```(7`=`MF9I!F9I"Z`````(G02(L<)$B+;"0(
+M3(MD)!!,BVPD&$R+="0@2(/$*,-F9F:09F9FD&9F9I!(@^PH2(E<)`A(B6PD
+M$$R)9"083(EL)"!(B?U)B<V)\T&)U$`/MO;H9/[__[K_____A<!U,0^VTT$/
+MMO1(B>_HG/[__[K_____A<!T&0^V\[H!````2(GOZ-/\__]!B$4`N@````")
+MT$B+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-F9F:09F9FD&9F9I!F9I!!5T%6
+M055!5%532(/L"$B)_4F)ST6)QD&)]4&)U,=$)`0`````A-(/A/@```!`#[;>
+MN60```"Z`@```(G>Z)[\__^)WDB)[^BT_?__A<!U$+H#````B=Y(B>_H0?S_
+M_Y!!#[;400^V];D!````2(GOZ/O]__^Z_____X3`#X6)`0``NP````!$.?,/
+MC7<!``!!C4;_B00D10^VY69FD&:0.1PD=3NY0````+H"````1(GF2(GOZ";\
+M__](8\M,`?FZ6````$2)YDB)[^B@_O__A<`/A2\!``#K.69FD&9FD+E$````
+MN@(```!$B>9(B>_HZ_O__TACRTP!^;I0````1(GF2(GOZ&7^__^%P`^%]```
+M`/]$)`3_PT0Y\WR"9I#IX@```+^@A@$`Z.'[__\/MLA!#[;=N@,```")WDB)
+M[^B;^___B=Y(B>_HL?S__X7`="`/MHW!$0``N@,```")WDB)[^AW^___NO__
+M___IF````$$/MMV)VKY@````2(GOZ,K\__^%P'4=#[:-P1$``+H#````B=Y(
+MB>_H0/O__[K_____ZV2[`````$0Y\WT^10^VY;E$````N@(```!$B>9(B>_H
+M%OO__TACRTP!^;J`````1(GF2(GOZ)#]__^%P'4+_T0D!/_#1#GS?,8/MHW!
+M$0``00^V];H#````2(GOZ-GZ__^+5"0$B=!(@\0(6UU!7$%=05Y!7\-F9F:0
+M2(/L&$B)7"0(3(ED)!!)B?Q(B=!`#[;608G(2(G!O@````#HN/W__XG#N50`
+M``"Z`@```+X`````3(GGZ'_Z__^)V$B+7"0(3(MD)!!(@\08PV9F9I!F9F:0
+M9F:09F:02(/L&$B)7"0(3(ED)!!)B?Q(B=!`#[;608G(2(G!O@$```#H6/W_
+M_XG#N50```"Z`@```+X!````3(GGZ!_Z__^)V$B+7"0(3(MD)!!(@\08PV9F
+M9I!F9F:09F:09F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD
+M,$F)_$F)ST6)Q8GU08G60`^VWKED````N@(```")WNB[^?__B=Y,B>?HT?K_
+M_X7`=0^Z`P```(G>3(GGZ%[Y__]!#[;60`^V];D!````3(GGZ!G[__^Z____
+M_X3`=4?K#KK_____ZSYF9F:09F:0NP````!$.>M]*$`/MNUFD$ACPT(/MA0X
+MN0````")[DR)Y^C9^O__A,!UQ__#1#GK?-ZZ`````(G02(M<)`A(BVPD$$R+
+M9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:02(/L&$B)7"0(3(ED)!!)B?Q(
+MB=!`#[;608G(2(G!O@````#HZ/[__XG#N50```"Z`@```+X`````3(GGZ,_X
+M__^)V$B+7"0(3(MD)!!(@\08PV9F9I!F9F:09F:09F:02(/L&$B)7"0(3(ED
+M)!!)B?Q(B=!`#[;608G(2(G!O@$```#HB/[__XG#N50```"Z`@```+X!````
+M3(GGZ&_X__^)V$B+7"0(3(MD)!!(@\08PV9F9I!F9F:09F:09F:005=!5D%5
+M05154TB#["A(B70D($R+=BA)_\9%#[96`L9$)!\`2,=$)!``````0;@`````
+M2(NWT`@``+F`____10^VR@^VP68/MI0P0`@``&:!^O\`=$I$B<!!_\!$.<AU
+M/X#Y@7<8#[?"2&G`R`\``$@#AF@)``!(B40D$.LB2(M$)"#'0%#_____2(G'
+M_U!(N`````#INP$``&9FD&9FD/_!@/F%=IQ(B[?0"```2('&`!0``+F`____
+M00^V^F:0#[;!9@^VE#!`"```9H'Z_P!T0T2)P$'_P#GX=3F`^8%W&`^WPDAI
+MP,@/``!(`X9H"0``2(E$)!#K'$B+1"0@QT!0_____TB)Q_]02+@`````Z3\!
+M``#_P8#YA7:C00^V5@1%#[9N!4'!Y1!!#[9&!L'@"$$)Q4$/MD8'00G%10^V
+M9@A!P>0000^V1@G!X`A!"<1!#[9&"D$)Q$B#?"00``^$S````$&_`````$B+
+M1"00@'A8``^&MP```$B)PTB#PT@/MM*)5"0,9F9FD&9FD$B)W^@`````2(UH
+M\$B+4PA(B4,(2(D82(E0"$B)`@^V14$\#0^4PCPB#Y3`"="H`71>00^V1@.#
+M^#MT(X/X/'5/QD0D'P%,BT0D($2)Z42)XHMT)`Q(B>_H`````.LQ2(N](`$`
+M`$2)ZDF-=@OH`````$R+1"0@1(GI1(GBBW0D#$B)[^@`````QD0D'P%FD$'_
+MQTB+1"001#AX6`^'7O___[@!````@'PD'P!U%TB+1"0@QT!0_____TB)Q_]0
+M2+@`````2(/$*%M=05Q!74%>05_#9F9FD&9F9I!F9F:02(/L2$B)7"082(EL
+M)"!,B60D*$R);"0P3(ET)#A,B7PD0$F)_TF)]$R+;BA)_\6+1AS_R(E$)!3'
+M1"00`````$B+5C!(B50D"$&`?0$!=1#'1E``````Z3L"``!F9F:008!]`0)U
+M64&`?0(!9F9FD'4^2(._V`@```!T!TR+O]@(``!)BX?0"```00^V50.(D.X3
+M``!!#[95`XB0[B<``$''1"10`````.GI`0``9I#'1E#^____Z=L!``!F9F:0
+M08!]`01U&4$/MD4#@^@[/`%W#>BX_/__Z=4!``!F9I!!@'T!`W5N08!]`@%F
+M9F:0=55!#[9-`T$/MD<^C30`B<B9]_Z)T3G6?B]!#[95!`^VV8G>3(G_Z```
+M``!!#[95!(G>3(G_Z`````!!QT0D4`````#I7@$``$''1"10_O___^E0`0``
+M0<=$)%#^____Z4(!``!)@[_8"````'0'38N_V`@``$R)ZT&`?0$`#X2N````
+M#[8K2/_##[8#2/_#B<$/MM#VP@%T.T2+="0000'N13MT)"`/A]D```"+3"00
+M2`-,)`A!B>B^`````$R)_^A*]___.>@/A;@```!$B70D$.M32&/%3(TT&$R)
+M\$PIZ$B#P`)(8U0D%$@YT`^/D@````^VT4&)Z$B)V;X`````3(G_Z.;Y__^%
+MP'5X3(GS08`^`'4'08!^`0!T%+\0)P``Z`````"`>P$`#X52____#[8KA>UT
+M5[E4````N@(```"^`````$R)_^B@\___08M$)"`K1"00.<4/1^B+3"002`-,
+M)`A!B>BZ`````+X`````3(G_Z)3V__^%P'@&`40D$.L*0<=$)%#_____D+E4
+M````N@(```"^`````$R)_^A)\___28-\)#@`=`M)BT0D.(M4)!")$$R)YT'_
+M5"1(2(M<)!A(BVPD($R+9"0H3(ML)#!,BW0D.$R+?"1`2(/$2,-F9F:09F9F
+MD&9FD$B#[`A(@[_8"````'0'2(N_V`@``("_[A,```!U(L8%``````&Y(```
+M`$C'P@````"^#@```.@`````9F:09I!(@\0(PV9F9I!F9F:09F:02(/L"$B#
+MO]@(````=`=(B[_8"```Q@4``````+D@````2,?"`````+X.````Z`````!(
+M@\0(PV9FD&9FD&9FD$B#[!A(B1PD3(ED)`A,B6PD$$F)_0^VVD0/MN9(B[_0
+M"```B=I$B>;H`````(G:1(GF3(GOZ`````!(BQPD3(MD)`A,BVPD$$B#Q!C#
+M9F:02(M'"&;'@&S^___LF$B+1PAFB;!H_O__PV9F9I!F9I!(@^P(B?&)UK@`
+M````L`6T#T@E__\`_T@-```"`$BZ____`/____]((=!(#0````-(NO____\`
+M____2"'02+H`````!@```$@)T$BZ______\`__]((=!(N@``````!P``2`G0
+M2+K_______\`_T@AT$BZ````````"P!("=!(NO________\`2"'02+H`````
+M````#$@)T$B)!"2`^0=W0$"$]G0:#[;!#[8,!+C^____T\!F(8?L$P``ZQAF
+M9I`/ML$/M@P$N`$```#3X&8)A^P3```/M[?L$P``Z`````!(@\0(PV9F9I!F
+M9I!F9I!!5%532(G]2(._V`@```!T!TB+K]@(``!!O`````!!#[;<N0````"Z
+M!P```(G>2(GOZ-KP__^Y1````+H"````B=Y(B>_HQO#__[G0````N@````")
+MWDB)[^BR\/__N0````"Z!````(G>2(GOZ)[P__]!_\1!@_P!=J._H(8!`.B[
+M\/__B(7!$0``#[;(N@,```"^`````$B)[^AP\/__6UU!7,.0D)"0D)"0D)"0
+MD$B+1PA(+0`"`0")]HL$!HD%`````,-F9F:09F:09F:02(M'"$@M``(!`(GV
+MB10&PU-(B?M(BU<(QX*`_O__`````(N"!/___XD%`````(#,`8F"!/___[H$
+M````O@S"``#H`````+JX"P``O@C"``!(B=_H`````+H!``P`O@#"``!(B=_H
+M`````+H$````O@S#``!(B=_H`````+JX"P``O@C#``!(B=_H`````+H!``P`
+MO@##``!(B=_H`````+H`````OE#"``!(B=_H`````+H`````OE##``!(B=_H
+M`````$B+0PAFQX!,_O__``!(BT,(9L>`;/[__^R82(M#"&;'@&C^___LF&;'
+M@^P3``#__UO#9F9FD&9FD&9FD$@YO]`(``!!#Y7`@^8#C31VN`<```")\=/@
+M]]!!B<%$(T]41(E/5(32=`VX!````-/@1`G(B4=4BU=400^V\,'F"('&4,(`
+M`$B+O]`(``#H`````//#9F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)
+M_4B)\TB-CR@2``!(BY=H"0``3(VB.+@/`&:!?B"%`'<92`^W1B!(#[:$.$`(
+M``!(:<#(#P``3(TD`DB+4TB`>@$"=0](BT($2(D!2(M"#$B)00A(@WMX`'02
+M2(MS>$B)[^@`````9F:09F:02(G>2(GOZ`````!!QD0D7`!(BQPD2(ML)`A,
+MBV0D$$B#Q!C#9F9FD&9F9I!F9F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@
+M3(ET)"A,B7PD,$B)_4&)]4&)UD&)STB+1PA,BR!,B>?H`````$B)PTB%P'1\
+M3(GGZ`````!(B<)(A<!T;,9%7`%(C7M8QD,XX<9#.0'&0SH0QD,ENV8/MD5;
+M9HE#($R)8RC'0S20````2(U"$$B)0TA(B5-XQD`!`L9"$$!$B&@"1(AP`T2(
+M>`1(QX.@`````````+X`````Z`````!(B=Y,B>?H`````$B+7"0(2(ML)!!,
+MBV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9F9I!F9F:005=!5D%50515
+M4TB#[`A(B?U!B?9!B==!B<U(BT<(3(L@3(GGZ`````!(B<-(A<`/A/````!,
+MB>?H`````$B)PDB%P`^$W````,9%7`%(C4-82(D$),9#..'&0SD!QD,Z$,9#
+M);MF#[9%6V:)0R!,B6,HQT,TD````$B-0A!(B4-(2(E3>$B)QKD`````NI``
+M``"("$C_P$C_RG7VQD8!@L8&0$2(=@)$B'X#1(AN!$&`_0)W(4J-%*T`````
+M@>+\`P``2(U^"$F-M"0H$@``Z`````#K*TF+A"0H$@``2(E&"$$/MM6-%)7X
+M____2&/22(U^$$F-M"0P$@``Z`````!(QX.@`````````+X`````2(L\).@`
+M````2(G>3(GGZ`````!(@\0(6UU!7$%=05Y!7\-F9F:09F9FD&9F9I!!5D%5
+M05154TB)^T&)UHGPP.@"08G$0;T#````02'U2(M'"$B+*+D"````N@````"^
+M`````.@`````@'M<`'082(GOZ`````"_`0```.@`````@'M<`'7H2(M#"$B+
+M$$B!PB@2```/MD("A,!X0H/(@(A"`KD!````N@````"^`````$B)W^@`````
+M@'M<`'0?2(GOZ`````"_`0```.@`````@'M<`'7H9F9FD&9FD$$/MM2Y`0``
+M`+X#````2(G?Z`````"`>UP`=!QF9F:02(GOZ`````"_`0```.@`````@'M<
+M`'7H2(M#"$B+,$B!QB@2``!!#[;%N0,````IP4ACR46$]@^5P@^VTL'B`XL$
+M#H/@YPG0B00.00^VU+D!````O@,```!(B=_H`````%M=05Q!74%>PY"0D)"0
+MD$R+AQ@)``!F@7X@A0!W(4@/MT8@2`^VA#A`"```2&G`B`$``$F-/`#K#69F
+MD&9FD$F-N'B&`0!,C8(@!```QH(@!```)V:!?CCA`74K#[9&.O_(/`%W"0^V
+M5COK*V9FD&:!?CCA`740#[9&.H/H$;H/````/`%V$+H`````2(-_6`!T!`^V
+M5WF#X@]!#[9``8/@\`G008A``;H`````9H%^..$!=0H/MD8Z_\@\`78%N@$`
+M``#!X@=!#[9``8/@?PG008A``0^V009!B$`"#[8!08A``P^V005!B$`'#[9!
+M!T&(0`\/MD$"08A`!`^V00-!B$`%#[9!!$&(0`8/MD$!08A`#`^V00I!B$`(
+M#[9!"T&(0`D/MD$,08A`"@^V00A!B$`+#[9!"4&(0`W#9I!32(GS2(M/2$R+
+M`0^V1CB#^"\/A'T```"#^"]_,X/X&P^$3@$``(/X&W\,@_@29I!T8^E9`0``
+M@_@H9F:09F:0=%.#^"IT3NE$`0``9F9FD#V*````=#X]B@```&9F9I!_%8/X
+M-0^$"0$``#V(````="/I&0$``#V/````9F9FD'03/>$````/A(P```!F9I#I
+M^P```/9'8`%F9F:09F:0=`J!BY0```````0`]D=B$`^$Z@````^V0S@\*`^4
+MPCPJ#Y3`"="H`746@'LXB'00@'LXB@^%Q@```&9FD&9FD/9!#`%U&@^V<0A,
+MB<?H`````(3`#X2F````9F:09F:0@'LD@0^$E@```(&+E````````0#IAP``
+M`+@`````@'XY`0^%?0````^V3CJ#^1QW/+@!````2-/@J?8_P!UU&ZD(0`8`
+M=0NI```@`'469I#K&X..E`````CK18..E`````'K/(..E````"#K,[@`````
+MZS'V1V`!=`J!BY0```````0`@XN4`````>L39F:0N`````#V@Y8````@=`=F
+MD+@!````6\-F9I!F9I!F9I!`#[;'PV9F9I!F9F:09F:0B?@/ML3#9F9FD&9F
+MD&9FD,9')`)(BT=00(AP`DB+1U#&0`<`2(M'4(A0#,-F9F:0#[9'/8A&`@^V
+M1SR(1@,/MD<[B$8$#[9'.HA&"L-F9I`/MD=!B$8"#[9'0(A&`P^V1S^(1@0/
+MMD<^B$8*#[9'/8A&"P^V1SR(1@S#9F:09I"Y`````#G1?1QF9F:09F:0B=`I
+MR(/X`@^=P`^VP(U,`0$YT7SK\\-F9I!F9I!F9I!(@^PH2(D<)$B);"0(3(ED
+M)!!,B6PD&$R)="0@2(G[2(G508GV#[9'.(/X*G0I@_@J?PV#^"AT'^GS````
+M9F:0/8@```!T*3V*````9F9FD'0>Z=D```!$#[9C0$0/MFL_2(GN2(G?Z```
+M``#K%V:01`^V8T5$#[9K1$B)[DB)W^@`````QD4%0/:#E@````%T-42(90!$
+MB&T(0HT$]0````"(10$/MD,X/"@/E,(\B`^4P`G0@^`!@_@!&<#WT(/`88A%
+M!NMI]H.6````!'0P1(AE`42(;0D/MD,X/"@/E,(\B`^4P`G0@^`!@_@!&<"#
+MX!"#P"6(10;K-69FD&:01(AE`0^V0SJ#X`\(104/MD,X/"@/E,(\B`^4P`G0
+M@^`!@_@!&<"#X`*#Z#B(10:02(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$
+M*,-F9I!54TB#["A(B?-(BW9(2(GG_+D$````N`````#S2*OVAJ<````$=`Q(
+MBY;(````2/_*ZP6+5GC_RH![."5U8KT(````2(G02,'H&(@$)$B)T$C!Z!"(
+M1"0!2(G02,'H"(A$)`*(5"0#]H;5````$'4/QD0D!@+&1"0'`.FG````2('&
+MZ@```$B-?"0$N@0```#H`````.F,````9F:09F:0O2````!(B=!(P>@XB`0D
+M2(G02,'H,(A$)`%(B=!(P>@HB$0D`DB)T$C!Z""(1"0#2(G02,'H&(A$)`1(
+MB=!(P>@0B$0D!4B)T$C!Z`B(1"0&B%0D!_:&U0```!!U$L9$)`H"QD0D"P#K
+M'&9FD&9FD$B!QNH```!(C7PD"+H$````Z`````!(BWM(2&/52(GFZ`````!(
+M@\0H6UW#9F9FD`^V1SH*1SL*1SP*1ST/ML`/ME=`@^(!"=!T%;HD````O@4`
+M``#H`````//#9F9FD,9&!NQ(QX>@`````````,-(@^P@2(D<)$B);"0(3(ED
+M)!!,B6PD&$B)^TB)]0^V1SB#^"]T"CV/````=!7K4Y!$#[9G0$0/MF\_Z```
+M``"0ZP]$#[9G140/MF]$Z`````#&105`]H.6````!'021(AE`42(;0G&109"
+MZQ9F9F:01(AE`0^V0SJ#X`\(107&109`2(L<)$B+;"0(3(MD)!!,BVPD&$B#
+MQ"##9F:09F:02(GQQD(%0`^V1CB#^#5T$#V1````="'K)V9F9I!F9I!(#[='
+M8(/@`8/X`1G`@^#]@^@6B$(&ZQS&0@;JZQ9FD+HD````O@4```!(B<_H````
+M`//#]D$Y`G0$QD$D`//#]D<\\'0/NB0```"^!0```.@`````\\-F9I!F9I!F
+M9I!)B?)!N0````!!N`T```!(B<A$B`A(_\!)_\AU]4$/MD(X@_@U#X2=````
+M@_@U?RR#^"AT<(/X*'\1@_@;9F:0#X22````Z;4"``"#^"IFD'13@_@O=&'I
+MI`(``#V/````=%4]CP```'\;/8@```"0=#,]B@```'0L9F9FD&9FD.E[`@``
+M/9$```!F9I!F9I!T-CWA````=&AF9F:09F:0Z5L"```/MO)(B<I,B=?H````
+M`.E.`@``2(G.3(G7Z`````#I/@(``$B)RDR)UN@`````Z2X"``!!]D(\`709
+MQD$&<,9!!`#&00,`QD$"`,9!!4#I#@(``,9!!N#I!0(``+@`````08!Z.0$/
+MA?H!``!!#[9".H/X'`^'U0$``(G`_R3%`````,9!!P3IU0$``,9!!P#IS`$`
+M`,9!!NQFD.G!`0``QD$&[\8!`T$/MD([@\A`B$$!Z:H!``#&00;OQ@$'Z9X!
+M``#&009`QD$!`<9!!4#IC0$``,9!!N_&`0-!#[9".X/("(A!`>EV`0``QD$&
+M[\8!`NEJ`0``QD$&[\8!@NE>`0``QD$&[\8!!NE2`0``QD$&[\8!ANE&`0``
+MQD$&XT$/MD([B$$!Z34!``#&00:PQ@'8QD$#3\9!!,+I(0$``,9!!K#&`=G&
+M00-/QD$$PND-`0``QD$&L,8!VL9!`T_&003"Z?D```!(#[='8(/@`8/X`1G`
+M@^#]@^@6B$$&Z=X```#&00;OQ@&JZ=(```#&00;OQ@%5Z<8```#&008OQD$!
+M`<9!`A#IM0```,9!!N1!#[9"/(@!00^V0CN(007IG0```$$/MD([B$$&00^V
+M0CR(`4$/MD(]B$$"00^V0CZ(00-!#[9"/XA!!$$/MD)!B$$*00^V0D"(00'K
+M9,9!!NA!#[9"/(@!00^V0CN(005!#[9"/8A!`D$/MD(^B$$#00^V0C^(001!
+M#[9"0(A!`>LO0?9"/`%T*,9!!G#&000`QD$#`,9!`@#&005`ZQ*X`````,-F
+M9I!F9I"X`````,.X`0```//#D)"005154XGU3(MG"$F![``"`0"[`````#GS
+M<S9F9I!F9I!!BX0D`,@``(D%`````*@!=0ZX`````.L<9F9FD&9FD+\*````
+MZ`````#_PSGK<M"X_____UM=05S#9F:09F:02(M_"$B![P`"`0`/MM+!X@A%
+M#[;`0<'@!$0)PHG0@\@$A,D/1=!!@_G_=!%$B<@E__\#`(F'!,@``(/*`HD6
+MPTB+1PB#S@&)L`#&___#9I!(@^PH2(E<)!!(B6PD&$R)9"0@2(G[28GT2(MO
+M"$B+A_@3```/ME`"0;G_____0;@!````N0$```!(C70D#.AM____BW0D#$B)
+MW^BA____OA`G``!(B=_H]/[__[K_____A<!U&8N%#,;__XD%`````(E$)`Q!
+MB`0DN@````")T$B+7"002(ML)!A,BV0D($B#Q"C#9F9FD&9F9I!F9F:0059!
+M54%455-(@^P028G\B<U!B?9!B=6[`````#G+<S1(C70D#TR)Y^@S____A<!U
+M$T2)\")$)`]$..AU![@`````ZQ6_"@```.@`````_\,YZW+,N/____](@\00
+M6UU!7$%=05[#9F9FD&9FD&9FD%-(@^P02(G[2(N'^!,```^V$$&Y_____T&X
+M`````+D`````2(UT)`SH<_[__XMT)`Q(B=_HI_[__[X0)P``2(G?Z/K]__^Z
+M_____X7`=1ZYX),$`+H"````O@,```!(B=_H*O___X/X`1G2]]*)T$B#Q!!;
+MPV9F9I!F9F:09F:055-(@^P(2(G[2(G52(N'^!,```^V4`M!B?%!N`$```"Y
+M`0```$B-="0$Z/']__^+="0$2(G?Z"7^__^^$"<``$B)W^AX_?__NO____^%
+MP'482(M#"(N`#,;__XD%`````(A%`+H`````B=!(@\0(6UW#9F9FD&9F9I!F
+M9I!F9I!54TB#[`A(B?N)]<9$)`?_2(U4)`?H`````+K_____A<!U?KH`````
+M@'PD!P!T<DB)W^C)_O__B<*#^/]T8TB+@_@3```/ME`*08GI0;@`````N0``
+M``!(B>9(B=_H/OW__XLT)$B)W^AS_?__OA`G``!(B=_HQOS__[K_____A<!U
+M'KG@DP0`N@````"^`P```$B)W^CV_?__@_@!&=+WTHG02(/$"%M=PV9FD&9F
+MD%532(/L"$B)^XGUZ$#^__^)PH/X_W1F2(N#^!,```^V4`9!B>E!N`````"Y
+M`````$B-="0$2(G?Z+/\__^+="0$2(G?Z.?\__^^$"<``$B)W^@Z_/__NO__
+M__^%P'4>N>"3!`"Z`````+X#````2(G?Z&K]__^#^`$9TO?2B=!(@\0(6UW#
+M9F9FD&9FD&9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD($B)_4&)]4&)U$B+
+M7PCHEOW__T2)HPC&__](BX7X$P``#[90!46)Z4&X!````+D`````2(UT)`1(
+MB>_H"?S__XMT)`1(B>_H/?S__[X0)P``2(GOZ)#[__^Z_____X7`=1ZYB!,`
+M`+H`````O@$```!(B>_HP/S__X/X`1G2]]*)T$B+7"0(2(ML)!!,BV0D&$R+
+M;"0@2(/$*,-F9F:09F9FD&9FD&9FD$B#["A(B1PD2(EL)`A,B60D$$R);"08
+M3(ET)"!)B?Y!B?5)B=2)S;L`````.<MS'XG80HL4($&-=!T`3(GWZ/W^__^#
+M^/]T#(/#!#GK<N&X`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#
+M9F9FD&9F9I!F9F:09F:02(/L*$B)7"002(EL)!A,B60D($B)^TF)U$B+;PA(
+M@>T``@$`@/D%N`0````/0\A(BX?X$P``#[90!$&)\40/ML&Y`0```$B-="0,
+MZ-#Z__^+="0,2(G?Z`3[__^^$"<``$B)W^A7^O__NO____^%P'49BX4,R```
+MB04`````B40D#$&)!"2Z`````(G02(M<)!!(BVPD&$R+9"0@2(/$*,-F9F:0
+M9F9FD&9F9I!F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P
+M28G^08GT2(G518T\#(GS@^/\08GU08/E`W1)N00```!(C50D!(G>Z`+___^-
+M0P2Y!````$0Y^'8)1(GY1"GA1`'I1(GJ03G-<Q=(C70D!(G0#[8$!HA%`$C_
+MQ?_".<IR[H/#!$6)_4&#Y?Q$.>MS)[D$````2(U4)`2)WDR)]^BJ_O__BT0D
+M!(E%`$B#Q02#PP1$.>MRV40Y^W,YN00```!(C50D!(G>3(GWZ'[^__]$B?DI
+MV;H`````.<IS%TB-="0$B=`/M@0&B$4`2/_%_\(YRG+NN`````!(BUPD"$B+
+M;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPY!54TB#[`A(B?O'1"0$````
+M`$B+;PC&A_`3````#[85`````$&Y`````$&X`@```+D!````2(UT)`3H$OG_
+M_XMT)`1(B=_H1OG__[X0)P``2(G?Z)GX__^%P'4[BX4,QO__B04`````B40D
+M!#V_0P``=23'@^`3``"_0P``QX/D$P`````@`,>#Z!,````0``!FN```ZP6X
+M_____TB#Q`A;7<-F9F:09F9FD&9FD&9FD%532(/L"$B)^\=$)`0`````2(MO
+M",:'\!,````/MA4`````0;D`````0;@"````N0$```!(C70D!.AB^/__BW0D
+M!$B)W^B6^/__OA`G``!(B=_HZ??__X7`=3N+A0S&__^)!0````")1"0$/1]C
+M``!U),>#X!,``!]C``#'@^03``````0`QX/H$P`````!`&:X``#K!;C_____
+M2(/$"%M=PV9F9I!F9F:09F:09F:055-(@^P(2(G[QT0D!`````!(BV\(QH?P
+M$P```0^V%0````!!N?____]!N`(```"Y`0```$B-="0$Z++W__^+="0$2(G?
+MZ.;W__^^$"<``$B)W^@Y]___A<!U:HN%#,;__XD%`````(E$)`0]'T,``'0N
+M/1]$``!U3,>#X!,``!]$``#'@^03``````0`QX/H$P`````!`&:X``#K+69F
+MD,>#X!,``!]#``#'@^03``````0`QX/H$P`````!`+@`````ZP6X_____TB#
+MQ`A;7<-F9F:09F9FD&9F9I!F9I!54TB#[`A(B?O'1"0$`````$B+;PC&A_`3
+M````#[85`````$&Y`````$&X`@```+D!````2(UT)`3HTO;__XMT)`1(B=_H
+M!O?__[X0)P``2(G?Z%GV__^%P'5UBX4,QO__B04`````B40D!#WO$0``=`X]
+M[Q(``'0LZU5F9I!FD,>#X!,``.\1``#'@^03``````0`QX/H$P`````!`+@`
+M````ZS#'@^`3``#O$@``QX/D$P`````$`,>#Z!,``````0"X`````.L+9F:0
+M9F:0N/____](@\0(6UW#9F9FD%-(B?OHA_W__X7`=1-(QX/X$P```````+H`
+M````ZV&02(G?Z!C^__^%P'422,>#^!,```````"Z`````.M"2(G?Z)K\__^%
+MP'422,>#^!,```````"Z`````.LD2(G?Z+S^__^Z_____X7`=1-(QX/X$P``
+M`````+H`````9F:0B=!;PV9F9I!F9F:09F9FD$B#["A(B5PD"$B);"003(ED
+M)!A,B6PD($B)^XGU08G-28G4N@````!(@[_X$P````^$N@```$6$P'0M@_[_
+M=1$/MX?@$P``9D&)!"3IE@```$R)XNC7^O__N@````"%P`^%B@```.M_@_[_
+M9F:09I!U$T&`/"0/#Y2'\1,``+H!````ZVNZ`````("_\1,```!T78GPN@``
+M``#WM^@3``"%TG4J@+_P$P```'0.Z`````"Z`````(7`=36)[DB)W^CK]___
+MN@````"%P'4B1(GI3(GBB>Y(B=_H(OG__[H`````A<!U";H!````9F9FD(G0
+M2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPY"0D)"005154TB#[#!(B?VX````
+M`+!MM/]()?__`/](#0``(P!(NO___P#_____2"'02`T````42+K_____`/__
+M_T@AT$BZ`````#H```!("=!(NO______`/__2"'02+H``````.\``$@)T$BZ
+M________`/]((=!(N@```````!8`2`G02+K_________`$@AT$BZ````````
+M`))("=!(B40D"+D`````NB````!(C40D$)"("$C_P$C_RG7VQD0D%`%!O```
+M``!(C5PD$+D@````2(G:O@X```!(B>_H`````(7`=5N_@!H&`.@`````N2``
+M``!(B=J^#P```$B)[^@`````@_@@=3=(C70D($B-?"0(N0@```#\\Z8/E\(/
+MDL`XPG4;0;P!````#[9$)![!X`@/ME0D'PG0B87L"```00^VQ$B#Q#!;74%<
+MPV9FD&:0N0,1`">Z`````$B#?Q``=#1(BT<0BP")!0````")QDB+1Q")"$B+
+M1Q"+`(D%`````+H`````.<AU"TB+1Q"),+H!````B=##9F9FD&9F9I!!5T%6
+M055!5%532(/L"$B)^TB+!XN`8`#__XD%`````(/@`X/X`70:@_@!<@>#^`)T
+M;^MWQX?H"````0```&:0ZVGH`````(3`="6+!0````!(8]!(B1S5`````/_`
+MB04`````QX/H"````@```.L[2(G?Z`````"$P'0OBP4`````2&/02(D<U0``
+M``#_P(D%`````,>#Z`@```0```#K"L>'Z`@```,```"+!0````!(8]!(B1S5
+M`````/_`B04`````@#T```````^%J````$&]`````(7`#XZ@`@``2(,]````
+M``!T-T2)Z`^VT$C'Q@````!(BPT`````2#L,UG0=2(L$UDB)B-@(``!(BQ36
+M2(L%`````$B)@M@<``!(@ST``````'0W1(GH#[;02,?&`````$B+#0````!(
+M.PS6=!U(BP362(F(X`@``$B+%-9(BP4`````2(F"X!P``$'_Q4$/ML4[!0``
+M```/C&O____I!@(``$&]`````$R+%0````!-A=(/A.X```!!OP````!)Q\8`
+M````0;@`````1#L]``````^-N````$G'Q`````!$B<`/MM!)BP342(.XV`@`
+M```/A88```!,.=`/A'T```"[``````^V#0````"$R71M1(G"1`^VRDC'Q0``
+M``!)Q\,`````9F9FD$J+=,T`.$XY<C</ME8Y#[;!B<<#/0`````Y^G,D03A*
+M.7(>00^V0CDY^',53(F6V`@``$J+1,T`3(F0V!P``.L3_\,/ML-(P>`%0@^V
+M3!@-A,EUK$'_P$$/ML`[!0`````/C$____]!_\5$B>H/ML)-BQ3&3872#X4?
+M____0;T`````3(L5`````$V%T@^$[````$&_`````$G'Q@````!!N`````!$
+M.ST`````#XVV````2<?$`````&9FD&9FD$2)P`^VT$F+!-1(@[C@"`````^%
+M?@```$PYT'1YNP`````/M@T`````A,ET:42)PD0/MLI(Q\4`````2<?#````
+M`$J+=,T`.$XY<C</ME8Y#[;!B<<#/0`````Y^G,D03A*.7(>00^V0CDY^',5
+M3(F6X`@``$J+1,T`3(F0X!P``.L3_\,/ML-(P>`%0@^V3!@-A,EUK$'_P$$/
+MML`[!0`````/C%?___]!_\5$B>H/ML)-BQ3&3872#X4A____2(/$"%M=05Q!
+M74%>05_#9I!3NP````"X`0```(`]``````!T:>L*N`$```#K8&9FD`^VPTC!
+MX`7_PP^VB`````"$R71$1(L-`````$G'P@`````X3SER'@^V5SD/ML%&C00(
+M1#G"<PXX3CER"0^V1CE$.<!RL0^VPTC!X`7_PT(/MDP0#83)=<JX`````%O#
+MD(N'Z`@``+H!````.X;H"```=PZ+A^@(```[AN@(```9THG0PV9F9I!F9F:0
+M9F9FD+@`````.ST`````?3=(8\=(Q\$`````2(T$0$C!X`,/MQ0(9HD6#[=4
+M"`)FB58"#[94"`B(5@@/MD0("8A&";@!````\\-F9F:09F:09F:0059!54%4
+M55-(@^P(B7PD!+T`````2<?&`````$G'Q0````!(8\5(B<)(P>`%9D*#/#``
+M#X2Q````0;H`````38GH0H!\*`P`#X21````2,?#`````/Q!O`````!)B=.0
+M28G126/"2(T$T$B--(-(C7PD!+D$````\Z8/E\(/DL`XPG4\3(G&3(G)2,'A
+M!4(/MD0!#?_`0HA$`0U"@'P!#`!T'4(Z1`$,=A9F#[;`9D(/MGP!#$2)XF;W
+M]XA4,0V00?_"3(G:2<?``````$R)V$C!X`5"#[9$``Q$.=!_@?_%@_T##XXY
+M____2(/$"%M=05Q!74%>PV9FD&9FD&9FD$%7059!54%455-(@^P8QD0D%P!!
+MOP`````/MD0D%XE$)`Q!O@````!!#[;?B5PD$$$/MM:Y`````(MT)!"+?"0,
+MZ`````!!B<1!N0````!$.PT`````#XU*`0``2,?%`````$ECP4B-!$!(P>`#
+M#[=4*`+!XA`/MP0H"<)$.>(/A1$!``"[`````$G'PP````!)8\%(C01`2(TT
+MQ0````!)Q\4`````2<?"`````&:0#[;32(G12,'A!69"@SP9`'522(N&````
+M`$J)!!F+A@````!"B409"$H/MD0I#$C!X@-(C00"#[9<)!=!B%R##4H/MD0I
+M#$B-!`)%B'R##DH/MD0I#$@!PD6(=),/0OY$*0SK=P^V^TG'P`````!(B?E(
+MP>$%0@^V1`$,N@````!"]W06!(72=$=*#[9$`0Q(C13]`````$B-!`(/MEPD
+M%T&(7(,-2@^V1`$,2(T$`D6(?(,.2@^V1`$,2`'"18ATDP]"_D0!#.L29F9F
+MD&9FD/_#@/L##X8E____26/!2(T$0/]$Q0Q!_\%$.PT`````#XR]_O__0?[&
+M#X2!_O__0?_'08#_'P^&9O[___Y$)!>`?"07_P^%2/[__TB#Q!A;74%<05U!
+M7D%?PV9FD&9FD$%7059!54%455-(@^P(2(GS28G40;T`````@ST``````'4/
+MQP4``````0```.CN_?__2(7;=`/&`P!!N@````!$.Q4`````?3M(Q\$`````
+M2,?&`````$ECPDB-!$!(C13%`````$0#;`H,2(7;=`@/M@,"!#*(`T'_PD0[
+M%0````!\TTV%Y`^$JP```$&Z`````$ECPDB)PDC!X`5F@[@```````^$C0``
+M`$&X`````("X``````!T<4C'Q0````#\2<?'`````$F)UDG!Y@5)B=-)B=%)
+M8\!(C0302(UTA0!,B>>Y!````/.F#Y?"#Y+`.,)U'$B%VW0/3(G(2,'@!4(/
+MMD0X#8@#1P^V;#X,ZQE!_\!,B=I,B=A(P>`%#[:``````$0YP'^H0?_"08/Z
+M`P^.6____T$/ML5(@\0(6UU!7$%=05Y!7\-F9I!FD+@`*```PV9F9I!F9I!F
+M9I"XT````,-F9F:09F:09F:0N`@```##9F9FD&9FD&9FD$%6055!5%5328G\
+M08GU2(G328G.2(VJ`!0``+D`````N@`H``!(B=B("$C_P$C_RG7V3(ES((L5
+M`````(U"`8D%`````(A30$2):SC&0T$`00^W!"1FB4,P00^W1"0"9HE#,D&+
+M1"0$B4,T3(EU((A50$2);3C&14$!00^W!"1FB44P00^W1"0"9HE%,D&+1"0$
+MB44T#[=#,CTB)P``?VL]("<```^-]0```#U`(0``#X3J````/4`A``!F9I!F
+MD'\;/2`A```/A-,````](B$```^$R````.G7````/40A```/A+@````]1"$`
+M`&9FD`^,O@```"T0)P``@_@!9I`/AZX```#IE0```#U@)P``#X2*````/6`G
+M``!F9I!FD'\P/4`G``!T=SU`)P``9I!_$#TP)P``=&=F9F:09F:0ZW(]1"<`
+M`'179F9FD&9FD.MB/8(G``!T1SV")P``9I!_$#V`)P``=#=F9F:09F:0ZT(]
+M@)$``'0+/8"4``!FD'0>ZS!FQT,\@)'&0SX$9L=%/("1QD4^!.L:9F:09F:0
+M9L=#/("4QD,^!&;'13R`E,9%/@1!#[9$)`B(0T)!#[9$)`B(14*Y```$`+H`
+M````O@(```!,B??H`````$B)`[D`(```N@````"^`````$R)]^@`````2(E#
+M$$B#.P!T!4B%P'4*N`````#I\0```$B+`TB-B``"`0!(B4L(2(V0```"`$B)
+M$T@%`$`"`$B)10!(B4T(2(M#$$B)11!!N`````!$.P4`````?59(Q\<`````
+M1(L-`````$ECP$B-!$!(C0S%`````$&+!"0Y!#EU*$C'Q@````"+!#'_P(D$
+M,8-\.0P`=!([1#D,=@RZ`````/=T.0R)%#%!_\!%.<A\N$B+0PC'@"""__\!
+M\`,`2(M#",>`*(+__P$``.A(BWL@OG@```#H`````(G")0!P```]`"```'81
+M#[;R2(M[(+IX````Z`````!$B>_HK/C__TB)W^@4]/__N`$```!;74%<05U!
+M7L-F9I!F9I!32(G[Z`````!(@<,`%```2(G?Z`````"X`0```%O#D$B#[!A(
+MB5PD"$B);"002(G]2(N?T`@``$B!PP`4``#H`````(!]40%U!H![40%T.TB-
+MG7`!``!(BWTH2(G>Z`````#'A7`!``#H`P``2,>%@`$```````!(B:V(`0``
+M2(M]*$B)WN@`````2(M<)`A(BVPD$$B#Q!C#9F:09F:055-(@^P(2(G[2(VO
+M`!0``.@`````2(E#*$B)12A(B9O0"```2(F=T`@``(N#Z`@``(F%Z`@``$B)
+MW^@`````2(GOZ`````!(B=_H`````+H`````A,!T?DB)[^@`````N@````"$
+MP'1M2(G?Z`````"_T`<``.@`````2(G?Z`````!(B=_H`````,>#<`$``.@#
+M``!(QX.``0```````$B)FX@!``!(C;-P`0``2(M[*.@`````O@````!(B=_H
+M`````+X`````2(GOZ`````"Z`0```(G02(/$"%M=PY!!5%532(/L,$B)^[@`
+M````L&VT_T@E__\`_T@-```C`$BZ____`/____]((=!(#0```!1(NO____\`
+M____2"'02+H`````.@```$@)T$BZ______\`__]((=!(N@``````[P``2`G0
+M2+K_______\`_T@AT$BZ````````%@!("=!(NO________\`2"'02+H`````
+M````DD@)T$B)1"0(2(._V`@```!T!TB+G]@(``"Y`````+H@````2(U$)!"(
+M"$C_P$C_RG7VQD0D%`%!O`````!(C6PD$+D@````2(GJO@X```!(B=_H````
+M`(7`=4>_@!H&`.@`````N2````!(B>J^#P```$B)W^@`````@_@@=2-(C70D
+M($B-?"0(N0@```#\\Z8/E\`/DL(XT+@!````1`]$X$6$Y'412,?'`````+@`
+M````Z`````!!#[;$2(/$,%M=05S#9F:0\\-F9F:09F9FD&9FD&9FD%532(/L
+M"$B)_4B)\[D`````NH````!(B?!F9F:09F:0B`A(_\!(_\IU]H.]Z`@```$/
+ME$,3BT4XB0.`2Q$0#[=%,&:)0P0/MT4R9HE#!HN%Z`@``(A#<,9#$B`/MT4R
+M9CT@(0^4PF8](B$/E,`)T*@!=$3&0Q<"QT,\4F]C:\=#0&5T4D''0T1)1"!3
+MQT-(4T0@,L=#3#$R>"#'0U!#;VYTQT-4<F]L;&;'0UAE<L9#6@#IX@````^W
+M53*-@O#8__]F@_@!#Y;!9H'Z0"$/E,`)R*@!=0MF@?I$(0^%I````,9#%P0/
+MMT4R9BT0)V:#^`%W/<=#/%)O8VO'0T!E=%)!QT-$240@,L=#2#<Q>"#'0TQ3
+M05,@QT-00V]N=,=#5')O;&QFQT-897+&0UH`ZVD/MT4R9CU`(0^4PF8]1"$/
+ME,`)T*@!=%''0SQ2;V-KQT-`97120<=#1$E$(%/'0TA31"`RQT-,,31X(,=#
+M4$-O;G3'0U1R;VQL9L=#6&5RQD-:`.L4QD,7"$B->SQ(Q\8`````Z``````/
+MMD,7]F,2B$,0A,!U!,9#$(#'0QA(:6=HQT,<4&]I;L=#('0@5&7'0R1C:&YO
+MQT,H;&]G:<=#+&5S+"#'0S!);F,NQD,T`$B#O>`(````=!%(BX7@"```2(M`
+M$$B)0VCK"$B+11!(B4-HQT-@`"```$B#Q`A;7<-F9F:09F9FD&9F9I!F9I#&
+MA\L`````PV9F9I!F9F:02(/L6$B)7"1`2(EL)$A,B60D4$B)_4R+9WA)BX0D
+MT`@``(!X/P`/A:L```!(BY^`````2(M_8$0/MH\'`0``1`^V10`/MDT"#[95
+M`8MU"`^VA],```")1"0X#[:'T@```(E$)#`/MH?1````B40D*`^VA]````")
+M1"0@#[:'SP```(E$)!@/MH?.````B40D$`^VA\T```")1"0(#[:'S````(D$
+M)$&#X`%(Q\<`````N`````#H`````$C'A8``````````BU4(2(N]D````$B)
+M[O_3ZSU(C9^8````28M\)"A(B=[H`````,>%F````/0!``!(QX6H````````
+M`$B)K;````!)BWPD*$B)WN@`````2(M<)$!(BVPD2$R+9"102(/$6,-F9F:0
+M9F9FD$%7059!54%455-(@^P(28G]28GT#[?22&G2B`$``$B)U4@#KQ@)``!(
+MB[_0"```2(''`!0``$B);F!(B74X2(-]4`!U"TB#?5@`#X2C`P``O@````!!
+M@`PD`4B+15A)B40D<$B+15!)B40D:+H`````08!]0P!V)4B+34AF9F:0#[;"
+M2&O`:$H[C"A($@``#X2$`@``_\)!.%5#=^.Z@/___TF+C=`(```/ML(/MH0(
+M0`@``#S_="1(@WU0`'0;#[;`2&G`R`\``$@#@6@)``!(.T50#X0U`@``_\;_
+MPH#Z@7;&NH+___])BXW0"```D`^VP@^VA`A`"```//]T'0^VP$AIP-````!(
+M`X%`"0``2#M%6`^$ZP$``/_&_\*`^H5VS;J`____#[;"#[:$.$`(```\_W0D
+M2(-]4`!T&P^VP$AIP,@/``!(`X=H"0``2#M%4`^$GP$``/_&_\*`^H%VQKJ"
+M____#[;"#[:$.$`(```\_W0=#[;`2&G`T````$@#AT`)``!(.T58#X1=`0``
+M_\;_PH#ZA7;-08!]40%U/TB#?5``=!(/MG5Y2(M]4+H`````Z`````!(@[T8
+M`0````^$"0(```^VM04!``!(B[T8`0``N@````#H`````$B#O1@!````#X3C
+M`0``3(M]4$&^`````$&`?U@`=DI)C5](2(G?Z`````!(C4CP2(M3"$B)0PA(
+MB1A(B5`(2(D"@+D'`0``_W46@'E!`'402(.Y&`$```!U#V9FD&9FD$'_QD4X
+M=UAWND4X=U@/A=L````/MH4'`0``08A$)`)!O@````!!@']8``^&P`$``$F-
+M7TA(B=_H`````$B-2/!(BU,(2(E#"$B)&$B)4`A(B0)(@WDX`'1'2(M1.`^V
+M0@(Z@0<!``!T-TB#NH``````=2U(@[J(`````'4C#[:!!P$``(A"`D@/MU$P
+M28NUT`@``+\'````Z`````!F9I!!_\9%.'=8=XOI0@$``$&(="0!Z:+^__]!
+MB'0D`69FD.F5_O__08AT)`'IB_[__T&(="0!Z8'^__]!#[9%08T$@D&(A"3,
+M````Z6_]__\/MD5Y08A$)`+&A0<!``#_0;X`````08!_6``/AN$```!)C5](
+M2(G?Z`````!(C4CP2(M3"$B)0PA(B1A(B5`(2(D"@+D'`0``_W1,QH$'`0``
+M_TB#>3@`=#Y(BU$X#[9"`CI!>70Q2(.Z@`````!U)TB#NH@`````=1T/MD%Y
+MB$("2`^W43!)B[70"```OP<```#H`````$'_QD4X=UAWA.M?#[9%>4&(1"0"
+MZU1!#[9%08T$@D&(1"0!08B$),P```#K*;H`````08!]0P!V'4B+34@/ML)(
+M:\!H2CN,*$@2``!TR/_"03A50W?G03A50W4&0<9$)`'_0<9$)`(`9I!(BX60
+M````28E$)"!(BX68````28E$)"A(BX6@````28E$)#!(BX6H````28E$)#A(
+MBX6P````28E$)$!(BT5\28E$)`Q(BX6$````28E$)!2+A8P```!!B40D'$B+
+MA;@```!)B40D2`^W16!F08E$)%@/MT5B9D&)1"1:2(M%<$F)1"10#[9%>D&(
+M1"1<]D5$!'4C08"][Q,```!T$4'^C>\3``!!@+WO$P```'4(3(GOZ`````!(
+MBT4X#[9P`;H`````3(GOZ`````!(#[9%0*@"=`^H!'0+J`%U!T&`#"0"ZP5!
+M@"0D_0^V5430ZH/B!$$/M@0D@^#["=!!B`0D3(GGZ)CY__](@\0(6UU!7$%=
+M05Y!7\-F9I!F9I!F9I!!5T%6055!5%532(/L"$F)_8GU28G4O@````"ZT```
+M`$R)X$"(,$C_P$C_RG7U08EL)`B#_3]^"DF!Q0`4``"#[4!(8\6Z`````$F#
+MO,5`!`````^%@P(``$ACQ4V)I,5`!```38EL)'A)B8PD@````$V)A"20````
+MN@$```!!@'U1`0^%4P(``&;'1"0&_P"!_84```!_#V9"#[:$*$`(``!FB40D
+M!F:!?"0&_P`/A/X!``!(#[=$)`9)BXT8"0``2&G0B`$``/9$"D,$#X3?`0``
+MBT0*0"4`__\`/0``_P`/A<L!``!(C1P*]D-$!`^$3`$``,:#X`````!(#[9#
+M0*@"=#*H!'0NJ`%T*L9#0@7&0T,$#[93>4B+<U!(BWM(2(G9Z`````#I?0$`
+M`,:#X0````'K<D@/MD-`J`)FD`^%@````*@$='RH`71X3(MC2,9#0@/&0T,$
+M0;X`````08!\)`X`=$%)C6PD8$B)[^@`````2(M5"$B)10A(B2A(B5`(2(D"
+M@'A"_P^5PD@YV`^5P`^VTH70=9-!_\9!#[9$)`Y$.?!_Q("[X0````$/A/4`
+M``!(B=Y,B>_H`````.GE````2`^V0T"H`@^$V````*@$#X30````J`%F9I`/
+MA<4```!(BT-(#[9`#;T`````08!]/@!V*40/MN!`#[;-3(G@2-/XJ`%T#[H`
+M````B<Y,B>_H`````/_%03AM/G?;QD-#!L9#0@5FQX/```````!(B=Y,B>_H
+M`````.MJ3(M[2,9$)`4`08!_#@!V2DV-=V!,B??H`````$B)PTF+1@A)B5X(
+M3(DS2(E#"$B)&(![0O]T%`^V0T$\(@^4PCP-#Y3`"="H`74\_D0D!0^V1"0%
+M03A'#G>Z#[=4)`9,B>9,B>_H`````+H!````ZRI(8\5)QX3%0`0```````"Z
+M`````.L42&/%2<>$Q4`$````````N@````")T$B#Q`A;74%<05U!7D%?PV9F
+MD$B#["A(B1PD2(EL)`A,B60D$$R);"083(ET)"!(B?M)B?5)B=1(BV]@2(7M
+M=0I(B=?_UND(`0``2(._B`````!U"DB#OX``````=`M,B>=!_]7IZ0```("]
+MX`````!FD`^%S@```$B+?4A(#[9'#*@0#X6]````J`@/A;4```!,BS>`?7L`
+M=`U(B>J^!@```.@`````3(FKB````$R)HY````!(#[9%0*@"=":H!'0BJ`%T
+M'L9%0@7&14,$#[95>4B+=5!(BWU(2(GIZ`````#K;D@/MD5`J`)U):@$9F:0
+M=!ZH`70:QD5"`\9%0P1(B>Y,B??H`````.M%9F:09I!(#[9%0*@"=#>H!&9F
+MD&:0="ZH`74JQD5"!<9%0P9FQX7```````!(B>Y,B??H`````.L,3(GG0?_5
+M9F:09F:02(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$*,-F9I!(@^P82(D<
+M)$B);"0(3(ED)!!(B?-(BT=(3(L@2(MN:`^V1B2#^"!T3X/X('\2A<!T(H/X
+M!G\ZZR]F9F:09F:0@_@B=#.#^")\'H/`@(/X`7<?ZQ1(BT<XQT`$`````,:%
+MJ@````'K$,:%J@````WK![@`````ZS%(@WMX`'012(US>$R)Y^@`````9F:0
+M9I!(B=Y,B>?H`````$B)[_^5P````+@!````2(L<)$B+;"0(3(MD)!!(@\08
+MPV9F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P2(G[2(GU
+M3(MO>$B+1DA(B3A(@W]@`'46QH:J`````DB)]_^6P````.D'!@``D$B+1V#V
+M0$0"=!7&AJH````"2(GW_Y;`````Z><%``!,B>_H`````$F)Q$B%P'45QH6J
+M`````DB)[_^5P````.G"!0``QX"4`````````$B):&A(BT-@28E$)"A(BT-@
+M#[=`,&9!B40D($'&1"0D@`^VA:@```"#^`(/A*0!``"#^`)_"87`="/I@P,`
+M`(/X`P^$-`(``(/X!&9F9I!F9I`/A/0!``#I90,``$B+0V#V0&`!#X3$````
+M]H6I`````G0(0<9$)#B(ZQD/MH6I````@^`$/`$9P(/@!8/H=D&(1"0X2(N5
+MD`````^WC9@```!!QD0D.0!(B=!(P>@X08A$)#I(B=!(P>@P08A$)#M(B=!(
+MP>@H08A$)#Q(B=!(P>@@08A$)#U(B=!(P>@808A$)#Y(B=!(P>@008A$)#](
+MB=!(P>@(08A$)$!!B%0D04'&1"1"`$'&1"1#`(G(9L'H"$&(1"1$08A,)$5!
+MQD0D1@!!QD0D1P#I@P```/:%J0````)T"$'&1"0X*.L9#[:%J0```(/@!#P!
+M&<"#X`6#P"I!B$0D.$B+E9`````/MXV8````0<9$)#D`2(G02,'H&$&(1"0Z
+M2(G02,'H$$&(1"0[2(G02,'H"$&(1"0\08A4)#U!QD0D/@")R&;!Z`A!B$0D
+M/T&(3"1`0<9$)$$`2(M#8$@%Y````$F)1"100<9$)#`@08.,))0````"Z?D!
+M``"`O9`````0=P7V`P)U#,:%J@````;IM0,``$@/MI60````2(NUF````$F-
+M?"0XZ`````!(BT-@2`7D````28E$)%!!QD0D,"!!@8PDE```````$`!!QD0D
+M):OVA:D````&#X22`0``BX64````08E$)#3I@@$```^VA:D```"#X#`\('47
+M0<9$)#@;0<9$)#D!0<9$)#P`Z5T!``!!QD0D.#7I4@$``$B+0V!(#[9`0*@!
+M=`2H!'4,QH6J````!ND+`P``08&,))0``````"``#[>%G````&8[A9(```!T
+M2P^VA9L```"#^$)T/X/X0G\.@_A`=#5F9F:09F:0ZR`]L````'0)/>P```!F
+MD'40#[>%G````&:)A9(```#K#,:%J@````;II`(``$'&1"0XL`^WA9````!!
+MB$0D.0^WA9(```!!B$0D.@^WA90```!!B$0D.P^WA98```!!B$0D/`^WA9@`
+M``!!B$0D/0^VA9H```!!B$0D/@^VA9L```!!B$0D/V8/MH61````08A$)$!F
+M#[:%DP```$&(1"1!9@^VA94```!!B$0D0F8/MH67````08A$)$-F#[:%F0``
+M`$&(1"1$]H6I````!G0J#[>%G````,'@"4&)1"0T08.,))0````$ZQ!F9F:0
+MQH6J````!NG6`0``38UT)%A)QX0DH``````````/MH6I````J`8/A*`!``"[
+M`````*@"=`M!@XPDE`````CK"4&#C"24````$$B#O;``````=!+VA:D````!
+M=`E(BYVP````ZRI(@[VX`````'0@28NU(`H``+H`````2(GO_Y6X````A<!T
+M!TF+G2`*``!(A=MT-4R)Y^@`````O@````!,B??H`````$B+<PB+$TR)]^@`
+M````2(U#!$B#PQ"#.`!TY>D,`0``3(GOZ`````!(B00D2(7`=0S&A:H````&
+MZ?P```!(BQ0D2(M"$$F)1"1(28E4)'BY`````+H``@``B`A(_\!(_\IU]O:%
+MJ0````0/A(\```!!]H0DE@```"!T&$F+?"1(08M4)#1(B[6@````Z`````#K
+M;$'VA"26````$'1A38M\)$A(@[VP`````'02]H6I`````74)2(N=L````.L@
+M28NU(`H``+H!````2(GO_Y6X````A<!T!TF+G2`*``!(BW,(BQ-,B?_H````
+M`(L#20''2(U#!$B#PQ"#.`!TX+X`````3(GWZ`````!!BU0D-$B+!"1(BW`8
+M3(GWZ`````#K"4&#C"24`````4R)YDR)[^@`````ZQ1,B>9,B>_H`````$B)
+M[_^5P````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9F
+MD&9FD$B#[&A(B5PD.$B);"1`3(ED)$A,B6PD4$R)="183(E\)&!(B?M)B?1(
+MB4PD,$&)U42(1"0OQT0D%/____^)T,'@"6:)1"023(M_8$V%_W0)@+_+````
+M`'0)BT0D%.D/`P``28M72$B)5"0(3(MW>&;'A\@````0)TR)]^@`````2(G%
+MBT0D%$B%[0^$X0(``$R)]^@`````2(E$)"!(A<!U%$B)[DR)]^@`````BT0D
+M%.F[`@``28NVT`@``,9&/P%(B=J_!0```.@`````08!/1`)(BU-@OB$```!(
+MBWPD".@`````2(U%6$B)1"08@'PD+P!T$,>%E`````H```#&13@HZR?'A90`
+M```2````QD4X*DB+5"0@2(MZ$$@/MU0D$DB+="0PZ`````!(BT-@]D!@`71^
+M@'PD+P$9P(/@`H/H>(A%.,9%.0!,B>!(P>@XB$4Z3(G@2,'H,(A%.TR)X$C!
+MZ"B(13Q,B>!(P>@@B$4]3(G@2,'H&(A%/DR)X$C!Z!"(13],B>!(P>@(B$5`
+M1(AE0<9%0@#&14,`1(GH9L'H"(A%1$2(;47&148`QD5'`.M,@'PD+P$9P(/@
+M`H/`*(A%.,9%.0!,B>!(P>@8B$4Z3(G@2,'H$(A%.TR)X$C!Z`B(13Q$B&4]
+MQD4^`$2)Z&;!Z`B(13]$B&U`QD5!`$B)[^@`````2(M#8`^W0#!FB44@QD4D
+M@$B)72A(BU0D($B+0A!(B45(#[=$)!*)131(B55XQD4P($B+0V!(!>0```!(
+MB4502,>%H`````````"^`````$B+?"08Z`````"+531(BT0D($B+<!A(BWPD
+M&.@`````QH/+`````4B)[DR)]^@`````2(7;#X2?````2(-[8`!T5("[RP``
+M``!T2V:!N\@```"6`'422(M38$B+>DB^(0```.@`````9O^+R````+_0!P``
+MZ`````!,B??H`````$B%VW142(-[8`!T"8"[RP````!UM4B%VW0_2(-[8`!T
+M.&:#N\@`````="Z`?20`=2C'1"04`````(!\)"\`=!E(#[=4)!)(BT0D($B+
+M<!!(BWPD,.@`````2(-]>`!T#$B-=7A,B??H`````$B)[DR)]^@`````28NV
+MT`@``,9&/P!(B=J_!@```.@`````08!G1/V+1"042(M<)#A(BVPD0$R+9"1(
+M3(ML)%!,BW0D6$R+?"1@2(/$:,-F9F:09F9FD&9F9I!(@^P82(E<)`A,B60D
+M$$F)_$&(="1/0`^VWHG>Z`````!)@<0`%```B=Y,B>?H`````+@!````2(M<
+M)`A,BV0D$$B#Q!C#9F9FD&9FD&9FD$B#[`CH``````^VP$B#Q`C#9F9FD&9F
+M9I!F9F:09F:0N`````##9F9FD&9FD&9FD+D`````NH````!(B[?0"```#[?"
+M@+PP0`@``/\/E<`/ML`!P?_"9H'ZA0!VY$B+O]`(``!(@<<`%```NH`````/
+MM\*`O#A`"```_P^5P`^VP`'!_\)F@?J%`';DB<C#D(GRB?#`Z`0\"78%@\!7
+MZPB)\,#H!(/`,(@'B="#X`^#^`E^#(G0@^`/@\!7ZPIFD(G0@^`/@\`PB$<!
+MPV9F9I!(@^P02(D<)$R)9"0(2(G[08GT3(G@#[;TZ*+___]!#[;T2(/#`DB)
+MW^B2____2(L<)$R+9"0(2(/$$,-F9F:055-(B=5!N0````"Y`````+H``0``
+M2(GHB`A(_\!(_\IU]KF`````3(N'T`@```^WP69"#[:4`$`(``!F@?K_``^$
+M8@$``$2)R$'_P3GP#X54`0``9H'Y@0`/A\4````/M\)(:<#(#P``2(G"20.0
+M:`D``$B#>A``=&>Y@````$R)Q@^WP68/MH0P0`@``&8]_P!T%P^WP$AIP,@/
+M``!(`X9H"0``2#M"$'0Q_\%F@?F!`';.NP````"`>EH`=C&^`0````^VPP^V
+M3!!PB?#3X`E%(/_#.%I:=^KK%(A-`NO3QD4"_TB+0@@/MD`-B44@QD4``0^V
+M0EF(10%(BT)X2(E%!$B+@H@```!(B44,2(N"D````$B)112+@J````")11SK
+M>DB+A]`(```/M])(:=+0````2(G32`.80`D``,9%`O_&10`"2(N'T`@``$B+
+M@$`)```/MD0".XA%`4B+@X@````/MD`-B44@QD4$=@^W<SQ(C7T%Z$3^___&
+M10QD#[=S/DB-?0WH,_[__\9%''(/MG,Y2(U]'>CB_?__N`````#IF@$``/_!
+M9H'YA0`/AG+^__](B[_0"```2(''`!0``+F`````#[?!9@^VE#A`"```9H'Z
+M_P`/A%$!``!$B<A!_\$Y\`^%0P$``&:!^8$`#X?"````#[?"2&G`R`\``$B)
+MPD@#EV@)``!(@WH0`'1DN8`````/M\%F#[:$.$`(``!F/?\`=!</M\!(:<#(
+M#P``2`.':`D``$@[0A!T,?_!9H'Y@0!VSKL`````@'I:`'8QO@$````/ML,/
+MMDP0<(GPT^`)12#_PSA:6G?JZQ2(30+KT\9%`O](BT((#[9`#8E%(,9%``$/
+MMD)9B$4!2(M">$B)101(BX*(````2(E%#$B+@I````!(B444BX*@````B44<
+MZVP/M])(:=+0````2(G32`.?0`D``,9%`O_&10`"2(N'0`D```^V1`([B$4!
+M2(N#B`````^V0`V)12#&101V#[=S/$B-?07HO/S__\9%#&0/MW,^2(U]#>BK
+M_/__QD4<<@^V<SE(C7T=Z%K\__^X`````.L59F:0_\%F@?F%``^&B_[__[C_
+M____6UW#9F9FD&9F9I!F9I!54TB)U4&Y`````+D`````NJ0,``!(B>B("$C_
+MP$C_RG7VN8````!,BX?0"```#[?!9D(/MI0`0`@``&:!^O\`#X0*`P``1(G(
+M0?_!.?`/A?P"``!F@?F!``^':0(```^WPDAIP,@/``!)`X!H"0``28G`2(-X
+M$`!T;KJ`````2(N/T`@```^WPF8/MH0(0`@``&8]_P!T%P^WP$AIP,@/``!(
+M`X%H"0``23M`$'0T_\)F@?J!`';.N@````!!@'A:`'8SO@$````/ML)"#[9,
+M`'")\-/@"44@_\)!.%!:=^CK%(A5`NO0QD4"_TB+0`@/MD`-B44@QD4``4$/
+MMD!9B$4!28M`>$B)101)BX"(````2(E%#$F+@)````!(B44408N`H````(E%
+M'+L`````08"XP``````/A@0"```/ML-(C0R`2(U,S0!(C01`2,'@!$P!P$B-
+ML,`````/ME8(B%$D#[96"8A1)4B+@-`````/M@"#X`^(028/MD$D@_@#=#*#
+M^`-_#H/X`@^$X0```.G-````@_@$9F9FD&9FD'1)@_@2#X2+````9F:09I#I
+MK@````^VRTB-!$E(P>`$2HN$`-`````/ME`!@^('#[;2P>((2(T,B0^V0`(!
+MT&O`"HE$S2CIAP````^VTTB-!%)(P>`$2HN$`-````"`>`(`=0Y(C022QT3%
+M*`````#K8`^VPTB-%(!(C01`2,'@!$J+A`#0````#[9``H/H%(E$U2CK/`^V
+MRTB-!$E(P>`$2HN$`-`````/ME`"P>((2(T,B0^V0`,!T&O`"HE$S2CK#P^V
+MPTB-!(#'1,4H``````^VPTB-%(!(C535`$B-<BQ(C01`2,'@!$P!P$B-B-@`
+M``!(BX#8````2(E"+$B+00A(B48(2(M!$$B)1A!(BT$82(E&&/_#03B8P```
+M``^'>/[__^MZ2(N'T`@```^WTDAITM````!(B=-(`YA`"0``QD4"_\9%``)(
+MBX?0"```2(N`0`D```^V1`([B$4!2(N#B`````^V0`V)12#&101V#[=S/$B-
+M?07H4/G__\9%#&0/MW,^2(U]#>@_^?__QD4<<@^V<SE(C7T=Z.[X__^X````
+M`.D^`P``9F9FD/_!9H'YA0`/ALK\__](B[_0"```2(''`!0``+F`````#[?!
+M9@^VE#A`"```9H'Z_P`/A/$"``!$B<A!_\$Y\`^%XP(``&:!^8$`#X=E`@``
+M#[?"2&G`R`\``$F)P$P#AV@)``!)@W@0`'1GNH`````/M\)F#[:$.$`(``!F
+M/?\`=!</M\!(:<#(#P``2`.':`D``$D[0!!T-/_"9H'Z@0!VSKH`````08!X
+M6@!V,[X!````#[;"0@^V3`!PB?#3X`E%(/_"03A06G?HZQ2(50+KT,9%`O])
+MBT`(#[9`#8E%(,9%``%!#[9`68A%`4F+0'A(B44$28N`B````$B)10Q)BX"0
+M````2(E%%$&+@*````")11R[`````$&`N,``````#X;Y`0``#[;#2(T,@$B-
+M3,T`2(T$0$C!X`1,`<!(C;#`````#[96"(A1)`^V5@F(425(BX#0````#[8`
+M@^`/B$$F#[9!)(/X`W0S@_@#?Q.#^`(/A.0```!F9I!FD.G+````@_@$=$R#
+M^!)F9I`/A(L```#IM0```&9FD&:0#[;+2(T$24C!X`1*BX0`T`````^V4`&#
+MX@</MM+!X@A(C0R)#[9``@'0:\`*B43-*.F)````#[;32(T$4DC!X`1*BX0`
+MT````(!X`@!U#DB-!)+'1,4H`````.MB#[;#2(T4@$B-!$!(P>`$2HN$`-``
+M```/MD`"@^@4B435*.L^#[;+2(T$24C!X`1*BX0`T`````^V4`+!X@A(C0R)
+M#[9``P'0:\`*B43-*.L19I`/ML-(C02`QT3%*``````/ML-(C12`2(U4U0!(
+MC7(L2(T$0$C!X`1,`<!(C8C8````2(N`V````$B)0BQ(BT$(2(E&"$B+01!(
+MB4802(M!&$B)1AC_PT$XF,`````/AW7^___K;`^WTDAITM````!(B=-(`Y]`
+M"0``QD4"_\9%``)(BX=`"0``#[9$`CN(10%(BX.(````#[9`#8E%(,9%!'8/
+MMW,\2(U]!>@A]O__QD4,9`^W<SY(C7T-Z!#V___&11QR#[9S.4B-?1WHO_7_
+M_[@`````ZQ+_P6:!^84`#X;K_/__N/____];7<-F9I!!5%5308GT2(G50;@`
+M````N0````"ZI`P``$B)Z&9FD(@(2/_`2/_*=?:Y@````$B+M]`(```/M\%F
+M#[:4,$`(``!F@?K_``^$*0,``$2)P$'_P$0YX`^%&@,``&:!^8$`#X>'`@``
+M#[?"2&G`R`\``$F)P$P#AF@)``!)@W@0`'1JNH````!(B?$/M\)F#[:$"$`(
+M``!F/?\`=!</M\!(:<#(#P``2`.!:`D``$D[0!!T-/_"9H'Z@0!VSKH`````
+M08!X6@!V,[X!````#[;"0@^V3`!PB?#3X`E%(/_"03A06G?HZQ2(50+KT,9%
+M`O])BT`(#[9`#8E%(,9%``%!#[9`68A%`4F+0'A(B44$28N`B````$B)10Q)
+MBX"0````2(E%%$&+@*````")11Q$B64DNP````!!@+C```````^&)@(```^V
+MPTB-#(!(C4S-`$B-!$!(P>`$3`'`2(VPP`````^V5@B(D:@````/ME8)B)&I
+M````2(N`T`````^V`(/@#XB!J@````^V@:@```"#^`-T+H/X`W\.@_@"#X3M
+M````Z=8```"#^`1F9I!T3(/X$@^$E````&9FD&:0Z;L````/MLM(C01)2,'@
+M!$J+A`#0````#[90`8/B!P^VTL'B"$B-#(D/MD`"`=!KP`J)A,VL````Z90`
+M```/MM-(C0122,'@!$J+A`#0````@'@"`'412(T$DL>$Q:P`````````ZVH/
+MML-(C12`2(T$0$C!X`1*BX0`T`````^V0`*#Z!2)A-6L````ZT,/MLM(C01)
+M2,'@!$J+A`#0````#[90`L'B"$B-#(D/MD`#`=!KP`J)A,VL````ZQ.0#[;#
+M2(T$@,>$Q:P`````````#[;#2(T4@$B-5-4`2(VRL````$B-!$!(P>`$3`'`
+M2(V(V````$B+@-@```!(B8*P````2(M!"$B)1@A(BT$02(E&$$B+01A(B488
+M_\-!.)C`````#X=:_O__ZWY(BX?0"```#[?22&G2T````$B)TT@#F$`)``#&
+M10+_QD4``DB+A]`(``!(BX!`"0``#[9$`CN(10%(BX.(````#[9`#8E%(,9%
+M!'8/MW,\2(U]!>B:\O__QD4,9`^W<SY(C7T-Z(GR___&11QR#[9S.4B-?1WH
+M./+__T2)922X`````.EA`P``_\%F@?F%``^&K/S__TB+O]`(``!(@<<`%```
+MN8`````/M\%F#[:4.$`(``!F@?K_``^$&`,``$2)P$'_P$0YX`^%"0,``&:!
+M^8$`#X>'`@``#[?"2&G`R`\``$F)P$P#AV@)``!)@W@0`'1GNH`````/M\)F
+M#[:$.$`(``!F/?\`=!</M\!(:<#(#P``2`.':`D``$D[0!!T-/_"9H'Z@0!V
+MSKH`````08!X6@!V,[X!````#[;"0@^V3`!PB?#3X`E%(/_"03A06G?HZQ2(
+M50+KT,9%`O])BT`(#[9`#8E%(,9%``%!#[9`68A%`4F+0'A(B44$28N`B```
+M`$B)10Q)BX"0````2(E%%$&+@*````")11Q$B64DNP````!!@+C```````^&
+M&P(```^VPTB-#(!(C4S-`$B-!$!(P>`$3`'`2(VPP`````^V5@B(D:@````/
+MME8)B)&I````2(N`T`````^V`(/@#XB!J@````^V@:@```"#^`-T,8/X`W\.
+M@_@"#X3P````Z=D```"#^`1F9I!F9I!T3(/X$@^$E````&9FD&:0Z;L````/
+MMLM(C01)2,'@!$J+A`#0````#[90`8/B!P^VTL'B"$B-#(D/MD`"`=!KP`J)
+MA,VL````Z90````/MM-(C0122,'@!$J+A`#0````@'@"`'412(T$DL>$Q:P`
+M````````ZVH/ML-(C12`2(T$0$C!X`1*BX0`T`````^V0`*#Z!2)A-6L````
+MZT,/MLM(C01)2,'@!$J+A`#0````#[90`L'B"$B-#(D/MD`#`=!KP`J)A,VL
+M````ZQ.0#[;#2(T$@,>$Q:P`````````#[;#2(T4@$B-5-4`2(VRL````$B-
+M!$!(P>`$3`'`2(V(V````$B+@-@```!(B8*P````2(M!"$B)1@A(BT$02(E&
+M$$B+01A(B488_\-!.)C`````#X=7_O__ZW`/M])(:=+0````2(G32`.?0`D`
+M`,9%`O_&10`"2(N'0`D```^V1`([B$4!2(N#B`````^V0`V)12#&101V#[=S
+M/$B-?07H2.___\9%#&0/MW,^2(U]#>@W[___QD4<<@^V<SE(C7T=Z.;N__]$
+MB64DN`````#K$O_!9H'YA0`/AL3\__^X_____UM=05S#9F9FD$F)\$R+3WBY
+M`````+HH````2(GPB`A(_\!(_\IU]DF+L2`*``"Y`````+H``@``2(GPB`A(
+M_\!(_\IU]DB-5C:Y`````(U!`4B8#[9$.""(`DC_PDACP0^V1#@@B`)(_\*#
+MP0*#^2=^W$B-5A2Y`````(U!`4B8#[9$!PR(`DC_PDACP0^V1`<,B`)(_\*#
+MP0*#^1-^W$B-5BZY`````(U!`4B8#[9$.$B(`DC_PDACP0^V1#A(B`)(_\*#
+MP0*#^0=^W$F)<!A(BT=02/_`28D`2(-_8`!U5_8'`7122(-_:``/E<!-A<D/
+ME<(/ML"%PG042(M':$@/MD!;0H"\"$`(``#_=2E(@W]P``^5P$V%R0^5P@^V
+MP(7"=!Y(BT=P2`^W0$!"@+P(0`@``/]T"@^V1P%!B$`,ZP5!QD`,_P^V1P)!
+MB$`-#[9'7$&(0`Y!QD`2$$'&0!$0#[8'@^`!`<"^_?___T$B<`H)QD&(<`H/
+MM@>#X`'!X`5!#[9("(/AWPG!08A("$@/MT=82,'H!X/@`<'@!H/AOPG!08A(
+M"$@/MT=82,'H`H/@`4$/ME`)@^+^"<)!B%`)2`^W1UI(P>@#@^`!P>`'@^%_
+M"<%!B$@(2`^W1UI(T>B#X`$!P(/B_0G"08A0"4@/MT=82,'H`X/@`<'@!H/B
+MOPG"08A0"4@/MT=:2,'H!(/@`<'@!X/B?PG"08A0"8/)$$&(2`@/M@?0Z(/@
+M`8/F_@G&08AP"@^V!X/@!(/F^PG&08AP"F9!QT`4`!`/MH?,````08A`(,/'
+M0@0`````QP(`````N`````##9F9FD&9FD&9FD&9FD$B#[#A(B5PD"$B);"00
+M3(ED)!A,B6PD($R)="0H3(E\)#!(B?M!B?5!O_____](BV]@3(MW>$B%[705
+M@+_+`````'4,]@<"=`]F9F:09F:01(GXZ0T!``!,B?=F9I!FD.@`````28G$
+M1(GX387D#X3Q````0<9$)#CA0<9$)#D!08#]`@^5P(/`&D&(1"0Z0<9$)"2`
+M#[=%,&9!B40D($F)7"0H0<=$)#0`````2<=$)$@`````2<>$)*``````````
+M3(GF3(GWZ`````#&@\L````!9L>#R````/H`2(7;=%Q(@WM@`'159F9FD&9F
+MD&:!N\@```"6`'452(M38$B+>DB^(0```.@`````9F:09O^+R````+_0!P``
+MZ`````!,B??H`````$B%VW002(-[8`!T"8"[RP````!ULF:#N\@`````=`]!
+M@'PD)`"X`````$0/1/A,B>9,B??H`````$2)^$B+7"0(2(ML)!!,BV0D&$R+
+M;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9F9I!(@^Q(2(E<)!A(B6PD($R)9"0H
+M3(EL)#!,B70D.$R)?"1`2(G[08GV0;______3(MG8$R+;WA-A>1T"8"_RP``
+M``!T#$2)^.ED!```9F9FD$R)[^@`````2(G%1(GX2(7M#X1)!```]@,"#X4!
+M`0``08#^%'<,00^V]FOV#&9FD.L:9D$/ML9F:<")`&;!Z`C`Z`0/MO"!QO``
+M``#&13CAQD4Y`<9%.AQ`B'4[QD4D@$$/MT0D,&:)12!(B5THQT4T`````$C'
+M14@`````2,>%H`````````!(B>Y,B>_H`````,:#RP````%FQX/(````Q`E(
+MA=MT5DB#>V``=$^09H&[R````)8`=15(BU-@2(MZ2+XA````Z`````!F9I!F
+M_XO(````O]`'``#H`````$R)[^@`````2(7;=!!(@WM@`'0)@+O+`````'6R
+M9H.[R``````/A$0#``"`?20`#X4Z`P``0;\`````Z2\#``!,B>_H`````$B)
+M1"002(7`#X09`P``2(U%6$B)1"0(2(M$)!!(BT`02(D$),9%.!K&13D(QD4Z
+M&L9%.P#&13P0QD4]`$B+1"002(E%>,9%)(!!#[=$)#!FB44@2(E=*$B+1"00
+M2(M`$$B)14C'1300````2(M#8$@%Y````$B)15#&13`@2,>%H`````````"^
+M`````$B+?"0(Z`````"+531(BT0D$$B+<!A(BWPD".@`````2(GN3(GOZ```
+M``#&@\L````!9L>#R````/H`2(7;=%)(@WM@`'1+9H&[R````)8`=1)(BU-@
+M2(MZ2+XA````Z`````!F_XO(````O]`'``#H`````$R)[^@`````2(7;=!!(
+M@WM@`'0)@+O+`````'6U9H.[R`````!T!H!])`!T$DB-="003(GOZ`````#I
+MY@$``$B)[DR)[^@`````3(GOZ`````!(B<5(A<!U%4B-="003(GOZ`````!$
+MB?CIQ@$``$B-4%A(B50D"$B+/"1(@\<$2(L4)$@/MD(##[9$$`2(0@3&1P$*
+MQD<"`+D`````N@0```!(BP0DB`A(_\!(_\IU]D6$]G4&@&<#_.LW00^V]FGV
+M6`(``(!/`P.)\<'I&(A/!(GRP>H0B%<%B?#!Z`B(1P9`B'<'B$\(B%<)B$<*
+M0(AW"TB+1"002(E%>,9%.!4/M@?`^`?WT(/`$8A%.<9%.@#&13L`QD4\$,9%
+M/0"`)S_&122`00^W1"0P9HE%($B)72A(BT0D$$B+0!!(B45(QT4T$````$B+
+M0V!(!>0```!(B450QD4P($C'A:``````````O@````!(BWPD".@`````BU4T
+M2(M$)!!(BW`82(M\)`CH`````$B)[DR)[^@`````QH/+`````6;'@\@```#Z
+M`$B%VW122(-[8`!T2V:!N\@```"6`'422(M38$B+>DB^(0```.@`````9O^+
+MR````+_0!P``Z`````!,B>_H`````$B%VW002(-[8`!T"8"[RP````!UM6:#
+MN\@`````=`V`?20`N`````!$#T3X2(UT)!!,B>_H`````&9FD&9FD$B)[DR)
+M[^@`````1(GX9I!(BUPD&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\)$!(@\1(
+MPV9F9I!F9I!F9I!F9I!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!(B?M!B?6X
+M_____TR+9WA(BV]@]D=8"`^$@P```$F+M"30"```2(GZOP4```#H`````(!-
+M1`)(BWU(2(GJOB$```#H`````(!]>P!T&+_0!P``Z`````!,B>?H`````(!]
+M>P!UZ$6%[70.9H-+6A!F@TUB$.L,9I!F@V-:[V:#96+O28NT)-`(``!(B=J_
+M!@```.@`````@&5$_;@`````2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9F
+M9I!F9F:09F9FD&9FD$B#[!A(B5PD"$B);"00B?5(BT]X2(M?8/8'`70[2(-[
+M4`!T$4`/MM8/MG-Y2(M[4.@`````2(.[&`$```!T+4`/MM4/MK,%`0``2(N[
+M&`$``.@`````ZQ1`#[;62(M#.`^V<`%(B<_H`````$B+7"0(2(ML)!!(@\08
+MPV9FD&:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$B)^T&)
+M]D&)U\=$)`3_____3(MG8$R+;WA-A>1T"8"_RP````!T"8M$)`3I$P$``$R)
+M[^@`````2(G%BT0D!$B%[0^$^P```,9%..'&13D!183V=`U!@/\!&<#WT(/`
+M!^L+08#_`1G`]]"#P`V(13K&122`00^W1"0P9HE%($B)72C'130`````2,=%
+M2`````!(QX6@`````````$B)[DR)[^@`````QH/+`````6;'@\@```#T`4B%
+MVW142(-[8`!T36:!N\@```"6`'422(M38$B+>DB^(0```.@`````9O^+R```
+M`+_0!P``Z`````!,B>_H`````$B%VW022(-[8`!T"X"[RP````!FD'6S9H.[
+MR`````!T&H!])`!U%$B+0V`/MT!B9HE#6L=$)`0`````2(GN3(GOZ`````"+
+M1"0$2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:09F9F
+MD$B#[`@/M@:#^`D/AX(```")P/\DQ0````!F9F:09F:02(M^",:'[Q,```#H
+M`````+@`````ZV`/ME8(O@````#H*_[__^M0#[96"+X!````Z!O^___K0`^V
+M=@CH`````.LU#[96"0^V=@CHH?S__Y#K)0^V=@CH`````&9FD&:0ZQ4/MG8(
+MZ`````"X`````.L%N/____](@\0(PV9F9I!(BT=@2(7`=%-(QT`X`````(!(
+M1`1(QT=@`````$C'1W``````2,=':`````"#?P@_?Q5(BU=X2&-'"$C'A,)`
+M!````````,-(BU=X2&-'"$C'A,)``@```````//#9I!(BT=@2(7`=%-(QT`X
+M`````(!@1/M(QT=@`````$C'1W``````2,=':`````"#?P@_?Q5(BU=X2&-'
+M"$C'A,)`!````````,-(BU=X2&-'"$C'A,)``@```````//#9I!32(G[Z```
+M``!(B[O0"```2(''`!0``.@`````6\-FD%-(B?OH`````$B+N]`(``!(@<<`
+M%```Z`````!;PV:0055!5%532(/L6$F)_$R+K]`(``!)@<4`%```2(,_`'06
+M2(LW2('N```"`$B)-TB+?R#H`````$F#?"00`'0128MT)!!)BWPD(.@`````
+M9I!)@WPD&`!T#TF+="0828M\)"#H`````$$/MWPD/$B-1"162(E$)#A(C40D
+M5$B)1"0P2(U$)%)(B40D*$B-1"102(E$)"!(C40D3DB)1"082(U$)$U(B40D
+M$$B-1"1,2(E$)`A(C40D2DB)!"1,C4PD24R-1"1&2(U,)$5(C50D1$B-="1#
+MZ`````!)@[PD&`D```!T*TF+M"08"0``28V\)/@(``#H`````$F+M1@)``!)
+MC;WX"```Z`````!F9I!)@[PD0`D```!T*$F+M"1`"0``28V\)"`)``#H````
+M`$F+M4`)``!)C;T@"0``Z`````!)@[PD:`D```!T*$F+M"1H"0``28V\)$@)
+M``#H`````$F+M6@)``!)C;U("0``Z`````!)@[PDX`H```!T+TF+M"3@"@``
+M28V\),`*``#H`````$F+M>`*``!)C;W`"@``Z`````!F9F:09F:0O0````!`
+M.FPD0W,[9F9FD(GH#[;828NTW#`+``!)C;PD$`L``.@`````28NTW3`+``!)
+MC;T0"P``Z`````#_Q4`Z;"1#<LE)@[PDP`\```!T+DF+M"3`#P``28V\)*`/
+M``#H`````$F+M<`/``!)C;V@#P``Z`````!F9I!F9I!)@[PD^`\```!T*$F+
+MM"3X#P``28V\)-@/``#H`````$F+M?@/``!)C;W8#P``Z`````!)@[PD:!``
+M``!T*$F+M"1H$```28V\)$@0``#H`````$F+M6@0``!)C;U($```Z`````!)
+M@[PDD`D```!T+TF+M"20"0``28V\)'`)``#H`````$F+M9`)``!)C;UP"0``
+MZ`````!F9F:09F:028.\)&@*````="A)B[0D:`H``$F-O"1("@``Z`````!)
+MB[5H"@``28V]2`H``.@`````28.\)/@)````="A)B[0D^`D``$F-O"38"0``
+MZ`````!)B[7X"0``28V]V`D``.@`````28.\)"`*````="])B[0D(`H``$F-
+MO"0`"@``Z`````!)B[4@"@``28V]``H``.@`````9F9FD&9FD$F#O"2X"@``
+M`'0H28NT)+@*``!)C;PDF`H``.@`````28NUN`H``$F-O9@*``#H`````$F#
+MO"0("P```'0H28NT)`@+``!)C;PDZ`H``.@`````28NU"`L``$F-O>@*``#H
+M`````$F#O"10#P```'0O28NT)%`/``!)C;PD,`\``.@`````28NU4`\``$F-
+MO3`/``#H`````&9F9I!F9I!)@[PDB`\```!T*$F+M"2(#P``28V\)&@/``#H
+M`````$F+M8@/``!)C;UH#P``Z`````!)@[PD,!````!T*$F+M"0P$```28V\
+M)!`0``#H`````$F+M3`0``!)C;T0$```Z`````!)@[PDD`H```!T+TF+M"20
+M"@``28V\)'`*``#H`````$F+M9`*``!)C;UP"@``Z`````!F9F:09F:028.\
+M))`0````=#=)BY0DF!```$F+M"20$```28V\)'`0``#H`````$F+E9@0``!)
+MB[60$```28V]<!```.@`````28.\),`0````=#=)BY0DR!```$F+M"3`$```
+M28V\)*`0``#H`````$F+E<@0``!)B[7`$```28V]H!```.@`````28.\)/`0
+M````=#=)BY0D^!```$F+M"3P$```28V\)-`0``#H`````$F+E?@0``!)B[7P
+M$```28V]T!```.@`````28.\)%`1````=#=)BY0D6!$``$F+M"10$0``28V\
+M)#`1``#H`````$F+E5@1``!)B[50$0``28V],!$``.@`````28.\)"`1````
+M=#U)BY0D*!$``$F+M"0@$0``28V\)``1``#H`````$F+E2@1``!)B[4@$0``
+M28V]`!$``.@`````9F:09F:028.\)(`1````=#=)BY0DB!$``$F+M"2`$0``
+M28V\)&`1``#H`````$F+E8@1``!)B[6`$0``28V]8!$``.@`````28.\)+`1
+M````=#=)BY0DN!$``$F+M"2P$0``28V\))`1``#H`````$F+E;@1``!)B[6P
+M$0``28V]D!$``.@`````2(/$6%M=05Q!7<.02(/L&$B)7"0(3(ED)!!(B?OH
+M`````$R-HP`4``!,B>?H`````$B)W^@`````O]`'``#H`````$B)W^@`````
+M2(G?Z`````"^`0```$B)W^@`````O@$```!,B>?H`````$B+7"0(3(MD)!!(
+M@\08PTB#[`A(Q\<`````Z`````"X`````$B#Q`C#D)"0D)"0Q@<(QD<!$D"`
+M_@$9P/?0@^`$B$<"QD<#`,9'!`#&1P4`QD<&`,9'!P#&1P@`QD<)`,9'"@#&
+M1PL`@/H!&<"#X""(1PS&1PT`QD<.`,9'#P#&1Q``QD<1`,9'$@#&1Q,`N!0`
+M``##9F9FD&9FD&9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\
+M)#!)B?](B?5!B=9!B<WH`````$F)Q+@`````387D#X2C````28M<)!!!#[;5
+M00^V]DB->P3H`````$&)Q<8#`,9#`0#&0P(`QD,#`$B)[DR)_^@`````N0``
+M``"Z$````$B-13B("$C_P$C_RG7V08U%!,9%.!7&13D1B$4\QD4]`$B-75A$
+M#[;H1(EM-,>%E`````````!)BT0D$$B)14A,B65XO@````!(B=_H`````$F+
+M="081(GJ2(G?Z`````"X`0```$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,
+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
+M`(D%`````(G!@>'^`/__2(L'B8A4`0``PV9F9I!F9F:09F:09F:055-(@^P(
+MB?-(BR^#_@-V&(T$W>#___^+A"B@`0``B04`````B<'K&(T$W0````")P(N$
+M*(`!``")!0````")P8/A_H/[`W80C03=X/___XF,**`!``#K$(T$W0````")
+MP(F,*(`!``"$T@^$H````(/[`W88C02=\/___XN$*.`!``")!0````")P>L8
+MC02=`````(G`BX0HT`$``(D%`````(G!@\D"@_L#=A"-!)WP____B8PHX`$`
+M`.L0C02=`````(G`B8PHT`$``(T$G0````"-</")PF9F9I!F9I"#^P-V$8N$
+M+N`!``")!0````")P>L/BX0JT`$``(D%`````(G!]L$"==;IE0```)"#^P-V
+M%(T$W>#____'A"A0`@```````.L4C03=`````(G`QX0H4`(```````"_$"<`
+M`.@`````@_L#=AB-!-W@____BX0H5`(``(D%`````(G!ZQB-!-T`````B<"+
+MA"A4`@``B04`````B<&#R0&#^P-V$(T$W>#___^)C"A4`@``ZQ"-!-T`````
+MB<")C"A4`@``2(/$"%M=PV9FD&:0059!54%455-)B?Q!B?5!B=9(BR^[````
+M`(!_/@`/A$X"``!$B>H/ML*)V4C3^*@!#X0K`@``@_L#=AB-!-W@____BX0H
+MI`$``(D%`````(G"ZQB-!-T`````B<"+A"B$`0``B04`````B<*#XOZ#^P-V
+M$(T$W>#___^)E"BD`0``ZQ"-!-T`````B<")E"B$`0``OQ`G``#H`````$6$
+M]@^$F@```(/[`W88C02=\/___XN$*.`!``")!0````")PNL8C02=`````(G`
+MBX0HT`$``(D%`````(G"@\H"@_L#=A"-!)WP____B90HX`$``.L0C02=````
+M`(G`B90HT`$``(T$G0````"-</")P9"#^P-V$8N$+N`!``")!0````")PNL/
+MBX0IT`$``(D%`````(G"]L("==;IE0```)"#^P-V%(T$W>#____'A"A0`@``
+M`````.L4C03=`````(G`QX0H4`(```````"_$"<``.@`````@_L#=AB-!-W@
+M____BX0H5`(``(D%`````(G"ZQB-!-T`````B<"+A"A4`@``B04`````B<*#
+MR@&#^P-V$(T$W>#___^)E"A4`@``ZQ"-!-T`````B<")E"A4`@``@_L#=A>-
+M!-W@____QX0HH`$```$```#K%V9FD(T$W0````")P,>$*(`!```!````@_L#
+M=AB-!-W@____BX0HI`$``(D%`````(G"ZQB-!-T`````B<"+A"B$`0``B04`
+M````B<*#R@&#^P-V$(T$W>#___^)E"BD`0``ZQ"-!-T`````B<")E"B$`0``
+M_\-!#[9$)#XYV`^'LOW__UM=05Q!74%>PV9FD&9FD(GQ2(L'BX`$`0``B04`
+M````08G`#[='/&8]@&0/E,)F/8"1#Y3`"="H`74(9H%_/("4=1(/MLF#P0BX
+M`0```-/@00G`ZQ%`#[;.@\$,N`$```#3X$$)P$B+!T2)@`0!``##9F9FD&9F
+M9I!F9I!F9I")\4B+!XN`!`$``(D%`````$&)P`^W1SQF/8!D#Y3"9CV`D0^4
+MP`G0J`%U"&:!?SR`E'42#[;)@\$(N/[____3P$$AP.L10`^VSH/!#+C^____
+MT\!!(<!(BP=$B8`$`0``PV9F9I!F9F:09F:09F:02(/L&$B)7"0(3(ED)!!)
+MB?Q`#[;>B=[H`````+\0)P``Z`````")WDR)Y^@`````2(M<)`A,BV0D$$B#
+MQ!C#D(GQ0(#^_W1X0(#^'W<VBY<8`0``B14`````N`$```#3X(G!]]`AT(F'
+M&`$``(N'6`$``(D%`````"'(=$.)AU@!``##BY<<`0``B14`````0`^VSH/I
+M(+@!````T^")P??0(=")AQP!``"+AV`!``")!0`````AR'0&B8=@`0``\\-F
+M9F:09F9FD&9FD&9FD$%455-(B=6)\TR+)T"`_@-V'DB-!-T`````)?@'``!"
+MQX0@``(```P!``#K'&9FD$B-!-T`````)?@'``!"QX0@``(```P!``"_$"<`
+M`.@`````@/L#=CA(C0S=`````('A^`<```^V50/!XA@/MD4"P>`0"<(/MD4!
+MP>`("<(/MD4`"<)"B90A!`(``.LVD$B-#-T`````@>'X!P``#[95`\'B&`^V
+M10+!X!`)P@^V10'!X`@)P@^V10`)PD*)E"$$`@``@/L#=AM(C03=`````"7X
+M!P``0L>$(``"```0`0``ZQE(C03=`````"7X!P``0L>$(``"```0`0``OQ`G
+M``#H`````(#[`W8W2(T,W0````"!X?@'```/ME4'P>(8#[9%!L'@$`G"#[9%
+M!<'@"`G"#[9%!`G"0HF4(00"``#K-4B-#-T`````@>'X!P``#[95!\'B&`^V
+M10;!X!`)P@^V107!X`@)P@^V100)PD*)E"$$`@``6UU!7,.0D%-(@^Q@2(G[
+M#[=_/$B-1"1>2(E$)#A(C40D7$B)1"0P2(U$)%I(B40D*$B-1"182(E$)"!(
+MC40D5DB)1"082(U$)%5(B40D$$B-1"142(E$)`A(C40D4DB)!"1,C4PD44R-
+M1"1.2(U,)$U(C50D3$B-="1+Z``````/ME0D2P^V="1,2(U\)$3H`````$@/
+MME0D2TAITH@!``!(BW,@2(V[^`@``+D!````Z`````!(#[94)$U(:=+0````
+M2(MS($B-NR`)``"Y`0```.@`````2`^V5"1,2&G2R`\``$B+<R!(C;M("0``
+MN0$```#H`````$@/MU0D5DC!X@-(BW,@2(V[<`D``+D!````Z`````!(#[=4
+M)$Y(:=*H````2(MS($B-NT@*``"Y`0```.@`````2`^V5"112`^W1"1.2`^O
+MT$B-%%)(P>("2(MS($B-N]@)``"Y`0```.@`````2(MS($B-NP`*``"Y`0``
+M`+H``@``Z``````/MDPD2TB+<R!(C;L0"P``N@`(``#H`````$@/ME0D5$C!
+MX@5(BW,@2(V[F`H``+D!````Z`````!(#[94)%5(C1222,'B!4B+<R!(C;O`
+M"@``N0$```#H`````$@/MU0D4DB-%))(P>(#2(MS($B-N^@*``"Y`0```.@`
+M````2`^W5"162`'22(MS($B-NS`/``"Y`0```.@`````2`^V5"1+2`'22(MS
+M($B-NV@/``"Y`0```.@`````2`^V5"1-2`'22(MS($B-NZ`/``"Y`0```.@`
+M````2`^V5"1,2`'22(MS($B-N]@/``"Y`0```.@`````2`^V4SY(`=)(BW,@
+M2(V[$!```+D!````Z`````!(#[=4)%A(C1122,'B!$B+<R!(C;MP"@``N0$`
+M``#H`````(M4)$1(BW,@2(V[2!```+D!````Z`````!(#[=4)%9(P>(&2(MS
+M($B-NW`0``!!N`$```"Y0````.@`````2(MS($B-NZ`0``!!N`$```"Y``$`
+M`+H`&0``Z`````!(#[=4)%9(:=*P!```2(MS($B-N]`0``!!N`$```"Y@```
+M`.@`````2`^W5"1<2,'B`DB+<R!(C;L`$0``0;@!````N00```#H`````$@/
+MMU0D7DC!X@)(BW,@2(V[,!$``$&X`0```+D$````Z``````/ME0D5,'B"TB+
+M<R!(C;M@$0``0;@!````N0@```#H`````$@/MU0D4DAITHP!``!(BW,@2('#
+MD!$``$&X`0```+D(````2(G?Z`````"X`````$B#Q&!;PV9FD&:0059!54%4
+M55-(@^Q@28G\0;X`````QD=1`,9'4`#&1T\`2,>'^!,```````#&A_$3````
+MN0````"ZH`$``$B-AT`2``"("$C_P$C_RG7V28V$).@```!)B80DZ````$F)
+MA"3P````28V$)/@```!)B80D^````$F)A"0``0``28V$)`@!``!)B80D"`$`
+M`$F)A"00`0``28V$)!@!``!)B80D&`$``$F)A"0@`0``28V$)"@!``!)B80D
+M*`$``$F)A"0P`0``28V$)$@!``!)B80D2`$``$F)A"10`0``28V$)%@!``!)
+MB80D6`$``$F)A"1@`0``28V$)#@!``!)B80D.`$``$F)A"1``0``00^W?"0\
+M2(U$)%Y(B40D.$B-1"1<2(E$)#!(C40D6DB)1"0H2(U$)%A(B40D($B-1"16
+M2(E$)!A(C40D54B)1"002(U$)%1(B40D"$B-1"122(D$)$R-3"113(U$)$Y(
+MC4PD34B-5"1,2(UT)$OH``````^V1"1+08A$)$8/MD0D3$&(1"1'#[9$)$U!
+MB(0DX0````^W1"169D&)1"18BT0D7&9!B80D/!(```^W1"1>_\AF08F$)#X2
+M``!!#[=$)#P]@)$``'0+/8"4```/A2,)``!!QD0D301!QD0D0P1!QD0D3D!!
+MQD0D3`!!QH0DW@````E!QD0D1`!)C;PD^`@``.@`````28F$)!@)``"Y````
+M`$@/ME0D2TAITH@!``#K"(@(2/_*2/_`2(72=?-)C;PD(`D``.@`````28F$
+M)$`)``"Y`````$@/ME0D34AITM````!(A=)T"H@(2/_`2/_*=?9)C;PD2`D`
+M`.@`````28F$)&@)``"Y`````$@/ME0D3$AITL@/``!(A=)T"H@(2/_`2/_*
+M=?9)C;PD<`D``.@`````28F$))`)``"Y`````$@/MU0D5DC!X@-T"H@(2/_`
+M2/_*=?9)C;PD``H``.@`````28F$)"`*``!)C;PDV`D``.@`````28F$)/@)
+M``!(B<-)C;PD2`H``.@`````28F$)&@*``!(B<*]`````&8[;"1.<T1)C8PD
+M"`$``$B)6F`/MD0D48A"6$B+00A(B5$(2(D*2(E""$B)$$@/MD0D44B-!$!(
+MC1R#2('"J````/_%9CML)$YRQ$F-O"1P"@``Z`````!)B80DD`H``$B)PKT`
+M````9CML)%AS*TF-C"08`0``QD(0`$B+00A(B5$(2(D*2(E""$B)$$B#PC#_
+MQ68[;"18<MU)C;PDF`H``.@`````28F$)+@*``!(B<*]`````(!\)%0`="M)
+MC8PD*`$``$B+00A(B5$(2(D*2(E""$B)$$B#PB#_Q68/MD0D5&8YZ'?=28V\
+M),`*``#H`````$F)A"3@"@``2(G"O0````"`?"15`'0N28V,)$@!``!(BT$(
+M2(E1"$B)"DB)0@A(B1!(@<*@````_\5F#[9$)%5F.>AWVDF-O"3H"@``Z```
+M``!)B80D"`L``$B)PKT`````9CML)%)S)TF-C"0X`0``2(M!"$B)40A(B0I(
+MB4((2(D02(/"*/_%9CML)%)RX;T`````@'PD2P!T/TV-K"18`0``#[?=28V\
+M)!`+``#H`````$F)A-PP"P``28M5"$F)10A,B2A(B5`(2(D"_\5F#[9$)$MF
+M.>AWR4F-O"0P#P``Z`````!)B80D4`\``$F)A"18#P``#[=$)%9F08F$)&(/
+M```/M_!)C;PD6`\``.@`````28V\)&@/``#H`````$F)A"2(#P``28F$))`/
+M``!F#[9$)$MF08F$))H/```/M_!)C;PDD`\``.@`````28V\)*`/``#H````
+M`$F)A"3`#P``28F$),@/``!F#[9$)$UF08F$)-(/```/M_!)C;PDR`\``.@`
+M````28V\)-@/``#H`````$F)A"3X#P``28F$)``0``!F#[9$)$QF08F$)`H0
+M```/M_!)C;PD`!```.@`````28V\)!`0``#H`````$F)A"0P$```28F$)#@0
+M``!F00^V1"0^9D&)A"1"$```00^V="0^28V\)#@0``#H`````$F-O"1($```
+MZ`````!)B80D:!```$@/ME0D3$B-%-*)UL'F!X'&8%<``+D`````B?)(A=)T
+M"H@(2/_`2/_*=?9)BX0D:!```(DP28N4)&@0```/MD0D3(A"!`^V5"1,28N\
+M)&@0``#H`````+T`````08!\)#X`='T/M\5(:<"H````3`'@3(VPH`$``$&(
+M;@A!QD8)`$R)H*`!``!!QD8.`$'&1E@`0<9&*`!!QX:@`````````$B-D-`!
+M``!)B58P28E6.$B-D.@!``!)B59(28E64$@%``(``$F)1F!)B49H0<9&"@+_
+MQ69!#[9$)#YF.>AW@T'&1"1,`+T`````#[?%0L:$(,8(``#__\5F@_T#=NR]
+M`````(!\)$L`#X20````#[?-28N4)!@)``!(:<&(`0``QD000P%)BY0D&`D`
+M`,9$$$(`28N4)!@)``#&1!!X_TF+E"08"0``QD00:O])BY0D&`D``&;'A!#`
+M``````!)QX3,0`0```````!(B<%)`XPD&`D``$B-42!(B5$@20.$)!@)``!(
+M@\`@2(E`"/_%9@^V1"1+9CGH#X=P____9D''A"3<``````"]`````&9FD&9F
+MD`^WQ4+&A"!`"```___%9H']A0!VZ[T`````@'PD3``/A,(````/M]5)BX0D
+M:`D``$AITL@/``#&1`)8`$F+A"1H"0``QD0"60!)BX0D:`D``$C'1`(0````
+M`$B)T4D#C"1H"0``2(U!&$B)01A(B=!)`X0D:`D``$B#P!A(B4`(2(G120.,
+M)&@)``!(C4$H2(E!*$B)T$D#A"1H"0``2(/`*$B)0`A)BX0D:`D``$R)=`((
+M2(G120.,)&@)``!(C4%(2(E!2$D#E"1H"0``2(/"2$B)4@C_Q68/MD0D3&8Y
+MZ`^'/O___T'&A"3?````@+T`````@'PD30`/A(<````/M]5)BX0D0`D``$AI
+MTM````!FQT0"3@0`28N$)$`)``#&1`)"`$F+A"1`"0``QD0"1/])BX0D0`D`
+M`,9$`E#_2(G120.,)$`)``!(C4$H2(E!*$B)T$D#A"1`"0``2(/`*$B)0`A)
+MBX0D0`D``$R)M`*(````_\5F#[9$)$UF.>@/AWG___]!QH0DX````())C;0D
+MF!```$F-O"1P$```Z`````!)B80DD!```$F-M"3($```28V\)*`0``#H````
+M`$F)A"3`$```28VT)/@0``!)C;PDT!```.@`````28F$)/`0``!)C;0D*!$`
+M`$F-O"0`$0``Z`````!)B80D(!$``$F-M"18$0``28V\)#`1``#H`````$F)
+MA"10$0``28VT)(@1``!)C;PD8!$``.@`````28F$)(`1``!-B[0DB!$``$F)
+MQ;T`````@'PD5`!T2$F-G"0H`0``2(G?Z`````!(B<),B6@03(EP&$B+0PA(
+MB5,(2(D:2(E""$B)$$F!Q0`(``!)@<8`"```_\5F#[9$)%1F.>AWP$F-M"2X
+M$0``28V\))`1``#H`````$F)A"2P$0``38NT)+@1``!)B<6]`````&8[;"12
+M<T1)C9PD.`$``$B)W^@`````2(G"3(EH$$R)<!A(BT,(2(E3"$B)&DB)0@A(
+MB1!)@<6,`0``28'&C`$``/_%9CML)%)RQ$B#Q&!;74%<05U!7L-F9F:09F9F
+MD&9FD&9FD$%7059!54%455-(@^P(28G\QD0D!P!(#[9$)`="#[:4(,8(``"`
+M^O\/A)L````/ML)(:<"H````3HVT(*`!``!!O0````!!@'X.`'9\28UN8$V)
+M]TB)[^@`````2(G#2(M%"$B)70A(B2M(B4,(2(D82(-[.`!T&DB+4SA)B[0D
+MT`@``+\%````Z`````"`2T0"2(G:O@(```!,B??H`````(![>P!T&$R)Y^@`
+M````OP$```#H`````(![>P!UZ$'_Q44X;PYWB_Y$)`>`?"0'`P^&/O___TR)
+MY^@`````2(/$"%M=05Q!74%>05_#D$B#[`A(.7XH=68/MDXX@/D(#Y7`@/DH
+M#Y7"#[;`A<)T:(#YJ'1C@/F(=%Z`^0H/E<"`^2H/E<(/ML"%PG1+@/FJ=$:`
+M^8IT04B-E^@```!(BX?H````2(EP"$B)!DB)5@A(B;?H````ZQ]F9I!F9I!(
+MC8?H````2(M0"$B)<`A(B09(B58(2(DRZ`````!(@\0(PV9F9I!F9I!F9I!F
+M9I!(@^P(Z`````!(@\0(PV:005154TB)\TB)U4&\`````&:!?CCA`74+#[9&
+M.H/H$3P!=C)(BQ=(B[(8"0``3(VF>(8!`&:!>R"%`'<92`^W0R!(#[:$$$`(
+M``!(:<"(`0``3(TD!L9%!`6`907^@&4`W[H`````9H%[..$!=1(/MD,Z_\@\
+M`;@!````#T;09I")T,'@!P^V50"#XG\)PHA5``^V@Y8```"#X`'!X`:#XK\)
+MPHA5`&:!>SCA`742#[9#.H/H$3P!=P=FB4T(ZQR0]H.6`````70.3(GGZ```
+M``!FB44(ZP1FB4T(#[=%"(A#)6:!>SCA`74N#[9#.O_(/`%W#`^V4SOK,69F
+MD&9FD&:!>SCA`740#[9#.H/H$;H/````/`%V$[H`````28-\)%@`=`9!#[94
+M)'F#X@\/MD4`@^#P"="(10!;74%<PY!(@^P(2(L_Z`````!(@\0(PV9F9I!F
+M9F:09F9FD&9FD$R+!P^WAS@2``#_P&:)AS@2``!F.X<\$@``<@EFQX<X$@``
+M``!(#[>/.!(``$B+ER`1``"+!HD$B@^WAS@2``!!B8`L`0``PV9F9I!F9F:0
+M08G10;@`````N@0```!(B<A$B`!(_\!(_\IU]8GR@>+_#P``BP$E`/#__PG0
+MB0$/ME<-P>(,)?\/\/\)T(D!2`^V1PI(T>B#X`&#^`$9P(/@`O_`P>`=BQ&!
+MXO___Q\)PHD1#[9!`X/($(/@]XA!`_9'"@%T%$2)RH/B?\'B%(L!)?__#_@)
+MT(D!\\-F9F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)
+M_$B)\TF)UT&^``````^V1C@\"`^4PCPH#Y3`"="H`74,@'XXJ'0&@'XXB'4/
+M@XN4````"NLM9F:09F:0#[9&.#P*#Y3"/"H/E,`)T*@!=0R`?CBJ=`:`?CB*
+M=0>#BY0````"9H%[..$!=2$/MD,Z@^@1/`%W%H.+E`````BX`````.E%!0``
+M9F:09I"+0S@E____`#WA`1``#X4@`0``9H%[((4`#X>A````2`^W0R!"@+P@
+M0`@``/\/A(T```!F@WL@?W<D2@^VA"!`"```28N4)!@)``!(:<"(`0``2(M$
+M$$A$#[9H".MH9H%[(($`=RE(#[=#($H/MH0@0`@``$F+E"1H"0``2&G`R`\`
+M`$B+1!`(1`^V:`CK-T@/MT,@2@^VA"!`"```28N4)$`)``!(:<#0````2(N$
+M$(@```!$#[9H".L+9F:09I!!O?____]$B>H/ML)*#[:L(,8(``!(:>VH````
+M2HVL):`!``!)BY0D:`D``$B-@CBX#P!F@7L@A0!W&4@/MT,@2@^VA"!`"```
+M2&G`R`\``$B-!`+V0%T0#X6"`0``QD,D!$''!P````"X`0```.D-!```9H%[
+M((4`#X>A````2`^W0R!"@+P@0`@``/\/A(T```!F@WL@?W<F2@^VA"!`"```
+M28N4)!@)``!(:<"(`0``2(M$$$A$#[9H".MH9I!F@7L@@0!W*4@/MT,@2@^V
+MA"!`"```28N4)&@)``!(:<#(#P``2(M$$`A$#[9H".LU2`^W0R!*#[:$($`(
+M``!)BY0D0`D``$AIP-````!(BX00B````$0/MF@(ZPEF9I!!O?____^Z_P``
+M`&:!>R"%`'</2`^W0R!F0@^VE"!`"```1(GI#[;!2@^VK"#&"```2&GMJ```
+M`$J-K"6@`0``#[?"2&G`B`$``$F)QDT#M"08"0``9H%[..$!=0H/MD,Z_\@\
+M`78I9H'Z_P!T!T'V1D,$=1O&0R0&0<<'`````+@!````Z=8"``!F9I!F9I!)
+M#[9&0*@!=">H!'0C00^V1"1$03I$)$YR%D''!P$```"X`0```.FE`@``9F:0
+M9I!-A?8/A-<```!)#[9&0*@!#X3*````J`0/A,(```!(B=Y,B??H`````(3`
+M=17&0R0$0<<'`````+@!````Z5X"``!!@'Y['W810<<'`0```+@!````Z48"
+M``#V@Y8````!=`;V10P!=!OV@Y8````!=0;V10P!=0R`>R2!=`;V10P(="%!
+M#[;U3(GGZ`````"$P'010<<'`0```+@!````Z?L!``#V@Y8````!#X1N`0``
+M]D4,`0^$9`$``$R)]^@`````9H/X'P^&4@$``$''!P$```"X`0```.G!`0``
+MD/9%"@)T*XM#."7___\`/>$!$`!T'$$/MD9[03I&>G(10<<'`0```+@!````
+MZ8\!``"+0S@E____`#WA`1``#X3\````20^W1F)(B<)(T>J#X@&Y`0```(![
+M..$/A=\```"`>SD!#X75````#[9#.H/H!H/X"0^'K0```(G`_R3%``````^V
+MR;H!````2(G>3(GGZ`````"$P`^%H0```$''!P(```"X`0```.D0`0``#[;)
+MN@````!(B=Y,B>?H`````(3`=7E!QP<"````N`$```#IZ`````^VTKD!````
+M2(G>3(GGZ`````"$P'510<<'`@```+@!````Z<`````/MM*Y`````$B)WDR)
+MY^@`````A,!U*4''!P(```"X`0```.F8````QD,D!$''!P````"X`0```.F#
+M````9F:028V\)%@/``#H`````(3`=`]!QP<!````N`$```#K89"`>SCA=5&`
+M>SD!=4N`>SH/=46`>ST!=3]F#[9S/,'F"&8/MD,[`<8/M_9,B>?H`````$@Y
+M0V@/E<)(A<`/E,`)T*@!=!+&0R0$0<<'`````+@!````ZPFX`````&9F9I!(
+MBUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!F9I!F9I!F
+M9I"Y`````+H-````2(GP9F:0B`A(_\!(_\IU]@^V1SF(!@^V1SJ(1@$/MD<[
+MB$8"#[9'/(A&`P^V1SV(1@0/MD<^B$8%#[9'/XA&!O:'E@````1T(P^V1T"(
+M1@@/MD=!B$8)#[9'0HA&"@^V1T.(1@L/MD=$B$8,N`$```##9F9FD+H`````
+M0;D`````9F:09I"Y!P```$ECP40/M@0P9F:0`=)$B<#3^*@!=!7WP@````%U
+M'8'R=R?;`.L59F:09I")T#5W)]L`]\(````!#T70_\EYS$'_P4&#^0=^LXG0
+MP>@0B`>)T,'H"(A'`8A7`L-!5T%6055!5%532(/L6$F)_DB)]4B+A_`0``!(
+MB40D($C'1"00`````$&\`````$C'1"0(`````$&]`````&;'1C+_#TB-5"0\
+MZ`````"$P'0)BT0D/.F0#```BT4X)?___P`]X0$0``^%$@$``+^($P``Z```
+M``!F@7T@A0`/AYP```!(#[=%($*`O#!`"```_P^$B````&:#?2!_=R)*#[:$
+M,$`(``!)BY88"0``2&G`B`$``$B+1!!(#[9`".MD9H%](($`=R=(#[=%($H/
+MMH0P0`@``$F+EF@)``!(:<#(#P``2(M$$`@/MD`(ZS5(#[=%($H/MH0P0`@`
+M`$F+ED`)``!(:<#0````2(N$$(@````/MD`(ZPMF9I!F9I"X_____P^VP$H/
+MMH0PQ@@``$AIT*@```!*C8PRH`$``$B)3"0828N6:`D``$R-HCBX#P!F@7T@
+MA0`/AY@!``!(#[=%($H/MH0P0`@``$AIP,@/``!,C20"Z7H!``!F9I"Y_P``
+M`&:!?2"%`'</2`^W12!F0@^VC#!`"```9H%]..$!=0\/MD4Z@^@1/`$/AM\`
+M``!F@7T@A0`/AY8```!(#[=%($*`O#!`"```_P^$@@```&:#?2!_=R)*#[:$
+M,$`(``!)BY88"0``2&G`B`$``$B+1!!(#[9`".M>9H%](($`=R=(#[=%($H/
+MMH0P0`@``$F+EF@)``!(:<#(#P``2(M$$`@/MD`(ZR](#[=%($H/MH0P0`@`
+M`$F+ED`)``!(:<#0````2(N$$(@````/MD`(ZP6X_____P^VP$H/MH0PQ@@`
+M`$AIV*@```!*C80SH`$``$B)1"08#[?!2&G`B`$``$D#AA@)``!(B40D$.LB
+M#[?!2&G`T````$D#AD`)``!(B40D"$B+D(@```!(B50D&&:!?3CA`74;#[9%
+M.HU0[X#Z`0^7PO_(/`$/E\`/MM*%T'0@9H'Y_P!T"TB+3"00]D%#!'4.QD4D
+M!K@`````Z?0)``!(C70D,$R)]^@`````08G'9HE%,DR)]^@`````2(G#N`(`
+M``!(A=L/A,<)``!(B9V`````00^WSTAIR;`$``!(`TPD($B)R$DKAO`0``!(
+MB<9)`[;X$```2(/&($B+1"0PB7`@2(GR2,'J($B+1"0PB5`D2(MS&$B+1"0P
+MB7`H2(GR2,'J($B+1"0PB5`L2(M$)#!F1(EX"+X`````NK`$``!(B<AF9F:0
+M0(@P2/_`2/_*=?5F@7TXX0%U:@^V13J#Z!$\`7=?2(U,)$!(BT0D,`^V4`A(
+MB>Y(BWPD$.@`````00^WQTAIP+`$``!(`T0D($DKAO`0``!(B<9)`[;X$```
+M2('&(`0``$B+1"0PB7`02(GR2,'J($B+1"0PB5`4Z9@!``!(BT0D&/9`"@%U
+M+8M%."7___\`/>$!$``/A`4!``!(BU0D$$@/MD)`J`$/A/,```"H!`^$ZP``
+M`/:%E@```"!T#TB-="1`2(GOZ`````#K&TB-3"1`2(M$)#`/ME`(2(GN2(M\
+M)!#H`````$$/M\=(:<"P!```2`-$)"!)*X;P$```2(G&20.V^!```$B!QB`$
+M``!(BT0D,(EP$$B)\DC!ZB!(BT0D,(E0%&:!?3CA`74/#[9%.H/H$3P!#X;7
+M````2(M,)!!(#[9!0*@"#X3%````J`0/A+T```"H`0^$M0```$$/M\=(:<"P
+M!```2`-$)"!)*X;P$```2(G&20.V^!```$B+1"0PB7`82(GR2,'J($B+1"0P
+MB5`<ZWMF9I!F9I!(BT0D&/9`"@)T:D$/M\=(:<"P!```2`-$)"!(B<))*Y;P
+M$```2(G620.V^!```$B+5"0PB7(82(GQ2,'I($B+5"0PB4H<22N&\!```$B)
+MQDD#MO@0``!(@<8@!```2(M$)#")<!!(B?)(P>H@2(M$)#")4!1(BT0D,(!(
+M`0)F#[9564B+1"0P9HE0`K\`````@'U9`'0MB?A(C01`2,'@`DB)QD@#<Q!(
+MBTU@2(L4"$B)%HM$"`B)1@C_QP^V15DY^'?3BU4T2(M$)#")4`QF@7TXX0%U
+M40^V13J#Z!$\`7=&00^WSTB+5"0P2(GN2(M\)!CH`````$B-3"1`00^WUTAI
+MTK`$``!(`U0D($B)[DB+?"08Z`````!(BU0D&(!B#/[I8P4``$B+3"08]D$*
+M`@^$W00``$B+1"0PQD`&_DB+1"0P@&`'_DB#?"00``^$[0```$B+7"002`^V
+M0T"H`@^$VP```*@$#X33````J`$/A,L```!!#[?/2(M4)#!(B>Y(BWPD&.@`
+M````]H66`````7002(M$)#`/MT`(P>`#B$0D04B-3"1`00^WUTAITK`$``!(
+M`U0D($B)[DB+?"08Z`````#VA98````!=`M(BT0D&(!(#`'K"4B+5"08@&(,
+M_D$/M\](:<FP!```2(M<)"#&!!FA2(M$)!`/MI#B````@^(/#[9$&0&#X/`)
+MT(A$&0%(BU0D$`^W0C#_P`^VT,'B"`^VQ`G09HE$&0),BVPD$$F!Q<P```#I
+MK@,``&:!?3CA`0^%>`(```^V13J#^`]T#H/X$`^$X@```.F+`P``9@^V53S!
+MX@AF#[9%.P'"2(M$)##&0`0-2(M$)#"`8`7^@$PD+PA(BW0D,`^V125!#[:.
+MW@```-/@9@E&"$B+3"0P#[9!`8/@'X/(((A!`4$/M\](:<FP!```2(M<)"!(
+MC3092(M%/DB)AC@$```/ML+!X`@/MM8)PF:)E!E$!```#[9%/8B$&4($``#&
+M!I%(BU0D$`^W0C#_P`^VT,'B"`^VQ`G09HE$&0)(BUPD$`^VD^(```"#X@](
+MBUPD(`^V1!D!@^#P"="(1!D!3(ML)!!)@<7,````Z:X"``!(BU0D,`^V125!
+M#[:.W@```-/@9@E""$$/M]=(:=*P!```2(M$)"#&!`*!9L=$`@+__T$/MHPD
+MNP```(/A#TB+7"0@#[9$&@&#X/`)R(A$&@%(@WU(`'4.QD4D(;@`````Z0,$
+M``#V13L!=#U(@WU0`'0V3(MM4$$/M]](:=NP!```28N^:!```$R)[N@`````
+M@^`/2(M,)"`/ME0+`8/B\`G"B%0+`>L#38GEO@0```!(BU5(#[9"`3V3````
+M=W:)P/\DQ0````"#Q@3K:(/&!.MC@\8(ZUZ#Q@AF9I#K5H/&".M1@\8(ZTR#
+MQ@B0ZT:#Q@CK08/&&.L\@\88D.LV@\8,ZS&#Q@CK+`^V<@2--+4(````ZQ^!
+MQH@```"0ZQ:#QB3K$8/&).L,@\8DD.L&@<:(````C58#P>H"2(M$)#"(4`1(
+MBTPD,&;!Z@B#X@$/MD$%@^#^"="(005!#[?_2&G_L`0``$B+7"0@2(V\'R`$
+M``")\DB+=4CH`````.DJ`0``#[9%.(/H!#VK````=S^)P/\DQ0`````/MD5`
+MP>`(#[9508T,$(/Y#7<8N`$```!(T^"IV#X``'0)2(M$)#"`2`$$2(M$)#"`
+M2`$!ZPE(BT0D,(!@`?M(BT0D,,9`!`U(BT0D,(!@!?Y(BU0D,`^V125!#[:.
+MW@```-/@9@E""$B+1"0P@&`!'T$/M]](:=NP!```2(M$)"#&A`,@!```!DR+
+M;"0028'%S````$R-)`-)C;PD(00``$R)[N@`````28V\)"4$``!,B>[H````
+M`$B+13A)B80D1`0``$B+14!)B80D3`0``$'&!"212(M,)!`/MI'B````@^(/
+M2(M,)"`/MD0+`8/@\`G0B$0+`4B+5"00#[=",/_`#[;0P>((#[;$"=!FB40+
+M`DV%[0^$D@```$$/M\=(:<"P!```28M5`$B+3"0@2(E4"`3K=TB+7"08]D,*
+M`71L00^WSTB+5"0P2(GN2(G?Z`````#VA98````!=!!(BT0D,`^W0`C!X`.(
+M1"1!2(U,)$!!#[?72&G2L`0``$@#5"0@2(GN2(M\)!CH`````/:%E@````%T
+M"TB+1"08@$@,`>L)2(M4)!B`8@S^00^WUTF+AI`)``!(B2S01(GZ9L'J!0^W
+MTD2)^8/A'[@!````2-/@00F$EI@)``"+13@E____`#WA`1``=2]!#[?W2(U,
+M)"RZ`````$B+?"08Z`````"+1"0L)?___Q\-````0(E$)"SIH0```&:!?3CA
+M`74V#[9%.H/H$3P!=RM(BW0D"$R)]^@`````2(M,)`@/ME%000^W]TB-3"0L
+M2(M\)!CH`````.MC2(MT)!!,B??H`````$B+7"00#[93:D$/M_=(C4PD+$B+
+M?"08Z`````!(#[9#0*@"=#&H!'0MJ`%FD'0GBT0D+"7___\?#0```&")1"0L
+M#[93:H/B?\'B%"7__P_X"=")1"0L2(UT)"Q,B??H`````+@#````2(/$6%M=
+M05Q!74%>05_#9F:09F:02(/L($B)7"0(2(EL)!!,B60D&(GR2(L?B?!FP>@%
+M#[?HBT2K7$&)U$&#Y!]$B>%(T_BH`74Z#[?V2(U,)`2Z`````.@`````@4PD
+M!````.!(C70D!(!F`_=(B=_H`````+@!````1(GA2-/@"42K7$B+7"0(2(ML
+M)!!,BV0D&$B#Q"##9F9FD&9F9I!F9F:02(/L*$B)7"0(2(EL)!!,B60D&$R)
+M;"0@28G\2(GU2(M&<$R+:"AF@7X@A0`/AZX```!(#[=&(("\.$`(``#_#X2;
+M````9H-^(']W*4@/MH0X0`@``$B+EQ@)``!(:<"(`0``2(M$$$A(#[9`"$@%
+MP`@``.MP9H%^(($`=RY(#[=&($@/MH0X0`@``$B+EV@)``!(:<#(#P``2(M$
+M$`A(#[9`"$@%P`@``.LZ2`^W1B!(#[:$.$`(``!(BY=`"0``2&G`T````$B+
+MA!"(````2`^V0`A(!<`(``#K"69F9I"XOPD``$D/MEP$!DAIVZ@```!*C9PC
+MH`$``$B#?7@`=`](BW5X3(GGZ`````!F9I!(B>Y,B>?H`````$R)[DB)WT'_
+ME:````!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#9F9FD&9F9I!F9F:09F:0
+M2(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)]DF)_4R+/TB-
+M7TA(B=_H`````$F)Q$F#[#A,B?_H`````$B)Q4F-1"0X2(M3"$B)0PA)B5PD
+M.$B)4`A(B0*X`0```$B%[71Y2(U]6,9%..'&13D!QD4Z$(!-.P%)BX:@````
+M2(E%:$B+17!,B7`H28V&D````$B)15#&127,9D$/MD0D6V:)12!)BT4`2(E%
+M*,=%-)````!,B75(2,>%H`````````"^`````.@`````2(GN3(G_Z`````"X
+M`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9F
+M9I!(@^PH2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@2(GS2(G]3(MO2$V+90`/
+MMTXRB<YFP>X%#[?&08M$A%R#X1](T_BH`0^%9@,``$F+%"0/M\:-!(4``P``
+MB8)P`0``28L$)(N`=`$``(D%`````(G"QD,D(8M#."7___\`/>$!#P!U(KX`
+M````2(G?Z`````"Z`````$B)WDR)Y^@`````Z0L#``")T`^W2S*#X1](T_BH
+M`70;O@$```!(B=_H`````$R)Y^@`````9F:09F:0#[:%X````(/X!`^'T`(`
+M`(G`_R3%`````,:%X`````&Z`0```$B)WDR)[^@`````Z:L"``#&A>`````"
+MN@@```!(B=Y,B>_H`````.F/`@``QH7@`````TB)ZKXA````3(GOZ`````!(
+M@WU0`'0@#[95>4B+=5!!N`````"Y`0```$R)[^@`````Z5$"``!!#[9U#;H`
+M````3(GGZ`````#I.@(``,:%X`````1(@WU0`'0P2(GJOB$```!,B>_H````
+M``^V57E(BW500;@`````N0(```!,B>_H`````.G\`0``N@````"^(0```$R)
+M[^@`````00^V=0VZ`0```$R)Y^@`````Z=,!``!(B>J^!@```$R)[^@`````
+M2(-].`!T%DB+13B+2`2-40&)4`2#^04/AJ8!``#&14,!QD5"`(!]>P!T&$R)
+MY^@`````OP$```#H`````(!]>P!UZ$B#?5``=!A(BU482(M%$$B)4`A(B0)(
+MBT50_DA8ZQE(@WU8`'022(M56$@/MD5Y2,=$PE@`````2(M5"$B+10!(B5`(
+M2(D"0?Y-#DB#O1@!````=!@/MK4%`0``2(N]&`$``+H!````Z`````!(@WU0
+M`'02#[9U>4B+?5"Z`0```.@`````2(-].``/A((```!(BT4X2,=`8`````!!
+M_H0D[Q,``$R)Y^@`````2(M%.`^V<`&Z`0```$R)Y^@`````2(M%.`^V4`(/
+MMG`!2,?'`````+@`````Z`````!(BU4X28NT)-`(``"_`0```.@`````2(M5
+M.$F+M"30"```OP8```#H`````$C'13@`````2(GN3(GGZ`````!!@'T)_W1;
+M0;X`````08!]#@!V.4F-76!(B=_H`````$B)Q4B+0PA(B6L(2(E=`$B)10A(
+MB2B`?4+_=0M!_\9%.'4.=]/K!D4X=0YW%4'&10G_3(GN3(GGZ`````!F9I!F
+MD$B+'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F:02(/L.$B)7"0(2(EL
+M)!!,B60D&$R);"0@3(ET)"A,B7PD,$B)\TB)_4R+9TA-BRPD0;\`````0?9$
+M)`P0=`?&A^`````&#[:%X````(/X`0^$BP```(/X`7\+A<!T'F:0Z?L#``"#
+M^`0/A*(```"#^`8/A/D!``#IY`,``,:%X`````%(B>Y,B>_H`````,9#)(%!
+M@$PD#`A(@[N``````'0/2(VS@````$R)[^@`````28V5Z````$F+A>@```!(
+MB5@(2(D#2(E3"$F)G>@```!,B>_H`````.F"`P``9I!!@&0D#/?^A>,```#&
+MA>``````QD,D`DB)WDR)[^@`````3(GOZ`````#I40,``)#&A>,`````2(-]
+M.``/A$X!``!(BT4XBT@$C5$!B5`$@_D%#X<X`0``08!D)`SW2(.[@`````!T
+M#TB-LX````!,B>_H`````$F-E>@```!)BX7H````2(E8"$B)`TB)4PA)B9WH
+M````08!,)`P02(-]4`!T(`^V57E(BW500;@`````N0(```!,B>?H`````.F\
+M`@``QD0D!P!!@'PD#@`/AJ<```!-C70D8&9FD&9FD$R)]^@`````2(G#28M&
+M"$F)7@A,B3-(B4,(2(D82(-[.`!T'$B+4SA)B[70"```OP4```#H`````(!+
+M1`)F9I!(B=J^!@```$R)Y^@`````@'M[`'0R1(GX0?_'/7^6F`!W)4R)[^@`
+M````OP$```#H`````(![>P!T#42)^$'_QSU_EI@`=MO^1"0'#[9$)`=!.$0D
+M#@^'9/___\9%0@-(B>Y,B>_H`````.GP`0``28V5Z````$F+A>@```!(B5@(
+M2(D#2(E3"$F)G>@```!(@WTX`'062(M%.(M(!(U1`8E0!(/Y!0^&E@$``$C'
+MQP````"X`````.@`````2(GJO@8```!,B>?H`````$'^3"0.2(M5"$B+10!(
+MB5`(2(D"2(-]4`!T&$B+15#^2%A(BU482(M%$$B)4`A(B0+K'TB#?5@`=!A(
+MBU582`^V17E(QT3"6`````!F9I!F9I"`?7L`=#)$B?A!_\<]?Y:8`'<E3(GO
+MZ`````"_`0```.@`````@'U[`'0-1(GX0?_'/7^6F`!VVTB+50A(BT4`2(E0
+M"$B)`DB#O1@!````=!\/MK4%`0``2(N]&`$``+H!````Z`````!F9F:09F:0
+M2(-]4`!T&0^V=7E(BWU0N@$```#H`````&9F9I!F9I!(@WTX`'1_2(M%.$C'
+M0&``````0?Z%[Q,``$R)[^@`````2(M%.`^V<`&Z`0```$R)[^@`````2(M%
+M.`^V4`(/MG`!2,?'`````+@`````Z`````!(BU4X28NUT`@``+\!````Z```
+M``!(BU4X28NUT`@``+\&````Z`````!(QT4X`````$B)[DR)[^@`````ZQ!(
+MB>J^`@```$R)Y^@`````3(GOZ`````!F9I!FD$B+7"0(2(ML)!!,BV0D&$R+
+M;"0@3(MT)"A,BWPD,$B#Q#C#9F9FD&9FD&9FD&9FD$%6055!5%532(GS28G\
+M3(NOB````$F+;0!!]D4,$'0$QD=1!D$/MD0D48/X`0^$B0```(/X`7\-A<!T
+M(&9F9I#I>P,``(/X!`^$F@```(/X!0^$EP$``.ED`P``0<9$)%$!3(GF2(GO
+MZ`````#&0R2!08!-#`A(@[N``````'0/2(VS@````$B)[^@`````2(V5Z```
+M`$B+A>@```!(B5@(2(D#2(E3"$B)G>@```!(B>_H`````.D$`P``08!E#/=!
+M_D0D4D'&1"11`,9#)`)(B=Y(B>_H`````$B)[^@`````Z=@"``!!@&4,]TB#
+MNX``````=`](C;.`````2(GOZ`````!(C87H````2(N5Z````$B)6@A(B1-(
+MB4,(2(F=Z````+H`````O@8```!,B>_H`````$$/MG4-N@$```!(B>_H````
+M`$&^`````$&`?0X`#X9\````38UE8)!,B>?H`````$B)PTF+1"0(28E<)`A,
+MB2-(B4,(2(D82(-[.`!T&DB+4SA(B[70"```OP4```#H`````(!+1`*02(G:
+MO@8```!,B>_H`````(![>P!T&$B)[^@`````OP$```#H`````(![>P!UZ$'_
+MQD4X=0YWB4'&10D`08!-#!!,B>_H`````.G2`0``08!E#/=(@[N``````'0/
+M2(VS@````$B)[^@`````2(V%Z````$B+E>@```!(B5H(2(D32(E#"$B)G>@`
+M``!)C45@2(G"23E%8`^$X0```$F)QDB)U^@`````2(G#2(-X.`!T'DB+4#A(
+MB[70"```OP4```#H`````(!+1`)F9I!FD$B)VKX&````3(GOZ`````"`>WL`
+M=!A(B>_H`````+\!````Z`````"`>WL`=>A(@WLX`'1A2(M#.$C'0&``````
+M_H7O$P``2(GOZ`````!(BT,X#[9P`;H!````2(GOZ`````!(BU,X2(NUT`@`
+M`+\!````Z`````!(BU,X2(NUT`@``+\&````Z`````!(QT,X`````$B)WDB)
+M[^@`````3(GR33EU8`^%(O___[H`````O@8```!,B>_H`````$R)YDB)[^@`
+M````2<=%0`````!(BT4`BY!8`0``B14`````A=)T"DB+10")D%@!``!!]D4*
+M`7180;X`````@'U#`'8;20^V50U(B=!$B?%(T_BH`74)0?_&1#AU0W?J00^V
+M]DB)[^@`````3(GN2(GOZ`````!$B?(/ML)(:\!H2,>$*$@2````````9F9F
+MD%M=05Q!74%>PV9F9I!F9I!!5T%6055!5%532(/L"$F)_$R+=TA)BQY(B?Y(
+MB=_H`````$&`O"3C`````78)0<:$).`````$28UL)"!).6PD(`^$.0(``$B)
+M[^@`````28G'28M$)"!,B7@(28D'28EO"$V)?"0@0;T`````Z=8!``!!#[?5
+M2(N#D`D``$B++-!(A>T/A+L!``!!#[=$)#!F.T4@#X6K`0``#[>+.A(``$B+
+M@U`1```Y"'149F9FD/_!#[>#/A(``#G(N``````/1LB-40%(BX-0$0``BP20
+MJ0``"`!U'B7_#P``9D$YQ74323GO=1E(B=_H`````)#IBP$``$B+@U`1```Y
+M"'6P08!^6``/A3H!``!F@7T@A0`/ARX!``!(#[=%(("\&$`(``#_#X0;`0``
+M387D#X0``0``20^V1"1`J`$/A/(```"H!`^$Z@```$B+$P^W13)FP>@%#[?`
+MC02%``,``(F"<`$``$B+`P^W33*#X1^Z`0```$B)UDC3YHFP=`$``$@/MTTR
+M2(N#D`D``$C'!,@`````#[=-,HG(9L'H!0^WP(/A'TB)UDC3YDB)\??1(8R#
+MF`D```^W33*)R&;!Z`4/M\"#X1](T^+WTB%4@UQ,.?UT24B+50A(BT4`2(E0
+M"$B)`DB#O8``````=`](C;6`````2(G?Z`````!(C9/H````2(N#Z````$B)
+M:`A(B44`2(E5"$B)J^@````/MW4R2(V[6`\``.@`````0?Y,)'OK$D'V1@H"
+M=`M(B>Y,B>?H`````$'_Q69$.6M8#X<?_O__387D="A)#[9$)$"H`70>J`1T
+M&DF+5PA)BP=(B5`(2(D"3(G^3(GGZ`````"02(/$"%M=05Q!74%>05_#D$%6
+M055!5%5328G\3(NWB````$F+'DB)_DB)W^@`````08!\)%(!=@9!QD0D401)
+MC6PD*$DY;"0H#X3R`0``2(GOZ`````!)B<5)BT0D*$R):`A)B44`28EM"$V)
+M;"0HO0````#IFP$``&9F9I!F9I`/M]5(BX.0"0``2(LTT$B%]@^$>P$``$$/
+MMT0D0&8[1B`/A6L!```/MXLZ$@``2(N#4!$``#D(=%=F9F:09F:0_\$/MX,^
+M$@``.<BX``````]&R(U1`4B+@U`1``"+!)"I```(`'4>)?\/``!F.<5U%$DY
+M]74:2(G?Z`````!FD.D[`0``2(N#4!$``#D(=;!F@7X@A0`/A_8```!(#[=&
+M(("\&$`(``#_#X3C````08!^6``/A=@```!!]D8*`0^$S0```$B+$P^W1C)F
+MP>@%#[?`C02%``,``(F"<`$``$B+`P^W3C*#X1^Z`0```$B)UTC3YXFX=`$`
+M`$@/MTXR2(N#D`D``$C'!,@`````#[=.,HG(9L'H!0^WP(/A'TB)UTC3YTB)
+M^??1(8R#F`D```^W3C*)R&;!Z`4/M\"#X1](T^+WTB%4@UQ,.>YT+DB+5@A(
+MBP9(B5`(2(D"2(V3Z````$B+@^@```!(B7`(2(D&2(E6"$B)L^@````/MW8R
+M2(V[6`\``.@`````0?Y,)$7_Q68Y:U@/AV+^__]!]D8*`70;28M5"$F+10!(
+MB5`(2(D"3(GN3(GGZ`````"06UU!7$%=05[#9F9FD&9FD$%7059!54%455-(
+M@^P(2(G]0;X`````2(V'Z````$B)PD@YA^@````/A-,!``!)B<=)B<5)B=1(
+MB=?H`````$B)PTB#>'``=2](B>_H`````$B)0W!(A<!U'DB+A>@```!(B5@(
+M2(D#3(EC"$B)G>@```#IB0$``(M#."7___\`/>$!$``/A.P```!F@7L@@``/
+MA.````!F#[9#(&:)0R!F@_A_=AIF@7LXX0%U*0^V0SJ#Z!$\`7<>9F9FD&9F
+MD&:!>R"%`'</2`^W0R"`O"A`"```_W49QD,D!DB)WDB)[^@`````Z08!``!F
+M9I!FD&:!>SCA`74+#[9#.H/H$3P!=B](BY48"0``3(VR>(8!`&:!>R"%`'<9
+M2`^W0R!(#[:$*$`(``!(:<"(`0``3(TT`F:!>SCA`74*#[9#.O_(/`%V,V:!
+M>R"``'0K9H%[..$!=0L/MD,Z@^@1/`%V&$'V1D,$=1'&0R0&2(G>2(GOZ```
+M``#K>DB)WDB)[^@`````@_@"=PN#^`%S)F9F9I#K$(/X`W1/9F:09F:09F:0
+MZT](B=Y(B>_H`````&9FD.L_2(.[@`````!T#TB-LX````!(B>_H`````$B+
+MA>@```!(B5@(2(D#3(E["$B)G>@```#K&TB)WDB)[^@`````3(GJ3#FMZ```
+M``^%,_[__TB#Q`A;74%<05U!7D%?PT%7059!54%455-(@^Q(28G]0(AT)#!(
+M#[94)#!(:])H2`'Z3(NR2!(``$C'P/[___^)\4C3P"*":1(``(A$)"],BS_'
+M1"0H`````$"`_@-V#4''AW`!``#$`0``ZPM!QX=P`0``J`$``$&+AW0!``")
+M!0`````/MDPD,(/A`[L'````T^.)Q0G=08FO=`$``+_H`P``Z`````#WTR'=
+M08FO=`$``(!\)#`#=B`/MD0D,$C!X`(E_`,``$*+A#C0`0``B04`````B<7K
+M'@^V1"0P2,'@`B7\`P``0HN$.-`!``")!0````")Q8/-"(!\)#`#=A@/MD0D
+M,$C!X`(E_`,``$*)K#C0`0``ZQ8/MD0D,$C!X`(E_`,``$*)K#C0`0``@'PD
+M,`-V'`^V1"0P2,'@`R7X!P``0L>$.``"```X````ZQH/MD0D,$C!X`,E^`<`
+M`$+'A#@``@``.````+\0)P``Z`````"`?"0P`W8<#[9$)#!(P>`#)?@'``!"
+MQX0X!`(```````#K&@^V1"0P2,'@`R7X!P``0L>$.`0"````````387V#X3N
+M!P``0;P`````08!]0P!V+69F9I!)#[9&#4$/MLQ(T_BH`700N@$```")SDR)
+M[^@`````D$'_Q$4X94-WUT'V1@H!=&),B?9,B>_H``````^V="0P3(GOZ```
+M``!(#[9$)#!(:\!H2HV4*&`2``"+0@RI```0`'0()?__[_^)0@Q,B?9,B>_H
+M`````$@/MD0D,$AKP&A*QX0H2!(```````#I2P<``$&`?E@`=!-)B[UH$```
+M3(GVZ`````!!_DY8@'PD+P`/A*D"``!(QT0D(`````#&1"0?``^V="0P3(GO
+MZ`````!(#[9$)#!(:\!H2HV4*&`2``"+0@RI```0`'0()?__[_^)0@P/MD0D
+M+T&(1@U!O`````!!@'U#``^&DP$``$@/ME0D+TB)5"00#[;(B4PD#$$/MLQ(
+MBT0D$$C3^*@!#X1@`0``1(GB#[;"2&O`:`^V5"0O0HB4*&D2``!!@/P#=A>-
+M!,T`````2)A"QX0X``(``#@```#K&4J-!.4`````)?@'``!"QX0X``(``#@`
+M``"_$"<``.@`````08#\`W8;2HT$Y0`````E^`<``(M,)`Q"B8PX!`(``.L9
+M2HT$Y0`````E^`<``(M4)`Q"B90X!`(``$&`_`-V#4''AW`!``#$`0``ZPM!
+MQX=P`0``J`$``$&+AW0!``")!0````!$B>&#X0.[!P```-/CB<4)W4&)KW0!
+M``"_Z`,``.@`````]],AW4&)KW0!``!!@/P#=A]*C02E`````"7\`P``0HN$
+M.-`!``")!0````")Q>L=2HT$I0`````E_`,``$*+A#C0`0``B04`````B<6#
+MS0A!@/P#=A=*C02E`````"7\`P``0HFL.-`!``#K%4J-!*4`````)?P#``!"
+MB:PXT`$``$'_Q$4X94,/AW_^__])C49(2(G"23E&2'0V2(G32(G7Z`````!(
+MC4C(2(E,)"!(BU,(2(E#"$B)&$B)4`A(B0)(@WC8`'0)2(G:23E>2'7*2(-\
+M)"``=$5(BT0D(,9`6@!!O`````!!@'U#`'8O20^V1@U$B>%(T_BH`7072`^V
+M1"0?2(M4)"!$B&00</Y"6OY$)!]!_\1%.&5#=]&Z`````+Z!````3(GWZ```
+M``!(#[9$)#!(:\!H2L>$*$@2````````Z6@#``"Z`````+X&````3(GWZ```
+M```/MG0D,$R)[^@`````2`^V1"0P2&O`:$J-E"A@$@``BT(,J0``$`!T""7_
+M_^__B4(,28U&2$B)PDDY1D@/A.P!``!(B00D2(G7Z`````!,C6#(2(U0$$@Y
+M4!`/A+$!``!)C7PD2.@`````2(U8\(![00UU&DB-L$@!``!(BT-(2(L`2(MX
+M*.@`````9F:02(M3"$B+`TB)4`A(B0*`>WL`=!A,B>_H`````+\!````Z```
+M``"`>WL`=>A(@WLX``^$*`$``$B+0SA(QT!@`````(![>P`/A)D```"]````
+M`&9!@WU8``^$B````&:02&/528N%D`D``$B+--!(A?9T9`^W1B!F.T,P=5IF
+M/84`=U0/M\!"@+PH0`@``/]T1DF+50`/MT8R9L'H!0^WP(T$A0`#``")@G`!
+M``!)BT4`#[=.,H/A'[H!````2-/BB9!T`0``QD8D(;H`````3(GOZ`````#_
+MQ4$/MT58.>@/CWK____V0T0$=21!_H7O$P``3(GOZ`````!(BT,X#[9P`;H!
+M````3(GOZ`````!(BT,X#[90`@^V<`%(Q\<`````N`````#H`````$B+4SA)
+MB[70"```OP$```#H`````$B+4SA)B[70"```OP8```#H`````$C'0S@`````
+M0?Y.#D'^3"182(G>3(GOZ`````!)C40D2$DY1"1(#X5/_O__0?Y.*$R)YDR)
+M[^@`````2(L4)$DY5D@/A1C^__])C49@2(G"23E&8`^$]@```$B)Q4B)U^@`
+M````2(G#@'A[`'0VBT0D*/]$)"@]?Y:8`'<G3(GOZ`````"_`0```.@`````
+M@'M[`'0/BT0D*/]$)"@]?Y:8`';92(-[.``/A(4```!(BT,X2,=`8`````#V
+M0T0$=21!_H7O$P``3(GOZ`````!(BT,X#[9P`;H!````3(GOZ`````!(BT,X
+M#[90`@^V<`%(Q\<`````N`````#H`````$B+4SA)B[70"```OP$```#H````
+M`$B+4SA)B[70"```OP8```#H`````$C'0S@`````0?Y.#DB)WDR)[^@`````
+M2(GJ23EN8`^%#?___TR)]DR)[^@`````2`^V1"0P2&O`:$K'A"A($@``````
+M`$&\`````$&`?4,`#X8$`0``3`^V="0OD$R)\D2)X4C3^D0Z9"0P#Y3`"="H
+M`0^$U0```$&`_`-V#4''AW`!``#$`0``ZPM!QX=P`0``J`$``$&+AW0!``")
+M!0````!$B>&#X0.-#$F[!P```-/CB<4)W4&)KW0!``"_Z`,``.@`````]],A
+MW4&)KW0!``!!@/P#=A]*C02E`````"7\`P``0HN$.-`!``")!0````")Q>L=
+M2HT$I0`````E_`,``$*+A#C0`0``B04`````B<6#S0A!@/P#=A=*C02E````
+M`"7\`P``0HFL.-`!``#K&$J-!*4`````)?P#``!"B:PXT`$``&9FD$'_Q$4X
+M94,/AP/___](@\1(6UU!7$%=05Y!7\-F9F:02(/L"$R+![H`````08!X0P!V
+M'`^VPDAKP&A*C80`0!(``$@Y^'0(_\)!.%!#=^0/ML)(:\!H3`'`2(NP2!(`
+M`$B%]G1K]D8*`G1E2`5`$@``2#E&('59@'Y8`'0H_D98ZT[^1EA!#[:)NP``
+M`$F+N&@0``!)Q\``````3(G*Z`````#K*TB+5DA,C4K(2(U&2$@YPG0:2(G"
+M28-Y$`!TPDF+03A,C4C(2#G0=>QF9I!(@\0(PV9F9I!F9F:09F:0055!5%53
+M2(/L"$&)]$F)_;L`````B?(/ML)(:\!H2(T4.$B+JD@2``!(A>T/A($!``!(
+MQ\#^____B?%(T\"$10T/A6P!``!(C45(2#E%2'012(VZ0!(``.@`````Z?X"
+M``!!O`````"`?0X`#X;N`@``2(U=8$B)W^@`````2(G!2(M#"$B)2PA(B1E(
+MB4$(2(D(@'E!``^%!`$``$@/MT$P28.\Q4`$````=0M(@WDX``^$TP```$@/
+MMT$P28N$Q4`$``!(@[B```````^$H0```,:!X`````!(#[9!0*@"="VH!'0I
+MJ`%T)<9!0@7&04,$#[91>4B+<5!(BWE(Z`````#IF````&9F9I!F9I!(#[9!
+M0*@"=2>H!&9FD&:0=!ZH`70:QD%"`\9!0P1(B<Y,B>_H`````.MF9F:09I!(
+M#[9!0*@"=%BH!&9FD&:0=$^H`75+QD%#!L9!0@5FQX'```````!(B<Y,B>_H
+M`````.LM2(M1.$F+M=`(``"_!````.@`````ZQ9(#[=1,$F+M=`(``"_`@``
+M`.@`````0?_$1#AE#@^'R/[__^FM`0``9H'[\P%W9TJ-!*4`````2(G%@>7\
+M`P``9F:09I"_$"<``.@`````08#\`W8@28M%`(N$*-`!``")!0````"I```0
+M`'4IZQYF9I!F9I!)BT4`BX0HT`$``(D%`````*D``!``=0G_PV:!^_,!=J]!
+M#[;T3(GOZ`````!,B>_H`````$2)X@^VPDAKP&A*BZPH2!(``$B%[0^$$`$`
+M`+L`````08!]0P!V+&9F9I!(#[9%#0^VRTC3^*@!=!&Z`````(G.3(GOZ```
+M``!FD/_#03A=0W?81(GA#[;!2&O`:$J-A"A`$@``2(E%($B-14A(.45(=0Y(
+MC45@2#E%8`^$A@```+X`````0;P`````2(U%2$B)PD@Y14AT,V:02(G32(G7
+MZ`````!(C7#(2(M3"$B)0PA(B1A(B5`(2(D"2(-XV`!T"4B)VD@Y74AUSTB%
+M]G1:QD9:`+D`````08!]0P!V2D@/MD4-2-/XJ`%T$$2)X@^VPHA,,'#^1EI!
+M_\3_P4$X34-WW.LD]D4*`70-2(GN3(GOZ`````#K$;X`````2(GOZ`````!F
+M9F:02(/$"%M=05Q!7<-F9I!FD$B#[`A(B?A(BS]FQT!.(`!(B<;H`````$B#
+MQ`C#9F:04TB+#T2+1S"[`````(!Y0P!V&P^VPTAKP&A(C80(0!(``$@Y^'0'
+M_\,X64-WY8#[`W8M2(T$G0`````E_`,``$B+$8N$`M`!``")!0````"I```0
+M`'4MZSMF9F:09F:02(T$G0`````E_`,``$B+$8N$`M`!``")!0````"I```0
+M`'00#[;S1(G"2(G/Z`````#K"P^V\TB)S^@`````6\-F9F:09F9FD&9F9I!F
+M9I!(BX?`$```BP")!0````!(BX?`$```BT`$B04`````2(N'P!```(M`"(D%
+M`````$B+A\`0``"+0`R)!0````##05=!5D%505154TB#[!B)="0428G\0;X`
+M````@']#``^&20@``(MT)!1!#[;6C4H(2(GP2-/XJ`%U$8U*$$B)\$C3^*@!
+M#X05"```08#^`W8G2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````J0``
+M"`!U)^M#2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````J0``"`!T'DR)
+MY^@`````1(GR#[;"2&O`:$*!C"!P$@`````(`$F+-"1$B?%!@/X#=BA*C03U
+M`````"7X!P``BX0P@`$``(D%`````(G"@>(```$`ZR9F9F:02(T$S0`````E
+M^`<``(N$,(`!``")!0````")PH'B```!`(72=%&`^0-V&DB-!,T`````)?@'
+M``#'A#"``0`````!`.L82(T$S0`````E^`<``,>$,(`!``````$`A=)T%D2)
+M\0^VP4AKP&A"@8P@<!(``````0!!@'PD40$/A6T&``!!@/X#=B=*C03U````
+M`"7X!P``28L4)(N$`H`!``")!0````"H`74KZ2H!``!*C03U`````"7X!P``
+M28L4)(N$`H`!``")!0````"H`0^$!`$``$2)\@^VPDAKP&A*C1P@2(VS>!(`
+M`$F+?"0HZ`````!(@[M($@````^$@0```$R+JT@2``!!OP````!!@'T.`'9F
+M28UM8&9FD&:02(GOZ`````!(B<-(BT4(2(E="$B)*TB)0PA(B1CV0T0"=3%(
+M@WLX`'0:2(M3.$F+M"30"```OP4```#H`````(!+1`)(B=J^!@```$R)[^@`
+M````0?_'13A]#G>CNB"A!P#K($$/MO:Z`0```$R)Y^@`````OZ"&`0#H````
+M`+H`+3$!1(GQ#[;!2&O`:$P!X$B-L'@2``")D'@2``!(QT80`````$@%0!(`
+M`$B)1AA)BWPD*.@`````08#^`W8@2HT$]0`````E^`<``$F+%"2+A`*``0``
+MB04`````ZQY*C03U`````"7X!P``28L4)(N$`H`!``")!0````!!@/X#=BQ*
+MC03U`````"7X!P``28L4)(N$`H`!``")!0````"I@````'4PZ<(```!FD$J-
+M!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````*F`````#X27````08#^`W8B
+M2HT$]0`````E^`<``$F+%"2+A`*$`0``B04`````B<;K($J-!/4`````)?@'
+M``!)BQ0DBX0"A`$``(D%`````(G&08#^`W8B2HT$]0`````E^`<``$F+#"2)
+M\H'*```!`(F4`80!``#K)TJ-!/4`````)?@'``!)BPPDB?*!R@```0")E`&$
+M`0``9F9FD&9FD$&`_@-V*DJ-!/4`````)?@'``!)BQ0DBX0"@`$``(D%````
+M`*D```0`=2[I1@(``$J-!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````*D`
+M``0`#X0=`@``08#^`W8B2HT$]0`````E^`<``$F+%"2+A`*``0``B04`````
+MB<;K($J-!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````(G&@<X```0`08#^
+M`W8:2HT$]0`````E^`<``$F+%"2)M`*``0``ZQA*C03U`````"7X!P``28L4
+M)(FT`H`!``!$B?(/ML)(:\!H2H.\($@2````#X6(````08#^`W8B2HT$]0``
+M```E^`<``$F+%"2+A`*``0``B04`````B<'K($J-!/4`````)?@'``!)BQ0D
+MBX0"@`$``(D%`````(G!08#^`W8=2HT$]0`````E^`<``$F+%"2)C`*``0``
+MZ0L#``!*C03U`````"7X!P``28L4)(F,`H`!``#I[@(``$2)\0^VP4AKP&A.
+MBZP@2!(``$F#?4``#X39````28M%0$@/MU!.]L8!#X7'````2(G%]L("#X2U
+M````2(VPD````$F+?"0HZ`````!!O@````"`?3L`=FE$B?(/ML)(BUS%6$B%
+MVW102(-[.`!T&DB+4SA)B[0DT`@``+\%````Z`````"`2T0"2(G:O@8```!,
+MB>_H`````(![>P!T&9!,B>?H`````+\!````Z`````"`>WL`=>A!_\9$.'4[
+M=Y?'A9`````@H0<`2,>%H`````````!(B:VH````2(VUD````$F+?"0HZ```
+M``#K!F:!2$Z``$&`_@-V*$J-!/4`````)?@'``!)BQ0DBX0"@`$``(D%````
+M`/;$`74LZ3P!``!*C03U`````"7X!P``28L4)(N$`H`!``")!0````#VQ`$/
+MA!4!``!!@/X#=B=*C03U`````"7X!P``28L4)(N$`H`!``")!0````"H`70K
+MZ>@```!*C03U`````"7X!P``28L4)(N$`H`!``")!0````"H`0^%P@```$2)
+M\40/MNE-:^UH3XVL)4`2``!)@WT(``^$I````$F+10A(B40D"$F-=3A)BWPD
+M*.@`````0;\`````2(M4)`B`>@X`=E-(B=5(@\5@2(GOZ`````!(B<-(BT4(
+M2(E="$B)*TB)0PA(B1A(@WLX`'0:2(M3.$F+M"30"```OP4```#H`````(!+
+M1`)!_\=(BTPD"$0X>0YWM$''13B`A!X`2<=%2`````!-B6U028UU.$F+?"0H
+MZ`````!F9F:09F:008#^`W8B2HT$]0`````E^`<``$F+%"2+A`*``0``B04`
+M````B<'K($J-!/4`````)?@'``!)BQ0DBX0"@`$``(D%`````(G!08#^`W8:
+M2HT$]0`````E^`<``$F+%"2)C`*``0``ZQA*C03U`````"7X!P``28L4)(F,
+M`H`!``!!_\9%.'0D0P^'M_?__TB#Q!A;74%<05U!7D%?PV9FD$%7059!54%4
+M55-(@^P82(G]28GU2(N7&`D``$R-HGB&`0!F@7X@A0!W&4@/MT8@2`^VA#A`
+M"```2&G`B`$``$R-)`)!#[9$)&K!X`A(F$B+E<`0``"+A`)`"```B04`````
+M08G&0<'N$$&)QT'![QA!#[9$)&K!X`A(F$B+E<`0``"+A`)$"```B04`````
+MB$0D$$B-="00B<+!Z@B(5@'!Z!"(1@)!#[9$)&K!X`A(F$B+E<`0``"+A`)(
+M"```B04`````B$8#B<+!Z@B(5@3!Z!"(1@7&1@8`QD8'`(M,)!!!#[;700^V
+MWD2+1@2)WDC'QP````"X`````.@`````183V#Y7`@_,!A=AT$D'&120`N```
+M``#ILP(``&9FD$&`?22!=2E!#[;700^V]DB-3"003(GOZ`````!!QD4D`K@`
+M````Z84"``!F9I!FD$&+13@E____`#WA`0X`=1!!QD4D(;@`````Z6$"``"0
+M0?:%E@````%U%D'VQ@%T$$&`?"1"_P^%)P(``&9F9I!,B>9(B>_H`````$R)
+MYDB)[^@`````2(M5`$$/MT4R9L'H!0^WP(T$A0`#``")@G`!``!(BT4`00^W
+M33*#X1^Z`0```$B)TTC3XXF8=`$``$D/MTTR2(N%D`D``$C'!,@`````00^W
+M33*)R&;!Z`4/M\"#X1](B=-(T^-(B=GWT2&,A9@)``!!#[=-,HG(9L'H!0^W
+MP(/A'TC3XO?2(52%7$F+50A)BT4`2(E0"$B)`D$/MW4R2(V]6`\``.@`````
+M0?Y,)'M!QD4D@4F#O8``````=`])C;6`````2(GOZ`````!)C40D($B)PDDY
+M1"0@#X0&`0``0;X!````2(V%Z````$B)1"0(28G79F9FD$B)U^@`````2(G#
+M2(M5``^W0#)FP>@%#[?`C02%``,``(F"<`$``$B+10`/MTLR@^$?3(GR2-/B
+MB9!T`0``2`^W4S)(BX60"0``2,<$T``````/MTLRB<AFP>@%#[?`@^$?3(GR
+M2-/B2(G1]]$AC(68"0``#[=+,HG(9L'H!0^WP(/A'TR)\DC3XDB)T??1(4R%
+M7`^W<S)(C;U8#P``Z`````!!_DPD>TB#NX``````=`](C;.`````2(GOZ```
+M``!(BX7H````2(E8"$B)`TB+1"0(2(E#"$B)G>@```!,B?I-.7PD(`^%$___
+M_T&!I90```#___[_0<:$).`````$3(GN3(GGZ`````"X`0```.L=00^VUT$/
+MMO9(C4PD$$R)[^@`````N`````!F9I!(@\086UU!7$%=05Y!7\.02(/L2$B)
+M7"082(EL)"!,B60D*$R);"0P3(ET)#A,B7PD0$B)5"00B?5(BQ],B[/P$```
+M0;T`````2(72#X0%`P``#[?62&G"L`0``$+V1#`A`G012(N#D`D``$B+!-#&
+M0"0"ZQ(/M\9(BY.0"0``2(L$PL9`)"$/M\5(BY.0"0``2(L4PHM"."7___\`
+M/>$!$``/A+@!``"X_____V:!>B"%`'<-2`^W0B`/MH080`@``#S_=1H/M\5(
+MBY.0"0``2(L$PL9`)`;I,PD``&9FD`^VP$AIP(@!``!)B<5,`ZL8"0``@'PD
+M$P!Y;TD/MD5`J`)T+*@$="BH`70D2(L#BX!8`0``B04`````B<*%P'0/2(L#
+MB9!8`0``9F:09F:02(L#BX!0`0``B04`````B<*#R@)(BP.)D%`!``!(BP.+
+M@`0!``")!0````")PH#._TB+`XF0!`$```^WQ4AIP+`$``!F0O=$,"`""`^$
+MW@```$&X`````+X`````@'M#`'9\0;D!````9F9FD&9FD$@/MD<-0`^VSDC3
+M^*@!=%=`@/X#=B*-!(T`````2)A(BQ.+A`+0`0``B04`````J0``$`!U)NLO
+M2(T$M0`````E_`,``$B+$XN$`M`!``")!0````"I```0`'0+3(G(B?%(T^!!
+M"<#_QD`X<T-WD46$P'1,1#A'#75&B>AFP>@%#[?`BT2#7(GI@^$?2-/XJ`%U
+M+4&`O>`````"=PA!QH7@`````P^WQ4B+DY`)``!(BS3"3(GOZ`````#IL`<`
+M`/9$)!,!#X2E!P``#[?%2(N3D`D``$B+/,+&1R0ABT<X)?___P`]X0$.``^$
+M@`<``$$/MD5JP>`(2)A(BY/`$```BX0"0`@``(D%`````(G&P>X008G`0<'H
+M&$$/MD5JP>`(2)A(BY/`$```BX0"1`@``(D%`````(A$)`A(C4PD"(G"P>H(
+MB%$!P>@0B$$"00^V16K!X`A(F$B+D\`0``"+A`)("```B04`````B$$#B<+!
+MZ@B(403!Z!"(007&008`QD$'`/:'E@````%U&$`/MO9`]L8!=`Y!#[;0Z```
+M``#IR08``$B)_DB)W^@`````Z;D&```/M]9(BX.0"0``2(L$T&:!>#CA`0^%
+M+P$```^V2#J#^1`/AY(&``"X`0```$C3X*G`,```#X7R````J0"```!U#:D`
+M``$`=5^0Z6L&```/M]9(BX.0"0``2(L,T$QIPK`$``!##[9$,#.(021(BX.0
+M"0``2(L$T/9`(P0/A#@&``"`>"0`#X0N!@``2(-X4``/A",&``!(BU!00P^V
+M1#`SB`+I$@8```^WUDAITK`$``!$#[?F2(N#D`D``$J+#.!"#[9$,BJ(021(
+MBX.0"0``2HL$X$B#>$@`#X3:!0``0@^VO#(A!```Z`````")PDB+@Y`)``!*
+MBP3@.U`T=@.+4#0/M_5(BX.0"0``2(L$\$B+>$B)TDAI]K`$``!*C70V*.@`
+M````Z8T%```/M\9(BY.0"0``2(L$PL9`)`#I=@4``&9FD&9FD`^WUDB+@Y`)
+M``!,BR3038M\)&BX_____V9!@7PD((4`=PY)#[=$)"`/MH080`@```^VP$AI
+MP(@!``!)B<5,`ZL8"0``0<:%X`````!)#[9%0*@"#X27`0``J`0/A(\!``"H
+M`0^$AP$``$'&1"0D`$&+E"24````2,'J%4V%_P^5P`^VP(7"#X3D!```0?:'
+MJ0````(/A)T```!)@[^@`````'0828N_H````$&+5"0T28MT)$CH`````.M[
+M28-\)$@`='-!O@````!)@[^P`````'030?:'J0````%U"4V+M[````#K(4B+
+MLR`*``"Z`0```$R)_T'_E[@```"%P'0'3(NS(`H``$&#?"0T`'0G28ML)$A)
+MBWX(08L62(GNZ`````!!BP9(`<5)C48$28/&$(,X`'3>00^V16K!X`A(F$B+
+MD\`0``"+A`)`"```B04`````B<+!ZA!!B)>;````P>@89D&)AY````!!#[9%
+M:L'@"$B82(N3P!```(N4`D0(``")%0````!F#[;"9D&)AY0````/ML9F08F'
+ME@```(G0P>@09@^VP&9!B8>8````P>H808B7F@```$$/MD5JP>`(2)A(BY/`
+M$```BX0"3`@``(D%`````&8/ML!F08F'D@```.F%`P``9F:09I`/M]5(:<JP
+M!```0@^V1#$SA,`/A;\```!(BX.0"0``2(L$T,9`)`!!BY0DE````$C!ZA1-
+MA?\/E<`/ML"%P@^$/`,``$(/MD0Q,T&(AY(```!!#[:'J0```*@"#X0?`P``
+MO0````!)@[^P`````'0-J`%U"4F+K[````#K(4B+LR`*``"Z`0```$R)_T'_
+ME[@```"%P'0'2(NK(`H``$&#?"0T``^$U@(``$F+7"1(D$B+?0B+50!(B=[H
+M`````(M%`$@!PTB-101(@\40@S@`=-[IJ0(``#P"#X58`@``#[?]2&G_L`0`
+M`$J-?#=`OG\```!`(C?&1"0#`,9$)`(`QD0D`0`/M\5(:<"P!```0HM$,#B)
+M1"0$2(U,)`0/ME0D!,'B&`^V00'!X!`)P@^V00+!X`@)P@^V00-!B=5!"<5`
+M@/YQ=C!!@_T!=@L/MD<!@^`/B$0D`T&#_0)V"`^V3P*(3"0"08/]`W9-#[9_
+M`T"(?"0!ZT)!@_T"=@L/MD<"@^`/B$0D`T&#_0=V*P^V1P>#P`A!.<5$#T?H
+M08/]#'8(#[9/#(A,)`)!@_T-=@D/MG\-0(A\)`$/M_5(BX.0"0``2(L,\(!Y
+M,``/E<!%A>T/E<(/ML"%PG1)QD$D($B+@Y`)``!(BP3P1#AH,',%1`^V:#`/
+MM\U(BX.0"0``2(L$R$B#>%``="Q(BWA01(GJ2&GQL`0``$J-=#9`Z`````#K
+M$@^WQ4B+DY`)``!(BP3"QD`D(H!\)`,$=1(/M\5(BY.0"0``2(L$PL9`)`))
+M.5PD*`^5P$V%_P^5P@^VP(7"#X08`0``0?:$))8````0=%,/M\5(:<"P!```
+M0@^V1#`S08B'D@```$'VAZD````"=#)$B>A%.&PD,',&00^V1"0PA,!T'DF+
+MOZ`````/MM`/M_5(:?:P!```2HUT-D#H``````^V1"0#@_@+=UV)P/\DQ0``
+M``!!QH>J`````>F:````@'PD`@0/E,"`?"0!`@^4P@^VP"'0@_@!&<"#X/&#
+MP!%!B(>J````ZW%!QH>J````$.MG0<:'J@````OK74'&AZH````&ZU-!QH>J
+M````#>M)/"AU'T$/MD5[_\A!B$5Z#[?52(N#D`D``$B+!-#&0"2!ZR8\"'4*
+MOQ`G``#H``````^WQ4B+DY`)``!(BP3"QD`D(69FD&9FD$B+7"082(ML)"!,
+MBV0D*$R+;"0P3(MT)#A,BWPD0$B#Q$C#9F9FD&9FD&9FD&9FD%532(/L"$B)
+M^TB)_4B+!XN`4`$``(D%`````(G&2(L'B;!0`0``]\8`__\`=`A(B>_H.NG_
+M_TB+`XN`4`$``(D%`````(G&2(L#B;!0`0``]\8`__\`=<ZX`````$B#Q`A;
+M7<-F9F:09F9FD&9F9I!!5T%6055!5%532(/L2$B)_4B)?"0X1`^WISH2``!(
+MBP>+@$`!``")!0````!F)?\/9HF'.A(``+@`````9D0YISH2```/A"P'``!F
+M@;\Z$@``_P\/A*H&``!F1#FG.A(```^$G`8``$B-A^@```!(B40D&$B-E_@`
+M``!(B50D$$B)5"0(2(D4)&9F9I!F9I!(BXWP$```0?_$9D0YI3X2``"X````
+M`$0/1N!!#[?42(N%4!$``(MTD`3WQ@``"``/A*$```!(BT4`BX!0`0``B04`
+M````B<)(BT4`B9!0`0``NP````#WP@#__P!T4;X`````@'U#`'1&B==F1`^V
+M14,/M]:-2@A(B?A(T_BH`74-C4H02(GX2-/XJ`%T%`^WQDAIP*@```!(C9PH
+MH`$``.L-_\9F03GP=\=F9I!FD$B%VW402(M\)#CH`````)#IH04``$B+?"0X
+MZ`````"(0P_ICP4``$&)]69!@>7_#T$/M\5(:="P!```2(M\"B!(BY60"0``
+M3(LTPDV%]@^$8@4``/?&```@``^$D0$``$&`?B2!#X5E`0``0<9&)"%)#[=6
+M,DB+A9`)``!(QP30`````$$/MTXRB<AFP>@%#[?`@^$?N@$```!(T^)(B='W
+MT2&,A9@)``!!#[=.,HG(9L'H!0^WP(/A'[H!````2-/B2(G1]]$A3(5<00^W
+M=C)(C;U8#P``Z`````!)@[Z``````'0/28VV@````$B)[^@`````9D&!?B"%
+M``^'S@```$D/MT8@@+PH0`@``/\/A+L```!F08-^(']W)T@/MH0H0`@``$B+
+ME1@)``!(:<"(`0``2(M$$$B`>`C_=6'IC````&9!@7X@@0!W*4D/MT8@2`^V
+MA"A`"```2(N5:`D``$AIP,@/``!(BT00"(!X"/]U+.M:20^W1B!(#[:$*$`(
+M``!(BY5`"0``2&G`T````$B+A!"(````@'@(_W0P3(GV2(GOZ`````!(BX7H
+M````3(EP"$F)!DB+3"0828E."$R)M>@```#IZ`,``&:028U&$$B+3"002(M1
+M"$B)00A)B4X02(E0"$B)`NG%`P``1(GH9L'H!0^WP(M$A5Q$B>F#X1](T_BH
+M`0^%I@,``$$/M]5(BX60"0``2(L$T&:!>""%``^'LP```$@/MU`@@+PJ0`@`
+M`/\/A*````!F@W@@?W<B2`^VA"I`"```2(N5&`D``$AIP(@!``!(BT002`^V
+M4`CK?$$/M]5(BX60"0``2(L$T&:!>""!`'<G2`^W0"!(#[:$*$`(``!(BY5H
+M"0``2&G`R`\``$B+1!`(#[90".L^00^WU4B+A9`)``!(BP302`^W0"!(#[:$
+M*$`(``!(BY5`"0``2&G`T````$B+A!"(````#[90".L%NO____^`^O]T#0^V
+MPH"\*,8(``#_=49$B>AFP>@%#[?`BT2%7$2)Z8/A'TC3^*@!#X6B`@``0<9&
+M)`:^`````$R)]^@`````N@````!,B?9(B>_H`````.E[`@``#[;"2`^VG"C&
+M"```2&G;J````$B-G"N@`0``2(7_=`CWQ@```@!U!;\`````]D,*`@^$@0$`
+M`$$/M_5(B?I(B=_H`````$2)Z&;!Z`4/M\"+1(5<1(GI@^$?2-/XJ`$/A18"
+M``!!@'XD@0^%D0```$D/MU8R2(N%D`D``$C'!-``````00^W3C*)R&;!Z`4/
+MM\"#X1^Z`0```$C3XDB)T??1(8R%F`D``$$/MW8R2(V]6`\``.@`````3(GV
+M2(GOZ`````!)@[Z``````'0/28VV@````$B)[^@`````2(N%Z````$R)<`A)
+MB09(BTPD&$F)3@A,B;7H````Z7H!``!!OP````#&1"0@`$B+A?@```!(.40D
+M$'022(V5^````$'_QTB+`$@YPG7U183_=#Q(BUPD"$B)W^@`````2(U(\$B+
+M4PA(B4,(2(D82(E0"$B)`DPY\;@!````#[94)"`/1-"(5"0@0?[/=<F`?"0@
+M``^%`P$``$F-1A!(BTPD$$B+40A(B4$(28E.$$B)4`A(B0)$B>AFP>@%#[?`
+M1(GI@^$?N@$```!(T^()E(6<````Z<,```!!#[?U2(GZ2(G?Z`````!!OP``
+M``#&1"0@`$B+A?@```!(.40D$'022(V5^````$'_QTB+`$@YPG7U183_=#M(
+MBQPD2(G?Z`````!(C4CP2(M3"$B)0PA(B1A(B5`(2(D"3#GQN`$````/MDPD
+M(`]$R(A,)"!!_L]UR8!\)"``=4)!@'XD@70[28U&$$B+3"002(M1"$B)00A)
+MB4X02(E0"$B)`D2)Z&;!Z`4/M\!$B>F#X1^Z`0```$C3X@F4A9P```!F1#FE
+M.A(```^%C/G__TB-A?@```!(B<)(.87X````=%-!O`$```!F9I!(B=-(B=?H
+M`````$B-</`/MTXRB<AFP>@%#[?`@^$?3(GB2-/B2(G1]]$AC(6<````N@``
+M``!(B>_H`````$B)VD@YG?@```!UMDB)[^@`````N`$```!(@\1(6UU!7$%=
+M05Y!7\-F9F:09F:09F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@9L=$)`8`
+M`$B+K]`(``!!O`````!,C6PD!DB+10"+@%`!``")!0````!(BU4`B8)0`0``
+MA<!T(4B+10#'@%`!```!````26/<2(GOZ`````!!B$0=`&9FD$B!Q0`4``!!
+M_\1!@_P!?K&`?"0&`'4,N`````"`?"0'`'0%N`$```!(BUPD"$B+;"003(MD
+M)!A,BVPD($B#Q"C#9F9FD&9F9I!F9F:09F:005=!5D%505154TB#[`A(B?U)
+MB?6Y`````&8/MD=#B<9F@_@`=AM)#[95#69FD&:02(G02-/XJ`%U!__!9CG.
+M=^])@WU``'0@28MU0$B!QI````!(BWTHZ`````!)BW5`2(GOZ`````!)C45@
+M2(G"23E%8`^$9P$``$F)QF9F9I!(B=?H`````$B)PTB#>#@`#X0N`0``@'A[
+M``^$H````$&\`````&:#?5@`#X2/````0;\!````26/42(N%D`D``$B+--!(
+MA?9T9@^W1B!F.T,P=5QF/84`=U8/M\"`O"A`"```_W1)2(M5``^W1C)FP>@%
+M#[?`C02%``,``(F"<`$``$B+10`/MTXR@^$?3(GZ2-/BB9!T`0``QD8D(;H`
+M````2(GOZ`````!F9I!FD$'_Q`^W15A$.>`/CW?___](BT,X2,=`8`````#V
+M0T0$=2/^A>\3``!(B>_H`````$B+0S@/MG`!N@$```!(B>_H`````$B+0S@/
+MME`"#[9P`4C'QP````"X`````.@`````2(M3.$B+M=`(``"_`0```.@`````
+M2(M3.$B+M=`(``"_!@```.@`````2,=#.`````!!_DT.2(G>2(GOZ`````!,
+MB?)-.75@#X6@_O__2<=%0`````!(BT4`BXA8`0``B0T`````A<ET"DB+10")
+MB%@!``!(@\0(6UU!7$%=05Y!7\-F9F:09F9FD&9FD$%455-(B?U)B?2[````
+M`(!_0P!V'D@/ME8-9F:09F:02(G0B=E(T_BH`74'_\,X74-W[4'V1"0,`G4,
+M28U$)&!).40D8'5I3(GGZ`````"$P'102(GOZ`````!(B<9(A<!T34F-1"1@
+M2(M0"$B)<`A(B09(B58(2(DR0?Y$)`Y,B69(QD9`!<9&00#&1GD/N0$```"Z
+M`0```$R)Y^@`````ZPT/MO-(B>_H`````&:06UU!7,-F9F:09F9FD&9FD$B#
+M["A(B1PD2(EL)`A,B60D$$R);"083(ET)"!)B?U)B?1,B[:(````#[961TB)
+M_DR)]^@`````2(G%9D&#3"1.$+L`````9D$/MD5#B<9F@_@`=AY)#[96#69F
+MD&9FD$B)T(G92-/XJ`%U!__#9CG>=^UF@_L#=B=(C02=`````"7\_P,`28M5
+M`(N$`M`!``")!0````"I```0`'4WZR5(C02=`````"7\_P,`28M5`(N$`M`!
+M``")!0````"I```0`'40#[;S3(GOZ`````#IFP$``$F-1F!).49@#X2-`0``
+M2(7M#X2$`0``2`^V17E)QT3$6`````!(BU4(2(M%`$B)4`A(B0)(B>J^!@``
+M`$R)]^@`````@'U[`'09D$R)[^@`````OP$```#H`````(!]>P!UZ$B#?3@`
+M=%-(BT4X2,=`8`````#V140$=0]!_H7O$P``3(GOZ`````!(BU4X28NUT`@`
+M`+\!````Z`````!(BU4X28NUT`@``+\&````Z`````!(QT4X`````$'^3@Y(
+MB>Y,B>_H`````$F+10"+D%@!``")%0````"%TG0*28M%`(F06`$``$'&1"1"
+M`&9!@V0D3N^[`````$&`?"0[`'0A9D$/ME0D.P^WPTF+;,182(7M=`:`?4+_
+M=7W_PV8YVG?F0?9$)$Z`=`U,B>9,B>_H`````.MANP````!!@'PD.P!T0F9F
+M9I`/M\-)BVS$6$B%[70C]D5$`G0=2(M5.$F+M=`(``"_!@```.@`````@&5$
+M_69F9I#_PV9!#[9$)#MF.=AWPF9!QT0D3@(`08!D)$G]9F9FD$B+'"1(BVPD
+M"$R+9"003(ML)!A,BW0D($B#Q"C#9F:02(/L"$B+AH@```"Y`````(!_0P!V
+M&T@/ME`-9F:09I!(B=!(T_BH`74'_\$X3T-W[\9&0@SH`````$B#Q`C#D$%5
+M05154TB#[`A)B?R)];L`````2(T$K0````!)B<5!@>7\`P``OQ`G``#H````
+M`$"`_0-V&TF+!"1"BX0HT`$``(D%`````*D``!``=23K&4F+!"1"BX0HT`$`
+M`(D%`````*D``!``=0G_PV:!^_,!=K-`#[;U3(GGZ`````!,B>?H`````(GJ
+M#[;"2&O`:$P!X/:`:!(```%T#TB+L$@2``!,B>?H`````$B#Q`A;74%<05W#
+M9F9FD&9FD&9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD($B)%"1,BR</M_9)
+MBX0DD`D``$B+'/!!O0````"]`````&:!>SCA`74?#[9#.H/H$3P!=Q1(BV]`
+M2(72=4K&15$`ZT1F9I!FD$F+E"08"0``3(VJ>(8!`&:!>R"%`'<92`^W0R!*
+M#[:$($`(``!(:<"(`0``3(TL`DB#/"0`=0A!QH7@`````(![)(%U"X!G#/=F
+M9F:09F:02(,\)``/A?L```#&0R0`]H.6````(`^$%@(``$B+:VA(A>T/A`D"
+M``#VA:D````"="1(@[V@`````'0:2(-[2`!T$TB+O:````"+4S1(BW-(Z```
+M``!!#[9%:L'@"$B828N4),`0``"+A`)`"```B04`````B<+!ZA"(E9L```#!
+MZ!AFB860````00^V16K!X`A(F$F+E"3`$```BY0"1`@``(D5`````&8/ML)F
+MB864````#[;&9HF%E@```(G0P>@09@^VP&:)A9@```#!ZAB(E9H```!!#[9%
+M:L'@"$B828N4),`0``"+A`),"```B04`````9@^VP&:)A9(```#I+`$``(![
+M)(!U!,9#)"%(BS0D2,?'`````+@`````Z`````!F@7LXX0%U&`^V0SJ#Z!$\
+M`7<-2(GOZ`````#I[0```/9$)`,!='F+0S@E____`#WA`0X`=&I!#[9%:L'@
+M"$B828N4),`0``"+A`)`"```B04`````00^V16K!X`A(F$F+E"3`$```BX0"
+M1`@``(D%`````$$/MD5JP>`(2)A)BY0DP!```(N$`D@(``")!0````!(B=Y,
+MB>?H`````.MM@'PD`P!Y)$F+!"2+@%@!``")!0````")P87`=%!)BP0DB8A8
+M`0``ZT1FD(`\)`!X/(!\)`<`>35)BQ0D#[=#,F;!Z`4/M\"-!(4``P``B8)P
+M`0``28L4)`^W2S*#X1^X`0```$C3X(F"=`$``$B+7"0(2(ML)!!,BV0D&$R+
+M;"0@2(/$*,.0D)"0D$B#["A(B5PD"$B);"003(ED)!A,B6PD($B)\TF)_$0/
+MMFXD2(N7&`D``$B-JGB&`0!F@7X@A0!W&4@/MT8@2`^VA#A`"```2&G`B`$`
+M`$B-+`)%A.UU(&;'A<```````(![.!QU$8![.@)U"TB)WDB)[^@`````2(-[
+M>`!T$DB-<WA,B>?H`````&9FD&9FD$B)WDR)Y^@`````08#]!G0]2(V=6`$`
+M`$F+?"0H2(G>Z`````#'A5@!``"`A!X`2,>%:`$```````!(B:UP`0``28M\
+M)"A(B=[H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-F9I!F9I!F9I!(
+M@^PH2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@2(G]2(7_#X3#````2(M'2$R+
+M*$R)[^@`````2(G#3(UP6$B%P`^$I````$R)[^@`````28G$2(7`=1!(B=Y,
+MB>_H`````.F$````QD,EK`^W13!FB4,@3(EK*,>#E`````@```!,B6-X28M$
+M)!!(B4-(QT,T``@``$B-A>0```!(B4-0QD,P($C'@Z``````````QD,X',9#
+M.0'&0SH"QD,[",9#/`"^`````$R)]^@`````BU,T28MT)!A,B??H`````$B)
+MWDR)[^@`````2(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$*,-F9F:09F9F
+MD$%7059!54%455-(@^P(28G_28GU08G62(M'2$B+*$&\`````$2)X@^VP@^V
+MA"A`"```//]T2P^VP$AIV(@!``!(B=](`[T8"0``2(''S````+H(````28UU
+M#.@`````A,!T'DB+A1@)``!$B+0#!@$``$B+A1@)``!,B;P#&`$``$'^Q'F>
+M2(/$"%M=05Q!74%>05_#9F9FD&9F9I!F9I!(@^Q(2(E<)!A(B6PD($R)9"0H
+M3(EL)#!,B70D.$R)?"1`2(E\)!!,BW9(00^V1@)!B<5!P>4(9D$/MD8#00'%
+M00^WQ8/`!`^W5C0YT`^/VP```$F-7@A!OP````!!#[?%2HU$,`1(.=@/AK``
+M``"0#[8#A,`/B(4```"#X`\\!G5^]D,#P'0&]D,%P'5R]@,0=#!(C6L(0;P`
+M````@'L$`'9=#[93`TB)[DB+?"00Z`````!(@\4<0?_$1#AC!'?BZSU(C6L$
+M0;P`````@'L"`'8M00^VQXE$)`QF9I!FD(M4)`Q(B>Y(BWPD$.@`````2(/%
+M'$'_Q$0X8P)WXF:00?_'2`^V0P%(C5P8`D$/M\5*C40P!$@YV`^'4?___[X!
+M````2(M\)!#H`````$B+7"082(ML)"!,BV0D*$R+;"0P3(MT)#A,BWPD0$B#
+MQ$C#9F9FD&9F9I!F9F:09F:008G+2(M'2$R+"+D`````1(T4%@^VP4(/MH0(
+M0`@``#S_=#T/ML!)BY$8"0``3&G`B`$``$$XM!`&`0``=2)).;P0&`$``'48
+M18B4$`4!``!)BX$8"0``18B<``0!``"0_L%YK_/#9F9FD&9FD&9FD$B+?U"`
+MO\````!/=S=(#[:'P````$B-!$!(P>`$C106B)0XR0```$@/MH?`````2(T$
+M0$C!X`2(C#C(````_H?`````\\-F9F:09F:09F:005=!5D%505154TB#[`A)
+MB?](BTY(#[9!`L'@"&8/ME$#`=`/M\"#P`0/MU8T.=`/CP4!``!(C5$(QD0D
+M!P!!O@`````/MDD!#[9"`@!$)`=(#[9"`TB-5`($0?_&1#CQ<^9(B=5!O0``
+M``!!O@````!$.G0D!P^#I@```&9F9I`/MDT!00'-#[9%`#P!#Y3"/!</E,`)
+MT*@!=#5$B>LHRT0XZW-K08U&`40/MN!F9I`/MDT`#[;S1(GB3(G_Z`````#_
+MPT0XZW+GZT5F9I!FD$F+1U"`N,$````!=#-$B>LJ70%$..MS*$&-1@%$#[;@
+M#[9-``^V\T2)XDR)_^@`````_\-$..MRYV9F9I!F9I!(@\4$0?_&1#IT)`</
+M@E[___])BT=0QH#!`````;X'````3(G_Z`````!(@\0(6UU!7$%=05Y!7\-F
+M9F:09F:02(/L*$F)^4&X_____TB)Y_RY`@```+@`````\TBKQP<`````9CGQ
+M<U5F9F:09F:09H/Y#G<+#[?10@^V!`J(!!0/M\%"#[8$"(/H,#P)=R%!@/C_
+MN`````!$#T3`00^VP&O`"@^WT4("!`I$C4#0ZP9!@/C_=0?_P68Y\7*R00^V
+MP$B#Q"C#9F:09F:09F:008G12(M'2$R+`+H`````D`^VPD(/MH0`0`@``#S_
+M=#`/ML!)BX@8"0``2&G`B`$``$@YO`@8`0``=15`.+0(!0$``'4+1(B,"`<!
+M``##9I#^PGF\\\-F9F:09F:09F:0055!5%532(/L"$F)]4&)U$B+;U"[````
+M`&9F9I!F9I!(8\-(C01`2,'@!$B-C"C`````#[91"(#Z`0^7P(#Z%P^5P@^V
+MP(7"=#9$.&$)=3!!#[95`X#Z(;@@````#T/02&/[2(T\?TC!YP1(C;POV```
+M``^VTDF-=03H`````)#_PX/[3WZ92(/$"%M=05Q!7<-F9F:09F9FD&9FD&9F
+MD$%7059!54%455-(@^PH2(E\)"!!O0````!(BT9(2(E$)!@/MD`"B<'!X0A(
+MBU0D&&8/MD(#`<$/M\&#P`0/MU8T.=`/CQ<!``!,BV0D&$F#Q`C&1"07``^W
+MP4B+5"082(U$$`1,.>`/AN0````/M\%(C400!$B)1"0(#[?)2(D,)$$/MD0D
+M`L'@"&9!#[94)`-$C30"00^W]DF-?"0$Z``````\_W5I08G%00^WQDJ-7"`$
+M2#E<)`AV;4B+!"1(BU0D&$R-?!`$#[9#`L'@"&8/ME,#C2P"#[?U2(U[!.@`
+M````//]U#D&`_?]U.D&]`````.LR1#CH1`]"Z`^WQ4B-7!@$23G?=[_K'&9F
+MD&:0B<)$*.H/MM(/MG0D%TB+?"0@Z``````/ME0D%TR)YDB+?"0@Z`````#^
+M1"0700^WQDZ-9"`$3#ED)`@/AS#___^^`@```$B+?"0@Z`````!(@\0H6UU!
+M7$%=05Y!7\.04TB)^TB+3D@/MD$"P>`(9@^V40,!T`^WP(U0!`^W1C0YPG\?
+M2(N_(`$``$ACTDB)SN@`````O@````!(B=_H`````%O#9F9FD&9F9I!F9I!(
+M@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28GU28G^#[9&)(A$
+M)`=F@7X@A0`/AZL```!(#[=&(("\.$`(``#_#X28````9H-^(']W*D@/MH0X
+M0`@``$B+EQ@)``!(:<"(`0``2(M$$$A(#[9`"$@%P`@``.MMD&:!?B"!`'<N
+M2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(2`^V0`A(!<`(``#K
+M-D@/MT8@2`^VA#A`"```2(N70`D``$AIP-````!(BX00B````$@/MD`(2`7`
+M"```ZP6XOPD``$T/MGP&!DUI_Z@```!/C;PWH`$``$F+EA@)``!(C:IXA@$`
+M9D&!?2"%`'<920^W12!*#[:$,$`(``!(:<"(`0``2(TL`H!\)`<`#X4T`@``
+M9L>%P```````08!].!P/A2`"``!!#[9%.H/X`G11@_@"?PJ#^`%T)^D'`@``
+M@_@'9F9FD'0I@_@*#X7U`0``3(GN2(GOZ`````#IY0$``$R)[DB)[^@`````
+MZ=4!``!,B>Y(B>_H`````.G%`0``3(GN2(GOZ`````!(C9U8`0``2(M%2$B+
+M`$B+>"A(B=[H`````,>%6`$``("$'@!(QX5H`0```````$B)K7`!``!(BT5(
+M2(L`2(MX*$B)WN@`````D,9%0O]!O`````!!@'\.``^&KP```$F-7V!F9F:0
+M9F:02(G?Z`````!(B<5(BT,(2(EK"$B)70!(B44(2(DH@'U"_W1L@'U!`'5M
+M@+WA``````^$&0$``$@/MD5`J`)T#*@$=`BH`0^%T@```$@/MD5`J`)U#*@$
+M=`BH`0^%T@```$@/MD5`J`(/A.(```"H!`^$V@```*@!#X72````2(GN3(GW
+MZ`````#IP@```&:0QH7A`````$'_Q$4X9PX/AUS___]%.&<.=5=!O`````!!
+M@'\.`'9*28U?8&9FD&:02(G?Z`````!(B<5(BT,(2(EK"$B)70!(B44(2(DH
+M@'U"_W04#[9%03PB#Y3"/`T/E,`)T*@!=4I!_\1%.&<.=[]!QD<)_TR)_DR)
+M]^@`````@'PD!P`/A84```#K,@^V57E(BW502(GI3(G_Z`````#K'4B)[DR)
+M]^@`````9I#K#KX*````2(GOZ`````"028-]>`!T#$F-=7A,B??H`````$R)
+M[DR)]^@`````@'PD!P!T+&;_A<````!F@[W`````"G8.9L>%P```````Z4S^
+M__^^"@```$B)[^@`````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P
+M2(/$.,-F9F:09F9FD&9F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D
+M*$R)?"0P2(G]08GW2(M'2$R+*$R)[^@`````2(G#3(UP6$B%P`^$I````$R)
+M[^@`````28G$2(7`=1!(B=Y,B>_H`````.F$````QD,EK`^W13!FB4,@3(EK
+M*,>#E`````@```!,B6-X28M$)!!(B4-(QT,T``@``$B-A>0```!(B4-0QD,P
+M($C'@Z``````````QD,X',9#.0%$B'LZQD,[",9#/`"^`````$R)]^@`````
+MBU,T28MT)!A,B??H`````$B)WDR)[^@`````2(M<)`A(BVPD$$R+9"083(ML
+M)"!,BW0D*$R+?"0P2(/$.,-FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)
+M="0H3(E\)#!)B?U(BT=(3(LP2(N7(`$```^V0@*)P\'C"&8/MD(#`<,/M\.#
+MP`0]``@```^/S@```$R)]^@`````2(G%2(7`#X2Z````3(GWZ`````!)B<=(
+MA<!U$$B)[DR)]^@`````Z9H```!,C6582(MX$`^WVX/#!$ACTTF+M2`!``#H
+M`````,9%):Q!#[=%,&:)12!,B74HB5TT@XV4````$DF+1Q!(B45(3(E]>$F-
+MA>0```!(B450QD4P($C'A:``````````QD4X'<9%.1#&13H"#[;'B$4[B%T\
+MO@````!,B>?H`````(M5-$F+=QA,B>?H`````$B)[DR)]^@`````2(M<)`A(
+MBVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:09F9FD&9FD%-)B=)!
+MB<M(BT=(3(L`3(M/4+L`````#[;#0@^VE`!`"```@/K_=%@/ML))BX@8"0``
+M2&G`B`$``$@YO`@8`0``=3U`.+0(!0$``'4S183;=`U(BX0($`$``$F)`NLE
+M#[;"28N(&`D``$AIP(@!``!)BQ)(B90($`$``.L'9F:0_L-YD[L`````9F9F
+MD&9FD`^VPTB-!$!(P>`$2HT\"$B-C\`````/ME$(@/H!#Y?`@/H7#Y7"#[;`
+MA<)T,T`X<0EU+46$VW0,2(N'T````$F)`NLC#[;#2(T$0$C!X`1)BQ)*B90(
+MT````.L+9F9FD/_#@/M/=IE;PV9F9I!F9I!(@^PH2(E<)`A(B6PD$$R)9"08
+M3(EL)"!)B?R)\4B+ER`!```/MD("B<?!YPAF#[9"`P''#[?'@\`$/0`(``!_
+M9$"$]G0.00^VA"0(`0``B$(!ZPP/MD(!08B$)`@!``!(C4((2(D$)+L`````
+M#[?'2(U$$`1(.P0D=BI$#[;I#[?'2(UL$`0/MO-$B>E(B>),B>?H`````/_#
+M2(,$)`1(.RPD=^)(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#9I!(@^P82(E<
+M)`A(B6PD$$B)^XG52,<$)`````"`?T,!=#]`#[;VN0$```!(B>+H`````$B#
+M/"0`="=(BP0D@`B`0(3M=`M(BP0D@$@#(.L)D$B+!"2`8`/?2(G?Z`````!(
+MBUPD"$B+;"002(/$&,.02(/L&$B)'"1(B6PD"$R)9"002(GS28G\2(MN:&:!
+M?B"%``^'F````$@/MT8@@+PX0`@``/\/A(4```!F@WX@?W<B2`^VA#A`"```
+M2(N7&`D``$AIP(@!``!(BT002`^V4`CK86:!?B"!`'<G2`^W1B!(#[:$.$`(
+M``!(BY=H"0``2&G`R`\``$B+1!`(#[90".LR2`^W1B!(#[:$.$`(``!(BY=`
+M"0``2&G`T````$B+A!"(````#[90".L(9F:0NO____^Y_____V:!>R"%`'<.
+M2`^W0R!"#[:,($`(``"`^O]T(0^VPD*`O"#&"```_P^4PH#Y_P^4P`G0J`%U
+M!H![)`9U.DB#>W@`=!-(C7-X3(GGZ`````!F9F:09F:02(G>3(GGZ`````#'
+M15#_____2(GO_U5(ZW9F9I!F9I"`>R0`=3OV@Y0````(9F:0=!!(BWTPBU,T
+M2(MS2.@`````QT50`````$B#?3@`=`E(BU4XBT4@B0)(B>__54CK#\=%4/__
+M__](B>__54AFD$B#>W@`=`Q(C7-X3(GGZ`````!(B=Y,B>?H`````&:02(L<
+M)$B+;"0(3(MD)!!(@\08PV9F9I!F9I!F9I!F9I!(@^Q(2(E<)!A(B6PD($R)
+M9"0H3(EL)#!,B70D.$R)?"1`2(G]08G708G.3(E$)`A`B'0D%TB+1TA,BRA,
+MB>_H`````$B)PTB-0%A(B00D2(7;#X38````3(GOZ`````!)B<1(A<!U$$B)
+MWDR)[^@`````Z;@```#&0R6L#[=%,&:)0R!(BU0D"$B)4VA,B6LHQX.4````
+M"````$R)8WA)BT0D$$B)0TA$B7,T2(V%Y````$B)0U#&0S`@2,>#H```````
+M``#&0S@\QD,Y`@^V1"07B$,Z1(GXP>@0B$,[3(GZ#[;&B$,\1(A[/42)\,'H
+M$(A#/DR)\@^VQHA#/T2(<T#&0T$`O@````!(BSPDZ`````"+4S1)BW0D&$B+
+M/"3H`````$B)WDR)[^@`````2(M<)!A(BVPD($R+9"0H3(ML)#!,BW0D.$R+
+M?"1`2(/$2,-F9F:09F:09F:09F:02(/L2$B)7"082(EL)"!,B60D*$R);"0P
+M3(ET)#A,B7PD0$F)_(G308G.3(E$)`A`B'0D%TB+1TA,BSA,B?_H`````$B)
+MQ4B%P`^$[@```$R)_^@`````28G%2(7`=1%(B>Y,B?_H`````.G.````D$B-
+M15A(B00D28M]$$2)\DF+M"0@`0``Z`````#&126L00^W1"0P9HE%($B+5"0(
+M2(E5:$R)?2A$B74T@XV4````$DF+11!(B45(3(EM>$F-A"3D````2(E%4,9%
+M,"!(QX6@`````````,9%.#O&13D"#[9$)!>(13J)V,'H$(A%.P^VQXA%/(A=
+M/42)\,'H$(A%/DR)\@^VQHA%/T2(=4#&14$`O@````!(BSPDZ`````"+531)
+MBW482(L\).@`````2(GN3(G_Z`````!(BUPD&$B+;"0@3(MD)"A,BVPD,$R+
+M="0X3(M\)$!(@\1(PTF)T4B%_P^4PDB%]@^4P`G0J`%U$DV%R0^4PDB%R0^4
+MP`G0J`%T";@`````PV9FD&9!@?B%`'<.00^WP("\.$`(``#_=0:X`````,-!
+MQD$XX4'&03D!0<9!.A-F18E!($F)<2A)B8F@````N`$```##9F9FD&9F9I!F
+M9F:09F:02(M'"(M`!(D%`````(G"@<H```P`)?__\_]`A/:)T0]$R$B+1PB)
+M"$B+1PB)2`Q(BT<(B4@02(M'"(E(%$B+1PB)2!A(BT<(B4@$PY"0D)!,BU0D
+M($R+7"0P#[?'/1$G``!_0#T0)P``#XV!````/2(A``!T>CTB(0``9F:09I!_
+M$#T@(0``=&=F9F:09F:0ZV0]0"$``'17/40A``!FD'1.ZU(]@"<``&9F9I!F
+M9I!T/CV`)P``?PPM("<``(/X`G<SZRL]@)$``'0D/8"1``!_#SV")P``=!9F
+M9I!F9I#K%#V`E```=0UF9F:09F:0Q@9`Q@("Q@$$#[862(M$)!B($&9!QP*`
+M`&9!QP,``$'&`2!(BT0D"&;'```!#[862(M$)!"($&8/M@9F00,"9D$#`TB+
+M5"0H9HD"9D&)`$$/MQ)(BT0D.&:)$$$/MQ*#P@M(BT0D0&:)$,-F9I!FD$%7
+M059!54%455-(@^P828G_28G60(AT)!=(BR^[`````&:#?5@`#X:'`@``9F9F
+MD(G89L'H!0^WP(N$A9P```")V8/A'TC3^*@!#X57`@``#[?32(N%D`D``$B+
+M#-!(A<D/A$`"``"^`````(M!."7___\`/>$!$``/A<$```!-A?8/A1\"``!F
+M@7D@A0`/AYX```!(#[=!(("\*$`(``#_#X2+````9H-Y(']W)4@/MH0H0`@`
+M`$B+E1@)``!(:<"(`0``2(M$$$@/ME`(Z54!``!F@7D@@0!W*D@/MT$@2`^V
+MA"A`"```2(N5:`D``$AIP,@/``!(BT00"`^V4`CI(P$``$@/MT$@2`^VA"A`
+M"```2(N50`D``$AIP-````!(BX00B`````^V4`CI]@```+K_____Z>P```!F
+M9F:09H%Y((4`#X>5````2`^W02"`O"A`"```_P^$@@```&:#>2!_=R)(#[:$
+M*$`(``!(BY48"0``2&G`B`$``$B+1!!(#[90".M>9H%Y(($`=R=(#[=!($@/
+MMH0H0`@``$B+E6@)``!(:<#(#P``2(M$$`@/ME`(ZR](#[=!($@/MH0H0`@`
+M`$B+E4`)``!(:<#0````2(N$$(@````/ME`(ZP6Z_____V:!>2"%`'<Z2`^W
+M02"`O"A`"```_W0K2(NU&`D``&:!>2"%`'<52`^VA"A`"```2&G`B`$``$@!
+MQNL'2('&>(8!`$$X5PAU>4V%]G0+00^W1C!F.T$@=6F`?"07!G1/BU$X@>+_
+M__\`@?KA`1``=#Y(#[9&0*@"=#6H!'0QJ`%U+8"^X`````!FD'4B@?KA`0\`
+M="T/MD0D%XA!)+H!````2(G.3(G_Z`````#K$P^V1"07B$$D#[?S3(G_Z```
+M``#_PV8Y75@/AWW]__^`?"07@0^$AP$``$&\`````$B+E>@```!(C87H````
+M2#G0=`M!_\1(BQ)(.=!U]69%A>0/A%D!``!(C87H````2(G"2#F%Z`````^$
+M0@$``$F)Q4B)1"0(9F:09I!(B=-(B=?H`````$B)P4V%]G0E00^W1C!F.T$@
+M=!I(BT,(2(E+"$B)&4B)00A(B0A!_\SIY0```&:!>2"%``^'E0```$@/MT$@
+M@+PH0`@``/\/A((```!F@WD@?W<B2`^VA"A`"```2(N5&`D``$AIP(@!``!(
+MBT002`^V4`CK7F:!>2"!`'<G2`^W02!(#[:$*$`(``!(BY5H"0``2&G`R`\`
+M`$B+1!`(#[90".LO2`^W02!(#[:$*$`(``!(BY5`"0``2&G`T````$B+A!"(
+M````#[90".L%NO____]!.%<(=22+03@E____`#WA`0\`=!4/MD0D%XA!)$B)
+MSDB)[^@`````ZQ))BT4(28E-"$R)*4B)00A(B0A!_\QF187D=!)(BU0D"$@Y
+ME>@````/A<O^__](@\086UU!7$%=05Y!7\-F9F:09F9FD&9F9I!!N`````!F
+M@W]8``^&'0$``$R+CY`)``!!#[?`28L,P4B%R0^$]P```&:!>2"%``^'FP``
+M`$@/MT$@@+PX0`@``/\/A(@```!F@WD@?W<B2`^VA#A`"```2(N7&`D``$AI
+MP(@!``!(BT002`^V4`CK9&:!>2"!`'<G2`^W02!(#[:$.$`(``!(BY=H"0``
+M2&G`R`\``$B+1!`(#[90".LU2`^W02!(#[:$.$`(``!(BY=`"0``2&G`T```
+M`$B+A!"(````#[90".L+9F:09F:0NO____^X_P```&:!>2"%`'<.2`^W02!F
+M#[:$.$`(```/M\!(:<"(`0``2`.'&`D``$`X\G4:2`^V0$"H`701J`1T#;@!
+M````PV9F9I!F9I!!_\!F1#E'6`^'ZO[__[@`````PV9F9I!F9F:09F9FD$B+
+M1TA,BP!-BYB0$```0;H`````O@````!F08-X6`!V2$V+B)`)```/M]9)@SS1
+M`'0N28L,T8M!."7___\`/>$!$`!T&P^W1S!F.T$@=1%(B=!(P>`&9D8Y5!@(
+M=`MFD/_&9D$Y<%AWOV9!.7!8=`I!_\)F08/Z'W::00^WPF:0PV9F9I!F9F:0
+M9F9FD&9FD$B#?U``=!Y(BT=0Q@!P2(M'4$"(<`)(BT=0QD`'`$B+1U"(4`SS
+MPV9FD&9FD&9FD//#9F9FD&9F9I!F9I!F9I!)B?B)\DB)T8'A_P$``$B+AY`)
+M``!(@SS(`'0L2(L\R`^V1R5!#[:PW@```(GQT^!$#[?`#[?2N/__``#3X"'"
+M2(GX03G0=`6X`````//#D%532(/L"$B)]6:!?CCA`0^%K0````^V1CJ#Z!$\
+M`0^'G@```+C_````9H%^((4`=PU(#[=&(`^VA#A`"```B<!(:<#0````2(G#
+M2`.?0`D``(![1/]U3+@4````@+V8`````'0)#[:%F`````'`#[;`:<!`0@\`
+MB8.0````2,>#H`````````!(B9NH````2(VSD````$B+?RCH`````,9#1`!(
+MC4,H2(M0"$B):`A(B44`2(E5"$B)*OY#1>FH````N/\```!F@7T@A0!W#4@/
+MMT4@#[:$.$`(``")P$AIP(@!``!(B<-(`Y\8"0``BT4X)?___P`]X0$0`'1L
+M@'MX_W5,N!0```"`O9@`````=`D/MH68`````<`/ML!IP$!"#P")@R@!``!(
+MQX,X`0```````$B)FT`!``!(C;,H`0``2(M_*.@`````QD-X`$B-0R!(BU`(
+M2(EH"$B)10!(B54(2(DJ_D-[2(/$"%M=PV9F9I!F9F:09F9FD&9FD%-(B?.`
+M?GC_=!1(C;8H`0``2(M_*.@`````QD-X_UO#4TB)\X!^1/]T%$B-MI````!(
+MBW\HZ`````#&0T3_6\-(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!)B?Q(B?-F
+M@7XXX0$/A=8````/MD8Z@^@1/`$/A\<```"Y_P```&:!?B"%`'<-2`^W1B`/
+MMHPX0`@``(G(2&G`T````$B)Q4D#K"1`"0``@?G_````#X1B`0``_DU%3(UM
+M*$R)[^@`````2(G!2#G8=4M(B>Y,B>?H`````$PY;2@/A#8!``#'A9``````
+M+3$!2,>%H`````````!(B:VH````2(VUD````$F+?"0HZ`````#&140`Z0`!
+M``!(C54H2(M%*$B)2`A(B0%(B5$(2(E-*$B+4PA(BP-(B5`(2(D"Z=8```"0
+MN?\```!F@7L@A0!W#D@/MT,@0@^VC"!`"```B<A(:<"(`0``2(G%20.L)!@)
+M``"+0S@E____`#WA`1``#Y7`@?G_````#Y7"#[;`A<(/A((```#^37M,C6T@
+M3(GOZ`````!(B<%(.=AU1DB)[DR)Y^@`````3#EM('1:QX4H`0```"TQ`4C'
+MA3@!````````2(FM0`$``$B-M2@!``!)BWPD*.@`````QD5X`.LG9I!(C54@
+M2(M%($B)2`A(B0%(B5$(2(E-($B+4PA(BP-(B5`(2(D"2(M<)`A(BVPD$$R+
+M9"083(ML)"!(@\0HPV:02(/L&$B)'"1(B6PD"$R)9"002(G[2(GU2`^W1C!F
+M1`^VI#A`"```00^W]$AI]H@!``!(`[<8"0``2('&(`$``.@`````2`^W53!(
+M@[S30`0```!T'DB+A--`!```2(.X@`````!U#$C'A--`!````````$@/MT4P
+MQH080`@``/]!#[?T2(V[D`\``.@`````00^WQ$B+DQ@)``!(:<"(`0``@'P0
+M:O]T#$B--!!(B=_H`````$B)[DB)W^@`````00^WQ$B+DQ@)``!(:<"(`0``
+MQD000@!(BY,8"0``QD000P%(BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9FD&9F
+MD$%7059!54%455-(@^P(28G]08GW0;Z`````9F:09F:000^WQF9"#[:$*$`(
+M``!F/?\`#X3K````9D&!_H$`#X=\````#[?`2&G`R`\``$F)Q$T#I6@)``"]
+M`````$&`?"18``^&MP```$F-7"1(9I!(B=_H`````$B-2/!(BU,(2(E#"$B)
+M&$B)4`A(B0*+04`E`/__`#T``/\`=17V04,$=`](@WDX`'0(2(M!.$2(>`'_
+MQ4$X;"18=[7K8V9FD`^WP$AIP-````!(B<))`Y5`"0``O0````"`>CL`=D&0
+MB>D/ML%(BTS"6$B%R70DBT%`)0#__P`]``#_`'45]D%#!'0/2(-Y.`!T"$B+
+M03A$B'@!_\5`.&H[=\5F9I!FD$'_QT'_QF9!@?Z%``^&[O[__TTYK=`(``!U
+M$DF!Q0`4``!$B?Y,B>_HL_[__TB#Q`A;74%<05U!7D%?PV9F9I!32(G[2`^V
+M1EMF#[:T.$`(``#&A#A`"```_P^W]DB-OP`0``#H`````$B+N]`(``"^````
+M`.AF_O__6\-F9F:055-(@^P(2(G]2`^W1D!F#[:<.$`(``#&A#A`"```_P^W
+M\TB-O\@/``#H``````^WVTB+E4`)``!(:</0````@'P04/]T#$B--!!(B>_H
+M`````$B+O=`(``"^`````.C]_?__2(/$"%M=PV9FD&9FD+D`````NM````!(
+MB?AF9I"("$C_P$C_RG7VQD=$_\9'4/](C4<H2(E'*$B)1S##D$B#["A(B5PD
+M"$B);"003(ED)!A,B6PD($B)_4B-O\@/``#H`````+H`````A,`/A=$```!(
+MC;W(#P``Z`````!!B<6[@O___P^VPX"\*$`(``#_=1`XG>````!S#XB=X```
+M`.L'_\.`^X5VW+H`````@/N&#X2+````#[;#1(BL*$`(``!!#[?%3&G@T```
+M`$R)YT@#O4`)``#H`````$B+E4`)``!F#[;#9D&)1!1`@'U1`74/2(N%0`D`
+M`&9!QT0$3/__00^WW4B+A4`)``!(:=O0````QD0#0@!(BX5`"0``9L=$`TX`
+M`$B+O=`(``"^`````.C%_/__2(G:2`.50`D``$B)T$B+7"0(2(ML)!!,BV0D
+M&$R+;"0@2(/$*,-F9F:09F9FD&9F9I!F9I!(@^P(2`^V1@AF#[:T.,8(``#&
+MA#C&"```_P^W]DB!QS@0``#H`````$B#Q`C#9I"Y`````+J(`0``2(GX9F:0
+MB`A(_\!(_\IU]L9'>/_&1VK_QD=Z'TB-1R!(B4<@2(E'*,-F9F:09F:09F:0
+M9F:0055!5%532(/L"$B)_4B-OY`/``#H`````+H`````A,`/A3\!``!(C;V0
+M#P``Z`````!!B<6[`````&9FD&9FD`^VPX"\*$`(``#_=19F#[;#9CF%W```
+M`',-9HF%W````.L$_L-YV;H`````@/N`#X3P````#[;#1(BL*$`(``!!#[?%
+M3&G@B`$``$R)YT@#O1@)``#H`````$B+E1@)``!F#[;#9D&)1!0P2(N%&`D`
+M`$'&1`1"`$B+A1@)``!!QD0$9?](BX48"0``0<9$!&3_2(N%&`D``$'&1`1F
+M_TB+A1@)``!!QD0$:/](BX48"0``0<9$!&?_2(N%&`D``$'&1`1I_TB+A1@)
+M``!!QH0$X@````!(BX48"0``0<:$!`<!``#_2(GOZ`````!(BY48"0``28F$
+M%"`!``"`?5$!=0U(BX48"0``08!,!$0!00^WQ4AIP(@!``!(B<)(`Y48"0``
+M2(G02(/$"%M=05Q!7<-F9F:09F:09F:09F:055-(@^P(2(G]2(V_`!```.@`
+M````N@````"$P`^%&@$``$B-O0`0``#H`````(G'OH#___^)\@^VPH"\*$`(
+M``#_=1)`.+7?````<Q%`B+7?````ZPC_QD"`_H%VU[H`````0(#^@@^$SP``
+M`(GR#[;"0(B\*$`(```/M\=(:<#(#P``N0````"ZR`\``$@#A6@)``"("$C_
+MP$C_RG7V#[??2&G;R`\``$B)VD@#E6@)``!(C4(82(E"&$B)V$@#A6@)``!(
+M@\`82(E`"$B)VD@#E6@)``!(C4(H2(E"*$B)V$@#A6@)``!(@\`H2(E`"$B)
+MVD@#E6@)``!(C4)(2(E"2$B)V$@#A6@)``!(@\!(2(E`"$B+A6@)``!`B'0#
+M6TB+O=`(``"^`````.AN^?__2(G:2`.5:`D``$B)T$B#Q`A;7<-F9F:09F:0
+M9F:04TB)^TB-OS@0``#H`````+H`````A,`/A<L```!(C;LX$```Z`````")
+MQ[X`````B?(/ML*`O!C&"```_W410#AS3',30(AS3.L-9F:09I#_QD"`_@-V
+MV+H`````0(#^!`^$@0```(GR#[;"0(B\&,8(```/M\=(:<"H````N0````"Z
+MJ````$B-A!B@`0``B`A(_\!(_\IU]@^WUTAITJ@```!(`=I(C8+0`0``2(F"
+MT`$``$B)0`A(C8+H`0``2(F"Z`$``$B)0`A(C8(``@``2(F"``(``$B)0`A(
+M@<*@`0``0(AR"$B)T%O#9F:02(/L&$B)7"0(2(EL)!!(B?U(C8<(`0``N@``
+M``!(.8<(`0``="9(C;\(`0``Z`````!(B<-(B<?H`````$B)[^@`````2(E#
+M<$B)VDB)T$B+7"0(2(ML)!!(@\08PV:02(/L"$B-AP@!``!(BU`(2(EP"$B)
+M!DB)5@A(B3)(@WYP`'0,2(/&<.@`````9F:02(/$",-F9F:09F9FD&9FD$B#
+M[`A(C8<8`0``N@````!(.8<8`0``=!-(@<<8`0``Z`````#&0!``2(G"2(G0
+M2(/$",-F9F:09F9FD&9F9I!(BP9(@<<8`0``2(M7"$B)1PA(B3A(B5`(2(D"
+M2,<&`````,-F9F:09F9FD&9F9I!(@^P(2(V7*`$``+@`````2#F7*`$``'0(
+M2(G7Z`````!(@\0(PV9F9I!F9I!F9I!(BP9(@<<H`0``2(M7"$B)1PA(B3A(
+MB5`(2(D"2,<&`````,-F9F:09F9FD&9F9I!(@^P(2(V72`$``+@`````2#F7
+M2`$``'0B2(G7Z`````"^`````+F@````2(G"9I!`B#)(_\)(_\EU]4B#Q`C#
+M2(''2`$``$B+1PA(B7<(2(D^2(E&"$B),,-F9I!F9I!(@^P(2(V76`$``+@`
+M````2#F76`$``'0(2(G7Z`````!(@\0(PV9F9I!F9I!F9I!(BP9(@<=8`0``
+M2(M7"$B)1PA(B3A(B5`(2(D"2,<&`````,-F9F:09F9FD&9F9I!(@^P(2(V'
+M.`$``+H`````2#F'.`$``'072(''.`$``.@`````2,=`(`````!(B<)(B=!(
+M@\0(PV9F9I!F9F:02(L&2(''.`$``$B+5PA(B4<(2(DX2(E0"$B)`DC'!@``
+M``##9F9FD&9F9I!F9F:02(/L2$B)7"082(EL)"!,B60D*$R);"0P3(ET)#A,
+MB7PD0$B)_4F)]&:!?B"%``^'G````$@/MT8@@+PX0`@``/\/A(D```!F@WX@
+M?W<B2`^VA#A`"```2(N7&`D``$AIP(@!``!(BT002`^V0`CK96:!?B"!`'<G
+M2`^W1B!(#[:$.$`(``!(BY=H"0``2&G`R`\``$B+1!`(#[9`".LV2`^W1B!(
+M#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(````#[9`".L,9F9FD&9FD+C_
+M____#[;`3`^VM"C&"```36GVJ````$V-M"Z@`0``2(N5:`D``$R-NCBX#P!F
+M08%\)""%`'<:20^W1"0@2`^VA"A`"```2&G`R`\``$R-/`))BU0D2`^V0@&#
+M^!)T$#V1````#X0E`0``Z9`!``!)BP9(B40D"+T`````#[9""8A$)!</ME(:
+MB%0D%D&]`````$&`?@X`=C])C5Y@9I!(B=_H`````$B)Q4B+0PA(B6L(2(E=
+M`$B)10A(B2A,.7U0=0P/MD5Y03I$)"5T"I!!_\5%.&X.=\=)@WPD>`!T#TF+
+M="1X2(M\)`CH`````$R)YDB+?"0(Z``````/MI7"````C4(!B(7"````@/H#
+M=R:`?"06`'4?00^V5"0E2(MU4$&X`````+D"````3(GWZ`````#K.@^VE<(`
+M``"-0@&(A<(```"`^@)V)8!\)!8`=1[&14,"QD5"_X!E1/Y(B>Y(BWPD".@`
+M````Z:X````/MDPD%@^V5"073(G^3(GWZ`````#IE````&9F9I"Y`````$&]
+M`````$&`?@X`=CM)C5Y@2(G?Z`````!(B<%(BT,(2(E+"$B)&4B)00A(B0A,
+M.7E0=0L/MD%Y03I$)"5T"4'_Q44X;@YWR4@/MD%`J`)T&J@$=!:H`70200^V
+M5"0E2(MQ4$R)]^@`````28-\)'@`=`U)BW0D>$B)[^@`````3(GF2(GOZ```
+M``!(BUPD&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\)$!(@\1(PV9F9I!F9I!F
+M9I!F9I!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!)B?Q)B?5(BR](B>_H````
+M`$B)PTB%P'1Q2(GOZ`````!(B<)(A<!T84B->UC&0SCAQD,Y`<9#.A#&0R6[
+M9D$/MD5;9HE#($F+!"1(B4,HQT,TD````$B-0A!(B4-(2(E3>,9``0#&0A!`
+M2,>#H`````````"^`````.@`````2(G>2(GOZ`````!(BUPD"$B+;"003(MD
+M)!A,BVPD($B#Q"C#9F:09I!(@^PH2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@
+M28G\28GU08G62(LO2(GOZ`````!(B<-(A<!T=4B)[^@`````2(G"2(7`=&5(
+MC7M8QD,XX<9#.0'&0SH0QD,ENV9!#[9%6V:)0R!)BP0D2(E#*,=#-)````!(
+MC4(02(E#2$B)4WC&0`$0QD(00$2(<`E(QX.@`````````+X`````Z`````!(
+MB=Y(B>_H`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F:09F:0
+M2(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)_$F)]4&)UD&)
+MSTB++TB)[^@`````2(G#2(7`#X2#````2(GOZ`````!(B<)(A<!T<TB->UC&
+M0SCAQD,Y`<9#.A!$B',E9D$/MD5;9HE#($F+!"1(B4,HQT,TD````$B-0A!(
+MB4-(2(E3>,9``9'&0A!`1(AP"42(>`I(QX.@`````````+X`````Z`````!(
+MB=Y(B>_H`````+^@A@$`Z`````!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H
+M3(M\)#!(@\0XPV9FD&:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,
+MB7PD,$F)_$F)]TF)S4&)UDB++TB)[^@`````2(G#2(7`=0]!QH7A`````>F,
+M````9I!(B>_H`````$B)PDB%P'452(G>2(GOZ`````!!QH7A`````>ME2(U[
+M6,9#..'&0SD!QD,Z$$2(<R5F00^V1UMFB4,@28L$)$B)0RC'0S20````2(U"
+M$$B)0TA(B5-XQD`!$L9"$$!$B'`)2,>#H`````````"^`````.@`````2(G>
+M2(GOZ`````!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F
+MD%532(/L"$B)_4B)\V:!?B"%``^'F````$@/MT8@@+PX0`@``/\/A(4```!F
+M@WX@?W<C2`^VA#A`"```2(N7&`D``$AIP(@!``!(BT002&8/MD@(ZV!F@7X@
+M@0!W*$@/MT8@2`^VA#A`"```2(N7:`D``$AIP,@/``!(BT00"&8/MD@(ZS!(
+M#[=&($@/MH0X0`@``$B+ET`)``!(:<#0````2(N$$(@```!F#[9(".L%N?\`
+M``"^_P```&:!>R"%`'<.2`^W0R!F#[:T*$`(``!F@?G_`'0<#[?!@+PHQ@@`
+M`/\/E,)F@?[_``^4P`G0J`%T$$B)WDB)[^@`````Z8@````/M\%(#[:\*,8(
+M``!(:?^H````2(V\+Z`!``!F#[93.V8/MD,\P>`(`<)F@>+_`0^V0SV#^`%T
+M!8/X"'5`#[?22(N%D`D``$B+!-!(.T-H=2P/MT@RB<IFP>H%#[?2@^$?2,?`
+M_O___TC3P"%$E5Q(BT-H#[=P,N@`````D$B)WDB)[^@`````2(/$"%M=PV9F
+M9I!F9F:09F:09F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD
+M,$F)_4F)]$&)UTB++T@/MT8@2`^VA"A`"```2&G`B`$``$F)QDP#M1@)``!(
+MB>_H`````$B)PT$/MU0D,HG09L'H!0^WP(M$A5R)T8/A'TC3^*@!#X6I````
+M2(7;#X2@````2(U[6$$/MD0D)0^VC=X```#3X`G0QD,XX<9#.0'&0SH/B$,[
+M9L'H"(A#/$2(>SU)BX;4````2(E#/DR)8VC&0R6J00^W1C!FB4,@28M%`$B)
+M0RC'0S0`````2,=#2`````!(QX.@`````````+X`````Z`````!(B=Y(B>_H
+M`````$$/MTPD,HG*9L'J!0^WTH/A'[@!````2-/@"4257$B+7"0(2(ML)!!,
+MBV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F:09F:09F:02(/L*$B)'"1(B6PD
+M"$R)9"003(EL)!A,B70D($F)_$B+1TA,BS!,B??H`````$B)Q4B%P'4.0<:$
+M).$````!Z:,```!,B??H`````$F)Q4B%P'4<0<:$).$````!2(GN3(GWZ```
+M``#K?69FD&9FD$B-75C&13@EQD4EJT$/MT0D,&:)12!,B74HQT4T"````,>%
+ME`````@```!)BT402(E%2$B-0`A(B450QD4P)$R);7A(QX6@`````````+X`
+M````2(G?Z`````!)BW48N@@```!(B=_H`````$B)[DR)]^@`````2(L<)$B+
+M;"0(3(MD)!!,BVPD&$R+="0@2(/$*,-F9F:09F9FD&9F9I!(@^PH2(D<)$B)
+M;"0(3(ED)!!,B6PD&$R)="0@28G\2(M'2$R+,$R)]^@`````2(G%2(7`=0Y!
+MQH0DX0````'IJP```$R)]^@`````28G%2(7`=1Q!QH0DX0````%(B>Y,B??H
+M`````.F"````9F:02(U=6,9%.)[&13D0QD5%(,9%):M!#[=$)#!FB44@3(EU
+M*,=%-"````#'A90````(````28M%$$B)14A,B6UX2(U`($B)15#&13`D2,>%
+MH`````````"^`````$B)W^@`````28MU&+H@````2(G?Z`````!(B>Y,B??H
+M`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F9FD$B#[#A(B5PD
+M"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?Q!B?9(BT=(3(LH3(GOZ```
+M``!(B<-(A<!U$4'&A"3A`````>FZ````9F:03(GOZ`````!(B<5(A<!U($'&
+MA"3A`````4B)WDR)[^@`````Z8X```!F9F:09F:03(U[6,9#.!)%A/9T$\9#
+M.0'&0SJ`QD,\0.L)9F:09I#&0SPDQD,EJT$/MT0D,&:)0R!,B6LHQT,T8```
+M`,>#E`````@```!(BT402(E#2$B):WA(QX.@`````````+X`````3(G_Z```
+M``!(BW48NF````!,B?_H`````$B)WDR)[^@`````2(M<)`A(BVPD$$R+9"08
+M3(ML)"!,BW0D*$R+?"0P2(/$.,-F9I!F9I!(@^PH2(D<)$B);"0(3(ED)!!,
+MB6PD&$R)="0@2(G[2(M'2$R+,$R)]^@`````2(G%0;P`"```2(7`=0S&@^$`
+M```!Z<$```!,B??H`````$F)Q4B%P'48QH/A`````4B)[DR)]^@`````Z9H`
+M``"09D&!_``!N/\```!$#T/@QD4X&L9%.0C&13H(QD4[`$2(93S&13T`QD4E
+MJP^W0S!FB44@3(EU*$4/M^1$B64TQX64````"````$F+51!(B55(1(G@2`'0
+M2(E%4,9%,"1,B6UX2,>%H`````````!(C5U8O@````!(B=_H`````$F+=1A$
+MB>)(B=_H`````$B)[DR)]^@`````2(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@
+M2(/$*,-F9F:09F:09F:02(/L&$B)'"1(B6PD"$R)9"0028G\2(M'2$B+*$B)
+M[^@`````2(G#2(7`=0M!QH0DX0````'K7\9`.!7&0"6K00^W1"0P9HE#($B)
+M:RBY`0```+H!````2(G>2(GOZ`````"$P'4:2(G>2(GOZ`````!!QH0DX0``
+M``'K&F9F9I!(QX.@`````````$B)WDB)[^@`````2(L<)$B+;"0(3(MD)!!(
+M@\08PV9F9I!F9I"Z!````$`/ML>#^!=W1XG`_R3%`````(/").LY@\(XD.LS
+M@\(0ZRZ#PASK*8/"2)#K(X/"'.L>@\(\ZQF#PB20ZQ.#PACK#H/"%.L)@\)(
+MD.L#@\(PB=##9F9FD&9F9I!(@^P82(E<)`A(B6PD$$B)_4B)\X!^:O]T$P^V
+M=FI(BS_H`````,9#:O_^341(BUPD"$B+;"002(/$&,-F9F:02`^V1D"H`G0,
+MJ`1T"*@!#X3K````@'YJ_P^%X0```$B+!XN`&`$``(D%`````$&)P;D`````
+MN`$```!F9I!FD$&)P$'3X$6%R'4YB$YJ2(L71(G(1`G`B8(8`0``2(L'BX!8
+M`0``B04`````08G!12'!#X1_````2(L'1(F(6`$``.MS_\&`^1]VM4B+!XN`
+M'`$``(D%`````$&)P;D`````N`$```!!B<!!T^!%A<AU/HU!((A&:DB+%T2)
+MR$0)P(F"'`$``$B+!XN`8`$``(D%`````$&)P44AP7092(L'1(F(8`$``.L-
+M9F:09F:0_\&`^1]VL/Y'1&9FD&9FD//#9F9FD&9F9I!F9I!F9I!(@^P82(E<
+M)`A(B6PD$$B)_4B)\X!^4/]T$P^V=E!(BS_H`````,9#4/_^341(BUPD"$B+
+M;"002(/$&,-F9F:0@'Y0_P^%U@```$B+!XN`&`$``(D%`````$&)P;D`````
+MN`$```!!B<!!T^!%A<AU-8A.4$B+%T2)R$0)P(F"&`$``$B+!XN`6`$``(D%
+M`````$&)P44AP71]2(L'1(F(6`$``.MQ_\&`^1]VN4B+!XN`'`$``(D%````
+M`$&)P;D`````N`$```!F9F:09F:008G`0=/@187(=36(3E!(BQ=$B<A$"<")
+M@AP!``!(BP>+@&`!``")!0````!!B<%%(<%T$TB+!T2)B&`!``#K!__!@/D?
+M=KG^1T1F9I!F9I#SPV9F9I!F9F:09F:09F:005154TF)_$B+'[T`````9H-[
+M6``/AB(!``!F9I!F9I`/M]5(BX.0"0``2(,\T``/A/L```!!#[9,)`A(BP30
+M9H%X((4`#X?%````2`^W4""`O!I`"```_P^$L@```&:#>"!_=RU(#[:$&D`(
+M``!(BY,8"0``2&G`B`$``$B+1!!(#[9`"#G(#X2+````Z9X````/M]5(BX.0
+M"0``2(L$T&:!>""!`'<K2`^W0"!(#[:$&$`(``!(BY-H"0``2&G`R`\``$B+
+M1!`(#[9`"#G(=$?K70^WU4B+@Y`)``!(BP302`^W0"!(#[:$&$`(``!(BY-`
+M"0``2&G`T````$B+A!"(````#[9`"#G(=`OK(9"!^?\```!U&`^WQ4B+DY`)
+M``!(BSS"O@````#H`````/_%9CEK6`^'Y/[__UM=05S#9F9FD&9F9I!F9F:0
+M9F:02(M6<$B%TG0<2(M&.$B)0AA(BT9`2(E"($B+1DA(B4(HQD(0`?/#9F:0
+M9F:09F:02(M6<$B%TG082(M"&$B)1CA(BT(@2(E&0$B+0BA(B49(\\-F9F:0
+M9F:09F:09F:055-(@^P(2(G]2(GS2#E^*`^$R@```(!^)``/A:<````/MD8X
+M@_@5=`F#^%4/A94```!(BU-P2(72#X2(````@'H0`0^%?@```&:!>ACA`9!U
+M=4B+C1@)``!(C;%XA@$`9H%[((4`=QE(#[=#($@/MH0H0`@``$AIP(@!``!(
+MC30!#[9"&H/X!W0?@_@'?P>#^`9T'NLQ@_@,9F9FD&9FD'0@@_@-=!+K'F:#
+M9F+]9I#K%6:#3F("ZPYF@V9B]V:0ZP5F@TYB"$B#>W@`=!)(C7-X2(GOZ```
+M``!F9I!F9I!F@7LXX0$/A68!``!F@7L@A0`/AYP```!(#[=#(("\*$`(``#_
+M#X2)````2(N5&`D``$B-LGB&`0!F@7L@A0!W%$@/MH0H0`@``$AIP(@!``!(
+MC30"@'LD`'59#[9#.H/X!W0@@_@'?PF#^`9T)&:0ZT*#^`QT.(/X#69FD&9F
+MD'07ZS!F@V9B_69F9I!F9I#K(F:#3F("ZQMF@V9B]V:0ZQ(/M\'K8@^WP>FG
+M````9H-.8@AF@7LXX0$/A;(```"`>SH+#X6H````2(GN#[=+(`^WT0^V14;_
+MR/_!.<)])`^V14:-4/]F@?F%`'<-#[?!@+PP0`@``/]UIP^WP?_!.=!\X[C_
+M````9CW_`'1?2(GN#[=+(`^WT0^V14;_R/_!.<)]+`^V14:-4/]F9F:09H'Y
+MA0!W$0^WP8"\,$`(``#_#X5?____#[?!_\$YT'S?N/\```!FB4,@QD,D@$B)
+MWDB)[^@`````Z3(!``#&0R0`2#EK*'0G2(M#<$B%P)!T'8!X$`%U"TB)WDB)
+M[^@`````2(US<$B)[^@`````2(.[@`````!T#TB-LX````!(B>_H`````$B+
+M>RA(B=[_DZ````!F@7LXX0%U8P^V0SJ#Z!$\`7=8NO\```!F@7L@A0!W#4@/
+MMT,@#[:4*$`(``"!^O\````/A*(```")T$AIP-````!(B<9(`[5`"0``@'Y%
+M``^%A0```(!^4/]T?TB)[^@`````ZW5F9I!FD+K_````9H%[((4`=PU(#[=#
+M(`^VE"A`"```B=!(:<"(`0``2(G&2`.U&`D``(M#."7___\`/>$!$``/E<"!
+M^O\````/E<(/ML"%PG0C9H%[..$!=0L/MD,Z@^@1/`%V$(!^>P!U"DB)[^@`
+M````9I!(@\0(6UW#9F:09F:09F:02(/L&$B)7"0(2(EL)!!(B?M(B?4/MU8R
+MB=!FP>@%#[?PB=&#X1](Q\#^____2-/`(42W7&:!^O\/=$4/M_I(BXN0"0``
+M2(,\^0!T-$C'!/D`````(82SF`D```^W\DB-NU@/``#H`````$B)[DB)W^@`
+M````2(GN2(G?Z`````!(BUPD"$B+;"002(/$&,.005132(/L"$F)]$B+GY`0
+M``!(@<=8#P``Z`````")Q@^WP$C!X`9(`=A)B00DN0````"Z0````(@(2/_`
+M2/_*=?8/M\9(@\0(6T%<PV9F9I!!N`````"X`````$B#?T``=%OK#$F)P.LS
+M9F9FD&9FD$B+=T"Y`````&9F9I!F9I`/ML%(@WS&6`!T"DB+1,98.%!Y=,__
+MP8#Y!';D2(M'0&:!>$"%``^6P$V%P`^5P@^VP(7"N`````!)#T7`\\.02(/L
+M($B)'"1(B6PD"$R)9"003(EL)!A)B?Q)B<UF#[;ZP>8(C3P^O@````!!@'PD
+M,``/A.@```!)@WPD4``/A-P```!!BX0DE````*@)N`$````/1/"[`````$C'
+MQ0`````/MLN)^&8C1,T`9CM$S0`/A9D````/MD3-!3P##Y3"/`</E,`)T*@!
+M=`=`.'3-!'5]0<9$)"0@#[;;#[94W08/MG3=!4R)Y^@`````28M4)%`/MD3=
+M!XA"#4V%[70[28M-`$F+1"102(G*2,'J((E0`TF+1"10@`B`0?:$))8````$
+M=!5(A=)T$$F+1"10B4@(28M$)%"`('])BU0D4$$/MD0D,(/H!XA"!^L29I#_
+MPX#[#P^&1____V9FD&:02(L<)$B+;"0(3(MD)!!,BVPD&$B#Q"##9F9FD&9F
+M9I!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!(B?U(B?-F@7X@A0`/AY8```!(
+M#[=&(("\.$`(``#_#X2#````9H-^(']W(D@/MH0X0`@``$B+EQ@)``!(:<"(
+M`0``2(M$$$@/ME`(ZU]F@7X@@0!W)T@/MT8@2`^VA#A`"```2(N7:`D``$AI
+MP,@/``!(BT00"`^V4`CK,$@/MT8@2`^VA#A`"```2(N70`D``$AIP-````!(
+MBX00B`````^V4`CK!I"Z_____[[_````9H%[((4`=PY(#[=#(&8/MK0H0`@`
+M`(#Z_P^$EP````^VRH"\*<8(``#_#Y3"9H'^_P`/E,`)T*@!=7N`>R0&='5,
+M#[:D*<8(``!-:>2H````38VD+*`!```/M\9(:<"(`0``28G%3`.M&`D``(![
+M.@%U)[\*````Z`````!(B=Y(B>_H`````+H"````3(GN3(GGZ`````#K'+_T
+M`0``Z`````!(B=Y(B>_H`````&9F9I!F9I!(BUPD"$B+;"003(MD)!A,BVPD
+M($B#Q"C#9F9FD&9FD$B#["A(B5PD"$B);"003(ED)!A,B6PD($F)](G52(L?
+M2(G?Z`````!(B<)(A<!T7\9`..'&0#D!0(AH.L9`.P]!#[=$)#!FB4(@2(E:
+M*,="-`````!(QT)(`````$C'@J``````````2(G62(G?Z`````!`@/T!=0R_
+M!0```.@`````ZPJ_4,,``.@`````2(M<)`A(BVPD$$R+9"083(ML)"!(@\0H
+MPV9F9I!F9F:055-(@^P(2(G]2(GS9H%^((4`#X>8````2`^W1B"`O#A`"```
+M_P^$A0```&:#?B!_=R)(#[:$.$`(``!(BY<8"0``2&G`B`$``$B+1!!(#[9(
+M".MA9H%^(($`=R=(#[=&($@/MH0X0`@``$B+EV@)``!(:<#(#P``2(M$$`@/
+MMD@(ZS)(#[=&($@/MH0X0`@``$B+ET`)``!(:<#0````2(N$$(@````/MD@(
+MZPAF9I"Y_____[[_____9H%[((4`=PU(#[=#(`^VM"A`"```@/G_="$/ML&`
+MO"C&"```_P^4PD"`_O\/E,`)T*@!=0:`>R0&=2!(@WMX`'0,2(US>$B)[^@`
+M````2(G>2(GOZ`````#K:P^VP4@/MKPHQ@@``$AI_Z@```!(C;POH`$``(GR
+M#[;"2&G`B`$``$B)QD@#M1@)``"`>R0`=`JZ`0```.@`````2(-[>`!T$TB-
+M<WA(B>_H`````&9F9I!F9I!(B=Y(B>_H`````&9FD&:02(/$"%M=PV9FD&9F
+MD&9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?])B?1,
+MBS=,B??H`````$B)Q4B%P`^$C@```$R)]^@`````28G%2(7`=1%(B>Y,B??H
+M`````.MQ9F9FD$B-75C&13CAQD4Y`<9%.@Y!#[=$)#!FB44@9D&#9"1@]TF+
+M!TB)12C'130`"```28M%$$B)14A,B6UX2,>%H`````````"^`````$B)W^@`
+M````BU4T28MU&$B)W^@`````2(GN3(GWZ`````!(BUPD"$B+;"003(MD)!A,
+MBVPD($R+="0H3(M\)#!(@\0XPTB#[!A(B1PD2(EL)`A,B60D$$B)_4&)]$B+
+M1TA(BQA(B=_H`````$B)PDB%P'1$QD`X&\9`.0%$B&`\#[=%,&:)0B#&@I@`
+M```/2(E:*,="-`````!(QT)(`````$C'@J``````````2(G62(G?Z`````!(
+MBQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D
+M$$B)_4B+1TA,BR!,B>?H`````$B)PTB%P'1P3(GGZ`````!(B<)(A<!U%,:%
+MX0````%(B=Y,B>?H`````.M,QD,X``^W13!FB4,@QH.8````#TR)8RC'0S0`
+M````2,=#2`````!(BT(02(E#4,9#,"1(B5-X2,>#H`````````!(B=Y,B>?H
+M`````$B+'"1(BVPD"$R+9"002(/$&,.0059!54%455-)B?Y)B?5(B=/&0D,!
+MQD)"`+X&````3(GOZ`````!(@WM0`'062(M3&$B+0Q!(B5`(2(D"2(M#4/Y(
+M6(![>P!T'V9F9I!F9I!,B??H`````+\!````Z`````"`>WL`=>A(@[L8`0``
+M`'0>#[:S!0$``$B+NQ@!``"Z`0```.@`````9F:09F:02(-[4`!T&0^V<WE(
+MBWM0N@$```#H`````&9F9I!F9I!(@WLX``^$F0```$B+:SA(@[V``````'5[
+M2(.]B`````!U<?9#1`1U)$'^AN\3``!,B??H`````$B+0S@/MG`!N@$```!,
+MB??H`````$B+0S@/ME`"#[9P`4C'QP````"X`````.@`````2(M3.$F+MM`(
+M``"_`0```.@`````2(M3.$F+MM`(``"_!@```.@`````2,=#.`````!(QT5@
+M`````$B#>U@`=!)(BU-82`^V0WE(QT3"6`````!(BU,(2(L#2(E0"$B)`D'^
+M30Y(B=Y,B??H`````$&`?0G_=%5!O`````!!@'T.`'8X28UM8$B)[^@`````
+M2(G#2(M%"$B)70A(B2M(B4,(2(D8@'M"_W4+0?_$13AE#G?4ZP9%.&4.=Q!!
+MQD4)_TR)[DR)]^@`````6UU!7$%=05[#D(GP#[;`2(T$P$C!X`<%8%<``(D'
+MPV9F9I!F9F:09F:008G02(GYOP````")\DB)R$B%TG0+0(@X2/_`2/_*=?6)
+M,8GR2('J8%<``$BXC^,XCN,XCN-(]^)(P>H*B%$$1#C"=@1$B$$$N@````"`
+M>00`=A\/ML+&1`$'_TB-!,!(P>`'QH0(Q%<``/W_PCA1!'?AQD$&`,9!!0"Z
+M`````)`/ML)(:<"P````2(V$"`!"``#&0`L!B%`*_\*`^A]VX//#9F9FD&9F
+M9I!F9I!F9I!!5%5328GT2(G[O0````"`?P0`=D.)Z@^VPDB-!,!(P>`'2`'8
+M@+C$5P``_70B2(VXO%<``+H(````3(GFZ`````"$P'0*0`^VQ>L19F9FD/_%
+M0#AK!'>]N/\```!;74%<PV9F9I!F9F:09F:09F:04TB)^^@`````N@D````\
+M_W03#[;`2(T$P$C!X`</MI089E<``(G06\-F9F:09F:02(/L*$B)7"0(2(EL
+M)!!,B60D&$R);"0@28G]2(GS2(VVD````$F)W$B+JY@```"`?08`#X1.`0``
+M2(GOZ`````")P3S_#X0\`0``#[9#`8/X`71P@_@!?PR%P'0H9F:0Z2(!``"#
+M^!`/A)$````]D`````^$U0```&9F9I!F9I#I`@$``("]"T(```!F9F:0#X7Q
+M````QH4+0@```?Y-!@^VT4&Y`````$&X`````+D`````3(GN2(GOZ`````#I
+MPP```("]"T(````/A;8```#&A0M"```!_DT&#[;10;D`````0;@`````N0$`
+M``!,B>Y(B>_H`````.F(````N@$````/ML)(:<"P````2(V$*`!"```X2`AU
+M"P^V0`E!.D0D"70'_\*`^A]VU_Y-!@^VT4V)X44/MD0D";D0````3(GN2(GO
+MZ`````#K.4@/MH.J````2&G`L````,:$*`M"```!_DT&#[;10;D`````0;@`
+M````N9````!,B>Y(B>_H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,-!
+M54%455-(B?5)B=5-B<Q!B<F[``````^VPTAIP%`0``!(.6PX('5HN0`````/
+MML-(:?!0$```#[?!2,'@!4@!\$R-%#A-C5I`00^V0PR$P`^4PCSP#Y3`"="H
+M`70B28EJ,$V):CAF18E#`D6(2D!)BP0D28E"1$'&0PS_ZQ)FD/_!9H'Y@0!V
+MKF9F9I!F9I#_PX#[`W:`6UU!7$%=PV:02(/L"$F)\XG02(G^3(V78$$``,:'
+M"T(```!!N0````!!N)````!,B=%F9F:09F:01(@)2/_!2?_(=?5!QD(!`$'&
+M`D!(QX8`0@```````$B)OOA!```/ML!(C03`2,'@!TB+A#"\5P``2(F&\$$`
+M`$B!QF!!``!,B=_H`````$B#Q`C#9F9FD&9F9I!F9F:02(/L"$F)\XG02(G^
+M3(V78$$``,:'"T(```!!N0````!!N)````!,B=%F9F:09F:01(@)2/_!2?_(
+M=?5!QD(!`4'&`D!(QX8`0@```````$B)OOA!```/ML!(C03`2,'@!TB+A#"\
+M5P``2(F&\$$``$B!QF!!``!,B=_H`````$B#Q`C#9F9FD&9F9I!F9F:055-(
+M@^P(2(GUB=-)B?FZ`0````^VPTB-!,!)B<-)P>,'#[;"2&G`L````$J-A`@`
+M0@``@'@+`0^%LP```(A8"(A("<9`"P!(#[9`"DAIP+````!.C90(8$$``$&X
+M`````+Z0````3(G09F9FD&9FD$2(`$C_P$C_SG7U0<9"`1!!Q@)`08A*"0^V
+MTDAITK````!,`<I(C8H`0@``2`^V00I(:<"P````3`'(2,>``$(```````!(
+MB;CX00``2XN$"[Q7``!(B8+P00``2`^V<0I(:?:P````2HVT#F!!``!(B>_H
+M`````.L69F:09F:0_\*`^A\/AB;___^X`0```$B#Q`A;7<-F9I!F9I!F9I!!
+M54%455-(@^P(28GU28G43(G-08G)1(G!28GZN@$````/MMT/ML)(:<"P````
+M3`'02(VP`$(``(!^"P$/A9(```#&1@L`3(F0^$$``$@/MD8*2&G`L````$Z-
+MG!!@00``0;@`````OI````!,B=B01(@`2/_`2/_.=?5!QD,!D$'&`T!!B%L&
+M08A+!T6(2PE(BT4`28E#$`^V\DAI]K````!,`=9(QX8`0@```````$B)OOA!
+M``!)BT0D7$B)AO!!``!(@<9@00``3(GOZ`````#K$/_"@/H?#X9%____N`$`
+M``!(@\0(6UU!7$%=PY!32(GS28G31(G"2(G^3(V78$$``$&Y`````$&XD```
+M`$R)T$2("$C_P$G_R'7U0<9"`1-!Q@)`#[;&08A"!D&(4@=!B$H)2,>&`$(`
+M``````!(B;[X00``28M#7$B)AO!!``!(@<9@00``2(G?Z`````!;PV9F9I!F
+M9F:09F9FD`^VT@^W3%9X_\%FB4Q6>&8/MD8"`<@/M\##9F:09F:0N@$```")
+MT$AIP+````"`O#@+0@```74(B=##9F:09I#_PH/Z'W;>N/__``!F9F:0PV9F
+M9I!F9F:09F9FD&9FD+D!````B<A(:<"P````2(V$.`!"``!`.'`(=0HX4`EU
+M!<9`"P'#_\&#^1]F9I!FD';3\\-F9F:09F9FD&9F9I!(@^Q82(E<)"A(B6PD
+M,$R)9"0X3(EL)$!,B70D2$R)?"1028G_2(ET)!A!B=9$B$0D%TF)_$V)S0^V
+MPDB-!,!(P>`'@+PXQ%<``/VX_?___P]$R`^VP8/X$`^$D0(``(/X$'\<A<`/
+MA*0```"#^`&0#X0]`0``Z04)``!F9I!FD#WB````#X1F"```/>(```!_$SV0
+M````#X17!P``9F:0Z=L(```]_P```&9FD&9FD`^%R@@```^VPDB-!,!(P>`'
+MQH0XQ%<``/^`OPM"```!=1]!#[;62(MT)!CH`````(7`#X68"```0?Y'!NF/
+M"```1(GQ#[;!QD0'!P%(BU0D&$B)5,<0Z74(``!F9I!FD$B-CV!!``"`OPM"
+M```!=5`/ML)(C03`2,'@!T@!^`^V40F(D&)7``!(!<!7```/ME$*@^(!B%`%
+MQD`$`$$/MM9(BW0D&.@`````A<`/A1X(``!!_D<&Z14(``!F9I!FD`^VPL9$
+M!P<!2(M4)!A(B53'$.GY!P``0<9$!`?_#[;228MTQ!!!N0````!!N`````"Y
+M_P```$R)_^@`````Z<T'``"[`````$B-EV!!``!$B?$/ML%(C03`2,'@!TB-
+M##@/MD(RB(&R5P``#[=",&:)@;!7``!(BT(H2(F!H%<``$B+0@Q(B8%P5P``
+M2(M"%$B)@8!7``!(BT(<2(F!B%<``(M")(F!F%<``,:!Q%<```&`?P8?#X14
+M!P``@+EB5P```'1]00^VQHE$)!!$B?(/ML)(C03`2(G%2,'E!TF)S4R-M#VP
+M5P``9F9FD&9FD`^VRXM4)!!(BW0D&$R)_^@`````A<!U(/_#0?Y$)`9!.)UB
+M5P``=0I!QH6S5P```.L.08A>`^L(08A>`^L49I!!@'PD!A]T"D(XG"5B5P``
+M=ZY!QH0D"T(```&Z`````$&`?"0$``^&M`8``&9F9I`/ML)!@'P$!P$/A*C^
+M____PD$X5"0$=^CIDP8``&9FD,9$)`__28M!&$B)1"0@#[;"2(T$P$C!X`=(
+MC2PX2(V%P%<``,9`!!!!]D$,<`^$@`,``$B#O<A7````='D/ME@&2(N]R%<`
+M`$B#QURZ"````$B-="0@Z`````"$P'570?9%#P]T4$B+K<A7``!(A>UT1(!]
+M90!T-`^VVXG:2(GN3(GGZ`````!-C4T81`^WP(G92(GJ2(MT)!A,B?_H````
+M``^V769(BVUHZP6]`````$B%[76\00^V50_VP@T/A!P!``!$B?$/ML%(C0S`
+M2(G(2,'@!TP!X("X8%<``!\/A_L````/MIA@5P``]L((=!8/ML-(C03(2,'@
+M!$+&A"#@60``!NL>1(GR#[;"#[;32(T$P$B-!,)(P>`$0L:$(.!9```'1(GP
+M#[;(#[;#2(T,R4B-%,A(P>($3`'B2(VRX%D``,9&`0!!#[9%#XA&`TB+1"0@
+M2(F"Z%D``$$/MD4)B$8"2,'A!T$/MD4-@^`/0@^VE"%F5P``.,(/1]"#X@\/
+MMD8$@^#P"="(1@1$B?(/ML)(C03`2(GQ2,'@![X/````02)U*4(/MI0@9E<`
+M`$`X\@]'UL'B!`^V002#X`\)T(A!!$2)\0^VP4B-!,!(P>`'0OZ$(&!7``#I
+MTP$``$'V10\"#X3(`0``2(UT)"!,B>?H`````$&)P#S_#X52`0``QD0D#P!!
+M@'PD!`!V-T@/MD0D#TB-!,!(P>`'0@^VA"#$5P``//\/E,(\_0^4P`G0J`%U
+M$/Y$)`\/MD0D#T$X1"0$=\E(#[9$)`](C03`2,'@![D`````NF0```!*C80@
+M8%<``(@(2/_`2/_*=?9(#[94)`](C1322,'B!TP!XD2)\0^VP4B-!,!(P>`'
+M3`'@2(VX8%<``$B)NLA7``!(BXB\5P``2(F*M%<``$B+3"082(F*V%D``$B+
+M@-!7``!(B8+05P``QH+$5P``_TB-BF!7``!(#[9Q!T$/MD4)B(0R:%<``/Y!
+M!T$/ME4-@^(/#[9'!CC0#T?"B$$&2`^V1"0/2(T$P$C!X`=,`>!(BU0D($B)
+MD+Q7``!!#[95#XB08U<```^V5"07B)#&5P``00^V1"0%03I$)`1U!D'&1"0%
+M`$'^1"0%ZTO&10,`Z3L#``!$B?$/MM%(C1322,'B!P^VP$B-!,!(P>`'2HTT
+M($B-CF!7``!*.8PBR%<``'042`^V40=!#[9%"8B$%FA7``#^00=!@/C_=19(
+M#[9$)`]!QD0$!P%(BU0D&$F)5,0000^V50E!#[;V3(GGZ`````!$B?$/ML%(
+MB<)(C03`2,'@!TJ-#"!(C8&P5P``@'@#``^$M@```$&`?"0&'P^$F@(```^V
+M0`,Z@6)7```/@XH"``!%#[;N28G69F:02(T$TDC!X`=*C1P@QH/$5P``$$B-
+MJ[!7```/MDT#1(GJ2(MT)!A,B?_H`````(7`#X5*`@``0?Y$)`8/MD4#_\`/
+MMI-B5P``.=`/A.S^__],B?)+C03V2,'@!TJ--"!(C8:P5P``#[9(`__!B$@#
+M08!\)`8?#X0%`@``.HYB5P``#X)Y____Z?0!``!F9F:008!\)`8`#X7D`0``
+M00^VUD&Y`````$&X`````+F0````2(MT)!A,B?_H`````.F]`0``0<9$!`?_
+M#[;228MTQ!!!N0````!!N`````"Y_P```$R)_^@`````QD0D!P'IRP```,9$
+M)`<`QT0D"`````"+1"0(2&G`4!```$B+5"082CE4("!U9[T`````BT0D"$QI
+MZ%`0``")Z$C!X`5,`>A,`>!(C5A`@'L,_W4W08!\)`8?#X0V`0``#[9(0$R-
+M2$1$#[=#`DB+4#A(BW0D&$R)_^@`````A<!U"4'^1"0&QD,,\/_%@?V!````
+M=JG_1"0(@WPD"`,/AG/___]!@'PD!@`/A>8```"Z`````$&`?"0$`'88#[;"
+M08!\!`<!#X0-_____\)!.%0D!'?H@'PD!P`/A;8```!!#[;60;D`````0;@`
+M````N>(```!(BW0D&$R)_^@`````Z8\```"[`````(!_!`!V.V9F9I`/ML-(
+MC03`2,'@!TJ-C"#`5P``#[91!(#Z_0^5P(#Z_P^5P@^VP(7"=`3&003^_\-!
+M.%PD!'?)1(GQ#[;!2(T$P$C!X`=*BZP@T%<``+L`````#[;#2&G`4!```$P!
+MX$B-4""`>@@!=0W&0@@`2(MP($R)___5_\.`^P-VU69FD$B+7"0H2(ML)#!,
+MBV0D.$R+;"1`3(MT)$A,BWPD4$B#Q%C#9F9FD&9FD&9FD&9FD$&)T<8!_KH`
+M````0;@`````@'\$`'8S#[;"2(T$P$C!X`=(`?A(.;#860``=15%.,AU#0^V
+M@,17``"(`<-F9I!!_\#_PCA7!'?-\\-F9F:055-(@^P(28G33(G%08G(2(G[
+M#[9'!3I'!'4$QD<%``^V2P6Z``````^VPDAIP%`0``!(`=A,C4@@2#EP('5!
+M0<9!"`&Y`````(![!`!V7P^VP4B-!,!(P>`'2`'82#FPV%D``'4.#[:`Q%<`
+M`(/``SP!=CK_P3A+!'?4ZS%F9I`/ML)(:<!0$```2`'83(U(($B#>"``=0M(
+MB7`@0<9!"`'K"__"@/H##X9Z____#[;"2&G`4!```$&Z`````$&Y`A```$B-
+M1!@P9F9FD&9FD$2($$C_P$G_R77U#[;!2(ETPQ!(C03`2,'@!T&Z`````$&Y
+M9````$B-A!A@5P``1(@02/_`2?_)=?4/ML%(C03`2,'@!T&Z`````$&Y``(`
+M`$B-A!C85P``1(@02/_`2?_)=?4/ML%(C03`2,'@!T@!V$B)L-A9``!(B:C0
+M5P``QH#$5P``_TC'@,A7````````28L32(F0O%<``$2(@&97```/MM%!N0``
+M``!!N`````"Y_P```.@`````_D,%2(/$"%M=PV9F9I!F9I!F9I!3NP````"`
+M?P0`#X:1````#[;#2(T$P$C!X`=(.;0XV%D``'5QN@$````/ML)(:<"P````
+M2(V$.`!"```X6`AU!,9`"P'_PH#Z'W;>#[;#2(T$P$C!X`=(`?A(QX#860``
+M`````+D`````NF0```!(C8!@5P``B`A(_\!(_\IU]@^VPTB-!,!(P>`'QH0X
+MQ%<``/W^3P7_PSA?!`^';____[L`````#[;#2&G`4!```$@!^$B-4"!(.7`@
+M=3%(QT`@`````,9""`"Z``````^VPTAIR%`0```/ML)(P>`%2`'(QD0X3`#_
+MPH#Z@7;J_\.`^P-VL5O#9F:09F:09F:04TF)^4&Z`````+\`````@/H!#X4H
+M`0``387`#X0#`0``08!Y!`!V*$2)T@^VPDB-!,!(P>`'2CFT"-A9``!U!T`X
+MSW0+_\=!_\)%.%$$=]A$B=`/MLA(B<](C0S)2,'A!TP!R4B-D6!7``!(BX%@
+M5P``28D`2(M""$F)0`A(BT(028E`$$B+0AA)B4`82(M"($F)0"!(BT(H28E`
+M*$B+0C!)B4`P2(M".$F)0#A(BT)`28E`0$B+0DA)B4!(2(M"4$F)0%!(BT)8
+M28E`6(M"8$&)0&"[`````("Y8%<```!V0@^VPTB)P4C!X01,`<%(C33_2(T$
+M\$C!X`1,`<A(BY#@60``2(E19$B+@.A9``!(B4%L_\-(P>8'0CB<#F!7``!W
+MOD2)T@^VPDB-!,!(P>`'0@^VA`A@5P``ZSIF9I!!N@````"[`````$&`>00`
+M=B$/ML-(C03`2,'@!THYM`C860``#Y3`00'"_\-!.%D$=]]!#[;"6\.0D)"0
+MD)"02(L73(L"N0````"`>D,`=A9(#[9W#4B)\$C3^*@!=0?_P3A*0W?O@/D#
+M=B1(C02-`````"7\`P``0HN$`-`!``")!0````#K(F9F9I!F9I!(C02-````
+M`"7\`P``0HN$`-`!``")!0````"I```0``^5P`^VP,-F9I!F9I!F9I!!5T%6
+M055!5%532(/L"$B)/"1,BR]-BV4`QD9!`,9&0`7&1D,&2(L$)$B)1DA!OP``
+M``!!O@````"[`````$&`?4,`=A](BPPD2`^V40UFD$B)T(G92-/XJ`%U"/_#
+M03A=0W?L@/L#=AM(C03=`````"7X!P``0L>$(``"```L````ZQE(C03=````
+M`"7X!P``0L>$(``"```L````OQ`G``#H`````(#[`W8D2(T$W0`````E^`<`
+M`$*+A"`$`@``B04`````#[;HZR)F9F:02(T$W0`````E^`<``$*+A"`$`@``
+MB04`````#[;H00GN@/L#=AM(C03=`````"7X!P``0L>$(``"```D````ZQE(
+MC03=`````"7X!P``0L>$(``"```D````OQ`G``#H`````(#[`W8G2(T$W0``
+M```E^`<``$*+A"`$`@``B04`````B<6!Y?___P#K)6:02(T$W0`````E^`<`
+M`$*+A"`$`@``B04`````B<6!Y?___P")Z,'@"$$)QH#[`W8@2(T$W0`````E
+M^`<``$+'A"```@``(````.L>9F:09I!(C03=`````"7X!P``0L>$(``"```@
+M````OQ`G``#H`````(#[`W8?2(T$W0`````E^`<``$*+A"`$`@``B04`````
+MB<7K'4B-!-T`````)?@'``!"BX0@!`(``(D%`````(G%08'^`0%IEG472(L$
+M)(!(#`:)Z,'H$#Q0#Y3`#[;`ZT!!@?X!`0``=1.)Z,'H$#Q0#Y3`#[;`ZRAF
+M9F:0OX@3``#H`````$'_QT&`_P0/ALS]__^)Z,'H$#Q0#Y3`#[;`2(/$"%M=
+M05Q!74%>05_#9F9FD&9FD&9FD&9FD%532(/L"$B)_4B+'^@`````A,!U$<9%
+M"?](B>Y(B=_H`````.MLN0````"`>T,`=A9(#[95#4B)T$C3^*@!=0?_P3A+
+M0W?O2(G?Z`````!(B<9(A<!T.TB-16!(BU`(2(EP"$B)!DB)5@A(B3+^10Y(
+MB6Y(QD9`!<9&00#&1GD/N0$```"Z`0```$B)[^@`````2(/$"%M=PV9F9I!F
+M9I!!54%455-(@^P(28G\2(GU3(LONPH```!(B>Y,B>?H`````(3`=0Z_Z`,`
+M`.@`````_\MUX[D`````08!]0P!V&$D/ME0D#4B)T$C3^*@!=0C_P4$X34-W
+M[DB+50A(BT4`2(E0"$B)`D'^3"0.2(GN3(GOZ`````!!]D0D#`)T54F#?"1`
+M`'4@3(GO9F:09I#H`````$B)QDB%P`^$CP$``$F)1"1`ZP5)BW0D0$R)+DR)
+MIH@```#&1D8`QD9'`,9&0@!F@TY.!$R)[^@`````Z5L!``!)@WPD0``/A.``
+M``!)BW0D0$B!QI````!)BWTHZ`````!)BW0D0$R)[^@`````28U$)&!(B<))
+M.40D8`^$H@```$B)PV9F9I!F9I!(B=?H`````$B)Q4B#>#@`=&A(BT`X2,=`
+M8`````#V140$=21!_H7O$P``3(GOZ`````!(BT4X#[9P`;H!````3(GOZ```
+M``!(BU4X28NUT`@``+\!````Z`````!(BU4X28NUT`@``+\&````Z`````!(
+MQT4X`````$'^3"0.2(GN3(GOZ`````!(B=I).5PD8`^%:/___TG'1"1`````
+M`$&`?"0.`'0428U\)&#H`````$B)Q4'^3"0.ZPM,B>_H`````$B)Q4B%[71#
+M28U$)&!(BU`(2(EH"$B)10!(B54(2(DJ0?Y$)`Y,B65(QD5`!<9%00#&14,&
+MQD5"`TB)[DR)[^@`````9F9FD&9FD$B#Q`A;74%<05W#9F:09I!(@^PX2(E<
+M)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G\28GU08G608G/2(L'2(D$
+M)+H`````O0````"`?PX`=D1(C5]@9F9FD&9FD$B)W^@`````2(G"2(M#"$B)
+M4PA(B1I(B4((2(D03#EJ4'4-1#AR>7009F9FD&9FD/_%03AL)`YWQT$X;"0.
+M9I!T+D&`_U!U*,9"0P;&0D(%QD)`!\9"00!,B6I03(EB2$B)UDB+/"3H````
+M`&9F9I!(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!F
+M9I!F9I!F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G]
+M28GV3(LG0;______NX#___^]_____X#[A7<,#[;#0@^VK"!`"```0(#]_W0U
+MB>H/ML))BY0D:`D``$AIP,@/``!,.6P0"'4:2(T\$+H(````3(GVZ`````"$
+MP'0%08GOZPO_PX#[@69F9I!VI$$/ML=(BUPD"$B+;"003(MD)!A,BVPD($R+
+M="0H3(M\)#!(@\0XPV9F9I!F9I!!5T%6055!5%532('L2`(``$F)_DB)="0X
+MB%0D-TB+1PA(B40D*$R+*`^V5UB(5"0G2(U'2$B)PD@Y1T@/A&P"``"`?"0G
+M``^$80(``$R-?"1`2(E$)`A(B00D9F:09I!(B=?H`````$B-:/`/MDPD-TV)
+M^+H!````2(MT)"A(BWPD..@`````0;P`````@'PD0``/ANT```!(C5402(E4
+M)!A(BTPD"$B)3"009F9FD$2)X@^VPDC!X`1*C1PX2(U[;+H(````2(VUS```
+M`.@`````A,`/A)T```!(C5-@#[9""(/@#XB%X@````^W36!F@>'?_8G(@\@0
+M9HE%8`^V0@C`Z`0\"74)B<B#R#!FB45@1(GA#[;!2,'@!$(/MD0X:,#H!#P*
+M=09F@4U@``)(BU0D$$B+0@A(BTPD&$B)2@A(B5402(E!"$B)"`^V142H`G0R
+M@^#]B$5$2(-].`!T)4B+53A)B[70"```OP8```#H`````.L.0?_$13@G#X<L
+M____ZPE%."</AP8!``!(B>J^!@```$B+?"0HZ`````"`?7L`=!A,B>_H````
+M`+\!````Z`````"`?7L`=>A(@[T8`0```'08#[:U!0$``$B+O1@!``"Z`0``
+M`.@`````2(-]4`!T&`^V=7E(BWU0N@$```#H`````&9FD&9FD$B#?3@`=&A(
+MBT4X2,=`8`````#V140$=21!_H7O$P``3(GOZ`````!(BT4X#[9P`;H!````
+M3(GOZ`````!(BU4X28NUT`@``+\&````Z`````!(BU4X28NUT`@``+\!````
+MZ`````!(QT4X`````$B+50A(BT4`2(E0"$B)`DB+1"0H_D@.0?Y.6$B)[DR)
+M[^@`````_DPD)TB+%"1).59(=`N`?"0G``^%LOW__TB!Q$@"``!;74%<05U!
+M7D%?PT%7059!54%455-(@>PX`@``2(E\)"A)B?5(B50D($B+!TB)1"08QD0D
+M%P!(C5PD,$0/MN%)B=A$B>&Z`0```$B)_DR)[^@`````28G>1(GB3(GN2(M\
+M)"#H`````$B+3"0@2(M12$R->O!(B<A(@\!(2#G"=#U(B<%F9F:09F:000^V
+M1T$\#0^4PCPB#Y3`"="H`701QD0D%P%!QD="!4'&1T,$ZPU)BT<03(UX\$@Y
+MR'7-O0````!!@#X`#X8,`@``2(M$)"!(@\!(2(E$)`A(B00D2(M,)"!(BT%(
+M3(U@\$@[1"0(=#F)Z@^VPDB)PTC!XP1,BRPD28V\),P```"Z"````$J-=#-L
+MZ`````"$P'4.28M$)!!,C6#P3#GH===)C40D$$@[1"0(#X62`0``QD0D%P!(
+MBWPD&.@`````28G$2(7`#X26`0``2(M,)"C^00[&0$(%QH#@`````,9`0P1F
+MQX#```````#&@,(`````2,=`<```!0")Z@^VPDC!X`1*C40P8`^V4`1!B%0D
+M0`^V4`5!B%0D04F)3"1(#[90"(/B#T&(E"3B````00^W3"1@9H'AW_V)RH/*
+M$&9!B50D8`^V0`C`Z`0\"74+B<B#R#!F08E$)&")Z0^VP4C!X`1"#[9$,&C`
+MZ`0\"G4(9D&!3"1@``)(BT0D($F)1"10B>H/ML)(P>`$3`'P#[909D&(5"1Y
+M2(M`;$F)A"3,````28F$),0```!(BTPD(/Y!6$B+1"0H2(/`8$B+4`A,B6`(
+M28D$)$F)5"0(3(DB28U$)!!(BTPD"$B+40A(B4$(28E,)!!(B5`(2(D"20^V
+M1"1`J`)T)Z@$=".H`70?00^V5"1Y3(GA2(MT)"!(BWPD*.@`````ZRAF9I!F
+MD$D/MD0D0*@"=!FH!&9F9I!T$:@!=0U,B>9(BWPD&.@`````_\5!."X/AP;^
+M__^`?"07`'0-O@H```!,B?_H`````$B!Q#@"``!;74%<05U!7D%?PV9F9I!F
+M9F:09F9FD$%7059!54%455-(@>Q(`@``28G\2(ET)#A,BR\/MD<HB$0D-TB-
+M1TA(B<)(.4=(#X1&`P``@'PD-P`/A#L#``!(B40D$$B)1"0(2(G7Z`````!(
+MC6C(0;@`````N0````"Z`````$R)YDB+?"0XZ`````!!B<=!O@````!!.,8/
+M@]P!``!(C50D0$B)5"0H2(U-.$B)3"0@2(M$)!!(B40D&$$/MMY!N`````")
+MV;H!````3(GF2(M\)#CH``````^VP$C!X`1(@\!D2#T``@``#X=?`0``3(M$
+M)"B)V;H!````3(GF2(M\)#CH`````$B+7"0H2(U[7+H(````2(GNZ`````"$
+MP`^$*`$``$B+5"082(M""$B+3"0@2(E*"$B)53A(B4$(2(D(#[9$)$*(15E(
+MC7-43(GGZ``````\_W05#[;`2&G`R`\``$D#A6@)``!(B440183V=%$/MD,#
+MT>B#X`'!X`0/ME5=@^+O"<*(55T/MD,#P>@#@^`!P>`%@^+?"<*(55T/MD,#
+MP>@"@^`!P>`#@^+W"<*(55T/MD,&B(6[````Z98````/MD,"B$593(EE"`^V
+M0P:(A;L````/MT,$B45@#[=#4&:)A;@````/MD-2B(6Z````2(M#0$B)A:@`
+M``!(BT-(2(F%L````$B+0Q!(B45X2(M#&$B)A8````!(BT,@2(F%B````$B+
+M0RA(B860````2(M#,$B)A9@```!(BT,X2(F%H````.L.0?_&13C^#X)@_O__
+MZQU!#[;.2(GJ2(MT)#A,B>?H`````$4X_@^"_P```$B-14A(B<)(.45(#X3>
+M````28G&2(G7Z`````!(C5CP2(G:O@8```!,B>?H`````(![>P!T&$R)[^@`
+M````OP$```#H`````(![>P!UZ$B#>S@`=&Q(BT,X2,=`8`````#V0T0$=2A!
+M_H7O$P``3(GOZ`````!(BT,X#[9P`;H!````3(GOZ`````!F9F:02(M3.$F+
+MM=`(``"_`0```.@`````2(M3.$F+M=`(``"_!@```.@`````2,=#.`````!(
+MBU,(2(L#2(E0"$B)`D'^3"0._DU82(G>3(GOZ`````!,B?),.75(#X4E____
+M0?Y,)"A(B>Y,B>_H`````/Y,)#=(BU0D"$DY5"1(=`N`?"0W``^%S_S__TB!
+MQ$@"``!;74%<05U!7D%?PV9FD$%7059!54%455-(@>PH`@``28G^2(GU2(L&
+M2(E$)!A(B?Y(B>_H`````$&X`````+D`````N@````!(B>Y,B??H`````(A$
+M)!=!O`````!!.,0/@T8#``!(C55@2(D4)$$/MMQ!N`````")V;H!````2(GN
+M3(GWZ``````/ML!(P>`$2(/`9$@]``(```^'_0(``$R-1"0@B=FZ`0```$B)
+M[DR)]^@`````3(UL)"!)C75<2(GOZ``````\_P^%S0(``$B+?"08Z`````!(
+MB<-(A<`/A-P"``#^12C&0%@`2(M$)'Q(B0-)C7542(GOZ``````\_W0:#[;`
+M2&G`R`\``$B+5"082`.":`D``$B)0Q!!#[9%`HA#64$/MD4#T>B#X`'!X`0/
+MME-=@^+O"<*(4UU!#[9%`\'H`X/@`<'@!8/BWPG"B%-=00^V10/!Z`*#X`'!
+MX`.#XO<)PHA374B):PA!#[9%!HB#NP```$F+10A(B4-P00^V10>(0UI!#[=%
+M!(E#8$$/MT509HF#N````$$/MD52B(.Z````28M%0$B)@Z@```!)BT5(2(F#
+ML````$F+11!(B4-X28M%&$B)@X````!)BT4@2(F#B````$F+12A(B8.0````
+M28M%,$B)@Y@```!)BT4X2(F#H````$B-4SA(C45(2(M("$B)4`A(B4,X2(E*
+M"$B)$6;'1"04``!!@'T```^$<0$``$B+!"1(B40D"$R->TAF9F:02(M\)!CH
+M`````$B)P4B%P`^$;P$``/Y%#L9`0@7&@.``````QD!#!$C'0'````4`9L>`
+MP```````2`^W5"042,'B!$J-5"I@#[9"!(A!0`^V0@6(04%(B6E(2(E94`^V
+M0@:(07D/MD((@^`/B('B````#[=Q8&:!YM_]B?"#R!!FB4%@#[9"",#H!#P)
+M=0F)\(/(,&:)06!(#[=$)!1(P>`$0@^V1"AHP.@$/`IU!F:!26```D@/MT0D
+M%$C!X`1*BT0H;$B)@<P```!(B8'$````_D-82(M4)`A(BT((2(E*"$B)$4B)
+M00A(B0A(C4$028M7"$F)1PA,B7D02(E0"$B)`D@/MD%`J`)T&:@$=!6H`701
+M#[91>4B)WDB)[^@`````ZQY(#[9!0*@"=!6H!'01J`%U#4B)SDB+?"08Z```
+M``!F_T0D%&9!#[9%`&8[1"04#X>G_O__9F9FD&9FD$'_Q$0Z9"07#X+"_/__
+M@'T.`'41QD4)_TB)[DB+?"08Z`````!(@<0H`@``6UU!7$%=05Y!7\-F9I!F
+M9I!F9I!!54%455-(@^P(28G]2(GU0;@`````N0````"Z`````.@`````08G$
+MNP`````XPW,E#[;32(U,)`=(B>Y,B>_H`````(!\)`?^#X61````_\-$..-R
+MV_Y-6(!]6`!T:$R+90#&15@`2(M52$B-6LA(C45(2#G"=&A(B<)F9I!FD$B#
+M>Q``=`](BT,X2(U8R$@YT'7LZTK^15A(B>Y,B>_H``````^VB[L```!)B[PD
+M:!```$G'P`````!(B=I(B>[H`````.L92(GN3(GOZ`````!(B>Y,B>_H````
+M`&9FD$B#Q`A;74%<05W#9F:09I!(BQ>^"@```+D`````@'I#`'8U2`^V?PU(
+MB?A(T_BH`70?#[;!2&O`:(N$$&P2```E```#`,'H$(/`"$`X\`]"\/_!.$I#
+M=]!`#[;&PV9FD$B+%[X(````N0````"`>D,`=C5(#[9_#4B)^$C3^*@!=!\/
+MML%(:\!HBX00;!(``"4```,`P>@0@\`(0#CP#T?P_\$X2D-WT$`/ML;#9F:0
+M2(/L6$B)7"0H2(EL)#!,B60D.$R);"1`3(ET)$A,B7PD4$F)_4R+)T&_````
+M`(!_#0`/A)T#``"]``````^V1PV)PJ@!=0S_Q8G0B>G3^*@!=/2)Z@^VPDAK
+MP&A*C90@4!(``(M"#*D```(`=`T-```$`"7___W_B4(,B>D/ML%(:\!H0O:$
+M(%X2```$#X2/`@``38VT)``4``!-.:0DT`@``'0(38NT)-`(``")Z@^VPDAK
+MP&A,`>!$#[:(8A(``$0/MH!A$@``#[:(8!(``$$/ME0D04`/MO4/MKAG$@``
+MB7PD(`^VN&82``")?"08#[:X91(``(E\)!`/MKAD$@``B7PD"`^V@&,2``")
+M!"1(Q\<`````N`````#H`````$&X@````(GI#[;!2&O`:$Z-C"!@$@``_$$/
+MM\!F0@^VA#!`"```9CW_`'0O#[?`2&G`R`\``$B)PTD#GF@)``!(B=Y,B<^Y
+M"````/.F#Y?"#Y+`.,(/A%0!``!!_\!F08'X@0!VLDR)Y^@`````2(G#2(7`
+M#X0Z`@``B>H/ML)(:\!H0O:$(%T2```$=`2`2UT"B>D/ML%(:\!H0O:$(%X2
+M```$=`2`2UT0B>H/ML)(:\!H0O:$(%T2```(=`2`2UT$B>D/ML%(:\!H0O:$
+M(%X2```(=`2`2UT@B>H/ML)(:\!H0O:$(%T2```"=`2`2UT!B>D/ML%(:\!H
+M0O:$(%X2```"=`2`2UT(QD-8`(GJ#[;"2&O`:$J+A"!@$@``2(D#3(EK"$R)
+M[^@`````B(.[````0?Y%*+D`````08!\)$,`=B5)#[9%#4C3^*@!=!!$B?H/
+MML*(3!AP_D-:0?_'_\%!.$PD0W?;2(U3.$F-14A(BT@(2(E0"$B)0SA(B4H(
+M2(D10?Y%6`^VB[L```!)B[PD:!```$G'P`````!(B=I,B>[H`````.D%`0``
+M1`^V2P1$#[9#`P^V2P(/ME,!#[8S#[9#!XE$)!`/MD,&B40D"`^V0P6)!"1(
+MQ\<`````N`````#H`````$'&10G_3(GN3(GGZ`````#ILP```(GI#[;!2&O`
+M:$J-+"#VA5X2```(#X29````3(GGZ`````!(B<-(A<`/A(4```#&0$,&QD!"
+M!6;'@,```````,9`0`;&0$$`2,=`<```!0!(BX5@$@``2(F#S````$B)@\0`
+M``!,B6M(3(GOZ`````"(@^(```!F@TM@$$R)[^@`````/`EV!F:!2V```D'&
+M10X!28U%8$B+4`A(B5@(2(D#2(E3"$B)&DB)WDR)Y^@`````2(M<)"A(BVPD
+M,$R+9"0X3(ML)$!,BW0D2$R+?"102(/$6,-F9F:09F9FD$%7059!54%455-(
+M@^P(2(G[28GUN`````!(A?9T!`^V1@D/ML!!O`````"%P'01/?\````/A&P!
+M``#IT04``)!$B>(/ML(/MH08Q@@``#S_=!(/ML!(:<"H````3(VL&*`!``!!
+M_\1!@/P#=M-!O`````!$B>(/ML(/MH08Q@@``#S_=#,/ML!(:<"H````3(VL
+M&*`!``!!]D4*`G02O@````!,B>_H`````.L+9F:03(GOZ`````!!_\1!@/P#
+MD':Q9@^V0SYF.8-`$```#X4\!0``387M#X6T````@'M1``^%*04``,9#40&]
+M``````^WU4B+M--`!```2(7V=#A(@[Z``````'0N2(N&@````$C'AH``````
+M````2,>$TT`$````````2(N^D````+K______]#K2`^WU4B#O--`!````'0Z
+M2(N$TT`$``!(@[B(`````'0H2(N&B````$C'AH@`````````2,>$TT`$````
+M````2(N^D````/_0D/_%9H/]/P^&9/___^E_!```0<9%"?],B>Y(B=_H````
+M`.EJ!```QD0D!P!F9I!FD$@/MD0D!P^VA!C&"```//\/A/$````/ML!(:<"H
+M````3(VL&*`!``!!@'T)_P^$U````$&\`````$&`?0X`#X:Y````38UU8$R)
+M]^@`````2(G%28M&"$F);@A,B74`2(E%"$B)*(!]0O\/A(````"`O>$`````
+M=&A(#[9%0*@"=!ZH!'0:J`%T%@^V57E(BW502(GI3(GOZ`````#K0I!(#[9%
+M0*@"=1JH!&9FD&:0=!&H`70-2(GN2(G?Z`````#K'D@/MD5`J`)T%:@$9I!T
+M#Z@!=0M(B>Y(B=_H`````+@!````Z7H#``!F9I!FD$'_Q$4X90X/ATO___^X
+M`0```.E>`P``_D0D!X!\)`<##X;J_O__QD0D!P"`>U$`#X6P````O0````!F
+M9I!F9I`/M\5(B[3#0`0``&8/MI080`@``$B%]G1W2(.^@`````!T;4B#?F``
+M=69F@?K_`)!T+@^WPDB+BQ@)``!(:<"(`0``]D0(0P1T%H!\"$$`=0\/M])(
+MB=_H`````.LR9I!(BX:`````#[?52,>$TT`$````````2,>&@`````````!(
+MB[Z0````NO______T)#_Q6:#_3\/AF3____&0U$!Z8L"``!(#[9$)`</MH08
+MQ@@``#S_#X1E`@``#[;`2&G`J````$R-K!B@`0``0;P`````08!]#@`/AD("
+M``!-C75@3(GWZ`````!(B<5)BT8(28EN"$R)=0!(B44(2(DH@'U"_P^%"0(`
+M``^W13!FB40D!`^WP&8/MI080`@``&:)5"0"3(N\PT`$```/MD5$J`1T<4V%
+M_W1L28._@`````!T8DF#?V``=5N#X/N(143V14,$=!(/MU0D`DR)_DB)W^@`
+M````ZSU)BX>`````2`^W5"0$2,>$TT`$````````2<>'@`````````!(QT4X
+M`````$F+OY````"Z_____TR)_O_0]D5#!`^$10$``,:%X`````!!@&4,Y_9%
+M1`$/A/L```"`943^2(-].`!T38!]00!U+?9%0P1T)P^W5"0$#[9#0<'@!@'"
+M2&/22(NST`@``+\'````Z`````#I\0```$B+53A(B[/0"```OP$```#H````
+M`.G7````387_=&I)@[^``````'1@@'U!`'4;]D5#!'05#[=4)`),B?Y(B=_H
+M`````.FG````28N'@````$@/MU0D!$C'A--`!````````$G'AX``````````
+M2,=%.`````!)B[^0````NO____],B?[_T.MH@'U!`'5B]D5#!'1<#[=4)`0/
+MMD-!P>`&`<)(8])(B[/0"```OP(```#H`````.LX9F9FD$B#?3@`="U(BU4X
+M2(.ZB`````!T'TB+@H@```!(QX*(`````````$B+53A(B[J0````_]#V140"
+M=!E(BU4X2(NST`@``+\&````Z`````"`943]0?_$13AE#@^'POW___Y$)`>`
+M?"0'`P^&=OW__Y"X`0```$B#Q`A;74%<05U!7D%?PV9F9I!F9F:09F9FD$B#
+M[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?Y(B?-,BVY(2`^W
+M1C"Z`````("\.$`(``#_#X2Q`@``#[9&0H/X#P^$!`$``(/X#W]*@_@,#X3)
+M````@_@,?QR#^`5T;(/X"V9F9I`/A*4```#I=0(``&9FD&:0@_@-#X2L````
+M@_@.9F9FD`^$KP```.E5`@``9F:09I"#^!E_$H/X&'U?@_@49F:0=#CI.0(`
+M`(/X&V9FD&9FD'0U/?\````/A(P```!F9I#I&P(``+X!````2(G?9F:0Z```
+M``#I!@(``$B)]^@`````Z?D!``"^`````$B)W^@`````Z><!``"^`0```$B)
+MW^@`````Z=4!``!(B??H`````.G(`0``2(GWZ`````#INP$``$B)]^@`````
+M9F:0Z:L!``!(B??H`````&9FD.F;`0``QD9"_TF)WT&\`````$&`?0X`#X;'
+M````28UM8$B)[^@`````2(G#2(M%"$B)70A(B2M(B4,(2(D8@'M"_P^$B```
+M`(![00`/A84```"`N^$`````=&9(#[9#0*@"=!VH!'09J`%T%0^V4WE(BW-0
+M2(G93(GOZ`````#K0$@/MD-`J`)U&:@$9F9FD'01J`%T#4B)WDR)]^@`````
+MZQY(#[9#0*@"=!6H!&:0=`^H`74+2(G>3(GWZ`````"Z`0```.G:````9F:0
+M9I#&@^$`````0?_$13AE#@^'/?___T4X90X/A:(```!!#[9'03PB#Y3"/`T/
+ME,`)T*@!=#^^"@```$R)_^@`````N@$```#IBP```$B)WDC'QP````"X````
+M`.@`````O@H```!(B=_H`````+H!````ZV-!O`````!!@'T.`'9!28UM8$B)
+M[^@`````2(G#2(M%"$B)70A(B2M(B4,(2(D8#[9#03PB#Y3"/`T/E,`)T*@!
+M=99!_\1%.&4.=\9F9I!!QD4)_TR)[DR)]^@`````N@$```")T$B+7"0(2(ML
+M)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F:09F:02(/L6$B)7"0H2(EL
+M)#!,B60D.$R);"1`3(ET)$A,B7PD4$F)_4B)\TR+?DA(#[=&,+H`````@+PX
+M0`@``/\/A*(&```/MD9"@_@)#X1W`P``@_@)?TJ#^`4/A/L```"#^`5_%X/X
+M`P^$G@```(/X!`^$P@```.EF!@``@_@'9I`/A#0#``"#^`=F9F:09F:0#X\6
+M`P``Z:D"``!F9I!FD(/X%@^$YP(``(/X%F9F9I!_(X/X%`^$*@,``(/X%&:0
+M#X^D`@``@_@*#X0'`P``D.D,!@``@_@:#X1+`@``@_@:?Q*#^!</A+("``!F
+M9F:0Z>P%```]_P```&9FD&9FD`^$XP(``.G6!0``28M'((%@,/___O](BWY(
+MN0````"Z`0```.@`````OP4```#H`````.FI!0``2(M^2+D`````N@````#H
+M`````+]0PP``Z`````#IAP4``$&^`````(!_0P!V($D/ME<-9F:09I!(B=!$
+MB?%(T_BH`74)0?_&13AU0W?J2`^V0T"H`G0,J`1T"*@!#X73````28M7((M"
+M,*D```$`=`TE___^_XE",.FX````O1`G``!$B'0D$$J-!/4`````)?@'``!(
+MB40D"$2)\$C!X`-)B<1!@>3X!P``28M5`$&`_@-V&4B+3"0(BX01@`$``(D%
+M`````"4```$`ZQ-!BX04@`$``(D%`````"4```$`A<!T)8!\)!`#=@Y!QX04
+M@`$``````0#K#$''A!2``0`````!`(7`=1"_Z`,``.@`````_\UUD^L$A>UU
+M&,9#0P+&0T+_2(G>3(GOZ`````#I<P0``$'V1PH!=#A(B=Y,B?]F9I!FD.@`
+M````A,!U)+WZ````9I!(B=Y,B?_H`````(3`=0Z_Z`,``.@`````_\UUXT&`
+M_@-V)TJ-!/4`````)?@'``!)BTT`BY0!@`$``(D5`````(F4`8`!``#K3TJ-
+M!/4`````2(G&@>;X!P``28M-`$&`_@-V#XN$,8`!``")!0````#K'DJ-!/4`
+M````)?@'``!)BU4`BX0"@`$``(D%`````(F$,8`!``!(BWM(2(G>Z*LH``"_
+M($X``.@`````Z9T#```/MW8P2,?'`````+@`````Z`````!(BWM(2(G>Z#LO
+M``#I=P,```^W=C!(Q\<`````N`````#H`````$B+>TA(B=[HI2\``.E1`P``
+M2(M^2.A'*```Z4,#``!(BWY(Z)DL``#I-0,``$B+?DCHZRL``.DG`P``2(M^
+M2.@=+0``Z1D#``!(BWY(Z)\M``#I"P,``$B+?DCH(2X``)#I_`(``,9&0O](
+M#[9#0*@"=`BH!'0$J`%U%DB#>U@`D'4.3(G_Z`````"(@^(```!!]D<,`@^$
+MB@$``$V+9T!!#[94)$9!#[9$)#O_R#G"?3)!_D0D1D'^1"1'0<9$)$(`00^W
+M1"1.@^#^@\@(9D&)1"1.3(GF3(GOZ`````#I?@(``$&^`````$&`?PX`#X;`
+M````28UO8$B)[^@`````2(G#2(M%"$B)70A(B2M(B4,(2(D8@'M"_P^$@0``
+M`("[X0````!T:4@/MD-`J`)T'Z@$=!NH`707#[93>4B+<U!(B=E,B?_H````
+M`.M#9I!(#[9#0*@"=1JH!&9FD&:0=!&H`70-2(G>3(GOZ`````#K'D@/MD-`
+MJ`)T%:@$9I!T#Z@!=0M(B=Y,B>_H`````+H!````Z<L!``!F9I!FD,:#X0``
+M``!!_\9%.'<.#X=$____0?9$)$Z`=!Y!]D0D20-T%D'&1"1"`$R)YDR)[^@`
+M````Z8<!``!!QD<)_T'&1"1"`$$/MT0D3H/@\X/(`F9!B40D3D&`9"1)_DR)
+M_DR)[^@`````Z50!``"^"@```$B)W^@`````N@$```"0Z4$!``!!O@````!!
+M@'\.``^&Q@```$F-;V!F9I!F9I!(B>_H`````$B)PTB+10A(B5T(2(DK2(E#
+M"$B)&(![0O\/A(@```"`>T$`=7N`N^$`````=&M(#[9#0*@"="&H!'0=J`%T
+M&0^V4WE(BW-02(G93(G_Z`````#K169F9I!(#[9#0*@"=1JH!&9FD&:0=!&H
+M`70-2(G>3(GOZ`````#K'D@/MD-`J`)T%:@$9I!T#Z@!=0M(B=Y,B>_H````
+M`+H!````ZW[&@^$`````0?_&13AW#@^'1/___T4X=PYU3T&^`````$&`?PX`
+M=D))C6]@2(GOZ`````!(B<-(BT4(2(E="$B)*TB)0PA(B1@/MD-!/"(/E,(\
+M#0^4P`G0J`$/A<7^__]!_\9%.'<.=\)!QD<)_TR)_DR)[^@`````N@$```")
+MT$B+7"0H2(ML)#!,BV0D.$R+;"1`3(MT)$A,BWPD4$B#Q%C#9F:09I!(@^PH
+M2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@28G\2(GS2(L72(NNB`````^V1D*#
+M^!D/AUT$``")P/\DQ0````#V1DX$=`QFQT9.`0#&1D(!ZSQF@WY.('4,9L=&
+M3@@`QD9"#>LI]D9.@'09]D9)`W03#[=&3B1_@\@(9HE&3L9&0@WK"O9#3@AT
+M!,9#0@=(B=Y,B>?H`````.GV`P``BX($`0``B04`````@\A0B8($`0``N0$`
+M``"Z`@```+X!````2(G?Z`````#IQ0,``+D!````N@````"^`0```$B)W^@`
+M````Z:D#``"Y`0```+H!````O@$```!(B=_H`````.F-`P``N0$```"Z8```
+M`+X!````2(G?Z`````#I<0,```^V3DA!N`$```"Z8````+X!````2(G?Z```
+M``#I4`,``$&X`0```+D```$$NB$```"^`0```$B)W^@`````Z2X#``!!N`$`
+M``"Y`0```+H"````O@````!(B=_H`````.D,`P``0;@!````N0````"Z`@``
+M`+X`````2(G?Z`````#IZ@(``$B+12"!8##___?_0;@!````N0$```"Z`@``
+M`+X`````2(G?Z`````#IO0(``$&X`0```+D`````N@(```"^`````$B)W^@`
+M````Z9L"``"Y`0```+H"````O@````!(B=_H`````.E_`@``N0$```"Z````
+M`+X`````2(G?Z`````#I8P(``+D!````N@$```"^`````$B)W^@`````Z4<"
+M``!(BT4@@6`P___W_T&X`0```+G_____N@$```"^`````$B)W^@`````Z1H"
+M``"Y`0```+H`````O@````!(B=_H`````.G^`0``2`^V1D=,BW3&6$F);DA)
+MB798#[9&1T&(1GE!QD9"`T'&1D$`08!.0`7^10Y(C45@2(M0"$R)<`A)B09)
+MB58(3(DROX`:!@#H`````$&]`````$&`?"1#`'8<2`^V50U(B=!$B>E(T_BH
+M`74*0?_%13AL)$-WZ4B+52"+0C"I```(`'0*)?__]_^)0C#K8+N8.@``2HT$
+M[0````!(B<6!Y?@'``!F9F:008#]`W8:28L$)(N$*(`!``")!0````"I```(
+M`'4HZQA)BP0DBX0H@`$``(D%`````*D```@`=0Z_Z`,``.@`````_\MUNDR)
+M]DR)Y^@`````Z0`!``"_0`T#`.@`````N0````"Z(````+X!````2(G?Z```
+M``"_$"<``.@`````Z=````"Y`````+H!````O@````!(B=_H`````+\0)P``
+MZ`````#IJ@```$B+12"!8##___?_0;@`````N?____^Z`0```+X`````2(G?
+MZ`````"_$"<``.@`````ZW:Y`````+H`````O@````!(B=_H`````+\0)P``
+MZ`````#K4[D`````NB````"^`0```$B)W^@`````OQ`G``#H`````.LPZ```
+M``!F9I!FD.LDZ`````#K'4&X`0```+GP````NIL```"^`0```$B)W^@`````
+MN`$```!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(@\0HPV9F9I!F9F:005=!
+M5D%505154TB#["A)B?Q(BP=(B40D($&_`````(!_0P`/AJ8"``!F9F:09F:0
+M1(GZ#[;"2&O`:$J--"!(C99@$@``]D(.$`^$<@(``+@!````1(GY2-/@"$()
+M2(NV2!(``$B)="08]D((`@^$W0```$&-7P%!.%PD0P^&S@````^VP4AKP&A,
+M`>!(B40D"`^VPTAKP&A.C30@28VN8!(``/9%#A`/A)0```!,BVPD"$'WA5P2
+M``````X`#X1^````28V%8!(``$B)1"00N@@```!(B>Y(B<?H`````(3`=%Y)
+MC;94$@``N@@```!)C;U4$@``Z`````"$P'1"N`$```")V4C3X$B+5"00"D()
+MB$()B$4)2(-\)!@`=0Y-B[9($@``3(ET)!CK%`^VPTAKP&A(BTPD&$J)C"!(
+M$@``_\-!.%PD0P^'0____V:02(-\)!@`#X6D````3(GGZ`````!(B40D&$B%
+MP`^$70$``$2)^@^VPDAKP&A,`>!(BTPD&$B)B$@2``!(C9!`$@``2(E1(`^V
+M@&@2``"(00K&00D`3(DAQD$.`,9!6`#&02@`08U?`4$X7"1#=EE$B?H/ML)(
+M:\!H2@^VE"!I$@``2(G0B=E(T_BH`704#[;#2&O`:$B+3"082HF,($@2``#_
+MPT$X7"1#=]?K&V9F9I!$B?H/ML)(:\!H2(M,)!A*B8P@2!(``$2)^@^VPDAK
+MP&A*C80@8!(```^V4`E(BTPD&(A1#0^V6`E!@/\#=B%*C03]`````"7X!P``
+M2(M4)"#'A!```@``.````.L?9I!*C03]`````"7X!P``2(M,)"#'A`@``@``
+M.````+\0)P``Z`````!!@/\#=AM*C03]`````"7X!P``2(M4)"")G!`$`@``
+MZQE*C03]`````"7X!P``2(M,)"")G`@$`@``0?_'13A\)$,/AV']__](@\0H
+M6UU!7$%=05Y!7\-FD$B#[!A(B1PD2(EL)`A,B60D$$F)_(GS2(LO0(#^`W8@
+M2(T$W0`````E^`<``,>$*#`"```,````ZQYF9I!F9I!(C03=`````"7X!P``
+MQX0H4`(```P```"_$"<``.@`````@/L#=AQ(C03=`````"7X!P``BX0H-`(`
+M`(D%`````.L:2(T$W0`````E^`<``(N$*%0"``")!0````")PH'B```_`,'J
+M$`^VPTAKP&A*C8P@8!(```^V00B#X/R(00B#^A!U"H/(`HA!".L29I`/ML-(
+M:\!H0H",(&@2```!2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9I!F9I!F9I!!
+M5T%6055!5%532(/L*$&)]$F)UTB++[L`````0HT$Y0````!$C7#@08G%9F:0
+M9I!!@_P#=A&-!)T``0``08F$+B`"``#K#XT$G0`!``!!B80M``(``+\0)P``
+MZ`````")VD&#_`-V$$&+A"XD`@``B04`````ZPY!BX0M!`(``(D%`````(D$
+ME/_#@_L&=J!(BP0D28D'2(M$)`A)B4<(2(M$)!!)B4<0BT0D&$&)1QA(@\0H
+M6UU!7$%=05Y!7\-!5T%6055!5%532(/L*$&)]$F)UTB++[L`````0HT$Y0``
+M``!$C7#@08G%9F:09I!!@_P#=A&-!)T<`0``08F$+B`"``#K#XT$G1P!``!!
+MB80M``(``+\0)P``Z`````")VD&#_`-V$$&+A"XD`@``B04`````ZPY!BX0M
+M!`(``(D%`````(D$E/_#@_L&=J!(BP0D28D'2(M$)`A)B4<(2(M$)!!)B4<0
+MBT0D&$&)1QA(@\0H6UU!7$%=05Y!7\,/M@?`Z`2#X`>)PH#.`O9'`@0/1<*)
+MPH'*```"`/9'`P0/1<*)PH#."/9'`@@/1<*)PH'*```(`/9'`P@/1<*)PH#.
+M!/9'`@(/1<*)PH'*```$`/9'`P(/1<(/ME<4P>(8"=##9F9FD&9F9I!F9F:0
+MZ`````#SPV9FD&9FD&9FD$%7059!54%455-(@^PH28G^B?5,BS^)\@^VPDAK
+MP&A(`?A(B;A`$@``QH!I$@```$`/MO;H`````+D`````NB````!(B>"("$C_
+MP$C_RG7V1`^V[4B)XD2)[DR)]^@`````B>D/MME(:]MH3`'S2(GGZ`````")
+M@U`2``!(BT0D#$B)@U02``!(C9-@$@``0(#]`W8:0HT$K0````!(F$*+A#C0
+M`0``B04`````ZQM(C02M`````"7\`P``0HN$.-`!``")!0````")0@R)Z@^V
+MPDAKP&A*C90P<!(``$"`_0-V'4B-!.T`````)?@'``!"BX0X@`$``(D%````
+M`.L;2(T$[0`````E^`<``$*+A#B``0``B04`````B0*)Z0^VP4AKP&A*C80P
+M8!(``/9`#A`/A%$!``#V0`@"=%BY`````+H@````2(G@9F9FD(@(2/_`2/_*
+M=?9`#[;U2(GB3(GWZ`````")Z`^VV$AKVVA,`?-,C:-0$@``2(GGZ`````!!
+MB40D#$B+1"0,2(F#8!(``.L5B>H/ML)(:\!H0L>$,%P2```!``(`0(#]`W8;
+M2(T$[0`````E^`<``$+'A#@P`@``&````.L92(T$[0`````E^`<``$+'A#A0
+M`@``&````+\0)P``Z`````!`@/T#=A](C03M`````"7X!P``0HN$.#0"``")
+M!0````")PNL=2(T$[0`````E^`<``$*+A#A4`@``B04`````B<*)Z0^VP4AK
+MP&B)T8'A____WX'*````($+WA#!L$@`````#``]$T4"`_0-V%TB-!.T`````
+M)?@'``!"B90X-`(``.L52(T$[0`````E^`<``$*)E#A4`@``2(/$*%M=05Q!
+M74%>05_#9F9FD&9FD(N'\`@``"7___\`/5`!DP!U$P^VA_,(``#`Z`2Z`0``
+M`#P,=`6Z`````(G0PV9FD$%505154TB#[`A)B?U,BR>X`````+!0M`5()?__
+M`/](#0``!`!(NO___P#_____2"'02`T````P2+K_____`/___T@AT$BZ````
+M`!$```!("=!(NO______`/__2"'02+H``````*L``$B)Q4@)U4C'A_@3````
+M````2#F_T`@```^%Z0```$B-GP`4``!(C9?P"```0;@!````N0@```"^```"
+M`.@`````08N%Z`@``$$/MI7S"```C42"_$&(A?,(``!,B>_H`````(3`=0=)
+MB:WP"```BP4`````00^VE?,(```!PO_`B04`````08B5\P@``$$/MH7P"```
+MB(/P"```00^VA?$(``"(@_$(``!!#[:%\@@``(B#\@@``$$/MH7S"```@\`"
+MB(/S"```00^VA?0(``"(@_0(``!!#[:%]0@``(B#]0@``$$/MH7V"```B(/V
+M"```00^VA?<(``"(@_<(``!F9F:09F:02<>%^!,```````!!BX0D``$``(D%
+M``````^WT/;"('4;B="#R"!!B80D``$``$&+A"0``0``B04`````28M%`,>`
+M!`$```````!)BT4`QX`8`0```````$F+10#'@!P!````````OX"$'@#H````
+M`$''A"1P`0``&`$``$&+A"1T`0``B04`````@.3]0<>$)'`!```8`0``@,P$
+M08F$)'0!``!!QX0D<`$``"@!``!!QX0D=`$``']_``!!QX0D<`$``"0!``!!
+MBX0D=`$``(D%`````&:X``!!QX0D<`$``"0!```-_S\``$&)A"1T`0``0<>$
+M)'`!```\`0``0<>$)'0!`````'H`0<>$)'`!``"D`0``0<>$)'0!``!]O^__
+M0<>$)'`!``"X`0``08N$)'0!``")!0`````/M\!!QX0D<`$``+@!```-``#Z
+M`$&)A"1T`0``0<>$))P```#_````0<>$))`"``!$`0``0<>$))0"```&$``(
+M0<>$))`"``"T`0``0<>$))0"``!?<```0<>$))`"```P````08N$))0"``")
+M!0`````PY(#,,T&)A"24`@``O0````!!@'U#``^&6P,``&9F9I!`@/T#=AM(
+MC03M`````"7X!P``0L>$(#`"```(````ZQE(C03M`````"7X!P``0L>$(%`"
+M```(````OQ`G``#H`````$"`_0-V'4B-!.T`````)?@'``!"BX0@-`(``(D%
+M`````.L;2(T$[0`````E^`<``$*+A"!4`@``B04`````B<)`@/T#=AU(C03M
+M`````"7X!P``@<H``(``0HF4(#0"``#K&TB-!.T`````)?@'``"!R@``@`!"
+MB90@5`(``$`/MMU)C97P"```B=Y,B>_H`````(G>3(GOZ`````!`@/T#=AF-
+M!-T`````2)A"QX0@,`(``$0!``#K&V:02(T$[0`````E^`<``$+'A"!0`@``
+M1`$``+\0)P``Z`````!`@/T#=AM(C03M`````"7X!P``0L>$(#0"```&$``(
+MZQE(C03M`````"7X!P``0L>$(%0"```&$``(0(#]`W8=2(T$[0`````E^`<`
+M`$+'A"`P`@``M`$``.L;9I!(C03M`````"7X!P``0L>$(%`"``"T`0``OQ`G
+M``#H`````$"`_0-V&TB-!.T`````)?@'``!"QX0@-`(``%]P``#K&4B-!.T`
+M````)?@'``!"QX0@5`(``%]P``!`@/T#=AU(C03M`````"7X!P``0L>$(#`"
+M```(````ZQMFD$B-!.T`````)?@'``!"QX0@4`(```@```"_$"<``.@`````
+MNO]4@`!`@/T#=B)(C03M`````"7X!P``@>+_5```0HF4(#0"``#K(&9FD&:0
+M2(T$[0`````E^`<``('B__]__4*)E"!4`@``0`^VW;H!````B=Y,B>_H````
+M`+\@H0<`Z`````!`@/T#=AF-!-T`````2)A"BX0@@`$``(D%`````.L;2(T$
+M[0`````E^`<``$*+A""``0``B04`````B<*!XO___O]`@/T#=A=(C03M````
+M`"7X!P``0HF4((`!``#K%4B-!.T`````)?@'``!"B90@@`$``+H%`<@`0(#]
+M`W892(T$[0`````E^`<``$*)E""$`0``ZQ=FD$B-!.T`````)?@'``!"B90@
+MA`$``+^@A@$`Z`````!`#[;U3(GOZ`````#_Q4$X;4,/AZG\__],B>_H````
+M`$&+A"0$`0``B04`````@\@"08F$)`0!``!!BX0D``$``(D%`````(/@_8/(
+M#4&)A"0``0``08N$)``!``")!0````!)BX68$```08F$)`@!``!!BX6<$```
+M08F$)`P!``!)BX7($```08F$)!`!``!!BX7,$```08F$)!0!``!!QX0D(`$`
+M``````!!#[>%/!(``"7_#P``#0```0!!B80D(`$``$F+A2@1``!!B80D)`$`
+M`$&+A2P1``!!B80D*`$``$F+A5`1``#'`/\/``!!QX0D-`$```````!!#[>%
+M/A(``"7_#P``#0```0!!B80D-`$``$F+A5@1``!!B80D.`$``$&+A5P1``!!
+MB80D/`$``$''A"1(`0```````$''A"1,`0````$``$&+A"0$`0``B04`````
+M@\A908F$)`0!``!!QX0D5`$``/O_``Q!QX0D7`$``/__``!(@\0(6UU!7$%=
+MPV9FD&9FD&9FD%-(B?OHY_?__[H`````9I`/ML+'A(.8"0```````,=$@UP`
+M````_\*`^@]VXV;'@S@2``#_#V;'@SH2``#_#\9#4`&X`0```%O#9F:09F:0
+MN0`````Y\7TM9F9FD&9FD$ACP0^V%#B$T@^5P(#Z(`^5P@^VP(7"=`>X````
+M`,.0_\$Y\7S:N`$```!F9I!FD,-F9F:09F9FD&9F9I!F9I!(@^PX2(E<)`A(
+MB6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G\2(GU9H%^((4`#X><````2`^W
+M1B"`O#A`"```_P^$B0```&:#?B!_=R)(#[:$.$`(``!(BY<8"0``2&G`B`$`
+M`$B+1!!(#[9(".ME9H%^(($`=R=(#[=&($@/MH0X0`@``$B+EV@)``!(:<#(
+M#P``2(M$$`@/MD@(ZS9(#[=&($@/MH0X0`@``$B+ET`)``!(:<#0````2(N$
+M$(@````/MD@(ZPQF9F:09F:0N?____^[_____V:!?2"%`'<.2`^W12!"#[:<
+M($`(``"`^?]T(0^VP4*`O"#&"```_P^4PH#[_P^4P`G0J`%U!H!])`9U*DB#
+M?7@`=!-(C75X3(GGZ`````!F9F:09F:02(GN3(GGZ`````#IL`8```^VP4X/
+MMJP@Q@@``$UI[:@```!/C:PEH`$```^VPTAIP(@!``!(B<-)`YPD&`D``&:!
+MN\````"K#7<&@'TD`G4V2(-]>`!T#$B-=7A,B>?H`````$B)[DR)Y^@`````
+MQD-"_\9#0P)(B=Y,B>?H`````.DY!@``#[9%.(/X&@^$7`4``(/X&G\L@_@2
+M=%V#^!)_$H7`#X3_!```9F:09I#IWP4``(/X%0^$QP4``&:0Z<\%``"#^"4/
+MA+,"``"#^"5_$H/X&P^$Q00``&9F9I#IKP4``#V>````9F:09F:0#X1[`P``
+MZ9D%``"`?20`D`^%80(``$B+34B`?3D`9I!T:8![0AD/E,"#P`N(0T)(A<ET
+M28!Y`8!U0X!Y`@!U/8!Y`SQW-P^V40._(````+X4````2(U#?$"(.$C_P$C_
+MSG7U@_H4N!0````/0]")TDB->WQ(C7$$Z`````!FQX/```````#I&04``,9#
+M0ACV009`=0\/M@&#X!^#^`T/A3L!```/M@&#X!^#^`VX(@```+H-````#T3"
+MB$-!#[;P2,?'`````+@`````Z`````!(@WUX`'0,2(UU>$R)Y^@`````2(GN
+M3(GGZ`````!!O@````!!@'T.`'9!28UM8$B)[^@`````2(G#2(M%"$B)70A(
+MB2M(B4,(2(D8#[9308#Z(@^5P(#Z#0^5P@^VP(7"=0E!_\9%.'4.=\-%.'4.
+M#X6)!```9L=$)`8``$&_`````$&^`````$&`?0X`=E5)C6U@2(GOZ`````!(
+MB<-(BT4(2(E="$B)*TB)0PA(B1@/MD-!/"(/E,(\#0^4P`G0J`%T%P^W1"0&
+M9CE#,'(,28G?#[=;,&:)7"0&0?_&13AU#G>O387_#X01!```08!_0O\/A`8$
+M``!!QD="_TR)_DR)Y^@`````Z?$#```/M@&#X!^#^`%U#<9#00'&0T+_Z:T#
+M``#V004!=`3&0T(92(-]2``/A)@#``!(BTU(O@````"Z*````$B-@Y````!`
+MB#!(_\!(_\IU];X`````N@@```!(C8.X````0(@P2/_`2/_*=?5(BT$(2(F#
+MD````$B+01!(B8.8````2(M!&$B)@Z````"+02")@[@```#I+0,``&;_@\``
+M``"_$"<``.@`````QD-"!>D3`P``2(M-2$B+15`/MD`"@^`/@'TD`'5S#[91
+M!P^V00;!X`@!P@^V007!X!`!P@^V003!X!@!PHF3W`````^V40,/MD$"P>`(
+M`<(/MD$!P>`0`<(/M@'!X!@!PDB)4W"#N]P`````=1IF_X/`````OQ`G``#H
+M`````,9#0@OIE`(``,9#0@WIBP(``(!])"!F9I!U+CP&#Y3"/`(/E,`)T*@!
+M=!YF_X/`````OQ`G``#H`````,9#0@7I6`(``&9F9I!(@WUX`'0,2(UU>$R)
+MY^@`````2(GN3(GGZ`````!(B=I,B>Y,B>?H`````.E/`@``2(M%4`^V0`*#
+MX`](BTU(@'TD``^%L0````^V40L/MD$*P>`(`<(/MD$)P>`0`<(/MD$(P>`8
+M`<*)D]P````/ME$'#[9!!L'@"`'"#[9!!<'@$`'"#[9!!,'@&`'"2&/22`^V
+M00-(P>`@2`'"2`^V00)(P>`H2`'"2`^V00%(P>`P2`'"2`^V`4C!X#A(`<)(
+MB5-P]D$,`70%9H-+8@2#N]P`````=1IF_X/`````OQ`G``#H`````,9#0AGI
+M8@$``,9#0@WI60$``(!])""0=2X\!@^4PCP"#Y3`"="H`70>9O^#P````+\0
+M)P``Z`````#&0T(9Z2@!``!F9F:02(-]>`!T#$B-=7A,B>?H`````$B)[DR)
+MY^@`````2(G:3(GN3(GGZ`````#I'P$``,9#0A3IZ@```(!])"!FD'4U2(M%
+M4`^V0`*#X`\\!@^4PCP"#Y3`"="H`70:9O^#P````+\0)P``Z`````#&0T(4
+MZ:T```#&0T(;Z:0```"`?20`=4Q(BTU(#[=#8&:#2V(!#(9FB4-@@'D#`'4%
+M@#D6=Q=F_X/`````OQ`G``#H`````,9#0@WK:?9!!@1T!V:#2V("ZT=F@V-B
+M_69FD.L]@'TD('4R2(M%4`^V0`*#X`\\!@^4PCP"#Y3`"="H`70<9O^#P```
+M`+\0)P``Z`````#&0T(%ZQIF@V-@^<9#0@[K#X!])`!U!6:#2V(#QD-"#TB#
+M?7@`=`Q(C75X3(GGZ`````!(B>Y,B>?H`````$B)WDR)Y^@`````9F:02(M<
+M)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:09F:09F:09F:0
+M2(/L*$B)7"0(2(EL)!!,B60D&$R);"0@2(G]2(GS9H%^((4`#X>6````2`^W
+M1B"`O#A`"```_P^$@P```&:#?B!_=R)(#[:$.$`(``!(BY<8"0``2&G`B`$`
+M`$B+1!!(#[9(".M?9H%^(($`=R=(#[=&($@/MH0X0`@``$B+EV@)``!(:<#(
+M#P``2(M$$`@/MD@(ZS!(#[=&($@/MH0X0`@``$B+ET`)``!(:<#0````2(N$
+M$(@````/MD@(ZP:0N?____^^_____V:!>R"%`'<-2`^W0R`/MK0H0`@``(#Y
+M_W0A#[;!@+PHQ@@``/\/E,)`@/[_#Y3`"="H`74&@'LD!G4C2(-[>`!T#$B-
+M<WA(B>_H`````$B)WDB)[^@`````Z7@"```/ML%,#[:D*,8(``!-:>2H````
+M38VD+*`!``")\@^VPDAIP(@!``!)B<5,`ZT8"0``2(MS2(![)``/A*D```"`
+M>SH&#X2?````@'LZ#`^$E0```$$/MY7`````C4(!9D&)A<````!F@_H)=B9!
+M@'U"!G0?0<9%0P)!QD5"_T&`943^3(GN2(GOZ`````#IY@$``+_H`P``Z```
+M``!)#[9%0*@"="FH!'0EJ`%T(4$/ME5Y28MU4$&X`````+D"````3(GGZ```
+M``#IJ@$``$'&14(#3(GN2(GOZ`````#IE0$``&9FD&:0@'LZ`74/0<9%0@1F
+M9I!FD.E-`0``@'LZ`G4*0<9%0@7I/0$``(![.@,/A9H```!!@'U"!74L9H%^
+M!,@W9F9FD'4@00^W=3!(Q\<`````N`````#H`````$'&14(&Z0`!``!,B>_H
+M`````$F-O9````"^*````.@%]?__A,!U.$F-?7R^%````.CS]/__A,!U)DF-
+MO;@```"^"````.C>]/__A,!U$4F#?7``=`I!QD5"%^FK````0<9%0AIF0?^%
+MP````.F9````@'LZ%W4*0<9%0A7IB0```(![.AAF9I!U!T'&14(6ZWF`>SH$
+M9F:0=0=!QD5"!^MI@'LZ!69FD'4'0<9%0@CK68![.@9F9I!U!T'&14()ZTF`
+M>SH,9F:0=0=!QD5""NLY@'LZ%F9FD'4'0<9%0A3K*8![.@YF9I!U($B#>W@`
+M=`Q(C7-X2(GOZ`````!(B=Y(B>_H`````.LN2(-[>`!T#$B-<WA(B>_H````
+M`$B)WDB)[^@`````3(GN2(GOZ`````!F9I!FD$B+7"0(2(ML)!!,BV0D&$R+
+M;"0@2(/$*,-F9F:09F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@2(G]2(GS
+M9H%^((4`#X>6````2`^W1B"`O#A`"```_P^$@P```&:#?B!_=R)(#[:$.$`(
+M``!(BY<8"0``2&G`B`$``$B+1!!(#[9(".M?9H%^(($`=R=(#[=&($@/MH0X
+M0`@``$B+EV@)``!(:<#(#P``2(M$$`@/MD@(ZS!(#[=&($@/MH0X0`@``$B+
+MET`)``!(:<#0````2(N$$(@````/MD@(ZP:0N?____^^_P```&:!>R"%`'<.
+M2`^W0R!F#[:T*$`(``"`^?\/E,)F@?[_``^4P`G0J`%T(TB#>W@`=`Q(C7-X
+M2(GOZ`````!(B=Y(B>_H`````.G+````#[;!3`^VI"C&"```36GDJ````$V-
+MI"R@`0``#[?&2&G`B`$``$F)Q4P#K1@)``"`>R0`=$0/MO%(Q\<`````N```
+M``#H`````$F+50A)BT4`2(E0"$B)`D'^3"0.3(GN2(GOZ`````!!QD0D"?],
+MB>9(B>_H`````(![.@%U++\0)P``Z`````!(B=Y(B>_H`````+D!````N@``
+M``!,B>Y,B>?H`````.L@OU##``#H`````$B)WDB)[^@`````3(GN3(GGZ```
+M``!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#9F:09I!(@^PH2(E<)`A(B6PD
+M$$R)9"083(EL)"!(B?5!B=1!B<U(BQ](B=_H`````$B)P4B%P'4-QH7A````
+M`<9%0@/K=<9`..'&0#D!08#\`1G`]]"#P`*(03JX#P```$6$[740N`````!(
+M@WU8`'0$#[9%>8A!.P^W13!FB4$@2(E9*,=!-`````!(QT%(`````$6$[4C'
+MP`````!(Q\(`````2`]%PDB)@:````!(B<Y(B=_H`````$B+7"0(2(ML)!!,
+MBV0D&$R+;"0@2(/$*,.005=!5D%505154TB#[`A)B?U(B?5,BS=,B??H````
+M`$B)PTB%P'4,QH7A`````>F?````3(GWZ`````!)B<1(A<!U%,:%X0````%(
+MB=Y,B??H`````.M[3(U[6,9#..'&0SD!QD,Z`P^W13!FB4,@28M%`$B)0RC'
+M0S0``@``28M$)!!(B4-(N0````"Z``(``(@(2/_`2/_*=?9,B6-X2,>#H```
+M``````"^`````$R)_^@`````BU,T28MT)!A,B?_H`````$B)WDR)]^@`````
+M2(/$"%M=05Q!74%>05_#9F9FD&9F9I!F9F:09F:008G0N0`````YT7,?9F9F
+MD`^V%P^V1P&(!HA6`4B#Q@)(@\<"_\%$.<%RY?/#9F:005154TB)^TB)]4F)
+M]&:#/@!Y#@^W!B4`'P``P?@(B$=!2(M%%$B)0WQ(BT4<2(F#A````(M%)(F#
+MC````$B+12Y(B8.X````2(M%-DB)@Y````!(BT4^2(F#F````$B+149(B8.@
+M````2(M%3DB)@Z@```!(BT562(F#L````$B->WRZ"@```$B)_NA`____2(V[
+MN````+H$````2(G^Z"S___](C;N0````NA0```!(B?[H&/___V;'0V```&;'
+M0V(``&9!@[PDL@$```$/E,+!X@,/MD-$@^#W"="(0T3VA:<````$=`9FQT-@
+M`0#VA:0````!="AF@TM@`O:%J@````%T!6:#2V(!]H6H`````70,9H%+8``!
+M9F:09F:0]H6D````('079H-+8`3VA:H````@=`EF@TMB`F9F9I#VA:0```!`
+M=!=F@4M@@`#VA:H```!`=`AF@TMB"&9FD,9#>@+VA9D````!="?V0V`!=`IF
+M@TM@"&:#2V(0#[:%E@```(/@'__`B$-Z/"!U!,9#>A_VA9@````(=`9F@4M@
+M``+VA9@````$=`5F@TM@(/:%F`````)T!6:#2V`0]H6H````('0.]H6N````
+M('0%9H-+8$#V0V`!=!1(BX7(````2(E#<.L.9F9FD&9FD(M%>$B)0W!(_TMP
+M]D5J`G0?]H6`````#W069H.]@`````(9P(/`!(A#9.L(9F9FD,9#9`+&0V7_
+M]D5^!'0&QD-E`NL<]D5^`G0(QD-E`6:0ZP[V17X!=`C&0V4`9F9FD,9#9O_V
+M16H$=!^Y`````)!(#[>%L````$C3^*@!=`.(2V;_P8#Y!G;GO@`"``!(B>_H
+M`````(F#Q````+@!````6UU!7,-F9F:09F:09F:02(/L&$B)'"1(B6PD"$R)
+M9"002(G]2(GS3(LG3(GGZ`````!(B<(/MDMF2(7`=0G&@^$````!ZT?&0#CA
+MQD`Y`<9`.@2(2#L/MT,P9HE"($B+10!(B4(HQT(T`````$C'0D@`````2,>"
+MH`````````"(2VE(B=9,B>?H`````$B+'"1(BVPD"$R+9"002(/$&,-F9F:0
+M9F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)_4B)\TR+)TR)Y^@`````
+M2(G"#[9+9$B%P'4)QH/A`````>M'QD`XX<9`.0'&0#H%B$@[#[=#,&:)0B!(
+MBT4`2(E"*,="-`````!(QT)(`````$C'@J``````````B$MG2(G63(GGZ```
+M``!(BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9F9I!F9I!F9I!(@^P82(D<)$B)
+M;"0(3(ED)!!(B?M(B?5,BR=,B>?H`````$B)PDB%P'4)QH7A`````>M`QD`X
+MX<9`.0'&0#H&#[=%,&:)0B!(BP-(B4(HQT(T`````$C'0D@`````2,>"H```
+M``````!(B=9,B>?H`````$B+'"1(BVPD"$R+9"002(/$&,-F9I!F9I!F9I!(
+M@^P82(D<)$B);"0(3(ED)!!(B?M(B?5,BR=,B>?H`````$B)PDB%P'4)QH7A
+M`````>M`QD`XX<9`.0'&0#H,#[=%,&:)0B!(BP-(B4(HQT(T`````$C'0D@`
+M````2,>"H`````````!(B=9,B>?H`````$B+'"1(BVPD"$R+9"002(/$&,-F
+M9I!F9I!F9I!(@^P82(D<)$B);"0(3(ED)!!(B?M(B?5,BR=,B>?H`````$B)
+MPDB%P'4)QH7A`````>M+QD`XX<9`.0'&0#H6QD`\`0^W13!FB4(@QH*8````
+M#TB+`TB)0BC'0C0`````2,="2`````!(QX*@`````````$B)UDR)Y^@`````
+M2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9F:09F:09F:02(/L&$B)'"1(B6PD
+M"$R)9"002(G[2(GU3(LG3(GGZ`````!(B<)(A<!U"<:%X0````'K0,9`..'&
+M0#D!QD`Z%P^W13!FB4(@2(L#2(E"*,="-`````!(QT)(`````$C'@J``````
+M````2(G63(GGZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#9F:09F:09F:02(/L
+M&$B)'"1(B6PD"$R)9"002(G[2(GU3(LG3(GGZ`````!(B<)(A<!U"<:%X0``
+M``'K0,9`..'&0#D!QD`Z&`^W13!FB4(@2(L#2(E"*,="-`````!(QT)(````
+M`$C'@J``````````2(G63(GGZ`````!(BQPD2(ML)`A,BV0D$$B#Q!C#9F:0
+M9F:09F:02(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($B)_4&)]$&)U4&)
+MSDB+AX@```!(BQA(B=_H`````$B)QL9`..'&0#D!QD`Z$;@/````183D=00/
+MMD5'B$8[1(AN/`^W14!FB48@2(E>*,=&-`````!(QT9(`````$6$]DC'P```
+M``!(Q\(`````2`]%PDB)AJ````!(B=_H`````$B+'"1(BVPD"$R+9"003(ML
+M)!A,BW0D($B#Q"C#9F:09F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET
+M)"A,B7PD,$F)_(G+08GU08G618G'2(N'B````$B+*$B)[^@`````2(G&QD`X
+MX<9`.0'&0#H2N`\```!%A.UU!D$/MD0D1XA&.T2(=CP/ML>(1CV)V,'H$(A&
+M/HG8P>@8B$8_B%Y`00^W1"1`9HE&($B);BC'1C0`````2,=&2`````!%A/](
+MQ\``````2,?"`````$@/1<)(B8:@````2(GOZ`````!(BUPD"$B+;"003(MD
+M)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!F9F:09F:02(/L.$B)7"0(2(EL
+M)!!,B60D&$R);"0@3(ET)"A,B7PD,$F)_$B)]4&^`````&:!?B"%``^'E@``
+M`$@/MT8@@+PX0`@``/\/A(,```!F@WX@?W<B2`^VA#A`"```2(N7&`D``$AI
+MP(@!``!(BT002`^V4`CK7V:!?B"!`'<G2`^W1B!(#[:$.$`(``!(BY=H"0``
+M2&G`R`\``$B+1!`(#[90".LP2`^W1B!(#[:$.$`(``!(BY=`"0``2&G`T```
+M`$B+A!"(````#[90".L&D+K_____N?____]F@7T@A0!W#D@/MT4@0@^VC"!`
+M"```#[;"2@^VG"#&"```2&G;J````$J-G".@`0``#[;!2&G`T````$F)Q4T#
+MK"1`"0``@'T\`@^%A@````^V14`E\````(/X(`^4PH/X$`^4P`G0J`%T:P^V
+M54")T(/@#X/X`74EB=&!X?````!!N`$```"Z`@```+X`````3(GOZ`````#I
+ML08``$D/MD5'38MTQ5@/MD5`)?````"#^"`/E,"#P`A!B(;B````28M&6&:!
+M8$[__NE_!@``9F:09F:0@'TD`'0_#[9=)$B#?7@`=`](C75X3(GGZ`````!F
+M9I!(B>Y,B>?H`````(#[`@^%108``$R)[DR)Y^@`````D.DT!@``00^V14*#
+M^!D/A_T%``")P/\DQ0````!!#[9%4,'@"$B828N4),`0``"+A`),"```B04`
+M````B<*#^`6X!0````]&PD&(13N`>P\`=`Y!QD5"`,9##P#IL`4``$'&14("
+MZ:8%``!!#[9%4,'@"$B828N4),`0``"+A`),"```B04`````9@^VP&9!B44\
+M00^V15#!X`A(F$F+E"3`$```BX0"1`@``(D%`````(G"P>@(9D&)13X/ML+!
+MX`AF00E%/&9!@7T^0$&X`P```+H9````#T3"08A%0NDM!0``00^V15#!X`A(
+MF$F+E"3`$```BX0"1`@``(D%`````$&(13E!#[9%4,'@"$B828N4),`0``"+
+MA`),"```B04`````B<*H"'0'0<9%.@SK)Z@$=`Q!QD4Z"V9FD&:0ZQ=(B=!(
+MT>B#X`&#^`$9P/?0@^`*08A%.D'&14($Z:T$``!!#[9%4,'@"$B828N4),`0
+M``"+A`),"```B04`````@\@(08A%2$'&14(%Z7T$``!!QD5"!NES!```00^V
+M15#!X`A(F$F+E"3`$```BX0"3`@``(D%`````$&`?4<!&<"#X`*#P!1!B$5"
+MZ3X$``!!#[9%1__`08A%1T$Z13MS"D'&14(6Z2,$``!!QD5'`$'&14(7OR"A
+M!P#H`````.D*!```0<9%0A3I``0``$'&14((Z?8#``!!QD5"%)#IZP,``$'&
+M14H"Z`````!)B87`````0<9%0A7IT`,``$$/MD50P>`(2)A)BY0DP!```(N$
+M`DP(``")!0````!$#[;X00^V15#!X`A(F$F+E"3`$```BX0"1`@``(D%````
+M``^VP,'@"$$)Q^@`````28F%R````$2)^(/@#X/X`W4108!]2@!T"D'&14(*
+MZ5T#``!)BX7(````02N%P````"U`#0,`>`=!@'U*`'090<9%0A5!@'U*``^$
+M,0,``$'^34KI*`,``$D/MD5'28-\Q5@`#X35````QD0D!P"`>PX`=CM,C7M@
+M3(G_Z`````!)B<9)#[9%1TTY=,58="!)BT<(38EW"$V)/DF)1@A,B3#^1"0'
+M#[9$)`<X0PYWR?Y+#DF#?C@`=&Q)BT8X2,=`8`````!!]D9$!'4E0?Z$).\3
+M``!,B>?H`````$F+1C@/MG`!N@$```!,B>?H`````$F+5CA)B[0DT`@``+\!
+M````Z`````!)BU8X28NT)-`(``"_!@```.@`````2<=&.`````!)#[9%1TG'
+M1,58`````$R)]DR)Y^@`````0<9%0@GI.`(``$$/MD50P>`(2)A)BY0DP!``
+M`(N$`DP(``")!0`````/MLA!#[9%4,'@"$B828N4),`0``"+A`)$"```B04`
+M````P>`("<%!B4U408!]0@IT"/?!```!`'010<9%0@OIU0$``/Y+#F:0ZV9!
+MQD5"#$D/MD5'28-\Q5@`=$G&1"0&`(![#@!V24R->V!(C7M@Z`````!)B<9)
+M#[9%1TTY=,58=,!)BT<(38EW"$V)/DF)1@A,B3#^1"0&#[9$)`8X0PYWR.L+
+M3(GGZ`````!)B<9-A?8/A(@!``!)#[9%1TV)=,5800^V14M!B(;B````Z40!
+M``!!OC]"#P!(BT,@]D`R"'4E3(GGZ`````"_`0```.@`````0?_.08/^_W0*
+M2(M#(/9`,@ATVT'&14()Z04!``!!#[9%4,'@"$B828N4),`0``"+A`),"```
+MB04`````1`^V^$$/MD50P>`(2)A)BY0DP!```(N$`D0(``")!0`````/ML#!
+MX`A!"<=$B?F!X?\/``"!^1,!```/E,*!^2,!```/E,`)T*@!="U!QD5"&('Y
+M$P$``'4*0<9%2PCI@@```$2)^"7_#P``/2,!``!U<T'&14L)ZVQ!#[951D$/
+MMD4[_\@YPGT/0?Y%1D'^14=!QD5"!^M-0<9%0@!!#[=%3H/@]X/(`F9!B45.
+M2(-]>`!T#$B-=7A,B>?H`````$B)[DR)Y^@`````QD,)_TB)WDR)Y^@`````
+MZS)!QD5"`V9F9I!(@WUX`'0,2(UU>$R)Y^@`````2(GN3(GGZ`````!,B>Y,
+MB>?H`````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#9F9F
+MD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!(B?M)B?1!OP``
+M``"^`````&9!@7PD((4`#X>?````20^W1"0@@+PX0`@``/\/A(L```!F08-\
+M)"!_=R)(#[:$.$`(``!(BY<8"0``2&G`B`$``$B+1!!(#[90".ME9D&!?"0@
+M@0!W*$D/MT0D($@/MH0X0`@``$B+EV@)``!(:<#(#P``2(M$$`@/ME`(ZS-)
+M#[=$)"!(#[:$.$`(``!(BY=`"0``2&G`T````$B+A!"(````#[90".L(9F:0
+MNO____^Y_____V9!@7PD((4`=PY)#[=$)"`/MHP80`@```^VP4AIP-````!)
+MB<5,`ZM`"0``#[;"2`^VK!C&"```2&GMJ````$B-K!V@`0``@/K_=!^`O!C&
+M"```_P^4PH#Y_P^4P`G0J`%U"$&`?"0D!G4K28-\)'@`=!-)C70D>$B)W^@`
+M````9F:09F:03(GF2(G?Z`````#IT`4``$&`?"0D`'082(GN2(G?9I#H````
+M`.FV!0``9F:09F:000^V14*#Z`V#^`0/AV\%``")P/\DQ0````!!#[9%4,'@
+M"$B82(N3P!```(N$`DP(``")!0````!$#[;(00^V15#!X`A(F$B+D\`0``"+
+MA`)$"```B04`````P>`(00G!OP````!!N`````!!O@````!!@'T[`'8R1(G*
+M9F:09I!(B=!$B?%(T_BH`704_\8/ML%)@WS%6`!T!4'_P.L"_\=!_\9%.'4[
+M=]9`A/]T!4&`34D!183`=`5!@$U)`D"`_@$/A3T!``!!O@````!!@'T[`'90
+M1(G*00^VSDB)T$C3^*@!=!R)RDB)WDB)[^@`````2(7`=!5(B6A(3(EH6.L+
+M0?_&13AU.W?-ZQA%B'5'13AU.W8.0<9%0@YF9F:0Z5L$``!%.'4[#X51!```
+M#[9U#;H!````2(G?Z`````#&1"0#`(!]#@`/AH````!,C75@3(GWZ`````!)
+MB<=)BT8(38E^"$V)-TF)1PA,B3A)@W\X`'0:28M7.$B+L]`(``"_!0```.@`
+M````08!/1`),B?J^!@```$B)[^@`````08!_>P!T&4B)W^@`````OP$```#H
+M`````$&`?WL`=>?^1"0##[9$)`,X10YWA$F#?"1X`'0-28UT)'A(B=_H````
+M`$R)YDB)W^@`````0<9%20#&10D`2(GOZ`````#IJP,``&9!@4U.@`!!O@``
+M``!!@'T[`'9-1(G*00^VSDB)T$C3^*@!=!R)RDB)WDB)[^@`````2(7`=!9(
+MB6A(3(EH6.L,0?_&13AU.W?-D.L418AU1T4X=3MV"D'&14(/Z1H#``!%.'4[
+M#X40`P``#[9U#;H!````2(G?Z`````#&1"0"`(!]#@`/AH````!,C75@3(GW
+MZ`````!)B<=)BT8(38E^"$V)-TF)1PA,B3A)@W\X`'0:28M7.$B+L]`(``"_
+M!0```.@`````08!/1`),B?J^!@```$B)[^@`````08!_>P!T&4B)W^@`````
+MOP$```#H`````$&`?WL`=>?^1"0"#[9,)`(X30YWA$F#?"1X`'0-28UT)'A(
+MB=_H`````$R)YDB)W^@`````0<9%20#&10D`2(GOZ`````#I:@(``$$/MD50
+MP>`(2)A(BY/`$```BX0"3`@``(D%`````$0/MLA!#[9%4,'@"$B82(N3P!``
+M`(N$`D0(``")!0````#!X`A!"<%!]\$```0`=`=!]D5)`7400??!___[_W01
+M0?9%20)T"D'&14(/Z<H!``!!QD5)`&9FD&:0Z>L!``!!OC]"#P!(BT4@]D`R
+M"'4E2(G?Z`````"_`0```.@`````0?_.08/^_W0*2(M%(/9`,@ATVT'&14(0
+MZ7P!``!!#[9%4,'@"$B82(N3P!```(N$`DP(``")!0`````/ML")1"0$00^V
+M15#!X`A(F$B+D\`0``"+A`)$"```B04`````#[;`P>`("40D!(M$)`2#X`^#
+M^`,/A<````!!]D5)`70,0<9%0A+K"OY-#NMF0<9%0A))#[9%1TF#?,58`'1)
+MQD0D`0"`?0X`=DE,C75@2(U]8.@`````28G'20^V14=-.7S%6'3"28M&"$V)
+M?@A-B3=)B4<(3(DX_D0D`0^V1"0!.$4.=\CK"TB)W^@`````28G'387_#X3-
+M````20^V14=-B7S%6(M$)`0E_P\``#T3`0``=0I!QH?B````".MYBT0D!"7_
+M#P``/2,!``!U:4'&A^(````)ZU]!QD5"$^M800^V15#!X`A(F$B+D\`0``"+
+MA`),"```B04`````00^V15#!X`A(F$B+D\`0``"+A`)$"```B04`````20^V
+M14F#X`&#^`$9P/?0@\`308A%0F9FD&9FD$F#?"1X`'0-28UT)'A(B=_H````
+M`$R)YDB)W^@`````3(GN2(G?Z`````!F9I!FD$B+7"0(2(ML)!!,BV0D&$R+
+M;"0@3(MT)"A,BWPD,$B#Q#C#D)"0D)"0D)"0D)"0D$B+1PA(+0`"`0"#X@?!
+MX@B`SB!(P>8(@>8`_P``B90&',4```^WA`8<Q0``9HD%``````^VP,-F9I!F
+M9I!F9I!(BT<(2"T``@$`@^('P>((B,J`SA!(P>8(@>8`_P``B90&',4``,-F
+M9I!F9I!F9I!!54%455.[`````$&[`````$&Z_____T&Y`````+T!````0;C`
+MX>0`00^VR?_!B>[3YKD`````#[;!_\")P@^OUD2)P$&)U;H`````0??UB?HI
+MPCGXN/____\/1L)$.=!S"4&)PD2)RT&)R__!@/D/=L5!_\%!@/D'=JU!#[;#
+MP>`#"=@/ML!;74%<05W#9I!(@^P82(D<)$R)9"0(3(EL)!!)B?Q,C:_`$0``
+M0`^VWKD`````N@<```")WN@/____00^V30&Z`P```(G>3(GGZ/O^__](BQPD
+M3(MD)`A,BVPD$$B#Q!C#9F9FD&9F9I!!5%5328G\NP````!`#[;NN@(```")
+M[DR)Y^B!_O__J`AT#;@`````ZQ]F9I!F9I"_`0```.@`````_\.!^P\G``!V
+MS+C_````6UU!7,-FD%.)\P^V\KH#````Z$#^__\XV`^4P`^VP%O#9F:09F:0
+M2(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($B)_4&)SD&)]$&)U0^VRD`/
+MMMZZ`0```(G>Z#7^__^Y0````+H"````B=Y(B>_H(?[__XG>2(GOZ#?___^Z
+M_P```(7`=7-%A?9T24'VQ0%T(T$/MM2^0````$B)[^AB____NO\```"%P'1.
+MZT=F9F:09F:000^VU+X8````2(GOZ#____^Z_P```(7`="OK)&9F9I!!#[;4
+MOB@```!(B>_H'____[K_````A<!T"V9FD&9FD+H`````B=!(BQPD2(ML)`A,
+MBV0D$$R+;"083(MT)"!(@\0HPV9F9I!F9F:09F9FD$B#["A(B5PD"$B);"00
+M3(ED)!A,B6PD($B)_4F)S8GS08G40`^V]NAD_O__NO____^%P'4Q#[;300^V
+M]$B)[^B<_O__NO____^%P'09#[;SN@$```!(B>_HT_S__T&(10"Z`````(G0
+M2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9F9I!F9F:09F9FD&9FD$%7059!
+M54%455-(@^P(2(G]28G/18G&08GU08G4QT0D!`````"$T@^$^````$`/MMZY
+M9````+H"````B=[HGOS__XG>2(GOZ+3]__^%P'40N@,```")WDB)[^A!_/__
+MD$$/MM1!#[;UN0$```!(B>_H^_W__[K_____A,`/A8D!``"[`````$0Y\P^-
+M=P$``$&-1O^)!"1%#[;E9F:09I`Y'"1U.[E`````N@(```!$B>9(B>_H)OS_
+M_TACRTP!^;I8````1(GF2(GOZ*#^__^%P`^%+P$``.LY9F:09F:0N40```"Z
+M`@```$2)YDB)[^CK^___2&/+3`'YNE````!$B>9(B>_H9?[__X7`#X7T````
+M_T0D!/_#1#GS?()FD.GB````OZ"&`0#HX?O__P^VR$$/MMVZ`P```(G>2(GO
+MZ)O[__^)WDB)[^BQ_/__A<!T(`^VC<$1``"Z`P```(G>2(GOZ'?[__^Z____
+M_^F8````00^VW8G:OF````!(B>_HROS__X7`=1T/MHW!$0``N@,```")WDB)
+M[^A`^___NO_____K9+L`````1#GS?3Y%#[;EN40```"Z`@```$2)YDB)[^@6
+M^___2&/+3`'YNH````!$B>9(B>_HD/W__X7`=0O_1"0$_\-$.?-\Q@^VC<$1
+M``!!#[;UN@,```!(B>_HV?K__XM4)`2)T$B#Q`A;74%<05U!7D%?PV9F9I!(
+M@^P82(E<)`A,B60D$$F)_$B)T$`/MM9!B<A(B<&^`````.BX_?__B<.Y5```
+M`+H"````O@````!,B>?H?_K__XG82(M<)`A,BV0D$$B#Q!C#9F9FD&9F9I!F
+M9I!F9I!(@^P82(E<)`A,B60D$$F)_$B)T$`/MM9!B<A(B<&^`0```.A8_?__
+MB<.Y5````+H"````O@$```!,B>?H'_K__XG82(M<)`A,BV0D$$B#Q!C#9F9F
+MD&9F9I!F9I!F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P
+M28G\28G/18G%B?5!B=9`#[;>N60```"Z`@```(G>Z+OY__^)WDR)Y^C1^O__
+MA<!U#[H#````B=Y,B>?H7OG__T$/MM9`#[;UN0$```!,B>?H&?O__[K_____
+MA,!U1^L.NO_____K/F9F9I!F9I"[`````$0YZWTH0`^V[6:02&/#0@^V%#BY
+M`````(GN3(GGZ-GZ__^$P'7'_\-$.>M\WKH`````B=!(BUPD"$B+;"003(MD
+M)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!(@^P82(E<)`A,B60D$$F)_$B)
+MT$`/MM9!B<A(B<&^`````.CH_O__B<.Y5````+H"````O@````!,B>?HS_C_
+M_XG82(M<)`A,BV0D$$B#Q!C#9F9FD&9F9I!F9I!F9I!(@^P82(E<)`A,B60D
+M$$F)_$B)T$`/MM9!B<A(B<&^`0```.B(_O__B<.Y5````+H"````O@$```!,
+MB>?H;_C__XG82(M<)`A,BV0D$$B#Q!C#9F9FD&9F9I!F9I!F9I!!5T%6055!
+M5%532(/L*$B)="0@3(MV*$G_QD4/ME8"QD0D'P!(QT0D$`````!!N`````!(
+MB[?0"```N8#___]%#[;*#[;!9@^VE#!`"```9H'Z_P!T2D2)P$'_P$0YR'4_
+M@/F!=Q@/M\)(:<#(#P``2`.&:`D``$B)1"00ZR)(BT0D(,=`4/____](B<?_
+M4$BX`````.F[`0``9F:09F:0_\&`^85VG$B+M]`(``!(@<8`%```N8#___]!
+M#[;Z9I`/ML%F#[:4,$`(``!F@?K_`'1#1(G`0?_`.?AU.8#Y@7<8#[?"2&G`
+MR`\``$@#AF@)``!(B40D$.L<2(M$)"#'0%#_____2(G'_U!(N`````#I/P$`
+M`/_!@/F%=J-!#[96!$4/MFX%0<'E$$$/MD8&P>`(00G%00^V1@=!"<5%#[9F
+M"$'!Y!!!#[9&"<'@"$$)Q$$/MD8*00G$2(-\)!``#X3,````0;\`````2(M$
+M)!"`>%@`#X:W````2(G#2(/#2`^VTHE4)`QF9F:09F:02(G?Z`````!(C6CP
+M2(M3"$B)0PA(B1A(B5`(2(D"#[9%03P-#Y3"/"(/E,`)T*@!=%Y!#[9&`X/X
+M.W0C@_@\=4_&1"0?`4R+1"0@1(GI1(GBBW0D#$B)[^@`````ZS%(B[T@`0``
+M1(GJ28UV"^@`````3(M$)"!$B>E$B>*+="0,2(GOZ`````#&1"0?`6:00?_'
+M2(M$)!!$.'A8#X=>____N`$```"`?"0?`'472(M$)"#'0%#_____2(G'_U!(
+MN`````!(@\0H6UU!7$%=05Y!7\-F9F:09F9FD&9F9I!(@^Q(2(E<)!A(B6PD
+M($R)9"0H3(EL)#!,B70D.$R)?"1`28G_28GT3(MN*$G_Q8M&'/_(B40D%,=$
+M)!``````2(M6,$B)5"0(08!]`0%U$,=&4`````#I.P(``&9F9I!!@'T!`G59
+M08!]`@%F9F:0=3Y(@[_8"````'0'3(N_V`@``$F+A]`(``!!#[95`XB0[A,`
+M`$$/ME4#B)#N)P``0<=$)%``````Z>D!``!FD,=&4/[____IVP$``&9F9I!!
+M@'T!!'4900^V10.#Z#L\`7<-Z+C\___IU0$``&9FD$&`?0$#=6Y!@'T"`69F
+M9I!U54$/MDT#00^V1SZ--`")R)GW_HG1.=9^+T$/ME4$#[;9B=Y,B?_H````
+M`$$/ME4$B=Y,B?_H`````$''1"10`````.E>`0``0<=$)%#^____Z5`!``!!
+MQT0D4/[____I0@$``$F#O]@(````=`=-B[_8"```3(GK08!]`0`/A*X````/
+MMBM(_\,/M@-(_\.)P0^VT/;"`70[1(MT)!!!`>Y%.W0D(`^'V0```(M,)!!(
+M`TPD"$&)Z+X`````3(G_Z$KW__\YZ`^%N````$2)="00ZU-(8\5,C3083(GP
+M3"GH2(/``DAC5"042#G0#X^2````#[;108GH2(G9O@````!,B?_HYOG__X7`
+M=7A,B?-!@#X`=0=!@'X!`'04OQ`G``#H`````(![`0`/A5+___\/MBN%[717
+MN50```"Z`@```+X`````3(G_Z*#S__]!BT0D("M$)!`YQ0]'Z(M,)!!(`TPD
+M"$&)Z+H`````O@````!,B?_HE/;__X7`>`8!1"00ZPI!QT0D4/____^0N50`
+M``"Z`@```+X`````3(G_Z$GS__])@WPD.`!T"TF+1"0XBU0D$(D03(GG0?]4
+M)$A(BUPD&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\)$!(@\1(PV9F9I!F9F:0
+M9F:02(/L"$B#O]@(````=`=(B[_8"```@+_N$P```'4BQ@4``````;D@````
+M2,?"`````+X.````Z`````!F9I!FD$B#Q`C#9F9FD&9F9I!F9I!(@^P(2(._
+MV`@```!T!TB+O]@(``#&!0``````N2````!(Q\(`````O@X```#H`````$B#
+MQ`C#9F:09F:09F:02(/L&$B)'"1,B60D"$R);"0028G]#[;:1`^VYDB+O]`(
+M``")VD2)YN@`````B=I$B>9,B>_H`````$B+'"1,BV0D"$R+;"002(/$&,-F
+M9I!(BT<(9L>`;/[__^R82(M'"&:)L&C^___#9F9FD&9FD$B#[`B)\8G6N```
+M``"P`K0#2"7__P#_2`T```4`2+K___\`_____T@AT$@-````!DBZ_____P#_
+M__]((=!(N@`````'````2`G02+K______P#__T@AT$BZ```````+``!("=!(
+MNO_______P#_2"'02+H````````,`$@)T$BZ_________P!((=!(N@``````
+M```/2`G02(D$)(#Y!W=`0(3V=!H/ML$/M@P$N/[____3P&8AA^P3``#K&&9F
+MD`^VP0^V#`2X`0```-/@9@F'[!,```^WM^P3``#H`````$B#Q`C#9F9FD&9F
+MD&9FD$%455-(B?U(@[_8"````'0'2(NOV`@``$&\`````$$/MMRY`````+H'
+M````B=Y(B>_HVO#__[E$````N@(```")WDB)[^C&\/__N=````"Z`````(G>
+M2(GOZ++P__^Y`````+H$````B=Y(B>_HGO#__T'_Q$&#_`%VH[^@A@$`Z+OP
+M__^(A<$1```/MLBZ`P```+X`````2(GOZ'#P__];74%<PY"0D)"0D)"0D)"0
+M2(M'"$@M``(!`(GVBP0&B04`````PV9F9I!F9I!F9I!(BT<(2"T``@$`B?:)
+M%`;#4TB)^TB+5PC'@H#^__\`````BX($____B04`````@,P!B8($____N@0`
+M``"^#,(``.@`````NK@+``"^",(``$B)W^@`````N@$`#`"^`,(``$B)W^@`
+M````N@0```"^#,,``$B)W^@`````NK@+``"^",,``$B)W^@`````N@$`#`"^
+M`,,``$B)W^@`````N@````"^4,(``$B)W^@`````N@````"^4,,``$B)W^@`
+M````2(M#"&;'@$S^__\``$B+0PAFQX!L_O__[)A(BT,(9L>`:/[__^R89L>#
+M[!,``/__6\-F9F:09F:09F:02#F_T`@``$$/E<"#Y@.--':X!P```(GQT^#W
+MT$&)P40C3U1$B4]4A-)T#;@$````T^!$"<B)1U2+5U1!#[;PP>8(@<90P@``
+M2(N_T`@``.@`````\\-F9F:09F:09F:02(/L&$B)'"1(B6PD"$R)9"002(G]
+M2(GS2(V/*!(``$B+EV@)``!,C:(XN`\`9H%^((4`=QE(#[=&($@/MH0X0`@`
+M`$AIP,@/``!,C20"2(M32(!Z`0)U#TB+0@1(B0%(BT(,2(E!"$B#>W@`=!)(
+MBW-X2(GOZ`````!F9I!F9I!(B=Y(B>_H`````$'&1"1<`$B+'"1(BVPD"$R+
+M9"002(/$&,-F9F:09F9FD&9F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,
+MB70D*$R)?"0P2(G]08GU08G608G/2(M'"$R+($R)Y^@`````2(G#2(7`='Q,
+MB>?H`````$B)PDB%P'1LQD5<`4B->UC&0SCAQD,Y`<9#.A#&0R6[9@^V15MF
+MB4,@3(EC*,=#-)````!(C4(02(E#2$B)4WC&0`$"QD(00$2(:`)$B'`#1(AX
+M!$C'@Z``````````O@````#H`````$B)WDR)Y^@`````2(M<)`A(BVPD$$R+
+M9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:09F9FD&9F9I!!5T%6055!5%53
+M2(/L"$B)_4&)]D&)UT&)S4B+1PA,BR!,B>?H`````$B)PTB%P`^$\````$R)
+MY^@`````2(G"2(7`#X3<````QD5<`4B-0UA(B00DQD,XX<9#.0'&0SH0QD,E
+MNV8/MD5;9HE#($R)8RC'0S20````2(U"$$B)0TA(B5-X2(G&N0````"ZD```
+M`(@(2/_`2/_*=?;&1@&"Q@9`1(AV`D2(?@-$B&X$08#]`G<A2HT4K0````"!
+MXOP#``!(C7X(28VT)"@2``#H`````.LK28N$)"@2``!(B48(00^VU8T4E?C_
+M__](8])(C7X028VT)#`2``#H`````$C'@Z``````````O@````!(BSPDZ```
+M``!(B=Y,B>?H`````$B#Q`A;74%<05U!7D%?PV9F9I!F9F:09F9FD$%6055!
+M5%532(G[08G6B?#`Z`)!B<1!O0,```!!(?5(BT<(2(LHN0(```"Z`````+X`
+M````Z`````"`>UP`=!A(B>_H`````+\!````Z`````"`>UP`=>A(BT,(2(L0
+M2('"*!(```^V0@*$P'A"@\B`B$("N0$```"Z`````+X`````2(G?Z`````"`
+M>UP`=!](B>_H`````+\!````Z`````"`>UP`=>AF9F:09F:000^VU+D!````
+MO@,```!(B=_H`````(![7`!T'&9F9I!(B>_H`````+\!````Z`````"`>UP`
+M=>A(BT,(2(LP2('&*!(``$$/ML6Y`P```"G!2&/)183V#Y7"#[;2P>(#BP0.
+M@^#G"=")!`Y!#[;4N0$```"^`P```$B)W^@`````6UU!7$%=05[#D)"0D)"0
+M3(N'&`D``&:!?B"%`'<A2`^W1B!(#[:$.$`(``!(:<"(`0``28T\`.L-9F:0
+M9F:028VX>(8!`$R-@B`$``#&@B`$```G9H%^..$!=2L/MD8Z_\@\`7<)#[96
+M.^LK9F:09H%^..$!=1`/MD8Z@^@1N@\````\`780N@````!(@W]8`'0$#[97
+M>8/B#T$/MD`!@^#P"=!!B$`!N@````!F@7XXX0%U"@^V1CK_R#P!=@6Z`0``
+M`,'B!T$/MD`!@^!_"=!!B$`!#[9!!D&(0`(/M@%!B$`##[9!!4&(0`</MD$'
+M08A`#P^V00)!B$`$#[9!`T&(0`4/MD$$08A`!@^V00%!B$`,#[9!"D&(0`@/
+MMD$+08A`"0^V00Q!B$`*#[9!"$&(0`L/MD$)08A`#<-FD%-(B?-(BT](3(L!
+M#[9&.(/X+P^$?0```(/X+W\S@_@;#X1.`0``@_@;?PR#^!)FD'1CZ5D!``"#
+M^"AF9I!F9I!T4X/X*G1.Z40!``!F9F:0/8H```!T/CV*````9F9FD'\5@_@U
+M#X0)`0``/8@```!T(^D9`0``/8\```!F9F:0=!,]X0````^$C````&9FD.G[
+M````]D=@`69F9I!F9I!T"H&+E```````!`#V1V(0#X3J````#[9#.#PH#Y3"
+M/"H/E,`)T*@!=1:`>SB(=!"`>SB*#X7&````9F:09F:0]D$,`74:#[9Q"$R)
+MQ^@`````A,`/A*8```!F9I!F9I"`>R2!#X26````@8N4```````!`.F'````
+MN`````"`?CD!#X5]````#[9..H/Y''<\N`$```!(T^"I]C_`'74;J0A`!@!U
+M"ZD``"``=19FD.L;@XZ4````".M%@XZ4`````>L\@XZ4````(.LSN`````#K
+M,?9'8`%T"H&+E```````!`"#BY0````!ZQ-F9I"X`````/:#E@```"!T!V:0
+MN`$```!;PV9FD&9FD&9FD$`/ML?#9F9FD&9F9I!F9I")^`^VQ,-F9F:09F:0
+M9F:0QD<D`DB+1U!`B'`"2(M'4,9`!P!(BT=0B%`,PV9F9I`/MD<]B$8"#[9'
+M/(A&`P^V1SN(1@0/MD<ZB$8*PV9FD`^V1T&(1@(/MD=`B$8##[9'/XA&!`^V
+M1SZ(1@H/MD<]B$8+#[9'/(A&#,-F9I!FD+D`````.=%]'&9F9I!F9I")T"G(
+M@_@"#YW`#[;`C4P!`3G1?.OSPV9FD&9FD&9FD$B#["A(B1PD2(EL)`A,B60D
+M$$R);"083(ET)"!(B?M(B=5!B?8/MD<X@_@J="F#^"I_#8/X*'0?Z?,```!F
+M9I`]B````'0I/8H```!F9F:0=![IV0```$0/MF-`1`^V:S](B>Y(B=_H````
+M`.L79I!$#[9C140/MFM$2(GN2(G?Z`````#&105`]H.6`````70U1(AE`$2(
+M;0A"C03U`````(A%`0^V0S@\*`^4PCR(#Y3`"="#X`&#^`$9P/?0@\!AB$4&
+MZVGV@Y8````$=#!$B&4!1(AM"0^V0S@\*`^4PCR(#Y3`"="#X`&#^`$9P(/@
+M$(/`)8A%!NLU9F:09I!$B&4!#[9#.H/@#PA%!0^V0S@\*`^4PCR(#Y3`"="#
+MX`&#^`$9P(/@`H/H.(A%!I!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(@\0H
+MPV9FD%532(/L*$B)\TB+=DA(B>?\N00```"X`````/-(J_:&IP````1T#$B+
+MEL@```!(_\KK!8M6>/_*@'LX)75BO0@```!(B=!(P>@8B`0D2(G02,'H$(A$
+M)`%(B=!(P>@(B$0D`HA4)`/VAM4````0=0_&1"0&`L9$)`<`Z:<```!(@<;J
+M````2(U\)`2Z!````.@`````Z8P```!F9I!F9I"](````$B)T$C!Z#B(!"1(
+MB=!(P>@PB$0D`4B)T$C!Z"B(1"0"2(G02,'H((A$)`-(B=!(P>@8B$0D!$B)
+MT$C!Z!"(1"0%2(G02,'H"(A$)`:(5"0']H;5````$'42QD0D"@+&1"0+`.L<
+M9F:09F:02('&Z@```$B-?"0(N@0```#H`````$B+>TA(8]5(B>;H`````$B#
+MQ"A;7<-F9F:0#[9'.@I'.PI'/`I'/0^VP`^V5T"#X@$)T'05NB0```"^!0``
+M`.@`````\\-F9F:0QD8&[$C'AZ``````````PTB#["!(B1PD2(EL)`A,B60D
+M$$R);"082(G[2(GU#[9'.(/X+W0*/8\```!T%>M3D$0/MF=`1`^V;S_H````
+M`)#K#T0/MF=%1`^V;T3H`````,9%!4#V@Y8````$=!)$B&4!1(AM"<9%!D+K
+M%F9F9I!$B&4!#[9#.H/@#PA%!<9%!D!(BQPD2(ML)`A,BV0D$$R+;"082(/$
+M(,-F9I!F9I!(B?'&0@5`#[9&.(/X-700/9$```!T(>LG9F9FD&9FD$@/MT=@
+M@^`!@_@!&<"#X/V#Z!:(0@;K',9"!NKK%F:0NB0```"^!0```$B)S^@`````
+M\\/V03D"=`3&020`\\/V1SSP=`^Z)````+X%````Z`````#SPV9FD&9FD&9F
+MD$F)\D&Y`````$&X#0```$B)R$2("$C_P$G_R'7U00^V0CB#^#4/A)T```"#
+M^#5_+(/X*'1P@_@H?Q&#^!MF9I`/A)(```#IM0(``(/X*F:0=%.#^"]T8>FD
+M`@``/8\```!T53V/````?QL]B````)!T,SV*````="QF9F:09F:0Z7L"```]
+MD0```&9FD&9FD'0V/>$```!T:&9F9I!F9I#I6P(```^V\DB)RDR)U^@`````
+MZ4X"``!(B<Y,B=?H`````.D^`@``2(G*3(G6Z`````#I+@(``$'V0CP!=!G&
+M009PQD$$`,9!`P#&00(`QD$%0.D.`@``QD$&X.D%`@``N`````!!@'HY`0^%
+M^@$``$$/MD(Z@_@<#X?5`0``B<#_),4`````QD$'!.G5`0``QD$'`.G,`0``
+MQD$&[&:0Z<$!``#&00;OQ@$#00^V0CN#R$"(00'IJ@$``,9!!N_&`0?IG@$`
+M`,9!!D#&00$!QD$%0.F-`0``QD$&[\8!`T$/MD([@\@(B$$!Z78!``#&00;O
+MQ@$"Z6H!``#&00;OQ@&"Z5X!``#&00;OQ@$&Z5(!``#&00;OQ@&&Z48!``#&
+M00;C00^V0CN(00'I-0$``,9!!K#&`=C&00-/QD$$PNDA`0``QD$&L,8!V<9!
+M`T_&003"Z0T!``#&00:PQ@':QD$#3\9!!,+I^0```$@/MT=@@^`!@_@!&<"#
+MX/V#Z!:(00;IW@```,9!!N_&`:KIT@```,9!!N_&`57IQ@```,9!!B_&00$!
+MQD$"$.FU````QD$&Y$$/MD(\B`%!#[9".XA!!>F=````00^V0CN(009!#[9"
+M/(@!00^V0CV(00)!#[9"/HA!`T$/MD(_B$$$00^V0D&(00I!#[9"0(A!`>MD
+MQD$&Z$$/MD(\B`%!#[9".XA!!4$/MD(]B$$"00^V0CZ(00-!#[9"/XA!!$$/
+MMD)`B$$!ZR]!]D(\`70HQD$&<,9!!`#&00,`QD$"`,9!!4#K$K@`````PV9F
+MD&9FD+@`````P[@!````\\.0D)!!5%53B?5,BV<(28'L``(!`+L`````.?-S
+M-F9FD&9FD$&+A"0`R```B04`````J`%U#K@`````ZQQF9F:09F:0OPH```#H
+M`````/_#.>MRT+C_____6UU!7,-F9I!F9I!(BW\(2('O``(!``^VTL'B"$4/
+MML!!P>`$1`G"B="#R`2$R0]%T$&#^?]T$42)R"7__P,`B8<$R```@\H"B1;#
+M2(M'"(/.`8FP`,;__\-FD$B#["A(B5PD$$B);"083(ED)"!(B?M)B?1(BV\(
+M2(N'^!,```^V4`)!N?____]!N`$```"Y`0```$B-="0,Z&W___^+="0,2(G?
+MZ*'___^^$"<``$B)W^CT_O__NO____^%P'49BX4,QO__B04`````B40D#$&(
+M!"2Z`````(G02(M<)!!(BVPD&$R+9"0@2(/$*,-F9F:09F9FD&9F9I!!5D%5
+M05154TB#[!!)B?R)S4&)]D&)U;L`````.<MS-$B-="0/3(GGZ#/___^%P'43
+M1(GP(D0D#T0XZ'4'N`````#K%;\*````Z`````#_PSGK<LRX_____TB#Q!!;
+M74%<05U!7L-F9F:09F:09F:04TB#[!!(B?M(BX?X$P``#[800;G_____0;@`
+M````N0````!(C70D#.AS_O__BW0D#$B)W^BG_O__OA`G``!(B=_H^OW__[K_
+M____A<!U'KG@DP0`N@(```"^`P```$B)W^@J____@_@!&=+WTHG02(/$$%O#
+M9F9FD&9F9I!F9I!54TB#[`A(B?M(B=5(BX?X$P``#[90"T&)\4&X`0```+D!
+M````2(UT)`3H\?W__XMT)`1(B=_H)?[__[X0)P``2(G?Z'C]__^Z_____X7`
+M=1A(BT,(BX`,QO__B04`````B$4`N@````")T$B#Q`A;7<-F9F:09F9FD&9F
+MD&9FD%532(/L"$B)^XGUQD0D!_](C50D!^@`````NO____^%P'5^N@````"`
+M?"0'`'1R2(G?Z,G^__^)PH/X_W1C2(N#^!,```^V4`I!B>E!N`````"Y````
+M`$B)YDB)W^@^_?__BS0D2(G?Z'/]__^^$"<``$B)W^C&_/__NO____^%P'4>
+MN>"3!`"Z`````+X#````2(G?Z/;]__^#^`$9TO?2B=!(@\0(6UW#9F:09F:0
+M55-(@^P(2(G[B?7H0/[__XG"@_C_=&9(BX/X$P``#[90!D&)Z4&X`````+D`
+M````2(UT)`1(B=_HL_S__XMT)`1(B=_HY_S__[X0)P``2(G?Z#K\__^Z____
+M_X7`=1ZYX),$`+H`````O@,```!(B=_H:OW__X/X`1G2]]*)T$B#Q`A;7<-F
+M9F:09F:09F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@2(G]08GU08G42(M?
+M".B6_?__1(FC",;__TB+A?@3```/ME`%18GI0;@$````N0````!(C70D!$B)
+M[^@)_/__BW0D!$B)[^@]_/__OA`G``!(B>_HD/O__[K_____A<!U'KF($P``
+MN@````"^`0```$B)[^C`_/__@_@!&=+WTHG02(M<)`A(BVPD$$R+9"083(ML
+M)"!(@\0HPV9F9I!F9F:09F:09F:02(/L*$B)'"1(B6PD"$R)9"003(EL)!A,
+MB70D($F)_D&)]4F)U(G-NP`````YRW,?B=A"BQ0@08UT'0!,B??H_?[__X/X
+M_W0,@\,$.>MRX;@`````2(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$*,-F
+M9F:09F9FD&9F9I!F9I!(@^PH2(E<)!!(B6PD&$R)9"0@2(G[28G42(MO"$B!
+M[0`"`0"`^06X!`````]#R$B+A_@3```/ME`$08GQ1`^VP;D!````2(UT)`SH
+MT/K__XMT)`Q(B=_H!/O__[X0)P``2(G?Z%?Z__^Z_____X7`=1F+A0S(``")
+M!0````")1"0,08D$)+H`````B=!(BUPD$$B+;"083(MD)"!(@\0HPV9F9I!F
+M9F:09F9FD&9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)
+MB?Y!B?1(B=5%C3P,B?.#X_Q!B?5!@^4#=$FY!````$B-5"0$B=[H`O___XU#
+M!+D$````1#GX=@E$B?E$*>%$`>E$B>I!.<US%TB-="0$B=`/M@0&B$4`2/_%
+M_\(YRG+N@\,$18G]08/E_$0YZW,GN00```!(C50D!(G>3(GWZ*K^__^+1"0$
+MB44`2(/%!(/#!$0YZW+91#G[<SFY!````$B-5"0$B=Y,B??H?O[__T2)^2G9
+MN@`````YRG,72(UT)`2)T`^V!`:(10!(_\7_PCG*<NZX`````$B+7"0(2(ML
+M)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#D%532(/L"$B)^\=$)`0`````
+M2(MO",:'\!,````/MA4`````0;D`````0;@"````N0$```!(C70D!.@2^?__
+MBW0D!$B)W^A&^?__OA`G``!(B=_HF?C__X7`=3N+A0S&__^)!0````")1"0$
+M/;]#``!U),>#X!,``+]#``#'@^03`````"``QX/H$P```!```&:X``#K!;C_
+M____2(/$"%M=PV9F9I!F9F:09F:09F:055-(@^P(2(G[QT0D!`````!(BV\(
+MQH?P$P````^V%0````!!N0````!!N`(```"Y`0```$B-="0$Z&+X__^+="0$
+M2(G?Z);X__^^$"<``$B)W^CI]___A<!U.XN%#,;__XD%`````(E$)`0]'V,`
+M`'4DQX/@$P``'V,``,>#Y!,`````!`#'@^@3``````$`9K@``.L%N/____](
+M@\0(6UW#9F9FD&9F9I!F9I!F9I!54TB#[`A(B?O'1"0$`````$B+;PC&A_`3
+M```!#[85`````$&Y_____T&X`@```+D!````2(UT)`3HLO?__XMT)`1(B=_H
+MYO?__[X0)P``2(G?Z#GW__^%P'5JBX4,QO__B04`````B40D!#T?0P``="X]
+M'T0``'5,QX/@$P``'T0``,>#Y!,`````!`#'@^@3``````$`9K@``.LM9F:0
+MQX/@$P``'T,``,>#Y!,`````!`#'@^@3``````$`N`````#K!;C_____2(/$
+M"%M=PV9F9I!F9F:09F9FD&9FD%532(/L"$B)^\=$)`0`````2(MO",:'\!,`
+M```/MA4`````0;D`````0;@"````N0$```!(C70D!.C2]O__BW0D!$B)W^@&
+M]___OA`G``!(B=_H6?;__X7`=76+A0S&__^)!0````")1"0$/>\1``!T#CWO
+M$@``="SK569FD&:0QX/@$P``[Q$``,>#Y!,`````!`#'@^@3``````$`N```
+M``#K,,>#X!,``.\2``#'@^03``````0`QX/H$P`````!`+@`````ZPMF9I!F
+M9I"X_____TB#Q`A;7<-F9F:04TB)^^B'_?__A<!U$TC'@_@3````````N@``
+M``#K89!(B=_H&/[__X7`=1)(QX/X$P```````+H`````ZT)(B=_HFOS__X7`
+M=1)(QX/X$P```````+H`````ZR1(B=_HO/[__[K_____A<!U$TC'@_@3````
+M````N@````!F9I")T%O#9F9FD&9F9I!F9F:02(/L*$B)7"0(2(EL)!!,B60D
+M&$R);"0@2(G[B?5!B<U)B=2Z`````$B#O_@3````#X2Z````183`="V#_O]U
+M$0^WA^`3``!F08D$).F6````3(GBZ-?Z__^Z`````(7`#X6*````ZW^#_O]F
+M9I!FD'4308`\)`\/E(?Q$P``N@$```#K:[H`````@+_Q$P```'1=B?"Z````
+M`/>WZ!,``(72=2J`O_`3````=`[H`````+H`````A<!U-8GN2(G?Z.OW__^Z
+M`````(7`=2)$B>E,B>*)[DB)W^@B^?__N@````"%P'4)N@$```!F9F:0B=!(
+MBUPD"$B+;"003(MD)!A,BVPD($B#Q"C#D)"0D)!!5T%6055!5%532(L'BX!@
+M`/__B04`````@^`#=`>#^`%T#^M)QX?H"````@```)#K/(L%`````$ACT$B)
+M/-4`````_\")!0````"+!0````!(8]!(B3S5`````/_`B04`````QX?H"```
+M`0```(L%`````$ACT$B)/-4`````_\")!0````"`/0``````#X6H````0;T`
+M````A<`/CIT"``!(@ST``````'0W1(GH#[;02,?&`````$B+#0````!(.PS6
+M=!U(BP362(F(V`@``$B+%-9(BP4`````2(F"V!P``$B#/0``````=#=$B>@/
+MMM!(Q\8`````2(L-`````$@[#-9T'4B+!-9(B8C@"```2(L4UDB+!0````!(
+MB8+@'```0?_%00^VQ3L%``````^,:____^D#`@``0;T`````3(L5`````$V%
+MT@^$[0```$&_`````$G'Q@````!!N`````!$.ST`````#XVW````2<?$````
+M`&9F9I!F9I!$B<`/MM!)BP342(.XV`@````/A7X```!,.=!T>;L`````#[8-
+M`````(3)=&E$B<)$#[;*2,?%`````$G'PP````!*BW3-`#A..7(W#[96.0^V
+MP8G'`ST`````.?IS)$$X2CER'D$/MD(Y.?AS%4R)EM@(``!*BT3-`$R)D-@<
+M``#K$__##[;#2,'@!4(/MDP8#83)=:Q!_\!!#[;`.P4`````#XQ7____0?_%
+M1(GJ#[;"38L4QDV%T@^%(/___T&]`````$R+%0````!-A=(/A.H```!!OP``
+M``!)Q\8`````0;@`````1#L]``````^-M````$G'Q`````!F9F:01(G`#[;0
+M28L$U$B#N.`(````#X5^````3#G0='F[``````^V#0````"$R71I1(G"1`^V
+MRDC'Q0````!)Q\,`````2HMTS0`X3CER-P^V5CD/ML&)QP,]`````#GZ<R1!
+M.$HY<AY!#[9".3GX<Q5,B9;@"```2HM$S0!,B9#@'```ZQ/_PP^VPTC!X`5"
+M#[9,&`V$R76L0?_`00^VP#L%``````^,5____T'_Q42)Z@^VPDV+%,9-A=(/
+MA2/___];74%<05U!7D%?PV9FD&9FD%.[`````+@!````@#T``````'1IZPJX
+M`0```.M@9F:0#[;#2,'@!?_##[:(`````(3)=$1$BPT`````2<?"`````#A/
+M.7(>#[97.0^VP4:-!`A$.<)S#CA..7()#[9&.40YP'*Q#[;#2,'@!?_#0@^V
+M3!`-A,EURK@`````6\.0BX?H"```N@$````[AN@(``!W#HN'Z`@``#N&Z`@`
+M`!G2B=##9F9FD&9F9I!F9F:0N``````[/0````!]-TACQTC'P0````!(C01`
+M2,'@`P^W%`AFB18/MU0(`F:)5@(/ME0("(A6"`^V1`@)B$8)N`$```#SPV9F
+M9I!F9I!F9I!!5D%505154TB#[`B)?"0$O0````!)Q\8`````2<?%`````$AC
+MQ4B)PDC!X`5F0H,\,``/A+$```!!N@````!-B>A"@'PH#``/A)$```!(Q\,`
+M````_$&\`````$F)TY!)B=%)8\)(C0302(TT@TB-?"0$N00```#SI@^7P@^2
+MP#C"=3Q,B<9,B<E(P>$%0@^V1`$-_\!"B$0!#4*`?`$,`'0=0CI$`0QV%F8/
+MML!F0@^V?`$,1(GB9O?WB%0Q#9!!_\),B=I)Q\``````3(G82,'@!4(/MD0`
+M#$0YT'^!_\6#_0,/CCG___](@\0(6UU!7$%=05[#9F:09F:09F:005=!5D%5
+M05154TB#[!C&1"07`$&_``````^V1"07B40D#$&^`````$$/MM^)7"0000^V
+MUKD`````BW0D$(M\)`SH`````$&)Q$&Y`````$0[#0`````/C4H!``!(Q\4`
+M````26/!2(T$0$C!X`,/MU0H`L'B$`^W!"@)PD0YX@^%$0$``+L`````2<?#
+M`````$ECP4B-!$!(C33%`````$G'Q0````!)Q\(`````9I`/MM-(B=%(P>$%
+M9D*#/!D`=5)(BX8`````2HD$&8N&`````$*)1!D(2@^V1"D,2,'B`TB-!`(/
+MMEPD%T&(7(,-2@^V1"D,2(T$`D6(?(,.2@^V1"D,2`'"18ATDP]"_D0I#.MW
+M#[;[2<?``````$B)^4C!X05"#[9$`0RZ`````$+W=!8$A=)T1TH/MD0!#$B-
+M%/T`````2(T$`@^V7"0708A<@PU*#[9$`0Q(C00"18A\@PY*#[9$`0Q(`<)%
+MB'23#T+^1`$,ZQ)F9F:09F:0_\.`^P,/AB7___])8\%(C01`_T3%#$'_P40[
+M#0`````/C+W^__]!_L8/A('^__]!_\=!@/\?#X9F_O___D0D%X!\)!?_#X5(
+M_O__2(/$&%M=05Q!74%>05_#9F:09F:005=!5D%505154TB#[`A(B?-)B=1!
+MO0````"#/0``````=0_'!0`````!````Z.[]__](A=MT`\8#`$&Z`````$0[
+M%0````!].TC'P0````!(Q\8`````26/"2(T$0$B-%,4`````1`-L"@Q(A=MT
+M"`^V`P($,H@#0?_"1#L5`````'S3387D#X2K````0;H`````26/"2(G"2,'@
+M!6:#N```````#X2-````0;@`````@+@``````'1Q2,?%`````/Q)Q\<`````
+M28G62<'F!4F)TTF)T4ECP$B-!-!(C72%`$R)Y[D$````\Z8/E\(/DL`XPG4<
+M2(7;=`],B<A(P>`%0@^V1#@-B`-'#[9L/@SK&4'_P$R)VDR)V$C!X`4/MH``
+M````1#G`?ZA!_\)!@_H##XY;____00^VQ4B#Q`A;74%<05U!7D%?PV9FD&:0
+MN``H``##9F9FD&9FD&9FD+C0````PV9F9I!F9I!F9I"X"````,-F9F:09F:0
+M9F:0059!54%455-)B?Q!B?5(B=-)B<Y(C:H`%```N0````"Z`"@``$B)V(@(
+M2/_`2/_*=?9,B7,@BQ4`````C4(!B04`````B%-`1(EK.,9#00!!#[<$)&:)
+M0S!!#[=$)`)FB4,R08M$)`2)0S1,B74@B%5`1(EM.,9%00%!#[<$)&:)13!!
+M#[=$)`)FB44R08M$)`2)130/MT,R/2(G``!_:ST@)P``#XWU````/4`A```/
+MA.H````]0"$``&9FD&:0?QL]("$```^$TP```#TB(0``#X3(````Z=<````]
+M1"$```^$N````#U$(0``9F:0#XR^````+1`G``"#^`%FD`^'K@```.F5````
+M/6`G```/A(H````]8"<``&9FD&:0?S`]0"<``'1W/4`G``!FD'\0/3`G``!T
+M9V9F9I!F9I#K<CU$)P``=%=F9F:09F:0ZV(]@B<``'1'/8(G``!FD'\0/8`G
+M``!T-V9F9I!F9I#K0CV`D0``=`L]@)0``&:0=![K,&;'0SR`D<9#/@1FQT4\
+M@)'&13X$ZQIF9I!F9I!FQT,\@)3&0SX$9L=%/("4QD4^!$$/MD0D"(A#0D$/
+MMD0D"(A%0KD```0`N@````"^`@```$R)]^@`````2(D#N0`@``"Z`````+X`
+M````3(GWZ`````!(B4,02(,[`'0%2(7`=0JX`````.GQ````2(L#2(V(``(!
+M`$B)2PA(C9````(`2(D32`4`0`(`2(E%`$B)30A(BT,02(E%$$&X`````$0[
+M!0````!]5DC'QP````!$BPT`````26/`2(T$0$B-#,4`````08L$)#D$.74H
+M2,?&`````(L$,?_`B00Q@WPY#`!T$CM$.0QV#+H`````]W0Y#(D4,4'_P$4Y
+MR'RX2(M#",>`((+__P'P`P!(BT,(QX`H@O__`0``Z$B+>R"^>````.@`````
+MB<(E`'```#T`(```=A$/MO)(BWL@NG@```#H`````$2)[^BL^/__2(G?Z%3T
+M__^X`0```%M=05Q!74%>PV9FD&9FD%-(B?OH`````$B!PP`4``!(B=_H````
+M`+@!````6\.02(/L&$B)7"0(2(EL)!!(B?U(BY_0"```2('#`!0``.@`````
+M@'U1`74&@'M1`70[2(V=<`$``$B+?2A(B=[H`````,>%<`$``.@#``!(QX6`
+M`0```````$B)K8@!``!(BWTH2(G>Z`````!(BUPD"$B+;"002(/$&,-F9I!F
+M9I!54TB#[`A(B?M(C:\`%```Z`````!(B4,H2(E%*$B)F]`(``!(B9W0"```
+MBX/H"```B87H"```2(G?Z`````!(B>_H`````$B)W^@`````N@````"$P'1^
+M2(GOZ`````"Z`````(3`=&U(B=_H`````+_0!P``Z`````!(B=_H`````$B)
+MW^@`````QX-P`0``Z`,``$C'@X`!````````2(F;B`$``$B-LW`!``!(BWLH
+MZ`````"^`````$B)W^@`````O@````!(B>_H`````+H!````B=!(@\0(6UW#
+MD$%455-(@^PP2(G[N`````"P;;3_2"7__P#_2`T``",`2+K___\`_____T@A
+MT$@-````%$BZ_____P#___]((=!(N@`````Z````2`G02+K______P#__T@A
+MT$BZ``````#O``!("=!(NO_______P#_2"'02+H````````6`$@)T$BZ____
+M_____P!((=!(N@````````"22`G02(E$)`A(@[_8"````'0'2(N?V`@``+D`
+M````NB````!(C40D$(@(2/_`2/_*=?;&1"04`4&\`````$B-;"00N2````!(
+MB>J^#@```$B)W^@`````A<!U1[^`&@8`Z`````"Y(````$B)ZKX/````2(G?
+MZ`````"#^"!U(TB-="0@2(U\)`BY"````/SSI@^7P`^2PCC0N`$```!$#T3@
+M183D=1%(Q\<`````N`````#H`````$$/ML1(@\0P6UU!7,-F9I#SPV9F9I!F
+M9F:09F:09F:055-(@^P(2(G]2(GSN0````"Z@````$B)\&9F9I!F9I"("$C_
+MP$C_RG7V@[WH"````0^40Q.+13B)`X!+$1`/MT4P9HE#!`^W13)FB4,&BX7H
+M"```B$-PQD,2(`^W13)F/2`A#Y3"9CTB(0^4P`G0J`%T1,9#%P+'0SQ2;V-K
+MQT-`97120<=#1$E$(%/'0TA31"`RQT-,,3)X(,=#4$-O;G3'0U1R;VQL9L=#
+M6&5RQD-:`.GB````#[=5,HV"\-C__V:#^`$/EL%F@?I`(0^4P`G(J`%U"V:!
+M^D0A#X6D````QD,7!`^W13)F+1`G9H/X`7<]QT,\4F]C:\=#0&5T4D''0T1)
+M1"`RQT-(-S%X(,=#3%-!4R#'0U!#;VYTQT-4<F]L;&;'0UAE<L9#6@#K:0^W
+M13)F/4`A#Y3"9CU$(0^4P`G0J`%T4<=#/%)O8VO'0T!E=%)!QT-$240@4\=#
+M2%-$(#+'0TPQ-'@@QT-00V]N=,=#5')O;&QFQT-897+&0UH`ZQ3&0Q<(2(U[
+M/$C'Q@````#H``````^V0Q?V8Q*(0Q"$P'4$QD,0@,=#&$AI9VC'0QQ0;VEN
+MQT,@="!49<=#)&-H;F_'0RAL;V=IQT,L97,L(,=#,$EN8R[&0S0`2(.]X`@`
+M``!T$4B+A>`(``!(BT`02(E#:.L(2(M%$$B)0VC'0V``(```2(/$"%M=PV9F
+M9I!F9F:09F9FD&9FD,:'RP````##9F9FD&9F9I!(@^Q82(E<)$!(B6PD2$R)
+M9"102(G]3(MG>$F+A"30"```@'@_``^%JP```$B+GX````!(BW]@1`^VCP<!
+M``!$#[9%``^V30(/ME4!BW4(#[:'TP```(E$)#@/MH?2````B40D,`^VA]$`
+M``")1"0H#[:'T````(E$)"`/MH?/````B40D&`^VA\X```")1"00#[:'S0``
+M`(E$)`@/MH?,````B00D08/@`4C'QP````"X`````.@`````2,>%@```````
+M``"+50A(B[V0````2(GN_]/K/4B-GY@```!)BWPD*$B)WN@`````QX68````
+M]`$``$C'A:@`````````2(FML````$F+?"0H2(G>Z`````!(BUPD0$B+;"1(
+M3(MD)%!(@\18PV9F9I!F9F:005=!5D%505154TB#[`A)B?U)B?0/M])(:=*(
+M`0``2(G52`.O&`D``$B+O]`(``!(@<<`%```2(EN8$B)=3A(@WU0`'4+2(-]
+M6``/A*,#``"^`````$&`#"0!2(M%6$F)1"1P2(M%4$F)1"1HN@````!!@'U#
+M`'8E2(M-2&9F9I`/ML)(:\!H2CN,*$@2```/A(0"``#_PD$X54-WX[J`____
+M28N-T`@```^VP@^VA`A`"```//]T)$B#?5``=!L/ML!(:<#(#P``2`.!:`D`
+M`$@[15`/A#4"``#_QO_"@/J!=L:Z@O___TF+C=`(``"0#[;"#[:$"$`(```\
+M_W0=#[;`2&G`T````$@#@4`)``!(.T58#X3K`0``_\;_PH#ZA7;-NH#___\/
+MML(/MH0X0`@``#S_="1(@WU0`'0;#[;`2&G`R`\``$@#AV@)``!(.T50#X2?
+M`0``_\;_PH#Z@7;&NH+___\/ML(/MH0X0`@``#S_=!T/ML!(:<#0````2`.'
+M0`D``$@[15@/A%T!``#_QO_"@/J%=LU!@'U1`74_2(-]4`!T$@^V=7E(BWU0
+MN@````#H`````$B#O1@!````#X0)`@``#[:U!0$``$B+O1@!``"Z`````.@`
+M````2(.]&`$````/A.,!``!,BWU00;X`````08!_6`!V2DF-7TA(B=_H````
+M`$B-2/!(BU,(2(E#"$B)&$B)4`A(B0*`N0<!``#_=1:`>4$`=1!(@[D8`0``
+M`'4/9F:09F:00?_&13AW6'>Z13AW6`^%VP````^VA0<!``!!B$0D`D&^````
+M`$&`?U@`#X;``0``28U?2$B)W^@`````2(U(\$B+4PA(B4,(2(D82(E0"$B)
+M`DB#>3@`=$=(BU$X#[9"`CJ!!P$``'0W2(.Z@`````!U+4B#NH@`````=2,/
+MMH$'`0``B$("2`^W43!)B[70"```OP<```#H`````&9FD$'_QD4X=UAWB^E"
+M`0``08AT)`'IHO[__T&(="0!9F:0Z97^__]!B'0D`>F+_O__08AT)`'I@?[_
+M_T$/MD5!C02"08B$),P```#I;_W__P^V17E!B$0D`L:%!P$``/]!O@````!!
+M@']8``^&X0```$F-7TA(B=_H`````$B-2/!(BU,(2(E#"$B)&$B)4`A(B0*`
+MN0<!``#_=$S&@0<!``#_2(-Y.`!T/DB+43@/MD(".D%Y=#%(@[J``````'4G
+M2(.ZB`````!U'0^V07F(0@)(#[=1,$F+M=`(``"_!P```.@`````0?_&13AW
+M6'>$ZU\/MD5Y08A$)`+K5$$/MD5!C02"08A$)`%!B(0DS````.LIN@````!!
+M@'U#`'8=2(M-2`^VPDAKP&A*.XPH2!(``'3(_\)!.%5#=^=!.%5#=09!QD0D
+M`?]!QD0D`@!FD$B+A9````!)B40D($B+A9@```!)B40D*$B+A:````!)B40D
+M,$B+A:@```!)B40D.$B+A;````!)B40D0$B+17Q)B40D#$B+A80```!)B40D
+M%(N%C````$&)1"0<2(N%N````$F)1"1(#[=%8&9!B40D6`^W16)F08E$)%I(
+MBT5P28E$)%`/MD5Z08A$)%SV140$=2-!@+WO$P```'010?Z-[Q,``$&`O>\3
+M````=0A,B>_H`````$B+13@/MG`!N@````!,B>_H`````$@/MD5`J`)T#Z@$
+M=`NH`74'08`,)`+K!4&`)"3]#[951-#J@^($00^V!"2#X/L)T$&(!"1,B>?H
+MF/G__TB#Q`A;74%<05U!7D%?PV9FD&9FD&9FD$%7059!54%455-(@^P(28G]
+MB?5)B=2^`````+K0````3(G@0(@P2/_`2/_*=?5!B6PD"(/]/WX*28'%`!0`
+M`(/M0$ACQ;H`````28.\Q4`$````#X6#`@``2&/%38FDQ4`$``!-B6PD>$F)
+MC"2`````38F$))````"Z`0```$&`?5$!#X53`@``9L=$)`;_`(']A0```'\/
+M9D(/MH0H0`@``&:)1"0&9H%\)`;_``^$_@$``$@/MT0D!DF+C1@)``!(:="(
+M`0``]D0*0P0/A-\!``"+1`I`)0#__P`]``#_``^%RP$``$B-'`KV0T0$#X1,
+M`0``QH/@`````$@/MD-`J`)T,J@$="ZH`70JQD-"!<9#0P0/ME-Y2(MS4$B+
+M>TA(B=GH`````.E]`0``QH/A`````>MR2`^V0T"H`F:0#X6`````J`1T?*@!
+M='A,BV-(QD-"`\9#0P1!O@````!!@'PD#@!T04F-;"1@2(GOZ`````!(BU4(
+M2(E%"$B)*$B)4`A(B0*`>$+_#Y7"2#G8#Y7`#[;2A=!UDT'_QD$/MD0D#D0Y
+M\'_$@+OA`````0^$]0```$B)WDR)[^@`````Z>4```!(#[9#0*@"#X38````
+MJ`0/A-````"H`69FD`^%Q0```$B+0T@/MD`-O0````!!@'T^`'8I1`^VX$`/
+MMLU,B>!(T_BH`70/N@````")SDR)[^@`````_\5!.&T^=]O&0T,&QD-"!6;'
+M@\```````$B)WDR)[^@`````ZVI,BWM(QD0D!0!!@'\.`'9*38UW8$R)]^@`
+M````2(G#28M&"$F)7@A,B3-(B4,(2(D8@'M"_W04#[9#03PB#Y3"/`T/E,`)
+MT*@!=3S^1"0%#[9$)`5!.$<.=[H/MU0D!DR)YDR)[^@`````N@$```#K*DAC
+MQ4G'A,5`!````````+H`````ZQ1(8\5)QX3%0`0```````"Z`````(G02(/$
+M"%M=05Q!74%>05_#9F:02(/L*$B)'"1(B6PD"$R)9"003(EL)!A,B70D($B)
+M^TF)]4F)U$B+;V!(A>UU"DB)U__6Z0@!``!(@[^(`````'4*2(._@`````!T
+M"TR)YT'_U>GI````@+W@`````&:0#X7.````2(M]2$@/MD<,J!`/A;T```"H
+M"`^%M0```$R+-X!]>P!T#4B)ZKX&````Z`````!,B:N(````3(FCD````$@/
+MMD5`J`)T)J@$="*H`70>QD5"!<9%0P0/ME5Y2(MU4$B+?4A(B>GH`````.MN
+M2`^V14"H`G4EJ`1F9I!T'J@!=!K&14(#QD5#!$B)[DR)]^@`````ZT5F9I!F
+MD$@/MD5`J`)T-Z@$9F:09I!T+J@!=2K&14(%QD5#!F;'A<```````$B)[DR)
+M]^@`````ZPQ,B>=!_]5F9I!F9I!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(
+M@\0HPV9FD$B#[!A(B1PD2(EL)`A,B60D$$B)\TB+1TA,BR!(BVYH#[9&)(/X
+M('1/@_@@?Q*%P'0B@_@&?SKK+V9F9I!F9I"#^")T,X/X(GP>@\"`@_@!=Q_K
+M%$B+1SC'0`0`````QH6J`````>L0QH6J````#>L'N`````#K,4B#>W@`=!%(
+MC7-X3(GGZ`````!F9I!FD$B)WDR)Y^@`````2(GO_Y7`````N`$```!(BQPD
+M2(ML)`A,BV0D$$B#Q!C#9F9FD$B#[#A(B5PD"$B);"003(ED)!A,B6PD($R)
+M="0H3(E\)#!(B?M(B?5,BV]X2(M&2$B).$B#?V``=1;&AJH````"2(GW_Y;`
+M````Z0<&``"02(M'8/9`1`)T%<:&J@````)(B??_EL````#IYP4``$R)[^@`
+M````28G$2(7`=17&A:H````"2(GO_Y7`````Z<(%``#'@)0`````````2(EH
+M:$B+0V!)B40D*$B+0V`/MT`P9D&)1"0@0<9$)"2`#[:%J````(/X`@^$I`$`
+M`(/X`G\)A<!T(^F#`P``@_@##X0T`@``@_@$9F9FD&9FD`^$]`$``.EE`P``
+M2(M#8/9`8`$/A,0```#VA:D````"=`A!QD0D.(CK&0^VA:D```"#X`0\`1G`
+M@^`%@^AV08A$)#A(BY60````#[>-F````$'&1"0Y`$B)T$C!Z#A!B$0D.DB)
+MT$C!Z#!!B$0D.TB)T$C!Z"A!B$0D/$B)T$C!Z"!!B$0D/4B)T$C!Z!A!B$0D
+M/DB)T$C!Z!!!B$0D/TB)T$C!Z`A!B$0D0$&(5"1!0<9$)$(`0<9$)$,`B<AF
+MP>@(08A$)$1!B$PD14'&1"1&`$'&1"1'`.F#````]H6I`````G0(0<9$)#@H
+MZQD/MH6I````@^`$/`$9P(/@!8/`*D&(1"0X2(N5D`````^WC9@```!!QD0D
+M.0!(B=!(P>@808A$)#I(B=!(P>@008A$)#M(B=!(P>@(08A$)#Q!B%0D/4'&
+M1"0^`(G(9L'H"$&(1"0_08A,)$!!QD0D00!(BT-@2`7D````28E$)%!!QD0D
+M,"!!@XPDE`````+I^0$``("]D````!!W!?8#`G4,QH6J````!NFU`P``2`^V
+ME9````!(B[68````28U\)#CH`````$B+0V!(!>0```!)B40D4$'&1"0P($&!
+MC"24```````0`$'&1"0EJ_:%J0````8/A)(!``"+A90```!!B40D-.F"`0``
+M#[:%J0```(/@,#P@=1=!QD0D.!M!QD0D.0%!QD0D/`#I70$``$'&1"0X->E2
+M`0``2(M#8$@/MD!`J`%T!*@$=0S&A:H````&Z0L#``!!@8PDE```````(``/
+MMX6<````9CN%D@```'1+#[:%FP```(/X0G0_@_A"?PZ#^$!T-69F9I!F9I#K
+M(#VP````=`D][````&:0=1`/MX6<````9HF%D@```.L,QH6J````!NFD`@``
+M0<9$)#BP#[>%D````$&(1"0Y#[>%D@```$&(1"0Z#[>%E````$&(1"0[#[>%
+ME@```$&(1"0\#[>%F````$&(1"0]#[:%F@```$&(1"0^#[:%FP```$&(1"0_
+M9@^VA9$```!!B$0D0&8/MH63````08A$)$%F#[:%E0```$&(1"1"9@^VA9<`
+M``!!B$0D0V8/MH69````08A$)$3VA:D````&="H/MX6<````P>`)08E$)#1!
+M@XPDE`````3K$&9F9I#&A:H````&Z=8!``!-C70D6$G'A"2@``````````^V
+MA:D```"H!@^$H`$``+L`````J`)T"T&#C"24````".L)08.,))0````02(.]
+ML`````!T$O:%J0````%T"4B+G;````#K*DB#O;@`````="!)B[4@"@``N@``
+M``!(B>__E;@```"%P'0'28N=(`H``$B%VW0U3(GGZ`````"^`````$R)]^@`
+M````2(MS"(L33(GWZ`````!(C4,$2(/#$(,X`'3EZ0P!``!,B>_H`````$B)
+M!"1(A<!U#,:%J@````;I_````$B+%"1(BT(028E$)$A)B50D>+D`````N@`"
+M``"("$C_P$C_RG7V]H6I````!`^$CP```$'VA"26````('0828M\)$A!BU0D
+M-$B+M:````#H`````.ML0?:$))8````0=&%-BWPD2$B#O;``````=!+VA:D`
+M```!=0E(BYVP````ZR!)B[4@"@``N@$```!(B>__E;@```"%P'0'28N=(`H`
+M`$B+<PB+$TR)_^@`````BP-)`<=(C4,$2(/#$(,X`'3@O@````!,B??H````
+M`$&+5"0T2(L$)$B+<!A,B??H`````.L)08.,))0````!3(GF3(GOZ`````#K
+M%$R)YDR)[^@`````2(GO_Y7`````2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D
+M*$R+?"0P2(/$.,-F9F:09F:02(/L:$B)7"0X2(EL)$!,B60D2$R);"103(ET
+M)%A,B7PD8$B)^TF)]$B)3"0P08G51(A$)"_'1"04_____XG0P>`)9HE$)!),
+MBW]@387_=`F`O\L`````=`F+1"04Z0\#``!)BU=(2(E4)`A,BW=X9L>'R```
+M`!`G3(GWZ`````!(B<6+1"042(7M#X3A`@``3(GWZ`````!(B40D($B%P'44
+M2(GN3(GWZ`````"+1"04Z;L"``!)B[;0"```QD8_`4B)VK\%````Z`````!!
+M@$]$`DB+4V"^(0```$B+?"0(Z`````!(C4582(E$)!B`?"0O`'00QX64````
+M"@```,9%."CK)\>%E````!(```#&13@J2(M4)"!(BWH02`^W5"022(MT)##H
+M`````$B+0V#V0&`!='Z`?"0O`1G`@^`"@^AXB$4XQD4Y`$R)X$C!Z#B(13I,
+MB>!(P>@PB$4[3(G@2,'H*(A%/$R)X$C!Z""(13U,B>!(P>@8B$4^3(G@2,'H
+M$(A%/TR)X$C!Z`B(14!$B&5!QD5"`,9%0P!$B>AFP>@(B$5$1(AM1<9%1@#&
+M14<`ZTR`?"0O`1G`@^`"@\`HB$4XQD4Y`$R)X$C!Z!B(13I,B>!(P>@0B$4[
+M3(G@2,'H"(A%/$2(93W&13X`1(GH9L'H"(A%/T2(;4#&14$`2(GOZ`````!(
+MBT-@#[=`,&:)12#&122`2(E=*$B+5"0@2(M"$$B)14@/MT0D$HE%-$B)57C&
+M13`@2(M#8$@%Y````$B)15!(QX6@`````````+X`````2(M\)!CH`````(M5
+M-$B+1"0@2(MP&$B+?"08Z`````#&@\L````!2(GN3(GWZ`````!(A=L/A)\`
+M``!(@WM@`'14@+O+`````'1+9H&[R````)8`=1)(BU-@2(MZ2+XA````Z```
+M``!F_XO(````O]`'``#H`````$R)]^@`````2(7;=%1(@WM@`'0)@+O+````
+M`'6U2(7;=#](@WM@`'0X9H.[R`````!T+H!])`!U*,=$)!0`````@'PD+P!T
+M&4@/MU0D$DB+1"0@2(MP$$B+?"0PZ`````!(@WUX`'0,2(UU>$R)]^@`````
+M2(GN3(GWZ`````!)B[;0"```QD8_`$B)VK\&````Z`````!!@&=$_8M$)!1(
+MBUPD.$B+;"1`3(MD)$A,BVPD4$R+="183(M\)&!(@\1HPV9F9I!F9F:09F9F
+MD$B#[!A(B5PD"$R)9"0028G\08AT)$]`#[;>B=[H`````$F!Q``4``")WDR)
+MY^@`````N`$```!(BUPD"$R+9"002(/$&,-F9F:09F:09F:02(/L".@`````
+M#[;`2(/$",-F9F:09F9FD&9F9I!F9I"X`````,-F9F:09F:09F:0N0````"Z
+M@````$B+M]`(```/M\*`O#!`"```_P^5P`^VP`'!_\)F@?J%`';D2(N_T`@`
+M`$B!QP`4``"Z@`````^WPH"\.$`(``#_#Y7`#[;``<'_PF:!^H4`=N2)R,.0
+MB?*)\,#H!#P)=@6#P%?K"(GPP.@$@\`PB`>)T(/@#X/X"7X,B="#X`^#P%?K
+M"F:0B="#X`^#P#"(1P'#9F9FD$B#[!!(B1PD3(ED)`A(B?M!B?1,B>`/MO3H
+MHO___T$/MO1(@\,"2(G?Z)+___](BQPD3(MD)`A(@\00PV9F9I!54TB)U4&Y
+M`````+D`````N@`!``!(B>B("$C_P$C_RG7VN8````!,BX?0"```#[?!9D(/
+MMI0`0`@``&:!^O\`#X1B`0``1(G(0?_!.?`/A50!``!F@?F!``^'Q0````^W
+MPDAIP,@/``!(B<))`Y!H"0``2(-Z$`!T9[F`````3(G&#[?!9@^VA#!`"```
+M9CW_`'07#[?`2&G`R`\``$@#AF@)``!(.T(0=#'_P6:!^8$`=LZ[`````(!Z
+M6@!V,;X!````#[;##[9,$'")\-/@"44@_\,X6EIWZNL4B$T"Z]/&10+_2(M"
+M"`^V0`V)12#&10`!#[9"68A%`4B+0GA(B44$2(N"B````$B)10Q(BX*0````
+M2(E%%(N"H````(E%'.MZ2(N'T`@```^WTDAITM````!(B=-(`YA`"0``QD4"
+M_\9%``)(BX?0"```2(N`0`D```^V1`([B$4!2(N#B`````^V0`V)12#&101V
+M#[=S/$B-?07H1/[__\9%#&0/MW,^2(U]#>@S_O__QD4<<@^V<SE(C7T=Z.+]
+M__^X`````.F:`0``_\%F@?F%``^&<O[__TB+O]`(``!(@<<`%```N8`````/
+MM\%F#[:4.$`(``!F@?K_``^$40$``$2)R$'_P3GP#X5#`0``9H'Y@0`/A\(`
+M```/M\)(:<#(#P``2(G"2`.7:`D``$B#>A``=&2Y@`````^WP68/MH0X0`@`
+M`&8]_P!T%P^WP$AIP,@/``!(`X=H"0``2#M"$'0Q_\%F@?F!`';.NP````"`
+M>EH`=C&^`0````^VPP^V3!!PB?#3X`E%(/_#.%I:=^KK%(A-`NO3QD4"_TB+
+M0@@/MD`-B44@QD4``0^V0EF(10%(BT)X2(E%!$B+@H@```!(B44,2(N"D```
+M`$B)112+@J````")11SK;`^WTDAITM````!(B=-(`Y]`"0``QD4"_\9%``)(
+MBX=`"0``#[9$`CN(10%(BX.(````#[9`#8E%(,9%!'8/MW,\2(U]!>B\_/__
+MQD4,9`^W<SY(C7T-Z*O\___&11QR#[9S.4B-?1WH6OS__[@`````ZQ5F9I#_
+MP6:!^84`#X:+_O__N/____];7<-F9F:09F9FD&9FD%532(G50;D`````N0``
+M``"ZI`P``$B)Z(@(2/_`2/_*=?:Y@````$R+A]`(```/M\%F0@^VE`!`"```
+M9H'Z_P`/A`H#``!$B<A!_\$Y\`^%_`(``&:!^8$`#X=I`@``#[?"2&G`R`\`
+M`$D#@&@)``!)B<!(@W@0`'1NNH````!(BX_0"```#[?"9@^VA`A`"```9CW_
+M`'07#[?`2&G`R`\``$@#@6@)``!).T`0=#3_PF:!^H$`=LZZ`````$&`>%H`
+M=C.^`0````^VPD(/MDP`<(GPT^`)12#_PD$X4%IWZ.L4B%4"Z]#&10+_2(M`
+M"`^V0`V)12#&10`!00^V0%F(10%)BT!X2(E%!$F+@(@```!(B44,28N`D```
+M`$B)111!BX"@````B44<NP````!!@+C```````^&!`(```^VPTB-#(!(C4S-
+M`$B-!$!(P>`$3`'`2(VPP`````^V5@B(420/ME8)B%$E2(N`T`````^V`(/@
+M#XA!)@^V022#^`-T,H/X`W\.@_@"#X3A````Z<T```"#^`1F9F:09F:0=$F#
+M^!(/A(L```!F9I!FD.FN````#[;+2(T$24C!X`1*BX0`T`````^V4`&#X@</
+MMM+!X@A(C0R)#[9``@'0:\`*B43-*.F'````#[;32(T$4DC!X`1*BX0`T```
+M`(!X`@!U#DB-!)+'1,4H`````.M@#[;#2(T4@$B-!$!(P>`$2HN$`-`````/
+MMD`"@^@4B435*.L\#[;+2(T$24C!X`1*BX0`T`````^V4`+!X@A(C0R)#[9`
+M`P'0:\`*B43-*.L/#[;#2(T$@,=$Q2@`````#[;#2(T4@$B-5-4`2(UR+$B-
+M!$!(P>`$3`'`2(V(V````$B+@-@```!(B4(L2(M!"$B)1@A(BT$02(E&$$B+
+M01A(B488_\-!.)C`````#X=X_O__ZWI(BX?0"```#[?22&G2T````$B)TT@#
+MF$`)``#&10+_QD4``DB+A]`(``!(BX!`"0``#[9$`CN(10%(BX.(````#[9`
+M#8E%(,9%!'8/MW,\2(U]!>A0^?__QD4,9`^W<SY(C7T-Z#_Y___&11QR#[9S
+M.4B-?1WH[OC__[@`````Z3X#``!F9F:0_\%F@?F%``^&ROS__TB+O]`(``!(
+M@<<`%```N8`````/M\%F#[:4.$`(``!F@?K_``^$\0(``$2)R$'_P3GP#X7C
+M`@``9H'Y@0`/AV4"```/M\)(:<#(#P``28G`3`.':`D``$F#>!``=&>Z@```
+M``^WPF8/MH0X0`@``&8]_P!T%P^WP$AIP,@/``!(`X=H"0``23M`$'0T_\)F
+M@?J!`';.N@````!!@'A:`'8SO@$````/ML)"#[9,`'")\-/@"44@_\)!.%!:
+M=^CK%(A5`NO0QD4"_TF+0`@/MD`-B44@QD4``4$/MD!9B$4!28M`>$B)101)
+MBX"(````2(E%#$F+@)````!(B44408N`H````(E%'+L`````08"XP``````/
+MAOD!```/ML-(C0R`2(U,S0!(C01`2,'@!$P!P$B-L,`````/ME8(B%$D#[96
+M"8A1)4B+@-`````/M@"#X`^(028/MD$D@_@#=#.#^`-_$X/X`@^$Y````&9F
+MD&:0Z<L```"#^`1T3(/X$F9FD`^$BP```.FU````9F:09I`/MLM(C01)2,'@
+M!$J+A`#0````#[90`8/B!P^VTL'B"$B-#(D/MD`"`=!KP`J)1,THZ8D````/
+MMM-(C0122,'@!$J+A`#0````@'@"`'4.2(T$DL=$Q2@`````ZV(/ML-(C12`
+M2(T$0$C!X`1*BX0`T`````^V0`*#Z!2)1-4HZSX/MLM(C01)2,'@!$J+A`#0
+M````#[90`L'B"$B-#(D/MD`#`=!KP`J)1,THZQ%FD`^VPTB-!(#'1,4H````
+M``^VPTB-%(!(C535`$B-<BQ(C01`2,'@!$P!P$B-B-@```!(BX#8````2(E"
+M+$B+00A(B48(2(M!$$B)1A!(BT$82(E&&/_#03B8P`````^'=?[__^ML#[?2
+M2&G2T````$B)TT@#GT`)``#&10+_QD4``DB+AT`)```/MD0".XA%`4B+@X@`
+M```/MD`-B44@QD4$=@^W<SQ(C7T%Z"'V___&10QD#[=S/DB-?0WH$/;__\9%
+M''(/MG,Y2(U]'>B_]?__N`````#K$O_!9H'YA0`/ANO\__^X_____UM=PV9F
+MD$%455-!B?1(B=5!N`````"Y`````+JD#```2(GH9F:0B`A(_\!(_\IU]KF`
+M````2(NWT`@```^WP68/MI0P0`@``&:!^O\`#X0I`P``1(G`0?_`1#G@#X4:
+M`P``9H'Y@0`/AX<"```/M\)(:<#(#P``28G`3`.&:`D``$F#>!``=&JZ@```
+M`$B)\0^WPF8/MH0(0`@``&8]_P!T%P^WP$AIP,@/``!(`X%H"0``23M`$'0T
+M_\)F@?J!`';.N@````!!@'A:`'8SO@$````/ML)"#[9,`'")\-/@"44@_\)!
+M.%!:=^CK%(A5`NO0QD4"_TF+0`@/MD`-B44@QD4``4$/MD!9B$4!28M`>$B)
+M101)BX"(````2(E%#$F+@)````!(B44408N`H````(E%'$2)922[`````$&`
+MN,``````#X8F`@``#[;#2(T,@$B-3,T`2(T$0$C!X`1,`<!(C;#`````#[96
+M"(B1J`````^V5@F(D:D```!(BX#0````#[8`@^`/B(&J````#[:!J````(/X
+M`W0N@_@#?PZ#^`(/A.T```#IU@```(/X!&9FD'1,@_@2#X24````9F:09I#I
+MNP````^VRTB-!$E(P>`$2HN$`-`````/ME`!@^('#[;2P>((2(T,B0^V0`(!
+MT&O`"HF$S:P```#IE`````^VTTB-!%)(P>`$2HN$`-````"`>`(`=1%(C022
+MQX3%K`````````#K:@^VPTB-%(!(C01`2,'@!$J+A`#0````#[9``H/H%(F$
+MU:P```#K0P^VRTB-!$E(P>`$2HN$`-`````/ME`"P>((2(T,B0^V0`,!T&O`
+M"HF$S:P```#K$Y`/ML-(C02`QX3%K``````````/ML-(C12`2(U4U0!(C;*P
+M````2(T$0$C!X`1,`<!(C8C8````2(N`V````$B)@K````!(BT$(2(E&"$B+
+M01!(B4802(M!&$B)1AC_PT$XF,`````/AUK^___K?DB+A]`(```/M])(:=+0
+M````2(G32`.80`D``,9%`O_&10`"2(N'T`@``$B+@$`)```/MD0".XA%`4B+
+M@X@````/MD`-B44@QD4$=@^W<SQ(C7T%Z)KR___&10QD#[=S/DB-?0WHB?+_
+M_\9%''(/MG,Y2(U]'>@X\O__1(EE)+@`````Z6$#``#_P6:!^84`#X:L_/__
+M2(N_T`@``$B!QP`4``"Y@`````^WP68/MI0X0`@``&:!^O\`#X08`P``1(G`
+M0?_`1#G@#X4)`P``9H'Y@0`/AX<"```/M\)(:<#(#P``28G`3`.':`D``$F#
+M>!``=&>Z@`````^WPF8/MH0X0`@``&8]_P!T%P^WP$AIP,@/``!(`X=H"0``
+M23M`$'0T_\)F@?J!`';.N@````!!@'A:`'8SO@$````/ML)"#[9,`'")\-/@
+M"44@_\)!.%!:=^CK%(A5`NO0QD4"_TF+0`@/MD`-B44@QD4``4$/MD!9B$4!
+M28M`>$B)101)BX"(````2(E%#$F+@)````!(B44408N`H````(E%'$2)922[
+M`````$&`N,``````#X8;`@``#[;#2(T,@$B-3,T`2(T$0$C!X`1,`<!(C;#`
+M````#[96"(B1J`````^V5@F(D:D```!(BX#0````#[8`@^`/B(&J````#[:!
+MJ````(/X`W0Q@_@#?PZ#^`(/A/````#IV0```(/X!&9FD&9FD'1,@_@2#X24
+M````9F:09I#INP````^VRTB-!$E(P>`$2HN$`-`````/ME`!@^('#[;2P>((
+M2(T,B0^V0`(!T&O`"HF$S:P```#IE`````^VTTB-!%)(P>`$2HN$`-````"`
+M>`(`=1%(C022QX3%K`````````#K:@^VPTB-%(!(C01`2,'@!$J+A`#0````
+M#[9``H/H%(F$U:P```#K0P^VRTB-!$E(P>`$2HN$`-`````/ME`"P>((2(T,
+MB0^V0`,!T&O`"HF$S:P```#K$Y`/ML-(C02`QX3%K``````````/ML-(C12`
+M2(U4U0!(C;*P````2(T$0$C!X`1,`<!(C8C8````2(N`V````$B)@K````!(
+MBT$(2(E&"$B+01!(B4802(M!&$B)1AC_PT$XF,`````/AU?^___K<`^WTDAI
+MTM````!(B=-(`Y]`"0``QD4"_\9%``)(BX=`"0``#[9$`CN(10%(BX.(````
+M#[9`#8E%(,9%!'8/MW,\2(U]!>A([___QD4,9`^W<SY(C7T-Z#?O___&11QR
+M#[9S.4B-?1WHYN[__T2)922X`````.L2_\%F@?F%``^&Q/S__[C_____6UU!
+M7,-F9F:028GP3(M/>+D`````NB@```!(B?"("$C_P$C_RG7V28NQ(`H``+D`
+M````N@`"``!(B?"("$C_P$C_RG7V2(U6-KD`````C4$!2)@/MD0X((@"2/_"
+M2&/!#[9$.""(`DC_PH/!`H/Y)W[<2(U6%+D`````C4$!2)@/MD0'#(@"2/_"
+M2&/!#[9$!PR(`DC_PH/!`H/Y$W[<2(U6+KD`````C4$!2)@/MD0X2(@"2/_"
+M2&/!#[9$.$B(`DC_PH/!`H/Y!W[<28EP&$B+1U!(_\!)B0!(@W]@`'57]@<!
+M=%)(@W]H``^5P$V%R0^5P@^VP(7"=!1(BT=H2`^V0%M"@+P(0`@``/]U*4B#
+M?W``#Y7`387)#Y7"#[;`A<)T'DB+1W!(#[=`0$*`O`A`"```_W0*#[9'`4&(
+M0`SK!4'&0`S_#[9'`D&(0`T/MD=<08A`#D'&0!(00<9`$1`/M@>#X`$!P+[]
+M____02)P"@G&08AP"@^V!X/@`<'@!4$/MD@(@^'?"<%!B$@(2`^W1UA(P>@'
+M@^`!P>`&@^&_"<%!B$@(2`^W1UA(P>@"@^`!00^V4`F#XOX)PD&(4`E(#[='
+M6DC!Z`.#X`'!X`>#X7\)P4&(2`A(#[='6DC1Z(/@`0'`@^+]"<)!B%`)2`^W
+M1UA(P>@#@^`!P>`&@^*_"<)!B%`)2`^W1UI(P>@$@^`!P>`'@^)_"<)!B%`)
+M@\D008A("`^V!]#H@^`!@^;^"<9!B'`*#[8'@^`$@^;["<9!B'`*9D''0!0`
+M$`^VA\P```!!B$`@P\="!`````#'`@````"X`````,-F9F:09F:09F:09F:0
+M2(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD,$B)^T&)]4&_____
+M_TB+;V!,BW=X2(7M=!6`O\L`````=0SV!P)T#V9F9I!F9I!$B?CI#0$``$R)
+M]V9FD&:0Z`````!)B<1$B?A-A>0/A/$```!!QD0D..%!QD0D.0%!@/T"#Y7`
+M@\`:08A$)#I!QD0D)(`/MT4P9D&)1"0@28E<)"A!QT0D-`````!)QT0D2```
+M``!)QX0DH`````````!,B>9,B??H`````,:#RP````%FQX/(````^@!(A=MT
+M7$B#>V``=%5F9F:09F:09H&[R````)8`=15(BU-@2(MZ2+XA````Z`````!F
+M9I!F_XO(````O]`'``#H`````$R)]^@`````2(7;=!!(@WM@`'0)@+O+````
+M`'6R9H.[R`````!T#T&`?"0D`+@`````1`]$^$R)YDR)]^@`````1(GX2(M<
+M)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,-F9F:09F9FD$B#[$A(
+MB5PD&$B);"0@3(ED)"A,B6PD,$R)="0X3(E\)$!(B?M!B?9!O_____],BV=@
+M3(MO>$V%Y'0)@+_+`````'0,1(GXZ60$``!F9F:03(GOZ`````!(B<5$B?A(
+MA>T/A$D$``#V`P(/A0$!``!!@/X4=PQ!#[;V:_8,9F:0ZQIF00^VQF9IP(D`
+M9L'H",#H!`^V\('&\````,9%..'&13D!QD4Z'$"(=3O&122`00^W1"0P9HE%
+M($B)72C'130`````2,=%2`````!(QX6@`````````$B)[DR)[^@`````QH/+
+M`````6;'@\@```#$"4B%VW162(-[8`!T3Y!F@;O(````E@!U%4B+4V!(BWI(
+MOB$```#H`````&9FD&;_B\@```"_T`<``.@`````3(GOZ`````!(A=MT$$B#
+M>V``=`F`N\L`````=;)F@[O(``````^$1`,``(!])``/A3H#``!!OP````#I
+M+P,``$R)[^@`````2(E$)!!(A<`/A!D#``!(C4582(E$)`A(BT0D$$B+0!!(
+MB00DQD4X&L9%.0C&13H:QD4[`,9%/!#&13T`2(M$)!!(B45XQD4D@$$/MT0D
+M,&:)12!(B5TH2(M$)!!(BT`02(E%2,=%-!````!(BT-@2`7D````2(E%4,9%
+M,"!(QX6@`````````+X`````2(M\)`CH`````(M5-$B+1"002(MP&$B+?"0(
+MZ`````!(B>Y,B>_H`````,:#RP````%FQX/(````^@!(A=MT4DB#>V``=$MF
+M@;O(````E@!U$DB+4V!(BWI(OB$```#H`````&;_B\@```"_T`<``.@`````
+M3(GOZ`````!(A=MT$$B#>V``=`F`N\L`````=;5F@[O(`````'0&@'TD`'02
+M2(UT)!!,B>_H`````.GF`0``2(GN3(GOZ`````!,B>_H`````$B)Q4B%P'45
+M2(UT)!!,B>_H`````$2)^.G&`0``2(U06$B)5"0(2(L\)$B#QP1(BQ0D2`^V
+M0@,/MD00!(A"!,9'`0K&1P(`N0````"Z!````$B+!"2("$C_P$C_RG7V183V
+M=0:`9P/\ZS=!#[;V:?98`@``@$\#`XGQP>D8B$\$B?+!ZA"(5P6)\,'H"(A'
+M!D"(=P>(3PB(5PF(1PI`B'<+2(M$)!!(B45XQD4X%0^V!\#X!_?0@\`1B$4Y
+MQD4Z`,9%.P#&13P0QD4]`(`G/\9%)(!!#[=$)#!FB44@2(E=*$B+1"002(M`
+M$$B)14C'1300````2(M#8$@%Y````$B)15#&13`@2,>%H`````````"^````
+M`$B+?"0(Z`````"+531(BT0D$$B+<!A(BWPD".@`````2(GN3(GOZ`````#&
+M@\L````!9L>#R````/H`2(7;=%)(@WM@`'1+9H&[R````)8`=1)(BU-@2(MZ
+M2+XA````Z`````!F_XO(````O]`'``#H`````$R)[^@`````2(7;=!!(@WM@
+M`'0)@+O+`````'6U9H.[R`````!T#8!])`"X`````$0/1/A(C70D$$R)[^@`
+M````9F:09F:02(GN3(GOZ`````!$B?AFD$B+7"082(ML)"!,BV0D*$R+;"0P
+M3(MT)#A,BWPD0$B#Q$C#9F9FD&9FD&9FD&9FD$B#["A(B5PD"$B);"003(ED
+M)!A,B6PD($B)^T&)];C_____3(MG>$B+;V#V1U@(#X2#````28NT)-`(``!(
+MB?J_!0```.@`````@$U$`DB+?4A(B>J^(0```.@`````@'U[`'08O]`'``#H
+M`````$R)Y^@`````@'U[`'7H187M=`YF@TM:$&:#36(0ZPQFD&:#8UKO9H-E
+M8N])B[0DT`@``$B)VK\&````Z`````"`943]N`````!(BUPD"$B+;"003(MD
+M)!A,BVPD($B#Q"C#9F9FD&9F9I!F9F:09F:02(/L&$B)7"0(2(EL)!")]4B+
+M3WA(BU]@]@<!=#M(@WM0`'010`^VU@^V<WE(BWM0Z`````!(@[L8`0```'0M
+M0`^VU0^VLP4!``!(B[L8`0``Z`````#K%$`/MM9(BT,X#[9P`4B)S^@`````
+M2(M<)`A(BVPD$$B#Q!C#9F:09I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,
+MB70D*$R)?"0P2(G[08GV08G7QT0D!/____],BV=@3(MO>$V%Y'0)@+_+````
+M`'0)BT0D!.D3`0``3(GOZ`````!(B<6+1"0$2(7M#X3[````QD4XX<9%.0%%
+MA/9T#4&`_P$9P/?0@\`'ZPM!@/\!&<#WT(/`#8A%.L9%)(!!#[=$)#!FB44@
+M2(E=*,=%-`````!(QT5(`````$C'A:``````````2(GN3(GOZ`````#&@\L`
+M```!9L>#R````/0!2(7;=%1(@WM@`'1-9H&[R````)8`=1)(BU-@2(MZ2+XA
+M````Z`````!F_XO(````O]`'``#H`````$R)[^@`````2(7;=!)(@WM@`'0+
+M@+O+`````&:0=;-F@[O(`````'0:@'TD`'442(M#8`^W0&)FB4-:QT0D!```
+M``!(B>Y,B>_H`````(M$)`1(BUPD"$B+;"003(MD)!A,BVPD($R+="0H3(M\
+M)#!(@\0XPV9F9I!F9F:02(/L"`^V!H/X"0^'@@```(G`_R3%`````&9F9I!F
+M9I!(BWX(QH?O$P```.@`````N`````#K8`^V5@B^`````.@K_O__ZU`/ME8(
+MO@$```#H&_[__^M`#[9V".@`````ZS4/ME8)#[9V".BA_/__D.LE#[9V".@`
+M````9F:09I#K%0^V=@CH`````+@`````ZP6X_____TB#Q`C#9F9FD$B+1V!(
+MA<!T4TC'0#@`````@$A$!$C'1V``````2,='<`````!(QT=H`````(-_"#]_
+M%4B+5WA(8T<(2,>$PD`$````````PTB+5WA(8T<(2,>$PD`"````````\\-F
+MD$B+1V!(A<!T4TC'0#@`````@&!$^TC'1V``````2,='<`````!(QT=H````
+M`(-_"#]_%4B+5WA(8T<(2,>$PD`$````````PTB+5WA(8T<(2,>$PD`"````
+M````\\-FD%-(B?OH`````$B+N]`(``!(@<<`%```Z`````!;PV:04TB)^^@`
+M````2(N[T`@``$B!QP`4``#H`````%O#9I!!54%455-(@^Q828G\3(NOT`@`
+M`$F!Q0`4``!(@S\`=!9(BS=(@>X```(`2(DW2(M_(.@`````28-\)!``=!%)
+MBW0D$$F+?"0@Z`````!FD$F#?"08`'0/28MT)!A)BWPD(.@`````00^W?"0\
+M2(U$)%9(B40D.$B-1"142(E$)#!(C40D4DB)1"0H2(U$)%!(B40D($B-1"1.
+M2(E$)!A(C40D34B)1"002(U$)$Q(B40D"$B-1"1*2(D$)$R-3"1)3(U$)$9(
+MC4PD14B-5"1$2(UT)$/H`````$F#O"08"0```'0K28NT)!@)``!)C;PD^`@`
+M`.@`````28NU&`D``$F-O?@(``#H`````&9FD$F#O"1`"0```'0H28NT)$`)
+M``!)C;PD(`D``.@`````28NU0`D``$F-O2`)``#H`````$F#O"1H"0```'0H
+M28NT)&@)``!)C;PD2`D``.@`````28NU:`D``$F-O4@)``#H`````$F#O"3@
+M"@```'0O28NT).`*``!)C;PDP`H``.@`````28NUX`H``$F-O<`*``#H````
+M`&9F9I!F9I"]`````$`Z;"1#<SMF9F:0B>@/MMA)B[3<,`L``$F-O"00"P``
+MZ`````!)B[3=,`L``$F-O1`+``#H`````/_%0#IL)$-RR4F#O"3`#P```'0N
+M28NT),`/``!)C;PDH`\``.@`````28NUP`\``$F-O:`/``#H`````&9FD&9F
+MD$F#O"3X#P```'0H28NT)/@/``!)C;PDV`\``.@`````28NU^`\``$F-O=@/
+M``#H`````$F#O"1H$````'0H28NT)&@0``!)C;PD2!```.@`````28NU:!``
+M`$F-O4@0``#H`````$F#O"20"0```'0O28NT))`)``!)C;PD<`D``.@`````
+M28NUD`D``$F-O7`)``#H`````&9F9I!F9I!)@[PD:`H```!T*$F+M"1H"@``
+M28V\)$@*``#H`````$F+M6@*``!)C;U("@``Z`````!)@[PD^`D```!T*$F+
+MM"3X"0``28V\)-@)``#H`````$F+M?@)``!)C;W8"0``Z`````!)@[PD(`H`
+M``!T+TF+M"0@"@``28V\)``*``#H`````$F+M2`*``!)C;T`"@``Z`````!F
+M9F:09F:028.\)+@*````="A)B[0DN`H``$F-O"28"@``Z`````!)B[6X"@``
+M28V]F`H``.@`````28.\)`@+````="A)B[0D"`L``$F-O"3H"@``Z`````!)
+MB[4("P``28V]Z`H``.@`````28.\)%`/````="])B[0D4`\``$F-O"0P#P``
+MZ`````!)B[50#P``28V],`\``.@`````9F9FD&9FD$F#O"2(#P```'0H28NT
+M)(@/``!)C;PD:`\``.@`````28NUB`\``$F-O6@/``#H`````$F#O"0P$```
+M`'0H28NT)#`0``!)C;PD$!```.@`````28NU,!```$F-O1`0``#H`````$F#
+MO"20"@```'0O28NT))`*``!)C;PD<`H``.@`````28NUD`H``$F-O7`*``#H
+M`````&9F9I!F9I!)@[PDD!````!T-TF+E"28$```28NT))`0``!)C;PD<!``
+M`.@`````28N5F!```$F+M9`0``!)C;UP$```Z`````!)@[PDP!````!T-TF+
+ME"3($```28NT),`0``!)C;PDH!```.@`````28N5R!```$F+M<`0``!)C;V@
+M$```Z`````!)@[PD\!````!T-TF+E"3X$```28NT)/`0``!)C;PDT!```.@`
+M````28N5^!```$F+M?`0``!)C;W0$```Z`````!)@[PD4!$```!T-TF+E"18
+M$0``28NT)%`1``!)C;PD,!$``.@`````28N56!$``$F+M5`1``!)C;TP$0``
+MZ`````!)@[PD(!$```!T/4F+E"0H$0``28NT)"`1``!)C;PD`!$``.@`````
+M28N5*!$``$F+M2`1``!)C;T`$0``Z`````!F9I!F9I!)@[PD@!$```!T-TF+
+ME"2($0``28NT)(`1``!)C;PD8!$``.@`````28N5B!$``$F+M8`1``!)C;U@
+M$0``Z`````!)@[PDL!$```!T-TF+E"2X$0``28NT)+`1``!)C;PDD!$``.@`
+M````28N5N!$``$F+M;`1``!)C;V0$0``Z`````!(@\186UU!7$%=PY!(@^P8
+M2(E<)`A,B60D$$B)^^@`````3(VC`!0``$R)Y^@`````2(G?Z`````"_T`<`
+M`.@`````2(G?Z`````!(B=_H`````+X!````2(G?Z`````"^`0```$R)Y^@`
+M````2(M<)`A,BV0D$$B#Q!C#2(/L"$C'QP````#H`````+@`````2(/$",.0
+MD)"0D)!(BP4`````2(E'"$B)/0````##9F9FD&9FD&9FD&9FD(L%``````6H
+M`@0`PV9F9I!!54%455-(B?M)B?5(BRT`````0;P`````Z`````")P$B)VDB%
+MP'0+1(@B2/_"2/_(=?5(@ST``````'4)2(D=`````.L92(-]``!T#F9FD$B+
+M;0!(@WT``'7U2(E=`$R):PA(C4,82(E#&$B)0R!(C4,H2(E#*$B)0S!(C4,X
+M2(E#.$B)0T!(C8,0`@``2(F#$`(``$B)@Q@"``!(C8-0`@``2(F#4`($`,>#
+M6`($```0``!;74%<05W#9F:09I!(A?]T"TB+/^L-9F:09F:02(L]`````$B%
+M_P^5P$B%]@^5P@^VP(7"=`=(BT<(2(D&2(GXPV9F9I!F9F:09F:0BT842(V$
+M.*@"!`##9F9FD%-(@>P``0``2(GS2(M'"$B-M"2`````2(M_$/]0.$B+0PA(
+MB>9(BWL0_U`XN@$````/MH0D@0```#I$)`%W8;K_____#[:$)($````Z1"0!
+M<DZZ`0````^VA"2"````.D0D`G<[NO____\/MH0D@@```#I$)`)R*+H!````
+M#[:$)(,````Z1"0#=Q4/MH0D@P```#I$)`,9TF9F9I!F9I")T$B!Q``!``!;
+MPV9FD&:005154TB)_4B+'0````!(A=L/A+4```!(@WL0`'4:2(E=&$C'10``
+M````2(EK$+@!````Z9D```!(BT,02(M5"$@[4`AU>DB+<!!(BWT0_U)(A,!T
+M:TR-8Q!(@WL0`'1#2(M%"$B#N``!````=!I)BQ0D2#M""'402(MR$$B+?1#_
+MD``!``#K#$F+-"1(B>_H`````(7`>`M-BR0D28,\)`!UO4B)71A)BP0D2(E%
+M`$F)+"2X`0```.L79F:09F:02(L;2(7;#X5+____N`````!;74%<PV9F9I!F
+M9I!F9I!(BP4`````2(D'2(D]`````(-_$`!T$HL%`````(E'%(M'$`$%````
+M`//#9F:09I!!5%53B?U(BQT`````2(7;=#!$#[;G0#AK"'062(-[:`!T%$2)
+MY_]3:(7`9F:09I!T!4B)V.L02(L;2(7;9F:0==2X`````%M=05S#9F9FD%-(
+M@^PP2(GSN0````"`/0`````"=2N#OZ0"!``@=R)(BT9H2(GF2(N[@````/]0
+M>$B+4W@/MD0D#`-"0(E#,.L_3(U'&$V)P;X`````2(M'&$DYP'0C3(G*9F9F
+MD&9FD#F(H/S__W4)_\&^`0```.L(2(L`2#G"=>>%]G7+B4LP2(/$,%O#9F9F
+MD&9FD&9FD+@`````2(L5`````$B%TG00.4(<=@.+0AQ(BQ)(A=)U\`7(````
+MPV9FD&9FD&9FD$%455-(@\2`2(G]28GT2(7V=01,BV<(2(M=$$B%VW1>BX6D
+M`@0`B4-`2(M#"$B+>Q!(B>;_4#@/MD0D$`&%I`($`$B+0PA(BWL0_U!@#[9,
+M)!!(C7L@B<),B>;H``````^V3"002(U[2+HH````3(GFZ`````!(BQM(A=MU
+MHKH`````2(L=`````$B%VW01D#E3&'8#BU,82(L;2(7;=?"!PO@#``"+C:0"
+M!`"-#,E(C7UP3(GFZ`````"+C:0"!`!(C;V0````N@`"``!,B>;H`````$B-
+MO?````"Y`0```+I(````3(GFZ`````"+C:0"!`!(C;T0`0``NB@```!,B>;H
+M`````(N-I`($`(T,R4B-O=````"ZL````$R)YN@`````QX5H`0```0```,>%
+M=`$````0``#'A6P!````$```Z`````")PDB-O;````"Y0B$``$R)YN@`````
+M2(L=`````$B%VW0D9F:09F:02(-[(`!T#XN5I`($`$R)YDB)[_]3($B+&TB%
+MVW7B2(/L@%M=05S#9F:09F:09F:0055!5%532(/L"$F)_8GU@#T``````@^4
+MP$"`_@$/E<(/ML"Y`````(7"#X4D`0``0`^V_N@`````28G$N0````!(A<`/
+MA`H!``!)C7UPZ`````!(B<.Y`````+KX`P``B`A(_\!(_\IU]HL%`````/_`
+MB04`````B8/H`P``2(V#R`,``$B)@\@#``!(B8/0`P``@(N``P```4R)8PA`
+MB&L03(DK08-\)!@`="1(C8/X`P``2(E#(+D`````08M4)!A(A=)T"H@(2/_`
+M2/_*=?9(C8.@`P``2(F#H`,``$B)@Z@#``!(C8.P`P``2(F#L`,``$B)@[@#
+M``#'0S0"`0``QT,P_____TF#?"1(`'0?2(G?0?]4)$B%P'0328U]<$B)WN@`
+M````N0````#K)$B-@Y`#``!)C5482(M*"$B)0@A(B9.0`P``2(E("$B)`4B)
+MV4B)R$B#Q`A;74%<05W#9F9FD&9F9I!F9I!F9I!!54%455-(@^P(2(G]3(LO
+M28M=.$F-13A(.=AT/$F)Q$B->^A(BQM(.6]0=2=(C4<82(M("$B+5QA(B4H(
+M2(D12(E'&$B)0`C&AZH````"Z`````!).=QUQTB+10A(@WA0`'0,2(GO_U!0
+M9F:09F:02(N%F`,``$B+E9`#``!(B4((2(D028U]<$B)[N@`````2(/$"%M=
+M05Q!7<-F9F:005154TF)_$B+7QA(C4<82#G8#X2Y````2(VK</S___9#\`$/
+MA)<```!(@[N(_/__``^%B0```("[@/S__P1V%TB#N_#^__\`=!E(BX/P_O__
+M2#EH"'0,@'T0`75C]D5D`G1=@WTP`'D+2(GN3(GGZ!S[___VA8`#```"=$.^
+M`````$R)Y^@`````2(G!2(7`#Y7`2#GI#Y7"#[;`A<)T(/:!@`,```)T"8"E
+M@`,``/WK#HM%,(E!,,=%,`````"02(L;28U$)!A(.=@/A4?___];74%<PV9F
+M9I!F9I!F9I!(@^P82(D<)$B);"0(3(ED)!!(B?M)B?1(BV\8_XV@`@0`A=)X
+M*N@`````2(7`=3!(BT,(3(GG_Y"`````2(U[($R)YN@`````ZQ5F9I!FD$B-
+M?R#H`````&9F9I!F9I"#O:`"!```=0A(B>_H'P```$B+'"1(BVPD"$R+9"00
+M2(/$&,-F9F:09F9FD&9F9I!!5D%505154TF)_4&^`````$B+7QA(C4<82#G8
+M=%U)B<1(C:MP_/__@+N`_/__`75"]H/4_/__0'0*2(GOZ`````#K+X`]````
+M``!T)O9%9`)U(/9%9`%T#$B)[V9F9I#H``````^V162H!'4&@\@DB$5D2(L;
+M23G<=:9)BUTH28U%*$@YV'092(G%9F:09I!(C7OHZ`````!(BQM(.=UU[TF+
+M71A)C4482#G8="U)B<1(C:MP_/__@+N`_/__!'822(.[B/S__P!U"$B)[^@`
+M````2(L;23G<==9)BUT828U%&$@YV'1V28G$9F:09I!(C:MP_/__@+N`_/__
+M`756#[:#U/S__Z@@=$N#X-N(@]3\__](BX.H_/__2(7`=!A(@W@8`'0)0;X!
+M````ZPF02(L`2(7`=>A%A/9U&8`]``````%U$$B)[^@`````2(GOZ`````!(
+MBQM).=QUDDR)[^@J_?__28.]F`($``!T$$F+?0A!_Y68`@0`9F:09I!;74%<
+M05U!7L-F9F:09F:005=!5D%505154TB![)@```!(B?M,BV<80;\`````2(7_
+M#X0!`0``2(M#"$B+>Q!(C70D$/]0.`^V1"0@.P4`````#X[*````2(U#($B)
+M1"0(]D0D(0%U2`^V!0````!$.?AU/`^V!0````!IP$!"#P")!0````!(QP4`
+M`````````$B)'0````!(Q\8`````3(GGZ`````#II@```&9FD$2+<RA!_X0D
+MH`($`$R+;"0(3(GOZ`````!(B<5(BT,(BS4`````2(M[$$F)V$C'P0````!(
+MB>K_4&B$P'452(GN3(GOZ`````!!_XPDH`($`.L(1#ES*$&#UP#_!0`````/
+MMD0D(#L%``````^//____\<%``````````!(BQM(A=L/A?_^__]!_XPDH`($
+M`$&#O"2@`@0``'4(3(GGZ"W]__](@<28````6UU!7$%=05Y!7\-F9F:09F9F
+MD&9FD$%505154TB#[`A(B?U)B?1)B=5(B968`@0`2(M?$$B%VW0:2(M#"$B+
+M>Q#_D/````"$P'1]2(L;2(7;=>9(BQT`````2(7;=!]F9F:09F:02(-[.`!T
+M"4B)[_]3.&9FD$B+&TB%VW7H387D=!A)BT0D"$F+?"00O@$```#_4%!!QD0D
+M:`''A:`"!``!````2(M]$.@`````@[V@`@0``'0_387M=!5(B>_H`````&:0
+MZR[&A9`"!``!ZR6#O:`"!```=!R_H(8!`.@`````2(GOZ`````"#O:`"!```
+M=>602(/$"%M=05Q!7<-F9I!FD%532(/L"$B)_4@Y/0````!U#DB+!TB)!0``
+M``#K+&:02(L5`````$B%TG0>2#DZ=`U(BQ)(A=)T$4@Y*G7S2(72=`=(BT4`
+M2(D"2(U%&$@Y11AT&4B)PTB+?1A(@>^0`P``Z`````!(.5T8=>I(C44H2#E%
+M*'0Q2(G#9F:09F:02(M%*$B-<.A(BU`(2(L`2(E0"$B)`DB-O=````#H````
+M`$@Y72AUV("]D`($``!U)TB+'0````!(A=MT&V9FD$B#>T``=`E(B>__4T!F
+M9I!(BQM(A=MUZ$B+71!(A=MT%DB+0PA(BWL0_Y#H````2(L;2(7;=>I(@\0(
+M6UW#9I!(BU<82(U'&$@YT'0:2(G!2(V"</S__SFRH/S__W0-2(L22#G1=>FX
+M`````//#9I!32(G[Z`````!(B<;'0!``````2(V`R````$B)1DB+0PPMR```
+M`(E&0$B-1AA(B4882(E&(+D`````NG@```!(C490B`A(_\!(_\IU]DB)\%O#
+M9F9FD&9F9I!F9I!F9I!(@^P82(D<)$B);"0(3(ED)!!)B?Q(B?.)U;@`````
+M.58(<AQ(B??H`````$R)($B)6`B):!"+4P@IZO_"B5,(2(L<)$B+;"0(3(MD
+M)!!(@\08PV9F9I!F9I!F9I!F9I!(@^P(BT<(`T80_\B)1PCH`````$B#Q`C#
+M9F9FD&9FD$B#[`B)\$B-M[````")PN@`````2(/$",-F9F:09F:02(/L"$B)
+M^$B+/TB!Q[````!(B<;H`````$B#Q`C#9I!!5%5328G\O0````"X`````("_
+MD`($``!U,DB+7Q!(A=MT&$B+0PA(BWL0_Y"H````"<5(BQM(A=MUZ$"$[70(
+M3(GGZ`````!`#[;%6UU!7,-F9F:09F9FD&9F9I!F9I!32(M?$$B%VW0<9F:0
+M9F:02(M#"$B+>Q#_D-@```!(BQM(A=MUZEO#9F9FD&9F9I!54TB#[`A(B?U(
+MBU\02(7;="Q(BT,(2(M[$/^0X````(![:`!T$$B+0PA(BWL0O@$```#_4%!(
+MBQM(A=MUU$B+71A(C4482#G8="Y(B<5FD$B-NW#\__^`NX#\__\!=1%(BX-X
+M_/__2(-X6`!T`_]06$B+&T@YW7772(/$"%M=D,-F9F:09F9FD&9F9I!F9I!3
+M2(M?$$B%VW0R9F:09F:0@'MH`'002(M#"$B+>Q"^`````/]04$B+0PA(BWL0
+M_Y#0````2(L;2(7;==1;PV:02(M'&$B+4!A(@\`82#G0="Q(B<%(C8)P_/__
+M@+J`_/__`741.;+@_/__=0E(.;KH_/__=`U(BQ)(.=%UU[@`````\\-F9F:0
+M9F9FD&9F9I!(@^PH2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@2(G]08GT28G6
+M28G-Z(/___](B<-(A<`/A(P```"Z`````/:`@`,```$/A;P```"#N.@`````
+M=0F#N,@`````=`JZ`````.F@````2(M#.$B%P'1*2(MX&$B%_W0Y2(M/&$B%
+MR70HN@````"`>40`=!T/MG%$2&/"2#E\P6!U"4C'1,%@`````/_".=9_Y^@`
+M````D.NU2(L`2(7`=;9(B=]F9I#H`````$B-?2#H`````$B)PTB%P'0L2(M%
+M"$B+?1!-B>A,B?%(B=I$B>;_4&BZ`0```(3`=1%(C7T@2(G>Z`````"Z````
+M`(G02(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$*,-F9F:09F:09F:00515
+M4TB)_>@`````2(M=&$B-11A(.=AT+TF)Q&9F9I!(C;MP_/__@WOX`'032(N#
+M>/S__TB#>%@`=`7_4%AFD$B+&TDYW'782(GO9F:09I#H`````$B+71A(C448
+M2#G8=!:#>_0`=`BX`0```.L.D$B+&T@YV'7JN`````!;74%<PV9F9I!F9F:0
+M9F:09F:02(/L"$B)^$B+/TB)QNAN\/__2(/$",-F9I!F9I!F9I"#?S``>`?'
+M1S#_____\\.0N@````#_SH/^_W039F9FD`^V!P'"2/_'_\Z#_O]U\0^VPL-F
+M9F:09F:09F:09F:02(L%`````$B%P'0?2(M0$$B%TG0.2#EZ$'052(L22(72
+M=?)(BP!(A<!UX;@`````\\-F9F:09F9FD&9FD&9FD$B#[!A(B5PD"$B);"00
+M2(G[2(-^(`!T:$B+CS`!``!(@WXH`'0,2(M6*$B+1B!(B4(@2(M6($B+1BA(
+MB0)(QT8@`````$C'1B@`````2(.[,`$```!T*4@YBS`!``!T($B+@S`!``!(
+MBV@(Z`````")[BG&2(M[".@`````9F:02(M<)`A(BVPD$$B#Q!C#D%532(/L
+M"$B)_4B)\^@`````2(G!2(-[(`!T)DB#>R@`=`Q(BU,H2(M#($B)0B!(BU,@
+M2(M#*$B)`DC'0R``````BP-(`<A(B4,(2(N5,`$``$B-C3`!``!(A=)T&DB)
+MQDB+0@@I\(7`?PU(C4HH2(M2*$B%TG7I2(E3*$B)2R!(A=)T"$B-0RA(B4(@
+M2(D92#F=,`$``'4+2(M]"(LSZ`````!(@\0(6UW#9F:09F:0055!5%532(/L
+M"$B)^^@`````28G$2(NK,`$``$B)ZDB%[7173(VK,`$``&9FD&:02(M""$0I
+MX(7`?T!(@WHH`'0(2(M"*$R):"!(BT(H2(F#,`$``$B)Q4C'0B``````2,="
+M*`````!(BWH8_U(02(N3,`$``$B%TG6U2(G?Z`````!(A>UT&4@YJS`!``!U
+M$$B+=0A$*>9(BWL(Z`````!(@\0(6UU!7$%=PV9F9I!(BT\82(U'&$@YR'15
+M3&/*2(G'3(V!</S__X"Y@/S__P1V,SFQJ/S__W4KA=)X'$B#N8C\__\`=`Y(
+MBX&(_/__3CE$R&!T"X72>0M)@W@8`'4$3(G`PTB+"4@YSV9F9I!UL;@`````
+MPY"0D)"0D)"02(MW(+D`````NE````!(B?"("$C_P$C_RG7V2(U&$$B)1A!(
+MB4882(DV2(EV"$C'1B@`````2(E^,$C'1C@`````N`````##9F9FD&9F9I!!
+M5%532(G]2(L_2,?&`````.@`````28G$]D5D"'4<2(MU.$B%]G032(L>3(GG
+MZ`````!(B=Y(A=MU[4B+16A(B[V`````_Y"`````2(NU@````$B+?7A(@\<@
+MZ`````!;74%<PV9F9I!F9F:09F:055-(@^P(2(G]2(U'./9`+`)T#>@`````
+MZR=F9I!F9I!(BQA(A=MT&4B+>QA(A?^0=`=(BT<(_U`P2(L;2(7;=>?'A>@`
+M````````2(/$"%M=PV9F9I!F9F:09F:09F:04TB)^$B+7R!(BSM(@<<0`0``
+M2(G&Z`````!(QX/0`````````$B)F]@```!(QX/@`````````$B-L]````!(
+MBSM(@\=(Z`````!;PV9F9I!!5%5328G\@*>``P``_DB+7SA(A=MT&DB#>Q@`
+M=`M(BT,8@*"``P``_DB+&TB%VW7F3(GFOP$```#H`````$''A"3H`````0``
+M`$F+/"1(@<<0`0``Z`````!(B<5(A<!T:L<``0```$C'0`@`````2(E%$$C'
+M0!@`````3(E@($F+7"0X2(7;=#%F9I!F9I!(BWL82(7_=!I(@W\8`'0+2(M_
+M&$B#?Q@`=?5(B>[H`````$B+&TB%VW75_TT`@WT``'4(2(GOZ.3^__];74%<
+MPV9F9I!F9F:09F9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)^TF)](72#XC0
+M````Z`````!(B<5(A<`/A+````!(BUL80;P`````]D!D`G0/2(G'Z`````#K
+M.69FD&:0@#T``````'0K]D!D`69FD'0.2(G'Z`````!F9I!F9I`/MD5DJ$1U
+M!H/()(A%9$&\`0```(.[V`$````/E,!%A>0/E<(/ML"%PG0WQX/8`0```0``
+M`$C'@\`!````````2(F;R`$``$C'@]`!````````2(VSP`$``$B->TCH````
+M`$B)[K\"````Z`````#K'TB+0PA,B>?_D(````!FD$B->R!,B>;H`````&9F
+M9I!(BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9FD&9FD&9FD$B#[!A(B5PD"$R)
+M9"002(GX2(M?&$2+9R!(C7M(2(G&Z`````!(B=E(Q\(`````1(GF2(G?Z```
+M``!(BUPD"$R+9"002(/$&,-F9F:09F:0BP4`````2`-'2$B#Z"C#D$B#["A(
+MB1PD2(EL)`A,B60D$$R);"083(ET)"!(B?WHS/___TF)QDR+;5!-BV4@0?],
+M)"`/MH6J````@_@-="6#^`U_$(/X"W1L9F:09F:0Z;P```"#^!%T?&9FD&9F
+MD.FL````#[>%J````&8E_P)F/0`"#X67````@+VK`````'4JQH6K`````<:%
+MJ@````!)C40D$$B+4`A,B7`(28D&28E6"$R),NF9````QH6J````$.M;QH6J
+M`````$F-1"002(M0"$R)<`A)B09)B58(3(DRZW!,B>_H0A\``(7`=2^`O:L`
+M```!=R;^A:L```#&A:H`````28U$)!!(BU`(3(EP"$F)!DF)5@A,B3+K-8"]
+MJ@```!!U&4F+72!)B6T@3(GNOP,```#H`````$F)72!)BT802(F%P````$B)
+M[^@`````08-\)$``=2)!QT0D0`$```!)C70D*$F+?0!(@\=8Z`````!F9F:0
+M9F:02(L<)$B+;"0(3(MD)!!,BVPD&$R+="0@2(/$*,-F9I!(BT<@2(L(N@``
+M``!(.<%T&4B+40A(BP%(B5`(2(D"2(D)2(E)"$B+41A(B=##9I!(@^P(2(M7
+M(("^J`````!U$T@/MX:8````2`.&D````$B)1UC_0B!(BT=H2(N_@````/^0
+MF````$B#Q`C#9F:02(/L&$B)7"0(2(EL)!!(B?U(BU\@QT-``````/:'@`,`
+M`!@/A>L```"#O\@`````#X7>````#[9#2*@"#X72````J`1T(4B-0Q!(.4,0
+M=05(.1MT$DB)[^C#'0``]D-(`@^%K0```$B-0Q!(.4,0=#&#>R``#X69````
+M2(M#$$B+2`A(BQ!(B4H(2(D12(D`2(E`"$B+<!A(B>_H(/___^MR#[9%8CE#
+M('-I9F:09I!(B>_HV/[__TB)PDB%P'14#[>`J````&8E_S!F/00@=2](.1MT
+M',:"J@````%(B=?H`````$B)[^BC_O__2(G"ZP[V0T@!=`B`2T@$9F9FD$B)
+MUDB)[^BU_O__#[9%8CE#('*<2(M<)`A(BVPD$$B#Q!C#9F9FD&9FD&9FD&9F
+MD$B#[!A(B1PD2(EL)`A,B60D$$B)^TR+9U!)BVPD(.B=_/__2(G"@+NH````
+M!'4A]H.I````,'0&]D5(!'02QH.J`````4B)W^@`````ZV20QT5$`````,="
+M(`````!(B5H82(N#P````$B)0A!(QX/``````````$B+10A(B54(2(DJ2(E"
+M"$B)$$$/MD0D8CE%(',>@WU``'48QT5``0```$B-=2A)BSPD2(/'6.@`````
+M2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9I!F9I!(@^P(2(M'(("G@`,``/?'
+MA\@`````````@WA``'47QT!``0```$B-<"A(BS](@\=8Z`````!(@\0(PV9F
+MD&:02(/L"$B)^@^VAX`#``"H"'4A@\@(B(>``P``2(M':$B+OX````!(Q\8`
+M````_Y"(````2(/$",-F9F:09F9FD%-(B?M(BT,X2(7`=$UF9I!(BW@82(7_
+M=#E(BT\82(7)="BZ`````(!Y1`!T'0^V<41(8\)(.7S!8'4)2,=$P6``````
+M_\(YUG_GZ`````"0Z[)(BP!(A<!UMDB)WV9FD.@`````2(M#:$B+NX````#_
+MD,@```!(B=_H`````%O#2(/L"+C_____]H>``P```7082(M':`^WTDB+OX``
+M``!%#[;`_Y"@````2(/$",.00;@`````2(MW4$B![@```@!(@>8``/[_2/_&
+M2(M7.$B%TG0JOP$```!F9F:09F:02(M"&$B%P'0-2(M(0"GQB?C3X$$)P$B+
+M$DB%TG7BN0````"Z`0```(G0T^!!A<!U!TACP4@!\,/_P8/Y`W[IN`````##
+M9F9FD&9F9I!F9I"^`````+D`````2,='2`````#V1V1`=`E(QT=``````,-(
+MBU<X2(72=#1F9I!F9I!(@WH8`'0)_\'K&V9FD&:02(M'2$@#0A!(B4=(2#ER
+M$'8$2(MR$$B+$DB%TG72@_D$N`````!(#TS&2(E'0,.005=!5D%505154TB#
+M[`A)B?U(B?5)B==(BU\XN`````!(A=MT$$B#>Q@!@]C_2(L;2(7;=?"Z````
+M`(/X`P^/4@,``.M`2(G:Z4@#``!,BR-)BT0D"$B)0PA)BP0D2(D#2,?&````
+M`$F+?0#H`````$B)QTR)YN@`````N@````#I$`,``$F+73A(A=L/A/X"``!.
+MC70]`$B#>Q@`#X5^`0``2#EK"`^'9`$``$B+0PA(`T,023G&#X=3`0``2#EK
+M"'5Q3#E[$`^$>/___T@Y:PAU84C'Q@````!)BWT`Z`````!(B<?H`````$F)
+MQ+H`````2(7`#X29`@``N0````"R((@(2/_`2/_*=?9(BT,03"GX28E$)!!-
+MB70D"$B+`TF)!"1,B2-,B7L02(G:Z6$"``!(.6L(#X/2````2,?&`````$F+
+M?0#H`````$B)Q^@`````28G$N@````!(A<`/A"X"``"Y`````+(@B`A(_\!(
+M_\IU]DB+0PA)B40D"$B)ZD@K4PA)B50D$$B+`TF)!"1,B2-(B6L(2"E3$$PY
+M>Q!V7DC'Q@````!)BWT`Z`````!(B<?H`````$F)Q$B%P`^$A/[__[D`````
+MNB````"("$C_P$C_RG7V3(GX2`-#"$F)1"0(2(M#$$PI^$F)1"002(L#28D$
+M)$R)(TR)>Q!(B=KIB@$``&9FD&:02(-[&``/A&D!``!F9I!FD$@Y:P@/A5H!
+M``"X`0```$R+(TV%Y'0G28-\)!@`=!9).6PD"'4/2(M3$$DY5"0020]'W/_`
+M38LD)$V%Y'79N@````"#^`$/CRD!``!,.7L0<E9(Q\8`````28M]`.@`````
+M2(G'Z`````!)B<2Z`````$B%P`^$^@```+D`````LB"("$C_P$C_RG7V28EL
+M)`A-B7PD$$B+`TF)!"1,B2-,B>+IS0```$V+93A-A>0/A*@```!)@WPD&``/
+MA8\```!(BU,02(M#"$@!T$DY1"0(=7U)BT0D$$@!T+H`````3#GX#X*,````
+M2,?&`````$F+?0#H`````$B)Q^@`````2(G&N0````"Z(````(@(2/_`2/_*
+M=?9,B?A(`T,(28E$)`A)BT0D$$@#0Q!,*?A)B40D$$B);@A,B7X02(L#2(D&
+M2(DS2(GRZRIF9I!FD$V+)"1-A>0/A5C___^Z`````.L12(L;2(7;#X4'_?__
+MN@````!(B=!(@\0(6UU!7$%=05Y!7\-F9I!F9I!F9I!54TB#[`A(B?M(B?5(
+MQ\8`````2(L_Z`````!(B<%(C5,X2(-[.`!T,&9F9I!F9I!(.2IU&TB+10!(
+MB0)(B>Y(B<_H`````.L09F9FD&9FD$B+$DB#.@!UUTB#Q`A;79##9F9FD&9F
+M9I!F9F:09F:005154TB)_4B)\[X`````2(M/.$B%R7092#G9=`Q(BT,(2#E!
+M"$@/1/%(BPE(A<EUYTB%]@^$E````$B+0Q!(.480<A!(B=Y(B>_H`````.D,
+M`0``2(M-.$B%R7119F:02(-Y&`!U#DB+0PA(`T,02#E!"'0*2(L)2(7)=>/K
+M+TB%R70J2(M6$$B+1@A(`=!(B4$(2(M#$$@IT$@!01!(B=Y(B>_H`````.FR
+M````2,=#&`````!(BU802(M&"$@!T$B)0PA(*5,0Z9(```"^`````$&\````
+M`$B+33A(A<ET,DB#>1@`=2-(BT,(2`-#$$@Y00AU!4F)S.L02(M!"$@#01!(
+M.T,(2`]$\4B+"4B%R77.2,=#&`````!(A?9T'$B+1@A(B4,(2(M#$$@#1A!(
+MB4,02(GOZ`````!-A>1T'DB+0Q!)`T0D$$B)0Q!,B>9(B>_H`````&9FD&9F
+MD(!-9!!;74%<PV9F9I!F9I!!54%455-(@^P(2(G]28GU2(G70;P`````0;@`
+M````O@````!(A=)T!$B+<DA(A?9U#[@`````3#EM0`^"^0```$B+33A(A<ET
+M8V9FD&9FD$B#>1@`=`E(.7D8=2-F9I!,.6D0<AI-A>1T"TF+1"002#E!$',*
+M28G,9F9FD&9FD$B#>1@`#Y3`2(7V#Y7"#[;`A<)T$$B+1@A(`T802#E!"$P/
+M1,%(BPE(A<EUHTV%P'0/28M`$$@#1A!,.>A,#T/FN`````!-A>1T;[X$````
+M2(M]`.@`````2(G#N`````!(A=MT5$B):SA(B>_HCOC__TB)0T!(A<!T&4R)
+M:RA)BW0D"$R)ZDB)[^AA^?__2(7`=0](B=_H`````+@`````ZQ=(B5@82(E#
+M2(!-9!!(B>_H`````$B)V$B#Q`A;74%<05W#9F9FD&9F9I!F9I!(@^P82(E<
+M)`A,B60D$$B)^TR+9SA(BW=(3(GGZ!_]__](B=_H`````$R)Y^@`````2(M<
+M)`A,BV0D$$B#Q!C#4TB)^TC'Q@````!(BS_H`````$B)Q^@`````2(G&2(7`
+M=0U(B=_H`````.LU9F:0N0````"Z(````&9FD&9FD(@(2/_`2/_*=?9(BT,H
+M2(E&$$B)<SA(BT,H2(E#2$B)0T!;PV9F9I!F9F:09F9FD$%455-(@>P``@``
+M28G\2(U?.`^V4RR)T(/@`SP!#X1V`0``B="#X.^(0RRY`````+H``@``2(G@
+MB`A(_\!(_\IU]@^V0RRH`@^%2P$``$B)Y8G"@^+WB%,LQP0D7W=A4DF+1"0H
+M2(E$)`2$TGD-@$PD#!`/MD,KB$0D#?9#+0%T&H!-#P$/ME,MP>("@^((#[9%
+M#(/@]PG0B$4,#[9#+:@$=!>`30\"B<+0ZH/B!`^V10R#X/L)T(A%#`^V0RVH
+M$'08@$T/"(G"P.H$@^("#[9%#(/@_0G0B$4,#[9#+:A`=!6`30\$B<+`Z@</
+MMD4,@^#^"="(10Q(@7L(__\?`'<$@&,L^P^V0RRH('4)P.@"@^`!B$4.O@``
+M``!(BPM(A<ET.4B#>1@`="I(8\9(C01`2(U$Q0!(BU$(2(E0$$B+41!(B5`8
+M2(M1&$B+4D!(B5`@_\9(BPE(A<EUQ[X``@``2(GOZ`````#WV(B%``$``$B+
+M<QA(@>X```(`2('F``#^_T&X`````$B)Z;H!````3(GGZ`````!(@<0``@``
+M6UU!7,-F9F:09F9FD&9FD%-(B?N`?Q`!=0F`/0`````"=0VX_____^LW9F:0
+M9F:02(M'4$@M```"`$@E``#^_TB)1RCHI_W__X!C9/3'0S#_____2(G?Z```
+M``"X`````%O#9F9FD&9FD&9FD&9FD$%455-(B?M)B?1(B?6`/0``````=!*`
+M/0``````=0F`3V0"Z<$````/MH.``P``J`$/A+(```"#X/N(@X`#``"Y````
+M`+H``@``3(G@9F:0B`A(_\!(_\IU]D&X`0```$R)X;H!````O@````!(B=_H
+M`````(!]`$5U/8!]`5)U-T&X`0```$B)Z;H!````O@$```!(B=_H`````(!]
+M`%!U%H!]`4UU$(!+9`)F9F:0ZS>`2V0"ZS&`O?X!``!5D'4G@+W_`0``JG4>
+MN@````!(8\)(P>`$0H.\(,H!````==#_PH/Z`W[G6UU!7,-FD%532(/L"$B)
+M_8!G9+](BU\X2(7;=$9(@WL8`'0)2(M[&.@`````2(L;2(7;=>A(BUTX2(7;
+M="5(@WL8`'062(M[&$B#?Q@`=0OH`````$B+73CK`TB+&TB%VW7;2(GOZ```
+M``!(@\0(6UW#9F:09I!(@>Q(`@``2(F<)!@"``!(B:PD(`(``$R)I"0H`@``
+M3(FL)#`"``!,B;0D.`(``$R)O"1``@``2(G]3(UD)!!(C5\X38GE@#T`````
+M`@^$$0(``$B+=U!(@>X```(`2('F``#^_T&X`0```$R)X;H!````Z`````"%
+MP'0D@*6``P``_DB)[K\!````Z`````"`2RP!Z?<#``!F9F:09F:008$\)%]W
+M85(/A;(!``"^``(``$R)Y^@`````A,`/A9T!``!!@'PD#@`/E<#!X`(/ME,L
+M@^+["<*(4RQ(BT502"T```(`2"4``/[_2(E%*$B)[^@I^___0?9$)`P0=`V`
+M2RR`00^V1"0-B$,K0?9$)`\!=!L/ME,M@\H!00^V1"0,P.@"@^`"@^+]"<*(
+M4RU!]D0D#P)T&@^V4RV#R@1!#[9$)`P!P(/@"(/B]PG"B%,M0?9$)`\(=!L/
+MME,M@\H000^V1"0,P>`$@^`@@^+?"<*(4RU!]D0D#P1T'@^V4RV#RD!!#[9$
+M)`R#X`$/ML#!X`>#XG\)PHA3+4C'!"0`````QT0D#`````!(8T0D#$B-!$!-
+MC3S$38UW$$F#?@@`=&&^!````$B+?0#H`````$B)!"1(A<`/A+,"``!)BU8(
+M28MW$$B)[^@3\___2(G"2(7`=%M(BP0D2(EH.$AC1"0,2(T$0$F+1,0@2(L,
+M)$B)04!(B5%(2(M"$$B)02A(B4H8_T0D#(-\)`P##XYX____2(,\)`!U!O9#
+M+`1T)8!++$!(B>_H`````.EI`0``2(L\).@`````Z3("``!FD(!++`%(C70D
+M$$B)[^@O_/__]D5D`@^$"`$``(!++`&`963[0;@!````2(U,)!"Z`0```+X)
+M````2(GOZ`````"%P`^%U/W__X%\)!!Y8V=L#X7-````O@`"``!(C7PD$.@`
+M````A,`/A;8````/MDPD%(G*P.H$@^("#[:%@`,``(/@_0G0B(6``P``]L$0
+M=`R`2RR`#[9$)!6(0ROV1"07`70:#[93+8/*`0^V1"04P.@"@^`"@^+]"<*(
+M4RWV1"07`G09#[93+8/*!`^V1"04`<"#X`B#XO<)PHA3+?9$)!<(=!H/ME,M
+M@\H0#[9$)!3!X`2#X""#XM\)PHA3+?9$)!<$=!T/ME,M@\I`#[9$)!2#X`$/
+MML#!X`>#XG\)PHA3+?9#+`%T,$B#.P!T(DC'Q@````!(BWT`Z`````!(B<=(
+MBS/H`````$C'`P````!(BT,82(E%*(![+`!Y(4'&10``#[9#*T&(10A(BT,P
+M2(M[2$R)[O^0P````&9FD/9#+0%T*D'&10`"#[9#+=#H@^`!08A%"$B+0S!(
+MBWM(3(GN_Y#`````9F9FD&9FD`^V0RVH!'0@0<9%``/`Z`.#X`%!B$4(2(M#
+M,$B+>TA,B>[_D,`````/MD,MJ!!T)4'&10`$P.@%@^`!08A%"$'&10D`2(M#
+M,$B+>TA,B>[_D,`````/MD,MJ$!T(T'&10`%P.@'08A%"$'&10D`2(M#,$B+
+M>TA,B>[_D,````"02(N<)!@"``!(BZPD(`(``$R+I"0H`@``3(NL)#`"``!,
+MB[0D.`(``$R+O"1``@``2('$2`(``,-F9F:09F9FD$B![!@"``!(B9PD``(`
+M`$B)K"0(`@``3(FD)!`"``!(B?M(C6\X28GD@#T```````^$7@$``(!/9`*`
+M32P!@&=D^T&X`0```$B)X;H!````O@D```#H`````(7`#X4:`0``@3PD>6-G
+M;`^%TP```+X``@``2(GGZ`````"$P`^%O@````^V3"0$B<K`Z@2#X@(/MH.`
+M`P``@^#]"="(@X`#``#VP1!T#(!-+(`/MD0D!8A%*T'V1"0'`70;#[95+8/*
+M`4$/MD0D!,#H`H/@`H/B_0G"B%4M0?9$)`<"=!H/ME4M@\H$00^V1"0$`<"#
+MX`B#XO<)PHA5+4'V1"0'"'0;#[95+8/*$$$/MD0D!,'@!(/@((/BWPG"B%4M
+M0?9$)`<$=!X/ME4M@\I`00^V1"0$@^`!#[;`P>`'@^)_"<*(52WV12P!=$Q(
+M@WT``'0C2,?&`````$B+.^@`````2(G'2(MU`.@`````2,=%``````!(BT48
+M2(E#*.L8@*.``P``_DB)WK\!````Z`````"`32P!2(N<)``"``!(BZPD"`(`
+M`$R+I"00`@``2('$&`(``,-F9F:09F9FD&9F9I!(8_9(`?Y(B?%(.?YV%V:0
+M2(/I`@^V$0^V00&(`8A1`4@Y^7?K2(GY2#GW=&:`/R!U$$C_QT@Y]W1)@#\@
+M9F:0=/!(.?=T/(`_`'0W9F9FD`^V!TC_QSP@=19(.?=T)(`_`'05@#\@=!!F
+M9F:09F:0#[9'_X@!2/_!2#GW=`6`/P!US4@Y\70+Q@$`2/_!2#GQ=?7SPV9F
+M9I!F9F:09F:0#[97"M#J@^(!#[9&"M#H@^`!N0$````YPG]5#[97"M#J@^(!
+M#[9&"M#H@^`!N?____\YPGPZ#[9'#+D!````.D8,=RP/MD<,N?____\Z1@QR
+M'@^V1PVY`0```#I&#7<0#[9'#3I&#1G)9F9FD&9FD(G(PV9F9I!F9I!F9I!F
+M9I!!5T%6055!5%532(/L:$F)_$F)]D&)UTB+?QB^`0```.@`````2(G%28M$
+M)`A(C70D,$R)]_]0>$B+E9@#``!(BX60`P``2(E0"$B)`DB+10!(BU@82(/`
+M&$@YV`^$D@```$R-JW#\__^`NX#\__\!=6Y(BY/H_/__28M$)`A(.T((=1Q(
+M@[@``0```'022(MR$$F+?"00_Y```0``ZPV028MU>$R)Y^@`````A<!FD'A"
+MA<!U*DF+1"0(28N]@````$B-="0`_U!X2(UT)`!(C7PD,.BG_O__A<!^%V9F
+MD$B+&TB+10!(@\`82#G8#X5N____2(V%D`,``$B+4PA(B4,(2(F=D`,``$B)
+M4`A(B0+'130!````@(V``P```4F+1"0(2(E%:$R)M8````!,B65X1(E]<$B+
+M1"0P2(E%4$B)12@/MD0D/HA%8HM$)$1FB45@2(M-(`^V5"0Z@^(!#[9!2(/@
+M_@G0B$%(2(V]B````+XH````Z`````!(B>A(@\1H6UU!7$%=05Y!7\.04TB#
+M[##H9O[__TB)PTB+0&A(B>9(B[N`````_U!X2(M$)!CV1"0*`74)]H```0``
+M!'4(2(G?Z`````!(B=A(@\0P6\-F9F:09F9FD&9F9I!(@^P82(E<)`A,B60D
+M$$F)](G32,?&`````.@`````2(G'C0S;NB````!,B>;H`````$B+7"0(3(MD
+M)!!(@\08PV9F9I!F9F:09F9FD&9FD$B#[%A(B5PD.$B);"1`3(ED)$A,B6PD
+M4(G[2(GU28G5@_\'#X>G`0``B?C_),4`````2(GWZ`````!)B<1(BU`82(U`
+M&$@YT`^$@@$``&:02(VJ</S__X"Z@/S__P%U$$PYJO#\__]T%&9F9I!F9I!(
+MBQ)(.=!UV.E3`0``@_L'#X=*`0``B=C_),4`````2(M%"$B)[_]0,.DR`0``
+M@[W(``````^%)0$``,>%R`````$```!(BT4(2(M`6$B)A;````!(B:VX````
+M2,>%P`````````!(C;6P````28U\)%CH`````.GD````@(V``P``$.G8````
+M@*6``P``[TB+12"#>$``#X7#````QT!``0```$B+=2!(@\8H28U\)%CH````
+M`.FE````2(M%>$B+0`A(B>9(B[V`````_U!X#[9$)`Z(16+I@P```&9FD$B)
+M]^@`````28G$2(M8$$B%VW0.2#EK$'0(2(L;2(7;=?)(C7M(Z`````!(A<!T
+M4$B)6!A$B6@@2,<``````$B)0`A(QT`0`````$F-?"1(2(G&Z`````#K)F9F
+MD&9FD$B+7B!(QT8@`````+\#````Z`````!(B5T@9F:09F:02(M<)#A(BVPD
+M0$R+9"1(3(ML)%!(@\18PV9F9I!F9I!3QP4``````````$B+'0````!(A=MT
+M(_^3D````#D%`````',,_Y.0````B04`````2(M;"$B%VW7=@P4`````*$C'
+MQP````#H`````+@`````6\-F9F:09F9FD&9F9I!(@^P(Z`````!(@\0(PV:0
+M4TB)^TB+5R`/MD)(@^`%/`%U73ER1')8O@$```!(BS_H`````$B)PDB%P'1&
+M#[:`J0```(/@SX/(((B"J0```$B)6E!(B5I8QH*H````!,:"J@````!(QX+`
+M`````````$B)U^@`````ZPAF9I!FD/]"1%O#9F9FD&9F9I!F9I!(BT<@QT!$
+M`0```,-F9F:02(/L&$B)7"0(2(EL)!!(BU]82(LOZ`````#_"X,[`'4/2(US
+M"$B)[^@`````9F:02(M<)`A(BVPD$$B#Q!C#D%532(/L"$B)^TB+;R"^`0``
+M`$B+/^@`````N@````!(A<`/A)4```#V14@!=#+&@*@````"2,>`F```````
+M``#&@)`````&QX"4`````````,:`D0````#K7&9FD&9FD,:`J`````-(QX"@
+M`````````,:`FP```$!FQX"4``````!FQX"6``````!FQX"8``````#&@)H`
+M``!`9L>`D```````9L>`D@````$`9L>`G```````2(E84$B)PDB)T$B#Q`A;
+M7<-F9I!F9I!F9I!32(GSZ"?___](A<!T&4B)6%A(QX#``````````/\#2(G'
+MZ`````!;PV9F9I!F9I!!5%532(G[28GT@'\0!'9`O0````"`?T0`=%EF9I!F
+MD$ACQ4B+?,-@2(7_=!/VAX`#```!=`I,B>;H`````&:0_\4/MD-$.>A_UNLH
+M9F9FD(!_$`1U"DB+7SAF9I!F9I#V@X`#```!=`M,B>9(B=_H7/___UM=05S#
+M9F9FD&9FD$B#[!A(B5PD"$B);"002(MO4$B+72`/ME-(B="#X/V(0TB`OZH`
+M```!=0B)T(/@^8A#2.@`````@WM``'48QT-``0```$B-<RA(BWT`2(/'6.@`
+M````2(M<)`A(BVPD$$B#Q!C#9F9FD&9F9I!F9I!(@^P82(E<)`A(B6PD$$B)
+M^TB+;R#H]OW__TB)PKC_____2(72="A(QX+``````````(!-2`)(BT-H2(N[
+M@````$B)UO^0F````+@`````2(M<)`A(BVPD$$B#Q!C#D)!(BPT`````2(7)
+M=#-(BU$82(U!&$@YT'0>2(G&9F9FD$B-@G#\__\YN.@#``!T%4B+$D@YUG7I
+M2(L)2(7)=<VX`````//#9F9FD&9FD&9FD(!_!`!U#[@`````@3][`0``=A3K
+M#;@`````@3][`0``=@6X`0```//#9F9FD&9FD(!_!`!U#[@`````@3_#`0``
+M=A3K#;@`````@3_#`0``=@6X`0```//#9F9FD&9FD$B)^DB)\0^V!SH&=15F
+M9I"`.@!T#4C_PDC_P0^V`CH!=.X/O@(/OA$IT,-F9I!FD$%505154TB#[`A(
+MB?U!B?6)M5P"!`!!O`````!!.?1S*$2)XTC!XP1(`>M(C;-8`@``2(GOZ```
+M``!(B8-0`@``0?_$13GL<MC'A6`"!``2````2(L5`````$B%TG0>D(N%8`($
+M`#M"$'8)BT(0B85@`@0`2(M2"$B%TG7C2(/$"%M=05Q!7<-F9F:09F9FD%53
+M2(/L"$B)^[T`````@[]<`@0``'8IB>A(P>`$2`'82(N06`(``$B+L%`"``!(
+MB=_H`````/_%.:M<`@0`=]?'@UP"!```````2(G?Z`````!(@\0(6UW#9F9F
+MD&9FD$%6055!5%532(/$@$&)_4F)]D&\`````$B++0````!(A>T/A)````!(
+MBUT02(7;='I(BT,(2(M[$$B)YO]0.(!\)!,`=%U$B>!!_\1$.>AU4DV%]G1(
+M#[9$)!=!.09\/DB+&TB%VW4(N`````#K3I`/MD0D%T$I!DB+0PA(BWL02(GF
+M_U`X@'PD$P!T![@`````ZRD/MD0D%T$Y!GW"2(G8ZQI(BQM(A=MUADB+;0!(
+MA>T/A7#___^X`````$B#[(!;74%<05U!7L-F9I!F9I!!5D%505154TB#Q(!!
+MB?U)B?9!O`````!(BRT`````2(7M#X2-````2(M=$$B%VW1W2(M#"$B+>Q!(
+MB>;_4#B`?"03`'1:1(G@0?_$1#GH=4]-A?9T0$&#/@!T.DB+&TB%VW4,N```
+M``#K3V9FD&:00?\.2(M#"$B+>Q!(B>;_4#B`?"03`'0(N`````#K*Y!!@SX`
+M=<9(B=CK'V9FD&:02(L;2(7;=8E(BVT`2(7M#X5S____N`````!(@^R`6UU!
+M7$%=05[#9F:09F:09F:005=!5D%505154TB![)@```!)B?](B70D"$F)U$B)
+MS4&^_____\=$)`0`````QP(`````QP$`````3(LM`````$V%[0^$I````&9F
+M9I!F9I!)BUT02(7;#X2#````9F:02(M#"$B+>Q!(C70D$/]0.$B+2PA(@[D(
+M`0````^5P$B%[0^5P@^VP(7"=!1(BWL0_Y$(`0``B40D!&9FD&9FD(!\)",`
+M=!)!_\9!QP0D`````,=%``````!,.?MU"DB+1"0(1(DPZR4/MD0D)T$!!"2+
+M1"0$`44`2(L;2(7;=8!-BVT`387M#X5C____2('$F````%M=05Q!74%>05_#
+MD$%455-(@\2`O0````!,BR4`````387D=#YF9F:09F:028M<)!!(A=MT)&9F
+MD&9FD$B+0PA(BWL02(GF_U`X@'PD$P&#W?](BQM(A=MUXDV+)"1-A>1UR8GH
+M2(/L@%M=05S#9F9FD&9F9I!F9I!F9I!54TB![(@```!(B?.^`````.C:_/__
+M2(G%N/____](A>T/A.T```"Y`````+I,````2(G8B`A(_\!(_\IU]KD`````
+MNH````!(B>!F9I!FD(@(2/_`2/_*=?9(BT4(2(GF2(M]$/]0.`^V1"06B$,#
+M#[9$)!2(`P^V1"05B$,!2(M$)#Q(B4,$2(M$)$1(B4,,2(M$)$Q(B4,42(M$
+M)%1(B4,<BT0D7(E#)$B+1"082(E#*$B+1"0@2(E#,$B+1"0H2(E#.$B+1"0P
+M2(E#0(M$)#B)0T@/MD0D%XA#`DB#?0``="M(BVT`2(M%"$B+?1!(B>;_4#B`
+M?"03`'42#[9#`@)$)!>(0P)(@WT``'75N`````!(@<2(````6UW#9I!54TB!
+M[(@```!(B?.^`````.BZ^___2(G%N/____](A>T/A"$!``"Y`````+I8````
+M2(G8B`A(_\!(_\IU]KD`````NH````!(B>!F9I!FD(@(2/_`2/_*=?9(BT4(
+M2(GF2(M]$/]0.`^V5"06B%,##[9$)!2(`P^V1"05B$,!2(M$)#Q(B4,$2(M$
+M)$1(B4,,2(M$)$Q(B4,42(M$)%1(B4,<BT0D7(E#)$B+1"082(E#*$B+1"0@
+M2(E#,$B+1"0H2(E#.$B+1"0P2(E#0(M$)#B)0T@/M@0DB$-0#[9$)`&(0U$/
+MMD0D`HA#4@^V1"0#B$-32(M%&(E#3(!]:`!T"(G0@\@$B$,##[9$)!>(0P)(
+M@WT``'0K2(MM`$B+10A(BWT02(GF_U`X@'PD$P!U$@^V0P("1"07B$,"2(-]
+M``!UU;@`````2('$B````%M=PV9F9I!F9F:09F:09F:005=!5D%505154TB!
+M[,@```")="0,28G62(UT)`SH3OK__TF)Q$&_`````+C_____387D#X3X````
+M28ML)!BY`````+I$````3(GP9F:09I"("$C_P$C_RG7V28M$)`A(C70D0$F+
+M?"00_U`X@'PD4A`/MD0D4KH/````#T/"B$0D4DF+1"0(BW0D#$F+?"002(GB
+M_Y"X````A<!U#HM$)`1!B48$BP0D08D&2(M=&$B-11A(.=AT=$F)Q69FD&:0
+M2(VK</S__X"[@/S__P%U5$PYH^C\__]U2TB+@]C\__](B[OP_/__2(UT)!#_
+M4'CV1"0:`G4N#[9$)!P[1"0,=2,/MD0D'3I$)%)S&`^VT(N%Z`,``$&)1)8(
+M0?_'1#A\)%)T"$B+&TDYW764N`````!(@<3(````6UU!7$%=05Y!7\-F9F:0
+M9F:09F:09F:00;H`````N`````"%]@^.L````.L$1(G0PTR+#0````!-A<D/
+MA)<```!F9F:09F:028M)&$F-01A(.<AT=TF)PTR-@7#\__](@[F(_/__`'5;
+M@+F`_/__!'8K2(N!\/[__TB%P'0-2(-X"`!T!DPY0!!T.4ECTD&+@.@#``")
+M!)=!_\+K'D&`>!`!=1=!]D!D`G0026/208N`Z`,``(D$ET'_PD$Y\@^$:?__
+M_TB+"4DYRW6,38L)387)#X5P____1(G0\\-F9F:09F9FD&9FD$&Z`````+@`
+M````A?9^6NL$1(G0PTR+!0````!-A<"0=$1)BT@828U`&$@YR'0O28G!2(V!
+M</S__X"Y@/S__P%U%$ECTHN`Z`,``(D$ET'_PD$Y\G2[2(L)23G)==1-BP!-
+MA<!UO$2)T//#9F:09I"-1_NZ`````(/X!W=#B<#_),4`````N@$```#K,[H"
+M````ZRRZ!P```.LEN@4```#K'KH&````ZQ>Z`P```&:0ZPZZ!````.L'N@@`
+M``!FD(G0PV9F9I!F9I!F9I!F9I!54TB#[`A(B?V[`````/:'@`,```%U&;,!
+M]H=A`@``!+@!"```#T3#Z9L!``!F9I#VAV`"```"=1!(BU=02(G02#-'6$B%
+MPG0#@\L"B=B`S!#VA6`"```!#T78B=B#R`3VA6`"```0#T78B=B`S`'VA6`"
+M```@#T78B=B`S`+VA6`"``!`#T782(-]6`!T(8/+"$B+?5CH`````$B+50@/
+MME(*B=F`S2`YT`],V69FD(G8@\@0]H6``P``!`]%V(G8@\A`]H6``P```@]%
+MV(G8#(#VA6`"```(#T78B=B`S`CVA6$"```$#T78B=B`S`3VA6$"```(#T78
+MO@````"`?40`#X2D````#[9]1&9FD$ACQDB+3,5@2(7)#X2"````]H&``P``
+M`71Y@'D0!'9S]H%@`@```G402(M14$B)T$@S05A(A<)T`X/+`HG8@,P0]H%@
+M`@```0]%V(G8@\@$]H%@`@``$`]%V(G8@,P!]H%@`@``(`]%V(G8@,P"]H%@
+M`@``0`]%V(G8@\@(2(-Y6``/1=B)V`R`]H%@`@``"`]%V/_&.?</CV/____V
+MPP)T%/;'$'4,B=@E""```(/X"'4#@^/]B=A(@\0(6UW#D+@`````]H>``P``
+M`;H!````#T3"B<*#RB#V1@@@#T7"B<*#R@+VAX`#```$#T7"B<*#R@3VAX`#
+M```"#T7"B<*#RA#V1@@0#T7"B<*#RD#V1@H!#T7"B<*`RH#V1@H"#T7"B<*!
+MR@```(#V1V0$#T7"B<*!R@```@#V1V0"#T7"B<*!R@```0#V1V0!#T7"PU-(
+MBX=H`@``2,'H"TAIT.@#``!(BT<H2(G!2,'I"TB)T+H`````2/?Q2(G!#[97
+M1$B+1P@/MD`*B=,IPXG82)A(#Z_!2(T$@$2-!`"^`````(/Z``^.A````$&)
+MT69FD$ACQDB+3,=@2(7)=&KV@8`#```!=&&`>1`$=EOV@6`"``!P=%)(BX%H
+M`@``2,'H"VG0Z`,``$B+02A)B<))P>H+B="Z`````$'W\D&)P@^V041(BU$(
+M#[92"BG000^OPFO("D6%P`^4PD$YR`^7P`G0J`%$#T7!_\9!.?%_@D&!^!$G
+M``"X$"<``$0/0\!$B<!;PV9F9I!F9I!F9I!F9I!32(N/@`(``("YJ@````(/
+MA;$```!(BT$02(M1"$B+0"A(*T(H2,'H"[H0)P``2(7`#X1\`0``@'DH`'1`
+M2(M!$$B+4"A(B=!(*X&@````2,'H"TAIP.@#``!(BTD(2"M1*$C!Z@M(B=&Z
+M`````$CW\4B-!("-%`#I-@$``$B+00A(BU`H2(N!H````$@IT$C!Z`M(:?#H
+M`P``2(M!$$B+0"A(*=!(B<)(P>H+2(GP2(G3N@````!(]_-(C02`C10`Z>T`
+M``"`N:H````#=7:`>2@`=#M(BT$(2(M0*$B)T$@K@:````!(P>@+2&G`Z`,`
+M`$C!Z@M(B=&Z`````$CW\4B-!("-%`#II@```&9FD$B+@:````!(P>@+2&G0
+MZ`,``$B+00A(BT`H2(G!2,'I"TB)T+H`````2/?Q2(T$@(T4`.MN@'DH`'0U
+M2(M!$$B+4"A(B=!(*X&@````2,'H"TAIP.@#``!(P>H+2(G1N@````!(]_%(
+MC02`C10`ZS-(BX&@````2,'H"TAIT.@#``!(BT$02(M`*$B)P4C!Z0M(B="Z
+M`````$CW\4B-!("-%`"!^A$G``"X$"<```]#T(G06\-F9F:09F9FD&9FD$%5
+M05154TB#[`A)B?U(B?-(BX=P`@``2(D&2(N'>`(``$B)1@@/MG\0Z$+Z__^(
+M0V1!#[9%18A#94F+A6@"``")@Y````!,B>_H@OK__XE#:$R)[^@`````B8.,
+M````QD-F`$&\`````$&`?40`=&5)8\1)BVS%8$B%[71+@'MG`'4,#[9]$.CD
+M^?__B$-G@'T0!'4;2`^V0V9(BU4XBY+H`P``B52#;.L59F:09F:02`^V4V:+
+MA>@#``")1)-L_D-F@'MF!W<-0?_$00^V141$.>!_FT0/MF-F08/\!W\426/$
+MQT2#;/____]!_\1!@_P'?NQ(@\0(6UU!7$%=PY!!54%455-(@^P(28G]2(GS
+M2(N'<`(``$B)!DB+AW@"``!(B48(#[9_$.A"^?__B$-D00^V146(0V5)BX5H
+M`@``2(F#L````$R)[^B!^?__B4-H3(GOZ`````")@ZP```#&0V8`0;P`````
+M08!]1`!T9$ECQ$F+;,5@2(7M=$J`>V<`=0P/MGT0Z./X__^(0V>`?1`$=1I(
+M#[9#9DB+53B+DN@#``")5(-LZQ1F9I!FD$@/ME-FBX7H`P``B423;/Y#9H![
+M9@]W#4'_Q$$/MD5$1#G@?YQ$#[9C9D&#_`]_%$ECQ,=$@VS_____0?_$08/\
+M#W[L2(/$"%M=05Q!7<.02(M/&$B%R74,BT<XPXG0`T$X_\##N@````"`>40`
+M9I!T$P^V<42)T$@Y?,%@=-[_PCG6=_&X`````,-F9I!FD$%505154TB#[`A)
+MB?U)B?1(BT=09HF&R````.B@____08F$),0```!)BX5P`@``28D$)$F+A7@"
+M``!)B40D"$$/MGT0Z.?W__]!B$0D9$$/MD5%08A$)&5)BX5H`@``28F$)+``
+M``!,B>_H(?C__T&)1"1H3(GOZ`````!!B80DK````$'&1"1F`+T`````08!]
+M1`!T>$ACQ4F+7,5@2(7;=$!!@'PD9P!U#@^V>Q#H?/?__T&(1"1G@'L0!'44
+M2&/%2(M3.(N2Z`,``$&)5(1LZQU(8]6+@^@#``!!B424;.L-2&/%0<=$A&P`
+M````D$'^1"1F_\5!#[9%1#GH#Y_`@_T/#Y["#[;`A<)UB$$/MFPD9H/]#W\:
+M9F9FD&9FD$ACQ4''1(1L_______%@_T/?NU)@[V``@```'1C28N5@`(``+C_
+M____2(-Z"`!T"DB+0@B+@.@#``!!B80DN````+C_____2(-Z$`!T"DB+0A"+
+M@.@#``!!B80DO````$B#>@@`=!E(@WH0`'023(GOZ`````!!B80DP````&:0
+M2(/$"%M=05Q!7<-F9I!FD$%505154TB#[`A)B?U)B?1(BT=02(F&D````.CP
+M_?__08F$)(0```!)BX5P`@``28D$)$F+A7@"``!)B40D"$$/MGT0Z#?V__]!
+MB$0D9$$/MD5%08A$)&5!#[9%2$&(A"2(````28N%:`(``$F)1"1P3(GOZ&?V
+M__]!B40D:$R)[^@`````08E$)&Q!QD0D9@"]`````$&`?40`#X2`````2&/%
+M28M<Q6!(A=MT1D&`?"1G`'4.#[9[$.C!]?__08A$)&>`>Q`$=1=(8\5(BU,X
+MBY+H`P``08F4A)@```#K(DACU8N#Z`,``$&)A)28````ZP](8\5!QX2$F```
+M``````!!_D0D9O_%00^V140YZ`^?P(/]/P^>P@^VP(7"=8!!#[9L)&:#_3]_
+M&F9F9I!(8\5!QX2$F````/______Q8/]/W[J28.]@`(```!T8$F+E8`"``"X
+M_____TB#>@@`=`I(BT((BX#H`P``08E$)'BX_____TB#>A``=`I(BT(0BX#H
+M`P``08E$)'Q(@WH(`'0<2(-Z$`!T%4R)[^@`````08F$)(````!F9I!FD$B#
+MQ`A;74%<05W#9F:09I!!5%532('LP````$F)_$B)\TB+;WBX_____X!_$`$/
+MA98!``!(BT=H2(VT))````!(B[^`````_U!X2(M%"$B-="002(M]$/]0.$B-
+M3"0,2(U4)`A(C70D!$B)[^C?[?__#[:$))T```"(0P(/MH0DG````/:$))H`
+M```"=`8#1"0,ZP0#1"0(B$,!BT0D!(@#08!\)&0`>0M!#[9$)&.(0P/K"P^V
+MA"2B````B$,##[:4))@```")T<#I!H/A`0^V0P:#X/S`Z@<!T@G("=`/MHPD
+MF0```(/A`<'A`H/@\P^VM"29````C12U`````(/B"`G("=")\8/A$(/@SXGR
+M@^(@"<@)T(GQ@^%`@^`_B?+`Z@</MM+!X@<)R`G0B$,&#[:4))\```"#X@,/
+MMD,'@^#\"="(0P</MH0DHP```(A#!4#VQ@1T!\9#!`+K'9`/MH0DF0```,#H
+M`X/@`8/X`1G`@^#^@\`#B$,$2(VT))````!,B>?H=/7__XE#"$B#O"2H````
+M`'0K2(NT)*@```!(C7L,NI8```#H`````$B#PT*^*````$B)W^@`````QD,G
+M`+@`````2('$P````%M=05S#9F9FD&9FD&9FD$%455-(@>S`````28G\2(GU
+M2(M?>+C_____@'\0`0^%^`$``$B+1VA(C;0DD````$B+OX````#_4'A(BT,(
+M2(UT)!!(BWL0_U`X2(U,)`Q(C50D"$B-="0$2(G?Z`_L__\/MH0DG0```(A%
+M`@^VA"2<````]H0DF@````)T!@-$)`SK!`-$)`B(10&+1"0$B$4`08!\)&0`
+M>0M!#[9$)&.(10/K"P^VA"2B````B$4##[:$)*,```"(104/MI0DF````(G1
+MP.D&@^$!#[9%!H/@_,#J!P'2"<@)T`^VC"29````@^$!P>$"@^#S#[:T))D`
+M``"-%+4`````@^(("<@)T(GQ@^$0@^#/B?*#XB`)R`G0B?&#X4"#X#^)\L#J
+M!P^VTL'B!PG("="(108/MI0DGP```(/B`P^V10>#X/P)T(A%!T#VQ@1T!L9%
+M!`+K'`^VA"29````P.@#@^`!@_@!&<"#X/Z#P`.(101(C;0DD````$R)Y^BD
+M\___B44(2(.\)*@`````="M(B[0DJ````$B-?0RZE@```.@`````2(U=0KXH
+M````2(G?Z`````#&0R<`0?9$)&1!=1A)BT0D2$B)A:(```!)BT0D0$B)A:H`
+M``!)BTPD.+X`````2(7)=#-(@WD8`'0?2(M!&$B+0!A(A<!T$DACUHN`Z`,`
+M`(F$E;H```#_QH/^!W\(2(L)2(7)=<VX`````$B!Q,````!;74%<PV9F9I!F
+M9F:055-(@^P(B?U(B?/H`````$B)Q[D`````NJX```!(B=B("$C_P$C_RG7V
+MA>T/E,)(A?\/E,`)T+K_____J`%U4DB+1RB)0P2X_____TB#?Q@`=`I(BT<8
+MBX#H`P``B4,(@'\0!'83Q@,!2(US#.C>]?__N@````#K&;K_____@'\0`74.
+MQ@,"2(US#.AP^___B<*)T$B#Q`A;7<-F9I!FD%532(/L"(G]2(GSZ`````!(
+MB<>Y`````+K8````2(G8B`A(_\!(_\IU]H7M#Y3"2(7_#Y3`"="Z_____Z@!
+M=5-(BT<H2(E#!+C_____2(-_&`!T"DB+1QB+@.@#``")0PR`?Q`$=A/&`P%(
+MC7,0Z#WV__^Z`````.L9NO____^`?Q`!=0[&`P)(C7,0Z,_Z__^)PHG02(/$
+M"%M=PV9F9I!!5%5308G\2(GUZ`````!(B<.Y`````+KZ````2(GHD(@(2/_`
+M2/_*=?9%A>0/E,)(A=L/E,`)T+K_____J`$/A88```!(BT,H2(E%!+C_____
+M2(-[&`!T"DB+0QB+@.@#``")10RX_____X-[,`!X!`^V0S"(10-(BP-(BW@(
+MZ`````"(10(/MH.!`P``B$4!@'L0!'87QD4``4B-=2!(B=_HJ?;__[H`````
+MZQVZ_____X![$`%U$L9%``)(C74@2(G?Z,?[__^)PHG06UU!7,-F9F:09F9F
+MD&9FD&9FD$%455-!B?Q(B?7H`````$B)P[D`````BU4`@^H%2(U%!4B%TG0*
+MB`A(_\!(_\IU]D6%Y`^4PDB%VP^4P`G0NO____^H`0^%D0```$B+0RA(B440
+MN/____](@WL8`'0*2(M#&(N`Z`,``(E%&+C_____@WLP`'@$#[9#,(A%#TB+
+M`TB+>`CH`````(A%#@^V@X$#``"(10V`>Q`$=B+&10P!NO____^`>T1`=S!(
+MC74L2(G?Z&CW__^Z`````.L=NO____^`>Q`!=1+&10P"2(UU+$B)W^C6^O__
+MB<*)T%M=05S#9F9FD&9FD&9FD&9FD$%7059!54%455-(@>PH`@``2(G]28GV
+MB%0D'TC'1"00_____\9$)`\`@'X/`'@,@'\0!G4+]D8/`G0%QD0D#P&Y````
+M`+H``@``2(U$)""0B`A(_\!(_\IU]D$/MD8+B$5(00^V1@Z(145!#[9.#K@!
+M````T^!FB45&#[:58`(``(G0@\@$B(5@`@``0?9&#P-T18G0@\@%B(5@`@``
+M2,>%:`(```````!(BT4(@'@+`'0PB="#R`>(A6`"``"`?1`*=1\/MDU$_\FX
+M`0```$C3X$B)15#K"TC'A6@"``#_____28M&$$B)A7`"``!)BT882(F%>`(`
+M`$&\`````(!]1``/A"(!``!)8\1(BUS%8$B):QA(BT0D$$@Y0RAS"4B+0RA(
+MB40D$(![$`0/A>@```!,BWLX@'PD'P`/E<`/ME0D#X/R`0^VP(7"=#=!O0``
+M``!(BT-(26/U2`-P"$&X`````$B-3"0@N@$```!,B?_H`````$'_Q4&#_0%^
+MU.F6````@'PD#P`/A(L```!(BT-(2(MP"$&X`0```$B-3"0@N@$```!,B?_H
+M`````(7`=6>`O"0>`@``JG4<@+PD'P(``%5U$L:$)!X"``!5QH0D'P(``*JP
+M`8!\)"!2=1:`?"0A174/QD0D($7&1"0A4K@!````A<!T($B+0TA(BW`(0;@`
+M````2(U,)""Z`0```$R)_^@`````0?_$#[9%1$0YX`^/WO[__X!]$`=U+T&\
+M``````^V142)P8/X`'Y/26/$2(M4Q6!(BT4H2`-"*$B)12A!_\1$.>%_Y.LQ
+M2(M%"(!X"0!T#0^W14;WV$B82"%$)!`/MD5$2(M5"`^V4@HIT$B82`^O1"00
+M2(E%*$$/MD8/@^`<P?@"B(6!`P``2('$*`(``%M=05Q!74%>05_#9F9FD&9F
+M9I!F9F:00;D`````@']$`'1M1`^V5T1)8\%(BU3'8$B%TG13]H*``P```71*
+M@'H0!'8XN0````"`>D0`=#E$#[9"1&9FD$ACP4B+1,)@2(7`=`_V@(`#```!
+M=`9(.7`X="+_P4$YR'_=ZPQ(.7(X=09(B=!FD,-!_\%%.<I_F+@`````\\-!
+MN0````!!N`````!(A?9T!$R+1DBY`````$B+5SA(A=)T$4B#>A@!2(/9_TB+
+M$DB%TG7ON`````!(@_D##X>*````N0````!(A?9T!$B+3BA(BU<X2(72=$YF
+M9I!F9I!(A?9T!D@Y<AAT-4V%P&:0=!=(@WH8`'4G28M`"$D#0!!(.4((3`]$
+MRDB#>A@`=1!(.4H0=@I(BTH09F:09F:02(L22(72=;A-A<`/E<!-A<D/E<(/
+MML"%PG0/28M!$$D#0!!(.<A(#T?(2(G(\\.005=!5D%505154TB#[!!)B?Q!
+MB=5)B<]`B'0D#T2(3"0-2<?&_____TC'!"0`````1(G`@^`/B$0D#DB%_P^$
+MH@$``(!_$`</E,)`@/X'#Y3`"="H`0^$A0$``(!_$`=U#X!_1`$/A-D!``!F
+M9I!FD$&`?"00!P^4P(!\)`\'#Y3"#[;`A<(/A%D!``"]`````$&`?"1$``^5
+MP$0Y[0^2P@^VP(7"#X0Z`0``9F:09I")Z$F+7,1@2(7;#X0A`P``08L\A^@`
+M````2#E#.'0?_\5!#[9$)$0YZ`^7P$0Y[0^2P@^VP(7"=<?I]P```$$/MD0D
+M1+D`````1#GH#X<%`P``ZPI(BU$02`$4).M^O0````!!@'PD1`!T+XGH28M<
+MQ&!(A=L/A+T"``!!BSR'Z`````!(.4,X#X6Q`@``_\5!#[9$)$0YZ'?120^V
+M1"1$28MTQ%A(BT8X28M,)"A(B0PD2(M(.$B%R70A2(-Y&`!U$DB+5DA(BT((
+M2`-"$$@Y00AT@$B+"4B%R77?00^V;"1$1#GM<SV)Z$&+/(?H`````$B)PTB%
+MP'0/28L$)$@Y`W4&@'L0`70,N0````!FD.E"`@``2(M30$@!%"3_Q40Y[7+#
+M2(L,).DJ`@``9F:02(7_=5^]`````$0Y[69FD`^#L@```(GH08L\A^@`````
+M2(G#2(7`=`:`>!`!=!&Y`````.GN`0``9F9FD&9FD$B#>$``#X3+`0``2(M`
+M0$@!!"1,.7-`3`]"\/_%1#GM<K3K9+T`````1#GM<UIFD(GH08L\A^@`````
+M2(G#2(7`=`])BPPD2#D(=0:`>!`!=`ZY`````.F+`0``9F9FD$B)QDR)Y^@E
+M_/__2(G&2(G?Z)K\__](`00D3#GP3`]"\/_%1#GM<J@/MD0D#X/X!P^'3`$`
+M`(G`_R3%`````$B+#"3I/P$``(!\)`T!9F:0=R!$B>JX_____P^V3"0.T^!(
+MF$PA\$B)T4@/K\CI%0$``(!\)`T"=EE$#[9,)`U$B>BZ`````$'W\8G&A=(/
+ME,"#_@$/G\(/ML"Y`````(7"#X3@````N/____\/MDPD#M/@2)A,(?!!C5'_
+M2&/22`^OPDACUDB)P4@/K\KIM0```+D`````08/]`0^&I@```$R)\4&#_0(/
+MAID```"X_____P^V3"0.T^!(F$PA\$2)ZM'JB=)(B<%(#Z_*ZWBY`````$&#
+M_0)V;4&-5?^X_____P^V3"0.T^!(F$PA\$B)T4@/K\CK3[D`````08/]`W9$
+M08U5_KC_____#[9,)`[3X$B83"'P2(G12`^OR.LFN0````#K'[D`````ZQBY
+M`````.L1N0````!F9I!FD.L%N0````!(B<A(@\006UU!7$%=05Y!7\-F9F:0
+M9F:005=!5D%505154TB![!@"``!(B?U!B=9!B?=!O`````"`?T0`#X94`0``
+M0`^VQHE$)`Q)8\1(BUS%8$B%VP^$+@$``(![$`1V%T2)\HMT)`Q(B=_HJ/__
+M_^D4`0``9F:008U&_X/X`7<N28G=@'L0!'4.3(MK.$B)W^@`````9I!!@_X"
+M#X7G````3(GOZ`````#IV@```$R+:SB`>U``#Y7"183_#Y7`"="H`0^$G@``
+M`$'VA8`#```!#X20````2(M#2$B+<`A!N`$```!(C4PD$+H!````3(GOZ```
+M``"%P'5L@+PD#@(``%5U'("\)`\"``"J=1+&A"0.`@``JL:$)`\"``!5L`&`
+M?"001746@'PD$5)U#\9$)!!2QD0D$46X`0```(7`="5(BT-(2(MP"$&X````
+M`$B-3"00N@$```!,B>_H`````&9FD&:02(G?Z`````!!]D5D$'020?:%@`,`
+M``%T"$R)[^@`````0?_$1#AE1`^'M/[__TB)[^@`````2('$&`(``%M=05Q!
+M74%>05_#9F9FD&9F9I!!54%455-(@^P(3(MO6$B+7U!,BR=)BZPDX`$``.@`
+M````BT,P08E%,$F+5"0X28U$)#A(.=!T($B)P69FD&:02(U"Z$@Y6%!U!DR)
+M:%!FD$B+$D@YT77HN@````"^`````$B)W^CV_?__08MU,$F+?"0(Z`````!,
+MB>_H`````$B+53!!BX7H`P``B0)(QT58`````$B);6!(QT5H`````$B-=5A(
+MBWT0Z`````!(@\0(6UU!7$%=PV9F9I!F9I!32(G[@+^J`````71S_H>K````
+M@+^K`````G=DQH>J`````$B+1WA(QT`0`````$B+1WA(QT`H`````$B+1WA(
+MQT`P`````$B+1WA(QT`X`````$B+5WA(C4(82(E"&$B+5WA(C4(82(E"($B+
+M1WC'0$``````Z`````#K.F9FD$B+<WA(BSM(@<?P````Z`````!(QT,H````
+M`$B)6S!(QT,X`````$B-<RA(BSM(@\=(Z`````!;PV9F9I!F9I!32(M_"$B+
+M'^@`````2(N#X`$``$C'0%@`````2(E`8$C'0&@`````2(UP6$B+>!#H````
+M`%O#9F:09F:09F:02(/L.$B)7"0(2(EL)!!,B60D&$R);"0@3(ET)"A,B7PD
+M,$B)^TB+;UA,BS=-B[[@`0``3(MM"$R+91"`OZH````!='/^AZL```"`OZL`
+M```"=V3&AZH`````2(M'>$C'0!``````2(M'>$C'0"@`````2(M'>$C'0#``
+M````2(M'>$C'0#@`````2(M7>$B-0AA(B4(82(M7>$B-0AA(B4(@2(M'>,=`
+M0`````#H`````.F>````2(MS>$F-OO````#H`````$B)W^@`````28M7,+C_
+M____387D=`A!BX0DZ`,``(D"@_C_=01!B4=008"-80(```1!@(PD80(```1!
+M@*0D8`(``/U)B:PD@`(``$F)K8`"``!(C54828U&*$B+2`A(B5`(2(E%&$B)
+M2@A(B1%(QT4P`````$B);3A(QT5``````$B-=3!)C7Y(Z`````!(BUPD"$B+
+M;"003(MD)!A,BVPD($R+="0H3(M\)#!(@\0XPV9F9I!F9F:005=!5D%50515
+M4TB#[!A)B?U)B?9!O`````"`?T0`=#J`?@T`=#1)8\1)BVS%8$B%[71'08M\
+MAGSH`````$@Y13AT(4'_Q$$/MD5$1#G@?@I!#[9&#40YX'_,N@$```#IK@(`
+M`$$/MD5$NO____]!.D8-#X>:`@``ZV:Z_____Y#IC0(``+K_____9F:09F:0
+MZ7T"``"Z_____^ES`@``2(M$)!!(`<A(B4(02(E'*$B+1"002`%&"$@I1A!(
+MQT0D$`````!(BT0D"(!(9!!(B<?H`````.GM````9F:09I!!O`````!!@'U$
+M`'0M9F:026/$28MLQ6!(A>UTB$&+?(9\Z`````!(.44X=8A!_\1!#[9%1$0Y
+MX'_628M&=$DK12A(B40D$`^$J0$``$D/MD5$28M\Q5A(BT<X2(E$)`A(QP0D
+M`````$B+<#A(A?9T=TB#?A@`=6A(BU=(2(M*$$B+0@A(`<A(.48(=5-(BT<H
+M2(D$)$B+1"002#E&$`^'&____TB+1A!(*40D$$B+5TA(`T(02(E"$$B)1RA(
+MBWPD".@`````2(M$)`B`2&002(G'Z`````#K#F9FD&9FD$B+-DB%]G6)2(-\
+M)!``9I`/A``!``!%#[9E1$$/MD8-1#G@#X[*````26/$08M\AGSH`````$R+
+M>$!,.WPD$$P/1WPD$$ECW+H`````3(G^2(G'Z`````!)B43=8$B%P'5D2(,\
+M)`!T+$D/MD5$28M\Q5CH`````$D/MEU$N@````!(BS0D2(M\)`CH`````$F)
+M1-U800^V;41$.>5]'4ACW4F+?-U@Z`````!)QT3=8`````#_Q40YY7SCNO__
+M___IC````$ECQ$F+1,5@3(EH&$'_Q$$/MD8-1#G@#Y_`3"E\)!`/E<(/ML"%
+MP@^%-O___T$/MD8-1#G@#Y3`2(-\)!``#Y7"#[;`A<(/A5#___]%B&5$28M&
+M=$F)12A)BT8028F%<`(``$F+1AA)B85X`@``3(GOZ`````!!BW4P28M%`$B+
+M>`CH`````+H`````B=!(@\086UU!7$%=05Y!7\-F9F:09F:09F:09F:0\\-F
+M9F:09F9FD&9FD&9FD$B#[`B)\DB-M_@"``!(BP=(B480QT88#_\``$B-AV@#
+M``!(B48HQT8<"````,=&(`````!(QT8X`````(N'Z`,``(F':`,``$B+1BB)
+M4`1(QT9(`````$B+?A#H((@``$B#Q`C#9F9FD&9F9I!F9I!(@^P82(E<)`A(
+MB6PD$$B)^TB)_4B#?Q@`=`1(BV\8#[:%80(``*@$='FH"`^%T@```$B+E8`"
+M``!(A=(/A,(```!(@WH(``^$MP```$B#>A``#X2L````2(M""("(80(```A(
+MBT(0@(AA`@``"$C'A>@"````````2(FM\`(``$B-M>`"``!(BT4`2(MX".@`
+M````2(GNOQ(```#H`````.MA]H-@`@``$'582(7MD'0)]H5A`@``"'5)#[:#
+M8`(``*A@=3Z#X/>#R!"(@V`"``!(QX/H`@```````$B)F_`"``!(C;/@`@``
+M2(L#2(MX".@`````2(G>OP0```#H`````$B+7"0(2(ML)!!(@\08PV9F9I!F
+M9I!F9I!F9I!(@^P(2(M'0$C'@.@"````````2(F`\`(``$B-L.`"``!(BP!(
+MBW@(Z`````!(@\0(PV9F9I!F9F:09F:09F:02(/L"$B)O@@#``#'AA`#```/
+M_P``2(V6:`,``$B)EB`#``#'AA0#```(````BX;H`P``B89H`P``QT($#```
+M`$B-AGH#``!(B88H`P``QX88`P```````$C'AC`#````````2(FV.`,``$C'
+MAD`#````````2('&^`(``.@`````2(/$",-F9F:09F:09F:04TB+7T"#?U#]
+M=16`NWL#```"?PS^@WL#``#IN`(``)#&@WL#````]H-A`@``"'1@@W]0_74B
+M@#T``````'09QT=0`````$B)WK\<````Z`````#I"`(``(-_4``/A/X!``"`
+MHV$"``#W2(N#@`(``$B+0!"`H&$"``#W2(G>OQ0```#H`````.EO`@``9F:0
+M]H-@`@``$`^$AP```(-_4/UU+H`]``````!T)<='4`````!(B=Z_'````.@`
+M````2`^W@W0#``!(`8-H`@``ZQ^#?U``=!F`HV`"``#O2(G>OP@```#H````
+M`.D,`@``#[9#1$B+4P@/ME(**=!(F$@/KX-H`@``2#M#*`^"3@$``+X#````
+M2(G?Z('\___IV`$```^V@V`"``"H(`^$K0```(-_4`!U*(3`>!X/MD-$2(M3
+M"`^V4@HIT$B82`^O@V@"``!(.T,H<E:#?U``=`>X"P```.L8#[:#8`(``,#H
+M!P^VP(/X`1G`@^`"@\`*@*-@`@``7P^V^$B)WN@`````]H-@`@``"`^$70$`
+M`+X!````2(G?Z/3[___I2P$``$B+@R@#``"`.``/A)\```"`HV`"``#?O@$`
+M``!(B=_HR_O__^DB`0``9F:09F:0#[:#8`(``*A`#X0-`0``J`%U&X/@OXB#
+M8`(``$B)WK\.````Z`````#I[@```(-_4`!T&8"C8`(``+](B=Z_#P```.@`
+M````Z<\````/MD-$2(M3"`^V4@HIT$B82`^O@V@"``!(.T,H<A6^"0```$B)
+MW^A(^___Z9\```!F9I#V@V$"```(="%(BX.``@``2(N0H````('B__\/`$@/
+MMX"H````2#G"<AOV@V`"``!0=$1(BX-H`@``)?__/P!(@_A_=S)(QX/H`@``
+M`````$B)F_`"``!(QX/@`@```````$B-L^`"``!(BP-(BW@(Z`````#K)4C'
+M@^@"````````2(F;\`(``$B-L^`"``!(BP-(BW@(Z`````!;PV:02(/L"$B)
+MO@@#``!(C89H`P``2(F&(`,``$B-AGH#``!(B88H`P``QX88`P```````$C'
+MAC`#````````2(FV.`,``$C'AD`#````````BX;H`P``B89H`P``]H9A`@``
+M"'0=QX80`P``*O\``,>&%`,```0```#I]P```&9F9I`/MH9@`@``J'`/A`D!
+M``"#X*`\H'0>#[9&1$B+5@@/ME(**=!(F$@/KX9H`@``2#M&*'(<QX9(`P``
+M`````$B-OO@"``#H-OS__^G)````D`^VAF`"``"Z(_\``*@0=1/`Z`6#X`&#
+M^`$9TO?2@<(E_P``B980`P``2(N&(`,``$B+EF@"``!(B5`$2(M&"(!X"0!T
+M$4B+EB`#```/MT9&9HE"#.LF2(N&(`,``$B+5BA(*Y9H`@``2('Z@0```+F`
+M````2`]#T6:)4`S'AA0#```.````]H9@`@``('042(N&*`,``,8``,>&&`,`
+M``$```#_AMP"``"#OMP"``!D?@K'AMP"````````2('&^`(``.@`````2(/$
+M",-F9I!32(G[2(M'*(LXZ`````!(B<?H`````$C'0U@`````2(E;8$C'0V@`
+M````2(US6$B+>Q#H`````%O#9F:09F:02(/L*$B)'"1(B6PD"$R)9"003(EL
+M)!A,B70D($B)^TR+)TB+;UA(BT4H1(LP1(GWZ`````!)B<6`NZH````!=';^
+M@ZL```"`NZL````"=V?&@ZH`````2(M#>$C'0!``````2(M#>$C'0"@`````
+M2(M#>$C'0#``````2(M#>$C'0#@`````2(M3>$B-0AA(B4(82(M3>$B-0AA(
+MB4(@2(M#>,=`0`````!(B=_H`````.FQ````2(MS>$F-O"3P````Z`````!(
+MB=_H`````(M%&#TK_P``="8]*_\``'<//2G_``!T#^L69F:09F:0/3G_``!U
+M"4B+13!$B3!FD$V%[70[33EE`'4U2<>$)"`"````````28FL)"@"``!)QX0D
+M,`(```````!)C;0D(`(``$F-?"1(Z`````#K*9#'15#^____2,=%6`````!(
+MB6U@2,=%:`````!(C7582(M]$.@`````2(L<)$B+;"0(3(MD)!!,BVPD&$R+
+M="0@2(/$*,-F9F:09F9FD&9FD$B#["A(B1PD2(EL)`A,B60D$$R);"083(ET
+M)"!)B?Q)B?5)B=9(BR^+=S1(B>_H`````$B)PTB-O?````#H`````$C'0!``
+M````2,<``````$F+5"0H2(E0"$C'0"@`````2,=`,`````!(QT`X`````$B-
+M4!A(B5`82(E0(,=`0`````!(B4-X3(EC4,:#J`````1,B6M83(FSP````,:#
+MJ@````!(B=_H`````$B+'"1(BVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F:0
+M9I!!5T%6055!5%532(/L:$B)?"182(ET)%!)B=7H`````(E$)$Q-BW5TQD0D
+M,`!(QT0D(`````#'1"04`0```,=$)!``````00^V10[`Z`1!B<=U$44/MGT*
+M183_N`$```!$#T3X08!E#@]!@'T-0'<.08!]#0%W$4&`?0P'=`JX_____^D;
+M#```0;P`````08!]#0!T.$ECQ$&+?(5\Z`````"`>!`!=0GV@(`#```!=0^X
+M_____^GH"P``9F:09I!!_\1!#[9%#40YX'_(00^V10R#^`AW=(G`_R3%````
+M`+L'````ZVZ[!0```$&`_P,9P(/@_H/`"(A$)##K5[L*````N/____]!@'T.
+M!P^%D`L``.M`NP@```#K.;L)````ZS*[!@```$&`?0T"9F:0=B.[!0```,9$
+M)#`&0;\"````ZQ&[#````.L*N/_____I3@L```^V^^@`````2(E$)"BX____
+M_TB#?"0H``^$,`L``$&`_P%V069!#[9%#69!#[;/N@````!F]_&X_____V:%
+MT@^%"0L```^V?"0PZ`````!(B40D(+C_____2(-\)"``#X3I"@``387V#X63
+M````@/L'=4I!O`````!!@'T-``^$WP```$ECQ$&+?(5\Z`````!(B<5(@WA`
+M``^$7`H``$F+171(`T5`28E%=$'_Q$$/MD4-1#G@?\SII@```$G'QO____]!
+MO`````!!@'T-``^$C@```&9FD&9FD$ECQ$&+?(5\Z`````!,.7!`<P1,BW!`
+M0?_$00^V10U$.>!_W.MB2(M4)"B`>@D`="9F00^V10U!]O</ML`/ME(**=!(
+M8]!,B?!(B=&Z`````$CW\4F)QDB#?"0@`'0I2(MT)""`?@D`=!Y!#[;'#[96
+M"BG02&/03(GP2(G1N@````!(]_%)B<9(BW0D*(!^"0!U$TB#?"0@`'1U2(M$
+M)""`>`D`=&I!#[9-#KC_____T^!(F$DAQDV)=71(BU0D*(!Z"0!T'69!#[9%
+M#4'V]P^VP`^V4@HIT$B820^O171)B45T2(-\)"``="5(BTPD((!Y"0!T&D$/
+MML</ME$**=!(F$D/KT5T28E%=&9FD&:02(-\)%``#X0K`0``2(MT)%"`?A`$
+M=BE(BT0D6$@Y!G4?]H:``P```7062(.^@`(```!U#&;WAF`"``!0`G0+D+C_
+M____Z1D)``"X_____TF+371(BU0D4$@Y2B@/AP$)``!!@&4/_$B+="10@'X0
+M!W0508!]#`</A;H```"`?A`'#X6H````08!]#`=F9F:0#X6(````3(GN2(M\
+M)%#H/>___T&)Q(7`=69!#[9%#X/@','X`HG!2(M4)%"`NH$#```"=34X@H$#
+M``!T+8B"@0,``$B+3"182(NQX`$``$C'P@````!(BWPD4.@`^___N`````#I
+M:0@``$B+7"10B(N!`P``BX/H`P``Z5,(``"X_____T6%Y`^(10@``$B+="10
+M@'X0!W4&@'Y$`70(QT0D$`$````/MO-(BWPD6.@`````2(E$)!BX_____TB#
+M?"08``^$"0@``(#[!P^%YP```$F+171(B40D"$&\`````$&`?0T`#Y7`2(-\
+M)`@`#Y7"#[;`A<(/A)8```!)8\1!BWR%?.@`````3(MP0$P[="0(3`]'="0(
+M26/<N@````!,B?9(B<?H`````$B+5"082(E$VF!(A<!U-[L`````1#GC?1E(
+M8\-(BTPD&$B+?,%@Z`````#_PT0YXWSG2(M\)!CH`````+C_____Z6`'``!!
+M_\1!#[9%#40YX`^?P$PI="0(#Y7"#[;`A<(/A6K___]!#[9%#40YX`^4P$B#
+M?"0(``^5P@^VP(7"=8U(BUPD&$2(8T3K?$&\`````$&`?0T`=&))8\1!BWR%
+M?.@`````2(G%N@````"#?"00`'482(-\)%``=!!(B<9(BWPD4.@(X___2(G"
+M26/<3(GV2(GOZ`````!(BW0D&$B)1-Y@2(7`#X0@____0?_$00^V10U$.>!_
+MGD$/MD4-2(M4)!B(0D2+7"1,2(M,)!B)63B)64!!@/\!#X;%`0``0;P`````
+M10^V]T2)="0$#[9T)#!(BWPD6.@`````2(G%2(7`#X6'````NP````!$B>"9
+M0??^@_@`?BR+;"0$2&/#2(M4)!A(BWS"8+H!````O@````#HQN?____#1(G@
+MF??].=A_V$2)XTB+5"08#[9"1$0YX'XA2&/#2(M,)!A(BWS!8.@`````_\-(
+MBW0D&`^V1D0YV'_?2(M\)!CH`````+C_____Z=<%``!F9F:0NP````!$B?%!
+M@_X`?B%FD$ACPT&-%!Q(8])(BW0D&$B+5-9@2(E4Q6#_PSG9?^%$B'U$2(M4
+M)!B+0CB)13A(@WPD4``/E,(/MM),B>Y(B>_HZ][__T2)X)E!]_Y(F$B+5"08
+M2(ELPF!%`?1$.&)$#X?I_O__9@^V0D1!]O>(0D1$#[;@08#\/W<:26/$2(M,
+M)!A(QT3!8`````!!_\1!@/P_=N9(@WPD4``/E,(/MM),B>Y(BWPD&.B#WO__
+M0;P`````2(M<)!@/MD-$B<*#^`!^6DECQ$B+3"082(MTP6")T4B+7"0H#[9#
+M"BG"2&/22(M<)!A(BT,H2(G3N@````!(]_-(B48H0?_$B<I$.>%_P>L92(-\
+M)%``#Y3"#[;23(GN2(M\)!CH$][__TB#?"10``^$M`(``$B+="10BT9`2(M4
+M)!B)0D!(B=9(BWPD4.@`````A,`/A34!``!(BTPD4`^VD8`#``"#X@1(BUPD
+M&`^V@X`#``"#X/L)T(B#@`,```^VD8`#``"#X@*#X/T)T(B#@`,```^V04B(
+M0TA(BW,H2#EQ*'=)2(M#"(!X"@!U#DB+0V!(BT`(@'@*`'0Q2(M\)%#HA,O_
+M_R4"$```B40D%`^%N````$B+1"082(M0*$B+1"102#E0*`^"H````$B+3"10
+M@+F!`P```G4>2,?"`````$B+="082(G/Z$OV__^X`````.FT`P``2(M<)%"+
+M0S!(BW0D&(E&,$B+1"182(M0.$B#P#A(.=!T(TB)P4B-0NA(BUPD4$@Y6%!U
+M"4B+="082(EP4$B+$D@YT77@N@````"^`````$B+?"10Z/CD__](BT0D&(MP
+M,$B+5"182(MZ".@`````Z5H!``!(BWPD6$B!Q]````#H`````$B)P[D`````
+MNK````"("$C_P$C_RG7VZ`````")`TB+3"102(E+"$B+="082(ES$$B)W^@`
+M````2(M4)!A(BT((@'@*`'4.2(M"8$B+0`B`>`H`=!NX`@```(-\)!0`=`>`
+M>R@`#Y7`B(.J````ZP?&@ZH````#@'LH`'0F@+NJ`````W4+2(M,)%!(BT$H
+MZPE(BW0D&$B+1BA(B8.@````ZQRX`````(-\)!0`=0E(BU0D4$B+0BA(B8.@
+M````@+NJ`````G0.2(M,)%"`N8$#```"=1Y(Q\(`````2(G>2(M\)%#HTO3_
+M_[@`````Z3L"``!(BW0D4(".80(```1(BT0D&("(80(```2`H&`"``#]2(F8
+M@`(``$B)GH`"``!(C4,82(M4)%A(@\(H2(M*"$B)0@A(B5,82(E("$B)`4B)
+M]^@`````2(M\)!CH`````$B#?"10`'410?9%#P%U"DB+?"08Z`````!!]D4/
+M`0^$U@```$&`_P$/AH8```!(BU0D((!Z"@!FD'1Y0;P`````2(M,)!B`>40`
+M=%=)8\1(BW0D&$B+7,9@@(M@`@``0$C'@^@"````````2(F;\`(``$B-L^`"
+M``!(BP-(BW@(Z`````!(B=Z_#0```.@`````0?_$2(M4)!@/MD)$1#G@?ZE(
+MBTPD&("A8`(``+_I'0$``$B+7"08@(M@`@``0$C'@^@"````````2(F;\`(`
+M`$B)WDB!QN`"``!(BP-(BW@(Z`````!(B=Z_#0```.@`````Z=<```!!]D4/
+M`@^$S````$&`_P$/AH$```!(BW0D((!^"@"0='5!O`````!(BT0D&(!X1``/
+MA*$```!)8\1(BU0D&$B+7,)@@(M@`@``$$C'@^@"````````2(F;\`(``$B-
+ML^`"``!(BP-(BW@(Z`````!(B=Z_!````.@`````0?_$2(M,)!@/MD%$1#G@
+M?ZGK2+C_____ZTQ(BUPD&("+8`(``!!(QX/H`@```````$B)F_`"``!(B=Y(
+M@<;@`@``2(L#2(MX".@`````2(G>OP0```#H`````$B+="08BX;H`P``2(/$
+M:%M=05Q!74%>05_#9F9FD&9F9I!F9I!F9I"+!0````"Z_____SL%`````'1=
+M2)A(Q\$`````2&O`+$B+%`A(B1=(BU0("$B)5PA(BU0($$B)5Q!(BU0(&$B)
+M5QA(BU0(($B)5R"+1`@HB4<HBP4`````C5`0_\`/2="#XO`IT(D%`````+H`
+M````B=##9F9FD&9FD&9FD&9FD(L%`````(U0$(G&_\8/2=:#XO`IUKC_____
+M.S4`````=$](8Q4`````2,?!`````$AKTBQ(BP=(B00*2(M'"$B)1`H(2(M'
+M$$B)1`H02(M'&$B)1`H82(M'($B)1`H@BT<HB40**(DU`````+@`````\\-F
+M9F:09F:09F:09F:02(/L.$F)T(!_$`%U$XN'Z`,``(E$)`1(B50D#.LF9I"`
+M?Q`$=1Y(BT<X2(M72(N`Z`,``(E$)`1,B<!(`T((2(E$)`R#_@$9P(/`&8A$
+M)`AFB4PD%$B)Y^@`````2(/$.,-F9F:09F9FD&9FD&9FD$B#["A(B1PD2(EL
+M)`A,B60D$$R);"083(ET)"!)B?Q(BT<HBSB+6`3H`````$B)Q4&]`````(/[
+M#@^'4P<``(G8_R3%`````$&]`P```.ES!P``2(N-@`(``&;WA6`"``!P"`^5
+MPDB%R0^4P`G0J`$/A1P'``"`N:L`````#X4/!P``2(M!"$B+41#V@(`#```!
+M#X3Z!@``]H*``P```0^$[08``("@80(``.^`HF$"``#O@(AA`@``"("*80(`
+M``A(QX7H`@```````$B)K?`"``!(C;7@`@``2(M%`$B+>`CH`````$B)[K\2
+M````Z`````#IS08``&9F9I!F9I!(BXV``@``#[>%8`(``&8E<`AF/0`(#Y7"
+M2(7)#Y3`"="H`0^%:08``$B+00A(BU$0@*!A`@``]X"B80(``/=!O0$```!(
+MB>Z_$P```.@`````Z6\&``!(BT482(7`=`WV@&$"```,#X4E!@``9O>%8`(`
+M`'`,#X46!@``]H6``P```0^$"08``(!]$`4/A9X```"[`````(!]1``/A.(`
+M``!(8\-,BVS%8$V%[71R08!]$`1V:T'VA6`"```0=6%)BWU8Z`````!)BU4(
+M#[92"CG0#XVY!0``00^VA6`"``"#X/>#R!!!B(5@`@``2<>%Z`(```````!-
+MB:WP`@``28VUX`(``$F+10!(BW@(Z`````!,B>Z_!````.@`````_\,/MD5$
+M.=@/CW/____K4TB+?5CH`````$B+50@/ME(*.=`/C4@%``"`C6`"```02,>%
+MZ`(```````!(B:WP`@``2(VUX`(``$B+10!(BW@(Z`````!(B>Z_!````.@`
+M````@*5@`@``]TB#?5@`=`CH`````(E%/$&]`0```.DA!0``@'T0!75(NP``
+M``"`?40`=%%(8\-(BW3%8$B%]G0D@'X0!'8>#[:&8`(``*@0=!.#X.>(AF`"
+M``"_!0```.@`````_\,/MD5$.=A_Q>L4@*5@`@``YTB)[K\%````Z`````!!
+MO0$```#IM`0```^VA6`"``"H$`^$<00``/:%@`,```$/A&0$``"#X.6(A6`"
+M``!(BT582(E%4$C'A6@"``#_____2(GNOP8```#H`````("E8`(``/Y(@WT8
+M`'152(M-&+L`````@'E$`'1&#[9Q1$ACPTB+1,%@2(7`="_V@(`#```!=":`
+M>!`$=B`/MI!@`@``@^(!#[:!8`(``(/@_@G0B(%@`@``J`%U!O_#.=Y_ODB#
+M?5@!11GM08/%`NG[`P``2(M%&$B%P'0-]H!A`@``#`^%L0,``&;WA6`"``!P
+M#`^%H@,``/:%@`,```$/A)4#``"`?1`%#X6B````NP````"`?40`#X2P`P``
+M2&/#3(MTQ6!-A?9T<T&`?A`$=FQ!]H9@`@``('5B2(M]4$@+?5CH`````$B+
+M50@/ME(*.=`/C4$#``!!@(Y@`@``($G'AF@"````````2<>&Z`(```````!-
+MB;;P`@``28VVX`(``$F+!DB+>`CH`````$R)]K\)````Z`````#_PP^V140Y
+MV`^/<O___^D=`P``2(M]4$@+?5CH`````$B+50@/ME(*.=`/C<P"``"`C6`"
+M```@2,>%:`(```````!(QX7H`@```````$B)K?`"``!(C;7@`@``2(M%`$B+
+M>`CH`````$B)[K\)````Z`````#IM@(``("E8`(``-](B>Z_"@```.@`````
+MZ9T"``"`I6`"``#?2(GNOPL```#H`````.F$`@``@*5@`@``W^EX`@``]H6`
+M`P```0^$-P(``$B#?5@`#X4L`@``#[>%8`(``&8E<0QF@_@!#X47`@``@'T0
+M!0^%C````+L`````@'U$``^$P@```$ACPTR+=,5@387V=&1!@'X0!'9=00^V
+MEF`"``")T(/@03P!=4R)T(/(0(/@]T&(AF`"``!)QX9H`@```````$G'AN@"
+M````````38FV\`(``$F-MN`"``!)BP9(BW@(Z`````!,B?:_#0```.@`````
+M_\,/MD5$.=A_A>M%@(U@`@``0$C'A6@"````````2,>%Z`(```````!(B:WP
+M`@``2(VUX`(``$B+10!(BW@(Z`````!(B>Z_#0```.@`````@*5@`@``]^ED
+M`0``2(-]&`!T$F9F9I!F9I!(BVT82(-]&`!U]8!]$`60=4N[`````(!]1`!T
+M5&9FD$ACPTB+=,5@2(7V="2`?A`$=AX/MH9@`@``J$!T$X/@OXB&8`(``+\.
+M````Z`````#_PP^V140YV'_%ZQ2`I6`"``"_2(GNOPX```#H`````(-],`!Y
+M"$B)[^@`````0;T!````Z<P```"`I6`"``"T2,>%:`(``/____](QT50````
+M`$B)[K\0````Z`````!(@WT8`'1.2(MM&+L`````@'U$`'0_#[951&9FD&:0
+M2&/#2(M$Q6!(A<!T(_:`@`,```%T&H!X$`1V%/:`8`(```&X`0```$0/1>AF
+M9F:0_\,YVG_*187M=0^`I6`"``#^2(GOZ`````!!O0$```#K-$''1"10_O__
+M_TG'1"18`````$V)9"1@2<=$)&@`````28UT)%A)BWPD$.@`````Z;````!%
+MA>T/A($```!(@WT8``^5P$&#_0,/E<(/ML"%PG0:2(MM&$B#?1@`#Y7`08/]
+M`P^5P@^VP(7"=>:`C6`"```$08/]`G4*2(GOZ`````#K.DB#O8`"````="A(
+MBX6``@``2(MX"$B+6!!(A?]T!>@`````2(7;=!)(B=_H`````.L(2(GOZ```
+M``!)QT0D6`````!-B60D8$G'1"1H`````$F-="1828M\)!#H`````$B+'"1(
+MBVPD"$R+9"003(ML)!A,BW0D($B#Q"C#9F9FD&9FD&9FD&9FD$%6055!5%53
+M28G\0;X`````0;T`````N0````"Z+````$B)^(@(2/_`2/_*=?9!QP0D+```
+M`.@UM___08A$)`1(BP4`````2(,X`$$/E$0D!4B+/0````#H`````,'@##W_
+M__\!=@Y!QD0D!@5!QD0D!POK#$'&1"0&!T'&1"0'!T'&1"0(`$'&1"0)`4'&
+M1"0*#T$/MD0D"X/@_H/(&$&(1"0+NP4```!F9F:09F:0#[;[Z`````!(A<!T
+M/T2)Z`^VZ(G?Z":\__]!B$0L#(/[!G4,0<9$+!P"08/.0.L91(GJ#[;"0<9$
+M!!Q`1(GP@\@@@_L%1`]$\$'_Q?_#@_L,?JU!@/Y@=2)(BP4`````@[BD`@0`
+M`W821(GJ#[;"0<9$!`P20<9$!!Q`2(L%`````(.XI`($``5V%4'_Q42)Z@^V
+MPD'&1`0,$T'&1`0<0+@`````6UU!7$%=05[#9I!!54%455-(@^P(28G]2(MO
+M*$&\`````(-]``!V:69FD$&-1"0!BWR%`.@`````2(G#@'@0`70K0<=%4/[_
+M__])QT58`````$V);6!)QT5H`````$F+?1!)C758Z`````#K1?9`9`)T#4B)
+MQV9FD&:0Z`````!(B=_H`````$'_Q$0Y90!WFDG'15@`````38EM8$G'16@`
+M````28UU6$F+?1#H`````$B#Q`A;74%<05W#9F9FD&9F9I!F9I!F9I!54TB#
+M[`A(B?U(BU]8BT,8/23_```/E,(]&?\```^4P`G0J`%T,8"_J@````QU(4B+
+M0S#&``%(BW=0OQ$```#H`````,:%J@````'K"F9FD$B+0S#&```/MHVJ````
+M@_D0=RVX`0```$C3X*D@*0$`=0ZH`G0:QT-0`````.L8D,=#4/W____K#F9F
+M9I!F9I#'0U#_____2(MU>$B+?0!(@<?P````Z`````!(BWT`Z)RQ__](B>_H
+M`````$C'0U@`````2(E;8$C'0V@`````2(US6$B+>Q#H`````$B#Q`A;7<-F
+M9F:09F9FD&9F9I!32(G[2(M_$$B+4RB^`````.@*YO__B<)(BT,PB1"#^O]U
+M`XE34$C'0U@`````2(E;8$C'0V@`````2(US6$B+>Q#H`````%O#9F9FD&9F
+MD$%455-(@>S`````2(G[3(MG$$B+=RA(B>6Y`````+H,````2(G@B`A(_\!(
+M_\IU]L=%`'P!``!(C7T,NK````#H`````$B)ZKX`````3(GGZ'OE__^)PDB+
+M0S")$(/Z_W4#B5-02,=#6`````!(B5M@2,=#:`````!(C7-82(M[$.@`````
+M2('$P````%M=05S#9F9FD&9F9I!F9I!F9I!32('LH````$B)^TB+?Q!(BW,H
+M2(GB0;@`````N0P```!(B>!$B`!(_\!(_\EU]<<"?`$``$B+!DB)0@Q(BT8(
+M2(E"%$B+1A!(B4(<2(M&&$B)0B1(BT8@2(E"+$B+1BA(B4(T2(M&,$B)0CQ(
+MBT8X2(E"1$B+1D!(B4),2(M&2$B)0E1(BT902(E"7$B+1EA(B4)D2(M&8$B)
+M0FQ(QT)T`````$B+1FA(B4)\2(M&<$B)@H0```!(BT9X2(F"C````$B+AH``
+M``!(B8*4````O@````#H5N3__XG"2(M#,(D0@_K_=0.)4U!(QT-8`````$B)
+M6V!(QT-H`````$B-<UA(BWL0Z`````!(@<2@````6\-F9F:09F9FD&9F9I!!
+M54%455-(@>S(````2(G[2(M'*(LX3(U@!.@`````28G%2(GEN0````"Z#```
+M`$B)X(@(2/_`2/_*=?;'10!\`0``2(U]#+JP````3(GFZ`````!(BWL02(GJ
+M3(GNZ*WC__^)PH7`="^#^/]U`XE#4$B+0S")$$C'0U@`````2(E;8$C'0V@`
+M````2(US6$B+>Q#H`````$B!Q,@```!;74%<05W#9F9FD&9FD&9FD%532(/L
+M"$B)^TB+1RB+.$B-:`3H`````$B)QDB+>Q!(B>KH.>/__XG"A<!T+X/X_W4#
+MB4-02(M#,(D02,=#6`````!(B5M@2,=#:`````!(C7-82(M[$.@`````2(/$
+M"%M=PV9F9I!F9I!F9I!F9I!(@^PH2(D<)$B);"0(3(ED)!!,B6PD&$R)="0@
+M2(G]2(M'*(LXBU@$3(MU$.@`````2(G!]L,#00^4Q4&\`````$B+F(`"``!(
+MA=MT4TB#>P@`=!Q(BT,(@[B$`P```'4R2(.XX`,```!U*&9FD&:02(7;="M(
+M@WL0`'0D2(M#$(.XA`,```!U"DB#N.`#````=`U!O/_____IP@```&:0]H%@
+M`@``<'0,0;S_____D.FK````N@````"`>40`="8/MG%$2&/"2(M$P6!(A<!T
+M#X!X$`1V"?:`8`(``'!U8/_".=9_WDB%VW1=2(-["`!T$D$/MO5(BWL(N@``
+M``#H+-#__TB#>Q``=!5!#[;U2(M[$+H`````Z!/0__]F9I!(BT,@2(M3&$B)
+M0@A(B1!)C;[0````2(G>Z`````#K($&\_____^L800^V];H`````2(G/Z-?/
+M__]F9F:09F:02(M%,$2)($&#_/]U!$2)95!(QT58`````$B);6!(QT5H````
+M`$B-=5A(BWT0Z`````!(BQPD2(ML)`A,BV0D$$R+;"083(MT)"!(@\0HPY!3
+M2(G[2(M'*(LXZ`````!(B<&!>Q@,_P``#Y3"#[9P9(GPP.@"@^`!#[;2.=!T
+M&,'B`HGP@^#["="#R!"(061(B<_H`````$C'0U@`````2(E;8$C'0V@`````
+M2(US6$B+>Q#H`````%O#9F:09F:02(/L&$B)'"1,B60D"$R);"002(G[2(M'
+M*(LX1(M@!.@`````28G%1(GGZ`````!(B<9,B>_H`````(/X`1G`]]")0U!(
+MQT-8`````$B)6V!(QT-H`````$B-<UA(BWL0Z`````!(BQPD3(MD)`A,BVPD
+M$$B#Q!C#9F9FD&9F9I!!5%5328G\2(M?*(L[2(UK!.@`````2(G&]D,$`70X
+MN0````"Z$````$B-@'`"``"("$C_P$C_RG7V2(M%!$B)AG`"``!(BT4,2(F&
+M>`(``(".8`(```3V10`"='RY`````+I`````2(V&C`(``&:0B`A(_\!(_\IU
+M]DB+111(B8:,`@``2(M%'$B)AI0"``!(BT4D2(F&G`(``$B+12Q(B8:D`@``
+M2(M%-$B)AJP"``!(BT4\2(F&M`(``$B+141(B8:\`@``2(M%3$B)AL0"``"`
+MCF`"```$]H9@`@``!'0(2(GWZ`````!)QT0D6`````!-B60D8$G'1"1H````
+M`$F-="1828M\)!#H`````%M=05S#9F9FD&9F9I!F9I!32(/L$,8$)`9(BU\0
+M2(7;="-(BT,02(E$)`A(BT,(2(GFOP````#_D,````!(BQM(A=MUW4B#Q!!;
+MPV9FD&:02(/L*$B)7"002(EL)!A,B60D($B)^TB+1RB+.$R-8`2%_W4\2(M[
+M$.B3____QT-0_/___TC'0U@`````2(E;8$C'0V@`````2(US6$B+>Q#H````
+M`.F)````9F:09F:0Z`````!(B<5!]@0D`69FD'1"Q@0D`$$/MD0D!(A$)`A(
+MBT5H2(GF2(N]@````/^0P````(E#4(7`=1D/MD5D@\B`B$5D00^V5"0$B%5C
+M@\@0B$5D]D5D$'0(2(GOZ`````!(QT-8`````$B)6V!(QT-H`````$B-<UA(
+MBWL0Z`````!(BUPD$$B+;"083(MD)"!(@\0HPV9FD&9FD&9FD$%455-(@^Q`
+M2(G[2(M'*(LX3(U@!(7_=3=(BWL0Z)[^___'0U#\____2,=#6`````!(B5M@
+M2,=#:`````!(C7-82(M[$.@`````Z3D"``"0Z`````!(B<5!]@0D`69FD'1%
+MQD0D,`!!#[9$)`2(1"0X2(M%:$B-="0P2(N]@````/^0P````(E#4(7`=1D/
+MMD5D@\B`B$5D00^V5"0$B%5C@\@0B$5D0?8$)`)T4\9$)#`$00^V1"0%B$0D
+M.,9$)#D`2(M%:$B-="0P2(N]@````/^0P````(E#4(7`=2(/ME5E@\H0B%5E
+M08!\)`4`#Y7`P>`%@^+?"<*(566`36000?8$)`1T6,9$)#`%00^V1"0&B$0D
+M.,9$)#D`2(M%:$B-="0P2(N]@````/^0P````(E#4(7`=2</ME5E@\I`B%5E
+M08!\)`8`#Y7`#[;`P>`'@^)_"<*(566`36009I!!]@0D"'1.QD0D,`-!#[9$
+M)`>(1"0X2(M%:$B-="0P2(N]@````/^0P````(E#4(7`=2(/ME5E@\H$B%5E
+M08!\)`<`#Y7`P>`#@^+W"<*(566`36000?8$)!!T5,9$)#`"00^V1"0(B$0D
+M.$B+16A(C70D,$B+O8````#_D,````")0U"%P'4H#[9598/*`8A594&`?"0(
+M``^5P`'`@^+]"<*(566`36009F9FD&9FD$'V!"0@="G&1"0P!T$/MD0D"8A$
+M)#A(BT5H2(UT)#!(B[V`````_Y#`````B4-0D/9%9!!T(4B+16A(B>9(B[V`
+M````_U!X#[9$)`Z(16)(B>_H`````$C'0U@`````2(E;8$C'0V@`````2(US
+M6$B+>Q#H`````$B#Q$!;74%<PV9F9I!F9F:09F9FD&9FD$%455-(@^Q`28G\
+M2(M'*(LX2(U8!(7_=5S&1"0P!DB++0````!(A>T/A.`#``!FD$B+71!(A=MT
+M+&9F9I!F9I!(BT,02(E$)#A(BT,(2(UT)#"_`````/^0P````$B+&TB%VW7;
+M2(MM`$B%[77"9I#IF0,``.@`````2(G%#[8#A<!T$8/X`0^$T`$``&9FD.EP
+M`P``@'T0`69F9I!F9I`/A7X!```/MD,!@_@%9F:0#X=N`0``B<#_),4`````
+M08-\)!P)#X59`0``@$UD@,9$)#``#[9#!(A$)#A(BT5H2(UT)#!(B[V`````
+M_Y#`````08E$)%"`3600Z2T!``!!@WPD'`D/A1@!``#&1"0P`@^V0P2(1"0X
+M2(M%:$B-="0P2(N]@````/^0P````$&)1"10@$UD$.GP````08-\)!P)#X7;
+M````QD0D,`,/MD,$B$0D.$B+16A(C70D,$B+O8````#_D,````!!B40D4(!-
+M9!#ILP```$&#?"0<"0^%G@```,9$)#`$#[9#!(A$)#C&1"0Y`$B+16A(C70D
+M,$B+O8````#_D,````!!B40D4(!-9!#K=$&#?"0<"75CQD0D,`4/MD,$B$0D
+M.,9$)#D`2(M%:$B-="0P2(N]@````/^0P````$&)1"10@$UD$.LY08-\)!P)
+M=2C&1"0P"0^V0P2(1"0X2(M%:$B-="0P2(N]@````/^0P````$&)1"100<=$
+M)%#^____]D5D$`^$UP$``$B+16A(B>9(B[V`````_U!X#[9$)`Z(16)(B>_H
+M`````.FQ`0``@'T0!';!#[9#`8/X`71D@_@!D'\)A<!T%>EN`0``@_@"9I`/
+MA-4```#I7@$``$&#?"0<&'61N0````"Z$````$B-A7`"``"("$C_P$C_RG7V
+M2(M#!$B)A7`"``!(BT,,2(F%>`(``("-8`(```3I(@$``$&#?"0<2`^%2/__
+M_[D`````N@0```!(C86,`@``B`A(_\!(_\IU]DB+0P1(B86,`@``2(M##$B)
+MA90"``!(BT,42(F%G`(``$B+0QQ(B86D`@``2(M#)$B)A:P"``!(BT,L2(F%
+MM`(``$B+0S1(B86\`@``2(M#/$B)A<0"``"`C6`"```$Z9<````/MK6!`P``
+M08-\)!P)#X6V_O__#[9#!#GP=$4/MD,$B(6!`P``@'T0!'8UN0````"`?40`
+M="H/MGU$2&/!2(M4Q6!(A=)T$X!Z$`1V#0^VA8$#``"(@H$#``#_P3G/?]J#
+M_@)U((![!`)T&DC'P@````!,B>9(B>_HJ-;__^M:9F:09F:0@(U@`@``!.L)
+M0<=$)%#^____]H5@`@``!'032(GOZ`````#K"4''1"10_O___TG'1"18````
+M`$V)9"1@2<=$)&@`````28UT)%A)BWPD$.@`````2(/$0%M=05S#9F:02(/L
+M*$B)7"0(2(EL)!!,B60D&$R);"0@28G\28GU2(MO&/^-H`($`(72>&;H````
+M`$B)PTB%P'4=28M$)`A,B>__D(````!)C7PD($R)[N@`````ZTJ`/0``````
+M="3V0&0"=1[V0&0!=`I(B<=FD.@`````#[9#9*@$=0:#R"2(0V1(B=Z_`@``
+M`.@`````ZPY(C7\@Z`````!F9I!FD(.]H`($``!U+4C'A3@"````````2(FM
+M0`(``$C'A4@"````````2(VU.`(``$B-?4CH`````$B+7"0(2(ML)!!,BV0D
+M&$R+;"0@2(/$*,.0055!5%532('LB````$F)_4R+9Q!,B>?HU/;__T&#O"2@
+M`@0``'0N0<=%4/S___])QT58`````$V);6!)QT5H`````$F-=5A)BWT0Z```
+M``#IXP```$''A"2@`@0``0```$F+7"002(7;=%]F9I!FD$B+0PA(BWL02(GF
+M_U`X#[9$)!!!`80DH`($`+T`````@'PD$`!T*TB)V4C'P@````")[DB)W^@`
+M````A,!U"$'_C"2@`@0`_\4/MD0D$#GH?]5(BQM(A=MUID'_C"2@`@0`08.\
+M)*`"!```=3))QX0D.`(```````!-B:0D0`(``$G'A"1(`@```````$F-M"0X
+M`@``28U\)$CH`````$''15#\____2<=%6`````!-B6U@2<=%:`````!)C758
+M28M]$.@`````2('$B````%M=05Q!7<-F9F:09F:09F:0059!54%455-(B?A,
+MBV\@0;X`````28V]$`$``$B)QN@`````0<>%V`$```````!)BUT828U%&$@Y
+MV'0S28G$D$B-JW#\__^`NX#\__\!=1?V@]3\__]`=`[V0_`!=`A(B>_H````
+M`$B+&TDYW'7128M=*$F-12A(.=AT%4B)Q9!(C7OHZ`````!(BQM(.=UU[TF+
+M71A)C4482#G8="U)B<1(C:MP_/__@+N`_/__!'822(.[B/S__P!U"$B)[^@`
+M````2(L;23G<==9)BUT828U%&$@YV'1P28G$9F:09I!(C:MP_/__@+N`_/__
+M`750#[:#U/S__Z@@=$6#X-N(@]3\__](BX.H_/__2(7`=!A(@W@8`'0)0;X!
+M````ZPF02(L`2(7`=>A%A/9U$TB)[^@`````2(GOZ`````!F9I!(BQM).=QU
+MF$F+71A)C4482#G8#X3H````9F9FD&9FD$B-JW#\__^#NZ#\__\`#XFL````
+M]D/P`0^$LP```("[@/S__P1V?4B#NXC\__\`#X6<````]H/0_O__0`^%CP``
+M`$B#N_#^__\`=`U(BX/P_O__2#EH"'5XO@````"Z`````(!]1`!T)@^V341(
+M8\)(BT3%8$B%P'0/@'@0!'8)]H!@`@``0'44_\(YT7_>A?9U/DB)[^@`````
+MZS2^`0```.OK@'T0`74G]D5D`F:0=!](B>_H`````.L59F9FD/:%@`,```%U
+M"$B)[^@`````2(L;28U%&$@YV`^%'____UM=05Q!74%>PV9FD&9FD$%455-)
+MB?Q(C;\0`0``Z`````!(B<5(A<!T9L<``0```$C'0`@`````2(E%$$C'0!@`
+M````3(E@($F+7"0828U$)!A(.=AT*$F)Q&9FD&:02(V[</S__X"[@/S__P%U
+M"$B)[N@`````2(L;23G<=>#_30"#?0``=0A(B>_H+_W__UM=05S#9F9FD&9F
+MD&9FD$B#[`CH`````$B#Q`C#9I!!5D%505154TB)_4R+9Q!(BT<H1(LP1(GW
+MZ`````!)B<5)BUPD&$F-1"082#G8#X2B````2(V[</S__[X`````2(.[B/S_
+M_P!U>T6%]G43#[9#\*@"=`N#X/V(0_!`M@'K2$PY[W4;#[:'@`,``*@"=1"#
+MR`*(AX`#``"^`0```.LH#[:/@`,``(G*T.I,.>\/E<`/ML"%PG00B<B#X/V(
+MAX`#``"^`0```(7V=!>`?Q`!=0SH`````.L*9F:09I#H`````$B+&TF-1"08
+M2#G8#X5>____2,=%6`````!(B6U@2,=%:`````!(C7582(M]$.@`````6UU!
+M7$%=05[#4TB)^TB+/XNW:`($`.A^F___2(L#2(-X2`!U"DB)W^@`````ZQY(
+MC4,82(L32(/".$B+2@A(B4((2(E3&$B)2`A(B0%;PV9F9I!F9I!F9I!(@^Q(
+M2(E<)!A(B6PD($R)9"0H3(EL)#!,B70D.$R)?"1`B7PD%$F)]4B)5"0(3(G%
+M08G/38M@$`^WV<'C"4$#G"18`@0`_\N)V+H`````0?>T)%@"!`")PTB%]G03
+M]H9A`@``!'4*2(M&"(!X"@!U+\=%4/[___](QT58`````$B);6!(QT5H````
+M`$B-=5A(BWT0Z`````#I&`,``&:0#[?)2`-,)`@/ME9$2(M&"`^V0`HIPDAC
+MTDB+1BA(B=:Z`````$CW]D@YP7>D28V\)/````#H`````$F)QDB%P'4MQT50
+M_?___TC'15@`````2(EM8$C'16@`````2(UU6$B+?1#H`````.FG`@``08MU
+M-$R)Y^@`````2(D$)$B%P'4228V\)/````!,B?;H`````.NL2<=&$`````!(
+MBT0D"$F)!D$/M\=(`T0D"$F)1@A)QT8H`````$G'1C``````2<=&.`````!)
+MC48828E&&$F)1B!!QT9``0```$B+%"1,B7)X2(EJ6,:"J`````&+!0````"%
+MP'X308N%W`(``#L%``````^<P`^VP$B+-"2)1FA)BT4(@'@)``^$?````(M,
+M)!2!Z0O_``"#^1IW3[@!````2-/@J0$```%U$*D`0``"=1FI`(``!'4BZS!(
+MBP0DQH":`````>E%`0``2(L4),:"F@````+I-0$``$B+'"3&@YH````#Z24!
+M``!)C;PD\````$R)]N@`````2(L\).@`````Z3'^__^+3"04@>D+_P``@_D:
+M=TRX`0```$C3X*D!```!=12I`$```G4GJ0"```1U$V9F9I#K*4B+-"3&AIH`
+M```!ZSI(BP0DQH":`````^LM`=M(BQ0DQH*:`````NL>28V\)/````!,B?;H
+M`````$B+/"3H`````.FX_?__28V$)%`"!`!(BS0D2(F&H````$B+1"0(2(F&
+MD````&9$B;Z8````2,>&N`````````#&AJH`````3(EN4$C'AL``````````
+M08F<)&@"!`!)QX0DB`($``````!)QX0D<`($``````!)B;0D>`($`$G'A"2`
+M`@0``````$F-M"1H`@0`3(GGZ`````#K;T$/MDU%2(M$)`A(T^A(BQ0D2(F"
+MD````$C'@K@`````````QH*J`````$R):E!(QX+``````````$F#?"1(`'4*
+M2(G7Z`````#K)$B+!"1(@\`828U4)#A(BTH(2(E""$B+'"1(B5,82(E("$B)
+M`4B+7"082(ML)"!,BV0D*$R+;"0P3(MT)#A,BWPD0$B#Q$C#9F9FD&9FD$&)
+MTTB+1U!(BY"``@``3(V2D````$R+"$F!P5`"!`!$#[>'F````$'!X`F`>B@`
+M="/VAZD````$=!I!#[=*"$$/MT(**<$/MX>8````*<'!X0GK"$$/MTH*P>$)
+MB<BZ`````$'W<0B)P$C!X`1(B<=)`SF)T46%P'1(9F:09F:0187;=`N)R$@#
+M!TB)1@CK"HG(2`-'"$B)1@A!BT$(*<A$.<!!#T?`B0;'1@0`````N0````!(
+M@\802(/'$$$IP'6^QT;T`0```+@!````PY!!5%5328G\2(GSO0````"`?D0`
+M=%I(8\5(BW3#8$B%]G1#@'X0!'883(GGZ-#___^$P'0QN`$```#K.69FD&:0
+M2(M62$F+1"1(2(M("$@Y2@AU$DF+1"0X2#E&.'4'N`$```#K#__%#[9#1#GH
+M?Z:X`````%M=05S#9F9FD&9FD$%505154TB)_4F)]4&\`````(!_1`!T/4EC
+MQ$B+7,5@2(7;="2`>Q`$=@U,B>Y(B=_HRO___^L13(GN2(G?Z#W___^$P`^4
+M0U!!_\0/MD5$1#G@?\-;74%<05W#9F9FD$B#[!A(B5PD"$R)9"002(GX3(MG
+M"$B+7Q!(BSM(@<?0````2(G&Z`````"Z`````+X`````3(GGZ`.Y__^`BV`"
+M```$2(G?Z`````!(BUPD"$R+9"002(/$&,-F9I!FD$B#[`A(QT<P`````$B)
+M?SA(QT=``````$B-=S!(BT<(2(LX2(/'2.@`````2(/$",-F9F:09F9FD&9F
+M9I!F9I!(@^PH2(E<)`A,B60D$$R);"083(ET)"!)B?Q,BW<(2(M?$$F+!DR+
+MJ.`!``!(B=Y,B??HR/[__TC'@X`"````````2<>&@`(```````!!#[:6@`,`
+M`(/B!`^V@X`#``"#X/L)T(B#@`,``$$/MI:``P``@^("@^#]"="(@X`#``!!
+M#[9&2(A#2$G'15@`````38EM8$G'16@`````28UU6$F+?1#H`````$B)WK\5
+M````Z`````!)BU0D($F+1"082(E0"$B)`DG'1"0P`````$V)9"0X2<=$)$``
+M````28UT)#!)BS[H`````$B+7"0(3(MD)!!,BVPD&$R+="0@2(/$*,-F9F:0
+M9F9FD&9FD$B#[!A(B5PD"$B);"002(M?6$B+0PA(BRCH`````$C'0S``````
+M2(E;.$C'0T``````2(US,$B-?4CH`````$B+7"0(2(ML)!!(@\08PV:02(/L
+M&$B)'"1,B60D"$R);"0028G\2(M?"$B+5Q!,BRN+0S")0C#'0S#_____@*-A
+M`@``\X"B80(``/.+<C!)BWT(Z`````"+<S1,B>_H`````$B)QTB)6%#&@*@`
+M```$3(E@6$C'@,``````````Z`````!(BQPD3(MD)`A,BVPD$$B#Q!C#9F:0
+M9F:09F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@28G]2(MO6$B+1U!(BYB`
+M`@``2(V#D````$B+2PA(BU,01`^VHZH```"`>R@`=$Y(#[=0"$B+@Z````!(
+M*=!(B8.@````08#\`74-2#M!*'4'QH.J`````("[J@````)U#4B+02A(.8.@
+M````=&I(@[N@`````'1@Z9L```!(#[=`"$@#@Z````!(B8.@````@+NJ````
+M`'4/2#M!*'4)QH.J`````6:0@+NJ`````W472(M#"$B+<"A(.;.@````=!9F
+M9I!F9I!(BT(H2#F#H````'5#9F:02(LYZ+B2__]%A.0/E,)!@/P##Y3`"="H
+M`70-2(US2$B+>PCH`````$R)[^@`````2(G?Z$C^___K5V9FD&9FD$B+.>AX
+MDO__183D#Y3"08#\`P^4P`G0J`%T#4B-<TA(BWL(Z`````!,B>_H`````$C'
+M15@`````2(EM8$C'16@`````2(UU6$B+?1#H`````$B+7"0(2(ML)!!,BV0D
+M&$R+;"0@2(/$*,-F9I!F9I!(@^P(2(L7QH>J`````/:'J0````)T*4B#>D@`
+M=")(C4<82(/".$B+2@A(B4((2(E7&$B)2`A(B0'K"F9FD&:0Z`````!(@\0(
+MPV9FD&9FD$B#[!A(B1PD2(EL)`A,B60D$$B)^TR+9UA(BT=02(NH@`(``$B+
+M/TB-M9````"`NZH````!#X35````@+NJ`````G0MQH.J`````$C'13``````
+M2(E=.$C'14``````2(UU,$B#QTCH`````.G!`0``QH6K`````4B+10B`H(`#
+M``#^2(M%$("@@`,``/Y(BT4(@*!A`@``]TB+11"`H&$"``#W2(M%"$B+..@0
+MD?__#[:%J@```(3`#Y3"/`,/E,`)T*@!=`U(C75(2(M]".@`````2(G?Z```
+M``!!QT0D4/____])QT0D6`````!-B60D8$G'1"1H`````$F-="1828M\)!#H
+M`````.DB`0``#[=&"F8#@Y@```!FB48*2(M5"$@Y4U!U#&8[1@AR/V;'1@H`
+M``^W1@IF.T8(#X/G````#[:#J0```(/@_8/(!(B#J0```$B+11!(B4-02,=#
+M>`````!(QT-P`````,:#J@````"+CV`"!`#_R8N'6`($`,'H"0^OR`^W1@@/
+MMU8**=`YP0]'R&:)BY@```!F@?D``78)9L>#F``````!@'TH`'0M]H.I````
+M!'0D2`^W1@A(`P9(#[=6"D@IT$@/MY.8````2"G02(F#D````.L/2`^W1@I(
+M`P9(B8.0````]H.I`````G0F2(-_2`!T'TB-0QA(C5<X2(M*"$B)0@A(B5,8
+M2(E("$B)`>L49I!(B=_H`````.L(2(G?Z-[[__](BQPD2(ML)`A,BV0D$$B#
+MQ!C#9F9FD&9F9I!F9I!!54%455-(@^P(2(G]3(VGD````$B+1PA(BQA,BZO@
+M`0``B[-H`@0`2(G?Z+".__](BT402(M5"(MP-#MR-',#BW(T2(M%"$B+..@`
+M````2(G&2(7`=5X/MH6J````A,`/E,(\`P^4P`G0J`%T#4B-=4A(BWT(Z```
+M``!(BT4(2(LXZ.F.__]!QT50_____TG'15@`````38EM8$G'16@`````28UU
+M6$F+?1#H`````.F"`0``BP4`````A<!^%DB+10B+@-P"```[!0`````/G,`/
+MML")1FC&AJH`````#[:%J@```(3`#Y3"/`,/E,`)T*@!=!E(C45(2(E&<$B+
+M10A(B490@(ZI`````NM62(M%$$B)1E"`CJD````$OP````"#NUP"!```=CE!
+MN`````")^$B+DU`"!`!(P>`$BXM8`@0`2(L$$$B%R70-9I!$B`!(_\!(_\EU
+M]?_'.;M<`@0`=\V+BV`"!`#_R8N#6`($`,'H"0^OR$$/MT0D"$$/MU0D"BG0
+M.<$/1\AFB8Z8````9H'Y``%V"6;'AI@``````8!]*`!T,/:&J0````1T)TD/
+MMT0D"$D#!"1)#[=4)`I(*=!(#[>6F````$@IT$B)AI````#K$4D/MT0D"DD#
+M!"1(B8:0````@(ZI````"$R);EA(QX;``````````$C'AK@`````````2(-[
+M2`!U"DB)]^@`````ZQM(C4882(U3.$B+2@A(B4((2(E6&$B)2`A(B0%(@\0(
+M6UU!7$%=PV9F9I!F9F:09F:09F:02(/L"$B)_DB+1PA(BS@/MX:8````P>`)
+M`X=8`@0`_\BZ`````/>W6`($`(F':`($`$C'AX@"!```````2,>'<`($````
+M``!(B;=X`@0`2,>'@`($``````!(C;=H`@0`Z`````!(@\0(PV9FD&9FD$F)
+M\+@`````@'\0`0^%@````$B%]G0N2(N&@`(``$B%P'0B2#EP"'482(MP$.L6
+MN`````##N`````!F9I!F9I##2(MP"$B+3SA(A<ET/V:02(-Y&`!T+DV%P'33
+M2(M1&$B#>A@`=`M(BU(82(-Z&`!U]4PYP@^5P$@Y\@^5P@^VP(7"=;!(BPE(
+MA<EUP[@!````\\-F9F:09F9FD&9F9I!(@^P82(D<)$B);"0(3(ED)!!(B?M)
+MB?2#OX0#````=0I(@[_@`P```'0*N@````#IFP```(-_,/]T'(MW,$B+!TB+
+M>`CH`````+H`````A<`/A7D```"`>Q`$=D"Z`````&;W@V`"``!P"'5CO0``
+M``"`>T0`=%-(8\5(BWS#8$B%_W0,3(GFZ'/___^$P'0S_\4/MD-$.>A_W>LN
+M@'L0!'412(M[.$R)YNBQ_O__#[;0ZQQ,B>9(B=_HH?[__P^VT.L,N@````#K
+M!;H!````B=!(BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9F9I!F9I!(@^P(@'\0
+M!'8/N`````!(@[^``@```'4(Z/+^__\/ML!(@\0(PV9F9I!F9I!F9I!(@^PX
+M2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P2(M?6$R+,TV+IN`!``!)
+MBT0D*$2+.$2+;V#H`````(![$`1V?4B+JX`"``!(A>UT74B#?0@`=!9(BWT(
+MN@(```"^`````.B#K?__9F:02(-]$`!T&4B+?1"Z`@```+X`````Z&:M__]F
+M9I!F9I!(BT4@2(M5&$B)0@A(B1!)C;[0````2(GNZ`````#K(+H"````O@``
+M``!(B=_H+JW__^L,2(G?Z`````!F9F:00?_%13G]=2A)QT0D6`````!-B60D
+M8$G'1"1H`````$F-="1828M\)!#H`````.L<1(GH28M4)"B+?(($Z`````!$
+MB>Y(B<?H5````$B+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#Q#C#
+MD$B#[`A(QT<H`````$B)?S!(QT<X`````$B-=RA(BS](@\=(Z`````!(@\0(
+MPV9FD$B#[!A(B5PD"$R)9"002(G[08GTBW<T2(L_Z`````!(B<</MH"I````
+M@^#/@\@@B(>I````2(E?4,:'J`````1(B5]818GD3(EG8,:'J@````!(QX?`
+M`````````.@`````2(M<)`A,BV0D$$B#Q!C#9F9FD&9F9I!F9F:09F:0055!
+M5%532(/L"$B)_4B+1RB+$/;&_P^4P$0/MNA$#[;B2(M',,<``````+L`````
+M1#GC#Y+`187M#Y7"#[;`A<)T/8G:2(M%*(M\D`3H`````$B)QX!X$`6^````
+M`$@/0_#H>?W__X3`=%'_PT0YXP^2P$6%[0^5P@^VP(7"=<.[`````$0YXW,D
+M9F:09F:0B=A(BU4HBWR"!.@`````2(G'Z`````#_PT0YXW+B187M=3W'15``
+M````ZS['15#_____2(M5,(U#`8D"ZRR)V$B+52B+?(($Z`````!(B<>)WNB9
+M_O__ZS)F9F:09F:0NP````!$.>-RU$C'15@`````2(EM8$C'16@`````2(UU
+M6$B+?1#H`````$B#Q`A;74%<05W#9F9FD&9FD&9FD$B#[!A(B1PD2(EL)`A,
+MB60D$$B)_8`]``````!T9TB+7QA(C4<82#G8="])B<1FD$B-NW#\__^`NX#\
+M__\!=1+V0_`!=`P/MC4`````Z`````!(BQM).=QUUL>%.`$```"'DP-(QX5(
+M`0```````$B)K5`!``!(C;4X`0``2(GOZ`````!(BQPD2(ML)`A,BV0D$$B#
+MQ!C#9F9FD&9F9I!!5T%6055!5%532('LF````$B)_4R+;Q!,BW<H0;\`````
+M28M=&$F-11A(.=AT64F)Q$B-NW#\___V0_`!=$&`NX#\__\!=3CH`````,:$
+M)(`````(00^V1B"(A"2(````2(N#V/S__TB+N_#\__](C;0D@````/^0P```
+M`&9FD$B+&TDYW'6J00^V1B"(!0````!)BUT02(7;="QF9F:02(M#"$B+>Q!(
+MB>;_4#CV1"01$'0+0;\!````ZPMF9I!(BQM(A=MUV$6%_W0Z28V=.`$``$B)
+MWDR)[^@`````0<>%.`$```"'DP-)QX5(`0```````$V)K5`!``!(B=Y,B>_H
+M`````,=%4`````!(QT58`````$B);6!(QT5H`````$B-=5A(BWT0Z`````!(
+M@<28````6UU!7$%=05Y!7\-F9F:09F9FD&9F9I!F9I!!5%532(/L0$B)_4B+
+M5Q!(BT<HQD0D,`>`>"`!&<"#P`*(1"0X2(M:&$B-0AA(.=AT5DF)Q/9#\`%T
+M18"[@/S__P%U/$B+@]C\__](B[OP_/__2(GF_U!X#[9$)`\Z1"0X=!U(BX/8
+M_/__2(N[\/S__TB-="0P_Y#`````9F9FD$B+&TDYW'6MQT50`````$C'15@`
+M````2(EM8$C'16@`````2(UU6$B+?1#H`````$B#Q$!;74%<PV9F9I!F9I!(
+M@^P(2(LW2('&Z`$``.@`````2(/$",-F9F:09F9FD(-_'`!X!H-_(`-W!\='
+M4/[____SPV9F9I!F9F:09F:02(/L"$B+1S#'`````0)(QT=8`````$B)?V!(
+MQT=H`````$B-=UA(BW\0Z`````!(@\0(PV9F9I!F9F:09F9FD(%_',<```!V
+M"8%_(,<```!W!\='4/[____SPV9FD&:005154TF)_$B+;RA(BU\PQT=0````
+M`(`]``````%W5$C'Q@````!(B>_HDH/__X7`=4%(BT4`2(D#2(M%"$B)0PA(
+MBT402(E#$$B+11A(B4,8QD-$`,9#00#&0T`"#[9%18A#10^V!0````"(0R#I
+M#P$``$C'Q@````!(B>_H/H/__X7`=5%(BT4`2(D#2(M%"$B)0PA(BT402(E#
+M$$B+11A(B4,8QD-$`,9#00`/MD5%B$-%QD-``8L%`````(V0EP$```60`0``
+M#TC"P?@#B$,@Z:L```!(Q\8`````2(GOZ-J"__^%P'4^2(M%`$B)`TB+10A(
+MB4,(2(M%$$B)0Q!(BT482(E#&,9#1`#&0T$`#[9%18A#1<9#0`(/M@4`````
+MB$,@ZUI(Q\8`````2(GOZ(F"__^%P'4^2(M%`$B)`TB+10A(B4,(2(M%$$B)
+M0Q!(BT482(E#&,9#1`#&0T$`#[9%18A#1<9#0`$/M@4`````B$,@ZPE!QT0D
+M4/____])QT0D6`````!-B60D8$G'1"1H`````$F-="1828M\)!#H`````%M=
+M05S#9F:0@7\<QP```'8'@W\@`'D(D,='4/[____SPV9F9I!F9I!54TB#[`A(
+MB?U(BW\H2,?&`````.C7@?__A<!U0TB+11!(BU@82(/`&$@YV'0R9I!(C;MP
+M_/__]D/P`703@+N`_/__`74*Z$7]__]F9I!FD$B+&TB+11!(@\`82#G8==!(
+M@\0(6UW#9F:09F:09F:055-(@^P(2(G[2(MO*$C'Q@````!(B>_H9('__X7`
+M=3`/MD4@B`4`````2,=#6`````!(B5M@2,=#:`````!(C7-82(M[$.@`````
+MZ4<!``!(Q\8`````2(GOZ"&!__^%P'4]#[9%((T$Q7#^__^)!0````!(QT-8
+M`````$B)6V!(QT-H`````$B-<UA(BWL0Z`````#I_0```&9FD&9FD$C'Q@``
+M``!(B>_HT8#__X7`=3`/MD4@B`4`````2,=#6`````!(B5M@2,=#:`````!(
+MC7-82(M[$.@`````Z;0```!(Q\8`````2(GOZ(Z`__^%P'4S2(M[$$C'AR`"
+M````````2(F?*`(``$C'AS`"````````2(VW(`(``$B#QTCH`````.MN2,?&
+M`````$B)[^A(@/__A<!U,TB+>Q!(QX<@`@```````$B)GR@"``!(QX<P`@``
+M`````$B-MR`"``!(@\=(Z`````#K*,=#4/____](QT-8`````$B)6V!(QT-H
+M`````$B-<UA(BWL0Z`````!(@\0(6UW#9I"#?QP`>`:#?R`#=P?'1U#^____
+M\\-F9F:09F9FD&9FD$B#[!A(B5PD"$R)9"002(G[3(MG,.AF@___08D$)$C'
+M0U@`````2(E;8$C'0V@`````2(US6$B+>Q#H`````$B+7"0(3(MD)!!(@\08
+MPV:0@W\<`W8&@W\@2W<'QT=0_O____/#9F9FD&9F9I!F9I!32(G[2(M'*(LX
+M2(MS,.AM@___A<!T!\=#4/____](QT-8`````$B)6V!(QT-H`````$B-<UA(
+MBWL0Z`````!;PV9F9I!F9F:09F9FD&9FD(-_'`-V!H-_(%=W!\='4/[____S
+MPV9F9I!F9F:09F:04TB)^TB+1RB+.$B+<S#H'83__X7`=`?'0U#_____2,=#
+M6`````!(B5M@2,=#:`````!(C7-82(M[$.@`````6\-F9F:09F9FD&9F9I!F
+M9I"#?QP'=@:#?R`/=P?'1U#^____\\-F9F:09F9FD&9FD%532(/L6$B)^TB+
+M1RB+.(MP!$B+:S!(B>+H`H7__X7`=`['0U#_____ZQ9F9I!FD$B+!"1(B44`
+M2(M$)`A(B44(2,=#6`````!(B5M@2,=#:`````!(C7-82(M[$.@`````2(/$
+M6%M=PV9F9I!F9I"#?QP'=@:#?R!#=P?'1U#^____\\-F9F:09F9FD&9FD%-(
+MB?M(BT<HBSB+<`1(BU,PZ'J$__^%P'0'QT-0_____TC'0U@`````2(E;8$C'
+M0V@`````2(US6$B+>Q#H`````%O#9F9FD&9F9I!F9F:0@W\<`W8&@W\@`W<'
+MQT=0_O____/#9F9FD&9F9I!F9I!!5%532(/$@$B)_4B+1RB+.+X`````Z'5^
+M__](B<-!O`````!(A<!T1&9F9I!F9I!(BT,(2(.X"`$```!T$DB+>Q#_D`@!
+M``!!`<1F9I!FD$B+&TB%VW052(M#"$B+>Q!(B>;_4#B`?"03`'3#2(M%,$2)
+M($C'15@`````2(EM8$C'16@`````2(UU6$B+?1#H`````$B#[(!;74%<PV:0
+M@W\<!W8)@7\@_P```'<'QT=0_O____/#9F9FD&9F9I!!5D%505154TB#Q(!)
+MB?Q(BT<HBSB+:`1-BW0D,+X`````Z*E]__](B<-!O0````!!QT0D4/____](
+MA<!T=&:02(M#"$B#N`@!````=$=(BWL0_Y`(`0``.>A^-$B+0PA(BWL03(GR
+MB>[_D!`!``"%P'4_08!^`O]T!$4`;@)!QT0D4`````#K*69F9I!F9I`IQ4$!
+MQ4B+&TB%VW052(M#"$B+>Q!(B>;_4#B`?"03`'2.2<=$)%@`````38ED)&!)
+MQT0D:`````!)C70D6$F+?"00Z`````!(@^R`6UU!7$%=05[#9F9FD&9F9I!F
+M9I"#?QP'=@F!?R"C#```=P?'1U#^____\\-F9F:09F9FD$%6055!5%532(/$
+M@$F)_$B+1RB+.(MH!$V+="0PO@````#HF7S__TB)PT&]`````$''1"10____
+M_TB%P'1T9I!(BT,(2(.X"`$```!T1TB+>Q#_D`@!```YZ'XT2(M#"$B+>Q!,
+MB?*)[O^0&`$``(7`=3]!@'X"_W0$10!N`D''1"10`````.LI9F9FD&9FD"G%
+M00'%2(L;2(7;=!5(BT,(2(M[$$B)YO]0.(!\)!,`=(Y)QT0D6`````!-B60D
+M8$G'1"1H`````$F-="1828M\)!#H`````$B#[(!;74%<05U!7L-F9F:09F9F
+MD&9FD(-_'`=V"8%_("<-``!W!\='4/[____SPV9F9I!F9F:0059!54%455-(
+M@\2`28G\2(M'*(LXBV@$38MT)#"^`````.B)>___2(G#0;T`````0<=$)%#_
+M____2(7`='1FD$B+0PA(@[@(`0```'1'2(M[$/^0"`$``#GH?C1(BT,(2(M[
+M$$R)\HGN_Y`@`0``A<!U/T&`?@+_=`1%`&X"0<=$)%``````ZREF9F:09F:0
+M*<5!`<5(BQM(A=MT%4B+0PA(BWL02(GF_U`X@'PD$P!TCDG'1"18`````$V)
+M9"1@2<=$)&@`````28UT)%A)BWPD$.@`````2(/L@%M=05Q!74%>PV9F9I!F
+M9F:09F:02(M'*(L`@W\<`W832&-7((G`2(T$A00```!(.<)S!\='4/[____S
+MPV9F9I!F9F:02(/L&$B)7"0(3(ED)!!(B?M(BT<HBS!,BV<P28U\)`3H2X'_
+M_T&)!"1(QT-8`````$B)6V!(QT-H`````$B-<UA(BWL0Z`````!(BUPD"$R+
+M9"002(/$&,-F9F:09F:02(M'*(L`@W\<`W832&-7((G`2(T$A00```!(.<)S
+M!\='4/[____SPV9F9I!F9F:02(/L&$B)7"0(3(ED)!!(B?M(BT<HBS!,BV<P
+M28U\)`3HBX'__T&)!"1(QT-8`````$B)6V!(QT-H`````$B-<UA(BWL0Z```
+M``!(BUPD"$R+9"002(/$&,-F9F:09F:04TB)^TB+1RB+.(-['`-V"8%[(*T`
+M``!W"<=#4/[____K$>@`````2(7`=0?'0U#^____6\-F9F:09F9FD&9FD%-(
+MB?M(BT<HBSA(BW,PN0````"ZK@```$B)\&9FD&:0B`A(_\!(_\IU]NB1D/__
+MA<!T!\=#4/____](QT-8`````$B)6V!(QT-H`````$B-<UA(BWL0Z`````!;
+MPV9FD%-(B?M(BT<HBSB#>QP#=@F!>R#7````=PG'0U#^____ZQ'H`````$B%
+MP'4'QT-0_O___UO#9F9FD&9F9I!F9I!32(G[2(M'*(LX2(MS,+D`````NM@`
+M``!(B?!F9I!FD(@(2/_`2/_*=?;HD9#__X7`=`?'0U#_____2,=#6`````!(
+MB5M@2,=#:`````!(C7-82(M[$.@`````6\-F9I!32(G[2(M'*(LX@WL<`W8)
+M@7L@^0```'<)QT-0_O___^L1Z`````!(A<!U!\=#4/[___];PV9F9I!F9F:0
+M9F:04TB)^TB+1RB+.$B+<S"Y`````+KZ````2(GP9F:09I"("$C_P$C_RG7V
+MZ)&0__^%P'0'QT-0_____TC'0U@`````2(E;8$C'0V@`````2(US6$B+>Q#H
+M`````%O#9F:02(/L$$B)'"1(B6PD"$B)^TB+1RB+*$B+?S"#>QP(=@:#>R`$
+M?PK'0U#^____ZS:02(M#*(M0!`^V0`B)%XA'!.@K=O__/`%T"<=#4/[____K
+M$XGOZ`````!(A<!U!\=#4/[___](BQPD2(ML)`A(@\00PV9F9I!F9I!F9I!F
+M9I!32(G[2(M'*(LX2(MS,.BMD/__A<!T!\=#4/____](QT-8`````$B)6V!(
+MQT-H`````$B-<UA(BWL0Z`````!;PV9F9I!F9F:09F9FD&9FD$B#[!!(B1PD
+M2(EL)`A(B?V!?QRS````=@:#?R`'=PG'15#^____ZSY(BT<HBQB)W^@`````
+M2(G!A=L/E<"#^_\/E<(/ML"%PG0<2(7)=!"`>1`$=@I(@[F``@```'0'QT50
+M_O___TB+'"1(BVPD"$B#Q!##9F9FD&9F9I!F9F:02(/L*$B)7"0(3(ED)!!,
+MB6PD&$R)="0@28G]2(M?*$2+(TB#PP1,BW<P1(GGZ`````!(B<=%A>0/E,)!
+M@_S_#Y3`"="H`;@`````2`]%^$0/MD,"2(U+<`^V4P$/MC-!N0````!!@^`/
+MZ(*4__])B09)QT58`````$V);6!)QT5H`````$F-=5A)BWT0Z`````!(BUPD
+M"$R+9"003(ML)!A,BW0D($B#Q"C#9F:09I!(@^P82(D<)$B);"0(3(ED)!!(
+MB?V#?QP(=@:#?R`'=P_'15#^____ZUMF9I!F9I!(BT<HBQA,C6`$B=_H````
+M`$B)P87;#Y7`@_O_#Y7"#[;`A<)T'$B%R700@'D0!'8*2(.Y@`(```!T!\=%
+M4/[___],B>?HQG/__SP!=`?'15#^____2(L<)$B+;"0(3(MD)!!(@\08PV9F
+M9I!F9F:02(/L*$B)7"0(2(EL)!!,B60D&$R);"0@28G\2(M'*(L82(UH!$R+
+M;S")W^@`````2(G'A=L/E,*#^_\/E,`)T*@!N`````!(#T7X@'T*`'0&#[9%
+M"NL*#[9%#L#H!`^VP$0/MD4.2(U-?`^V50T/MG4,08G!08/@#^@BD___28E%
+M`$G'1"18`````$V)9"1@2<=$)&@`````28UT)%A)BWPD$.@`````2(M<)`A(
+MBVPD$$R+9"083(ML)"!(@\0HPV9F9I!F9F:09F9FD&9FD$B#["!(B1PD2(EL
+M)`A,B60D$$R);"082(G[2(M'*$2+($AC5QQ$B>!(C02%!````$@YPG(+@W\@
+M`'D59F:09I#'0U#^____ZWQF9F:09F:0@#T``````G4IQT=0_O___^MCQT-0
+M_O___^M:QT-0_/___^M1QT-0_O___V9FD&:0ZT-!O0````!%.>5S.&9FD$2)
+MZ$B+4RB+;(($B>_H`````$B%P'2[B>_H`````$B+4Q!(.1!UM/9`9`%TMT'_
+MQ44YY7++2(L<)$B+;"0(3(MD)!!,BVPD&$B#Q"##9F:055-(@^P(2(MO*+@`
+M````@WT``'8=C5@!B=B+?(4`Z`````!(B<?HQ>W__XG8.5T`=^-(@\0(6UW#
+M9F9FD&9FD$B#[`A(BT<02,>`(`(```````!(B;@H`@``2,>`,`(```````!(
+MC;`@`@``2(UX2.@`````2(/$",-F9I!F9I!(@^P@2(D<)$B);"0(3(ED)!!,
+MB6PD&$B)^TB+;RB!?QR'````=@:#?R`#=PG'0U#^____ZVR`?0$(=B3'1U#^
+M____ZUW'0U#^____9F9FD.M0QT-0_/___^M'9F:09I!!O0````"`?0$`=C9F
+M9F:01(GJ#[;"1(MDA6A$B>?H`````$B%P'2]1(GGZ`````!(BU,02#D0=;E!
+M_\5$.&T!=\Y(BQPD2(ML)`A,BV0D$$R+;"082(/$(,-F9I!F9I!54TB#[`A(
+MBU\HO0````"`>P$`=!V)Z(M\@VCH`````$B)Q^B([/___\4/MD,!.>AWXTB#
+MQ`A;7<-F9F:09F:02(/L"$B+1Q!(QX`@`@```````$B)N"@"``!(QX`P`@``
+M`````$B-L"`"``!(C7A(Z`````!(@\0(PV9FD&9FD(-_'`-V!H-_(`-_!\='
+M4/[____SPV9F9I!F9F:09F:055-(@>R(````2(G[2(M'*(LXO@````#H=''_
+M_TB)PDB+:S!(A<!T*$B+0`A(B>9(BWH0_U`XBT0D!&:)10`/MT0D!F:)10+K
+M#F9F9I!F9I#'0U#^____2,=#6`````!(B5M@2,=#:`````!(C7-82(M[$.@`
+M````2('$B````%M=PV9F9I!F9F:09F:09F:02(M'*(M("(MP#$AC5QR%R70.
+MB?!(@\`02#G"<A7K!Y!(@_H/=@R%R74/.7<@9F:0<P?'1U#^____\\-F9I!F
+MD$B#["A(B5PD"$B);"003(ED)!A,B6PD($B)^TB+1RB+.$2+:`2+:`A$BV`,
+MO@````#HBG#__TB)P4B%P'4)QT-0_O___^M+A>UU)4B+0`A(BU,P2(MY$$&X
+M`0```$2)X42)[O^0*`$``.LG9F:09I!(BU,H2(/"$$B+0`A(BWD00;@`````
+M1(GA1(GN_Y`H`0``2,=#6`````!(B5M@2,=#:`````!(C7-82(M[$.@`````
+M2(M<)`A(BVPD$$R+9"083(ML)"!(@\0HPV9F9I!(@^P@2(D<)$B);"0(3(ED
+M)!!,B6PD&$B)^TB+;RB!?QRO````=@:#?R`#=PG'0U#^____ZVR`?0$0=B3'
+M1U#^____ZUW'0U#^____9F9FD.M0QT-0_/___^M'9F:09I!!O0````"`?0$`
+M=C9F9F:01(GJ#[;"1(MDA7!$B>?H`````$B%P'2]1(GGZ`````!(BU,02#D0
+M=;E!_\5$.&T!=\Y(BQPD2(ML)`A,BV0D$$R+;"082(/$(,-F9I!F9I!54TB#
+M[`A(BU\HO0````"`>P$`=!V)Z(M\@W#H`````$B)Q^B(Z?___\4/MD,!.>AW
+MXTB#Q`A;7<-F9F:09F:02(/L"$B+1Q!(QX`@`@```````$B)N"@"``!(QX`P
+M`@```````$B-L"`"``!(C7A(Z`````!(@\0(PV9FD&9FD$B#["!(B1PD2(EL
+M)`A,B60D$$R);"082(G[2(MO*(-_'`1^!H-_(`-W"<=#4/[____K?4B)[^CU
+M;/__/`%T"<=#4/[____K:(!]#4!F9F:0=B#'0U#^____ZU7'0U#^____ZTS'
+M0U#\____9F:09I#K/D&]`````(!]#0!V,D2)Z@^VPD2+9(5\1(GGZ`````!(
+MA<!TQ42)Y^@`````2(M3$$@Y$'6]0?_%1#AM#7?.2(L<)$B+;"0(3(MD)!!,
+MBVPD&$B#Q"##9F9FD&9F9I!54TB#[`A(BU\HO0````"`>PT`=!V)Z(M\@WSH
+M`````$B)Q^@XZ/___\4/MD,-.>AWXTB#Q`A;7<-F9F:09F:02(/L"$B+1Q!(
+MQX`@`@```````$B)N"@"``!(QX`P`@```````$B-L"`"``!(C7A(Z`````!(
+M@\0(PV9FD&9FD$B#["!(B1PD2(EL)`A,B60D$$R);"082(G[2(M'*(LH3(U@
+M!(%_'+,```!V!H-_(`-W#<=#4/[____IE````)")[^@`````2(7`=0G'0U#^
+M____ZWZ)[^@`````2(M3$$@Y$'0)QT-0_/___^ME08!\)`$0=A['0U#^____
+M9F:0ZU''0U#^____ZTC'0U#\____ZS]!O0````!!@'PD`0!V,42)Z@^VPD&+
+M;(1PB>_H`````$B%P'3)B>_H`````$B+4Q!(.1!UPD'_Q44X;"0!=\](BQPD
+M2(ML)`A,BV0D$$R+;"082(/$(,-F9I!FD%532(/L"$B+7RA(@\,$O0````"`
+M>P$`="1F9F:09F:0B>B+?(-PZ`````!(B<?HO>;____%#[9#`3GH=^-(@\0(
+M6UW#9F9FD&9F9I!F9F:02(/L"$B+1Q!(QX`@`@```````$B)N"@"``!(QX`P
+M`@```````$B-L"`"``!(C7A(Z`````!(@\0(PV9FD&9FD$B#["!(B1PD2(EL
+M)`A,B60D$$R);"082(G[2(M'*(LH3(U@!(-_'`AV!H-_(`-W$,=#4/[____I
+MMP```&9F9I")[^@`````2(7`=0S'0U#^____Z9L```")[^@`````2(M3$$@Y
+M$'0,QT-0_/___^E_````3(GGZ.1I__\\`6:0=`G'0U#^____ZVA!@'PD#4!V
+M'\=#4/[____K5\=#4/[____K3L=#4/S___]F9F:0ZT%!O0````!!@'PD#0!F
+MD'8Q1(GJ#[;"08MLA'R)[^@`````2(7`=,.)[^@`````2(M3$$@Y$'6\0?_%
+M13AL)`UWSTB+'"1(BVPD"$R+9"003(ML)!A(@\0@PV9FD&:055-(@^P(2(M?
+M*$B#PP2]`````(![#0!T)&9F9I!F9I")Z(M\@WSH`````$B)Q^@=Y?___\4/
+MMD,-.>AWXTB#Q`A;7<-F9F:09F9FD&9F9I!(@^P(2(M'$$C'@"`"````````
+M2(FX*`(``$C'@#`"````````2(VP(`(``$B->$CH`````$B#Q`C#9F:09F:0
+M2(/L&$B)7"0(2(EL)!!(B?M(BT<HBRB#?QP'=@:#?R`#=PW'0U#^____ZVAF
+M9F:0B>_H`````$B%P'4)QT-0_O___^M/B>_H`````$B+4Q!(.1!T"<=#4/S_
+M___K-DB#>!@`=0:`>!`$=PG'0U#^____ZR"#>##_=!J+<#!(BP!(BW@(Z```
+M``"%P'0'QT-0_____TB+7"0(2(ML)!!(@\08PV9F9I!F9I!F9I!F9I!32(M'
+M*(LXZ`````!(B<-(A<!T/$B#N(`"````=#)(BX"``@``2(-X"`!T"4B+>`CH
+MV^/__TB+@X`"``!(@W@0`'052(MX$.C$X___ZPIFD$B)W^BXX___6\-F9I!F
+M9I!(@^P(2(M'$$C'@"`"````````2(FX*`(``$C'@#`"````````2(VP(`(`
+M`$B->$CH`````$B#Q`C#9F:09F:0@W\<`'@&@W\@*W<'QT=0_O____/#9F9F
+MD&9F9I!F9I!32(G[2(M_,.CCJ?__A<!T!\=#4/____](QT-8`````$B)6V!(
+MQT-H`````$B-<UA(BWL0Z`````!;PV9FD&:02(/L$$B)'"1(B6PD"$B)^TB+
+M1RB+*(-_'`AV!H-_(`!Y#L=#4/[____K-69FD&:0B>_H`````$B%P'4)QT-0
+M_O___^L;B>_H`````$B+4Q!(.1!T"\=#4/S___]F9F:02(L<)$B+;"0(2(/$
+M$,-FD$B#[!A(B1PD2(EL)`A,B60D$$B)^TB+1RB+.$2+8`0/MF@(Z`````!(
+MB<9`#[;-1(GBBWL828G8Z+/+__](BQPD2(ML)`A,BV0D$$B#Q!C#2(/L$$B)
+M'"1(B6PD"$B)^TB+1RB+*(-_'`AV!H-_(`!_#L=#4/[____K-69FD&:0B>_H
+M`````$B%P'4)QT-0_O___^L;B>_H`````$B+4Q!(.1!T"\=#4/S___]F9F:0
+M2(L<)$B+;"0(2(/$$,-FD$B#[!A(B1PD2(EL)`A,B60D$$B)^TB+1RB+.$2+
+M8`0/MF@(Z`````!(B<9`#[;-1(GBBWL828G8Z//*__](BQPD2(ML)`A,BV0D
+M$$B#Q!C#2(/L$$B)'"1(B6PD"$B)^TB+1RB+*(-_'`AV!H-_(`!Y#L=#4/[_
+M___K-69FD&:0B>_H`````$B%P'4)QT-0_O___^L;B>_H`````$B+4Q!(.1!T
+M"\=#4/S___]F9F:02(L<)$B+;"0(2(/$$,-FD$B#[!A(B1PD2(EL)`A,B60D
+M$$B)^TB+1RB+.$2+8`0/MF@(Z`````!(B<9`#[;-1(GBBWL828G8Z#/*__](
+MBQPD2(ML)`A,BV0D$$B#Q!C#2(/L$$B)'"1(B6PD"$B)^TB+1RB+*(-_'`UV
+M!H-_(`!Y#L=#4/[____K-69FD&:0B>_H`````$B%P'4)QT-0_O___^L;B>_H
+M`````$B+4Q!(.1!T"\=#4/S___]F9F:02(L<)$B+;"0(2(/$$,-FD$B#[!A(
+MB1PD2(EL)`A,B60D$$B)^TB+1RB+.$R+8`0/MV@,Z`````!(B<8/M\V+>QA)
+MB=A,B>+H=,G__TB+'"1(BVPD"$R+9"002(/$&,.02(/L$$B)'"1(B6PD"$B)
+M^TB+1RB+*(-_'`UV!H-_(`!_#L=#4/[____K-69FD&:0B>_H`````$B%P'4)
+MQT-0_O___^L;B>_H`````$B+4Q!(.1!T"\=#4/S___]F9F:02(L<)$B+;"0(
+M2(/$$,-FD$B#[!A(B1PD2(EL)`A,B60D$$B)^TB+1RB+.$R+8`0/MV@,Z```
+M``!(B<8/M\V+>QA)B=A,B>+HM,C__TB+'"1(BVPD"$R+9"002(/$&,.02(/L
+M$$B)'"1(B6PD"$B)^TB+1RB+*(-_'`UV!H-_(`!Y#L=#4/[____K-69FD&:0
+MB>_H`````$B%P'4)QT-0_O___^L;B>_H`````$B+4Q!(.1!T"\=#4/S___]F
+M9F:02(L<)$B+;"0(2(/$$,-FD$B#[!A(B1PD2(EL)`A,B60D$$B)^TB+1RB+
+M.$R+8`0/MV@,Z`````!(B<8/M\V+>QA)B=A,B>+H],?__TB+'"1(BVPD"$R+
+M9"002(/$&,.02(/L$$B)'"1(B6PD"$B)^TB+1RB+*(-_'`-V!H-_(`!Y#L=#
+M4/[____K;&9FD&:0B>_H`````$B%P'4)QT-0_O___^M2B>_H`````$B)PDB+
+M0Q!(.0)T"<=#4/S____K-H!Z$`1V*4B#NH`"````D'0>2(N"@`(``("XJP``
+M``!U#@^V@F$"``"#X!@\"'0'QT-0_O___TB+'"1(BVPD"$B#Q!##9F9FD&9F
+M9I!F9I!32(M'*(LXZ`````!(BYB``@``2(VSD````(![*``/A/$```!(BT,(
+M2(M0*$@YDZ````!U*X"[J@````)U$DB)W^AZSO__Z>$!``!F9I!FD("[J@``
+M``%U!\:#J@````!(BU,(2(MZ*$@YNZ````!V,$@/MX.H````2`'X2#F#H```
+M`'8+#[>+J````.MR9I`/MXN@````2(M#"&8K2"CK7TB+0PA(BXN@````2#M(
+M*'4F2`^WDZ@```!(B<A(B=>Z`````$CW]XG19H72=3$/MXNH````ZRA(#[>#
+MJ````$@Y@Z````!R"0^WBZ@```#K#@^WBZ````!F9F:09F:0#[?12(N#H```
+M`$B)QT@IU^F2````2(M#"$B+4"A(.9.@````=2J`NZH````#=1%(B=_HB<W_
+M_^GP````9F9FD("[J@````!U!\:#J@````%(B[N@````#[:#J@```(3`#Y3"
+M/`,/E,`)T*@!=`I(BT,(2(M0*.L(2(M#$$B+4"A(#[>#J````$B+BZ````!(
+M`<A(.=!V"68IRHG1ZPEFD`^WBZ@```!FQT8*``!(B3YFB4X(#[:#J@```(3`
+M#Y3"/`,/E,`)T*@!=%E(QT-8`````$B+!DB)0TA(#[=&"$@#!DB)0U!(QT-P
+M`````$B)6WA(QX.``````````$B-0V!(B4-@2(E#:,>#B`````$```!(C7-(
+M2(M[".@`````A<!U"$B)W^BTT___6V9FD,-F9F:09F9FD&9F9I!F9I!(@^P0
+M2(D<)$B);"0(2(G[2(M'*(LH@W\<`W8&@W\@`'D.QT-0_O___^M%9F:09I")
+M[^@`````2(7`=0G'0U#^____ZRN)[^@`````2(M3$$@Y$'0)QT-0_/___^L2
+M@'@0`70,QT-0_O___V9FD&:02(L<)$B+;"0(2(/$$,-FD$B#[`A(BT<HBSCH
+M`````$B)Q^@)V___2(/$",-F9F:02(/L"$B+1Q!(QX`@`@```````$B)N"@"
+M``!(QX`P`@```````$B-L"`"``!(C7A(Z`````!(@\0(PV9FD&9FD$B#[!!(
+MB1PD2(EL)`A(B?M(BT<HBRB#?QP#=@:#?R``>0['0U#^____ZT5F9I!FD(GO
+MZ`````!(A<!U"<=#4/[____K*XGOZ`````!(BU,02#D0=`G'0U#\____ZQ*`
+M>!`!=`S'0U#^____9F:09I!(BQPD2(ML)`A(@\00PV:02(/L"$B+1RB+..@`
+M````2(G'Z"G:__](@\0(PV9F9I!(@^P(2(M'$$C'@"`"````````2(FX*`(`
+M`$C'@#`"````````2(VP(`(``$B->$CH`````$B#Q`C#9F:09F:02(/L&$B)
+M'"1(B6PD"$R)9"002(G[2(M'*(LH1(M@!(-_'`=V"X-_(`!Y%69FD&:0QT-0
+M_O___^FI````9F9FD(GOZ`````!(A<!U#,=#4/[____IC0```$2)YV9FD&:0
+MZ`````!(A<!U"<=#4/[____K<HGOZ`````!(B<5$B>?H`````$B)PDB+0Q!(
+M.44`=`G'0U#\____ZTI(BT,02#D"=`G'0U#\____ZSA(BT4(@'@*`'0G@'H0
+M`74A2(-]6`!T&DB#O8`"````=!=(BX6``@``@+BK`````'0'QT-0_O___TB+
+M'"1(BVPD"$R+9"002(/$&,-F9F:09F9FD$B#[!A(B5PD"$R)9"002(M'*(LX
+MBU@$Z`````!)B<2)W^@`````2(G#3(GGZ*_8__](B=_HI]C__TB+7"0(3(MD
+M)!!(@\08PV9F9I!F9F:02(/L"$B+1Q!(QX`@`@```````$B)N"@"``!(QX`P
+M`@```````$B-L"`"``!(C7A(Z`````!(@\0(PV9FD&9FD$B#[!!(B1PD2(EL
+M)`A(B?M(BT<HBRB#?QP'=@:#?R``>0['0U#^____ZT5F9I!FD(GOZ`````!(
+MA<!U"<=#4/[____K*XGOZ`````!(BU,02#D0=`G'0U#\____ZQ*`>!`$=PS'
+M0U#^____9F:09I!(BQPD2(ML)`A(@\00PV:02(/L&$B)7"0(2(EL)!!(BT<H
+MBSB+6`3H`````$B)Q8/[#75,2(7`=&9(@[B``@```'1<2(N`@`(``$B#>`@`
+M=`](BW@(Z(;7__]F9I!F9I!(BX6``@``2(-X$`!T,4B+>!#H:=?__^LF9F9F
+MD&9FD(/[`0^4PH/[!`^4P`G0J`%U!8/[!W4(2(GOZ$'7__](BUPD"$B+;"00
+M2(/$&,-FD$B#[`A(BT<02,>`(`(```````!(B;@H`@``2,>`,`(```````!(
+MC;`@`@``2(UX2.@`````2(/$",-F9I!F9I!(@^P02(D<)$B);"0(2(G[2(M'
+M*(LH@W\<5W8&@W\@`'D.QT-0_O___^M'9F:09I")[^@`````2(7`=0G'0U#^
+M____ZRV)[^@`````2(M3$$@Y$'0)QT-0_/___^L4@'@0!'8'2(-X&`!T!\=#
+M4/[___](BQPD2(ML)`A(@\00PTB#[`A(BT<HBSCH`````$B)Q^A9UO__2(/$
+M",-F9F:02(/L"$B+1Q!(QX`@`@```````$B)N"@"``!(QX`P`@```````$B-
+ML"`"``!(C7A(Z`````!(@\0(PV9FD&9FD$B#[!!(B1PD2(EL)`A(B?M(BT<H
+MBRB#?QQ#=@:#?R``>0['0U#^____ZTEF9I!FD(7M=$")[^@`````2(7`9I!U
+M"<=#4/[____K*8GO9F:0Z`````!(BU,02#D0=`G'0U#\____ZPV`>!`!=`?'
+M0U#^____2(L<)$B+;"0(2(/$$,-F9F:09F9FD&9FD&9FD$B#[`A(BT<02,>`
+M(`(```````!(B;@H`@``2,>`,`(```````!(C;`@`@``2(UX2.@`````2(/$
+M",-F9I!F9I!(@^P02(D<)$B);"0(2(G[2(M'*(LH@W\<"'8&@W\@`'D.QT-0
+M_O___^M)9F:09I"%[71`B>_H`````$B%P&:0=0G'0U#^____ZRF)[V9FD.@`
+M````2(M3$$@Y$'0)QT-0_/___^L-@'@0`70'QT-0_O___TB+'"1(BVPD"$B#
+MQ!##9F9FD&9F9I!F9I!F9I!(@^P(2(M'$$C'@"`"````````2(FX*`(``$C'
+M@#`"````````2(VP(`(``$B->$CH`````$B#Q`C#9F:09F:0@W\<`'@&@W\@
+M`'D'QT=0_O____/#9F9FD&9F9I!F9I!(@^P(2(M'$$C'@"`"````````2(FX
+M*`(``$C'@#`"````````2(VP(`(``$B->$CH`````$B#Q`C#9F:09F:0@W\<
+M`'@&@W\@*W<'QT=0_O____/#9F9FD&9F9I!F9I!32(G[2(M_,.B3I/__A<!T
+M!\=#4/____](QT-8`````$B)6V!(QT-H`````$B-<UA(BWL0Z`````!;PV9F
+MD&:0@W\<`'@&@W\@?W<'QT=0_O____/#9F9FD&9F9I!F9I!54TB#[`A(B?U(
+MBU\P2(G?Z"ND__^%P'0'QT50_____\<#@````+D`````NE0```!(C4,LB`A(
+M_\!(_\IU]KD`````2&/1#[9$$PR#X`\/ML"#Z`.#^`)W!<9$$RP&_\&#^0]^
+MWDC'15@`````2(EM8$C'16@`````2(UU6$B+?1#H`````$B#Q`A;7<-F9I!(
+M@^P02(D<)$B);"0(2(G[2(MO*`^V50O!X@E(8T\<@'T,`G4-B=!(@\`02#G!
+M<B;K!DB#^0]V'DAC2R"`?0P!=0Z)T$B#P!!(.<%R">L3D$B#^0]W#,=#4/[_
+M__]F9I#K0HM]`.@`````2(7`=0G'0U#^____ZRR+?0!F9I!FD.@`````2(M3
+M$$@Y$'0)QT-0_/___^L-@'@0`70'QT-0_O___TB+'"1(BVPD"$B#Q!##9F9F
+MD&9F9I!F9I!F9I!32(G[2(M'*(LXZ`````!(B<=(B=[H%A```%O#9F9FD$B#
+M[!!(B1PD2(EL)`A(B?M(BV\H#[=5$,'B"4AC3QR`?1("=0V)T$B#P!1(.<%R
+M)NL&2(/Y$W8>2&-+((!]$@%U#HG02(/`%$@YP7()ZQ.02(/Y$W<,QT-0_O__
+M_V9FD.M"BWT`Z`````!(A<!U"<=#4/[____K+(M]`&9FD&:0Z`````!(BU,0
+M2#D0=`G'0U#\____ZPV`>!`!=`?'0U#^____2(L<)$B+;"0(2(/$$,-F9F:0
+M9F9FD&9FD&9FD%-(B?M(BT<HBSCH`````$B)QTB)WN@V#P``6\-F9F:02(/L
+M$$B)'"1(B6PD"$B)^TB+1RB+*(-_'`-V!H-_(`!Y#L=#4/[____K-69FD&:0
+MB>_H`````$B%P'4)QT-0_O___^L;B>_H`````$B+4Q!(.1!T"\=#4/S___]F
+M9F:02(L<)$B+;"0(2(/$$,-FD$B#[`A(BT<02,>`(`(```````!(B;@H`@``
+M2,>`,`(```````!(C;`@`@``2(UX2.@`````2(/$",-F9I!F9I!(@^P@2(D<
+M)$B);"0(3(ED)!!,B6PD&$B)^TB+1RA$#[8@2&-7'$2)X$B-!(4$````2#G"
+M<@:#?R`#=R3'0U#^____ZUO'0U#^____9F9FD.M.QT-0_/___^M%9F:09I!!
+MO0````!%.>5S-69FD&:01(GH2(M3*(ML@@2)[^@`````2(7`=+Z)[^@`````
+M2(M3$$@Y$'6[0?_%13GE<M&02(L<)$B+;"0(3(MD)!!,BVPD&$B#Q"##9F9F
+MD&9F9I!!5D%505154TB)_4B+1RA$BRA%B>Y!@>8``0``08'E_P```$B+1S#'
+M``````!!O`````!%.>P/@Y@```!F9F:01(G@2(M5*(M\@@3H`````$B)PT6%
+M]G0X2(-X&`!U&8!X$`6^`````$@/0_!(B<?H7,G__X3`=0U(BU4P08U$)`&)
+M`NM/187V=3YF9I!F9I!(@WL8`'4D9O>#8`(``'`(=1F#>S#_=""+<S!(BP-(
+MBW@(Z`````"%P'0-2(M5,$&-1"0!B0+K#$'_Q$4Y[`^";/___TC'15@`````
+M2(EM8$C'16@`````2(UU6$B+?1#H`````%M=05Q!74%>PV:02(/L($B)'"1(
+MB6PD"$R)9"003(EL)!A(B?M(BT<H1`^V($AC5QQ$B>!(C02%!````$@YPG(&
+M@W\@`W<DQT-0_O___^M;QT-0_O___V9F9I#K3L=#4/S____K169FD&:00;T`
+M````13GE<S5F9I!FD$2)Z$B+4RB+;(($B>_H`````$B%P'2^B>_H`````$B+
+M4Q!(.1!UNT'_Q44YY7+1D$B+'"1(BVPD"$R+9"003(ML)!A(@\0@PV9F9I!F
+M9F:02(/L&$B)'"1(B6PD"$R)9"0028G\2(M'*(L`]L3_#Y3"#[;HA-)T/KL`
+M````.>M]-4ACPTF+5"0HBWR"!.@`````2(7`=!F`>!`$=A-(@[B``@```'4)
+M2(G'Z+'-__^0_\,YZWS+2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9I!(@^P(
+M2(M'$$C'@"`"````````2(FX*`(``$C'@#`"````````2(VP(`(``$B->$CH
+M`````$B#Q`C#9F:09F:02(/L$$B)'"1(B6PD"$B)^TB+1RB+*(-_'`=W"<='
+M4/[____K,(GOZ`````!(A<"0=0G'0U#^____ZQJ)[V9FD.@`````2(M3$$@Y
+M$'0'QT-0_/___TB+'"1(BVPD"$B#Q!##9F9FD&9FD&9FD&9FD$B#[`A(BT<H
+MBSB`>`0!=1#H`````$B)Q^C#S/__9F:02(/$",-F9F:09F9FD&9FD$B#[`A(
+MBT<02,>`(`(```````!(B;@H`@``2,>`,`(```````!(C;`@`@``2(UX2.@`
+M````2(/$",-F9I!F9I!(BT<HBP"#?QP#=A-(8U<@B<!(C02%!````$@YPG,'
+MQT=0_O____/#9F9FD&9F9I!!5T%6055!5%532('LF````$F)_$B+1RB+`(E$
+M)`Q!OP````!!O0````!,BW<P28/&!$B++0````!(A>UT5F:02(M=$$B%VW1"
+M9F9FD&9FD$B+0PA(BWL02(UT)!#_4#B`?"0C`'0<23EL)!!U$D6)+DF#Q@1!
+M_\=$.WPD#',5D$'_Q4B+&TB%VW7%2(MM`$B%[76L28M$)#!$B3A)QT0D6```
+M``!-B60D8$G'1"1H`````$F-="1828M\)!#H`````$B!Q)@```!;74%<05U!
+M7D%?PV9F9I!F9F:09F9FD%-(B?M(BT<H#[8`@W\<`G8&@W\@`'D)QT-0_O__
+M_^M!#[;XO@````#HLU#__TB)PDB%P'0.2(M`"$B#N/@`````=0W'0U#^____
+MZQ5F9F:02(M#$$@Y0AAT!\=#4/S___];PV9F9I!F9I!F9I!F9I!(@^P(2(M7
+M$$B+@B`"``!(B4=(2,='6`````!(B7]@2,=':`````!(C7=82(G7Z`````!(
+M@\0(PV9F9I!F9F:04TB#[!!(B?M(BT<H#[80@'@"`W4;#[9`!(E$)`P/MOI(
+MC70D#.@&4/__2(G!ZS&0@'@"!'4:#[9``8E$)`@/MOI(C70D".BU4/__2(G!
+MZQ`/MOJ^`````.C33___2(G!2(M3$$B+0TA(B8(@`@``2(M#$$B)F"@"``!(
+MBT,02,>`,`(```````!(QT-(`````$B+00A(BWD02(G>_Y#X````2(/$$%O#
+M9F9FD&9F9I!(@^P02(D<)$B);"0(2(G[2(MO*$AC5QR`?00"=1*+11A(@\`<
+M2#G"<BSK"F9F9I!(@_H;=B!(8U,@@'T$`6:0=0Z+11A(@\`(2#G"<@CK$DB#
+M^@=W#,=#4/[___]F9I#K0HM]`.@`````2(7`=0G'0U#^____ZRR+?0!F9I!F
+MD.@`````2(M3$$@Y$'0)QT-0_/___^L-@'@0`70'QT-0_O___TB+'"1(BVPD
+M"$B#Q!##9F9FD&9F9I!F9I!F9I!(BT]82(MY*+@`````A=)T,8!_!`%U#DB+
+M03!(@\`(2(E&".L,2(M!*$B#P!Q(B48(BT<8B0;'1@0!````N`$```#SPV9F
+M9I!F9F:09F9FD%-(BU]82(M+,("_J@````%T"8"_D@````!T1<=#4``````/
+MMH>2````B`&$P'01#[:'D0```(E!!.L.9F:09I"+AY0```")001(@WLX`'07
+M2(M3.(M!!(/`"(D"ZPEFD,=#4/_____H`````$C'0U@`````2(E;8$C'0V@`
+M````2(US6$B+>Q#H`````%O#D$B#[!A(B1PD2(EL)`A,B60D$$F)_$B+;RB+
+M?0#H`````$B)PTB+.(MP-.@`````2(G"2(7`=3E!QT0D4/W___])QT0D6```
+M``!-B60D8$G'1"1H`````$F-="1828M\)!#H`````.F4````9F:09I!,B6!8
+M2(E84,:`J`````*`?00!=0N`B*D````"ZQ)FD(!]!`)U"H"(J0````1F9I!(
+MC44(2(F"F`````^V10>(@I````"+11B)@I0```!!#[9$)""#Z`B(@I$```"$
+MP'0028M$)#!(@\`(2(F"H````$C'@K@`````````2,>"P`````````!(B=?H
+M`````$B+'"1(BVPD"$R+9"002(/$&,-F9F:09F9FD&9FD&9FD$%455-)B?Q(
+MB?-(Q\4`````@ST`````_W0CBP4`````.T88=!)(@\4H@WT`_W0.BT4`.T,8
+M=>Z#?0#_=1+'0U#^____2(G?_U-(Z;0```#'0U``````2(G?_U4(@WM0`'0+
+M2(G?_U-(Z98```!!@+PDD`($``!UQ8-](`!F9F:0=7M)@[PDX`$```!T'$F-
+MA"00`@``2(M0"$B)6`A(B0-(B5,(2(D:ZUI)B9PDX`$``$B#?1``=$5!QX0D
+MZ`$```$```!(BT4828F$)/`!``!)B9PD^`$``$G'A"0``@```````$B)W_]5
+M$$'_C"3H`0``08.\).@!````=09(B=__51A;74%<PV9F9I!F9F:04TB)^TB+
+M?Q!(.9_@`0``=3](QX?@`0```````$B-AQ`"``!(.8<0`@``="1(B[<0`@``
+M2(M6"$B+!DB)4`A(B0)(B39(B78(Z*/^__]F9I!(B=__4TA;PV9F9I!F9F:0
+M4TB)^TB)?A!(@WXX`'0)2(M6.(M&((D"2(G?Z'#^__](B=_H`````%O#9F:0
+M9F:0BX?H`P``PV9FD&9FD&9FD$B#[#BY`````+HL````2(G@B`A(_\!(_\IU
+M]D"(?"0(0(#_!W492(-^&`!T#DB+1AB+@.@#``")1"0,2(MV.$"`_P8/E,)`
+M@/\$#Y3`"="H`7440(#_!0^4PD"`_P@/E,`)T*@!=!CVAF`"```!#[9$)`RZ
+M`0````]%PHA$)`Q`@/\<=1A(BX9H`@``2(E$)`P/MX9T`P``9HE$)!1`@/\#
+M=49(@WX@`'0_2(M6(`^V@J@```"(1"0,@+JH`````'4G2(N"D````$B)1"00
+M#[>"F````(E$)!@/MH*I````T.B#X`&(1"0-BX;H`P``B40D!$B)Y^@`````
+M2(/$.,-(@^Q(2(E<)#!(B6PD.$R)9"1`2(G[2(MO6$R+9U"!?1A"_P``=5Q(
+MBU4P#[:'FP```(A"#P^WAY0```!FB4((#[>'E@```&:)0@H/MX>8````9HE"
+M#`^VAYH```"(0@X/MX>0````9HE"!`^WAY(```!FB4(&#[>'G````&:)0A#K
+M5$B+53`/MH>;````B$(*#[>'E````(A"!@^WAY8```"(0@</MX>8````B$((
+M#[:'F@```(A""0^WAY````"(0@0/MX>2````B$(%#[>'G````(A""X"[J@``
+M``%U9<=%4`````"!?1A"_P``=1!(BT4H@'@/\G099F:09F:0@7T8&/\``'5#
+M2(M%*(!X"O)U.4F+1"1H2(GF28N\)(````#_4'A(BT0D&/:```$```1T&("@
+M``$``/M,B>?H`````.L'QT50_____TB)W^@`````2,=%6`````!(B6U@2,=%
+M:`````!(C7582(M]$.@`````2(M<)#!(BVPD.$R+9"1`2(/$2,-F9F:09F:0
+M05154TB![,````!)B?Q(BV]02(M=>$B+16A(C;0DD````$B+O8````#_4'A(
+MBT,(2(UT)!!(BWL0_U`X2(U,)`Q(C50D"$B-="0$2(G?Z,U)__\/MH0DG```
+M`/:$))H````"=`N)P@-4)`SK"69FD(G"`U0D"$&`O"2J`````74DBW0D!$C'
+MQP````"X`````.@`````2(GNOQL```#H`````.LBBW0D!$C'QP````"X````
+M`.@`````2(GNOQH```#H`````$F+="182(M]`$B!QY````#H`````$R)Y^@`
+M````2('$P````%M=05S#2(/L*$B)7"0(2(EL)!!,B60D&$R);"0@2(G]28GT
+M2(L_BW4TZ`````!(B<-(A<!U-$''1"10_?___TG'1"18`````$V)9"1@2<=$
+M)&@`````28UT)%A)BWPD$.@`````Z7X"``!(B6A0QH"H`````T&!?"080O\`
+M``^4P$0/MNA%A>UT$4F+1"0H@'@/]`^4P`^VP.L/28M$)"B`>`KT#Y3`#[;`
+MA<`/A.,```!(BWT`2(''D````.@`````2(G%2(7`=!M%A>UT"TF+="0H2(/&
+M%.M+28MT)"A(@\80ZT!!QT0D4/____])QT0D6`````!-B60D8$G'1"1H````
+M`$F-="1828M\)!#H`````$B)W^@`````Z<<!``!F9F:0N@`"``!(B>_H````
+M`$B):UB`BZD````$2(FKH````,:#FP```/1FQX.<`````0!(QX/`````````
+M`$''1"10`````$G'1"18`````$V)9"1@2<=$)&@`````28UT)%A)BWPD$.@`
+M````Z4T!``!FD$6%[0^$F@```$F+5"0H@'H2`74<@(NI`````DF+1"0P2(/`
+M%$B)@Z````#K&V9FD(!Z$@)U$H"+J0````1(C4(42(F#H`````^V0@^(@YL`
+M```/MT((9HF#E`````^W0@IFB8.6````#[="#&:)@Y@````/MD(.B(.:````
+M#[="!&:)@Y`````/MT(&9HF#D@````^W0A!FB8.<````Z9D```!)BU0D*(!Z
+M#`%U&8"+J0````))BT0D,$B#P!!(B8.@````ZQF`>@P"=1.`BZD````$2(U"
+M$$B)@Z````"0#[9""HB#FP```&8/MD(&9HF#E````&8/MD('9HF#E@```&8/
+MMD((9HF#F`````^V0@F(@YH```!F#[9"!&:)@Y````!F#[9"!6:)@Y(```!F
+M#[9""V:)@YP```!,B6-82,>#P`````````!(B=_H`````$B+7"0(2(ML)!!,
+MBV0D&$R+;"0@2(/$*,-F9F:00(@U`````,-F9F:09F9FD$B+5QA(C4<82#G0
+M="M(B<%(C8)P_/__@+J`_/__`740]D+P`70*A?9T$__.9F9FD$B+$D@YT778
+MN`````#SPY!(@^P82(E<)`A,B60D$$F)_$B+7UA(BWL0_U,(28L\)$B!QQ`!
+M``!(B=[H`````$R)Y^@`````2(M<)`A,BV0D$$B#Q!C#9F9FD&9FD&9FD$B#
+M[`A(BT=8_PB#.`!U)DC'1R@`````2(E_,$C'1S@`````2(UW*$B+/TB#QUCH
+M`````.L%Z`````!(@\0(9I##9F9FD&9F9I!F9F:09F:02(/L&$B)'"1(B6PD
+M"$R)9"002(M'4$B+D(`"``!(.4((=0U(BVH0ZPMF9F:09F:02(MJ"$B%[71K
+M]H6``P```71B3(MG6`^VGZD```#`ZP2#XP/H`````(MU-$B+?0#H`````$B)
+MQ\'C!`^V@*D```"#X,\)V(B'J0```$B);U#&AZ@````$3(EG6,:'J@````!(
+MQX?``````````.@`````ZP7H!____TB+'"1(BVPD"$R+9"002(/$&,-F9F:0
+M2(/L&$B)'"1(B6PD"$R)9"002(G]08GT2(G3_P*+=S1(BS_H`````$B)QT&#
+M_`$9P(/``H/@`\'@!`^VEZD```"#XL\)PHB7J0```$B);U#&AZ@````$2(E?
+M6,:'J@````"`?1`$=AA(@[V``@```'0.2,>'P`````````#K#)!(QX?`````
+M`````.@`````2(M]`.@`````2(L<)$B+;"0(3(MD)!!(@\08PV9F9I!(@^PX
+M2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P28G]28GW28G62(V_$`$`
+M`.@`````2(G%2(7`=1E(Q\<`````N`````#H`````$R)]T'_U^MMQP`!````
+M3(EX"$R)<!!(QT`8`````$R):"!)BUT828U%&$@YV'0H28G$2(V[</S__X.[
+MH/S___]T#4B)ZKX`````Z+'^__](BQM).=QUV_]-`(-]``!U%4F-O1`!``!(
+MB>[H`````$R)]T'_UTB+7"0(2(ML)!!,BV0D&$R+;"0@3(MT)"A,BWPD,$B#
+MQ#C#9F9FD&9F9I!(@^PX2(E<)`A(B6PD$$R)9"083(EL)"!,B70D*$R)?"0P
+M28G]28GW28G62(V_$`$``.@`````2(G%2(7`=1E(Q\<`````N`````#H````
+M`$R)]T'_U^MXQP`!````3(EX"$R)<!!(QT`8`````$R):"!)BUT828U%&$@Y
+MV'0N28G$2(V[</S__X"[@/S__P%U$_9#\`%T#4B)ZKX!````Z+O]__](BQM)
+M.=QUU?]-`(-]``!U&DF-O1`!``!(B>[H`````$R)]T'_UV9FD&:02(M<)`A(
+MBVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,.0D)"0D)"0D)"0D)"02(N'
+MV`,``$B%P'0F9F9FD$B+5@A(.1!S#TB+%D@Y4`AV!K@!````PTB+0!!(A<"0
+M==Y,BX>@`P``2(V'H`,``$PYP'1#2(G"28U(Z("YJ`````!U*T@/MX&8````
+M2`.!D````$@Y!G,72(N!D````$@Y1@AV"K@!````PV9F9I!-BP!,.<)UP$R+
+MA[`#``!(C8>P`P``3#G`=$](B<=FD$F-2.@/MH&H````A,`/E,(\@`^4P`G0
+MJ`%T)T@/MX&8````2`.!D````$@Y!G,32(N1D````$@Y5@AV!K@!````PTV+
+M`$PYQW6VN`````"0PV9F9I!F9F:09F9FD&9FD$B#[!!(B1PD2(EL)`A(B?U(
+MB?/HZ/[__X7`=#1(@WLH`'0E2(G92(V5X`,``$B#O>`#````=`Y(BP)(C5`0
+M2(-X$`!U\DB)"KC_____ZQB02(N%V`,``$B)0Q!(B9W8`P``N`````!(BQPD
+M2(ML)`A(@\00PV9F9I!F9F:09F:02(V7V`,``$@YM]@#``!T#4B+`DB-4!!(
+M.7`0=?-(BT802(D"2,=&$`````!,C4X83(N'T`,``$PY3AAT(4B+1AA)BTD(
+M28L03(E`"$F)`$B)$4B)2@A,B4X838E)"$B+!\=`:`$```##9F9FD&9FD%-(
+MBT=0_X"$`P``2(G[2(-_>`!T.4B+1WA(QT`H`````$B+1WA(B7@P2(M'>$C'
+M0#@`````2(MW>$B+?U#H`````(7`=1!(BT-X2(E#<$B)W^@`````6\-F9F:0
+M9F9FD$B+CI````!(#[>6F````$@!RDB+A]@#``!(A<!T2TR-1ACVAJD```!`
+M=`:#>$``="](.49P="E(.1!S)$@Y2`AV'DB#P!A(BU`(3(E`"$B)1AA)B5`(
+M3(D"N`$```##D$B+0!!(A<!UN4B#?G``=5'VAJD```!`=4A(BX?@`P``2(7`
+M=#Q(C7X89F9FD&9FD$@Y$',C2#E("'8=2(/`&$B+4`A(B7@(2(E&&$B)5PA(
+MB3JX`0```,-(BT`02(7`=<^X`````,-F9I!F9I!F9I!(@^P82(E<)`A(B6PD
+M$$B)^TB+;U"`OZ@`````#X6?````2(G^2(GOZ`/___^%P`^%:P$``(!]$`0/
+MAH(```!(@[V``@```'0M2(N%@`(``("XJP````!U'?:#J0````AU%$B)W^@&
+M"```A<`/A2X!``!(BVM0@'T0!'9%]H.I````!'0\#[:%80(``*@@=#&#X-^(
+MA6$"``#H`````(E%/("-8`(```1(BP/'@)0"!``!````2(M%4$@+15A(B450
+M2(V-H`,``$@YC:`#``!U+TB+`\=`:`$```!(C4,82(N5H`,``$B)0@A(B5,8
+M2(E("$B)A:`#``#IH@```&:0@WMH`'5-2(N-J`,``$B-<>B#?F@`>1Q(C4,8
+M2(M1"$B)00A(B4L82(E0"$B)`O]&:.MM2(U#&$B-E:`#``!(BTH(2(E""$B)
+M4QA(B4@(2(D!ZTV#>V@`?B=(C4,82(V-H`,``$B+E:`#``!(B4((2(E3&$B)
+M2`A(B86@`P``ZR!(C4,82(V5H`,``$B+2@A(B4((2(E3&$B)2`A(B0%FD$B+
+M7"0(2(ML)!!(@\08PY!(@^P(]H>``P```74ZQH:J`````O^'B`,``$B-1AA(
+MC9>P`P``2(M*"$B)0@A(B5882(E("$B)`4B)]^@`````N`````#K8(._B`,`
+M``!T"XN'Q`,``#M&:']']H>``P``&'4^BT9HB8?$`P``_X>(`P``2(U6&$B-
+MA[`#``!(BT@(2(E0"$B)1AA(B4H(2(D12(M'"$B)]_]0*+@`````ZP6X`0``
+M`$B#Q`C#9F9FD$B#/P!U"DB)=PA(B3?#9I!(BT<(2(EP$$B)=PC#9F:02(/'
+M6.@`````\\-F9I!FD$%7059!54%455-(@^PH28G_2(U'6$B)1"082(U/2$B)
+M3"002(U'.$B)1"0(0<=':`````#K!DB+>`C_$$B+3"082(L12#M1"'462,=!
+M"`````!(QP$`````ZQ%F9I!FD$B+0A!(BTPD&$B)`4B%TG0(2,="$`````!(
+MB=!(A=)UM<=$)"0`````38MW&$F-1QA,.?`/A),!``!)C:YP_/__2+@@````
+M_____TF%1O"X`0````]$1"0DB40D)$R-I:`#``#K+TB)WDB)[^A/_O__A<!T
+M($B-0QA(BY6@`P``2(E""$B)4QA,B6`(2(F%H`,``.LSN`````!,.:6@`P``
+M=!U)BP0D2(M("$B+$$B)2@A(B1%(B0!(B4`(2(/H&$B)PTB%P'6>3(VMR`,`
+M`.M+28G<2(-[>`!T.4B+0WA(QT`H`````$B+0WA(B5@P2(M#>$C'0#@`````
+M2(MS>$B+>U#H`````(7`=1!(BT-X2(E#<$R)Y^@`````N`````!,.:W(`P``
+M=!U)BT4`2(M("$B+$$B)2@A(B1%(B0!(B4`(2(/H&$B)PTB%P'6"2(.]X`,`
+M``!T9$R-I>`#``!(BYW@`P``2(7;=%%F9F:02(G>2(GOZ'7X__^%P'0&3(UC
+M$.LO2(M#$$F)!"1(BX78`P``2(E#$$B)G=@#``!(C7,H28U_6.@`````0<='
+M:`$```!)BQPD2(7;=;--BS9)C4<83#GP#X5M_O__@WPD)``/A9\```!!@[^4
+M`@0``'030<>'E`($``````!,B?_H`````$B+7"00ZP9(BW@(_Q!(BQ-(.U,(
+M=1%(QT,(`````$C'`P````#K!TB+0A!(B0-(A=)T"$C'0A``````2(G02(72
+M=<1(BVPD".L(2(G?Z`````"X`````$DY;SAT'4B+10!(BT@(2(L02(E*"$B)
+M$4B)`$B)0`A(@^@82(G#2(7`=<A)@W]8``^%2OW__T&#?V@`#X4__?__2(/$
+M*%M=05Q!74%>05_#9F9FD%-(BQ](@WM(`'4'Z`````#K&TB-1QA(C5,X2(M*
+M"$B)0@A(B5<82(E("$B)`4B)W^@`````6\-F9I!F9I!F9I!32(G[2(N'@```
+M`$B%P'042,>'@`````````!(B[>(````_]!(BX/`````2(E#*$B)6S!(QT,X
+M`````$B-<RA(BSM(@\=8Z`````!;PV9FD$B#[!A(B5PD"$B);"002(G[2(MO
+M4.@`````2(U#&$B+2`A(BU,82(E*"$B)$4B)0QA(B4`(_XV(`P``_XV$`P``
+M2(-[>`!T#$B+<WA(B>_H`````$B+7"0(2(ML)!!(@\08PV9F9I!F9I!F9I!F
+M9I!!54%455-(@^P(2(GU2(M/6$B+F;````!$BZ>0````1"NAD````$'!Y`E$
+M#[>OF````$'!Y0E(A=MT$P^V@:D```"#X`%F#[;`9CG0=21(B>M(@[FX````
+M`'002(GN2(G/_Y&X````A<!U![@`````ZW^Y`````(L#B<)$.>!W$`'12(/#
+M$(L3C0011#G@=O!!*<Q$B>&^`````&9FD&:02&/&2(G"2,'B!(G(2`-#"$B)
+M1"H(BP,IR(D$*D0YZ',82(/#$+D`````QT0J!`````!!*<7_QNO'2&/&2,'@
+M!$2)+"C'1"@$`0```+@!````2(/$"%M=05Q!7<-F9F:055-(@^P(2(GZ2(M?
+M6$B+=U!(BZZ``@``#[>#F````$&)P&9$*X>8````@+^J`````75M2(N#D```
+M`$@YAY````!U7;\`````BTI`2(M"2$B%R70+0(@X2/_`2/_)=?5(.74(=0M(
+MBT40ZPEF9I!FD$B+10A(B4)02(N%H````$B)@I````!F1(F"F````,:"J@``
+M``!(B=?H`````.LZD,:#J``````/MH*J````B(.J````2(M["$B)UN@`````
+M2(M#"/]("$B+10C_@(@#``!(B=_H`````$B#Q`A;7<-(@^PH2(E<)`A(B6PD
+M$$R)9"083(EL)"!(B?M(BT]02(NI@`(``$R+IY````!(#[>7F````$P!XD&]
+M`````+@`````2(&_P``````````/A$P!``"X`````$@Y30@/A3T!``"`?2@`
+M=!1,.:6@````=BU(.96@````<D;K&$@YE:````!S&4&]`0```$PYI:````!W
+M++@`````Z0$!``!(BT402(E#4/^)A`,``$B+11#_@(0#``"X`````.G?````
+M2(M#"/]`"$B+>PCH`````$B)QTB+`TB)!TB+0PA(B4<(BT-HB4=H187M=`9(
+MBT40ZP1(BT4(2(E'4$B)7UA(QX>X`````````$C'A\``````````3(FGD```
+M`$B+A:````!F1"G@9HF'F````$C'A[``````````QH>J``````^V@ZD```"(
+MAZD```!(@WMP`'0*2(M#<$B)1W#K"$C'1W`!````2(U#&$B+50A(@<*P`P``
+M2(M*"$B)0@A(B5,82(E("$B)`<:#J````(#H`````+@!````9F9FD&9FD$B+
+M7"0(2(ML)!!,BV0D&$R+;"0@2(/$*,.0D)"0D)"0N@````!(A?]T$69FD&9F
+MD/_"2(U'_T@AQW7UB=##9I!(@^P82(D<)$B);"0(3(ED)!!(B?M,BV<82(-_
+M4`!U(/:'8`(```)T%TB+1PB`>`L!=0T/MF@*ZPQF9F:09F:0O0````!(BT-8
+M2(G'2`M[4.@``````<5(BT,(#[9`"CGH?0V`HX`#``#^ZU1F9F:0@(N``P``
+M`4B#>U``=$)(BT-02(G'2#-[6'4B@*-@`@``_>LL2,?`_O___TC3P$DA1"18
+M3(GGZ`````#K1DB%>U!T#8"+8`(```)F9I!F9I!-A>0/E<(/MH.``P``A<)T
+M(KD`````08!\)$0`=A5FD`^VP4DY7,1@=*K_P4$X3"1$=^U(BQPD2(ML)`A,
+MBV0D$$B#Q!C#9F9FD&9FD&9FD%532(/L"$B)_4B+7QBY`````$@/MD-$2(G"
+M2(/X`'8/2#ELRV!T"$C_P4@YRG?QN`$```!(T^!("4-82(G?Z`````#V@X`#
+M```!#X7S````2(-[&`!T$$B+0QA(BT`(2(G?_U`PZPA(B=_H`````+D`````
+M@'M$`'1S9F:09F:02(M4RV!(A=)T5O:"@`,```%T38!Z$`1V1P^VLF`"``")
+M\(/@CXB"8`(``$@YZG40B?"#X(R(@F`"``#K(V9FD/:"8`(```%T%P^V@F`"
+M``"#X/Z#R`*(@F`"``!F9F:02/_!2`^V0T1(.<AWDTB#NX`"````#X1Q`0``
+M2(N#@`(``$B#>`@`#X1?`0``2(-X$``/A%0!``!(.5@(=09(BU@0ZPM(BX.`
+M`@``2(M8"("C@`,``/Y(B=_H`````.DI`0``O0`````/MH-@`@``@^"_B(-@
+M`@``J"!T%(/(@(B#8`(``$C'@V@"````````#[:38`(``(G0@^#^B(-@`@``
+M2(M#6$CWT$B%0U!U"XG0@^#LB(-@`@``2(-[&`!T7TB+<QB`IF`"``#^N0``
+M``"`?D0`=$E(BU3.8$B%TG0P]H*``P```70G@'H0!'8A]H)@`@```708#[:"
+M8`(``(/(`H/@KHB"8`(``+T!````2/_!2`^V1D1(.<AWN6:02(.[@`(```!U
+M.4B#>Q@`=`Y(BT,82(.X@`(```!U)(-[,`!Y$4B#>Q@`=!=(BT,8@W@P`'@-
+MO@````!(B=_H`````/:#8`(```1T"DB)W^@`````ZP^%[70+2(G?9F:0Z```
+M``"`BV$"```@2(/$"%M=PV9F9I!F9I!F9I!F9I!54TB#[`A(B?.)U8G02(T$
+M0`^V=,8AZ`````!)B<&X`````$V%R0^$7@$``$&`H8`#``#^#[9#%T&(@8$#
+M``!-C4$XBT,$08E!.(N#Q@```$&)0`@/MH/%````08A`$(GI2(TT24B--/-(
+MC7X0#[97%<#J`H/B`4$/MH`H`@``@^#^"=!!B(`H`@``2(M&*4F)@#`"``"+
+MA(N]````08E`!`^V1B1!B$`-#[;(N`$```#3X&9!B4`.2(M'"4F)02@/MD8B
+M08A`#$C'P/____]!@'@,/W<000^V2`RX`0```$C3X$C_R$F)0"!(BT-)28F`
+M.`(``$B+0U%)B8!``@``BT-908F`4`(``$B+@YT```!)B8"4`@``2(N#I0``
+M`$F)@)P"``!(BT-=28F`5`(``$B+0V5)B8!<`@``2(M#;4F)@&0"``!(BT-U
+M28F`;`(``$B+0WU)B8!T`@``2(N#A0```$F)@'P"``!(BX.-````28F`A`(`
+M`$B+@Y4```!)B8",`@``3(G(2(/$"%M=PV9F9I!F9F:09F9FD&9FD$B![%@"
+M``!(B9PD*`(``$B)K"0P`@``3(FD)#@"``!,B:PD0`(``$R)M"1(`@``3(F\
+M)%`"``!)B?U(C6PD($R+-TB+=T!(BW\X0;@!````2(GIN@$```#H`````(%\
+M)"#T%GA:=1&^``(``$B)[^@`````A,!T"KK_____Z>X%``!(B>_H`````+K_
+M____@'TA!`^&UP4``(!](D!W!H!].D!V"[K_____Z<$%``"02`^W12=("X6M
+M````2(E$)`A)BUX828U&&$@YV`^$T@```$R-NW#\__^`NX#\__\$#X:N````
+M2(.[B/S__P`/A:````"+@ZC\__\[100/A9$```#&1"00`/9#\`%T)TB+?"0(
+M2`N[P/S__^@`````2(N3>/S__P^V4@HYT'X'QD0D$`'K3H!]&`%V2$@/MD4C
+M28M<QV!(A=MT.?:#@`,```%T,$@/MWT_2`N]M0```$@+>U#H`````$B+4P@/
+MME(*.="X`0````^V5"00#T_0B%0D$(!\)!``=#M,B?_H`````.L02(L;28U&
+M&$@YV`^%+O___[H`````2(GN3(GWZ*S\__])B<>Z_____TB%P`^$JP0``$V-
+M9SA!#[:$)"@"``")P=#I#[95)8/B`0G*@^(!`=*#X/T)T$&(A"0H`@``28M4
+M)!A!@'PD##]W*$$/MDPD#+@!````2-/@2/_(2"-$)`A("=#K%4F)M"1(`@``
+MZ9X```!(BT0D"$@)T$F)1"0800^VE"0H`@``@^(!#[9%)<#H`H/@`3G"="M!
+M#[:4)"@"``"#XOY!B)0D*`(``$F+1PB`>`H`=`V)T(/(`D&(A"0H`@``@WT(
+M``^$5`$``$&`C"0I`@``!$F+M"1(`@``2(7V#X7%````28M>*$F-1BA(.=AT
+M&TB)PDB-<^B+0^@[10@/A%W___](BQM(.=IUZ$F#O"1(`@````^%C@```$F-
+MOM````#H`````$F)A"1(`@``2(G&NO____](A<`/A'@#``"Y`````+JP````
+M28N$)$@"``!F9I!F9I"("$C_P$C_RG7V2(U6&$F-1BA(BT@(2(E0"$B)1AA(
+MB4H(2(D1BT4(B09(BT4,2(F&H`````^V112(AJH```#V118"=`Q)BX0D2`(`
+M`,9`*`&`?B@`=!-(BTT,2#F.H````'<3@'XH`'4B2(M%#$@YAJ````!S%4B+
+M10Q(B8:@````#[9%%(B&J@```/9%%@1T#4B#?A``=1%,B7X0ZPM(@WX(`'4$
+M3(E^"$B+5A!(.58(=1)(QT8(`````+K_____Z9H"``!!BT0D!#N%O0```'07
+M08",)"@"```"2<>$)#`"````````ZQ9(BTTI23F,)#`"``!V"$F)C"0P`@``
+M]D46`70(08"/@`,```(/MD4CB$0D$(!]&`$/AHD!```/ML!)BUS$*$B%VW4P
+MN@$```!(B>Y,B??H$_K__TB)P[K_____2(7`#X02`@``3(EX&$@/MD0D$$F)
+M7,=@]D46`70'@(N``P```@^VDV`"``")T=#I#[9%/8/@`0G(@^`!`<"#XOT)
+MPHB38`(``$@/MT4_2(G"2`N5M0```(![1#]W$@^V2T2X`0```$C3X$C_R$@A
+MPD@)4U`/MI-@`@``@^(!#[9%/<#H`H/@`3G"="4/MI-@`@``@^+^B)-@`@``
+M2(M#"(!X"@!T"XG0@\@"B(-@`@``#[95.XA4)!`/ML*Z_____TB#?,-@``^%
+M3@$``$@/MD0D$$R);,-@28E=&(M#/#N%P0```'04@(M@`@```DC'@V@"````
+M````ZQ1(BTU!2#F+:`(``'8'2(F+:`(``$C'P/[___\/MDPD$$C3P$@A0UA(
+MB=_H`````/:#8`(``!!T$$C'@V@"````````Z8@````/MH-@`@``J"!T?8/(
+M@(B#8`(``$C'@V@"````````ZV=(#[9$)!!-B6S'8$V)?1A(Q\#^____#[9,
+M)!!(T\!)(4=83(G_Z`````!!]H=@`@``$'0-2<>':`(```````#K)D$/MH=@
+M`@``J"!T&H/(@$&(AV`"``!)QX=H`@```````&9FD&:00?:'@`,```%T/DF#
+MOX`"````=#1)BX>``@``2(-X"`!T)DB#>!``=!],.7@(=09,BW@0ZPM)BX>`
+M`@``3(MX"$R)_^@`````N@````!F9I")T$B+G"0H`@``2(NL)#`"``!,BZ0D
+M.`(``$R+K"1``@``3(NT)$@"``!,B[PD4`(``$B!Q%@"``##9F:09F:02(M7
+M&+D`````@'I$`'88D`^VP4@Y?,)@=08/ML'#9I#_P3A*1'?IN/\```!F9F:0
+MPV9F9I!F9F:09F9FD&9FD$%505154TB![`@"``!)B?Q!O0````!(B>5(BT<X
+M]H"``P```0^$P0(``$B+7QA(A=MT#DB#>Q@`=`=)B=U(BUL8N0````"Z``(`
+M`$B)Z&:0B`A(_\!(_\IU]L=%`/06>%JX`````$B%VW0#BT,XB44$N`````!(
+MA=MT`XM#0(F%Q@```$'VA"2``P```G0$@$T6`;@`````2(7;=`E)@_T!&<"#
+MP`*(11A(A=L/A'X!``!(@[N``@```'1$2(N+@`(``(L!B44(2(N!H````$B)
+M10P/MD$H@^`!`<`/ME46@^+]"<*(519(.5D0=0B)T(/(!(A%%@^V@:H```"(
+M110/MD-(B(7%````#[:#@0,``(A%%TB+0RA(B449#[9#$(A%(0^V0T2(12)-
+MA>U,B>=)#T7]Z(?^__^(12,/MD-%B$4D#[:#8`(``(/@`<'@`@^V526#XOL)
+MPHA5)?:#8`(```)T"(G0@\@!B$4E2(M#4$B)A:T```!(BT-09HE%)TB+@V@"
+M``!(B44IBT,\B86]````2(N#<`(``$B)14E(BX-X`@``2(E%48N#B`(``(E%
+M64B+@\P"``!(B86=````2(N#U`(``$B)A:4```!(BX.,`@``2(E%74B+@Y0"
+M``!(B45E2(N#G`(``$B)16U(BX.D`@``2(E%=4B+@ZP"``!(B45]2(N#M`(`
+M`$B)A84```!(BX.\`@``2(F%C0```$B+@\0"``!(B865````387M='])BT4H
+M2(E%,4$/MD40B$4Y00^V142(13I,B>?H:_W__XA%.T$/MD5%B$4\00^VA6`"
+M``"#X`'!X`(/ME4]@^+["<*(53U!]H5@`@```G0(B="#R`&(13U)BT502(F%
+MM0```$F+15!FB44_28N%:`(``$B)14%!BT4\B87!````2(GOZ`````"^``(`
+M`$B)[^@`````]]B(115)BW0D0$F+?"0X0;@`````2(GIN@$```#H`````$B!
+MQ`@"``!;74%<05W#9F9FD&9FD%-(B?OH]_S__TB+>SCV1V00=`7H`````%O#
+M9F:09F:055-(@^P(2(G[@'\0!'8'@*=@`@``^_:#@`,```%T<8![$`1V8KT`
+M````@'M$`'1@2&/U2(-\\V``=$!(BTSS8`^VDX`#``"#X@(/MH&``P``@^#]
+M"="(@8`#``!(BU3S8(!Z$`1V!P^V0TB(0DA(8\5(BWS#8.@`````_\4/MD-$
+M.>A_J^L)2(G?Z%'___^02(/$"%M=PV9FD&9FD&9FD$%455-(B?M(@W\8`'0-
+M9I!(BUL82(-[&`!U]>@`````B4,X3(NC@`(``$V%Y'0Y23E<)`AU"DF+;"00
+MZPAF9I!)BVPD".@`````08D$)$B%[705Z`````")13@[0SAT\TB)[^@`````
+M2(G?Z`````!(BT,(2(-X8`!T!DB)W_]08%M=05S#9F9FD&9FD&9FD$R+1CA-
+MA<!T<4F+0!A(A<!T8$B)P4B#>!@`=%9F9F:02(M)&$@Y^74'N`$```##D+H`
+M````@'E$`'0L#[9Q1)!(8\)(BT3!8$B%P'04@'@0!'8.2#GX=0FX`0```&9F
+MD,/_PCG6?]E(@WD8`&9F9I!UKDV+`$V%P'6/N`````"0PV9F9I!F9F:09F9F
+MD&9FD$%7059!54%455-(@^P(2(G]#[971$B+1P@/MD`**<)(8])(BT<H2(G1
+MN@````!(]_%)B<9)Q\?_____0;T`````2(L'2(M8&$B#P!A(.=AT7TR-HW#\
+M___V0_`!=$*`NX#\__\!=3GV@]3\__\$=#!,B>9(B>_H]?[__X3`=2%,.;.P
+M_/__<AA,.;NP_/__<P],B[NP_/__38GE9F:09I!(BQM(BT4`2(/`&$@YV'6A
+MN`````!-A>UT1O:%80(```)U$KH`````3(GV3(GOZ`````#K*TF+13A(A<!T
+M$6:02(-X&`!U#4B+`$B%P'7Q3(GHZPRX`````&9F9I!F9I!(@\0(6UU!7$%=
+M05Y!7\.005154TB)^TF)]+T`````@']$``^$U0```&9F9I!F9I!(8\5(@WS#
+M8`!T$DB+1,-@]H"``P```0^%HP```$R)YDV%Y'4;2(G?Z*/^__](B<9(A<`/
+MA((```!F9F:09F:02(E>&$ACQ4B#?,-@`'0-2(M$PV!(QT`8`````$ACQ4B)
+M=,-@#[:38`(``(G0@\@*B(-@`@``2,>#:`(```````"H('0+B="#R(J(@V`"
+M``"X`0```(GI2-/@2`E#4$CWT$@A0UA-A>1U"K\'````Z`````"`BV`"```$
+M387D=0[_Q0^V0T0YZ`^/,O____:#8`(```AT"4B)W^@`````D%M=05S#9F9F
+MD&9F9I!F9I!54TB#[`A(B?M(B?7H/_W__[K_____A,!U:P^V4T1(BT,(#[9`
+M"BG"2&/22(M#*$B)T;H`````2/?Q]H-A`@```G4EN@````!(B<9(B>_H````
+M`+K_____2(7`="A(B<9(B=_H`````/:#8`(```1T#TB)W^@`````9F9FD&9F
+MD+H`````B=!(@\0(6UW#9I!(@^PH2(E<)`A(B6PD$$R)9"083(EL)"!(B?T/
+MMD<0@^@%@_@%#X?'`0``B<#_),4`````0;T`````0;P`````@']$`'1,26/$
+M2(M<Q6!(A=MT,X![$`1V+4B)W^@`````]H-@`@``!'0'@(U@`@``!`^V@V`"
+M``"#X`,\`K@!````1`]$Z$'_Q`^V141$.>!_M$6%[0^$5P$``("E8`(``/Y!
+MO`````"`?40`#X1``0``26/$2(M<Q6!(A=MT,8![$`1V*_:#8`(```%T(@^V
+M@V`"``"#X+Z#R`*(@V`"``!(B=_H`````&9F9I!F9I!!_\0/MD5$1#G@?[;I
+M\0```$@/MT=&2/?82"&':`(``/:'@`,```%T%TB+1UA(]]!(A4=0=`J`CV`"
+M```"9F:02(-]6`!U!TB#?5``="&`?1`*=10/MDU$_\FX`0```$C3X$@Y15!T
+M!X"E8`(``/Y(@WU8`'0Z@(UA`@``($B#?5@`="SVA8`#```!="-(@WT8`'0-
+M2(M%&/:`@`,```%T#[X`````2(GOZ`````!FD/:%@`,```%T2?:%80(```1U
+M0/:%8`(```-T-TB#?5``=`U(BT582/?02(5%4'0C2(-]&`!T#4B+11CV@(`#
+M```!=`^`C6`"```(2(GOZ`````!(@WT8`'47]H5@`@``!'0.2(GOZ`````!F
+M9I!F9I!(BUPD"$B+;"003(MD)!A,BVPD($B#Q"C#9F9FD&9FD$B#["!(B5PD
+M"$B);"003(ED)!A(B?M(B?5)B=2`?Q`$#X:*````QP0D`````,=$)`0!````
+MN@````"`?T0`=!</MD]$2&/"2(M\PV!(A?]U2__".=%_[4B+4PB`>@D`="$/
+MMD-$#[92"BG0#Z]$)`2)1"0$#[=#1CL$)`]&!"2)!"1(A>UT!HL$)(E%`$V%
+MY'0XBT0D!$&)!"3K+DB-5"0$2(GFZ`````#KK&9FD&:02(7V=`;'!@````!-
+MA>1FD'0(0<<$)`$```!(BUPD"$B+;"003(MD)!A(@\0@PV:04TB#[!!(B?M(
+MBW\(2(U4)`Q(C70D".@`````2(M[$$B-5"0$2(GFZ`````"+1"0,.T0D!`^7
+M0RB+1"0(.P0D#T($)`^O1"0,9HF#J````&:%P'4)9L>#J````(``2(/$$%O#
+M9F9FD&9FD&9FD&9FD%-(BU\(2(M/$$B%VP^4PDB%R0^4P`G0J`%T)4B%VW0'
+M@*.``P``_DB%R70'@*&``P``_L:'JP````'K5F9F9I#V@X`#```!=`GV@8`#
+M```!=1Z`H8`#``#^@*.``P``_L=#,/_____&AZL````!ZR+&AZL`````@(MA
+M`@``!(")80(```3H`````$B)W^@`````6\-F9F:09F9FD&9F9I!(@^P82(D<
+M)$B);"0(3(ED)!!(B?M(B?4/MD<0.D80=0\/MT9$9CE'1'0/9F:09I"X`0``
+M`.F]````0;P`````@']$``^$J````$ECQ$B+?,-@2(MTQ6!(A?\/E<!(A?8/
+ME<(/ML"%PG1O@'\0!'8F@'X0!'8:Z`````"$P&9FD'1@N`$```#K;F9F9I!F
+M9I"`?Q`$=SR`?A`$=S9(BT8X2#E'.'4E2(M72$B+1DA(BT@(2#E*"'432(M(
+M$$@Y2A!W"?:#8`(```-T%[@!````ZR6X`0```.L>N`$```!FD.L50?_$#[9#
+M1$0YX`^/6/___[@`````2(L<)$B+;"0(3(MD)!!(@\08PV9FD&9FD%532(/L
+M"$B+7QA(C4<82#G8=$5(B<5(C;MP_/__@+N`_/__!'8J]H/0_O__!'0A2(.[
+MB/S__P!T$F9F9I!F9I!(BW\82(-_&`!U]>@`````2(L;2#G==;Y(@\0(6UW#
+MD(L%`````(V0_P\``(/X_P].PL'X#,-F9F:09F:09F:0\\-F9F:09F9FD&9F
+MD&9FD$B+AX@!``!(B4882(FWB`$``,-F9F:09F:09F:09F:02(/L"$B#OY`!
+M````=2B+AW`!```[!G(.2(M^$/]6"+@`````ZRQ(B;>8`0``2(FWD`$``.L2
+M2(N'F`$``$B)<"!(B;>8`0``Z`````"X`0```$B#Q`C#9F:09F:09F:02(/L
+M"$B!QV@!``#H`````$B#Q`C#9F9FD&9F9I!F9I"X`````,-F9F:09F:09F:0
+M2(/L"$B!QV@!``#H`````$B#Q`C#9F9FD&9F9I!F9I!!5%5328G\QX>X`0``
+M`````$B+KY`!``!(A>T/A(\```!!BX0D<`$``#M%`')"23FL))@!``!U&DG'
+MA"28`0```````$G'A"20`0```````.L,2(M%($F)A"20`0``2,=%(`````!(
+MBWT0_U4(ZS"028N<)(@!``!(A=MT%69FD(MU`$B+._]3"$B+6QA(A=MU[D&+
+MA"1P`0``.T4`<D5)BZPDD`$``$B%[0^%<?___T&!O"1P`0``?P$``'<F28N<
+M)(@!``!(A=MT&69FD&:0O@````!(BSO_4PA(BUL82(7;=>Q;74%<PV9F9I!F
+M9I!32(G[@[^X`0```'4W2,>'H`$```````!(B;NH`0``2,>'L`$```````!(
+MC;>@`0``2(U_6.@`````QX.X`0```0```%O#9F9FD&9FD&9FD%532(/L"$B)
+M_4B+GX@!``!(A=MT%+[_____2(L[_U,(2(M;&$B%VW7L2(-]6``/E<`/ML!(
+M@\0(6UW#D)"0D)#V1Q4$=`2`3Q0$]D<5`70$@$\4`?9')01T!(!/)`3V1R4!
+M=`2`3R0!\\-F9I!F9I#V1R8$=`2`3R4$]D<F`70$@$\E`?9'/@1T!(!//03V
+M1SX!=`2`3ST!\\.0D)"0D)!(@^P(@*>``P``_DB#?Q@`=`Y(BT<82(M`"/]0
+M,&9FD$B#Q`C#9F9FD&9F9I!F9I!32(GZ2(M?6`^VAZH```"(@ZH```!(BWL(
+M2(G6Z`````!(BT,(_T@(2(G?Z`````!;PV9F9I!F9F:09F:09F:02(/L"$B+
+M3UBX`````$B#N;@`````=`E(B<__D;@```!(@\0(PV9F9I!F9F:09F:055-(
+M@^P(2(G[2(MO4$B+1PC_0`A(BW\(Z`````!(B<=(BP-(B0=(BT,(2(E'"(M#
+M:(E':`^V@ZD```"(AZD```!(QX?``````````$B)7UA(BT4X2(E'4`^V@Z@`
+M``"(AZ@```"`NZ@`````=3U(BU5(2(N#D````$@#0@A(B8>0````#[>#F```
+M`&:)AY@```!(BX.P````2(F'L````$C'A[@`````````Z`````!(@\0(6UW#
+M9F:09F:09F:02(/L"$C'QP````#H`````+@`````2(/$",.0D)"0D)!32(GS
+M2,?&`````.@`````2(G'N0$```"Z(`$``$B)WN@`````6\-F9I!F9I!F9I!3
+M2,?&`````.@`````2(G#2(G'Z`````!(B4,@6\-FD$B#[`A(Q\8`````Z```
+M``!(B<=(BW`@Z`````!(@\0(PV9F9I!F9F:09F9FD&9FD$%7059!54%455-(
+M@^P(2(GS08G72(M'4$R+:!A,BW=828M&2$B)!"1)BZZP````1`^V9V!(Q\8`
+M````2(L_Z`````!(BU`@2(7M=!5!#[:&J0```(/@`68/ML!F1#GX=2A(B=5)
+M@[ZX`````'041(GZ2(GN3(GW0?^6N````(7`=0>X`````.MV2(L$)`^W2`S!
+MX0D/MG@(3(M%"(MU`)`Y\8GR#T;11#CG=12)$\=#!`````!,B4,(2(/#$&9F
+MD"G6B=!)`<`IT748_\=!.GU$N``````/1/A!#[=%1HG!P>$)A?9UN8-]!`!U
+M!DB#Q1#KI<=#]`$```"X`0```$B#Q`A;74%<05U!7D%?PV:055-(@^P(2(GZ
+M2(M?6$B+:T@/MD]@2,?`_O___TC3P$@A11B`OZH````!=`T/MH>J````B(.J
+M````2(M["$B)UN@`````2(M#"/]("$B#?1@`=1B`NZH`````=0?&@ZH````!
+M2(G?Z`````!(@\0(6UW#9F9FD&9F9I!F9I!F9I!,BTY02(M.2$R+`0^W<1!`
+M.'D(=0M(#[=!#DD!P.L/D$`X>0AV"$D/MT%&20'`0#AY"'4$9@-Q#$`X>0EU
+M!&8#<0J`>2``=`Y`.'D(<RE`.'D)=Q[K(4`X>0AF9I!F9I!S!69!`W%&0#AY
+M"69FD&:0=@5F00-Q1F:)LI@```!,B8*0````PV9F9I!F9I!F9I!328GY2(N^
+MD````$0/MY:8````3(M&2$&[`````$$/MDE%2(G^2-/N9D''0!```$'&0"`!
+M20^V441(B?!(B=&Z`````$CW\4$/MDE%2-/@28D`20^V441(B?!(B=&Z````
+M`$CW\4&(4`B)T4$/MT%&_\@A^&9!B4`.00^W449F*<))QT`8`````&9$.=)R
+M#69%B5`,0;H`````ZU9F08E0#&9!*=)!NP$```"Z`0```$B)T$C3X$D)0!C_
+MP4$X241U(KD`````08!X(`!T!T'&0"``ZP]!#[=`$&9!`T%&9D&)0!!F13E1
+M1G,'9D4K44;KOK@!````2-/@20E`&$&(2`EF18E0"D2)V%O#9F9FD$B#[$A(
+MB5PD&$B);"0@3(ED)"A,B6PD,$R)="0X3(E\)$!)B?Q,BW]02(M'2$B)1"00
+M@+^H````!`^%TP```$C'0!@`````0;X`````08!_1``/AL@!``!$B?(/MMI-
+MBVS?8$V%[0^$E````$'VA8`#```!#X2&````N`$```!$B?%(T^!(BU0D$$@)
+M0AA)BT0D"/]`"$F+?"0(Z`````!(B<5)BP0D2(E%`$F+1"0(2(E%"$&+1"1H
+MB45H3(EM4,:%J`````1!#[:4)*D```"#XC`/MH6I````@^#/"="(A:D```!(
+MQX7``````````$R)95A(B5U@2(GOZ`````!!_\9%.'=$#X=+____Z0X!``!(
+MB?Y,B?_HT_W__XE$)`Q(BTPD$$B#>1@`=19!QH0DJ@````),B>?H`````.G=
+M````0;X`````08!_1``/ALP```!!#[;&B40D"+@!````#[9,)`A(T^!(BU0D
+M$$B%0A@/A)@```!$B?$/MME-BVS?8$F+1"0(_T`(28M\)`CH`````$B)Q4F+
+M!"1(B44`28M$)`A(B44(08M$)&B)16A,B6U000^VA"2I````B(6I````2,>%
+MP`````````!(QX6X`````````$R)95A(B5U@2(GJ3(GFBWPD".AO_/__@WPD
+M#`!U#TF+A"2P````2(F%L````$B)[^@`````D$'_QD4X=T0/AS?___]F9I!(
+MBUPD&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\)$!(@\1(PV9F9I!F9I!F9I!F
+M9I!(@^P(2,?'`````.@`````N`````!(@\0(PY"0D)"0D$B#[`A,BT=828N(
+ML````$B%R70200^V@*D```"#X`$/ML`YT'4J28.XN`````!T$TR)QT'_D+@`
+M``"Z`0```(7`=3&Z`````.LJ9F:09F:02(L!2(D&2(M!"$B)1@A(@\802(U!
+M!$B#P1"#.`!TX;H!````B=!(@\0(PV9FD&:02(/L"+D`````O@````"`?T0`
+M=#!!N`$````/ME=$9I")R$B+1,=@2(7`=`GV@(`#```!=0E,B<!(T^!("<;_
+MP3G*=]Q(.7=8=`E(B7=8Z`````!(@\0(PV9F9I!F9F:055-(@^P(2(G[2(MO
+M6`^WCY@```!(BY>0````@+^J`````4`/E,9`#[;V2(M_4.@`````@+VH````
+M`'4)QH6J`````>L-#[:#J@```(B%J@```$B+?0A(B=[H`````$B+10C_2`A(
+MB>_H`````$B#Q`A;7<-F9F:09F9FD&9F9I!(@^P82(D<)$B);"0(3(ED)!!(
+MB?U(BU]82(M[4$R+8TB`O:@````$=2:`O:H````!#X2.`0``#[:%J@```(B#
+MJ@```.E\`0``9F9FD&9FD("]J@````$/A-L```#V@ZD````"='N`NZL`````
+M#X5%`0``2(-_4``/A3H!``!(@W]8``^%+P$``,:#JP````%(@WU@``^4P`^V
+MR$B)36!(BT3/8$B%P'0D2(E%4+@!````2-/@28D$),:%J@````!(B>_H````
+M`.D\`0``2(-]8``/E,`/ML!(B45@Z=<```#V@ZD````$#X3*````@+VJ````
+M`G04QH6J`````$B)[^@`````Z?X```#H$/[__X"[J@````$/A*@````/MDU@
+MN`$```!(T^!).00D#X2%````Z8T```"`NZL`````='</MI6I````]L("=&M(
+M@WU@``^4P`^VR$B)36!(BT3/8$B%P'1#]H"``P```70Z2(E%4(G0@^#]@\@$
+MB(6I````N`$```!(T^!)B00D2,>%P`````````#&A:H`````2(GOZ`````#K
+M8$B#?6``#Y3`#[;`2(E%8`^VA:H```"(@ZH````/MDU@2,?`_O___TC3P$DA
+M!"1(BWL(2(GNZ`````!(BT,(_T@(28,\)`!U&("[J@````!U!\:#J@````%(
+MB=_H`````$B+'"1(BVPD"$R+9"002(/$&,-F9F:02(/L.$B)7"0(2(EL)!!,
+MB60D&$R);"0@3(ET)"A,B7PD,$F)_4R+9U!,BW](2<='"`````"`OZ@````!
+M=0KHW0<``.DD`P``@+^H````!)`/A;\```!)QP<`````O0````!!@'PD1``/
+MAOX"``!FD(GH1`^V\$N+7/1@2(7;#X1_````]H.``P```71VN`$```")Z4C3
+MX$D)!TF+10C_0`A)BWT(Z`````!(B<=)BT4`2(D'28M%"$B)1PA!BT5HB4=H
+M2(E?4,:'J`````1!#[:5J0```(/B,`^VAZD```"#X,\)T(B'J0```$C'A\``
+M````````3(EO6$R)=V#H`````/_%03AL)$0/AV#____I5P(``$F#?"18`&9F
+MD&:0#X7>````28-\)%``9F9FD`^%S@```/:'J0````(/A,$```!)BT0D8/:`
+M@`,```$/A*\```!)BU0D:/:"@`,```$/A)T```!(B<%(B=:`>!`$=01(BT@X
+M@'X0!'4$2(MV.(!Y$`%U:8!^$`%U8TF+A9````!(B<)(*U%82"M&6(NYA`,`
+M`(NVA`,``$B)T4C!^3](,<I(*<I(B<%(P?D_2#'(2"G(2#G"?1&%]D$/E,"#
+M_P4/E\!!(<#K<H7_00^5P(/^!0^6P$$)P.MA9F9FD$F+5"0@@SH`00^4P$$/
+MML")`NM)0;@`````08!\)$0`=CN^`0```$F+1"102(G"20M4)%B)\$2)P=/@
+M2)A(A<)U$0^VP4F+1,1@]H"``P```74*0?_`13A$)$1WUTG'!P````"]````
+M`+X!````B>H/ML))BUS$8$B%VW0K]H.``P```70B00^VE:D```#`Z@)!..@/
+ME,`)T*@!=`M(B?")Z4C3X$D)!__%0(#]`7:^28,_`W4*2<='"`````!FD+T`
+M````B>A$#[;P2XM<]&!(A=L/A)<```#V@X`#```!#X2*````28L'B>E(T^BH
+M`71^28M%"/]`"$F+?0CH`````$B)QTF+10!(B0=)BT4(2(E'"$&+16B)1VA(
+MB5]000^VA:D```"(AZD```!(QX?``````````$C'A[@`````````3(EO6$R)
+M=V!)BX60````2(F'D````$$/MX68````9HF'F````.@`````9F:0_\5`@/T!
+M#X9)____2(M<)`A(BVPD$$R+9"083(ML)"!,BW0D*$R+?"0P2(/$.,.02(/L
+M"$C'QP````#H`````+@`````2(/$",-F9I!F9I!(BT=83(N(H````$V+`0^W
+MCY@```#!X0ET/&9FD&9FD(72=`Q)BP!(B48(ZPMF9I!)BT`(2(E&"$&+00@Y
+MR`]'P8D&QT8$`````$B#QA!)@\`0*<%URL=&]`$```"X`0```,-F9F:09F:0
+M9F:09F:02(/L&$B)'"1(B6PD"$R)9"002(GZ2(M?6$R+8U!(BVM(#[9/8$C'
+MP/[___](T\!((44`@+^J`````70-#[:'J@```(B#J@```$B+>PA(B=;H````
+M`$B+0PC_2`A(@WT``'4O@+NJ`````'4>QH.J`````4@/MX.8````2`.#D```
+M`$F)A"1H`@``2(G?Z`````!(BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9F9I!F
+M9I!32(GZ2(M?6$B+<U"`OZH````!=`\/MH>J````B(.J````ZVT/MH>I````
+MJ`)T.8/@_8/(!(B'J0```,:'JP````#&AZH`````2(-_8``/E,`/ML!(B4=@
+M2(M$QF!(B4=0Z`````#K1,:#J@````%(BXYH`@``2#N+D````'422`^W@Y@`
+M``!(`<A(B89H`@``2(M["$B)UN@`````2(M#"/]("$B)W^@`````6\-FD$B+
+M1UA,BXB@````38L!#[>/F````,'A"4B#?V``=`]!BT$,T>B)P$C!X`1)`<"%
+MR70TA=)T"DF+`$B)1@CK"9!)BT`(2(E&"$&+00@YR`]'P8D&QT8$`````$B#
+MQA!)@\`0*<%US,=&]`$```"X`0```,-F9F:09F:09F:09F:005154TB)_DB+
+M;UA,BV502(M=2`^V3V!(Q\#^____2-/`2"$#2(M78`^VAZH```"(1!H02(M]
+M".@`````2(M%"/]("$B#.P`/A<L!``"`>Q`!=`T/MD,0B(6J````ZQ&0@'L1
+M`70*#[9#$8B%J@```("]J@```!`/A>4```"`>Q`!=`J`>Q$!#X75````2(M%
+M"/]`"$B+?0CH`````$B)QDB+10!(B09(BT4(2(E&"(M%:(E&:$B+A9````!(
+MB8:0````#[>%F````&:)AI@```"`CJD````$2(EN6(![$`$/E<`/ML!(B49@
+M2,>&P`````````!(QX:X`````````$B#^`%(&<"#X`A*BT0@8$B)1E!(B??H
+M`````.GX````QH6J````#$$/MH0D8`(``(G"@\H*08B4)&`"``!(BY60````
+M28F4)&@"``!)QT0D4`(```"#R`Y!B(0D8`(``.M[@+VJ``````^%H0```$0/
+MMXV8````3(N=H````+L`````QH6J`````4'!X0ET3?Q%BT,(13G(10]'P4AC
+MRTF+,TC!X01!BT,,T>@!V$C!X`1$B<),BQ0Q2(L\,$B)T4@YTDR)UO.F#Y?"
+M#Y+`.,(/A4K_____PT4IP76T@+VJ`````74J28N4)&@"``!(.Y60````=1E(
+M#[>%F````$@!T$F)A"1H`@``9F:09F:02(GOZ`````!;74%<PV9FD$%455-(
+MB?M,BV=03(M'2$B+MZ````!)@WPD6``/A14"```/MH>:````@_@"#X1L`0``
+M@_@"?PZ#^`$/A-<```#I\@$``(/X`P^%Z0$``+T`````@WX,`'8NOP````!F
+MD(GH2(L62,'@!(M."$B+!!!(A<ET"T"(.$C_P$C_R77U_\4Y;@QWV4G'``,`
+M``"]`````$B+0PC_0`A(BWL(Z`````!(B<=(BP-(B0=(BT,(2(E'"(M#:(E'
+M:$B+@Y````!(B8>0````#[>#F````&:)AY@```"`CZD````$2(E?6(GH2(E'
+M8$C'A\``````````2,>'N`````````!)BT3$8$B)1U#H`````/_%@_T!=H'I
+M+P$``$B+1PC_0`A(BW\(Z`````!(B<=(BP-(B0=(BT,(2(E'"(M#:(E':$B+
+M@Y````!(B8>0````#[>#F````&:)AY@```"`CZD````"2(E?6$C'A\``````
+M````2,>'N`````````!)@WPD4`$/E,`/ML!(B4=@28M$Q&!(B4=0Z`````#I
+MJ````$F#?"10``^%C0```$G'``,```"]`````$B+0PC_0`A(BWL(Z`````!(
+MB<=(BP-(B0=(BT,(2(E'"(M#:(E':$B+@Y````!(B8>0````#[>#F````&:)
+MAY@```"`CZD````"2(E?6(GH2(E'8$C'A\``````````2,>'N`````````!)
+MBT3$8$B)1U#H`````/_%@_T!=H'K#\:#J@````9(B=_H`````%M=05S#D)"0
+MD)!!N`````#!Z0-!B<F#^0!V'4B+!D@S`DB#P@A(@\8(2(D'2(/'"$'_P$4Y
+MP7?C\\-(B?&^`````,'J`T&)T(/Z`'8;2(GZ2(/'"$B+`D@S`4B#P0A(B0+_
+MQD$Y\'?E\\-!54%455-(@^P(28G]B?5(C7](Z`````!)B<2)*/_-@_W_=!^)
+MZTF-M-R(````28M]`.@`````28E$W`C_S8/]_W7A3(G@2(/$"%M=05Q!7<-F
+M9F:09F9FD&9F9I!F9I!!5%5328G\2(GUBQ[_RX/[_W0?B=A(BY3%B````$B+
+M=,4(28L\).@`````_\N#^_]UX4F-?"1(2(GNZ`````!;74%<PV9F9I!F9F:0
+M9F9FD(LW_\Z#_O]T*+D`````B?"Z`!```$B+1,<(9F:09F:0B`A(_\!(_\IU
+M]O_.@_[_==W#9F9FD&9F9I!F9I!F9I!$BP]!_\E!@_G_=%Z%]G1:1(G(2(M4
+MQPA!N``0``!!.?!$#T?&N0````!$B<#!Z`.#^`!V)42)P,'H`V9FD&:02(,Z
+M`'0*N`````##9F9FD/_!2(/""#G(=^9$*<9!_\E!@_G_=`2%]G6FN`$```"0
+MPV9F9I!F9F:09F9FD&9FD`^W]L'F"4&)T4'!X0F)\"7_#P``P>X,0;L`$```
+M9F:018G802G`13G(10]'P4ACUHG`0;H`````1(G!2`-$UPA(A<ET"T2($$C_
+MP$C_R77U13G(=`S_QD4IP;@`````Z[_SPV9F9I!F9I!F9I!F9I!328GQ2(GY
+M0;H`````0;@`````9H-_&"&X_____T0/0]!F@W\8040/0\"[`````(!_&@!V
+M1#A9&W0X#[;#2,'@!$@!R$B-D!`'``"#N!`'``#_=1)$.5($=0Q$.4((=09$
+M.4(,=`RX`````&9FD&:0ZPS_PSA9&G>\N`$```"%P'1,28M1"$PYRG1#2(V/
+M$`L``$B+!T@Y@O#T__]U)TB+1Q!(.8(`]?__<Q=(BP)(B4@(2(F'$`L``$B)
+M40A(B0KK*4B)UDB+4@A,.<IUQ$B-AQ`+``!(BU8(2(E&"$B)MQ`+``!(B5`(
+M2(D"6\-F9I`/MI=1"P``#[;"2(T$0$C!X`5(C80X6`L``/_"B)=1"P``2(DX
+MQD`)`,9`"@#&0`L`PV9F9I!F9F:09F:09F:005154TF)_$B)\[T`````ZQ)(
+M8\5(BW3#($R)Y^@O_?___\4/ME,:@'L:!'83C4+]T?B-!`(YZ'_8ZPQF9I!F
+MD(U"`3GH?\K'0P@`````28U\)&A(B=[H`````%M=05S#05=!5D%505154TB#
+M[!A(B7PD$$&)]4F)UD&)S$&)]XG+2(/':.@`````2(G%2(V`$`L``$B)A1`+
+M``!(B848"P``2(M4)!!(BP)(B85("P``3(EU$&9$B6481(AM&L:%5*````!(
+MQX5`GP```````$C'A4B?````````QD4=`&;!ZP-$#[?K187MN`$```!$#T3H
+MQX58H````````$&\`````$6$_W1:O@````!!#[;_26/$2,'@!+H0````2(V$
+M*!`#``!`B#!(_\!(_\IU]4ECQ$C!X`2Y`````+H0````2(V$*!`'``!F9F:0
+M9F:0B`A(_\!(_\IU]D'_Q$0YYW^O0;P`````00^VUXU"_='XC00"B40D#$2-
+M<@'K(6:026/<1(GN2(M\)!#H8/O__TB)1-T@1`&M6*```$'_Q$&`_P1V"40Y
+M9"0,?]3K!44YYG_-2(GH2(/$&%M=05Q!74%>05_#9F9FD&9F9I!F9I!!5%53
+M2(GS2(G5B<Y(BU,@#[9+18GHT^@E_P$``$B+$DR-),)-BP0D387`#X2?````
+M23EH$`^%A0```$&`N%2@```!=2Y!QH!4H````$F-@!`+``!(BT@(28N0$`L`
+M`$B)2@A(B1%)B8`0"P``2(E`".L\08"X5*````-U,D'&@%2@````_X\L`0``
+M28V`$`L``$B+2`A)BY`0"P``2(E*"$B)$4F)@!`+``!(B4`(0?Z`5:```$R)
+MP.GM````9I!-BX`H"P``387`#X5A____#[?.#[9S1$B)ZNBQ_?__28G`2(D8
+M2,>`@*````````"+0SA!B4`(2(-[&`!T-4'&0!P`2(M#&$B)P8!X1`!T*$D/
+MOD`<2#E<P6!T'$'^0!Q!#[Y0'$B+2Q@/MD%$.<)\W^L%0<9`'/])BP0D28F`
+M*`L``$B%P'0228L4)$F-@"@+``!(B8(@"P``38F@(`L``$V)!"0/MD-$08A`
+M&HUP_T&(<!N`>Q`(=28/MDM%2(GH2-/H2`^V4T1(B=&Z`````$CW\8GP*-!!
+MB$`;9F9FD$'&@%6@```!3(G`6UU!7,-!5T%6055!5%532(/L>$B)?"1H2(ET
+M)&!(B50D6$B+1DA(B40D4`^VEJD```")T-#H@_`!B<&#X0&)3"1,2,=$)$``
+M````2(.^L`````!T!?;"`70N2(M\)&A(@<>H````Z`````!(B40D0$F)Q[H!
+M````2(G&2(M\)&#_E[@```#K#$B+1"1@3(NXL````$6++T&^`````,9$)#X`
+M2(M4)%"`NNX`````#X9)`0``2`^V5"0^2(M,)%!(#[:$4?````!(P>`%2(M$
+M"$A(B40D,`^VE%'Q````B%0D/P^VPDB+3"0P#[>4@5"?```/MX2!4I\``&:)
+M1"0@B=!FP>@##[?`B40D#(/B!P^WPHG&P>8)N`@```!F*=!FB40D$(M$)"!F
+M.40D$(M4)!`/1L)FB40D$`^WP(G%P>4)2`^V1"0_2(M4)#!(BTS"((M4)`R)
+M\$F)Q$P#9-$(9F:09F:013GN=0U)@\<018LO0;X`````1(GK1"GS.>L/1]U)
+MBT<(@WPD3`!T&(G:1(GV2`'&3(GGZ`````#K%F9FD&9FD$2)]XG:2`''3(GF
+MZ`````!!`=XIW70'B=A)`<3KHHM,)!!F*4PD('05_T0D#+X`````9L=$)!`(
+M`.E!_____D0D/@^V1"0^2(M4)%`X@NX````/A[?^__](@WPD0`!T%DB+?"1H
+M2(''J````$B+="1`Z`````"Z`````$B+="1@2(M,)&A(BSG_5"182(/$>%M=
+M05Q!74%>05_#9F:09I!(@^P82(D<)$B);"0(3(ED)!!(B?I(BV]82(M=2("_
+MJ@````%T#0^VAZH```"(A:H```!(BWT(2(G6Z`````!(BT4(_T@(#[:#[0``
+M`/_`B(/M````.H/L````=4.`O:H`````=0?&A:H````!1`^VI:H```!(A>UT
+M)F9FD&9FD$B+14A(BU@H1(BEJ@```$B)[^@`````2(G=2(7;=>&02(L<)$B+
+M;"0(3(MD)!!(@\08PV9F9I!F9I!F9I!F9I!!5D%505154TF)_$B+1R!(BV@0
+M2,=`$`````!,BW5(0<:&[0````!!QH;L`````$&]`````(!_1``/A),```"0
+M1(GH28M<Q&!(A=MT<_:#@`,```%T:DB+10C_0`A(BWT(Z`````!(B<=(BT4`
+M2(D'2(M%"$B)1PB+16B)1VA(B5]0QH>H````!`^VE:D```"#XC`/MH>I````
+M@^#/"="(AZD```!(QX?``````````$B);UA!_H;L````Z`````!!_\5!#[9$
+M)$1$.>@/AV[___];74%<05U!7L-F9I!FD$B#[!A(B1PD2(EL)`A,B60D$$F)
+M_$B)\TB#ODB?````=&!(B?6_`````'0_2(N#2)\``$B+0$A(BT@H2#F+2)\`
+M`'4-2,>#2)\```````#K%TB+A4B?``!(BU!(2(M!2$B+0"A(B4(H2(G/Z$!M
+M``"%P`^$*`$``$B#NTB?````=:J`NU6@````#X41`0``2(.[@*````!T"TC'
+M@X"@````````2(G?N0````"`>QH`=D$/ML%(P>`$2`'X2(V0$`,``+X`````
+M@[@0`P```'42@WH$`'4,@WH(`'4&@WH,`'0%O@$```"%]G5#_\$X3QIWO[@`
+M````A<!T.L:#5*````-(BY,8"P``2(N#$`L``$B)4`A(B0))C70D&$B)W^A+
+M]O__0?^$)"P!``#K0K@!````Z\+&@U2@```!2(V3$`L``$B+2@A(BX,0"P``
+M2(E("$B)`4F-1"0(2(M("$B)4`A(B8,0"P``2(E*"$B)$4B+.TB+1R!(@W@0
+M`'0AZ+Q2``"%P'0-2(LS3(GGZ"U*``#K"TB+.^B#_?__9F:02(L<)$B+;"0(
+M3(MD)!!(@\08PV9F9I!F9I!F9I!F9I!(@^P(QH94H````$B-AA`+``!(BT@(
+M2(N6$`L``$B)2@A(B1%(B880"P``2(E`"$C'AD"?````````_HY5H```Z/O]
+M__](@\0(PV9FD&9FD$%505154TB#[`A)B?6)TTC'Q@````#H`````$F)Q$F+
+M;4B%VW0(0<:%J@````N[`````("]Z@````!T)69F9I!(8\-(P>`%2(MT*$A,
+MB>?H7/_____##[:%Z@```#G8?]],B>_H-U,``$B#Q`A;74%<05W#9F9FD&9F
+M9I!F9F:02(/L",9''0!(QX=@H````````$B)OVB@``!(QX=PH````````$B-
+MMV"@``!(B[]("P``Z`````!(@\0(PV9FD$%7059!54%455-(@^P(2(G[3(NW
+M2`L``$C'Q@````!,B??H`````$F)QTB+*TB+12!,BZ-`GP``_T@(@W@(`'4'
+M@*6``P``WTB#NWB@````=!:`NU*@```!=0U(B=_H[1@``.G0`P``387D#X1:
+M`P``38ML)$B`NU,+````=&2`NU*@```!=3U(B=^^`````(![&@!V0+D`````
+MB?(/ML)(P>`$NA````!(C80X$`,``(@(2/_`2/_*=?;_QD`X=QIWV.L1@+M2
+MH````G4(2(GOZ*IN``!(B=_H<A@``.E5`P``@+M2H```$'5+08"\)*@`````
+M=!I!@+PDJ`````$/A8\!``!!@+PDF@````)U)D$/MI0DJP```(U"`4&(A"2K
+M````@/H"=PU(B=_H'A@``.D!`P``08"\)*@````!#X5/`0``2`^W0QA(`T,0
+M2(D$)$&`O"2:`````G5L@+M2H````75L#[=S&,'F"4@/MD,;2(M\PR#H,_+_
+M_X7`=4G&@U*@```,@(U@`@```H!]$`IU$@^V343_R;@!````2-/@2`E%4("-
+M8`(```@/MT5&]]A(F$@C0Q!(.85H`@``=@=(B85H`@``@+M2H````70G#[:#
+M4J```$&(A"2J````2(G>3(G_Z`/]__],B>?HZU```.D^`@``2(M#$$@YA6@"
+M``!U"TB+%"1(B95H`@``2(G>3(G_Z-/\__](#[=%1DF+E"20````2/_"2`^O
+MPD@[!"1V34G'14@`````2(L$)$F)15!,B>E,B>)(B>Y,B?_HN&0``(7`#X38
+M`0``2<=%"`````!-B6402<=%&`````!,B>Y,B??H`````.FT`0``3(GGZ%10
+M``!F9F:0Z:,!``!!#[:%ZP```/_`08B%ZP```$$ZA>H````/A84!``!!]H0D
+MJ0````0/A)4```"]`````$&`O>H`````=GF)Z@^VPDC!X`5*BUPH2("[4J``
+M``%U/4B)W[X`````@'L:`'8^N0````")\@^VPDC!X`2Z$````$B-A#@0`P``
+MB`A(_\!(_\IU]O_&0#AW&G?8ZP\/MH-2H```08B$)*H```!(B=Y,B?_HL?O_
+M___%03BMZ@```'>'3(GGZ(Y/``#IX0```+T`````08"]Z@````!V,8GJ#[;"
+M2,'@!4J+7"A(@+M2H````70/#[:#4J```$&(A"2J````_\5!.*WJ````=\]!
+M@+PDJ@````!U%TC'P@````!,B>9,B?_HG/7__^E_````N@````!,B>9,B??H
+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
+M54%455-(@>PH!0``2(E\)!A)B?=(BRY(BUX02(VT)"`$``!(B=_H8/K__XE$
+M)`A(#[9#&$B+1,4@2(E$)!"[`````$&`?U@`=B%!#[9/6`^VPTH/ME0X&$B+
+M5-4@2(F4Q"`"``#_PSC9=^3'1"0,`````(M$)`@Y1"0,#XT,`0``2&-$)`P/
+MMI2$(00``$&)T4'!X0D/MI2$(@0``$&)TD'!X@D/MHR$(`0``+L`````08!_
+M6`!V,T0/ML%$B<]!#[9W6&9F9I!F9I`/ML-(BY3$(`(``$J+;,((2(T4+TB)
+M5,0@_\-`.-YWX`^VT42)R$F)Q4B+3"003`-LT0A,C60D($$/MF]818G6@_T!
+M=1)$B=)(BW0D($R)[^@`````ZUE-.2PD=1-)BW0D"$2)TDR)[^B#W___ZQ60
+M28M4)`A$B=%)BS0D3(GOZ#S?__^#_0)V)[L"````.>MS'HG828LTQ$2)\DR)
+M[^A-W____\,YZW+I9F9FD&9FD/]$)`R+;"0(.6PD#`^,]/[__[H`````3(G^
+M2(M\)!CH'````$B!Q"@%``!;74%<05U!7D%?PV9F9I!F9I!F9I!(@^P82(D<
+M)$B);"0(3(ED)!!)B?Q(B?.)U<9&"0*#^@$9P(/@]8/`#(A&"NB/\/__@'L(
+M`W4O2(M#$$B+<!!(A?9T(DC'0!``````QD8)`H/]`1G`@^#U@\`,B$8*3(GG
+MZ%KP__](BQPD2(ML)`A,BV0D$$B#Q!C#9F9FD&9FD$B#[!A(B5PD"$R)9"00
+M2(G[28GT2(NW.`$``$B)][H`````Z`````"Z`````$R)YDB+.^A(____2(M<
+M)`A,BV0D$$B#Q!C#9F:09F:09F:0#[96"X72=$V)T$@/MH1'&)D``$B-!$!(
+MP>`%2(V$.%@+``"`>`D"=`>X`````,.0@'@*`701QD8)`@^V0`J(1@JX````
+M`,.)T`^VE$<9F0``A=)UL[@!````PV9FD&:005=!5D%505154TB#[`A(B?W&
+MAU(+````@+]3H`````^$D@```$&\`````$B-G5@+``"`O5$+````=%EF9I!F
+MD(!["0%U.X!["`-U*4B+0Q"`>!D`=!](@W@0`'082,=`$`````#&0PD"#[:%
+M4J```(A#"NL,QH52"P```>GS`P``0?_$2(/#8`^VA5$+``!$.>!_K$B)[^AD
+MZO__Z=,#```/MD,*B(52H```QH53H````>EN____QT0D!`````#'!"0!````
+M0;P`````2(V=6`L``("]40L````/A&L#``"`>PD`#X66`0``2(G>2(GOZ*O^
+M__^%P`^$<P$``,9#"0%)B=U,B[U("P``2,?&`````$R)_^@`````2(G"#[9#
+M"(/X"`^'1@$``(G`_R3%`````$B)WDB)U^C2]/__9I#I*P$``$B)WDR)_^C@
+M]___Z1L!``!(B=Y,B?_H8/K__^D+`0``2(G>3(G_Z*#[___I^P```,9%'0%(
+M#[95&TC!X@1(`>I(C8H0`P``2(US$(N"$`,```M#$(F"$`,``(M!!`M&!(E!
+M!(M!"`M&"(E!"(M!#`M&#(E!#$@/MD4;2,'@!$@!Z$B-B!`'``"+D!`'```+
+M4Q")D!`'``"+000+1@2)002+00@+1@B)00B+00P+1@R)00Q(@[V`H````'4+
+M2,>%@*````````!!QD4)`D'&10H!3(GN3(G_Z&_M___K34B)WDB)U^@B_?__
+M9I#K/D@/MD4;2,'@!+D`````NA````!(C80H$`<``(@(2/_`2/_*=?9!QD4)
+M`D'&10H!3(GN3(G_Z"3M__]F9F:0@'L)`G40_T0D!&9FD&9FD(!["0)T#,<$
+M)`````#IH@$``(!["@$/A)@!``"`?1T`#X3[_?__2(M%`$@/ME,02(M$T&#V
+M@(`#```!#X1O`0``QP0D`````,9#"0'&0PH`28G>3(N]2`L``$C'Q@````!,
+MB?_H`````$B)P@^V0PB#^`@/ASL!``")P/\DQ0````!(B=Y(B=?H`_/__^DB
+M`0``2(G>3(G_Z!/V__]F9I#I#P$``$B)WDR)_^B0^/__Z?\```!(B=Y,B?_H
+MT/G__^GO````QD4=`4@/MG4;2(GP2,'@!$B-M"@0`P``2(U+$(L&"T,0B0:+
+M1@0+002)1@2+1@@+00B)1@B+1@P+00R)1@Q(#[9U&TB)\$C!X`1(C;0H$`<`
+M`(L&"T,0B0:+1@0+002)1@2+1@@+00B)1@B+1@P+00R)1@Q(@[V`H````'4+
+M2,>%@*````````!!QD8)`D'&1@H!3(GV3(G_Z*WK___K3TB)WDB)U^A@^___
+MZT)(#[9%&TC!X`2Y`````+H0````2(V$*!`'``"("$C_P$C_RG7V0<9&"0)!
+MQD8*`4R)]DR)_^ADZ___ZP9FD,9#"@%!_\1(@\-@#[:%40L``$0YX`^/E?S_
+M_X-\)`0`#X5A_/__@SPD`'01QH52H````4B)[^B5YO__ZP?&A5(+```!2(/$
+M"%M=05Q!74%>05_#9F9FD&9FD&9FD&9FD$%7059!54%455-(@^QX28G^2(L?
+M3(NG0)\``$B+OT@+``!(Q\8`````Z`````!,BUL@3(VH\`,``$@%\`<``$B)
+M1"1(QD0D)@!!N`````!!_T,(@(N``P``($B+4UA)BT802#F#:`(``'<=2(-[
+M4`!T!D@+4U#K$/:#8`(```*X`0```$0/1<!(A=)T-;T`````]L(!=1B^`0``
+M`&9F9I#_Q4B)\(GI2-/@2(7"=/%!B*Y0"P``ZQ*X`0```.F@````0<:&4`L`
+M`$!!QH91"P```$'&AAB9````0<:&4J````!!QH93H````$G'AGB@````````
+M0<:&4PL```!!@'X=``^$#P$``$R)][D`````08!^&@!V1@^VP4C!X`1(`?A(
+MC9`0`P``O@````"#N!`#````=1*#>@0`=0R#>@@`=0:#>@P`=`6^`0```(7V
+MD`^%8O_____!.$\:=[JX`````(7`#X2F!@``0;\`````08!^&@`/A@<N``!F
+M9I!FD$2)^P^VPTC!X`1,`?!(BY`0`P``2(E4)&!(BX`8`P``2(E$)&A%.+Y0
+M"P``=%*X`````(-\)&``=1:#?"1D`'4/@WPD:`!U"(-\)&P`=`:0N`$```"%
+MP'0G3(GWZ%_:___&0`@"1(AX$$2(>!%(BU0D8$B)4!1(BU0D:$B)4!R00?_'
+M13A^&@^'<____^EP+0``2(G0ZUA!@+Y0"P``0)`/A0H$``!)BW8000^W?AA(
+MBTL@2(M1&$B-01A(.=!T*HGX2(T\,$B#P1AF9I!F9I"+0AA(`T(02#GP=@9(
+M.WH0=[!(BQ)(.=%UYK@`````28F&>*```$B%P`^$L0,``+D`````NA````!(
+MC40D8&:0B`A(_\!(_\IU]DR-5"1@28N&>*```(M0$$$K5A"+>!B[`````$&Y
+M(````$&[`0```(/Z'W<_#[;#28TT@D2)R2G1.?D/1\^#^2!U",<&_____^L-
+M1(G8T^#_R(G1T^`)!D2)R"G0.?AS%8U\%^"Z`````.L#@^H@_\.`^P-VLD4/
+MMF8;18BF&)\``$'&AAF?````2(M$)&!)B88`GP``2(M$)&A)B88(GP``2<>&
+M$)\```````!)C9X`GP``3(GWZ.O8___&0`@#2(E8$$2(8!A(B40D,$&_````
+M`$&`?AH`#X8U`@``2;RKJJJJJJJJJDB)7"0800^VUTF+AGB@```[4!P/A`4"
+M``!$B?@/MOA(P><$2HT$-TB-L!`'``!(C8@0`P``BY`0`P``]](CD!`'``")
+M5"10BT$$]]`C1@2)1"14BT$(]]`C1@B)1"18BT$,]]`C1@R)1"1<2(M<)$A(
+MC0P?]](C5"1@B1&+1"14]]`C1"1DB4$$BT0D6/?0(T0D:(E!"(M$)%SWT"-$
+M)&R)00RX`````(,Y`'44@WD$`'4.@WD(`'4(@WD,`&:0=`6X`0```(7`#X3E
+M````00^V7AI$B?@/MNA(B>A(P>`$2(M4)$A(C2P03(GWZ,[7___&0`@!1(AX
+M$(A8$4B+50!(B5`42(M5"$B)4!Q)B<5(BQ#^@AB9```/MK(8F0``B?%(BT0D
+M,$@IT$@M6`L``$C!^`5)#Z_$B(1*&)D``$$/MD4+B(1*&9D``$&(=0M!#[9>
+M&DR)]^ADU___QD`(`TB+3"082(E($(A8&$B)1"1`2(L0_H(8F0``#[:R&)D`
+M`(GQ3(GH2"G02"U8"P``2,'X!4D/K\2(A$H8F0``2(M<)$`/MD,+B(1*&9D`
+M`$"(<POK84R)]^@$U___QD`(`TB+="082(EP$$2(>!A(B40D0$B+$/Z"&)D`
+M``^VLAB9``")\4B+1"0P2"G02"U8"P``2,'X!4D/K\2(A$H8F0``2(M\)$`/
+MMD<+B(1*&9D``$"(=PM(BT0D0$B)1"0P0?_'13A^&@^'VOW__TF+AGB@``"+
+M6!Q%#[9F&TR)]^A]UO__QD`(`HA8$$2(8!%(BU0D8$B)4!1(BU0D:$B)4!Q(
+MB<5(BPC^@1B9```/MKD8F0``B?Y(BT0D,$@IR$@M6`L``$C!^`5(NJNJJJJJ
+MJJJJ2`^OPHB$<1B9```/MD4+B(1Q&9D``$"(?0OI4BD``$V%Y`^$)Q4``$&`
+MO"2H`````0^%RP@``$$/MH0DF@```(/X`@^$X`0``(/X`G\.@_@!#X0]`0``
+MZ14I``"#^`,/A0PI``"Y`````+H0````2(U$)&"("$C_P$C_RG7V3(U4)&"_
+M`````$$/MW88NP````!!N2````!!NP$```"#_Q]W/P^VPTF-%()$B<DI^3GQ
+M#T?.@_D@=0C'`O_____K#42)V-/@_\B)^=/@"0)$B<@I^#GP<Q6-=#[@OP``
+M``#K`X/O(/_#@/L#=K))BWX@Z!K3__]!OP````!!@'X:``^&:R@``+L`````
+M1(GZ#[;"2,'@!+H0````2HV$,!`#``"(&$C_P$C_RG7V1(GY#[;!2,'@!+D`
+M````NA````!*C80P$`<``&9F9I!F9I"("$C_P$C_RG7V3(GWZ,[4___&0`@"
+M1(AX$,9`$0!(BU0D8$B)4!1(BU0D:$B)4!Q!_\=%.'X:=X/IY"<``+@!````
+MZU5,B?>Y`````$&`?AH`=D$/ML%(P>`$2`'X2(V0$`,``+X`````@[@0`P``
+M`'42@WH$`'4,@WH(`'4&@WH,`'0%O@$```"%]G6P_\$X3QIWO[@`````A<!T
+M$D'&AE,+```!Z543``!F9I!FD+D`````NA````!(C40D8)"("$C_P$C_RG7V
+M3(U4)&"_`````$$/MW88NP````!!N2````!!NP$```!F9I!F9I"#_Q]W/P^V
+MPTF-%()$B<DI^3GQ#T?.@_D@=0C'`O_____K#42)V-/@_\B)^=/@"0)$B<@I
+M^#GP<Q6-=#[@OP````#K`X/O(/_#@/L#=K)!@+Y0"P``0'4,00^V1AM!B(90
+M"P``00^VGE`+``!!B)X8GP``0<:&&9\```%(BT0D8$F)A@"?``!(BT0D:$F)
+MA@B?``!)QX80GP```````$R)]^A*T___QD`(`HA8$(A8$4B+5"1@2(E0%$B+
+M5"1H2(E0'$B)Q4&`?AH"#X<2`0``28V>`)\``$R)]^@1T___QD`(!4B)6!#&
+M0%@`2(E$)$!(BTT`_H$8F0``#[:Y&)D``(G^2(M$)$!(*<A(+5@+``!(P?@%
+M2+JKJJJJJJJJJD@/K\*(A'$8F0``#[9%"XB$<1F9``!`B'T+0;\`````08!^
+M&@`/AN@E``!(B=-%.+Y0"P``='I,B??HDM+__\9`"`%$B'@01(AX$4B+5"1@
+M2(E0%$B+5"1H2(E0'$B+="1`#[966`^VRD2(?#$8_\*(5EA(BQ;^@AB9```/
+MMK(8F0``B?%(*=!(+5@+``!(P?@%2`^OPXB$2AB9``!(BWPD0`^V1PN(A$H9
+MF0``0(AW"T'_QT4X?AH/AW#____I4"4``$&_`````$&`?AH`#X8_)0``28V>
+M`)\``$F\JZJJJJJJJJI%.+Y0"P``#X3`````3(GWZ-?1___&0`@!1(AX$$2(
+M>!%(BU0D8$B)4!1(BU0D:$B)4!Q)B<5,B??HKM'__\9`"`-(B5@01(AX&$B)
+M1"1`2(L0_H(8F0``#[:R&)D``(GQ3(GH2"G02"U8"P``2,'X!4D/K\2(A$H8
+MF0``2(M\)$`/MD<+B(1*&9D``$"(=PM(BU4`_H(8F0``#[:R&)D``(GQ2(GX
+M2"G02"U8"P``2,'X!4D/K\2(A$H8F0``#[9%"XB$2AF9``!`B'4+0?_'13A^
+M&@^')O___^E/)```N`$```#K54R)][D`````08!^&@!V00^VP4C!X`1(`?A(
+MC9`0`P``O@````"#N!`#````=1*#>@0`=0R#>@@`=0:#>@P`=`6^`0```(7V
+M=;#_P3A/&G>_N`````"%P'0-0<:&4PL```'IP`\``$R)]^B8T/__2(E$)"C&
+M0`@'N0````"Z$````$B-1"1@B`A(_\!(_\IU]DR-5"1@OP````!!#[=V&+L`
+M````0;D@````0;L!````@_\?=S\/ML-)C12"1(G)*?DY\0]'SH/Y('4(QP+_
+M____ZPU$B=C3X/_(B?G3X`D"1(G(*?@Y\',5C70^X+\`````ZP.#[R#_PX#[
+M`W:R00^V1AM!B(88GP``0<:&&9\```!(BT0D8$F)A@"?``!(BT0D:$F)A@B?
+M``!)QX80GP```````$&`?AH"#X<I`0``28V>`)\``$R)]^BWS___QD`(!4B)
+M6!#&0%@`2(E$)$!(BPC^@1B9```/MK$8F0``B?=(BT0D*$@IR$@M6`L``$C!
+M^`5(NJNJJJJJJJJJ2`^OPHB$>1B9``!(BUPD0`^V0PN(A'D9F0``0(AS"T$/
+MMD8;B$,8QD-8`4&_`````$&`?AH`#X9^(@``2(G33(GWZ#'/___&0`@!1(AX
+M$$2(>!%(BU0D8$B)4!1(BU0D:$B)4!Q(BW0D*$B+%OZ"&)D```^VLAB9``")
+M\4@IT$@M6`L``$C!^`5(#Z_#B(1*&)D``$B+?"0H#[9'"XB$2AF9``!`B'<+
+M13A^&W0;2(M4)$`/MD)8#[;02(M,)$!$B'P*&/_`B$%80?_'13A^&@^':?__
+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
+MEA`+``!(B4H(2(D12(F&$`L``$B)0`A(@[X@"P```'0[2(.^*`L```!T%4B+
+MEB@+``!(BX8@"P``2(F"(`L``$B+EB`+``!(BX8H"P``2(D"2,>&(`L`````
+M``!(B>_H5ZO__^DR`0``9I!-A?9T"4PY-@^%(@$``$B+%DB+6B"+0P@[A3`!
+M```/@Q4!``#V@H`#```!#X6J````QH94H````/^-+`$``$B-AA`+``!(BT@(
+M2(N6$`L``$B)2@A(B1%(B880"P``2(E`"$B#OB`+````=#M(@[XH"P```'05
+M2(N6*`L``$B+AB`+``!(B8(@"P``2(N6(`L``$B+AB@+``!(B0)(QX8@"P``
+M`````$B)[^BAJO__2(-[$`!T>DB+>Q!(BT=(2(M`*$B)0Q#&AZH````"Z```
+M``!(@WL0`'7=ZU7&AE2@```"_XTL`0``2(V6$`L``$B+2@A(BX80"P``2(E(
+M"$B)`4B-12A(BT@(2(E0"$B)AA`+``!(B4H(2(D1_H95H```2(GWZ*?-___K
+M#F9FD&:033GL#X5G_?__6UU!7$%=05[#9F9FD&9F9I!F9I!F9I!!5T%6055!
+M5%532(/L"$F)_(ET)`1!O@````!(BU\(2(U'"$@YV`^$@P$``&9F9I!(C:OP
+M]/__2(N+\/3__P^V@PKU____R$B82(G'2`^ONP#U__](@WD8`'1U2(M)&$B+
+ML8`"``!!N`````!(A?8/A)L```!(.4X(#X61````@'XH`'0B3`^V241,BY:@
+M````3(G0N@````!)]_%(.?AV(H!^*`!U:4@/MDE$2(NVH````$B)\+H`````
+M2/?Q2#GX=DU!N`$```#K169FD&:02(NQ@`(``$&X`````$B%]G0N2#E."'4H
+M@'XH`'0/2#F^H````'8/@'XH`'432#F^H````'8*0;@!````9F9FD$6%P`^$
+MA0```$B+&\:%5*````!(C840"P``2(M("$B+E1`+``!(B4H(2(D12(F%$`L`
+M`$B)0`A$`[58H```2(.](`L```!T.TB#O2@+````=!5(BY4H"P``2(N%(`L`
+M`$B)@B`+``!(BY4@"P``2(N%*`L``$B)`DC'A2`+````````2(GN3(GGZ&*H
+M__](BQM)C40D"$@YV`^%@?[__TF+7"0828U$)!A(.=@/A(4!``!(C:OP]/__
+M2(N+\/3__P^V@PKU____R$B82(G'2`^ONP#U__](@WD8`'1S2(M)&$B+L8`"
+M``!!N`````!(A?8/A)D```!(.4X(#X6/````@'XH`'0B3`^V241,BY:@````
+M3(G0N@````!)]_%(.?AV(H!^*`!U9T@/MDE$2(NVH````$B)\+H`````2/?Q
+M2#GX=DM!N`$```#K0V9FD$B+L8`"``!!N`````!(A?9T+D@Y3@AU*(!^*`!T
+M#T@YOJ````!V#X!^*`!U$T@YOJ````!V"D&X`0```&9F9I!%A<`/A(T```!(
+MBQO&A52@````0?^,)"P!``!(C840"P``2(M("$B+E1`+``!(B4H(2(D12(F%
+M$`L``$B)0`A$`[58H```2(.](`L```!T.TB#O2@+````=!5(BY4H"P``2(N%
+M(`L``$B)@B`+``!(BY4@"P``2(N%*`L``$B)`DC'A2`+````````2(GN3(GG
+MZ,JF__](BQM)C40D&$@YV`^%>_[__X-\)`0`=1M!BX0D*`$``-'H1(GR03F$
+M)"P!```/@AT"``"#?"0$_P^$I0```$0[="0$#X.:````38UL)`A-.6PD"`^$
+MB@```$F+7"0(2(VK\/3__\:%5*````!(BU,(2(L#2(E0"$B)`DB)&TB)6PA$
+M`[58H```2(.](`L```!T.TB#O2@+````=!5(BY4H"P``2(N%(`L``$B)@B`+
+M``!(BY4@"P``2(N%*`L``$B)`DC'A2`+````````2(GN3(GGZ/*E__]$.W0D
+M!`^":____TV-?"0828M<)!A,.?L/A!(!``!-C6PD*$B-J_#T__](BQM(BT4`
+M]H"``P```0^$\@```$B+0""+0`A!.X0D,`$```^#W0```$B)Z4&X`````+\`
+M````9H-]&"&X_____T0/0\!F@WT800]#^+X`````@'T:`'9(0#AQ&W0ZB?(/
+MML)(P>`$2`'(2(V0$`<``(.X$`<``/]U$$0Y0@1U"CEZ"'4%.7H,=`ZX````
+M`.L49F9FD&9FD/_&0#AQ&G>XN`$```"%P)!T7,:%5*````)!_XPD+`$``$B-
+ME1`+``!(BTH(2(N%$`L``$B)2`A(B0%)BT4(28E5"$R)K1`+``!(B4((2(D0
+M_H55H```2(GOZ%+(__]$`[58H```3#G[#X7S_O__1#MT)`1S/D&+G"0P`0``
+M@_L##Y?`@WPD!/\/E,(/ML"%PG0,0<>$)#`!```#````O@````!,B>?HI??_
+M_T&)G"0P`0``1(GRB=!(@\0(6UU!7$%=05Y!7\-F9I!F9I!F9I!54TB#[`A(
+MB?U(BS](Q\8`````Z`````!)B<!(BU`82(U`&$@YT`^$D````$F)P9!(C8+P
+M]/__2#FJ\/3__W5P2(G'NP````"`N@KU__\`=D$/ML-(P>`$2`'X2(V($`,`
+M`+X`````@[@0`P```'42@WD$`'4,@WD(`'4&@WD,`'0%O@$```"%]G4:_\,X
+M7QIWO[@`````A<!T%;@!````Z;P```"X`0```.OK9F9FD$B+$DDYT0^%=/__
+M_TF+4"A)C4`H2#G0#X2/````28G`2(V"\/3__T@YJO#T__]U<$B)Q[L`````
+M@+H*]?__`'9!#[;#2,'@!$@!^$B-B!`#``"^`````(.X$`,```!U$H-Y!`!U
+M#(-Y"`!U!H-Y#`!T!;X!````A?9U%__#.%\:=[^X`````(7`=!6X`0```.L?
+MN`$```#K[F9F9I!F9I!(BQ)).=`/A73___^X`````$B#Q`A;7<-F9F:09F9F
+MD$B#[!A(B5PD"$B);"002(G[2(LO@+^J`````'4'QH>J`````8"[J@````%T
+M0X"[J`````!U.H"[J@````9T,8"[J@````-T*("[J@```!!T'X"[J@````)U
+M"4B+>U#H/1P``,:#J@````MF9I!F9I!(B=_H`````$B)[^@`````2(M<)`A(
+MBVPD$$B#Q!C#D$%7059!54%455-(@^P828G^2(GU08G72,?&`````$B+/^@`
+M````2(E$)!!-BV9838ML)$A(QT0D"`````!)@[PDL`````!T%$$/MH0DJ0``
+M`(/@`0^VP$0Y^'5LN`````!)@[PDN``````/A)<"``!(BT0D$$@%J````$B)
+M!"1(B<?H`````$B)1"0(2(G#1(GZ2(G&3(GG0?^4)+@```"%P'4L2(MT)`A(
+MBSPDZ`````"X`````.E+`@``B4T`2(/%$.D5`@``28N<)+````"^`````$4/
+MMEY@38N&D````$&Z`````$&`O>X`````#X:``0``1(G2#[;"00^VC$7Q````
+M20^VA$7P````2,'@!4J-5"A(.$H0=1)(#[="$DF)P4P#2@@/MWH4ZRPX2A%U
+M&T@/MT(628G!3`-*"`^W>ACK%8E-`$B#Q1#K;$R+2@A!#[>]Z````$0XV0^%
+MW````$2)R$0IP(G!P>$)=$J0187_=!)(BU0D$$B+@C@!``!(B44(ZQ!(BU0D
+M$$B+@D`!``!(B44(QT4$`````('Y`!```':>QT4``!```$B#Q1"!Z0`0``!U
+MMP^WQXG!P>$)BQ.)T"GP.<AR*8GP2`-#"$B)10B)30#'100`````2(/%$`'.
+M.=9U-+X`````2(/#$.LIB?!(`T,(2(E%"(G0*?")10#'100`````2(/%$"G!
+M2(/#$+X`````ZZ1$#[?'30'(20^WAI@```!)`X:0````3#G`=#WK*P'.ZR</
+MM\_!X0F+$XG0*?`YR'?LB=`I\"G!@WL$`'4+2(/#$+X`````Z]]!_\)%.)7N
+M````#X>`_O__00^WAI@```!!BXZ0`````<%$*<'!X0ET3V:0187_=!)(BU0D
+M$$B+@C@!``!(B44(ZQ!(BU0D$$B+@D`!``!(B44(QT4$`````('Y`!````^&
+M\OW__\=%```0``!(@\40@>D`$```=;/'1?0!````2(-\)`@`=!9(BWPD$$B!
+MQZ@```!(BW0D".@`````N`$```!(@\086UU!7$%=05Y!7\-F9F:09F:09F:0
+M2(/L&$B)'"1(B6PD"$R)9"002(G[2(MO6$R+94B`OZH````!=$>`OZH````0
+M=3%(Q\8`````2(M]`.@`````2(G'2(N+D`````^V4V!(BW501`^W@Y@```#H
+MLJW__V:0#[:#J@```(B%J@```$B+?0A(B=[H`````$B+10C_2`A!#[:$).T`
+M``#_P$&(A"3M````03J$).P```!U4X"]J@````!U!\:%J@````$/MH6J````
+M/`$/E<(\!@^5P`^VTH70="*`O:H````#=!F`O:H````"=0E(BWU0Z!`8``#&
+MA:H````+2(GOZ`````"02(L<)$B+;"0(3(MD)!!(@\08PV9F9I!F9I!F9I!F
+M9I!!5T%6055!5%532(/L&$F)]4R+9E!-BU0D($R+=DA)@WPD4`!U$DF#?"18
+M`'4*28U"&$DY0AAT#;@`````9F:0Z1L#``!(C8=P`0``2(E$)!!,C;]P`P``
+MN0````"Z@````$R)^(@(2/_`2/_*=?9!NP````!!@+[J``````^&$@(``$2)
+MV@^VPDC!X`5.BT0P2$R)Q[D`````08!X&@!V00^VP4C!X`1(`?A(C9`0`P``
+MO@````"#N!`#````=1*#>@0`=0R#>@@`=0:#>@P`=`6^`0```(7V=1K_P3A/
+M&G>_N`````"%P'01N`````#I:P(``+@!````Z^M!#[:84*```$$XF%&@```/
+M@M,```!!.%@;=%\/ML-(BTPD$$B-/,%)C31'20^WE(!0GP``20-0$$4/MXR`
+M4I\``&:#/@!T*D@/MP9(B<%(`P]!#[?!2`'02#G(2`]'R$@Y%W8#2(D7B<AF
+M*P=FB0;K:$B)%V9$B0[K7T&`?"00"'5708-Z,$!V4`^VPTB+5"002(T\PDF-
+M#$=)BW`010^W2!AF@SD`="I(#[<!2(G"2`,700^WP4@!\$@YT$@/1]!(.3=V
+M`TB)-XG09BL'9HD!ZP=(B3=F1(D)_\-!.)A1H```#X,M____08!\)!`(#X65
+M````08-Z,$`/AHH```!)#[:04:```$$/MX204)\``$$/MY204I\```'000^W
+M4!@YT'5E03A8&K@`````#T;803A8&W53#[;32(G02(M,)!!(C13128T\1TF+
+M<!!%#[=`&&:#/P!T*D@/MP=(B<%(`PI!#[?`2`'P2#G(2`]'R$@Y,G8#2(DR
+MB<AF*P)FB0?K!TB),F9$B0=!_\-%.)[J````#X?N_?__0<:&[`````!!QH;M
+M`````+L`````08!\)$0`#X:E````#[;K9D&#/&\`#X2)````28M$[&!(B40D
+M"$F+10C_0`A)BWT(Z`````!(B<=)BT4`2(D'28M%"$B)1PA!BT5HB4=H0?Z&
+M[````$$/MP1O9HF'F````$B+5"002(L$ZDB)AY````"`CZD````"2,>'N```
+M``````!(QX?``````````$B+3"0(2(E/4$R);UA(B6]@Z`````#_PT$X7"1$
+M#X=;____N`$```!(@\086UU!7$%=05Y!7\.005=!5D%505154TB#[!A)B?](
+MBS](Q\8`````Z`````!(B40D$$V+;TA)BT=02(E$)`A!]H>I````!`^$9P<`
+M`$&^`````$&`O>H`````#X3M!@``26/&2,'@!4J+;"A(1`^VI5"@``!$.*51
+MH```#X(I`0``1#AE&P^$#P$``$2)X@^VPDB)PDC!X@1,C8PJ$`,```^WE(50
+MGP``#[>\A5*?``"[`````$&Z(````$&[`0```(/Z'W=&#[;#28TT@42)T2G1
+M.?D/1\^#^2!U",<&_____^L-1(G8T^#_R(G1T^`)!D2)T"G0.?AS'(U\%^"Z
+M`````.L*9F9FD&9FD(/J(/_#@/L#=JM$B>(/ML)(B<)(P>($3(V,*A`'```/
+MMY2%4)\```^WO(52GP``NP````!!NB````!!NP$```"#^A]W/P^VPTF--(%$
+MB=$IT3GY#T?/@_D@=0C'!O_____K#42)V-/@_\B)T=/@"09$B=`IT#GX<Q6-
+M?!?@N@````#K`X/J(/_#@/L#=K)!_\1$.*51H```#X/7_O__0?:'J0````@/
+MA($%``!(BU0D"$B+@H`"``!(A<!U"TB+0AA(BX"``@``@'@H``^$LP(``$0/
+MMJ50H```1(GA#[;!#[>TA5"?``!FA?8/A!`!``!(P>`$3(V4*!`#``!!N```
+M```/M_Z[`````$&[(````$&#^!]W1@^VPTF-%()$B=E$*<$Y^0]'SX/Y('4(
+MQP+_____ZQ"X`0```-/@_\A$B<'3X`D"1(G81"G`.?AS&$*-?`?@0;@`````
+MZP1!@^@@_\.`^P-VJ42)X$0/MM!,B=!(P>`$3(V4*!`'``!!N``````/M_Z[
+M`````$&[(````$&#^!]W1@^VPTF-%()$B=E$*<$Y^0]'SX/Y('4(QP+_____
+MZQ"X`0```-/@_\A$B<'3X`D"1(G81"G`.?AS&$*-?`?@0;@`````ZP1!@^@@
+M_\.`^P-VJ0^WUD2)X0^VP4B+?,4@O@````#H'Y;__T&\`````("]4*`````/
+MAAD$``!$.&4;#X12`0``1(GB#[;"2,'@!$@!Z$B-D!`'``"Y`````(.X$`<`
+M``!U$H-Z!`!U#(-Z"`!U!H-Z#`!T!;D!````A<D/A1$!``!$B>$/ML%(P>`$
+M3(V,*!`#``"_``````^W=1B[`````$&Z(````$&[`0```&9FD&:0@_\?=S\/
+MML-)C12!1(G1*?DY\0]'SH/Y('4(QP+_____ZPU$B=C3X/_(B?G3X`D"1(G0
+M*?@Y\',5C70^X+\`````ZP.#[R#_PX#[`W:R1(G@1`^VR$R)R$C!X`1,C8PH
+M$`<``+\`````#[=U&+L`````0;H@````0;L!````9I"#_Q]W/P^VPTF-%(%$
+MB=$I^3GQ#T?.@_D@=0C'`O_____K#42)V-/@_\B)^=/@"0)$B=`I^#GP<Q6-
+M=#[@OP````#K`X/O(/_#@/L#=K)$B>(/ML)(BWS%(.CRD___9I!!_\1$.*50
+MH```#X>4_O__Z:@"``!$#[:E4:```$2)X`^VR`^WA(U0GP``B<9F`[2-4I\`
+M`&8Y=1@/A@H!``!(B<A(P>`$3(V4*!`#```/M]8/MWT8*=>[`````$&[(```
+M`(/Z'W=##[;#38T$@D2)V2G1.?D/1\^#^2!U"4''`/_____K$+@!````T^#_
+MR(G1T^!!"0!$B=@IT#GX<Q6-?!?@N@````#K`X/J(/_#@/L#=JY$B>!$#[;0
+M3(G02,'@!$R-E"@0!P``#[?6#[=]&"G7NP````!!NR````"#^A]W0P^VPTV-
+M!()$B=DIT3GY#T?/@_D@=0E!QP#_____ZQ"X`0```-/@_\B)T=/@00D`1(G8
+M*=`Y^',5C7P7X+H`````ZP.#ZB#_PX#[`W:N#[=5&`^W]BGR1(GA#[;!2(M\
+MQ2#H9Y/__T'_Q$0X91H/AF<!``!$.&4;#X10`0``1(GB#[;"2,'@!$@!Z$B-
+MD!`'``"Y`````(.X$`<```!U$H-Z!`!U#(-Z"`!U!H-Z#`!T!;D!````A<D/
+MA0\!``!$B>$/ML%(P>`$3(V,*!`#``"_``````^W=1B[`````$&Z(````$&[
+M`0```&9FD(/_'W<_#[;#28T4@42)T2GY.?$/1\Z#^2!U",<"_____^L-1(G8
+MT^#_R(GYT^`)`D2)T"GX.?!S%8UT/N"_`````.L#@^\@_\.`^P-VLD2)X$0/
+MMLA,B<A(P>`$3(V,*!`'``"_``````^W=1B[`````$&Z(````$&[`0```&:0
+M@_\?=S\/ML-)C12!1(G1*?DY\0]'SH/Y('4(QP+_____ZPU$B=C3X/_(B?G3
+MX`D"1(G0*?@Y\',5C70^X+\`````ZP.#[R#_PX#[`W:R1(GB#[;"2(M\Q2#H
+M0I'__V:00?_$1#AE&@^'F?[__T'_QD$/MH7J````1#GP#X\3^?__2(M,)`B`
+MN8$#```"=`I!]H>I````"'1.0;X`````08"]Z@````!T-$ECQDC!X`5*BVPH
+M2$C'A4"?````````2(GN2(M\)!#H4YS__T'_QD$/MH7J````1#GP?\Q,B?_H
+M*_#__^LQ0;X`````08"]Z@````!T(4ECQDC!X`5*BWPH2.AXMO__0?_&00^V
+MA>H```!$.?!_WTB#Q!A;74%<05U!7D%?PV9FD&9FD&9FD$%7059!54%455-(
+M@^P02(G52(M^2$R+=E!!N0````!%#[=F1F9!@?R!`+B`````1`]#X&9$B:?H
+M````1(G@9L'H`P^WT(72N`$````/1-!!#[9.1$&`?D0$=A:-0?W1^`'!B4PD
+M"`^O5"0(B50D".L/_\&)3"0(#Z]4)`B)5"0(@+ZH`````74@QH?J`````4C'
+M1T@`````2(M%$$B)1U"+1"0(Z3\"``!(#[9-(DB+=0!(B?"Z`````$CW\4&)
+MT@^V12*(1"0/08!^$`AU&$D/MDY$2(MU"$B)\+H`````2/?Q*%0D#T0Z5"0/
+M08#:_T$/MU9&C4+_#[=-&"'!B=9F*<YF.74@<P0/MW4@QH?J`````,:'ZP``
+M``#&A^X`````QT0D!`````!!O0$```!!C40D_V:)1"0"00^WQ/?83&/X#[?!
+M28G#3`-=$&9FD`^W1"0"1"'81(GA9BG!9CGQ#T?.38GX32'8187M='5!O0``
+M``!F13EF1G8LN@`````/MH?J````B<.#^`!^&9!(8\)(P>`%3(U,.$A-.4$(
+M=$+_PCG3?^@/MH?J````C5`!B)?J````#[;`2,'@!4@!^$R-2$A(QT!(````
+M`$V)00A!QD$00$'&01$`BU0D"`%4)`1%.%$0=A5%B%$01(G89D0IP&9!B4$2
+M9D&)211%.%$1<Q5%B%$11(G89D0IP&9!B4$69D&)21A(#[:'[@```$R)RD@I
+M^DB#ZDA(P?H%B)1'\````$@/MH?N````1(B41_$```#^A^X```!F*4T@9BG.
+M=!$/M\%)`<-!O0$```#IZ?[__V:#?2``=':Y`````$'_PD0Z5"0/#Y3`00'"
+M13A61'4V08!^$`AU%8!\)`\`=`;^3"0/ZP@/MD4BB$0D#X!\)`\`00^4PDD/
+MMT9&2`%%$$&]`0```.L.9D4Y9D:X`0```$0/1^@/MW4@9D$[=D8/AFG^__]!
+M#[=V1NE?_O__BT0D!$B#Q!!;74%<05U!7D%?PV9FD&9FD&9FD$B#[`A(B?"%
+MTG05QH:J````"TB)]^C&[/__ZRAF9F:02(MV2$C'1C``````2(E&.$C'1D``
+M````2(/&,$B+..@`````2(/$",-F9F:09F:0059!54%455-)B?U(BS](Q\8`
+M````Z`````!)B<9)BVU(0;P`````@+WJ`````'0T26/<2,'C!4@!ZP^WC>@`
+M``!)BW502(M34$R)]^C_D/__2(E#2$'_Q`^VA>H```!$.>!_S$R)[^@D!```
+M@_@"=3]!O`````"`O>H`````="-)8\1(P>`%2(MT*$A,B??H3);__T'_Q`^V
+MA>H```!$.>!_W4F+/N@`````9F:09I!;74%<05U!7L-F9F:09F:005154TF)
+M_$F)T4B)S;L`````@+GJ``````^$A@```$ACPTC!X`5,C40H2$B+5B!)BT`(
+M#[9.1=/H)?\!``!(BQ)(BSS"2(7_="9F9I!F9I!)BT`(2#E'$'0.2(N_*`L`
+M`$B%_W7JZPA)B3A(A?]U)(7;?A;_RTACPTC!X`5(QT0H2`````"%VW_JN/__
+M___I#0$``/_##[:%Z@```#G8#X]Z____NP````"`O>H`````#X2@````2&/#
+M2,'@!4B+?"A(@+]4H````74TQH=4H````$B-AQ`+``!(BT@(2(N7$`L``$B)
+M2@A(B1%(B8<0"P``2(E`".M'9F9FD&9FD("_5*````-U-\:'5*````!!_XPD
+M+`$``$B-AQ`+``!(BT@(2(N7$`L``$B)2@A(B1%(B8<0"P``2(E`"&9F9I#^
+MAU6@``#_PP^VA>H````YV`^/8/___TR)S^AQ`@``@_@"=3B[`````("]Z@``
+M``!T(4ACPTC!X`5(BW0H2$R)Y^B:E/___\,/MH7J````.=A_WTF+/"3H````
+M`+@`````6UU!7,-F9F:09F:09F:02(/L6$B)7"0P2(EL)#A,B60D0$R);"1(
+M3(ET)%!(B?M,BR](Q\8`````3(GOZ`````!)B<9,BV-028ML)""`NZ@````$
+M=3Y(BT-(2(M5$$B)4"A(B5T03(GGZ%'H__^%P'023(GF3(GWZ,+?__]FD.E_
+M`0``3(GGZ!.3__]F9I#I;P$``("[J``````/A>0```#V@ZD````&=17&@ZH`
+M```!2(G?Z`````#I10$``)#V@ZD````$=#?'13``````2(-]$`!T54B+?1!(
+MBT=(2(M`*$B)11#&AZH````!Z`````!(@WT0`'7=ZS!F9F:02(N#D````$@Y
+M12AU!?]%,.L'QT4P`````$@/MX.8````2`.#D````$B)12A(BY.0````2(E4
+M)!@/MX.8````9HE$)"!!#[9$)$3_R(A$)")!#[9,)$5(T^I(B=%(B10D#[;0
+M2(G(2(G7N@````!(]_=(B40D"$$/MDPD14C3X$B)1"00ZRU)@WPD6`!T$L:#
+MJ@````9(B=_H`````.MED$D/MT0D1D@/KX.0````2(E$)!!(BVM(2(GB2(G>
+M3(GOZ(OX__^)10!(QT4@`````$B)Z4B)VDR)YDR)]^A__/__A<!T'TC'10@`
+M````2(E=$$C'11@`````2(GN3(GOZ`````!(BUPD,$B+;"0X3(MD)$!,BVPD
+M2$R+="102(/$6,-F9F:09F9FD&9FD&9FD$%455-(B?U(BS](Q\8`````Z```
+M``!)B<1(BUU(0;@`````@+OJ`````'1Y9F9FD$ECP$C!X`5(BW082("^5*``
+M``)U44B)]TB)Z4B#ODB?````="A(BU5(2(N&2)\``$B+0$A(BT`H2(E"*$B+
+MADB?``!(BT!(2(EH*.L(2(M%2$B):"A(B8](GP``N`$```#I"0(``$'_P`^V
+M@^H```!$.<!_BT&X`````("[Z@`````/A-L```!)8\!(P>`%2`'82(UX2$B+
+M<$B`O:@`````#X6I````#[9'$(B&4*````^V1Q&(AE&@```/MHY0H```#[;`
+M.<@/C(,```!F9I`/MH90H```.<AU'4ACP0^W5Q)FB92&4)\```^W5Q1FB92&
+M4I\``.M)#[:&4:```#G(=1U(8\$/MU<69HF4AE"?```/MU<89HF4AE*?``#K
+M(0^V1ALYR'092&/19L>$EE"?``````^W1AAFB8264I\``/_!#[:&4:```#G(
+M?8)FD$'_P`^V@^H```!$.<`/CR7____VA:D````"=$E(B>Y,B>?H&>O__X3`
+M=#I!N`````"`N^H`````="%)8\!(P>`%2(M$&$C^B%6@``!!_\`/MH/J````
+M1#G`?]^X`@```.FZ````0;@`````@+OJ`````'1D28U\)"AF9F:09F:026/`
+M2,'@!4B+=!A(QH94H````DB-EA`+``!(BTH(2(N&$`L``$B)2`A(B0%(BT<(
+M2(E7"$B)OA`+``!(B4((2(D02(FN0)\``$'_P`^V@^H```!$.<!_J/:%J0``
+M``1T%$C'P@````!(B>Y,B>?H_8O__^LE2(MU2$C'1C``````2(EN.$C'1D``
+M````2(/&,$B+?0#H`````+@`````6UU!7,-F9F:09F9FD&9F9I!32(M?($B#
+M>Q``="=F9F:02(M[$$B+1TA(BT`H2(E#$,:'J@````WH`````$B#>Q``==U;
+MPV9F9I!F9F:09F:04TB)^TC'Q@````!(BS_H`````$B+6R!(C;B(````Z```
+M``!(B0.X_____TB#.P!T*KD`````N@`0``!(BP-FD(@(2/_`2/_*=?9(C4,8
+M2(E#&$B)0R"X`````%O#9F:0055!5%532(/L"$B)^TB+/TC'Q@````#H````
+M`$B)Q4R+:R!)@WT```^$#@$``$&\`````$ECU$F+10!(BS302(7V#X2-````
+M@+Y4H````W4SQH94H````/^-+`$``$B-AA`+``!(BT@(2(N6$`L``$B)2@A(
+MB1%(B880"P``2(E`".LKQH94H````$B-AA`+``!(BT@(2(N6$`L``$B)2@A(
+MB1%(B880"P``2(E`"$C'AB`+````````2(N>*`L``$B)[^C7AO__2(G>2(7;
+M#X5S____0?_$08'\_P$```^&3____TB-O8@```!)BW4`Z`````!)QT4`````
+M`$F+=1A(BQY)C4482#GP="])B<1(BU8(2(L&2(E0"$B)`DB)-DB)=@A(C;T(
+M`0``Z`````!(B=Y(BQM).?1UU$B#Q`A;74%<05W#9F:09F:09F:02(/L"+D`
+M````O@````"`?T0`=#!!N`$````/ME=$9I")R$B+1,=@2(7`=`GV@(`#```!
+M=0E,B<!(T^!("<;_P3G*=]Q(.7=8=`E(B7=8Z`````!(@\0(PV9F9I!F9F:0
+M55-(@^P(2(G]2(M?&.@`````O@````"`>T0`="!F9I")\$@Y;,-@=0I(B=_H
+MWY;__^L*_\8/MD-$.?!WX_:#@`,```%T*O:#8`(```1U(4B)W^@YX?__A<!T
+M%>@`````B4,\2(G?Z`````!F9I!FD$B#Q`A;7<-F9I!F9I!F9I!!54%44TF)
+M_$F)]4C'Q@````#H`````$B)PTR)Y^@`````B8,H`0``P>`,08G$0<'L$$B-
+M>VA$B>&ZB*```$R)[N@`````06O,7DB->TBZ"`$``$R)[N@`````2(V[B```
+M`+D0````N@`0``!,B>[H`````$B-NZ@```"Y`0```+H@`0``3(GNZ`````#'
+M@S`!```#````Z`````!IBS`!```0"```2(V[Z````(G"3(GNZ`````!(C;O(
+M````0;@!````N0`0``"Z`!```$R)[N@`````2(V["`$``+D0````NB````!,
+MB>[H`````%M!7$%=PV9F9I!F9F:09F:005132(/L"$F)_$C'Q@````#H````
+M`$B)PTR)($B-0`A(B4,(2(E#$$B-0QA(B4,82(E#($B-0RA(B4,H2(E#,$B-
+M0SA(B4,X2(E#0(N3\````$B-L^@```!,B>?H`````$B)@T@!``!(C;-``0``
+M2(V[R````.@`````2(F#.`$``$B)FU`!``!(QX-8`0```````$C'@V`!````
+M````2(VS4`$``$R)Y^@`````2(/$"%M!7,-F9F:09F:09F:04TC'Q@````#H
+M`````$B)PTB+L$@!``!(C;CH````Z`````!(BY-``0``2(NS.`$``$B-N\@`
+M``#H`````%O#D%-(B?M(Q\8`````2(L_Z`````!(B<9!N/____](@WL8`'0Q
+MN0````!(BT,82(G"@'A$`'0?2(G'2&/!2#E<PF!U!4&)R.L-_\%(B?H/MD=$
+M.<A_Y$B+5AA(C4882#G0="=(B<%(.9KP]/__=1.+0SB)@OCT__]$B((,]?__
+M9F:02(L22#G1==Q(BU8H2(U&*$@YT'0D2(G!2#F:\/3__W40BT,XB8+X]/__
+M1(B"#/7__TB+$D@YT77?2(M6"$B-1@A(.=!T,DB)P69F9I!F9I!(.9KP]/__
+M=1>+0SB)@OCT__]$B((,]?__9F9FD&9FD$B+$D@YT7786\-F9I!F9I!(@^P(
+MQ@4``````4C'QP````#H`````+@`````2(/$",.0D)"0D)"0D)"0D)"0D)!3
+M2(GS2,?&`````.@`````2(G'N0$```"Z(`$``$B)WN@`````6\-F9I!F9I!F
+M9I!32,?&`````.@`````2(G#2(G'Z`````!(B4,@6\-FD$B#[`A(Q\8`````
+MZ`````!(B<=(BW`@Z`````!(@\0(PV9F9I!F9F:09F9FD&9FD$B#[#A(B5PD
+M"$B);"003(ED)!A,B6PD($R)="0H3(E\)#!)B?U(B?5!B==,BV=838MT)$A)
+MBYPDL````$C'Q@````!(BS_H`````$B+4"!(A=MT%$$/MH0DJ0```(/@`0^V
+MP$0Y^'4M2(G328.\)+@`````=!5$B?I(B=Y,B>=!_Y0DN````(7`=0JX````
+M`.G(````08!^"?\/A)@```!!#[=6"L'B"8L+.<IV+F:020^V1@A).45@=15(
+MBP-(B44`2(M#"$B)10A(@\409I`IRDB#PQ"+"SG*=]1)#[9&"$DY16!U&4B+
+M0PA(B44(B54`QT4$`0```+@!````ZUTYRG,PB=!(`T,(2(E%"(G(*=")10"#
+M>P0`=`['100!````N`$```#K-,=%!`````!(@\402(/#$$B+`TB)10!(BT,(
+M2(E%"$B#Q1!(C4,$2(/#$(,X`'3@N`$```!(BUPD"$B+;"003(MD)!A,BVPD
+M($R+="0H3(M\)#!(@\0XPU532(/L"$B)^DB+7UA(BVM(#[9/8$C'P/[___](
+MT\!((440@+^J`````70-#[:'J@```(B#J@```$B+>PA(B=;H`````$B+0PC_
+M2`A(@WT0`'48@+NJ`````'4'QH.J`````4B)W^@`````2(/$"%M=PV9F9I!F
+M9F:09F:09F:02(M.2$`X>0AU%@^W00IFB8*8````2(L!2(F"D````,,/MT$,
+M9HF"F````$C'@I``````````PV9FD&9FD&9FD%-,BT9(3(N.D````$0/MY:8
+M````NP````"Y`````(!_1`!T?D4/M]J)R$B+5,=@3#E**'9?38D(08A("+\!
+M````2(G^2-/F28EP$$N-!`M(.T(H=C.[`0```(U!`4&(0`G_P4C3YTB)^4@)
+M\4F)2!!(BT(H9D0IR&9!B4`*9D$IPF9%B5`,ZQI!QD`)_V9%B5`*ZPY,*THH
+M_\$/MD=$.<AWAHG86\-F9F:09F:09F:02(/L2$B)7"082(EL)"!,B60D*$R)
+M;"0P3(ET)#A,B7PD0$F)_$R+?U!(BT=(2(E$)!"`OZ@````$#X73````2,=`
+M$`````!!O@````!!@']$``^&JP$``$2)\@^VVDV+;-]@387M#X24````0?:%
+M@`,```$/A(8```"X`0```$2)\4C3X$B+5"002`E"$$F+1"0(_T`(28M\)`CH
+M`````$B)Q4F+!"1(B44`28M$)`A(B44(08M$)&B)16A,B6U0QH6H````!$$/
+MMI0DJ0```(/B,`^VA:D```"#X,\)T(B%J0```$C'A<``````````3(EE6$B)
+M76!(B>_H`````$'_QD4X=T0/ATO____I\0```$B)_DR)_^@S_O__2(M,)!!(
+M@WD0`'470<:$)*H````"3(GGZ`````#IQ````)!!O@````!!@']$``^&L@``
+M`$$/ML:)1"0,N`$````/MDPD#$C3X$B+5"002(5"$`^$@0```$2)\0^VV4V+
+M;-]@28M$)`C_0`A)BWPD".@`````2(G%28L$)$B)10!)BT0D"$B)10A!BT0D
+M:(E%:$R);5!!#[:$)*D```"(A:D```!(QX7``````````$C'A;@`````````
+M3(EE6$B)76!(B>I,B>:+?"0,Z"+]__](B>_H`````$'_QD4X=T0/AT[___](
+MBUPD&$B+;"0@3(MD)"A,BVPD,$R+="0X3(M\)$!(@\1(PV9F9I!F9I!F9I!(
+M@^P(2,?'`````.@`````N`````!(@\0(PP``````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````4F]C:V5T4D%)1"`R-S)X7S%X(%-!4R!#
+M;VYT<F]L;&5R````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````4F]C:V5T4D%)1"`R
+M-S9X(%-!4R!#;VYT<F]L;&5R````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````!2;V-K971204E$(#(W.'@@
+M4T%3($-O;G1R;VQL97(`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````````!2;V-K
+M971204E$(#(W-'A?,W@@4T%3($-O;G1R;VQL97(`````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````!L````!````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``!-5E]297%U97-T("5P.B!#9&);)3)X+"4R>"PE,G@L)3)X+"`E,G@L)3)X
+M+"4R>"PE,G@L("4R>"PE,G@L)3)X+"4R>"P@)3)X+"4R>"PE,G@L)3)X72X`
+M-2!2971R>6EN9R!F86EL960L(&1I<VL@9&]W;B$A(0!487-K(&9I;&4@97)R
+M;W(L(%-T871U<U)E9STP>"5X+"!%<G)296<],'@E>"P@3$)!6S`M,UT],'@E
+M>"Q,0D%;-"TW73TP>"5X+@```````$1E=FEC92!E<G)O<B!I;F9O<FUA=&EO
+M;B`P>"5L;%@`071T1&5V4T%3061D<ELE>%T@(%M5;FET260@)7A=('-A<R!A
+M9&1R("4P,G@M)3`R>"TE,#)X+24P,G@M)3`R>"TE,#)X+24P,G@M)3`R>`!S
+M86UE('-A<R!A9&1R("4P,G@M)3`R>"TE,#)X+24P,G@M)3`R>"TE,#)X+24P
+M,G@M)3`R>````$1E=FEC92`E>"!I;B!S=&%N9&)Y(&UO9&4L('-T87)T('1O
+M('!O=V5R(&ET('5P+@``````````4W1A<G0@=&\@<&]W97(@=7`@9&5V:6-E
+M("5X+BXN``!P;W)T(')E<V5T(&YO="!C;VUP;&5T92!S=6-C97-S+"!I9VYO
+M<F4@=&AE('!O<G0@*"5X*0```$%T=&%C:&5D(&1E=FEC92!I;F1E>"`E,#)X
+M("A0871H("4P,G@@?"!487)G970@)3`R>"!\($4E>"]3)3`R>"D@("5X)7@E
+M>"5X)7@E>"5X)7@```````!-5E]297%U97-T("5P.B!#9&);)3)X+"4R>"PE
+M,G@L)3)X+"`E,G@L)3)X+"4R>"PE,G@L("4R>"PE,G@L)3)X+"4R>"P@)3)X
+M+"4R>"PE,G@L)3)X72X`-2!2971R>6EN9R!F86EL960L(&1I<VL@9&]W;B$A
+M(0!487-K(&9I;&4@97)R;W(L(%-T871U<U)E9STP>"5X+"!%<G)296<],'@E
+M>"P@3$)!6S`M,UT],'@E>"Q,0D%;-"TW73TP>"5X+@```````$1E=FEC92!E
+M<G)O<B!I;F9O<FUA=&EO;B`P>"5L;%@`071T1&5V4T%3061D<ELE>%T@(%M5
+M;FET260@)7A=('-A<R!A9&1R("4P,G@M)3`R>"TE,#)X+24P,G@M)3`R>"TE
+M,#)X+24P,G@M)3`R>`!S86UE('-A<R!A9&1R("4P,G@M)3`R>"TE,#)X+24P
+M,G@M)3`R>"TE,#)X+24P,G@M)3`R>````$1E=FEC92`E>"!I;B!S=&%N9&)Y
+M(&UO9&4L('-T87)T('1O('!O=V5R(&ET('5P+@``````````4W1A<G0@=&\@
+M<&]W97(@=7`@9&5V:6-E("5X+BXN``!P;W)T(')E<V5T(&YO="!C;VUP;&5T
+M92!S=6-C97-S+"!I9VYO<F4@=&AE('!O<G0@*"5X*0```$%T=&%C:&5D(&1E
+M=FEC92!I;F1E>"`E,#)X("A0871H("4P,G@@?"!487)G970@)3`R>"!\($4E
+M>"]3)3`R>"D@("5X)7@E>"5X)7@E>"5X)7@```````!-5E]297%U97-T("5P
+M.B!#9&);)3)X+"4R>"PE,G@L)3)X+"`E,G@L)3)X+"4R>"PE,G@L("4R>"PE
+M,G@L)3)X+"4R>"P@)3)X+"4R>"PE,G@L)3)X72X`-2!2971R>6EN9R!F86EL
+M960L(&1I<VL@9&]W;B$A(0!487-K(&9I;&4@97)R;W(L(%-T871U<U)E9STP
+M>"5X+"!%<G)296<],'@E>"P@3$)!6S`M,UT],'@E>"Q,0D%;-"TW73TP>"5X
+M+@```````$1E=FEC92!E<G)O<B!I;F9O<FUA=&EO;B`P>"5L;%@`071T1&5V
+M4T%3061D<ELE>%T@(%M5;FET260@)7A=('-A<R!A9&1R("4P,G@M)3`R>"TE
+M,#)X+24P,G@M)3`R>"TE,#)X+24P,G@M)3`R>`!S86UE('-A<R!A9&1R("4P
+M,G@M)3`R>"TE,#)X+24P,G@M)3`R>"TE,#)X+24P,G@M)3`R>````$1E=FEC
+M92`E>"!I;B!S=&%N9&)Y(&UO9&4L('-T87)T('1O('!O=V5R(&ET('5P+@``
+M````````4W1A<G0@=&\@<&]W97(@=7`@9&5V:6-E("5X+BXN``!P;W)T(')E
+M<V5T(&YO="!C;VUP;&5T92!S=6-C97-S+"!I9VYO<F4@=&AE('!O<G0@*"5X
+M*0```$%T=&%C:&5D(&1E=FEC92!I;F1E>"`E,#)X("A0871H("4P,G@@?"!4
+M87)G970@)3`R>"!\($4E>"]3)3`R>"D@("5X)7@E>"5X)7@E>"5X)7@`````
+M``!-5E]297%U97-T("5P.B!#9&);)3)X+"4R>"PE,G@L)3)X+"`E,G@L)3)X
+M+"4R>"PE,G@L("4R>"PE,G@L)3)X+"4R>"P@)3)X+"4R>"PE,G@L)3)X72X`
+M-2!2971R>6EN9R!F86EL960L(&1I<VL@9&]W;B$A(0!487-K(&9I;&4@97)R
+M;W(L(%-T871U<U)E9STP>"5X+"!%<G)296<],'@E>"P@3$)!6S`M,UT],'@E
+M>"Q,0D%;-"TW73TP>"5X+@```````$1E=FEC92!E<G)O<B!I;F9O<FUA=&EO
+M;B`P>"5L;%@`071T1&5V4T%3061D<ELE>%T@(%M5;FET260@)7A=('-A<R!A
+M9&1R("4P,G@M)3`R>"TE,#)X+24P,G@M)3`R>"TE,#)X+24P,G@M)3`R>`!S
+M86UE('-A<R!A9&1R("4P,G@M)3`R>"TE,#)X+24P,G@M)3`R>"TE,#)X+24P
+M,G@M)3`R>````$1E=FEC92`E>"!I;B!S=&%N9&)Y(&UO9&4L('-T87)T('1O
+M('!O=V5R(&ET('5P+@``````````4W1A<G0@=&\@<&]W97(@=7`@9&5V:6-E
+M("5X+BXN``!P;W)T(')E<V5T(&YO="!C;VUP;&5T92!S=6-C97-S+"!I9VYO
+M<F4@=&AE('!O<G0@*"5X*0```$%T=&%C:&5D(&1E=FEC92!I;F1E>"`E,#)X
+M("A0871H("4P,G@@?"!487)G970@)3`R>"!\($4E>"]3)3`R>"D@("5X)7@E
+M>"5X)7@E>"5X)7@```````!;)60@)61=(&1E=FEC92!E<F%S92!U;FET('-U
+M8V-E<W-F=6QL>2X`6R5D("5D72!D979I8V4@97)A<V4@=6YI="!F86EL960@
+M;W(@86)O<G1E9"X`1&5V:6-E7TED/25D`$1E=FEC92`E>"\E>"!R96UO=F5D
+M+@!$979I8V4@)7@O)7@@<F5M;W9E9"X`<W1A<G0@4T53(&1E=FEC92`E<`!$
+M979I8V4@)7@@<&]W97)E9"!U<"X`1F]U;F0@4T53($1E=FEC92`E>`!&86EL
+M960@=&\@=F5R:69Y(&-O;G1R;VQL97(`;V1I;@!$979I8V5?260])60`1&5V
+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
+M`E)B%0`````````&!`4!`P+88)\V.3P`````!@0%`0,"V&"0``````````0%
+M!@<``0(#````````````````````````````````JQ&`D0```````@``````
+M```````!````JQ&`E````````@`````````````!````2QN`E````````@``
+M```````````!`````Q$@)P```````@`````````````!`````Q$A)P``````
+M`@`````````````!`````Q$B)P```````@`````````````!`````Q$0)P``
+M`````@`````````````!`````Q$1)P```````@`````````````!````"```
+M````````````````````````````````````````````````````````````
+M(0``````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````"6,`=W+&$.
+M[KI1"9D9Q&T'C_1J<#6E8^FCE62>,HC;#J2XW'D>Z=7@B-G2ERM,M@F]?+%^
+M!RVXYY$=OY!D$+<=\B"P:DAQN?/>0;Z$?=3:&NODW6U1M=3TQX73@U:8;!/`
+MJ&MD>OEB_>S)98I/7`$4V6P&8V,]#_KU#0B-R"!N.UX0:4SD06#5<G%GHM'D
+M`SQ'U`1+_84-TFNU"J7ZJ+4U;)BR0M;)N]M`^;RLXVS8,G5<WT7/#=;<63W1
+MJZPPV28Z`-Y1@%'7R!9AT+^U]+0A(\2S5IF5NL\/I;VXGK@"*`B(!5^RV0S&
+M).D+L8=\;R\13&A8JQUAP3TM9K:00=QV!G';`;P@TI@J$-7OB86Q<1^UM@:E
+MY+^?,]2XZ*+)!W@T^0`/CJ@)EAB8#N&[#6I_+3UM")=L9)$!7&/F]%%K:V)A
+M;!S8,&6%3@!B\NV5!FQ[I0$;P?0(@E?$#_7&V;!E4.FW$NJXOHM\B+G\WQW=
+M8DDMVA7S?-.,94S4^UAALDW.4;4Z=`"\H^(PN]1!I=]*UY78/6W$T:3[]-;3
+M:NEI0_S9;C1&B&>MT+A@VG,M!$3E'0,S7TP*JLE\#=T\<050JD$")Q`0"[Z&
+M(`S));5H5[.%;R`)U&:YG^1AS@[YWEZ8R=DI(IC0L+2HU\<7/;-9@0VT+CM<
+MO;>M;+K`((.X[;:SOYH,XK8#FM*Q=#E'U>JO=]*=%2;;!(,6W',2"V/CA#MD
+ME#YJ;0VH6FIZ"\\.Y)W_"9,GK@`*L9X'?423#_#2HPB':/(!'O["!FE=5V+W
+MRV=E@'$V;!GG!FMN=AO4_N`KTXE:>MH0S$K=9V_?N?GY[[Z.0[ZW%]6.L&#H
+MH];6?I/1H<3"V#A2\M]/\6>[T6=7O*;=!K4_2S:R2-HK#=A,&PJO]DH#-F!Z
+M!$'#[V#?5=]GJ.^.;C%YOFE&C+-ARQJ#9KR@TF\E-N)H4I5W#,P#1PN[N18"
+M(B\F!56^.[K%*`N]LI):M"L$:K-<I__7PC'/T+6+GMDL':[>6[#"9)LF\F/L
+MG*-J=0J3;0*I!@F</S8.ZX5G!W(35P`%@DJ_E11ZN.*N*[%[.!NV#)N.TI(-
+MOM7EM^_<?"'?VPO4TM.&0N+4\?BSW6AN@]H?S1:^@5LFN?;A=[!O=T>W&.9:
+M"(AP:@__RCL&9EP+`1'_GF6/::YB^-/_:V%%SVP6>.(*H.[2#==4@P1.PK,#
+M.6$F9Z?W%F#034=I2=MW;CY*:M&NW%K6V68+WT#P.]@W4ZZ\J<6>N]Y_S[)'
+MZ?^U,!SRO;V*PKK*,).S4Z:CM"0%-M"ZDP;7S2E7WE2_9]DC+GIFL[A*8<0"
+M&VA=E"MO*C>^"[2AC@S#&]\%6HWO`BT`(```!$0````@`0`$1````@$```(Z
+M```"`0$``CH```0!```+````!`$!``L````(`0``!EH!``@!`0`&6@$`$`$`
+M``,4`0`0`0$``Q0!`"`!```&*```(`$!``8H``!``0```Q$``$`!`0`')P``
+M@`$```M'`P"``0$`"T<#``8$!0$#`B!@D%!2```````&!`4!`P)28A4`````
+M````!@0%`0,"V&"?-CD\``````8$!0$#`MA@D`````````"K$8"1```````"
+M``````````````0```"K$8"4```````"``````````````0```!+&X"4````
+M```"``````````````0````#$6`G```````"``````````````0````$````
+M```````````````````````````````````````````````````````````A
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````)8P!W<L80[N
+MNE$)F1G$;0>/]&IP-:5CZ:.59)XRB-L.I+C<>1[IU>"(V=*7*TRV";U\L7X'
+M+;CGD1V_D&00MQWR(+!J2'&Y\]Y!OH1]U-H:Z^3=;5&UU/3'A=.#5IAL$\"H
+M:V1Z^6+][,EEBD]<`139;`9C8ST/^O4-"(W((&X[7A!I3.1!8-5R<6>BT>0#
+M/$?4!$O]A0W2:[4*I?JHM35LF+)"ULF[VT#YO*SC;-@R=5S?1<\-UMQ9/=&K
+MK##9)CH`WE&`4=?(%F'0O[7TM"$CQ+-6F96ZSP^EO;B>N`(H"(@%7[+9#,8D
+MZ0NQAWQO+Q%,:%BK'6'!/2UFMI!!W'8&<=L!O"#2F"H0U>^)A;%Q'[6V!J7D
+MOY\SU+CHHLD'>#3Y``^.J`F6&)@.X;L-:G\M/6T(EVQDD0%<8^;T46MK8F%L
+M'-@P985.`&+R[94&;'NE`1O!]`B"5\0/]<;9L&50Z;<2ZKB^BWR(N?S?'=UB
+M22W:%?-\TXQE3-3[6&&R3<Y1M3IT`+RCXC"[U$&EWTK7E=@];<31I/OTUM-J
+MZ6E#_-EN-$:(9ZW0N&#:<RT$1.4=`S-?3`JJR7P-W3QQ!5"J00(G$!`+OH8@
+M#,DEM6A7LX5O(`G49KF?Y&'.#OG>7IC)V2DBF-"PM*C7QQ<]LUF!#;0N.UR]
+MMZULNL`@@[CMMK._F@SBM@.:TK%T.4?5ZJ]WTIT5)ML$@Q;<<Q(+8^.$.V24
+M/FIM#:A::GH+SP[DG?\)DR>N``JQG@=]1),/\-*C"(=H\@$>_L(&:5U78O?+
+M9V6`<39L&><&:VYV&]3^X"O3B5IZVA#,2MUG;]^Y^?GOOHY#OK<7U8ZP8.BC
+MUM9^D]&AQ,+8.%+RWT_Q9[O19U>\IMT&M3]+-K)(VBL-V$P;"J_V2@,V8'H$
+M0</O8-]5WV>H[XYN,7F^:4:,LV'+&H-FO*#2;R4VXFA2E7<,S`-'"[NY%@(B
+M+R8%5;X[NL4H"[VRDEJT*P1JLURG_]?",<_0M8N>V2P=KMY;L,)DFR;R8^R<
+MHVIU"I-M`JD&"9P_-@[KA6<'<A-7``6"2K^5%'JXXJXKL7LX&[8,FX[2D@V^
+MU>6W[]Q\(=_;"]32TX9"XM3Q^+/=:&Z#VA_-%KZ!6R:Y]N%WL&]W1[<8YEH(
+MB'!J#__*.P9F7`L!$?^>98]IKF+XT_]K847/;!9XX@J@[M(-UU2#!$["LP,Y
+M829GI_<68-!-1VE)VW=N/DIJT:[<6M;99@O?0/`[V#=3KKRIQ9Z[WG_/LD?I
+M_[4P'/*]O8K"NLHPD[-3IJ.T)`4VT+J3!M?-*5?>5+]GV2,N>F:SN$IAQ`(;
+M:%V4*V\J-[X+M*&.#,,;WP5:C>\"+0`@```$1````"`!``1$```"`0```CH`
+M``(!`0`".@``!`$```L````$`0$`"P````@!```&6@$`"`$!``9:`0`0`0``
+M`Q0!`!`!`0`#%`$`(`$```8H```@`0$`!B@``$`!```#$0``0`$!``<G``"`
+M`0``"T<#`(`!`0`+1P,`!@0%`0,"(&"04%(```````8$!0$#`E)B%0``````
+M```&!`4!`P+88)\V.3P`````!@0%`0,"V&"0`````````*L1@)$```````(`
+M````````````!````*L1@)0```````(`````````````!````$L;@)0`````
+M``(`````````````!`````,1@B<```````(`````````````!`````0`````
+M`````````````````````````````````````````````````````````"$`
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````EC`'=RQA#NZZ
+M40F9&<1M!X_T:G`UI6/IHY5DGC*(VPZDN-QY'NG5X(C9TI<K3+8)O7RQ?@<M
+MN.>1';^09!"W'?(@L&I(<;GSWD&^A'W4VAKKY-UM4;74],>%TX-6F&P3P*AK
+M9'KY8OWLR66*3UP!%-EL!F-C/0_Z]0T(C<@@;CM>$&E,Y$%@U7)Q9Z+1Y`,\
+M1]0$2_V%#=)KM0JE^JBU-6R8LD+6R;O;0/F\K.-LV#)U7-]%SPW6W%D]T:NL
+M,-DF.@#>48!1U\@68="_M?2T(2/$LU:9E;K/#Z6]N)ZX`B@(B`5?LMD,QB3I
+M"[&'?&\O$4QH6*L=8<$]+6:VD$'<=@9QVP&\(-*8*A#5[XF%L7$?M;8&I>2_
+MGS/4N.BBR0=X-/D`#XZH"988F`[ANPUJ?RT];0B7;&21`5QCYO11:VMB86P<
+MV#!EA4X`8O+ME09L>Z4!&\'T"()7Q`_UQMFP95#IMQ+JN+Z+?(BY_-\=W6))
+M+=H5\WS3C&5,U/M88;)-SE&U.G0`O*/B,+O40:7?2M>5V#UMQ-&D^_36TVKI
+M:4/\V6XT1HAGK="X8-IS+01$Y1T#,U],"JK)?`W=/'$%4*I!`B<0$`N^AB`,
+MR26U:%>SA6\@"=1FN9_D8<X.^=Y>F,G9*2*8T+"TJ-?'%SVS68$-M"X[7+VW
+MK6RZP""#N.VVL[^:#.*V`YK2L70Y1]7JKW?2G14FVP2#%MQS$@MCXX0[9)0^
+M:FT-J%IJ>@O/#N2=_PF3)ZX`"K&>!WU$DP_PTJ,(AVCR`1[^P@9I75=B]\MG
+M98!Q-FP9YP9K;G8;U/[@*].)6GK:$,Q*W6=OW[GY^>^^CD.^MQ?5CK!@Z*/6
+MUGZ3T:'$PM@X4O+?3_%GN]%G5[RFW0:U/TLVLDC:*PW83!L*K_9*`S9@>@1!
+MP^]@WU7?9ZCOCFXQ>;YI1HRS8<L:@V:\H-)O)3;B:%*5=PS,`T<+N[D6`B(O
+M)@55OCNZQ2@+O;*26K0K!&JS7*?_U\(QS]"UBY[9+!VNWENPPF2;)O)C[)RC
+M:G4*DVT"J08)G#\V#NN%9P=R$U<`!8)*OY44>KCBKBNQ>S@;M@R;CM*2#;[5
+MY;?OW'PAW]L+U-+3AD+BU/'XL]UH;H/:'\T6OH%;)KGVX7>P;W='MQCF6@B(
+M<&H/_\H[!F9<"P$1_YYECVFN8OC3_VMA1<]L%GCB"J#NT@W75(,$3L*S`SEA
+M)F>G]Q9@T$U':4G;=VX^2FK1KMQ:UMEF"]]`\#O8-U.NO*G%GKO>?\^R1^G_
+MM3`<\KV]BL*ZRC"3LU.FH[0D!3;0NI,&U\TI5]Y4OV?9(RYZ9K.X2F'$`AMH
+M790K;RHWO@NTH8X,PQO?!5J-[P(M`"````1$````(`$`!$0```(!```".@``
+M`@$!``(Z```$`0``"P````0!`0`+````"`$```9:`0`(`0$`!EH!`!`!```#
+M%`$`$`$!``,4`0`@`0``!B@``"`!`0`&*```0`$```,1``!``0$`!R<``(`!
+M```+1P,`@`$!``M'`P`&!`4!`P(@8)!04@``````!@0%`0,"4F(5````````
+M``8$!0$#`MA@GS8Y/``````&!`4!`P+88)``````````JQ&`D0```````@``
+M```````````"````JQ&`E````````@`````````````"````2QN`E```````
+M`@`````````````"`````Q$P)P```````@`````````````"`````Q%`)P``
+M`````@`````````````"`````Q%$)P```````@`````````````"````!@``
+M```````````````````````````````````````A````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````_P$`````````````````````````````````
+M``````````````````$`````````(`````````!0````*```````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````````````#_
+M`````````````````````````````````````````0`````````!_P``````
+M``````````````````````````````````$``````````O\`````````````
+M```````````````````````````!``````````/_````````````````````
+M`````````````````````0`````````U_P``````````````````````````
+M``````````````$`````````!/\`````````````````````````````````
+M```````!``````````7_````````````````````````````````````````
+M`0`````````&_P``````````````````````````````````````````````
+M````!_\```````````````````````````````````````````````````K_
+M`````````````````````````````````````````0`````````+_P``````
+M````````````````````````````````````````````#/\`````````````
+M``````````````````````````````````````W_````````````````````
+M```````````````````````````````._P``````````````````````````
+M````````````````````````#_\`````````````````````````````````
+M`````````````````!#_````````````````````````````````````````
+M```````````1_P``````````````````````````````````````````````
+M````$O\``````````````````````````````````````````````````!/_
+M`````````````````````````````````````````0`````````T_P``````
+M``````````````````````````````````$`````````&/\`````````````
+M`````````````````````````````````````$+_````````````````````
+M```````````````````````````````9_P``````````````````````````
+M````````````````````````&O\`````````````````````````````````
+M`````````````````!W_````````````````````````````````````````
+M```````````>_P````````````````````````````````````````$`````
+M````'_\``````````````````````````````````````````````````"#_
+M```````````````````````````````````````````````````A_P``````
+M``````````````````````````````````$`````````(O\`````````````
+M`````````````````````````````````````"/_````````````````````
+M```````````````````````````````D_P``````````````````````````
+M````````````````````````)?\`````````````````````````````````
+M`````````````````"G_````````````````````````````````````````
+M```````````J_P``````````````````````````````````````````````
+M````*_\``````````````````````````````````````````````````"S_
+M`````````````````````````````````````````0`````````M_P``````
+M````````````````````````````````````````````+O\`````````````
+M```````````````````````````!`````````"__````````````````````
+M`````````````````````0`````````W_P``````````````````````````
+M``````````````$`````````./\`````````````````````````````````
+M`````````````````#G_````````````````````````````````````````
+M```````````Z_P````````````````````````````````````````$`````
+M````._\````````````````````````````````````````!`````````#S_
+M`````````````````````````````````````````0`````````]_P``````
+M``````````````````````````````````$`````````/O\`````````````
+M```````````````````````````!`````````$/_````````````````````
+M`````````````````````0````````!$_P``````````````````````````
+M``````````````$`````````,O\`````````````````````````````````
+M```````!`````````#/_````````````````````````````````````````
+M``````````!D_P````````````````````````````````````````$`````
+M````,/\````````````````````````````````````````!`````````&;_
+M`````````````````````````````````````````0````````!G_P``````
+M``````````````````````````````````$`````````_____P``````````
+M````````````````````````````````````````````````````````````
+M````````````````````!```````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````%`0```````"@``````````````"@`````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``8``0`````````````````$````&```````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````"`$!`@``
+M``#P"P```````#@````(`0``````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````'`````````"@`````
+M`````````!@`````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`!0``````````0`!>!`,!PB0`0```````!0````<``````````````!F````
+M`````"0````T```````````````*`0```````$0.0%Z/`HX#C02,!88&@P<4
+M``````````$``7@0#`<(D`$````````4````'```````````````/```````
+M```4````-```````````````-``````````4````3```````````````00``
+M```````<````9```````````````20````````!$#A```````!0```"$````
+M```````````,`````````!0``````````0`!>!`,!PB0`0```````!0````<
+M```````````````=`````````!0````T```````````````>`````````!0`
+M``!,```````````````I`````````!P```!D```````````````Z````````
+M`$0.$```````%````(0``````````````#(`````````%````)P`````````
+M`````!``````````%````+0``````````````%L`````````%````,P`````
+M``````````T`````````%````.0``````````````!P`````````%````/P`
+M`````````````"P`````````%````!0!`````````````#``````````%```
+M`"P!`````````````"T`````````%````$0!`````````````"T`````````
+M%````%P!`````````````"0"````````'````'0!`````````````*@`````
+M````00X01`YP@P(4````E`$`````````````,P`````````4``````````$`
+M`7@0#`<(D`$````````4````'```````````````<@`````````D````-```
+M````````````JP$```````!!#A!!#AA$#B"#`X8"````-````%P`````````
+M`````'H"````````0@X00@X80@X@00XH00XP@P:&!8P$C0..`@`````````4
+M````E```````````````8@`````````4````K```````````````8@``````
+M```<````Q```````````````/P````````!$#B!*C`*#`Q0```#D````````
+M``````""`````````"0```#\``````````````!^`0```````$(.$$$.&$$.
+M((,$A@.,`@`4``````````$``7@0#`<(D`$````````<````'```````````
+M````VP,```````!!#A!$#G"#`C0````\```````````````2"P```````$(.
+M$$(.&$(.($$.*$$.,$0.D`&#!H8%C`2-`XX"````/````'0`````````````
+M`.\`````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&!HP%C02.`X\"````
+M`````!P```"T``````````````"3`````````$0.$```````'````-0`````
+M``````````X`````````1`X0```````D````]```````````````/P$`````
+M``!"#A!!#AA!#B"#!(8#C`(`'````!P!`````````````!$`````````1`X0
+M```````4````/`$`````````````2``````````4````5`$`````````````
+MC``````````D````;`$`````````````$P8```````!$#D!>CP*.`XT$C`6&
+M!H,'%````)0!`````````````'P`````````%````*P!`````````````'``
+M````````/````,0!`````````````/H,````````0@X00@X80@X@0@XH00XP
+M00XX1`Z0`8,'A@:,!8T$C@./`@```````"0````$`@````````````"$````
+M`````$0.*$^,`H8#@P0````````D````+`(`````````````00$```````!$
+M#C!4C0*,`X8$@P4`````)````%0"``````````````@!````````1`Y`7H\"
+MC@.-!(P%A@:#!R0```!\`@````````````#-`P```````$0.,%B.`HT#C`2&
+M!8,&```D````I`(`````````````@P0```````!$#D!>CP*.`XT$C`6&!H,'
+M-````,P"`````````````,D#````````0@X00@X80@X@00XH00XP@P:&!8P$
+MC0..`@`````````\````!`,`````````````CP(```````!"#A!"#AA"#B!"
+M#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`````````-````$0#````````````
+M`#D"````````0@X00@X80@X@00XH00XP@P:&!8P$C0..`@`````````\````
+M?`,`````````````$`(```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&
+MC`6-!(X#CP(`````````/````+P#`````````````*P)````````0@X00@X8
+M0@X@0@XH00XP00XX1`Z``8,'A@:,!8T$C@./`@```````!P```#\`P``````
+M``````"U`````````$0.$```````+````!P$`````````````&L#````````
+M0@X00@X800X@00XH1`XP@P6&!(P#C0(`'````$P$`````````````!T`````
+M````1`X0```````<````;`0`````````````H0````````!!#A"#`@```!0`
+M``",!`````````````!``````````#P```"D!`````````````!]"```````
+M`$(.$$(.&$(.($(.*$$.,$$..$0.4(,'A@:,!8T$C@./`@`````````\````
+MY`0`````````````WP,```````!"#A!"#AA"#B!"#BA!#C!!#CA$#E"#!X8&
+MC`6-!(X#CP(`````````)````"0%`````````````",*````````1`Y07H\"
+MC@.-!(P%A@:#!R0```!,!0````````````!D`````````$$.$$$.&$0.((,#
+MA@(````\````=`4`````````````A@<```````!"#A!"#AA"#B!"#BA!#C!!
+M#CA$#H`!@P>&!HP%C02.`X\"````````)````+0%`````````````+$`````
+M````1`XP5(T"C`.&!(,%`````#P```#<!0`````````````5`@```````$(.
+M$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````D````'`8`
+M````````````M0````````!"#A!!#AA!#B"#!(8#C`(`)````$0&````````
+M`````(T"````````1`XP6(X"C0.,!(8%@P8``!P```!L!@`````````````_
+M`````````$0.$```````+````(P&`````````````+8`````````0@X00@X8
+M00X@00XH1`XP@P6&!(P#C0(`)````+P&`````````````/L"````````1`XP
+M5(T"C`.&!(,%`````!0``````````0`!>!`,!PB0`0```````"0````<````
+M``````````#W`````````$0.,%2-`HP#A@2#!0`````D````1```````````
+M````"`$```````!$#C!8C@*-`XP$A@6#!@``/````&P``````````````)4`
+M````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&!HP%C02.`X\"````````
+M`"0```"L``````````````!1`0```````$0.4%Z/`HX#C02,!88&@P<4````
+MU```````````````9@`````````4````[```````````````1@`````````\
+M````!`$`````````````20$```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#
+M!X8&C`6-!(X#CP(`````````'````$0!`````````````(<`````````1`XP
+M```````4````9`$`````````````5@`````````L````?`$`````````````
+MD@````````!"#A!"#AA!#B!!#BA$#C"#!88$C`.-`@`\````K`$`````````
+M````;P$```````!"#A!"#AA"#B!"#BA!#C!!#CA$#F"#!X8&C`6-!(X#CP(`
+M````````'````.P!`````````````$4`````````00X0@P(````D````#`(`
+M````````````Y`,```````!$#D!>CP*.`XT$C`6&!H,')````#0"````````
+M``````X!````````1`Y`7H\"C@.-!(P%A@:#!R0```!<`@````````````!%
+M`0```````$0.0%Z/`HX#C02,!88&@P<<````A`(`````````````^0``````
+M``!!#A"#`@```"0```"D`@````````````"^`````````$0.,%2-`HP#A@2#
+M!0`````<````S`(`````````````;P````````!$#B!*A@*#`R0```#L`@``
+M``````````##`0```````$0.($Z,`H8#@P0````````D````%`,`````````
+M````4P$```````!$#E!>CP*.`XT$C`6&!H,')````#P#`````````````&`!
+M````````1`Y07H\"C@.-!(P%A@:#!Q0``````````0`!>!`,!PB0`0``````
+M`!0````<``````````````!Q`````````!0````T``````````````!,````
+M`````!0``````````0`!>!`,!PB0`0```````!0````<```````````````+
+M`0```````#P````T``````````````!4!````````$(.$$(.&$(.($(.*$$.
+M,$$..$0.4(,'A@:,!8T$C@./`@`````````4````=```````````````-`$`
+M```````4````C```````````````@0`````````4````I```````````````
+M)P`````````4````O````````````````@`````````4````U```````````
+M````3P`````````D````[```````````````<0$```````!!#A!!#AA$#B"#
+M`X8"````'````!0!`````````````"``````````00X0@P(````<````-`$`
+M````````````(`````````!!#A"#`@```"0```!4`0````````````#N`0``
+M`````$0.,%2-`HP#A@2#!0`````D````?`$`````````````]@````````!$
+M#B!.C`*&`X,$````````/````*0!`````````````%P!````````0@X00@X8
+M0@X@0@XH00XP00XX1`Y`@P>&!HP%C02.`X\"`````````!P```#D`0``````
+M```````\`````````$$.$(,"````)`````0"`````````````&H`````````
+M00X000X81`X@@P.&`@```!0````L`@`````````````O`````````"0```!$
+M`@`````````````A`0```````$0.,%2-`HP#A@2#!0`````<````;`(`````
+M````````+@````````!$#A```````!0```",`@`````````````S````````
+M`"P```"D`@````````````!S`0```````$(.$$(.&$$.($$.*$0.,(,%A@2,
+M`XT"`"0```#4`@````````````!&`0```````$$.$$$.&$0.((,#A@(````<
+M````_`(`````````````[0````````!!#A"#`@```!P````<`P``````````
+M``!>`````````$0.($J&`H,#'````#P#`````````````#4`````````1`X0
+M```````<````7`,`````````````-`````````!$#A```````!0```!\`P``
+M```````````D`````````!P```"4`P`````````````F`````````$0.$```
+M````%````+0#`````````````"0`````````'````,P#`````````````$``
+M````````1`X0```````4````[`,`````````````&@`````````<````!`0`
+M````````````)@````````!$#A```````!0````D!``````````````D````
+M`````!P````\!``````````````X`````````$0.$```````%````%P$````
+M`````````"0`````````)````'0$`````````````!,#````````1`Y07H\"
+MC@.-!(P%A@:#!R0```"<!`````````````"[`````````$0.,%2-`HP#A@2#
+M!0`````D````Q`0`````````````R@````````!$#C!8C@*-`XP$A@6#!@``
+M)````.P$`````````````.L`````````1`Y`7H\"C@.-!(P%A@:#!R0````4
+M!0````````````#]`````````$0.0%Z/`HX#C02,!88&@P<D````/`4`````
+M````````D@$```````!!#A!!#AA$#B"#`X8"````)````&0%````````````
+M`$<!````````1`Y`7H\"C@.-!(P%A@:#!R0```",!0`````````````$`0``
+M`````$0.,%B.`HT#C`2&!8,&```D````M`4`````````````#`$```````!$
+M#C!8C@*-`XP$A@6#!@``)````-P%`````````````"H!````````1`Y`7H\"
+MC@.-!(P%A@:#!R0````$!@`````````````F`0```````$0.,%B.`HT#C`2&
+M!8,&```D````+`8`````````````J0````````!$#B!.C`*&`X,$````````
+M%````%0&`````````````%@`````````'````&P&`````````````#P`````
+M````1`X@2H8"@P,4````C`8``````````````@$````````<````I`8`````
+M````````/`````````!$#B!*A@*#`Q0```#$!@````````````#B````````
+M`"0```#<!@````````````!!`0```````$(.$$$.&$$.((,$A@.,`@`4````
+M!`<`````````````)P`````````4````'`<`````````````(P`````````D
+M````-`<`````````````AP,```````!!#A!!#AA$#B"#`X8"````'````%P'
+M`````````````(\`````````1`X@2H8"@P,D````?`<`````````````3```
+M``````!"#A!!#AA$#B"#`XP"````%````*0'`````````````&\`````````
+M)````+P'`````````````#@!````````1`XH4XT"C`.&!(,%`````"0```#D
+M!P````````````"9`0```````$0.,%2-`HP#A@2#!0`````D````#`@`````
+M````````J`````````!$#C!4C0*,`X8$@P4`````)````#0(````````````
+M`(<!````````00X000X81`X@@P.&`@```"0```!<"`````````````#P````
+M`````$0.0%Z/`HX#C02,!88&@P<D````A`@`````````````A@````````!$
+M#B!.C`*&`X,$````````)````*P(`````````````*\`````````1`X@3HP"
+MA@.#!````````#0```#4"`````````````#O`0```````$(.$$(.&$(.($$.
+M*$$.,(,&A@6,!(T#C@(`````````%``````````!``%X$`P'")`!````````
+M%````!P``````````````!4`````````%````#0``````````````*(`````
+M````)````$P``````````````&(`````````0@X000X800X@@P2&`XP"`!P`
+M``!T```````````````I`````````$$.$(,"````)````)0`````````````
+M`*`!````````1`XP5(T"C`.&!(,%`````"P```"\``````````````">````
+M`````$(.$$(.&$$.($$.*(,%A@2,`XT"`````!P```#L``````````````"$
+M`````````$0.$```````'`````P!`````````````(0`````````1`X0````
+M```D````+`$`````````````!P$```````!!#A!!#AA$#B"#`X8"````+```
+M`%0!`````````````.\`````````0@X00@X800X@00XH1`XP@P6&!(P#C0(`
+M'````(0!`````````````'0`````````00X0@P(````4````I`$`````````
+M````&@`````````4````O`$`````````````,0`````````4````U`$`````
+M````````-``````````D````[`$`````````````HPD```````!$#F!>CP*.
+M`XT$C`6&!H,'%````!0"`````````````$P`````````)````"P"````````
+M`````)8!````````00X000X81`X@@P.&`@```!P```!4`@````````````#W
+M`````````$$.$(,"````'````'0"`````````````'D!````````00X0@P(`
+M```4``````````$``7@0#`<(D`$````````4````'```````````````=P``
+M```````\````-```````````````@P(```````!"#A!"#AA"#B!"#BA!#C!!
+M#CA$#D"#!X8&C`6-!(X#CP(`````````)````'0``````````````)D`````
+M````00X000X81`X@@P.&`@```"P```"<```````````````[`@```````$(.
+M$$(.&$$.($$.*$0.,(,%A@2,`XT"`"0```#,``````````````#C````````
+M`$0.0%Z/`HX#C02,!88&@P<D````]```````````````N0````````!$#D!>
+MCP*.`XT$C`6&!H,'/````!P!`````````````,`"````````0@X00@X80@X@
+M0@XH00XP00XX1PZ`!8,'A@:,!8T$C@./`@```````#P```!<`0``````````
+M``#T`@```````$(.$$(.&$(.($(.*$$.,$$..$<.\`2#!X8&C`6-!(X#CP(`
+M```````\````G`$`````````````C0,```````!"#A!"#AA"#B!"#BA!#C!!
+M#CA'#H`%@P>&!HP%C02.`X\"````````/````-P!`````````````,<#````
+M````0@X00@X80@X@0@XH00XP00XX1P[@!(,'A@:,!8T$C@./`@```````"P`
+M```<`@````````````#K`````````$(.$$(.&$$.($$.*$0.,(,%A@2,`XT"
+M`!0```!,`@````````````!-`````````!0```!D`@````````````!-````
+M`````"0```!\`@````````````#X`P```````$0.8%Z/`HX#C02,!88&@P<\
+M````I`(`````````````)`8```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#
+M!X8&C`6-!(X#CP(`````````)````.0"`````````````!H#````````1`Y`
+M7H\"C@.-!(P%A@:#!R0````,`P`````````````+!P```````$0.8%Z/`HX#
+MC02,!88&@P<D````-`,`````````````N`0```````!$#C!8C@*-`XP$A@6#
+M!@``/````%P#`````````````-X"````````0@X00@X80@X@0@XH00XP00XX
+M1`Y@@P>&!HP%C02.`X\"`````````"0```"<`P````````````#S````````
+M`$0.($Z,`H8#@P0````````\````Q`,`````````````P`````````!"#A!"
+M#AA"#B!"#BA!#C!!#CA$#F"#!X8&C`6-!(X#CP(`````````/`````0$````
+M`````````,``````````0@X00@X80@X@0@XH00XP00XX1`Y@@P>&!HP%C02.
+M`X\"`````````!0```!$!`````````````!D`````````!0```!<!```````
+M```````'`````````#P```!T!`````````````"9`@```````$(.$$(.&$(.
+M($(.*$$.,$$..$0.8(,'A@:,!8T$C@./`@`````````4````M`0`````````
+M````+0`````````L````S`0`````````````!P@```````!"#A!"#AA!#B!!
+M#BA$#C"#!88$C`.-`@`<````_`0`````````````2@````````!!#A"#`@``
+M`!0````<!0````````````!!`````````"0````T!0`````````````3"```
+M`````$0.0%Z/`HX#C02,!88&@P<D````7`4`````````````N0,```````!$
+M#C!4C0*,`X8$@P4`````)````(0%`````````````/L!````````1`XP5(T"
+MC`.&!(,%`````"0```"L!0````````````#/`````````$0.,%2-`HP#A@2#
+M!0`````\````U`4`````````````X0````````!"#A!"#AA"#B!"#BA!#C!!
+M#CA$#D"#!X8&C`6-!(X#CP(`````````%````!0&`````````````"T`````
+M````)````"P&`````````````)8"````````0@X000X800X@@P2&`XP"`"0`
+M``!4!@````````````"2`````````$0.($Z,`H8#@P0````````D````?`8`
+M````````````D@````````!$#B!.C`*&`X,$````````)````*0&````````
+M`````(<`````````1`X@3HP"A@.#!````````"0```#,!@````````````"'
+M`````````$0.($Z,`H8#@P0````````D````]`8`````````````D@``````
+M``!$#B!.C`*&`X,$````````)````!P'`````````````(<`````````1`X@
+M3HP"A@.#!````````"0```!$!P````````````"'`````````$0.($Z,`H8#
+M@P0````````D````;`<`````````````N@````````!$#C!8C@*-`XP$A@6#
+M!@``)````)0'`````````````.4`````````1`Y`7H\"C@.-!(P%A@:#!R0`
+M``"\!P````````````!,"````````$0.0%Z/`HX#C02,!88&@P<D````Y`<`
+M````````````<P<```````!$#D!>CP*.`XT$C`6&!H,'%``````````!``%X
+M$`P'")`!````````%````!P``````````````#<`````````%````#0`````
+M`````````"<`````````+````$P``````````````(X`````````0@X00@X8
+M00X@00XH@P6&!(P#C0(`````)````'P``````````````%@`````````1`X@
+M3HT"C`.#!````````"0```"D``````````````!.`````````$(.$$$.&$$.
+M((,$A@.,`@`<````S```````````````&@````````!!#A"#`@```"0```#L
+M``````````````#T`````````$0.,%B.`HT#C`2&!8,&```D````%`$`````
+M````````@0````````!$#C!4C0*,`X8$@P4`````/````#P!````````````
+M`!P"````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&!HP%C02.`X\"````
+M`````!P```!\`0````````````!2`````````$0.($J,`H,#'````)P!````
+M`````````%(`````````1`X@2HP"@P,D````O`$`````````````[```````
+M``!$#D!>CP*.`XT$C`6&!H,''````.0!`````````````%(`````````1`X@
+M2HP"@P,<````!`(`````````````4@````````!$#B!*C`*#`SP````D`@``
+M``````````!D`@```````$(.$$(.&$(.($(.*$$.,$$..$0.8(,'A@:,!8T$
+MC@./`@`````````D````9`(`````````````U0(```````!$#E!>CP*.`XT$
+MC`6&!H,''````(P"`````````````$4`````````1`X0```````<````K`(`
+M````````````-P````````!$#A```````!P```#,`@`````````````<````
+M`````$0.$```````'````.P"`````````````#@`````````1`X0```````<
+M````#`,`````````````/P````````!$#A```````"0````L`P``````````
+M``"E`````````$(.$$$.&$$.((,$A@.,`@`4``````````$``7@0#`<(D`$`
+M```````4````'```````````````%@`````````4````-```````````````
+M$``````````<````3```````````````M@````````!!#A"#`@```!0```!L
+M``````````````!6`````````"0```"$``````````````"D`````````$0.
+M($Z,`H8#@P0````````D````K```````````````Y`````````!$#D!>CP*.
+M`XT$C`6&!H,'/````-0``````````````#0!````````0@X00@X80@X@0@XH
+M00XP00XX1`Y`@P>&!HP%C02.`X\"`````````#0````4`0`````````````Z
+M`0```````$(.$$(.&$(.($$.*$$.,(,&A@6,!(T#C@(`````````%```````
+M```!``%X$`P'")`!````````%````!P``````````````"X!````````'```
+M`#0``````````````*<!````````00X0@P(````4````5```````````````
+M!0`````````4````;```````````````!@`````````4````A```````````
+M````'``````````4````G```````````````'0`````````4````M```````
+M````````*P`````````4````S```````````````)P`````````D````Y```
+M````````````30$```````!$#C!8C@*-`XP$A@6#!@``)`````P!````````
+M`````#P!````````00X000X81`Y`@P.&`@```!0````T`0````````````!`
+M`````````"0```!,`0````````````":`````````$0.*%.-`HP#A@2#!0``
+M```4````=`$`````````````8``````````4````C`$`````````````%P``
+M```````4````I`$`````````````#0,````````4``````````$``7@0#`<(
+MD`$````````D````'```````````````6@````````!"#A!!#AA!#B"#!(8#
+MC`(`%````$0``````````````$``````````%````%P```````````````X`
+M````````)````'0``````````````)0`````````1`XP3XP"A@.#!```````
+M`#0```"<``````````````!F`````````$(.$$(.&$(.($$.*$$.,$0.0(,&
+MA@6,!(T#C@(`````'````-0``````````````'4`````````00X01`X@@P(D
+M````]```````````````<@````````!!#A!!#AA$#B"#`X8"````)````!P!
+M`````````````*H`````````00X000X81`X@@P.&`@```"0```!$`0``````
+M``````"&`````````$$.$$$.&$0.((,#A@(````D````;`$`````````````
+ML@````````!$#C!4C0*,`X8$@P4`````)````)0!`````````````'$`````
+M````1`XP6(X"C0.,!(8%@P8``"0```"\`0````````````"A`````````$0.
+M,$^,`H8#@P0````````D````Y`$`````````````'P$```````!$#D!>CP*.
+M`XT$C`6&!H,')`````P"`````````````*(`````````00X000X81`X@@P.&
+M`@```"0````T`@````````````"B`````````$$.$$$.&$0.((,#A@(````D
+M````7`(`````````````T0````````!!#A!!#AA$#B"#`X8"````)````(0"
+M`````````````-P`````````00X000X81`X@@P.&`@```!P```"L`@``````
+M``````"$`````````$$.$(,"````)````,P"``````````````L!````````
+M1`XP5(T"C`.&!(,%`````!0``````````0`!>!`,!PB0`0```````!0````<
+M```````````````+`````````!0````T```````````````&`````````!0`
+M``!,``````````````!&`````````#0```!D``````````````#W````````
+M`$(.$$(.&$(.($$.*$$.,$0..(,&A@6,!(T#C@(`````/````)P`````````
+M`````-H!````````0@X00@X80@X@0@XH00XP00XX1`Y0@P>&!HP%C02.`X\"
+M`````````#P```#<``````````````!+`0```````$(.$$(.&$(.($(.*$$.
+M,$$..$0.0(,'A@:,!8T$C@./`@`````````4````'`$`````````````!@``
+M```````4````-`$`````````````!@`````````4````3`$`````````````
+M!@`````````T````9`$`````````````"@,```````!"#A!"#AA"#B!!#BA!
+M#C"#!H8%C`2-`XX"`````````!P```"<`0`````````````?`````````$$.
+M$(,"````'````+P!`````````````'H`````````1`X@2H8"@P,D````W`$`
+M````````````WP````````!!#A!!#AA$#B"#`X8"````+`````0"````````
+M`````%T!````````0@X000X800X@1`Y0@P2&`XP"````````%````#0"````
+M``````````(`````````)````$P"`````````````!$"````````00X000X8
+M1`X@@P.&`@```!0```!T`@`````````````(`````````"0```",`@``````
+M```````H`0```````$0.8$^,`H8#@P0````````\````M`(`````````````
+M1P4```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`````
+M````/````/0"`````````````.T"````````0@X00@X80@X@0@XH00XP00XX
+M1`Y`@P>&!HP%C02.`X\"`````````"0````T`P````````````!=`0``````
+M`$0.,%B.`HT#C`2&!8,&```D````7`,`````````````O`````````!$#B!.
+MC`*&`X,$````````)````(0#`````````````'D&````````1`Y`7H\"C@.-
+M!(P%A@:#!R0```"L`P````````````"4`P```````$0.<%Z/`HX#C02,!88&
+M@P<<````U`,`````````````1@````````!$#B!*C`*#`QP```#T`P``````
+M```````1`````````$0.$```````%````!0$``````````````8`````````
+M%````"P$`````````````%\`````````%````$0$`````````````#P`````
+M````'````%P$`````````````#P`````````1`X828P"@P,D````?`0`````
+M````````10,```````!!#A!!#AB#`X8"````````)````*0$````````````
+M`(T&````````00X000X8@P.&`@```````"0```#,!`````````````#<!@``
+M`````$(.$$$.&$$.((,$A@.,`@`4````]`0`````````````<P(````````4
+M````#`4`````````````$P`````````D````)`4`````````````B`$`````
+M``!$#D!>CP*.`XT$C`6&!H,')````$P%`````````````-,$````````1`Y0
+M7H\"C@.-!(P%A@:#!R0```!T!0````````````#1`````````$0.,%2-`HP#
+MA@2#!0`````<````G`4`````````````>P````````!$#B!*A@*#`R0```"\
+M!0````````````"(`0```````$0.0%Z/`HX#C02,!88&@P<<````Y`4`````
+M````````G`````````!$#A```````!0````$!@````````````!>````````
+M`!0````<!@````````````!>`````````!P````T!@`````````````>````
+M`````$$.$(,"````'````%0&`````````````!X`````````00X0@P(````L
+M````=`8`````````````CP8```````!"#A!"#AA!#B!!#BA$#H`!@P6&!(P#
+MC0(<````I`8`````````````<`````````!$#B!*C`*#`QP```#$!@``````
+M```````:`````````$0.$```````%``````````!``%X$`P'")`!````````
+M%````!P``````````````&8`````````)````#0```````````````H!````
+M````1`Y`7H\"C@.-!(P%A@:#!Q0``````````0`!>!`,!PB0`0```````!0`
+M```<```````````````\`````````!0````T```````````````T````````
+M`!0```!,``````````````!!`````````!P```!D``````````````!)````
+M`````$0.$```````%````(0```````````````P`````````%``````````!
+M``%X$`P'")`!````````%````!P``````````````!T`````````%````#0`
+M`````````````!X`````````%````$P``````````````"D`````````'```
+M`&0``````````````#H`````````1`X0```````4````A```````````````
+M,@`````````4````G```````````````$``````````4````M```````````
+M````6P`````````4````S```````````````#0`````````4````Y```````
+M````````'``````````4````_```````````````+``````````4````%`$`
+M````````````,``````````4````+`$`````````````+0`````````4````
+M1`$`````````````+0`````````4````7`$`````````````)`(````````<
+M````=`$`````````````J`````````!!#A!$#G"#`A0```"4`0``````````
+M```S`````````!0``````````0`!>!`,!PB0`0```````!0````<````````
+M``````!R`````````"0````T``````````````"K`0```````$$.$$$.&$0.
+M((,#A@(````T````7```````````````>@(```````!"#A!"#AA"#B!!#BA!
+M#C"#!H8%C`2-`XX"`````````!0```"4``````````````!B`````````!0`
+M``"L``````````````!B`````````!P```#$```````````````_````````
+M`$0.($J,`H,#%````.0``````````````((`````````)````/P`````````
+M`````'X!````````0@X000X800X@@P2&`XP"`!0``````````0`!>!`,!PB0
+M`0```````!P````<``````````````#;`P```````$$.$$0.<(,"-````#P`
+M`````````````!(+````````0@X00@X80@X@00XH00XP1`Z0`8,&A@6,!(T#
+MC@(````\````=```````````````[P````````!"#A!"#AA"#B!"#BA!#C!!
+M#CA$#D"#!X8&C`6-!(X#CP(`````````'````+0``````````````),`````
+M````1`X0```````<````U```````````````#@````````!$#A```````"0`
+M``#T```````````````_`0```````$(.$$$.&$$.((,$A@.,`@`<````'`$`
+M````````````$0````````!$#A```````!0````\`0````````````!(````
+M`````!0```!4`0````````````",`````````"0```!L`0`````````````3
+M!@```````$0.0%Z/`HX#C02,!88&@P<4````E`$`````````````?```````
+M```4````K`$`````````````<``````````\````Q`$`````````````^@P`
+M``````!"#A!"#AA"#B!"#BA!#C!!#CA$#I`!@P>&!HP%C02.`X\"````````
+M)`````0"`````````````(0`````````1`XH3XP"A@.#!````````"0````L
+M`@````````````!!`0```````$0.,%2-`HP#A@2#!0`````D````5`(`````
+M````````"`$```````!$#D!>CP*.`XT$C`6&!H,')````'P"````````````
+M`,T#````````1`XP6(X"C0.,!(8%@P8``"0```"D`@````````````"#!```
+M`````$0.0%Z/`HX#C02,!88&@P<T````S`(`````````````R0,```````!"
+M#A!"#AA"#B!!#BA!#C"#!H8%C`2-`XX"`````````#P````$`P``````````
+M``"/`@```````$(.$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@``
+M```````T````1`,`````````````.0(```````!"#A!"#AA"#B!!#BA!#C"#
+M!H8%C`2-`XX"`````````#P```!\`P`````````````0`@```````$(.$$(.
+M&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````\````O`,`````
+M````````K`D```````!"#A!"#AA"#B!"#BA!#C!!#CA$#H`!@P>&!HP%C02.
+M`X\"````````'````/P#`````````````+4`````````1`X0```````L````
+M'`0`````````````:P,```````!"#A!"#AA!#B!!#BA$#C"#!88$C`.-`@`<
+M````3`0`````````````'0````````!$#A```````!P```!L!```````````
+M``"A`````````$$.$(,"````%````(P$`````````````$``````````/```
+M`*0$`````````````'T(````````0@X00@X80@X@0@XH00XP00XX1`Y0@P>&
+M!HP%C02.`X\"`````````#P```#D!`````````````#?`P```````$(.$$(.
+M&$(.($(.*$$.,$$..$0.4(,'A@:,!8T$C@./`@`````````D````)`4`````
+M````````(PH```````!$#E!>CP*.`XT$C`6&!H,')````$P%````````````
+M`&0`````````00X000X81`X@@P.&`@```#P```!T!0````````````"&!P``
+M`````$(.$$(.&$(.($(.*$$.,$$..$0.@`&#!X8&C`6-!(X#CP(````````D
+M````M`4`````````````L0````````!$#C!4C0*,`X8$@P4`````/````-P%
+M`````````````!4"````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&!HP%
+MC02.`X\"`````````"0````<!@````````````"U`````````$(.$$$.&$$.
+M((,$A@.,`@`D````1`8`````````````C0(```````!$#C!8C@*-`XP$A@6#
+M!@``'````&P&`````````````#\`````````1`X0```````L````C`8`````
+M````````M@````````!"#A!"#AA!#B!!#BA$#C"#!88$C`.-`@`D````O`8`
+M````````````^P(```````!$#C!4C0*,`X8$@P4`````%``````````!``%X
+M$`P'")`!````````)````!P``````````````/<`````````1`XP5(T"C`.&
+M!(,%`````"0```!$```````````````(`0```````$0.,%B.`HT#C`2&!8,&
+M```\````;```````````````E0````````!"#A!"#AA"#B!"#BA!#C!!#CA$
+M#D"#!X8&C`6-!(X#CP(`````````)````*P``````````````%$!````````
+M1`Y07H\"C@.-!(P%A@:#!Q0```#4``````````````!F`````````!0```#L
+M``````````````!&`````````#P````$`0````````````!)`0```````$(.
+M$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````<````1`$`
+M````````````AP````````!$#C```````!0```!D`0````````````!6````
+M`````"P```!\`0````````````"2`````````$(.$$(.&$$.($$.*$0.,(,%
+MA@2,`XT"`#P```"L`0````````````!O`0```````$(.$$(.&$(.($(.*$$.
+M,$$..$0.8(,'A@:,!8T$C@./`@`````````<````[`$`````````````10``
+M``````!!#A"#`@```"0````,`@````````````#D`P```````$0.0%Z/`HX#
+MC02,!88&@P<D````-`(`````````````#@$```````!$#D!>CP*.`XT$C`6&
+M!H,')````%P"`````````````$4!````````1`Y`7H\"C@.-!(P%A@:#!QP`
+M``"$`@````````````#Y`````````$$.$(,"````)````*0"````````````
+M`+X`````````1`XP5(T"C`.&!(,%`````!P```#,`@````````````!O````
+M`````$0.($J&`H,#)````.P"`````````````,,!````````1`X@3HP"A@.#
+M!````````"0````4`P````````````!3`0```````$0.4%Z/`HX#C02,!88&
+M@P<D````/`,`````````````8`$```````!$#E!>CP*.`XT$C`6&!H,'%```
+M```````!``%X$`P'")`!````````%````!P``````````````'$`````````
+M%````#0``````````````$P`````````%``````````!``%X$`P'")`!````
+M````%````!P```````````````L!````````/````#0``````````````%0$
+M````````0@X00@X80@X@0@XH00XP00XX1`Y0@P>&!HP%C02.`X\"````````
+M`!0```!T```````````````T`0```````!0```",``````````````"!````
+M`````!0```"D```````````````G`````````!0```"\```````````````"
+M`````````!0```#4``````````````!/`````````"0```#L````````````
+M``!Q`0```````$$.$$$.&$0.((,#A@(````<````%`$`````````````(```
+M``````!!#A"#`@```!P````T`0`````````````@`````````$$.$(,"````
+M)````%0!`````````````.X!````````1`XP5(T"C`.&!(,%`````"0```!\
+M`0````````````#V`````````$0.($Z,`H8#@P0````````\````I`$`````
+M````````7`$```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#
+MCP(`````````'````.0!`````````````#P`````````00X0@P(````D````
+M!`(`````````````:@````````!!#A!!#AA$#B"#`X8"````%````"P"````
+M`````````"\`````````)````$0"`````````````"$!````````1`XP5(T"
+MC`.&!(,%`````!P```!L`@`````````````N`````````$0.$```````%```
+M`(P"`````````````#,`````````+````*0"`````````````',!````````
+M0@X00@X800X@00XH1`XP@P6&!(P#C0(`)````-0"`````````````$8!````
+M````00X000X81`X@@P.&`@```!P```#\`@````````````#M`````````$$.
+M$(,"````'````!P#`````````````%X`````````1`X@2H8"@P,<````/`,`
+M````````````-0````````!$#A```````!P```!<`P`````````````T````
+M`````$0.$```````%````'P#`````````````"0`````````'````)0#````
+M`````````"8`````````1`X0```````4````M`,`````````````)```````
+M```<````S`,`````````````0`````````!$#A```````!0```#L`P``````
+M```````:`````````!P````$!``````````````F`````````$0.$```````
+M%````"0$`````````````"0`````````'````#P$`````````````#@`````
+M````1`X0```````4````7`0`````````````)``````````D````=`0`````
+M````````$P,```````!$#E!>CP*.`XT$C`6&!H,')````)P$````````````
+M`+L`````````1`XP5(T"C`.&!(,%`````"0```#$!`````````````#*````
+M`````$0.,%B.`HT#C`2&!8,&```D````[`0`````````````ZP````````!$
+M#D!>CP*.`XT$C`6&!H,')````!0%`````````````/T`````````1`Y`7H\"
+MC@.-!(P%A@:#!R0````\!0````````````"2`0```````$$.$$$.&$0.((,#
+MA@(````D````9`4`````````````1P$```````!$#D!>CP*.`XT$C`6&!H,'
+M)````(P%``````````````0!````````1`XP6(X"C0.,!(8%@P8``"0```"T
+M!0`````````````,`0```````$0.,%B.`HT#C`2&!8,&```D````W`4`````
+M````````*@$```````!$#D!>CP*.`XT$C`6&!H,')`````0&````````````
+M`"8!````````1`XP6(X"C0.,!(8%@P8``"0````L!@````````````"I````
+M`````$0.($Z,`H8#@P0````````4````5`8`````````````6``````````<
+M````;`8`````````````/`````````!$#B!*A@*#`Q0```",!@``````````
+M```"`0```````!P```"D!@`````````````\`````````$0.($J&`H,#%```
+M`,0&`````````````.(`````````)````-P&`````````````$$!````````
+M0@X000X800X@@P2&`XP"`!0````$!P`````````````G`````````!0````<
+M!P`````````````C`````````"0````T!P````````````"'`P```````$$.
+M$$$.&$0.((,#A@(````<````7`<`````````````CP````````!$#B!*A@*#
+M`R0```!\!P````````````!,`````````$(.$$$.&$0.((,#C`(````4````
+MI`<`````````````;P`````````D````O`<`````````````.`$```````!$
+M#BA3C0*,`X8$@P4`````)````.0'`````````````)D!````````1`XP5(T"
+MC`.&!(,%`````"0````,"`````````````"H`````````$0.,%2-`HP#A@2#
+M!0`````D````-`@`````````````AP$```````!!#A!!#AA$#B"#`X8"````
+M)````%P(`````````````/``````````1`Y`7H\"C@.-!(P%A@:#!R0```"$
+M"`````````````"&`````````$0.($Z,`H8#@P0````````D````K`@`````
+M````````KP````````!$#B!.C`*&`X,$````````-````-0(````````````
+M`.\!````````0@X00@X80@X@00XH00XP@P:&!8P$C0..`@`````````4````
+M``````$``7@0#`<(D`$````````4````'```````````````%0`````````4
+M````-```````````````H@`````````D````3```````````````8@``````
+M``!"#A!!#AA!#B"#!(8#C`(`'````'0``````````````"D`````````00X0
+M@P(````D````E```````````````H`$```````!$#C!4C0*,`X8$@P4`````
+M+````+P``````````````)X`````````0@X00@X800X@00XH@P6&!(P#C0(`
+M````'````.P``````````````(0`````````1`X0```````<````#`$`````
+M````````A`````````!$#A```````"0````L`0`````````````'`0``````
+M`$$.$$$.&$0.((,#A@(````L````5`$`````````````[P````````!"#A!"
+M#AA!#B!!#BA$#C"#!88$C`.-`@`<````A`$`````````````=`````````!!
+M#A"#`@```!0```"D`0`````````````:`````````!0```"\`0``````````
+M```Q`````````!0```#4`0`````````````T`````````"0```#L`0``````
+M``````"C"0```````$0.8%Z/`HX#C02,!88&@P<4````%`(`````````````
+M3``````````D````+`(`````````````E@$```````!!#A!!#AA$#B"#`X8"
+M````'````%0"`````````````/<`````````00X0@P(````<````=`(`````
+M````````>0$```````!!#A"#`@```!0``````````0`!>!`,!PB0`0``````
+M`!0````<``````````````!W`````````#P````T``````````````"#`@``
+M`````$(.$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````D
+M````=```````````````F0````````!!#A!!#AA$#B"#`X8"````+````)P`
+M`````````````#L"````````0@X00@X800X@00XH1`XP@P6&!(P#C0(`)```
+M`,P``````````````.,`````````1`Y`7H\"C@.-!(P%A@:#!R0```#T````
+M``````````"Y`````````$0.0%Z/`HX#C02,!88&@P<\````'`$`````````
+M````P`(```````!"#A!"#AA"#B!"#BA!#C!!#CA'#H`%@P>&!HP%C02.`X\"
+M````````/````%P!`````````````/0"````````0@X00@X80@X@0@XH00XP
+M00XX1P[P!(,'A@:,!8T$C@./`@```````#P```"<`0````````````"-`P``
+M`````$(.$$(.&$(.($(.*$$.,$$..$<.@`6#!X8&C`6-!(X#CP(````````\
+M````W`$`````````````QP,```````!"#A!"#AA"#B!"#BA!#C!!#CA'#N`$
+M@P>&!HP%C02.`X\"````````+````!P"`````````````.L`````````0@X0
+M0@X800X@00XH1`XP@P6&!(P#C0(`%````$P"`````````````$T`````````
+M%````&0"`````````````$T`````````)````'P"`````````````/@#````
+M````1`Y@7H\"C@.-!(P%A@:#!SP```"D`@`````````````D!@```````$(.
+M$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````D````Y`(`
+M````````````&@,```````!$#D!>CP*.`XT$C`6&!H,')`````P#````````
+M``````L'````````1`Y@7H\"C@.-!(P%A@:#!R0````T`P````````````"X
+M!````````$0.,%B.`HT#C`2&!8,&```\````7`,`````````````W@(`````
+M``!"#A!"#AA"#B!"#BA!#C!!#CA$#F"#!X8&C`6-!(X#CP(`````````)```
+M`)P#`````````````/,`````````1`X@3HP"A@.#!````````#P```#$`P``
+M``````````#``````````$(.$$(.&$(.($(.*$$.,$$..$0.8(,'A@:,!8T$
+MC@./`@`````````\````!`0`````````````P`````````!"#A!"#AA"#B!"
+M#BA!#C!!#CA$#F"#!X8&C`6-!(X#CP(`````````%````$0$````````````
+M`&0`````````%````%P$``````````````<`````````/````'0$````````
+M`````)D"````````0@X00@X80@X@0@XH00XP00XX1`Y@@P>&!HP%C02.`X\"
+M`````````!0```"T!``````````````M`````````"P```#,!```````````
+M```'"````````$(.$$(.&$$.($$.*$0.,(,%A@2,`XT"`!P```#\!```````
+M``````!*`````````$$.$(,"````%````!P%`````````````$$`````````
+M)````#0%`````````````!,(````````1`Y`7H\"C@.-!(P%A@:#!R0```!<
+M!0````````````"Y`P```````$0.,%2-`HP#A@2#!0`````D````A`4`````
+M````````^P$```````!$#C!4C0*,`X8$@P4`````)````*P%````````````
+M`,\`````````1`XP5(T"C`.&!(,%`````#P```#4!0````````````#A````
+M`````$(.$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````4
+M````%`8`````````````+0`````````D````+`8`````````````E@(`````
+M``!"#A!!#AA!#B"#!(8#C`(`)````%0&`````````````)(`````````1`X@
+M3HP"A@.#!````````"0```!\!@````````````"2`````````$0.($Z,`H8#
+M@P0````````D````I`8`````````````AP````````!$#B!.C`*&`X,$````
+M````)````,P&`````````````(<`````````1`X@3HP"A@.#!````````"0`
+M``#T!@````````````"2`````````$0.($Z,`H8#@P0````````D````'`<`
+M````````````AP````````!$#B!.C`*&`X,$````````)````$0'````````
+M`````(<`````````1`X@3HP"A@.#!````````"0```!L!P````````````"Z
+M`````````$0.,%B.`HT#C`2&!8,&```D````E`<`````````````Y0``````
+M``!$#D!>CP*.`XT$C`6&!H,')````+P'`````````````$P(````````1`Y`
+M7H\"C@.-!(P%A@:#!R0```#D!P````````````!S!P```````$0.0%Z/`HX#
+MC02,!88&@P<4``````````$``7@0#`<(D`$````````4````'```````````
+M````-P`````````4````-```````````````)P`````````L````3```````
+M````````C@````````!"#A!"#AA!#B!!#BB#!88$C`.-`@`````D````?```
+M````````````6`````````!$#B!.C0*,`X,$````````)````*0`````````
+M`````$X`````````0@X000X800X@@P2&`XP"`!P```#,```````````````:
+M`````````$$.$(,"````)````.P``````````````/0`````````1`XP6(X"
+MC0.,!(8%@P8``"0````4`0````````````"!`````````$0.,%2-`HP#A@2#
+M!0`````\````/`$`````````````'`(```````!"#A!"#AA"#B!"#BA!#C!!
+M#CA$#D"#!X8&C`6-!(X#CP(`````````'````'P!`````````````%(`````
+M````1`X@2HP"@P,<````G`$`````````````4@````````!$#B!*C`*#`R0`
+M``"\`0````````````#L`````````$0.0%Z/`HX#C02,!88&@P<<````Y`$`
+M````````````4@````````!$#B!*C`*#`QP````$`@````````````!2````
+M`````$0.($J,`H,#/````"0"`````````````&0"````````0@X00@X80@X@
+M0@XH00XP00XX1`Y@@P>&!HP%C02.`X\"`````````"0```!D`@``````````
+M``#5`@```````$0.4%Z/`HX#C02,!88&@P<<````C`(`````````````10``
+M``````!$#A```````!P```"L`@`````````````W`````````$0.$```````
+M)````,P"`````````````$T`````````1`X@3HT"C`.#!````````!0```#T
+M`@`````````````9`````````!P````,`P````````````#F`````````$0.
+M$```````)````"P#`````````````*4`````````0@X000X800X@@P2&`XP"
+M`!0``````````0`!>!`,!PB0`0```````!0````<```````````````6````
+M`````!0````T```````````````0`````````!P```!,``````````````#F
+M`````````$$.$(,"````%````&P``````````````%8`````````)````(0`
+M`````````````*0`````````1`X@3HP"A@.#!````````"0```"L````````
+M``````#D`````````$0.0%Z/`HX#C02,!88&@P<\````U```````````````
+M-`$```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`````
+M````-````!0!`````````````#H!````````0@X00@X80@X@00XH00XP@P:&
+M!8P$C0..`@`````````4``````````$``7@0#`<(D`$````````4````'```
+M````````````+@$````````<````-```````````````IP$```````!!#A"#
+M`@```!0```!4```````````````%`````````!0```!L```````````````&
+M`````````!0```"$```````````````<`````````!0```"<````````````
+M```=`````````!0```"T```````````````K`````````!0```#,````````
+M```````G`````````"0```#D``````````````!-`0```````$0.,%B.`HT#
+MC`2&!8,&```D````#`$`````````````/`$```````!!#A!!#AA$#D"#`X8"
+M````%````#0!`````````````$``````````)````$P!`````````````)H`
+M````````1`XH4XT"C`.&!(,%`````!0```!T`0````````````!@````````
+M`!0```",`0`````````````7`````````!0```"D`0`````````````-`P``
+M`````!0``````````0`!>!`,!PB0`0```````"0````<``````````````!:
+M`````````$(.$$$.&$$.((,$A@.,`@`4````1```````````````0```````
+M```4````7```````````````#@`````````D````=```````````````E```
+M``````!$#C!/C`*&`X,$````````-````)P``````````````&8`````````
+M0@X00@X80@X@00XH00XP1`Y`@P:&!8P$C0..`@`````<````U```````````
+M````=0````````!!#A!$#B"#`B0```#T``````````````!R`````````$$.
+M$$$.&$0.((,#A@(````D````'`$`````````````J@````````!!#A!!#AA$
+M#B"#`X8"````)````$0!`````````````(8`````````00X000X81`X@@P.&
+M`@```"0```!L`0````````````"R`````````$0.,%2-`HP#A@2#!0`````D
+M````E`$`````````````<0````````!$#C!8C@*-`XP$A@6#!@``)````+P!
+M`````````````*$`````````1`XP3XP"A@.#!````````"0```#D`0``````
+M```````?`0```````$0.0%Z/`HX#C02,!88&@P<D````#`(`````````````
+MH@````````!!#A!!#AA$#B"#`X8"````)````#0"`````````````*(`````
+M````00X000X81`X@@P.&`@```"0```!<`@````````````#1`````````$$.
+M$$$.&$0.((,#A@(````D````A`(`````````````W`````````!!#A!!#AA$
+M#B"#`X8"````'````*P"`````````````(0`````````00X0@P(````D````
+MS`(`````````````"P$```````!$#C!4C0*,`X8$@P4`````%``````````!
+M``%X$`P'")`!````````+````!P``````````````$L!````````0@X000X8
+M00X@1`Y0@P2&`XP"````````%````$P``````````````$@`````````/```
+M`&0``````````````(X#````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&
+M!HP%C02.`X\"`````````!P```"D``````````````!_`````````$$.$(,"
+M````%````,0``````````````"0`````````%````-P``````````````$8`
+M````````-````/0``````````````/<`````````0@X00@X80@X@00XH00XP
+M1`XX@P:&!8P$C0..`@`````\````+`$`````````````'`(```````!"#A!"
+M#AA"#B!"#BA!#C!!#CA$#E"#!X8&C`6-!(X#CP(`````````/````&P!````
+M`````````$L!````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&!HP%C02.
+M`X\"`````````!0```"L`0`````````````&`````````!0```#$`0``````
+M```````&`````````!0```#<`0`````````````&`````````#0```#T`0``
+M```````````*`P```````$(.$$(.&$(.($$.*$$.,(,&A@6,!(T#C@(`````
+M````'````"P"`````````````!\`````````00X0@P(````<````3`(`````
+M````````>@````````!$#B!*A@*#`R0```!L`@````````````#?````````
+M`$$.$$$.&$0.((,#A@(````L````E`(`````````````70$```````!"#A!!
+M#AA!#B!$#E"#!(8#C`(````````4````Q`(``````````````@`````````D
+M````W`(`````````````$0(```````!!#A!!#AA$#B"#`X8"````%`````0#
+M``````````````@`````````)````!P#`````````````"@!````````1`Y@
+M3XP"A@.#!````````#P```!$`P````````````!'!0```````$(.$$(.&$(.
+M($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````\````A`,`````````
+M````[0(```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`
+M````````)````,0#`````````````%T!````````1`XP6(X"C0.,!(8%@P8`
+M`"0```#L`P````````````"\`````````$0.($Z,`H8#@P0````````D````
+M%`0`````````````>08```````!$#D!>CP*.`XT$C`6&!H,')````#P$````
+M`````````)0#````````1`YP7H\"C@.-!(P%A@:#!QP```!D!```````````
+M``!&`````````$0.($J,`H,#'````(0$`````````````!$`````````1`X0
+M```````4````I`0`````````````!@`````````4````O`0`````````````
+M7P`````````4````U`0`````````````/``````````<````[`0`````````
+M````/`````````!$#AA)C`*#`R0````,!0````````````!%`P```````$$.
+M$$$.&(,#A@(````````D````-`4`````````````C08```````!!#A!!#AB#
+M`X8"````````)````%P%`````````````-P&````````0@X000X800X@@P2&
+M`XP"`!0```"$!0````````````!0`@```````!0```"<!0`````````````3
+M`````````"0```"T!0````````````"(`0```````$0.0%Z/`HX#C02,!88&
+M@P<D````W`4`````````````TP0```````!$#E!>CP*.`XT$C`6&!H,')```
+M``0&`````````````-$`````````1`XP5(T"C`.&!(,%`````!P````L!@``
+M``````````![`````````$0.($J&`H,#)````$P&`````````````(@!````
+M````1`Y`7H\"C@.-!(P%A@:#!QP```!T!@````````````"<`````````$0.
+M$```````%````)0&`````````````%X`````````%````*P&````````````
+M`%X`````````'````,0&`````````````!X`````````00X0@P(````<````
+MY`8`````````````'@````````!!#A"#`@```"P````$!P````````````"/
+M!@```````$(.$$(.&$$.($$.*$0.@`&#!88$C`.-`AP````T!P``````````
+M``!P`````````$0.($J,`H,#'````%0'`````````````!H`````````1`X0
+M```````4``````````$``7@0#`<(D`$````````4````'```````````````
+M9@`````````D````-```````````````"@$```````!$#D!>CP*.`XT$C`6&
+M!H,'%``````````!``%X$`P'")`!````````%````!P``````````````#P`
+M````````%````#0``````````````#0`````````%````$P`````````````
+M`$$`````````'````&0``````````````$D`````````1`X0```````4````
+MA```````````````#``````````4``````````$``7@0#`<(D`$````````4
+M````'```````````````'0`````````4````-```````````````'@``````
+M```4````3```````````````*0`````````<````9```````````````.@``
+M``````!$#A```````!0```"$```````````````R`````````!0```"<````
+M```````````0`````````!0```"T``````````````!;`````````!0```#,
+M```````````````-`````````!0```#D```````````````<`````````!0`
+M``#\```````````````L`````````!0````4`0`````````````P````````
+M`!0````L`0`````````````M`````````!0```!$`0`````````````M````
+M`````!0```!<`0`````````````D`@```````!P```!T`0````````````"H
+M`````````$$.$$0.<(,"%````)0!`````````````#,`````````%```````
+M```!``%X$`P'")`!````````%````!P``````````````'(`````````)```
+M`#0``````````````*L!````````00X000X81`X@@P.&`@```#0```!<````
+M``````````!Z`@```````$(.$$(.&$(.($$.*$$.,(,&A@6,!(T#C@(`````
+M````%````)0``````````````&(`````````%````*P``````````````&(`
+M````````'````,0``````````````#\`````````1`X@2HP"@P,4````Y```
+M````````````@@`````````D````_```````````````?@$```````!"#A!!
+M#AA!#B"#!(8#C`(`%``````````!``%X$`P'")`!````````'````!P`````
+M`````````-L#````````00X01`YP@P(T````/```````````````$@L`````
+M``!"#A!"#AA"#B!!#BA!#C!$#I`!@P:&!8P$C0..`@```#P```!T````````
+M``````#O`````````$(.$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./
+M`@`````````<````M```````````````DP````````!$#A```````!P```#4
+M```````````````.`````````$0.$```````)````/0``````````````#\!
+M````````0@X000X800X@@P2&`XP"`!P````<`0`````````````1````````
+M`$0.$```````%````#P!`````````````$@`````````%````%0!````````
+M`````(P`````````)````&P!`````````````!,&````````1`Y`7H\"C@.-
+M!(P%A@:#!Q0```"4`0````````````!\`````````!0```"L`0``````````
+M``!P`````````#P```#$`0````````````#Z#````````$(.$$(.&$(.($(.
+M*$$.,$$..$0.D`&#!X8&C`6-!(X#CP(````````D````!`(`````````````
+MA`````````!$#BA/C`*&`X,$````````)````"P"`````````````$$!````
+M````1`XP5(T"C`.&!(,%`````"0```!4`@`````````````(`0```````$0.
+M0%Z/`HX#C02,!88&@P<D````?`(`````````````S0,```````!$#C!8C@*-
+M`XP$A@6#!@``)````*0"`````````````(,$````````1`Y`7H\"C@.-!(P%
+MA@:#!S0```#,`@````````````#)`P```````$(.$$(.&$(.($$.*$$.,(,&
+MA@6,!(T#C@(`````````/`````0#`````````````(\"````````0@X00@X8
+M0@X@0@XH00XP00XX1`Y`@P>&!HP%C02.`X\"`````````#0```!$`P``````
+M```````Y`@```````$(.$$(.&$(.($$.*$$.,(,&A@6,!(T#C@(`````````
+M/````'P#`````````````!`"````````0@X00@X80@X@0@XH00XP00XX1`Y`
+M@P>&!HP%C02.`X\"`````````#P```"\`P````````````"L"0```````$(.
+M$$(.&$(.($(.*$$.,$$..$0.@`&#!X8&C`6-!(X#CP(````````<````_`,`
+M````````````M0````````!$#A```````"P````<!`````````````!K`P``
+M`````$(.$$(.&$$.($$.*$0.,(,%A@2,`XT"`!P```!,!``````````````=
+M`````````$0.$```````'````&P$`````````````*$`````````00X0@P(`
+M```4````C`0`````````````0``````````\````I`0`````````````?0@`
+M``````!"#A!"#AA"#B!"#BA!#C!!#CA$#E"#!X8&C`6-!(X#CP(`````````
+M/````.0$`````````````-\#````````0@X00@X80@X@0@XH00XP00XX1`Y0
+M@P>&!HP%C02.`X\"`````````"0````D!0`````````````C"@```````$0.
+M4%Z/`HX#C02,!88&@P<D````3`4`````````````9`````````!!#A!!#AA$
+M#B"#`X8"````/````'0%`````````````(8'````````0@X00@X80@X@0@XH
+M00XP00XX1`Z``8,'A@:,!8T$C@./`@```````"0```"T!0````````````"Q
+M`````````$0.,%2-`HP#A@2#!0`````\````W`4`````````````%0(`````
+M``!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`````````)```
+M`!P&`````````````+4`````````0@X000X800X@@P2&`XP"`"0```!$!@``
+M``````````"-`@```````$0.,%B.`HT#C`2&!8,&```<````;`8`````````
+M````/P````````!$#A```````"P```",!@````````````"V`````````$(.
+M$$(.&$$.($$.*$0.,(,%A@2,`XT"`"0```"\!@````````````#[`@``````
+M`$0.,%2-`HP#A@2#!0`````4``````````$``7@0#`<(D`$````````D````
+M'```````````````]P````````!$#C!4C0*,`X8$@P4`````)````$0`````
+M``````````@!````````1`XP6(X"C0.,!(8%@P8``#P```!L````````````
+M``"5`````````$(.$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@``
+M```````D````K```````````````40$```````!$#E!>CP*.`XT$C`6&!H,'
+M%````-0``````````````&8`````````%````.P``````````````$8`````
+M````/`````0!`````````````$D!````````0@X00@X80@X@0@XH00XP00XX
+M1`Y`@P>&!HP%C02.`X\"`````````!P```!$`0````````````"'````````
+M`$0.,```````%````&0!`````````````%8`````````+````'P!````````
+M`````)(`````````0@X00@X800X@00XH1`XP@P6&!(P#C0(`/````*P!````
+M`````````&\!````````0@X00@X80@X@0@XH00XP00XX1`Y@@P>&!HP%C02.
+M`X\"`````````!P```#L`0````````````!%`````````$$.$(,"````)```
+M``P"`````````````.0#````````1`Y`7H\"C@.-!(P%A@:#!R0````T`@``
+M```````````.`0```````$0.0%Z/`HX#C02,!88&@P<D````7`(`````````
+M````10$```````!$#D!>CP*.`XT$C`6&!H,''````(0"`````````````/D`
+M````````00X0@P(````D````I`(`````````````O@````````!$#C!4C0*,
+M`X8$@P4`````'````,P"`````````````&\`````````1`X@2H8"@P,D````
+M[`(`````````````PP$```````!$#B!.C`*&`X,$````````)````!0#````
+M`````````%,!````````1`Y07H\"C@.-!(P%A@:#!R0````\`P``````````
+M``!@`0```````$0.4%Z/`HX#C02,!88&@P<4``````````$``7@0#`<(D`$`
+M```````4````'```````````````<0`````````4````-```````````````
+M3``````````4``````````$``7@0#`<(D`$````````4````'```````````
+M````"P$````````\````-```````````````5`0```````!"#A!"#AA"#B!"
+M#BA!#C!!#CA$#E"#!X8&C`6-!(X#CP(`````````%````'0`````````````
+M`#0!````````%````(P``````````````($`````````%````*0`````````
+M`````"<`````````%````+P```````````````(`````````%````-0`````
+M`````````$\`````````)````.P``````````````'$!````````00X000X8
+M1`X@@P.&`@```!P````4`0`````````````@`````````$$.$(,"````'```
+M`#0!`````````````"``````````00X0@P(````D````5`$`````````````
+M[@$```````!$#C!4C0*,`X8$@P4`````)````'P!`````````````/8`````
+M````1`X@3HP"A@.#!````````#P```"D`0````````````!<`0```````$(.
+M$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````<````Y`$`
+M````````````/`````````!!#A"#`@```"0````$`@````````````!J````
+M`````$$.$$$.&$0.((,#A@(````4````+`(`````````````+P`````````D
+M````1`(`````````````(0$```````!$#C!4C0*,`X8$@P4`````'````&P"
+M`````````````"X`````````1`X0```````4````C`(`````````````,P``
+M```````L````I`(`````````````<P$```````!"#A!"#AA!#B!!#BA$#C"#
+M!88$C`.-`@`D````U`(`````````````1@$```````!!#A!!#AA$#B"#`X8"
+M````'````/P"`````````````.T`````````00X0@P(````<````'`,`````
+M````````7@````````!$#B!*A@*#`QP````\`P`````````````U````````
+M`$0.$```````'````%P#`````````````#0`````````1`X0```````4````
+M?`,`````````````)``````````<````E`,`````````````)@````````!$
+M#A```````!0```"T`P`````````````D`````````!P```#,`P``````````
+M``!``````````$0.$```````%````.P#`````````````!H`````````'```
+M``0$`````````````"8`````````1`X0```````4````)`0`````````````
+M)``````````<````/`0`````````````.`````````!$#A```````!0```!<
+M!``````````````D`````````"0```!T!``````````````3`P```````$0.
+M4%Z/`HX#C02,!88&@P<D````G`0`````````````NP````````!$#C!4C0*,
+M`X8$@P4`````)````,0$`````````````,H`````````1`XP6(X"C0.,!(8%
+M@P8``"0```#L!`````````````#K`````````$0.0%Z/`HX#C02,!88&@P<D
+M````%`4`````````````_0````````!$#D!>CP*.`XT$C`6&!H,')````#P%
+M`````````````)(!````````00X000X81`X@@P.&`@```"0```!D!0``````
+M``````!'`0```````$0.0%Z/`HX#C02,!88&@P<D````C`4`````````````
+M!`$```````!$#C!8C@*-`XP$A@6#!@``)````+0%``````````````P!````
+M````1`XP6(X"C0.,!(8%@P8``"0```#<!0`````````````J`0```````$0.
+M0%Z/`HX#C02,!88&@P<D````!`8`````````````)@$```````!$#C!8C@*-
+M`XP$A@6#!@``)````"P&`````````````*D`````````1`X@3HP"A@.#!```
+M`````!0```!4!@````````````!8`````````!P```!L!@`````````````\
+M`````````$0.($J&`H,#%````(P&``````````````(!````````'````*0&
+M`````````````#P`````````1`X@2H8"@P,4````Q`8`````````````X@``
+M```````D````W`8`````````````00$```````!"#A!!#AA!#B"#!(8#C`(`
+M%`````0'`````````````"<`````````%````!P'`````````````",`````
+M````)````#0'`````````````(<#````````00X000X81`X@@P.&`@```!P`
+M``!<!P````````````"/`````````$0.($J&`H,#)````'P'````````````
+M`$P`````````0@X000X81`X@@P.,`@```!0```"D!P````````````!O````
+M`````"0```"\!P`````````````X`0```````$0.*%.-`HP#A@2#!0`````D
+M````Y`<`````````````F0$```````!$#C!4C0*,`X8$@P4`````)`````P(
+M`````````````*@`````````1`XP5(T"C`.&!(,%`````"0````T"```````
+M``````"'`0```````$$.$$$.&$0.((,#A@(````D````7`@`````````````
+M\`````````!$#D!>CP*.`XT$C`6&!H,')````(0(`````````````(8`````
+M````1`X@3HP"A@.#!````````"0```"L"`````````````"O`````````$0.
+M($Z,`H8#@P0````````T````U`@`````````````[P$```````!"#A!"#AA"
+M#B!!#BA!#C"#!H8%C`2-`XX"`````````!0``````````0`!>!`,!PB0`0``
+M`````!0````<```````````````5`````````!0````T``````````````"B
+M`````````"0```!,``````````````!B`````````$(.$$$.&$$.((,$A@.,
+M`@`<````=```````````````*0````````!!#A"#`@```"0```"4````````
+M``````"@`0```````$0.,%2-`HP#A@2#!0`````L````O```````````````
+MG@````````!"#A!"#AA!#B!!#BB#!88$C`.-`@`````<````[```````````
+M````A`````````!$#A```````!P````,`0````````````"$`````````$0.
+M$```````)````"P!``````````````<!````````00X000X81`X@@P.&`@``
+M`"P```!4`0````````````#O`````````$(.$$(.&$$.($$.*$0.,(,%A@2,
+M`XT"`!P```"$`0````````````!T`````````$$.$(,"````%````*0!````
+M`````````!H`````````%````+P!`````````````#$`````````%````-0!
+M`````````````#0`````````)````.P!`````````````*,)````````1`Y@
+M7H\"C@.-!(P%A@:#!Q0````4`@````````````!,`````````"0````L`@``
+M``````````"6`0```````$$.$$$.&$0.((,#A@(````<````5`(`````````
+M````]P````````!!#A"#`@```!P```!T`@````````````!Y`0```````$$.
+M$(,"````%``````````!``%X$`P'")`!````````%````!P`````````````
+M`'<`````````/````#0``````````````(,"````````0@X00@X80@X@0@XH
+M00XP00XX1`Y`@P>&!HP%C02.`X\"`````````"0```!T``````````````"9
+M`````````$$.$$$.&$0.((,#A@(````L````G```````````````.P(`````
+M``!"#A!"#AA!#B!!#BA$#C"#!88$C`.-`@`D````S```````````````XP``
+M``````!$#D!>CP*.`XT$C`6&!H,')````/0``````````````+D`````````
+M1`Y`7H\"C@.-!(P%A@:#!SP````<`0````````````#``@```````$(.$$(.
+M&$(.($(.*$$.,$$..$<.@`6#!X8&C`6-!(X#CP(````````\````7`$`````
+M````````]`(```````!"#A!"#AA"#B!"#BA!#C!!#CA'#O`$@P>&!HP%C02.
+M`X\"````````/````)P!`````````````(T#````````0@X00@X80@X@0@XH
+M00XP00XX1PZ`!8,'A@:,!8T$C@./`@```````#P```#<`0````````````#'
+M`P```````$(.$$(.&$(.($(.*$$.,$$..$<.X`2#!X8&C`6-!(X#CP(`````
+M```L````'`(`````````````ZP````````!"#A!"#AA!#B!!#BA$#C"#!88$
+MC`.-`@`4````3`(`````````````30`````````4````9`(`````````````
+M30`````````D````?`(`````````````^`,```````!$#F!>CP*.`XT$C`6&
+M!H,'/````*0"`````````````"0&````````0@X00@X80@X@0@XH00XP00XX
+M1`Y`@P>&!HP%C02.`X\"`````````"0```#D`@`````````````:`P``````
+M`$0.0%Z/`HX#C02,!88&@P<D````#`,`````````````"P<```````!$#F!>
+MCP*.`XT$C`6&!H,')````#0#`````````````+@$````````1`XP6(X"C0.,
+M!(8%@P8``#P```!<`P````````````#>`@```````$(.$$(.&$(.($(.*$$.
+M,$$..$0.8(,'A@:,!8T$C@./`@`````````D````G`,`````````````\P``
+M``````!$#B!.C`*&`X,$````````/````,0#`````````````,``````````
+M0@X00@X80@X@0@XH00XP00XX1`Y@@P>&!HP%C02.`X\"`````````#P````$
+M!`````````````#``````````$(.$$(.&$(.($(.*$$.,$$..$0.8(,'A@:,
+M!8T$C@./`@`````````4````1`0`````````````9``````````4````7`0`
+M````````````!P`````````\````=`0`````````````F0(```````!"#A!"
+M#AA"#B!"#BA!#C!!#CA$#F"#!X8&C`6-!(X#CP(`````````%````+0$````
+M`````````"T`````````+````,P$``````````````<(````````0@X00@X8
+M00X@00XH1`XP@P6&!(P#C0(`'````/P$`````````````$H`````````00X0
+M@P(````4````'`4`````````````00`````````D````-`4`````````````
+M$P@```````!$#D!>CP*.`XT$C`6&!H,')````%P%`````````````+D#````
+M````1`XP5(T"C`.&!(,%`````"0```"$!0````````````#[`0```````$0.
+M,%2-`HP#A@2#!0`````D````K`4`````````````SP````````!$#C!4C0*,
+M`X8$@P4`````/````-0%`````````````.$`````````0@X00@X80@X@0@XH
+M00XP00XX1`Y`@P>&!HP%C02.`X\"`````````!0````4!@`````````````M
+M`````````"0````L!@````````````"6`@```````$(.$$$.&$$.((,$A@.,
+M`@`D````5`8`````````````D@````````!$#B!.C`*&`X,$````````)```
+M`'P&`````````````)(`````````1`X@3HP"A@.#!````````"0```"D!@``
+M``````````"'`````````$0.($Z,`H8#@P0````````D````S`8`````````
+M````AP````````!$#B!.C`*&`X,$````````)````/0&`````````````)(`
+M````````1`X@3HP"A@.#!````````"0````<!P````````````"'````````
+M`$0.($Z,`H8#@P0````````D````1`<`````````````AP````````!$#B!.
+MC`*&`X,$````````)````&P'`````````````+H`````````1`XP6(X"C0.,
+M!(8%@P8``"0```"4!P````````````#E`````````$0.0%Z/`HX#C02,!88&
+M@P<D````O`<`````````````3`@```````!$#D!>CP*.`XT$C`6&!H,')```
+M`.0'`````````````','````````1`Y`7H\"C@.-!(P%A@:#!Q0`````````
+M`0`!>!`,!PB0`0```````!0````<```````````````W`````````!0````T
+M```````````````G`````````"P```!,``````````````".`````````$(.
+M$$(.&$$.($$.*(,%A@2,`XT"`````"0```!\``````````````!8````````
+M`$0.($Z-`HP#@P0````````D````I```````````````3@````````!"#A!!
+M#AA!#B"#!(8#C`(`'````,P``````````````!H`````````00X0@P(````D
+M````[```````````````]`````````!$#C!8C@*-`XP$A@6#!@``)````!0!
+M`````````````($`````````1`XP5(T"C`.&!(,%`````#P````\`0``````
+M```````<`@```````$(.$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./
+M`@`````````<````?`$`````````````4@````````!$#B!*C`*#`QP```"<
+M`0````````````!2`````````$0.($J,`H,#)````+P!`````````````.P`
+M````````1`Y`7H\"C@.-!(P%A@:#!QP```#D`0````````````!2````````
+M`$0.($J,`H,#'`````0"`````````````%(`````````1`X@2HP"@P,\````
+M)`(`````````````9`(```````!"#A!"#AA"#B!"#BA!#C!!#CA$#F"#!X8&
+MC`6-!(X#CP(`````````)````&0"`````````````-4"````````1`Y07H\"
+MC@.-!(P%A@:#!QP```",`@````````````!%`````````$0.$```````'```
+M`*P"`````````````#<`````````1`X0```````D````S`(`````````````
+M30````````!$#B!.C0*,`X,$````````%````/0"`````````````!D`````
+M````'`````P#`````````````.8`````````1`X0```````D````+`,`````
+M````````I0````````!"#A!!#AA!#B"#!(8#C`(`%``````````!``%X$`P'
+M")`!````````%````!P``````````````!8`````````%````#0`````````
+M`````!``````````'````$P``````````````.8`````````00X0@P(````4
+M````;```````````````5@`````````D````A```````````````I```````
+M``!$#B!.C`*&`X,$````````)````*P``````````````.0`````````1`Y`
+M7H\"C@.-!(P%A@:#!SP```#4```````````````T`0```````$(.$$(.&$(.
+M($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````T````%`$`````````
+M````.@$```````!"#A!"#AA"#B!!#BA!#C"#!H8%C`2-`XX"`````````!0`
+M`````````0`!>!`,!PB0`0```````!0````<```````````````N`0``````
+M`!P````T``````````````"G`0```````$$.$(,"````%````%0`````````
+M``````4`````````%````&P```````````````8`````````%````(0`````
+M`````````!P`````````%````)P``````````````!T`````````%````+0`
+M`````````````"L`````````%````,P``````````````"<`````````)```
+M`.0``````````````$T!````````1`XP6(X"C0.,!(8%@P8``"0````,`0``
+M```````````\`0```````$$.$$$.&$0.0(,#A@(````4````-`$`````````
+M````0``````````D````3`$`````````````F@````````!$#BA3C0*,`X8$
+M@P4`````%````'0!`````````````&``````````%````(P!````````````
+M`!<`````````%````*0!``````````````T#````````%``````````!``%X
+M$`P'")`!````````)````!P``````````````%H`````````0@X000X800X@
+M@P2&`XP"`!0```!$``````````````!``````````!0```!<````````````
+M```.`````````"0```!T``````````````"4`````````$0.,$^,`H8#@P0`
+M```````T````G```````````````9@````````!"#A!"#AA"#B!!#BA!#C!$
+M#D"#!H8%C`2-`XX"`````!P```#4``````````````!U`````````$$.$$0.
+M((,")````/0``````````````'(`````````00X000X81`X@@P.&`@```"0`
+M```<`0````````````"J`````````$$.$$$.&$0.((,#A@(````D````1`$`
+M````````````A@````````!!#A!!#AA$#B"#`X8"````)````&P!````````
+M`````+(`````````1`XP5(T"C`.&!(,%`````"0```"4`0````````````!Q
+M`````````$0.,%B.`HT#C`2&!8,&```D````O`$`````````````H0``````
+M``!$#C!/C`*&`X,$````````)````.0!`````````````!\!````````1`Y`
+M7H\"C@.-!(P%A@:#!R0````,`@````````````"B`````````$$.$$$.&$0.
+M((,#A@(````D````-`(`````````````H@````````!!#A!!#AA$#B"#`X8"
+M````)````%P"`````````````-$`````````00X000X81`X@@P.&`@```"0`
+M``"$`@````````````#<`````````$$.$$$.&$0.((,#A@(````<````K`(`
+M````````````A`````````!!#A"#`@```"0```#,`@`````````````+`0``
+M`````$0.,%2-`HP#A@2#!0`````4``````````$``7@0#`<(D`$````````L
+M````'```````````````2P$```````!"#A!!#AA!#B!$#E"#!(8#C`(`````
+M```4````3```````````````2``````````\````9```````````````C@,`
+M``````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`````````
+M'````*0``````````````'\`````````00X0@P(````4````Q```````````
+M````)``````````4````W```````````````1@`````````T````]```````
+M````````]P````````!"#A!"#AA"#B!!#BA!#C!$#CB#!H8%C`2-`XX"````
+M`#P````L`0````````````#:`0```````$(.$$(.&$(.($(.*$$.,$$..$0.
+M4(,'A@:,!8T$C@./`@`````````\````;`$`````````````2P$```````!"
+M#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`````````%````*P!
+M``````````````8`````````%````,0!``````````````8`````````%```
+M`-P!``````````````8`````````-````/0!``````````````H#````````
+M0@X00@X80@X@00XH00XP@P:&!8P$C0..`@`````````<````+`(`````````
+M````'P````````!!#A"#`@```!P```!,`@````````````!Z`````````$0.
+M($J&`H,#)````&P"`````````````-\`````````00X000X81`X@@P.&`@``
+M`"P```"4`@````````````!=`0```````$(.$$$.&$$.($0.4(,$A@.,`@``
+M`````!0```#$`@`````````````"`````````"0```#<`@`````````````1
+M`@```````$$.$$$.&$0.((,#A@(````4````!`,`````````````"```````
+M```D````'`,`````````````*`$```````!$#F!/C`*&`X,$````````/```
+M`$0#`````````````$<%````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&
+M!HP%C02.`X\"`````````#P```"$`P````````````#M`@```````$(.$$(.
+M&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````D````Q`,`````
+M````````70$```````!$#C!8C@*-`XP$A@6#!@``)````.P#````````````
+M`+P`````````1`X@3HP"A@.#!````````"0````4!`````````````!Y!@``
+M`````$0.0%Z/`HX#C02,!88&@P<D````/`0`````````````E`,```````!$
+M#G!>CP*.`XT$C`6&!H,''````&0$`````````````$8`````````1`X@2HP"
+M@P,<````A`0`````````````$0````````!$#A```````!0```"D!```````
+M```````&`````````!0```"\!`````````````!?`````````!0```#4!```
+M```````````\`````````!P```#L!``````````````\`````````$0.&$F,
+M`H,#)`````P%`````````````$4#````````00X000X8@P.&`@```````"0`
+M```T!0````````````"-!@```````$$.$$$.&(,#A@(````````D````7`4`
+M````````````W`8```````!"#A!!#AA!#B"#!(8#C`(`%````(0%````````
+M`````%`"````````%````)P%`````````````!,`````````)````+0%````
+M`````````(@!````````1`Y`7H\"C@.-!(P%A@:#!R0```#<!0``````````
+M``#3!````````$0.4%Z/`HX#C02,!88&@P<D````!`8`````````````T0``
+M``````!$#C!4C0*,`X8$@P4`````'````"P&`````````````'L`````````
+M1`X@2H8"@P,D````3`8`````````````B`$```````!$#D!>CP*.`XT$C`6&
+M!H,''````'0&`````````````)P`````````1`X0```````4````E`8`````
+M````````7@`````````4````K`8`````````````7@`````````<````Q`8`
+M````````````'@````````!!#A"#`@```!P```#D!@`````````````>````
+M`````$$.$(,"````+`````0'`````````````(\&````````0@X00@X800X@
+M00XH1`Z``8,%A@2,`XT"'````#0'`````````````'``````````1`X@2HP"
+M@P,<````5`<`````````````&@````````!$#A```````!0``````````0`!
+M>!`,!PB0`0```````!0````<``````````````!F`````````"0````T````
+M```````````*`0```````$0.0%Z/`HX#C02,!88&@P<4``````````$``7@0
+M#`<(D`$````````4````'```````````````/``````````4````-```````
+M````````-``````````4````3```````````````00`````````<````9```
+M````````````20````````!$#A```````!0```"$```````````````,````
+M`````!0``````````0`!>!`,!PB0`0```````!0````<```````````````=
+M`````````!0````T```````````````>`````````!0```!,````````````
+M```I`````````!P```!D```````````````Z`````````$0.$```````%```
+M`(0``````````````#(`````````%````)P``````````````!``````````
+M%````+0``````````````%L`````````%````,P```````````````T`````
+M````%````.0``````````````!P`````````%````/P``````````````"P`
+M````````%````!0!`````````````#``````````%````"P!````````````
+M`"T`````````%````$0!`````````````"T`````````%````%P!````````
+M`````"0"````````'````'0!`````````````*@`````````00X01`YP@P(4
+M````E`$`````````````,P`````````4``````````$``7@0#`<(D`$`````
+M```4````'```````````````<@`````````D````-```````````````JP$`
+M``````!!#A!!#AA$#B"#`X8"````-````%P``````````````'H"````````
+M0@X00@X80@X@00XH00XP@P:&!8P$C0..`@`````````4````E```````````
+M````8@`````````4````K```````````````8@`````````<````Q```````
+M````````/P````````!$#B!*C`*#`Q0```#D``````````````""````````
+M`"0```#\``````````````!^`0```````$(.$$$.&$$.((,$A@.,`@`4````
+M``````$``7@0#`<(D`$````````<````'```````````````VP,```````!!
+M#A!$#G"#`C0````\```````````````2"P```````$(.$$(.&$(.($$.*$$.
+M,$0.D`&#!H8%C`2-`XX"````/````'0``````````````.\`````````0@X0
+M0@X80@X@0@XH00XP00XX1`Y`@P>&!HP%C02.`X\"`````````!P```"T````
+M``````````"3`````````$0.$```````'````-0```````````````X`````
+M````1`X0```````D````]```````````````/P$```````!"#A!!#AA!#B"#
+M!(8#C`(`'````!P!`````````````!$`````````1`X0```````4````/`$`
+M````````````2``````````4````5`$`````````````C``````````D````
+M;`$`````````````$P8```````!$#D!>CP*.`XT$C`6&!H,'%````)0!````
+M`````````'P`````````%````*P!`````````````'``````````/````,0!
+M`````````````/H,````````0@X00@X80@X@0@XH00XP00XX1`Z0`8,'A@:,
+M!8T$C@./`@```````"0````$`@````````````"$`````````$0.*$^,`H8#
+M@P0````````D````+`(`````````````00$```````!$#C!4C0*,`X8$@P4`
+M````)````%0"``````````````@!````````1`Y`7H\"C@.-!(P%A@:#!R0`
+M``!\`@````````````#-`P```````$0.,%B.`HT#C`2&!8,&```D````I`(`
+M````````````@P0```````!$#D!>CP*.`XT$C`6&!H,'-````,P"````````
+M`````,D#````````0@X00@X80@X@00XH00XP@P:&!8P$C0..`@`````````\
+M````!`,`````````````CP(```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#
+M!X8&C`6-!(X#CP(`````````-````$0#`````````````#D"````````0@X0
+M0@X80@X@00XH00XP@P:&!8P$C0..`@`````````\````?`,`````````````
+M$`(```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`````
+M````/````+P#`````````````*P)````````0@X00@X80@X@0@XH00XP00XX
+M1`Z``8,'A@:,!8T$C@./`@```````!P```#\`P````````````"U````````
+M`$0.$```````+````!P$`````````````&L#````````0@X00@X800X@00XH
+M1`XP@P6&!(P#C0(`'````$P$`````````````!T`````````1`X0```````<
+M````;`0`````````````H0````````!!#A"#`@```!0```",!```````````
+M``!``````````#P```"D!`````````````!]"````````$(.$$(.&$(.($(.
+M*$$.,$$..$0.4(,'A@:,!8T$C@./`@`````````\````Y`0`````````````
+MWP,```````!"#A!"#AA"#B!"#BA!#C!!#CA$#E"#!X8&C`6-!(X#CP(`````
+M````)````"0%`````````````",*````````1`Y07H\"C@.-!(P%A@:#!R0`
+M``!,!0````````````!D`````````$$.$$$.&$0.((,#A@(````\````=`4`
+M````````````A@<```````!"#A!"#AA"#B!"#BA!#C!!#CA$#H`!@P>&!HP%
+MC02.`X\"````````)````+0%`````````````+$`````````1`XP5(T"C`.&
+M!(,%`````#P```#<!0`````````````5`@```````$(.$$(.&$(.($(.*$$.
+M,$$..$0.0(,'A@:,!8T$C@./`@`````````D````'`8`````````````M0``
+M``````!"#A!!#AA!#B"#!(8#C`(`)````$0&`````````````(T"````````
+M1`XP6(X"C0.,!(8%@P8``!P```!L!@`````````````_`````````$0.$```
+M````+````(P&`````````````+8`````````0@X00@X800X@00XH1`XP@P6&
+M!(P#C0(`)````+P&`````````````/L"````````1`XP5(T"C`.&!(,%````
+M`!0``````````0`!>!`,!PB0`0```````"0````<``````````````#W````
+M`````$0.,%2-`HP#A@2#!0`````D````1```````````````"`$```````!$
+M#C!8C@*-`XP$A@6#!@``/````&P``````````````)4`````````0@X00@X8
+M0@X@0@XH00XP00XX1`Y`@P>&!HP%C02.`X\"`````````"0```"L````````
+M``````!1`0```````$0.4%Z/`HX#C02,!88&@P<4````U```````````````
+M9@`````````4````[```````````````1@`````````\````!`$`````````
+M````20$```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`
+M````````'````$0!`````````````(<`````````1`XP```````4````9`$`
+M````````````5@`````````L````?`$`````````````D@````````!"#A!"
+M#AA!#B!!#BA$#C"#!88$C`.-`@`\````K`$`````````````;P$```````!"
+M#A!"#AA"#B!"#BA!#C!!#CA$#F"#!X8&C`6-!(X#CP(`````````'````.P!
+M`````````````$4`````````00X0@P(````D````#`(`````````````Y`,`
+M``````!$#D!>CP*.`XT$C`6&!H,')````#0"``````````````X!````````
+M1`Y`7H\"C@.-!(P%A@:#!R0```!<`@````````````!%`0```````$0.0%Z/
+M`HX#C02,!88&@P<<````A`(`````````````^0````````!!#A"#`@```"0`
+M``"D`@````````````"^`````````$0.,%2-`HP#A@2#!0`````<````S`(`
+M````````````;P````````!$#B!*A@*#`R0```#L`@````````````##`0``
+M`````$0.($Z,`H8#@P0````````D````%`,`````````````4P$```````!$
+M#E!>CP*.`XT$C`6&!H,')````#P#`````````````&`!````````1`Y07H\"
+MC@.-!(P%A@:#!Q0``````````0`!>!`,!PB0`0```````!0````<````````
+M``````!Q`````````!0````T``````````````!,`````````!0`````````
+M`0`!>!`,!PB0`0```````!0````<```````````````+`0```````#P````T
+M``````````````!4!````````$(.$$(.&$(.($(.*$$.,$$..$0.4(,'A@:,
+M!8T$C@./`@`````````4````=```````````````-`$````````4````C```
+M````````````@0`````````4````I```````````````)P`````````4````
+MO````````````````@`````````4````U```````````````3P`````````D
+M````[```````````````<0$```````!!#A!!#AA$#B"#`X8"````'````!0!
+M`````````````"``````````00X0@P(````<````-`$`````````````(```
+M``````!!#A"#`@```"0```!4`0````````````#N`0```````$0.,%2-`HP#
+MA@2#!0`````D````?`$`````````````]@````````!$#B!.C`*&`X,$````
+M````/````*0!`````````````%P!````````0@X00@X80@X@0@XH00XP00XX
+M1`Y`@P>&!HP%C02.`X\"`````````!P```#D`0`````````````\````````
+M`$$.$(,"````)`````0"`````````````&H`````````00X000X81`X@@P.&
+M`@```!0````L`@`````````````O`````````"0```!$`@`````````````A
+M`0```````$0.,%2-`HP#A@2#!0`````<````;`(`````````````+@``````
+M``!$#A```````!0```",`@`````````````S`````````"P```"D`@``````
+M``````!S`0```````$(.$$(.&$$.($$.*$0.,(,%A@2,`XT"`"0```#4`@``
+M``````````!&`0```````$$.$$$.&$0.((,#A@(````<````_`(`````````
+M````[0````````!!#A"#`@```!P````<`P````````````!>`````````$0.
+M($J&`H,#'````#P#`````````````#4`````````1`X0```````<````7`,`
+M````````````-`````````!$#A```````!0```!\`P`````````````D````
+M`````!P```"4`P`````````````F`````````$0.$```````%````+0#````
+M`````````"0`````````'````,P#`````````````$``````````1`X0````
+M```4````[`,`````````````&@`````````<````!`0`````````````)@``
+M``````!$#A```````!0````D!``````````````D`````````!P````\!```
+M```````````X`````````$0.$```````%````%P$`````````````"0`````
+M````)````'0$`````````````!,#````````1`Y07H\"C@.-!(P%A@:#!R0`
+M``"<!`````````````"[`````````$0.,%2-`HP#A@2#!0`````D````Q`0`
+M````````````R@````````!$#C!8C@*-`XP$A@6#!@``)````.P$````````
+M`````.L`````````1`Y`7H\"C@.-!(P%A@:#!R0````4!0````````````#]
+M`````````$0.0%Z/`HX#C02,!88&@P<D````/`4`````````````D@$`````
+M``!!#A!!#AA$#B"#`X8"````)````&0%`````````````$<!````````1`Y`
+M7H\"C@.-!(P%A@:#!R0```",!0`````````````$`0```````$0.,%B.`HT#
+MC`2&!8,&```D````M`4`````````````#`$```````!$#C!8C@*-`XP$A@6#
+M!@``)````-P%`````````````"H!````````1`Y`7H\"C@.-!(P%A@:#!R0`
+M```$!@`````````````F`0```````$0.,%B.`HT#C`2&!8,&```D````+`8`
+M````````````J0````````!$#B!.C`*&`X,$````````%````%0&````````
+M`````%@`````````'````&P&`````````````#P`````````1`X@2H8"@P,4
+M````C`8``````````````@$````````<````I`8`````````````/```````
+M``!$#B!*A@*#`Q0```#$!@````````````#B`````````"0```#<!@``````
+M``````!!`0```````$(.$$$.&$$.((,$A@.,`@`4````!`<`````````````
+M)P`````````4````'`<`````````````(P`````````D````-`<`````````
+M````AP,```````!!#A!!#AA$#B"#`X8"````'````%P'`````````````(\`
+M````````1`X@2H8"@P,D````?`<`````````````3`````````!"#A!!#AA$
+M#B"#`XP"````%````*0'`````````````&\`````````)````+P'````````
+M`````#@!````````1`XH4XT"C`.&!(,%`````"0```#D!P````````````"9
+M`0```````$0.,%2-`HP#A@2#!0`````D````#`@`````````````J```````
+M``!$#C!4C0*,`X8$@P4`````)````#0(`````````````(<!````````00X0
+M00X81`X@@P.&`@```"0```!<"`````````````#P`````````$0.0%Z/`HX#
+MC02,!88&@P<D````A`@`````````````A@````````!$#B!.C`*&`X,$````
+M````)````*P(`````````````*\`````````1`X@3HP"A@.#!````````#0`
+M``#4"`````````````#O`0```````$(.$$(.&$(.($$.*$$.,(,&A@6,!(T#
+MC@(`````````%``````````!``%X$`P'")`!````````%````!P`````````
+M`````!4`````````%````#0``````````````*(`````````)````$P`````
+M`````````&(`````````0@X000X800X@@P2&`XP"`!P```!T````````````
+M```I`````````$$.$(,"````)````)0``````````````*`!````````1`XP
+M5(T"C`.&!(,%`````"P```"\``````````````">`````````$(.$$(.&$$.
+M($$.*(,%A@2,`XT"`````!P```#L``````````````"$`````````$0.$```
+M````'`````P!`````````````(0`````````1`X0```````D````+`$`````
+M````````!P$```````!!#A!!#AA$#B"#`X8"````+````%0!````````````
+M`.\`````````0@X00@X800X@00XH1`XP@P6&!(P#C0(`'````(0!````````
+M`````'0`````````00X0@P(````4````I`$`````````````&@`````````4
+M````O`$`````````````,0`````````4````U`$`````````````-```````
+M```D````[`$`````````````HPD```````!$#F!>CP*.`XT$C`6&!H,'%```
+M`!0"`````````````$P`````````)````"P"`````````````)8!````````
+M00X000X81`X@@P.&`@```!P```!4`@````````````#W`````````$$.$(,"
+M````'````'0"`````````````'D!````````00X0@P(````4``````````$`
+M`7@0#`<(D`$````````4````'```````````````=P`````````\````-```
+M````````````@P(```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-
+M!(X#CP(`````````)````'0``````````````)D`````````00X000X81`X@
+M@P.&`@```"P```"<```````````````[`@```````$(.$$(.&$$.($$.*$0.
+M,(,%A@2,`XT"`"0```#,``````````````#C`````````$0.0%Z/`HX#C02,
+M!88&@P<D````]```````````````N0````````!$#D!>CP*.`XT$C`6&!H,'
+M/````!P!`````````````,`"````````0@X00@X80@X@0@XH00XP00XX1PZ`
+M!8,'A@:,!8T$C@./`@```````#P```!<`0````````````#T`@```````$(.
+M$$(.&$(.($(.*$$.,$$..$<.\`2#!X8&C`6-!(X#CP(````````\````G`$`
+M````````````C0,```````!"#A!"#AA"#B!"#BA!#C!!#CA'#H`%@P>&!HP%
+MC02.`X\"````````/````-P!`````````````,<#````````0@X00@X80@X@
+M0@XH00XP00XX1P[@!(,'A@:,!8T$C@./`@```````"P````<`@``````````
+M``#K`````````$(.$$(.&$$.($$.*$0.,(,%A@2,`XT"`!0```!,`@``````
+M``````!-`````````!0```!D`@````````````!-`````````"0```!\`@``
+M``````````#X`P```````$0.8%Z/`HX#C02,!88&@P<\````I`(`````````
+M````)`8```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`
+M````````)````.0"`````````````!H#````````1`Y`7H\"C@.-!(P%A@:#
+M!R0````,`P`````````````+!P```````$0.8%Z/`HX#C02,!88&@P<D````
+M-`,`````````````N`0```````!$#C!8C@*-`XP$A@6#!@``/````%P#````
+M`````````-X"````````0@X00@X80@X@0@XH00XP00XX1`Y@@P>&!HP%C02.
+M`X\"`````````"0```"<`P````````````#S`````````$0.($Z,`H8#@P0`
+M```````\````Q`,`````````````P`````````!"#A!"#AA"#B!"#BA!#C!!
+M#CA$#F"#!X8&C`6-!(X#CP(`````````/`````0$`````````````,``````
+M````0@X00@X80@X@0@XH00XP00XX1`Y@@P>&!HP%C02.`X\"`````````!0`
+M``!$!`````````````!D`````````!0```!<!``````````````'````````
+M`#P```!T!`````````````"9`@```````$(.$$(.&$(.($(.*$$.,$$..$0.
+M8(,'A@:,!8T$C@./`@`````````4````M`0`````````````+0`````````L
+M````S`0`````````````!P@```````!"#A!"#AA!#B!!#BA$#C"#!88$C`.-
+M`@`<````_`0`````````````2@````````!!#A"#`@```!0````<!0``````
+M``````!!`````````"0````T!0`````````````3"````````$0.0%Z/`HX#
+MC02,!88&@P<D````7`4`````````````N0,```````!$#C!4C0*,`X8$@P4`
+M````)````(0%`````````````/L!````````1`XP5(T"C`.&!(,%`````"0`
+M``"L!0````````````#/`````````$0.,%2-`HP#A@2#!0`````\````U`4`
+M````````````X0````````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-
+M!(X#CP(`````````%````!0&`````````````"T`````````)````"P&````
+M`````````)8"````````0@X000X800X@@P2&`XP"`"0```!4!@``````````
+M``"2`````````$0.($Z,`H8#@P0````````D````?`8`````````````D@``
+M``````!$#B!.C`*&`X,$````````)````*0&`````````````(<`````````
+M1`X@3HP"A@.#!````````"0```#,!@````````````"'`````````$0.($Z,
+M`H8#@P0````````D````]`8`````````````D@````````!$#B!.C`*&`X,$
+M````````)````!P'`````````````(<`````````1`X@3HP"A@.#!```````
+M`"0```!$!P````````````"'`````````$0.($Z,`H8#@P0````````D````
+M;`<`````````````N@````````!$#C!8C@*-`XP$A@6#!@``)````)0'````
+M`````````.4`````````1`Y`7H\"C@.-!(P%A@:#!R0```"\!P``````````
+M``!,"````````$0.0%Z/`HX#C02,!88&@P<D````Y`<`````````````<P<`
+M``````!$#D!>CP*.`XT$C`6&!H,'%``````````!``%X$`P'")`!````````
+M%````!P``````````````#<`````````%````#0``````````````"<`````
+M````+````$P``````````````(X`````````0@X00@X800X@00XH@P6&!(P#
+MC0(`````)````'P``````````````%@`````````1`X@3HT"C`.#!```````
+M`"0```"D``````````````!.`````````$(.$$$.&$$.((,$A@.,`@`<````
+MS```````````````&@````````!!#A"#`@```"0```#L``````````````#T
+M`````````$0.,%B.`HT#C`2&!8,&```D````%`$`````````````@0``````
+M``!$#C!4C0*,`X8$@P4`````/````#P!`````````````!P"````````0@X0
+M0@X80@X@0@XH00XP00XX1`Y`@P>&!HP%C02.`X\"`````````!P```!\`0``
+M``````````!2`````````$0.($J,`H,#'````)P!`````````````%(`````
+M````1`X@2HP"@P,D````O`$`````````````[`````````!$#D!>CP*.`XT$
+MC`6&!H,''````.0!`````````````%(`````````1`X@2HP"@P,<````!`(`
+M````````````4@````````!$#B!*C`*#`SP````D`@````````````!D`@``
+M`````$(.$$(.&$(.($(.*$$.,$$..$0.8(,'A@:,!8T$C@./`@`````````D
+M````9`(`````````````U0(```````!$#E!>CP*.`XT$C`6&!H,''````(P"
+M`````````````$4`````````1`X0```````<````K`(`````````````-P``
+M``````!$#A```````"0```#,`@````````````!-`````````$0.($Z-`HP#
+M@P0````````4````]`(`````````````&0`````````<````#`,`````````
+M````Y@````````!$#A```````"0````L`P````````````"E`````````$(.
+M$$$.&$$.((,$A@.,`@`4``````````$``7@0#`<(D`$````````4````'```
+M````````````%@`````````4````-```````````````$``````````<````
+M3```````````````Y@````````!!#A"#`@```!0```!L``````````````!6
+M`````````"0```"$``````````````"D`````````$0.($Z,`H8#@P0`````
+M```D````K```````````````Y`````````!$#D!>CP*.`XT$C`6&!H,'/```
+M`-0``````````````#0!````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&
+M!HP%C02.`X\"`````````#0````4`0`````````````Z`0```````$(.$$(.
+M&$(.($$.*$$.,(,&A@6,!(T#C@(`````````%``````````!``%X$`P'")`!
+M````````%````!P``````````````"X!````````'````#0`````````````
+M`*<!````````00X0@P(````4````5```````````````!0`````````4````
+M;```````````````!@`````````4````A```````````````'``````````4
+M````G```````````````'0`````````4````M```````````````*P``````
+M```4````S```````````````)P`````````D````Y```````````````30$`
+M``````!$#C!8C@*-`XP$A@6#!@``)`````P!`````````````#P!````````
+M00X000X81`Y`@P.&`@```!0````T`0````````````!``````````"0```!,
+M`0````````````":`````````$0.*%.-`HP#A@2#!0`````4````=`$`````
+M````````8``````````4````C`$`````````````%P`````````4````I`$`
+M````````````#0,````````4``````````$``7@0#`<(D`$````````D````
+M'```````````````6@````````!"#A!!#AA!#B"#!(8#C`(`%````$0`````
+M`````````$``````````%````%P```````````````X`````````)````'0`
+M`````````````)0`````````1`XP3XP"A@.#!````````#0```"<````````
+M``````!F`````````$(.$$(.&$(.($$.*$$.,$0.0(,&A@6,!(T#C@(`````
+M'````-0``````````````'4`````````00X01`X@@P(D````]```````````
+M````<@````````!!#A!!#AA$#B"#`X8"````)````!P!`````````````*H`
+M````````00X000X81`X@@P.&`@```"0```!$`0````````````"&````````
+M`$$.$$$.&$0.((,#A@(````D````;`$`````````````L@````````!$#C!4
+MC0*,`X8$@P4`````)````)0!`````````````'$`````````1`XP6(X"C0.,
+M!(8%@P8``"0```"\`0````````````"A`````````$0.,$^,`H8#@P0`````
+M```D````Y`$`````````````'P$```````!$#D!>CP*.`XT$C`6&!H,')```
+M``P"`````````````*(`````````00X000X81`X@@P.&`@```"0````T`@``
+M``````````"B`````````$$.$$$.&$0.((,#A@(````D````7`(`````````
+M````T0````````!!#A!!#AA$#B"#`X8"````)````(0"`````````````-P`
+M````````00X000X81`X@@P.&`@```!P```"L`@````````````"$````````
+M`$$.$(,"````)````,P"``````````````L!````````1`XP5(T"C`.&!(,%
+M`````!0``````````0`!>!`,!PB0`0```````#0````<``````````````!*
+M`P```````$(.$$(.&$(.($(.*$$.,$$..(,'A@:,!8T$C@./`@``'````%0`
+M`````````````'\`````````00X0@P(````4````=```````````````)```
+M```````4````C```````````````1@`````````T````I```````````````
+M]P````````!"#A!"#AA"#B!!#BA!#C!$#CB#!H8%C`2-`XX"`````#P```#<
+M``````````````#:`0```````$(.$$(.&$(.($(.*$$.,$$..$0.4(,'A@:,
+M!8T$C@./`@`````````\````'`$`````````````2P$```````!"#A!"#AA"
+M#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`````````%````%P!````````
+M``````8`````````%````'0!``````````````8`````````%````(P!````
+M``````````8`````````-````*0!``````````````H#````````0@X00@X8
+M0@X@00XH00XP@P:&!8P$C0..`@`````````<````W`$`````````````'P``
+M``````!!#A"#`@```!P```#\`0````````````!Z`````````$0.($J&`H,#
+M)````!P"`````````````-\`````````00X000X81`X@@P.&`@```"P```!$
+M`@````````````!=`0```````$(.$$$.&$$.($0.4(,$A@.,`@```````!0`
+M``!T`@`````````````"`````````"0```",`@`````````````1`@``````
+M`$$.$$$.&$0.((,#A@(````4````M`(`````````````"``````````D````
+MS`(`````````````*`$```````!$#F!/C`*&`X,$````````/````/0"````
+M`````````$<%````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&!HP%C02.
+M`X\"`````````#P````T`P````````````#M`@```````$(.$$(.&$(.($(.
+M*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````D````=`,`````````````
+M70$```````!$#C!8C@*-`XP$A@6#!@``)````)P#`````````````+P`````
+M````1`X@3HP"A@.#!````````"0```#$`P````````````!Y!@```````$0.
+M0%Z/`HX#C02,!88&@P<D````[`,`````````````E`,```````!$#G!>CP*.
+M`XT$C`6&!H,''````!0$`````````````$8`````````1`X@2HP"@P,<````
+M-`0`````````````$0````````!$#A```````!0```!4!``````````````&
+M`````````!0```!L!`````````````!?`````````!0```"$!```````````
+M```\`````````!P```"<!``````````````\`````````$0.&$F,`H,#)```
+M`+P$`````````````$4#````````00X000X8@P.&`@```````"0```#D!```
+M``````````"-!@```````$$.$$$.&(,#A@(````````D````#`4`````````
+M````W`8```````!"#A!!#AA!#B"#!(8#C`(`%````#0%`````````````%`"
+M````````%````$P%`````````````!,`````````)````&0%````````````
+M`(@!````````1`Y`7H\"C@.-!(P%A@:#!R0```",!0````````````#3!```
+M`````$0.4%Z/`HX#C02,!88&@P<D````M`4`````````````T0````````!$
+M#C!4C0*,`X8$@P4`````'````-P%`````````````'L`````````1`X@2H8"
+M@P,D````_`4`````````````B`$```````!$#D!>CP*.`XT$C`6&!H,''```
+M`"0&`````````````)P`````````1`X0```````4````1`8`````````````
+M7@`````````4````7`8`````````````7@`````````<````=`8`````````
+M````'@````````!!#A"#`@```!P```"4!@`````````````>`````````$$.
+M$(,"````+````+0&`````````````(\&````````0@X00@X800X@00XH1`Z`
+M`8,%A@2,`XT"'````.0&`````````````'``````````1`X@2HP"@P,<````
+M!`<`````````````&@````````!$#A```````!0``````````0`!>!`,!PB0
+M`0```````!0````<```````````````3`````````!0````T````````````
+M```,`````````"P```!,``````````````"[`````````$(.$$(.&$$.($$.
+M*(,%A@2,`XT"`````!0```!\```````````````U`````````!0```"4````
+M```````````,`````````"0```"L``````````````"K`````````$$.$$<.
+MD`*#`@`````````D````U```````````````U@````````!"#A!!#AA!#B"#
+M!(8#C`(`%````/P``````````````"L`````````)````!0!````````````
+M`$P`````````0@X000X800X@@P2&`XP"`!P````\`0````````````"&````
+M`````$$.$$0.0(,"%````%P!`````````````"<`````````+````'0!````
+M`````````)<!````````0@X000X800X@1`Z@`8,$A@.,`@``````+````*0!
+M`````````````&(!````````0@X00@X800X@00XH1`XP@P6&!(P#C0(`+```
+M`-0!`````````````)P`````````0@X00@X800X@00XH1`XP@P6&!(P#C0(`
+M)`````0"`````````````-8`````````0@X000X800X@@P2&`XP"`"0````L
+M`@````````````"$`````````$0.($Z,`H8#@P0````````T````5`(`````
+M````````B0$```````!"#A!"#AA"#B!!#BA!#C"#!H8%C`2-`XX"````````
+M`#P```",`@````````````!5`0```````$(.$$(.&$(.($(.*$$.,$$..$<.
+MT`&#!X8&C`6-!(X#CP(````````L````S`(`````````````ZP````````!"
+M#A!"#AA!#B!!#BA$#C"#!88$C`.-`@`D````_`(`````````````_@``````
+M``!!#A!!#AA$#B"#`X8"````%````"0#`````````````"X`````````'```
+M`#P#`````````````%(`````````00X0@P(````D````7`,`````````````
+M4P````````!$#B!.C`*&`X,$````````'````(0#`````````````!D`````
+M````1`X0```````<````I`,`````````````&0````````!$#A```````!P`
+M``#$`P`````````````>`````````$0.$```````)````.0#````````````
+M`%$`````````0@X000X800X@@P2&`XP"`!P````,!``````````````H````
+M`````$$.$(,"````)````"P$`````````````($`````````00X000X81`X@
+M@P.&`@```!P```!4!``````````````^`````````$$.$(,"````%````'0$
+M`````````````$0`````````)````(P$`````````````"8!````````1`XP
+M6(X"C0.,!(8%@P8``"0```"T!`````````````""`````````$(.$$$.&$$.
+M((,$A@.,`@`<````W`0`````````````%P````````!$#A```````!0```#\
+M!``````````````/`````````!0````4!0`````````````C`````````!0`
+M```L!0`````````````R`````````!P```!$!0````````````"/````````
+M`$0.($J&`H,#)````&0%`````````````*H`````````00X000X81`X@@P.&
+M`@```"P```",!0````````````"L`````````$(.$$(.&$$.($$.*$0.,(,%
+MA@2,`XT"`!0```"\!0````````````!H`````````!0``````````0`!>!`,
+M!PB0`0```````!0````<``````````````!(`````````"0````T````````
+M``````!E`````````$(.$$$.&$$.((,$A@.,`@`D````7```````````````
+M4@````````!!#A!!#AA$#B"#`X8"````'````(0``````````````$P`````
+M````00X0@P(````D````I```````````````T0````````!"#A!!#AA!#B"#
+M!(8#C`(`)````,P``````````````!,!````````1`X@3HP"A@.#!```````
+M`!P```#T``````````````!)`````````$0.($J,`H,#%````!0!````````
+M``````\`````````)````"P!`````````````(T!````````1`XP6(X"C0.,
+M!(8%@P8``!0```!4`0`````````````N`````````!P```!L`0``````````
+M```]`````````$0.$```````'````(P!`````````````",!````````1`X@
+M2H8"@P,D````K`$`````````````Q@````````!$#B!.C`*&`X,$````````
+M'````-0!`````````````#L`````````1`X0```````<````]`$`````````
+M````.`````````!$#A```````!P````4`@````````````"``````````$$.
+M$(,"````'````#0"`````````````"\`````````1`X0```````4````5`(`
+M````````````=0`````````4````;`(`````````````;P`````````\````
+MA`(`````````````IP,```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&
+MC`6-!(X#CP(`````````)````,0"`````````````&$`````````00X000X8
+M1`X@@P.&`@```"0```#L`@````````````!I`0```````$(.$$$.&$$.((,$
+MA@.,`@`L````%`,`````````````10$```````!"#A!"#AA!#B!!#BA$#C"#
+M!88$C`.-`@`<````1`,`````````````0`````````!$#B!*C`*#`QP```!D
+M`P````````````!D`````````$$.$(,"````+````(0#`````````````*4!
+M````````0@X000X800X@1PZ@!(,$A@.,`@``````'````+0#````````````
+M`%,`````````00X0@P(````D````U`,`````````````[@````````!"#A!!
+M#AA!#B"#!(8#C`(`)````/P#`````````````&L`````````00X000X81`X@
+M@P.&`@```"P````D!`````````````#(!````````$<.T`1PCP*.`XT$C`6&
+M!H,'`````````"0```!4!`````````````"T`0```````$<.H`18C`*&`X,$
+M```````4````?`0`````````````E0`````````4````E`0`````````````
+M<P`````````\````K`0`````````````CP$```````!"#A!"#AA"#B!"#BA!
+M#C!!#CA$#J`!@P>&!HP%C02.`X\"````````'````.P$`````````````$0`
+M````````00X01`Y`@P(<````#`4`````````````00````````!$#B!*C`*#
+M`R0````L!0````````````#I`0```````$0.8%2-`HP#A@2#!0`````<````
+M5`4`````````````5`````````!!#A"#`@```!P```!T!0`````````````.
+M`````````$0.$```````'````)0%`````````````'4`````````00X0@P(`
+M```4````M`4`````````````#``````````<````S`4`````````````/P``
+M``````!$#B!*A@*#`R0```#L!0````````````#'`````````$$.$$$.&$0.
+M((,#A@(````<````%`8`````````````*0````````!!#A"#`@```"0````T
+M!@````````````!Y`````````$(.$$$.&$$.((,$A@.,`@`<````7`8`````
+M````````90````````!$#B!*A@*#`QP```!\!@````````````!>````````
+M`$0.($J&`H,#%``````````!``%X$`P'")`!````````%````!P`````````
+M`````$8`````````%````#0``````````````"D`````````%````$P`````
+M`````````"D`````````%````&0``````````````"L`````````+````'P`
+M`````````````(@`````````0@X00@X800X@00XH1`XP@P6&!(P#C0(`)```
+M`*P``````````````%D`````````00X000X81`X@@P.&`@```#0```#4````
+M``````````#*`````````$(.$$(.&$(.($$.*$$.,$0.L`&#!H8%C`2-`XX"
+M````-`````P!`````````````,<`````````0@X00@X80@X@00XH00XP1`ZP
+M`8,&A@6,!(T#C@(````\````1`$`````````````_P````````!"#A!"#AA"
+M#B!"#BA!#C!!#CA'#M`!@P>&!HP%C02.`X\"````````+````(0!````````
+M`````&(`````````0@X000X800X@1`Z@`8,$A@.,`@``````)````+0!````
+M`````````!X!````````00X000X81PZ@`8,#A@(``"0```#<`0``````````
+M``!2`0```````$$.$$$.&$<.H`&#`X8"```\````!`(`````````````0P$`
+M``````!"#A!"#AA"#B!"#BA!#C!!#CA'#H`"@P>&!HP%C02.`X\"````````
+M%````$0"`````````````,4`````````%````%P"`````````````&L`````
+M````%````'0"`````````````%,`````````)````(P"`````````````,\!
+M````````00X000X81`X@@P.&`@```!0```"T`@````````````"0````````
+M`!P```#,`@````````````#S`````````$$.$(,"````'````.P"````````
+M`````,4!````````00X0@P(````L````#`,`````````````_P````````!"
+M#A!"#AA!#B!!#BA$#C"#!88$C`.-`@`L````/`,`````````````_P``````
+M``!"#A!"#AA!#B!!#BA$#C"#!88$C`.-`@`4````;`,`````````````.P``
+M```````L````A`,`````````````JP$```````!"#A!"#AA!#B!!#BA$#C"#
+M!88$C`.-`@`L````M`,`````````````NP$```````!"#A!"#AA!#B!!#BA$
+M#C"#!88$C`.-`@`L````Y`,`````````````Q@$```````!"#A!!#AA!#B!'
+M#N`!@P2&`XP"```````L````%`0`````````````*`(```````!"#A!!#AA!
+M#B!'#N`!@P2&`XP"```````D````1`0`````````````FP````````!!#A!!
+M#AA$#B"#`X8"````)````&P$`````````````)P`````````00X000X81`X@
+M@P.&`@```"0```"4!`````````````#2`````````$(.$$$.&$$.((,$A@.,
+M`@`D````O`0`````````````XP````````!"#A!!#AA!#B"#!(8#C`(`/```
+M`.0$`````````````+0"````````0@X00@X80@X@0@XH00XP00XX1P[@!(,'
+MA@:,!8T$C@./`@```````!0````D!0````````````"``````````!0````\
+M!0````````````#/`````````#P```!4!0`````````````9!````````$(.
+M$$(.&$(.($(.*$$.,$$..$0.2(,'A@:,!8T$C@./`@`````````\````E`4`
+M````````````F`$```````!"#A!"#AA"#B!"#BA!#C!!#CA'#M`$@P>&!HP%
+MC02.`X\"````````+````-0%`````````````+D`````````0@X00@X800X@
+M00XH1`XP@P6&!(P#C0(`'`````0&`````````````+D`````````00X0@P(`
+M```<````)`8`````````````-P````````!!#A"#`@```"0```!$!@``````
+M``````!X`0```````$0.0%Z/`HX#C02,!88&@P<\````;`8`````````````
+M(P,```````!"#A!"#AA"#B!"#BA!#C!!#CA$#E"#!X8&C`6-!(X#CP(`````
+M````%````*P&``````````````(`````````'````,0&`````````````&4`
+M````````1`X0```````<````Y`8`````````````$P$```````!$#B!*A@*#
+M`QP````$!P`````````````R`````````$0.$```````'````"0'````````
+M`````(8`````````1`X0```````<````1`<`````````````_@(```````!!
+M#A"#`@```!P```!D!P````````````"=`0```````$0.$```````'````(0'
+M`````````````#H`````````00X0@P(````D````I`<`````````````A0$`
+M``````!$#C!8C@*-`XP$A@6#!@``)````,P'`````````````,L`````````
+M1`XP6(X"C0.,!(8%@P8``#P```#T!P````````````"R#````````$(.$$(.
+M&$(.($(.*$$.,$$..$0.H`&#!X8&C`6-!(X#CP(````````4````-`@`````
+M````````<P`````````4````3`@`````````````<P`````````<````9`@`
+M````````````8@````````!$#D```````"0```"$"`````````````"3"```
+M`````$0.,%B.`HT#C`2&!8,&```T````K`@`````````````7@$```````!"
+M#A!"#AA"#B!!#BA!#C"#!H8%C`2-`XX"`````````"P```#D"```````````
+M``"R`````````$(.$$(.&$$.($$.*$0.,(,%A@2,`XT"`"0````4"0``````
+M``````#D`````````$$.$$$.&$0.((,#A@(````<````/`D`````````````
+M20````````!!#A"#`@```"P```!<"0````````````"2`````````$(.$$$.
+M&$$.($<.X`&#!(8#C`(``````"0```","0`````````````4`0```````$$.
+M$$<.L`&#`@`````````L````M`D`````````````I@````````!"#A!"#AA!
+M#B!!#BA'#O`!@P6&!(P#C0(D````Y`D`````````````8P````````!!#A!!
+M#AA$#B"#`X8"````)`````P*`````````````*\!````````1`XP6(X"C0.,
+M!(8%@P8``!P````T"@````````````!J`````````$$.$(,"````)````%0*
+M`````````````'@`````````1`X@3HT"C`.#!````````"0```!\"@``````
+M```````5`0```````$(.$$$.&$$.((,$A@.,`@`<````I`H`````````````
+M.P````````!!#A!$#B"#`B0```#$"@````````````#W`````````$0.,$^,
+M`H8#@P0````````L````[`H`````````````D0(```````!"#A!!#AA!#B!$
+M#F"#!(8#C`(````````L````'`L`````````````/00```````!"#A!!#AA!
+M#B!$#F"#!(8#C`(````````D````3`L`````````````[P````````!$#C!4
+MC0*,`X8$@P4`````+````'0+`````````````$8!````````0@X00@X800X@
+M00XH1PZP`8,%A@2,`XT"-````*0+`````````````$H"````````0@X00@X8
+M0@X@00XH00XP@P:&!8P$C0..`@`````````D````W`L`````````````A@``
+M``````!"#A!!#AA!#B"#!(8#C`(`'`````0,``````````````X`````````
+M1`X0```````T````)`P```````````````$```````!"#A!"#AA"#B!!#BA!
+M#C"#!H8%C`2-`XX"`````````!P```!<#`````````````!&`````````$$.
+M$(,"````)````'P,`````````````-D#````````1`Y07H\"C@.-!(P%A@:#
+M!Q0```"D#`````````````#/`````````"0```"\#`````````````!Y````
+M`````$(.$$$.&$$.((,$A@.,`@`L````Y`P`````````````7`````````!"
+M#A!"#AA!#B!!#BB#!88$C`.-`@`````<````%`T`````````````6P``````
+M``!$#B!*C`*#`QP````T#0`````````````Q`````````$0.$```````)```
+M`%0-``````````````4!````````1`XP5(X"C0.,!(,%`````!P```!\#0``
+M``````````!.`````````$0.($J&`H,#)````)P-`````````````(<`````
+M````1`X@3HT"C`.#!````````"0```#$#0````````````":`0```````$0.
+M,%2-`HP#A@2#!0`````<````[`T`````````````2@````````!$#A``````
+M`"0````,#@````````````!%`@```````$0.($Z,`H8#@P0````````L````
+M-`X`````````````0@(```````!"#A!"#AA!#B!!#BA$#C"#!88$C`.-`@`<
+M````9`X`````````````:@````````!$#A```````!0```"$#@``````````
+M``"4`````````"0```"<#@````````````#E`````````$0.($Z,`H8#@P0`
+M```````<````Q`X`````````````)@````````!$#A```````"0```#D#@``
+M```````````_`0```````$0.0%Z/`HX#C02,!88&@P<<````#`\`````````
+M````+0````````!$#A```````!P````L#P````````````!Q`````````$0.
+M($J,`H,#+````$P/`````````````"8!````````0@X00@X800X@00XH1`XP
+M@P6&!(P#C0(`)````'P/`````````````)@`````````1`X@3HP"A@.#!```
+M`````#P```"D#P````````````!!`0```````$(.$$(.&$(.($(.*$$.,$$.
+M.$<.T`&#!X8&C`6-!(X#CP(````````L````Y`\`````````````N0``````
+M``!"#A!!#AA!#B!$#F"#!(8#C`(````````<````%!``````````````&```
+M``````!$#A```````!0````T$``````````````5`````````!P```!,$```
+M```````````T`````````$0.$```````%````&P0`````````````!L`````
+M````)````(00`````````````*T!````````0@X000X800X@@P2&`XP"`!0`
+M``"L$``````````````9`````````"0```#$$`````````````!G````````
+M`$$.$$$.&$0.((,#A@(````D````[!``````````````G@$```````!!#A!!
+M#AA$#B"#`X8"````%````!01`````````````!4`````````'````"P1````
+M`````````$X`````````1`X@2HP"@P,4````3!$`````````````%0``````
+M```<````9!$`````````````00````````!!#A"#`@```!0```"$$0``````
+M```````5`````````!P```"<$0````````````!!`````````$$.$(,"````
+M%````+P1`````````````!4`````````)````-01`````````````&D`````
+M````00X000X81`YP@P.&`@```!0```#\$0`````````````5`````````!P`
+M```4$@````````````!$`````````$$.$(,"````%````#02````````````
+M`!4`````````+````$P2`````````````)X`````````0@X000X800X@1`Z@
+M`8,$A@.,`@``````%````'P2`````````````!@`````````-````)02````
+M`````````.4`````````0@X00@X80@X@00XH00XP1`ZP`8,&A@6,!(T#C@(`
+M```4````S!(`````````````&``````````T````Y!(`````````````Y0``
+M``````!"#A!"#AA"#B!!#BA!#C!$#K`!@P:&!8P$C0..`@```!0````<$P``
+M```````````8`````````#0````T$P````````````#E`````````$(.$$(.
+M&$(.($$.*$$.,$0.L`&#!H8%C`2-`XX"````%````&P3`````````````"@`
+M````````'````(03`````````````%D`````````1`X@2HP"@P,4````I!,`
+M````````````*``````````<````O!,`````````````60````````!$#B!*
+MC`*#`QP```#<$P`````````````U`````````$$.$(,"````'````/P3````
+M`````````%T`````````00X0@P(````<````'!0`````````````-0``````
+M``!!#A"#`@```!P````\%`````````````!=`````````$$.$(,"````'```
+M`%P4`````````````#4`````````00X0@P(````<````?!0`````````````
+M70````````!!#A"#`@```!P```"<%`````````````!S`````````$0.&$F&
+M`H,#'````+P4`````````````$$`````````00X0@P(````<````W!0`````
+M````````=`````````!$#AA)A@*#`R0```#\%`````````````"K````````
+M`$0.,%2.`HT#C`2#!0`````D````)!4`````````````F`````````!$#B!.
+MC`*&`X,$````````)````$P5`````````````,$`````````1`XP5(T"C`.&
+M!(,%`````"0```!T%0````````````#=`````````$0.*%.-`HP#A@2#!0``
+M```D````G!4`````````````.0````````!!#A!!#AA$#B"#`X8"````'```
+M`,05`````````````#H`````````1`X0```````D````Y!4`````````````
+MN@````````!$#BA3C0*,`X8$@P4`````)`````P6`````````````#D`````
+M````00X000X81`X@@P.&`@```!P````T%@`````````````Z`````````$0.
+M$```````%````%06`````````````!4`````````)````&P6````````````
+M`((`````````00X000X81PZ@`8,#A@(``!0```"4%@`````````````[````
+M`````"0```"L%@````````````#,`````````$0.,%2-`HP#A@2#!0`````D
+M````U!8`````````````N@````````!$#BA3C0*,`X8$@P4`````)````/P6
+M`````````````#D`````````00X000X81`X@@P.&`@```!P````D%P``````
+M```````Z`````````$0.$```````)````$07`````````````,@`````````
+M1`XH4XT"C`.&!(,%`````"0```!L%P`````````````Y`````````$$.$$$.
+M&$0.((,#A@(````<````E!<`````````````.@````````!$#A```````"0`
+M``"T%P````````````#K`````````$0.*%.-`HP#A@2#!0`````D````W!<`
+M````````````1`````````!!#A!!#AA$#B"#`X8"````'`````08````````
+M`````#H`````````1`X0```````D````)!@`````````````"P$```````!$
+M#BA3C0*,`X8$@P4`````)````$P8`````````````$0`````````00X000X8
+M1`X@@P.&`@```!P```!T&``````````````Z`````````$0.$```````'```
+M`)08`````````````*,`````````1`X@2H8"@P,<````M!@`````````````
+M6@````````!!#A"#`@```!P```#4&``````````````Z`````````$0.$```
+M````%````/08`````````````!4`````````'`````P9`````````````#L`
+M````````00X0@P(````<````+!D`````````````;@````````!$#AA)A@*#
+M`R0```!,&0````````````!0`````````$0.($Z,`H8#@P0````````<````
+M=!D`````````````;@````````!$#AA)A@*#`R0```"4&0````````````!0
+M`````````$0.($Z,`H8#@P0````````<````O!D`````````````;@``````
+M``!$#AA)A@*#`R0```#<&0````````````!0`````````$0.($Z,`H8#@P0`
+M```````<````!!H`````````````;@````````!$#AA)A@*#`R0````D&@``
+M``````````!/`````````$0.($Z,`H8#@P0````````<````3!H`````````
+M````;@````````!$#AA)A@*#`R0```!L&@````````````!/`````````$0.
+M($Z,`H8#@P0````````<````E!H`````````````;@````````!$#AA)A@*#
+M`R0```"T&@````````````!/`````````$0.($Z,`H8#@P0````````<````
+MW!H`````````````I0````````!$#AA)A@*#`QP```#\&@`````````````Q
+M`@```````$$.$(,"````'````!P;`````````````'X`````````1`X8288"
+M@P,<````/!L`````````````'`````````!$#A```````!P```!<&P``````
+M```````Z`````````$0.$```````'````'P;`````````````'X`````````
+M1`X8288"@P,<````G!L`````````````'`````````!$#A```````!P```"\
+M&P`````````````Z`````````$0.$```````)````-P;`````````````/@`
+M````````1`X@3HP"A@.#!````````!P````$'`````````````!(````````
+M`$0.($J,`H,#'````"0<`````````````#H`````````1`X0```````<````
+M1!P`````````````?@````````!$#AA)A@*#`QP```!D'`````````````">
+M`````````$0.($J&`H,#'````(0<`````````````#H`````````1`X0````
+M```<````I!P`````````````@`````````!$#AA)A@*#`QP```#$'```````
+M```````<`````````$0.$```````'````.0<`````````````#H`````````
+M1`X0```````<````!!T`````````````@@````````!$#AA)A@*#`QP````D
+M'0`````````````Z`````````$0.$```````'````$0=`````````````((`
+M````````1`X8288"@P,<````9!T`````````````.@````````!$#A``````
+M`!0```"$'0`````````````5`````````!P```"<'0`````````````Z````
+M`````$0.$```````%````+P=`````````````!4`````````'````-0=````
+M`````````#L`````````00X0@P(````4````]!T`````````````%0``````
+M```D````#!X`````````````C0````````!!#A!!#AA$#B"#`X8"````'```
+M`#0>`````````````+(`````````1`X8288"@P,<````5!X`````````````
+M'`````````!!#A"#`@```!P```!T'@````````````"R`````````$0.&$F&
+M`H,#'````)0>`````````````!P`````````00X0@P(````<````M!X`````
+M````````;@````````!$#AA)A@*#`QP```#4'@`````````````Z````````
+M`$0.$```````)````/0>`````````````+@`````````1`XH4XT"C`.&!(,%
+M`````#0````<'P````````````#^`````````$(.$$(.&$(.($$.*$$.,(,&
+MA@6,!(T#C@(`````````)````%0?`````````````+@`````````1`XH4XT"
+MC`.&!(,%`````"0```!\'P````````````!Y`````````$0.($Z,`H8#@P0`
+M```````<````I!\`````````````.@````````!$#A```````!P```#$'P``
+M``````````!C`````````$0.&$F&`H,#'````.0?`````````````"4`````
+M````1`X0```````<````!"``````````````.@````````!$#A```````!0`
+M```D(``````````````H`````````#P````\(`````````````#4````````
+M`$(.$$(.&$(.($(.*$$.,$$..$<.T`&#!X8&C`6-!(X#CP(````````<````
+M?"``````````````8P````````!!#A"#`@```!P```"<(``````````````X
+M`````````$0.$```````'````+P@`````````````*@`````````00X01`X@
+M@P(<````W"``````````````L@````````!$#AA)A@*#`Q0```#\(```````
+M``````!$`````````!P````4(0````````````"/`````````$$.$(,"````
+M)````#0A`````````````!(!````````1`X@3HP"A@.#!````````"0```!<
+M(0`````````````(`0```````$(.$$$.&$$.((,$A@.,`@`<````A"$`````
+M````````6`````````!!#A"#`@```!P```"D(0`````````````J````````
+M`$$.$(,"````%````,0A``````````````<`````````'````-PA````````
+M```````!````````1`Y````````D````_"$`````````````B0$```````!$
+M#E!/C`*&`X,$````````+````"0B`````````````/``````````0@X000X8
+M00X@1P[@`8,$A@.,`@``````)````%0B`````````````/P"````````1`XP
+M5(T"C`.&!(,%`````!0```!\(@`````````````(`````````!0```"4(@``
+M```````````_`````````!P```"L(@````````````!&`````````$0.($J,
+M`H,#'````,PB`````````````$$`````````1`X0```````D````["(`````
+M````````O`````````!$#B!.C`*&`X,$````````)````!0C````````````
+M`*P`````````1`X@3HP"A@.#!````````"0````\(P````````````#H````
+M`````$0.0%Z/`HX#C02,!88&@P<D````9",`````````````\P````````!$
+M#D!>CP*.`XT$C`6&!H,'%``````````!``%X$`P'")`!````````%````!P`
+M`````````````/$`````````'````#0``````````````'4`````````1`X8
+M288"@P,4````5```````````````:0`````````<````;```````````````
+M6`````````!!#A"#`@```!0```",``````````````#'`````````!P```"D
+M``````````````"O`0```````$0.($J&`H,#'````,0``````````````*P`
+M````````1`X0```````4````Y```````````````'0`````````4````_```
+M````````````"P`````````\````%`$`````````````_`(```````!"#A!"
+M#AA"#B!"#BA!#C!!#CA$#F"#!X8&C`6-!(X#CP(`````````'````%0!````
+M`````````#<`````````00X0@P(````<````=`$`````````````30``````
+M``!!#A"#`@```!P```"4`0````````````!C`````````$0.($J&`H,#+```
+M`+0!`````````````/P`````````0@X00@X800X@00XH1`XP@P6&!(P#C0(`
+M)````.0!`````````````.``````````00X000X81`X@@P.&`@```"0````,
+M`@````````````"Y`0```````$0.,%2-`HP#A@2#!0`````4``````````$`
+M`7@0#`<(D`$````````4````'```````````````'@`````````D````-```
+M````````````!@$```````!$#B!.C`*&`X,$````````)````%P`````````
+M`````',"````````00X000X81`X@@P.&`@```"0```"$``````````````"1
+M`0```````$$.$$$.&$0.((,#A@(````L````K```````````````J@8`````
+M``!'#N`$<(\"C@.-!(P%A@:#!P`````````4````W```````````````,0``
+M```````L````]```````````````^0(```````!"#A!"#AA!#B!!#BA'#K`$
+M@P6&!(P#C0(<````)`$`````````````&@````````!!#A"#`@```"0```!$
+M`0````````````"7`````````$$.$$$.&$0.((,#A@(````D````;`$`````
+M````````A@````````!"#A!!#AA!#B"#!(8#C`(`%````)0!````````````
+M`($`````````/````*P!``````````````\!````````0@X00@X80@X@0@XH
+M00XP00XX1`Y`@P>&!HP%C02.`X\"`````````"0```#L`0`````````````%
+M`0```````$(.$$$.&$$.((,$A@.,`@`D````%`(`````````````C@``````
+M``!!#A!!#AA$#B"#`X8"````)````#P"`````````````"D"````````1`XP
+M5(T"C`.&!(,%`````"0```!D`@````````````#>`````````$0.*$^,`H8#
+M@P0````````<````C`(`````````````8P````````!!#A!$#B"#`AP```"L
+M`@````````````"4`````````$$.$(,"````)````,P"``````````````H!
+M````````1`X@3HP"A@.#!````````"0```#T`@````````````!?````````
+M`$$.$$$.&$0.((,#A@(````4``````````$``7@0#`<(D`$````````4````
+M'```````````````%@`````````4````-````````````````@`````````4
+M````3```````````````$P`````````<````9```````````````5P``````
+M``!$#A```````!P```"$```````````````5`````````$0.$```````%```
+M`*0```````````````8`````````'````+P``````````````!4`````````
+M1`X0```````D````W```````````````Z0````````!"#A!!#AA!#B"#!(8#
+MC`(`'`````0!`````````````$8`````````00X0@P(````D````)`$`````
+M````````.P````````!!#A!!#AA$#B"#`X8"````%``````````!``%X$`P'
+M")`!````````%````!P``````````````"H`````````%````#0`````````
+M`````"H`````````%``````````!``%X$`P'")`!````````'````!P`````
+M`````````"4`````````1`X0```````<````/```````````````,@``````
+M``!!#A"#`@```!P```!<```````````````E`````````$0.$```````)```
+M`'P``````````````+<`````````00X000X81`X@@P.&`@```!P```"D````
+M```````````:`````````$0.$```````%``````````!``%X$`P'")`!````
+M````'````!P``````````````"<`````````00X0@P(````<````/```````
+M````````'@````````!!#A"#`@```!P```!<```````````````A````````
+M`$0.$```````/````'P```````````````X!````````0@X00@X80@X@0@XH
+M00XP00XX1`Y`@P>&!HP%C02.`X\"`````````"0```"\``````````````!R
+M`````````$$.$$$.&$0.((,#A@(````4````Y```````````````A@``````
+M```<````_```````````````#`$```````!!#A"#`@```"0````<`0``````
+M``````!#`@```````$0.4%Z/`HX#C02,!88&@P<<````1`$`````````````
+M&@````````!$#A```````!0``````````0`!>!`,!PB0`0```````!P````<
+M``````````````![`````````$0.$```````'````#P``````````````%@`
+M````````1`X0```````D````7```````````````=`````````!!#A!!#AA$
+M#B"#`X8"````)````(0``````````````!P"````````1`X@3HP"A@.#!```
+M`````"0```"L``````````````"/`P```````$0.0%Z/`HX#C02,!88&@P<<
+M````U```````````````&@````````!$#A```````!0```#T````````````
+M``!C`````````"0````,`0````````````"E`````````$0.($Z,`H8#@P0`
+M```````<````-`$`````````````K@````````!!#A"#`@```!0```!4`0``
+M``````````!S`````````"0```!L`0`````````````=`@```````$(.$$$.
+M&$$.((,$A@.,`@`D````E`$`````````````2P(```````!"#A!!#AA!#B"#
+M!(8#C`(`%``````````!``%X$`P'")`!````````%````!P`````````````
+M`#``````````%````#0``````````````#``````````+````$P`````````
+M`````%$`````````0@X00@X800X@00XH1`XP@P6&!(P#C0(`)````'P`````
+M`````````$0`````````0@X000X800X@@P2&`XP"`!0```"D````````````
+M```R`````````!0```"\``````````````!Q`````````!0```#4````````
+M``````!C`````````!P```#L``````````````#M`````````$$.$(,"````
+M%`````P!`````````````#(`````````)````"0!`````````````&``````
+M````0@X000X800X@@P2&`XP"`#P```!,`0````````````!E`0```````$(.
+M$$(.&$(.($(.*$$.,$$..$0.4(,'A@:,!8T$C@./`@`````````D````C`$`
+M````````````L`$```````!"#A!!#AA!#B"#!(8#C`(`/````+0!````````
+M`````#L"````````0@X00@X80@X@0@XH00XP00XX1`ZP`8,'A@:,!8T$C@./
+M`@```````"0```#T`0````````````"S`````````$0.($Z,`H8#@P0`````
+M```T````'`(`````````````VP````````!"#A!"#AA"#B!!#BA!#C"#!H8%
+MC`2-`XX"`````````"0```!4`@````````````"S`0```````$0.($Z,`H8#
+M@P0````````<````?`(`````````````2@````````!$#A```````"P```"<
+M`@````````````!T`````````$(.$$(.&$$.($$.*$0.,(,%A@2,`XT"`!P`
+M``#,`@`````````````]`````````$0.$```````/````.P"````````````
+M`$<$````````0@X00@X80@X@0@XH00XP00XX1`Y`@P>&!HP%C02.`X\"````
+M`````!P````L`P````````````!%`````````$0.$```````-````$P#````
+M`````````-$`````````0@X00@X80@X@00XH00XP@P:&!8P$C0..`@``````
+M```\````A`,`````````````9@$```````!"#A!"#AA"#B!"#BA!#C!!#CA$
+M#E"#!X8&C`6-!(X#CP(`````````+````,0#`````````````'8`````````
+M0@X00@X800X@00XH1`XP@P6&!(P#C0(`'````/0#`````````````)\`````
+M````00X0@P(````4````%`0`````````````&@$````````D````+`0`````
+M````````F0$```````!$#D!>CP*.`XT$C`6&!H,''````%0$````````````
+M`#X`````````1`X@2HP"@P,D````=`0`````````````00$```````!$#C!4
+MC0*,`X8$@P4`````)````)P$`````````````(P!````````0@X000X800X@
+M@P2&`XP"`#P```#$!`````````````"$`@```````$(.$$(.&$(.($(.*$$.
+M,$$..$<.@`.#!X8&C`6-!(X#CP(````````\````!`4`````````````1`$`
+M``````!"#A!"#AA"#B!"#BA!#C!!#CA'#H`#@P>&!HP%C02.`X\"````````
+M/````$0%`````````````+8!````````0@X00@X80@X@0@XH00XP00XX1P[@
+M"H,'A@:,!8T$C@./`@```````"0```"$!0````````````!Y`````````$0.
+M($Z,`H8#@P0````````<````K`4`````````````1P````````!$#B!*C`*#
+M`Q0```#,!0````````````!;`````````#P```#D!0````````````"#!```
+M`````$(.$$(.&$(.($(.*$$.,$$..$0.0(,'A@:,!8T$C@./`@`````````\
+M````)`8`````````````F2\```````!"#A!"#AA"#B!"#BA!#C!!#CA$#K`!
+M@P>&!HP%C02.`X\"````````-````&0&`````````````-("````````0@X0
+M0@X80@X@00XH00XP@P:&!8P$C0..`@`````````\````G`8`````````````
+MEP4```````!"#A!"#AA"#B!"#BA!#C!!#CA$#D"#!X8&C`6-!(X#CP(`````
+M````)````-P&`````````````&@!````````00X000X81`X@@P.&`@```!P`
+M```$!P````````````"/`````````$0.($J&`H,#/````"0'````````````
+M`!8#````````0@X00@X80@X@0@XH00XP00XX1`Y0@P>&!HP%C02.`X\"````
+M`````"0```!D!P`````````````#`0```````$0.($Z,`H8#@P0````````\
+M````C`<`````````````;P,```````!"#A!"#AA"#B!"#BA!#C!!#CA$#E"#
+M!X8&C`6-!(X#CP(`````````/````,P'`````````````.<'````````0@X0
+M0@X80@X@0@XH00XP00XX1`Y0@P>&!HP%C02.`X\"`````````#P````,"```
+M``````````#W`@```````$(.$$(.&$(.($(.*$$.,$$..$0.2(,'A@:,!8T$
+MC@./`@`````````<````3`@`````````````20````````!$#A```````#0`
+M``!L"`````````````"Y`````````$(.$$(.&$(.($$.*$$.,(,&A@6,!(T#
+MC@(`````````)````*0(`````````````*8!````````0@X000X800X@@P2&
+M`XP"`"0```#,"``````````````2`@```````$0.8%F.`HT#C`2&!8,&```D
+M````]`@`````````````I`(```````!"#A!!#AA!#B"#!(8#C`(`'````!P)
+M`````````````#4`````````00X0@P(````<````/`D`````````````70``
+M``````!!#A"#`@```"P```!<"0````````````!'`0```````$(.$$(.&$$.
+M($$.*$0.,(,%A@2,`XT"`!P```","0````````````!8`````````$0.$```
+M````)````*P)`````````````'<`````````00X000X81`X@@P.&`@```"0`
+M``#4"0````````````#U`````````$(.$$(.&$$.((,$C`.-`@`D````_`D`
+M````````````M@````````!"#A!!#AA$#B"#`XP"````'````"0*````````
+M`````#\`````````00X0@P(````<````1`H`````````````^@````````!!
+M#A"#`@```!P```!D"@`````````````A`````````$0.$```````%```````
+M```!``%X$`P'")`!````````'````!P``````````````"<`````````00X0
+M@P(````<````/```````````````'@````````!!#A"#`@```!P```!<````
+M```````````A`````````$0.$```````)````'P``````````````(`!````
+M````1`Y`7H\"C@.-!(P%A@:#!R0```"D``````````````!R`````````$$.
+M$$$.&$0.((,#A@(````4````S```````````````-P`````````<````Y```
+M````````````I@````````!!#A"#`@```"0````$`0`````````````F`@``
+M`````$0.4%Z/`HX#C02,!88&@P<<````+`$`````````````&@````````!$
+M#A```````````````````$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P
+M,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```
+M1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.
+M52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR
+M(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)3
+M1%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P
+M-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#
+M.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@
+M,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&
+M<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@
+M,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X
+M``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H
+M1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT
+M+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E
+M0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P
+M-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'
+M0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5
+M*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@
+M6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$
+M72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W
+M,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z
+M("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S
+M+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R
+M965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R
+M,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@`
+M`$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'
+M3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N
+M,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"
+M4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T
+M,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#
+M0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I
+M(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;
+M1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=
+M(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R
+M.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@
+M*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N
+M-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E
+M94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P
+M,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```
+M1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.
+M52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR
+M(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)3
+M1%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P
+M-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#
+M.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@
+M,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&
+M<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@
+M,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X
+M``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H
+M1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT
+M+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E
+M0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P
+M-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'
+M0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5
+M*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@
+M6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$
+M72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W
+M,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z
+M("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S
+M+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``"YS>6UT86(`+G-T<G1A8@`N<VAS
+M=')T86(`+G)E;&$N=&5X=``N<F5L82YR;V1A=&$`+G)O9&%T82YS='(Q+C@`
+M+G)O9&%T82YS='(Q+C$`+G)E;&$N9&%T80`N<F5L82YE:%]F<F%M90`N8G-S
+M`"YC;VUM96YT````````````````````````````````````````````````
+M````````````````````````````````````````````````(`````$````&
+M````````````````````0``````````:\@@`````````````````$```````
+M`````````````!L````$`````````````````````````,AF"P``````V-`"
+M```````.`````0````@`````````&``````````K`````0````(`````````
+M``````````!@\@@``````/`]```````````````````@````````````````
+M````)@````0`````````````````````````H#<.```````PMP````````X`
+M```#````"``````````8`````````#,````!````,@``````````````````
+M`%`P"0``````M0D```````````````````@``````````0````````!"````
+M`0```#(````````````````````%.@D``````/P"```````````````````!
+M``````````$`````````5@````$````#````````````````````(#T)````
+M``"P)@``````````````````(````````````````````%$````$````````
+M`````````````````-#N#@``````"!P````````.````!P````@`````````
+M&`````````!A`````0````(```````````````````#08PD``````,@/`0``
+M```````````````(````````````````````7`````0`````````````````
+M````````V`H/``````"PK`````````X````)````"``````````8````````
+M`&L````(`````P```````````````````*!S"@````````H`````````````
+M`````"````````````````````!P`````0````````````````````````"@
+M<PH``````&@*```````````````````!````````````````````$0````,`
+M````````````````````````"'X*``````!Y`````````````````````0``
+M``````````````````$````"`````````````````````````(B""@``````
+M0'$````````/````3P0```@`````````&``````````)`````P``````````
+M``````````````#(\PH``````/QR```````````````````!````````````
+M``````````````````````````````````````````````,``0``````````
+M``````````````````,``@````````````````````````````,``P``````
+M``````````````````````,`!`````````````````````````````,`!0``
+M``````````````````````````,`!@````````````````````````````,`
+M!P````````````````````````````,`"```````````````````````````
+M``,`"0````````````````````````````,`"@``````````````````````
+M``````,`"P````````````````````````````,`#```````````````````
+M``````````,`#0````````````````````````````,`#@``````````````
+M``````````````,`#P```````````````````````0````(``0!`:```````
+M`",*````````(P````(``0`@PP```````#P`````````/0````(``0!@*@$`
+M`````$H`````````50````(``0"@FP```````$P`````````>`````(``0"`
+M*0```````'``````````A@````(``0!P'P$```````<`````````E0````(`
+M`0#0:`$``````*<!````````K@````(``0"0VP```````#$`````````R```
+M``(``0!`#0```````&(`````````W@````(``0`@S````````)D!````````
+M`P$```(``0`@U````````!4`````````&P$```(``0`PUP```````)X`````
+M````.`$```(``0!@E0```````+X`````````7@$```$`!P"@!````````!``
+M````````=`$```(``0!PVP```````!H`````````CP$```(``0!08@$`````
+M`!``````````J@$```(``0!@`P```````#(`````````NP$```(``0!`6@$`
+M`````%(`````````S`$```(``0#@2@```````!`"````````Z@$```(``0`0
+MMP$``````-,$````````!P(```(``0!`!````````"P`````````'0(```(`
+M`0"PYP```````/<`````````.`(```(``0!PB0```````$D!````````7P(`
+M``(``0`P8@$``````!8`````````>0(```(``0`0DP```````$4!````````
+MFP(```(``0"`8P$``````*0`````````N`(```(``0"`=`$``````'(`````
+M````Q0(```(``0!@E````````/D`````````YP(```(``0"0M@```````,H`
+M````````"P,```(``0``$````````-L#````````+@,```(``0"@`@``````
+M``P`````````00,```(``0"P#0```````#\`````````50,```(``0#@@```
+M`````+8`````````=`,```(``0"@2````````#D"````````C@,```(``0`P
+M;P$```````T#````````I@,```(``0!`I0```````"``````````O`,```(`
+M`0#P'P```````),`````````W`,```(``0!PIP```````/8`````````]`,`
+M``(``0#P-@```````(0`````````#00```(``0!@9@$``````#H!````````
+M*@0```(``0!P?`$``````(0`````````/@0```(``0#`F0```````&`!````
+M````7P0```(``0"PZ````````'D!````````>`0```(``0"PBP```````)(`
+M````````DP0```(``0#@[0```````#L"````````J@0```(``0"@A0``````
+M``@!````````T@0```(``0#@L0```````"8`````````Z@0```(``0!PP0``
+M`````%@`````````_P0```(``0"P"@$``````!H#````````'04```(``0!0
+ML0```````"0`````````.@4```(``0#`HP```````'$!````````304```(`
+M`0#0.`````````@!````````:04```(``0#0#0$```````L'````````B`4`
+M``(``0!`0P$``````$P(````````I@4```(``0``G0```````%0$````````
+MP`4```(``0``(@```````$@`````````V04```$``P!@#@```````"(`````
+M````Y`4```(``0#`Y0```````$P``````````P8```(``0``'P```````.\`
+M````````'@8```$`!P"`!````````!``````````,08```(``0!0(@``````
+M`(P`````````4@8```(``0"@6@$``````%(`````````8P8```(``0!`U```
+M`````*(`````````>P8```(``0"@H@```````($`````````C`8```(``0#0
+M#````````&(`````````H08```(``0`0C@```````.0#````````P`8```(`
+M`0```@```````$$`````````T@8```(``0#``0```````#0`````````YP8`
+M``(``0"`#@```````'X!````````_08```(``0!PHP```````$\`````````
+M&`<```(``0#@_P```````$T`````````.`<```(``0`PZ@```````'<`````
+M````5P<```(``0#@.`$``````,\`````````=`<```(``0`0\0```````+D`
+M````````B@<```(``0!@O@```````"H!````````KP<```(``0!PL```````
+M`#4`````````S`<```(``0`0K````````#,`````````X@<```(``0"0R0``
+M`````(\```````````@```(``0`0L````````%X`````````'@@```(``0"0
+M6`$``````%(`````````+@@```$`"P!@`````````(``````````-`@```(`
+M`0`0A@$``````'H`````````1`@```(``0"@@````````#\`````````9@@`
+M``$`!P"P!````````!``````````=@@```(``0"0]````````/0"````````
+MD0@```(``0!0"@```````'H"````````I0@```(``0"``0```````#P`````
+M````M0@```(``0"@9P$``````"X!````````R`@```(``0``!0```````"0"
+M````````YP@```(``0`0P@````````(!``````````D```$`"P!`````````
+M`!P`````````$PD```(``0`0;P$``````!<`````````.`D```(``0"@8`$`
+M`````#<`````````1PD```(``0"`'P$``````)D"````````7`D```(``0`@
+ML0```````"8`````````>@D```(``0#@R@```````#@!````````C@D```(`
+M`0"@"````````*L!````````FPD```(``0`P``$``````$T`````````NPD`
+M``(``0#0M0```````+L`````````Y`D```(``0`PT@```````.\!````````
+M^`D```(``0"`:@$```````4`````````$@H```(``0!`80$``````#\`````
+M````)@H```(``0#@!P```````#,`````````-`H```(``0#0Q0```````",`
+M````````4@H```(``0#PL````````"0`````````;PH```(``0#@(@``````
+M`!,&````````D0H```(``0#0P0```````#P`````````J`H```(``0#0`@``
+M`````!X`````````O`H```(``0``V@```````.\`````````V0H```(``0"@
+M@0```````/L"````````^0H```(``0#PFP````````L!````````&`L```(`
+M`0!0`@```````$D`````````+@L```(``0"02P$``````','````````3PL`
+M``(``0!P!````````#``````````;PL```(``0!0BP```````%8`````````
+MC@L```(``0"0E@```````,,!````````I0L```(``0!@V````````(0`````
+M````T`L```(``0#`B@```````(<`````````YPL```(``0#P_@```````.L`
+M``````````P```(``0!P``````````H!````````'0P```(``0"0]P``````
+M`(T#````````-@P```(``0#0!````````"T`````````3`P```(``0#@%`$`
+M`````+@$````````9PP```(``0#0\0```````,`"````````@`P```(``0`@
+M90$``````#0!````````G@P```(``0"@:@$``````!P`````````O0P```(`
+M`0"P;@$``````&``````````X@P```(``0`@KP```````.T`````````^0P`
+M``(``0"PB````````&8`````````(0T```(``0`@B0```````$8`````````
+M2PT```(``0#@<@```````(8'````````90T```(``0``80$``````#@`````
+M````>@T```(``0!`0@```````,D#````````EPT```(``0`0J@```````&H`
+M````````JPT```(``0#0VP```````#0`````````P0T```(``0!@9```````
+M`-\#````````XPT```(``0#`C0```````$4`````````#`X```(``0!0K```
+M`````',!````````)0X```(``0#@8`$``````!P`````````-PX```(``0!0
+M0@$``````.4`````````3PX```(``0"@Q0```````"<`````````:@X```(`
+M`0"`L0```````$``````````APX```(``0`@E@```````&\`````````G0X`
+M``$`!P#`!`````````@`````````K`X```(``0#0J0```````#P`````````
+MQ@X```(``0#PT````````(8`````````[0X```(``0!@U0```````"D`````
+M````#P\```(``0!0AP```````%$!````````-@\```(``0#PV`````````<!
+M````````3`\```(``0#@:@$``````"L`````````:0\```(``0#`:@$`````
+M`!T`````````A@\```(``0`@!````````!P`````````J`\```(``0"000$`
+M`````+H`````````OP\```(``0!`[0```````)D`````````U0\```(``0!@
+MPP```````.(`````````\0\```(``0"`I0```````.X!````````!A````(`
+M`0#P*0```````/H,````````(Q````(``0#`L0```````!H`````````/Q``
+M``(``0!@H0```````#0!````````7!````(``0"`'`$``````/,`````````
+M<A````(``0"0:@$```````8`````````C!````(``0"P/0```````(,$````
+M````IA````(``0!@HP````````(`````````O1````(``0#@.0```````,T#
+M````````UA````(``0#0.@$``````)8"````````]A````(``0#P`@``````
+M`"D`````````#A$```(``0#PV@```````'0`````````*Q$```(``0`@^P``
+M`````,<#````````0A$```(``0#@OP$``````%X`````````7!$```(``0"P
+MZ@```````(,"````````>!$```(``0"P`@```````!T`````````C1$```(`
+M`0#@JP```````"X`````````HQ$```(``0`@R@```````$P`````````O!$`
+M``(``0!PR@```````&\`````````SQ$```(``0!0N````````/T`````````
+M^!$```(``0!0O0````````P!````````)!(```(``0`0W````````*,)````
+M````-Q(```(``0"@6P```````$``````````5!(```(``0``'P$``````&0`
+M````````8!(```(``0"@5@```````+4`````````>!(```(``0`0L@``````
+M`"0`````````CQ(```(``0!@F````````%,!````````L!(```(``0"```$`
+M`````/@#````````Q1(```(``0`0?@```````(T"````````YQ(```(``0"`
+ML@```````"0``````````1,```(``0!@8@$``````+8`````````&1,```(`
+M`0`@(@$``````"T`````````)Q,```(``0`P!P```````*@`````````/1,`
+M``(``0#0K0```````$8!````````6!,```(``0#@(0```````!$`````````
+M>!,```(``0!08`$``````$4`````````AA,```(``0"P`P```````%L`````
+M````G!,```(``0!P>@```````+$`````````P!,```(``0"`T0```````*\`
+M````````W!,```(``0!`:P$``````$T!`````````10```(``0"0(```````
+M``X`````````'Q0```(``0!0?0```````+4`````````/A0```(``0!`L@``
+M`````#@`````````610```(``0`PHP```````"<`````````<Q0```$`!P"0
+M!````````!``````````B!0```(``0"0OP```````"8!````````JQ0```(`
+M`0"PJ@```````"$!````````P!0```(``0``=0$``````*H`````````V!0`
+M``(``0#PN@```````$<!````````_10```(``0"0;`$``````#P!````````
+M+14```(``0#`P````````*D`````````414```(``0"`J@```````"\`````
+M````8Q4```(``0!`'@$``````,``````````=Q4```(``0"@A````````/<`
+M````````E!4```(``0`@\````````.,`````````JQ4```(``0`0:P$`````
+M`"<`````````R14```(``0"PL````````#0`````````YQ4```(``0``````
+M`````&8`````````!Q8```(``0"`M0$``````(@!````````)!8```(``0"@
+M`P```````!``````````.!8```(``0#`S0```````*@`````````518```(`
+M`0#0O`$``````'L`````````<18```(``0!@5P```````&L#````````BA8`
+M``(``0``?0$```````L!````````HQ8```(``0!`C`$``````$<%````````
+MO!8```(``0"`'0$``````,``````````T!8```(``0!0C````````&\!````
+M````^Q8```(``0!0Q````````$$!````````#Q<```(``0#P6`$``````%(`
+M````````'Q<```(``0!`O`````````0!````````21<```$`"P``````````
+M``0`````````6Q<```(``0!P<@```````&0`````````<Q<```(``0`P>P``
+M`````!4"````````DA<```(``0`0!`````````T`````````JQ<```(``0``
+M*P$``````!,(````````RA<```(``0!@I0```````"``````````XQ<```(`
+M`0`@`P```````#H`````````^1<```(``0`@FP```````'$`````````&!@`
+M``(``0#P#0```````((`````````-Q@```(``0``Q@```````(<#````````
+M3A@```(``0`P9`$``````.0`````````:Q@```(``0#0;0$``````$``````
+M````DQ@```(``0"PL@```````!,#````````LQ@```(``0`0Y@```````)8!
+M````````RA@```(``0`@8P$``````%8`````````XQ@```(``0#@-@$`````
+M`/L!`````````1D```(``0#P3````````*P)````````&AD```(``0`01@``
+M`````(\"````````,1D```(``0"PA@```````)4`````````4AD```(``0!@
+MMP```````.L`````````>!D```(``0"@(````````#\!````````F1D```(`
+M`0`05`$``````%@`````````JAD```(``0``T````````/``````````R!D`
+M``(``0"`!`$``````"0&````````Y1D```(``0!P70$``````-4"````````
+M]QD```(``0#@$P```````!(+````````%!H```(``0"@!````````"T`````
+M````+1H```(``0``*0```````'P`````````41H```(``0#0UP```````(0`
+M````````;!H```(``0"`80$``````*4`````````B!H```(``0`0;@$`````
+M`)H`````````JAH```(``0#PU````````&(`````````NQH```(``0``D@``
+M``````X!````````WQH```(``0"@&0$``````-X"````````^QH```(``0`@
+M"````````'(`````````$1L```(``0"0\0$``````/H,````````+AL```(`
+M`0"@UP$``````-L#````````41L```(``0``?P(``````.L`````````>```
+M``(``0`@\0$``````'``````````A@````(``0`0YP(```````<`````````
+M=QL```(``0!0U0$``````#\`````````BQL```(``0"@9`(``````%0$````
+M````I1L```(``0"`_@(``````/L!````````PQL```(``0"P>0(``````"0`
+M````````VAL```(``0"@\`$``````'P`````````_AL```(``0!`-P,`````
+M`&``````````(QP```(``0"@H0(``````.\`````````0!P```(``0#P+@,`
+M`````#H!````````71P```(``0"``0(``````,T#````````=AP```(``0``
+M:0(``````#0!````````DQP```(``0#`FP(``````!4`````````7@$```$`
+M!P"@"P```````!``````````NP$```(``0#@(0,``````%(`````````JQP`
+M``(``0"08P(```````L!````````RAP```(``0``:P(```````(`````````
+MX1P```(``0`P,P,``````!P`````````N`(```(``0`0/0,``````'(`````
+M`````!T```(``0!`'@(``````+4`````````&!T```(``0"@EP(``````/``
+M````````-AT```(``0!0T@(``````!H#````````5!T```(``0"```,`````
+M`,\`````````<1T```$`!P"0"P```````!``````````AAT```(``0"0%`(`
+M`````*P)````````/@0```(``0!@80(``````&`!````````GQT```(``0#0
+M,P,``````$T!````````Q!T```(``0`0HP(``````!H`````````>`0```(`
+M`0!04P(``````)(`````````WQT```(``0`@>@(``````"0`````````J@0`
+M``(``0!`30(```````@!````````^1T```(``0!`(P(``````$``````````
+M%AX```(``0`@R0$``````#P`````````)AX```(``0!@B`(``````*D`````
+M````2AX```(``0#P"0,``````.4`````````8AX```(``0!0,P,``````!T`
+M````````?QX```(``0#`+`,``````.0`````````V04```$``P`P'0``````
+M`!\`````````G!X```(``0``10,``````(0`````````L!X```(``0!PB0(`
+M`````#P`````````QQX```(``0#PR0$``````$D`````````W1X```(``0!0
+M4`(``````&8`````````4@8```(``0!`(@,``````%(`````````!1\```(`
+M`0#@@P,``````(@!````````(A\```(``0`0;P(``````/8`````````.A\`
+M``(``0!PU`$``````&(`````````3Q\```(``0`@-0,``````#P!````````
+M?Q\```(``0!P`@,``````)8"````````GQ\```(``0"PRP$```````T`````
+M````N!\```(``0"P*@,``````!``````````TQ\```(``0"`SP$``````#,`
+M````````X1\```(``0``A@(``````"H!````````!B````(``0"P*P,`````
+M`%8`````````'R````(``0`@YP(``````)D"````````-"````(``0!`Z`$`
+M`````#\!````````52````(``0"P<0(``````&H`````````:2````(``0`0
+M)0,``````-4"````````>R````(``0!PN0(``````,`"````````'@@```(`
+M`0`P(`,``````%(`````````E"````(``0!@50(``````$4`````````+@@`
+M``$`"P!@`0```````(``````````O2````(``0`PO`(``````/0"````````
+MV"````(``0#06@,``````$<%````````-`@```(``0"@5`,``````'H`````
+M````9@@```$`!P"P"P```````!``````````\2````(``0"P#0(``````(\"
+M````````""$```(``0"@60(```````X!````````+"$```(``0!`*`,`````
+M`#<`````````.R$```(``0#P<P(``````',!````````5"$```(``0!`R@$`
+M``````P`````````9R$```(``0!`X0(``````-X"````````@R$```(``0!P
+MA0,``````-,$````````H"$```(``0"0>`(``````"0`````````O2$```(`
+M`0"`VP$``````!(+````````VB$```(``0``70(``````+X``````````"(`
+M``(``0#PBP(``````$$!````````%"(```(``0"@\@(``````!,(````````
+M,R(```(``0`0R`$```````H!````````4"(```$`!P"`"P```````!``````
+M````8R(```(``0!`$`(``````#D"````````?2(```(``0#P1P,``````$@`
+M````````CR(```(``0#PA`(```````P!````````NR(```(``0"P6@(`````
+M`$4!````````W2(```(``0`0:P(``````$\`````````^"(```(``0#0S@$`
+M`````*@`````````#B,```(``0!`2`(``````#\`````````,",```(``0``
+M+`(``````-\#````````4B,```(``0`P,`,``````"X!````````92,```(`
+M`0`0D@(``````&\`````````>",```(``0"`Z0$``````!$`````````F",`
+M``(``0`0S`$``````#``````````N",```(``0"0@@(``````$<!````````
+MC@D```(``0!`T`$``````*L!````````W2,```(``0"@,P,``````"<`````
+M````^R,```(``0#@>0(``````#@`````````%B0```(``0"@-@,``````)H`
+M````````."0```(``0"P<P(``````#,`````````3B0```(``0#0QP(`````
+M`$T`````````;B0```(``0#`=@(``````.T`````````A20```(``0"010,`
+M``````L!````````GB0```(``0!P=0(``````$8!````````N20```(``0"`
+MM0(``````#L"````````T"0```(``0#@RP$``````"P`````````YB0```(`
+M`0#`D0(``````$P`````````_R0```(``0#`P@(``````,<#````````%B4`
+M``(``0!@R0$``````#0`````````*R4```(``0#P?P(``````/T`````````
+M5"4```(``0#@*0,``````*4`````````<"4```(``0#PT0$``````'H"````
+M````A"4```(``0"0F`(``````(8`````````C@L```(``0`P7@(``````,,!
+M````````JR4```(``0#P)P,``````$4`````````N24```(``0#P>`(`````
+M`"0`````````UB4```(``0#@M`(``````)D`````````["4```(``0`@U@$`
+M`````'X!`````````B8```(``0#00@(``````!4"````````(28```(``0!`
+MRP$``````!``````````-28```(``0"`$@(``````!`"````````4R8```(`
+M`0!@>0(``````!H`````````;R8```(``0`0+`,``````*0`````````(0T`
+M``(``0#`4`(``````$8`````````C"8```(``0!0>`(``````#0`````````
+MJB8```(``0"0Q@(``````.L`````````PR8```(``0"@R0$``````$$`````
+M````U28```(``0!P,P,``````"L`````````\B8```(``0"`Z@$``````!,&
+M````````)0X```(``0"`*`,``````$T`````````%"<```(``0"`.@(`````
+M`(8'````````+B<```(``0#@"0(``````,D#````````2R<```(``0!PR@$`
+M`````!X`````````7R<```(``0#`RP$``````!P`````````@2<```(``0#P
+M3@(``````%$!````````J"<```(``0`PHP(``````#$`````````PB<```(`
+M`0#@FP(``````*(`````````VB<```(``0`@>0(``````$``````````]R<`
+M``(``0"0_@$``````(0`````````$"@```(``0#P4P(``````&\!````````
+M.R@```(``0"0YP$``````),`````````6R@```(``0#@;`(``````"``````
+M````<2@```(``0!P?0(``````+L`````````FB@```(``0!0>@(``````!,#
+M````````NB@```(``0!@:P(``````'$!````````S2@```(``0!PGP(`````
+M`(0`````````Z"@```(``0"0R@$``````"D``````````"D```(``0#`-P,`
+M``````T#````````&"D```(``0``G0(``````"D`````````.BD```(``0!`
+M20(``````/L"````````6BD```(``0"PHP(``````*,)````````;2D```(`
+M`0``BP(``````.(`````````B2D```(``0"P10(``````(T"````````JRD`
+M``(``0#@U`$``````&(`````````P2D```(``0`0B0(``````%@`````````
+MUBD```(``0!`:@(``````($`````````YRD```(``0``RP$``````#(`````
+M````^"D```(``0#`B@(``````#P`````````$BH```(``0`P?@(``````,H`
+M````````-BH```(``0`@Y`(``````/,`````````5!(```(``0"@Y@(`````
+M`&0`````````3"H```(``0!PC0(``````",`````````:BH```(``0#`70(`
+M`````&\`````````@"H```(``0!@E0(``````*@`````````G2H```(``0`P
+M$P,``````','````````CQ(```(``0``8`(``````%,!````````OBH```(`
+M`0"`QP(``````$T`````````WBH```(``0#`DP(``````)D!`````````RL`
+M``(``0!0<@(``````"$!````````&"L```(``0#PZ0$``````(P`````````
+M&1,```(``0#`Z0(``````"T`````````.2L```(``0#0G@(``````)X`````
+M````5BL```(``0`00@(``````+$`````````>BL```(``0"`<P(``````"X`
+M````````P!,```(``0`@F0(``````*\`````````D"L```(``0`PZ`$`````
+M``X`````````KBL```(``0`PD0(``````(\`````````S"L```(``0#P4@(`
+M`````%8`````````ZRL```(``0"PB0(```````(!````````!"P```(``0!`
+MS`$``````"T`````````'2P```(``0#@@P(```````0!````````1RP```(`
+M`0#`MP(``````.,`````````P!0```(``0"0/0,``````*H`````````7BP`
+M``(``0"@Y@$``````.\`````````>2P```(``0"@S`$``````"0"````````
+MF"P```(``0#P1`(``````+4`````````MRP```(``0#0F0(``````.\!````
+M````RRP```(``0#0*`,``````!D`````````X"P```(``0!03@(``````)4`
+M`````````2T```(``0#@+P(``````",*````````(RT```(``0!0R@$`````
+M`!T`````````."T```(``0``H`(``````(0`````````8RT```(``0#@"@,`
+M`````$P(````````@2T```(``0"@Z0$``````$@`````````8Q4```(``0#@
+MY0(``````,``````````=Q4```(``0!`3`(``````/<`````````FBT```(`
+M`0!PHP(``````#0`````````L"T```(``0"PK0(``````)8!````````QRT`
+M``(``0``;0(``````"``````````X"T```(``0!`C@,``````%X`````````
+M^BT```(``0`@<@(``````"\`````````#"X```(``0"P=P(``````%X`````
+M````*BX```(``0#P*`,``````.8`````````/BX```(``0#`*@,``````.8`
+M````````5BX```(``0`@,P,```````8`````````<"X```(``0`0>`(`````
+M`#4`````````C2X```(``0``\@(``````$H`````````I2X```(``0!0KP(`
+M`````/<`````````P"X```(``0!0!0(``````(,$````````VBX```(``0#`
+M8@(``````'$`````````^2X```(``0`@R`(``````/@#````````#B\```(`
+M`0`PAP(``````"8!````````,2\```(``0"P50(``````.0#````````4"\`
+M``(``0"@1@,``````$L!````````518```(``0`PBP,``````'L`````````
+M8"\```(``0"`D@(``````#@!````````="\```(``0#`R@$``````#H`````
+M````BB\```(``0!@4@(``````(<`````````H2\```(``0"0H`(```````<!
+M````````MR\```(``0`0.@(``````&0`````````O!8```(``0`@Y0(`````
+M`,``````````SR\```(``0"`W`(``````+@$````````ZB\```(``0!PU0(`
+M``````L'````````#Q<```(``0"0(`,``````%(`````````21<```$`"P``
+M`0````````0`````````"3````(``0!0L@(``````(,"````````)3````(`
+M`0`@;0(``````.X!````````.C````(``0"@C0(``````(<#````````43``
+M``(``0`040(``````$D!````````>#````(``0!P<0(``````#P`````````
+MDC````(``0!0L`(``````'D!````````JS````(``0`0,P,```````4`````
+M````Q3````(``0"PN`(``````+D`````````VS````(``0!@K0(``````$P`
+M````````^C````(``0"0G`(``````&(`````````"S$```(``0#0:@(`````
+M`"<`````````)3$```(``0"`2`(``````+8`````````1#$```(``0"`>0(`
+M`````"8`````````7#$```(``0!`8P(``````$P`````````?S$```(``0!`
+MC0(``````"<`````````FC$```(``0"0H@(``````'0`````````MS$```(`
+M`0"P+0,``````#0!````````U3$```(``0#`SP$``````'(`````````ZS$`
+M``(``0!0RP$``````%L``````````3(```$`"P!``0```````!P`````````
+M%#(```(``0"0*@,``````!8`````````+C(```(``0"0U0$``````((`````
+M````33(```(``0``'P(``````&L#````````9C(```(``0#`>`(``````"8`
+M````````A#(```(``0!PS`$``````"T`````````FC(```(``0`@S`(`````
+M`"0&````````MS(```(``0`POP(``````(T#````````T#(```(``0"P&P,`
+M`````%@`````````X3(```(``0!@-@,``````$``````````"3,```(``0!P
+M``(```````@!````````)3,```(``0#0L0(``````'<`````````1#,```(`
+M`0"@-P,``````!<`````````:3,```(``0`P"0,``````+H`````````@#,`
+M``(``0``7`(``````/D`````````HC,```(``0"@QP$``````&8`````````
+MPC,```(``0!@,0,``````*<!````````VS,```(``0#PM0,``````),`````
+M````^S,```(``0"`E@0``````/@#````````$#0```(``0`0<@0``````*,)
+M````````(S0```(``0"@%P0``````/L"````````0S0```(``0#0S@,`````
+M``@!````````>`````(``0"`OP,``````'``````````7S0```(``0"@!04`
+M`````&``````````A@````(``0!PM00```````<`````````A#0```(``0`P
+M;00``````)X`````````H30```(``0#PF`,``````"D`````````N30```(`
+M`0#P,00```````L!````````V#0```(``0`@100``````.T`````````[S0`
+M``(``0`0F@,```````T`````````"#4```(``0#00P0``````$8!````````
+M(S4```(``0`02`0``````"0`````````.C4```(``0!0(@0``````&\!````
+M````934```(``0#PE`0``````.L`````````?C4```(``0"@W@,``````#D"
+M````````F#4```(``0"0B@0``````/0"````````LS4```(``0#0T`0`````
+M`)8"````````7@$```$`!P`@$@```````!``````````NP$```(``0!`\`0`
+M`````%(`````````TS4```(``0#0`04``````"L`````````\#4```(``0"P
+M0`0``````"$!````````!38```(``0#P<`0``````'0`````````(C8```(`
+M`0#0;00``````(0`````````/38```(``0"`M00``````)D"````````4C8`
+M``$`!P`0$@```````!``````````9S8```(``0```@4``````"<`````````
+MN`(```(``0!P"P4``````'(`````````A38```(``0`@!@4```````T#````
+M````G38```(``0!P/00``````/8`````````M38```(``0"`1P0``````$``
+M````````TC8```(``0!@600``````.(`````````[C8```(``0``E@,`````
+M`&8`````````#C<```(``0``*`0```````X!````````,C<```(``0"@6P0`
+M`````"<`````````33<```(``0#06P0``````",`````````:S<```(``0!`
+M:@0``````*(`````````@S<```(``0!03@0``````/T`````````K#<```(`
+M`0!0N`,``````(P`````````/@0```(``0#`+P0``````&`!````````S3<`
+M``(``0"`2`0``````"0`````````>`0```(``0"P(00``````)(`````````
+MYS<```(``0"P@`0``````(,"````````J@0```(``0"@&P0```````@!````
+M`````S@```(``0!`^`0``````*4`````````'S@```(``0!@^@,``````-\#
+M````````03@```(``0`00@0``````#,`````````5S@```(``0`@^P0`````
+M`.0`````````V04```$``P#P*P```````!\`````````=#@```(``0!01P0`
+M`````"0`````````D3@```(``0!`_@,``````",*````````4@8```(``0"@
+M\`0``````%(`````````LS@```(``0!@.00```````(`````````RC@```(`
+M`0!P8`0``````&\`````````W3@```(``0!@$P4``````(0`````````\3@`
+M``(``0``FP,``````"0"````````$#D```(``0``N`,``````$@`````````
+M*3D```(``0#@000``````"X`````````/SD```(``0!@[0,``````&L#````
+M````6#D```(``0`0_`0``````#0!````````=CD```(``0#@"`0``````(8'
+M````````D#D```(``0"PH`0``````!H#````````KCD```(``0"@,00`````
+M`$P`````````T3D```(``0``9@0``````/``````````'@@```(``0"0[@0`
+M`````%(`````````+@@```$`"P!``P```````(``````````[SD```(``0!@
+M*@0``````/D`````````$3H```(``0!P`04```````4`````````-`@```(`
+M`0#`(@4``````'H`````````9@@```$`!P`P$@```````!``````````*SH`
+M``(``0"@%@0``````#\`````````33H```(``0"07P0``````(\`````````
+M:SH```(``0!0V`0``````.4`````````@SH```(``0`P@`0``````'<`````
+M````HCH```(``0!P'P0``````$D!````````?2(```(``0!0%@4``````$@`
+M````````R3H```(``0!`4@0```````0!````````\SH```(``0``M0,`````
+M`.\`````````#CL```(``0#`(P0``````$4`````````-SL```(``0"P?00`
+M`````/<`````````4CL```(``0"PF0,``````%L`````````:#L```(``0#P
+MOP,``````/H,````````A3L```(``0`@,00``````'$`````````I#L```(`
+M`0!PF@,``````#``````````Q#L```(``0``P00``````!,(````````XSL`
+M``(``0"P'`0``````)4`````````!#P```(``0#@J@0``````+@$````````
+M'SP```(``0"@F0,``````!``````````,SP```(``0!06@0``````$$!````
+M````C@D```(``0"@G@,``````*L!````````1SP```(``0#`>P0``````$P`
+M````````9CP```(``0#P1@0``````"0`````````@SP```(``0#05P0`````
+M`#P`````````FCP```(``0#`EP,``````#0`````````KSP```(``0`@D00`
+M`````,<#````````QCP```(``0!@:P0``````"D`````````Z#P```(``0`0
+M^@0``````%8``````````3T```(``0`0AP0``````+D`````````%ST```(`
+M`0`@600``````#P`````````,3T```(``0"@F@,``````"T`````````2CT`
+M``(``0!`2`0``````#@`````````93T```(``0"0`04``````!P`````````
+MA#T```(``0``I@,``````-L#````````IST```(``0#PX@,``````*P)````
+M````P#T```(``0"`EP,``````#P`````````T#T```(``0"@F`,```````P`
+M````````XST```(``0"@.`0``````($`````````]#T```(``0"PHP,`````
+M`#\`````````"#X```(``0#0<00``````#0`````````C@L```(``0"0+`0`
+M`````,,!````````'CX```(``0#`_P0``````*<!````````-SX```(``0!P
+M5P0``````%@`````````3#X```(``0"P?@0``````'D!````````93X```(`
+M`0`@^00``````.8`````````?3X```(``0#@X`,``````!`"````````FSX`
+M``(``0`P:`0``````.\!````````KSX```(``0!0$P0``````+4`````````
+MSCX```(``0`PE@0``````$T`````````[CX```(``0#P4`0``````$<!````
+M````$S\```(``0#@E00``````$T`````````,S\```(``0`0%`0``````(T"
+M````````53\```(``0`01@0``````%X`````````<S\```(``0!@5`0`````
+M`"H!````````F#\```(``0!0(00``````%8`````````MS\```(``0!P1@0`
+M`````#4`````````U#\```(``0!@.P0``````"``````````[3\```(``0``
+M<`0``````.\`````````"D````(``0!0F`,``````$D`````````($````(`
+M`0`@G@,``````'(`````````-D````(``0`@F0,``````#H`````````(0T`
+M``(``0`@'P0``````$8`````````3$````(``0#0H@,``````&(`````````
+M84````(``0"0_@0``````"X!````````=$````(``0#`5@0``````*D`````
+M````F$````(``0!@7`4``````%X`````````LD````(``0#P:@0``````&(`
+M````````PT````(``0#P;@0```````<!````````V4````(``0!`F@,`````
+M`"P`````````[T````(``0"@KP0``````-X"````````)0X```(``0#@]@0`
+M`````$T`````````"T$```(``0!`.P0``````"``````````(4$```(``0#@
+M8`0``````#@!````````-4$```(``0#P*`4``````$<%````````3D$```(`
+M`0#0/P0``````#P`````````:$$```(``0!`HP,``````&(`````````?D$`
+M``(``0"`F@0``````"0&````````FT$```(``0#`(`0``````(<`````````
+MLD$```(``0"0UP0``````+H`````````R4$```(``0!0H`,``````'H"````
+M````W4$```(``0"P`04``````!T`````````^D$```(``0!0]P0``````.8`
+M````````#D(```(``0`06`0```````(!````````)T(```(``0#`1P0`````
+M`!H`````````0T(```(``0`@F@,``````!P`````````94(```(``0``!@4`
+M`````!<`````````BD(```(``0!P.00``````$\`````````I4(```(``0#0
+MHP0```````L'````````Q$(```(``0!@P`0``````$H`````````W$(```(`
+M`0"`.P0``````.X!````````\4(```(``0#@%@0``````+8`````````$$,`
+M``(``0`@+`0``````&\`````````)D,```(``0`@:@0``````!4`````````
+M/D,```(``0"0X00``````','````````7T,```(``0"`I`,``````'X!````
+M````=4,```(``0`@8@0``````)D!````````FD,```(``0!@-P0``````#0!
+M````````MT,```(``0"``04```````8`````````T4,```(``0!@300`````
+M`.L`````````]T,```(``0#@S@0``````,\`````````5!(```(``0``M00`
+M`````&0`````````%$0```(``0!`V`,``````,D#````````CQ(```(``0!@
+M+@0``````%,!````````,40```(``0"@]@0``````#<`````````&1,```(`
+M`0`@N`0``````"T`````````0$0```(``0`0?`0``````)8!````````5T0`
+M``(``0`0*00``````$4!````````P!,```(``0"`9P0``````*\`````````
+M>40```(``0!04P0```````P!````````I40```(``0``!04``````)H`````
+M````QT0```(``0`@1P0``````"8`````````Y40```(``0"@[`,``````+4`
+M````````_40```(``0!P\P0``````-4"````````#T4```(``0!P<00`````
+M`!H`````````*D4```(``0!@;@0``````(0`````````544```(``0`0W`,`
+M`````(\"````````;$4```(``0#P$P4```````L!````````P!0```(``0#P
+M"P4``````*H`````````A44```(``0#@1P0``````"8`````````G44```(`
+M`0#P9@0``````(8`````````Q$4```(``0#`.00``````'$!````````UT4`
+M``(``0#@SP,``````,T#````````\$4```(``0!P"`0``````&0`````````
+M"$8```(``0!`V00``````$P(````````)D8```(``0#@S`0``````/L!````
+M````1$8```(``0#0AP0``````,`"````````748```(``0`@8`0``````$P`
+M````````=D8```(``0!0'00``````%$!````````G48```(``0#`8P0`````
+M`*@`````````ND8```(``0`P`@4``````$T!````````WT8```(``0#@N`,`
+M`````!,&`````````4<```(``0`0Z@0``````%@`````````$D<```(``0"`
+M`P4``````#P!````````0D<```(``0``F`,``````$$`````````8Q4```(`
+M`0!`M`0``````,``````````=Q4```(``0"@&@0``````/<`````````5$<`
+M``(``0#@@P0``````#L"````````:T<```(``0"P'@0``````&8`````````
+MDT<```(``0"PTP,``````(,$````````K4<```(``0#`!`4``````$``````
+M````U4<```(``0`@A@0``````.,`````````[$<```$`"P`@`P```````!P`
+M````````_T<```(``0#0F`,``````!X`````````$T@```(``0!00@0`````
+M`',!````````+$@```(``0``,P0``````%0$````````1D@```(``0`P.00`
+M`````"<`````````4"\```(``0``%04``````$L!````````8$@```(``0``
+M4@4``````(@!````````518```(``0!0604``````'L`````````?4@```(`
+M`0#02P0``````+L`````````ID@```(``0"@\0,``````$``````````PT@`
+M``(``0!P$`0``````+$`````````YT@```(``0!PE@,```````H!````````
+M!$D```(``0``OP,``````'P`````````O!8```(``0"`LP0``````,``````
+M````*$D```(``0"0M@,```````X`````````1DD```(``0!`@P0``````)D`
+M````````7$D```(``0#@J0,``````!(+````````#Q<```(``0#P[@0`````
+M`%(`````````>4D```(``0"P2`0``````!,#````````21<```$`"P#@`@``
+M``````0`````````F4D```(``0"`0`0``````"\`````````JTD```(``0"0
+M3`0``````,H`````````STD```(``0!0_00``````#H!````````[$D```(`
+M`0"`L@0``````/,``````````DH```(``0#P^`0``````!8`````````'$H`
+M``(``0`0)`0``````.0#````````.TH```(``0`PG0,``````*@`````````
+M44H```(``0"0C00``````(T#````````:DH```(``0`P]P0``````!D`````
+M````?TH```(``0!0]@0``````$4`````````C4H```(``0#0F@,``````"T`
+M````````HTH```(``0`00`0``````&H`````````MTH```(``0`0^00`````
+M`!``````````TDH```(``0!@*P0``````+X`````````^$H```(``0"P1@0`
+M`````#0`````````%DL```(``0!P^@0``````*0`````````,TL```(``0"0
+M500``````"8!````````5DL```$`!P``$@```````!``````````:4L```(`
+M`0`P$00``````!4"````````B$L```(``0#PHP,``````((`````````ITL`
+M``(``0#PS`,``````(0`````````P$L```(``0#@MP,``````!$`````````
+MX$L```(``0"@M@,``````#\!`````````4P```(``0"0<00``````#$`````
+M````&TP```(``0#@G0,``````#,`````````*4P```(``0!@F0,``````#(`
+M````````.DP```(``0``7`0``````(<#````````44P```(``0"PF`,`````
+M`!T`````````9DP```(``0"04P4``````-,$````````@TP```(``0!`9P4`
+M`````#H`````````F4P```$`"P``!0```````!P`````````>`````(``0"@
+MC04``````'``````````K$P```(``0``KP4``````!`"````````A@````(`
+M`0"0@P8```````<`````````RDP```(``0#0%@8``````!,#````````ZDP`
+M``(``0"0R`8``````*0`````````!TT```(``0``UP4``````(8'````````
+M(4T```(``0#`Y`4``````#\`````````0TT```(``0"P&@8``````,H`````
+M````9TT```(``0!`U`8```````T#````````?TT```(``0!@I@4``````,D#
+M````````G$T```(``0#`N@4``````+4`````````7@$```$`!P"@&```````
+M`!``````````M$T```(``0#0H04``````(,$````````SDT```(``0!0T`8`
+M`````$T!````````NP$```(``0!@O@8``````%(`````````\TT```(``0#P
+M9@4``````!X`````````!TX```(``0``+P8``````#@!````````&TX```(`
+M`0#P/P8``````#0`````````,4X```(``0#02P8``````/<`````````3$X`
+M``(``0"`!08``````#0!````````:4X```$`!P"0&````````!``````````
+MN`(```(``0"0V08``````'(`````````?DX```(``0"0W@4``````+$`````
+M````HDX```(``0"`(@8``````"H!````````QTX```(``0`08P8``````.L`
+M````````X$X```(``0#0Z@4``````)4``````````4\```(``0!PA@4`````
+M`(P`````````(D\```(``0"0SP8```````4`````````/$\```(``0``$`8`
+M`````"X`````````4D\```(``0`@:04``````"0"````````<4\```(``0`0
+M<@4``````((`````````D$\```(``0"@904``````#P`````````H$\```(`
+M`0"`.08``````"D`````````PD\```(``0`@U`8``````!<`````````YT\`
+M``(``0`0/08```````<!````````_4\```(``0"@SP8```````8`````````
+M%U````(``0`@9@4``````$$`````````/@0```(``0#@_04``````&`!````
+M````>`0```(``0#0[P4``````)(`````````*5````(``0#P508``````,`"
+M````````0E````(``0`0%08``````"0`````````J@0```(``0#`Z04`````
+M``@!````````7U````(``0!09`8``````$T`````````?U````(``0!PQ08`
+M`````.8`````````DU````(``0"`"08``````"``````````K%````(``0"P
+MI08``````+H`````````PU````(``0"0/P8``````!H`````````WE````(`
+M`0!P'`8``````/T`````````!U$```(``0`@9`4``````&8`````````)U$`
+M``(``0"0+@8``````&\`````````.E$```(``0"@<@4``````'X!````````
+M4%$```(``0!@408``````)D`````````V04```$``P#`.@```````"(`````
+M````9E$```(``0!`.`8``````!4`````````?E$```(``0`0X@8```````L!
+M````````4@8```(``0#`O@8``````%(`````````EU$```(``0!@S`4`````
+M`",*````````N5$```(``0#PG@8``````)8"````````V5$```(``0"@#@8`
+M`````"\`````````ZU$```(``0"P(P8``````"8!````````#E(```(``0`P
+M:`4```````T`````````)U(```(``0"0[04``````$D!````````3E(```(`
+M`0`@=`4``````-L#````````<5(```(``0!@Q@8``````*4`````````C5(`
+M``(``0!0Q08``````!D`````````HE(```(``0!P$`8``````',!````````
+MNU(```(``0!P%08``````"0`````````'@@```(``0"PO`8``````%(`````
+M````+@@```$`"P`@!0```````(``````````V%(```(``0!0-@8``````.\!
+M````````[%(```(``0"@:`8``````"0&````````-`@```(``0``[P8`````
+M`'H`````````9@@```$`!P"P&````````!``````````"5,```(``0"0)08`
+M`````%@`````````'E,```(``0!@IP8``````$P(````````/%,```(``0!P
+MI@8``````.4`````````5%,```(``0!`$P8``````.T`````````:U,```(`
+M`0`P)@8```````(!````````A%,```(``0``>08``````+@$````````GU,`
+M``(``0"P+08``````(\`````````O5,```(``0#03`8``````'D!````````
+MUE,```(``0`P%@8``````"0`````````[5,```(``0`0.08``````&(`````
+M````_E,```(``0"09`4```````H!````````&U0```(``0#0<04``````#\`
+M````````+U0```(``0!P9@4``````$D`````````C@D```(``0#`;`4`````
+M`*L!````````150```(``0#PG`4```````@!````````850```(``0"0P08`
+M`````-4"````````<U0```(``0`09P4``````"D`````````BU0```(``0`P
+M2@8``````)8!````````HE0```(``0#PSP8``````"L`````````OU0```(`
+M`0"@%08``````$``````````W%0```(``0#@%08``````!H`````````^%0`
+M``(``0#P)08``````#P`````````#U4```(``0#`!@8``````($`````````
+M(%4```(``0"0U@4``````&0`````````.%4```(``0`@]@4```````X!````
+M````7%4```(``0!`:`4``````!P`````````?E4```(``0"`9P4``````#(`
+M````````CU4```(``0!`)P8``````#P`````````J54```(``0`PX@4`````
+M`(T"````````RU4```(``0#`K`4``````#D"````````Y54```(``0#`?08`
+M`````-X"````````C@L```(``0"P^@4``````,,!`````````58```(``0!`
+M'@<``````(@!````````'E8```(``0`P]P4``````$4!````````0%8```(`
+M`0!0.P8``````)X`````````758```(``0``AP4``````!,&````````?U8`
+M``(``0"@@`8``````/,`````````E58```(``0!0:P4``````*@`````````
+MJU8```(``0!0WP4``````!4"````````RE8```(``0`0QP8``````!8`````
+M````Y%8```(``0#03@8``````(,"`````````%<```(``0!PZP4``````%$!
+M````````)U<```(``0`@@P4``````.\`````````(0T```(``0!`[04`````
+M`$8`````````0E<```(``0`0A`4``````),`````````8E<```(``0`@TP8`
+M`````)H`````````A%<```(``0`@CP8``````!,(````````HU<```(``0!P
+M[P4``````%8`````````PE<```(``0"@9`8``````/@#````````UU<```(`
+M`0!`^@4``````&\`````````[5<```$`!P"`&````````!```````````%@`
+M``(``0!@<04``````&(`````````%E@```(``0!PX04``````+4`````````
+M-5@```(``0`P508``````+D`````````2U@```(``0"`!P8```````(`````
+M````)0X```(``0``Q08``````$T`````````8E@```(``0#P<`4``````&(`
+M````````=U@```(``0"PKP8``````','````````F%@```(``0#@,08`````
+M`*@`````````M5@```(``0#`OP4``````$``````````TE@```(``0`0L04`
+M`````*P)````````ZU@```(``0!PRP8``````#H!````````"%D```(``0!`
+MQP8``````.8`````````(%D```(``0`0C@4``````/H,````````/5D```(`
+M`0#@T@8``````$``````````95D```(``0!P;@4``````'H"````````>5D`
+M``(``0#@S08``````*<!````````DED```(``0#`9P4``````!``````````
+MIED```(``0#P:`4``````"T`````````O%D```(``0"@T08``````#P!````
+M````[%D```(``0"0!P8``````$\`````````!UH```(``0!`5`8``````.,`
+M````````'EH```(``0#0%`8``````#0`````````/%H```(``0`@*@8`````
+M`(<#````````4UH```(``0#@904``````#0`````````:%H```(``0``FP8`
+M`````/L!````````AEH```(``0"`C@8``````$H`````````GEH```(``0!`
+M7P8``````,<#````````M5H```(``0"P/P8``````#$`````````SUH```(`
+M`0#0#@8``````"$!````````Y%H```(``0"@*`<``````%X`````````_EH`
+M``(``0``;`4``````#,`````````#%L```(``0``4@8``````#L"````````
+M(UL```(``0`@-`8``````/``````````05L```(``0#@[@4``````(<`````
+M````6%L```(``0`0``8```````L!````````=UL```(``0#0'P<``````-,$
+M````````E%L```(``0`P#@8``````&H`````````J%L```(``0!`;`4`````
+M`'(`````````OEL```(``0#@208``````$P`````````5!(```(``0`@@P8`
+M`````&0`````````W5L```(``0`P$`8``````#,`````````\UL```(``0"0
+M%`8``````#4`````````CQ(```(``0"`_`4``````%,!````````$%P```(`
+M`0!P*`8``````$$!````````)%P```(``0`PR`8``````%8`````````/5P`
+M``(``0"`&P8``````.L`````````&1,```(``0!`A@8``````"T`````````
+M8UP```(``0"`NP4``````&L#````````?%P```(``0"PS`8``````"X!````
+M````P!,```(``0"@-08``````*\`````````CUP```(``0"P6P8``````(T#
+M````````J%P```(``0``%@8``````"8`````````P%P```(``0#0[`4`````
+M`&8`````````Z%P```(``0`PR@8``````#0!````````!ET```(``0``9`8`
+M`````$T`````````)ET```(``0`@C04``````'P`````````2ET```(``0!P
+MQ`8``````$4`````````6%T```(``0#`*08``````"<`````````<UT```(`
+M`0``G@4``````,T#````````C%T```(``0"`X08``````(0`````````H%T`
+M``(``0#P#08``````#P`````````NET```(``0!@.`8``````*(`````````
+MP!0```(``0`0V@8``````*H`````````TET```(``0#09P4``````%L`````
+M````Z%T```(``0!@(`8```````0!````````$EX```(``0#P<08```````L'
+M````````,5X```(``0"`^04``````+X`````````5UX```(``0!@:`4`````
+M`"P`````````;5X```(``0#@)`8``````*D`````````D5X```(``0#`TP8`
+M`````&``````````8Q4```(``0!@@@8``````,``````````MEX```(``0#P
+M&08``````+L`````````WUX```(``0`0'P8``````$<!````````=Q4```(`
+M`0#`Z`4``````/<`````````!%\```(``0"0"P8``````/8`````````'%\`
+M``(``0!@%@8``````#@`````````-U\```(``0"P6`8``````/0"````````
+M4E\```(``0#`9@4```````P`````````95\```(``0"`)P8``````.(`````
+M````@5\```(``0``A@4``````!$`````````H5\```(``0#`Y04``````/L"
+M````````P5\```(``0!`R08``````.0`````````WE\```(``0!@"08`````
+M`"``````````]%\```(``0`P]08``````$<%````````#6````(``0!`_P4`
+M`````'$`````````518```(``0"0)0<``````'L`````````+&````(``0"@
+M@P8``````)D"````````06````(``0#`:`4``````"T`````````6F````(`
+M`0!`%08``````"8`````````>&````(``0!03@8``````'<`````````EV``
+M``(``0!`,`8``````)D!````````O&````(``0#@\04``````$4`````````
+MO!8```(``0"@@08``````,``````````Y6````(``0#`Q`8``````#<`````
+M````#Q<```(``0`0O08``````%(`````````21<```$`"P#`!`````````0`
+M````````]&````(``0``>`4``````!(+````````$6$```(``0`@A@4`````
+M`$@`````````*F$```(``0`P0`8``````*,)````````/6$```(``0#`A`4`
+M`````#\!````````7F$```(``0!P(08```````P!````````BF$```(``0"P
+MA`4```````X`````````J&$```(``0`@`08``````%0$````````PF$```(`
+M`0#`_P4``````$P`````````Y6$```(``0"`^`4``````/D`````````!V(`
+M``(``0!P\`4``````&\!````````,F(```(``0"`R`4``````-\#````````
+M5&(```(``0"0:`4``````#``````````=&(```(``0`@/@8``````.\`````
+M````D6(```(``0#09@4``````!T`````````IF(```(``0`P%`8``````%X`
+M````````Q&(```(``0``G08``````,\`````````X6(```(``0"@"08`````
+M`.X!````````]F(```(``0!`+@8``````$P`````````#V,```(``0`0/P8`
+M`````'0`````````+&,```(``0#0;@8``````!H#````````2F,```(``0"`
+M/`8``````(0`````````=6,```(``0#0SP8``````!T`````````DF,```(`
+M`0`PN`8``````%@`````````HV,```(``0!0!P8``````"<`````````O6,`
+M``(``0"@%@8``````"0`````````UV,```(``0`0-08``````(8`````````
+M_F,```(``0`PJ@4``````(\"````````%60```(``0``Y04``````+8`````
+M````-&0```(``0`P\@4``````.0#````````4V0```(``0`PQP8``````!``
+M````````;F0```(``0#P$08``````$8!````````B60```(``0#P.P8`````
+M`(0`````````I&0```(``0#@!P8``````'$!````````MV0```(``0`0FP4`
+M`````(0`````````T&0```(``0"PSP8``````!P`````````[V0```(``0`@
+MT`8``````"<`````````#64```(``0#P*08``````",`````````*V4```(`
+M`0!`50@``````"H`````````.64```(``0`P:0<``````'D`````````264`
+M``(``0`@6P<``````,@$````````8V4```(``0"P/@@``````*H&````````
+M<V4```(``0`PS@<``````(8`````````@V4```$`"P"P!@````````@`````
+M````DV4```(``0#@9P<```````P`````````J&4```(``0``5P<``````$``
+M````````O64```(``0!@4@@``````%\`````````U64```$`"P#!!@``````
+M``$`````````Y64```(``0#PK0<``````',`````````]64```(``0!040@`
+M``````H!````````!F8```(``0"P4`@``````)0`````````&F8```(``0`P
+M30@``````"D"````````,&8```(``0`P=P<``````/,`````````1F8```$`
+M"P"X!@````````0`````````5&8```(``0!`4`@``````&,`````````;&8`
+M``(``0#0)P@``````#\`````````?F8```(``0!P00<``````"8!````````
+MD68```(``0`P>`<``````,4!````````J68```(``0!@,P<``````$P`````
+M````O68```(``0"P50<``````$4!````````T68```(``0!@60<``````%,`
+M````````WV8```(``0"P3P<``````&\`````````]&8```(``0#04P<`````
+M`&$`````````!6<```(``0``3P<``````"\`````````'&<```$`"P#"!@``
+M``````$`````````,&<```(``0"P6@<``````&L`````````2V<```(``0!@
+M9`<``````$0`````````7V<```(``0"`3@<``````(``````````;V<```(`
+M`0!@0P<``````",`````````>&<```(``0"@,0<``````*L`````````E&<`
+M``(``0"@3`@``````(X`````````JF<```(``0"P5P<``````*4!````````
+MO6<```(``0!@.0@``````!X`````````QF<```(``0!P50@``````"H`````
+M````U&<```(``0#P7P<``````+0!````````\&<```(``0!`(0@````````!
+M````````^V<```(``0`@*@@``````.@`````````$6@```(``0"`EP<`````
+M`!,!````````(V@```(``0`0*P@``````/,`````````/&@```(``0``-0@`
+M`````$T`````````36@```(``0"`:@<``````$8`````````6&@```(``0`P
+M+P@``````*\!````````:6@```(``0!@9P<``````'4`````````?F@```(`
+M`0!@3P@``````-X`````````C6@``!(``0!@,`<``````!,`````````MF@`
+M`!$`"P#&!@````````$`````````S6@``!``````````````````````````
+MYF@``!``````````````````````````[6@``!(``0``\@@``````!H`````
+M````!FD``!(``0!P4P@``````!4`````````'VD``!``````````````````
+M````````-&D``!(``0`@0`<``````"@`````````2&D``!(``0``50@`````
+M`#L`````````66D``!(``0!P-`<``````)<!````````<FD``!(``0#00P<`
+M`````(\`````````BVD``!``````````````````````````I6D``!(``0`0
+M4P@``````%<`````````P&D``!(``0"0,0<```````P`````````V6D``!(`
+M`0"`-P<``````)P`````````\FD``!``````````````````````````#VH`
+M`!(``0#`/P<``````%$`````````(&H``!``````````````````````````
+M)VH``!(``0`010<``````*P`````````/&H``!(``0!`-`<``````"<`````
+M````56H``!(``0"@/P<``````!X`````````:VH``!(``0`0-@<``````&(!
+M````````@VH``!(``0"02P@```````4!````````HFH``!$`"P"\!@``````
+M``0`````````NVH``!(``0#`2`@``````)<`````````UVH``!``````````
+M````````````````[FH``!(``0"@/@<``````%(`````````!FL``!(``0#P
+M9@<``````%0`````````(VL``!(``0#`)P@```````@`````````/VL``!(`
+M`0!`,`<``````!H`````````7FL``!``````````````````````````<FL`
+M`!(``0"P5`@``````$8`````````B6L``!$`"P"@!@````````@`````````
+MFVL``!(``0"P,0@```````L`````````MFL``!(``0"@0@<``````((`````
+M````S6L``!(``0`P[`@``````"$`````````YVL``!$`"P#'!@````````$`
+M`````````6P``!(``0"0+0@``````&D`````````&FP``!``````````````
+M````````````,VP``!(``0#@0`<``````#X`````````2&P``!$`"P"H!@``
+M``````@`````````66P``!(``0!@1`<``````*H`````````<VP``!(``0!0
+M0`<``````($`````````AFP``!(``0!09`@``````!H`````````H&P``!(`
+M`0`P(0@```````<`````````NFP``!``````````````````````````TVP`
+M`!(``0``(0@``````"H`````````Y6P``!$`"P#%!@````````$`````````
+M`VT``!``````````````````````````&&T``!``````````````````````
+M````+6T``!$`!P"A&@````````$`````````0VT``!(``0"`/P<``````!D`
+M````````:FT``!(``0#`,0@``````/P"````````>FT``!(``0!@/P<`````
+M`!D`````````F&T``!(``0``5P@``````!H`````````MFT``!``````````
+M````````````````T&T``!(``0``+@@``````%@`````````YVT``!(``0"`
+MQP$``````!H`````````!FX``!``````````````````````````'FX``!(`
+M`0!@20@``````(8`````````.VX``!(``0#`-`@``````#<`````````46X`
+M`!``````````````````````````8VX``!``````````````````````````
+M?&X``!(``0"@4P@``````!4`````````E6X``!``````````````````````
+M````JFX``!(``0!00P<```````\`````````R&X``!(``0!0,@<``````-8`
+M````````Y6X``!$`"P#`!@````````$`````````^FX``!(``0"`,`<`````
+M``P`````````%&\``!$`"P##!@````````$`````````,6\``!(``0"0.@@`
+M`````',"````````4V\``!(``0"04P@```````8`````````;V\``!(``0``
+M90<``````.D!````````B&\``!(``0"0,`<``````+L`````````H&\``!(`
+M`0"00P<``````#(`````````NV\``!``````````````````````````U&\`
+M`!(``0!0,0<``````#4`````````[F\``!``````````````````````````
+M!'```!(``0!P/@<``````"X`````````''```!(``0#P4@@``````!,`````
+M````/'```!(``0"`/`<``````.L`````````7G```!``````````````````
+M````````='```!``````````````````````````DW```!(``0`P0P<`````
+M`!<`````````KW```!(``0`@70@``````!H`````````R7```!``````````
+M````````````````WG```!(``0`0+0@``````'4`````````]W```!``````
+M````````````````````%'$``!(``0#@4@@```````(`````````*7$``!(`
+M`0!0-0@``````&,`````````0'$``!(``0#@E0,``````!H`````````7W$`
+M`!(``0"P80<``````)4`````````>7$``!(``0#`4@@``````!8`````````
+MF7$``!(``0`P,P<``````"L`````````R7$``!$`!P"@&@````````$`````
+M````YW$``!(``0!P/0<``````/X``````````'(``!(``0"0,0@``````!T`
+M````````%W(``!(``0``/P<``````%,`````````.'(``!``````````````
+M````````````47(``!(``0`@.P<``````%4!````````<'(``!(``0#`10<`
+M`````&@`````````AW(``!(``0``9`4``````!H`````````IG(``!(``0"`
+M.0@```````8!````````Q7(``!$`"P#$!@````````$`````````XG(``!(`
+M`0!PK@<``````&(``````````')R,C<R,%]305-?2&%N9&QE0V]M<&QE=&5D
+M0V]M;6%N9`!R<C(W,C!?4$U?1G)E95)E9VES=&5R4V5T`')R,C<R,%]#;W)E
+M7TUO9'5L95-T87)T`')R,C<R,%]#;W)E7TUO9'5L945N86)L941I<V%B;&5)
+M4E$`<V%S7VAA<VA?861D<@!-86ME071T1&5V26YF;P!R<C(W,C!?0V%T96=O
+M<GE?0T1"7U1Y<&4`<G(R-S(P7T9I;F1&<F5E4TU00V]N=&5X=`!R<C(W,C!?
+M;79?9&ES86)L95]X;70`<G(R-S(P7U)U;G1I;65)<W-U95-O9G1297-E=$-A
+M;&QB86-K`')R,C<R,%]$25-#7T=E=%)E<V]U<F-E`')R,C<R,%]3=&]R95]#
+M;VYF:6=2;W5T94EN9F\`<G(R-S(P7U5P9&%T95-T871U<U9S4V5S0V]N=')O
+M;$)U9F9E<@!!5$U%3%]34$E?0TU$7S0Q85\P,C$`<G(R-S(P7T-A;&-U;&%T
+M95)O=71E26YD97@`<G(R-S(P7U-'4$E/7U=R:71E4F5G:7-T97(`<G(R-S(P
+M7TU67T5Q=6%L<P!I,F-!7W=R:71E7V)Y=&5S`')R,C<R,%]#;W)E7TAA;F1L
+M95=A:71I;F=,:7-T`')R,C<R,%]O9&EN7W-E=%]I9&QE7W-T86YD8GD`<G(R
+M-S(P7TU67TUA<%1A<F=E=$E$`')R,C<R,%]$25-#7T-A;F-E;$1I<V-O=F5R
+M`')R,C<R,%]0;W-T36%K95-E<T-O;F9I9W5R871I;VY297%U97-T`')R,C<R
+M,%]31U!)3U]296%D4F5G:7-T97(`<G(R-S(P7T1E=FEC95]7<FET95-E<T-O
+M;G1R;VQ$:6%G`')R,C<R,%]31U!)3U]335!297%?0V%L;&)A8VL`3V1I;E-0
+M25]29'!T`')R,C<R,%]&:6QL16YC;&]S=7)E16QE;65N=%-T871U<P!R<C(W
+M,C!?17AP86YD97)?4TU04F5Q=65S=%]$:7-C;W9E<@!R<C(W,C!?0V]R95]-
+M;V1U;&5'971297-O=7)C95%U;W1A`')R,C<R,%]486=?27-%;7!T>0!R<C(W
+M,C!?;79?<F5S971?>&UT`')R,C<R,%]0;W)T7TAA;F1L941E=FEC95!L=6=I
+M;@!R<C(W,C!?4$U?0V]R95]297%4:6UE;W5T`')R,C<R,%]!5$%?0T1",E1A
+M<VM&:6QE`')R,C<R,%]?7V-A;F-E;%]T:6UE<@!R<C(W,C!?0V]R95]);G1E
+M<FYA;%-E;F1297%U97-T`')R,C<R,%]&<F5E1&5V:6-E5&]0;V]L`')R,C<R
+M,%]#;W)E7U)E<V5T0VUD4VQO=`!R<C(W,C!?4TU07U-'4$E/7U-E=%]&86EL
+M;&5D`')R,C<R,%]/9&EN4U!)7TEN:70`1&5V:6-E7TUA:V50<FEV871E4V5N
+M9%-E<U)E<75E<W0`<G(R-S(P7T1)4T-?1V5T5&=T1&5V36%P`$%S<VEG;D5L
+M96UE;D1E<V-R:7!T;W).86UE`')R,C<R,%]3051!7U!O<G1$971E8W0`1&5V
+M:6-E7TUA:V5397-%;&5M96YT4W1A='5S4F5Q=65S=%1I;65R`')R,C<R,%]'
+M971315-30D9R;VU0;V]L`')R,C<R,%]335!297-P3&5N9W1H`')R,C<R,%]3
+M05-?1&5V:6-E4W1A=&5-86-H:6YE`')R,C<R,%]&<F5E4T%405-C<F%T8VA4
+M;U!O;VP`<G(R-S(P7U]?861D7W1I;65R`')R,C<R,%]#3U)%7TES<W5E4TU0
+M4F5Q=65S=`!R<C(W,C!?4T%405]$979I8V53=&%T94UA8VAI;F4`<G(R-S(P
+M7U-!5$%?4$U);FET4F5Q0V%L;&)A8VL`<G(R-S(P7U!O<G1?06)O<G1297%U
+M97-T<P!R<C(W,C!?5W)I=&5$14Q67U%?16YT<GD`<')O9'5C=%]I9`!R<C(W
+M,C!?1$E30U]#:&5C:T1I<V-O=F5R4W1A=&4`<G(R-S(P7T-O<F5?36]D=6QE
+M4VAU=&1O=VX`<G(R-S(P7U-35%]34$E?0TU$`')R,C<R,%]0<F5P87)E1&5L
+M:79E<GE1=65U945N=')Y`&DR8T)?=W)I=&5?8GET97,`<G(R-S(P7T1)4T-?
+M4V5T4F5S;W5R8V4`<G(R-S(P7T=E=$Y#451A9P!R<C(W,C!?;79?96YA8FQE
+M7WAM=`!R<C(W,C!?4T537TEN=&5R;F%L4F5Q0V%L;&)A8VL`<G(R-S(P7U1A
+M9U]'971/;F4`<G(R-S(P7U1A9U]);FET7T9)1D\`<G(R-S(P7VUV7W-E=%]3
+M05-!9&1R`')R,C<R,%]&:6YD4G5N;FEN9U)E<4)Y5&%G`')R,C<R,%]'971-
+M:6Y.96=O=&EA=&5D3&EN:U)A=&4`<G(R-S(P7U-!5$%?4&]R=$1E=FEC941E
+M=&5C=&5D`')R,C<R,%]$979I8V5?27-S=653;V9T4F5S970`<G(R-S(P7U!O
+M<G1?1FEN9%1G=$YO`')R,C<R,%]$979I8V5?36%K94EN<75I<GE487-K4F5Q
+M=65S=`!R<C(W,C!?1G)E94EN=&5R;F%L4F5Q5&]0;V]L`')R,C<R,%]0<F5%
+M;7!T>41E=FEC90!R<C(W,C!?0V]M<&QE=&5297%U97-T06YD4VQO=`!R<C(W
+M,C!?1V5T26YT97)N86Q297%&<F]M4&]O;`!I,F-!7W)E861?8GET97,`86EN
+M9F\`;V1I;E]C;W)E7W1I;65R`')R,C<R,%]3051!7U!-7TAA;F1L941E=FEC
+M95!L=6=I;@!724Y"3TY$7U-025]#340`<G(R-S(P7U5P9&%T951A<F=E=$1E
+M=FEC97,`<G(R-S(P7VUV7W)E<V5T7W!H>0!R<C(W,C!?5&%G7TEN:70`<G(R
+M-S(P7U-#4TE?5&]?1DE3`')R,C<R,%]-5E]3971,0D%A;F1396-T;W)#;W5N
+M=`!R<C(W,C!?07-S:6=N4F5G:7-T97)3970`<G(R-S(P7VUO9&5086=E0G5F
+M`')R,C<R,%]30U-)7T%405]3=&%R=%-T;W!4<F%N<VQA=&EO;@!R<C(W,C!?
+M0F5E<$]F9@!R<C(W,C!?57!D871E4&AY26YF;P!R<C(W,C!?1V5T4T%405-C
+M<F%T8VA&<F]M4&]O;`!R<C(W,C!?4T%44V5N<V5$871A`&UV7W!H>5]R97-E
+M=`!R<C(W,C!?1V5T36%X3F5G;W1I871E9$QI;FM2871E`')R,C<R,%]%>'!A
+M;F1E<E]335!297%U97-T7U)E<&]R=$=E;F5R86P`<G(R-S(P7U)E;6]V941E
+M=FEC90!R<C(W,C!?4T-325]!5$%?3&]W97)7;W)D`')R,C<R,%]S971?9F%I
+M;%]L960`<G(R-S(P7TU67T-20P!R<C(W,C!?0V]R95)E<W1O<F5/<FEG:6YA
+M;$-$0@!R<C(W,C!?1G)E94-O<F5#;VYT97AT5&]0;V]L`')R,C<R,%]697)I
+M9GE#;VUM86YD0F5F;W)E4V5N9&EN9P!R<C(W,C!?1G)E95)E9VES=&5R4V5T
+M`')R,C<R,%],:7-T7T=E=$QA<W0`<G(R-S(P7TES<W5E7T-O;F9I9U)O=71E
+M26YF;P!R<C(W,C!?4T%405]0;W)T2&%N9&QE26YT97)R=7!T`')R,C<R,%]#
+M;W)E7T=E=%-U<'!O<G1E9$-O=6YT<P!R<C(W,C!?5&%G7U)E;&5A<V5/;F4`
+M<G(R-S(P7U-!5$%?4$U(;W1P;'5G4F5Q0V%L;&)A8VL`<G(R-S(P7TU67TUA
+M<%1O4W!E8VEF:6-487)G971)1`!R<C(W,C!?07-S:6=N16QE;65N=%-L;W1.
+M=6UB97(`4T537U!R:79A=&5297%#86QL8F%C:P!R<C(W,C!?27-S=65?4F5P
+M;W)T36%N=69A8W1U<F5R26YF;W)M871I;VX`<G(R-S(P7T9I;F1!<V-I:4YU
+M;6)E<@!R<C(W,C!?1&ES8V]V97)Y0V%L;$)A8VL`<G(R-S(P7U-#4TE?36%K
+M94-A8VAE0V]M;6%N9`!R<C(W,C!?0VAE8VM487)G971#:&%N9V4`<G(R-S(P
+M7TU67T=E=$UA<'!E9$E$`')R,C<R,%]3051!7U!-4W1A=&5-86-H:6YE`')R
+M,C<R,%]#:&5C:T1E=FEC94-H86YG90!R<C(W,C!?4T=024]?4TU04F5Q=65S
+M=%]7<FET90!R<C(W,C!?4T-325]!5$%?0VAE8VM#;VYD:71I;VX`<G(R-S(P
+M7U-#4TE?051!7U-Y;F-#86-H951R86YS;&%T:6]N`')R,C<R,%]'9710;W)T
+M1G)O;5!O;VP`<G(R-S(P7T%S<VEG;D1E=FEC94]V97)A;&Q%;&5M96YT3G5M
+M8F5R`$%S<VEG;E-E<T]T:&5R16QE;65N=$]V97)A;&Q%;&5M96YT3G5M8F5R
+M`')R,C<R,%](86YD;&5#;VUM86YD475E=64`<G(R-S(P7W-E=%]F86EL7VQE
+M9',`<G(R-S(P7U-!5$%?4$U?17)R;W)(86YD;&EN9P!R<C(W,C!?1G)E95!-
+M5&]0;V]L`')R,C<R,%]&<F5E4TU00V]N=&5X=`!R<C(W,C!?8V]R95]H86YD
+M;&5?=&%S:V9I;&5?97)R;W(`<G(R-S(P7U!O<W1-86ME4V5S16YC;&]S=7)E
+M4W1A='5S4F5Q=65S=`!R<C(W,C!?1V5T1&5V:6-E1G)O;5!O;VP`<&]R=%]S
+M971?9F%I;%]L960`<G(R-S(P7U!-7TES<W5E5W)I=&5296<`<G(R-S(P7T-O
+M<F53879E3W)I9VEN86Q#1$(`<G(R-S(P7T=E=%--4%-C<F%T8VA&<F]M4&]O
+M;`!R<C(W,C!?4T537U-E=$9A:6Q,960`4&]R=$UA<%]24C(W,3$`<G(R-S(P
+M7T9R965%>'!A;F1E<E1O4&]O;`!R<C(W,C!?1&5V:6-E7TUA:V53=&%R=%-T
+M;W!5;FET4F5Q=65S=`!R<C(W,C!?1$E30U]'971.96=O=&EA=&5D3&EN:U)A
+M=&4`<G(R-S(P7U!O<W1-86ME4V5S16QE;65N=%-T871U<U)E<75E<W0`<G(R
+M-S(P7TES<W5E7T1I<V-O=F5R`')R,C<R,%]30U-)7T%405]&:6QL3$)!0V1B
+M,38`<G(R-S(P7U-#4TE?051!7T9I;&Q,0D%#9&(Q,`!R<C(W,C!?359?26YI
+M=&EA;&EZ951A<F=E=$E$5&%B;&4`<G(R-S(P7U!-7TES<W5E4F5A9%)E9P!R
+M<C(W,C!?4T%405]0;W)T4F5S970`<G(R-S(P7U!-7T%S<VEG;E)E9VES=&5R
+M4V5T`')R,C<R,%]?7W)E;F5W7W1I;65R`')R,C<R,%]0<F5P87)E06YD4V5N
+M9$-O;6UA;F0`<G(R-S(P7T9R965335!38W)A=&-H5&]0;V]L`')R,C<R,%]0
+M;W)T7TES4F5Q=65S=%)U;FYI;F<`<G(R-S(P7T1E=&5C=%!O<G14>7!E`')R
+M,C<R,%]30U-)7T%405]5<'!E<E=O<F0`<G(R-S(P7U-!5$%?17)R;W)(86YD
+M;&EN9P!R<C(W,C!?359?1'5M<%)E9VES=&5R`')R,C<R,%]305-?17)R;W)(
+M86YD;&EN9P!R<C(W,C!?1&5V:6-E7U!A<G-E261E;G1I9GE$871A`')R,C<R
+M,%]-5E]:97)O379297%U97-T`')R,C<R,%])<W-U95]297!O<G12;W5T94EN
+M9F\`<G(R-S(P7U5P9&%T951G=$1E=DUA<`!R<C(W,C!?;V1I;E]R96UO=F5?
+M9&5V:6-E`')R,C<R,%]3051!7U!O<G1$979I8V5296%D>0!R<C(W,C!?3&ES
+M=%]'971&:7)S=`!R<C(W,C!?1G)E95!O<G14;U!O;VP`<G(R-S(P7T=E=$]N
+M94-O;6UA;F13;&]T`')R,C<R,%]'9710341E=FEC90!R<C(W,C!?17AP86YD
+M97)?4TU04F5Q=65S=%]297!O<G102%E3051!`')R,C<R,%]$979I8V5?36%K
+M95)E861#87!A8VET>3$V5&%S:U)E<75E<W0`<G(R-S(P7T1I<V-O=F5R>5--
+M`')R,C<R,%]D=6UP7W5N87-S;V-I871E9%]F:7,`36%K941E=DEN9F\`<G(R
+M-S(P7U-!4U](86YD;&5"4D1#4U0`<G(R-S(P7T9R965315-30E1O4&]O;`!$
+M979I8V5?36%K95!R:79A=&5296-V4V5S4F5Q=65S=`!R<C(W,C!?4T%37U!O
+M<G1297-E=`!R<C(W,C!?4T%405]035](86YD;&5$979I8V55;G!L=6<`<G(R
+M-S(P7T9R96531T)U9F9E<E1O4&]O;`!R<C(W,C!?4T=024]?26YI=&EA;&EZ
+M90!C:&5C:U]387-!9&1R`')R,C<R,%]-5E]$=6UP4F5Q=65S=`!R<C(W,C!?
+M1V5T17AP86YD97)&<F]M4&]O;`!R<C(W,C!?4T%405]0<F5P87)E0V]M;6%N
+M9%1A8FQE`')R,C<R,%]"965P3VX`<G(R-S(P7U-'5&%B;&5?07!P96YD`')R
+M,C<R,%]#;W)E7TEN=&5R<G5P=%-E<G9I8V52;W5T:6YE`$1E=FEC95]497-T
+M56YI=%)E861Y4F5Q=65S=`!R<C(W,C!?4T-325]!5$%?4F5A9%=R:71E5')A
+M;G-L871I;VX`<G(R-S(P7T-O<F5?36]D=6QE4V5N9%)E<75E<W0`<G(R-S(P
+M7U-!5$%?2&%N9&QE1&5V:6-E4&QU9VEN`')R,C<R,%]'97131T)U9F9E<D9R
+M;VU0;V]L`')R,C<R,%]#;W)E7T9I;&Q396YS941A=&$`<G(R-S(P7T%4345,
+M7U-025]#340`<G(R-S(P7T1E=FEC95]-86ME36]D95-E;G-E4F5Q=65S=`!R
+M<C(W,C!?1V5T4$U&<F]M4&]O;`!/9&EN4U!)7U-E8W1O<E5N<')O=&5C=`!R
+M<C(W,C!?1&5V:6-E7TUA:V5297%U97-T5&%S:U)E<75E<W0`<G(R-S(P7U-#
+M4TE?051!7U)E861#87!A8VET>51R86YS;&%T:6]N0V%L;&)A8VL`<G(R-S(P
+M7T1E=FEC95]-86ME36]D95-E;&5C=%)E<75E<W0`<G(R-S(P7U!R945M<'1Y
+M4$T`1V5T071T261E;G1I9GE&<F%M90!315-4:6UE<E]);G1E<FYA;%)E<4-A
+M;&QB86-K`')R,C<R,%]35%!?1&5V:6-E4F5S970`<G(R-S(P7U-#4TE?051!
+M7T9I;&Q$871A1FEE;&0`<G(R-S(P7T=E=$-O<F5#;VYT97AT1G)O;5!O;VP`
+M<G(R-S(P7U-#4TE?36%K94UO9&5086=E0V%C:&EN9P!R<C(W,C!?;V1I;E]S
+M971?<W!I;E]U<%]M;V1E`')R,C<R,%]31U1A8FQE7TEN:70`<G(R-S(P7U)U
+M;G1I;65)<W-U95-O9G1297-E=`!O9&EN7W-E=%]H87)D7V1I<VM?:61E;G1I
+M9GD`<G(R-S(P7U!O<G1?2&%N9&QE4&QU9VEN`')R,C<R,%]O9&EN7V9L87-H
+M7V%C8V5S<P!R<C(W,C!?9&5V:6-E7W!R;V)E7V1O;F4`1V5T1&5V261E;G1I
+M9GE&<F%M90!R<C(W,C!?4&]S=$UA:V5397-%;&5M96YT1&5S8W)I<'1O<E)E
+M<75E<W0`<G(R-S(P7U!O<G1?36]N:71O<@!I,F-"7W)E861?8GET97,`<G(R
+M-S(P7T1E=FEC95]-86ME4F5A9$-A<&%C:71Y5&%S:U)E<75E<W0`<V%S7V%D
+M9')E<W-?8V]U;G0`<G(R-S(P7U-E<G9I8V5);G1E<G)U<'0`<G(R-S(P7U-!
+M5$%?2&%N9&QE1&5V:6-E56YP;'5G`')R,C<R,%]31U1A8FQE7T%V86EL86)L
+M90!R<C(W,C!?4T%37TEN=&5R;F%L4F5Q0V%L;&)A8VL`<G(R-S(P7U]?4$U?
+M8V%N8V5L7W1I;65R`')R,C<R,%]-5E]#;W!Y4T=486)L90!R<C(W,C!?0V]R
+M95]-86ME1&5V:6-E4F5S971297$`<G(R-S(P7VUV7V1I<V%B;&5?<F5G:7-T
+M97)?<V5T`')R,C<R,%]#;VUP;&5T95)E<75E<W0`<G(R-S(P7U-'4$E/7U--
+M4%)E<75E<W1?4F5A9`!R<C(W,C!?4T-325]!5$%?4F5A9$-A<&%C:71Y5')A
+M;G-L871I;VX`<G(R-S(P7T5X<&%N9&5R7U--4%)E<5]#86QL8F%C:P!R<C(W
+M,C!?1$E30U]$;T1I<V-O=F5R`')R,C<R,%]31U!)3U]3971?1F%I;&QE9`!R
+M<C(W,C!?4&]R=%]3;V9T4F5S971#86QL8F%C:P!R<C(W,C!?4&]R=%](86YD
+M;&55;G!L=6<`<G(R-S(P7T-O<F5?4F5Q5&EM96]U=`!R<C(W,C!?07-S:6=N
+M1&5V:6-E16QE;65N=$YU;6)E<@!R<C(W,C!?17AP86YD97)?4TU04F5Q=65S
+M=%]0:'E#;VYT<F]L`')R,C<R,%]3051!7U!R97!A<F5#;VUM86YD2&5A9&5R
+M`')R,C<R,%]I,F-?<F5S970`<G(R-S(P7U)U;G1I;65)<W-U95)E861,;V=%
+M>'0`<G(R-S(P7VUV0VAA;FYE;%-T871E36%C:&EN90!R<C(W,C!?;V1I;E]I
+M;V-T;`!R<C(W,C!?0V]R95]-;V1U;&5);FET:6%L:7IE`')R,C<R,%]-5E]2
+M96UO=F5487)G971)1`!R<C(W,C!?0V]R95]P87-S7W1H<G5?9FEL;%]T87-K
+M9FEL90!R<C(W,C!?27-S=65?4F5P;W)T1V5N97)A;`!R<C(W,C!?23)#7TUO
+M9'5L94EN:71I86QI>F4`<G(R-S(P7U-#4TE?051!7U9E<FEF>51R86YS;&%T
+M:6]N`')R,C<R,%]&:6YD5&=T3F\`<G(R-S(P7T1E=FEC95]-86ME4V5S4F-V
+M1&EA9U)E<75E<W0`<G(R-S(P7U5P9&%T95=I9&50;W)T4&AY36%P`')R,C<R
+M,%]M=E]D:7-A8FQE7VAB80!R<C(W-GA?4')E<&%R94%N9%-E;F1#;VUM86YD
+M`')R,C<V>%]#;W)E7TUO9'5L94=E=%)E<V]U<F-E475O=&$`<G(R-S9X7T5X
+M<&%N9&5R7U--4%)E<75E<W1?4&AY0V]N=')O;`!R<C(W-GA?;79?<F5S971?
+M>&UT`')R,C<V>%]0;W)T7T%B;W)T4F5Q=65S=',`<G(R-S9X7U!O<G1?4V]F
+M=%)E<V5T0V%L;&)A8VL`<G(R-S9X7T9R965315-30E1O4&]O;`!R<C(W-GA?
+M0V]R95]P87-S7W1H<G5?9FEL;%]T87-K9FEL90!R<C(W-GA?4T-325]!5$%?
+M4WEN8T-A8VAE5')A;G-L871I;VX`<G(R-S9X7TES<W5E7T-O;F9I9U)O=71E
+M26YF;P!R<C(W-GA?4TU07U-'4$E/7U-E=%]&86EL;&5D`')R,C<V>%]305-?
+M17)R;W)(86YD;&EN9P!R<C(W-GA?4&]R=%])<U)E<75E<W12=6YN:6YG`')R
+M,C<V>%]$25-#7T=E=%)E<V]U<F-E`')R,C<V>%]#;W)E7T=E=%-U<'!O<G1E
+M9$-O=6YT<P!R<C(W-GA?359?1'5M<%)E9VES=&5R`')R,C<V>%]30U-)7T%4
+M05]#:&5C:T-O;F1I=&EO;@!R<C(W-GA?4T%37TAA;F1L94)21$-35`!R<C(W
+M-GA?4G5N=&EM94ES<W5E4F5A9$QO9T5X=`!R<C(W-GA?4T%37T1E=FEC95-T
+M871E36%C:&EN90!R<C(W-GA?1&5V:6-E7TES<W5E4V]F=%)E<V5T`')R,C<V
+M>%]!5$U%3%]34$E?0TU$`')R,C<V>%]0;W)T7TAA;F1L955N<&QU9P!R<C(W
+M-GA?4T-325]!5$%?4F5A9%=R:71E5')A;G-L871I;VX`<G(R-S9X7T-A;&-U
+M;&%T95)O=71E26YD97@`<G(R-S9X7T9R96531T)U9F9E<E1O4&]O;`!R<C(W
+M-GA?9'5M<%]U;F%S<V]C:6%T961?9FES`')R,C<V>%]486=?26YI=`!R<C(W
+M-GA?1&5V:6-E7TUA:V5-;V1E4V5L96-T4F5Q=65S=`!R<C(W-GA?4$U?27-S
+M=657<FET95)E9P!R<C(W-GA?4T-325]!5$%?1FEL;$Q"04-D8C$P`')R,C<V
+M>%]31U!)3U]335!297%U97-T7U)E860`<G(R-S9X7T]D:6Y34$E?26YI=`!R
+M<C(W-GA?1G)E95)E9VES=&5R4V5T`')R,C<V>%]486=?4F5L96%S94]N90!R
+M<C(W-GA?07-S:6=N1&5V:6-E3W9E<F%L;$5L96UE;G1.=6UB97(`<G(R-S9X
+M7V]D:6Y?<V5T7W-P:6Y?=7!?;6]D90!R<C(W-GA?1G)E941E=FEC951O4&]O
+M;`!R<C(W-GA?;79?96YA8FQE7WAM=`!R<C(W-GA?4T-325]!5$%?4F5A9$-A
+M<&%C:71Y5')A;G-L871I;VY#86QL8F%C:P!R<C(W-GA?1&5V:6-E7U!A<G-E
+M261E;G1I9GE$871A`')R,C<V>%]31U1A8FQE7T%V86EL86)L90!R<C(W-GA?
+M4T=024]?5W)I=&5296=I<W1E<@!R<C(W-GA?359?0U)#`')R,C<V>%]$979I
+M8V5?36%K94EN<75I<GE487-K4F5Q=65S=`!R<C(W-GA?4T=024]?4V5T7T9A
+M:6QL960`<G(R-S9X7U5P9&%T95!H>4EN9F\`<G(R-S9X7U-!5$%?4')E<&%R
+M94-O;6UA;F1(96%D97(`<G(R-S9X7T9R9650351O4&]O;`!R<C(W-GA?;V1I
+M;E]I;V-T;`!R<C(W-GA?0VAE8VM$979I8V5#:&%N9V4`<G(R-S9X7U!O<W1-
+M86ME4V5S16YC;&]S=7)E4W1A='5S4F5Q=65S=`!R<C(W-GA?57!D871E5&%R
+M9V5T1&5V:6-E<P!R<C(W-GA?9&5V:6-E7W!R;V)E7V1O;F4`<G(R-S9X7T-O
+M<F5?4F5Q5&EM96]U=`!R<C(W-GA?1&5V:6-E7TUA:V5397-28W9$:6%G4F5Q
+M=65S=`!R<C(W-GA?0F5E<$]F9@!R<C(W-GA?1V5T1&5V:6-E1G)O;5!O;VP`
+M<G(R-S9X7U1A9U])<T5M<'1Y`')R,C<V>%]5<&1A=&57:61E4&]R=%!H>4UA
+M<`!R<C(W-GA?;V1I;E]S971?:61L95]S=&%N9&)Y`')R,C<V>%]&<F5E0V]R
+M94-O;G1E>'14;U!O;VP`<G(R-S9X7T-O<F5?36]D=6QE26YI=&EA;&EZ90!R
+M<C(W-GA?57!D871E4W1A='5S5G-397-#;VYT<F]L0G5F9F5R`')R,C<V>%]0
+M;W)T7TUO;FET;W(`<G(R-S9X7U-!4U]);G1E<FYA;%)E<4-A;&QB86-K`')R
+M,C<V>%]30U-)7TUA:V5#86-H94-O;6UA;F0`<G(R-S9X7U-35%]34$E?0TU$
+M`')R,C<V>%]035]#;W)E7U)E<51I;65O=70`7V]D:6Y?8VAE8VM?;G9R86T`
+M<G(R-S9X7T1E=FEC95]-86ME4F5A9$-A<&%C:71Y,39487-K4F5Q=65S=`!R
+M<C(W-GA?1&5V:6-E7U=R:71E4V5S0V]N=')O;$1I86<`<G(R-S9X7T9I;F12
+M=6YN:6YG4F5Q0GE486<`<G(R-S9X7TU67T1U;7!297%U97-T`')R,C<V>%]3
+M051!7U!-7TAA;F1L941E=FEC95!L=6=I;@!R<C(W-GA?8V]R95]H86YD;&5?
+M=&%S:V9I;&5?97)R;W(`<G(R-S9X7U-#4TE?5&]?1DE3`')R,C<V>%]'9710
+M341E=FEC90!R<C(W-GA?4T%405]0<F5P87)E0V]M;6%N9%1A8FQE`')R,C<V
+M>%]-5E]-87!4;U-P96-I9FEC5&%R9V5T240`<G(R-S9X7T1E=FEC95]-86ME
+M4F5Q=65S=%1A<VM297%U97-T`')R,C<V>%]30U-)7T%405]&:6QL1&%T849I
+M96QD`')R,C<V>%]'97131T)U9F9E<D9R;VU0;V]L`')R,C<V>%]30U-)7T%4
+M05]697)I9GE4<F%N<VQA=&EO;@!R<C(W-GA?4')E16UP='E$979I8V4`<G(R
+M-S9X7T=E=$UA>$YE9V]T:6%T961,:6YK4F%T90!R<C(W-GA?1V5T4&]R=$9R
+M;VU0;V]L`')R,C<V>%]O9&EN7V9L87-H7V%C8V5S<P!R<C(W-GA?1V5T17AP
+M86YD97)&<F]M4&]O;`!R<C(W-GA?4T%405]0;W)T1&5T96-T`')R,C<V>%]-
+M5E]-87!487)G971)1`!R<C(W-GA?1V5T3VYE0V]M;6%N9%-L;W0`<G(R-S9X
+M7U5P9&%T951G=$1E=DUA<`!R<C(W-GA?5&%G7TEN:71?1DE&3P!R<C(W-GA?
+M17AP86YD97)?4TU04F5Q=65S=%]297!O<G102%E3051!`')R,C<V>%]),D-?
+M36]D=6QE26YI=&EA;&EZ90!R<C(W-GA?;79?<F5S971?<&AY`')R,C<V>%]$
+M979I8V5?36%K95-T87)T4W1O<%5N:71297%U97-T`')R,C<V>%]"965P3VX`
+M<G(R-S9X7T9R9653051!4V-R871C:%1O4&]O;`!R<C(W-GA?4T%405]0;W)T
+M4F5S970`<G(R-S9X7VUV7W-E=%]305-!9&1R`')R,C<V>%]3051!7TAA;F1L
+M941E=FEC955N<&QU9P!R<C(W-GA?4T=486)L95]);FET`')R,C<V>%]#;W)E
+M7TAA;F1L95=A:71I;F=,:7-T`')R,C<V>%]&<F5E4TU04V-R871C:%1O4&]O
+M;`!R<C(W-GA?4T=024]?4TU04F5Q7T-A;&QB86-K`')R,C<V>%]'971#;W)E
+M0V]N=&5X=$9R;VU0;V]L`')R,C<V>%]$:7-C;W9E<GE#86QL0F%C:P!R<C(W
+M-GA?5&%G7T=E=$]N90!R<C(W-GA?4T-325]!5$%?1FEL;$Q"04-D8C$V`')R
+M,C<V>%]697)I9GE#;VUM86YD0F5F;W)E4V5N9&EN9P!R<C(W-GA?2&%N9&QE
+M0V]M;6%N9%%U975E`')R,C<V>%]3051!7U!-7T5R<F]R2&%N9&QI;F<`<G(R
+M-S9X7TQI<W1?1V5T3&%S=`!R<C(W-GA?359?26YI=&EA;&EZ951A<F=E=$E$
+M5&%B;&4`<G(R-S9X7U!O<W1-86ME4V5S16QE;65N=%-T871U<U)E<75E<W0`
+M<G(R-S9X7T9I;F1&<F5E4TU00V]N=&5X=`!R<C(W-GA?1$E30U]3971297-O
+M=7)C90!R<C(W-GA?1V5T4TU04V-R871C:$9R;VU0;V]L`')R,C<V>%]#;W)E
+M7U)E<V5T0VUD4VQO=`!R<C(W-GA?4&]S=$UA:V5397-%;&5M96YT1&5S8W)I
+M<'1O<E)E<75E<W0`<G(R-S9X7T-O<F5?26YT97)N86Q396YD4F5Q=65S=`!R
+M<C(W-GA?7U]C86YC96Q?=&EM97(`<G(R-S9X7T5X<&%N9&5R7U--4%)E<75E
+M<W1?4F5P;W)T1V5N97)A;`!R<C(W-GA?17AP86YD97)?4TU04F5Q7T-A;&QB
+M86-K`')R,C<V>%]?7V%D9%]T:6UE<@!R<C(W-GA?27-S=65?4F5P;W)T1V5N
+M97)A;`!R<C(W-GA?359?6F5R;TUV4F5Q=65S=`!R<C(W-GA?051!7T-$0C)4
+M87-K1FEL90!R<C(W-GA?1$E30U]'971.96=O=&EA=&5D3&EN:U)A=&4`<G(R
+M-S9X7U-!5$%?4&]R=$AA;F1L94EN=&5R<G5P=`!R<C(W-GA?1&ES8V]V97)Y
+M4TT`<G(R-S9X7U!-7T%S<VEG;E)E9VES=&5R4V5T`')R,C<V>%]3051!7U!-
+M7TAA;F1L941E=FEC955N<&QU9P!R<C(W-GA?;79?9&ES86)L95]X;70`<G(R
+M-S9X7U--4%)E<W!,96YG=&@`<G(R-S9X7T=E=$Y#451A9P!R<C(W-GA?359?
+M17%U86QS`')R,C<V>%]035]&<F5E4F5G:7-T97)3970`<G(R-S9X7T5X<&%N
+M9&5R7U--4%)E<75E<W1?1&ES8V]V97(`<G(R-S9X7T1E=&5C=%!O<G14>7!E
+M`')R,C<V>%]#;W)E4F5S=&]R94]R:6=I;F%L0T1"`')R,C<V>%]315-?4V5T
+M1F%I;$QE9`!R<C(W-GA?4G5N=&EM94ES<W5E4V]F=%)E<V5T`')R,C<V>%]3
+M051!7U!-2&]T<&QU9U)E<4-A;&QB86-K`')R,C<V>%]'971-:6Y.96=O=&EA
+M=&5D3&EN:U)A=&4`<G(R-S9X7U)U;G1I;65)<W-U95-O9G1297-E=$-A;&QB
+M86-K`')R,C<V>%]'9710349R;VU0;V]L`')R,C<V>%]0<F5P87)E1&5L:79E
+M<GE1=65U945N=')Y`')R,C<V>%]3=&]R95]#;VYF:6=2;W5T94EN9F\`<G(R
+M-S9X7T-O<F5?26YT97)R=7!T4V5R=FEC95)O=71I;F4`<G(R-S9X7T9R9650
+M;W)T5&]0;V]L`')R,C<V>%]#;W)E7TUO9'5L95-E;F1297%U97-T`')R,C<V
+M>%]#;VUP;&5T95)E<75E<W1!;F13;&]T`')R,C<V>%]!<W-I9VY%;&5M96YT
+M4VQO=$YU;6)E<@!R<C(W-GA?07-S:6=N4F5G:7-T97)3970`<G(R-S9X7TU6
+M7U)E;6]V951A<F=E=$E$`')R,C<V>%]$979I8V5?36%K95)E861#87!A8VET
+M>51A<VM297%U97-T`')R,C<V>%]35%!?1&5V:6-E4F5S970`<G(R-S9X7T-O
+M<F5?36]D=6QE4VAU=&1O=VX`<G(R-S9X7TU67U-E=$Q"06%N9%-E8W1O<D-O
+M=6YT`')R,C<V>%]3051!7TAA;F1L941E=FEC95!L=6=I;@!R<C(W-GA?4F5M
+M;W9E1&5V:6-E`')R,C<V>%]S971?9F%I;%]L961S`')R,C<V>%]!<W-I9VY$
+M979I8V5%;&5M96YT3G5M8F5R`')R,C<V>%]305-?2&%N9&QE0V]M<&QE=&5D
+M0V]M;6%N9`!R<C(W-GA?3&ES=%]'971&:7)S=`!R<C(W-GA?27-S=65?4F5P
+M;W)T36%N=69A8W1U<F5R26YF;W)M871I;VX`<G(R-S9X7U-!5$%?4$U);FET
+M4F5Q0V%L;&)A8VL`<G(R-S9X7U=R:71E1$5,5E]17T5N=')Y`')R,C<V>%]&
+M<F5E4TU00V]N=&5X=`!R<C(W-GA?1$E30U]$;T1I<V-O=F5R`')R,C<V>%]?
+M7U!-7V-A;F-E;%]T:6UE<@!R<C(W-GA?;V1I;E]R96UO=F5?9&5V:6-E`')R
+M,C<V>%]0<F5%;7!T>5!-`')R,C<V>%]'971);G1E<FYA;%)E<49R;VU0;V]L
+M`')R,C<V>%]S971?9F%I;%]L960`<G(R-S9X7U-'4$E/7TEN:71I86QI>F4`
+M<G(R-S9X7U-#4TE?051!7U5P<&5R5V]R9`!R<C(W-GA?1G)E94EN=&5R;F%L
+M4F5Q5&]0;V]L`')R,C<V>%]#;W)E7TUO9'5L95-T87)T`')R,C<V>%]$25-#
+M7T-A;F-E;$1I<V-O=F5R`')R,C<V>%]3051!7T5R<F]R2&%N9&QI;F<`<G(R
+M-S9X7T-O<F5?36%K941E=FEC95)E<V5T4F5Q`')R,C<V>%]305-?4&]R=%)E
+M<V5T`')R,C<V>%]$979I8V5?36%K94UO9&5396YS95)E<75E<W0`<G(R-S9X
+M7U-%4U]);G1E<FYA;%)E<4-A;&QB86-K`%]O9&EN7V-H96-K7VQP8P!R<C(W
+M-GA?4T%44V5N<V5$871A`')R,C<V>%]-5E]#;W!Y4T=486)L90!R<C(W-GA?
+M1FEN9$%S8VEI3G5M8F5R`')R,C<V>%])<W-U95]$:7-C;W9E<@!R<C(W-GA?
+M4V5R=FEC94EN=&5R<G5P=`!R<C(W-GA?4T%405]035-T871E36%C:&EN90!R
+M<C(W-GA?4T%405]$979I8V53=&%T94UA8VAI;F4`<G(R-S9X7U-!5$%?4&]R
+M=$1E=FEC95)E861Y`')R,C<V>%]?7W)E;F5W7W1I;65R`')R,C<V>%]#;VUP
+M;&5T95)E<75E<W0`<G(R-S9X7U!O<W1-86ME4V5S0V]N9FEG=7)A=&EO;E)E
+M<75E<W0`<G(R-S9X7T9R965%>'!A;F1E<E1O4&]O;`!R<C(W-GA?1$E30U]'
+M97149W1$979-87``<G(R-S9X7U-#4TE?051!7TQO=V5R5V]R9`!R<C(W-GA?
+M4&]R=%]&:6YD5&=T3F\`<G(R-S9X7T1)4T-?0VAE8VM$:7-C;W9E<E-T871E
+M`')R,C<V>%]&:6YD5&=T3F\`<G(R-S9X7T-O<F5?1FEL;%-E;G-E1&%T80!R
+M<C(W-GA?4&]R=%](86YD;&5$979I8V50;'5G:6X`<G(R-S9X7T=E=%-%4U-"
+M1G)O;5!O;VP`<G(R-S9X7T-O<F5?36]D=6QE16YA8FQE1&ES86)L94E240!R
+M<C(W-GA?0V]R95-A=F5/<FEG:6YA;$-$0@!R<C(W-GA?27-S=65?4F5P;W)T
+M4F]U=&5);F9O`')R,C<V>%]31U!)3U]335!297%U97-T7U=R:71E`')R,C<V
+M>%]M=E]D:7-A8FQE7VAB80!R<C(W-GA?4T=486)L95]!<'!E;F0`<G(R-S9X
+M7VUO9&5086=E0G5F`')R,C<V>%]31U!)3U]296%D4F5G:7-T97(`<G(R-S9X
+M7VUV7V1I<V%B;&5?<F5G:7-T97)?<V5T`')R,C<V>%]0;W)T7TAA;F1L95!L
+M=6=I;@!R<C(W-GA?1V5T4T%405-C<F%T8VA&<F]M4&]O;`!R<C(W-GA?359?
+M1V5T36%P<&5D240`<G(R-S9X7VUV0VAA;FYE;%-T871E36%C:&EN90!R<C(W
+M-GA?0VAE8VM487)G971#:&%N9V4`<G(R-S9X7VDR8U]R97-E=`!R<C(W-GA?
+M4T-325]!5$%?4F5A9$-A<&%C:71Y5')A;G-L871I;VX`<G(R-S9X7T-/4D5?
+M27-S=65335!297%U97-T`')R,C<V>%]3051!7U!O<G1$979I8V5$971E8W1E
+M9`!R<C(W-GA?4T-325]!5$%?4W1A<G13=&]P5')A;G-L871I;VX`<G(R-S9X
+M7U!-7TES<W5E4F5A9%)E9P!R<C(W-GA?1FEL;$5N8VQO<W5R945L96UE;G13
+M=&%T=7,`<G(R-S9X7U-#4TE?36%K94UO9&5086=E0V%C:&EN9P!R<C(W-GA?
+M0V%T96=O<GE?0T1"7U1Y<&4`<G(R-SAX7T-O<F5?26YT97)N86Q396YD4F5Q
+M=65S=`!R<C(W.'A?4T%37U!O<G1297-E=`!R<C(W.'A?1&ES8V]V97)Y4TT`
+M<G(R-SAX7U-!5$%?4&]R=$AA;F1L94EN=&5R<G5P=`!R<C(W.'A?0T]215])
+M<W-U95--4%)E<75E<W0`<G(R-SAX7U-#4TE?051!7U-Y;F-#86-H951R86YS
+M;&%T:6]N`')R,C<X>%]3=&]R95]#;VYF:6=2;W5T94EN9F\`<G(R-SAX7TU6
+M7UIE<F]-=E)E<75E<W0`<G(R-SAX7T-O<F5?1V5T4W5P<&]R=&5D0V]U;G1S
+M`')R,C<X>%]'9710;W)T1G)O;5!O;VP`<G(R-SAX7U-'5&%B;&5?079A:6QA
+M8FQE`')R,C<X>%]'971%>'!A;F1E<D9R;VU0;V]L`')R,C<X>%]&<F5E4T53
+M4T)4;U!O;VP`<G(R-SAX7U!O<W1-86ME4V5S16QE;65N=$1E<V-R:7!T;W)2
+M97%U97-T`')R,C<X>%]$:7-C;W9E<GE#86QL0F%C:P!R<C(W.'A?4$U?0V]R
+M95]297%4:6UE;W5T`')R,C<X>%]5<&1A=&5487)G971$979I8V5S`')R,C<X
+M>%]$979I8V5?4&%R<V5)9&5N=&EF>41A=&$`<G(R-SAX7U-#4TE?051!7T9I
+M;&Q,0D%#9&(Q-@!R<C(W.'A?1V5T4$U&<F]M4&]O;`!R<C(W.'A?27-S=65?
+M4F5P;W)T4F]U=&5);F9O`')R,C<X>%])<W-U95]297!O<G1'96YE<F%L`')R
+M,C<X>%]5<&1A=&50:'E);F9O`')R,C<X>%]!5$U%3%]34$E?0TU$`')R,C<X
+M>%]30U-)7T%405]&:6QL1&%T849I96QD`')R,C<X>%]!5$%?0T1",E1A<VM&
+M:6QE`')R,C<X>%]&<F5E1&5V:6-E5&]0;V]L`')R,C<X>%]'971335!38W)A
+M=&-H1G)O;5!O;VP`<G(R-SAX7U!-7T%S<VEG;E)E9VES=&5R4V5T`')R,C<X
+M>%]30U-)7TUA:V5-;V1E4&%G94-A8VAI;F<`<G(R-SAX7T1E=FEC95]-86ME
+M4V5S4F-V1&EA9U)E<75E<W0`<G(R-SAX7T-O<F53879E3W)I9VEN86Q#1$(`
+M<G(R-SAX7T-O<F5297-T;W)E3W)I9VEN86Q#1$(`<G(R-SAX7T1)4T-?4V5T
+M4F5S;W5R8V4`<G(R-SAX7T5X<&%N9&5R7U--4%)E<75E<W1?4F5P;W)T4$A9
+M4T%400!R<C(W.'A?4')E<&%R941E;&EV97)Y475E=65%;G1R>0!R<C(W.'A?
+M1G)E95-'0G5F9F5R5&]0;V]L`')R,C<X>%]3051!7U!O<G1$979I8V5296%D
+M>0!R<C(W.'A?23)#7TUO9'5L94EN:71I86QI>F4`<G(R-SAX7V-O<F5?:&%N
+M9&QE7W1A<VMF:6QE7V5R<F]R`')R,C<X>%]0<F5%;7!T>41E=FEC90!R<C(W
+M.'A?4T=024]?4TU04F5Q=65S=%]296%D`')R,C<X>%]&<F5E4T%405-C<F%T
+M8VA4;U!O;VP`<G(R-SAX7U-!4U](86YD;&5#;VUP;&5T961#;VUM86YD`')R
+M,C<X>%]-5E]$=6UP4F5G:7-T97(`<G(R-SAX7T=E=%!-1&5V:6-E`')R,C<X
+M>%]/9&EN4U!)7TEN:70`<G(R-SAX7TU67U-E=$Q"06%N9%-E8W1O<D-O=6YT
+M`')R,C<X>%]7<FET941%3%9?45]%;G1R>0!R<C(W.'A?1G)E95!O<G14;U!O
+M;VP`<G(R-SAX7U!O<G1?2&%N9&QE4&QU9VEN`')R,C<X>%]31U!)3U]335!2
+M97%U97-T7U=R:71E`')R,C<X>%](86YD;&5#;VUM86YD475E=64`<G(R-SAX
+M7U-!4U]$979I8V53=&%T94UA8VAI;F4`<G(R-SAX7T-O<F5?36]D=6QE16YA
+M8FQE1&ES86)L94E240!R<C(W.'A?4G5N=&EM94ES<W5E4F5A9$QO9T5X=`!R
+M<C(W.'A?1FEL;$5N8VQO<W5R945L96UE;G13=&%T=7,`<G(R-SAX7U-#4TE?
+M051!7TQO=V5R5V]R9`!R<C(W.'A?4T%405]035](86YD;&5$979I8V50;'5G
+M:6X`<G(R-SAX7T-O;7!L971E4F5Q=65S=$%N9%-L;W0`<G(R-SAX7U!-7TES
+M<W5E5W)I=&5296<`<G(R-SAX7U-!5$%?4&]R=$1E=FEC941E=&5C=&5D`')R
+M,C<X>%]0;W-T36%K95-E<T-O;F9I9W5R871I;VY297%U97-T`')R,C<X>%]$
+M979I8V5?36%K95)E861#87!A8VET>51A<VM297%U97-T`')R,C<X>%]#;W)E
+M7TUO9'5L95-H=71D;W=N`')R,C<X>%]0;W-T36%K95-E<T5N8VQO<W5R95-T
+M871U<U)E<75E<W0`<G(R-SAX7T1)4T-?0V%N8V5L1&ES8V]V97(`<G(R-SAX
+M7U-'5&%B;&5?07!P96YD`')R,C<X>%]0<F5P87)E06YD4V5N9$-O;6UA;F0`
+M<G(R-SAX7T-O<F5?36%K941E=FEC95)E<V5T4F5Q`')R,C<X>%]-5E]-87!4
+M;U-P96-I9FEC5&%R9V5T240`<G(R-SAX7U-!4U]);G1E<FYA;%)E<4-A;&QB
+M86-K`')R,C<X>%]!<W-I9VY$979I8V5%;&5M96YT3G5M8F5R`')R,C<X>%]3
+M051!7U!-4W1A=&5-86-H:6YE`')R,C<X>%]31U1A8FQE7TEN:70`<G(R-SAX
+M7U!O<G1?36]N:71O<@!R<C(W.'A?1$E30U]#:&5C:T1I<V-O=F5R4W1A=&4`
+M<G(R-SAX7T9R965#;W)E0V]N=&5X=%1O4&]O;`!R<C(W.'A?1G)E95)E9VES
+M=&5R4V5T`')R,C<X>%]486=?26YI=%]&249/`')R,C<X>%]5<&1A=&549W1$
+M979-87``<G(R-SAX7T1)4T-?1V5T3F5G;W1I871E9$QI;FM2871E`')R,C<X
+M>%]31U!)3U]3971?1F%I;&QE9`!R<C(W.'A?4&]R=%]&:6YD5&=T3F\`<G(R
+M-SAX7U!-7T9R965296=I<W1E<E-E=`!R<C(W.'A?359?4F5M;W9E5&%R9V5T
+M240`<G(R-SAX7T=E=%-'0G5F9F5R1G)O;5!O;VP`<G(R-SAX7U-#4TE?051!
+M7T-H96-K0V]N9&ET:6]N`')R,C<X>%]#;W)E7TUO9'5L94=E=%)E<V]U<F-E
+M475O=&$`<G(R-SAX7U!O<G1?2&%N9&QE56YP;'5G`')R,C<X>%]486=?26YI
+M=`!R<C(W.'A?5&%G7TES16UP='D`<G(R-SAX7T=E=$Y#451A9P!R<C(W.'A?
+M;79?<F5S971?>&UT`')R,C<X>%]&<F5E4TU00V]N=&5X=`!R<C(W.'A?0V%T
+M96=O<GE?0T1"7U1Y<&4`<G(R-SAX7U--4%)E<W!,96YG=&@`<G(R-SAX7T1)
+M4T-?1V5T5&=T1&5V36%P`')R,C<X>%]31U!)3U]);FET:6%L:7IE`')R,C<X
+M>%]#;W)E7TAA;F1L95=A:71I;F=,:7-T`')R,C<X>%]296UO=F5$979I8V4`
+M<G(R-SAX7U-!5$%?2&%N9&QE1&5V:6-E4&QU9VEN`')R,C<X>%]'971-87A.
+M96=O=&EA=&5D3&EN:U)A=&4`<G(R-SAX7T1E=FEC95]-86ME4F5Q=65S=%1A
+M<VM297%U97-T`')R,C<X>%]'971-:6Y.96=O=&EA=&5D3&EN:U)A=&4`<G(R
+M-SAX7U-!5$%?4$U?2&%N9&QE1&5V:6-E56YP;'5G`')R,C<X>%]'971);G1E
+M<FYA;%)E<49R;VU0;V]L`')R,C<X>%]$979I8V5?36%K94EN<75I<GE487-K
+M4F5Q=65S=`!R<C(W.'A?07-S:6=N16QE;65N=%-L;W1.=6UB97(`<G(R-SAX
+M7T9R965);G1E<FYA;%)E<51O4&]O;`!R<C(W.'A?7U]035]C86YC96Q?=&EM
+M97(`<G(R-SAX7TES<W5E7T-O;F9I9U)O=71E26YF;P!R<C(W.'A?5&%G7U)E
+M;&5A<V5/;F4`<G(R-SAX7VUV7V1I<V%B;&5?:&)A`')R,C<X>%]-5E]#;W!Y
+M4T=486)L90!R<C(W.'A?;79?96YA8FQE7WAM=`!R<C(W.'A?4T-325]4;U]&
+M25,`<G(R-SAX7T1E=FEC95]-86ME36]D95-E;&5C=%)E<75E<W0`<G(R-SAX
+M7V]D:6Y?<F5M;W9E7V1E=FEC90!R<C(W.'A?1FEN9%1G=$YO`')R,C<X>%])
+M<W-U95]$:7-C;W9E<@!R<C(W.'A?359?36%P5&%R9V5T240`<G(R-SAX7U5P
+M9&%T95=I9&50;W)T4&AY36%P`')R,C<X>%]?7V-A;F-E;%]T:6UE<@!R<C(W
+M.'A?4T%44V5N<V5$871A`')R,C<X>%]D979I8V5?<')O8F5?9&]N90!R<C(W
+M.'A?1G)E945X<&%N9&5R5&]0;V]L`')R,C<X>%]M=E]D:7-A8FQE7WAM=`!R
+M<C(W.'A?;79#:&%N;F5L4W1A=&5-86-H:6YE`')R,C<X>%]&:6YD07-C:6E.
+M=6UB97(`<G(R-SAX7U!-7TES<W5E4F5A9%)E9P!R<C(W.'A?;79?<F5S971?
+M<&AY`')R,C<X>%]30U-)7T%405]&:6QL3$)!0V1B,3``<G(R-SAX7W-E=%]F
+M86EL7VQE9`!R<C(W.'A?07-S:6=N4F5G:7-T97)3970`<G(R-SAX7T9R9653
+M35!38W)A=&-H5&]0;V]L`')R,C<X>%]-5E]);FET:6%L:7IE5&%R9V5T2414
+M86)L90!R<C(W.'A?4T-325]!5$%?4W1A<G13=&]P5')A;G-L871I;VX`<G(R
+M-SAX7T9I;F12=6YN:6YG4F5Q0GE486<`<G(R-SAX7U-!5$%?1&5V:6-E4W1A
+M=&5-86-H:6YE`')R,C<X>%]#;W)E7TUO9'5L95-T87)T`')R,C<X>%]?7W)E
+M;F5W7W1I;65R`')R,C<X>%]0;W)T7TAA;F1L941E=FEC95!L=6=I;@!R<C(W
+M.'A?4T537U-E=$9A:6Q,960`<G(R-SAX7T1)4T-?1V5T4F5S;W5R8V4`<G(R
+M-SAX7U-!5$%?4$U(;W1P;'5G4F5Q0V%L;&)A8VL`<G(R-SAX7VUV7W-E=%]3
+M05-!9&1R`')R,C<X>%]2=6YT:6UE27-S=653;V9T4F5S971#86QL8F%C:P!R
+M<C(W.'A?4&]R=%])<U)E<75E<W12=6YN:6YG`')R,C<X>%]30U-)7T%405]5
+M<'!E<E=O<F0`<G(R-SAX7T5X<&%N9&5R7U--4%)E<75E<W1?4&AY0V]N=')O
+M;`!R<C(W.'A?1&5V:6-E7TES<W5E4V]F=%)E<V5T`')R,C<X>%]3051!7U!-
+M7T5R<F]R2&%N9&QI;F<`<G(R-SAX7T)E97!/9F8`<G(R-SAX7T1)4T-?1&]$
+M:7-C;W9E<@!R<C(W.'A?1&5V:6-E7U=R:71E4V5S0V]N=')O;$1I86<`<G(R
+M-SAX7T1E=FEC95]-86ME4F5A9$-A<&%C:71Y,39487-K4F5Q=65S=`!R<C(W
+M.'A?4T-325]!5$%?5F5R:69Y5')A;G-L871I;VX`<G(R-SAX7T=E=%-!5$%3
+M8W)A=&-H1G)O;5!O;VP`<G(R-SAX7U-!4U](86YD;&5"4D1#4U0`<G(R-SAX
+M7V]D:6Y?:6]C=&P`<G(R-SAX7T-A;&-U;&%T95)O=71E26YD97@`<G(R-SAX
+M7TES<W5E7U)E<&]R=$UA;G5F86-T=7)E<DEN9F]R;6%T:6]N`')R,C<X>%]#
+M;W)E7U)E<51I;65O=70`<G(R-SAX7V]D:6Y?9FQA<VA?86-C97-S`')R,C<X
+M>%]'971315-30D9R;VU0;V]L`')R,C<X>%]$979I8V5?36%K95-T87)T4W1O
+M<%5N:71297%U97-T`')R,C<X>%]?7V%D9%]T:6UE<@!R<C(W.'A?4T%37T5R
+M<F]R2&%N9&QI;F<`<G(R-SAX7U-E<G9I8V5);G1E<G)U<'0`<G(R-SAX7U-!
+M5$%?4$U);FET4F5Q0V%L;&)A8VL`<G(R-SAX7U!O<G1?4V]F=%)E<V5T0V%L
+M;&)A8VL`<G(R-SAX7T-H96-K1&5V:6-E0VAA;F=E`')R,C<X>%]'971/;F5#
+M;VUM86YD4VQO=`!R<C(W.'A?4&]S=$UA:V5397-%;&5M96YT4W1A='5S4F5Q
+M=65S=`!R<C(W.'A?4G5N=&EM94ES<W5E4V]F=%)E<V5T`')R,C<X>%]30U-)
+M7T%405]296%D5W)I=&54<F%N<VQA=&EO;@!R<C(W.'A?5F5R:69Y0V]M;6%N
+M9$)E9F]R95-E;F1I;F<`<G(R-SAX7VDR8U]R97-E=`!R<C(W.'A?4T-325]!
+M5$%?4F5A9$-A<&%C:71Y5')A;G-L871I;VY#86QL8F%C:P!R<C(W.'A?5&%G
+M7T=E=$]N90!R<C(W.'A?4T%405]0;W)T1&5T96-T`')R,C<X>%]!<W-I9VY$
+M979I8V5/=F5R86QL16QE;65N=$YU;6)E<@!R<C(W.'A?4T%405]%<G)O<DAA
+M;F1L:6YG`')R,C<X>%]30U-)7T%405]296%D0V%P86-I='E4<F%N<VQA=&EO
+M;@!R<C(W.'A?4U107T1E=FEC95)E<V5T`')R,C<X>%]M;V1E4&%G94)U9@!R
+M<C(W.'A?3&ES=%]'971,87-T`')R,C<X>%]'971$979I8V5&<F]M4&]O;`!R
+M<C(W.'A?4&]R=%]!8F]R=%)E<75E<W1S`')R,C<X>%]#;W)E7T9I;&Q396YS
+M941A=&$`<G(R-SAX7V]D:6Y?<V5T7W-P:6Y?=7!?;6]D90!R<C(W.'A?17AP
+M86YD97)?4TU04F5Q=65S=%]297!O<G1'96YE<F%L`')R,C<X>%]D=6UP7W5N
+M87-S;V-I871E9%]F:7,`<G(R-SAX7T-O<F5?26YT97)R=7!T4V5R=FEC95)O
+M=71I;F4`<G(R-SAX7U-#4TE?36%K94-A8VAE0V]M;6%N9`!R<C(W.'A?0V]R
+M95]P87-S7W1H<G5?9FEL;%]T87-K9FEL90!R<C(W.'A?0V]R95]-;V1U;&53
+M96YD4F5Q=65S=`!R<C(W.'A?4T%405]0;W)T4F5S970`<G(R-SAX7T-O<F5?
+M36]D=6QE26YI=&EA;&EZ90!R<C(W.'A?17AP86YD97)?4TU04F5Q7T-A;&QB
+M86-K`')R,C<X>%]0<F5%;7!T>5!-`')R,C<X>%]%>'!A;F1E<E]335!297%U
+M97-T7T1I<V-O=F5R`')R,C<X>%]335!?4T=024]?4V5T7T9A:6QL960`<G(R
+M-SAX7T1E=&5C=%!O<G14>7!E`')R,C<X>%]31U!)3U]296%D4F5G:7-T97(`
+M<G(R-SAX7U-%4U]);G1E<FYA;%)E<4-A;&QB86-K`')R,C<X>%]-5E]$=6UP
+M4F5Q=65S=`!R<C(W.'A?0VAE8VM487)G971#:&%N9V4`<G(R-SAX7W-E=%]F
+M86EL7VQE9',`<G(R-SAX7T)E97!/;@!R<C(W.'A?359?1V5T36%P<&5D240`
+M<G(R-SAX7T9R9650351O4&]O;`!R<C(W.'A?4T=024]?5W)I=&5296=I<W1E
+M<@!R<C(W.'A?57!D871E4W1A='5S5G-397-#;VYT<F]L0G5F9F5R`')R,C<X
+M>%]'971#;W)E0V]N=&5X=$9R;VU0;V]L`')R,C<X>%]31U!)3U]335!297%?
+M0V%L;&)A8VL`<G(R-SAX7T1E=FEC95]-86ME36]D95-E;G-E4F5Q=65S=`!R
+M<C(W.'A?4U-47U-025]#340`<G(R-SAX7U-!5$%?2&%N9&QE1&5V:6-E56YP
+M;'5G`')R,C<X>%]M=E]D:7-A8FQE7W)E9VES=&5R7W-E=`!R<C(W.'A?0V]R
+M95]297-E=$-M9%-L;W0`<G(R-SAX7U-!5$%?4')E<&%R94-O;6UA;F1486)L
+M90!R<C(W.'A?4T%405]0<F5P87)E0V]M;6%N9$AE861E<@!R<C(W.'A?1FEN
+M9$9R965335!#;VYT97AT`')R,C<X>%]-5E]#4D,`<G(R-SAX7TU67T5Q=6%L
+M<P!R<C(W.'A?0V]M<&QE=&5297%U97-T`')R,C<X>%],:7-T7T=E=$9I<G-T
+M`')R,C<X>%]O9&EN7W-E=%]I9&QE7W-T86YD8GD`<G(R-S-X7TU67T-O<'E3
+M1U1A8FQE`')R,C<S>%]M;V1E4&%G94)U9@!R<C(W,WA?0V]R95](86YD;&57
+M86ET:6YG3&ES=`!R<C(W,WA?17AP86YD97)?4TU04F5Q7T-A;&QB86-K`')R
+M,C<S>%]31U!)3U]335!297%?0V%L;&)A8VL`<G(R-S-X7TAA;F1L94-O;6UA
+M;F11=65U90!R<C(W,WA?4T%405]035](86YD;&5$979I8V50;'5G:6X`<G(R
+M-S-X7T5X<&%N9&5R7U--4%)E<75E<W1?1&ES8V]V97(`<G(R-S-X7T%405]#
+M1$(R5&%S:T9I;&4`<G(R-S-X7U-!5$%?4$U?17)R;W)(86YD;&EN9P!R<C(W
+M,WA?4T%37TAA;F1L94)21$-35`!R<C(W,WA?4T%405]%<G)O<DAA;F1L:6YG
+M`')R,C<S>%]30U-)7T%405]296%D5W)I=&54<F%N<VQA=&EO;@!R<C(W,WA?
+M3&ES=%]'971,87-T`')R,C<S>%]3051396YS941A=&$`<G(R-S-X7T9R9653
+M35!#;VYT97AT`')R,C<S>%]$25-#7T-A;F-E;$1I<V-O=F5R`')R,C<S>%]0
+M;W)T7TES4F5Q=65S=%)U;FYI;F<`<G(R-S-X7T%4345,7U-025]#340`<G(R
+M-S-X7T-O<F5?26YT97)R=7!T4V5R=FEC95)O=71I;F4`<G(R-S-X7T1E=FEC
+M95]-86ME26YQ=6ER>51A<VM297%U97-T`')R,C<S>%]$:7-C;W9E<GE#86QL
+M0F%C:P!R<C(W,WA?07-S:6=N1&5V:6-E16QE;65N=$YU;6)E<@!R<C(W,WA?
+M4')E<&%R941E;&EV97)Y475E=65%;G1R>0!R<C(W,WA?4T-325]!5$%?3&]W
+M97)7;W)D`')R,C<S>%]&<F5E4&]R=%1O4&]O;`!R<C(W,WA?359?4V5T3$)!
+M86YD4V5C=&]R0V]U;G0`<G(R-S-X7VUV7V1I<V%B;&5?<F5G:7-T97)?<V5T
+M`')R,C<S>%]486=?26YI=`!R<C(W,WA?1$E30U]'971.96=O=&EA=&5D3&EN
+M:U)A=&4`<G(R-S-X7U-#4TE?051!7U-T87)T4W1O<%1R86YS;&%T:6]N`')R
+M,C<S>%])<W-U95]$:7-C;W9E<@!R<C(W,WA?4T-325]!5$%?57!P97)7;W)D
+M`')R,C<S>%]486=?1V5T3VYE`')R,C<S>%]#:&5C:T1E=FEC94-H86YG90!R
+M<C(W,WA?1G)E94-O<F5#;VYT97AT5&]0;V]L`')R,C<S>%]'971-87A.96=O
+M=&EA=&5D3&EN:U)A=&4`<G(R-S-X7W-E=%]F86EL7VQE9`!R<C(W,WA?7U]0
+M35]C86YC96Q?=&EM97(`<G(R-S-X7U!-7TES<W5E4F5A9%)E9P!R<C(W,WA?
+M0V%L8W5L871E4F]U=&5);F1E>`!R<C(W,WA?17AP86YD97)?4TU04F5Q=65S
+M=%]297!O<G102%E3051!`')R,C<S>%]30U-)7TUA:V5-;V1E4&%G94-A8VAI
+M;F<`<G(R-S-X7T=E=%!-1&5V:6-E`')R,C<S>%]M=E]S971?4T%3061D<@!R
+M<C(W,WA?4T%405]0;W)T4F5S970`<G(R-S-X7T1)4T-?1V5T4F5S;W5R8V4`
+M<G(R-S-X7V]D:6Y?9FQA<VA?86-C97-S`')R,C<S>%]305-?2&%N9&QE0V]M
+M<&QE=&5D0V]M;6%N9`!R<C(W,WA?1&5V:6-E7U!A<G-E261E;G1I9GE$871A
+M`')R,C<S>%]0<F5%;7!T>5!-`')R,C<S>%]$979I8V5?36%K94UO9&5396YS
+M95)E<75E<W0`<G(R-S-X7U-'5&%B;&5?079A:6QA8FQE`')R,C<S>%]0;W-T
+M36%K95-E<T-O;F9I9W5R871I;VY297%U97-T`')R,C<S>%]#;W)E7TUO9'5L
+M94=E=%)E<V]U<F-E475O=&$`<G(R-S-X7TDR0U]-;V1U;&5);FET:6%L:7IE
+M`')R,C<S>%]S971?9F%I;%]L961S`')R,C<S>%]'971$979I8V5&<F]M4&]O
+M;`!R<C(W,WA?1G)E95-!5$%38W)A=&-H5&]0;V]L`')R,C<S>%]296UO=F5$
+M979I8V4`<G(R-S-X7VUV0VAA;FYE;%-T871E36%C:&EN90!R<C(W,WA?4TU0
+M4F5S<$QE;F=T:`!R<C(W,WA?4T%405]034EN:71297%#86QL8F%C:P!R<C(W
+M,WA?4$U?27-S=657<FET95)E9P!R<C(W,WA?1V5T4&]R=$9R;VU0;V]L`')R
+M,C<S>%]!<W-I9VY296=I<W1E<E-E=`!R<C(W,WA?4T%405]035-T871E36%C
+M:&EN90!R<C(W,WA?0V]M<&QE=&5297%U97-T06YD4VQO=`!R<C(W,WA?1$E3
+M0U]'97149W1$979-87``<G(R-S-X7T9R965315-30E1O4&]O;`!R<C(W,WA?
+M1FEN9%1G=$YO`')R,C<S>%]30U-)7TUA:V5#86-H94-O;6UA;F0`<G(R-S-X
+M7VUV7W)E<V5T7WAM=`!R<C(W,WA?5&%G7U)E;&5A<V5/;F4`<G(R-S-X7T-/
+M4D5?27-S=65335!297%U97-T`')R,C<S>%]O9&EN7VEO8W1L`')R,C<S>%]-
+M5E]:97)O379297%U97-T`')R,C<S>%]$25-#7T1O1&ES8V]V97(`<G(R-S-X
+M7U-#4TE?051!7T9I;&Q,0D%#9&(Q-@!R<C(W,WA?1V5T4TU04V-R871C:$9R
+M;VU0;V]L`')R,C<S>%]&<F5E4TU04V-R871C:%1O4&]O;`!R<C(W,WA?1G)E
+M95)E9VES=&5R4V5T`')R,C<S>%]'971.0U%486<`<G(R-S-X7U-E<G9I8V5)
+M;G1E<G)U<'0`<G(R-S-X7T1E=FEC95]-86ME4V5S4F-V1&EA9U)E<75E<W0`
+M<G(R-S-X7TU67TEN:71I86QI>F5487)G971)1%1A8FQE`')R,C<S>%]-5E]%
+M<75A;',`<G(R-S-X7U!-7T9R965296=I<W1E<E-E=`!R<C(W,WA?4T%405]0
+M35](86YD;&5$979I8V55;G!L=6<`<G(R-S-X7U!-7T-O<F5?4F5Q5&EM96]U
+M=`!R<C(W,WA?57!D871E5VED95!O<G10:'E-87``<G(R-S-X7V]D:6Y?<V5T
+M7W-P:6Y?=7!?;6]D90!R<C(W,WA?1&5V:6-E7U=R:71E4V5S0V]N=')O;$1I
+M86<`<G(R-S-X7U-T;W)E7T-O;F9I9U)O=71E26YF;P!R<C(W,WA?5F5R:69Y
+M0V]M;6%N9$)E9F]R95-E;F1I;F<`<G(R-S-X7T1E=&5C=%!O<G14>7!E`')R
+M,C<S>%]-5E]$=6UP4F5Q=65S=`!R<C(W,WA?4T%405](86YD;&5$979I8V55
+M;G!L=6<`<G(R-S-X7U-'4$E/7U)E861296=I<W1E<@!R<C(W,WA?4T%405]0
+M;W)T1&5V:6-E4F5A9'D`<G(R-S-X7U!O<W1-86ME4V5S16QE;65N=%-T871U
+M<U)E<75E<W0`<G(R-S-X7T-O<F5?36]D=6QE4VAU=&1O=VX`<G(R-S-X7T-O
+M<F5?26YT97)N86Q396YD4F5Q=65S=`!R<C(W,WA?4T-325]!5$%?5F5R:69Y
+M5')A;G-L871I;VX`<G(R-S-X7U-!4U]);G1E<FYA;%)E<4-A;&QB86-K`')R
+M,C<S>%]!<W-I9VY%;&5M96YT4VQO=$YU;6)E<@!R<C(W,WA?4T%37U!O<G12
+M97-E=`!R<C(W,WA?4T537U-E=$9A:6Q,960`<G(R-S-X7U-35%]34$E?0TU$
+M`')R,C<S>%]M=E]D:7-A8FQE7WAM=`!R<C(W,WA?4T%405](86YD;&5$979I
+M8V50;'5G:6X`<G(R-S-X7U!O<G1?1FEN9%1G=$YO`')R,C<S>%]-5E]$=6UP
+M4F5G:7-T97(`<G(R-S-X7VUV7V5N86)L95]X;70`<G(R-S-X7U-!5$%?4$U(
+M;W1P;'5G4F5Q0V%L;&)A8VL`<G(R-S-X7U)U;G1I;65)<W-U95-O9G1297-E
+M=`!R<C(W,WA?9'5M<%]U;F%S<V]C:6%T961?9FES`')R,C<S>%]0;W)T7TAA
+M;F1L955N<&QU9P!R<C(W,WA?4TU07U-'4$E/7U-E=%]&86EL;&5D`')R,C<S
+M>%]31U!)3U]);FET:6%L:7IE`')R,C<S>%]0<F5P87)E06YD4V5N9$-O;6UA
+M;F0`<G(R-S-X7U-#4TE?051!7U)E861#87!A8VET>51R86YS;&%T:6]N`')R
+M,C<S>%]M=E]R97-E=%]P:'D`<G(R-S-X7T-A=&5G;W)Y7T-$0E]4>7!E`')R
+M,C<S>%]31U1A8FQE7TEN:70`<G(R-S-X7TU67T=E=$UA<'!E9$E$`')R,C<S
+M>%]30U-)7T%405]296%D0V%P86-I='E4<F%N<VQA=&EO;D-A;&QB86-K`')R
+M,C<S>%]&:6YD4G5N;FEN9U)E<4)Y5&%G`')R,C<S>%]35%!?1&5V:6-E4F5S
+M970`<G(R-S-X7T=E=$-O<F5#;VYT97AT1G)O;5!O;VP`<G(R-S-X7T-O;7!L
+M971E4F5Q=65S=`!R<C(W,WA?5&%G7TEN:71?1DE&3P!R<C(W,WA?4&]R=%]3
+M;V9T4F5S971#86QL8F%C:P!R<C(W,WA?0V]R95]-;V1U;&53=&%R=`!R<C(W
+M,WA?57!D871E5&=T1&5V36%P`')R,C<S>%]&:6YD1G)E95--4$-O;G1E>'0`
+M<G(R-S-X7T=E=%!-1G)O;5!O;VP`<G(R-S-X7V]D:6Y?<F5M;W9E7V1E=FEC
+M90!R<C(W,WA?359?0U)#`')R,C<S>%]3051!7U!O<G1$971E8W0`<G(R-S-X
+M7U)U;G1I;65)<W-U95)E861,;V=%>'0`<G(R-S-X7T9I;F1!<V-I:4YU;6)E
+M<@!R<C(W,WA?0V]R95]'9713=7!P;W)T961#;W5N=',`<G(R-S-X7V]D:6Y?
+M<V5T7VED;&5?<W1A;F1B>0!R<C(W,WA?1G)E95!-5&]0;V]L`')R,C<S>%]M
+M=E]D:7-A8FQE7VAB80!R<C(W,WA?1$E30U]#:&5C:T1I<V-O=F5R4W1A=&4`
+M<G(R-S-X7U!R945M<'1Y1&5V:6-E`')R,C<S>%]&<F5E26YT97)N86Q297%4
+M;U!O;VP`<G(R-S-X7U!O<G1?36]N:71O<@!R<C(W,WA?4T=024]?4V5T7T9A
+M:6QL960`<G(R-S-X7T5X<&%N9&5R7U--4%)E<75E<W1?4&AY0V]N=')O;`!R
+M<C(W,WA?4&]R=%](86YD;&50;'5G:6X`<G(R-S-X7U-#4TE?5&]?1DE3`')R
+M,C<S>%]#:&5C:U1A<F=E=$-H86YG90!R<C(W,WA?1V5T4T534T)&<F]M4&]O
+M;`!R<C(W,WA?07-S:6=N1&5V:6-E3W9E<F%L;$5L96UE;G1.=6UB97(`<G(R
+M-S-X7U-'4$E/7U--4%)E<75E<W1?5W)I=&4`<G(R-S-X7T=E=$UI;DYE9V]T
+M:6%T961,:6YK4F%T90!R<C(W,WA?0V]R95]P87-S7W1H<G5?9FEL;%]T87-K
+M9FEL90!R<C(W,WA?0F5E<$]N`')R,C<S>%]#;W)E4V%V94]R:6=I;F%L0T1"
+M`')R,C<S>%]305-?17)R;W)(86YD;&EN9P!R<C(W,WA?3V1I;E-025]);FET
+M`')R,C<S>%]&<F5E17AP86YD97)4;U!O;VP`<G(R-S-X7T1)4T-?4V5T4F5S
+M;W5R8V4`<G(R-S-X7U-'5&%B;&5?07!P96YD`')R,C<S>%]$979I8V5?36%K
+M95)E861#87!A8VET>51A<VM297%U97-T`')R,C<S>%]3051!7T1E=FEC95-T
+M871E36%C:&EN90!R<C(W,WA?57!D871E4W1A='5S5G-397-#;VYT<F]L0G5F
+M9F5R`')R,C<S>%]-5E]-87!487)G971)1`!R<C(W,WA?1&5V:6-E7TUA:V5-
+M;V1E4V5L96-T4F5Q=65S=`!R<C(W,WA?4T-325]!5$%?4WEN8T-A8VAE5')A
+M;G-L871I;VX`<G(R-S-X7T5X<&%N9&5R7U--4%)E<75E<W1?4F5P;W)T1V5N
+M97)A;`!R<C(W,WA?1&5V:6-E7TUA:V5297%U97-T5&%S:U)E<75E<W0`<G(R
+M-S-X7T9R965$979I8V54;U!O;VP`<G(R-S-X7T=E=%-'0G5F9F5R1G)O;5!O
+M;VP`<G(R-S-X7U5P9&%T951A<F=E=$1E=FEC97,`<G(R-S-X7U1A9U])<T5M
+M<'1Y`')R,C<S>%]035]!<W-I9VY296=I<W1E<E-E=`!R<C(W,WA?4T%405]0
+M<F5P87)E0V]M;6%N9%1A8FQE`')R,C<S>%]3051!7U!O<G1(86YD;&5);G1E
+M<G)U<'0`<G(R-S-X7U-'4$E/7U--4%)E<75E<W1?4F5A9`!R<C(W,WA?7U]C
+M86YC96Q?=&EM97(`<G(R-S-X7V1E=FEC95]P<F]B95]D;VYE`')R,C<S>%]#
+M;W)E7TUA:V5$979I8V5297-E=%)E<0!R<C(W,WA?57!D871E4&AY26YF;P!R
+M<C(W,WA?359?4F5M;W9E5&%R9V5T240`<G(R-S-X7T=E=%-!5$%38W)A=&-H
+M1G)O;5!O;VP`<G(R-S-X7U-!5$%?4&]R=$1E=FEC941E=&5C=&5D`')R,C<S
+M>%]2=6YT:6UE27-S=653;V9T4F5S971#86QL8F%C:P!R<C(W,WA?4&]S=$UA
+M:V5397-%;F-L;W-U<F53=&%T=7-297%U97-T`')R,C<S>%]"965P3V9F`')R
+M,C<S>%]#;W)E7TUO9'5L94EN:71I86QI>F4`<G(R-S-X7U=R:71E1$5,5E]1
+M7T5N=')Y`')R,C<S>%]$:7-C;W9E<GE330!R<C(W,WA?4T%405]0<F5P87)E
+M0V]M;6%N9$AE861E<@!R<C(W,WA?1&5V:6-E7TUA:V5296%D0V%P86-I='DQ
+M-E1A<VM297%U97-T`')R,C<S>%]#;W)E7TUO9'5L95-E;F1297%U97-T`')R
+M,C<S>%]0;W)T7T%B;W)T4F5Q=65S=',`<G(R-S-X7T-O<F5?36]D=6QE16YA
+M8FQE1&ES86)L94E240!R<C(W,WA?1FEL;$5N8VQO<W5R945L96UE;G13=&%T
+M=7,`<G(R-S-X7U!O<W1-86ME4V5S16QE;65N=$1E<V-R:7!T;W)297%U97-T
+M`')R,C<S>%]C;W)E7VAA;F1L95]T87-K9FEL95]E<G)O<@!R<C(W,WA?359?
+M36%P5&]3<&5C:69I8U1A<F=E=$E$`')R,C<S>%])<W-U95]#;VYF:6=2;W5T
+M94EN9F\`<G(R-S-X7TQI<W1?1V5T1FER<W0`<G(R-S-X7T=E=$EN=&5R;F%L
+M4F5Q1G)O;5!O;VP`<G(R-S-X7T1E=FEC95])<W-U95-O9G1297-E=`!R<C(W
+M,WA?7U]R96YE=U]T:6UE<@!R<C(W,WA?1V5T3VYE0V]M;6%N9%-L;W0`<G(R
+M-S-X7TES<W5E7U)E<&]R=%)O=71E26YF;P!R<C(W,WA?4T%37T1E=FEC95-T
+M871E36%C:&EN90!R<C(W,WA?27-S=65?4F5P;W)T36%N=69A8W1U<F5R26YF
+M;W)M871I;VX`<G(R-S-X7U-#4TE?051!7T9I;&Q,0D%#9&(Q,`!R<C(W,WA?
+M:3)C7W)E<V5T`')R,C<S>%]#;W)E7T9I;&Q396YS941A=&$`<G(R-S-X7T9R
+M96531T)U9F9E<E1O4&]O;`!R<C(W,WA?1&5V:6-E7TUA:V53=&%R=%-T;W!5
+M;FET4F5Q=65S=`!R<C(W,WA?0V]R95]297%4:6UE;W5T`')R,C<S>%]0;W)T
+M7TAA;F1L941E=FEC95!L=6=I;@!R<C(W,WA?4T537TEN=&5R;F%L4F5Q0V%L
+M;&)A8VL`<G(R-S-X7U-'4$E/7U=R:71E4F5G:7-T97(`<G(R-S-X7T=E=$5X
+M<&%N9&5R1G)O;5!O;VP`<G(R-S-X7TES<W5E7U)E<&]R=$=E;F5R86P`<G(R
+M-S-X7U]?861D7W1I;65R`')R,C<S>%]#;W)E7U)E<V5T0VUD4VQO=`!R<C(W
+M,WA?4T-325]!5$%?0VAE8VM#;VYD:71I;VX`<G(R-S-X7U-#4TE?051!7T9I
+M;&Q$871A1FEE;&0`<G(R-S-X7T-O<F5297-T;W)E3W)I9VEN86Q#1$(`4W=A
+M<$AP=$UE=&%6,P!L9&U?<W!I;G5P7W9D978`<F%W7V-H96-K7V1I<VM?9&5S
+M8W)I<'1O<@!L9&U?8VAE8VM?87)R87D`;&1M7W)E8VAE8VM?86QL`'9D979?
+M8VQA<W-?;&ES=`!R87=?:61L95]T:6UE<E]R97-E=`!L9&U?9&5L971E7W!A
+M<G1I=&EO;@!L9&U?<WEN8U]C:&%N9V5D7V%R<F%Y<P!G<F5B=6EL9&]N97)R
+M;W(`;&1M7W%U975E7V5V96YT`'1R86YS9F]R;5]N965D960`;&1M7V-H96-K
+M7W1R86YS9F]R;0!L9&U?9FEX=7!?87)R87E?<W1A=&4`8V%L8U]R96)U:6QD
+M7W!R;V=R97-S`'9B=7-?97AT7W-I>F4`<V5T7W1R86YS9F]R;5]S=&5P7VEN
+M9F\`;&1M7V9I;F1?=F1E=E]R87<`;&1M7W)E<')O8F5?9&5V:6-E`&-A;&-?
+M=')A;G-F;W)M7W!R;V=R97-S`&QD;5]F:6YD7W9D979?8VQA<W,`;&1M7V%L
+M;&]C7W!A<G1I=&EO;@!L9&U?:6YI=%]D:7-K`')E9G)E<VA?<F%W7V1E=E]I
+M;F9O`%]D96QE=&5?<F%W7W!A<G0`<F%W7W)E861?=W)I=&5?<V5C=&]R<P!G
+M:61L97-T86YD8GET:6UE;W5T`')A=U]C:&5C:U]A<G)A>5]D97-C<FEP=&]R
+M`&QD;5]C<F5A=&5?=F1E=E]R87<`=6YP;'5G7W)A=U]V9&5V`$-H96-K4W5M
+M`&-O;7!A<F5?<VQO=%]S97%?8GE?<&-I861D<@!L9&U?861D7V1I<VM?=&]?
+M87)R87D`;&1M7W-Y;F-?9&ES:U]I;F9O`&=E=%]B:71S`%-W87!(<'1-971A
+M5C0`<F%W7V-O;G9E<G1?<W!A<F5?=&]?;&5G86-Y`&9.;W1I9GE'54D`;&1M
+M7V9L=7-H7V%L;%]T87)G971S`&QD;5]S=&%R=%]R96)U:6QD`&QD;5]S<&EN
+M9&]W;E]A;&Q?<F%W9&5V<P!?7VQD;5]F:6YI<VA?8VUD`$E$7U1/7U9$158`
+M7U]V9&5V7W%U975E7V-M9`!R87=?:61L95]T:6UE<E]C:&5C:P!G971?<W1R
+M:7!?:6YF;P!H<'0R-WAX7VQD;5]R96=I<W1E<E]H:6U?4E\V7S4U7S<U7S0V
+M7S8T`&AP=#(W>'A?9T=L;V)A;$YC<49L86<`:'!T,C=X>%]O<U]R97%U97-T
+M7W1I;65R`'-T<F-P>0!H<'0R-WAX7VEN:71?;6]D=6QE7VIB;V0`:'!T,C=X
+M>%]D;6%P;V]L7V=E=%]P86=E`&AP=#(W>'A?;W-?9V5T7W-T86UP`&AP=#(W
+M>'A?;&1M7W-U<W!E;F0`:'!T,C=X>%]L9&U?:61L90!H<'0R-WAX7VQD;5]G
+M971?;65M7VEN9F\`:'!T,C=X>%]L9&U?<F5M;W9E7W1I;65R`&AP=#(W>'A?
+M<&-I8V9G7W)E861?9'=O<F0`:'!T,C=X>%]D;6%P;V]L7VUA:V5?;W)D97(`
+M:'!T,C=X>%]L9&U?9V5T7W9B=7-?97AT`&AP=#(W>'A?;&1M7W)E;&5A<V5?
+M=F1E=@!H<'0R-WAX7V9R965L:7-T7W)E<V5R=F5?9&UA`&AP=#(W>'A?;&1M
+M7VEN='(`;65M8W!Y`&AP=#(W>'A?;&1M7V]N7W1I;65R`&AP=#(W>'A?;&1M
+M7V=E=%]C;61?<VEZ90!H<'0R-WAX7VQD;5]F<F5E7V-M9',`:'!T,C=X>%]L
+M9&U?8W)E871E7W9D978`:'!T,C=X>%]L9&U?861D7W-P87)E7W1O7V%R<F%Y
+M`&AP=#(W>'A?9W)E8G5I;&1P<FEO<FET>0!H<'0R-WAX7VQD;5]S>6YC7V%R
+M<F%Y7VEN9F\`:'!T,C=X>%]O<U]M87!?<&-I7V)A<@!H<'0R-WAX7U]?;&1M
+M7V%L;&]C7V-M9`!H<'0R-WAX7VEN:71?;6]D=6QE7W9D979?<F%W`&AP=#(W
+M>'A?;&1M7W-E=%]A=71O<F5B=6EL9`!H<'0R-WAX7VEN:71?;6]D=6QE7VAI
+M;5]R<C(W,W@`:'!T,C=X>%]?7V1U;6UY7W)E9P!H<'0R-WAX7V1M87!O;VQ?
+M86-T:79E`&AP=#(W>'A?=F)U<U]L:7-T`&AP=#(W>'A?;&1M7W%U975E7W9B
+M=7-?9'!C`&AP=#(W>'A?;&1M7W)E<V5T7W9B=7,`:'!T,C=X>%]I;FET7VUO
+M9'5L95]R86ED-0!H<'0R-WAX7V=31U!)3U!A<G13=7!P;W)T`&AP=#(W>'A?
+M;&1M7W)E;&5A<V5?;&]C:P!H<'0R-WAX7V]S7W5N;6%P7W!C:5]B87(`:'!T
+M,C=X>%]L9&U?<VAU=&1O=VX`:'!T,C=X>%]H:6U?;&ES=`!H<'0R-WAX7VQD
+M;5]R97%U97-T7W1I;65R`&AP=#(W>'A?;&1M7W)E<W5M90!H<'0R-WAX7VEN
+M:71?;6]D=6QE7W)A:60Q`&AP=#(W>'A?;&1M7V=E=%]D979I8V5?:60`:'!T
+M,C=X>%]O<U]S8VAE9'5L95]T87-K`&AP=#(W>'A?;&1M7VEO8W1L`&AP=#(W
+M>'A?9U-P:6YU<$]N941E=D5A8VA4:6UE`&AP=#(W>'A?9G)E96QI<W1?<'5T
+M`&AP=#(W>'A?;W-?<W1A;&QE>&5C`&AP=#(W>'A?9U]L96=A8WE?;6]D90!H
+M<'0R-WAX7VQD;5]A;&QO8U]C;61S7U)?-E\U-5\W-5\T-E\V-`!H<'0R-WAX
+M7VQD;5]R=6X`:'!T,C=X>%]L9&U?9G)E95]C;61S7W1O7VQI<W0`:'!T,C=X
+M>%]I;FET7VUO9'5L95]P87)T:71I;VX`:'!T,C=X>%]O<U]M87A?8V%C:&5?
+M<VEZ90!H<'0R-WAX7W9D979?<75E=65?8VUD`&AP=#(W>'A?:6YI=%]M;V1U
+M;&5?:&EM7W)R,C<R,`!H<'0R-WAX7V]S7V=E=%]V8G5S7W-E<0!H<'0R-WAX
+M7VQD;5]S>6YC7V%R<F%Y7W-T86UP`&AP=#(W>'A?;&1M7W%U975E7V-M9`!H
+M<'0R-WAX7V]S7W!R:6YT:P!H<'0R-WAX7V9R965L:7-T7W)E<V5R=F4`:'!T
+M,C=X>%]D;6%P;V]L7W!U=%]P86=E`&AP=#(W>'A?9G)E96QI<W1?9V5T`&AP
+M=#(W>'A?;&1M7W5N<F5G:7-T97)?9&5V:6-E`&AP=#(W>'A?;&1M7W)E9VES
+M=&5R7V%D87!T97(`:'!T,C=X>%]G875T;W)E8G5I;&0`:'!T,C=X>%]L9&U?
+M9V5T7W9B=7-?<VEZ90!H<'0R-WAX7V1E;&%Y7V)E='=E96Y?<W!I;G5P`&AP
+M=#(W>'A?;&1M7V=E;F5R:6-?;65M8F5R7V9A:6QE9`!H<'0R-WAX7V1M87!O
+M;VQ?9V5T7W!A9V5?870`:'!T,C=X>%]L9&U?979E;G1?;F]T:69Y`&AP=#(W
+M>'A?;&1M7V-R96%T95]V8G5S`&AP=#(W>'A?:&EM7VAA;F1L95]T;U]V8G5S
+M`&AP=#(W>'A?9G)E96QI<W1?9V5T7V1M80!H<'0R-WAX7VQD;5]G971?;F5X
+M=%]V8G5S`&AP=#(W>'A?;W-?<&-I7W=R:71E;`!H<'0R-WAX7VQD;5]F:6YD
+M7W1A<F=E=`!H<'0R-WAX7V1M87!O;VQ?<F5G:7-T97)?8VQI96YT`&AP=#(W
+M>'A?;&1M7VEN:71I86QI>F5?=F)U<U]A<WEN8P!H<'0R-WAX7V]S7W%U97)Y
+M7W1I;64`:'!T,C=X>%]O<U]Q=65R>5]R96UO=F5?9&5V:6-E`&AP=#(W>'A?
+M;&1M7W)E9VES=&5R7V1E=FEC90!H<'0R-WAX7VEN:71?;6]D=6QE7W)A:60P
+M`&AP=#(W>'A?;W-?<&-I7W)E861L`&AP=#(W>'A?;&1M7V%C<75I<F5?;&]C
+M:P!H<'0R-WAX7V]S7W)E=F%L:61A=&5?9&5V:6-E`&AP=#(W>'A?9&UA<&]O
+M;%]I;FET`&AP=#(W>'A?;&1M7V9I;FES:%]C;60`:'!T,C=X>%]I;FET7VUO
+M9'5L95]H:6U?<G(R-S9X`&AP=#(W>'A?;&1M7VED95]F:7AS=')I;F<`:'!T
+M,C=X>%]D;6%P;V]L7VUA>%]C;&%S<U]P86=E<P!H<'0R-WAX7VQD;5]R96=I
+M<W1E<E]V9&5V7V-L87-S7U)?-E\U-5\W-5\T-E\V-`!H<'0R-WAX7VYU;5]D
+M<FEV97-?<&5R7W-P:6YU<`!H<'0R-WAX7VQD;5]R96QE87-E7W9B=7,`:'!T
+M,C=X>%]L9&U?<75E=65?=&%S:P!H<'0R-WAX7VQD;5]A;&QO8U]C;61S7V9R
+M;VU?;&ES=`!H<'0R-WAX7V9R965L:7-T7W!U=%]D;6$`:'!T,C=X>%]L9&U?
+M=&EM97)?<')O8F5?9&5V:6-E`&AP=#(W>'A?;&1M7V9I;F1?<W1A;7``:'!T
+M,C=X>%]I;FET7VUO9'5L95]H:6U?<G(R-SAX`&AP=#(W>'A?;&1M7V-H96-K
+M7V%R<F%Y7V]N;&EN90!H<'0R-WAX7V=0<F]B94EN26YI=&EA;&EZ:6YG`&AP
+M=#(W>'A?;&]G7W-E8W1O<E]R97!A:7(``````)\``````````@```&X```#\
+M_________\8``````````@```.0```#\_________^,``````````@```)P`
+M``#\_________SX!`````````@```.8```#\_________TX!`````````@``
+M`,\```#\_________U$#`````````@```&`$``#\_________Y@$````````
+M`@```"0```#\_________Z\'````````"P````4``````````````+D'````
+M`````@```(P$``#\_________\0'````````"P````8``````````````,X'
+M`````````@```(P$``#\__________('````````"P````<`````````````
+M`"L(`````````@```&T$``#\_________WP(`````````@```&T$``#\____
+M_____\`(`````````@```&T$``#\_________]H(`````````@```&T$``#\
+M_________R4)`````````@```&T$``#\_________S\)`````````@```&T$
+M``#\_________XX)`````````@```&T$``#\_________Y\)`````````@``
+M`&T$``#\_________^,)`````````@```(`$``#\__________P)````````
+M`@```&T$``#\_________Q8*`````````@```&T$``#\_________YL*````
+M`````@```&T$``#\_________[4*`````````@```&T$``#\_________^D*
+M`````````@```(`$``#\_________PL+`````````@```&T$``#\________
+M_R4+`````````@```&T$``#\_________VX+`````````@```&T$``#\____
+M_____W\+`````````@```&T$``#\_________\,+`````````@```(`$``#\
+M_________]P+`````````@```&T$``#\__________8+`````````@```&T$
+M``#\_________VD,`````````@```&T$``#\_________X,,`````````@``
+M`&T$``#\_________]T,`````````@```&T$``#\_________TT-````````
+M`@```&T$``#\_________\@-`````````@```!@```#\_________](-````
+M`````@```(`$``#\_________]P-`````````@```%````#\_________P8.
+M`````````@```&T$``#\_________R4.`````````@```&T$``#\________
+M_SP.`````````@```&T$``#\_________V(.`````````@```&T$``#\____
+M_____\\.`````````@```(`$``#\_________X0/`````````@```(`$``#\
+M_________W40`````````@```'X```#\_________XD0`````````@```!H`
+M``#\_________ZL0`````````@```(T$``#\_________\T0`````````@``
+M`(T$``#\_________^\0`````````@```(T$``#\_________PX1````````
+M`@```(T$``#\_________S`1`````````@```(T$``#\_________UT1````
+M`````@```(T$``#\_________W<1`````````@```(T$``#\_________Y$1
+M`````````@```(T$``#\_________[`1`````````@```(T$``#\________
+M_],1`````````@```(T$``#\__________81`````````@```(T$``#\____
+M_____Q02`````````@```(T$``#\_________S(2`````````@```(T$``#\
+M_________U`2`````````@```(T$``#\_________VX2`````````@```(T$
+M``#\_________XL2`````````@```(T$``#\_________ZX2`````````@``
+M`(T$``#\_________\<2`````````@```(T$``#\_________^P2````````
+M`@```%X$``#\_________PP3`````````@```%X$``#\_________S03````
+M`````@```%X$``#\_________UD3`````````@```%X$``#\_________WX3
+M`````````@```%X$``#\_________Z$3`````````@```%X$``#\________
+M_\P3`````````@```%X$``#\_________UT5`````````@```'X```#\____
+M______(5`````````@```(\$``#\_________R@6`````````@```(\$``#\
+M_________UX6`````````@```(\$``#\_________Y06`````````@```(\$
+M``#\_________\06`````````@```(\$``#\_________]D6`````````@``
+M`(\$``#\__________$6`````````@```(\$``#\_________UD7````````
+M`@```(\$``#\_________Z@7`````````@```(\$``#\__________<7````
+M`````@```(\$``#\_________TD8`````````@```(\$``#\_________ZL8
+M`````````@```(\$``#\_________]\8`````````@```(\$``#\________
+M_PT9`````````@```%,```#\_________QH9`````````@```(\$``#\____
+M_____TD9`````````@```&8```#\_________U89`````````@```(\$``#\
+M_________X49`````````@```&8```#\_________Y(9`````````@```(\$
+M``#\_________\$9`````````@```&8```#\_________\X9`````````@``
+M`(\$``#\_________P$:`````````@```&8```#\_________PX:````````
+M`@```(\$``#\_________VT:`````````@```$X```#\_________W$=````
+M`````@```)H$``#\_________XX=`````````@```)H$``#\_________ZL=
+M`````````@```)H$``#\_________\@=`````````@```)H$``#\________
+M_^4=`````````@```)H$``#\_________P(>`````````@```)H$``#\____
+M_____S$>`````````@```+H```#\_________WX>`````````@```)H$``#\
+M_________ZT>`````````@```+H```#\_________U@?`````````@```+H`
+M``#\_________XH?`````````@```)<$``#\_________YX?`````````@``
+M`$8```#\_________ZP?`````````@```-````#\_________[8?````````
+M`@```(`$``#\_________]P?`````````@```!,!``#\_________WH@````
+M`````@```"(```#\_________Y4@`````````@```#0```#\_________VTA
+M`````````@```$\```#\_________^@A`````````@```&<```#\________
+M_U4F`````````@```!8```#\_________[PF`````````@```*X```#\____
+M______`F`````````@```$\```#\_________Y`G````````"P````,`````
+M`````````*,G`````````@```(<```#\_________\\G`````````@```(<`
+M``#\__________<G`````````@```(<```#\_________Q\H`````````@``
+M`(<```#\_________UDH`````````@```"X```#\_________YXH````````
+M`@```%4```#\_________SHJ`````````@```'D```#\_________V0J````
+M`````@```(`$``#\__________`L`````````@```+P```#\__________\L
+M`````````@```-4```#\_________\4M`````````@```#(```#\________
+M_U<N`````````@````P!``#\_________W0N`````````@```#(```#\____
+M_____R0P`````````@````4!``#\_________T8P`````````@```,T```#\
+M_________[DP`````````@````4!``#\__________0P`````````@```,T`
+M``#\__________\R`````````@```*(```#\_________S<S````````"P``
+M``,```!0`````````.TS`````````@```&`$``#\_________PDT````````
+M"P````,```#P!````````+(T`````````@```!0```#\_________\(T````
+M`````@```!0```#\_________U\U`````````@````4!``#\_________YHU
+M`````````@```,T```#\_________PTV`````````@```$P```#\________
+M_T0V`````````@```*H```#\_________V`V`````````@```$P```#\____
+M_____V\V`````````@```&D```#\_________XLV`````````@```$P```#\
+M_________](V`````````@```$<```#\_________S0W`````````@```$P`
+M``#\_________TTW`````````@```$<```#\_________XDX`````````@``
+M`*T```#\_________Y<X`````````@```%L```#\_________P,Y````````
+M`@```+H```#\_________Q(Y`````````@```%X```#\_________Y<Y````
+M````"P````$```"`-P```````*$Y`````````@```.8```#\_________ZPY
+M`````````@```-,```#\_________THZ`````````@```&T$``#\________
+M_VPZ`````````@```,L```#\_________WPZ`````````@```%T```#\____
+M_____YXZ`````````@```,L```#\_________Z8Z`````````@```+(```#\
+M_________\4Z````````"P````,```!0"@```````-PZ`````````@```-L`
+M``#\__________@Z`````````@```-L```#\_________Q0[`````````@``
+M`$8```#\_________S8[`````````@````0!``#\_________TT[````````
+M`@```&4```#\_________W`[`````````@```$8```#\_________XL[````
+M`````@````0!``#\_________Z([`````````@```$8```#\_________[0[
+M`````````@```&4```#\_________\D[`````````@```$8```#\________
+M__P[`````````@```-````#\_________P8\`````````@```(`$``#\____
+M_____WD\`````````@```)X```#\_________Y(\`````````@```#<```#\
+M_________[D\`````````@```,X```#\_________\X\`````````@```)H`
+M``#\_________^$\````````"P````8````-`````````.L\`````````@``
+M`(P$``#\_________P$]`````````@```)<$``#\_________Q<]````````
+M`@```)<$``#\_________RH]`````````@```#4```#\_________TH]````
+M`````@```+H```#\_________X<]`````````@````@!``#\_________SH^
+M`````````@```'H```#\_________UT^`````````@```,@```#\________
+M_X4^`````````@```"(```#\_________ZX^`````````@```/H```#\____
+M_____[8^`````````@```"(```#\_________P,_`````````@```,@```#\
+M_________TL_`````````@````0!``#\_________W0_`````````@```+H`
+M``#\_________Z4_`````````@```)<$``#\_________[P_`````````@``
+M`$8```#\_________]<_`````````@```-````#\_________^$_````````
+M`@```(`$``#\_________Q=``````````@```$0```#\_________V!`````
+M````"P````4```!8`````````&I``````````@```(P$``#\_________WI`
+M`````````@```$8```#\_________^=``````````@```-````#\________
+M__%``````````@```(`$``#\_________S5!`````````@```)X```#\____
+M_____U5!`````````@```#<```#\_________WY!`````````@```,X```#\
+M_________Y-!`````````@```)H```#\_________Z9!````````"P````8`
+M```-`````````+!!`````````@```(P$``#\_________\5!`````````@``
+M`)<$``#\_________]I!`````````@```)<$``#\_________^U!````````
+M`@```#4```#\__________]!`````````@```$8```#\_________P="````
+M`````@```"(```#\_________ZE"`````````@```!$```#\_________\M"
+M`````````@```,@```#\__________-"`````````@```"(```#\________
+M_Q=#`````````@```/H```#\_________Q]#`````````@```"(```#\____
+M_____T)#`````````@```,@```#\_________W1#`````````@```$8```#\
+M_________X9#`````````@```&4```#\_________Z1#`````````@```+H`
+M``#\_________]=#`````````@```)<$``#\_________^Q#`````````@``
+M`$8```#\__________I#`````````@```-````#\_________P1$````````
+M`@```(`$``#\_________R5$`````````@```*D```#\_________TA$````
+M`````@```,@```#\_________X1$`````````@```+H```#\_________Z-$
+M`````````@```)<$``#\_________[Q$`````````@```$8```#\________
+M_\I$`````````@```-````#\_________]1$`````````@```(`$``#\____
+M______M$`````````@```,X```#\_________Q!%`````````@```)H```#\
+M_________R5%`````````@```)<$``#\_________SI%`````````@```)<$
+M``#\_________TU%`````````@```#4```#\_________VQ%`````````@``
+M`$8```#\_________W=%`````````@```)4```#\_________X]%````````
+M`@```&T$``#\_________]=%`````````@```&T```#\_________^)%````
+M`````@```+L```#\_________R]&`````````@```#,```#\_________UM&
+M`````````@```+H```#\__________M&`````````@```)(```#\________
+M_P=(`````````@```,@```#\_________SA(`````````@```'\```#\____
+M_____U%(`````````@```+,```#\_________XM(`````````@```+$```#\
+M_________[Q(`````````@```/8```#\_________^)(`````````@```+H`
+M``#\_________XI)`````````@```)(```#\_________YE*`````````@``
+M`'\```#\_________\M*`````````@```)0```#\_________QM+````````
+M`@```+H```#\_________RU+`````````@```.,```#\_________\)+````
+M`````@```/H```#\_________U%,`````````@```/H```#\_________UY,
+M`````````@```*P```#\_________XE,`````````@```/H```#\________
+M_Z=,`````````@```,@```#\_________\U,`````````@```$(```#\____
+M_____V)-`````````@```&T$``#\_________X9-`````````@```(`$``#\
+M_________[1-`````````@```&T$``#\_________]1-`````````@```&T$
+M``#\_________U5.`````````@```(`$``#\_________\M.`````````@``
+M`/\```#\_________^=.`````````@```/,```#\__________1.````````
+M`@```&T```#\_________R-/`````````@```+L```#\_________U1/````
+M`````@```"4```#\_________WY/`````````@```&T```#\_________SE0
+M`````````@```(`$``#\_________YY0`````````@```&T$``#\________
+M_\!0`````````@```(`$``#\_________^Q0`````````@```&T$``#\____
+M_____PM1`````````@```&T$``#\_________V=1`````````@```+H```#\
+M__________%1`````````@```$8```#\_________QY2`````````@```$8`
+M``#\_________RM2`````````@```&T```#\_________VQ2`````````@``
+M`+H```#\_________XA2`````````@```+H```#\_________ZE2````````
+M`@```%D$``#\_________\A2`````````@```-````#\_________])2````
+M`````@```(`$``#\_________X-3`````````@```%T```#\_________Z=3
+M`````````@```,X```#\_________[Q3`````````@```)H```#\________
+M_\]3````````"P````8````-`````````-E3`````````@```(P$``#\____
+M_____^Y3`````````@```)<$``#\_________P-4`````````@```)<$``#\
+M_________Q]4`````````@```#4```#\_________SY4`````````@```*``
+M``#\_________VA4`````````@```+H```#\_________XA4`````````@``
+M`-````#\_________Y)4`````````@```(`$``#\_________]-4````````
+M`@```,X```#\_________^A4`````````@```)H```#\__________M4````
+M````"P````8````-``````````55`````````@```(P$``#\_________QI5
+M`````````@```)<$``#\_________R]5`````````@```)<$``#\________
+M_T95`````````@```#4```#\_________UY5`````````@```+L```#\____
+M_____])5`````````@```&T$``#\__________=5`````````@```(`$``#\
+M_________R-6`````````@```&T$``#\_________T)6`````````@```&T$
+M``#\_________Q=7````````"P```(8``````````````!]7`````````@``
+M`/X```#\_________[E7`````````@```,,```#\_________]I7````````
+M`@```+H```#\_________V!8`````````@```+X```#\_________Y58````
+M`````@```$0```#\_________\Y8`````````@```$````#\_________^58
+M`````````@```)<$``#\__________U8`````````@```)<$``#\________
+M_S99`````````@```(`$``#\_________TU9`````````@```&T$``#\____
+M_____VU9`````````@```&T$``#\_________XE9`````````@```&T```#\
+M_________Y%9`````````@```!(!``#\_________]I9`````````@```/\`
+M``#\_________S=:`````````@```+H```#\_________ZE:`````````@``
+M`-0```#\_________[A:`````````@```,8```#\_________^1:````````
+M`@```(H```#\_________SQ;`````````@```&T$``#\_________VE;````
+M`````@```&T$``#\_________WY;`````````@```.D```#\_________XM;
+M`````````@````$!``#\_________ZM;`````````@```&T$``#\________
+M_[M;`````````@```&T$``#\_________\M;`````````@```&T$``#\____
+M_____]M;`````````@```&T$``#\_________TM<`````````@```&T$``#\
+M_________W)<`````````@```&T$``#\_________X%<`````````@```,$`
+M``#\_________[Y<`````````@```&T$``#\_________^9<`````````@``
+M`&T$``#\_________W-=`````````@```&T$``#\_________YI=````````
+M`@```&T$``#\_________\%=`````````@```%D$``#\__________1=````
+M`````@```+H```#\_________RQ>`````````@```)<$``#\_________T!>
+M`````````@```$8```#\_________V%>`````````@```'````#\________
+M_VM>`````````@```(`$``#\_________Y)>````````"P````$```#P6@``
+M`````*9>`````````@```'@$``#\_________\I>`````````@```&T$``#\
+M_________^I>`````````@```&T$``#\_________PY?`````````@```&T$
+M``#\_________SI?`````````@```&T$``#\_________VE?`````````@``
+M`&T$``#\_________XM?`````````@```&T$``#\_________P!@````````
+M`@```&T$``#\_________RI@`````````@```&T$``#\_________UE@````
+M`````@```&T$``#\_________WM@`````````@```&T$``#\__________A@
+M`````````@```&T$``#\_________QIA`````````@```&T$``#\________
+M_ZAA`````````@```%D$``#\_________^%A`````````@```)<$``#\____
+M______5A`````````@```$8```#\_________P1B`````````@```-````#\
+M_________PYB`````````@```(`$``#\_________S)B````````"P````$`
+M``#06@```````$IB`````````@```'@$``#\_________W9B`````````@``
+M`&T$``#\_________YYB`````````@```&T$``#\_________\MB````````
+M`@```&T$``#\__________)B`````````@```&T$``#\_________R]C````
+M`````@```%D$``#\_________T]C`````````@```+H```#\_________X%C
+M`````````@```)<$``#\_________Z-C````````"P```,,`````````````
+M`+5C`````````@```'@$``#\_________^!C`````````@```&T$``#\____
+M_____P)D`````````@```&T$``#\_________[YD`````````@```&T$``#\
+M_________^MD`````````@```&T$``#\_________R%E`````````@```&T$
+M``#\_________U-E````````"P````4```!X`````````%UE`````````@``
+M`(P$``#\_________YAE`````````@```&\```#\__________=E````````
+M`@```#,```#\_________P)F`````````@```'H```#\_________ZUF````
+M`````@```'\```#\_________]!F`````````@```,@```#\_________P1G
+M`````````@```+H```#\_________Y]G`````````@```'\```#\________
+M_[UG`````````@```,@```#\_________PAH`````````@```+$```#\____
+M_____R1H`````````@```&\```#\_________T=I`````````@```&T$``#\
+M_________VMI`````````@```&T$``#\_________XAI`````````@```&T$
+M``#\__________MI`````````@```&T$``#\_________R%J`````````@``
+M`&T$``#\_________X=J`````````@```+,```#\_________]IJ````````
+M`@```&T$``#\_________P1K`````````@```&T$``#\_________SEK````
+M`````@```&T$``#\_________VYK`````````@```&\```#\_________WYK
+M`````````@```)<```#\_________W!L`````````@```#\```#\________
+M_ZIL`````````@```&`$``#\_________X9M`````````@```&`$``#\____
+M______!M`````````@```&`$``#\_________R%N`````````@```&T$``#\
+M_________U9N`````````@```&T$``#\_________Z9N`````````@```&T$
+M``#\_________WMO`````````@```&`$``#\_________]YP`````````@``
+M`&`$``#\_________X)Q`````````@```&`$``#\_________Y5Q````````
+M"P````,```!X"@```````"1R`````````@```(`$``#\_________X=R````
+M`````@```&T$``#\_________[%R`````````@```&T$``#\_________PES
+M`````````@```&T$``#\_________[)S`````````@```&T$``#\________
+M_RMT`````````@```/(```#\_________SMT`````````@```/(```#\____
+M______AT`````````@```'\```#\_________Q%U`````````@```,@```#\
+M_________\=U`````````@```*L```#\_________T)W`````````@```,L`
+M``#\_________U)W`````````@```%T```#\_________YUW`````````@``
+M`!````#\_________Q%X`````````@```'\```#\_________QQX````````
+M`@```*L```#\_________S5X`````````@```,@```#\_________Y5X````
+M`````@```+H```#\_________QYY`````````@```'T```#\_________UIY
+M`````````@```+H```#\_________P=Z`````````@```+H```#\________
+M_SIZ`````````@```%T```#\_________TYZ`````````@```"(```#\____
+M_____ZUZ`````````@```&T$``#\_________]1Z`````````@```)(```#\
+M_________XA[`````````@```%D$``#\_________Y1[`````````@```)4`
+M``#\_________[1[`````````@```+H```#\_________U=\`````````@``
+M`%T```#\_________XQ\`````````@```,X```#\_________Z%\````````
+M`@```)H```#\_________[1\````````"P````8````-`````````+Y\````
+M`````@```(P$``#\_________]-\`````````@```)<$``#\_________^A\
+M`````````@```)<$``#\__________]\`````````@```#4```#\________
+M_R1]`````````@```&T$``#\_________YM]`````````@```%<```#\____
+M_____Z=]`````````@```)D```#\_________^U]`````````@```%@```#\
+M__________I]`````````@````$!``#\_________T1^`````````@```+T`
+M``#\_________Z-^`````````@```&T$``#\_________\I^`````````@``
+M`&T$``#\_________]Q^`````````@````$!``#\_________R5_````````
+M`@```$8```#\_________S1_`````````@```-````#\_________SY_````
+M`````@```(`$``#\_________VQ_`````````@```,X```#\_________X%_
+M`````````@```)<$``#\_________Y9_`````````@```)<$``#\________
+M_ZU_`````````@```#4```#\_________[U_`````````@```&T$``#\____
+M_____QF``````````@```(H```#\_________U2``````````@```)<$``#\
+M_________]:``````````@```(H```#\_________PR!`````````@```(`$
+M``#\_________R2!`````````@```&T$``#\_________S^!`````````@``
+M`&T$``#\_________UN!`````````@```&T```#\_________V.!````````
+M`@```!(!``#\_________X>!`````````@```-0```#\_________Z*"````
+M`````@```&`$``#\_________\&"`````````@```&T$``#\__________6"
+M`````````@```&T$``#\_________T*#`````````@```&T$``#\________
+M_V>#````````"P````4```#(`````````'&#`````````@```(P$``#\____
+M_____XR#`````````@```#$```#\_________\:#`````````@```&T$``#\
+M_________^6#`````````@```&T$``#\_________P2$`````````@```&T$
+M``#\_________P^$`````````@```)<```#\_________RB$`````````@``
+M`&T$``#\_________Q.%`````````@```)@```#\_________R:%````````
+M`@```$$```#\_________S>%`````````@```%L```#\_________U&%````
+M`````@```%D$``#\_________V:%````````"P```#T``````````````'J%
+M`````````@```'@$``#\_________].%`````````@```%X```#\________
+M_^N%`````````@```&X```#\__________Z%`````````@```%L```#\____
+M_____TN&````````"P```.```````````````&R&`````````@```.8```#\
+M_________WR&`````````@```,\```#\_________X>&`````````@```-,`
+M``#\_________PN'`````````@```"````#\_________P"(`````````@``
+M``,!``#\_________SV(`````````@````,!``#\_________WJ(````````
+M`@```!$!``#\_________RZ*`````````@```)````#\_________VZ*````
+M`````@```)$```#\_________Z:*`````````@```!$!``#\_________RN,
+M`````````@```&`$``#\_________^^,`````````@```(4```#\________
+M_R^-`````````@```(4```#\_________W.-`````````@```((```#\____
+M_____X6-`````````@```#L```#\_________ZR-`````````@```!$!``#\
+M__________*-`````````@```&`$``#\__________^-`````````@```!P`
+M``#\_________Y*/`````````@```*,```#\_________Z*/`````````@``
+M`"8```#\_________[*/`````````@```.T```#\_________\*/````````
+M`@```)@```#\_________]R/`````````@```%D$``#\__________&/````
+M````"P```#T```````````````N0`````````@```'@$``#\_________S20
+M`````````@```+H```#\_________[60`````````@```$````#\________
+M__20`````````@```+H```#\_________SV1`````````@````@!``#\____
+M_____UV1`````````@```+X```#\_________VJ1`````````@```$0```#\
+M_________WN1`````````@```!$!``#\_________X^1`````````@```$$`
+M``#\_________YJ1`````````@```%L```#\_________\V1`````````@``
+M`!$!``#\_________S.2`````````@```%X```#\_________TN2````````
+M`@```&X```#\_________UZ2`````````@```%L```#\_________ZN2````
+M````"P```%$``````````````,R2`````````@```.8```#\_________]R2
+M`````````@```,\```#\_________^>2`````````@```-,```#\________
+M_VB3`````````@```%X```#\_________WR3`````````@```&X```#\____
+M_____X^3`````````@```%L```#\_________[&3`````````@```&`$``#\
+M__________*3````````"P```%$``````````````!24`````````@```.8`
+M``#\_________R.4`````````@```,\```#\_________RZ4`````````@``
+M`-,```#\__________25`````````@```"L```#\_________TZ6````````
+M`@```"L```#\_________WR6`````````@```"@```#\_________Z67````
+M`````@```$$```#\_________[>7`````````@```%L```#\_________^Z7
+M`````````@```&`$``#\_________R^8`````````@```$$```#\________
+M_SJ8`````````@```%L```#\_________Z"8`````````@```%X```#\____
+M_____[R8`````````@```&X```#\_________\^8`````````@```%L```#\
+M_________R*9````````"P```(,``````````````'"9`````````@```.8`
+M``#\_________X&9`````````@```,\```#\_________XR9`````````@``
+M`-,```#\__________^9`````````@```%X```#\_________Q.:````````
+M`@```&X```#\_________R::`````````@```%L```#\_________TB:````
+M`````@```&`$``#\_________Y6:````````"P```(,``````````````-Z:
+M`````````@```.8```#\_________^Z:`````````@```,\```#\________
+M__F:`````````@```-,```#\_________ZF;`````````@```&T$``#\____
+M_____XZ?`````````@```-L```#\_________Z.?`````````@```#8```#\
+M_________Q>@`````````@```+H```#\_________Q*A`````````@```/H`
+M``#\_________T2D````````"P```#$``````````````%ND`````````@``
+M`'@$``#\__________&D````````"P````(!``````````````BE````````
+M`@```'@$``#\_________U:E`````````@```%D$``#\_________W:E````
+M`````@```%D$``#\__________ZE`````````@```+H```#\_________Q&F
+M`````````@```/8```#\_________S"F````````"P```#$`````````````
+M`$BF`````````@```'@$``#\_________]ZF`````````@```+H```#\____
+M______&F`````````@```#,```#\_________PRG````````"P````(!````
+M`````````"2G`````````@```'@$``#\_________[&G`````````@```,0`
+M``#\__________RG`````````@```'\```#\_________R&H`````````@``
+M`'H```#\_________RRH`````````@```#,```#\_________^2H````````
+M`@```+H```#\__________6I`````````@```'\```#\_________SJJ````
+M`````@```'\```#\_________UZJ`````````@```!$```#\_________].J
+M`````````@```"X```#\_________^RJ`````````@```%(```#\________
+M_TNK`````````@```-X```#\_________P6L`````````@```'\```#\____
+M_____V6L`````````@```"X```#\_________WZL`````````@```%(```#\
+M_________^:L`````````@```%P```#\_________WJM`````````@```#X`
+M``#\_________^&M`````````@```"X```#\__________JM`````````@``
+M`%(```#\_________RRO`````````@```"X```#\_________T6O````````
+M`@```%(```#\_________SZP`````````@```+H```#\_________TFP````
+M`````@```+4```#\_________U&P`````````@```.,```#\_________YFP
+M`````````@```'@```#\_________]&P`````````@```+H```#\________
+M_SVQ`````````@```+H```#\_________YVQ`````````@```+H```#\____
+M______VQ`````````@```+H```#\_________V&R`````````@```+H```#\
+M_________R2T`````````@```+H```#\_________VRT`````````@```*T`
+M``#\_________WFT`````````@```%L```#\_________[*T`````````@``
+M``0!``#\_________^FT`````````@```$0```#\_________P.U````````
+M`@```.$```#\_________RJU`````````@```+H```#\_________WRU````
+M`````@```+X```#\_________Y&U`````````@```*T```#\_________YRU
+M`````````@```%L```#\__________6U`````````@```%X```#\________
+M_P6V`````````@```)T```#\_________UFV````````"P```/T`````````
+M`````&.V`````````@```.8```#\_________VZV`````````@```-,```#\
+M_________[RV`````````@```%X```#\_________\RV`````````@```)T`
+M``#\_________R2W````````"P```/T``````````````"ZW`````````@``
+M`.8```#\_________SFW`````````@```-,```#\_________Y6W````````
+M`@```%X```#\_________ZFW`````````@```)T```#\_________P6X````
+M````"P```/T```````````````^X`````````@```.8```#\_________QJX
+M`````````@```-,```#\_________R2X`````````@```(`$``#\________
+M_X6X`````````@```%X```#\_________Z2X`````````@```)T```#\____
+M_____[>X`````````@```%L```#\_________Q&Y````````"P```/T`````
+M`````````!NY`````````@```.8```#\_________R:Y`````````@```-,`
+M``#\_________TJZ`````````@```%L```#\_________\NZ`````````@``
+M`#8```#\_________]>Z`````````@```%L```#\_________T&[````````
+M`@```%X```#\_________]V[````````"P````$```!0N0```````.>[````
+M`````@```.8```#\__________*[`````````@```-,```#\_________VJ\
+M`````````@```%X```#\_________XB\`````````@```&X```#\________
+M_Z2\`````````@```%L```#\__________J\````````"P```/4`````````
+M``````>]`````````@```.8```#\_________QB]`````````@```,\```#\
+M_________R.]`````````@```-,```#\_________WJ]`````````@```%X`
+M``#\_________YB]`````````@```&X```#\_________[2]`````````@``
+M`%L```#\_________Q*^````````"P```/4``````````````!^^````````
+M`@```.8```#\_________S"^`````````@```,\```#\_________SN^````
+M`````@```-,```#\_________Y.^`````````@```%X```#\_________[2^
+M`````````@```&X```#\_________]"^`````````@```%L```#\________
+M_SJ_````````"P```/4``````````````$>_`````````@```.8```#\____
+M_____UB_`````````@```,\```#\_________V._`````````@```-,```#\
+M_________[J_`````````@```%X```#\_________]R_`````````@```&X`
+M``#\__________:_`````````@```%L```#\_________VK`````````"P``
+M`/4``````````````'O``````````@```.8```#\_________XK`````````
+M`@```,\```#\_________Y7``````````@```-,```#\_________^#`````
+M`````@```%X```#\_________Q[!`````````@```(<```#\_________RW!
+M`````````@```%L```#\_________T?!````````"P```/4`````````````
+M`%+!`````````@```-,```#\_________X/!````````"P````,```#8"@``
+M`````/+!`````````@```/D```#\_________SK"`````````@```&T$``#\
+M_________WC"`````````@```&T$``#\_________Z;"`````````@```&T$
+M``#\_________^+"`````````@```&T$``#\_________T+#`````````@``
+M`/D```#\_________W7#`````````@```&T$``#\_________Z[#````````
+M`@```&T$``#\_________]C#`````````@```&T$``#\_________QC$````
+M`````@```&T$``#\_________WS%`````````@```,L```#\_________];&
+M`````````@```$$```#\_________T7(`````````@```-,```#\________
+M_V_(`````````@```'<```#\_________WO(`````````@```'@```#\____
+M_____Y3(`````````@```,@```#\_________P7)`````````@```!$```#\
+M_________WK)`````````@```'H```#\__________;)`````````@```'\`
+M``#\_________P'*`````````@```*L```#\_________PS*`````````@``
+M`/H```#\_________SG*`````````@```%(```#\_________S[+````````
+M"P````<`````!````````(K+`````````@```-8```#\_________V/-````
+M`````@```(`$``#\_________V[-`````````@```%L```#\_________W[-
+M`````````@```.<```#\_________XK-`````````@```(`$``#\________
+M_Y7-`````````@```%L```#\_________^3-`````````@```%X```#\____
+M_____R3.````````"P```!D``````````````"_.`````````@```-,```#\
+M_________S_.`````````@```(`$``#\_________TO.`````````@```(`$
+M``#\_________W3/`````````@```$$```#\_________W_/`````````@``
+M`%L```#\_________\+/`````````@```.<```#\_________]7/````````
+M`@```$$```#\_________^?/`````````@```%L```#\_________R_0````
+M`````@```%X```#\_________T/0`````````@```&X```#\_________U;0
+M`````````@```%L```#\_________Z+0````````"P````$```!PS@``````
+M`*_0`````````@```.8```#\_________[[0`````````@```,\```#\____
+M_____\G0`````````@```-,```#\_________Q/1`````````@```%X```#\
+M_________U31````````"P```/4``````````````%_1`````````@```-,`
+M``#\_________Z#1`````````@```%X```#\_________[#1`````````@``
+M`&X```#\_________\K1`````````@```%L```#\_________PW2````````
+M"P```/4``````````````!C2`````````@```-,```#\_________U+2````
+M`````@```$8```#\_________X32`````````@```-````#\_________X[2
+M`````````@```(`$``#\_________[;2`````````@```)X```#\________
+M_]72`````````@```#<```#\_________Q33`````````@```,X```#\____
+M_____RG3`````````@```)H```#\_________SS3````````"P````8````C
+M`````````$;3`````````@```(P$``#\_________UO3`````````@```)<$
+M``#\_________W#3`````````@```)<$``#\_________[;3`````````@``
+M`#4```#\_________];3`````````@```+H```#\_________Q+4````````
+M`@````@!``#\_________R[5`````````@```"````#\_________V75````
+M`````@```!`!``#\_________\W5`````````@```!`!``#\_________TO6
+M`````````@```,````#\_________X;6`````````@```,````#\________
+M_]C6`````````@```,````#\_________Q/7`````````@```,````#\____
+M_____QO8````````"P````$```"0U0```````$O8`````````@```$,```#\
+M_________ZO8````````"P````$```"0U0```````-O8`````````@```$,`
+M``#\_________Z+9````````"P````$```"0U0```````-39`````````@``
+M`$,```#\_________ZS:````````"P````$```"0U0```````,[:````````
+M`@```$,```#\_________SW;````````"P````$```"0U0```````%[;````
+M`````@```$,```#\_________^S<`````````@````T!``#\_________V;=
+M`````````@```(0```#\_________[K=`````````@```,````#\________
+M_X#>`````````@```*0```#\_________U??`````````@```"````#\____
+M_____X3?`````````@```!X```#\_________Y[?`````````@```!L```#\
+M__________3@`````````@```!`!``#\_________\#B`````````@```)8`
+M``#\_________SKC`````````@```*0```#\_________\KC`````````@``
+M`,````#\__________;C`````````@```,````#\_________W3D````````
+M`@```'P```#\__________CD`````````@```,````#\_________YCG````
+M`````@```,````#\_________W/J`````````@```&T$``#\_________Y?J
+M`````````@```&T$``#\_________U/K`````````@```(`$``#\________
+M_W/K`````````@```&T$``#\_________Y?K`````````@```&T$``#\____
+M_____^#K`````````@```(`$``#\_________P#L`````````@```&T$``#\
+M_________R?L`````````@```&T$``#\_________W_L`````````@```(`$
+M``#\_________Y_L`````````@```&T$``#\_________[[L`````````@``
+M`&T$``#\_________P;M`````````@```(`$``#\_________TWM````````
+M`@```%<```#\_________V#M`````````@````@!``#\_________XOM````
+M`````@```)D```#\_________\[M`````````@```%@```#\___________M
+M`````````@```+D```#\_________PWN`````````@```(`$``#\________
+M_U3N`````````@```#4```#\_________W'N`````````@```-D```#\____
+M_____ZSN`````````@```(H```#\_________]+N`````````@```%D$``#\
+M_________]_N`````````@```)4```#\_________P3O`````````@```+H`
+M``#\_________R_O`````````@```,X```#\_________T3O`````````@``
+M`)H```#\_________UGO`````````@```)<$``#\_________V[O````````
+M`@```)<$``#\_________X;O`````````@```#4```#\_________Z_O````
+M`````@```+H```#\_________\'O`````````@```)D```#\_________P7P
+M`````````@```$0```#\_________W3P`````````@```+H```#\________
+M_]CP`````````@```$0```#\_________XKQ`````````@```"````#\____
+M_____S3R`````````@```+H```#\_________U3R`````````@```#H```#\
+M_________Y_R`````````@```"````#\_________T+S`````````@```)<$
+M``#\_________VWS`````````@```$8```#\_________WOS`````````@``
+M`-````#\_________X7S`````````@```(`$``#\_________ZWS````````
+M`@```)X```#\_________\;S`````````@```#<```#\__________3S````
+M`````@```,X```#\_________PGT`````````@```)H```#\_________Q[T
+M`````````@```)<$``#\_________S/T`````````@```)<$``#\________
+M_V'T`````````@```#4```#\_________];T`````````@```#H```#\____
+M_____^GT`````````@```(L```#\_________YOU`````````@```"````#\
+M_________\SU`````````@```)D```#\_________R7W`````````@```+X`
+M``#\_________T_W`````````@```$````#\_________V[W`````````@``
+M`!$!``#\_________][W`````````@```+H```#\___________W````````
+M`@```#H```#\_________TSX`````````@```#H```#\_________WSX````
+M`````@```#H```#\_________Y+X`````````@```"````#\_________\OX
+M`````````@```%D```#\_________^3Y`````````@```&0```#\________
+M_PGZ`````````@```+H```#\_________QWZ`````````@```$8```#\____
+M_____ROZ`````````@```-````#\_________S7Z`````````@```(`$``#\
+M_________V/Z`````````@```,X```#\_________WCZ`````````@```)H`
+M``#\_________Y'Z`````````@```)<$``#\_________Z;Z`````````@``
+M`)<$``#\_________\_Z`````````@```#4```#\_________^SZ````````
+M`@```*````#\_________T;[`````````@```(@```#\_________V'[````
+M`````@```#H```#\_________YC[`````````@```#H```#\_________\;[
+M`````````@```#H```#\_________]?[`````````@```%D```#\________
+M_^G[`````````@```,P```#\_________Q#\`````````@```%D```#\____
+M_____U;]`````````@```)D```#\_________V_^`````````@```+X```#\
+M_________X_^`````````@```$````#\_________]'^`````````@````@!
+M``#\_________Q'_`````````@```#H```#\_________S#_`````````@``
+M`$D```#\_________Y#_`````````@```"4```#\_________Z;_````````
+M"P```(8``````````````+'_`````````@```/X```#\_________[[_````
+M`````@```+<```#\_________\G_`````````@```"4```#\_________Y,!
+M`0``````"P````4```#H`````````)T!`0```````@```(P$``#\________
+M_PL"`0```````@```,P```#\_________\L"`0```````@```%8```#\____
+M_____SP#`0``````"P```(8``````````````$<#`0```````@```/X```#\
+M_________W\#`0``````"P````4````X`0```````(D#`0```````@```(P$
+M``#\_________YD#`0```````@````@!``#\_________\`#`0```````@``
+M`)D```#\_________PX$`0```````@```%8```#\_________R$$`0``````
+M`@```'$```#\_________U$$`0```````@```$````#\_________R<%`0``
+M`````@```,8```#\_________S0%`0```````@```*D```#\_________QT&
+M`0```````@````@!``#\_________WP&`0```````@```+H```#\________
+M_\D&`0```````@```+X```#\_________^T&`0```````@```$0```#\____
+M_____PT'`0```````@```$````#\_________[@'`0```````@```.L```#\
+M_________T8(`0```````@```+H```#\_________\((`0```````@```.L`
+M``#\_________UH)`0```````@```)<$``#\_________W0)`0```````@``
+M`)<$``#\_________Z0)`0```````@```.L```#\_________Q8*`0``````
+M`@```)<$``#\_________VL*`0```````@```)<$``#\_________Y$+`0``
+M`````@```*$```#\_________YX+`0```````@```-$```#\_________[`+
+M`0```````@```%H```#\_________\(+`0```````@```%H```#\________
+M_\\+`0```````@```/````#\_________]P+`0```````@```+\```#\____
+M_____^D+`0```````@```-@```#\__________D+`0```````@```-T```#\
+M_________R4,`0```````@```+H```#\_________WL,`0```````@```+X`
+M``#\_________YT,`0```````@```$0```#\_________[T,`0```````@``
+M`$````#\_________PP-`0```````@```!$!``#\_________R`-`0``````
+M"P````8````Y`````````"H-`0```````@```(P$``#\_________S<-`0``
+M`````@```!$!``#\_________U<-`0```````@```+H```#\_________YP-
+M`0```````@````@!``#\__________4.`0```````@```%@```#\________
+M__\.`0```````@```(`$``#\_________Q</`0```````@```%@```#\____
+M_____R$/`0```````@```(`$``#\_________\L/`0```````@```&T$``#\
+M_________^`/`0```````@```&T$``#\_________Q@0`0```````@```(`$
+M``#\_________S40`0```````@```$0```#\_________U$0`0```````@``
+M`+D```#\_________V<0`0```````@```+D```#\_________W40`0``````
+M`@```(`$``#\_________YT0`0```````@```&T$``#\_________\X0`0``
+M`````@```&T$``#\_________^X0`0```````@```&T$``#\_________PL1
+M`0```````@```(`$``#\_________QL1`0``````"P````4```!P`0``````
+M`"41`0```````@```(P$``#\_________T$1`0``````"P````8```!-````
+M`````$L1`0```````@```(P$``#\_________]81`0```````@```%8```#\
+M_________RH2`0```````@```(H```#\_________TP2`0```````@```+H`
+M``#\_________Y@2`0```````@```+X```#\_________[T2`0```````@``
+M`$0```#\_________]T2`0```````@```$````#\_________R$3`0``````
+M`@```(H```#\_________U03`0```````@````@!``#\_________V83`0``
+M`````@```!$!``#\_________Y03`0```````@```+H```#\_________^83
+M`0```````@```+X```#\_________PT4`0```````@```$0```#\________
+M_RT4`0```````@```$````#\_________V<4`0```````@```+H```#\____
+M_____ZT4`0```````@````@!``#\_________QX5`0``````"P````,```"8
+M"P```````'<5`0```````@```(H```#\_________X@5`0```````@```&T$
+M``#\_________Z@5`0```````@```*@```#\_________\05`0```````@``
+M`*@```#\_________^`5`0```````@```*@```#\__________P5`0``````
+M`@```*@```#\_________QT6`0```````@```)L```#\_________S\6`0``
+M`````@```)L```#\_________V$6`0```````@```)L```#\_________X,6
+M`0```````@```)L```#\_________[`6`0```````@```)L```#\________
+M_](6`0```````@```)L```#\_________^X6`0```````@```*@```#\____
+M_____PH7`0```````@```*@```#\_________R87`0```````@```*@```#\
+M_________U,7`0```````@```)L```#\_________V\7`0```````@```*@`
+M``#\_________\`7`0```````@```(`$``#\_________S,8`0```````@``
+M`&T$``#\_________TT8`0```````@```&T$``#\_________UX8`0``````
+M`@```(`$``#\_________VT8`0```````@```$0```#\_________WP8`0``
+M`````@```(`$``#\_________Y,8`0```````@```*@```#\_________YT8
+M`0```````@```(`$``#\_________[D8`0```````@```*@```#\________
+M_\,8`0```````@```(`$``#\__________`8`0```````@```)L```#\____
+M______H8`0```````@```(`$``#\_________Q,9`0```````@```*@```#\
+M_________QT9`0```````@```(`$``#\_________S89`0```````@```*@`
+M``#\_________T`9`0```````@```(`$``#\_________T<9`0```````@``
+M`&(```#\_________U,9`0```````@```,<```#\_________W(9`0``````
+M`@```)L```#\_________WL:`0```````@```"````#\_________Y<:`0``
+M`````@```"````#\_________P`;`0```````@```(\```#\_________R,<
+M`0```````@```(`$``#\_________]X<`0```````@```(`$``#\________
+M__T<`0```````@```&T$``#\_________QD=`0```````@```&T$``#\____
+M_____]P=`0```````@```(`$``#\__________(=`0```````@```&T$``#\
+M_________P(>`0```````@```&T$``#\_________YP>`0```````@```(`$
+M``#\_________[(>`0```````@```&T$``#\_________\(>`0```````@``
+M`&T$``#\_________W$?`0```````@```,(```#\_________[4?`0``````
+M`@```*\```#\_________]X?`0```````@```.P```#\__________(?`0``
+M`````@```,(```#\_________RD@`0```````@```&T$``#\_________T8@
+M`0```````@```&T$``#\_________WL@`0```````@```&T$``#\________
+M_Y@@`0```````@```&T$``#\_________^4@`0```````@```-\```#\____
+M_____P`A`0```````@```!4```#\_________VPA`0```````@```(`$``#\
+M_________XTA`0```````@```&T$``#\_________ZPA`0```````@```&T$
+M``#\_________\8B`0``````"P```!T``````````````/8B`0```````@``
+M`.H```#\_________Q@C`0```````@```,H```#\_________RDC`0``````
+M`@```/$```#\_________SLC`0```````@```/$```#\_________]4C`0``
+M`````@```&T$``#\__________@C`0```````@```&T$``#\_________RPD
+M`0```````@```(`$``#\_________T8D`0```````@```&T$``#\________
+M_Y(D`0```````@```&T$``#\__________DD`0```````@```&T$``#\____
+M_____VLE`0```````@```&T$``#\_________]`E`0```````@```(`$``#\
+M__________$E`0```````@```&T$``#\_________PXF`0```````@```&T$
+M``#\_________V,F`0```````@```%0```#\_________VTF`0```````@``
+M`%````#\_________Z\F`0```````@```(`$``#\_________R\G`0``````
+M`@```(`$``#\_________Z\G`0```````@```(`$``#\_________PHH`0``
+M`````@```'````#\_________Q0H`0```````@```(`$``#\_________S$H
+M`0```````@```&T$``#\_________TXH`0```````@```&T$``#\________
+M_\LH`0```````@```(`$``#\_________]<H`0```````@```&T```#\____
+M_____^LH`0```````@```!(!``#\__________DH`0```````@```&T$``#\
+M_________Q(I`0```````@```&T$``#\_________RXI`0```````@```&T$
+M``#\_________R4J`0```````@```&T$``#\_________R4L`0```````@``
+M`$$```#\_________S<L`0```````@```%L```#\_________Y`L`0``````
+M`@```$$```#\_________YLL`0```````@```%L```#\_________ZXL`0``
+M`````@```$````#\_________YDM`0```````@```&`$``#\_________^,M
+M`0``````"P````8```!C`````````.TM`0```````@```(P$``#\________
+M_P`N`0```````@```$$```#\_________PLN`0```````@```%L```#\____
+M_____R0N`0```````@```+H```#\_________XDN`0```````@```+H```#\
+M__________8N`0```````@```$````#\_________Z0O`0```````@```(`$
+M``#\_________R,P`0```````@```(`$``#\_________U\P`0```````@``
+M`(`$``#\_________W\P`0```````@```$$```#\_________XHP`0``````
+M`@```%L```#\_________Y@P`0```````@```',```#\_________U4Q`0``
+M`````@```(`$``#\_________X\Q`0```````@```(`$``#\_________Z\Q
+M`0```````@```$$```#\_________[HQ`0```````@```%L```#\________
+M_\@Q`0```````@```',```#\_________PHR`0```````@```(`$``#\____
+M_____U$R`0```````@```(`$``#\_________Z`R`0```````@```(`$``#\
+M_________],R`0```````@```$$```#\_________]XR`0```````@```%L`
+M``#\_________^DR`0```````@```$````#\_________S0T`0```````@``
+M`$$```#\_________S\T`0```````@```%L```#\_________]$T`0``````
+M`@```$0```#\_________^`T`0```````@```(`$``#\_________PTU`0``
+M`````@````0!``#\_________R(U`0```````@```$0```#\_________WHU
+M`0``````"P````4```"H`0```````(0U`0```````@```(P$``#\________
+M_Y8U`0```````@```+0```#\_________X$V`0```````@```$$```#\____
+M_____XPV`0```````@```%L```#\_________Z$V`0```````@```$$```#\
+M_________ZPV`0```````@```%L```#\_________[<V`0```````@```$0`
+M``#\_________^,W`0```````@```$$```#\_________^XW`0```````@``
+M`%L```#\_________S(X`0``````"P````4```#(`0```````#PX`0``````
+M`@```(P$``#\_________ULX`0```````@```#4```#\_________VPX`0``
+M`````@````@!``#\_________WPX`0```````@```(`$``#\_________X<X
+M`0```````@```%L```#\_________YPX`0```````@```%@```#\________
+M_Z@X`0```````@```(`$``#\_________[,X`0```````@```%L```#\____
+M_____[XX`0```````@```#P```#\_________P@Y`0```````@```%X```#\
+M_________W4Y`0``````"P````$````@,P$``````'PY`0``````"P`````!
+M`````````````)(Y`0```````@```-,```#\_________\LY`0```````@``
+M`%X```#\_________^<Y`0```````@```&X```#\_________P$Z`0``````
+M`@```%L```#\_________U8Z`0``````"P````$````@,P$``````&,Z`0``
+M`````@```.8```#\_________W,Z`0```````@```,\```#\_________WXZ
+M`0```````@```-,```#\_________U(]`0```````@```'8```#\________
+M_X\]`0```````@```%X```#\_________]T]`0``````"P````$````@,P$`
+M`````.L]`0```````@```-,```#\_________R\^`0```````@```%X```#\
+M_________WT^`0``````"P````$````@,P$``````(L^`0```````@```-,`
+M``#\_________\\^`0```````@```%X```#\_________Q4_`0``````"P``
+M``$````@,P$``````"`_`0```````@```-,```#\_________U\_`0``````
+M`@```%X```#\_________Z4_`0``````"P````$````@,P$``````+`_`0``
+M`````@```-,```#\_________^\_`0```````@```%X```#\_________T!`
+M`0``````"P````$````@,P$``````$M``0```````@```-,```#\________
+M_X]``0```````@```%X```#\_________]5``0``````"P````$````@,P$`
+M`````.!``0```````@```-,```#\_________Q]!`0```````@```%X```#\
+M_________V5!`0``````"P````$````@,P$``````'!!`0```````@```-,`
+M``#\_________\9!`0```````@```%X```#\_________P]"`0``````"P``
+M`(```````````````!9"`0``````"P```$4``````````````"E"`0``````
+M`@```-,```#\_________XY"`0```````@```%X```#\__________1"`0``
+M````"P```(```````````````/M"`0``````"P```$4```````````````Y#
+M`0```````@```-,```#\_________Z]$`0```````@```)L```#\________
+M_PE%`0```````@```$$```#\_________Q=%`0```````@```%L```#\____
+M_____RM%`0```````@```(H```#\_________TA%`0``````"P````,```!H
+M#````````&=%`0```````@```&T$``#\_________[5%`0```````@```&T$
+M``#\_________]U%`0```````@```&T$``#\_________RY&`0```````@``
+M`&T$``#\_________U%&`0```````@```&T$``#\_________ZY&`0``````
+M`@```&T$``#\_________^A&`0```````@```&T$``#\_________RU'`0``
+M`````@```(`$``#\_________UM'`0```````@```*`$``#\_________XM'
+M`0```````@```&T$``#\_________ZY'`0```````@```&T$``#\________
+M_[Q'`0```````@```*`$``#\_________SQ(`0```````@```+H```#\____
+M_____YA(`0```````@```,X```#\_________ZU(`0```````@```)H```#\
+M_________\-(`0```````@```)<$``#\_________]E(`0```````@```)<$
+M``#\__________I(`0```````@```#4```#\_________R-)`0```````@``
+M`&T$``#\_________T5)`0```````@```&T$``#\_________YA)`0``````
+M`@```+H```#\_________]%)`0```````@```)D```#\_________Q!*`0``
+M`````@```-````#\_________QI*`0```````@```(`$``#\_________U9*
+M`0```````@```&T$``#\_________WE*`0```````@```&T$``#\________
+M_Q=+`0```````@```$$```#\_________R)+`0```````@```%L```#\____
+M_____S%+`0```````@````@!``#\_________T]+`0```````@```$$```#\
+M_________UI+`0```````@```%L```#\_________V5+`0```````@```(H`
+M``#\__________9,`0```````@```$$```#\_________P=-`0```````@``
+M`%L```#\_________R%-`0```````@```/,```#\_________T9-`0``````
+M"P````,````X#0```````&1-`0```````@```&T$``#\_________X9-`0``
+M`````@```&T$``#\_________Q].`0```````@```+T```#\_________VQ.
+M`0```````@```&4```#\_________X=.`0```````@```+H```#\________
+M_[A.`0```````@```)<$``#\_________\U.`0```````@```$8```#\____
+M_____]Q.`0```````@```-````#\_________^9.`0```````@```(`$``#\
+M_________Q!/`0```````@```$$```#\_________QM/`0```````@```%L`
+M``#\_________RQ/`0```````@```*D```#\_________V-/`0```````@``
+M`+T```#\_________ZU/`0```````@```&4```#\_________\A/`0``````
+M`@```+H```#\__________E/`0```````@```)<$``#\_________PY0`0``
+M`````@```$8```#\_________QU0`0```````@```-````#\_________R=0
+M`0```````@```(`$``#\_________U%0`0```````@```$$```#\________
+M_UQ0`0```````@```%L```#\_________VU0`0```````@```*D```#\____
+M_____Y!0`0```````@```&T$``#\_________[)0`0```````@```&T$``#\
+M_________PE1`0```````@```-````#\_________Q-1`0```````@```(`$
+M``#\_________TY1`0```````@```&T$``#\_________W-1`0```````@``
+M`&T$``#\_________\I1`0```````@```+H```#\_________P-2`0``````
+M`@```)D```#\_________W)2`0```````@```&T$``#\_________Y!2`0``
+M`````@```&T$``#\_________\%2`0```````@```$$```#\_________\Q2
+M`0```````@```%L```#\_________]=2`0```````@```(H```#\________
+M_S]3`0```````@```&T$``#\_________Z94`0```````@```(`$``#\____
+M_____Y1<`0```````@```+H```#\_________^E<`0```````@```,4```#\
+M__________Y<`0```````@```&`$``#\_________Q5=`0```````@```#D`
+M``#\_________XA>`0```````@```'4```#\_________Y=>`0```````@``
+M`/\```#\_________X1?`0```````@```(`$``#\_________W!@`0``````
+M`@````L````>`````````'U@`0``````"P````L````@`````````(=@`0``
+M`````@```$T```#\_________[=@`0```````@````L````>`````````,1@
+M`0``````"P````L````@`````````,Y@`0```````@```$T```#\________
+M__-@`0```````@```'4```#\_________QEA`0```````@````L````<````
+M`````"5A`0``````"P````L````@`````````"]A`0```````@```$T```#\
+M_________W9A`0```````@```),```#\_________T%B`0```````@```&T$
+M``#\_________WIB`0```````@```&T$``#\_________Y)B`0```````@``
+M`!\```#\_________Z1B`0```````@```!\```#\_________[9B`0``````
+M`@```!\```#\_________\AB`0```````@```!\```#\_________]IB`0``
+M`````@```!\```#\_________^QB`0```````@```!\```#\__________YB
+M`0```````@```!\```#\_________Q!C`0```````@```!\```#\________
+M_W!C`0```````@```!\```#\__________9C`0```````@```*T```#\____
+M_____P=D`0```````@```%L```#\_________VED`0```````@```%X```#\
+M_________WED`0```````@```)T```#\_________]AD`0``````"P```"D`
+M`````````````.)D`0```````@```.8```#\_________^UD`0```````@``
+M`-,```#\_________T5E`0```````@```%X```#\_________UEE`0``````
+M`@```)T```#\__________!E`0```````@```&`$``#\_________QUF`0``
+M`````@```&`$``#\_________RAF`0``````"P```"D``````````````#9F
+M`0```````@```.8```#\_________T%F`0```````@```-,```#\________
+M_Y9F`0```````@```/L```#\_________Z1F`0```````@```-````#\____
+M_____ZYF`0```````@```(`$``#\_________^=F`0```````@```(P```#\
+M__________5F`0```````@```-````#\__________]F`0```````@```(`$
+M``#\_________R)G`0```````@```/L```#\_________S1G`0```````@``
+M`-````#\_________SYG`0```````@```(`$``#\_________XUG`0``````
+M`@```(P```#\_________[YI`0```````@```*X```#\_________ZAK`0``
+M`````@```*8```#\_________\%K`0```````@```*4```#\_________R%M
+M`0```````@```.(```#\_________[)M`0```````@```.(```#\________
+M_\%M`0```````@```&`$``#\__________9M`0```````@```(T```#\____
+M_____PMN`0``````"P```-P``````````````$MN`0```````@```*8```#\
+M_________UUN`0```````@```*4```#\__________YN`0```````@```(T`
+M``#\_________R%O`0```````@```(T```#\_________]]O`0```````@``
+M`-(```#\_________^]O`0```````@````\!``#\__________]O`0``````
+M`@```(X```#\_________U1P`0``````"P````,```!@#0```````&IR`0``
+M`````@```&T$``#\_________X9R`0```````@```(`$``#\_________UUS
+M`0```````@```&T$``#\_________]IS`0```````@```(`$``#\________
+M_]UT`0```````@```&T$``#\_________Q9U`0```````@```"H```#\____
+M______IW`0```````@```&T$``#\_________V]Y`0```````@```$L````$
+M`````````+-Y`0```````@```&T$``#\_________Q]Z`0```````@```-<`
+M```$`````````&-Z`0```````@```&T$``#\_________\]Z`0```````@``
+M`!T````$`````````!-[`0```````@```&T$``#\_________Z][`0``````
+M`@```&,````$`````````/-[`0```````@```&T$``#\_________X1\`0``
+M````"P```-<``````````````*-\`0``````"P```!T``````````````,%\
+M`0``````"P```$L``````````````.1\`0``````"P```&,`````````````
+M`*Y]`0```````@```-H```#\_________S=^`0```````@````<```"<!0``
+M`````$-^`0``````"P````<```#@!````````)A^`0``````"P```&``````
+M`````````)]^`0``````"P```&`````0`````````-%^`0``````"P```&``
+M```,`````````$E_`0``````"P```&`````0`````````,)_`0```````@``
+M`%H$``#\_________])_`0```````@````<```"<!0```````-]_`0``````
+M"P````<```#@!`````````V``0``````"P```&```````````````".``0``
+M````"P```&`````0`````````"J``0``````"P````<```#P!````````$6`
+M`0``````"P````<```#@!````````$^``0``````"P````<```#H!```````
+M`)J``0``````"P```&`````0`````````!R!`0```````@````<```"<!0``
+M`````'R!`0```````@````L```#?`````````(6!`0```````@````L```#<
+M`````````*.!`0```````@````<```"<!0```````*R!`0``````"P````<`
+M``#@!````````+.!`0``````"P````<```#P!````````-Z!`0```````@``
+M``<```"<!0````````""`0``````"P```&```````````````!."`0``````
+M"P```&`````<`````````!V"`0``````"P```&`````,`````````"6"`0``
+M````"P```&`````0`````````(*"`0``````"P```&`````<`````````!B#
+M`0```````@````L```#<`````````"&#`0```````@````L```#<````````
+M`+F$`0```````@```&@$``#\_________].$`0```````@```&@$``#\____
+M_____R>%`0```````@````<```"<!0```````#"%`0``````"P````<```#@
+M!````````#>%`0```````@````<```"<!0```````%:%`0``````"P````<`
+M``#P!````````*F%`0```````@```*0$``#\_________\B%`0```````@``
+M`)P$``#\__________6%`0```````@```"T```#\_________P2&`0``````
+M`@```"T```#\_________S"&`0```````@```-````#\_________T^&`0``
+M`````@```%D$``#\_________V2&`0``````"P```&$``````````````'>&
+M`0```````@```'@$``#\_________Z&&`0```````@```)D$``#\________
+M_\N&`0```````@````H!``#\_________].&`0```````@````H!``#\____
+M_____]N&`0```````@```!(```#\_________^R&`0```````@```!(```#\
+M__________V&`0```````@````X!``#\_________P>'`0```````@```(`$
+M``#\_________P^'`0```````@```,D```#\_________Q>'`0```````@``
+M`#@```#\_________RR'`0``````"P```&$``````````````$.'`0``````
+M`@```'@$``#\_________U"'`0```````@````@!``#\_________UV'`0``
+M`````@````@!``#\_________UN(`0```````@```$T```#\_________VF(
+M`0```````@```(`$``#\_________WZ(`0```````@```.\```#\________
+M_[*(`0``````"P````8```!W`````````+R(`0```````@```(P$``#\____
+M_____W"*`0``````"P```$@``````````````'6*`0```````@```%($``#\
+M_________[V+`0``````"P````4``````@```````,>+`0```````@```(P$
+M``#\__________>+`0```````@```%D$``#\_________PR,`0``````"P``
+M``$````0BP$``````"",`0```````@```'@$``#\__________:-`0``````
+M`@```#<```#\_________QR.`0```````@```)X```#\_________T>.`0``
+M`````@```+H```#\_________[B.`0```````@```+H```#\_________QF/
+M`0```````@```)<$``#\_________Y>/`0```````@```+H```#\________
+M_P*0`0```````@```)<$``#\_________R.1`0```````@```&P```#\____
+M_____SB1`0```````@```)H```#\_________[62`0```````@```+X```#\
+M_________P&3`0```````@```+H```#\_________TV3`0```````@```$0`
+M``#\_________Z>3`0```````@```'````#\_________\N3`0```````@``
+M`$````#\_________^F3`0```````@```+H```#\_________S>4`0``````
+M`@```.L```#\_________Q&5`0```````@```$8```#\_________TR5`0``
+M`````@```+X```#\_________W65`0```````@```$0```#\_________ZZ5
+M`0```````@```$````#\_________V>6`0```````@```$$```#\________
+M_W>6`0```````@```%L```#\_________Q.7`0```````@```%X```#\____
+M_____T*9`0```````@```&`$``#\_________QF;`0``````"P````$```#@
+ME0$``````)B;`0```````@```&@```#\_________Z6;`0```````@```.8`
+M``#\_________[.;`0```````@```,\```#\_________\V;`0```````@``
+M`&X```#\_________S:<`0```````@```&`$``#\_________Y*<`0``````
+M`@```&`$``#\_________[&<`0```````@```.8```#\_________\:<`0``
+M`````@```,\```#\_________]R<`0```````@```-,```#\_________^F<
+M`0```````@```%L```#\_________YR=`0```````@```%X```#\________
+M_[2=`0```````@```&X```#\_________\F=`0```````@```%L```#\____
+M_____^J=`0```````@```)<$``#\_________P*>`0```````@```$8```#\
+M_________TF>`0```````@```&`$``#\_________R6?`0```````@```&@`
+M``#\_________V^?`0``````"P````$`````BP$``````'Z?`0```````@``
+M`.8```#\_________Y2?`0```````@```,\```#\_________Z:?`0``````
+M`@```-,```#\_________]R?`0```````@```$8```#\_________^V?`0``
+M`````@```(`$``#\__________6?`0```````@```-````#\_________TZ@
+M`0```````@```&`$``#\_________V&@`0```````@```$$```#\________
+M_VR@`0```````@```%L```#\_________X2@`0```````@```)<$``#\____
+M_____]V@`0```````@```!,```#\_________^Z@`0```````@```!,```#\
+M_________Q6A`0```````@```-````#\_________RBT`0``````"P```)\`
+M`````````````.&U`0```````@```%X```#\_________SZV`0``````"P``
+M``$`````BP$``````$FV`0```````@```-,```#\_________XFV`0``````
+M`@```$8```#\_________YVV`0```````@```(`$``#\_________Z6V`0``
+M`````@```-````#\_________]ZV`0```````@```%L```#\_________V2W
+M`0```````@```%X```#\_________^2W`0``````"P````$`````BP$`````
+M`.^W`0```````@```-,```#\_________RFX`0```````@```$8```#\____
+M_____SVX`0```````@```(`$``#\_________T6X`0```````@```-````#\
+M_________X6X`0```````@```&X```#\_________PVY`0``````"P````$`
+M````BP$``````!RY`0```````@```.8```#\_________S*Y`0```````@``
+M`,\```#\_________SVY`0```````@```-,```#\_________W:Y`0``````
+M`@```$8```#\_________X>Y`0```````@```(`$``#\_________X^Y`0``
+M`````@```-````#\_________\&Y`0```````@```$$```#\_________]&Y
+M`0```````@```%L```#\_________]FY`0```````@```%X```#\________
+M_^ZY`0```````@```$$```#\_________^NZ`0``````"P````$`````BP$`
+M`````/JZ`0```````@```.8```#\_________Q"[`0```````@```,\```#\
+M_________QN[`0```````@```-,```#\_________U2[`0```````@```$8`
+M``#\_________V6[`0```````@```(`$``#\_________VV[`0```````@``
+M`-````#\_________Z:[`0```````@```$$```#\_________[>[`0``````
+M`@```%L```#\_________S:\`0```````@```)<$``#\_________TN\`0``
+M`````@```$8```#\_________UN\`0```````@```(`$``#\_________V.\
+M`0```````@```-````#\_________YN\`0```````@```)<$``#\________
+M_P&]`0```````@```#<```#\_________R*]`0```````@```)X```#\____
+M_____SB]`0```````@```)H```#\_________Z:]`0```````@```%X```#\
+M_________PJ^`0``````"P````$`````BP$``````!6^`0```````@```-,`
+M``#\_________TZ^`0```````@```$8```#\_________U^^`0```````@``
+M`(`$``#\_________V>^`0```````@```-````#\_________ZV^`0``````
+M`@```%L```#\__________6^`0``````"P````,```"(#@````````R_`0``
+M`````@```&P```#\_________SR_`0```````@```.4```#\_________U>_
+M`0```````@```",```#\_________V>_`0```````@```.@```#\________
+M_T7``0```````@```$H```#\_________UC``0```````@```$H```#\____
+M_____V7``0```````@```$H```#\_________WC``0```````@```$H```#\
+M_________[/``0```````@```'4$``#\_________\K``0```````@```'4$
+M``#\_________^/``0```````@```'4$``#\_________U;!`0```````@``
+M`'X```#\_________W;!`0```````@```'\$``#\_________XG!`0``````
+M`@```'\$``#\_________ZS!`0```````@```'\$``#\_________[_!`0``
+M`````@```'\$``#\_________]_!`0```````@```'\$``#\__________+!
+M`0```````@```'\$``#\_________Q+"`0```````@```'\$``#\________
+M_R7"`0```````@```'\$``#\_________U;"`0```````@```'\$``#\____
+M_____VK"`0```````@```'\$``#\_________Y/"`0```````@```'\$``#\
+M_________Z;"`0```````@```'\$``#\_________\S"`0```````@```'\$
+M``#\_________]_"`0```````@```'\$``#\___________"`0```````@``
+M`'\$``#\_________Q+#`0```````@```'\$``#\_________S+#`0``````
+M`@```'\$``#\_________T7#`0```````@```'\$``#\_________VS#`0``
+M`````@```'\$``#\_________W_#`0```````@```'\$``#\_________Y_#
+M`0```````@```'\$``#\_________[+#`0```````@```'\$``#\________
+M_]+#`0```````@```'\$``#\_________^7#`0```````@```'\$``#\____
+M_____PS$`0```````@```'\$``#\_________Q_$`0```````@```'\$``#\
+M_________S_$`0```````@```'\$``#\_________U+$`0```````@```'\$
+M``#\_________W+$`0```````@```'\$``#\_________X7$`0```````@``
+M`'\$``#\_________ZS$`0```````@```'\$``#\_________[_$`0``````
+M`@```'\$``#\_________]_$`0```````@```'\$``#\__________+$`0``
+M`````@```'\$``#\_________Q+%`0```````@```'\$``#\_________R7%
+M`0```````@```'\$``#\_________U3%`0```````@```+$$``#\________
+M_V[%`0```````@```+$$``#\_________Y;%`0```````@```+$$``#\____
+M_____[#%`0```````@```+$$``#\_________]C%`0```````@```+$$``#\
+M__________+%`0```````@```+$$``#\_________QK&`0```````@```+$$
+M``#\_________S3&`0```````@```+$$``#\_________US&`0```````@``
+M`+$$``#\_________W;&`0```````@```+$$``#\_________Z3&`0``````
+M`@```+$$``#\_________[[&`0```````@```+$$``#\_________^;&`0``
+M`````@```+$$``#\_________P#'`0```````@```+$$``#\_________R+'
+M`0```````@```!(```#\_________S''`0```````@```!(```#\________
+M_SG'`0```````@````X!``#\_________T/'`0```````@```(`$``#\____
+M_____TO'`0```````@```,D```#\_________U/'`0```````@```#@```#\
+M_________V#'`0```````@```!,```#\_________VW'`0```````@```!,`
+M``#\_________X?'`0``````"P````<```#`!0```````(S'`0```````@``
+M`$\$``#\_________S_(`0```````@````P"``#\_________V;(`0``````
+M`@```!<"``#\_________X/(`0```````@````,"``#\_________][(`0``
+M`````@```(L!``#\_________^[(`0```````@````<"``#\__________'*
+M`0```````@```&`$``#\_________SC,`0```````@```'T!``#\________
+M_T_/`0``````"P````4```!8`@```````%G/`0```````@```(P$``#\____
+M_____V3/`0``````"P````8```"8`````````&[/`0```````@```(P$``#\
+M_________Y+/`0``````"P````<`````!P```````,O/`0```````@```&T$
+M``#\_________QS0`0```````@```&T$``#\_________V#0`0```````@``
+M`&T$``#\_________WK0`0```````@```&T$``#\_________\70`0``````
+M`@```&T$``#\_________]_0`0```````@```&T$``#\_________R[1`0``
+M`````@```&T$``#\_________S_1`0```````@```&T$``#\_________X/1
+M`0```````@```(`$``#\_________YS1`0```````@```&T$``#\________
+M_[;1`0```````@```&T$``#\_________SO2`0```````@```&T$``#\____
+M_____U72`0```````@```&T$``#\_________XG2`0```````@```(`$``#\
+M_________ZO2`0```````@```&T$``#\_________\72`0```````@```&T$
+M``#\_________P[3`0```````@```&T$``#\_________Q_3`0```````@``
+M`&T$``#\_________V/3`0```````@```(`$``#\_________WS3`0``````
+M`@```&T$``#\_________Y;3`0```````@```&T$``#\_________PG4`0``
+M`````@```&T$``#\_________R/4`0```````@```&T$``#\_________WW4
+M`0```````@```&T$``#\_________^W4`0```````@```&T$``#\________
+M_VC5`0```````@```*T!``#\_________W+5`0```````@```(`$``#\____
+M_____WS5`0```````@```$0!``#\_________Z;5`0```````@```&T$``#\
+M_________\75`0```````@```&T$``#\_________]S5`0```````@```&T$
+M``#\_________P+6`0```````@```&T$``#\_________V_6`0```````@``
+M`(`$``#\_________R37`0```````@```(`$``#\_________Q78`0``````
+M`@```"8!``#\_________RG8`0```````@```",!``#\_________TO8`0``
+M`````@```(T$``#\_________VW8`0```````@```(T$``#\_________X_8
+M`0```````@```(T$``#\_________Z[8`0```````@```(T$``#\________
+M_]#8`0```````@```(T$``#\__________W8`0```````@```(T$``#\____
+M_____Q?9`0```````@```(T$``#\_________S'9`0```````@```(T$``#\
+M_________U#9`0```````@```(T$``#\_________W/9`0```````@```(T$
+M``#\_________Y;9`0```````@```(T$``#\_________[39`0```````@``
+M`(T$``#\_________]+9`0```````@```(T$``#\__________#9`0``````
+M`@```(T$``#\_________P[:`0```````@```(T$``#\_________RO:`0``
+M`````@```(T$``#\_________T[:`0```````@```(T$``#\_________V?:
+M`0```````@```(T$``#\_________XS:`0```````@```%X$``#\________
+M_ZS:`0```````@```%X$``#\_________]3:`0```````@```%X$``#\____
+M______G:`0```````@```%X$``#\_________Q[;`0```````@```%X$``#\
+M_________T';`0```````@```%X$``#\_________VS;`0```````@```%X$
+M``#\__________W<`0```````@```"8!``#\_________Y+=`0```````@``
+M`(\$``#\_________\C=`0```````@```(\$``#\__________[=`0``````
+M`@```(\$``#\_________S3>`0```````@```(\$``#\_________V3>`0``
+M`````@```(\$``#\_________WG>`0```````@```(\$``#\_________Y'>
+M`0```````@```(\$``#\__________G>`0```````@```(\$``#\________
+M_TC?`0```````@```(\$``#\_________Y??`0```````@```(\$``#\____
+M_____^G?`0```````@```(\$``#\_________TO@`0```````@```(\$``#\
+M_________W_@`0```````@```(\$``#\_________ZW@`0```````@```(`!
+M``#\_________[K@`0```````@```(\$``#\_________^G@`0```````@``
+M`#<!``#\__________;@`0```````@```(\$``#\_________R7A`0``````
+M`@```#<!``#\_________S+A`0```````@```(\$``#\_________V'A`0``
+M`````@```#<!``#\_________V[A`0```````@```(\$``#\_________Z'A
+M`0```````@```#<!``#\_________Z[A`0```````@```(\$``#\________
+M_PWB`0```````@```)P!``#\_________Q'E`0```````@```)H$``#\____
+M_____R[E`0```````@```)H$``#\_________TOE`0```````@```)H$``#\
+M_________VCE`0```````@```)H$``#\_________X7E`0```````@```)H$
+M``#\_________Z+E`0```````@```)H$``#\_________]'E`0```````@``
+M`-(!``#\_________Q[F`0```````@```)H$``#\_________TWF`0``````
+M`@```-(!``#\__________CF`0```````@```-(!``#\_________RKG`0``
+M`````@```)<$``#\_________S[G`0```````@```!H!``#\_________TSG
+M`0```````@```,`!``#\_________U;G`0```````@```(`$``#\________
+M_WSG`0```````@````8"``#\_________QKH`0```````@```(P!``#\____
+M_____S7H`0```````@```*`!``#\_________PWI`0```````@```*\!``#\
+M_________XCI`0```````@```&X!``#\__________7M`0```````@```!@"
+M``#\_________USN`0```````@```"(!``#\_________Y#N`0```````@``
+M`*\!``#\_________S#O`0``````"P````,```#@#@```````$/O`0``````
+M`@```&0!``#\_________V_O`0```````@```&0!``#\_________Y?O`0``
+M`````@```&0!``#\_________[_O`0```````@```&0!``#\__________GO
+M`0```````@```%P!``#\_________S[P`0```````@```&H!``#\________
+M_]KQ`0```````@```)0!``#\_________P3R`0```````@```(`$``#\____
+M_____Y#T`0```````@```'X!``#\_________Y_T`0```````@```'4!``#\
+M_________V7U`0```````@```*<!``#\__________?U`0```````@```!T!
+M``#\_________Q3V`0```````@```*<!``#\_________\3W`0```````@``
+M`$T!``#\_________^;W`0```````@```'`!``#\_________UGX`0``````
+M`@```$T!``#\_________Y3X`0```````@```'`!``#\_________Y_Z`0``
+M`````@```*@!``#\_________]?Z`0``````"P````,````P#P```````(W[
+M`0```````@```&`$``#\_________ZG[`0``````"P````,```#0$P``````
+M`%+\`0```````@```!<!``#\_________V+\`0```````@```!<!``#\____
+M_______\`0```````@```$T!``#\_________SK]`0```````@```'`!``#\
+M_________ZW]`0```````@```+T!``#\_________^3]`0```````@```*L!
+M``#\_________P#^`0```````@```+T!``#\_________P_^`0```````@``
+M`,8!``#\_________RO^`0```````@```+T!``#\_________W+^`0``````
+M`@```-4!``#\_________]3^`0```````@```+T!``#\_________^W^`0``
+M`````@```-4!``#\_________RD``@```````@```(T!``#\_________S<`
+M`@```````@```.$!``#\_________Z,``@```````@```-(!``#\________
+M_[(``@```````@```-T!``#\_________S<!`@``````"P````$````@_P$`
+M`````$$!`@```````@```(L!``#\_________TP!`@```````@```,,!``#\
+M_________^H!`@```````@```&T$``#\_________PP"`@```````@```&L!
+M``#\_________QP"`@```````@```,0!``#\_________SX"`@```````@``
+M`&L!``#\_________T8"`@```````@```"<!``#\_________V4"`@``````
+M"P````,````P&0```````'P"`@```````@```'(!``#\_________Y@"`@``
+M`````@```'(!``#\_________[0"`@```````@```!H!``#\_________]8"
+M`@```````@```!8!``#\_________^T"`@```````@```(,!``#\________
+M_Q`#`@```````@```!H!``#\_________RL#`@```````@```!8!``#\____
+M_____T(#`@```````@```!H!``#\_________U0#`@```````@```(,!``#\
+M_________VD#`@```````@```!H!``#\_________YP#`@```````@```,`!
+M``#\_________Z8#`@```````@```(`$``#\_________QD$`@```````@``
+M`+8!``#\_________S($`@```````@```"`!``#\_________UD$`@``````
+M`@```(8!``#\_________VX$`@```````@```)4!``#\_________X$$`@``
+M````"P````8```"E`````````(L$`@```````@```(P$``#\_________Z$$
+M`@```````@```)<$``#\_________[<$`@```````@```)<$``#\________
+M_\H$`@```````@```$,!``#\_________^H$`@```````@```-(!``#\____
+M_____R<%`@```````@````X"``#\_________]H%`@```````@```#X!``#\
+M__________T%`@```````@```#0!``#\_________R4&`@```````@```(P!
+M``#\_________TX&`@```````@```/<!``#\_________U8&`@```````@``
+M`(P!``#\_________Z,&`@```````@```#0!``#\_________^L&`@``````
+M`@```!8!``#\_________Q0'`@```````@```-(!``#\_________T4'`@``
+M`````@```)<$``#\_________UP'`@```````@```!H!``#\_________W<'
+M`@```````@```,`!``#\_________X$'`@```````@```(`$``#\________
+M_[<'`@```````@```/(!``#\_________P`(`@``````"P````4```"P`@``
+M``````H(`@```````@```(P$``#\_________QH(`@```````@```!H!``#\
+M_________X<(`@```````@```,`!``#\_________Y$(`@```````@```(`$
+M``#\_________]4(`@```````@```+8!``#\__________4(`@```````@``
+M`"`!``#\_________QX)`@```````@```(8!``#\_________S,)`@``````
+M`@```)4!``#\_________T8)`@``````"P````8```"E`````````%`)`@``
+M`````@```(P$``#\_________V4)`@```````@```)<$``#\_________WH)
+M`@```````@```)<$``#\_________XT)`@```````@```$,!``#\________
+M_Y\)`@```````@```!H!``#\_________Z<)`@```````@```(P!``#\____
+M_____TD*`@```````@```+$!``#\_________VL*`@```````@```#0!``#\
+M_________Y,*`@```````@```(P!``#\_________[<*`@```````@```/<!
+M``#\_________[\*`@```````@```(P!``#\_________^(*`@```````@``
+M`#0!``#\_________Q0+`@```````@```!H!``#\_________R8+`@``````
+M`@```(,!``#\_________T0+`@```````@```-(!``#\_________W<+`@``
+M`````@```)<$``#\_________XP+`@```````@```!H!``#\_________YH+
+M`@```````@```,`!``#\_________Z0+`@```````@```(`$``#\________
+M_\4+`@```````@```(@!``#\_________^@+`@```````@```#0!``#\____
+M_____R0,`@```````@```-(!``#\_________T,,`@```````@```)<$``#\
+M_________UP,`@```````@```!H!``#\_________VH,`@```````@```,`!
+M``#\_________W0,`@```````@```(`$``#\_________YL,`@```````@``
+M`(8!``#\_________[`,`@```````@```)4!``#\_________\4,`@``````
+M`@```)<$``#\_________]H,`@```````@```)<$``#\_________^T,`@``
+M`````@```$,!``#\_________PP-`@```````@```!H!``#\_________Q<-
+M`@```````@```$X!``#\_________R\-`@```````@```&T$``#\________
+M_W<-`@```````@```$P!``#\_________X(-`@```````@```,$!``#\____
+M_____\\-`@```````@```*$!``#\__________L-`@```````@```-(!``#\
+M_________YL.`@```````@```)8!``#\_________Z</`@```````@```#0!
+M``#\_________]@/`@```````@```#\!``#\__________$/`@```````@``
+M`"$!``#\_________RL0`@```````@```.0!``#\_________UP0`@``````
+M`@```-H!``#\_________X(0`@```````@```-(!``#\_________RH1`@``
+M`````@```)8!``#\_________SD2`@```````@```#\!``#\_________VL2
+M`@```````@```)<!``#\_________[L2`@```````@```-(!``#\________
+M_\T2`@```````@```)`!``#\_________V(3`@```````@```/<!``#\____
+M______$3`@```````@```/<!``#\__________X3`@```````@```!0!``#\
+M_________RD4`@```````@```/<!``#\_________T<4`@```````@```#0!
+M``#\_________VT4`@```````@```*0!``#\_________P(5`@```````@``
+M`&T$``#\_________R85`@```````@```(`$``#\_________U05`@``````
+M`@```&T$``#\_________W05`@```````@```&T$``#\__________45`@``
+M`````@```(`$``#\_________VL6`@```````@```$L!``#\_________X<6
+M`@```````@```(H!``#\_________Y06`@```````@```$P!``#\________
+M_\,6`@```````@```,$!``#\__________06`@```````@```.,!``#\____
+M_____QX7`@```````@```$P!``#\_________]D7`@```````@```(`$``#\
+M_________SX8`@```````@```&T$``#\_________V`8`@```````@```(`$
+M``#\_________XP8`@```````@```&T$``#\_________ZL8`@```````@``
+M`&T$``#\_________P<9`@```````@```-(!``#\_________Y$9`@``````
+M`@```!H!``#\_________[X9`@```````@```!H!``#\_________\L9`@``
+M`````@```$P!``#\_________PP:`@```````@```-(!``#\_________R@:
+M`@```````@```-(!``#\_________TD:`@```````@```%D$``#\________
+M_V@:`@```````@```,`!``#\_________W(:`@```````@```(`$``#\____
+M_____R,;`@```````@```,0!``#\_________T<;`@```````@```(8!``#\
+M_________UP;`@```````@```)4!``#\_________V\;`@``````"P````8`
+M``"E`````````'D;`@```````@```(P$``#\_________XX;`@```````@``
+M`)<$``#\_________Z,;`@```````@```)<$``#\_________[\;`@``````
+M`@```$,!``#\_________]X;`@```````@```/D!``#\_________P@<`@``
+M`````@```-(!``#\_________R@<`@```````@```,`!``#\_________S(<
+M`@```````@```(`$``#\_________W,<`@```````@```(8!``#\________
+M_X@<`@```````@```)4!``#\_________YL<`@``````"P````8```"E````
+M`````*4<`@```````@```(P$``#\_________[H<`@```````@```)<$``#\
+M_________\\<`@```````@```)<$``#\_________^8<`@```````@```$,!
+M``#\__________X<`@```````@```,$!``#\_________W(=`@```````@``
+M`&T$``#\_________Y<=`@```````@```(`$``#\_________\,=`@``````
+M`@```&T$``#\_________^(=`@```````@```&T$``#\_________[<>`@``
+M````"P```)$!`````````````+\>`@```````@```-D!``#\_________UD?
+M`@```````@```"H!``#\_________WH?`@```````@```-(!``#\________
+M_P`@`@```````@```($!``#\_________S4@`@```````@```/(!``#\____
+M_____VX@`@```````@```"P!``#\_________X4@`@```````@```)<$``#\
+M_________YT@`@```````@```)<$``#\_________]8@`@```````@```(`$
+M``#\_________^T@`@```````@```&T$``#\_________PTA`@```````@``
+M`&T$``#\_________RDA`@```````@```$P!``#\_________S$A`@``````
+M`@```%T!``#\_________WHA`@```````@```$L!``#\_________]<A`@``
+M`````@```-(!``#\_________TDB`@```````@```,T!``#\_________U@B
+M`@```````@```.8!``#\_________X0B`@```````@```/$!``#\________
+M_]PB`@```````@```&T$``#\_________PDC`@```````@```&T$``#\____
+M_____QXC`@```````@````L"``#\_________RLC`@```````@```"\!``#\
+M_________TLC`@```````@```&T$``#\_________ULC`@```````@```&T$
+M``#\_________VLC`@```````@```&T$``#\_________WLC`@```````@``
+M`&T$``#\_________^LC`@```````@```&T$``#\_________Q(D`@``````
+M`@```&T$``#\_________R$D`@```````@```#8!``#\_________UXD`@``
+M`````@```&T$``#\_________X8D`@```````@```&T$``#\_________Q,E
+M`@```````@```&T$``#\_________SHE`@```````@```&T$``#\________
+M_V$E`@```````@```%D$``#\_________Y0E`@```````@```-(!``#\____
+M_____\PE`@```````@```)<$``#\_________^`E`@```````@```!H!``#\
+M_________P$F`@```````@```',!``#\_________PLF`@```````@```(`$
+M``#\_________S(F`@``````"P````$```"0(@(``````$8F`@```````@``
+M`'@$``#\_________VHF`@```````@```&T$``#\_________XHF`@``````
+M`@```&T$``#\_________ZXF`@```````@```&T$``#\_________]HF`@``
+M`````@```&T$``#\_________PDG`@```````@```&T$``#\_________RLG
+M`@```````@```&T$``#\_________Z`G`@```````@```&T$``#\________
+M_\HG`@```````@```&T$``#\__________DG`@```````@```&T$``#\____
+M_____QLH`@```````@```&T$``#\_________Y@H`@```````@```&T$``#\
+M_________[HH`@```````@```&T$``#\_________T@I`@```````@```%D$
+M``#\_________X$I`@```````@```)<$``#\_________Y4I`@```````@``
+M`!H!``#\_________Z0I`@```````@```,`!``#\_________ZXI`@``````
+M`@```(`$``#\_________](I`@``````"P````$```!P(@(``````.HI`@``
+M`````@```'@$``#\_________Q8J`@```````@```&T$``#\_________SXJ
+M`@```````@```&T$``#\_________VLJ`@```````@```&T$``#\________
+M_Y(J`@```````@```&T$``#\_________\\J`@```````@```%D$``#\____
+M_____^\J`@```````@```-(!``#\_________R$K`@```````@```)<$``#\
+M_________T,K`@``````"P```"H!`````````````%4K`@```````@```'@$
+M``#\_________X`K`@```````@```&T$``#\_________Z(K`@```````@``
+M`&T$``#\_________UXL`@```````@```&T$``#\_________XLL`@``````
+M`@```&T$``#\_________\$L`@```````@```&T$``#\__________,L`@``
+M````"P````4```#0`@```````/TL`@```````@```(P$``#\_________S@M
+M`@```````@```.L!``#\_________Y<M`@```````@```*$!``#\________
+M_Z(M`@```````@```#X!``#\_________TTN`@```````@```#\!``#\____
+M_____W`N`@```````@```#0!``#\_________Z0N`@```````@```-(!``#\
+M_________S\O`@```````@```#\!``#\_________UTO`@```````@```#0!
+M``#\_________Z@O`@```````@```.0!``#\_________\0O`@```````@``
+M`.L!``#\_________^<P`@```````@```&T$``#\_________PLQ`@``````
+M`@```&T$``#\_________R@Q`@```````@```&T$``#\_________YLQ`@``
+M`````@```&T$``#\_________\$Q`@```````@```&T$``#\_________R<R
+M`@```````@```"$!``#\_________WHR`@```````@```&T$``#\________
+M_Z0R`@```````@```&T$``#\_________]DR`@```````@```&T$``#\____
+M_____PXS`@```````@```.L!``#\_________QXS`@```````@```&T!``#\
+M_________Q`T`@```````@```*X!``#\_________THT`@```````@```&`$
+M``#\_________R8U`@```````@```&`$``#\_________Y`U`@```````@``
+M`&`$``#\_________\$U`@```````@```&T$``#\__________8U`@``````
+M`@```&T$``#\_________T8V`@```````@```&T$``#\_________QLW`@``
+M`````@```&`$``#\_________WXX`@```````@```&`$``#\_________R(Y
+M`@```````@```&`$``#\_________S4Y`@``````"P````,```!8&0``````
+M`,0Y`@```````@```(`$``#\_________R<Z`@```````@```&T$``#\____
+M_____U$Z`@```````@```&T$``#\_________ZDZ`@```````@```&T$``#\
+M_________U([`@```````@```&T$``#\_________\L[`@```````@```.\!
+M``#\_________]L[`@```````@```.\!``#\_________Y@\`@```````@``
+M`#\!``#\_________[$\`@```````@```#0!``#\_________V<]`@``````
+M`@```/8!``#\_________^(^`@```````@```&L!``#\__________(^`@``
+M`````@```,0!``#\_________ST_`@```````@```-$!``#\_________[$_
+M`@```````@```#\!``#\_________[P_`@```````@```/8!``#\________
+M_]4_`@```````@```#0!``#\_________S5``@```````@```-(!``#\____
+M_____[Y``@```````@```*D!``#\__________I``@```````@```-(!``#\
+M_________Z=!`@```````@```-(!``#\_________]I!`@```````@```,0!
+M``#\_________^Y!`@```````@```(P!``#\_________TU"`@```````@``
+M`&T$``#\_________W1"`@```````@```)8!``#\_________RA#`@``````
+M`@```%D$``#\_________S1#`@```````@```$X!``#\_________U1#`@``
+M`````@```-(!``#\__________=#`@```````@```,0!``#\_________RQ$
+M`@```````@```(8!``#\_________T%$`@```````@```)4!``#\________
+M_U1$`@``````"P````8```"E`````````%Y$`@```````@```(P$``#\____
+M_____W-$`@```````@```)<$``#\_________XA$`@```````@```)<$``#\
+M_________Y]$`@```````@```$,!``#\_________\1$`@```````@```&T$
+M``#\_________SM%`@```````@```!,"``#\_________T=%`@```````@``
+M`%L!``#\_________XU%`@```````@```"T!``#\_________YI%`@``````
+M`@```"\!``#\_________^1%`@```````@```&\!``#\_________T-&`@``
+M`````@```&T$``#\_________VI&`@```````@```&T$``#\_________WQ&
+M`@```````@```"\!``#\_________\5&`@```````@```!H!``#\________
+M_]1&`@```````@```,`!``#\_________]Y&`@```````@```(`$``#\____
+M_____PQ'`@```````@```(8!``#\_________R%'`@```````@```)<$``#\
+M_________S9'`@```````@```)<$``#\_________TU'`@```````@```$,!
+M``#\_________UU'`@```````@```&T$``#\_________[E'`@```````@``
+M`/$!``#\__________1'`@```````@```)<$``#\_________W9(`@``````
+M`@```/$!``#\_________ZQ(`@```````@```(`$``#\_________\1(`@``
+M`````@```&T$``#\_________]](`@```````@```&T$``#\__________M(
+M`@```````@```$P!``#\_________P-)`@```````@```%T!``#\________
+M_R=)`@```````@```,T!``#\_________T)*`@```````@```&`$``#\____
+M_____V%*`@```````@```&T$``#\_________Y5*`@```````@```&T$``#\
+M_________^)*`@```````@```&T$``#\_________P=+`@``````"P````4`
+M```@`P```````!%+`@```````@```(P$``#\_________RQ+`@```````@``
+M`&8!``#\_________V9+`@```````@```&T$``#\_________X5+`@``````
+M`@```&T$``#\_________Z1+`@```````@```&T$``#\_________Z]+`@``
+M`````@```&T!``#\_________\A+`@```````@```&T$``#\_________[-,
+M`@```````@```%(!``#\_________\9,`@```````@```(<!``#\________
+M_]=,`@```````@```.$!``#\__________%,`@```````@```%D$``#\____
+M_____P9-`@``````"P```#4!`````````````!I-`@```````@```'@$``#\
+M_________W--`@```````@```-T!``#\_________XM-`@```````@````P"
+M``#\_________YY-`@```````@```.$!``#\_________^M-`@``````"P``
+M`-<!``````````````Q.`@```````@```(L!``#\_________QQ.`@``````
+M`@````<"``#\_________R=.`@```````@```,,!``#\_________ZM.`@``
+M`````@```+`!``#\_________Z!/`@```````@```-`!``#\_________]U/
+M`@```````@```-`!``#\_________QI0`@```````@```%D!``#\________
+M_\Y1`@```````@```$`!``#\_________PY2`@```````@```(\!``#\____
+M_____T92`@```````@```%D!``#\_________\M3`@```````@```&`$``#\
+M_________X]4`@```````@```.T!``#\_________\]4`@```````@```.T!
+M``#\_________Q-5`@```````@```,4!``#\_________R55`@```````@``
+M`#,!``#\_________TQ5`@```````@```%D!``#\_________Y)5`@``````
+M`@```&`$``#\_________Y]5`@```````@```&$!``#\_________S)7`@``
+M`````@```)H!``#\_________T)7`@```````@```/@!``#\_________U)7
+M`@```````@```)\!``#\_________V)7`@```````@```%(!``#\________
+M_WQ7`@```````@```%D$``#\_________Y%7`@``````"P```#4!````````
+M`````*M7`@```````@```'@$``#\_________]17`@```````@```-(!``#\
+M_________U58`@```````@```"P!``#\_________Y18`@```````@```-(!
+M``#\_________]U8`@```````@````X"``#\__________U8`@```````@``
+M`($!``#\_________PI9`@```````@```/(!``#\_________QM9`@``````
+M`@```%D!``#\_________R]9`@```````@```(<!``#\_________SI9`@``
+M`````@```.$!``#\_________VU9`@```````@```%D!``#\_________]-9
+M`@```````@```-T!``#\_________^M9`@```````@````P"``#\________
+M__Y9`@```````@```.$!``#\_________TM:`@``````"P```.@!````````
+M`````&Q:`@```````@```(L!``#\_________WQ:`@```````@````<"``#\
+M_________X=:`@```````@```,,!``#\_________PA;`@```````@```-T!
+M``#\_________QQ;`@```````@````P"``#\_________R];`@```````@``
+M`.$!``#\_________U%;`@```````@```&`$``#\_________Y);`@``````
+M"P```.@!`````````````+1;`@```````@```(L!``#\_________\-;`@``
+M`````@````<"``#\_________\Y;`@```````@```,,!``#\_________Y1=
+M`@```````@```!8"``#\_________^Y=`@```````@```!8"``#\________
+M_QQ>`@```````@```&D!``#\_________T5?`@```````@```(<!``#\____
+M_____U=?`@```````@```.$!``#\_________XY?`@```````@```&`$``#\
+M_________\]?`@```````@```(<!``#\_________]I?`@```````@```.$!
+M``#\_________T!@`@```````@```-T!``#\_________UQ@`@```````@``
+M``P"``#\_________V]@`@```````@```.$!``#\_________\)@`@``````
+M"P```(4!`````````````!!A`@```````@```(L!``#\_________R%A`@``
+M`````@````<"``#\_________RQA`@```````@```,,!``#\_________Y]A
+M`@```````@```-T!``#\_________[-A`@```````@````P"``#\________
+M_\9A`@```````@```.$!``#\_________^AA`@```````@```&`$``#\____
+M_____S5B`@``````"P```(4!`````````````'YB`@```````@```(L!``#\
+M_________XYB`@```````@````<"``#\_________YEB`@```````@```,,!
+M``#\_________TEC`@```````@```&T$``#\_________RYG`@```````@``
+M`'(!``#\_________T-G`@```````@```)X!``#\_________[=G`@``````
+M`@```-(!``#\_________[)H`@```````@```/<!``#\_________^1K`@``
+M````"P```&8!`````````````/MK`@```````@```'@$``#\_________Y%L
+M`@``````"P```%@!`````````````*AL`@```````@```'@$``#\________
+M__9L`@```````@```%D$``#\_________Q9M`@```````@```%D$``#\____
+M_____YYM`@```````@```-(!``#\_________[%M`@```````@```-H!``#\
+M_________]!M`@``````"P```&8!`````````````.AM`@```````@```'@$
+M``#\_________WYN`@```````@```-(!``#\_________Y%N`@```````@``
+M`*$!``#\_________ZQN`@``````"P```%@!`````````````,1N`@``````
+M`@```'@$``#\_________U%O`@```````@```!P!``#\_________YQO`@``
+M`````@```#\!``#\_________\%O`@```````@```#X!``#\_________\QO
+M`@```````@```*$!``#\_________X1P`@```````@```-(!``#\________
+M_Y5Q`@```````@```#\!``#\_________]IQ`@```````@```#\!``#\____
+M______YQ`@```````@```+$!``#\_________W-R`@```````@```%P!``#\
+M_________XQR`@```````@```)(!``#\_________^MR`@```````@```-P!
+M``#\_________Z5S`@```````@```#\!``#\_________P5T`@```````@``
+M`%P!``#\_________QYT`@```````@```)(!``#\_________X9T`@``````
+M`@```'<!``#\_________QIU`@```````@````$"``#\_________X%U`@``
+M`````@```%P!``#\_________YIU`@```````@```)(!``#\_________\QV
+M`@```````@```%P!``#\_________^5V`@```````@```)(!``#\________
+M_]YW`@```````@```-(!``#\_________^EW`@```````@```*8!``#\____
+M______%W`@```````@```)`!``#\_________SEX`@```````@```%\!``#\
+M_________W%X`@```````@```-(!``#\_________]UX`@```````@```-(!
+M``#\_________SUY`@```````@```-(!``#\_________YUY`@```````@``
+M`-(!``#\_________P%Z`@```````@```-(!``#\_________\1[`@``````
+M`@```-(!``#\_________PQ\`@```````@```(T!``#\_________QE\`@``
+M`````@```.$!``#\_________U)\`@```````@```!8!``#\_________XE\
+M`@```````@```/(!``#\_________Z-\`@```````@```,D!``#\________
+M_\I\`@```````@```-(!``#\_________QQ]`@```````@```($!``#\____
+M_____S%]`@```````@```(T!``#\_________SQ]`@```````@```.$!``#\
+M_________Y5]`@```````@```-T!``#\_________Z5]`@```````@```)T!
+M``#\__________E]`@``````"P```*,!``````````````-^`@```````@``
+M`(L!``#\_________PY^`@```````@```,,!``#\_________UQ^`@``````
+M`@```-T!``#\_________VQ^`@```````@```)T!``#\_________\1^`@``
+M````"P```*,!`````````````,Y^`@```````@```(L!``#\_________]E^
+M`@```````@```,,!``#\_________S5_`@```````@```-T!``#\________
+M_TE_`@```````@```)T!``#\_________Z5_`@``````"P```*,!````````
+M`````*]_`@```````@```(L!``#\_________[I_`@```````@```,,!``#\
+M_________\1_`@```````@```(`$``#\_________R6``@```````@```-T!
+M``#\_________T2``@```````@```)T!``#\_________U>``@```````@``
+M`.$!``#\_________[&``@``````"P```*,!`````````````+N``@``````
+M`@```(L!``#\_________\:``@```````@```,,!``#\_________^J!`@``
+M`````@```.$!``#\_________VN"`@```````@```)X!``#\_________W>"
+M`@```````@```.$!``#\_________^&"`@```````@```-T!``#\________
+M_WV#`@``````"P````$```#P@`(``````(>#`@```````@```(L!``#\____
+M_____Y*#`@```````@```,,!``#\_________PJ$`@```````@```-T!``#\
+M_________RB$`@```````@````P"``#\_________T2$`@```````@```.$!
+M``#\_________YJ$`@``````"P```&,!`````````````*>$`@```````@``
+M`(L!``#\_________[B$`@```````@````<"``#\_________\.$`@``````
+M`@```,,!``#\_________QJ%`@```````@```-T!``#\_________SB%`@``
+M`````@````P"``#\_________U2%`@```````@```.$!``#\_________[*%
+M`@``````"P```&,!`````````````+^%`@```````@```(L!``#\________
+M_]"%`@```````@````<"``#\_________]N%`@```````@```,,!``#\____
+M_____S.&`@```````@```-T!``#\_________U2&`@```````@````P"``#\
+M_________W"&`@```````@```.$!``#\_________]J&`@``````"P```&,!
+M`````````````.>&`@```````@```(L!``#\__________B&`@```````@``
+M``<"``#\_________P.'`@```````@```,,!``#\_________UJ'`@``````
+M`@```-T!``#\_________WR'`@```````@````P"``#\_________Y:'`@``
+M`````@```.$!``#\_________PJ(`@``````"P```&,!`````````````!N(
+M`@```````@```(L!``#\_________RJ(`@```````@````<"``#\________
+M_S6(`@```````@```,,!``#\_________X"(`@```````@```-T!``#\____
+M_____[Z(`@```````@```&0!``#\_________\V(`@```````@```.$!``#\
+M_________^>(`@``````"P```&,!`````````````/*(`@```````@```,,!
+M``#\_________R.)`@``````"P````,```"X&0```````)*)`@```````@``
+M``H"``#\_________]J)`@```````@```&T$``#\_________QB*`@``````
+M`@```&T$``#\_________T:*`@```````@```&T$``#\_________X**`@``
+M`````@```&T$``#\_________^**`@```````@````H"``#\_________Q6+
+M`@```````@```&T$``#\_________TZ+`@```````@```&T$``#\________
+M_WB+`@```````@```&T$``#\_________[B+`@```````@```&T$``#\____
+M_____QR-`@```````@```&L!``#\_________W:.`@```````@```(<!``#\
+M_________^6/`@```````@```,,!``#\_________P^0`@```````@```+4!
+M``#\_________QN0`@```````@```%\!``#\_________S20`@```````@``
+M`#0!``#\_________Z60`@```````@```+$!``#\_________QJ1`@``````
+M`@```#X!``#\_________Y:1`@```````@```#\!``#\_________Z&1`@``
+M`````@```/8!``#\_________ZR1`@```````@```/<!``#\_________]F1
+M`@```````@```)(!``#\_________]Z2`@``````"P````<`````"P``````
+M`"J3`@```````@```/\!``#\_________P.5`@```````@```(`$``#\____
+M_____PZ5`@```````@```.$!``#\_________QZ5`@```````@```+<!``#\
+M_________RJ5`@```````@```(`$``#\_________S65`@```````@```.$!
+M``#\_________X25`@```````@```-T!``#\_________\25`@``````"P``
+M`+L!`````````````,^5`@```````@```,,!``#\_________]^5`@``````
+M`@```(`$``#\_________^N5`@```````@```(`$``#\_________Q27`@``
+M`````@```(<!``#\_________Q^7`@```````@```.$!``#\_________V*7
+M`@```````@```+<!``#\_________W67`@```````@```(<!``#\________
+M_X>7`@```````@```.$!``#\_________\^7`@```````@```-T!``#\____
+M_____^.7`@```````@````P"``#\__________:7`@```````@```.$!``#\
+M_________T*8`@``````"P````$````0E@(``````$^8`@```````@```(L!
+M``#\_________UZ8`@```````@````<"``#\_________VF8`@```````@``
+M`,,!``#\_________[.8`@```````@```-T!``#\__________28`@``````
+M"P```&,!`````````````/^8`@```````@```,,!``#\_________T"9`@``
+M`````@```-T!``#\_________U"9`@```````@````P"``#\_________VJ9
+M`@```````@```.$!``#\_________ZV9`@``````"P```&,!````````````
+M`+B9`@```````@```,,!``#\__________*9`@```````@```!H!``#\____
+M_____R2:`@```````@```,`!``#\_________RZ:`@```````@```(`$``#\
+M_________U::`@```````@```+8!``#\_________W6:`@```````@```"`!
+M``#\_________[2:`@```````@```(8!``#\_________\F:`@```````@``
+M`)4!``#\_________]R:`@``````"P````8```"[`````````.::`@``````
+M`@```(P$``#\__________N:`@```````@```)<$``#\_________Q";`@``
+M`````@```)<$``#\_________U:;`@```````@```$,!``#\_________W:;
+M`@```````@```-(!``#\_________[*;`@```````@````X"``#\________
+M_\Z<`@```````@```+`!``#\_________P6=`@```````@```/X!``#\____
+M_____VV=`@```````@```/X!``#\_________^N=`@```````@```*H!``#\
+M_________R:>`@```````@```*H!``#\_________WB>`@```````@```*H!
+M``#\_________[.>`@```````@```*H!``#\_________[N?`@``````"P``
+M``$````PG0(``````.N?`@```````@```!("``#\_________TN@`@``````
+M"P````$````PG0(``````'N@`@```````@```!("``#\_________T*A`@``
+M````"P````$````PG0(``````'2A`@```````@```!("``#\_________TRB
+M`@``````"P````$````PG0(``````&ZB`@```````@```!("``#\________
+M_]VB`@``````"P````$````PG0(``````/ZB`@```````@```!("``#\____
+M_____XRD`@```````@```*4!``#\_________P:E`@```````@```-,!``#\
+M_________UJE`@```````@```*H!``#\_________R"F`@```````@```.X!
+M``#\__________>F`@```````@```+`!``#\_________R2G`@```````@``
+M`#(!``#\_________SZG`@```````@```+\!``#\_________Y2H`@``````
+M`@```/X!``#\_________V"J`@```````@```-@!``#\_________]JJ`@``
+M`````@```.X!``#\_________VJK`@```````@```*H!``#\_________Y:K
+M`@```````@```*H!``#\_________Q2L`@```````@```!\!``#\________
+M_YBL`@```````@```*H!``#\_________SBO`@```````@```*H!``#\____
+M_____Q.R`@```````@```&T$``#\_________S>R`@```````@```&T$``#\
+M__________.R`@```````@```(`$``#\_________Q.S`@```````@```&T$
+M``#\_________S>S`@```````@```&T$``#\_________X"S`@```````@``
+M`(`$``#\_________Z"S`@```````@```&T$``#\_________\>S`@``````
+M`@```&T$``#\_________Q^T`@```````@```(`$``#\_________S^T`@``
+M`````@```&T$``#\_________UZT`@```````@```&T$``#\_________Z:T
+M`@```````@```(`$``#\_________^VT`@```````@```!,"``#\________
+M_P"U`@```````@````X"``#\_________RNU`@```````@```%L!``#\____
+M_____VZU`@```````@```"T!``#\_________Y^U`@```````@```/4!``#\
+M_________ZVU`@```````@```(`$``#\__________2U`@```````@```$,!
+M``#\_________Q&V`@```````@```+P!``#\_________TRV`@```````@``
+M`/$!``#\_________W*V`@```````@```%D$``#\_________W^V`@``````
+M`@```$X!``#\_________Z2V`@```````@```-(!``#\_________\^V`@``
+M`````@```(8!``#\_________^2V`@```````@```)4!``#\__________FV
+M`@```````@```)<$``#\_________PZW`@```````@```)<$``#\________
+M_R:W`@```````@```$,!``#\_________T^W`@```````@```-(!``#\____
+M_____V&W`@```````@```%L!``#\_________Z6W`@```````@```/(!``#\
+M_________Q2X`@```````@```-(!``#\_________WBX`@```````@```/(!
+M``#\_________RJY`@```````@```+`!``#\_________]2Y`@```````@``
+M`-(!``#\__________2Y`@```````@```/H!``#\_________S^Z`@``````
+M`@```+`!``#\_________^*Z`@```````@```)<$``#\_________PV[`@``
+M`````@```!H!``#\_________QN[`@```````@```,`!``#\_________R6[
+M`@```````@```(`$``#\_________TV[`@```````@```+8!``#\________
+M_V:[`@```````@```"`!``#\_________Y2[`@```````@```(8!``#\____
+M_____ZF[`@```````@```)4!``#\_________[Z[`@```````@```)<$``#\
+M_________].[`@```````@```)<$``#\_________P&\`@```````@```$,!
+M``#\_________W:\`@```````@```/H!``#\_________XF\`@```````@``
+M`%`!``#\_________SN]`@```````@```+`!``#\_________VR]`@``````
+M`@```%L!``#\_________\6^`@```````@```($!``#\_________^^^`@``
+M`````@```"P!``#\_________PZ_`@```````@```%D!``#\_________WZ_
+M`@```````@```-(!``#\_________Y^_`@```````@```/H!``#\________
+M_^R_`@```````@```/H!``#\_________QS``@```````@```/H!``#\____
+M_____S+``@```````@```+`!``#\_________VO``@```````@```/P!``#\
+M_________X3!`@```````@```%0!``#\_________ZG!`@```````@```-(!
+M``#\_________[W!`@```````@```!H!``#\_________\O!`@```````@``
+M`,`!``#\_________]7!`@```````@```(`$``#\_________P/"`@``````
+M`@```(8!``#\_________QC"`@```````@```)4!``#\_________S'"`@``
+M`````@```)<$``#\_________T;"`@```````@```)<$``#\_________V_"
+M`@```````@```$,!``#\_________XS"`@```````@```/D!``#\________
+M_^;"`@```````@````\"``#\_________P'#`@```````@```/H!``#\____
+M_____SC#`@```````@```/H!``#\_________V;#`@```````@```/H!``#\
+M_________W?#`@```````@```/P!``#\_________XG#`@```````@```'L!
+M``#\_________[##`@```````@```/P!``#\__________;$`@```````@``
+M`%L!``#\_________P_&`@```````@```($!``#\_________R_&`@``````
+M`@```"P!``#\_________W'&`@```````@````X"``#\_________['&`@``
+M`````@```/H!``#\_________]#&`@```````@```/T!``#\_________S#'
+M`@```````@```.,!``#\_________T;'`@``````"P```)$!````````````
+M`%''`@```````@```-D!``#\_________U['`@```````@```'\!``#\____
+M_____VG'`@```````@```.,!``#\_________S/)`@``````"P````4```!`
+M`P```````#W)`@```````@```(P$``#\_________ZO)`@```````@```'L!
+M``#\_________VO*`@```````@```+H!``#\_________]S*`@``````"P``
+M`)$!`````````````.?*`@```````@```-D!``#\_________Q_+`@``````
+M"P````4```"0`P```````"G+`@```````@```(P$``#\_________SG+`@``
+M`````@````X"``#\_________V#+`@```````@```%L!``#\_________Z[+
+M`@```````@```+H!``#\_________\'+`@```````@```'@!``#\________
+M__'+`@```````@```"P!``#\_________\?,`@```````@```.8!``#\____
+M_____]3,`@```````@```(@!``#\_________[W-`@```````@````X"``#\
+M_________QS.`@```````@```-(!``#\_________VG.`@```````@```($!
+M``#\_________XW.`@```````@```/(!``#\_________ZW.`@```````@``
+M`"P!``#\_________UC/`@```````@```%4!``#\_________^;/`@``````
+M`@```-(!``#\_________V+0`@```````@```%4!``#\__________K0`@``
+M`````@```)<$``#\_________Q31`@```````@```)<$``#\_________T31
+M`@```````@```%4!``#\_________[;1`@```````@```)<$``#\________
+M_PO2`@```````@```)<$``#\_________S'3`@```````@```(0!``#\____
+M_____S[3`@```````@```,(!``#\_________U#3`@```````@```$H!``#\
+M_________V+3`@```````@```$H!``#\_________V_3`@```````@```,@!
+M``#\_________WS3`@```````@```&@!``#\_________XG3`@```````@``
+M`.<!``#\_________YG3`@```````@```#@!``#\_________\73`@``````
+M`@```-(!``#\_________QO4`@```````@```($!``#\_________SW4`@``
+M`````@```/(!``#\_________UW4`@```````@```"P!``#\_________ZS4
+M`@```````@```%D!``#\_________\#4`@``````"P````8```#1````````
+M`,K4`@```````@```(P$``#\_________]?4`@```````@```%D!``#\____
+M______?4`@```````@```-(!``#\_________SS5`@```````@````X"``#\
+M_________Y76`@```````@```"T!``#\_________Y_6`@```````@```(`$
+M``#\_________[?6`@```````@```"T!``#\_________\'6`@```````@``
+M`(`$``#\_________VO7`@```````@```&T$``#\_________X#7`@``````
+M`@```&T$``#\_________[C7`@```````@```(`$``#\_________]77`@``
+M`````@```/(!``#\__________'7`@```````@```/4!``#\_________P?8
+M`@```````@```/4!``#\_________Q78`@```````@```(`$``#\________
+M_SW8`@```````@```&T$``#\_________V[8`@```````@```&T$``#\____
+M_____X[8`@```````@```&T$``#\_________ZO8`@```````@```(`$``#\
+M_________[O8`@``````"P````4```#(`P```````,78`@```````@```(P$
+M``#\_________^'8`@``````"P````8```#E`````````.O8`@```````@``
+M`(P$``#\_________W;9`@```````@```+H!``#\_________\K9`@``````
+M`@```/$!``#\_________^S9`@```````@```-(!``#\_________SC:`@``
+M`````@```($!``#\_________UW:`@```````@```/(!``#\_________WW:
+M`@```````@```"P!``#\_________\':`@```````@```/$!``#\________
+M__3:`@```````@````X"``#\_________P;;`@```````@```%D!``#\____
+M_____S3;`@```````@```-(!``#\_________X;;`@```````@```($!``#\
+M_________ZW;`@```````@```/(!``#\_________\W;`@```````@```"P!
+M``#\_________P?<`@```````@```-(!``#\_________TW<`@```````@``
+M``X"``#\_________[[<`@``````"P````,```!X&@```````!?=`@``````
+M`@```/$!``#\_________RC=`@```````@```&T$``#\_________TC=`@``
+M`````@```!4"``#\_________V3=`@```````@```!4"``#\_________X#=
+M`@```````@```!4"``#\_________YS=`@```````@```!4"``#\________
+M_[W=`@```````@```#D!``#\_________]_=`@```````@```#D!``#\____
+M_____P'>`@```````@```#D!``#\_________R/>`@```````@```#D!``#\
+M_________U#>`@```````@```#D!``#\_________W+>`@```````@```#D!
+M``#\_________X[>`@```````@```!4"``#\_________ZK>`@```````@``
+M`!4"``#\_________\;>`@```````@```!4"``#\__________/>`@``````
+M`@```#D!``#\_________P_?`@```````@```!4"``#\_________V#?`@``
+M`````@```(`$``#\_________]/?`@```````@```&T$``#\_________^W?
+M`@```````@```&T$``#\__________[?`@```````@```(`$``#\________
+M_PW@`@```````@```/(!``#\_________QS@`@```````@```(`$``#\____
+M_____S/@`@```````@```!4"``#\_________SW@`@```````@```(`$``#\
+M_________UG@`@```````@```!4"``#\_________V/@`@```````@```(`$
+M``#\_________Y#@`@```````@```#D!``#\_________YK@`@```````@``
+M`(`$``#\_________[/@`@```````@```!4"``#\_________[W@`@``````
+M`@```(`$``#\_________];@`@```````@```!4"``#\_________^#@`@``
+M`````@```(`$``#\_________^?@`@```````@```&P!``#\__________/@
+M`@```````@```*P!``#\_________Q+A`@```````@```#D!``#\________
+M_QOB`@```````@```+`!``#\_________S?B`@```````@```+`!``#\____
+M_____Z#B`@```````@```'D!``#\_________\/C`@```````@```(`$``#\
+M_________W[D`@```````@```(`$``#\_________YWD`@```````@```&T$
+M``#\_________[GD`@```````@```&T$``#\_________WSE`@```````@``
+M`(`$``#\_________Y+E`@```````@```&T$``#\_________Z+E`@``````
+M`@```&T$``#\_________SSF`@```````@```(`$``#\_________U+F`@``
+M`````@```&T$``#\_________V+F`@```````@```&T$``#\_________Q'G
+M`@```````@```+0!``#\_________U7G`@```````@```+,!``#\________
+M_W[G`@```````@```/`!``#\_________Y+G`@```````@```+0!``#\____
+M_____\GG`@```````@```&T$``#\_________^;G`@```````@```&T$``#\
+M_________QOH`@```````@```&T$``#\_________SCH`@```````@```&T$
+M``#\_________X7H`@```````@```-8!``#\_________Z#H`@```````@``
+M`!@!``#\_________PSI`@```````@```(`$``#\_________RWI`@``````
+M`@```&T$``#\_________TSI`@```````@```&T$``#\_________V;J`@``
+M````"P```"0!`````````````);J`@```````@```'H!``#\_________[CJ
+M`@```````@```+X!``#\_________\GJ`@```````@```/0!``#\________
+M_]OJ`@```````@```/0!``#\_________W7K`@```````@```&T$``#\____
+M_____YCK`@```````@```&T$``#\_________\SK`@```````@```(`$``#\
+M_________^;K`@```````@```&T$``#\_________S+L`@```````@```&T$
+M``#\_________YGL`@```````@```&T$``#\_________POM`@```````@``
+M`&T$``#\_________W#M`@```````@```(`$``#\_________Y'M`@``````
+M`@```&T$``#\_________Z[M`@```````@```&T$``#\_________P/N`@``
+M`````@```(D!``#\_________PWN`@```````@```$0!``#\_________T_N
+M`@```````@```(`$``#\_________\_N`@```````@```(`$``#\________
+M_T_O`@```````@```(`$``#\_________ZKO`@```````@```',!``#\____
+M_____[3O`@```````@```(`$``#\_________]'O`@```````@```&T$``#\
+M_________^[O`@```````@```&T$``#\_________VOP`@```````@```(`$
+M``#\_________W?P`@```````@```$P!``#\_________XOP`@```````@``
+M`%T!``#\_________YGP`@```````@```&T$``#\_________[+P`@``````
+M`@```&T$``#\_________\[P`@```````@```&T$``#\_________\7Q`@``
+M`````@```&T$``#\_________\7S`@```````@```(<!``#\_________]?S
+M`@```````@```.$!``#\_________S#T`@```````@```(<!``#\________
+M_SOT`@```````@```.$!``#\_________T[T`@```````@```"P!``#\____
+M_____SGU`@```````@```&`$``#\_________X/U`@``````"P````8```#[
+M`````````(WU`@```````@```(P$``#\_________Z#U`@```````@```(<!
+M``#\_________ZOU`@```````@```.$!``#\_________\3U`@```````@``
+M`-(!``#\_________RGV`@```````@```-(!``#\_________Y;V`@``````
+M`@```"P!``#\_________T3W`@```````@```(`$``#\_________\/W`@``
+M`````@```(`$``#\___________W`@```````@```(`$``#\_________Q_X
+M`@```````@```(<!``#\_________RKX`@```````@```.$!``#\________
+M_SCX`@```````@```,X!``#\__________7X`@```````@```(`$``#\____
+M_____R_Y`@```````@```(`$``#\_________T_Y`@```````@```(<!``#\
+M_________UKY`@```````@```.$!``#\_________VCY`@```````@```,X!
+M``#\_________ZKY`@```````@```(`$``#\__________'Y`@```````@``
+M`(`$``#\_________T#Z`@```````@```(`$``#\_________W/Z`@``````
+M`@```(<!``#\_________W[Z`@```````@```.$!``#\_________XGZ`@``
+M`````@```"P!``#\_________]3[`@```````@```(<!``#\_________]_[
+M`@```````@```.$!``#\_________W'\`@```````@```/(!``#\________
+M_X#\`@```````@```(`$``#\_________ZW\`@```````@```!8!``#\____
+M_____\+\`@```````@```/(!``#\_________QK]`@``````"P````4`````
+M!````````"3]`@```````@```(P$``#\_________S;]`@```````@```$8!
+M``#\_________R'^`@```````@```(<!``#\_________RS^`@```````@``
+M`.$!``#\_________T'^`@```````@```(<!``#\_________TS^`@``````
+M`@```.$!``#\_________U?^`@```````@```/(!``#\_________X/_`@``
+M`````@```(<!``#\_________X[_`@```````@```.$!``#\_________]+_
+M`@``````"P````4````@!````````-S_`@```````@```(P$``#\________
+M__O_`@```````@```$,!``#\_________PP``P```````@````X"``#\____
+M_____QP``P```````@```(`$``#\_________R<``P```````@```.$!``#\
+M_________SP``P```````@```"T!``#\_________T@``P```````@```(`$
+M``#\_________U,``P```````@```.$!``#\_________UX``P```````@``
+M`'P!``#\_________Z@``P```````@```-T!``#\_________Q4!`P``````
+M"P````$```#`^@(``````!P!`P``````"P```!L!`````````````#(!`P``
+M`````@```,,!``#\_________VL!`P```````@```-T!``#\_________X<!
+M`P```````@````P"``#\_________Z$!`P```````@```.$!``#\________
+M__8!`P``````"P````$```#`^@(```````,"`P```````@```(L!``#\____
+M_____Q,"`P```````@````<"``#\_________QX"`P```````@```,,!``#\
+M__________($`P```````@```$D!``#\_________R\%`P```````@```-T!
+M``#\_________WT%`P``````"P````$```#`^@(``````(L%`P```````@``
+M`,,!``#\_________\\%`P```````@```-T!``#\_________QT&`P``````
+M"P````$```#`^@(``````"L&`P```````@```,,!``#\_________V\&`P``
+M`````@```-T!``#\_________[4&`P``````"P````$```#`^@(``````,`&
+M`P```````@```,,!``#\__________\&`P```````@```-T!``#\________
+M_T4'`P``````"P````$```#`^@(``````%`'`P```````@```,,!``#\____
+M_____X\'`P```````@```-T!``#\_________^`'`P``````"P````$```#`
+M^@(``````.L'`P```````@```,,!``#\_________R\(`P```````@```-T!
+M``#\_________W4(`P``````"P````$```#`^@(``````(`(`P```````@``
+M`,,!``#\_________[\(`P```````@```-T!``#\_________P4)`P``````
+M"P````$```#`^@(``````!`)`P```````@```,,!``#\_________V8)`P``
+M`````@```-T!``#\_________Z\)`P``````"P```+@!`````````````+8)
+M`P``````"P```-0!`````````````,D)`P```````@```,,!``#\________
+M_RX*`P```````@```-T!``#\_________Y0*`P``````"P```+@!````````
+M`````)L*`P``````"P```-0!`````````````*X*`P```````@```,,!``#\
+M_________T\,`P```````@```#D!``#\_________ZD,`P```````@```(<!
+M``#\_________[<,`P```````@```.$!``#\_________\L,`P```````@``
+M`/$!``#\_________^@,`P``````"P````,```!(&P````````<-`P``````
+M`@```&T$``#\_________U4-`P```````@```&T$``#\_________WT-`P``
+M`````@```&T$``#\_________\X-`P```````@```&T$``#\__________$-
+M`P```````@```&T$``#\_________TX.`P```````@```&T$``#\________
+M_X@.`P```````@```&T$``#\_________\T.`P```````@```(`$``#\____
+M______L.`P```````@```*`$``#\_________RL/`P```````@```&T$``#\
+M_________TX/`P```````@```&T$``#\_________UP/`P```````@```*`$
+M``#\_________]P/`P```````@```-(!``#\_________S@0`P```````@``
+M`(8!``#\_________TT0`P```````@```)4!``#\_________V,0`P``````
+M`@```)<$``#\_________WD0`P```````@```)<$``#\_________YH0`P``
+M`````@```$,!``#\_________\,0`P```````@```&T$``#\_________^40
+M`P```````@```&T$``#\_________S@1`P```````@```-(!``#\________
+M_W$1`P```````@```%L!``#\_________[`1`P```````@```,`!``#\____
+M_____[H1`P```````@```(`$``#\__________81`P```````@```&T$``#\
+M_________QD2`P```````@```&T$``#\_________[<2`P```````@```(<!
+M``#\_________\(2`P```````@```.$!``#\_________]$2`P```````@``
+M``X"``#\_________^\2`P```````@```(<!``#\__________H2`P``````
+M`@```.$!``#\_________P43`P```````@```/$!``#\_________Y84`P``
+M`````@```(<!``#\_________Z<4`P```````@```.$!``#\_________\$4
+M`P```````@```(H!``#\_________^84`P``````"P````,````8'```````
+M``05`P```````@```&T$``#\_________R85`P```````@```&T$``#\____
+M_____[\5`P```````@```&\!``#\_________PP6`P```````@```(,!``#\
+M_________R<6`P```````@```-(!``#\_________U@6`P```````@```)<$
+M``#\_________VT6`P```````@```!H!``#\_________WP6`P```````@``
+M`,`!``#\_________X86`P```````@```(`$``#\_________[`6`P``````
+M`@```(<!``#\_________[L6`P```````@```.$!``#\_________\P6`P``
+M`````@```(@!``#\_________P,7`P```````@```&\!``#\_________TT7
+M`P```````@```(,!``#\_________V@7`P```````@```-(!``#\________
+M_YD7`P```````@```)<$``#\_________ZX7`P```````@```!H!``#\____
+M_____[T7`P```````@```,`!``#\_________\<7`P```````@```(`$``#\
+M__________$7`P```````@```(<!``#\__________P7`P```````@```.$!
+M``#\_________PT8`P```````@```(@!``#\_________S`8`P```````@``
+M`&T$``#\_________U(8`P```````@```&T$``#\_________ZD8`P``````
+M`@```,`!``#\_________[,8`P```````@```(`$``#\_________^X8`P``
+M`````@```&T$``#\_________Q,9`P```````@```&T$``#\_________VH9
+M`P```````@```-(!``#\_________Z,9`P```````@```%L!``#\________
+M_Q(:`P```````@```&T$``#\_________S`:`P```````@```&T$``#\____
+M_____V$:`P```````@```(<!``#\_________VP:`P```````@```.$!``#\
+M_________W<:`P```````@```/$!``#\_________]\:`P```````@```&T$
+M``#\_________T8<`P```````@```(`$``#\_________S0D`P```````@``
+M`-(!``#\_________XDD`P```````@```+D!``#\_________YXD`P``````
+M`@```&`$``#\_________[4D`P```````@```#`!``#\_________R@F`P``
+M`````@```-X!``#\_________S<F`P```````@```$L!``#\_________R0G
+M`P```````@```(`$``#\_________Q`H`P```````@````L````>`0``````
+M`!TH`P``````"P````L````@`0```````"<H`P```````@```$$!``#\____
+M_____U<H`P```````@````L````>`0```````&0H`P``````"P````L````@
+M`0```````&XH`P```````@```$$!``#\_________ZDH`P```````@```-X!
+M``#\_________[8H`P```````@```$L!``#\_________\TI`P```````@``
+M`,\!``#\_________Z$J`P```````@```&T$``#\_________]HJ`P``````
+M`@```&T$``#\__________(J`P```````@```$@!``#\_________P0K`P``
+M`````@```$@!``#\_________Q8K`P```````@```$@!``#\_________R@K
+M`P```````@```$@!``#\_________SHK`P```````@```$@!``#\________
+M_TPK`P```````@```$@!``#\_________UXK`P```````@```$@!``#\____
+M_____W`K`P```````@```$@!``#\_________P`L`P```````@```$@!``#\
+M_________X8L`P```````@```(T!``#\_________Y<L`P```````@```.$!
+M``#\__________DL`P```````@```-T!``#\_________PDM`P```````@``
+M`)T!``#\_________V@M`P``````"P```(X!`````````````'(M`P``````
+M`@```(L!``#\_________WTM`P```````@```,,!``#\_________]4M`P``
+M`````@```-T!``#\_________^DM`P```````@```)T!``#\_________X`N
+M`P```````@```&`$``#\_________ZTN`P```````@```&`$``#\________
+M_[@N`P``````"P```(X!`````````````,8N`P```````@```(L!``#\____
+M_____]$N`P```````@```,,!``#\_________R8O`P```````@```#L!``#\
+M_________S0O`P```````@```,`!``#\_________SXO`P```````@```(`$
+M``#\_________W<O`P```````@````4"``#\_________X4O`P```````@``
+M`,`!``#\_________X\O`P```````@```(`$``#\_________[(O`P``````
+M`@```#L!``#\_________\0O`P```````@```,`!``#\_________\XO`P``
+M`````@```(`$``#\_________QTP`P```````@````4"``#\_________TXR
+M`P```````@```"(!``#\_________S@T`P```````@```#H!``#\________
+M_U$T`P```````@```),!``#\_________[$U`P```````@```'0!``#\____
+M_____T(V`P```````@```'0!``#\_________U$V`P```````@```&`$``#\
+M_________X8V`P```````@```"@!``#\_________YLV`P``````"P```$4!
+M`````````````-LV`P```````@```#H!``#\_________^TV`P```````@``
+M`),!``#\_________XXW`P```````@```"@!``#\_________[$W`P``````
+M`@```"@!``#\_________V\X`P```````@```#$!``#\_________W\X`P``
+M`````@```'8!``#\_________X\X`P```````@```!X!``#\_________^0X
+M`P``````"P````,```!`'````````/HZ`P```````@```&T$``#\________
+M_Q8[`P```````@```(`$``#\_________^T[`P```````@```&T$``#\____
+M_____VH\`P```````@```(`$``#\_________VT]`P```````@```&T$``#\
+M_________Z8]`P```````@```"D!``#\_________XI``P```````@```&T$
+M``#\__________]!`P```````@```&4!```$`````````$-"`P```````@``
+M`&T$``#\_________Z]"`P```````@```"X!```$`````````/-"`P``````
+M`@```&T$``#\_________U]#`P```````@```"0!```$`````````*-#`P``
+M`````@```&T$``#\_________S]$`P```````@```%<!```$`````````(-$
+M`P```````@```&T$``#\_________Q1%`P``````"P```"X!````````````
+M`#-%`P``````"P```"0!`````````````%%%`P``````"P```&4!````````
+M`````'1%`P``````"P```%<!`````````````#Y&`P```````@```,H!``#\
+M_________WM'`P```````@```$$!``#\_________XE'`P```````@```(`$
+M``#\_________YY'`P```````@```/,!``#\_________PE(`P```````@``
+M`&T$``#\_________QU(`P```````@```&T$``#\_________UQ(`P``````
+M`@```&T$``#\_________X-(`P```````@```.D!``#\_________XU(`P``
+M`````@````L```#``@```````)A(`P``````"P````L```"``@```````*!(
+M`P```````@````L```#``@```````+1(`P```````@```&<!``#\________
+M_[Y(`P```````@````L```#$`@```````,E(`P``````"P````L```"@`@``
+M`````-%(`P```````@````L```#$`@```````.U(`P```````@````L```"\
+M`@```````/A(`P``````"P````L``````@````````!)`P```````@````L`
+M``"\`@````````9)`P```````@```%,!```(`````````"))`P```````@``
+M``L```![`@```````#))`P``````"P````L``````@```````#E)`P``````
+M`@````L```!\`@```````%5)`P```````@````L```!\`@```````&-)`P``
+M`````@````L```";`@```````'-)`P``````"P````L``````@```````'I)
+M`P```````@````L```"<`@```````)9)`P```````@````L```"<`@``````
+M`*I)`P```````@````L```"\`@```````,))`P```````@````L```!\`@``
+M`````-A)`P``````"P````L```"``@```````.5)`P```````@````L```"\
+M`@```````/))`P``````"P````L``````@```````!]*`P```````@```%,!
+M```)`````````#%*`P``````"P````L``````@```````#A*`P``````"P``
+M`%,!`````````````%5*`P```````@````<```#0"P```````)U*`P``````
+M`@````L```"\`@```````,9*`P```````@````L```"<`@```````-Q*`P``
+M````"P````L```"@`@```````.E*`P```````@````L```"\`@```````/9*
+M`P``````"P````L``````@```````"5+`P```````@```%,!```)````````
+M`#=+`P``````"P````L``````@```````#Y+`P``````"P```%,!````````
+M`````%=+`P```````@````<```#0"P```````)]+`P```````@````L```"\
+M`@```````-U+`P```````@```%,!```(`````````/Q+`P``````"P```%,!
+M```-``````````=,`P```````@````<```#0"P````````Y,`P``````"P``
+M`%,!`````````````(=,`P```````@````<````<#````````)-,`P``````
+M"P````<```#`"P```````.A,`P``````"P```%,!`````````````.],`P``
+M````"P```%,!```0`````````"%-`P``````"P```%,!```,`````````)E-
+M`P``````"P```%,!```0`````````!).`P```````@```%H$``#\________
+M_R).`P```````@````<````<#````````"].`P``````"P````<```#`"P``
+M`````&I.`P``````"P```%,!`````````````(!.`P``````"P````<```#0
+M"P```````(Y.`P```````0```%,!``#\_________ZM.`P``````"P````<`
+M``#`"P```````+5.`P``````"P````<```#("P```````,).`P``````"P``
+M`%,!```<`````````-Q.`P``````"P```%,!```<`````````/).`P``````
+M"P```%,!```<``````````!/`P``````"P```%,!```<`````````!9/`P``
+M````"P```%,!```0`````````*Q/`P```````@````<````<#`````````Q0
+M`P```````@````L```#'`@```````!50`P```````@````L```#$`@``````
+M`#-0`P```````@````<````<#````````#Q0`P``````"P````<```#`"P``
+M`````$-0`P``````"P````<```#0"P```````&Y0`P```````@````<````<
+M#````````)!0`P``````"P```%,!`````````````*-0`P``````"P```%,!
+M```<`````````*U0`P``````"P```%,!```,`````````+50`P``````"P``
+M`%,!```0`````````!)1`P``````"P```%,!```<`````````*A1`P``````
+M`@````L```#<`0```````+%1`P```````@````L```#<`0```````$E3`P``
+M`````@```&@$``#\_________V-3`P```````@```&@$``#\_________[=3
+M`P```````@````<````<#````````,!3`P``````"P````<```#`"P``````
+M`,=3`P```````@````<````<#````````.93`P``````"P````<```#0"P``
+M`````#E4`P```````@```*0$``#\_________UA4`P```````@```)P$``#\
+M_________X54`P```````@```!4!``#\_________Y14`P```````@```!4!
+M``#\_________\!4`P```````@```,`!``#\_________]]4`P```````@``
+M`%D$``#\__________14`P``````"P```%8!``````````````=5`P``````
+M`@```'@$``#\_________S%5`P```````@```)D$``#\_________UM5`P``
+M`````@```&`!``#\_________V-5`P```````@```&`!``#\_________VM5
+M`P```````@```.(!``#\_________WQ5`P```````@```.(!``#\________
+M_XU5`P```````@```((!``#\_________Y=5`P```````@```(`$``#\____
+M_____Y]5`P```````@```-\!``#\_________Z=5`P```````@```#T!``#\
+M_________[Q5`P``````"P```%8!`````````````--5`P```````@```'@$
+M``#\_________^!5`P```````@````X"``#\_________^U5`P```````@``
+M``X"``#\_________^M6`P```````@```$$!``#\__________E6`P``````
+M`@```(`$``#\_________PY7`P```````@```/,!``#\_________T)7`P``
+M````"P````8````/`0```````$Q7`P```````@```(P$``#\_________P!9
+M`P``````"P```#P!``````````````59`P```````@```%($``#\________
+M_TU:`P``````"P````4```!8!````````%=:`P```````@```(P$``#\____
+M_____X=:`P```````@```%D$``#\_________YQ:`P``````"P````$```"@
+M60,``````+!:`P```````@```'@$``#\_________X9<`P```````@```"`!
+M``#\_________ZQ<`P```````@```+8!``#\_________]=<`P```````@``
+M`-(!``#\_________TA=`P```````@```-(!``#\_________ZE=`P``````
+M`@```)<$``#\_________R=>`P```````@```-(!``#\_________Y)>`P``
+M`````@```)<$``#\_________[-?`P```````@```%H!``#\_________\A?
+M`P```````@```)4!``#\_________T5A`P```````@```($!``#\________
+M_Y%A`P```````@```-(!``#\_________]UA`P```````@```/(!``#\____
+M_____S=B`P```````@```',!``#\_________UMB`P```````@```"P!``#\
+M_________WEB`P```````@```-(!``#\_________\=B`P```````@```%4!
+M``#\_________Z%C`P```````@```!H!``#\_________]QC`P```````@``
+M`($!``#\_________P5D`P```````@```/(!``#\_________SYD`P``````
+M`@```"P!``#\__________=D`P```````@```(<!``#\_________P=E`P``
+M`````@```.$!``#\_________Z-E`P```````@```-T!``#\_________])G
+M`P```````@```&`$``#\_________ZEI`P``````"P````$```!P9`,`````
+M`"AJ`P```````@```,P!``#\_________S5J`P```````@```(L!``#\____
+M_____T-J`P```````@````<"``#\_________UUJ`P```````@````P"``#\
+M_________\9J`P```````@```&`$``#\_________R)K`P```````@```&`$
+M``#\_________T%K`P```````@```(L!``#\_________U9K`P```````@``
+M``<"``#\_________VQK`P```````@```,,!``#\_________WEK`P``````
+M`@```.$!``#\_________RQL`P```````@```-T!``#\_________T1L`P``
+M`````@````P"``#\_________UEL`P```````@```.$!``#\_________WIL
+M`P```````@```)<$``#\_________Y)L`P```````@```!H!``#\________
+M_]EL`P```````@```&`$``#\_________[5M`P```````@```,P!``#\____
+M______]M`P``````"P````$```"060,```````YN`P```````@```(L!``#\
+M_________R1N`P```````@````<"``#\_________S9N`P```````@```,,!
+M``#\_________VQN`P```````@```!H!``#\_________WUN`P```````@``
+M`(`$``#\_________X5N`P```````@```,`!``#\_________]YN`P``````
+M`@```&`$``#\__________%N`P```````@```(<!``#\__________QN`P``
+M`````@```.$!``#\_________Q1O`P```````@```)<$``#\_________VUO
+M`P```````@````("``#\_________WYO`P```````@````("``#\________
+M_Z5O`P```````@```,`!``#\_________T&$`P```````@```-T!``#\____
+M_____YZ$`P``````"P````$```"060,``````*F$`P```````@```,,!``#\
+M_________^F$`P```````@```!H!``#\__________V$`P```````@```(`$
+M``#\_________P6%`P```````@```,`!``#\_________SZ%`P```````@``
+M`.$!``#\_________\2%`P```````@```-T!``#\_________T2&`P``````
+M"P````$```"060,``````$^&`P```````@```,,!``#\_________XF&`P``
+M`````@```!H!``#\_________YV&`P```````@```(`$``#\_________Z6&
+M`P```````@```,`!``#\_________^6&`P```````@````P"``#\________
+M_VV'`P``````"P````$```"060,``````'R'`P```````@```(L!``#\____
+M_____Y*'`P```````@````<"``#\_________YV'`P```````@```,,!``#\
+M_________]:'`P```````@```!H!``#\_________^>'`P```````@```(`$
+M``#\_________^^'`P```````@```,`!``#\_________R&(`P```````@``
+M`(<!``#\_________S&(`P```````@```.$!``#\_________SF(`P``````
+M`@```-T!``#\_________TZ(`P```````@```(<!``#\_________TN)`P``
+M````"P````$```"060,``````%J)`P```````@```(L!``#\_________W")
+M`P```````@````<"``#\_________WN)`P```````@```,,!``#\________
+M_[2)`P```````@```!H!``#\_________\6)`P```````@```(`$``#\____
+M_____\V)`P```````@```,`!``#\_________P:*`P```````@```(<!``#\
+M_________Q>*`P```````@```.$!``#\_________Y:*`P```````@```)<$
+M``#\_________ZN*`P```````@```!H!``#\_________[N*`P```````@``
+M`(`$``#\_________\.*`P```````@```,`!``#\__________N*`P``````
+M`@```)<$``#\_________V&+`P```````@```"`!``#\_________X*+`P``
+M`````@```+8!``#\_________YB+`P```````@```)4!``#\_________P:,
+M`P```````@```-T!``#\_________VJ,`P``````"P````$```"060,`````
+M`'6,`P```````@```,,!``#\_________ZZ,`P```````@```!H!``#\____
+M_____[^,`P```````@```(`$``#\_________\>,`P```````@```,`!``#\
+M_________PV-`P```````@```.$!``#\_________U6-`P``````"P````,`
+M``!0'0```````&R-`P```````@```%H!``#\_________YR-`P```````@``
+M`$(!``#\_________[>-`P```````@```%X!``#\_________\>-`P``````
+M`@```.H!``#\_________Z6.`P```````@```,L!``#\_________[B.`P``
+M`````@```,L!``#\_________\6.`P```````@```,L!``#\_________]B.
+M`P```````@```,L!``#\_________Q./`P```````@```'4$``#\________
+M_RJ/`P```````@```'4$``#\_________T./`P```````@```'4$``#\____
+M_____[:/`P```````@```"8!``#\_________]:/`P```````@```'\$``#\
+M_________^F/`P```````@```'\$``#\_________PR0`P```````@```'\$
+M``#\_________Q^0`P```````@```'\$``#\_________S^0`P```````@``
+M`'\$``#\_________U*0`P```````@```'\$``#\_________W*0`P``````
+M`@```'\$``#\_________X60`P```````@```'\$``#\_________[:0`P``
+M`````@```'\$``#\_________\J0`P```````@```'\$``#\__________.0
+M`P```````@```'\$``#\_________P:1`P```````@```'\$``#\________
+M_RR1`P```````@```'\$``#\_________S^1`P```````@```'\$``#\____
+M_____U^1`P```````@```'\$``#\_________W*1`P```````@```'\$``#\
+M_________Y*1`P```````@```'\$``#\_________Z61`P```````@```'\$
+M``#\_________\R1`P```````@```'\$``#\_________]^1`P```````@``
+M`'\$``#\__________^1`P```````@```'\$``#\_________Q*2`P``````
+M`@```'\$``#\_________S*2`P```````@```'\$``#\_________T62`P``
+M`````@```'\$``#\_________VR2`P```````@```'\$``#\_________W^2
+M`P```````@```'\$``#\_________Y^2`P```````@```'\$``#\________
+M_[*2`P```````@```'\$``#\_________]*2`P```````@```'\$``#\____
+M_____^62`P```````@```'\$``#\_________PR3`P```````@```'\$``#\
+M_________Q^3`P```````@```'\$``#\_________S^3`P```````@```'\$
+M``#\_________U*3`P```````@```'\$``#\_________W*3`P```````@``
+M`'\$``#\_________X63`P```````@```'\$``#\_________[23`P``````
+M`@```+$$``#\_________\Z3`P```````@```+$$``#\__________:3`P``
+M`````@```+$$``#\_________Q"4`P```````@```+$$``#\_________SB4
+M`P```````@```+$$``#\_________U*4`P```````@```+$$``#\________
+M_WJ4`P```````@```+$$``#\_________Y24`P```````@```+$$``#\____
+M_____[R4`P```````@```+$$``#\_________]:4`P```````@```+$$``#\
+M_________P25`P```````@```+$$``#\_________QZ5`P```````@```+$$
+M``#\_________T:5`P```````@```+$$``#\_________V"5`P```````@``
+M`+$$``#\_________X*5`P```````@```.(!``#\_________Y&5`P``````
+M`@```.(!``#\_________YF5`P```````@```((!``#\_________Z.5`P``
+M`````@```(`$``#\_________ZN5`P```````@```-\!``#\_________[.5
+M`P```````@```#T!``#\_________\"5`P```````@````("``#\________
+M_\V5`P```````@````("``#\_________^>5`P``````"P````<```!`#```
+M`````.R5`P```````@```$\$``#\_________Y^6`P```````@```,X"``#\
+M_________\:6`P```````@```#L"``#\_________^.6`P```````@```#T"
+M``#\_________SZ7`P```````@```'("``#\_________TZ7`P```````@``
+M`&L"``#\_________U&9`P```````@```&`$``#\_________YB:`P``````
+M`@```*0"``#\_________Z^=`P``````"P````4```"P!````````+F=`P``
+M`````@```(P$``#\_________\2=`P``````"P````8````P`0```````,Z=
+M`P```````@```(P$``#\__________*=`P``````"P````<```"`#0``````
+M`"N>`P```````@```&T$``#\_________WR>`P```````@```&T$``#\____
+M_____\">`P```````@```&T$``#\_________]J>`P```````@```&T$``#\
+M_________R6?`P```````@```&T$``#\_________S^?`P```````@```&T$
+M``#\_________XZ?`P```````@```&T$``#\_________Y^?`P```````@``
+M`&T$``#\_________^.?`P```````@```(`$``#\__________R?`P``````
+M`@```&T$``#\_________Q:@`P```````@```&T$``#\_________YN@`P``
+M`````@```&T$``#\_________[6@`P```````@```&T$``#\_________^F@
+M`P```````@```(`$``#\_________PNA`P```````@```&T$``#\________
+M_R6A`P```````@```&T$``#\_________VZA`P```````@```&T$``#\____
+M_____W^A`P```````@```&T$``#\_________\.A`P```````@```(`$``#\
+M_________]RA`P```````@```&T$``#\__________:A`P```````@```&T$
+M``#\_________VFB`P```````@```&T$``#\_________X.B`P```````@``
+M`&T$``#\_________]VB`P```````@```&T$``#\_________TVC`P``````
+M`@```&T$``#\_________\BC`P```````@```*L"``#\_________]*C`P``
+M`````@```(`$``#\_________]RC`P```````@```)X"``#\_________P:D
+M`P```````@```&T$``#\_________R6D`P```````@```&T$``#\________
+M_SRD`P```````@```&T$``#\_________V*D`P```````@```&T$``#\____
+M_____\^D`P```````@```(`$``#\_________X2E`P```````@```(`$``#\
+M_________W6F`P```````@```","``#\_________XFF`P```````@```+P"
+M``#\_________ZNF`P```````@```(T$``#\_________\VF`P```````@``
+M`(T$``#\_________^^F`P```````@```(T$``#\_________PZG`P``````
+M`@```(T$``#\_________S"G`P```````@```(T$``#\_________UVG`P``
+M`````@```(T$``#\_________W>G`P```````@```(T$``#\_________Y&G
+M`P```````@```(T$``#\_________["G`P```````@```(T$``#\________
+M_].G`P```````@```(T$``#\__________:G`P```````@```(T$``#\____
+M_____Q2H`P```````@```(T$``#\_________S*H`P```````@```(T$``#\
+M_________U"H`P```````@```(T$``#\_________VZH`P```````@```(T$
+M``#\_________XNH`P```````@```(T$``#\_________ZZH`P```````@``
+M`(T$``#\_________\>H`P```````@```(T$``#\_________^RH`P``````
+M`@```%X$``#\_________PRI`P```````@```%X$``#\_________S2I`P``
+M`````@```%X$``#\_________UFI`P```````@```%X$``#\_________WZI
+M`P```````@```%X$``#\_________Z&I`P```````@```%X$``#\________
+M_\RI`P```````@```%X$``#\_________UVK`P```````@```","``#\____
+M______*K`P```````@```(\$``#\_________RBL`P```````@```(\$``#\
+M_________UZL`P```````@```(\$``#\_________Y2L`P```````@```(\$
+M``#\_________\2L`P```````@```(\$``#\_________]FL`P```````@``
+M`(\$``#\__________&L`P```````@```(\$``#\_________UFM`P``````
+M`@```(\$``#\_________ZBM`P```````@```(\$``#\__________>M`P``
+M`````@```(\$``#\_________TFN`P```````@```(\$``#\_________ZNN
+M`P```````@```(\$``#\_________]^N`P```````@```(\$``#\________
+M_PVO`P```````@```'@"``#\_________QJO`P```````@```(\$``#\____
+M_____TFO`P```````@```(,"``#\_________U:O`P```````@```(\$``#\
+M_________X6O`P```````@```(,"``#\_________Y*O`P```````@```(\$
+M``#\_________\&O`P```````@```(,"``#\_________\ZO`P```````@``
+M`(\$``#\_________P&P`P```````@```(,"``#\_________PZP`P``````
+M`@```(\$``#\_________VVP`P```````@```#\"``#\_________W&S`P``
+M`````@```)H$``#\_________XZS`P```````@```)H$``#\_________ZNS
+M`P```````@```)H$``#\_________\BS`P```````@```)H$``#\________
+M_^6S`P```````@```)H$``#\_________P*T`P```````@```)H$``#\____
+M_____S&T`P```````@```!P#``#\_________WZT`P```````@```)H$``#\
+M_________ZVT`P```````@```!P#``#\_________UBU`P```````@```!P#
+M``#\_________XJU`P```````@```)<$``#\_________YZU`P```````@``
+M`/`"``#\_________ZRU`P```````@```/<"``#\_________[:U`P``````
+M`@```(`$``#\_________]RU`P```````@```)L"``#\_________WJV`P``
+M`````@```(T"``#\_________Y6V`P```````@```!D"``#\_________VVW
+M`P```````@```(4"``#\_________^BW`P```````@```)\"``#\________
+M_U6\`P```````@```(D"``#\_________[R\`P```````@```,`"``#\____
+M______"\`P```````@```(4"``#\_________Y"]`P``````"P````,```"@
+M'0```````*.]`P```````@```/@"``#\_________\^]`P```````@```/@"
+M``#\__________>]`P```````@```/@"``#\_________Q^^`P```````@``
+M`/@"``#\_________UF^`P```````@```(0"``#\_________YZ^`P``````
+M`@```+8"``#\_________SK``P```````@```.("``#\_________V3``P``
+M`````@```(`$``#\__________#"`P```````@```-X"``#\___________"
+M`P```````@```'\"``#\_________\7#`P```````@```#<"``#\________
+M_U?$`P```````@```/D"``#\_________W3$`P```````@```#<"``#\____
+M_____R3&`P```````@```!<#``#\_________T;&`P```````@```!8#``#\
+M_________[G&`P```````@```!<#``#\__________3&`P```````@```!8#
+M``#\___________(`P```````@```'H"``#\_________S?)`P``````"P``
+M``,```#P'0```````.W)`P```````@```&`$``#\_________PG*`P``````
+M"P````,```"0(@```````++*`P```````@```!X"``#\_________\+*`P``
+M`````@```!X"``#\_________U_+`P```````@```!<#``#\_________YK+
+M`P```````@```!8#``#\_________PW,`P```````@```$$"``#\________
+M_T3,`P```````@```#H"``#\_________V#,`P```````@```$$"``#\____
+M_____V_,`P```````@```+("``#\_________XO,`P```````@```$$"``#\
+M_________]+,`P```````@```%,"``#\_________S3-`P```````@```$$"
+M``#\_________TW-`P```````@```%,"``#\_________XG.`P```````@``
+M`+,"``#\_________Y?.`P```````@```)<"``#\_________P//`P``````
+M`@```!P#``#\_________Q+/`P```````@```)0"``#\_________Y?/`P``
+M````"P````$```"`S0,``````*'/`P```````@```'("``#\_________ZS/
+M`P```````@```/L"``#\_________TK0`P```````@```&T$``#\________
+M_VS0`P```````@````<#``#\_________WS0`P```````@```&("``#\____
+M_____Y[0`P```````@````<#``#\_________Z;0`P```````@```$\"``#\
+M_________\70`P``````"P````,```#P)P```````-S0`P```````@```)$"
+M``#\__________C0`P```````@```)$"``#\_________Q31`P```````@``
+M`/`"``#\_________S;1`P```````@```,("``#\_________TW1`P``````
+M`@```*\"``#\_________W#1`P```````@```/`"``#\_________XO1`P``
+M`````@```,("``#\_________Z+1`P```````@```/`"``#\_________[31
+M`P```````@```*\"``#\_________\G1`P```````@```/`"``#\________
+M__S1`P```````@```/<"``#\_________P;2`P```````@```(`$``#\____
+M_____WG2`P```````@```+L"``#\_________Y+2`P```````@````,#``#\
+M_________[G2`P```````@````H#``#\_________\[2`P```````@```*8"
+M``#\_________^'2`P``````"P````8````]`0```````.O2`P```````@``
+M`(P$``#\_________P'3`P```````@```)<$``#\_________Q?3`P``````
+M`@```)<$``#\_________RK3`P```````@```#@"``#\_________TK3`P``
+M`````@```!P#``#\_________X?3`P```````@```*P"``#\_________SK4
+M`P```````@```'<"``#\_________UW4`P```````@```$,"``#\________
+M_X74`P```````@```(T"``#\_________Z[4`P```````@```!L#``#\____
+M_____[;4`P```````@```(T"``#\_________P/5`P```````@```$,"``#\
+M_________TO5`P```````@```,("``#\_________W35`P```````@```!P#
+M``#\_________Z75`P```````@```)<$``#\_________[S5`P```````@``
+M`/`"``#\_________]?5`P```````@```/<"``#\_________^'5`P``````
+M`@```(`$``#\_________Q?6`P```````@```+<"``#\_________V#6`P``
+M````"P````4````(!0```````&K6`P```````@```(P$``#\_________WK6
+M`P```````@```/`"``#\_________^?6`P```````@```/<"``#\________
+M__'6`P```````@```(`$``#\_________S77`P```````@```+L"``#\____
+M_____U77`P```````@````,#``#\_________W[7`P```````@````H#``#\
+M_________Y/7`P```````@```*8"``#\_________Z;7`P``````"P````8`
+M```]`0```````+#7`P```````@```(P$``#\_________\77`P```````@``
+M`)<$``#\_________]K7`P```````@```)<$``#\_________^W7`P``````
+M`@```#@"``#\___________7`P```````@```/`"``#\_________P?8`P``
+M`````@```(T"``#\_________ZG8`P```````@```'T"``#\_________\O8
+M`P```````@```$,"``#\__________/8`P```````@```(T"``#\________
+M_Q?9`P```````@```!L#``#\_________Q_9`P```````@```(T"``#\____
+M_____T+9`P```````@```$,"``#\_________W39`P```````@```/`"``#\
+M_________X;9`P```````@```*\"``#\_________Z39`P```````@```!P#
+M``#\_________]?9`P```````@```)<$``#\_________^S9`P```````@``
+M`/`"``#\__________K9`P```````@```/<"``#\_________P3:`P``````
+M`@```(`$``#\_________R7:`P```````@```/P"``#\_________TC:`P``
+M`````@```$,"``#\_________X3:`P```````@```!P#``#\_________Z/:
+M`P```````@```)<$``#\_________[S:`P```````@```/`"``#\________
+M_\K:`P```````@```/<"``#\_________]3:`P```````@```(`$``#\____
+M______O:`P```````@````H#``#\_________Q#;`P```````@```*8"``#\
+M_________R7;`P```````@```)<$``#\_________SK;`P```````@```)<$
+M``#\_________TW;`P```````@```#@"``#\_________VS;`P```````@``
+M`/`"``#\_________W?;`P```````@````P#``#\_________X_;`P``````
+M`@```&T$``#\_________]?;`P```````@```#,"``#\_________^+;`P``
+M`````@```%0"``#\_________R_<`P```````@```*<"``#\_________UO<
+M`P```````@```!P#``#\__________O<`P```````@```%<"``#\________
+M_P?>`P```````@```$,"``#\_________SC>`P```````@```)H"``#\____
+M_____U'>`P```````@```-D"``#\_________XO>`P```````@```.H"``#\
+M_________[S>`P```````@```)@"``#\_________^+>`P```````@```!P#
+M``#\_________XK?`P```````@```%<"``#\_________YG@`P```````@``
+M`)H"``#\_________\O@`P```````@```,4"``#\_________QOA`P``````
+M`@```!P#``#\_________RWA`P```````@````\#``#\_________\+A`P``
+M`````@```!L#``#\_________U'B`P```````@```!L#``#\_________U[B
+M`P```````@```&P"``#\_________XGB`P```````@```!L#``#\________
+M_Z?B`P```````@```$,"``#\_________\WB`P```````@```-@"``#\____
+M_____V+C`P```````@```&T$``#\_________X;C`P```````@```(`$``#\
+M_________[3C`P```````@```&T$``#\_________]3C`P```````@```&T$
+M``#\_________U7D`P```````@```(`$``#\_________\OD`P```````@``
+M`'L"``#\_________^?D`P```````@```!,#``#\__________3D`P``````
+M`@```#,"``#\_________R/E`P```````@```%0"``#\_________U3E`P``
+M`````@```&H"``#\_________W[E`P```````@```#,"``#\_________SGF
+M`P```````@```(`$``#\_________Y[F`P```````@```&T$``#\________
+M_\#F`P```````@```(`$``#\_________^SF`P```````@```&T$``#\____
+M_____POG`P```````@```&T$``#\_________V?G`P```````@```!P#``#\
+M__________'G`P```````@```/`"``#\_________Q[H`P```````@```/`"
+M``#\_________ROH`P```````@```#,"``#\_________VSH`P```````@``
+M`!P#``#\_________XCH`P```````@```!P#``#\_________ZGH`P``````
+M`@```%D$``#\_________\CH`P```````@```/<"``#\_________]+H`P``
+M`````@```(`$``#\_________X/I`P```````@```&("``#\_________Z?I
+M`P```````@````H#``#\_________[SI`P```````@```*8"``#\________
+M_\_I`P``````"P````8````]`0```````-GI`P```````@```(P$``#\____
+M_____^[I`P```````@```)<$``#\_________P/J`P```````@```)<$``#\
+M_________Q_J`P```````@```#@"``#\_________S[J`P```````@```*H"
+M``#\_________VCJ`P```````@```!P#``#\_________XCJ`P```````@``
+M`/<"``#\_________Y+J`P```````@```(`$``#\_________]/J`P``````
+M`@````H#``#\_________^CJ`P```````@```*8"``#\__________OJ`P``
+M````"P````8````]`0````````7K`P```````@```(P$``#\_________QKK
+M`P```````@```)<$``#\_________R_K`P```````@```)<$``#\________
+M_T;K`P```````@```#@"``#\_________U[K`P```````@```%0"``#\____
+M_____]+K`P```````@```&T$``#\__________?K`P```````@```(`$``#\
+M_________R/L`P```````@```&T$``#\_________T+L`P```````@```&T$
+M``#\_________Q?M`P``````"P```"D"`````````````!_M`P```````@``
+M`,D"``#\_________[GM`P```````@```,\"``#\_________]KM`P``````
+M`@```!P#``#\_________V#N`P```````@```$`"``#\_________Y7N`P``
+M`````@```+<"``#\_________\[N`P```````@```%@"``#\_________^7N
+M`P```````@```)<$``#\__________WN`P```````@```)<$``#\________
+M_S;O`P```````@```(`$``#\_________TWO`P```````@```&T$``#\____
+M_____VWO`P```````@```&T$``#\_________XGO`P```````@```#,"``#\
+M_________Y'O`P```````@```*4"``#\_________]KO`P```````@```'L"
+M``#\_________S?P`P```````@```!P#``#\_________ZGP`P```````@``
+M`(\"``#\_________[CP`P```````@```!H"``#\_________^3P`P``````
+M`@```'$"``#\_________SSQ`P```````@```&T$``#\_________VGQ`P``
+M`````@```&T$``#\_________W[Q`P```````@```%4"``#\_________XOQ
+M`P```````@```(("``#\_________ZOQ`P```````@```&T$``#\________
+M_[OQ`P```````@```&T$``#\_________\OQ`P```````@```&T$``#\____
+M_____]OQ`P```````@```&T$``#\_________TOR`P```````@```&T$``#\
+M_________W+R`P```````@```&T$``#\_________X'R`P```````@```/8"
+M``#\_________[[R`P```````@```&T$``#\_________^;R`P```````@``
+M`&T$``#\_________W/S`P```````@```&T$``#\_________YKS`P``````
+M`@```&T$``#\_________\'S`P```````@```%D$``#\__________3S`P``
+M`````@```!P#``#\_________RST`P```````@```)<$``#\_________T#T
+M`P```````@```/`"``#\_________V'T`P```````@```'0"``#\________
+M_VOT`P```````@```(`$``#\_________Y+T`P``````"P````$```#P\`,`
+M`````*;T`P```````@```'@$``#\_________\KT`P```````@```&T$``#\
+M_________^KT`P```````@```&T$``#\_________P[U`P```````@```&T$
+M``#\_________SKU`P```````@```&T$``#\_________VGU`P```````@``
+M`&T$``#\_________XOU`P```````@```&T$``#\_________P#V`P``````
+M`@```&T$``#\_________RKV`P```````@```&T$``#\_________UGV`P``
+M`````@```&T$``#\_________WOV`P```````@```&T$``#\__________CV
+M`P```````@```&T$``#\_________QKW`P```````@```&T$``#\________
+M_ZCW`P```````@```%D$``#\_________^'W`P```````@```)<$``#\____
+M______7W`P```````@```/`"``#\_________P3X`P```````@```/<"``#\
+M_________P[X`P```````@```(`$``#\_________S+X`P``````"P````$`
+M``#0\`,``````$KX`P```````@```'@$``#\_________W;X`P```````@``
+M`&T$``#\_________Y[X`P```````@```&T$``#\_________\OX`P``````
+M`@```&T$``#\__________+X`P```````@```&T$``#\_________R_Y`P``
+M`````@```%D$``#\_________T_Y`P```````@```!P#``#\_________X'Y
+M`P```````@```)<$``#\_________Z/Y`P``````"P```,\"````````````
+M`+7Y`P```````@```'@$``#\_________^#Y`P```````@```&T$``#\____
+M_____P+Z`P```````@```&T$``#\_________[[Z`P```````@```&T$``#\
+M_________^OZ`P```````@```&T$``#\_________R'[`P```````@```&T$
+M``#\_________U/[`P``````"P````4````H!0```````%W[`P```````@``
+M`(P$``#\_________YC[`P```````@```*@"``#\__________?[`P``````
+M`@```*<"``#\_________P+\`P```````@```'<"``#\_________ZW\`P``
+M`````@```)H"``#\_________]#\`P```````@```$,"``#\_________P3]
+M`P```````@```!P#``#\_________Y_]`P```````@```)H"``#\________
+M_[W]`P```````@```$,"``#\_________PC^`P```````@```.H"``#\____
+M_____R3^`P```````@```*@"``#\_________T?_`P```````@```&T$``#\
+M_________VO_`P```````@```&T$``#\_________XC_`P```````@```&T$
+M``#\__________O_`P```````@```&T$``#\_________R$`!````````@``
+M`&T$``#\_________X<`!````````@```-D"``#\_________]H`!```````
+M`@```&T$``#\_________P0!!````````@```&T$``#\_________SD!!```
+M`````@```&T$``#\_________VX!!````````@```*@"``#\_________WX!
+M!````````@```$@"``#\_________W`"!````````@```(H"``#\________
+M_ZH"!````````@```&`$``#\_________X8#!````````@```&`$``#\____
+M______`#!````````@```&`$``#\_________R$$!````````@```&T$``#\
+M_________U8$!````````@```&T$``#\_________Z8$!````````@```&T$
+M``#\_________WL%!````````@```&`$``#\_________]X&!````````@``
+M`&`$``#\_________X('!````````@```&`$``#\_________Y4'!```````
+M"P````,````8*````````"0(!````````@```(`$``#\_________X<(!```
+M`````@```&T$``#\_________[$(!````````@```&T$``#\_________PD)
+M!````````@```&T$``#\_________[()!````````@```&T$``#\________
+M_RL*!````````@```-H"``#\_________SL*!````````@```-H"``#\____
+M______@*!````````@```)H"``#\_________Q$+!````````@```$,"``#\
+M_________\<+!````````@```+D"``#\_________T(-!````````@````<#
+M``#\_________U(-!````````@```&("``#\_________YT-!````````@``
+M`$T"``#\_________Q$.!````````@```)H"``#\_________QP.!```````
+M`@```+D"``#\_________S4.!````````@```$,"``#\_________Y4.!```
+M`````@```!P#``#\_________QX/!````````@```!P"``#\_________UH/
+M!````````@```!P#``#\_________P<0!````````@```!P#``#\________
+M_SH0!````````@```&("``#\_________TX0!````````@```(T"``#\____
+M_____ZT0!````````@```&T$``#\_________]00!````````@```%<"``#\
+M_________X@1!````````@```%D$``#\_________Y01!````````@````P#
+M``#\_________[01!````````@```!P#``#\_________U<2!````````@``
+M`&("``#\_________XP2!````````@````H#``#\_________Z$2!```````
+M`@```*8"``#\_________[02!```````"P````8````]`0```````+X2!```
+M`````@```(P$``#\_________],2!````````@```)<$``#\_________^@2
+M!````````@```)<$``#\__________\2!````````@```#@"``#\________
+M_R03!````````@```&T$``#\_________YL3!````````@```&0"``#\____
+M_____Z<3!````````@```.\"``#\_________^T3!````````@```,,"``#\
+M__________H3!````````@```(("``#\_________T04!````````@```%`"
+M``#\_________Z,4!````````@```&T$``#\_________\H4!````````@``
+M`&T$``#\_________]P4!````````@```(("``#\_________R45!```````
+M`@```/`"``#\_________S05!````````@```/<"``#\_________SX5!```
+M`````@```(`$``#\_________VP5!````````@````H#``#\_________X$5
+M!````````@```)<$``#\_________Y85!````````@```)<$``#\________
+M_ZT5!````````@```#@"``#\_________[T5!````````@```&T$``#\____
+M_____QD6!````````@```'$"``#\_________U06!````````@```)<$``#\
+M_________]86!````````@```'$"``#\_________PP7!````````@```(`$
+M``#\_________R07!````````@```&T$``#\_________S\7!````````@``
+M`&T$``#\_________UL7!````````@```#,"``#\_________V,7!```````
+M`@```*4"``#\_________X<7!````````@```(\"``#\_________Z(8!```
+M`````@```&`$``#\_________\$8!````````@```&T$``#\__________48
+M!````````@```&T$``#\_________T(9!````````@```&T$``#\________
+M_V<9!```````"P````4```!X!0```````'$9!````````@```(P$``#\____
+M_____XP9!````````@```"H"``#\_________\89!````````@```&T$``#\
+M_________^49!````````@```&T$``#\_________P0:!````````@```&T$
+M``#\_________P\:!````````@```$@"``#\_________R@:!````````@``
+M`&T$``#\_________Q,;!````````@```&D"``#\_________R8;!```````
+M`@```$P"``#\_________S<;!````````@```)<"``#\_________U$;!```
+M`````@```%D$``#\_________V8;!```````"P```$8"`````````````'H;
+M!````````@```'@$``#\_________],;!````````@```)0"``#\________
+M_^L;!````````@```,X"``#\__________X;!````````@```)<"``#\____
+M_____TL<!```````"P```.<"`````````````&P<!````````@```'("``#\
+M_________WP<!````````@```&L"``#\_________X<<!````````@```/L"
+M``#\_________PL=!````````@```!H#``#\_________P`>!````````@``
+M`'`"``#\_________ST>!````````@```'`"``#\_________WH>!```````
+M`@```#P"``#\_________RX@!````````@```.D"``#\_________VX@!```
+M`````@```)T"``#\_________Z8@!````````@```#P"``#\_________RLB
+M!````````@```&`$``#\_________^\B!````````@```*T"``#\________
+M_R\C!````````@```*T"``#\_________W,C!````````@```)8"``#\____
+M_____X4C!````````@```$0"``#\_________ZPC!````````@```#P"``#\
+M__________(C!````````@```&`$``#\__________\C!````````@````X#
+M``#\_________Y(E!````````@```-\"``#\_________Z(E!````````@``
+M`&4"``#\_________[(E!````````@```"@"``#\_________\(E!```````
+M`@```&D"``#\_________]PE!````````@```%D$``#\__________$E!```
+M````"P```$8"``````````````LF!````````@```'@$``#\_________S0F
+M!````````@```!P#``#\_________[4F!````````@```%@"``#\________
+M__0F!````````@```!P#``#\_________STG!````````@```*P"``#\____
+M_____UTG!````````@```$`"``#\_________VHG!````````@```+<"``#\
+M_________WLG!````````@```#P"``#\_________X\G!````````@```$P"
+M``#\_________YHG!````````@```)<"``#\_________\TG!````````@``
+M`#P"``#\_________S,H!````````@```)0"``#\_________TLH!```````
+M`@```,X"``#\_________UXH!````````@```)<"``#\_________ZLH!```
+M````"P````8#`````````````,PH!````````@```'("``#\_________]PH
+M!````````@```&L"``#\_________^<H!````````@```/L"``#\________
+M_V@I!````````@```)0"``#\_________WPI!````````@```,X"``#\____
+M_____X\I!````````@```)<"``#\_________[$I!````````@```&`$``#\
+M__________(I!```````"P````8#`````````````!0J!````````@```'("
+M``#\_________R,J!````````@```&L"``#\_________RXJ!````````@``
+M`/L"``#\__________0K!````````@```%T"``#\_________TXL!```````
+M`@```%T"``#\_________WPL!````````@```,H"``#\_________Z4M!```
+M`````@```$P"``#\_________[<M!````````@```)<"``#\_________^XM
+M!````````@```&`$``#\_________R\N!````````@```$P"``#\________
+M_SHN!````````@```)<"``#\_________Z`N!````````@```)0"``#\____
+M_____[PN!````````@```,X"``#\_________\\N!````````@```)<"``#\
+M_________R(O!```````"P```(@"`````````````'`O!````````@```'("
+M``#\_________X$O!````````@```&L"``#\_________XPO!````````@``
+M`/L"``#\__________\O!````````@```)0"``#\_________Q,P!```````
+M`@```,X"``#\_________R8P!````````@```)<"``#\_________T@P!```
+M`````@```&`$``#\_________Y4P!```````"P```(@"`````````````-XP
+M!````````@```'("``#\_________^XP!````````@```&L"``#\________
+M__DP!````````@```/L"``#\_________ZDQ!````````@```&T$``#\____
+M_____XXU!````````@```)$"``#\_________Z,U!````````@```!4#``#\
+M_________Q<V!````````@```!P#``#\_________Q(W!````````@```!L#
+M``#\_________T0Z!```````"P```"H"`````````````%LZ!````````@``
+M`'@$``#\__________$Z!```````"P```-,"``````````````@[!```````
+M`@```'@$``#\_________U8[!````````@```%D$``#\_________W8[!```
+M`````@```%D$``#\__________X[!````````@```!P#``#\_________Q$\
+M!````````@```)@"``#\_________S`\!```````"P```"H"````````````
+M`$@\!````````@```'@$``#\_________]X\!````````@```!P#``#\____
+M______$\!````````@```*<"``#\_________PP]!```````"P```-,"````
+M`````````"0]!````````@```'@$``#\_________[$]!````````@```"<"
+M``#\__________P]!````````@```)H"``#\_________R$^!````````@``
+M`'<"``#\_________RP^!````````@```*<"``#\_________^0^!```````
+M`@```!P#``#\__________4_!````````@```)H"``#\_________SI`!```
+M`````@```)H"``#\_________UY`!````````@```'T"``#\_________]-`
+M!````````@```(0"``#\_________^Q`!````````@```.4"``#\________
+M_TM!!````````@````$#``#\_________P5"!````````@```)H"``#\____
+M_____V5"!````````@```(0"``#\_________WY"!````````@```.4"``#\
+M_________^9"!````````@```$D"``#\_________WI#!````````@```-8"
+M``#\_________^%#!````````@```(0"``#\__________I#!````````@``
+M`.4"``#\_________RQ%!````````@```(0"``#\_________T5%!```````
+M`@```.4"``#\_________SY&!````````@```!P#``#\_________TE&!```
+M`````@```"("``#\_________U%&!````````@````\#``#\_________YE&
+M!````````@```'8"``#\_________]%&!````````@```!P#``#\________
+M_SU'!````````@```!P#``#\_________YU'!````````@```!P#``#\____
+M______U'!````````@```!P#``#\_________V%(!````````@```!P#``#\
+M_________R1*!````````@```!P#``#\_________VQ*!````````@```+,"
+M``#\_________WE*!````````@```)<"``#\_________[)*!````````@``
+M`,("``#\_________^E*!````````@```+<"``#\_________P-+!```````
+M`@```.P"``#\_________RI+!````````@```!P#``#\_________WQ+!```
+M`````@```$`"``#\_________Y%+!````````@```+,"``#\_________YQ+
+M!````````@```)<"``#\__________5+!````````@```)0"``#\________
+M_P5,!````````@```#D"``#\_________UE,!```````"P```/\"````````
+M`````&-,!````````@```'("``#\_________VY,!````````@```/L"``#\
+M_________[Q,!````````@```)0"``#\_________\Q,!````````@```#D"
+M``#\_________R1-!```````"P```/\"`````````````"Y-!````````@``
+M`'("``#\_________SE-!````````@```/L"``#\_________Y5-!```````
+M`@```)0"``#\_________ZE-!````````@```#D"``#\_________P5.!```
+M````"P```/\"``````````````].!````````@```'("``#\_________QI.
+M!````````@```/L"``#\_________R1.!````````@```(`$``#\________
+M_X5.!````````@```)0"``#\_________Z1.!````````@```#D"``#\____
+M_____[=.!````````@```)<"``#\_________Q%/!```````"P```/\"````
+M`````````!M/!````````@```'("``#\_________R9/!````````@```/L"
+M``#\_________TI0!````````@```)<"``#\_________\M0!````````@``
+M`!4#``#\_________]=0!````````@```)<"``#\_________T%1!```````
+M`@```)0"``#\_________]U1!```````"P````$```!03P0``````.=1!```
+M`````@```'("``#\__________)1!````````@```/L"``#\_________VI2
+M!````````@```)0"``#\_________XA2!````````@```,X"``#\________
+M_Z12!````````@```)<"``#\__________I2!```````"P```&\"````````
+M``````=3!````````@```'("``#\_________QA3!````````@```&L"``#\
+M_________R-3!````````@```/L"``#\_________WI3!````````@```)0"
+M``#\_________YA3!````````@```,X"``#\_________[13!````````@``
+M`)<"``#\_________Q)4!```````"P```&\"`````````````!]4!```````
+M`@```'("``#\_________S!4!````````@```&L"``#\_________SM4!```
+M`````@```/L"``#\_________Y-4!````````@```)0"``#\_________[14
+M!````````@```,X"``#\_________]!4!````````@```)<"``#\________
+M_SI5!```````"P```&\"`````````````$=5!````````@```'("``#\____
+M_____UA5!````````@```&L"``#\_________V-5!````````@```/L"``#\
+M_________[I5!````````@```)0"``#\_________]Q5!````````@```,X"
+M``#\__________95!````````@```)<"``#\_________VI6!```````"P``
+M`&\"`````````````'M6!````````@```'("``#\_________XI6!```````
+M`@```&L"``#\_________Y56!````````@```/L"``#\_________^!6!```
+M`````@```)0"``#\_________QY7!````````@```/@"``#\_________RU7
+M!````````@```)<"``#\_________T=7!```````"P```&\"````````````
+M`%)7!````````@```/L"``#\_________X-7!```````"P````,```!X*```
+M`````/)7!````````@```!0#``#\_________SI8!````````@```&T$``#\
+M_________WA8!````````@```&T$``#\_________Z98!````````@```&T$
+M``#\_________^)8!````````@```&T$``#\_________T)9!````````@``
+M`!0#``#\_________W59!````````@```&T$``#\_________ZY9!```````
+M`@```&T$``#\_________]A9!````````@```&T$``#\_________QA:!```
+M`````@```&T$``#\_________WQ;!````````@````<#``#\_________]9<
+M!````````@```$P"``#\_________T5>!````````@```/L"``#\________
+M_V]>!````````@```#X"``#\_________WM>!````````@```'8"``#\____
+M_____Y1>!````````@```$,"``#\_________P5?!````````@```'T"``#\
+M_________WI?!````````@```'<"``#\__________9?!````````@```)H"
+M``#\_________P%@!````````@```+D"``#\_________PQ@!````````@``
+M`!L#``#\_________SE@!````````@```.4"``#\_________SYA!```````
+M"P````<```"`$0```````(IA!````````@```/$"``#\_________V-C!```
+M`````@```(`$``#\_________VYC!````````@```)<"``#\_________WYC
+M!````````@```.`"``#\_________XIC!````````@```(`$``#\________
+M_Y5C!````````@```)<"``#\_________^1C!````````@```)0"``#\____
+M_____R1D!```````"P```+\"`````````````"]D!````````@```/L"``#\
+M_________S]D!````````@```(`$``#\_________TMD!````````@```(`$
+M``#\_________W1E!````````@```$P"``#\_________W]E!````````@``
+M`)<"``#\_________\)E!````````@```.`"``#\_________]5E!```````
+M`@```$P"``#\_________^=E!````````@```)<"``#\_________R]F!```
+M`````@```)0"``#\_________T-F!````````@```,X"``#\_________U9F
+M!````````@```)<"``#\_________Z)F!```````"P````$```!P9`0`````
+M`*]F!````````@```'("``#\_________[YF!````````@```&L"``#\____
+M_____\EF!````````@```/L"``#\_________Q-G!````````@```)0"``#\
+M_________U1G!```````"P```&\"`````````````%]G!````````@```/L"
+M``#\_________Z!G!````````@```)0"``#\_________[!G!````````@``
+M`,X"``#\_________\IG!````````@```)<"``#\_________PUH!```````
+M"P```&\"`````````````!AH!````````@```/L"``#\_________U)H!```
+M`````@```/`"``#\_________X1H!````````@```/<"``#\_________XYH
+M!````````@```(`$``#\_________[9H!````````@```+L"``#\________
+M_]5H!````````@````,#``#\_________Q1I!````````@````H#``#\____
+M_____REI!````````@```*8"``#\_________SQI!```````"P````8```!3
+M`0```````$9I!````````@```(P$``#\_________UMI!````````@```)<$
+M``#\_________W!I!````````@```)<$``#\_________[9I!````````@``
+M`#@"``#\_________]9I!````````@```!P#``#\_________Q)J!```````
+M`@```*P"``#\_________RYK!````````@```!H#``#\_________V5K!```
+M`````@```*("``#\_________\UK!````````@```*("``#\_________TML
+M!````````@```!L"``#\_________X9L!````````@```!L"``#\________
+M_]AL!````````@```!L"``#\_________Q-M!````````@```!L"``#\____
+M_____QMN!```````"P````$```"0:P0``````$MN!````````@```!T"``#\
+M_________ZMN!```````"P````$```"0:P0``````-MN!````````@```!T"
+M``#\_________Z)O!```````"P````$```"0:P0``````-1O!````````@``
+M`!T"``#\_________ZQP!```````"P````$```"0:P0``````,YP!```````
+M`@```!T"``#\_________SUQ!```````"P````$```"0:P0``````%YQ!```
+M`````@```!T"``#\_________^QR!````````@```#("``#\_________V9S
+M!````````@```-("``#\_________[IS!````````@```!L"``#\________
+M_X!T!````````@```*,"``#\_________U=U!````````@```!H#``#\____
+M_____X1U!````````@```-$"``#\_________YYU!````````@```"$"``#\
+M__________1V!````````@```*("``#\_________\!X!````````@```(<"
+M``#\_________SIY!````````@```*,"``#\_________\IY!````````@``
+M`!L"``#\__________9Y!````````@```!L"``#\_________W1Z!```````
+M`@```)D"``#\__________AZ!````````@```!L"``#\_________YA]!```
+M`````@```!L"``#\_________W.`!````````@```&T$``#\_________Y>`
+M!````````@```&T$``#\_________U.!!````````@```(`$``#\________
+M_W.!!````````@```&T$``#\_________Y>!!````````@```&T$``#\____
+M_____^"!!````````@```(`$``#\_________P""!````````@```&T$``#\
+M_________R>"!````````@```&T$``#\_________W^"!````````@```(`$
+M``#\_________Y^"!````````@```&T$``#\_________[Z"!````````@``
+M`&T$``#\_________P:#!````````@```(`$``#\_________TV#!```````
+M`@```&0"``#\_________V"#!````````@```*P"``#\_________XN#!```
+M`````@```.\"``#\_________\Z#!````````@```,,"``#\__________^#
+M!````````@```$4"``#\_________PV$!````````@```(`$``#\________
+M_U2$!````````@```#@"``#\_________W&$!````````@```#`"``#\____
+M_____ZR$!````````@```'$"``#\_________]*$!````````@```%D$``#\
+M_________]^$!````````@````P#``#\_________P2%!````````@```!P#
+M``#\_________R^%!````````@````H#``#\_________T2%!````````@``
+M`*8"``#\_________UF%!````````@```)<$``#\_________VZ%!```````
+M`@```)<$``#\_________X:%!````````@```#@"``#\_________Z^%!```
+M`````@```!P#``#\_________\&%!````````@```.\"``#\_________P6&
+M!````````@```+<"``#\_________W2&!````````@```!P#``#\________
+M_]B&!````````@```+<"``#\_________XJ'!````````@```!H#``#\____
+M_____S2(!````````@```!P#``#\_________U2(!````````@```(L"``#\
+M_________Y^(!````````@```!H#``#\_________T*)!````````@```)<$
+M``#\_________VV)!````````@```/`"``#\_________WN)!````````@``
+M`/<"``#\_________X6)!````````@```(`$``#\_________ZV)!```````
+M`@```+L"``#\_________\:)!````````@````,#``#\__________2)!```
+M`````@````H#``#\_________PF*!````````@```*8"``#\_________QZ*
+M!````````@```)<$``#\_________S.*!````````@```)<$``#\________
+M_V&*!````````@```#@"``#\_________]:*!````````@```(L"``#\____
+M_____^F*!````````@```-T"``#\_________YN+!````````@```!H#``#\
+M_________\R+!````````@```.\"``#\_________R6-!````````@```$`"
+M``#\_________T^-!````````@```%@"``#\_________VZ-!````````@``
+M`#P"``#\_________]Z-!````````@```!P#``#\__________^-!```````
+M`@```(L"``#\_________TR.!````````@```(L"``#\_________WR.!```
+M`````@```(L"``#\_________Y*.!````````@```!H#``#\_________\N.
+M!````````@```'P"``#\_________^2/!````````@```"L"``#\________
+M_PF0!````````@```!P#``#\_________QV0!````````@```/`"``#\____
+M_____RN0!````````@```/<"``#\_________S60!````````@```(`$``#\
+M_________V.0!````````@````H#``#\_________WB0!````````@```*8"
+M``#\_________Y&0!````````@```)<$``#\_________Z:0!````````@``
+M`)<$``#\_________\^0!````````@```#@"``#\_________^R0!```````
+M`@```*H"``#\_________T:1!````````@````@#``#\_________V&1!```
+M`````@```(L"``#\_________YB1!````````@```(L"``#\_________\:1
+M!````````@```(L"``#\_________]>1!````````@```'P"``#\________
+M_^F1!````````@```"8"``#\_________Q"2!````````@```'P"``#\____
+M_____U:3!````````@```.\"``#\_________V^4!````````@```$`"``#\
+M_________X^4!````````@```%@"``#\_________]&4!````````@```*P"
+M``#\_________Q&5!````````@```(L"``#\_________S"5!````````@``
+M`'4"``#\_________Y"5!````````@```&H"``#\_________Z:5!```````
+M"P```"D"`````````````+&5!````````@```,D"``#\_________[Z5!```
+M`````@```'D"``#\_________\F5!````````@```&H"``#\_________Y.7
+M!```````"P````4```"8!0```````)V7!````````@```(P$``#\________
+M_PN8!````````@```"8"``#\_________\N8!````````@```)("``#\____
+M_____SR9!```````"P```"D"`````````````$>9!````````@```,D"``#\
+M_________W^9!```````"P````4```#H!0```````(F9!````````@```(P$
+M``#\_________YF9!````````@```*P"``#\_________\"9!````````@``
+M`.\"``#\_________PZ:!````````@```)("``#\_________R&:!```````
+M`@```)`"``#\_________U&:!````````@```%@"``#\_________R>;!```
+M`````@```!H"``#\_________S2;!````````@```/P"``#\_________QV<
+M!````````@```*P"``#\_________WR<!````````@```!P#``#\________
+M_\F<!````````@```$`"``#\_________^V<!````````@```+<"``#\____
+M_____PV=!````````@```%@"``#\_________[B=!````````@```*D"``#\
+M_________T:>!````````@```!P#``#\_________\*>!````````@```*D"
+M``#\_________UJ?!````````@```)<$``#\_________W2?!````````@``
+M`)<$``#\_________Z2?!````````@```*D"``#\_________Q:@!```````
+M`@```)<$``#\_________VN@!````````@```)<$``#\_________Y&A!```
+M`````@```-<"``#\_________YZA!````````@```,L"``#\_________["A
+M!````````@```)4"``#\_________\*A!````````@```)4"``#\________
+M_\^A!````````@```&<"``#\_________]RA!````````@```,P"``#\____
+M_____^FA!````````@```!$#``#\__________FA!````````@```*`"``#\
+M_________R6B!````````@```!P#``#\_________WNB!````````@```$`"
+M``#\_________YVB!````````@```+<"``#\_________[VB!````````@``
+M`%@"``#\_________PRC!````````@```#P"``#\_________R"C!```````
+M"P````8```!I`0```````"JC!````````@```(P$``#\_________S>C!```
+M`````@```#P"``#\_________U>C!````````@```!P#``#\_________YRC
+M!````````@```*P"``#\__________6D!````````@```,,"``#\________
+M__^D!````````@```(`$``#\_________Q>E!````````@```,,"``#\____
+M_____R&E!````````@```(`$``#\_________\NE!````````@```&T$``#\
+M_________^"E!````````@```&T$``#\_________QBF!````````@```(`$
+M``#\_________S6F!````````@```+<"``#\_________U&F!````````@``
+M`$4"``#\_________V>F!````````@```$4"``#\_________W6F!```````
+M`@```(`$``#\_________YVF!````````@```&T$``#\_________\ZF!```
+M`````@```&T$``#\_________^ZF!````````@```&T$``#\_________PNG
+M!````````@```(`$``#\_________QNG!```````"P````4````@!@``````
+M`"6G!````````@```(P$``#\_________T&G!```````"P````8```!]`0``
+M`````$NG!````````@```(P$``#\_________]:G!````````@```)("``#\
+M_________RJH!````````@```'$"``#\_________TRH!````````@```!P#
+M``#\_________YBH!````````@```$`"``#\_________[VH!````````@``
+M`+<"``#\_________]VH!````````@```%@"``#\_________R&I!```````
+M`@```'$"``#\_________U2I!````````@```*P"``#\_________V:I!```
+M`````@```#P"``#\_________Y2I!````````@```!P#``#\_________^:I
+M!````````@```$`"``#\_________PVJ!````````@```+<"``#\________
+M_RVJ!````````@```%@"``#\_________V>J!````````@```!P#``#\____
+M_____ZVJ!````````@```*P"``#\_________QZK!```````"P````,````X
+M*0```````'>K!````````@```'$"``#\_________XBK!````````@```&T$
+M``#\_________ZBK!````````@```*X"``#\_________\2K!````````@``
+M`*X"``#\_________^"K!````````@```*X"``#\__________RK!```````
+M`@```*X"``#\_________QVL!````````@```&,"``#\_________S^L!```
+M`````@```&,"``#\_________V&L!````````@```&,"``#\_________X.L
+M!````````@```&,"``#\_________["L!````````@```&,"``#\________
+M_]*L!````````@```&,"``#\_________^ZL!````````@```*X"``#\____
+M_____PJM!````````@```*X"``#\_________R:M!````````@```*X"``#\
+M_________U.M!````````@```&,"``#\_________V^M!````````@```*X"
+M``#\_________\"M!````````@```(`$``#\_________S.N!````````@``
+M`&T$``#\_________TVN!````````@```&T$``#\_________UZN!```````
+M`@```(`$``#\_________VVN!````````@```+<"``#\_________WRN!```
+M`````@```(`$``#\_________Y.N!````````@```*X"``#\_________YVN
+M!````````@```(`$``#\_________[FN!````````@```*X"``#\________
+M_\.N!````````@```(`$``#\__________"N!````````@```&,"``#\____
+M______JN!````````@```(`$``#\_________Q.O!````````@```*X"``#\
+M_________QVO!````````@```(`$``#\_________S:O!````````@```*X"
+M``#\_________T"O!````````@```(`$``#\_________T>O!````````@``
+M`&$"``#\_________U.O!````````@```),"``#\_________W*O!```````
+M`@```&,"``#\_________WNP!````````@```!H#``#\_________Y>P!```
+M`````@```!H#``#\_________P"Q!````````@```"0"``#\_________R.R
+M!````````@```(`$``#\_________]ZR!````````@```(`$``#\________
+M__VR!````````@```&T$``#\_________QFS!````````@```&T$``#\____
+M_____]RS!````````@```(`$``#\__________*S!````````@```&T$``#\
+M_________P*T!````````@```&T$``#\_________YRT!````````@```(`$
+M``#\_________[*T!````````@```&T$``#\_________\*T!````````@``
+M`&T$``#\_________W&U!````````@```,0"``#\_________[6U!```````
+M`@````0#``#\_________]ZU!````````@```/H"``#\__________*U!```
+M`````@```,0"``#\_________RFV!````````@```&T$``#\_________T:V
+M!````````@```&T$``#\_________WNV!````````@```&T$``#\________
+M_YBV!````````@```&T$``#\_________^6V!````````@```.8"``#\____
+M_____P"W!````````@```"`"``#\_________VRW!````````@```(`$``#\
+M_________XVW!````````@```&T$``#\_________ZRW!````````@```&T$
+M``#\_________\:X!```````"P```"T"`````````````/:X!````````@``
+M`-0"``#\_________QBY!````````@```,@"``#\_________RFY!```````
+M`@`````#``#\_________SNY!````````@`````#``#\_________]6Y!```
+M`````@```&T$``#\__________BY!````````@```&T$``#\_________RRZ
+M!````````@```(`$``#\_________T:Z!````````@```&T$``#\________
+M_Y*Z!````````@```&T$``#\__________FZ!````````@```&T$``#\____
+M_____VN[!````````@```&T$``#\_________]"[!````````@```(`$``#\
+M__________&[!````````@```&T$``#\_________PZ\!````````@```&T$
+M``#\_________V.\!````````@```+X"``#\_________VV\!````````@``
+M`)X"``#\_________Z^\!````````@```(`$``#\_________R^]!```````
+M`@```(`$``#\_________Z^]!````````@```(`$``#\_________PJ^!```
+M`````@```'0"``#\_________Q2^!````````@```(`$``#\_________S&^
+M!````````@```&T$``#\_________TZ^!````````@```&T$``#\________
+M_\N^!````````@```(`$``#\_________]>^!````````@```#,"``#\____
+M_____^N^!````````@```*4"``#\__________F^!````````@```&T$``#\
+M_________Q*_!````````@```&T$``#\_________RZ_!````````@```&T$
+M``#\_________R7`!````````@```&T$``#\_________R7"!````````@``
+M`$P"``#\_________S?"!````````@```)<"``#\_________Y#"!```````
+M`@```$P"``#\_________YO"!````````@```)<"``#\_________Z["!```
+M`````@```%@"``#\_________YG#!````````@```&`$``#\_________^/#
+M!```````"P````8```"3`0```````.W#!````````@```(P$``#\________
+M_P#$!````````@```$P"``#\_________PO$!````````@```)<"``#\____
+M_____R3$!````````@```!P#``#\_________XG$!````````@```!P#``#\
+M__________;$!````````@```%@"``#\_________Z3%!````````@```(`$
+M``#\_________R/&!````````@```(`$``#\_________U_&!````````@``
+M`(`$``#\_________W_&!````````@```$P"``#\_________XK&!```````
+M`@```)<"``#\_________YC&!````````@```(X"``#\_________U7'!```
+M`````@```(`$``#\_________X_'!````````@```(`$``#\_________Z_'
+M!````````@```$P"``#\_________[K'!````````@```)<"``#\________
+M_\C'!````````@```(X"``#\_________PK(!````````@```(`$``#\____
+M_____U'(!````````@```(`$``#\_________Z#(!````````@```(`$``#\
+M_________]/(!````````@```$P"``#\_________][(!````````@```)<"
+M``#\_________^G(!````````@```%@"``#\_________S3*!````````@``
+M`$P"``#\_________S_*!````````@```)<"``#\_________]'*!```````
+M`@```+<"``#\_________^#*!````````@```(`$``#\_________PW+!```
+M`````@```,("``#\_________R++!````````@```+<"``#\_________WK+
+M!```````"P````4```!8!@```````(3+!````````@```(P$``#\________
+M_Y;+!````````@```"P"``#\_________X',!````````@```$P"``#\____
+M_____XS,!````````@```)<"``#\_________Z',!````````@```$P"``#\
+M_________ZS,!````````@```)<"``#\_________[?,!````````@```+<"
+M``#\_________^/-!````````@```$P"``#\_________^[-!````````@``
+M`)<"``#\_________S+.!```````"P````4```!X!@```````#S.!```````
+M`@```(P$``#\_________UO.!````````@```#@"``#\_________VS.!```
+M`````@```*P"``#\_________WS.!````````@```(`$``#\_________X?.
+M!````````@```)<"``#\_________YS.!````````@```,,"``#\________
+M_ZC.!````````@```(`$``#\_________[/.!````````@```)<"``#\____
+M_____[[.!````````@```.@"``#\_________PC/!````````@```)0"``#\
+M_________W7/!```````"P````$````@R00``````'S/!```````"P```-P"
+M`````````````)+/!````````@```/L"``#\_________\O/!````````@``
+M`)0"``#\_________^?/!````````@```,X"``#\_________P'0!```````
+M`@```)<"``#\_________U;0!```````"P````$````@R00``````&/0!```
+M`````@```'("``#\_________W/0!````````@```&L"``#\_________W[0
+M!````````@```/L"``#\_________U+3!````````@```!D#``#\________
+M_X_3!````````@```)0"``#\_________]W3!```````"P````$````@R00`
+M`````.O3!````````@```/L"``#\_________R_4!````````@```)0"``#\
+M_________WW4!```````"P````$````@R00``````(O4!````````@```/L"
+M``#\_________\_4!````````@```)0"``#\_________Q75!```````"P``
+M``$````@R00``````"#5!````````@```/L"``#\_________U_5!```````
+M`@```)0"``#\_________Z75!```````"P````$````@R00``````+#5!```
+M`````@```/L"``#\_________^_5!````````@```)0"``#\_________T#6
+M!```````"P````$````@R00``````$O6!````````@```/L"``#\________
+M_X_6!````````@```)0"``#\_________]76!```````"P````$````@R00`
+M`````.#6!````````@```/L"``#\_________Q_7!````````@```)0"``#\
+M_________V77!```````"P````$````@R00``````'#7!````````@```/L"
+M``#\_________\;7!````````@```)0"``#\_________P_8!```````"P``
+M`+T"`````````````!;8!```````"P```-L"`````````````"G8!```````
+M`@```/L"``#\_________X[8!````````@```)0"``#\__________38!```
+M````"P```+T"`````````````/O8!```````"P```-L"``````````````[9
+M!````````@```/L"``#\_________Z_:!````````@```&,"``#\________
+M_PG;!````````@```$P"``#\_________Q?;!````````@```)<"``#\____
+M_____RO;!````````@```'$"``#\_________TC;!```````"P````,````(
+M*@```````&?;!````````@```&T$``#\_________[7;!````````@```&T$
+M``#\_________]W;!````````@```&T$``#\_________R[<!````````@``
+M`&T$``#\_________U'<!````````@```&T$``#\_________Z[<!```````
+M`@```&T$``#\_________^C<!````````@```&T$``#\_________RW=!```
+M`````@```(`$``#\_________UO=!````````@```*`$``#\_________XO=
+M!````````@```&T$``#\_________Z[=!````````@```&T$``#\________
+M_[S=!````````@```*`$``#\_________SS>!````````@```!P#``#\____
+M_____YC>!````````@````H#``#\_________ZW>!````````@```*8"``#\
+M_________\/>!````````@```)<$``#\_________]G>!````````@```)<$
+M``#\__________K>!````````@```#@"``#\_________R/?!````````@``
+M`&T$``#\_________T7?!````````@```&T$``#\_________YC?!```````
+M`@```!P#``#\_________]'?!````````@```.\"``#\_________Q#@!```
+M`````@```/<"``#\_________QK@!````````@```(`$``#\_________U;@
+M!````````@```&T$``#\_________WG@!````````@```&T$``#\________
+M_Q?A!````````@```$P"``#\_________R+A!````````@```)<"``#\____
+M_____S'A!````````@```*P"``#\_________T_A!````````@```$P"``#\
+M_________UKA!````````@```)<"``#\_________V7A!````````@```'$"
+M``#\__________;B!````````@```$P"``#\_________P?C!````````@``
+M`)<"``#\_________R'C!````````@```!,#``#\_________T;C!```````
+M"P````,```#8*@```````&3C!````````@```&T$``#\_________X;C!```
+M`````@```&T$``#\_________Q_D!````````@```%`"``#\_________VSD
+M!````````@```*\"``#\_________X?D!````````@```!P#``#\________
+M_[CD!````````@```)<$``#\_________\WD!````````@```/`"``#\____
+M_____]SD!````````@```/<"``#\_________^;D!````````@```(`$``#\
+M_________Q#E!````````@```$P"``#\_________QOE!````````@```)<"
+M``#\_________RSE!````````@```/P"``#\_________V/E!````````@``
+M`%`"``#\_________ZWE!````````@```*\"``#\_________\CE!```````
+M`@```!P#``#\__________GE!````````@```)<$``#\_________P[F!```
+M`````@```/`"``#\_________QWF!````````@```/<"``#\_________R?F
+M!````````@```(`$``#\_________U'F!````````@```$P"``#\________
+M_USF!````````@```)<"``#\_________VWF!````````@```/P"``#\____
+M_____Y#F!````````@```&T$``#\_________[+F!````````@```&T$``#\
+M_________PGG!````````@```/<"``#\_________Q/G!````````@```(`$
+M``#\_________T[G!````````@```&T$``#\_________W/G!````````@``
+M`&T$``#\_________\KG!````````@```!P#``#\_________P/H!```````
+M`@```.\"``#\_________W+H!````````@```&T$``#\_________Y#H!```
+M`````@```&T$``#\_________\'H!````````@```$P"``#\_________\SH
+M!````````@```)<"``#\_________]?H!````````@```'$"``#\________
+M_S_I!````````@```&T$``#\_________Z;J!````````@```(`$``#\____
+M_____Y3R!````````@```!P#``#\_________^GR!````````@```,8"``#\
+M__________[R!````````@```&`$``#\_________Q7S!````````@```$("
+M``#\_________XCT!````````@```+$"``#\_________Y?T!````````@``
+M`'L"``#\_________X3U!````````@```(`$``#\_________W#V!```````
+M`@````L```#^`@```````'WV!```````"P````L``````P```````(?V!```
+M`````@```$X"``#\_________[?V!````````@````L```#^`@```````,3V
+M!```````"P````L``````P```````,[V!````````@```$X"``#\________
+M_PGW!````````@```+$"``#\_________Q;W!````````@```'L"``#\____
+M_____RWX!````````@````D#``#\_________P'Y!````````@```&T$``#\
+M_________SKY!````````@```&T$``#\_________U+Y!````````@````T#
+M``#\_________V3Y!````````@````T#``#\_________W;Y!````````@``
+M``T#``#\_________XCY!````````@````T#``#\_________YKY!```````
+M`@````T#``#\_________ZSY!````````@````T#``#\_________[[Y!```
+M`````@````T#``#\_________]#Y!````````@````T#``#\_________V#Z
+M!````````@````T#``#\_________^;Z!````````@```+,"``#\________
+M__?Z!````````@```)<"``#\_________UG[!````````@```)0"``#\____
+M_____VG[!````````@```#D"``#\_________\C[!```````"P```!`#````
+M`````````-+[!````````@```'("``#\_________]W[!````````@```/L"
+M``#\_________S7\!````````@```)0"``#\_________TG\!````````@``
+M`#D"``#\_________^#\!````````@```&`$``#\_________PW]!```````
+M`@```&`$``#\_________QC]!```````"P```!`#`````````````";]!```
+M`````@```'("``#\_________S']!````````@```/L"``#\_________X;]
+M!````````@```$H"``#\_________Y3]!````````@```/<"``#\________
+M_Y[]!````````@```(`$``#\_________]?]!````````@```%8"``#\____
+M_____^7]!````````@```/<"``#\_________^_]!````````@```(`$``#\
+M_________Q+^!````````@```$H"``#\_________R3^!````````@```/<"
+M``#\_________R[^!````````@```(`$``#\_________WW^!````````@``
+M`%8"``#\_________ZX`!0```````@```,`"``#\_________Y@"!0``````
+M`@```+`"``#\_________[$"!0```````@```"\"``#\_________Q$$!0``
+M`````@```#4"``#\_________Z($!0```````@```#4"``#\_________[$$
+M!0```````@```&`$``#\_________^8$!0```````@```(`"``#\________
+M__L$!0``````"P```.0"`````````````#L%!0```````@```+`"``#\____
+M_____TT%!0```````@```"\"``#\_________^X%!0```````@```(`"``#\
+M_________Q$&!0```````@```(`"``#\_________\\&!0```````@```.$"
+M``#\_________]\&!0```````@```,T"``#\_________^\&!0```````@``
+M`!\"``#\_________T0'!0``````"P````,`````*P```````%H)!0``````
+M`@```&T$``#\_________W8)!0```````@```(`$``#\_________TT*!0``
+M`````@```&T$``#\_________\H*!0```````@```(`$``#\_________\T+
+M!0```````@```&T$``#\_________P8,!0```````@```#8"``#\________
+M_^H.!0```````@```&T$``#\_________U\0!0```````@```!(#```$````
+M`````*,0!0```````@```&T$``#\_________P\1!0```````@```#0"```$
+M`````````%,1!0```````@```&T$``#\_________[\1!0```````@```"T"
+M```$``````````,2!0```````@```&T$``#\_________Y\2!0```````@``
+M`&`"```$`````````.,2!0```````@```&T$``#\_________W03!0``````
+M"P```#0"`````````````),3!0``````"P```"T"`````````````+$3!0``
+M````"P```!(#`````````````-03!0``````"P```&`"`````````````)X4
+M!0```````@```-4"``#\_________]L5!0```````@```$X"``#\________
+M_^D5!0```````@```(`$``#\__________X5!0```````@```/X"``#\____
+M_____VD6!0```````@```&T$``#\_________WT6!0```````@```&T$``#\
+M_________[P6!0```````@```&T$``#\_________^,6!0```````@```/("
+M``#\_________^T6!0```````@````L```"@!````````/@6!0``````"P``
+M``L```!@!``````````7!0```````@````L```"@!````````!07!0``````
+M`@```&8"``#\_________QX7!0```````@````L```"D!````````"D7!0``
+M````"P````L```"`!````````#$7!0```````@````L```"D!````````$T7
+M!0```````@````L```"<!````````%@7!0``````"P````L```#@`P``````
+M`&`7!0```````@````L```"<!````````&87!0```````@```%P"```(````
+M`````((7!0```````@````L```!;!````````)(7!0``````"P````L```#@
+M`P```````)D7!0```````@````L```!<!````````+47!0```````@````L`
+M``!<!````````,,7!0```````@````L```![!````````-,7!0``````"P``
+M``L```#@`P```````-H7!0```````@````L```!\!````````/87!0``````
+M`@````L```!\!`````````H8!0```````@````L```"<!````````"(8!0``
+M`````@````L```!<!````````#@8!0``````"P````L```!@!````````$48
+M!0```````@````L```"<!````````%(8!0``````"P````L```#@`P``````
+M`'\8!0```````@```%P"```)`````````)$8!0``````"P````L```#@`P``
+M`````)@8!0``````"P```%P"`````````````+48!0```````@````<```!0
+M$@```````/T8!0```````@````L```"<!````````"89!0```````@````L`
+M``!\!````````#P9!0``````"P````L```"`!````````$D9!0```````@``
+M``L```"<!````````%89!0``````"P````L```#@`P```````(49!0``````
+M`@```%P"```)`````````)<9!0``````"P````L```#@`P```````)X9!0``
+M````"P```%P"`````````````+<9!0```````@````<```!0$@```````/\9
+M!0```````@````L```"<!````````#T:!0```````@```%P"```(````````
+M`%P:!0``````"P```%P"```-`````````&<:!0```````@````<```!0$@``
+M`````&X:!0``````"P```%P"`````````````.<:!0```````@````<```"<
+M$@```````/,:!0``````"P````<```!`$@```````$@;!0``````"P```%P"
+M`````````````$\;!0``````"P```%P"```0`````````($;!0``````"P``
+M`%P"```,`````````/D;!0``````"P```%P"```0`````````'(<!0``````
+M`@```%H$``#\_________X(<!0```````@````<```"<$@```````(\<!0``
+M````"P````<```!`$@```````+T<!0``````"P```%P"`````````````-,<
+M!0``````"P```%P"```0`````````-H<!0``````"P````<```!0$@``````
+M`/4<!0``````"P````<```!`$@```````/\<!0``````"P````<```!($@``
+M`````$H=!0``````"P```%P"```0`````````,P=!0```````@````<```"<
+M$@```````"P>!0```````@````L```"G!````````#4>!0```````@````L`
+M``"D!````````%,>!0```````@````<```"<$@```````%P>!0``````"P``
+M``<```!`$@```````&,>!0``````"P````<```!0$@```````(X>!0``````
+M`@````<```"<$@```````+`>!0``````"P```%P"`````````````,,>!0``
+M````"P```%P"```<`````````,T>!0``````"P```%P"```,`````````-4>
+M!0``````"P```%P"```0`````````#(?!0``````"P```%P"```<````````
+M`,@?!0```````@````L```"\`P```````-$?!0```````@````L```"\`P``
+M`````&DA!0```````@```&@$``#\_________X,A!0```````@```&@$``#\
+M_________]<A!0```````@````<```"<$@```````.`A!0``````"P````<`
+M``!`$@```````.<A!0```````@````<```"<$@````````8B!0``````"P``
+M``<```!0$@```````%DB!0```````@```*0$``#\_________W@B!0``````
+M`@```)P$``#\_________Z4B!0```````@```($"``#\_________[0B!0``
+M`````@```($"``#\_________^`B!0```````@```/<"``#\__________\B
+M!0```````@```%D$``#\_________Q0C!0``````"P```%\"````````````
+M`"<C!0```````@```'@$``#\_________U$C!0```````@```)D$``#\____
+M_____WLC!0```````@```/T"``#\_________X,C!0```````@```/T"``#\
+M_________XLC!0```````@```+@"``#\_________YPC!0```````@```+@"
+M``#\_________ZTC!0```````@```$<"``#\_________[<C!0```````@``
+M`(`$``#\_________[\C!0```````@```(P"``#\_________\<C!0``````
+M`@```%$"``#\_________]PC!0``````"P```%\"`````````````/,C!0``
+M`````@```'@$``#\_________P`D!0```````@```*P"``#\_________PTD
+M!0```````@```*P"``#\_________PLE!0```````@```$X"``#\________
+M_QDE!0```````@```(`$``#\_________RXE!0```````@```/X"``#\____
+M_____V(E!0``````"P````8```"G`0```````&PE!0```````@```(P$``#\
+M_________R`G!0``````"P```$L"`````````````"4G!0```````@```%($
+M``#\_________VTH!0``````"P````4```"P!@```````'<H!0```````@``
+M`(P$``#\_________Z<H!0```````@```%D$``#\_________[PH!0``````
+M"P````$```#`)P4``````-`H!0```````@```'@$``#\_________Z8J!0``
+M`````@````,#``#\_________\PJ!0```````@```+L"``#\__________<J
+M!0```````@```!P#``#\_________V@K!0```````@```!P#``#\________
+M_\DK!0```````@```)<$``#\_________T<L!0```````@```!P#``#\____
+M_____[(L!0```````@```)<$``#\_________],M!0```````@```,<"``#\
+M_________^@M!0```````@```*8"``#\_________V4O!0```````@```$`"
+M``#\_________[$O!0```````@```!P#``#\__________TO!0```````@``
+M`+<"``#\_________U<P!0```````@```'0"``#\_________WLP!0``````
+M`@```%@"``#\_________YDP!0```````@```!P#``#\_________^<P!0``
+M`````@```*D"``#\_________\$Q!0```````@```/`"``#\__________PQ
+M!0```````@```$`"``#\_________R4R!0```````@```+<"``#\________
+M_UXR!0```````@```%@"``#\_________Q<S!0```````@```$P"``#\____
+M_____R<S!0```````@```)<"``#\_________\,S!0```````@```)0"``#\
+M__________(U!0```````@```&`$``#\_________\DW!0``````"P````$`
+M``"0,@4``````$@X!0```````@```%("``#\_________U4X!0```````@``
+M`'("``#\_________V,X!0```````@```&L"``#\_________WTX!0``````
+M`@```,X"``#\_________^8X!0```````@```&`$``#\_________T(Y!0``
+M`````@```&`$``#\_________V$Y!0```````@```'("``#\_________W8Y
+M!0```````@```&L"``#\_________XPY!0```````@```/L"``#\________
+M_YDY!0```````@```)<"``#\_________TPZ!0```````@```)0"``#\____
+M_____V0Z!0```````@```,X"``#\_________WDZ!0```````@```)<"``#\
+M_________YHZ!0```````@```)<$``#\_________[(Z!0```````@```/`"
+M``#\__________DZ!0```````@```&`$``#\_________]4[!0```````@``
+M`%("``#\_________Q\\!0``````"P````$```"P)P4``````"X\!0``````
+M`@```'("``#\_________T0\!0```````@```&L"``#\_________U8\!0``
+M`````@```/L"``#\_________XP\!0```````@```/`"``#\_________YT\
+M!0```````@```(`$``#\_________Z4\!0```````@```/<"``#\________
+M__X\!0```````@```&`$``#\_________Q$]!0```````@```$P"``#\____
+M_____QP]!0```````@```)<"``#\_________S0]!0```````@```)<$``#\
+M_________XT]!0```````@```%D"``#\_________YX]!0```````@```%D"
+M``#\_________\4]!0```````@```/<"``#\_________V%2!0```````@``
+M`)0"``#\_________[Y2!0``````"P````$```"P)P4``````,E2!0``````
+M`@```/L"``#\_________PE3!0```````@```/`"``#\_________QU3!0``
+M`````@```(`$``#\_________R53!0```````@```/<"``#\_________UY3
+M!0```````@```)<"``#\_________^13!0```````@```)0"``#\________
+M_V14!0``````"P````$```"P)P4``````&]4!0```````@```/L"``#\____
+M_____ZE4!0```````@```/`"``#\_________[U4!0```````@```(`$``#\
+M_________\54!0```````@```/<"``#\_________P55!0```````@```,X"
+M``#\_________XU5!0``````"P````$```"P)P4``````)Q5!0```````@``
+M`'("``#\_________[)5!0```````@```&L"``#\_________[U5!0``````
+M`@```/L"``#\__________95!0```````@```/`"``#\_________P=6!0``
+M`````@```(`$``#\_________P]6!0```````@```/<"``#\_________T%6
+M!0```````@```$P"``#\_________U%6!0```````@```)<"``#\________
+M_UE6!0```````@```)0"``#\_________VY6!0```````@```$P"``#\____
+M_____VM7!0``````"P````$```"P)P4``````'I7!0```````@```'("``#\
+M_________Y!7!0```````@```&L"``#\_________YM7!0```````@```/L"
+M``#\_________]17!0```````@```/`"``#\_________^57!0```````@``
+M`(`$``#\_________^U7!0```````@```/<"``#\_________R98!0``````
+M`@```$P"``#\_________S=8!0```````@```)<"``#\_________[98!0``
+M`````@```)<$``#\_________\M8!0```````@```/`"``#\_________]M8
+M!0```````@```(`$``#\_________^-8!0```````@```/<"``#\________
+M_QM9!0```````@```)<$``#\_________X%9!0```````@````,#``#\____
+M_____Z)9!0```````@```+L"``#\_________[A9!0```````@```*8"``#\
+M_________R9:!0```````@```)0"``#\_________XI:!0``````"P````$`
+M``"P)P4``````)5:!0```````@```/L"``#\_________\Y:!0```````@``
+M`/`"``#\_________]]:!0```````@```(`$``#\_________^=:!0``````
+M`@```/<"``#\_________RU;!0```````@```)<"``#\_________W5;!0``
+M````"P````,````0+````````(Q;!0```````@```,<"``#\_________[Q;
+M!0```````@```/,"``#\_________]=;!0```````@```!T#``#\________
+M_^=;!0```````@```/0"``#\_________\5<!0```````@```&@"``#\____
+M_____]A<!0```````@```&@"``#\_________^5<!0```````@```&@"``#\
+M__________A<!0```````@```&@"``#\_________S-=!0```````@```'4$
+M``#\_________TI=!0```````@```'4$``#\_________V-=!0```````@``
+M`'4$``#\_________]9=!0```````@```","``#\__________9=!0``````
+M`@```'\$``#\_________PE>!0```````@```'\$``#\_________RQ>!0``
+M`````@```'\$``#\_________S]>!0```````@```'\$``#\_________U]>
+M!0```````@```'\$``#\_________W)>!0```````@```'\$``#\________
+M_Y)>!0```````@```'\$``#\_________Z5>!0```````@```'\$``#\____
+M_____]9>!0```````@```'\$``#\_________^I>!0```````@```'\$``#\
+M_________Q-?!0```````@```'\$``#\_________R9?!0```````@```'\$
+M``#\_________TQ?!0```````@```'\$``#\_________U]?!0```````@``
+M`'\$``#\_________W]?!0```````@```'\$``#\_________Y)?!0``````
+M`@```'\$``#\_________[)?!0```````@```'\$``#\_________\5?!0``
+M`````@```'\$``#\_________^Q?!0```````@```'\$``#\__________]?
+M!0```````@```'\$``#\_________Q]@!0```````@```'\$``#\________
+M_S)@!0```````@```'\$``#\_________U)@!0```````@```'\$``#\____
+M_____V5@!0```````@```'\$``#\_________XQ@!0```````@```'\$``#\
+M_________Y]@!0```````@```'\$``#\_________[]@!0```````@```'\$
+M``#\_________])@!0```````@```'\$``#\__________)@!0```````@``
+M`'\$``#\_________P5A!0```````@```'\$``#\_________RQA!0``````
+M`@```'\$``#\_________S]A!0```````@```'\$``#\_________U]A!0``
+M`````@```'\$``#\_________W)A!0```````@```'\$``#\_________Y)A
+M!0```````@```'\$``#\_________Z5A!0```````@```'\$``#\________
+M_]1A!0```````@```+$$``#\_________^YA!0```````@```+$$``#\____
+M_____Q9B!0```````@```+$$``#\_________S!B!0```````@```+$$``#\
+M_________UAB!0```````@```+$$``#\_________W)B!0```````@```+$$
+M``#\_________YIB!0```````@```+$$``#\_________[1B!0```````@``
+M`+$$``#\_________]QB!0```````@```+$$``#\__________9B!0``````
+M`@```+$$``#\_________R1C!0```````@```+$$``#\_________SYC!0``
+M`````@```+$$``#\_________V9C!0```````@```+$$``#\_________X!C
+M!0```````@```+$$``#\_________Z)C!0```````@```+@"``#\________
+M_[%C!0```````@```+@"``#\_________[EC!0```````@```$<"``#\____
+M_____\-C!0```````@```(`$``#\_________\MC!0```````@```(P"``#\
+M_________]-C!0```````@```%$"``#\_________^!C!0```````@```%D"
+M``#\_________^UC!0```````@```%D"``#\_________P=D!0``````"P``
+M``<```#`$@````````QD!0```````@```$\$``#\_________[]D!0``````
+M`@```/0#``#\_________^9D!0```````@```%`#``#\_________P-E!0``
+M`````@```-4#``#\_________UYE!0```````@```*P#``#\_________VYE
+M!0```````@```-L#``#\_________W%G!0```````@```&`$``#\________
+M_[AH!0```````@```-\#``#\_________\]K!0``````"P````4````(!P``
+M`````-EK!0```````@```(P$``#\_________^1K!0``````"P````8```#(
+M`0```````.YK!0```````@```(P$``#\_________Q)L!0``````"P````<`
+M````%````````$ML!0```````@```&T$``#\_________YQL!0```````@``
+M`&T$``#\_________^!L!0```````@```&T$``#\__________IL!0``````
+M`@```&T$``#\_________T5M!0```````@```&T$``#\_________U]M!0``
+M`````@```&T$``#\_________ZYM!0```````@```&T$``#\_________[]M
+M!0```````@```&T$``#\_________P-N!0```````@```(`$``#\________
+M_QQN!0```````@```&T$``#\_________S9N!0```````@```&T$``#\____
+M_____[MN!0```````@```&T$``#\_________]5N!0```````@```&T$``#\
+M_________PEO!0```````@```(`$``#\_________RMO!0```````@```&T$
+M``#\_________T5O!0```````@```&T$``#\_________XYO!0```````@``
+M`&T$``#\_________Y]O!0```````@```&T$``#\_________^-O!0``````
+M`@```(`$``#\__________QO!0```````@```&T$``#\_________Q9P!0``
+M`````@```&T$``#\_________XEP!0```````@```&T$``#\_________Z-P
+M!0```````@```&T$``#\__________UP!0```````@```&T$``#\________
+M_VUQ!0```````@```&T$``#\_________^AQ!0```````@```)P#``#\____
+M______)Q!0```````@```(`$``#\__________QQ!0```````@```*$#``#\
+M_________R9R!0```````@```&T$``#\_________T5R!0```````@```&T$
+M``#\_________UQR!0```````@```&T$``#\_________X)R!0```````@``
+M`&T$``#\_________^]R!0```````@```(`$``#\_________Z1S!0``````
+M`@```(`$``#\_________Y5T!0```````@```+X#``#\_________ZET!0``
+M`````@```%4#``#\_________\MT!0```````@```(T$``#\_________^UT
+M!0```````@```(T$``#\_________P]U!0```````@```(T$``#\________
+M_RYU!0```````@```(T$``#\_________U!U!0```````@```(T$``#\____
+M_____WUU!0```````@```(T$``#\_________Y=U!0```````@```(T$``#\
+M_________[%U!0```````@```(T$``#\_________]!U!0```````@```(T$
+M``#\__________-U!0```````@```(T$``#\_________Q9V!0```````@``
+M`(T$``#\_________S1V!0```````@```(T$``#\_________U)V!0``````
+M`@```(T$``#\_________W!V!0```````@```(T$``#\_________XYV!0``
+M`````@```(T$``#\_________ZMV!0```````@```(T$``#\_________\YV
+M!0```````@```(T$``#\_________^=V!0```````@```(T$``#\________
+M_PQW!0```````@```%X$``#\_________RQW!0```````@```%X$``#\____
+M_____U1W!0```````@```%X$``#\_________WEW!0```````@```%X$``#\
+M_________YYW!0```````@```%X$``#\_________\%W!0```````@```%X$
+M``#\_________^QW!0```````@```%X$``#\_________WUY!0```````@``
+M`+X#``#\_________Q)Z!0```````@```(\$``#\_________TAZ!0``````
+M`@```(\$``#\_________WYZ!0```````@```(\$``#\_________[1Z!0``
+M`````@```(\$``#\_________^1Z!0```````@```(\$``#\__________EZ
+M!0```````@```(\$``#\_________Q%[!0```````@```(\$``#\________
+M_WE[!0```````@```(\$``#\_________\A[!0```````@```(\$``#\____
+M_____Q=\!0```````@```(\$``#\_________VE\!0```````@```(\$``#\
+M_________\M\!0```````@```(\$``#\__________]\!0```````@```(\$
+M``#\_________RU]!0```````@```+,#``#\_________SI]!0```````@``
+M`(\$``#\_________VE]!0```````@```#\#``#\_________W9]!0``````
+M`@```(\$``#\_________Z5]!0```````@```#\#``#\_________[)]!0``
+M`````@```(\$``#\_________^%]!0```````@```#\#``#\_________^Y]
+M!0```````@```(\$``#\_________R%^!0```````@```#\#``#\________
+M_RY^!0```````@```(\$``#\_________XU^!0```````@```-D#``#\____
+M_____Y&!!0```````@```)H$``#\_________ZZ!!0```````@```)H$``#\
+M_________\N!!0```````@```)H$``#\_________^B!!0```````@```)H$
+M``#\_________P6"!0```````@```)H$``#\_________R*"!0```````@``
+M`)H$``#\_________U&"!0```````@````D$``#\_________YZ"!0``````
+M`@```)H$``#\_________\V"!0```````@````D$``#\_________WB#!0``
+M`````@````D$``#\_________ZJ#!0```````@```)<$``#\_________[Z#
+M!0```````@````($``#\_________\R#!0```````@```#8#``#\________
+M_]:#!0```````@```(`$``#\__________R#!0```````@```,$#``#\____
+M_____YJ$!0```````@```"$#``#\_________[6$!0```````@```)4#``#\
+M_________XV%!0```````@```'\#``#\_________PB&!0```````@```,P#
+M``#\_________W6*!0```````@```*L#``#\_________]R*!0```````@``
+M`#,#``#\_________Q"+!0```````@```'\#``#\_________["+!0``````
+M"P````,```!@+````````,.+!0```````@```',#``#\_________^^+!0``
+M`````@```',#``#\_________Q>,!0```````@```',#``#\_________S^,
+M!0```````@```',#``#\_________WF,!0```````@```.D#``#\________
+M_[Z,!0```````@```*\#``#\_________UJ.!0```````@```(P#``#\____
+M_____X2.!0```````@```(`$``#\_________Q"1!0```````@````T$``#\
+M_________Q^1!0```````@```.<#``#\_________^61!0```````@```"@#
+M``#\_________W>2!0```````@```-,#``#\_________Y22!0```````@``
+M`"@#``#\_________T24!0```````@```/\#``#\_________V:4!0``````
+M`@```.L#``#\_________]F4!0```````@```/\#``#\_________Q25!0``
+M`````@```.L#``#\_________Q^7!0```````@```$`#``#\_________U>7
+M!0``````"P````,```"P+`````````V8!0```````@```&`$``#\________
+M_RF8!0``````"P````,```!0,0```````-*8!0```````@```"`#``#\____
+M_____^*8!0```````@```"`#``#\_________W^9!0```````@```/\#``#\
+M_________[J9!0```````@```.L#``#\_________RV:!0```````@```#H#
+M``#\_________V2:!0```````@```.H#``#\_________X":!0```````@``
+M`#H#``#\_________X^:!0```````@```&T#``#\_________ZN:!0``````
+M`@```#H#``#\__________*:!0```````@```/T#``#\_________U2;!0``
+M`````@```#H#``#\_________VV;!0```````@```/T#``#\_________ZF<
+M!0```````@```'T#``#\_________[><!0```````@```,4#``#\________
+M_R.=!0```````@````D$``#\_________S*=!0```````@````H$``#\____
+M_____[>=!0``````"P````$```"@FP4``````,&=!0```````@```*P#``#\
+M_________\R=!0```````@````$$``#\_________VJ>!0```````@```&T$
+M``#\_________XR>!0```````@```(X#``#\_________YR>!0```````@``
+M`&\#``#\_________[Z>!0```````@```(X#``#\_________\:>!0``````
+M`@```)\#``#\_________^6>!0``````"P````,```"P-@```````/R>!0``
+M`````@```.0#``#\_________QB?!0```````@```.0#``#\_________S2?
+M!0```````@````($``#\_________U:?!0```````@```,D#``#\________
+M_VV?!0```````@```*H#``#\_________Y"?!0```````@````($``#\____
+M_____ZN?!0```````@```,D#``#\_________\*?!0```````@````($``#\
+M_________]2?!0```````@```*H#``#\_________^F?!0```````@````($
+M``#\_________QR@!0```````@```#8#``#\_________R:@!0```````@``
+M`(`$``#\_________YF@!0```````@```)H#``#\_________[*@!0``````
+M`@```*8#``#\_________]F@!0```````@```-0#``#\_________^Z@!0``
+M`````@```*`#``#\_________P&A!0``````"P````8```#5`0````````NA
+M!0```````@```(P$``#\_________R&A!0```````@```)<$``#\________
+M_S>A!0```````@```)<$``#\_________TJA!0```````@```.8#``#\____
+M_____VJA!0```````@````D$``#\_________Z>A!0```````@```&8#``#\
+M_________UJB!0```````@```'X#``#\_________WVB!0```````@```!0$
+M``#\_________Z6B!0```````@```"$#``#\_________\ZB!0```````@``
+M`+(#``#\_________]:B!0```````@```"$#``#\_________R.C!0``````
+M`@```!0$``#\_________VNC!0```````@```,D#``#\_________Y2C!0``
+M`````@````D$``#\_________\6C!0```````@```)<$``#\_________]RC
+M!0```````@````($``#\__________>C!0```````@```#8#``#\________
+M_P&D!0```````@```(`$``#\_________S>D!0```````@```-T#``#\____
+M_____X"D!0``````"P````4```!@!P```````(JD!0```````@```(P$``#\
+M_________YJD!0```````@````($``#\_________P>E!0```````@```#8#
+M``#\_________Q&E!0```````@```(`$``#\_________U6E!0```````@``
+M`)H#``#\_________W6E!0```````@```*8#``#\_________YZE!0``````
+M`@```-0#``#\_________[.E!0```````@```*`#``#\_________\:E!0``
+M````"P````8```#5`0```````-"E!0```````@```(P$``#\_________^6E
+M!0```````@```)<$``#\__________JE!0```````@```)<$``#\________
+M_PVF!0```````@```.8#``#\_________Q^F!0```````@````($``#\____
+M_____R>F!0```````@```"$#``#\_________\FF!0```````@```(0#``#\
+M_________^NF!0```````@```!0$``#\_________Q.G!0```````@```"$#
+M``#\_________S>G!0```````@```+(#``#\_________S^G!0```````@``
+M`"$#``#\_________V*G!0```````@```!0$``#\_________Y2G!0``````
+M`@````($``#\_________Z:G!0```````@```*H#``#\_________\2G!0``
+M`````@````D$``#\__________>G!0```````@```)<$``#\_________PRH
+M!0```````@````($``#\_________QJH!0```````@```#8#``#\________
+M_R2H!0```````@```(`$``#\_________T6H!0```````@```%,#``#\____
+M_____VBH!0```````@```!0$``#\_________Z2H!0```````@````D$``#\
+M_________\.H!0```````@```)<$``#\_________]RH!0```````@````($
+M``#\_________^JH!0```````@```#8#``#\__________2H!0```````@``
+M`(`$``#\_________QNI!0```````@```-0#``#\_________S"I!0``````
+M`@```*`#``#\_________T6I!0```````@```)<$``#\_________UJI!0``
+M`````@```)<$``#\_________VVI!0```````@```.8#``#\_________XRI
+M!0```````@````($``#\_________Y>I!0```````@```,`#``#\________
+M_Z^I!0```````@```&T$``#\__________>I!0```````@```/(#``#\____
+M_____P*J!0```````@```#P#``#\_________T^J!0```````@```.X#``#\
+M_________WNJ!0```````@````D$``#\_________QNK!0```````@```"4#
+M``#\_________R>L!0```````@```!0$``#\_________UBL!0```````@``
+M`'4#``#\_________W&L!0```````@```-8#``#\_________ZNL!0``````
+M`@```"P#``#\_________]RL!0```````@```$P#``#\_________P*M!0``
+M`````@````D$``#\_________ZJM!0```````@```"4#``#\_________[FN
+M!0```````@```'4#``#\_________^NN!0```````@```"D#``#\________
+M_SNO!0```````@````D$``#\_________TVO!0```````@```+$#``#\____
+M_____^*O!0```````@```+(#``#\_________W&P!0```````@```+(#``#\
+M_________WZP!0```````@```*@#``#\_________ZFP!0```````@```+(#
+M``#\_________\>P!0```````@```!0$``#\_________^VP!0```````@``
+M`!P$``#\_________X*Q!0```````@```&T$``#\_________Z:Q!0``````
+M`@```(`$``#\_________]2Q!0```````@```&T$``#\__________2Q!0``
+M`````@```&T$``#\_________W6R!0```````@```(`$``#\_________^NR
+M!0```````@```,@#``#\_________P>S!0```````@```(\#``#\________
+M_Q2S!0```````@```/(#``#\_________T.S!0```````@```#P#``#\____
+M_____W2S!0```````@```#(#``#\_________YZS!0```````@```/(#``#\
+M_________UFT!0```````@```(`$``#\_________[ZT!0```````@```&T$
+M``#\_________^"T!0```````@```(`$``#\_________PRU!0```````@``
+M`&T$``#\_________RNU!0```````@```&T$``#\_________X>U!0``````
+M`@````D$``#\_________Q&V!0```````@````($``#\_________SZV!0``
+M`````@````($``#\_________TNV!0```````@```/(#``#\_________XRV
+M!0```````@````D$``#\_________ZBV!0```````@````D$``#\________
+M_\FV!0```````@```%D$``#\_________^BV!0```````@```#8#``#\____
+M______*V!0```````@```(`$``#\_________Z.W!0```````@```&\#``#\
+M_________\>W!0```````@```-0#``#\_________]RW!0```````@```*`#
+M``#\_________^^W!0``````"P````8```#5`0```````/FW!0```````@``
+M`(P$``#\_________PZX!0```````@```)<$``#\_________R.X!0``````
+M`@```)<$``#\_________S^X!0```````@```.8#``#\_________UZX!0``
+M`````@```-@#``#\_________XBX!0```````@````D$``#\_________ZBX
+M!0```````@```#8#``#\_________[*X!0```````@```(`$``#\________
+M__.X!0```````@```-0#``#\_________PBY!0```````@```*`#``#\____
+M_____QNY!0``````"P````8```#5`0```````"6Y!0```````@```(P$``#\
+M_________SJY!0```````@```)<$``#\_________T^Y!0```````@```)<$
+M``#\_________V:Y!0```````@```.8#``#\_________WZY!0```````@``
+M`#P#``#\__________*Y!0```````@```&T$``#\_________Q>Z!0``````
+M`@```(`$``#\_________T.Z!0```````@```&T$``#\_________V*Z!0``
+M`````@```&T$``#\_________S>[!0``````"P```#@#`````````````#^[
+M!0```````@```'H#``#\_________]F[!0```````@```"H#``#\________
+M__J[!0```````@````D$``#\_________X"\!0```````@```$\#``#\____
+M_____[6\!0```````@```-T#``#\_________^Z\!0```````@````\$``#\
+M_________P6]!0```````@```)<$``#\_________QV]!0```````@```)<$
+M``#\_________U:]!0```````@```(`$``#\_________VV]!0```````@``
+M`&T$``#\_________XV]!0```````@```&T$``#\_________ZF]!0``````
+M`@```/(#``#\_________[&]!0```````@```(<#``#\__________J]!0``
+M`````@```,@#``#\_________U>^!0```````@````D$``#\_________\F^
+M!0```````@```)T#``#\_________]B^!0```````@```)D#``#\________
+M_P2_!0```````@```&X#``#\_________UR_!0```````@```&T$``#\____
+M_____XF_!0```````@```&T$``#\_________YZ_!0```````@```,L#``#\
+M_________ZN_!0```````@```*4#``#\_________\N_!0```````@```&T$
+M``#\_________]N_!0```````@```&T$``#\_________^N_!0```````@``
+M`&T$``#\__________N_!0```````@```&T$``#\_________VO`!0``````
+M`@```&T$``#\_________Y+`!0```````@```&T$``#\_________Z'`!0``
+M`````@```*0#``#\_________][`!0```````@```&T$``#\_________P;!
+M!0```````@```&T$``#\_________Y/!!0```````@```&T$``#\________
+M_[K!!0```````@```&T$``#\_________^'!!0```````@```%D$``#\____
+M_____Q3"!0```````@````D$``#\_________TS"!0```````@```)<$``#\
+M_________V#"!0```````@````($``#\_________X'"!0```````@```'8#
+M``#\_________XO"!0```````@```(`$``#\_________[+"!0``````"P``
+M``$````0OP4``````,;"!0```````@```'@$``#\_________^K"!0``````
+M`@```&T$``#\_________PK#!0```````@```&T$``#\_________R[#!0``
+M`````@```&T$``#\_________UK#!0```````@```&T$``#\_________XG#
+M!0```````@```&T$``#\_________ZO#!0```````@```&T$``#\________
+M_R#$!0```````@```&T$``#\_________TK$!0```````@```&T$``#\____
+M_____WG$!0```````@```&T$``#\_________YO$!0```````@```&T$``#\
+M_________QC%!0```````@```&T$``#\_________SK%!0```````@```&T$
+M``#\_________\C%!0```````@```%D$``#\_________P'&!0```````@``
+M`)<$``#\_________Q7&!0```````@````($``#\_________R3&!0``````
+M`@```#8#``#\_________R[&!0```````@```(`$``#\_________U+&!0``
+M````"P````$```#PO@4``````&K&!0```````@```'@$``#\_________Y;&
+M!0```````@```&T$``#\_________[[&!0```````@```&T$``#\________
+M_^O&!0```````@```&T$``#\_________Q+'!0```````@```&T$``#\____
+M_____T_'!0```````@```%D$``#\_________V_'!0```````@````D$``#\
+M_________Z''!0```````@```)<$``#\_________\/'!0``````"P```"H#
+M`````````````-7'!0```````@```'@$``#\_________P#(!0```````@``
+M`&T$``#\_________R+(!0```````@```&T$``#\_________][(!0``````
+M`@```&T$``#\_________PO)!0```````@```&T$``#\_________T')!0``
+M`````@```&T$``#\_________W/)!0``````"P````4```"`!P```````'W)
+M!0```````@```(P$``#\_________[C)!0```````@```#`#``#\________
+M_Q?*!0```````@```.X#``#\_________R+*!0```````@```'X#``#\____
+M_____\W*!0```````@```'4#``#\__________#*!0```````@```!0$``#\
+M_________R3+!0```````@````D$``#\_________[_+!0```````@```'4#
+M``#\_________]W+!0```````@```!0$``#\_________RC,!0```````@``
+M`"P#``#\_________T3,!0```````@```#`#``#\_________V?-!0``````
+M`@```&T$``#\_________XO-!0```````@```&T$``#\_________ZC-!0``
+M`````@```&T$``#\_________QO.!0```````@```&T$``#\_________T'.
+M!0```````@```&T$``#\_________Z?.!0```````@```-8#``#\________
+M__K.!0```````@```&T$``#\_________R3/!0```````@```&T$``#\____
+M_____UG/!0```````@```&T$``#\_________X[/!0```````@```#`#``#\
+M_________Y[/!0```````@````8$``#\_________Y#0!0```````@```&D#
+M``#\_________\K0!0```````@```&`$``#\_________Z;1!0```````@``
+M`&`$``#\_________Q#2!0```````@```&`$``#\_________T'2!0``````
+M`@```&T$``#\_________W;2!0```````@```&T$``#\_________\;2!0``
+M`````@```&T$``#\_________YO3!0```````@```&`$``#\__________[4
+M!0```````@```&`$``#\_________Z+5!0```````@```&`$``#\________
+M_[75!0``````"P````,```#8-@```````$36!0```````@```(`$``#\____
+M_____Z?6!0```````@```&T$``#\_________]'6!0```````@```&T$``#\
+M_________RG7!0```````@```&T$``#\_________]+7!0```````@```&T$
+M``#\_________TO8!0```````@```(`#``#\_________UO8!0```````@``
+M`(`#``#\_________QC9!0```````@```'4#``#\_________S'9!0``````
+M`@```!0$``#\_________^?9!0```````@````P$``#\_________V+;!0``
+M`````@```(X#``#\_________W+;!0```````@```&\#``#\_________[W;
+M!0```````@```%@#``#\_________S'<!0```````@```'4#``#\________
+M_SS<!0```````@````P$``#\_________U7<!0```````@```!0$``#\____
+M_____[7<!0```````@````D$``#\_________S[=!0```````@```.P#``#\
+M_________WK=!0```````@````D$``#\_________R?>!0```````@````D$
+M``#\_________UK>!0```````@```&\#``#\_________V[>!0```````@``
+M`"$#``#\_________\W>!0```````@```&T$``#\__________3>!0``````
+M`@```"4#``#\_________ZC?!0```````@```%D$``#\_________[3?!0``
+M`````@```,`#``#\_________]3?!0```````@````D$``#\_________W?@
+M!0```````@```&\#``#\_________ZS@!0```````@```-0#``#\________
+M_\'@!0```````@```*`#``#\_________]3@!0``````"P````8```#5`0``
+M`````-[@!0```````@```(P$``#\__________/@!0```````@```)<$``#\
+M_________PCA!0```````@```)<$``#\_________Q_A!0```````@```.8#
+M``#\_________T3A!0```````@```&T$``#\_________[OA!0```````@``
+M`/4#``#\_________\?A!0```````@```&$#``#\_________PWB!0``````
+M`@````L$``#\_________QKB!0```````@```*4#``#\_________V3B!0``
+M`````@```%$#``#\_________\/B!0```````@```&T$``#\_________^KB
+M!0```````@```&T$``#\__________SB!0```````@```*4#``#\________
+M_T7C!0```````@````($``#\_________U3C!0```````@```#8#``#\____
+M_____U[C!0```````@```(`$``#\_________XSC!0```````@```-0#``#\
+M_________Z'C!0```````@```)<$``#\_________[;C!0```````@```)<$
+M``#\_________\WC!0```````@```.8#``#\_________]WC!0```````@``
+M`&T$``#\_________SGD!0```````@```&X#``#\_________W3D!0``````
+M`@```)<$``#\__________;D!0```````@```&X#``#\_________RSE!0``
+M`````@```(`$``#\_________T3E!0```````@```&T$``#\_________U_E
+M!0```````@```&T$``#\_________WOE!0```````@```/(#``#\________
+M_X/E!0```````@```(<#``#\_________Z?E!0```````@```)T#``#\____
+M_____\+F!0```````@```&`$``#\_________^'F!0```````@```&T$``#\
+M_________Q7G!0```````@```&T$``#\_________V+G!0```````@```&T$
+M``#\_________X?G!0``````"P````4```#0!P```````)'G!0```````@``
+M`(P$``#\_________ZSG!0```````@```(8#``#\_________^;G!0``````
+M`@```&T$``#\_________P7H!0```````@```&T$``#\_________R3H!0``
+M`````@```&T$``#\_________R_H!0```````@````8$``#\_________TCH
+M!0```````@```&T$``#\_________S/I!0```````@```/<#``#\________
+M_T;I!0```````@```&(#``#\_________U?I!0```````@```,4#``#\____
+M_____W'I!0```````@```%D$``#\_________X;I!0``````"P```$D#````
+M`````````)KI!0```````@```'@$``#\__________/I!0```````@````H$
+M``#\_________POJ!0```````@```/0#``#\_________Q[J!0```````@``
+M`,4#``#\_________VOJ!0``````"P```.4#`````````````(SJ!0``````
+M`@```*P#``#\_________YSJ!0```````@```-L#``#\_________Z?J!0``
+M`````@````$$``#\_________ROK!0```````@```(,#``#\_________R#L
+M!0```````@```#D#``#\_________UWL!0```````@```#D#``#\________
+M_YKL!0```````@```($#``#\_________T[N!0```````@```-`#``#\____
+M_____X[N!0```````@```)0#``#\_________\;N!0```````@```($#``#\
+M_________TOP!0```````@```&`$``#\_________P_Q!0```````@```+T#
+M``#\_________T_Q!0```````@```+T#``#\_________Y/Q!0```````@``
+M`)@#``#\_________Z7Q!0```````@```$8#``#\_________\SQ!0``````
+M`@```($#``#\_________Q+R!0```````@```&`$``#\_________Q_R!0``
+M`````@```-X#``#\_________[+S!0```````@```)(#``#\_________\+S
+M!0```````@```%T#``#\_________]+S!0```````@````4$``#\________
+M_^+S!0```````@```/<#``#\__________SS!0```````@```%D$``#\____
+M_____Q'T!0``````"P```$D#`````````````"OT!0```````@```'@$``#\
+M_________U3T!0```````@````D$``#\_________]7T!0```````@````\$
+M``#\_________Q3U!0```````@````D$``#\_________UWU!0```````@``
+M`&8#``#\_________WWU!0```````@```$\#``#\_________XKU!0``````
+M`@```-T#``#\_________YOU!0```````@```($#``#\_________Z_U!0``
+M`````@```&(#``#\_________[KU!0```````@```,4#``#\_________^WU
+M!0```````@```($#``#\_________U/V!0```````@````H$``#\________
+M_VOV!0```````@```/0#``#\_________W[V!0```````@```,4#``#\____
+M_____\OV!0``````"P```!@$`````````````.SV!0```````@```*P#``#\
+M__________SV!0```````@```-L#``#\_________P?W!0```````@````$$
+M``#\_________XCW!0```````@````H$``#\_________YSW!0```````@``
+M`/0#``#\_________Z_W!0```````@```,4#``#\_________]'W!0``````
+M`@```&`$``#\_________Q+X!0``````"P```!@$`````````````#3X!0``
+M`````@```*P#``#\_________T/X!0```````@```-L#``#\_________T[X
+M!0```````@````$$``#\_________Q3Z!0```````@````0$``#\________
+M_V[Z!0```````@````0$``#\_________YSZ!0```````@```(H#``#\____
+M_____\7[!0```````@```&(#``#\_________]?[!0```````@```,4#``#\
+M_________P[\!0```````@```&`$``#\_________T_\!0```````@```&(#
+M``#\_________UK\!0```````@```,4#``#\_________\#\!0```````@``
+M``H$``#\_________]S\!0```````@```/0#``#\_________^_\!0``````
+M`@```,4#``#\_________T+]!0``````"P```(@#`````````````)#]!0``
+M`````@```*P#``#\_________Z']!0```````@```-L#``#\_________ZS]
+M!0```````@````$$``#\_________Q_^!0```````@````H$``#\________
+M_S/^!0```````@```/0#``#\_________T;^!0```````@```,4#``#\____
+M_____VC^!0```````@```&`$``#\_________[7^!0``````"P```(@#````
+M`````````/[^!0```````@```*P#``#\_________P[_!0```````@```-L#
+M``#\_________QG_!0```````@````$$``#\_________\G_!0```````@``
+M`&T$``#\_________ZX#!@```````@```.0#``#\_________\,#!@``````
+M`@```!T$``#\_________S<$!@```````@````D$``#\_________S(%!@``
+M`````@```+(#``#\_________V0(!@``````"P```(8#`````````````'L(
+M!@```````@```'@$``#\_________Q$)!@``````"P```!8$````````````
+M`"@)!@```````@```'@$``#\_________W8)!@```````@```%D$``#\____
+M_____Y8)!@```````@```%D$``#\_________QX*!@```````@````D$``#\
+M_________S$*!@```````@```$P#``#\_________U`*!@``````"P```(8#
+M`````````````&@*!@```````@```'@$``#\__________X*!@```````@``
+M``D$``#\_________Q$+!@```````@```.X#``#\_________RP+!@``````
+M"P```!8$`````````````$0+!@```````@```'@$``#\_________]$+!@``
+M`````@```'$#``#\_________QP,!@```````@```'4#``#\_________T$,
+M!@```````@```'X#``#\_________TP,!@```````@```.X#``#\________
+M_P0-!@```````@````D$``#\_________Q4.!@```````@```'4#``#\____
+M_____UH.!@```````@```'4#``#\_________WX.!@```````@```(0#``#\
+M__________,.!@```````@```.D#``#\_________PP/!@```````@```$0#
+M``#\_________VL/!@```````@```%H#``#\_________R40!@```````@``
+M`'4#``#\_________X40!@```````@```.D#``#\_________YX0!@``````
+M`@```$0#``#\_________P81!@```````@```,0#``#\_________YH1!@``
+M`````@```,\#``#\_________P$2!@```````@```.D#``#\_________QH2
+M!@```````@```$0#``#\_________TP3!@```````@```.D#``#\________
+M_V43!@```````@```$0#``#\_________UX4!@```````@````D$``#\____
+M_____VD4!@```````@```'D#``#\_________W$4!@```````@```+$#``#\
+M_________[D4!@```````@```$@#``#\__________$4!@```````@````D$
+M``#\_________UT5!@```````@````D$``#\_________[T5!@```````@``
+M``D$``#\_________QT6!@```````@````D$``#\_________X$6!@``````
+M`@````D$``#\_________T08!@```````@````D$``#\_________XP8!@``
+M`````@```'T#``#\_________YD8!@```````@```,4#``#\_________](8
+M!@```````@```,D#``#\_________PD9!@```````@```-T#``#\________
+M_R,9!@```````@```+`#``#\_________TH9!@```````@````D$``#\____
+M_____YP9!@```````@```$\#``#\_________[$9!@```````@```'T#``#\
+M_________[P9!@```````@```,4#``#\_________Q4:!@```````@````H$
+M``#\_________R4:!@```````@```'P#``#\_________WD:!@``````"P``
+M`",#`````````````(,:!@```````@```*P#``#\_________XX:!@``````
+M`@````$$``#\_________]P:!@```````@````H$``#\_________^P:!@``
+M`````@```'P#``#\_________T0;!@``````"P```",#`````````````$X;
+M!@```````@```*P#``#\_________UD;!@```````@````$$``#\________
+M_[4;!@```````@````H$``#\_________\D;!@```````@```'P#``#\____
+M_____R4<!@``````"P```",#`````````````"\<!@```````@```*P#``#\
+M_________SH<!@```````@````$$``#\_________T0<!@```````@```(`$
+M``#\_________Z4<!@```````@````H$``#\_________\0<!@```````@``
+M`'P#``#\_________]<<!@```````@```,4#``#\_________S$=!@``````
+M"P```",#`````````````#L=!@```````@```*P#``#\_________T8=!@``
+M`````@````$$``#\_________VH>!@```````@```,4#``#\_________^L>
+M!@```````@```!T$``#\__________<>!@```````@```,4#``#\________
+M_V$?!@```````@````H$``#\__________T?!@``````"P````$```!P'08`
+M``````<@!@```````@```*P#``#\_________Q(@!@```````@````$$``#\
+M_________XH@!@```````@````H$``#\_________Z@@!@```````@```/0#
+M``#\_________\0@!@```````@```,4#``#\_________QHA!@``````"P``
+M`)<#`````````````"<A!@```````@```*P#``#\_________S@A!@``````
+M`@```-L#``#\_________T,A!@```````@````$$``#\_________YHA!@``
+M`````@````H$``#\_________[@A!@```````@```/0#``#\_________]0A
+M!@```````@```,4#``#\_________S(B!@``````"P```)<#````````````
+M`#\B!@```````@```*P#``#\_________U`B!@```````@```-L#``#\____
+M_____ULB!@```````@````$$``#\_________[,B!@```````@````H$``#\
+M_________]0B!@```````@```/0#``#\__________`B!@```````@```,4#
+M``#\_________UHC!@``````"P```)<#`````````````&<C!@```````@``
+M`*P#``#\_________W@C!@```````@```-L#``#\_________X,C!@``````
+M`@````$$``#\_________]HC!@```````@````H$``#\__________PC!@``
+M`````@```/0#``#\_________Q8D!@```````@```,4#``#\_________XHD
+M!@``````"P```)<#`````````````)LD!@```````@```*P#``#\________
+M_ZHD!@```````@```-L#``#\_________[4D!@```````@````$$``#\____
+M_____P`E!@```````@````H$``#\_________SXE!@```````@```',#``#\
+M_________TTE!@```````@```,4#``#\_________V<E!@``````"P```)<#
+M`````````````'(E!@```````@````$$``#\_________Z,E!@``````"P``
+M``,````X-P```````!(F!@```````@```#X#``#\_________UHF!@``````
+M`@```&T$``#\_________Y@F!@```````@```&T$``#\_________\8F!@``
+M`````@```&T$``#\_________P(G!@```````@```&T$``#\_________V(G
+M!@```````@```#X#``#\_________Y4G!@```````@```&T$``#\________
+M_\XG!@```````@```&T$``#\__________@G!@```````@```&T$``#\____
+M_____S@H!@```````@```&T$``#\_________YPI!@```````@```(X#``#\
+M__________8J!@```````@```&(#``#\_________V4L!@```````@````$$
+M``#\_________X\L!@```````@```"`$``#\_________YLL!@```````@``
+M`$@#``#\_________[0L!@```````@```!0$``#\_________R4M!@``````
+M`@```(0#``#\_________YHM!@```````@```'X#``#\_________Q8N!@``
+M`````@```'4#``#\_________R$N!@```````@````P$``#\_________RPN
+M!@```````@```+(#``#\_________UDN!@```````@```$0#``#\________
+M_UXO!@``````"P````<`````&````````*HO!@```````@```!,$``#\____
+M_____X,Q!@```````@```(`$``#\_________XXQ!@```````@```,4#``#\
+M_________YXQ!@```````@```*,#``#\_________ZHQ!@```````@```(`$
+M``#\_________[4Q!@```````@```,4#``#\_________P0R!@```````@``
+M``H$``#\_________T0R!@``````"P```/8#`````````````$\R!@``````
+M`@````$$``#\_________U\R!@```````@```(`$``#\_________VLR!@``
+M`````@```(`$``#\_________Y0S!@```````@```&(#``#\_________Y\S
+M!@```````@```,4#``#\_________^(S!@```````@```*,#``#\________
+M__4S!@```````@```&(#``#\_________P<T!@```````@```,4#``#\____
+M_____T\T!@```````@````H$``#\_________V,T!@```````@```/0#``#\
+M_________W8T!@```````@```,4#``#\_________\(T!@``````"P````$`
+M``"0,@8``````,\T!@```````@```*P#``#\_________]XT!@```````@``
+M`-L#``#\_________^DT!@```````@````$$``#\_________S,U!@``````
+M`@````H$``#\_________W0U!@``````"P```)<#`````````````'\U!@``
+M`````@````$$``#\_________\`U!@```````@````H$``#\_________]`U
+M!@```````@```/0#``#\_________^HU!@```````@```,4#``#\________
+M_RTV!@``````"P```)<#`````````````#@V!@```````@````$$``#\____
+M_____W(V!@```````@````($``#\_________Z0V!@```````@```#8#``#\
+M_________ZXV!@```````@```(`$``#\_________]8V!@```````@```)H#
+M``#\__________4V!@```````@```*8#``#\_________S0W!@```````@``
+M`-0#``#\_________TDW!@```````@```*`#``#\_________UPW!@``````
+M"P````8```#K`0```````&8W!@```````@```(P$``#\_________WLW!@``
+M`````@```)<$``#\_________Y`W!@```````@```)<$``#\_________]8W
+M!@```````@```.8#``#\__________8W!@```````@````D$``#\________
+M_S(X!@```````@```&8#``#\_________TXY!@```````@```(,#``#\____
+M_____X4Y!@```````@```'(#``#\_________^TY!@```````@```'(#``#\
+M_________VLZ!@```````@```/X#``#\_________Z8Z!@```````@```/X#
+M``#\__________@Z!@```````@```/X#``#\_________S,[!@```````@``
+M`/X#``#\_________SL\!@``````"P````$```"P.08``````&L\!@``````
+M`@```'<#``#\_________\L\!@``````"P````$```"P.08``````/L\!@``
+M`````@```'<#``#\_________\(]!@``````"P````$```"P.08``````/0]
+M!@```````@```'<#``#\_________\P^!@``````"P````$```"P.08`````
+M`.X^!@```````@```'<#``#\_________UT_!@``````"P````$```"P.08`
+M`````'X_!@```````@```'<#``#\_________PQ!!@```````@```!L$``#\
+M_________X9!!@```````@```!`$``#\_________]I!!@```````@```/X#
+M``#\_________Z!"!@```````@```$(#``#\_________W=#!@```````@``
+M`(,#``#\_________Z1#!@```````@```$X#``#\_________[Y#!@``````
+M`@```(L#``#\_________Q1%!@```````@```'(#``#\_________^!&!@``
+M`````@```#$#``#\_________UI'!@```````@```$(#``#\_________^I'
+M!@```````@```/X#``#\_________Q9(!@```````@```/X#``#\________
+M_Y1(!@```````@````@$``#\_________QA)!@```````@```/X#``#\____
+M_____[A+!@```````@```/X#``#\_________Y-.!@```````@```&T$``#\
+M_________[=.!@```````@```&T$``#\_________W-/!@```````@```(`$
+M``#\_________Y-/!@```````@```&T$``#\_________[=/!@```````@``
+M`&T$``#\_________P!0!@```````@```(`$``#\_________R!0!@``````
+M`@```&T$``#\_________T=0!@```````@```&T$``#\_________Y]0!@``
+M`````@```(`$``#\_________[]0!@```````@```&T$``#\_________]Y0
+M!@```````@```&T$``#\_________R91!@```````@```(`$``#\________
+M_VU1!@```````@```/4#``#\_________X!1!@```````@```&8#``#\____
+M_____ZM1!@```````@```&$#``#\_________^Y1!@```````@````L$``#\
+M_________Q]2!@```````@```)$#``#\_________RU2!@```````@```(`$
+M``#\_________W12!@```````@```.8#``#\_________Y%2!@```````@``
+M`+@#``#\_________\Q2!@```````@```&X#``#\__________)2!@``````
+M`@```%D$``#\__________]2!@```````@```,`#``#\_________R13!@``
+M`````@````D$``#\_________T]3!@```````@```-0#``#\_________V13
+M!@```````@```*`#``#\_________WE3!@```````@```)<$``#\________
+M_XY3!@```````@```)<$``#\_________Z93!@```````@```.8#``#\____
+M_____\]3!@```````@````D$``#\_________^%3!@```````@```&$#``#\
+M_________R54!@```````@```-T#``#\_________Y14!@```````@````D$
+M``#\__________A4!@```````@```-T#``#\_________ZI5!@```````@``
+M`(,#``#\_________U16!@```````@````D$``#\_________W16!@``````
+M`@```'`#``#\_________[]6!@```````@```(,#``#\_________V)7!@``
+M`````@```)<$``#\_________XU7!@```````@````($``#\_________YM7
+M!@```````@```#8#``#\_________Z57!@```````@```(`$``#\________
+M_\U7!@```````@```)H#``#\_________^97!@```````@```*8#``#\____
+M_____Q18!@```````@```-0#``#\_________RE8!@```````@```*`#``#\
+M_________SY8!@```````@```)<$``#\_________U-8!@```````@```)<$
+M``#\_________X%8!@```````@```.8#``#\__________98!@```````@``
+M`'`#``#\_________PE9!@```````@```$<#``#\_________[M9!@``````
+M`@```(,#``#\_________^Q9!@```````@```&$#``#\_________T5;!@``
+M`````@```$\#``#\_________V];!@```````@````\$``#\_________XY;
+M!@```````@```($#``#\__________Y;!@```````@````D$``#\________
+M_Q]<!@```````@```'`#``#\_________VQ<!@```````@```'`#``#\____
+M_____YQ<!@```````@```'`#``#\_________[)<!@```````@```(,#``#\
+M_________^M<!@```````@```)X#``#\_________P1>!@```````@```.@#
+M``#\_________RE>!@```````@````D$``#\_________SU>!@```````@``
+M``($``#\_________TM>!@```````@```#8#``#\_________U5>!@``````
+M`@```(`$``#\_________X->!@```````@```-0#``#\_________YA>!@``
+M`````@```*`#``#\_________[%>!@```````@```)<$``#\_________\9>
+M!@```````@```)<$``#\_________^]>!@```````@```.8#``#\________
+M_PQ?!@```````@```-@#``#\_________V9?!@```````@```,X#``#\____
+M_____X%?!@```````@```'`#``#\_________[A?!@```````@```'`#``#\
+M_________^9?!@```````@```'`#``#\__________=?!@```````@```)X#
+M``#\_________PE@!@```````@```!H$``#\_________S!@!@```````@``
+M`)X#``#\_________W9A!@```````@```&$#``#\_________X]B!@``````
+M`@```$\#``#\_________Z]B!@```````@````\$``#\__________%B!@``
+M`````@```&8#``#\_________S%C!@```````@```'`#``#\_________U!C
+M!@```````@```,(#``#\_________[!C!@```````@```#(#``#\________
+M_\9C!@``````"P```#@#`````````````-%C!@```````@```'H#``#\____
+M_____]YC!@```````@```+8#``#\_________^EC!@```````@```#(#``#\
+M_________[-E!@``````"P````4```#P!P```````+UE!@```````@```(P$
+M``#\_________RMF!@```````@```!H$``#\_________^MF!@```````@``
+M`-(#``#\_________UQG!@``````"P```#@#`````````````&=G!@``````
+M`@```'H#``#\_________Y]G!@``````"P````4```!`"````````*EG!@``
+M`````@```(P$``#\_________[EG!@```````@```&8#``#\_________^!G
+M!@```````@```&$#``#\_________RYH!@```````@```-(#``#\________
+M_T%H!@```````@```$H#``#\_________W%H!@```````@````\$``#\____
+M_____T=I!@```````@```)D#``#\_________U1I!@```````@```%,#``#\
+M_________SUJ!@```````@```&8#``#\_________YQJ!@```````@````D$
+M``#\_________^EJ!@```````@```$\#``#\_________PUK!@```````@``
+M`-T#``#\_________RUK!@```````@````\$``#\_________]AK!@``````
+M`@```.\#``#\_________V9L!@```````@````D$``#\_________^)L!@``
+M`````@```.\#``#\_________WIM!@```````@```)<$``#\_________Y1M
+M!@```````@```)<$``#\_________\1M!@```````@```.\#``#\________
+M_S9N!@```````@```)<$``#\_________XMN!@```````@```)<$``#\____
+M_____[%O!@```````@```!4$``#\_________[YO!@```````@```,T#``#\
+M_________]!O!@```````@```#<#``#\_________^)O!@```````@```#<#
+M``#\_________^]O!@```````@```-P#``#\__________QO!@```````@``
+M```$``#\_________PEP!@```````@```%L#``#\_________QEP!@``````
+M`@```.`#``#\_________T5P!@```````@````D$``#\_________YMP!@``
+M`````@```$\#``#\_________[UP!@```````@```-T#``#\_________]UP
+M!@```````@````\$``#\_________RQQ!@```````@```($#``#\________
+M_T!Q!@``````"P````8````!`@```````$IQ!@```````@```(P$``#\____
+M_____U=Q!@```````@```($#``#\_________W=Q!@```````@````D$``#\
+M_________[QQ!@```````@```&8#``#\_________Q5S!@```````@````L$
+M``#\_________Q]S!@```````@```(`$``#\_________S=S!@```````@``
+M``L$``#\_________T%S!@```````@```(`$``#\_________^MS!@``````
+M`@```&T$``#\_________P!T!@```````@```&T$``#\_________SAT!@``
+M`````@```(`$``#\_________U5T!@```````@```-T#``#\_________W%T
+M!@```````@```)$#``#\_________X=T!@```````@```)$#``#\________
+M_Y5T!@```````@```(`$``#\_________[UT!@```````@```&T$``#\____
+M_____^YT!@```````@```&T$``#\_________PYU!@```````@```&T$``#\
+M_________RMU!@```````@```(`$``#\_________SMU!@``````"P````4`
+M``!X"````````$5U!@```````@```(P$``#\_________V%U!@``````"P``
+M``8````5`@```````&MU!@```````@```(P$``#\__________9U!@``````
+M`@```-(#``#\_________TIV!@```````@```&X#``#\_________VQV!@``
+M`````@````D$``#\_________[AV!@```````@```$\#``#\_________]UV
+M!@```````@```-T#``#\__________UV!@```````@````\$``#\________
+M_T%W!@```````@```&X#``#\_________W1W!@```````@```&8#``#\____
+M_____X9W!@```````@```($#``#\_________[1W!@```````@````D$``#\
+M_________P9X!@```````@```$\#``#\_________RUX!@```````@```-T#
+M``#\_________TUX!@```````@````\$``#\_________X=X!@```````@``
+M``D$``#\_________\UX!@```````@```&8#``#\_________SYY!@``````
+M"P````,```#X-P```````)=Y!@```````@```&X#``#\_________ZAY!@``
+M`````@```&T$``#\_________\AY!@```````@```$T#``#\_________^1Y
+M!@```````@```$T#``#\_________P!Z!@```````@```$T#``#\________
+M_QQZ!@```````@```$T#``#\_________SUZ!@```````@```&L#``#\____
+M_____U]Z!@```````@```&L#``#\_________X%Z!@```````@```&L#``#\
+M_________Z-Z!@```````@```&L#``#\_________]!Z!@```````@```&L#
+M``#\__________)Z!@```````@```&L#``#\_________PY[!@```````@``
+M`$T#``#\_________RI[!@```````@```$T#``#\_________T9[!@``````
+M`@```$T#``#\_________W-[!@```````@```&L#``#\_________X][!@``
+M`````@```$T#``#\_________^![!@```````@```(`$``#\_________U-\
+M!@```````@```&T$``#\_________VU\!@```````@```&T$``#\________
+M_WY\!@```````@```(`$``#\_________XU\!@```````@```-T#``#\____
+M_____YQ\!@```````@```(`$``#\_________[-\!@```````@```$T#``#\
+M_________[U\!@```````@```(`$``#\_________]E\!@```````@```$T#
+M``#\_________^-\!@```````@```(`$``#\_________Q!]!@```````@``
+M`&L#``#\_________QI]!@```````@```(`$``#\_________S-]!@``````
+M`@```$T#``#\_________SU]!@```````@```(`$``#\_________U9]!@``
+M`````@```$T#``#\_________V!]!@```````@```(`$``#\_________V=]
+M!@```````@```"8#``#\_________W-]!@```````@```(4#``#\________
+M_Y)]!@```````@```&L#``#\_________YM^!@```````@```(,#``#\____
+M_____[=^!@```````@```(,#``#\_________R!_!@```````@```&P#``#\
+M_________T.`!@```````@```(`$``#\__________Z`!@```````@```(`$
+M``#\_________QV!!@```````@```&T$``#\_________SF!!@```````@``
+M`&T$``#\__________R!!@```````@```(`$``#\_________Q*"!@``````
+M`@```&T$``#\_________R*"!@```````@```&T$``#\_________[R"!@``
+M`````@```(`$``#\_________]*"!@```````@```&T$``#\_________^*"
+M!@```````@```&T$``#\_________Y&#!@```````@```,,#``#\________
+M_]6#!@```````@```(T#``#\__________Z#!@```````@```/@#``#\____
+M_____Q*$!@```````@```,,#``#\_________TF$!@```````@```&T$``#\
+M_________V:$!@```````@```&T$``#\_________YN$!@```````@```&T$
+M``#\_________[B$!@```````@```&T$``#\_________P6%!@```````@``
+M`.(#``#\_________R"%!@```````@```"(#``#\_________XR%!@``````
+M`@```(`$``#\_________ZV%!@```````@```&T$``#\_________\R%!@``
+M`````@```&T$``#\_________^:&!@``````"P```"L#`````````````!:'
+M!@```````@```%8#``#\_________SB'!@```````@```,H#``#\________
+M_TF'!@```````@```/L#``#\_________UN'!@```````@```/L#``#\____
+M______6'!@```````@```&T$``#\_________QB(!@```````@```&T$``#\
+M_________TR(!@```````@```(`$``#\_________V:(!@```````@```&T$
+M``#\_________[*(!@```````@```&T$``#\_________QF)!@```````@``
+M`&T$``#\_________XN)!@```````@```&T$``#\__________")!@``````
+M`@```(`$``#\_________Q&*!@```````@```&T$``#\_________RZ*!@``
+M`````@```&T$``#\_________X.*!@```````@```%(#``#\_________XV*
+M!@```````@```*$#``#\_________\^*!@```````@```(`$``#\________
+M_T^+!@```````@```(`$``#\_________\^+!@```````@```(`$``#\____
+M_____RJ,!@```````@```'8#``#\_________S2,!@```````@```(`$``#\
+M_________U&,!@```````@```&T$``#\_________VZ,!@```````@```&T$
+M``#\_________^N,!@```````@```(`$``#\__________>,!@```````@``
+M`/(#``#\_________PN-!@```````@```(<#``#\_________QF-!@``````
+M`@```&T$``#\_________S*-!@```````@```&T$``#\_________TZ-!@``
+M`````@```&T$``#\_________T6.!@```````@```&T$``#\_________T60
+M!@```````@```&(#``#\_________U>0!@```````@```,4#``#\________
+M_["0!@```````@```&(#``#\_________[N0!@```````@```,4#``#\____
+M_____\Z0!@```````@````\$``#\_________[F1!@```````@```&`$``#\
+M_________P.2!@``````"P````8````K`@````````V2!@```````@```(P$
+M``#\_________R"2!@```````@```&(#``#\_________RN2!@```````@``
+M`,4#``#\_________T22!@```````@````D$``#\_________ZF2!@``````
+M`@````D$``#\_________Q:3!@```````@````\$``#\_________\23!@``
+M`````@```(`$``#\_________T.4!@```````@```(`$``#\_________W^4
+M!@```````@```(`$``#\_________Y^4!@```````@```&(#``#\________
+M_ZJ4!@```````@```,4#``#\_________[B4!@```````@```&4#``#\____
+M_____W65!@```````@```(`$``#\_________Z^5!@```````@```(`$``#\
+M_________\^5!@```````@```&(#``#\_________]J5!@```````@```,4#
+M``#\_________^B5!@```````@```&4#``#\_________RJ6!@```````@``
+M`(`$``#\_________W&6!@```````@```(`$``#\_________\"6!@``````
+M`@```(`$``#\__________.6!@```````@```&(#``#\__________Z6!@``
+M`````@```,4#``#\_________PF7!@```````@````\$``#\_________U28
+M!@```````@```&(#``#\_________U^8!@```````@```,4#``#\________
+M__&8!@```````@```-T#``#\_________P"9!@```````@```(`$``#\____
+M_____RV9!@```````@```,D#``#\_________T*9!@```````@```-T#``#\
+M_________YJ9!@``````"P````4```"P"````````*29!@```````@```(P$
+M``#\_________[:9!@```````@```%D#``#\_________Z&:!@```````@``
+M`&(#``#\_________ZR:!@```````@```,4#``#\_________\&:!@``````
+M`@```&(#``#\_________\R:!@```````@```,4#``#\_________]>:!@``
+M`````@```-T#``#\_________P.<!@```````@```&(#``#\_________PZ<
+M!@```````@```,4#``#\_________U*<!@``````"P````4```#0"```````
+M`%R<!@```````@```(P$``#\_________WN<!@```````@```.8#``#\____
+M_____XR<!@```````@```&8#``#\_________YR<!@```````@```(`$``#\
+M_________Z><!@```````@```,4#``#\_________[R<!@```````@````L$
+M``#\_________\B<!@```````@```(`$``#\_________].<!@```````@``
+M`,4#``#\_________]Z<!@```````@```+L#``#\_________RB=!@``````
+M`@````H$``#\_________Y6=!@``````"P````$```!`EP8``````)R=!@``
+M````"P```+0#`````````````+*=!@```````@````$$``#\_________^N=
+M!@```````@````H$``#\_________P>>!@```````@```/0#``#\________
+M_R&>!@```````@```,4#``#\_________W:>!@``````"P````$```!`EP8`
+M`````(.>!@```````@```*P#``#\_________Y.>!@```````@```-L#``#\
+M_________YZ>!@```````@````$$``#\_________W*A!@```````@```+H#
+M``#\_________Z^A!@```````@````H$``#\__________VA!@``````"P``
+M``$```!`EP8```````NB!@```````@````$$``#\_________T^B!@``````
+M`@````H$``#\_________YVB!@``````"P````$```!`EP8``````*NB!@``
+M`````@````$$``#\_________^^B!@```````@````H$``#\_________S6C
+M!@``````"P````$```!`EP8``````$"C!@```````@````$$``#\________
+M_W^C!@```````@````H$``#\_________\6C!@``````"P````$```!`EP8`
+M`````-"C!@```````@````$$``#\_________P^D!@```````@````H$``#\
+M_________V"D!@``````"P````$```!`EP8``````&ND!@```````@````$$
+M``#\_________Z^D!@```````@````H$``#\__________6D!@``````"P``
+M``$```!`EP8```````"E!@```````@````$$``#\_________S^E!@``````
+M`@````H$``#\_________X6E!@``````"P````$```!`EP8``````)"E!@``
+M`````@````$$``#\_________^:E!@```````@````H$``#\_________R^F
+M!@``````"P```*(#`````````````#:F!@``````"P```&H#````````````
+M`$FF!@```````@````$$``#\_________ZZF!@```````@````H$``#\____
+M_____Q2G!@``````"P```*(#`````````````!NG!@``````"P```&H#````
+M`````````"ZG!@```````@````$$``#\_________\^H!@```````@```&L#
+M``#\_________RFI!@```````@```&(#``#\_________S>I!@```````@``
+M`,4#``#\_________TNI!@```````@```&X#``#\_________VBI!@``````
+M"P````,```#(.````````(>I!@```````@```&T$``#\_________]6I!@``
+M`````@```&T$``#\__________VI!@```````@```&T$``#\_________TZJ
+M!@```````@```&T$``#\_________W&J!@```````@```&T$``#\________
+M_\ZJ!@```````@```&T$``#\_________PBK!@```````@```&T$``#\____
+M_____TVK!@```````@```(`$``#\_________WNK!@```````@```*`$``#\
+M_________ZNK!@```````@```&T$``#\_________\ZK!@```````@```&T$
+M``#\_________]RK!@```````@```*`$``#\_________URL!@```````@``
+M``D$``#\_________[BL!@```````@```-0#``#\_________\VL!@``````
+M`@```*`#``#\_________^.L!@```````@```)<$``#\__________FL!@``
+M`````@```)<$``#\_________QJM!@```````@```.8#``#\_________T.M
+M!@```````@```&T$``#\_________V6M!@```````@```&T$``#\________
+M_[BM!@```````@````D$``#\__________&M!@```````@```&$#``#\____
+M_____S"N!@```````@```#8#``#\_________SJN!@```````@```(`$``#\
+M_________W:N!@```````@```&T$``#\_________YFN!@```````@```&T$
+M``#\_________S>O!@```````@```&(#``#\_________T*O!@```````@``
+M`,4#``#\_________U&O!@```````@```&8#``#\_________V^O!@``````
+M`@```&(#``#\_________WJO!@```````@```,4#``#\_________X6O!@``
+M`````@```&X#``#\_________Q:Q!@```````@```&(#``#\_________R>Q
+M!@```````@```,4#``#\_________T&Q!@```````@```(\#``#\________
+M_V:Q!@``````"P````,```"8.0```````(2Q!@```````@```&T$``#\____
+M_____Z:Q!@```````@```&T$``#\_________S^R!@```````@```%$#``#\
+M_________XRR!@```````@```*H#``#\_________Z>R!@```````@````D$
+M``#\_________]BR!@```````@```)<$``#\_________^VR!@```````@``
+M``($``#\__________RR!@```````@```#8#``#\_________P:S!@``````
+M`@```(`$``#\_________S"S!@```````@```&(#``#\_________SNS!@``
+M`````@```,4#``#\_________TRS!@```````@```%,#``#\_________X.S
+M!@```````@```%$#``#\_________\VS!@```````@```*H#``#\________
+M_^BS!@```````@````D$``#\_________QFT!@```````@```)<$``#\____
+M_____RZT!@```````@````($``#\_________SVT!@```````@```#8#``#\
+M_________T>T!@```````@```(`$``#\_________W&T!@```````@```&(#
+M``#\_________WRT!@```````@```,4#``#\_________XVT!@```````@``
+M`%,#``#\_________["T!@```````@```&T$``#\_________]*T!@``````
+M`@```&T$``#\_________RFU!@```````@```#8#``#\_________S.U!@``
+M`````@```(`$``#\_________VZU!@```````@```&T$``#\_________Y.U
+M!@```````@```&T$``#\_________^JU!@```````@````D$``#\________
+M_R.V!@```````@```&$#``#\_________Y*V!@```````@```&T$``#\____
+M_____["V!@```````@```&T$``#\_________^&V!@```````@```&(#``#\
+M_________^RV!@```````@```,4#``#\__________>V!@```````@```&X#
+M``#\_________U^W!@```````@```&T$``#\_________\:X!@```````@``
+M`(`$``#\_________[3`!@```````@````D$``#\_________PG!!@``````
+M`@```,8#``#\_________Q[!!@```````@```&`$``#\_________S7!!@``
+M`````@```$4#``#\_________ZC"!@```````@```$L#``#\_________[?"
+M!@```````@```,@#``#\_________Z3#!@```````@```(`$``#\________
+M_Y#$!@```````@````L```#>!````````)W$!@``````"P````L```#@!```
+M`````*?$!@```````@```%<#``#\_________]?$!@```````@````L```#>
+M!````````.3$!@``````"P````L```#@!````````.[$!@```````@```%<#
+M``#\_________RG%!@```````@```$L#``#\_________S;%!@```````@``
+M`,@#``#\_________TW&!@```````@```&`#``#\_________R''!@``````
+M`@```&T$``#\_________UK'!@```````@```&T$``#\_________W+'!@``
+M`````@```!D$``#\_________X3'!@```````@```!D$``#\_________Y;'
+M!@```````@```!D$``#\_________ZC'!@```````@```!D$``#\________
+M_[K'!@```````@```!D$``#\_________\S'!@```````@```!D$``#\____
+M_____]['!@```````@```!D$``#\__________#'!@```````@```!D$``#\
+M_________X#(!@```````@```!D$``#\_________P;)!@```````@```'T#
+M``#\_________Q?)!@```````@```,4#``#\_________WG)!@```````@``
+M``H$``#\_________XG)!@```````@```'P#``#\_________^C)!@``````
+M"P```"0#`````````````/+)!@```````@```*P#``#\__________W)!@``
+M`````@````$$``#\_________U7*!@```````@````H$``#\_________VG*
+M!@```````@```'P#``#\_________P#+!@```````@```&`$``#\________
+M_RW+!@```````@```&`$``#\_________SC+!@``````"P```"0#````````
+M`````$;+!@```````@```*P#``#\_________U'+!@```````@````$$``#\
+M_________Z;+!@```````@```.T#``#\_________[3+!@```````@```#8#
+M``#\_________[[+!@```````@```(`$``#\__________?+!@```````@``
+M`-$#``#\_________P7,!@```````@```#8#``#\_________P_,!@``````
+M`@```(`$``#\_________S+,!@```````@```.T#``#\_________T3,!@``
+M`````@```#8#``#\_________T[,!@```````@```(`$``#\_________YW,
+M!@```````@```-$#``#\_________\[.!@```````@```#,#``#\________
+M_[C0!@```````@```!$$``#\_________]'0!@```````@```'L#``#\____
+M_____S'2!@```````@```!\$``#\_________\+2!@```````@```!\$``#\
+M_________]'2!@```````@```&`$``#\_________P;3!@```````@```!X$
+M``#\_________QO3!@``````"P```*X#`````````````%O3!@```````@``
+M`!$$``#\_________VW3!@```````@```'L#``#\_________P[4!@``````
+M`@```!X$``#\_________S'4!@```````@```!X$``#\_________^_4!@``
+M`````@```"T#``#\___________4!@```````@```)8#``#\_________P_5
+M!@```````@```.$#``#\_________V35!@``````"P````,```#`.0``````
+M`'K7!@```````@```&T$``#\_________Y;7!@```````@```(`$``#\____
+M_____VW8!@```````@```&T$``#\_________^K8!@```````@```(`$``#\
+M_________^W9!@```````@```&T$``#\_________R;:!@```````@```#4#
+M``#\_________PK=!@```````@```&T$``#\_________W_>!@```````@``
+M`)L#```$`````````,/>!@```````@```&T$``#\_________R_?!@``````
+M`@```#0#```$`````````'/?!@```````@```&T$``#\_________]_?!@``
+M`````@```"L#```$`````````"/@!@```````@```&T$``#\_________[_@
+M!@```````@```&@#```$``````````/A!@```````@```&T$``#\________
+M_Y3A!@``````"P```#0#`````````````+/A!@``````"P```"L#````````
+M`````-'A!@``````"P```)L#`````````````/3A!@``````"P```&@#````
+M`````````+[B!@```````@```-H#``#\_________S7C!@```````@```&T$
+M``#\_________U3C!@```````@````L```"`!@```````%_C!@``````"P``
+M``L```!`!@```````&?C!@```````@````L```"`!@```````&WC!@``````
+M`@````L```"$!@```````'CC!@``````"P````L```!@!@```````(#C!@``
+M`````@````L```"$!@```````)#C!@```````@````L```!\!@```````)OC
+M!@``````"P````L```#`!0```````*/C!@```````@````L```!\!@``````
+M`*GC!@```````@```&0#```(`````````,7C!@```````@````L````[!@``
+M`````-7C!@``````"P````L```#`!0```````-SC!@```````@````L````\
+M!@```````/CC!@```````@````L````\!@````````;D!@```````@````L`
+M``!;!@```````!;D!@``````"P````L```#`!0```````!WD!@```````@``
+M``L```!<!@```````#GD!@```````@````L```!<!@```````$WD!@``````
+M`@````L```!\!@```````&7D!@```````@````L````\!@```````'OD!@``
+M````"P````L```!`!@```````(CD!@```````@````L```!\!@```````)7D
+M!@``````"P````L```#`!0```````,7D!@```````@```&0#```)````````
+M`-?D!@``````"P````L```#`!0```````-[D!@``````"P```&0#````````
+M`````/?D!@```````@````<```#0&````````#_E!@```````@````L```!\
+M!@```````&CE!@```````@````L```!<!@```````'[E!@``````"P````L`
+M``!@!@```````(OE!@```````@````L```!\!@```````)CE!@``````"P``
+M``L```#`!0```````,7E!@```````@```&0#```)`````````-?E!@``````
+M"P````L```#`!0```````-[E!@``````"P```&0#`````````````/?E!@``
+M`````@````<```#0&````````#_F!@```````@````L```!\!@```````'WF
+M!@```````@```&0#```(`````````)SF!@``````"P```&0#```-````````
+M`*?F!@```````@````<```#0&````````*[F!@``````"P```&0#````````
+M`````"?G!@```````@````<```!,&0```````#/G!@``````"P````<```#`
+M&````````(CG!@``````"P```&0#`````````````(_G!@``````"P```&0#
+M```0`````````,'G!@``````"P```&0#```,`````````#GH!@``````"P``
+M`&0#```0`````````++H!@```````@```%H$``#\_________\+H!@``````
+M`@````<```!,&0```````,_H!@``````"P````<```#`&````````/WH!@``
+M````"P```&0#`````````````!/I!@``````"P```&0#```0`````````!KI
+M!@``````"P````<```#0&````````#7I!@``````"P````<```#`&```````
+M`#_I!@``````"P````<```#(&````````(KI!@``````"P```&0#```0````
+M``````SJ!@```````@````<```!,&0```````&SJ!@```````@````L```"'
+M!@```````'7J!@```````@````L```"$!@```````)/J!@```````@````<`
+M``!,&0```````)SJ!@``````"P````<```#`&````````*/J!@``````"P``
+M``<```#0&````````,[J!@```````@````<```!,&0```````/#J!@``````
+M"P```&0#``````````````/K!@``````"P```&0#```<``````````WK!@``
+M````"P```&0#```,`````````!7K!@``````"P```&0#```0`````````'+K
+M!@``````"P```&0#```<``````````CL!@```````@````L```"<!0``````
+M`!'L!@```````@````L```"<!0```````*GM!@```````@```&@$``#\____
+M_____\/M!@```````@```&@$``#\_________Q?N!@```````@````<```!,
+M&0```````"#N!@``````"P````<```#`&````````"?N!@```````@````<`
+M``!,&0```````$;N!@``````"P````<```#0&````````)GN!@```````@``
+M`*0$``#\_________[CN!@```````@```)P$``#\_________^7N!@``````
+M`@```%X#``#\__________3N!@```````@```%X#``#\_________R#O!@``
+M`````@```#8#``#\_________S_O!@```````@```%D$``#\_________U3O
+M!@``````"P```&<#`````````````&?O!@```````@```'@$``#\________
+M_Y'O!@```````@```)D$``#\_________[OO!@```````@```/P#``#\____
+M_____\/O!@```````@```/P#``#\_________\OO!@```````@```+4#``#\
+M_________]SO!@```````@```+4#``#\_________^WO!@```````@```%\#
+M``#\__________?O!@```````@```(`$``#\___________O!@```````@``
+M`*<#``#\_________P?P!@```````@```-<#``#\_________QSP!@``````
+M"P```&<#`````````````#/P!@```````@```'@$``#\_________T#P!@``
+M`````@```&8#``#\_________TWP!@```````@```&8#``#\_________TOQ
+M!@```````@```%<#``#\_________UGQ!@```````@```(`$``#\________
+M_V[Q!@```````@```/H#``#\_________Z+Q!@``````"P````8````_`@``
+M`````*SQ!@```````@```(P$``#\_________V#S!@``````"P```%0#````
+M`````````&7S!@```````@```%($``#\_________ZWT!@``````"P````4`
+M```("0```````+?T!@```````@```(P$``#\_________^?T!@```````@``
+M`%D$``#\__________ST!@``````"P````$`````]`8``````!#U!@``````
+M`@```'@$``#\_________^;V!@```````@```*8#``#\_________PSW!@``
+M`````@```)H#``#\_________S?W!@```````@````D$``#\_________ZCW
+M!@```````@````D$``#\_________PGX!@```````@```)<$``#\________
+M_X?X!@```````@````D$``#\__________+X!@```````@```)<$``#\____
+M_____Q/Z!@```````@```/D#``#\_________RCZ!@```````@```*`#``#\
+M_________Z7[!@```````@```$\#``#\__________'[!@```````@````D$
+M``#\_________SW\!@```````@```-T#``#\_________Y?\!@```````@``
+M`'8#``#\_________[O\!@```````@````\$``#\_________]G\!@``````
+M`@````D$``#\_________R?]!@```````@```.\#``#\_________P'^!@``
+M`````@````($``#\_________SS^!@```````@```$\#``#\_________V7^
+M!@```````@```-T#``#\_________Y[^!@```````@````\$``#\________
+M_U?_!@```````@```&(#``#\_________V?_!@```````@```,4#``#\____
+M_____P,`!P```````@````H$``#\_________S("!P```````@```&`$``#\
+M_________PD$!P``````"P````$```#0_@8``````(@$!P```````@```#T#
+M``#\_________Y4$!P```````@```*P#``#\_________Z,$!P```````@``
+M`-L#``#\_________[T$!P```````@```/0#``#\_________R8%!P``````
+M`@```&`$``#\_________X(%!P```````@```&`$``#\_________Z$%!P``
+M`````@```*P#``#\_________[8%!P```````@```-L#``#\_________\P%
+M!P```````@````$$``#\_________]D%!P```````@```,4#``#\________
+M_XP&!P```````@````H$``#\_________Z0&!P```````@```/0#``#\____
+M_____[D&!P```````@```,4#``#\_________]H&!P```````@```)<$``#\
+M__________(&!P```````@````($``#\_________SD'!P```````@```&`$
+M``#\_________Q4(!P```````@```#T#``#\_________U\(!P``````"P``
+M``$```#P\P8``````&X(!P```````@```*P#``#\_________X0(!P``````
+M`@```-L#``#\_________Y8(!P```````@````$$``#\_________\P(!P``
+M`````@````($``#\_________]T(!P```````@```(`$``#\_________^4(
+M!P```````@```#8#``#\_________SX)!P```````@```&`$``#\________
+M_U$)!P```````@```&(#``#\_________UP)!P```````@```,4#``#\____
+M_____W0)!P```````@```)<$``#\_________\T)!P```````@````,$``#\
+M_________]X)!P```````@````,$``#\_________P4*!P```````@```#8#
+M``#\_________Z$>!P```````@````H$``#\__________X>!P``````"P``
+M``$```#P\P8```````D?!P```````@````$$``#\_________TD?!P``````
+M`@````($``#\_________UT?!P```````@```(`$``#\_________V4?!P``
+M`````@```#8#``#\_________YX?!P```````@```,4#``#\_________R0@
+M!P```````@````H$``#\_________Z0@!P``````"P````$```#P\P8`````
+M`*\@!P```````@````$$``#\_________^D@!P```````@````($``#\____
+M______T@!P```````@```(`$``#\_________P4A!P```````@```#8#``#\
+M_________T4A!P```````@```/0#``#\_________\TA!P``````"P````$`
+M``#P\P8``````-PA!P```````@```*P#``#\__________(A!P```````@``
+M`-L#``#\__________TA!P```````@````$$``#\_________S8B!P``````
+M`@````($``#\_________T<B!P```````@```(`$``#\_________T\B!P``
+M`````@```#8#``#\_________X$B!P```````@```&(#``#\_________Y$B
+M!P```````@```,4#``#\_________YDB!P```````@````H$``#\________
+M_ZXB!P```````@```&(#``#\_________ZLC!P``````"P````$```#P\P8`
+M`````+HC!P```````@```*P#``#\_________]`C!P```````@```-L#``#\
+M_________]LC!P```````@````$$``#\_________Q0D!P```````@````($
+M``#\_________R4D!P```````@```(`$``#\_________RTD!P```````@``
+M`#8#``#\_________V8D!P```````@```&(#``#\_________W<D!P``````
+M`@```,4#``#\__________8D!P```````@```)<$``#\_________PLE!P``
+M`````@````($``#\_________QLE!P```````@```(`$``#\_________R,E
+M!P```````@```#8#``#\_________ULE!P```````@```)<$``#\________
+M_\$E!P```````@```*8#``#\_________^(E!P```````@```)H#``#\____
+M______@E!P```````@```*`#``#\_________V8F!P```````@````H$``#\
+M_________\HF!P``````"P````$```#P\P8``````-4F!P```````@````$$
+M``#\_________PXG!P```````@````($``#\_________Q\G!P```````@``
+M`(`$``#\_________R<G!P```````@```#8#``#\_________VTG!P``````
+M`@```,4#``#\_________[4G!P``````"P````,```#H.@```````,PG!P``
+M`````@```/D#``#\__________PG!P```````@```(D#``#\_________Q<H
+M!P```````@```+\#``#\_________R<H!P```````@```/$#``#\________
+M_P4I!P```````@```),#``#\_________Q@I!P```````@```),#``#\____
+M_____R4I!P```````@```),#``#\_________S@I!P```````@```),#``#\
+M_________W,I!P```````@```'4$``#\_________XHI!P```````@```'4$
+M``#\_________Z,I!P```````@```'4$``#\_________Q8J!P```````@``
+M`+X#``#\_________S8J!P```````@```'\$``#\_________TDJ!P``````
+M`@```'\$``#\_________VPJ!P```````@```'\$``#\_________W\J!P``
+M`````@```'\$``#\_________Y\J!P```````@```'\$``#\_________[(J
+M!P```````@```'\$``#\_________](J!P```````@```'\$``#\________
+M_^4J!P```````@```'\$``#\_________Q8K!P```````@```'\$``#\____
+M_____RHK!P```````@```'\$``#\_________U,K!P```````@```'\$``#\
+M_________V8K!P```````@```'\$``#\_________XPK!P```````@```'\$
+M``#\_________Y\K!P```````@```'\$``#\_________[\K!P```````@``
+M`'\$``#\_________](K!P```````@```'\$``#\__________(K!P``````
+M`@```'\$``#\_________P4L!P```````@```'\$``#\_________RPL!P``
+M`````@```'\$``#\_________S\L!P```````@```'\$``#\_________U\L
+M!P```````@```'\$``#\_________W(L!P```````@```'\$``#\________
+M_Y(L!P```````@```'\$``#\_________Z4L!P```````@```'\$``#\____
+M_____\PL!P```````@```'\$``#\_________]\L!P```````@```'\$``#\
+M__________\L!P```````@```'\$``#\_________Q(M!P```````@```'\$
+M``#\_________S(M!P```````@```'\$``#\_________T4M!P```````@``
+M`'\$``#\_________VPM!P```````@```'\$``#\_________W\M!P``````
+M`@```'\$``#\_________Y\M!P```````@```'\$``#\_________[(M!P``
+M`````@```'\$``#\_________](M!P```````@```'\$``#\_________^4M
+M!P```````@```'\$``#\_________Q0N!P```````@```+$$``#\________
+M_RXN!P```````@```+$$``#\_________U8N!P```````@```+$$``#\____
+M_____W`N!P```````@```+$$``#\_________Y@N!P```````@```+$$``#\
+M_________[(N!P```````@```+$$``#\_________]HN!P```````@```+$$
+M``#\__________0N!P```````@```+$$``#\_________QPO!P```````@``
+M`+$$``#\_________S8O!P```````@```+$$``#\_________V0O!P``````
+M`@```+$$``#\_________WXO!P```````@```+$$``#\_________Z8O!P``
+M`````@```+$$``#\_________\`O!P```````@```+$$``#\_________^(O
+M!P```````@```+4#``#\__________$O!P```````@```+4#``#\________
+M__DO!P```````@```%\#``#\_________P,P!P```````@```(`$``#\____
+M_____PLP!P```````@```*<#``#\_________Q,P!P```````@```-<#``#\
+M_________R`P!P```````@````,$``#\_________RTP!P```````@````,$
+M``#\_________T<P!P``````"P````<```!@&0```````$PP!P```````@``
+M`$\$``#\_________V,P!P```````@```'<$``#\_________VXP!P``````
+M`@```'<$``#\_________X(P!P```````@```#`$``#\_________Y\P!P``
+M`````@```&\$``#\_________ZHP!P```````@```),$``#\_________\8P
+M!P```````@```&\$``#[_________]`P!P```````@```&\$``#\________
+M_V,Q!P```````@```&\$``#\_________UHR!P```````@```&\$``#\____
+M_____^`R!P```````@```$`$``#\_________S,S!P```````@```"8$``#\
+M_________STS!P```````@```"8$``#\_________TDS!P```````@```#`$
+M``#\_________U4S!P```````@```#`$``#\_________VDS!P```````@``
+M`"8$``#\_________[\S!P```````@```($$``#[_________T@T!P``````
+M`@```"8$``#\_________\PT!P```````@```(T$``#\_________^(T!P``
+M`````@```(T$``#\__________8T!P```````@```"8$``#\_________R<U
+M!P```````@```(T$``#\_________T$U!P```````@```(T$``#\________
+M_UHU!P```````@```(T$``#\_________W0U!P```````@```(T$``#\____
+M_____Y$U!P```````@```(T$``#\_________[0U!P```````@```&($``#\
+M_________\HU!P```````@```(T$``#\_________]$U!P```````@```"8$
+M``#\_________R$V!P```````@```($$``#[_________T4V!P```````@``
+M`#4$``#\_________U\V!P```````@```(\$``#\_________WPV!P``````
+M`@````L```#$!@```````(0V!P```````@````L```#$!@```````#4W!P``
+M`````@```'\$``#\_________]`W!P```````@```$H$``#\_________PTX
+M!P```````@```'\$``#\_________Z8X!P```````@```)T$``#\________
+M_R<Y!P```````@```#T$``#\_________T4Y!P```````@```'\$``#\____
+M_____U4Y!P```````@```'\$``#\_________\XY!P```````@```#P$``#\
+M_________]8Y!P```````@```)($``#[__________$Y!P```````@```#<$
+M``#\_________R4Z!P```````@```"T$``#\_________U\Z!P```````@``
+M`"X$``#\_________\\Z!P```````@```($$``#[_________]HZ!P``````
+M`@```$4$``#\_________^(Z!P```````@```*($``#\_________UX[!P``
+M`````@````L```#(!@```````'L[!P```````@```*T$``#\_________X<[
+M!P```````@```)0$``#\_________Y,[!P```````@````L```#<!@``````
+M`)H[!P```````@````L```#H!@```````)X[!P``````"P```+($````````
+M`````*4[!P```````@````L```#T!@```````*P[!P``````"P````L```#@
+M!@```````+0[!P```````@```'@$``#\_________]4[!P```````@```(\$
+M``#\_________^([!P```````@````L```#(!@```````/`[!P``````"P``
+M``$`````.0<```````4\!P```````@```'\$``#\_________QT\!P``````
+M`@````L```#(!@```````"@\!P```````@````L```#(!@```````#0\!P``
+M`````@````L```#$!@```````,`\!P```````@```"8$``#\_________Q0]
+M!P```````@```+($``#\_________RH]!P```````@```(,$``#\________
+M_TH]!P```````@```(`$``#\_________U(]!P```````@```&$$``#\____
+M_____WP]!P```````@```&\$``#\_________X@]!P```````@```&\$``#\
+M_________Y,]!P```````@```&\$``#\_________],]!P```````@```%T$
+M``#\_________PX^!P```````@```'\$``#\_________R0^!P```````@``
+M`"8$``#\_________Z4^!P```````@```(\$``#\_________R@_!P``````
+M`@```&D$``#\_________W`_!P```````@```'\$``#\_________Y`_!P``
+M`````@```+`$``#\_________[4_!P```````@```(0$``#\_________P1`
+M!P```````@```(,$``#\_________QM"!P```````@```"@$``#\________
+M_S%"!P```````@```%T$``#\_________SI"!P```````@```(\$``#\____
+M_____VY"!P```````@```'\$``#\_________ZA"!P```````@```(,$``#\
+M__________%"!P```````@```(,$``#\_________Y-#!P```````@```&\$
+M``#\_________SQ$!P```````@```*`$``#\_________TE$!P```````@``
+M`%$$``#\_________VU$!P```````@```*`$``#\__________]$!P``````
+M`@```%$$``#\_________QY%!P```````@```*`$``#\_________X]%!P``
+M`````@```(,$``#\_________ZU%!P```````@```%$$``#\_________V)&
+M!P``````"P````$`````3`<``````(U&!P``````"P````<```#`&@``````
+M`))&!P```````@```%P$``#\_________Z]&!P```````@```'\$``#\____
+M_____]Q&!P```````@```'\$``#\_________P1'!P```````@```)`$``#\
+M_________V9'!P```````@```'\$``#\_________W%'!P``````"P````$`
+M``#P1@<``````)9'!P```````@```*\$``#\_________]I'!P```````@``
+M`$8$``#\__________9'!P```````@```(\$``#\_________PQ(!P``````
+M"P````$```!01P<``````$](!P```````@```"($``#\_________Z%(!P``
+M`````@```#T$``#\_________\5(!P```````@```*($``#\_________])(
+M!P```````@```)($``#[_________^9(!P```````@```#<$``#\________
+M_RQ)!P``````"P```"4$`````````````$Y)!P```````@```*\$``#\____
+M_____UM)!P```````@```$8$``#\_________WA)!P```````@```'\$``#\
+M_________\%)!P```````@```'\$``#\_________\M)!P``````"P````$`
+M``"`2`<``````-9)!P```````@```#,$``#\__________))!P```````@``
+M``<```#8&@```````"M+!P```````@```$8$``#\_________T)+!P``````
+M`@```*@$``#\_________V5+!P```````@```*\$``#\_________^%,!P``
+M`````@```*@$``#\_________WE-!P```````@```*@$``#\_________Z1-
+M!P``````"P````$`````2@<``````-]-!P```````@```*\$``#\________
+M_S).!P```````@```*\$``#\_________VE.!P``````"P````$`````3@<`
+M`````,M.!P```````@```"@$``#\_________^%.!P```````@```)`$``#\
+M__________I.!P```````@```%T$``#\_________X-0!P``````"P````<`
+M``#`&@```````(Q0!P```````@```%P$``#\_________Y=0!P```````@``
+M`'\$``#\__________90!P``````"P````<```#`&@```````/]0!P``````
+M`@```%P$``#\_________P=1!P```````@```(\$``#\_________V%1!P``
+M````"P````<```#`&@```````&I1!P```````@```%P$``#\_________W)1
+M!P```````@```(\$``#\_________\A1!P``````"P````<```#`&@``````
+M`-%1!P```````@```%P$``#\_________]E1!P```````@```(\$``#\____
+M_____Y52!P``````"P````<```#`&@```````)Y2!P```````@```%P$``#\
+M_________Z92!P```````@```(\$``#\_________RQ3!P``````"P````<`
+M``#`&@```````#53!P```````@```%P$``#\_________SU3!P```````@``
+M`(\$``#\_________]]3!P``````"P````<```#`&@```````.=3!P``````
+M`@```%P$``#\_________Q-4!P```````@```'\$``#\_________XM4!P``
+M`````@```#D$``#\_________^54!P```````@```#D$``#\_________WE5
+M!P```````@```#D$``#\_________Y95!P```````@```#D$``#\________
+M_X56!P```````@```&0$``#\_________\A6!P```````@```%T$``#\____
+M_____^-6!P```````@```#@$``#\_________R57!P```````@```%T$``#\
+M_________RU7!P```````@```#@$``#\_________T=7!P``````"P````<`
+M``#`&@```````$]7!P```````@```%P$``#\_________U=7!P```````@``
+M`(\$``#\_________V=7!P```````@```%T$``#\_________Q59!P``````
+M`@```#\$``#\_________T59!P```````@```#H$``#\_________VQ9!P``
+M`````@```($$``#[_________ZA9!P```````@```$($``#\_________\]9
+M!P```````@```($$``#[_________]A9!P```````@```)($``#[________
+M_S%:!P```````@```#H$``#\_________UA:!P```````@```#H$``#\____
+M_____]):!P```````@```"0$``#\__________I:!P```````@```"@$``#\
+M_________Q!;!P```````@```#@$``#\_________VA;!P```````@```($$
+M``#[_________Y1;!P```````@```#H$``#\_________ZQ;!P```````@``
+M`$8$``#\_________]=;!P```````@```#\$``#\_________^Q<!P``````
+M`@```&0$``#\_________V==!P```````@```#@$``#\_________W5=!P``
+M`````@```%T$``#\_________[Q=!P```````@```#H$``#\_________^%=
+M!P```````@```#\$``#\_________[)>!P``````"P````<```#`&@``````
+M`+M>!P```````@```%P$``#\_________\9>!P```````@```'\$``#\____
+M_____QM@!P```````@```($$``#[_________T9@!P```````@```#H$``#\
+M_________VA@!P```````@```#\$``#\_________T)A!P``````"P````<`
+M``#`&@```````$IA!P```````@```%P$``#\_________U9A!P```````@``
+M`'\$``#\_________WQA!P```````@```$8$``#\__________%B!P``````
+M`@```&0$``#\_________WAC!P```````@```$`$``#\_________TED!P``
+M`````@```*H$``#\_________Y=D!P```````@```",$``#\_________\9D
+M!P``````"P````<```#`&@```````,MD!P```````@```%P$``#\________
+M_]YD!P```````@```(T$``#\_________RYE!P``````"P````,````X.P``
+M`````#9E!P```````@```)D$``#\_________XME!P``````"P````,```!X
+M.P```````.-E!P```````@```*\$``#\_________R)F!P```````@```*\$
+M``#\_________U1F!P```````@```)D$``#\_________W=F!P```````@``
+M`(\$``#\_________XMF!P``````"P````$```"@20<``````*1F!P``````
+M`@```*\$``#\_________\)F!P```````@```$8$``#\__________-F!P``
+M`````@````<```#4&@```````/YF!P```````@```'<$``#\_________P]G
+M!P```````@````<```#8&@```````!UG!P```````@````<```#8&@``````
+M`"QG!P```````@````<```#7&@```````#1G!P``````"P````<```#`&@``
+M`````#EG!P```````@```*P$``#\_________U5G!P```````@```&,$``#\
+M_________X%G!P```````@```(($``#\_________[UG!P``````"P````$`
+M``!09P<``````,5G!P```````@```(<$``#\_________P9H!P```````@``
+M`&,$``#\_________QEH!P```````@```'`$``#\_________T9H!P``````
+M`@```(($``#\_________VQH!P``````"P````,```"X.P```````!EI!P``
+M````"P````$```#P9P<``````"-I!P```````@```(<$``#\_________VII
+M!P```````@```"($``#\_________^1I!P```````@```&,$``#\________
+M_P)J!P```````@```*\$``#\_________TYJ!P``````"P````$```"P:0<`
+M`````(-J!P```````@```&\$``#\_________Y9K!P```````@```%0$``#\
+M_________[9K!P```````@```'<$``#\_________R)L!P```````@```(X$
+M``#\_________SYL!P```````@```&X$``#\_________VML!P```````@``
+M`&\$``#\_________SMM!P```````@```&\$``#\_________RQN!P``````
+M`@```&\$``#\_________P!O!P```````@```&\$``#\_________TQS!P``
+M`````@```&\$``#\_________QAT!P```````@```&\$``#\_________X)T
+M!P``````"P````,```#`.P```````&=U!P```````@```$,$``#\________
+M_U5Z!P```````@```"\$``#\_________U9[!P```````@```"\$``#\____
+M_____[A\!P```````@```"\$``#\_________])]!P```````@```#0$``#\
+M_________W)^!P```````@```"\$``#\_________X]_!P```````@```#0$
+M``#\_________TR!!P```````@```&`$``#\_________UV!!P```````@``
+M`*H$``#\_________QR#!P```````@```&`$``#\_________RV#!P``````
+M`@```*H$``#\_________[R#!P```````@```$L$``#\_________UR$!P``
+M`````@```$L$``#\__________N$!P```````@```$L$``#\_________W"%
+M!P```````@```(D$``#\_________]N%!P```````@```$L$``#\________
+M_U:&!P```````@```(D$``#\_________S.(!P```````@```#H$``#\____
+M_____VR(!P```````@```#H$``#\_________]>(!P```````@```#H$``#\
+M_________Y6+!P```````@```$L$``#\_________P",!P```````@```$L$
+M``#\_________VZ,!P```````@```$L$``#\_________\V,!P```````@``
+M`$L$``#\_________R>-!P```````@```$L$``#\_________XN-!P``````
+M"P````,`````/````````&J/!P```````@```"@$``#\_________WZ/!P``
+M`````@```#X$``#\_________\R/!P```````@```#H$``#\_________S>0
+M!P```````@```#H$``#\_________T20!P```````@```"@$``#\________
+M_UV0!P```````@```$($``#\_________W*0!P```````@```%T$``#\____
+M_____ZZ0!P```````@```&,$``#\_________P21!P```````@```*8$``#\
+M_________PR1!P```````@```&<$``#\_________R&1!P``````"P````$`
+M``"@(`@``````#J1!P```````@```'`$``#\_________\>1!P```````@``
+M`(<$``#\_________]^1!P```````@```'\$``#\_________^>1!P``````
+M"P````$```"0D`<```````.2!P```````@```*\$``#\_________QF2!P``
+M`````@```(H$``#\_________RB2!P``````"P````$```"@(`@``````$&2
+M!P```````@```'`$``#\__________Z2!P```````@```(<$``#\________
+M_Q.3!P```````@```'\$``#\_________QN3!P```````@```&,$``#\____
+M_____XB3!P``````"P````$````0D@<``````*&3!P```````@```*\$``#\
+M_________PF4!P```````@```$L$``#\_________Z*4!P```````@```#@$
+M``#\_________].4!P```````@```$L$``#\_________W.5!P```````@``
+M`#D$``#\_________X25!P```````@```#@$``#\_________\*5!P``````
+M`@```$L$``#\_________^25!P```````@```#8$``#\_________P26!P``
+M`````@```"@$``#\_________QR6!P```````@```#8$``#\_________SB6
+M!P```````@```"@$``#\_________\B6!P```````@```&<$``#\________
+M_]F6!P```````@```*8$``#\_________V.7!P``````"P````$`````EP<`
+M`````/67!P``````"P````$```!PG`<``````!"8!P```````@```'P$``#\
+M_________QV8!P```````@```$8$``#\_________UF8!P``````"P````$`
+M``!PG`<``````'.8!P```````@```'P$``#\_________X"8!P```````@``
+M`$8$``#\_________Z^8!P``````"P````$```!PG`<``````,F8!P``````
+M`@```'P$``#\_________U&9!P``````"P````$```"@F`<``````%V9!P``
+M`````@```'T$``#\_________ZB9!P```````@```"H$``#[_________[^9
+M!P```````@```$8$``#\__________29!P```````@```$8$``#\________
+M_Q6:!P```````@```"H$``#[_________RR:!P```````@```$8$``#\____
+M_____U>:!P```````@```$8$``#\__________Z:!P```````@```$8$``#\
+M_________W6;!P```````@```$8$``#\_________Y2;!P```````@```$8$
+M``#\_________QR<!P``````"P````$```#@F`<``````$&<!P```````@``
+M`'P$``#\_________TZ<!P``````"P````$```!PG`<``````&B<!P``````
+M`@```'P$``#\_________[J<!P``````"P````$```!PF0<```````2>!P``
+M`````@```'T$``#\_________QN>!P```````@```$L$``#\_________R.>
+M!P```````@```(H$``#\_________RN>!P``````"P````$```"@(`@`````
+M`$2>!P```````@```'`$``#\_________X&>!P```````@```$L$``#\____
+M______Z>!P```````@```(<$``#\_________Q2?!P```````@```'\$``#\
+M_________QR?!P```````@```&,$``#\_________V.?!P``````"P````$`
+M```0G@<``````(F?!P```````@```*\$``#\_________YN?!P``````"P``
+M``$```"@(`@``````+2?!P```````@```'`$``#\_________P^@!P``````
+M`@```(($``#\_________QZ@!P```````@```(\$``#\_________XJ@!P``
+M`````@```(<$``#\_________\R@!P```````@```%4$``#\_________TZA
+M!P```````@```$L$``#\_________XRA!P``````"P````,```!`/```````
+M``FB!P```````@```#4$``#\_________U"B!P```````@```#4$``#\____
+M_____Y*B!P```````@```$L$``#\_________^FB!P```````@```$L$``#\
+M_________]*D!P``````"P````$```!0G@<``````#"E!P```````@```&0$
+M``#\_________X>E!P```````@```$L$``#\_________ZFE!P```````@``
+M`#8$``#\_________]2E!P```````@```"@$``#\_________^6E!P``````
+M`@```%T$``#\_________U"F!P```````@```$L$``#\_________X6F!P``
+M`````@```#8$``#\_________^FF!P```````@```&0$``#\_________U6G
+M!P```````@```"@$``#\_________VZG!P```````@```%T$``#\________
+M_]*H!P```````@```"P$``#\_________X2I!P``````"P````$```!0D0<`
+M``````JJ!P```````@```*8$``#\_________R"J!P```````@```(\$``#\
+M_________SRJ!P```````@```%4$``#\_________UBJ!P```````@```#$$
+M``#\__________VJ!P``````"P````$```!0D@<``````&FK!P```````@``
+M`(H$``#\_________W.K!P```````@```&<$``#\_________XRK!P``````
+M`@```*($``#\_________]ZK!P``````"P````$```!PG`<``````/BK!P``
+M`````@```'P$``#\_________P6L!P```````@```$8$``#\_________SZL
+M!P``````"P````$```!PG`<``````%NL!P```````@```'P$``#\________
+M_VBL!P```````@```$8$``#\_________\*L!P``````"P````$```!PG`<`
+M`````-RL!P```````@```'P$``#\_________^FL!P```````@```$8$``#\
+M_________QJM!P``````"P````$```!PG`<``````#>M!P```````@```'P$
+M``#\_________T2M!P```````@```$8$``#\_________W*M!P```````@``
+M``L````<!P```````'VM!P```````@````L````@!P```````(BM!P``````
+M"P````L```!`!P```````,2M!P```````@````L````<!P```````->M!P``
+M`````@````L````<!P```````/*M!P```````@````L````@!P````````RN
+M!P```````@````L````<!P```````!6N!P```````@````L````@!P``````
+M`!RN!P``````"P````L```!`!P```````%BN!P```````@````L````@!P``
+M`````,FN!P```````@```"L$``#\_________PFO!P```````@```$L$``#\
+M_________R2O!P``````"P````,```"(/````````*BO!P``````"P````$`
+M``!PG`<``````,.O!P```````@```'P$``#\_________]"O!P```````@``
+M`$8$``#\_________RZP!P```````@```$8$``#\_________Z6P!P``````
+M`@```$,$``#\_________]6P!P``````"P````$```!PG`<``````/"P!P``
+M`````@```'P$``#\__________VP!P```````@```$8$``#\_________Q:Q
+M!P```````@```$,$``#\_________SBQ!P``````"P````$```!PG`<`````
+M`%.Q!P```````@```'P$``#\_________V"Q!P```````@```$8$``#\____
+M_____W.Q!P```````@```%4$``#\_________\.Q!P```````@```$8$``#\
+M_________^.Q!P```````@```$8$``#\_________S.R!P```````@```$8$
+M``#\_________QVS!P```````@```$,$``#\_________TNS!P``````"P``
+M``$```!PG`<``````&6S!P```````@```'P$``#\_________W*S!P``````
+M`@```$8$``#\_________Y*S!P```````@```$,$``#\_________[^S!P``
+M````"P````$```!PG`<``````-JS!P```````@```'P$``#\_________^>S
+M!P```````@```$8$``#\_________P"T!P```````@```$8$``#\________
+M_QFT!P```````@```$8$``#\_________[JT!P``````"P````$```!PG`<`
+M`````-2T!P```````@```'P$``#\_________^&T!P```````@```$8$``#\
+M_________PJU!P``````"P````$```!PG`<``````"6U!P```````@```'P$
+M``#\_________S*U!P```````@```$8$``#\_________YVU!P```````@``
+M`$8$``#\_________[VU!P```````@```$8$``#\_________\NU!P``````
+M`@```*($``#\__________VU!P```````@```$8$``#\_________V:V!P``
+M`````@```*($``#\_________X"V!P``````"P````$```"@(`@``````)VV
+M!P```````@```'`$``#\__________"V!P```````@```(H$``#\________
+M_Q6W!P```````@```&<$``#\_________R*W!P```````@```&<$``#\____
+M_____RRW!P```````@```&<$``#\_________S6W!P``````"P````$```"@
+M(`@``````%*W!P```````@```'`$``#\_________\.W!P```````@```&\$
+M``#\_________]2W!P```````@```&\$``#\_________]FW!P```````@``
+M`*L$``#\_________S2X!P```````@```#4$``#\_________XRX!P``````
+M`@```&\$``#\_________ZZX!P```````@```&\$``#\_________PJY!P``
+M`````@```$L$``#\_________R.Y!P``````"P````$```"@(`@``````#RY
+M!P```````@```'`$``#\_________U&Y!P```````@```)`$``#\________
+M_UFY!P```````@```#<$``#\_________VJY!P``````"P````$```"@(`@`
+M`````(.Y!P```````@```'`$``#\_________^"Y!P```````@```$8$``#\
+M_________T>Z!P```````@```'\$``#\_________UBZ!P```````@```&,$
+M``#\_________V"Z!P``````"P````$```"@(`@``````'FZ!P```````@``
+M`'`$``#\_________[JZ!P``````"P````$```"@(`@``````-.Z!P``````
+M`@```'`$``#\_________R&[!P```````@```&`$``#\_________TF[!P``
+M````"P````$```"@(`@``````&*[!P```````@```'`$``#\_________VZ\
+M!P``````"P````$```"@(`@``````(>\!P```````@```'`$``#\________
+M_[N\!P```````@```$L$``#\__________"\!P```````@```&`$``#\____
+M_____QN]!P``````"P````$```"@(`@``````#2]!P```````@```'`$``#\
+M_________V2]!P```````@```$L$``#\_________X^]!P``````"P````$`
+M``"@(`@``````*B]!P```````@```'`$``#\_________^V]!P```````@``
+M`$L$``#\__________J^!P```````@```'\$``#\_________S6_!P``````
+M"P````$```"@(`@``````$Z_!P```````@```'`$``#\_________WN_!P``
+M`````@```$L$``#\_________[._!P```````@```$($``#\_________[N_
+M!P``````"P````$```"@(`@``````-2_!P```````@```'`$``#\________
+M_P#`!P```````@```$L$``#\_________PO`!P```````@```$L$``#\____
+M_____Q;`!P```````@```$$$``#\_________RC`!P``````"P````$```"@
+M(`@``````$'`!P```````@```'`$``#\_________W+`!P```````@```$L$
+M``#\_________T;!!P```````@```&<$``#\_________T_!!P``````"P``
+M``$```"@(`@``````&S!!P```````@```'`$``#\__________C!!P``````
+M"P````$```"@(`@``````!'"!P```````@```'`$``#\_________R'"!P``
+M`````@```$L$``#\_________W["!P```````@```$($``#\_________X;"
+M!P``````"P````$```"@(`@``````)_"!P```````@```'`$``#\________
+M_^W"!P``````"P````$```"@(`@```````;#!P```````@```'`$``#\____
+M_____Q'#!P```````@```$L$``#\_________R/%!P```````@```$($``#\
+M_________RO%!P``````"P````$```"@(`@``````$3%!P```````@```'`$
+M``#\_________X'%!P```````@```&\$``#\_________];%!P```````@``
+M`$L$``#\_________QO&!P``````"P````,`````/0```````+3'!P``````
+M`@```$($``#\_________RG)!P``````"P````$```!0G@<``````%_)!P``
+M`````@```&<$``#\_________W/)!P``````"P````$```"@(`@``````)#)
+M!P```````@```'`$``#\_________\W)!P```````@```#T$``#\________
+M__#)!P```````@```'\$``#\__________C)!P```````@```)($``#[____
+M_____Q'*!P```````@```#<$``#\_________RS*!P```````@```$8$``#\
+M_________S?*!P```````@```'\$``#\_________U#*!P``````"P````$`
+M``#`S@<``````'+*!P```````@```*\$``#\_________\/*!P``````"P``
+M``$```"@(`@``````-S*!P```````@```'`$``#\_________RW+!P``````
+M"P````$```"@R0<``````#?+!P```````@```#,$``#\_________W7+!P``
+M````"P````$```#`S@<``````)O+!P```````@```*\$``#\_________ZO+
+M!P``````"P````$```"@(`@``````,3+!P```````@```'`$``#\________
+M_P#,!P```````@```'\$``#\_________T/,!P```````@```#P$``#\____
+M_____V7,!P```````@```"T$``#\_________Y_,!P```````@```"X$``#\
+M_________Q'-!P```````@```$4$``#\_________QG-!P```````@```*($
+M``#\_________]?-!P```````@```*($``#\__________;-!P```````@``
+M`*($``#\_________PW.!P```````@```)`$``#\_________S_.!P``````
+M`@```(\$``#\_________U7.!P``````"P````$```#@RP<``````)3.!P``
+M`````@```"($``#\_________\7.!P```````@```"4$``#\_________^K.
+M!P```````@```$L$``#\_________X7/!P```````@```$($``#\________
+M_Y'/!P```````@```(H$``#\_________ZK/!P``````"P````$```"@(`@`
+M`````,//!P```````@```'`$``#\__________#/!P```````@```(<$``#\
+M_________YS0!P``````"P````$```"@(`@``````+70!P```````@```'`$
+M``#\__________;0!P```````@```(\$``#\_________PW1!P``````"P``
+M``$```"@(`@``````";1!P```````@```'`$``#\_________S?1!P``````
+M`@```(($``#\_________U#1!P```````@```'\$``#\_________[31!P``
+M`````@```&8$``#\_________\71!P```````@```&8$``#\_________T[2
+M!P```````@```'\$``#\_________U?2!P```````@```&,$``#\________
+M_\?2!P```````@```'\$``#\_________]#2!P```````@```&,$``#\____
+M_____QW3!P``````"P````$```"@N0<``````#W3!P``````"P````$```#0
+MSP<``````&'3!P```````@```%L$``#\_________YS3!P``````"P````$`
+M``"@N0<``````*S3!P```````@```(<$``#\_________]?5!P```````@``
+M`'\$``#\__________C5!P```````@```"X$``#\_________QC6!P``````
+M"P````$```"PU0<``````#C6!P```````@```*\$``#\_________]W6!P``
+M````"P````$```"@(`@``````/;6!P```````@```'`$``#\_________P/7
+M!P```````@```$8$``#\_________QW7!P``````"P````$````0U@<`````
+M`#C7!P```````@```'`$``#\_________WK7!P```````@```&,$``#\____
+M_____X+7!P``````"P````$```!0U@<``````)O7!P```````@```*\$``#\
+M__________/7!P```````@```*8$``#\__________[7!P```````@```(($
+M``#\_________QO8!P``````"P````$```!@UP<``````"#8!P```````@``
+M`(<$``#\_________U39!P```````@```'0$``#\_________US9!P``````
+M`@```&,$``#\_________Y39!P```````@```'0$``#\_________YS9!P``
+M`````@```&,$``#\_________Z39!P``````"P````$```"@(`@``````+W9
+M!P```````@```'`$``#\_________R':!P```````@```(<$``#\________
+M_W_:!P``````"P````$```#@V0<``````)C:!P```````@```*\$``#\____
+M_____P#;!P```````@```'0$``#\_________PC;!P```````@```&,$``#\
+M_________QK;!P``````"P````$```"@(`@``````#?;!P```````@```'`$
+M``#\_________U3<!P```````@```(<$``#\_________\O<!P```````@``
+M`(($``#\__________?<!P```````@```'0$``#\_________Q/=!P``````
+M"P````$```"@(`@``````"S=!P```````@```'`$``#\_________S?=!P``
+M`````@```&8$``#\_________TO=!P```````@```&8$``#\_________WS>
+M!P``````"P````$````PV@<``````(?>!P``````"P````$`````U`<`````
+M`);>!P```````@```(<$``#\_________Q/?!P``````"P````$```"`W`<`
+M`````#'?!P```````@```%L$``#\_________R;@!P```````@```*$$``#\
+M_________SWA!P```````@```&,$``#\_________ZKA!P```````@```'\$
+M``#\_________\CA!P```````@```#X$``#\_________]WA!P``````"P``
+M``$```"@(`@``````/KA!P```````@```'`$``#\_________PWB!P``````
+M`@```$L$``#\_________TCB!P``````"P````$`````X0<``````&3B!P``
+M`````@```*\$``#\_________XOB!P```````@```(($``#\_________\GB
+M!P``````"P````$```!`X@<``````,[B!P```````@```(<$``#\________
+M_S[C!P```````@```$L$``#\_________XOC!P```````@```$L$``#\____
+M_____Y/C!P```````@```)`$``#\_________\GC!P```````@```$L$``#\
+M_________^[C!P``````"P````$```"@(`@```````?D!P```````@```'`$
+M``#\_________S?D!P```````@```#L$``#[_________VGD!P```````@``
+M`#L$``#\_________V[D!P```````@```$T$``#\_________XOD!P``````
+M"P````$````@Y`<``````*'D!P```````@```'@$``#\_________PGE!P``
+M`````@```"<$``#\_________T_E!P```````@```#L$``#\_________YOE
+M!P```````@```%D$``#\_________['E!P``````"P````$````@Y`<`````
+M`,/E!P```````@```'@$``#\_________]+E!P``````"P````$```"@(`@`
+M`````.OE!P```````@```'`$``#\_________Z/F!P``````"P````$```"@
+M(`@``````+SF!P```````@```'`$``#\_________]_F!P```````@```"($
+M``#\_________R+G!P``````"P````$```"@(`@``````#OG!P```````@``
+M`'`$``#\_________XCG!P```````@```($$``#[_________Y+G!P``````
+M"P````8```!@`@```````-?G!P```````@```)($``#\_________^;G!P``
+M````"P````8```!M`@```````"KH!P```````@```&8$``#\_________TKH
+M!P``````"P````8```!^`@```````(_H!P```````@```"H$``#\________
+M_YOH!P``````"P````8```";`@```````.#H!P```````@```#L$``#\____
+M______?H!P``````"P````$```"@(`@``````!3I!P```````@```'`$``#\
+M_________U#I!P``````"P````8```";`@```````,#I!P``````"P````8`
+M``!@`@```````-;I!P```````@```)($``#\_________][I!P``````"P``
+M``$```"@(`@``````/?I!P```````@```'`$``#\_________P/J!P``````
+M"P````8```!M`@```````"#J!P```````@```&8$``#\_________RCJ!P``
+M````"P````$```"@(`@``````$'J!P```````@```'`$``#\_________U/J
+M!P``````"P````8```!^`@```````&GJ!P```````@```"H$``#\________
+M_W'J!P``````"P````$```"@(`@``````(KJ!P```````@```'`$``#\____
+M_____Y;J!P``````"P````8```";`@```````+'J!P``````"P````$```#`
+MY`<``````-/J!P```````@```*\$``#\_________]SJ!P``````"P````8`
+M``"X`@```````/?J!P``````"P````$````0Y@<``````!GK!P```````@``
+M`*\$``#\_________RKK!P``````"P````$```"@(`@``````$/K!P``````
+M`@```'`$``#\_________Y+K!P``````"P````$```"@(`@``````*OK!P``
+M`````@```'`$``#\_________P+L!P``````"P````$```"@(`@``````!OL
+M!P```````@```'`$``#\_________W+L!P``````"P````$```"@(`@`````
+M`(OL!P```````@```'`$``#\_________P7M!P``````"P````$```"@(`@`
+M`````![M!P```````@```'`$``#\_________W7M!P``````"P````$```"@
+M(`@``````([M!P```````@```'`$``#\_________SCN!P``````"P````$`
+M``"@(`@``````%'N!P```````@```'`$``#\_________S?O!P``````"P``
+M``$```"@(`@``````%3O!P```````@```'`$``#\_________T?P!P``````
+M"P````$```"@(`@``````&3P!P```````@```'`$``#\_________U?Q!P``
+M````"P````$```"@(`@``````'3Q!P```````@```'`$``#\_________^WQ
+M!P``````"P````$```"@(`@```````;R!P```````@```'`$``#\________
+M_WWR!P``````"P````$```"@(`@``````);R!P```````@```'`$``#\____
+M_____]/R!P```````@```$L$``#\_________R[S!P``````"P````$```"@
+M(`@``````$?S!P```````@```'`$``#\_________W/S!P```````@```$L$
+M``#\_________\[S!P``````"P````$```"@(`@``````.?S!P```````@``
+M`'`$``#\_________Q/T!P```````@```$L$``#\_________V[T!P``````
+M"P````$```"@(`@``````(?T!P```````@```'`$``#\_________^7T!P``
+M`````@```$L$``#\_________S+U!P``````"P````$```"@(`@``````$OU
+M!P```````@```'`$``#\_________Y'U!P```````@```$L$``#\________
+M_P[V!P```````@```$L$``#\_________U7V!P``````"P````$```"@(`@`
+M`````&[V!P```````@```'`$``#\_________\WV!P```````@```$L$``#\
+M_________USW!P```````@```$L$``#\_________[?W!P``````"P````$`
+M``"@(`@``````-3W!P```````@```'`$``#\_________U+X!P```````@``
+M`($$``#[_________Y[X!P```````@```$L$``#\_________ZKX!P``````
+M`@```$L$``#\___________X!P```````@```$L$``#\_________R_Y!P``
+M````"P````$```#@N`<``````%'Y!P```````@```*\$``#\_________]_Y
+M!P```````@```$L$``#\_________^SY!P```````@```$L$``#\________
+M_SSZ!P```````@```$L$``#\_________V_Z!P``````"P````$```"`NP<`
+M`````)'Z!P```````@```*\$``#\_________QO[!P``````"P````$```"@
+M(`@``````#3[!P```````@```'`$``#\_________R;\!P``````"P````$`
+M``"@(`@``````#_\!P```````@```'`$``#\_________]_\!P```````@``
+M`$L$``#\_________^S\!P```````@```$L$``#\_________SS]!P``````
+M`@```$L$``#\_________V_]!P``````"P````$```#@N@<``````)']!P``
+M`````@```*\$``#\_________RW^!P```````@```$L$``#\_________SK^
+M!P```````@```$L$``#\_________XS^!P```````@```$L$``#\________
+M_[_^!P``````"P````$```"0N@<``````.'^!P```````@```*\$``#\____
+M_____S/_!P```````@```$L$``#\_________TC_!P```````@```$L$``#\
+M_________Z#_!P```````@```$L$``#\_________ZS_!P```````@```$L$
+M``#\_________P<`"````````@```$L$``#\_________S\`"```````"P``
+M``$```"@O`<``````&$`"````````@```*\$``#\_________[,`"```````
+M`@```$L$``#\_________\L`"````````@```$L$``#\_________T`!"```
+M`````@```$L$``#\_________TP!"````````@```$L$``#\_________Z<!
+M"````````@```$L$``#\_________]\!"```````"P````$```!0O0<`````
+M``$""````````@```*\$``#\_________T,""````````@```$L$``#\____
+M_____U@""````````@```$L$``#\_________Y4""````````@```*$$``#\
+M_________\@""````````@```$L$``#\_________R\#"```````"P````$`
+M``#`O0<``````%$#"````````@```*\$``#\_________YP#"```````"P``
+M``$```"@(`@``````+4#"````````@```'`$``#\__________,#"```````
+M`@```$L$``#\_________P@$"````````@```$L$``#\_________U0$"```
+M`````@```$L$``#\_________[,$"````````@```$L$``#\_________\@$
+M"````````@```$L$``#\_________Q0%"````````@```$L$``#\________
+M_W,%"````````@```$L$``#\_________X@%"````````@```$L$``#\____
+M_____]0%"````````@```$L$``#\_________S,&"````````@```$L$``#\
+M_________T@&"````````@```$L$``#\_________Y0&"````````@```$L$
+M``#\__________,&"````````@```$L$``#\_________P@'"````````@``
+M`$L$``#\_________U0'"````````@```$L$``#\_________[,'"```````
+M`@```$L$``#\_________\@'"````````@```$L$``#\_________Q0("```
+M`````@```$L$``#\_________W,("````````@```$L$``#\_________X@(
+M"````````@```$L$``#\__________@("````````@```$L$``#\________
+M_]H*"```````"P````$```#0W@<```````P+"````````@```*4$``#\____
+M_____V,+"````````@```$L$``#\_________W@+"````````@```$L$``#\
+M_________[L+"````````@```$L$``#\_________]\+"```````"P````$`
+M``!POP<```````$,"````````@```*\$``#\_________T,,"````````@``
+M`$L$``#\_________U@,"````````@```$L$``#\_________YL,"```````
+M`@```$L$``#\_________[\,"```````"P````$```!POP<``````.$,"```
+M`````@```*\$``#\_________S,-"````````@```$L$``#\_________U$-
+M"````````@```$L$``#\_________V8-"````````@```$L$``#\________
+M_W$-"````````@```$L$``#\_________P@."````````@```$L$``#\____
+M_____Q(."````````@```$L$``#\_________T\."```````"P````$```#@
+MOP<``````'$."````````@```*\$``#\_________[,."````````@```$L$
+M``#\_________\@."````````@```$L$``#\_________Q@/"````````@``
+M`$L$``#\_________Z\/"```````"P````$```#@K@<``````-$/"```````
+M`@```*\$``#\_________Q,0"````````@```$L$``#\_________R@0"```
+M`````@```$L$``#\_________VL0"````````@```$L$``#\_________X\0
+M"```````"P````$```!@P`<``````+$0"````````@```*\$``#\________
+M__<0"````````@```$L$``#\_________Q$1"````````@```$L$``#\____
+M_____U\1"```````"P````$```#`P@<``````($1"````````@```*\$``#\
+M_________\<1"````````@```$L$``#\_________^$1"````````@```$L$
+M``#\_________R\2"```````"P````$```#`P0<``````%$2"````````@``
+M`*\$``#\_________X\2"```````"P````$```"0R@<``````+$2"```````
+M`@```*\$``#\__________P2"```````"P````$```"@(`@``````!43"```
+M`````@```'`$``#\_________ZD3"```````"P````$```"@(`@``````,(3
+M"````````@```'`$``#\_________S84"````````@```$L$``#\________
+M_U$4"````````@```$L$``#\_________YL4"````````@```$L$``#\____
+M_____Q85"````````@```$L$``#\_________S$5"````````@```$L$``#\
+M_________WL5"````````@```$L$``#\_________\,5"````````@```$L$
+M``#\_________]@5"````````@```$L$``#\_________P\6"```````"P``
+M``$```#0S@<``````#$6"````````@```*\$``#\_________[X6"```````
+M`@```$L$``#\_________\H6"````````@```$L$``#\_________TP7"```
+M`````@```$L$``#\_________[,7"````````@```*$$``#\_________]@7
+M"```````"P````$```"@(`@``````/$7"````````@```'`$``#\________
+M_WX8"````````@```$L$``#\_________XH8"````````@```$L$``#\____
+M______X8"````````@```$L$``#\_________T\9"```````"P````$```#P
+MX@<``````'$9"````````@```*\$``#\_________Z@9"````````@```$L$
+M``#\_________\$9"````````@```$L$``#\_________P$:"````````@``
+M`$L$``#\_________R\:"```````"P````$```!@Q0<``````%$:"```````
+M`@```*\$``#\_________\4:"````````@```&\$``#\_________S$;"```
+M````"P````$```"@(`@``````$X;"````````@```'`$``#\__________<;
+M"```````"P````$```"@(`@```````\<"````````@```'`$``#\________
+M_ZT<"```````"P````$```#@&P@``````#8="````````@```$L$``#\____
+M_____U$="````````@```$L$``#\_________T@>"````````@```&,$``#\
+M_________U`>"```````"P````$```"@(`@``````&D>"````````@```'`$
+M``#\_________XT>"````````@```$L$``#\_________YL>"````````@``
+M`(($``#\_________[4>"```````"P````$```"@(`@``````-(>"```````
+M`@```'`$``#\_________U@?"```````"P````$```"0'0@``````&,?"```
+M````"P````$```#@'0@``````&L?"````````@```(<$``#\_________YT?
+M"```````"P````<```!`&P```````*,?"````````@````<````[&P``````
+M`*P?"````````@````<````\&P```````"0A"````````@```(,$``#\____
+M_____S<B"````````@```"L$``#\_________W\C"````````@```",$``#\
+M_________Y`C"````````@```&,$``#\_________Y@C"```````"P````$`
+M``"@(`@``````+$C"````````@```'`$``#\_________U@D"```````"P``
+M``4```!@"0```````&(D"````````@```(P$``#\_________V\D"```````
+M`@```$8$``#\_________WPD"```````"P````4```"("0```````(8D"```
+M`````@```(P$``#\_________Y,D"````````@```$8$``#\_________Z@D
+M"````````@```'\$``#\_________[`D"````````@```&,$``#\________
+M_^4D"````````@```(($``#\__________\D"```````"P````$```"@(`@`
+M`````!PE"````````@```'`$``#\_________WDE"````````@```(\$``#\
+M_________ZXE"```````"P````$```"@(`@``````,LE"````````@```'`$
+M``#\_________],E"````````@```&,$``#\_________^DE"````````@``
+M`&`$``#\_________Q8F"```````"P````$```#0(P@``````"@F"```````
+M"P````$```"@(`@``````$4F"````````@```'`$``#\_________Y<G"```
+M````"P````$```!`(@@``````)\G"````````@```(<$``#\_________\,G
+M"````````@```)($``#\_________SLH"````````@```'\$``#\________
+M_T,H"````````@```&,$``#\_________W,H"```````"P````$````0*`@`
+M`````(\H"````````@```*\$``#\_________Y8H"````````@```&,$``#\
+M_________P0I"````````@```&,$``#\_________Q`I"````````@```(($
+M``#\_________TDI"```````"P````$```!@*`@``````$XI"````````@``
+M`(<$``#\_________Y0I"````````@```(($``#\_________^DI"```````
+M"P````$```"P*`@``````/<I"```````"P````$```!@*`@``````/PI"```
+M`````@```(<$``#\_________P4J"````````@```(,$``#\_________U,J
+M"````````@```(\$``#\_________V(J"```````"P````8```#)`@``````
+M`&PJ"````````@```(P$``#\_________]LJ"````````@```'\$``#\____
+M_____T,K"````````@```(\$``#\_________U(K"```````"P````8```#A
+M`@```````%PK"````````@```(P$``#\_________]$K"````````@```'\$
+M``#\_________QTN"```````"P```$P$`````````````#XN"````````@``
+M`*4$``#\_________U(N"````````@```$P$``#\_________\HO"```````
+M`@```%4$``#\_________QPQ"````````@```*@$``#\_________[4Q"```
+M`````@```*\$``#\_________P,S"```````"P```$P$`````````````"0S
+M"````````@```*4$``#\_________S@S"````````@```$P$``#\________
+M_\@S"````````@```*\$``#\_________Q$T"````````@```"D$``#\____
+M_____V,T"````````@```(<$``#\_________\PT"````````@```(<$``#\
+M__________$T"````````@```(,$``#\_________T<U"````````@```*\$
+M``#\_________V8U"````````@```$H$``#\_________Z`U"````````@``
+M`'0$``#\_________UDW"````````@```(<$``#\_________WPW"```````
+M`@```'\$``#\_________Y4W"````````@```*@$``#\_________^HW"```
+M````"P````$```#`-@@``````&TX"````````@```&D$``#\_________Z8X
+M"```````"P````$```#`-0@``````+$X"```````"P````$```#`-@@`````
+M`#`Y"````````@```(<$``#\_________]$Y"````````@```$,$``#\____
+M_____R<Z"````````@```+4$``#\_________\\Z"````````@```+4$``#\
+M__________LZ"````````@```)`$``#\_________\H["````````@```)`$
+M``#\_________\\\"````````@```&4$``#\_________^`\"````````@``
+M`(H$``#\__________$\"````````@```&<$``#\_________R<]"```````
+M`@```&0$``#\_________PD_"````````@```#H$``#\_________R`_"```
+M`````@```#\$``#\_________S8_"````````@```$0$``#\_________\L_
+M"````````@```$,$``#\_________Q1`"````````@```$,$``#\________
+M_SY`"````````@```(H$``#\_________XM!"````````@```(\$``#\____
+M_____RM$"````````@```+4$``#\_________X]$"````````@```+4$``#\
+M_________Q1%"````````@```+4$``#\_________UA("````````@```$0$
+M``#\_________V5("````````@```#\$``#\_________X=("````````@``
+M`#H$``#\_________[1("````````@```$($``#\_________S=)"```````
+M`@```&<$``#\_________WQ)"````````@```%4$``#\_________Z9)"```
+M`````@```%4$``#\_________[1)"````````@```%4$``#\_________\1)
+M"````````@```&<$``#\_________\Q)"````````@```&<$``#\________
+M_T]+"````````@```#8$``#\_________V!,"````````@```$8$``#\____
+M_____XM,"````````@```$@$``#\_________^],"````````@```#8$``#\
+M_________P1-"````````@```&4$``#\_________Q5-"````````@```(H$
+M``#\_________V!-"```````"P````,````P/0```````(U-"````````@``
+M`"X$``#\_________Q5."````````@```&<$``#\_________\I."```````
+M`@```&4$``#\_________QY/"````````@```$@$``#\_________S9/"```
+M`````@```(H$``#\_________P50"````````@```$X$``#\_________U=0
+M"````````@```$X$``#\_________VA0"````````@```$X$``#\________
+M_S91"````````@```#$$``#\_________SY1"````````@```$@$``#\____
+M_____\=1"````````@```"P$``#\_________ZQ2"````````@```&<$``#\
+M_________\)2"````````@```(8$``#\_________UE3"````````@```&X$
+M``#\_________WQ3"````````@```)H$``#\_________ZQ3"````````@``
+M`+$$``#\_________\14"```````"P````$```#`4P@``````.94"```````
+M`@```*\$``#\_________^U5"````````@```'\$``#\__________Q5"```
+M`````@```*@$``#\_________UE6"````````@```&D$``#\_________XA6
+M"```````"P````$```#050@``````.=6"```````"P````$````05@@`````
+M`.Q6"````````@```(<$``#\_________P=7"```````"P````<```!`)```
+M``````Q7"````````@```*P$``#\_________R=7"```````"P````<```#`
+M)````````"Q7"````````@```%P$``#\_________T%7"````````@```(T$
+M``#\_________U17"```````"P````<```#`)````````%E7"````````@``
+M`%P$``#\_________V17"````````@```(\$``#\_________W=7"```````
+M"P````<```#`)````````'Q7"````````@```%P$``#\_________XA7"```
+M`````@```'\$``#\_________]=7"```````"P````<```#`)````````-]7
+M"````````@```%P$``#\__________%8"````````@```'\$``#\________
+M_Q=9"````````@```*@$``#\_________VQ;"````````@```&D$``#\____
+M_____[Q;"```````"P````$```"P6`@``````,Q;"````````@```(<$``#\
+M_________PI<"````````@```*@$``#\_________V%<"````````@```&D$
+M``#\_________YM<"```````"P````$```"P6`@``````*9<"```````"P``
+M``$```"@5P@``````-M<"````````@```(<$``#\_________R=="```````
+M"P````<```#`)````````"Q="````````@```*P$``#\_________P]>"```
+M`````@```+4$``#\_________T]>"````````@```+<$``#\_________WI>
+M"````````@```'\$``#\_________XE>"````````@```*@$``#\________
+M_V1?"````````@```(<$``#\_________Z)?"````````@```(<$``#\____
+M_____S1@"```````"P````$````@7@@``````$-@"````````@```(<$``#\
+M_________W]@"````````@```'\$``#\_________Z5@"````````@```*@$
+M``#\_________V9A"````````@```&D$``#\_________[)A"```````"P``
+M``$```"@7@@``````+]A"````````@```(<$``#\_________ZYC"```````
+M`@```&D$``#\_________^1C"```````"P````$```"@7@@``````.]C"```
+M````"P````$```!`70@``````!ED"````````@```(<$``#\_________U=D
+M"```````"P````<```!`)0```````%QD"````````@```*P$``#\________
+M_S%E"````````@```'\$``#\_________VYE"````````@```*@$``#\____
+M______)E"````````@```(<$``#\_________REF"````````@```'\$``#\
+M_________SAF"````````@```*@$``#\__________AF"````````@```'\$
+M``#\_________UEG"````````@```&D$``#\_________[%G"```````"P``
+M``$````@7@@``````+QG"```````"P````$```!`9@@``````-=G"```````
+M`@```(<$``#\_________]1H"````````@```*@$``#\_________W]I"```
+M`````@```&D$``#\_________\YI"```````"P````$```#@9`@``````-EI
+M"```````"P````$```!P9`@``````.=I"````````@```(<$``#\________
+M_P-J"````````@```&D$``#\_________TQJ"```````"P````$```"090@`
+M`````%=J"```````"P````$```!P9`@``````'5J"````````@```(<$``#\
+M_________Z)J"````````@```&D$``#\__________%J"```````"P````$`
+M``#`9@@``````/QJ"```````"P````$```!`9@@```````IK"````````@``
+M`(<$``#\_________R)K"````````@```*@$``#\_________Z1K"```````
+M`@```(\$``#\_________\-K"````````@```%0$``#\_________Q=L"```
+M`````@```(X$``#\_________RML"````````@```'\$``#\__________=N
+M"````````@```'\$``#\_________R9O"````````@```(\$``#\________
+M_X)R"````````@```(\$``#\_________[1S"````````@```&`$``#\____
+M_____\QS"````````@```&`$``#\_________S)T"````````@```'\$``#\
+M_________YMT"````````@```'\$``#\__________-T"````````@```*@$
+M``#\_________X)U"````````@```&D$``#\_________\QU"```````"P``
+M``$```!@=`@``````-QU"````````@```(<$``#\_________R)X"```````
+M"P````<```#`)0```````"=X"````````@```%P$``#\_________Y]X"```
+M````"P````$```#0>`@``````,1X"````````@```'`$``#\_________^MX
+M"```````"P````<```#`)0```````/-X"````````@```%P$``#\________
+M_S1["```````"P````$````@WP@``````$M["````````@```%L$``#\____
+M_____W5\"```````"P````$````0>`@```````1]"````````@```&X$``#\
+M_________SY]"```````"P````$```"0C0@``````%Q]"````````@```'`$
+M``#\_________P1^"````````@```(\$``#\_________^=^"````````@``
+M`'\$``#\_________P%_"````````@```+<$``#\_________T1_"```````
+M`@```+<$``#\_________Y-_"````````@```+<$``#\_________]-_"```
+M````"P````<```#`)0```````-M_"````````@```%P$``#\_________QF`
+M"````````@```'\$``#\_________RN""```````"P````<```#`)0``````
+M`#.""````````@```%P$``#\_________Z"""````````@```'\$``#\____
+M_____\2""````````@```'\$``#\_________S*$"````````@```&D$``#\
+M_________WZ$"````````@```&D$``#\__________"$"```````"P````$`
+M``!`@`@``````/^$"```````"P````$`````@@@```````2%"````````@``
+M`(<$``#\_________\&+"````````@```&`$``#\_________P2-"```````
+M`@```&`$``#\_________YZ."```````"P````<```#`)0```````*:."```
+M`````@```%P$``#\_________[^."```````"P````,```!@/0```````&V0
+M"```````"P````<```#`)0```````'60"````````@```%P$``#\________
+M_XZ0"```````"P````,```"H/0```````$62"```````"P````<```#`)0``
+M`````$J2"````````@```%P$``#\_________Q[$"````````@```*@$``#\
+M_________T_*"```````"P````<```#`)0```````%3*"````````@```%P$
+M``#\_________R3,"````````@```*@$``#\_________RS,"````````@``
+M`&X$``#\_________UK,"```````"P````<```#`)0```````&+,"```````
+M`@```%P$``#\_________\/,"````````@```(\$``#\_________^[,"```
+M`````@```'\$``#\_________S[/"````````@```'\$``#\_________Y+/
+M"```````"P````<```#`)0```````)O/"````````@```%P$``#\________
+M_]7/"````````@```'\$``#\_________TO0"````````@```*@$``#\____
+M_____TO3"````````@```&D$``#\_________YG3"```````"P````$```!`
+MS`@``````*33"```````"P````$```!@SP@``````+K3"````````@```(<$
+M``#\__________?3"```````"P````<```#`)0```````/S3"````````@``
+M`%P$``#\__________C>"```````"P````$```#@TP@``````!#?"```````
+M`@```'`$``#\_________S'?"```````"P````<```#`)0```````#;?"```
+M`````@```%P$``#\_________\??"````````@```&X$``#\_________WCA
+M"````````@```&X$``#\_________[;A"```````"P````<```#`)0``````
+M`+[A"````````@```%P$``#\_________S;B"````````@```*@$``#\____
+M_____V_B"````````@```*@$``#\_________QGC"````````@```*@$``#\
+M_________VGC"```````"P````$````@WP@``````(#C"````````@```%L$
+M``#\_________[WC"```````"P````<```#`)0```````,+C"````````@``
+M`%P$``#\_________Q3F"```````"P````$```#0W@@``````"WF"```````
+M"P````$```#@TP@``````$;F"````````@```'`$``#\_________XCF"```
+M`````@```*@$``#\_________Z?F"```````"P````<```#`)0```````*_F
+M"````````@```%P$``#\_________[_F"````````@```(\$``#\________
+M_Q/G"```````"P````<```#`)0```````!CG"````````@```%P$``#\____
+M______'G"````````@```'\$``#\_________RWH"````````@```'\$``#\
+M_________Y_H"````````@```+4$``#\_________[[H"````````@```)4$
+M``#\_________PSI"````````@```%4$``#\_________Q?I"````````@``
+M`&<$``#\_________S[I"```````"P````<```#`)0```````$/I"```````
+M`@```%P$``#\_________T[I"````````@```*L$``#\_________W+I"```
+M`````@```(T$``#\_________X?I"````````@```(T$``#\_________Z#I
+M"````````@```(T$``#\_________[GI"````````@```(T$``#\________
+M_\CI"````````@```&($``#\_________^/I"````````@```(T$``#\____
+M_____P+J"````````@```%X$``#\_________QOJ"````````@```(T$``#\
+M_________SWJ"```````"P````<```#`)0```````$+J"````````@```%P$
+M``#\_________XWJ"````````@```+`$``#\_________Z?J"````````@``
+M`)H$``#\_________\#J"```````"P````$```"@Q`@``````-KJ"```````
+M`@```)X$``#\__________3J"```````"P````<```#`)0```````/GJ"```
+M`````@```%P$``#\_________P_K"````````@```(0$``#\_________RGK
+M"````````@```+$$``#\_________S?K"```````"P````<```#`)0``````
+M`#_K"````````@```%P$``#\_________S;L"````````@````<```#')0``
+M`````#[L"```````"P````<```#`)0```````$/L"````````@```*P$``#\
+M_________V?L"```````"P````<```!`)@```````&SL"````````@```%P$
+M``#\_________X'L"````````@```(T$``#\_________Y3L"```````"P``
+M``<```!`)@```````)GL"````````@```%P$``#\_________Z3L"```````
+M`@```(\$``#\_________[?L"```````"P````<```!`)@```````+SL"```
+M`````@```%P$``#\_________\CL"````````@```'\$``#\_________Q_M
+M"```````"P````<```!`)@```````"?M"````````@```%P$``#\________
+M_Z'N"````````@```'\$``#\_________\?N"````````@```*@$``#\____
+M_____VSP"````````@```&D$``#\_________[SP"```````"P````$```!@
+M[@@``````,SP"````````@```(<$``#\_________P;Q"````````@```*@$
+M``#\_________U[Q"````````@```&D$``#\_________YCQ"```````"P``
+M``$```!@[@@``````*/Q"```````"P````$```#@[`@``````,+Q"```````
+M`@```(<$``#\_________P?R"```````"P````<```!`)@````````SR"```
+M`````@```*P$``#\_________P```````````0````$```"4)P````````@`
+M`````````0````$```#`)P```````!```````````0````$````X*```````
+M`!@``````````0````$````X*````````"```````````0````$````X*```
+M`````"@``````````0````$````X*````````#```````````0````$```#H
+M)P```````#@``````````0````$````0*````````$```````````0````$`
+M```X*````````$@``````````0````$```!0*````````%```````````0``
+M``$```"H,P```````%@``````````0````$```"H,P```````&``````````
+M`0````$````[,P```````&@``````````0````$```!`,P```````'``````
+M`````0````$```"H,P```````'@``````````0````$```"H,P```````(``
+M`````````0````$```"H,P```````(@``````````0````$```"H,P``````
+M`)```````````0````$```"H,P```````)@``````````0````$```"H,P``
+M`````*```````````0````$```"H,P```````*@``````````0````$```"H
+M,P```````+```````````0````$```"H,P```````+@``````````0````$`
+M``"H,P```````,```````````0````$```"H,P```````,@``````````0``
+M``$```"H,P```````-```````````0````$```!%,P```````-@`````````
+M`0````$```!*,P```````.```````````0````$```!2,P```````.@`````
+M`````0````$```!7,P```````/```````````0````$```!<,P```````/@`
+M`````````0````$```!B,P`````````!`````````0````$```!G,P``````
+M``@!`````````0````$```!L,P```````!`!`````````0````$```"H,P``
+M`````!@!`````````0````$```"H,P```````"`!`````````0````$```"H
+M,P```````"@!`````````0````$```"H,P```````#`!`````````0````$`
+M``"H,P```````#@!`````````0````$```"H,P```````$`!`````````0``
+M``$```"H,P```````$@!`````````0````$```"H,P```````%`!````````
+M`0````$```"H,P```````%@!`````````0````$```"H,P```````&`!````
+M`````0````$```"H,P```````&@!`````````0````$```"H,P```````'`!
+M`````````0````$```"H,P```````'@!`````````0````$```"H,P``````
+M`(`!`````````0````$```"H,P```````(@!`````````0````$```"H,P``
+M`````)`!`````````0````$```"H,P```````)@!`````````0````$```"H
+M,P```````*`!`````````0````$```"H,P```````*@!`````````0````$`
+M``"H,P```````+`!`````````0````$```"H,P```````+@!`````````0``
+M``$```"H,P```````,`!`````````0````$```"H,P```````,@!````````
+M`0````$```"H,P```````-`!`````````0````$```"H,P```````-@!````
+M`````0````$```"H,P```````.`!`````````0````$```"H,P```````.@!
+M`````````0````$```"H,P```````/`!`````````0````$```"H,P``````
+M`/@!`````````0````$```"H,P`````````"`````````0````$```"H,P``
+M``````@"`````````0````$```"H,P```````!`"`````````0````$```"H
+M,P```````!@"`````````0````$```"H,P```````"`"`````````0````$`
+M``"H,P```````"@"`````````0````$```"H,P```````#`"`````````0``
+M``$```"H,P```````#@"`````````0````$```"H,P```````$`"````````
+M`0````$```"H,P```````$@"`````````0````$```"H,P```````%`"````
+M`````0````$```"H,P```````%@"`````````0````$```"H,P```````&`"
+M`````````0````$```"H,P```````&@"`````````0````$```"H,P``````
+M`'`"`````````0````$```"H,P```````'@"`````````0````$```"H,P``
+M`````(`"`````````0````$```"H,P```````(@"`````````0````$```"H
+M,P```````)`"`````````0````$```"H,P```````)@"`````````0````$`
+M``"H,P```````*`"`````````0````$```"H,P```````*@"`````````0``
+M``$```"H,P```````+`"`````````0````$```"H,P```````+@"````````
+M`0````$```"H,P```````,`"`````````0````$```"H,P```````,@"````
+M`````0````$```"H,P```````-`"`````````0````$```"H,P```````-@"
+M`````````0````$```"H,P```````.`"`````````0````$```"H,P``````
+M`.@"`````````0````$```"H,P```````/`"`````````0````$```"H,P``
+M`````/@"`````````0````$```"H,P`````````#`````````0````$```"H
+M,P````````@#`````````0````$```"H,P```````!`#`````````0````$`
+M``"H,P```````!@#`````````0````$```"H,P```````"`#`````````0``
+M``$```"H,P```````"@#`````````0````$```"H,P```````#`#````````
+M`0````$```"H,P```````#@#`````````0````$```"H,P```````$`#````
+M`````0````$```"H,P```````$@#`````````0````$```"H,P```````%`#
+M`````````0````$```"H,P```````%@#`````````0````$```"H,P``````
+M`&`#`````````0````$```"H,P```````&@#`````````0````$```"H,P``
+M`````'`#`````````0````$```"H,P```````'@#`````````0````$```"H
+M,P```````(`#`````````0````$```"H,P```````(@#`````````0````$`
+M``"H,P```````)`#`````````0````$```"H,P```````)@#`````````0``
+M``$```"H,P```````*`#`````````0````$```"H,P```````*@#````````
+M`0````$```"H,P```````+`#`````````0````$```"H,P```````+@#````
+M`````0````$```"H,P```````,`#`````````0````$```"H,P```````,@#
+M`````````0````$```"H,P```````-`#`````````0````$```"H,P``````
+M`-@#`````````0````$```"H,P```````.`#`````````0````$```"H,P``
+M`````.@#`````````0````$```"H,P```````/`#`````````0````$```"H
+M,P```````/@#`````````0````$```"H,P`````````$`````````0````$`
+M``"H,P````````@$`````````0````$```"H,P```````!`$`````````0``
+M``$```"H,P```````!@$`````````0````$```"H,P```````"`$````````
+M`0````$```"H,P```````"@$`````````0````$```"H,P```````#`$````
+M`````0````$```"H,P```````#@$`````````0````$```"H,P```````$`$
+M`````````0````$```"H,P```````$@$`````````0````$```"H,P``````
+M`%`$`````````0````$```!R,P```````%@$`````````0````$```!W,P``
+M`````&`$`````````0````$```!\,P```````&@$`````````0````$```"H
+M,P```````'`$`````````0````$```"H,P```````'@$`````````0````$`
+M``"),P```````(`$`````````0````$```"H,P```````(@$`````````0``
+M``$```"H,P```````)`$`````````0````$```"H,P```````)@$````````
+M`0````$```"H,P```````*`$`````````0````$```"H,P```````*@$````
+M`````0````$```"H,P```````+`$`````````0````$```"H,P```````+@$
+M`````````0````$```"H,P```````,`$`````````0````$```"H,P``````
+M`,@$`````````0````$```"H,P```````-`$`````````0````$```"2,P``
+M`````-@$`````````0````$```"7,P```````.`$`````````0````$```"<
+M,P```````.@$`````````0````$```"B,P```````/`$`````````0````$`
+M```X-````````/@$`````````0````$```!#-``````````%`````````0``
+M``$```!#-`````````@%`````````0````$```!#-````````!`%````````
+M`0````$```!#-````````!@%`````````0````$```!#-````````"`%````
+M`````0````$```!#-````````"@%`````````0````$```!#-````````#`%
+M`````````0````$```!#-````````#@%`````````0````$```!#-```````
+M`$`%`````````0````$```!#-````````$@%`````````0````$```!#-```
+M`````%`%`````````0````$```!#-````````%@%`````````0````$```!#
+M-````````&`%`````````0````$```!#-````````&@%`````````0````$`
+M``!#-````````'`%`````````0````$```!#-````````'@%`````````0``
+M``$```!#-````````(`%`````````0````$```!#-````````(@%````````
+M`0````$```!#-````````)`%`````````0````$```!#-````````)@%````
+M`````0````$```!#-````````*`%`````````0````$```!#-````````*@%
+M`````````0````$```!#-````````+`%`````````0````$```!#-```````
+M`+@%`````````0````$```!#-````````,`%`````````0````$```!#-```
+M`````,@%`````````0````$```!#-````````-`%`````````0````$```!#
+M-````````-@%`````````0````$```!#-````````.`%`````````0````$`
+M``!#-````````.@%`````````0````$```!#-````````/`%`````````0``
+M``$```!#-````````/@%`````````0````$```!#-``````````&````````
+M`0````$```!#-`````````@&`````````0````$```!#-````````!`&````
+M`````0````$````--````````!@&`````````0````$```!#-````````"`&
+M`````````0````$````--````````"@&`````````0````$```!#-```````
+M`#`&`````````0````$```!#-````````#@&`````````0````$```!#-```
+M`````$`&`````````0````$````--````````$@&`````````0````$````-
+M-````````%`&`````````0````$```!#-````````%@&`````````0````$`
+M``!#-````````&`&`````````0````$```!#-````````&@&`````````0``
+M``$```!#-````````'`&`````````0````$```!#-````````'@&````````
+M`0````$```!#-````````(`&`````````0````$```!#-````````(@&````
+M`````0````$```!#-````````)`&`````````0````$```!#-````````)@&
+M`````````0````$```!#-````````*`&`````````0````$```!#-```````
+M`*@&`````````0````$```!#-````````+`&`````````0````$```!#-```
+M`````+@&`````````0````$```!#-````````,`&`````````0````$```!#
+M-````````,@&`````````0````$```!#-````````-`&`````````0````$`
+M``!#-````````-@&`````````0````$````--````````.`&`````````0``
+M``$```!#-````````.@&`````````0````$```!#-````````/`&````````
+M`0````$```!#-````````/@&`````````0````$```!#-``````````'````
+M`````0````$```!#-`````````@'`````````0````$```!#-````````!`'
+M`````````0````$```!#-````````!@'`````````0````$```!#-```````
+M`"`'`````````0````$```!#-````````"@'`````````0````$```!#-```
+M`````#`'`````````0````$```!#-````````#@'`````````0````$```!#
+M-````````$`'`````````0````$```!#-````````$@'`````````0````$`
+M``!#-````````%`'`````````0````$````--````````%@'`````````0``
+M``$````--````````&`'`````````0````$````--````````&@'````````
+M`0````$````--````````'`'`````````0````$```!#-````````'@'````
+M`````0````$```!#-````````(`'`````````0````$```!#-````````(@'
+M`````````0````$```!#-````````)`'`````````0````$```!#-```````
+M`)@'`````````0````$```!#-````````*`'`````````0````$```!#-```
+M`````*@'`````````0````$```!#-````````+`'`````````0````$```!#
+M-````````+@'`````````0````$```!#-````````,`'`````````0````$`
+M``!#-````````,@'`````````0````$```!#-````````-`'`````````0``
+M``$```!#-````````-@'`````````0````$```!#-````````.`'````````
+M`0````$```!#-````````.@'`````````0````$```!#-````````/`'````
+M`````0````$```!#-````````/@'`````````0````$```!#-``````````(
+M`````````0````$```!#-`````````@(`````````0````$```!#-```````
+M`!`(`````````0````$```!#-````````!@(`````````0````$```!#-```
+M`````"`(`````````0````$```!#-````````"@(`````````0````$```!#
+M-````````#`(`````````0````$```!#-````````#@(`````````0````$`
+M``!#-````````$`(`````````0````$```!#-````````$@(`````````0``
+M``$```!#-````````%`(`````````0````$```!#-````````%@(````````
+M`0````$```!#-````````&`(`````````0````$```!#-````````&@(````
+M`````0````$```!#-````````'`(`````````0````$```!#-````````'@(
+M`````````0````$```!#-````````(`(`````````0````$```!#-```````
+M`(@(`````````0````$```!#-````````)`(`````````0````$```!#-```
+M`````)@(`````````0````$```!#-````````*`(`````````0````$```!#
+M-````````*@(`````````0````$```!#-````````+`(`````````0````$`
+M``!#-````````+@(`````````0````$```!#-````````,`(`````````0``
+M``$```!#-````````,@(`````````0````$````--````````-`(````````
+M`0````$```!#-````````-@(`````````0````$```!#-````````.`(````
+M`````0````$```!#-````````.@(`````````0````$```!#-````````/`(
+M`````````0````$```!#-````````/@(`````````0````$```!#-```````
+M```)`````````0````$```!#-`````````@)`````````0````$```!#-```
+M`````!`)`````````0````$````--````````!@)`````````0````$```!#
+M-````````"`)`````````0````$````--````````"@)`````````0````$`
+M``!#-````````#`)`````````0````$```!#-````````#@)`````````0``
+M``$```!#-````````$`)`````````0````$````--````````$@)````````
+M`0````$````--````````%`)`````````0````$```!#-````````%@)````
+M`````0````$```!#-````````&`)`````````0````$```!#-````````&@)
+M`````````0````$````--````````'`)`````````0````$```!#-```````
+M`'@)`````````0````$```!#-````````(`)`````````0````$```!#-```
+M`````(@)`````````0````$```!#-````````)`)`````````0````$```!#
+M-````````)@)`````````0````$```!#-````````*`)`````````0````$`
+M``!#-````````*@)`````````0````$```!#-````````+`)`````````0``
+M``$```!#-````````+@)`````````0````$```!#-````````,`)````````
+M`0````$```!#-````````,@)`````````0````$```!#-````````-`)````
+M`````0````$```!#-````````-@)`````````0````$```!#-````````.`)
+M`````````0````$```!#-````````.@)`````````0````$```!#-```````
+M`/`)`````````0````$```!#-````````/@)`````````0````$```!#-```
+M```````*`````````0````$```!#-`````````@*`````````0````$```!#
+M-````````!`*`````````0````$````--````````!@*`````````0````$`
+M``!#-````````"`*`````````0````$````--````````"@*`````````0``
+M``$```!#-````````#`*`````````0````$```!#-````````#@*````````
+M`0````$```!#-````````$`*`````````0````$````--````````$@*````
+M`````0````$````--````````%`*`````````0````$```#).@```````%@*
+M`````````0````$```#E.@```````&`*`````````0````$````!.P``````
+M`&@*`````````0````$```!6.P```````'`*`````````0````$```"].P``
+M`````'@*`````````0````$```#M<0```````(`*`````````0````$```"9
+M<0```````(@*`````````0````$```"F<0```````)`*`````````0````$`
+M``#/<0```````)@*`````````0````$```#M<0```````*`*`````````0``
+M``$```#C<0```````*@*`````````0````$```#9<0```````+`*````````
+M`0````$```#M<0```````+@*`````````0````$```#M<0```````,`*````
+M`````0````$```#M<0```````,@*`````````0````$```#M<0```````-`*
+M`````````0````$```#9<0```````-@*`````````0````$```"'P0``````
+M`.`*`````````0````$```",P0```````.@*`````````0````$```"2P0``
+M`````/`*`````````0````$```"7P0```````/@*`````````0````$```#%
+MP0`````````+`````````0````$```#%P0````````@+`````````0````$`
+M``#%P0```````!`+`````````0````$```#%P0```````!@+`````````0``
+M``$```#%P0```````"`+`````````0````$```#%P0```````"@+````````
+M`0````$```#%P0```````#`+`````````0````$```#%P0```````#@+````
+M`````0````$```#%P0```````$`+`````````0````$```#%P0```````$@+
+M`````````0````$```#%P0```````%`+`````````0````$```#%P0``````
+M`%@+`````````0````$```"<P0```````&`+`````````0````$```"BP0``
+M`````&@+`````````0````$```"GP0```````'`+`````````0````$```"L
+MP0```````'@+`````````0````$```"RP0```````(`+`````````0````$`
+M``"WP0```````(@+`````````0````$```"\P0```````)`+`````````0``
+M``$```#"P0```````)@+`````````0````$````B%0$``````*`+````````
+M`0````$```"`%0$``````*@+`````````0````$```"Q%0$``````+`+````
+M`````0````$```#-%0$``````+@+`````````0````$```#I%0$``````,`+
+M`````````0````$````%%@$``````,@+`````````0````$````F%@$`````
+M`-`+`````````0````$```",%@$``````-@+`````````0````$```"Y%@$`
+M`````.`+`````````0````$```!<%P$``````.@+`````````0````$````3
+M%P$``````/`+`````````0````$````O%P$``````/@+`````````0````$`
+M``!X%P$````````,`````````0````$```!V&`$```````@,`````````0``
+M``$```"F&`$``````!`,`````````0````$```#,&`$``````!@,````````
+M`0````$`````&0$``````"`,`````````0````$````C&0$``````"@,````
+M`````0````$```!&&0$``````#`,`````````0````$```!2&0$``````#@,
+M`````````0````$```#;%@$``````$`,`````````0````$```#W%@$`````
+M`$@,`````````0````$```!(%@$``````%`,`````````0````$```!J%@$`
+M`````%@,`````````0````$````3%P$``````&`,`````````0````$```!9
+M&0$``````&@,`````````0````$```!`2P$``````'`,`````````0````$`
+M``!,10$``````'@,`````````0````$```":10$``````(`,`````````0``
+M``$````31@$``````(@,`````````0````$```"31@$``````)`,````````
+M`0````$```##1@$``````)@,`````````0````$```#-1@$``````*`,````
+M`````0````$```!`1P$``````*@,`````````0````$```!*1P$``````+`,
+M`````````0````$````[2@$``````+@,`````````0````$````(20$`````
+M`,`,`````````0````$```#\20$``````,@,`````````0````$```!`2P$`
+M`````-`,`````````0````$```!`2P$``````-@,`````````0````$```!`
+M2P$``````.`,`````````0````$```!`2P$``````.@,`````````0````$`
+M``!`2P$``````/`,`````````0````$```!`2P$``````/@,`````````0``
+M``$```!`2P$````````-`````````0````$```!`2P$```````@-````````
+M`0````$```!51P$``````!`-`````````0````$```!P1P$``````!@-````
+M`````0````$````"1P$``````"`-`````````0````$````V1P$``````"@-
+M`````````0````$````(20$``````#`-`````````0````$````W2P$`````
+M`#@-`````````0````$```!*30$``````$`-`````````0````$```!V4`$`
+M`````$@-`````````0````$```#U4`$``````%`-`````````0````$````T
+M40$``````%@-`````````0````$```!84@$``````&`-`````````0````$`
+M```D<@$``````&@-`````````0````$```!8<`$``````'`-`````````0``
+M``$```!A<`$``````'@-`````````0````$```!J<`$``````(`-````````
+M`0````$```!U<`$``````(@-`````````0````$```"I<`$``````)`-````
+M`````0````$```#`<`$``````)@-`````````0````$```#,<`$``````*`-
+M`````````0````$````!<0$``````*@-`````````0````$````5<0$`````
+M`+`-`````````0````$````I<0$``````+@-`````````0````$````]<0$`
+M`````,`-`````````0````$```!8<0$``````,@-`````````0````$```!D
+M<0$``````-`-`````````0````$```!P<0$``````-@-`````````0````$`
+M```D<@$``````.`-`````````0````$````D<@$``````.@-`````````0``
+M``$```"!<0$``````/`-`````````0````$```#2<0$``````/@-````````
+M`0````$````D<@$````````.`````````0````$````D<@$```````@.````
+M`````0````$```"9<0$``````!`.`````````0````$````'<@$``````!@.
+M`````````0````$```",<`$``````"`.`````````0````$```"8<`$`````
+M`"@.`````````0````$````D<@$``````#`.`````````0````$```#8<`$`
+M`````#@.`````````0````$```#D<`$``````$`.`````````0````$```#P
+M<`$``````(@.`````````0````$```!ROP$``````)`.`````````0````$`
+M``!ROP$``````)@.`````````0````$````7OP$``````*`.`````````0``
+M``$````GOP$``````*@.`````````0````$```!ROP$``````+`.````````
+M`0````$```!"OP$``````+@.`````````0````$`````OP$``````,`.````
+M`````0````$````WOP$``````,@.`````````0````$```!2OP$``````-`.
+M`````````0````$```!BOP$``````.`.`````````0````$````T[P$`````
+M`.@.`````````0````$```!@[P$``````/`.`````````0````$```#8[P$`
+M`````/@.`````````0````$```#8[P$````````/`````````0````$```#8
+M[P$```````@/`````````0````$```#8[P$``````!`/`````````0````$`
+M``"([P$``````!@/`````````0````$```"P[P$``````"`/`````````0``
+M``$```#8[P$``````"@/`````````0````$```#P[P$``````#`/````````
+M`0````$```!(^P$``````#@/`````````0````$```!(^P$``````$`/````
+M`````0````$```#;^@$``````$@/`````````0````$```#@^@$``````%`/
+M`````````0````$```!(^P$``````%@/`````````0````$```!(^P$`````
+M`&`/`````````0````$```!(^P$``````&@/`````````0````$```!(^P$`
+M`````'`/`````````0````$```!(^P$``````'@/`````````0````$```!(
+M^P$``````(`/`````````0````$```!(^P$``````(@/`````````0````$`
+M``!(^P$``````)`/`````````0````$```!(^P$``````)@/`````````0``
+M``$```!(^P$``````*`/`````````0````$```!(^P$``````*@/````````
+M`0````$```!(^P$``````+`/`````````0````$```#E^@$``````+@/````
+M`````0````$```#J^@$``````,`/`````````0````$```#R^@$``````,@/
+M`````````0````$```#W^@$``````-`/`````````0````$```#\^@$`````
+M`-@/`````````0````$````"^P$``````.`/`````````0````$````'^P$`
+M`````.@/`````````0````$````,^P$``````/`/`````````0````$```!(
+M^P$``````/@/`````````0````$```!(^P$````````0`````````0````$`
+M``!(^P$```````@0`````````0````$```!(^P$``````!`0`````````0``
+M``$```!(^P$``````!@0`````````0````$```!(^P$``````"`0````````
+M`0````$```!(^P$``````"@0`````````0````$```!(^P$``````#`0````
+M`````0````$```!(^P$``````#@0`````````0````$```!(^P$``````$`0
+M`````````0````$```!(^P$``````$@0`````````0````$```!(^P$`````
+M`%`0`````````0````$```!(^P$``````%@0`````````0````$```!(^P$`
+M`````&`0`````````0````$```!(^P$``````&@0`````````0````$```!(
+M^P$``````'`0`````````0````$```!(^P$``````'@0`````````0````$`
+M``!(^P$``````(`0`````````0````$```!(^P$``````(@0`````````0``
+M``$```!(^P$``````)`0`````````0````$```!(^P$``````)@0````````
+M`0````$```!(^P$``````*`0`````````0````$```!(^P$``````*@0````
+M`````0````$```!(^P$``````+`0`````````0````$```!(^P$``````+@0
+M`````````0````$```!(^P$``````,`0`````````0````$```!(^P$`````
+M`,@0`````````0````$```!(^P$``````-`0`````````0````$```!(^P$`
+M`````-@0`````````0````$```!(^P$``````.`0`````````0````$```!(
+M^P$``````.@0`````````0````$```!(^P$``````/`0`````````0````$`
+M``!(^P$``````/@0`````````0````$```!(^P$````````1`````````0``
+M``$```!(^P$```````@1`````````0````$```!(^P$``````!`1````````
+M`0````$```!(^P$``````!@1`````````0````$```!(^P$``````"`1````
+M`````0````$```!(^P$``````"@1`````````0````$```!(^P$``````#`1
+M`````````0````$```!(^P$``````#@1`````````0````$```!(^P$`````
+M`$`1`````````0````$```!(^P$``````$@1`````````0````$```!(^P$`
+M`````%`1`````````0````$```!(^P$``````%@1`````````0````$```!(
+M^P$``````&`1`````````0````$```!(^P$``````&@1`````````0````$`
+M``!(^P$``````'`1`````````0````$```!(^P$``````'@1`````````0``
+M``$```!(^P$``````(`1`````````0````$```!(^P$``````(@1````````
+M`0````$```!(^P$``````)`1`````````0````$```!(^P$``````)@1````
+M`````0````$```!(^P$``````*`1`````````0````$```!(^P$``````*@1
+M`````````0````$```!(^P$``````+`1`````````0````$```!(^P$`````
+M`+@1`````````0````$```!(^P$``````,`1`````````0````$```!(^P$`
+M`````,@1`````````0````$```!(^P$``````-`1`````````0````$```!(
+M^P$``````-@1`````````0````$```!(^P$``````.`1`````````0````$`
+M``!(^P$``````.@1`````````0````$```!(^P$``````/`1`````````0``
+M``$```!(^P$``````/@1`````````0````$```!(^P$````````2````````
+M`0````$```!(^P$```````@2`````````0````$```!(^P$``````!`2````
+M`````0````$```!(^P$``````!@2`````````0````$```!(^P$``````"`2
+M`````````0````$```!(^P$``````"@2`````````0````$```!(^P$`````
+M`#`2`````````0````$```!(^P$``````#@2`````````0````$```!(^P$`
+M`````$`2`````````0````$```!(^P$``````$@2`````````0````$```!(
+M^P$``````%`2`````````0````$```!(^P$``````%@2`````````0````$`
+M``!(^P$``````&`2`````````0````$```!(^P$``````&@2`````````0``
+M``$```!(^P$``````'`2`````````0````$```!(^P$``````'@2````````
+M`0````$```!(^P$``````(`2`````````0````$```!(^P$``````(@2````
+M`````0````$```!(^P$``````)`2`````````0````$```!(^P$``````)@2
+M`````````0````$```!(^P$``````*`2`````````0````$```!(^P$`````
+M`*@2`````````0````$```!(^P$``````+`2`````````0````$```!(^P$`
+M`````+@2`````````0````$```!(^P$``````,`2`````````0````$```!(
+M^P$``````,@2`````````0````$```!(^P$``````-`2`````````0````$`
+M``!(^P$``````-@2`````````0````$```!(^P$``````.`2`````````0``
+M``$```!(^P$``````.@2`````````0````$```!(^P$``````/`2````````
+M`0````$```!(^P$``````/@2`````````0````$```!(^P$````````3````
+M`````0````$```!(^P$```````@3`````````0````$```!(^P$``````!`3
+M`````````0````$```!(^P$``````!@3`````````0````$```!(^P$`````
+M`"`3`````````0````$```!(^P$``````"@3`````````0````$```!(^P$`
+M`````#`3`````````0````$````2^P$``````#@3`````````0````$````7
+M^P$``````$`3`````````0````$````<^P$``````$@3`````````0````$`
+M``!(^P$``````%`3`````````0````$```!(^P$``````%@3`````````0``
+M``$````I^P$``````&`3`````````0````$```!(^P$``````&@3````````
+M`0````$```!(^P$``````'`3`````````0````$```!(^P$``````'@3````
+M`````0````$```!(^P$``````(`3`````````0````$```!(^P$``````(@3
+M`````````0````$```!(^P$``````)`3`````````0````$```!(^P$`````
+M`)@3`````````0````$```!(^P$``````*`3`````````0````$```!(^P$`
+M`````*@3`````````0````$```!(^P$``````+`3`````````0````$````R
+M^P$``````+@3`````````0````$````W^P$``````,`3`````````0````$`
+M```\^P$``````,@3`````````0````$```!"^P$``````-`3`````````0``
+M``$```#8^P$``````-@3`````````0````$```#C^P$``````.`3````````
+M`0````$```#C^P$``````.@3`````````0````$```#C^P$``````/`3````
+M`````0````$```#C^P$``````/@3`````````0````$```#C^P$````````4
+M`````````0````$```#C^P$```````@4`````````0````$```#C^P$`````
+M`!`4`````````0````$```#C^P$``````!@4`````````0````$```#C^P$`
+M`````"`4`````````0````$```#C^P$``````"@4`````````0````$```#C
+M^P$``````#`4`````````0````$```#C^P$``````#@4`````````0````$`
+M``#C^P$``````$`4`````````0````$```#C^P$``````$@4`````````0``
+M``$```#C^P$``````%`4`````````0````$```#C^P$``````%@4````````
+M`0````$```#C^P$``````&`4`````````0````$```#C^P$``````&@4````
+M`````0````$```#C^P$``````'`4`````````0````$```#C^P$``````'@4
+M`````````0````$```#C^P$``````(`4`````````0````$```#C^P$`````
+M`(@4`````````0````$```#C^P$``````)`4`````````0````$```#C^P$`
+M`````)@4`````````0````$```#C^P$``````*`4`````````0````$```#C
+M^P$``````*@4`````````0````$```#C^P$``````+`4`````````0````$`
+M``#C^P$``````+@4`````````0````$```#C^P$``````,`4`````````0``
+M``$```#C^P$``````,@4`````````0````$```#C^P$``````-`4````````
+M`0````$```#C^P$``````-@4`````````0````$```#C^P$``````.`4````
+M`````0````$```#C^P$``````.@4`````````0````$```#C^P$``````/`4
+M`````````0````$```"M^P$``````/@4`````````0````$```#C^P$`````
+M```5`````````0````$```"M^P$```````@5`````````0````$```#C^P$`
+M`````!`5`````````0````$```#C^P$``````!@5`````````0````$```#C
+M^P$``````"`5`````````0````$```"M^P$``````"@5`````````0````$`
+M``"M^P$``````#`5`````````0````$```#C^P$``````#@5`````````0``
+M``$```#C^P$``````$`5`````````0````$```#C^P$``````$@5````````
+M`0````$```#C^P$``````%`5`````````0````$```#C^P$``````%@5````
+M`````0````$```#C^P$``````&`5`````````0````$```#C^P$``````&@5
+M`````````0````$```#C^P$``````'`5`````````0````$```#C^P$`````
+M`'@5`````````0````$```#C^P$``````(`5`````````0````$```#C^P$`
+M`````(@5`````````0````$```#C^P$``````)`5`````````0````$```#C
+M^P$``````)@5`````````0````$```#C^P$``````*`5`````````0````$`
+M``#C^P$``````*@5`````````0````$```#C^P$``````+`5`````````0``
+M``$```#C^P$``````+@5`````````0````$```"M^P$``````,`5````````
+M`0````$```#C^P$``````,@5`````````0````$```#C^P$``````-`5````
+M`````0````$```#C^P$``````-@5`````````0````$```#C^P$``````.`5
+M`````````0````$```#C^P$``````.@5`````````0````$```#C^P$`````
+M`/`5`````````0````$```#C^P$``````/@5`````````0````$```#C^P$`
+M```````6`````````0````$```#C^P$```````@6`````````0````$```#C
+M^P$``````!`6`````````0````$```#C^P$``````!@6`````````0````$`
+M``#C^P$``````"`6`````````0````$```#C^P$``````"@6`````````0``
+M``$```#C^P$``````#`6`````````0````$```"M^P$``````#@6````````
+M`0````$```"M^P$``````$`6`````````0````$```"M^P$``````$@6````
+M`````0````$```"M^P$``````%`6`````````0````$```#C^P$``````%@6
+M`````````0````$```#C^P$``````&`6`````````0````$```#C^P$`````
+M`&@6`````````0````$```#C^P$``````'`6`````````0````$```#C^P$`
+M`````'@6`````````0````$```#C^P$``````(`6`````````0````$```#C
+M^P$``````(@6`````````0````$```#C^P$``````)`6`````````0````$`
+M``#C^P$``````)@6`````````0````$```#C^P$``````*`6`````````0``
+M``$```#C^P$``````*@6`````````0````$```#C^P$``````+`6````````
+M`0````$```#C^P$``````+@6`````````0````$```#C^P$``````,`6````
+M`````0````$```#C^P$``````,@6`````````0````$```#C^P$``````-`6
+M`````````0````$```#C^P$``````-@6`````````0````$```#C^P$`````
+M`.`6`````````0````$```#C^P$``````.@6`````````0````$```#C^P$`
+M`````/`6`````````0````$```#C^P$``````/@6`````````0````$```#C
+M^P$````````7`````````0````$```#C^P$```````@7`````````0````$`
+M``#C^P$``````!`7`````````0````$```#C^P$``````!@7`````````0``
+M``$```#C^P$``````"`7`````````0````$```#C^P$``````"@7````````
+M`0````$```#C^P$``````#`7`````````0````$```#C^P$``````#@7````
+M`````0````$```#C^P$``````$`7`````````0````$```#C^P$``````$@7
+M`````````0````$```#C^P$``````%`7`````````0````$```#C^P$`````
+M`%@7`````````0````$```#C^P$``````&`7`````````0````$```#C^P$`
+M`````&@7`````````0````$```#C^P$``````'`7`````````0````$```#C
+M^P$``````'@7`````````0````$```#C^P$``````(`7`````````0````$`
+M``#C^P$``````(@7`````````0````$```#C^P$``````)`7`````````0``
+M``$```#C^P$``````)@7`````````0````$```#C^P$``````*`7````````
+M`0````$```#C^P$``````*@7`````````0````$```"M^P$``````+`7````
+M`````0````$```#C^P$``````+@7`````````0````$```#C^P$``````,`7
+M`````````0````$```#C^P$``````,@7`````````0````$```#C^P$`````
+M`-`7`````````0````$```#C^P$``````-@7`````````0````$```#C^P$`
+M`````.`7`````````0````$```#C^P$``````.@7`````````0````$```#C
+M^P$``````/`7`````````0````$```"M^P$``````/@7`````````0````$`
+M``#C^P$````````8`````````0````$```"M^P$```````@8`````````0``
+M``$```#C^P$``````!`8`````````0````$```#C^P$``````!@8````````
+M`0````$```#C^P$``````"`8`````````0````$```"M^P$``````"@8````
+M`````0````$```"M^P$``````#`8`````````0````$```#C^P$``````#@8
+M`````````0````$```#C^P$``````$`8`````````0````$```#C^P$`````
+M`$@8`````````0````$```"M^P$``````%`8`````````0````$```#C^P$`
+M`````%@8`````````0````$```#C^P$``````&`8`````````0````$```#C
+M^P$``````&@8`````````0````$```#C^P$``````'`8`````````0````$`
+M``#C^P$``````'@8`````````0````$```#C^P$``````(`8`````````0``
+M``$```#C^P$``````(@8`````````0````$```#C^P$``````)`8````````
+M`0````$```#C^P$``````)@8`````````0````$```#C^P$``````*`8````
+M`````0````$```#C^P$``````*@8`````````0````$```#C^P$``````+`8
+M`````````0````$```#C^P$``````+@8`````````0````$```#C^P$`````
+M`,`8`````````0````$```#C^P$``````,@8`````````0````$```#C^P$`
+M`````-`8`````````0````$```#C^P$``````-@8`````````0````$```#C
+M^P$``````.`8`````````0````$```#C^P$``````.@8`````````0````$`
+M``#C^P$``````/`8`````````0````$```"M^P$``````/@8`````````0``
+M``$```#C^P$````````9`````````0````$```"M^P$```````@9````````
+M`0````$```#C^P$``````!`9`````````0````$```#C^P$``````!@9````
+M`````0````$```#C^P$``````"`9`````````0````$```"M^P$``````"@9
+M`````````0````$```"M^P$``````#`9`````````0````$```!I`@(`````
+M`#@9`````````0````$```"%`@(``````$`9`````````0````$```"A`@(`
+M`````$@9`````````0````$```#V`@(``````%`9`````````0````$```!=
+M`P(``````%@9`````````0````$```"-.0(``````&`9`````````0````$`
+M```Y.0(``````&@9`````````0````$```!&.0(``````'`9`````````0``
+M``$```!O.0(``````'@9`````````0````$```"-.0(``````(`9````````
+M`0````$```"#.0(``````(@9`````````0````$```!Y.0(``````)`9````
+M`````0````$```"-.0(``````)@9`````````0````$```"-.0(``````*`9
+M`````````0````$```"-.0(``````*@9`````````0````$```"-.0(`````
+M`+`9`````````0````$```!Y.0(``````+@9`````````0````$````GB0(`
+M`````,`9`````````0````$````LB0(``````,@9`````````0````$````R
+MB0(``````-`9`````````0````$````WB0(``````-@9`````````0````$`
+M``!EB0(``````.`9`````````0````$```!EB0(``````.@9`````````0``
+M``$```!EB0(``````/`9`````````0````$```!EB0(``````/@9````````
+M`0````$```!EB0(````````:`````````0````$```!EB0(```````@:````
+M`````0````$```!EB0(``````!`:`````````0````$```!EB0(``````!@:
+M`````````0````$```!EB0(``````"`:`````````0````$```!EB0(`````
+M`"@:`````````0````$```!EB0(``````#`:`````````0````$```!EB0(`
+M`````#@:`````````0````$````\B0(``````$`:`````````0````$```!"
+MB0(``````$@:`````````0````$```!'B0(``````%`:`````````0````$`
+M``!,B0(``````%@:`````````0````$```!2B0(``````&`:`````````0``
+M``$```!7B0(``````&@:`````````0````$```!<B0(``````'`:````````
+M`0````$```!BB0(``````'@:`````````0````$```#"W`(``````(`:````
+M`````0````$````@W0(``````(@:`````````0````$```!1W0(``````)`:
+M`````````0````$```!MW0(``````)@:`````````0````$```")W0(`````
+M`*`:`````````0````$```"EW0(``````*@:`````````0````$```#&W0(`
+M`````+`:`````````0````$````LW@(``````+@:`````````0````$```!9
+MW@(``````,`:`````````0````$```#\W@(``````,@:`````````0````$`
+M``"SW@(``````-`:`````````0````$```#/W@(``````-@:`````````0``
+M``$````8WP(``````.`:`````````0````$````6X`(``````.@:````````
+M`0````$```!&X`(``````/`:`````````0````$```!LX`(``````/@:````
+M`````0````$```"@X`(````````;`````````0````$```##X`(```````@;
+M`````````0````$```#FX`(``````!`;`````````0````$```#RX`(`````
+M`!@;`````````0````$```![W@(``````"`;`````````0````$```"7W@(`
+M`````"@;`````````0````$```#HW0(``````#`;`````````0````$````*
+MW@(``````#@;`````````0````$```"SW@(``````$`;`````````0````$`
+M``#YX`(``````$@;`````````0````$```#@$@,``````%`;`````````0``
+M``$```#L#`,``````%@;`````````0````$````Z#0,``````&`;````````
+M`0````$```"S#0,``````&@;`````````0````$````S#@,``````'`;````
+M`````0````$```!C#@,``````'@;`````````0````$```!M#@,``````(`;
+M`````````0````$```#@#@,``````(@;`````````0````$```#J#@,`````
+M`)`;`````````0````$```#;$0,``````)@;`````````0````$```"H$`,`
+M`````*`;`````````0````$```"<$0,``````*@;`````````0````$```#@
+M$@,``````+`;`````````0````$```#@$@,``````+@;`````````0````$`
+M``#@$@,``````,`;`````````0````$```#@$@,``````,@;`````````0``
+M``$```#@$@,``````-`;`````````0````$```#@$@,``````-@;````````
+M`0````$```#@$@,``````.`;`````````0````$```#@$@,``````.@;````
+M`````0````$```#U#@,``````/`;`````````0````$````0#P,``````/@;
+M`````````0````$```"B#@,````````<`````````0````$```#6#@,`````
+M``@<`````````0````$```"H$`,``````!`<`````````0````$```#7$@,`
+M`````!@<`````````0````$```#J%`,``````"`<`````````0````$````6
+M&`,``````"@<`````````0````$```"5&`,``````#`<`````````0````$`
+M``#4&`,``````#@<`````````0````$```#X&0,``````$`<`````````0``
+M``$```"T.@,``````$@<`````````0````$```#H.`,``````%`<````````
+M`0````$```#Q.`,``````%@<`````````0````$```#Z.`,``````&`<````
+M`````0````$````%.0,``````&@<`````````0````$````Y.0,``````'`<
+M`````````0````$```!0.0,``````'@<`````````0````$```!<.0,`````
+M`(`<`````````0````$```"1.0,``````(@<`````````0````$```"E.0,`
+M`````)`<`````````0````$```"Y.0,``````)@<`````````0````$```#-
+M.0,``````*`<`````````0````$```#H.0,``````*@<`````````0````$`
+M``#T.0,``````+`<`````````0````$`````.@,``````+@<`````````0``
+M``$```"T.@,``````,`<`````````0````$```"T.@,``````,@<````````
+M`0````$````1.@,``````-`<`````````0````$```!B.@,``````-@<````
+M`````0````$```"T.@,``````.`<`````````0````$```"T.@,``````.@<
+M`````````0````$````I.@,``````/`<`````````0````$```"7.@,`````
+M`/@<`````````0````$````<.0,````````=`````````0````$````H.0,`
+M``````@=`````````0````$```"T.@,``````!`=`````````0````$```!H
+M.0,``````!@=`````````0````$```!T.0,``````"`=`````````0````$`
+M``"`.0,``````%`=`````````0````$```#2C0,``````%@=`````````0``
+M``$```#2C0,``````&`=`````````0````$```!WC0,``````&@=````````
+M`0````$```"'C0,``````'`=`````````0````$```#2C0,``````'@=````
+M`````0````$```"BC0,``````(`=`````````0````$```!@C0,``````(@=
+M`````````0````$```"7C0,``````)`=`````````0````$```"RC0,`````
+M`)@=`````````0````$```#"C0,``````*`=`````````0````$```"4O0,`
+M`````*@=`````````0````$```#`O0,``````+`=`````````0````$````X
+MO@,``````+@=`````````0````$````XO@,``````,`=`````````0````$`
+M```XO@,``````,@=`````````0````$````XO@,``````-`=`````````0``
+M``$```#HO0,``````-@=`````````0````$````0O@,``````.`=````````
+M`0````$````XO@,``````.@=`````````0````$```!0O@,``````/`=````
+M`````0````$```"HR0,``````/@=`````````0````$```"HR0,````````>
+M`````````0````$````[R0,```````@>`````````0````$```!`R0,`````
+M`!`>`````````0````$```"HR0,``````!@>`````````0````$```"HR0,`
+M`````"`>`````````0````$```"HR0,``````"@>`````````0````$```"H
+MR0,``````#`>`````````0````$```"HR0,``````#@>`````````0````$`
+M``"HR0,``````$`>`````````0````$```"HR0,``````$@>`````````0``
+M``$```"HR0,``````%`>`````````0````$```"HR0,``````%@>````````
+M`0````$```"HR0,``````&`>`````````0````$```"HR0,``````&@>````
+M`````0````$```"HR0,``````'`>`````````0````$```!%R0,``````'@>
+M`````````0````$```!*R0,``````(`>`````````0````$```!2R0,`````
+M`(@>`````````0````$```!7R0,``````)`>`````````0````$```!<R0,`
+M`````)@>`````````0````$```!BR0,``````*`>`````````0````$```!G
+MR0,``````*@>`````````0````$```!LR0,``````+`>`````````0````$`
+M``"HR0,``````+@>`````````0````$```"HR0,``````,`>`````````0``
+M``$```"HR0,``````,@>`````````0````$```"HR0,``````-`>````````
+M`0````$```"HR0,``````-@>`````````0````$```"HR0,``````.`>````
+M`````0````$```"HR0,``````.@>`````````0````$```"HR0,``````/`>
+M`````````0````$```"HR0,``````/@>`````````0````$```"HR0,`````
+M```?`````````0````$```"HR0,```````@?`````````0````$```"HR0,`
+M`````!`?`````````0````$```"HR0,``````!@?`````````0````$```"H
+MR0,``````"`?`````````0````$```"HR0,``````"@?`````````0````$`
+M``"HR0,``````#`?`````````0````$```"HR0,``````#@?`````````0``
+M``$```"HR0,``````$`?`````````0````$```"HR0,``````$@?````````
+M`0````$```"HR0,``````%`?`````````0````$```"HR0,``````%@?````
+M`````0````$```"HR0,``````&`?`````````0````$```"HR0,``````&@?
+M`````````0````$```"HR0,``````'`?`````````0````$```"HR0,`````
+M`'@?`````````0````$```"HR0,``````(`?`````````0````$```"HR0,`
+M`````(@?`````````0````$```"HR0,``````)`?`````````0````$```"H
+MR0,``````)@?`````````0````$```"HR0,``````*`?`````````0````$`
+M``"HR0,``````*@?`````````0````$```"HR0,``````+`?`````````0``
+M``$```"HR0,``````+@?`````````0````$```"HR0,``````,`?````````
+M`0````$```"HR0,``````,@?`````````0````$```"HR0,``````-`?````
+M`````0````$```"HR0,``````-@?`````````0````$```"HR0,``````.`?
+M`````````0````$```"HR0,``````.@?`````````0````$```"HR0,`````
+M`/`?`````````0````$```"HR0,``````/@?`````````0````$```"HR0,`
+M```````@`````````0````$```"HR0,```````@@`````````0````$```"H
+MR0,``````!`@`````````0````$```"HR0,``````!@@`````````0````$`
+M``"HR0,``````"`@`````````0````$```"HR0,``````"@@`````````0``
+M``$```"HR0,``````#`@`````````0````$```"HR0,``````#@@````````
+M`0````$```"HR0,``````$`@`````````0````$```"HR0,``````$@@````
+M`````0````$```"HR0,``````%`@`````````0````$```"HR0,``````%@@
+M`````````0````$```"HR0,``````&`@`````````0````$```"HR0,`````
+M`&@@`````````0````$```"HR0,``````'`@`````````0````$```"HR0,`
+M`````'@@`````````0````$```"HR0,``````(`@`````````0````$```"H
+MR0,``````(@@`````````0````$```"HR0,``````)`@`````````0````$`
+M``"HR0,``````)@@`````````0````$```"HR0,``````*`@`````````0``
+M``$```"HR0,``````*@@`````````0````$```"HR0,``````+`@````````
+M`0````$```"HR0,``````+@@`````````0````$```"HR0,``````,`@````
+M`````0````$```"HR0,``````,@@`````````0````$```"HR0,``````-`@
+M`````````0````$```"HR0,``````-@@`````````0````$```"HR0,`````
+M`.`@`````````0````$```"HR0,``````.@@`````````0````$```"HR0,`
+M`````/`@`````````0````$```"HR0,``````/@@`````````0````$```"H
+MR0,````````A`````````0````$```"HR0,```````@A`````````0````$`
+M``"HR0,``````!`A`````````0````$```"HR0,``````!@A`````````0``
+M``$```"HR0,``````"`A`````````0````$```"HR0,``````"@A````````
+M`0````$```"HR0,``````#`A`````````0````$```"HR0,``````#@A````
+M`````0````$```"HR0,``````$`A`````````0````$```"HR0,``````$@A
+M`````````0````$```"HR0,``````%`A`````````0````$```"HR0,`````
+M`%@A`````````0````$```"HR0,``````&`A`````````0````$```"HR0,`
+M`````&@A`````````0````$```"HR0,``````'`A`````````0````$```"H
+MR0,``````'@A`````````0````$```"HR0,``````(`A`````````0````$`
+M``"HR0,``````(@A`````````0````$```"HR0,``````)`A`````````0``
+M``$```"HR0,``````)@A`````````0````$```"HR0,``````*`A````````
+M`0````$```"HR0,``````*@A`````````0````$```"HR0,``````+`A````
+M`````0````$```"HR0,``````+@A`````````0````$```"HR0,``````,`A
+M`````````0````$```"HR0,``````,@A`````````0````$```"HR0,`````
+M`-`A`````````0````$```"HR0,``````-@A`````````0````$```"HR0,`
+M`````.`A`````````0````$```"HR0,``````.@A`````````0````$```"H
+MR0,``````/`A`````````0````$```!RR0,``````/@A`````````0````$`
+M``!WR0,````````B`````````0````$```!\R0,```````@B`````````0``
+M``$```"HR0,``````!`B`````````0````$```"HR0,``````!@B````````
+M`0````$```")R0,``````"`B`````````0````$```"HR0,``````"@B````
+M`````0````$```"HR0,``````#`B`````````0````$```"HR0,``````#@B
+M`````````0````$```"HR0,``````$`B`````````0````$```"HR0,`````
+M`$@B`````````0````$```"HR0,``````%`B`````````0````$```"HR0,`
+M`````%@B`````````0````$```"HR0,``````&`B`````````0````$```"H
+MR0,``````&@B`````````0````$```"HR0,``````'`B`````````0````$`
+M``"2R0,``````'@B`````````0````$```"7R0,``````(`B`````````0``
+M``$```"<R0,``````(@B`````````0````$```"BR0,``````)`B````````
+M`0````$````XR@,``````)@B`````````0````$```!#R@,``````*`B````
+M`````0````$```!#R@,``````*@B`````````0````$```!#R@,``````+`B
+M`````````0````$```!#R@,``````+@B`````````0````$```!#R@,`````
+M`,`B`````````0````$```!#R@,``````,@B`````````0````$```!#R@,`
+M`````-`B`````````0````$```!#R@,``````-@B`````````0````$```!#
+MR@,``````.`B`````````0````$```!#R@,``````.@B`````````0````$`
+M``!#R@,``````/`B`````````0````$```!#R@,``````/@B`````````0``
+M``$```!#R@,````````C`````````0````$```!#R@,```````@C````````
+M`0````$```!#R@,``````!`C`````````0````$```!#R@,``````!@C````
+M`````0````$```!#R@,``````"`C`````````0````$```!#R@,``````"@C
+M`````````0````$```!#R@,``````#`C`````````0````$```!#R@,`````
+M`#@C`````````0````$```!#R@,``````$`C`````````0````$```!#R@,`
+M`````$@C`````````0````$```!#R@,``````%`C`````````0````$```!#
+MR@,``````%@C`````````0````$```!#R@,``````&`C`````````0````$`
+M``!#R@,``````&@C`````````0````$```!#R@,``````'`C`````````0``
+M``$```!#R@,``````'@C`````````0````$```!#R@,``````(`C````````
+M`0````$```!#R@,``````(@C`````````0````$```!#R@,``````)`C````
+M`````0````$```!#R@,``````)@C`````````0````$```!#R@,``````*`C
+M`````````0````$```!#R@,``````*@C`````````0````$```!#R@,`````
+M`+`C`````````0````$````-R@,``````+@C`````````0````$```!#R@,`
+M`````,`C`````````0````$````-R@,``````,@C`````````0````$```!#
+MR@,``````-`C`````````0````$```!#R@,``````-@C`````````0````$`
+M``!#R@,``````.`C`````````0````$````-R@,``````.@C`````````0``
+M``$````-R@,``````/`C`````````0````$```!#R@,``````/@C````````
+M`0````$```!#R@,````````D`````````0````$```!#R@,```````@D````
+M`````0````$```!#R@,``````!`D`````````0````$```!#R@,``````!@D
+M`````````0````$```!#R@,``````"`D`````````0````$```!#R@,`````
+M`"@D`````````0````$```!#R@,``````#`D`````````0````$```!#R@,`
+M`````#@D`````````0````$```!#R@,``````$`D`````````0````$```!#
+MR@,``````$@D`````````0````$```!#R@,``````%`D`````````0````$`
+M``!#R@,``````%@D`````````0````$```!#R@,``````&`D`````````0``
+M``$```!#R@,``````&@D`````````0````$```!#R@,``````'`D````````
+M`0````$```!#R@,``````'@D`````````0````$````-R@,``````(`D````
+M`````0````$```!#R@,``````(@D`````````0````$```!#R@,``````)`D
+M`````````0````$```!#R@,``````)@D`````````0````$```!#R@,`````
+M`*`D`````````0````$```!#R@,``````*@D`````````0````$```!#R@,`
+M`````+`D`````````0````$```!#R@,``````+@D`````````0````$```!#
+MR@,``````,`D`````````0````$```!#R@,``````,@D`````````0````$`
+M``!#R@,``````-`D`````````0````$```!#R@,``````-@D`````````0``
+M``$```!#R@,``````.`D`````````0````$```!#R@,``````.@D````````
+M`0````$```!#R@,``````/`D`````````0````$````-R@,``````/@D````
+M`````0````$````-R@,````````E`````````0````$````-R@,```````@E
+M`````````0````$````-R@,``````!`E`````````0````$```!#R@,`````
+M`!@E`````````0````$```!#R@,``````"`E`````````0````$```!#R@,`
+M`````"@E`````````0````$```!#R@,``````#`E`````````0````$```!#
+MR@,``````#@E`````````0````$```!#R@,``````$`E`````````0````$`
+M``!#R@,``````$@E`````````0````$```!#R@,``````%`E`````````0``
+M``$```!#R@,``````%@E`````````0````$```!#R@,``````&`E````````
+M`0````$```!#R@,``````&@E`````````0````$```!#R@,``````'`E````
+M`````0````$```!#R@,``````'@E`````````0````$```!#R@,``````(`E
+M`````````0````$```!#R@,``````(@E`````````0````$```!#R@,`````
+M`)`E`````````0````$```!#R@,``````)@E`````````0````$```!#R@,`
+M`````*`E`````````0````$```!#R@,``````*@E`````````0````$```!#
+MR@,``````+`E`````````0````$```!#R@,``````+@E`````````0````$`
+M``!#R@,``````,`E`````````0````$```!#R@,``````,@E`````````0``
+M``$```!#R@,``````-`E`````````0````$```!#R@,``````-@E````````
+M`0````$```!#R@,``````.`E`````````0````$```!#R@,``````.@E````
+M`````0````$```!#R@,``````/`E`````````0````$```!#R@,``````/@E
+M`````````0````$```!#R@,````````F`````````0````$```!#R@,`````
+M``@F`````````0````$```!#R@,``````!`F`````````0````$```!#R@,`
+M`````!@F`````````0````$```!#R@,``````"`F`````````0````$```!#
+MR@,``````"@F`````````0````$```!#R@,``````#`F`````````0````$`
+M``!#R@,``````#@F`````````0````$```!#R@,``````$`F`````````0``
+M``$```!#R@,``````$@F`````````0````$```!#R@,``````%`F````````
+M`0````$```!#R@,``````%@F`````````0````$```!#R@,``````&`F````
+M`````0````$```!#R@,``````&@F`````````0````$````-R@,``````'`F
+M`````````0````$```!#R@,``````'@F`````````0````$```!#R@,`````
+M`(`F`````````0````$```!#R@,``````(@F`````````0````$```!#R@,`
+M`````)`F`````````0````$```!#R@,``````)@F`````````0````$```!#
+MR@,``````*`F`````````0````$```!#R@,``````*@F`````````0````$`
+M``!#R@,``````+`F`````````0````$````-R@,``````+@F`````````0``
+M``$```!#R@,``````,`F`````````0````$````-R@,``````,@F````````
+M`0````$```!#R@,``````-`F`````````0````$```!#R@,``````-@F````
+M`````0````$```!#R@,``````.`F`````````0````$````-R@,``````.@F
+M`````````0````$````-R@,``````/`F`````````0````$```!#R@,`````
+M`/@F`````````0````$```!#R@,````````G`````````0````$```!#R@,`
+M``````@G`````````0````$````-R@,``````!`G`````````0````$```!#
+MR@,``````!@G`````````0````$```!#R@,``````"`G`````````0````$`
+M``!#R@,``````"@G`````````0````$```!#R@,``````#`G`````````0``
+M``$```!#R@,``````#@G`````````0````$```!#R@,``````$`G````````
+M`0````$```!#R@,``````$@G`````````0````$```!#R@,``````%`G````
+M`````0````$```!#R@,``````%@G`````````0````$```!#R@,``````&`G
+M`````````0````$```!#R@,``````&@G`````````0````$```!#R@,`````
+M`'`G`````````0````$```!#R@,``````'@G`````````0````$```!#R@,`
+M`````(`G`````````0````$```!#R@,``````(@G`````````0````$```!#
+MR@,``````)`G`````````0````$```!#R@,``````)@G`````````0````$`
+M``!#R@,``````*`G`````````0````$```!#R@,``````*@G`````````0``
+M``$```!#R@,``````+`G`````````0````$````-R@,``````+@G````````
+M`0````$```!#R@,``````,`G`````````0````$````-R@,``````,@G````
+M`````0````$```!#R@,``````-`G`````````0````$```!#R@,``````-@G
+M`````````0````$```!#R@,``````.`G`````````0````$````-R@,`````
+M`.@G`````````0````$````-R@,``````/`G`````````0````$```#)T`,`
+M`````/@G`````````0````$```#ET`,````````H`````````0````$````!
+MT0,```````@H`````````0````$```!6T0,``````!`H`````````0````$`
+M``"]T0,``````!@H`````````0````$```#M!P0``````"`H`````````0``
+M``$```"9!P0``````"@H`````````0````$```"F!P0``````#`H````````
+M`0````$```#/!P0``````#@H`````````0````$```#M!P0``````$`H````
+M`````0````$```#C!P0``````$@H`````````0````$```#9!P0``````%`H
+M`````````0````$```#M!P0``````%@H`````````0````$```#M!P0`````
+M`&`H`````````0````$```#M!P0``````&@H`````````0````$```#M!P0`
+M`````'`H`````````0````$```#9!P0``````'@H`````````0````$```"'
+M5P0``````(`H`````````0````$```",5P0``````(@H`````````0````$`
+M``"25P0``````)`H`````````0````$```"75P0``````)@H`````````0``
+M``$```#%5P0``````*`H`````````0````$```#%5P0``````*@H````````
+M`0````$```#%5P0``````+`H`````````0````$```#%5P0``````+@H````
+M`````0````$```#%5P0``````,`H`````````0````$```#%5P0``````,@H
+M`````````0````$```#%5P0``````-`H`````````0````$```#%5P0`````
+M`-@H`````````0````$```#%5P0``````.`H`````````0````$```#%5P0`
+M`````.@H`````````0````$```#%5P0``````/`H`````````0````$```#%
+M5P0``````/@H`````````0````$```"<5P0````````I`````````0````$`
+M``"B5P0```````@I`````````0````$```"G5P0``````!`I`````````0``
+M``$```"L5P0``````!@I`````````0````$```"R5P0``````"`I````````
+M`0````$```"W5P0``````"@I`````````0````$```"\5P0``````#`I````
+M`````0````$```#"5P0``````#@I`````````0````$````BJP0``````$`I
+M`````````0````$```"`JP0``````$@I`````````0````$```"QJP0`````
+M`%`I`````````0````$```#-JP0``````%@I`````````0````$```#IJP0`
+M`````&`I`````````0````$````%K`0``````&@I`````````0````$````F
+MK`0``````'`I`````````0````$```",K`0``````'@I`````````0````$`
+M``"YK`0``````(`I`````````0````$```!<K00``````(@I`````````0``
+M``$````3K00``````)`I`````````0````$````OK00``````)@I````````
+M`0````$```!XK00``````*`I`````````0````$```!VK@0``````*@I````
+M`````0````$```"FK@0``````+`I`````````0````$```#,K@0``````+@I
+M`````````0````$`````KP0``````,`I`````````0````$````CKP0`````
+M`,@I`````````0````$```!&KP0``````-`I`````````0````$```!2KP0`
+M`````-@I`````````0````$```#;K`0``````.`I`````````0````$```#W
+MK`0``````.@I`````````0````$```!(K`0``````/`I`````````0````$`
+M``!JK`0``````/@I`````````0````$````3K00````````J`````````0``
+M``$```!9KP0```````@J`````````0````$```!`X00``````!`J````````
+M`0````$```!,VP0``````!@J`````````0````$```":VP0``````"`J````
+M`````0````$````3W`0``````"@J`````````0````$```"3W`0``````#`J
+M`````````0````$```##W`0``````#@J`````````0````$```#-W`0`````
+M`$`J`````````0````$```!`W00``````$@J`````````0````$```!*W00`
+M`````%`J`````````0````$````[X`0``````%@J`````````0````$````(
+MWP0``````&`J`````````0````$```#\WP0``````&@J`````````0````$`
+M``!`X00``````'`J`````````0````$```!`X00``````'@J`````````0``
+M``$```!`X00``````(`J`````````0````$```!`X00``````(@J````````
+M`0````$```!`X00``````)`J`````````0````$```!`X00``````)@J````
+M`````0````$```!`X00``````*`J`````````0````$```!`X00``````*@J
+M`````````0````$```!5W00``````+`J`````````0````$```!PW00`````
+M`+@J`````````0````$````"W00``````,`J`````````0````$````VW00`
+M`````,@J`````````0````$````(WP0``````-`J`````````0````$````W
+MX00``````-@J`````````0````$```!*XP0``````.`J`````````0````$`
+M``!VY@0``````.@J`````````0````$```#UY@0``````/`J`````````0``
+M``$````TYP0``````/@J`````````0````$```!8Z`0````````K````````
+M`0````$````4"04```````@K`````````0````$```!(!P4``````!`K````
+M`````0````$```!1!P4``````!@K`````````0````$```!:!P4``````"`K
+M`````````0````$```!E!P4``````"@K`````````0````$```"9!P4`````
+M`#`K`````````0````$```"P!P4``````#@K`````````0````$```"\!P4`
+M`````$`K`````````0````$```#Q!P4``````$@K`````````0````$````%
+M"`4``````%`K`````````0````$````9"`4``````%@K`````````0````$`
+M```M"`4``````&`K`````````0````$```!("`4``````&@K`````````0``
+M``$```!4"`4``````'`K`````````0````$```!@"`4``````'@K````````
+M`0````$````4"04``````(`K`````````0````$````4"04``````(@K````
+M`````0````$```!Q"`4``````)`K`````````0````$```#""`4``````)@K
+M`````````0````$````4"04``````*`K`````````0````$````4"04`````
+M`*@K`````````0````$```")"`4``````+`K`````````0````$```#W"`4`
+M`````+@K`````````0````$```!\!P4``````,`K`````````0````$```"(
+M!P4``````,@K`````````0````$````4"04``````-`K`````````0````$`
+M``#(!P4``````-@K`````````0````$```#4!P4``````.`K`````````0``
+M``$```#@!P4``````!`L`````````0````$```#R6P4``````!@L````````
+M`0````$```#R6P4``````"`L`````````0````$```"76P4``````"@L````
+M`````0````$```"G6P4``````#`L`````````0````$```#R6P4``````#@L
+M`````````0````$```#"6P4``````$`L`````````0````$```"`6P4`````
+M`$@L`````````0````$```"W6P4``````%`L`````````0````$```#26P4`
+M`````%@L`````````0````$```#B6P4``````&`L`````````0````$```"T
+MBP4``````&@L`````````0````$```#@BP4``````'`L`````````0````$`
+M``!8C`4``````'@L`````````0````$```!8C`4``````(`L`````````0``
+M``$```!8C`4``````(@L`````````0````$```!8C`4``````)`L````````
+M`0````$````(C`4``````)@L`````````0````$````PC`4``````*`L````
+M`````0````$```!8C`4``````*@L`````````0````$```!PC`4``````+`L
+M`````````0````$```#(EP4``````+@L`````````0````$```#(EP4`````
+M`,`L`````````0````$```!;EP4``````,@L`````````0````$```!@EP4`
+M`````-`L`````````0````$```#(EP4``````-@L`````````0````$```#(
+MEP4``````.`L`````````0````$```#(EP4``````.@L`````````0````$`
+M``#(EP4``````/`L`````````0````$```#(EP4``````/@L`````````0``
+M``$```#(EP4````````M`````````0````$```#(EP4```````@M````````
+M`0````$```#(EP4``````!`M`````````0````$```#(EP4``````!@M````
+M`````0````$```#(EP4``````"`M`````````0````$```#(EP4``````"@M
+M`````````0````$```#(EP4``````#`M`````````0````$```!EEP4`````
+M`#@M`````````0````$```!JEP4``````$`M`````````0````$```!REP4`
+M`````$@M`````````0````$```!WEP4``````%`M`````````0````$```!\
+MEP4``````%@M`````````0````$```""EP4``````&`M`````````0````$`
+M``"'EP4``````&@M`````````0````$```",EP4``````'`M`````````0``
+M``$```#(EP4``````'@M`````````0````$```#(EP4``````(`M````````
+M`0````$```#(EP4``````(@M`````````0````$```#(EP4``````)`M````
+M`````0````$```#(EP4``````)@M`````````0````$```#(EP4``````*`M
+M`````````0````$```#(EP4``````*@M`````````0````$```#(EP4`````
+M`+`M`````````0````$```#(EP4``````+@M`````````0````$```#(EP4`
+M`````,`M`````````0````$```#(EP4``````,@M`````````0````$```#(
+MEP4``````-`M`````````0````$```#(EP4``````-@M`````````0````$`
+M``#(EP4``````.`M`````````0````$```#(EP4``````.@M`````````0``
+M``$```#(EP4``````/`M`````````0````$```#(EP4``````/@M````````
+M`0````$```#(EP4````````N`````````0````$```#(EP4```````@N````
+M`````0````$```#(EP4``````!`N`````````0````$```#(EP4``````!@N
+M`````````0````$```#(EP4``````"`N`````````0````$```#(EP4`````
+M`"@N`````````0````$```#(EP4``````#`N`````````0````$```#(EP4`
+M`````#@N`````````0````$```#(EP4``````$`N`````````0````$```#(
+MEP4``````$@N`````````0````$```#(EP4``````%`N`````````0````$`
+M``#(EP4``````%@N`````````0````$```#(EP4``````&`N`````````0``
+M``$```#(EP4``````&@N`````````0````$```#(EP4``````'`N````````
+M`0````$```#(EP4``````'@N`````````0````$```#(EP4``````(`N````
+M`````0````$```#(EP4``````(@N`````````0````$```#(EP4``````)`N
+M`````````0````$```#(EP4``````)@N`````````0````$```#(EP4`````
+M`*`N`````````0````$```#(EP4``````*@N`````````0````$```#(EP4`
+M`````+`N`````````0````$```#(EP4``````+@N`````````0````$```#(
+MEP4``````,`N`````````0````$```#(EP4``````,@N`````````0````$`
+M``#(EP4``````-`N`````````0````$```#(EP4``````-@N`````````0``
+M``$```#(EP4``````.`N`````````0````$```#(EP4``````.@N````````
+M`0````$```#(EP4``````/`N`````````0````$```#(EP4``````/@N````
+M`````0````$```#(EP4````````O`````````0````$```#(EP4```````@O
+M`````````0````$```#(EP4``````!`O`````````0````$```#(EP4`````
+M`!@O`````````0````$```#(EP4``````"`O`````````0````$```#(EP4`
+M`````"@O`````````0````$```#(EP4``````#`O`````````0````$```#(
+MEP4``````#@O`````````0````$```#(EP4``````$`O`````````0````$`
+M``#(EP4``````$@O`````````0````$```#(EP4``````%`O`````````0``
+M``$```#(EP4``````%@O`````````0````$```#(EP4``````&`O````````
+M`0````$```#(EP4``````&@O`````````0````$```#(EP4``````'`O````
+M`````0````$```#(EP4``````'@O`````````0````$```#(EP4``````(`O
+M`````````0````$```#(EP4``````(@O`````````0````$```#(EP4`````
+M`)`O`````````0````$```#(EP4``````)@O`````````0````$```#(EP4`
+M`````*`O`````````0````$```#(EP4``````*@O`````````0````$```#(
+MEP4``````+`O`````````0````$```#(EP4``````+@O`````````0````$`
+M``#(EP4``````,`O`````````0````$```#(EP4``````,@O`````````0``
+M``$```#(EP4``````-`O`````````0````$```#(EP4``````-@O````````
+M`0````$```#(EP4``````.`O`````````0````$```#(EP4``````.@O````
+M`````0````$```#(EP4``````/`O`````````0````$```#(EP4``````/@O
+M`````````0````$```#(EP4````````P`````````0````$```#(EP4`````
+M``@P`````````0````$```#(EP4``````!`P`````````0````$```#(EP4`
+M`````!@P`````````0````$```#(EP4``````"`P`````````0````$```#(
+MEP4``````"@P`````````0````$```#(EP4``````#`P`````````0````$`
+M``#(EP4``````#@P`````````0````$```#(EP4``````$`P`````````0``
+M``$```#(EP4``````$@P`````````0````$```#(EP4``````%`P````````
+M`0````$```#(EP4``````%@P`````````0````$```#(EP4``````&`P````
+M`````0````$```#(EP4``````&@P`````````0````$```#(EP4``````'`P
+M`````````0````$```#(EP4``````'@P`````````0````$```#(EP4`````
+M`(`P`````````0````$```#(EP4``````(@P`````````0````$```#(EP4`
+M`````)`P`````````0````$```#(EP4``````)@P`````````0````$```#(
+MEP4``````*`P`````````0````$```#(EP4``````*@P`````````0````$`
+M``#(EP4``````+`P`````````0````$```"2EP4``````+@P`````````0``
+M``$```"7EP4``````,`P`````````0````$```"<EP4``````,@P````````
+M`0````$```#(EP4``````-`P`````````0````$```#(EP4``````-@P````
+M`````0````$```"IEP4``````.`P`````````0````$```#(EP4``````.@P
+M`````````0````$```#(EP4``````/`P`````````0````$```#(EP4`````
+M`/@P`````````0````$```#(EP4````````Q`````````0````$```#(EP4`
+M``````@Q`````````0````$```#(EP4``````!`Q`````````0````$```#(
+MEP4``````!@Q`````````0````$```#(EP4``````"`Q`````````0````$`
+M``#(EP4``````"@Q`````````0````$```#(EP4``````#`Q`````````0``
+M``$```"REP4``````#@Q`````````0````$```"WEP4``````$`Q````````
+M`0````$```"\EP4``````$@Q`````````0````$```#"EP4``````%`Q````
+M`````0````$```!8F`4``````%@Q`````````0````$```!CF`4``````&`Q
+M`````````0````$```!CF`4``````&@Q`````````0````$```!CF`4`````
+M`'`Q`````````0````$```!CF`4``````'@Q`````````0````$```!CF`4`
+M`````(`Q`````````0````$```!CF`4``````(@Q`````````0````$```!C
+MF`4``````)`Q`````````0````$```!CF`4``````)@Q`````````0````$`
+M``!CF`4``````*`Q`````````0````$```!CF`4``````*@Q`````````0``
+M``$```!CF`4``````+`Q`````````0````$```!CF`4``````+@Q````````
+M`0````$```!CF`4``````,`Q`````````0````$```!CF`4``````,@Q````
+M`````0````$```!CF`4``````-`Q`````````0````$```!CF`4``````-@Q
+M`````````0````$```!CF`4``````.`Q`````````0````$```!CF`4`````
+M`.@Q`````````0````$```!CF`4``````/`Q`````````0````$```!CF`4`
+M`````/@Q`````````0````$```!CF`4````````R`````````0````$```!C
+MF`4```````@R`````````0````$```!CF`4``````!`R`````````0````$`
+M``!CF`4``````!@R`````````0````$```!CF`4``````"`R`````````0``
+M``$```!CF`4``````"@R`````````0````$```!CF`4``````#`R````````
+M`0````$```!CF`4``````#@R`````````0````$```!CF`4``````$`R````
+M`````0````$```!CF`4``````$@R`````````0````$```!CF`4``````%`R
+M`````````0````$```!CF`4``````%@R`````````0````$```!CF`4`````
+M`&`R`````````0````$```!CF`4``````&@R`````````0````$```!CF`4`
+M`````'`R`````````0````$````MF`4``````'@R`````````0````$```!C
+MF`4``````(`R`````````0````$````MF`4``````(@R`````````0````$`
+M``!CF`4``````)`R`````````0````$```!CF`4``````)@R`````````0``
+M``$```!CF`4``````*`R`````````0````$````MF`4``````*@R````````
+M`0````$````MF`4``````+`R`````````0````$```!CF`4``````+@R````
+M`````0````$```!CF`4``````,`R`````````0````$```!CF`4``````,@R
+M`````````0````$```!CF`4``````-`R`````````0````$```!CF`4`````
+M`-@R`````````0````$```!CF`4``````.`R`````````0````$```!CF`4`
+M`````.@R`````````0````$```!CF`4``````/`R`````````0````$```!C
+MF`4``````/@R`````````0````$```!CF`4````````S`````````0````$`
+M``!CF`4```````@S`````````0````$```!CF`4``````!`S`````````0``
+M``$```!CF`4``````!@S`````````0````$```!CF`4``````"`S````````
+M`0````$```!CF`4``````"@S`````````0````$```!CF`4``````#`S````
+M`````0````$```!CF`4``````#@S`````````0````$````MF`4``````$`S
+M`````````0````$```!CF`4``````$@S`````````0````$```!CF`4`````
+M`%`S`````````0````$```!CF`4``````%@S`````````0````$```!CF`4`
+M`````&`S`````````0````$```!CF`4``````&@S`````````0````$```!C
+MF`4``````'`S`````````0````$```!CF`4``````'@S`````````0````$`
+M``!CF`4``````(`S`````````0````$```!CF`4``````(@S`````````0``
+M``$```!CF`4``````)`S`````````0````$```!CF`4``````)@S````````
+M`0````$```!CF`4``````*`S`````````0````$```!CF`4``````*@S````
+M`````0````$```!CF`4``````+`S`````````0````$````MF`4``````+@S
+M`````````0````$````MF`4``````,`S`````````0````$````MF`4`````
+M`,@S`````````0````$````MF`4``````-`S`````````0````$```!CF`4`
+M`````-@S`````````0````$```!CF`4``````.`S`````````0````$```!C
+MF`4``````.@S`````````0````$```!CF`4``````/`S`````````0````$`
+M``!CF`4``````/@S`````````0````$```!CF`4````````T`````````0``
+M``$```!CF`4```````@T`````````0````$```!CF`4``````!`T````````
+M`0````$```!CF`4``````!@T`````````0````$```!CF`4``````"`T````
+M`````0````$```!CF`4``````"@T`````````0````$```!CF`4``````#`T
+M`````````0````$```!CF`4``````#@T`````````0````$```!CF`4`````
+M`$`T`````````0````$```!CF`4``````$@T`````````0````$```!CF`4`
+M`````%`T`````````0````$```!CF`4``````%@T`````````0````$```!C
+MF`4``````&`T`````````0````$```!CF`4``````&@T`````````0````$`
+M``!CF`4``````'`T`````````0````$```!CF`4``````'@T`````````0``
+M``$```!CF`4``````(`T`````````0````$```!CF`4``````(@T````````
+M`0````$```!CF`4``````)`T`````````0````$```!CF`4``````)@T````
+M`````0````$```!CF`4``````*`T`````````0````$```!CF`4``````*@T
+M`````````0````$```!CF`4``````+`T`````````0````$```!CF`4`````
+M`+@T`````````0````$```!CF`4``````,`T`````````0````$```!CF`4`
+M`````,@T`````````0````$```!CF`4``````-`T`````````0````$```!C
+MF`4``````-@T`````````0````$```!CF`4``````.`T`````````0````$`
+M``!CF`4``````.@T`````````0````$```!CF`4``````/`T`````````0``
+M``$```!CF`4``````/@T`````````0````$```!CF`4````````U````````
+M`0````$```!CF`4```````@U`````````0````$```!CF`4``````!`U````
+M`````0````$```!CF`4``````!@U`````````0````$```!CF`4``````"`U
+M`````````0````$```!CF`4``````"@U`````````0````$````MF`4`````
+M`#`U`````````0````$```!CF`4``````#@U`````````0````$```!CF`4`
+M`````$`U`````````0````$```!CF`4``````$@U`````````0````$```!C
+MF`4``````%`U`````````0````$```!CF`4``````%@U`````````0````$`
+M``!CF`4``````&`U`````````0````$```!CF`4``````&@U`````````0``
+M``$```!CF`4``````'`U`````````0````$````MF`4``````'@U````````
+M`0````$```!CF`4``````(`U`````````0````$````MF`4``````(@U````
+M`````0````$```!CF`4``````)`U`````````0````$```!CF`4``````)@U
+M`````````0````$```!CF`4``````*`U`````````0````$````MF`4`````
+M`*@U`````````0````$````MF`4``````+`U`````````0````$```!CF`4`
+M`````+@U`````````0````$```!CF`4``````,`U`````````0````$```!C
+MF`4``````,@U`````````0````$````MF`4``````-`U`````````0````$`
+M``!CF`4``````-@U`````````0````$```!CF`4``````.`U`````````0``
+M``$```!CF`4``````.@U`````````0````$```!CF`4``````/`U````````
+M`0````$```!CF`4``````/@U`````````0````$```!CF`4````````V````
+M`````0````$```!CF`4```````@V`````````0````$```!CF`4``````!`V
+M`````````0````$```!CF`4``````!@V`````````0````$```!CF`4`````
+M`"`V`````````0````$```!CF`4``````"@V`````````0````$```!CF`4`
+M`````#`V`````````0````$```!CF`4``````#@V`````````0````$```!C
+MF`4``````$`V`````````0````$```!CF`4``````$@V`````````0````$`
+M``!CF`4``````%`V`````````0````$```!CF`4``````%@V`````````0``
+M``$```!CF`4``````&`V`````````0````$```!CF`4``````&@V````````
+M`0````$```!CF`4``````'`V`````````0````$````MF`4``````'@V````
+M`````0````$```!CF`4``````(`V`````````0````$````MF`4``````(@V
+M`````````0````$```!CF`4``````)`V`````````0````$```!CF`4`````
+M`)@V`````````0````$```!CF`4``````*`V`````````0````$````MF`4`
+M`````*@V`````````0````$````MF`4``````+`V`````````0````$```#I
+MG@4``````+@V`````````0````$````%GP4``````,`V`````````0````$`
+M```AGP4``````,@V`````````0````$```!VGP4``````-`V`````````0``
+M``$```#=GP4``````-@V`````````0````$````-U@4``````.`V````````
+M`0````$```"YU04``````.@V`````````0````$```#&U04``````/`V````
+M`````0````$```#OU04``````/@V`````````0````$````-U@4````````W
+M`````````0````$````#U@4```````@W`````````0````$```#YU04`````
+M`!`W`````````0````$````-U@4``````!@W`````````0````$````-U@4`
+M`````"`W`````````0````$````-U@4``````"@W`````````0````$````-
+MU@4``````#`W`````````0````$```#YU04``````#@W`````````0````$`
+M``"G)08``````$`W`````````0````$```"L)08``````$@W`````````0``
+M``$```"R)08``````%`W`````````0````$```"W)08``````%@W````````
+M`0````$```#E)08``````&`W`````````0````$```#E)08``````&@W````
+M`````0````$```#E)08``````'`W`````````0````$```#E)08``````'@W
+M`````````0````$```#E)08``````(`W`````````0````$```#E)08`````
+M`(@W`````````0````$```#E)08``````)`W`````````0````$```#E)08`
+M`````)@W`````````0````$```#E)08``````*`W`````````0````$```#E
+M)08``````*@W`````````0````$```#E)08``````+`W`````````0````$`
+M``#E)08``````+@W`````````0````$```"\)08``````,`W`````````0``
+M``$```#")08``````,@W`````````0````$```#')08``````-`W````````
+M`0````$```#,)08``````-@W`````````0````$```#2)08``````.`W````
+M`````0````$```#7)08``````.@W`````````0````$```#<)08``````/`W
+M`````````0````$```#B)08``````/@W`````````0````$```!">08`````
+M```X`````````0````$```"@>08```````@X`````````0````$```#1>08`
+M`````!`X`````````0````$```#M>08``````!@X`````````0````$````)
+M>@8``````"`X`````````0````$````E>@8``````"@X`````````0````$`
+M``!&>@8``````#`X`````````0````$```"L>@8``````#@X`````````0``
+M``$```#9>@8``````$`X`````````0````$```!\>P8``````$@X````````
+M`0````$````S>P8``````%`X`````````0````$```!/>P8``````%@X````
+M`````0````$```"8>P8``````&`X`````````0````$```"6?`8``````&@X
+M`````````0````$```#&?`8``````'`X`````````0````$```#L?`8`````
+M`'@X`````````0````$````@?08``````(`X`````````0````$```!#?08`
+M`````(@X`````````0````$```!F?08``````)`X`````````0````$```!R
+M?08``````)@X`````````0````$```#[>@8``````*`X`````````0````$`
+M```7>P8``````*@X`````````0````$```!H>@8``````+`X`````````0``
+M``$```"*>@8``````+@X`````````0````$````S>P8``````,`X````````
+M`0````$```!Y?08``````,@X`````````0````$```!@KP8``````-`X````
+M`````0````$```!LJ08``````-@X`````````0````$```"ZJ08``````.`X
+M`````````0````$````SJ@8``````.@X`````````0````$```"SJ@8`````
+M`/`X`````````0````$```#CJ@8``````/@X`````````0````$```#MJ@8`
+M```````Y`````````0````$```!@JP8```````@Y`````````0````$```!J
+MJP8``````!`Y`````````0````$```!;K@8``````!@Y`````````0````$`
+M```HK08``````"`Y`````````0````$````<K@8``````"@Y`````````0``
+M``$```!@KP8``````#`Y`````````0````$```!@KP8``````#@Y````````
+M`0````$```!@KP8``````$`Y`````````0````$```!@KP8``````$@Y````
+M`````0````$```!@KP8``````%`Y`````````0````$```!@KP8``````%@Y
+M`````````0````$```!@KP8``````&`Y`````````0````$```!@KP8`````
+M`&@Y`````````0````$```!UJP8``````'`Y`````````0````$```"0JP8`
+M`````'@Y`````````0````$````BJP8``````(`Y`````````0````$```!6
+MJP8``````(@Y`````````0````$````HK08``````)`Y`````````0````$`
+M``!7KP8``````)@Y`````````0````$```!JL08``````*`Y`````````0``
+M``$```"6M`8``````*@Y`````````0````$````5M08``````+`Y````````
+M`0````$```!4M08``````+@Y`````````0````$```!XM@8``````,`Y````
+M`````0````$````TUP8``````,@Y`````````0````$```!HU08``````-`Y
+M`````````0````$```!QU08``````-@Y`````````0````$```!ZU08`````
+M`.`Y`````````0````$```"%U08``````.@Y`````````0````$```"YU08`
+M`````/`Y`````````0````$```#0U08``````/@Y`````````0````$```#<
+MU08````````Z`````````0````$````1U@8```````@Z`````````0````$`
+M```EU@8``````!`Z`````````0````$````YU@8``````!@Z`````````0``
+M``$```!-U@8``````"`Z`````````0````$```!HU@8``````"@Z````````
+M`0````$```!TU@8``````#`Z`````````0````$```"`U@8``````#@Z````
+M`````0````$````TUP8``````$`Z`````````0````$````TUP8``````$@Z
+M`````````0````$```"1U@8``````%`Z`````````0````$```#BU@8`````
+M`%@Z`````````0````$````TUP8``````&`Z`````````0````$````TUP8`
+M`````&@Z`````````0````$```"IU@8``````'`Z`````````0````$````7
+MUP8``````'@Z`````````0````$```"<U08``````(`Z`````````0````$`
+M``"HU08``````(@Z`````````0````$````TUP8``````)`Z`````````0``
+M``$```#HU08``````)@Z`````````0````$```#TU08``````*`Z````````
+M`0````$`````U@8``````.@Z`````````0````$````R*`<``````/`Z````
+M`````0````$````R*`<``````/@Z`````````0````$```#7)P<````````[
+M`````````0````$```#G)P<```````@[`````````0````$````R*`<`````
+M`!`[`````````0````$````"*`<``````!@[`````````0````$```#`)P<`
+M`````"`[`````````0````$```#W)P<``````"@[`````````0````$````2
+M*`<``````#`[`````````0````$````B*`<``````#@[`````````0````$`
+M``#09@<``````$`[`````````0````$````R90<``````$@[`````````0``
+M``$```!09@<``````%`[`````````0````$```"P9@<``````%@[````````
+M`0````$````R90<``````&`[`````````0````$````R90<``````&@[````
+M`````0````$````R90<``````'`[`````````0````$````R90<``````'@[
+M`````````0````$```#09@<``````(`[`````````0````$```"/90<`````
+M`(@[`````````0````$```#09@<``````)`[`````````0````$```#09@<`
+M`````)@[`````````0````$```">90<``````*`[`````````0````$```#L
+M90<``````*@[`````````0````$```#X90<``````+`[`````````0````$`
+M```K9@<``````,`[`````````0````$```"&=`<``````,@[`````````0``
+M``$```"-=`<``````-`[`````````0````$```"4=`<``````-@[````````
+M`0````$```"I=`<``````.`[`````````0````$```"R=`<``````.@[````
+M`````0````$```";=`<``````/`[`````````0````$```"B=`<``````/@[
+M`````````0````$```"Y=`<````````\`````````0````$```#2C@<`````
+M``@\`````````0````$```"8C0<``````!`\`````````0````$````BC@<`
+M`````!@\`````````0````$```!?C@<``````"`\`````````0````$```"(
+MC@<``````"@\`````````0````$```!?C@<``````#`\`````````0````$`
+M``#2C@<``````#@\`````````0````$```"/C0<``````$`\`````````0``
+M``$```#[H0<``````$@\`````````0````$```"7H0<``````%`\````````
+M`0````$```#3H0<``````%@\`````````0````$```#%H0<``````&`\````
+M`````0````$```#,H0<``````&@\`````````0````$```"NH0<``````'`\
+M`````````0````$```#[H0<``````'@\`````````0````$```"0H0<`````
+M`(`\`````````0````$```#TH0<``````(@\`````````0````$```!RM@<`
+M`````)`\`````````0````$````WL`<``````)@\`````````0````$```"%
+ML0<``````*`\`````````0````$```#RL0<``````*@\`````````0````$`
+M``"KL@<``````+`\`````````0````$```#PLP<``````+@\`````````0``
+M``$````BM`<``````,`\`````````0````$````NM`<``````,@\````````
+M`0````$```!"M0<``````-`\`````````0````$```#:M0<``````-@\````
+M`````0````$````)M`<``````.`\`````````0````$```!RM@<``````.@\
+M`````````0````$````HKP<``````/`\`````````0````$````SKP<`````
+M`/@\`````````0````$```#@KP<````````]`````````0````$````?Q@<`
+M``````@]`````````0````$```!@Q@<``````!`]`````````0````$```"=
+MQ@<``````!@]`````````0````$```#:Q@<``````"`]`````````0````$`
+M```9QP<``````"@]`````````0````$```!4QP<``````#`]`````````0``
+M``$```!D30@``````#@]`````````0````$```!@3@@``````$`]````````
+M`0````$```!D30@``````$@]`````````0````$````Q3@@``````%`]````
+M`````0````$````Q3@@``````%@]`````````0````$````Q3@@``````&`]
+M`````````0````$```"<CP@``````&@]`````````0````$```##C@@`````
+M`'`]`````````0````$```##C@@``````'@]`````````0````$```#5C@@`
+M`````(`]`````````0````$```#EC@@``````(@]`````````0````$```#U
+MC@@``````)`]`````````0````$````%CP@``````)@]`````````0````$`
+M``#"CP@``````*`]`````````0````$```"SCP@``````*@]`````````0``
+M``$```!>D0@``````+`]`````````0````$```"2D`@``````+@]````````
+M`0````$```"2D`@``````,`]`````````0````$```"BD`@``````,@]````
+M`````0````$```"UD`@``````-`]`````````0````$```#%D`@``````-@]
+M`````````0````$```#5D`@``````.`]`````````0````$```""D0@`````
+M`.@]`````````0````$```!UD0@``````,`%`````````0````8```"3````
+M`````-@%`````````0````$````P?@$``````.`%`````````0````$```!@
+M@0$``````.@%`````````0````$```"P@@$``````/`%`````````0````$`
+M``#@@@$``````/@%`````````0````$```#@B`$````````&`````````0``
+M``$```#PA0$```````@&`````````0````$````@?@$``````!`&````````
+M`0````$```#0B`$``````!@&`````````0````$```"0A@$``````"`&````
+M`````0````$```#`@@$``````"@&`````````0````$```"0D0$``````#`&
+M`````````0````$````PH0$``````#@&`````````0````$```#@L@$`````
+M`$`&`````````0```+@``````````````$@&`````````0````$```"`E`$`
+M`````%`&`````````0````$```#0@@$``````%@&`````````0````$```"@
+ME@$``````&`&`````````0````$````@G0$``````&@&`````````0````$`
+M```0H0$``````'`&`````````0````$```#`H`$``````'@&`````````0``
+M``$```!@M0$``````(`&`````````0````$```#@O@$``````(@&````````
+M`0````$```"`OP$``````)`&`````````0````$```!`P`$``````)@&````
+M`````0````$```!@P`$``````*`&`````````0````$````0QP$``````*@&
+M`````````0````$```"`P`$``````+`&`````````0````$```!PAP$`````
+M`+@&`````````0````D!`````````````,@&`````````0````$```!`H0$`
+M`````-`&`````````0````$````@H@$``````-@&`````````0````$```!P
+MI0$``````.`&`````````0````$`````K`$``````.@&`````````0```.H`
+M`````````````$`,`````````0````8````K`0```````%@,`````````0``
+M``$```"`3`,``````&`,`````````0````$```#P3P,``````&@,````````
+M`0````$```!`40,``````'`,`````````0````$```!P40,``````'@,````
+M`````0````$```!P5P,``````(`,`````````0````$```"`5`,``````(@,
+M`````````0````$```#02P,``````)`,`````````0````$```!@5P,`````
+M`)@,`````````0````$````@50,``````*`,`````````0````$```!040,`
+M`````*@,`````````0````$````@8`,``````+`,`````````0````$```#`
+M;P,``````+@,`````````0````$```!P@0,``````,`,`````````0```-L!
+M`````````````,@,`````````0````$````08P,``````-`,`````````0``
+M``$```!@40,``````-@,`````````0````$````P90,``````.`,````````
+M`0````$```"P:P,``````.@,`````````0````$```"@;P,``````/`,````
+M`````0````$```!0;P,``````/@,`````````0````$```#`@P,````````-
+M`````````0````$```!`C0,```````@-`````````0````$```#@C0,`````
+M`!`-`````````0````$```"@C@,``````!@-`````````0````$```#`C@,`
+M`````"`-`````````0````$```!PE0,``````"@-`````````0````$```#@
+MC@,``````#`-`````````0````$`````5@,``````#@-`````````0```$\!
+M`````````````$`-`````````0````$```!03`,``````$@-`````````0``
+M``$```#0;P,``````%`-`````````0````$```"P<`,``````%@-````````
+M`0````$`````=`,``````&`-`````````0````$```"0>@,``````&@-````
+M`````0```'H!`````````````,`2`````````0````8```##`0```````-@2
+M`````````0````$```#@&@4``````.`2`````````0````$````0'@4`````
+M`.@2`````````0````$```!@'P4``````/`2`````````0````$```"0'P4`
+M`````/@2`````````0````$```"0)04````````3`````````0````$```"@
+M(@4```````@3`````````0````$````P&@4``````!`3`````````0````$`
+M``"`)04``````!@3`````````0````$```!`(P4``````"`3`````````0``
+M``$```!P'P4``````"@3`````````0````$```!`+@4``````#`3````````
+M`0````$```#@/04``````#@3`````````0````$```"03P4``````$`3````
+M`````0```*$"`````````````$@3`````````0````$````P,04``````%`3
+M`````````0````$```"`'P4``````%@3`````````0````$```!0,P4`````
+M`&`3`````````0````$```#0.04``````&@3`````````0````$```#`/04`
+M`````'`3`````````0````$```!P/04``````'@3`````````0````$```#@
+M404``````(`3`````````0````$```!@6P4``````(@3`````````0````$`
+M````7`4``````)`3`````````0````$```#`7`4``````)@3`````````0``
+M``$```#@7`4``````*`3`````````0````$```"08P4``````*@3````````
+M`0````$`````704``````+`3`````````0````$````@)`4``````+@3````
+M`````0```-`"`````````````,`3`````````0````$```"P&@4``````,@3
+M`````````0````$```#P/04``````-`3`````````0````$```#0/@4`````
+M`-@3`````````0````$````@0@4``````.`3`````````0````$```"P2`4`
+M`````.@3`````````0```-0"`````````````&`9`````````0````8```!;
+M`@```````'@9`````````0````$````@YP8``````(`9`````````0````$`
+M``!0Z@8``````(@9`````````0````$```"@ZP8``````)`9`````````0``
+M``$```#0ZP8``````)@9`````````0````$```#0\08``````*`9````````
+M`0````$```#@[@8``````*@9`````````0````$```!PY@8``````+`9````
+M`````0````$```#`\08``````+@9`````````0````$```"`[P8``````,`9
+M`````````0````$```"PZP8``````,@9`````````0````$```"`^@8`````
+M`-`9`````````0````$````@"@<``````-@9`````````0````$```#0&P<`
+M`````.`9`````````0```+D#`````````````.@9`````````0````$```!P
+M_08``````/`9`````````0````$```#`ZP8``````/@9`````````0````$`
+M``"0_P8````````:`````````0````$````0!@<```````@:`````````0``
+M``$`````"@<``````!`:`````````0````$```"P"0<``````!@:````````
+M`0````$````@'@<``````"`:`````````0````$```"@)P<``````"@:````
+M`````0````$```!`*`<``````#`:`````````0````$`````*0<``````#@:
+M`````````0````$````@*0<``````$`:`````````0````$```#0+P<`````
+M`$@:`````````0````$```!`*0<``````%`:`````````0````$```!@\`8`
+M`````%@:`````````0```'@#`````````````&`:`````````0````$```#P
+MY@8``````&@:`````````0````$````P"@<``````'`:`````````0````$`
+M```0"P<``````'@:`````````0````$```!@#@<``````(`:`````````0``
+M``$```#P%`<``````(@:`````````0```%8#`````````````.`:````````
+M`0````$```"P9`<``````.@:`````````0````$````P30<``````/`:````
+M`````0````$```"@1P<```````@;`````````0````$````P1@<``````!`;
+M`````````0````$```"`1@<``````!@;`````````0````$```!`3@<`````
+M`$@;`````````0````$```#PY@<``````%@;`````````0````$````0YP<`
+M`````'`;`````````0````$```!0ZP<``````(`;`````````0````$```!P
+MZP<``````)@;`````````0````$```#`ZP<``````*@;`````````0````$`
+M``#@ZP<``````,`;`````````0````$```"@[`<``````-`;`````````0``
+M``$```#`[`<``````.@;`````````0````$````P[0<``````/@;````````
+M`0````$```!0[0<``````!`<`````````0````$```"0\0<``````"`<````
+M`````0````$```#`\0<``````#@<`````````0````$```"P\@<``````$@<
+M`````````0````$```#P\@<``````&`<`````````0````$```!@^0<`````
+M`&@<`````````0````$````@^@<``````'`<`````````0````$```!@^@<`
+M`````(@<`````````0````$````0`@@``````)`<`````````0````$```#`
+M`@@``````)@<`````````0````$````@`P@``````+`<`````````0````$`
+M``!@`P@``````,`<`````````0````$```"``P@``````-@<`````````0``
+M``$```#``P@``````.@<`````````0````$````P!`@````````=````````
+M`0````$````P"P@```````@=`````````0````$```"P"P@``````!`=````
+M`````0````$```#0"P@``````"@=`````````0````$````0#`@``````#`=
+M`````````0````$```"0#`@``````#@=`````````0````$```"P#`@`````
+M`%`=`````````0````$```#P#`@``````%@=`````````0````$```#P#0@`
+M`````&`=`````````0````$```!`#@@``````'@=`````````0````$```"`
+M#@@``````(`=`````````0````$`````#P@``````(@=`````````0````$`
+M``"@#P@``````*`=`````````0````$```#@#P@``````*@=`````````0``
+M``$```!@$`@``````+`=`````````0````$```"`$`@``````,@=````````
+M`0````$```"0$0@``````-@=`````````0````$````@$@@``````/`=````
+M`````0````$```!@$@@````````>`````````0````$```"`$@@``````!@>
+M`````````0````$```#`$@@``````"@>`````````0````$```#@$@@`````
+M`$`>`````````0````$````@$P@``````%`>`````````0````$```!`$P@`
+M`````&@>`````````0````$```#0$P@``````'@>`````````0````$```"0
+M%`@``````)`>`````````0````$```"P%`@``````*`>`````````0````$`
+M``!P%0@``````+@>`````````0````$```"`!`@``````,@>`````````0``
+M``$```#P!`@``````.`>`````````0````$```!`!0@``````/`>````````
+M`0````$```"P!0@```````@?`````````0````$```"0%0@``````!@?````
+M`````0````$`````%@@``````#`?`````````0````$```!`%@@``````$`?
+M`````````0````$`````%P@``````%@?`````````0````$`````&`@`````
+M`&`?`````````0````$```#`&`@``````&@?`````````0````$```!`&0@`
+M`````(`?`````````0````$```!@_`<``````(@?`````````0````$````@
+M_0<``````)`?`````````0````$```!@_0<``````*@?`````````0````$`
+M``!0\P<``````+@?`````````0````$```"0\P<``````-`?`````````0``
+M``$```#`$`@``````.`?`````````0````$```!0$0@``````/@?````````
+M`0````$`````!@@```````@@`````````0````$```!P!@@``````"`@````
+M`````0````$```#`!@@``````#`@`````````0````$````P!P@``````$@@
+M`````````0````$```"`!P@``````%@@`````````0````$```#P!P@`````
+M`'`@`````````0````$```#P_@<``````'@@`````````0````$```#@_P<`
+M`````(`@`````````0````$````P``@``````)@@`````````0````$```!`
+M"`@``````*@@`````````0````$```#P"`@``````,`@`````````0````$`
+M``"`&0@``````,@@`````````0````$```#P&0@``````-`@`````````0``
+M``$````@&@@``````.@@`````````0````$```!@]0<``````/@@````````
+M`0````$```#@]0<``````!`A`````````0````$`````^`<``````!@A````
+M`````0````$```#@^`<``````"`A`````````0````$````@^0<``````#@A
+M`````````0````$```#P\P<``````$@A`````````0````$````P]`<`````
+M`&`A`````````0````$````P[`<``````'`A`````````0````$```!0[`<`
+M`````(@A`````````0````$```"0]`<``````)@A`````````0````$````0
+M]0<``````+`A`````````0````$```"@_0<``````+@A`````````0````$`
+M``!P_@<``````,`A`````````0````$```"P_@<``````-@A`````````0``
+M``$```!P``@``````.`A`````````0````$```"``0@``````.@A````````
+M`0````$```#0`0@````````B`````````0````$```"0]@<``````!`B````
+M`````0````$````P]P<``````"@B`````````0````$```#0'`@``````#@B
+M`````````0````$```!P'@@``````%`B`````````0````$````@\@<`````
+M`&`B`````````0````$```!0\@<``````'@B`````````0````$```"@[0<`
+M`````(@B`````````0````$```#`[0<``````*`B`````````0````$```!@
+M[@<``````+`B`````````0````$```"`[@<``````,@B`````````0````$`
+M``!P[P<``````-@B`````````0````$```"0[P<``````/`B`````````0``
+M``$```"`\`<````````C`````````0````$```"@\`<``````!@C````````
+M`0````$```!0YP<``````"@C`````````0````$```!PYP<``````$`C````
+M`````0````$````@Z0<``````$@C`````````0````$```!`Z0<``````%`C
+M`````````0````$```"PZ0<``````&@C`````````0````$```!@&@@`````
+M`'@C`````````0````$```"0&@@``````)`C`````````0````$```!P&P@`
+M`````*`C`````````0````$````@'`@``````+@C`````````0````$```!0
+M^P<``````,@C`````````0````$```"0^P<``````.`C`````````0````$`
+M``"@^@<``````/`C`````````0````$```#`^@<``````&@D`````````0``
+M``$```!`5@@``````'`D`````````0````$```"@50@``````.`D````````
+M`0````$````@5P@``````.@D`````````0````$```#06@@``````/`D````
+M`````0```)4$`````````````/@D`````````0````$```!05P@````````E
+M`````````0````$```!P5P@``````&@E`````````0````$```#`8`@`````
+M`'`E`````````0```)4$`````````````.`E`````````0````$````PZ0@`
+M`````.@E`````````0````$```"0X0@``````/`E`````````0````$```"P
+MZ`@``````/@E`````````0````$````PZ@@````````F`````````0````$`
+M``#PZ@@```````@F`````````0````$```"@Y@@``````!`F`````````0``
+M``$`````YP@``````!@F`````````0````$```!@Y@@``````"`F````````
+M`0````$````PZP@``````&`F`````````0````$```!@[`@``````&@F````
+M`````0````$```#0[P@``````'`F`````````0```)4$`````````````'@F
+M`````````0````$```"0[`@``````(`F`````````0````$```"P[`@`````
+M`"```````````0````$``````````````#@``````````0````$```!P````
+M`````'@``````````0````$```"``0```````)```````````0````$```#`
+M`0```````*@``````````0````$``````@```````,```````````0````$`
+M``!0`@```````.```````````0````$```"@`@```````!`!`````````0``
+M``$```"P`@```````"@!`````````0````$```#0`@```````$`!````````
+M`0````$```#P`@```````%@!`````````0````$````@`P```````'@!````
+M`````0````$```!@`P```````)`!`````````0````$```"@`P```````*@!
+M`````````0````$```"P`P```````,`!`````````0````$````0!```````
+M`-@!`````````0````$````@!````````/`!`````````0````$```!`!```
+M``````@"`````````0````$```!P!````````"`"`````````0````$```"@
+M!````````#@"`````````0````$```#0!````````%`"`````````0````$`
+M````!0```````&@"`````````0````$````P!P```````(@"`````````0``
+M``$```#@!P```````+@"`````````0````$````@"````````-`"````````
+M`0````$```"@"````````/@"`````````0````$```!0"@```````#`#````
+M`````0````$```#0#````````$@#`````````0````$```!`#0```````&`#
+M`````````0````$```"P#0```````(`#`````````0````$```#P#0``````
+M`)@#`````````0````$```"`#@```````-@#`````````0````$`````$```
+M`````/@#`````````0````$```#@$P```````#`$`````````0````$`````
+M'P```````'`$`````````0````$```#P'P```````)`$`````````0````$`
+M``"0(````````+`$`````````0````$```"@(````````-@$`````````0``
+M``$```#@(0```````/@$`````````0````$`````(@```````!`%````````
+M`0````$```!0(@```````"@%`````````0````$```#@(@```````%`%````
+M`````0````$`````*0```````&@%`````````0````$```"`*0```````(`%
+M`````````0````$```#P*0```````,`%`````````0````$```#P-@``````
+M`.@%`````````0````$```"`-P```````!`&`````````0````$```#0.```
+M`````#@&`````````0````$```#@.0```````&`&`````````0````$```"P
+M/0```````(@&`````````0````$```!`0@```````,`&`````````0````$`
+M```01@`````````'`````````0````$```"@2````````#@'`````````0``
+M``$```#@2@```````'@'`````````0````$```#P3````````+@'````````
+M`0````$```"@5@```````-@'`````````0````$```!@5P````````@(````
+M`````0````$```#06@```````"@(`````````0````$```#P6@```````$@(
+M`````````0````$```"@6P```````&`(`````````0````$```#@6P``````
+M`*`(`````````0````$```!@9````````.`(`````````0````$```!`:```
+M``````@)`````````0````$```!P<@```````#`)`````````0````$```#@
+M<@```````'`)`````````0````$```!P>@```````)@)`````````0````$`
+M```P>P```````-@)`````````0````$```!0?0`````````*`````````0``
+M``$````0?@```````"@*`````````0````$```"@@````````$@*````````
+M`0````$```#@@````````'@*`````````0````$```"@@0```````+@*````
+M`````0````$```"@A````````.`*`````````0````$```"@A0````````@+
+M`````````0````$```"PA@```````$@+`````````0````$```!0AP``````
+M`'`+`````````0````$```"PB````````(@+`````````0````$````@B0``
+M`````*`+`````````0````$```!PB0```````.`+`````````0````$```#`
+MB@`````````,`````````0````$```!0BP```````!@,`````````0````$`
+M``"PBP```````$@,`````````0````$```!0C````````(@,`````````0``
+M``$```#`C0```````*@,`````````0````$````0C@```````-`,````````
+M`0````$`````D@```````/@,`````````0````$````0DP```````"`-````
+M`````0````$```!@E````````$`-`````````0````$```!@E0```````&@-
+M`````````0````$````@E@```````(@-`````````0````$```"0E@``````
+M`+`-`````````0````$```!@F````````-@-`````````0````$```#`F0``
+M`````!@.`````````0````$````@FP```````#`.`````````0````$```"@
+MFP```````&`.`````````0````$```#PFP```````'@.`````````0````$`
+M````G0```````+@.`````````0````$```!@H0```````-`.`````````0``
+M``$```"@H@```````.@.`````````0````$````PHP`````````/````````
+M`0````$```!@HP```````!@/`````````0````$```!PHP```````#`/````
+M`````0````$```#`HP```````%@/`````````0````$```!`I0```````'@/
+M`````````0````$```!@I0```````)@/`````````0````$```"`I0``````
+M`,`/`````````0````$```!PIP```````.@/`````````0````$```!PJ```
+M`````"@0`````````0````$```#0J0```````$@0`````````0````$````0
+MJ@```````'`0`````````0````$```"`J@```````(@0`````````0````$`
+M``"PJ@```````+`0`````````0````$```#@JP```````-`0`````````0``
+M``$````0K````````.@0`````````0````$```!0K````````!@1````````
+M`0````$```#0K0```````$`1`````````0````$````@KP```````&`1````
+M`````0````$````0L````````(`1`````````0````$```!PL````````*`1
+M`````````0````$```"PL````````,`1`````````0````$```#PL```````
+M`-@1`````````0````$````@L0```````/@1`````````0````$```!0L0``
+M`````!`2`````````0````$```"`L0```````#`2`````````0````$```#`
+ML0```````$@2`````````0````$```#@L0```````&@2`````````0````$`
+M```0L@```````(`2`````````0````$```!`L@```````*`2`````````0``
+M``$```"`L@```````+@2`````````0````$```"PL@```````.`2````````
+M`0````$```#0M0````````@3`````````0````$```"0M@```````#`3````
+M`````0````$```!@MP```````%@3`````````0````$```!0N````````(`3
+M`````````0````$```!0N0```````*@3`````````0````$```#PN@``````
+M`-`3`````````0````$```!`O````````/@3`````````0````$```!0O0``
+M`````"`4`````````0````$```!@O@```````$@4`````````0````$```"0
+MOP```````'`4`````````0````$```#`P````````)@4`````````0````$`
+M``!PP0```````+`4`````````0````$```#0P0```````-`4`````````0``
+M``$````0P@```````.@4`````````0````$````@PP````````@5````````
+M`0````$```!@PP```````"`5`````````0````$```!0Q````````$@5````
+M`````0````$```"@Q0```````&`5`````````0````$```#0Q0```````'@5
+M`````````0````$`````Q@```````*`5`````````0````$```"0R0``````
+M`,`5`````````0````$````@R@```````.@5`````````0````$```!PR@``
+M```````6`````````0````$```#@R@```````"@6`````````0````$````@
+MS````````%`6`````````0````$```#`S0```````'@6`````````0````$`
+M``!PS@```````*`6`````````0````$`````T````````,@6`````````0``
+M``$```#PT````````/`6`````````0````$```"`T0```````!@7````````
+M`0````$````PT@```````&@7`````````0````$````@U````````(`7````
+M`````0````$```!`U````````)@7`````````0````$```#PU````````,`7
+M`````````0````$```!@U0```````.`7`````````0````$```"0U0``````
+M``@8`````````0````$````PUP```````#@8`````````0````$```#0UP``
+M`````%@8`````````0````$```!@V````````'@8`````````0````$```#P
+MV````````*`8`````````0````$`````V@```````-`8`````````0````$`
+M``#PV@```````/`8`````````0````$```!PVP````````@9`````````0``
+M``$```"0VP```````"`9`````````0````$```#0VP```````#@9````````
+M`0````$````0W````````&`9`````````0````$```#`Y0```````'@9````
+M`````0````$````0Y@```````*`9`````````0````$```"PYP```````,`9
+M`````````0````$```"PZ````````/@9`````````0````$````PZ@``````
+M`!`:`````````0````$```"PZ@```````%`:`````````0````$```!`[0``
+M`````'@:`````````0````$```#@[0```````*@:`````````0````$````@
+M\````````-`:`````````0````$````0\0```````/@:`````````0````$`
+M``#0\0```````#@;`````````0````$```"0]````````'@;`````````0``
+M``$```"0]P```````+@;`````````0````$````@^P```````/@;````````
+M`0````$```#P_@```````"@<`````````0````$```#@_P```````$`<````
+M`````0````$````P``$``````%@<`````````0````$```"```$``````(`<
+M`````````0````$```"`!`$``````,`<`````````0````$```"P"@$`````
+M`.@<`````````0````$```#0#0$``````!`=`````````0````$```#@%`$`
+M`````#@=`````````0````$```"@&0$``````'@=`````````0````$```"`
+M'`$``````*`=`````````0````$```"`'0$``````.`=`````````0````$`
+M``!`'@$``````"`>`````````0````$`````'P$``````#@>`````````0``
+M``$```!P'P$``````%`>`````````0````$```"`'P$``````)`>````````
+M`0````$````@(@$``````*@>`````````0````$```!0(@$``````-@>````
+M`````0````$```!@*@$``````/@>`````````0````$```"P*@$``````!`?
+M`````````0````$`````*P$``````#@?`````````0````$````@,P$`````
+M`&`?`````````0````$```#@-@$``````(@?`````````0````$```#@.`$`
+M`````+`?`````````0````$```"P.0$``````/`?`````````0````$```"@
+M.@$```````@@`````````0````$```#0.@$``````#`@`````````0````$`
+M``!P/0$``````%@@`````````0````$````0/@$``````(`@`````````0``
+M``$```"P/@$``````*@@`````````0````$```!`/P$``````-`@````````
+M`0````$```#0/P$``````/@@`````````0````$```!P0`$``````"`A````
+M`````0````$`````00$``````$@A`````````0````$```"000$``````'`A
+M`````````0````$```!00@$``````)@A`````````0````$```!`0P$`````
+M`,`A`````````0````$```"02P$````````B`````````0````$````04P$`
+M`````!@B`````````0````$```!04P$``````#`B`````````0````$```"`
+M4P$``````&`B`````````0````$````05`$``````(@B`````````0````$`
+M``!P5`$``````+`B`````````0````$```#`5`$``````-`B`````````0``
+M``$```#@5`$``````/@B`````````0````$```#@50$``````"`C````````
+M`0````$```!P5@$``````&`C`````````0````$```"06`$``````(`C````
+M`````0````$```#P6`$``````*`C`````````0````$```!060$``````,@C
+M`````````0````$```!`6@$``````.@C`````````0````$```"@6@$`````
+M``@D`````````0````$`````6P$``````$@D`````````0````$```!P70$`
+M`````'`D`````````0````$```!08`$``````)`D`````````0````$```"@
+M8`$``````+`D`````````0````$```#@8`$``````-`D`````````0````$`
+M````80$``````/`D`````````0````$```!`80$``````!`E`````````0``
+M``$```"`80$``````%`E`````````0````$````P8@$``````&@E````````
+M`0````$```!08@$``````(`E`````````0````$```!@8@$``````*`E````
+M`````0````$````@8P$``````+@E`````````0````$```"`8P$``````.`E
+M`````````0````$````P9`$```````@F`````````0````$````@90$`````
+M`$@F`````````0````$```!@9@$``````)@F`````````0````$```"@9P$`
+M`````+`F`````````0````$```#0:`$``````-`F`````````0````$```"`
+M:@$``````.@F`````````0````$```"0:@$````````G`````````0````$`
+M``"@:@$``````!@G`````````0````$```#`:@$``````#`G`````````0``
+M``$```#@:@$``````$@G`````````0````$````0:P$``````&`G````````
+M`0````$```!`:P$``````(@G`````````0````$```"0;`$``````+`G````
+M`````0````$```#0;0$``````,@G`````````0````$````0;@$``````/`G
+M`````````0````$```"P;@$```````@H`````````0````$````0;P$`````
+M`"`H`````````0````$````P;P$``````%`H`````````0````$```!`<@$`
+M`````'@H`````````0````$```"@<@$``````)`H`````````0````$```#@
+M<@$``````*@H`````````0````$```#P<@$``````-`H`````````0````$`
+M``"0<P$```````@I`````````0````$`````=`$``````"@I`````````0``
+M``$```"`=`$``````%`I`````````0````$`````=0$``````'@I````````
+M`0````$```"P=0$``````*`I`````````0````$```!`=@$``````,@I````
+M`````0````$`````=P$``````/`I`````````0````$```"`=P$``````!@J
+M`````````0````$````P>`$``````$`J`````````0````$```!0>0$`````
+M`&@J`````````0````$`````>@$``````)`J`````````0````$```"P>@$`
+M`````+@J`````````0````$```"0>P$``````.`J`````````0````$```!P
+M?`$````````K`````````0````$`````?0$``````$`K`````````0````$`
+M```0?@$``````%@K`````````0````$````@?@$``````'`K`````````0``
+M``$````P?@$``````(@K`````````0````$```"`?@$``````,`K````````
+M`0````$```"`?P$````````L`````````0````$```!@@0$``````$`L````
+M`````0````$```"P@@$``````%@L`````````0````$```#`@@$``````'`L
+M`````````0````$```#0@@$``````(@L`````````0````$```#@@@$`````
+M`,`L`````````0````$```#PA0$``````.`L`````````0````$````0A@$`
+M```````M`````````0````$```"0A@$``````"@M`````````0````$```!P
+MAP$``````%@M`````````0````$```#0B`$``````'`M`````````0````$`
+M``#@B`$``````)@M`````````0````$`````BP$``````+`M`````````0``
+M``$````0BP$``````-@M`````````0````$```!`C`$``````!@N````````
+M`0````$```"0D0$``````%@N`````````0````$```"`E`$``````(`N````
+M`````0````$```#@E0$``````*@N`````````0````$```"@E@$``````-`N
+M`````````0````$````@G0$``````/@N`````````0````$```#`H`$`````
+M`!@O`````````0````$````0H0$``````#@O`````````0````$````PH0$`
+M`````%`O`````````0````$```!`H0$``````&@O`````````0````$```"@
+MH0$``````(`O`````````0````$```#@H0$``````*`O`````````0````$`
+M```@H@$``````,@O`````````0````$```!PI0$``````/`O`````````0``
+M``$`````K`$``````!@P`````````0````$```#@L@$``````#`P````````
+M`0````$```!@M0$``````$@P`````````0````$```"`M0$``````'`P````
+M`````0````$````0MP$``````)@P`````````0````$```#PNP$``````,`P
+M`````````0````$```#0O`$``````.`P`````````0````$```!0O0$`````
+M``@Q`````````0````$```#@O@$``````"@Q`````````0````$```"`OP$`
+M`````$`Q`````````0````$```#@OP$``````%@Q`````````0````$```!`
+MP`$``````'@Q`````````0````$```!@P`$``````)@Q`````````0````$`
+M``"`P`$``````,@Q`````````0````$````0QP$``````.@Q`````````0``
+M``$```"`QP$``````"`R`````````0````$```"@QP$``````#@R````````
+M`0````$````0R`$``````'@R`````````0````$````@R0$``````)`R````
+M`````0````$```!@R0$``````*@R`````````0````$```"@R0$``````,`R
+M`````````0````$```#PR0$``````.`R`````````0````$```!`R@$`````
+M`!`S`````````0````$```!0R@$``````"@S`````````0````$```!PR@$`
+M`````$`S`````````0````$```"0R@$``````%@S`````````0````$```#`
+MR@$``````'@S`````````0````$`````RP$``````)`S`````````0````$`
+M``!`RP$``````*@S`````````0````$```!0RP$``````,`S`````````0``
+M``$```"PRP$``````-@S`````````0````$```#`RP$``````/`S````````
+M`0````$```#@RP$```````@T`````````0````$````0S`$``````"`T````
+M`````0````$```!`S`$``````#@T`````````0````$```!PS`$``````%`T
+M`````````0````$```"@S`$``````&@T`````````0````$```#0S@$`````
+M`(@T`````````0````$```"`SP$``````+@T`````````0````$```#`SP$`
+M`````-`T`````````0````$```!`T`$``````/@T`````````0````$```#P
+MT0$``````#`U`````````0````$```!PU`$``````$@U`````````0````$`
+M``#@U`$``````&`U`````````0````$```!0U0$``````(`U`````````0``
+M``$```"0U0$``````)@U`````````0````$````@U@$``````-@U````````
+M`0````$```"@UP$``````/@U`````````0````$```"`VP$``````#`V````
+M`````0````$```"@Y@$``````'`V`````````0````$```"0YP$``````)`V
+M`````````0````$````PZ`$``````+`V`````````0````$```!`Z`$`````
+M`-@V`````````0````$```"`Z0$``````/@V`````````0````$```"@Z0$`
+M`````!`W`````````0````$```#PZ0$``````"@W`````````0````$```"`
+MZ@$``````%`W`````````0````$```"@\`$``````&@W`````````0````$`
+M```@\0$``````(`W`````````0````$```"0\0$``````,`W`````````0``
+M``$```"0_@$``````.@W`````````0````$````@_P$``````!`X````````
+M`0````$```!P``(``````#@X`````````0````$```"``0(``````&`X````
+M`````0````$```!0!0(``````(@X`````````0````$```#@"0(``````,`X
+M`````````0````$```"P#0(````````Y`````````0````$```!`$`(`````
+M`#@Y`````````0````$```"`$@(``````'@Y`````````0````$```"0%`(`
+M`````+@Y`````````0````$```!`'@(``````-@Y`````````0````$`````
+M'P(```````@Z`````````0````$```!P(@(``````"@Z`````````0````$`
+M``"0(@(``````$@Z`````````0````$```!`(P(``````&`Z`````````0``
+M``$```"`(P(``````*`Z`````````0````$`````+`(``````.`Z````````
+M`0````$```#@+P(```````@[`````````0````$````0.@(``````#`[````
+M`````0````$```"`.@(``````'`[`````````0````$````00@(``````)@[
+M`````````0````$```#00@(``````-@[`````````0````$```#P1`(`````
+M```\`````````0````$```"P10(``````"@\`````````0````$```!`2`(`
+M`````$@\`````````0````$```"`2`(``````'@\`````````0````$```!`
+M20(``````+@\`````````0````$```!`3`(``````.`\`````````0````$`
+M``!`30(```````@]`````````0````$```!03@(``````$@]`````````0``
+M``$```#P3@(``````'`]`````````0````$```!04`(``````(@]````````
+M`0````$```#`4`(``````*`]`````````0````$````040(``````.`]````
+M`````0````$```!@4@(````````^`````````0````$```#P4@(``````!@^
+M`````````0````$```!04P(``````$@^`````````0````$```#P4P(`````
+M`(@^`````````0````$```!@50(``````*@^`````````0````$```"P50(`
+M`````-`^`````````0````$```"@60(``````/@^`````````0````$```"P
+M6@(``````"`_`````````0````$`````7`(``````$`_`````````0````$`
+M````70(``````&@_`````````0````$```#`70(``````(@_`````````0``
+M``$````P7@(``````+`_`````````0````$`````8`(``````-@_````````
+M`0````$```!@80(``````!A``````````0````$```#`8@(``````#!`````
+M`````0````$```!`8P(``````&!``````````0````$```"08P(``````'A`
+M`````````0````$```"@9`(``````+A``````````0````$`````:0(`````
+M`-!``````````0````$```!`:@(``````.A``````````0````$```#0:@(`
+M``````!!`````````0````$`````:P(``````!A!`````````0````$````0
+M:P(``````#!!`````````0````$```!@:P(``````%A!`````````0````$`
+M``#@;`(``````'A!`````````0````$`````;0(``````)A!`````````0``
+M``$````@;0(``````,!!`````````0````$````0;P(``````.A!````````
+M`0````$````0<`(``````"A"`````````0````$```!P<0(``````$A"````
+M`````0````$```"P<0(``````'!"`````````0````$````@<@(``````(A"
+M`````````0````$```!0<@(``````+!"`````````0````$```"`<P(`````
+M`-!"`````````0````$```"P<P(``````.A"`````````0````$```#P<P(`
+M`````!A#`````````0````$```!P=0(``````$!#`````````0````$```#`
+M=@(``````&!#`````````0````$```"P=P(``````(!#`````````0````$`
+M```0>`(``````*!#`````````0````$```!0>`(``````,!#`````````0``
+M``$```"0>`(``````-A#`````````0````$```#`>`(``````/A#````````
+M`0````$```#P>`(``````!!$`````````0````$````@>0(``````#!$````
+M`````0````$```!@>0(``````$A$`````````0````$```"`>0(``````&A$
+M`````````0````$```"P>0(``````(!$`````````0````$```#@>0(`````
+M`*!$`````````0````$````@>@(``````+A$`````````0````$```!0>@(`
+M`````.!$`````````0````$```!P?0(```````A%`````````0````$````P
+M?@(``````#!%`````````0````$`````?P(``````%A%`````````0````$`
+M``#P?P(``````(!%`````````0````$```#P@`(``````*A%`````````0``
+M``$```"0@@(``````-!%`````````0````$```#@@P(``````/A%````````
+M`0````$```#PA`(``````"!&`````````0````$`````A@(``````$A&````
+M`````0````$````PAP(``````'!&`````````0````$```!@B`(``````)A&
+M`````````0````$````0B0(``````+!&`````````0````$```!PB0(`````
+M`-!&`````````0````$```"PB0(``````.A&`````````0````$```#`B@(`
+M``````A'`````````0````$`````BP(``````"!'`````````0````$```#P
+MBP(``````$A'`````````0````$```!`C0(``````&!'`````````0````$`
+M``!PC0(``````'A'`````````0````$```"@C0(``````*!'`````````0``
+M``$````PD0(``````,!'`````````0````$```#`D0(``````.A'````````
+M`0````$````0D@(```````!(`````````0````$```"`D@(``````"A(````
+M`````0````$```#`DP(``````%!(`````````0````$```!@E0(``````'A(
+M`````````0````$````0E@(``````*!(`````````0````$```"@EP(`````
+M`,A(`````````0````$```"0F`(``````/!(`````````0````$````@F0(`
+M`````!A)`````````0````$```#0F0(``````&A)`````````0````$```#`
+MFP(``````(!)`````````0````$```#@FP(``````)A)`````````0````$`
+M``"0G`(``````,!)`````````0````$`````G0(``````.!)`````````0``
+M``$````PG0(```````A*`````````0````$```#0G@(``````#A*````````
+M`0````$```!PGP(``````%A*`````````0````$`````H`(``````'A*````
+M`````0````$```"0H`(``````*!*`````````0````$```"@H0(``````-!*
+M`````````0````$```"0H@(``````/!*`````````0````$````0HP(`````
+M``A+`````````0````$````PHP(``````"!+`````````0````$```!PHP(`
+M`````#A+`````````0````$```"PHP(``````&!+`````````0````$```!@
+MK0(``````'A+`````````0````$```"PK0(``````*!+`````````0````$`
+M``!0KP(``````,!+`````````0````$```!0L`(``````/A+`````````0``
+M``$```#0L0(``````!!,`````````0````$```!0L@(``````%!,````````
+M`0````$```#@M`(``````'A,`````````0````$```"`M0(``````*A,````
+M`````0````$```#`MP(``````-!,`````````0````$```"PN`(``````/A,
+M`````````0````$```!PN0(``````#A-`````````0````$````PO`(`````
+M`'A-`````````0````$````POP(``````+A-`````````0````$```#`P@(`
+M`````/A-`````````0````$```"0Q@(``````"A.`````````0````$```"`
+MQP(``````$!.`````````0````$```#0QP(``````%A.`````````0````$`
+M```@R`(``````(!.`````````0````$````@S`(``````,!.`````````0``
+M``$```!0T@(``````.A.`````````0````$```!PU0(``````!!/````````
+M`0````$```"`W`(``````#A/`````````0````$```!`X0(``````'A/````
+M`````0````$````@Y`(``````*!/`````````0````$````@Y0(``````.!/
+M`````````0````$```#@Y0(``````"!0`````````0````$```"@Y@(`````
+M`#A0`````````0````$````0YP(``````%!0`````````0````$````@YP(`
+M`````)!0`````````0````$```#`Z0(``````*A0`````````0````$```#P
+MZ0(``````-A0`````````0````$`````\@(``````/A0`````````0````$`
+M``!0\@(``````!!1`````````0````$```"@\@(``````#A1`````````0``
+M``$```#`^@(``````&!1`````````0````$```"`_@(``````(A1````````
+M`0````$```"```,``````+!1`````````0````$```!0`0,``````/!1````
+M`````0````$```!``@,```````A2`````````0````$```!P`@,``````#!2
+M`````````0````$````0!0,``````%A2`````````0````$```"P!0,`````
+M`(!2`````````0````$```!0!@,``````*A2`````````0````$```#@!@,`
+M`````-!2`````````0````$```!P!P,``````/A2`````````0````$````0
+M"`,``````"!3`````````0````$```"@"`,``````$A3`````````0````$`
+M```P"0,``````'!3`````````0````$```#P"0,``````)A3`````````0``
+M``$```#@"@,``````,!3`````````0````$````P$P,```````!4````````
+M`0````$```"P&@,``````!A4`````````0````$```#P&@,``````#!4````
+M`````0````$````@&P,``````&!4`````````0````$```"P&P,``````(A4
+M`````````0````$````0'`,``````+!4`````````0````$```!@'`,`````
+M`-!4`````````0````$```"`'`,``````/A4`````````0````$```"`'0,`
+M`````"!5`````````0````$````0'@,``````&!5`````````0````$````P
+M(`,``````(!5`````````0````$```"0(`,``````*!5`````````0````$`
+M``#P(`,``````,A5`````````0````$```#@(0,``````.A5`````````0``
+M``$```!`(@,```````A6`````````0````$```"@(@,``````$A6````````
+M`0````$````0)0,``````'!6`````````0````$```#P)P,``````)!6````
+M`````0````$```!`*`,``````+!6`````````0````$```"`*`,``````-A6
+M`````````0````$```#0*`,``````/!6`````````0````$```#P*`,`````
+M`!!7`````````0````$```#@*0,``````%!7`````````0````$```"0*@,`
+M`````&A7`````````0````$```"P*@,``````(!7`````````0````$```#`
+M*@,``````*!7`````````0````$```"P*P,``````+A7`````````0````$`
+M```0+`,``````.!7`````````0````$```#`+`,```````A8`````````0``
+M``$```"P+0,``````$A8`````````0````$```#P+@,``````)A8````````
+M`0````$````P,`,``````+!8`````````0````$```!@,0,``````-!8````
+M`````0````$````0,P,``````.A8`````````0````$````@,P,```````!9
+M`````````0````$````P,P,``````!A9`````````0````$```!0,P,`````
+M`#!9`````````0````$```!P,P,``````$A9`````````0````$```"@,P,`
+M`````&!9`````````0````$```#0,P,``````(A9`````````0````$````@
+M-0,``````+!9`````````0````$```!@-@,``````,A9`````````0````$`
+M``"@-@,``````/!9`````````0````$```!`-P,```````A:`````````0``
+M``$```"@-P,``````"!:`````````0````$```#`-P,``````%!:````````
+M`0````$```#0.@,``````'A:`````````0````$````P.P,``````)!:````
+M`````0````$```!P.P,``````*A:`````````0````$```"`.P,``````-!:
+M`````````0````$````@/`,```````A;`````````0````$```"0/`,`````
+M`"A;`````````0````$````0/0,``````%!;`````````0````$```"0/0,`
+M`````'A;`````````0````$```!`/@,``````*!;`````````0````$```#0
+M/@,``````,A;`````````0````$```"0/P,``````/!;`````````0````$`
+M```00`,``````!A<`````````0````$```#`0`,``````$!<`````````0``
+M``$```#@00,``````&A<`````````0````$```"00@,``````)!<````````
+M`0````$```!`0P,``````+A<`````````0````$````@1`,``````.!<````
+M`````0````$`````10,```````!=`````````0````$```"010,``````$!=
+M`````````0````$```"@1@,``````'!=`````````0````$```#P1P,`````
+M`(A=`````````0````$```!`2`,``````,A=`````````0````$```#02P,`
+M`````.A=`````````0````$```!03`,```````!>`````````0````$```"`
+M3`,``````!A>`````````0````$```#03`,``````%!>`````````0````$`
+M``#030,``````)!>`````````0````$```#P3P,``````-!>`````````0``
+M``$```!`40,``````.A>`````````0````$```!040,```````!?````````
+M`0````$```!@40,``````!A?`````````0````$```!P40,``````%!?````
+M`````0````$```"`5`,``````'!?`````````0````$```"@5`,``````)!?
+M`````````0````$````@50,``````+A?`````````0````$`````5@,`````
+M`.A?`````````0````$```!@5P,```````!@`````````0````$```!P5P,`
+M`````"A@`````````0````$```"060,``````$!@`````````0````$```"@
+M60,``````&A@`````````0````$```#06@,``````*A@`````````0````$`
+M```@8`,``````.A@`````````0````$````08P,``````!!A`````````0``
+M``$```!P9`,``````#AA`````````0````$````P90,``````&!A````````
+M`0````$```"P:P,``````(AA`````````0````$```!0;P,``````*AA````
+M`````0````$```"@;P,``````,AA`````````0````$```#`;P,``````.!A
+M`````````0````$```#0;P,``````/AA`````````0````$````P<`,`````
+M`!!B`````````0````$```!P<`,``````#!B`````````0````$```"P<`,`
+M`````%AB`````````0````$`````=`,``````(!B`````````0````$```"0
+M>@,``````*AB`````````0````$```!P@0,``````,!B`````````0````$`
+M``#`@P,``````-AB`````````0````$```#@@P,```````!C`````````0``
+M``$```!PA0,``````"AC`````````0````$```!0B@,``````%!C````````
+M`0````$````PBP,``````'!C`````````0````$```"PBP,``````)AC````
+M`````0````$```!`C0,``````+AC`````````0````$```#@C0,``````-!C
+M`````````0````$```!`C@,``````.AC`````````0````$```"@C@,`````
+M``AD`````````0````$```#`C@,``````"AD`````````0````$```#@C@,`
+M`````%AD`````````0````$```!PE0,``````'AD`````````0````$```#@
+ME0,``````+!D`````````0````$`````E@,``````,AD`````````0````$`
+M``!PE@,```````AE`````````0````$```"`EP,``````"!E`````````0``
+M``$```#`EP,``````#AE`````````0````$`````F`,``````%!E````````
+M`0````$```!0F`,``````'!E`````````0````$```"@F`,``````*!E````
+M`````0````$```"PF`,``````+AE`````````0````$```#0F`,``````-!E
+M`````````0````$```#PF`,``````.AE`````````0````$````@F0,`````
+M``AF`````````0````$```!@F0,``````"!F`````````0````$```"@F0,`
+M`````#AF`````````0````$```"PF0,``````%!F`````````0````$````0
+MF@,``````&AF`````````0````$````@F@,``````(!F`````````0````$`
+M``!`F@,``````)AF`````````0````$```!PF@,``````+!F`````````0``
+M``$```"@F@,``````,AF`````````0````$```#0F@,``````.!F````````
+M`0````$`````FP,``````/AF`````````0````$````PG0,``````!AG````
+M`````0````$```#@G0,``````$AG`````````0````$````@G@,``````&!G
+M`````````0````$```"@G@,``````(AG`````````0````$```!0H`,`````
+M`,!G`````````0````$```#0H@,``````-AG`````````0````$```!`HP,`
+M`````/!G`````````0````$```"PHP,``````!!H`````````0````$```#P
+MHP,``````"AH`````````0````$```"`I`,``````&AH`````````0````$`
+M````I@,``````(AH`````````0````$```#@J0,``````,!H`````````0``
+M``$`````M0,```````!I`````````0````$```#PM0,``````"!I````````
+M`0````$```"0M@,``````$!I`````````0````$```"@M@,``````&AI````
+M`````0````$```#@MP,``````(AI`````````0````$`````N`,``````*!I
+M`````````0````$```!0N`,``````+AI`````````0````$```#@N`,`````
+M`.!I`````````0````$`````OP,``````/AI`````````0````$```"`OP,`
+M`````!!J`````````0````$```#POP,``````%!J`````````0````$```#P
+MS`,``````'AJ`````````0````$```"`S0,``````*!J`````````0````$`
+M``#0S@,``````,AJ`````````0````$```#@SP,``````/!J`````````0``
+M``$```"PTP,``````!AK`````````0````$```!`V`,``````%!K````````
+M`0````$````0W`,``````)!K`````````0````$```"@W@,``````,AK````
+M`````0````$```#@X`,```````AL`````````0````$```#PX@,``````$AL
+M`````````0````$```"@[`,``````&AL`````````0````$```!@[0,`````
+M`)AL`````````0````$```#0\`,``````+AL`````````0````$```#P\`,`
+M`````-AL`````````0````$```"@\0,``````/!L`````````0````$```#@
+M\0,``````#!M`````````0````$```!@^@,``````'!M`````````0````$`
+M``!`_@,``````)AM`````````0````$```!P"`0``````,!M`````````0``
+M``$```#@"`0```````!N`````````0````$```!P$`0``````"AN````````
+M`0````$````P$00``````&AN`````````0````$```!0$P0``````)!N````
+M`````0````$````0%`0``````+AN`````````0````$```"@%@0``````-AN
+M`````````0````$```#@%@0```````AO`````````0````$```"@%P0`````
+M`$AO`````````0````$```"@&@0``````'!O`````````0````$```"@&P0`
+M`````)AO`````````0````$```"P'`0``````-AO`````````0````$```!0
+M'00```````!P`````````0````$```"P'@0``````!AP`````````0````$`
+M```@'P0``````#!P`````````0````$```!P'P0``````'!P`````````0``
+M``$```#`(`0``````)!P`````````0````$```!0(00``````*AP````````
+M`0````$```"P(00``````-AP`````````0````$```!0(@0``````!AQ````
+M`````0````$```#`(P0``````#AQ`````````0````$````0)`0``````&!Q
+M`````````0````$`````*`0``````(AQ`````````0````$````0*00`````
+M`+!Q`````````0````$```!@*@0``````-!Q`````````0````$```!@*P0`
+M`````/AQ`````````0````$````@+`0``````!AR`````````0````$```"0
+M+`0``````$!R`````````0````$```!@+@0``````&AR`````````0````$`
+M``#`+P0``````*AR`````````0````$````@,00``````,!R`````````0``
+M``$```"@,00``````/!R`````````0````$```#P,00```````AS````````
+M`0````$`````,P0``````$AS`````````0````$```!@-P0``````&!S````
+M`````0````$```"@.`0``````'AS`````````0````$````P.00``````)!S
+M`````````0````$```!@.00``````*AS`````````0````$```!P.00`````
+M`,!S`````````0````$```#`.00``````.AS`````````0````$```!`.P0`
+M``````AT`````````0````$```!@.P0``````"AT`````````0````$```"`
+M.P0``````%!T`````````0````$```!P/00``````'AT`````````0````$`
+M``!P/@0``````+AT`````````0````$```#0/P0``````-AT`````````0``
+M``$````00`0```````!U`````````0````$```"`0`0``````!AU````````
+M`0````$```"P0`0``````$!U`````````0````$```#@000``````&!U````
+M`````0````$````00@0``````'AU`````````0````$```!00@0``````*AU
+M`````````0````$```#00P0``````-!U`````````0````$````@100`````
+M`/!U`````````0````$````01@0``````!!V`````````0````$```!P1@0`
+M`````#!V`````````0````$```"P1@0``````%!V`````````0````$```#P
+M1@0``````&AV`````````0````$````@1P0``````(AV`````````0````$`
+M``!01P0``````*!V`````````0````$```"`1P0``````,!V`````````0``
+M``$```#`1P0``````-AV`````````0````$```#@1P0``````/AV````````
+M`0````$````02`0``````!!W`````````0````$```!`2`0``````#!W````
+M`````0````$```"`2`0``````$AW`````````0````$```"P2`0``````'!W
+M`````````0````$```#02P0``````)AW`````````0````$```"03`0`````
+M`,!W`````````0````$```!@300``````.AW`````````0````$```!03@0`
+M`````!!X`````````0````$```!03P0``````#AX`````````0````$```#P
+M4`0``````&!X`````````0````$```!`4@0``````(AX`````````0````$`
+M``!04P0``````+!X`````````0````$```!@5`0``````-AX`````````0``
+M``$```"0500```````!Y`````````0````$```#`5@0``````"AY````````
+M`0````$```!P5P0``````$!Y`````````0````$```#05P0``````&!Y````
+M`````0````$````06`0``````'AY`````````0````$````@600``````)AY
+M`````````0````$```!@600``````+!Y`````````0````$```!06@0`````
+M`-AY`````````0````$```"@6P0``````/!Y`````````0````$```#06P0`
+M``````AZ`````````0````$`````7`0``````#!Z`````````0````$```"0
+M7P0``````%!Z`````````0````$````@8`0``````'AZ`````````0````$`
+M``!P8`0``````)!Z`````````0````$```#@8`0``````+AZ`````````0``
+M``$````@8@0``````.!Z`````````0````$```#`8P0```````A[````````
+M`0````$```!P9`0``````#![`````````0````$`````9@0``````%A[````
+M`````0````$```#P9@0``````(![`````````0````$```"`9P0``````*A[
+M`````````0````$````P:`0``````/A[`````````0````$````@:@0`````
+M`!!\`````````0````$```!`:@0``````"A\`````````0````$```#P:@0`
+M`````%!\`````````0````$```!@:P0``````'!\`````````0````$```"0
+M:P0``````)A\`````````0````$````P;00``````,A\`````````0````$`
+M``#0;00``````.A\`````````0````$```!@;@0```````A]`````````0``
+M``$```#P;@0``````#!]`````````0````$`````<`0``````&!]````````
+M`0````$```#P<`0``````(!]`````````0````$```!P<00``````)A]````
+M`````0````$```"0<00``````+!]`````````0````$```#0<00``````,A]
+M`````````0````$````0<@0``````/!]`````````0````$```#`>P0`````
+M``A^`````````0````$````0?`0``````#!^`````````0````$```"P?00`
+M`````%!^`````````0````$```"P?@0``````(A^`````````0````$````P
+M@`0``````*!^`````````0````$```"P@`0``````.!^`````````0````$`
+M``!`@P0```````A_`````````0````$```#@@P0``````#A_`````````0``
+M``$````@A@0``````&!_`````````0````$````0AP0``````(A_````````
+M`0````$```#0AP0``````,A_`````````0````$```"0B@0```````B`````
+M`````0````$```"0C00``````$B``````````0````$````@D00``````(B`
+M`````````0````$```#PE`0``````+B``````````0````$```#@E00`````
+M`-"``````````0````$````PE@0``````.B``````````0````$```"`E@0`
+M`````!"!`````````0````$```"`F@0``````%"!`````````0````$```"P
+MH`0``````'B!`````````0````$```#0HP0``````*"!`````````0````$`
+M``#@J@0``````,B!`````````0````$```"@KP0```````B"`````````0``
+M``$```"`L@0``````#""`````````0````$```"`LP0``````'""````````
+M`0````$```!`M`0``````+""`````````0````$`````M00``````,B"````
+M`````0````$```!PM00``````.""`````````0````$```"`M00``````""#
+M`````````0````$````@N`0``````#B#`````````0````$```!0N`0`````
+M`&B#`````````0````$```!@P`0``````(B#`````````0````$```"PP`0`
+M`````*"#`````````0````$`````P00``````,B#`````````0````$````@
+MR00``````/"#`````````0````$```#@S`0``````!B$`````````0````$`
+M``#@S@0``````$"$`````````0````$```"PSP0``````("$`````````0``
+M``$```"@T`0``````)B$`````````0````$```#0T`0``````,"$````````
+M`0````$```!PTP0``````.B$`````````0````$````0U`0``````!"%````
+M`````0````$```"PU`0``````#B%`````````0````$```!`U00``````&"%
+M`````````0````$```#0U00``````(B%`````````0````$```!PU@0`````
+M`+"%`````````0````$`````UP0``````-B%`````````0````$```"0UP0`
+M``````"&`````````0````$```!0V`0``````"B&`````````0````$```!`
+MV00``````%"&`````````0````$```"0X00``````)"&`````````0````$`
+M```0Z00``````*B&`````````0````$```!0Z00``````,"&`````````0``
+M``$```"`Z00``````/"&`````````0````$````0Z@0``````!B'````````
+M`0````$```!PZ@0``````$"'`````````0````$```#`Z@0``````&"'````
+M`````0````$```#@Z@0``````(B'`````````0````$```#@ZP0``````+"'
+M`````````0````$```!P[`0``````/"'`````````0````$```"0[@0`````
+M`!"(`````````0````$```#P[@0``````#"(`````````0````$```!0[P0`
+M`````%B(`````````0````$```!`\`0``````'B(`````````0````$```"@
+M\`0``````)B(`````````0````$`````\00``````-B(`````````0````$`
+M``!P\P0```````")`````````0````$```!0]@0``````"")`````````0``
+M``$```"@]@0``````$")`````````0````$```#@]@0``````&B)````````
+M`0````$````P]P0``````(")`````````0````$```!0]P0``````*")````
+M`````0````$```!`^`0``````.")`````````0````$```#P^`0``````/B)
+M`````````0````$````0^00``````!"*`````````0````$````@^00`````
+M`#"*`````````0````$````0^@0``````$B*`````````0````$```!P^@0`
+M`````'"*`````````0````$````@^P0``````)B*`````````0````$````0
+M_`0``````-B*`````````0````$```!0_00``````"B+`````````0````$`
+M``"0_@0``````$"+`````````0````$```#`_P0``````&"+`````````0``
+M``$```!P`04``````'B+`````````0````$```"``04``````)"+````````
+M`0````$```"0`04``````*B+`````````0````$```"P`04``````,"+````
+M`````0````$```#0`04``````-B+`````````0````$``````@4``````/"+
+M`````````0````$````P`@4``````!B,`````````0````$```"``P4`````
+M`$",`````````0````$```#`!`4``````%B,`````````0````$`````!04`
+M`````(",`````````0````$```"@!04``````)B,`````````0````$`````
+M!@4``````+",`````````0````$````@!@4``````.",`````````0````$`
+M```P"04```````B-`````````0````$```"0"04``````""-`````````0``
+M``$```#0"04``````#B-`````````0````$```#@"04``````&"-````````
+M`0````$```"`"@4``````)B-`````````0````$```#P"@4``````+B-````
+M`````0````$```!P"P4``````."-`````````0````$```#P"P4```````B.
+M`````````0````$```"@#`4``````#".`````````0````$````P#04`````
+M`%B.`````````0````$```#P#04``````(".`````````0````$```!P#@4`
+M`````*B.`````````0````$````@#P4``````-".`````````0````$```!`
+M$`4``````/B.`````````0````$```#P$`4``````""/`````````0````$`
+M``"@$04``````$B/`````````0````$```"`$@4``````'"/`````````0``
+M``$```!@$P4``````)"/`````````0````$```#P$P4``````-"/````````
+M`0````$`````%04```````"0`````````0````$```!0%@4``````!B0````
+M`````0````$```"@%@4``````%B0`````````0````$````P&@4``````'B0
+M`````````0````$```"P&@4``````)"0`````````0````$```#@&@4`````
+M`*B0`````````0````$````P&P4``````."0`````````0````$````P'`4`
+M`````""1`````````0````$````0'@4``````&"1`````````0````$```!@
+M'P4``````'B1`````````0````$```!P'P4``````)"1`````````0````$`
+M``"`'P4``````*B1`````````0````$```"0'P4``````."1`````````0``
+M``$```"@(@4```````"2`````````0````$```#`(@4``````""2````````
+M`0````$```!`(P4``````$B2`````````0````$````@)`4``````'B2````
+M`````0````$```"`)04``````)"2`````````0````$```"0)04``````+B2
+M`````````0````$```"P)P4``````-"2`````````0````$```#`)P4`````
+M`/B2`````````0````$```#P*`4``````#B3`````````0````$```!`+@4`
+M`````'B3`````````0````$````P,04``````*"3`````````0````$```"0
+M,@4``````,B3`````````0````$```!0,P4``````/"3`````````0````$`
+M``#0.04``````!B4`````````0````$```!P/04``````#B4`````````0``
+M``$```#`/04``````%B4`````````0````$```#@/04``````'"4````````
+M`0````$```#P/04``````(B4`````````0````$```!0/@4``````*"4````
+M`````0````$```"0/@4``````,"4`````````0````$```#0/@4``````.B4
+M`````````0````$````@0@4``````!"5`````````0````$```"P2`4`````
+M`#B5`````````0````$```"03P4``````%"5`````````0````$```#@404`
+M`````&B5`````````0````$`````4@4``````)"5`````````0````$```"0
+M4P4``````+B5`````````0````$```!P6`4``````."5`````````0````$`
+M``!0604```````"6`````````0````$```#0604``````"B6`````````0``
+M``$```!@6P4``````$B6`````````0````$`````7`4``````&"6````````
+M`0````$```!@7`4``````'B6`````````0````$```#`7`4``````)B6````
+M`````0````$```#@7`4``````+B6`````````0````$`````704``````.B6
+M`````````0````$```"08P4```````B7`````````0````$`````9`4`````
+M`$"7`````````0````$````@9`4``````%B7`````````0````$```"09`4`
+M`````)B7`````````0````$```"@904``````+"7`````````0````$```#@
+M904``````,B7`````````0````$````@9@4``````."7`````````0````$`
+M``!P9@4```````"8`````````0````$```#`9@4``````#"8`````````0``
+M``$```#09@4``````$B8`````````0````$```#P9@4``````&"8````````
+M`0````$````09P4``````'B8`````````0````$```!`9P4``````)B8````
+M`````0````$```"`9P4``````+"8`````````0````$```#`9P4``````,B8
+M`````````0````$```#09P4``````."8`````````0````$````P:`4`````
+M`/B8`````````0````$```!`:`4``````!"9`````````0````$```!@:`4`
+M`````"B9`````````0````$```"0:`4``````$"9`````````0````$```#`
+M:`4``````%B9`````````0````$```#P:`4``````'"9`````````0````$`
+M```@:04``````(B9`````````0````$```!0:P4``````*B9`````````0``
+M``$`````;`4``````-B9`````````0````$```!`;`4``````/"9````````
+M`0````$```#`;`4``````!B:`````````0````$```!P;@4``````%":````
+M`````0````$```#P<`4``````&B:`````````0````$```!@<04``````(":
+M`````````0````$```#0<04``````*":`````````0````$````0<@4`````
+M`+B:`````````0````$```"@<@4``````/B:`````````0````$````@=`4`
+M`````!B;`````````0````$`````>`4``````%";`````````0````$````@
+M@P4``````)";`````````0````$````0A`4``````+";`````````0````$`
+M``"PA`4``````-";`````````0````$```#`A`4``````/B;`````````0``
+M``$`````A@4``````!B<`````````0````$````@A@4``````#"<````````
+M`0````$```!PA@4``````$B<`````````0````$`````AP4``````'"<````
+M`````0````$````@C04``````(B<`````````0````$```"@C04``````*"<
+M`````````0````$````0C@4``````."<`````````0````$````0FP4`````
+M``B=`````````0````$```"@FP4``````#"=`````````0````$```#PG`4`
+M`````%B=`````````0````$`````G@4``````("=`````````0````$```#0
+MH04``````*B=`````````0````$```!@I@4``````."=`````````0````$`
+M```PJ@4``````"">`````````0````$```#`K`4``````%B>`````````0``
+M``$`````KP4``````)B>`````````0````$````0L04``````-B>````````
+M`0````$```#`N@4``````/B>`````````0````$```"`NP4``````"B?````
+M`````0````$```#PO@4``````$B?`````````0````$````0OP4``````&B?
+M`````````0````$```#`OP4``````("?`````````0````$`````P`4`````
+M`,"?`````````0````$```"`R`4```````"@`````````0````$```!@S`4`
+M`````"B@`````````0````$```"0U@4``````%"@`````````0````$`````
+MUP4``````)"@`````````0````$```"0W@4``````+B@`````````0````$`
+M``!0WP4``````/B@`````````0````$```!PX04``````""A`````````0``
+M``$````PX@4``````$BA`````````0````$```#`Y`4``````&BA````````
+M`0````$`````Y04``````)BA`````````0````$```#`Y04``````-BA````
+M`````0````$```#`Z`4```````"B`````````0````$```#`Z04``````"BB
+M`````````0````$```#0Z@4``````&BB`````````0````$```!PZP4`````
+M`)"B`````````0````$```#0[`4``````*BB`````````0````$```!`[04`
+M`````,"B`````````0````$```"0[04```````"C`````````0````$```#@
+M[@4``````""C`````````0````$```!P[P4``````#BC`````````0````$`
+M``#0[P4``````&BC`````````0````$```!P\`4``````*BC`````````0``
+M``$```#@\04``````,BC`````````0````$````P\@4``````/"C````````
+M`0````$````@]@4``````!BD`````````0````$````P]P4``````$"D````
+M`````0````$```"`^`4``````&"D`````````0````$```"`^04``````(BD
+M`````````0````$```!`^@4``````*BD`````````0````$```"P^@4`````
+M`-"D`````````0````$```"`_`4``````/BD`````````0````$```#@_04`
+M`````#BE`````````0````$```!`_P4``````%"E`````````0````$```#`
+M_P4``````("E`````````0````$````0``8``````)BE`````````0````$`
+M```@`08``````-BE`````````0````$```"`!08``````/"E`````````0``
+M``$```#`!@8```````BF`````````0````$```!0!P8``````""F````````
+M`0````$```"`!P8``````#BF`````````0````$```"0!P8``````%"F````
+M`````0````$```#@!P8``````'BF`````````0````$```!@"08``````)BF
+M`````````0````$```"`"08``````+BF`````````0````$```"@"08`````
+M`."F`````````0````$```"0"P8```````BG`````````0````$```"0#`8`
+M`````$BG`````````0````$```#P#08``````&BG`````````0````$````P
+M#@8``````)"G`````````0````$```"@#@8``````*BG`````````0````$`
+M``#0#@8``````-"G`````````0````$`````$`8``````/"G`````````0``
+M``$````P$`8```````BH`````````0````$```!P$`8``````#BH````````
+M`0````$```#P$08``````&"H`````````0````$```!`$P8``````("H````
+M`````0````$````P%`8``````*"H`````````0````$```"0%`8``````,"H
+M`````````0````$```#0%`8``````."H`````````0````$````0%08`````
+M`/BH`````````0````$```!`%08``````!BI`````````0````$```!P%08`
+M`````#"I`````````0````$```"@%08``````%"I`````````0````$```#@
+M%08``````&BI`````````0````$`````%@8``````(BI`````````0````$`
+M```P%@8``````*"I`````````0````$```!@%@8``````,"I`````````0``
+M``$```"@%@8``````-BI`````````0````$```#0%@8```````"J````````
+M`0````$```#P&08``````"BJ`````````0````$```"P&@8``````%"J````
+M`````0````$```"`&P8``````'BJ`````````0````$```!P'`8``````*"J
+M`````````0````$```!P'08``````,BJ`````````0````$````0'P8`````
+M`/"J`````````0````$```!@(`8``````!BK`````````0````$```!P(08`
+M`````$"K`````````0````$```"`(@8``````&BK`````````0````$```"P
+M(P8``````)"K`````````0````$```#@)`8``````+BK`````````0````$`
+M``"0)08``````-"K`````````0````$```#P)08``````/"K`````````0``
+M``$````P)@8```````BL`````````0````$```!`)P8``````"BL````````
+M`0````$```"`)P8``````$"L`````````0````$```!P*`8``````&BL````
+M`````0````$```#`*08``````("L`````````0````$```#P*08``````)BL
+M`````````0````$````@*@8``````,"L`````````0````$```"P+08`````
+M`."L`````````0````$```!`+@8```````BM`````````0````$```"0+@8`
+M`````""M`````````0````$`````+P8``````$BM`````````0````$```!`
+M,`8``````'"M`````````0````$```#@,08``````)BM`````````0````$`
+M``"0,@8``````,"M`````````0````$````@-`8``````.BM`````````0``
+M``$````0-08``````!"N`````````0````$```"@-08``````#BN````````
+M`0````$```!0-@8``````(BN`````````0````$```!`.`8``````*"N````
+M`````0````$```!@.`8``````+BN`````````0````$````0.08``````."N
+M`````````0````$```"`.08```````"O`````````0````$```"P.08`````
+M`"BO`````````0````$```!0.P8``````%BO`````````0````$```#P.P8`
+M`````'BO`````````0````$```"`/`8``````)BO`````````0````$````0
+M/08``````,"O`````````0````$````@/@8``````/"O`````````0````$`
+M```0/P8``````!"P`````````0````$```"0/P8``````"BP`````````0``
+M``$```"P/P8``````$"P`````````0````$```#P/P8``````%BP````````
+M`0````$````P0`8``````("P`````````0````$```#@208``````)BP````
+M`````0````$````P2@8``````,"P`````````0````$```#02P8``````."P
+M`````````0````$```#03`8``````!BQ`````````0````$```!03@8`````
+M`#"Q`````````0````$```#03@8``````'"Q`````````0````$```!@408`
+M`````)BQ`````````0````$`````4@8``````,BQ`````````0````$```!`
+M5`8``````/"Q`````````0````$````P508``````!BR`````````0````$`
+M``#P508``````%BR`````````0````$```"P6`8``````)BR`````````0``
+M``$```"P6P8``````-BR`````````0````$```!`7P8``````!BS````````
+M`0````$````08P8``````$BS`````````0````$`````9`8``````&"S````
+M`````0````$```!09`8``````'BS`````````0````$```"@9`8``````*"S
+M`````````0````$```"@:`8``````."S`````````0````$```#0;@8`````
+M``BT`````````0````$```#P<08``````#"T`````````0````$`````>08`
+M`````%BT`````````0````$```#`?08``````)BT`````````0````$```"@
+M@`8``````,"T`````````0````$```"@@08```````"U`````````0````$`
+M``!@@@8``````$"U`````````0````$````@@P8``````%BU`````````0``
+M``$```"0@P8``````'"U`````````0````$```"@@P8``````+"U````````
+M`0````$```!`A@8``````,BU`````````0````$```!PA@8``````/BU````
+M`````0````$```"`C@8``````!BV`````````0````$```#0C@8``````#"V
+M`````````0````$````@CP8``````%BV`````````0````$```!`EP8`````
+M`("V`````````0````$`````FP8``````*BV`````````0````$`````G08`
+M`````-"V`````````0````$```#0G08``````!"W`````````0````$```#`
+MG@8``````"BW`````````0````$```#PG@8``````%"W`````````0````$`
+M``"0H08``````'BW`````````0````$````PH@8``````*"W`````````0``
+M``$```#0H@8``````,BW`````````0````$```!@HP8``````/"W````````
+M`0````$```#PHP8``````!BX`````````0````$```"0I`8``````$"X````
+M`````0````$````@I08``````&BX`````````0````$```"PI08``````)"X
+M`````````0````$```!PI@8``````+BX`````````0````$```!@IP8`````
+M`."X`````````0````$```"PKP8``````""Y`````````0````$````PMP8`
+M`````#BY`````````0````$```!PMP8``````%"Y`````````0````$```"@
+MMP8``````("Y`````````0````$````PN`8``````*BY`````````0````$`
+M``"0N`8``````-"Y`````````0````$```#@N`8``````/"Y`````````0``
+M``$`````N08``````!BZ`````````0````$`````N@8``````$"Z````````
+M`0````$```"0N@8``````("Z`````````0````$```"PO`8``````*"Z````
+M`````0````$````0O08``````,"Z`````````0````$```!PO08``````.BZ
+M`````````0````$```!@O@8```````B[`````````0````$```#`O@8`````
+M`"B[`````````0````$````@OP8``````&B[`````````0````$```"0P08`
+M`````)"[`````````0````$```!PQ`8``````+"[`````````0````$```#`
+MQ`8``````-"[`````````0````$`````Q08``````/B[`````````0````$`
+M``!0Q08``````!"\`````````0````$```!PQ08``````#"\`````````0``
+M``$```!@Q@8``````'"\`````````0````$````0QP8``````(B\````````
+M`0````$````PQP8``````*"\`````````0````$```!`QP8``````,"\````
+M`````0````$````PR`8``````-B\`````````0````$```"0R`8```````"]
+M`````````0````$```!`R08``````"B]`````````0````$````PR@8`````
+M`&B]`````````0````$```!PRP8``````+B]`````````0````$```"PS`8`
+M`````-"]`````````0````$```#@S08``````/"]`````````0````$```"0
+MSP8```````B^`````````0````$```"@SP8``````""^`````````0````$`
+M``"PSP8``````#B^`````````0````$```#0SP8``````%"^`````````0``
+M``$```#PSP8``````&B^`````````0````$````@T`8``````("^````````
+M`0````$```!0T`8``````*B^`````````0````$```"@T08``````-"^````
+M`````0````$```#@T@8``````.B^`````````0````$````@TP8``````!"_
+M`````````0````$```#`TP8``````"B_`````````0````$````@U`8`````
+M`$"_`````````0````$```!`U`8``````'"_`````````0````$```!0UP8`
+M`````)B_`````````0````$```"PUP8``````+"_`````````0````$```#P
+MUP8``````,B_`````````0````$`````V`8``````/"_`````````0````$`
+M``"@V`8``````"C``````````0````$````0V08``````$C``````````0``
+M``$```"0V08``````'#``````````0````$````0V@8``````)C`````````
+M`0````$```#`V@8``````,#``````````0````$```!0VP8``````.C`````
+M`````0````$````0W`8``````!#!`````````0````$```"0W`8``````#C!
+M`````````0````$```!`W08``````&#!`````````0````$```!@W@8`````
+M`(C!`````````0````$````0WP8``````+#!`````````0````$```#`WP8`
+M`````-C!`````````0````$```"@X`8```````#"`````````0````$```"`
+MX08``````"#"`````````0````$````0X@8``````&#"`````````0````$`
+M```@XP8``````)C"`````````0````$```!PY@8``````+C"`````````0``
+M``$```#PY@8``````-#"`````````0````$````@YP8``````.C"````````
+M`0````$```!PYP8``````"##`````````0````$```!PZ`8``````&##````
+M`````0````$```!0Z@8``````*##`````````0````$```"@ZP8``````+C#
+M`````````0````$```"PZP8``````-##`````````0````$```#`ZP8`````
+M`.C#`````````0````$```#0ZP8``````"#$`````````0````$```#@[@8`
+M`````$#$`````````0````$`````[P8``````&#$`````````0````$```"`
+M[P8``````(C$`````````0````$```!@\`8``````+C$`````````0````$`
+M``#`\08``````-#$`````````0````$```#0\08``````/C$`````````0``
+M``$```#P\P8``````!#%`````````0````$`````]`8``````#C%````````
+M`0````$````P]08``````'C%`````````0````$```"`^@8``````+C%````
+M`````0````$```!P_08``````.#%`````````0````$```#0_@8```````C&
+M`````````0````$```"0_P8``````##&`````````0````$````0!@<`````
+M`%C&`````````0````$```"P"0<``````'C&`````````0````$`````"@<`
+M`````)C&`````````0````$````@"@<``````+#&`````````0````$````P
+M"@<``````,C&`````````0````$```"0"@<``````.#&`````````0````$`
+M``#0"@<```````#'`````````0````$````0"P<``````"C'`````````0``
+M``$```!@#@<``````%#'`````````0````$```#P%`<``````'C'````````
+M`0````$```#0&P<``````)#'`````````0````$````@'@<``````*C'````
+M`````0````$```!`'@<``````-#'`````````0````$```#0'P<``````/C'
+M`````````0````$```"P)`<``````"#(`````````0````$```"0)0<`````
+M`$#(`````````0````$````0)@<``````&C(`````````0````$```"@)P<`
+M`````(C(`````````0````$```!`*`<``````*#(`````````0````$```"@
+M*`<``````+C(`````````0````$`````*0<``````-C(`````````0````$`
+M```@*0<``````/C(`````````0````$```!`*0<``````"C)`````````0``
+M``$```#0+P<``````$C)`````````0````$```!`,`<``````(#)````````
+M`0````$```!@,`<``````)C)`````````0````$```"`,`<``````+#)````
+M`````0````$```"0,`<``````.#)`````````0````$```!0,0<``````/C)
+M`````````0````$```"0,0<``````!#*`````````0````$```"@,0<`````
+M`#C*`````````0````$```!0,@<``````&#*`````````0````$````P,P<`
+M`````'C*`````````0````$```!@,P<``````*#*`````````0````$```"P
+M,P<``````,#*`````````0````$```!`-`<``````-C*`````````0````$`
+M``!P-`<```````C+`````````0````$````0-@<``````#C+`````````0``
+M``$```"`-P<``````&C+`````````0````$````@.`<``````)#+````````
+M`0````$`````.0<``````+C+`````````0````$```"0.0<``````/#+````
+M`````0````$````@.P<``````##,`````````0````$```"`/`<``````&#,
+M`````````0````$```!P/0<``````(C,`````````0````$```!P/@<`````
+M`*#,`````````0````$```"@/@<``````,#,`````````0````$`````/P<`
+M`````.C,`````````0````$```!@/P<```````C-`````````0````$```"`
+M/P<``````"C-`````````0````$```"@/P<``````$C-`````````0````$`
+M``#`/P<``````'#-`````````0````$````@0`<``````)#-`````````0``
+M``$```!00`<``````+C-`````````0````$```#@0`<``````-C-````````
+M`0````$````@00<``````/#-`````````0````$```!P00<``````!C.````
+M`````0````$```"@0@<``````$#.`````````0````$````P0P<``````&#.
+M`````````0````$```!00P<``````'C.`````````0````$```!@0P<`````
+M`)#.`````````0````$```"00P<``````*C.`````````0````$```#00P<`
+M`````,C.`````````0````$```!@1`<``````/#.`````````0````$````0
+M10<``````"#/`````````0````$```#`10<``````%#/`````````0````$`
+M```P1@<``````&C/`````````0````$```"`1@<``````)#/`````````0``
+M``$```#P1@<``````+C/`````````0````$```!01P<``````-C/````````
+M`0````$```"@1P<```````#0`````````0````$```"`2`<``````"C0````
+M`````0````$```"@20<``````$C0`````````0````$```#P20<``````&#0
+M`````````0````$`````2@<``````(C0`````````0````$```"02P<`````
+M`*#0`````````0````$```#`2P<``````,#0`````````0````$`````3`<`
+M`````.#0`````````0````$````P30<```````C1`````````0````$`````
+M3@<``````"C1`````````0````$```!`3@<``````$C1`````````0````$`
+M``"`3@<``````&C1`````````0````$`````3P<``````(C1`````````0``
+M``$````P3P<``````*#1`````````0````$```"P3P<``````+C1````````
+M`0````$````@4`<``````/C1`````````0````$```#04P<``````"#2````
+M`````0````$```!`5`<``````$C2`````````0````$```"P50<``````'C2
+M`````````0````$`````5P<``````)C2`````````0````$```!`5P<`````
+M`+C2`````````0````$```"P5P<``````.C2`````````0````$```!@60<`
+M``````C3`````````0````$```#`60<``````##3`````````0````$```"P
+M6@<``````%C3`````````0````$````@6P<``````(C3`````````0````$`
+M``#P7P<``````+#3`````````0````$```"P80<``````,C3`````````0``
+M``$```!08@<``````.#3`````````0````$```#08@<``````"#4````````
+M`0````$```!@9`<``````$#4`````````0````$```"P9`<``````&#4````
+M`````0````$`````90<``````(C4`````````0````$```#P9@<``````*C4
+M`````````0````$```!09P<``````,C4`````````0````$```!@9P<`````
+M`.C4`````````0````$```#@9P<```````#5`````````0````$```#P9P<`
+M`````"#5`````````0````$````P:`<``````$C5`````````0````$`````
+M:0<``````&C5`````````0````$````P:0<``````)#5`````````0````$`
+M``"P:0<``````+#5`````````0````$````@:@<``````.C5`````````0``
+M``$```"`:@<```````#6`````````0````$```#0:@<``````!C6````````
+M`0````$`````:P<``````##6`````````0````$````P:P<``````$C6````
+M`````0````$```!@:P<``````'C6`````````0````$```#P:P<``````*#6
+M`````````0````$```!0;`<``````-C6`````````0````$````@;0<`````
+M`!#7`````````0````$```#P;0<``````%#7`````````0````$```#P;@<`
+M`````(#7`````````0````$```!@;P<``````*C7`````````0````$```"`
+M<`<``````-#7`````````0````$```#@<0<``````!#8`````````0````$`
+M```P<P<``````"C8`````````0````$`````=`<``````$#8`````````0``
+M``$```!P=`<``````%C8`````````0````$```#0=`<``````(#8````````
+M`0````$```"@=@<``````)C8`````````0````$````P=P<``````+C8````
+M`````0````$````P>`<``````-C8`````````0````$`````>@<```````C9
+M`````````0````$`````>P<``````#C9`````````0````$`````?`<`````
+M`%#9`````````0````$```!`?`<``````(#9`````````0````$```#P?0<`
+M`````+#9`````````0````$```"P?P<``````.#9`````````0````$```"`
+M@0<``````!#:`````````0````$```"P@P<``````#C:`````````0````$`
+M``!0A`<``````&#:`````````0````$```#PA`<``````(C:`````````0``
+M``$```#0A0<``````+#:`````````0````$```#`A@<``````/#:````````
+M`0````$```"`B0<```````C;`````````0````$`````B@<``````"#;````
+M`````0````$```#0B@<``````&#;`````````0````$```#PC@<``````*#;
+M`````````0````$```"0D`<``````-#;`````````0````$```!0D0<`````
+M`/#;`````````0````$````0D@<``````!#<`````````0````$```!0D@<`
+M`````#C<`````````0````$```#0DP<``````'C<`````````0````$`````
+MEP<``````)#<`````````0````$````0EP<``````+#<`````````0````$`
+M``"`EP<``````-#<`````````0````$```"@F`<``````/#<`````````0``
+M``$```#@F`<``````!#=`````````0````$```!PF0<``````##=````````
+M`0````$```!PG`<``````%#=`````````0````$````0G@<``````'#=````
+M`````0````$```!0G@<``````)C=`````````0````$```#@GP<``````,#=
+M`````````0````$```"PH`<```````#>`````````0````$```!PK0<`````
+M`!C>`````````0````$```#PK0<``````##>`````````0````$```!PK@<`
+M`````%#>`````````0````$```#@K@<``````'C>`````````0````$```"`
+MMP<``````+#>`````````0````$```#@N`<``````.#>`````````0````$`
+M``"@N0<```````C?`````````0````$```"0N@<``````"C?`````````0``
+M``$```#@N@<``````%C?`````````0````$```"`NP<``````(#?````````
+M`0````$```"@O`<``````+#?`````````0````$```!0O0<``````-C?````
+M`````0````$```#`O0<```````#@`````````0````$```!POP<``````"#@
+M`````````0````$```#@OP<``````$C@`````````0````$```!@P`<`````
+M`'#@`````````0````$```"`P0<``````)#@`````````0````$```#`P0<`
+M`````+C@`````````0````$```#`P@<``````.C@`````````0````$```!@
+MQ0<``````!CA`````````0````$```"@R0<``````$#A`````````0````$`
+M``"0R@<``````'#A`````````0````$```#@RP<``````*CA`````````0``
+M``$````PS@<``````-#A`````````0````$```#`S@<``````/#A````````
+M`0````$```#0S@<``````"CB`````````0````$```#0SP<``````$CB````
+M`````0````$````@T`<``````'#B`````````0````$`````U`<``````(CB
+M`````````0````$```#0U`<``````+#B`````````0````$```!0U0<`````
+M`.#B`````````0````$```"PU0<```````#C`````````0````$````0U@<`
+M`````"#C`````````0````$```!0U@<``````$CC`````````0````$```!@
+MUP<``````&CC`````````0````$```"PUP<``````)#C`````````0````$`
+M``!`V`<``````+CC`````````0````$```#@V0<``````-CC`````````0``
+M``$````PV@<```````#D`````````0````$```"`W`<``````##D````````
+M`0````$```#0W@<``````%#D`````````0````$```!`WP<``````&CD````
+M`````0````$```#@WP<``````)#D`````````0````$```#0X`<``````+#D
+M`````````0````$`````X0<``````-CD`````````0````$```!`X@<`````
+M`/CD`````````0````$```!PX@<``````!CE`````````0````$```#PX@<`
+M`````$CE`````````0````$````@Y`<``````'#E`````````0````$```#`
+MY`<``````+#E`````````0````$````0Y@<``````.#E`````````0````$`
+M``#0Y@<```````#F`````````0````$```#PY@<``````!CF`````````0``
+M``$````0YP<``````#CF`````````0````$```!0YP<``````%#F````````
+M`0````$```!PYP<``````'CF`````````0````$````@Z0<``````)#F````
+M`````0````$```!`Z0<``````+CF`````````0````$```"PZ0<``````.#F
+M`````````0````$```!0ZP<``````/CF`````````0````$```!PZP<`````
+M`!CG`````````0````$```#`ZP<``````##G`````````0````$```#@ZP<`
+M`````%#G`````````0````$````P[`<``````&CG`````````0````$```!0
+M[`<``````(CG`````````0````$```"@[`<``````*#G`````````0````$`
+M``#`[`<``````,CG`````````0````$````P[0<``````.#G`````````0``
+M``$```!0[0<```````#H`````````0````$```"@[0<``````!CH````````
+M`0````$```#`[0<``````$CH`````````0````$```!@[@<``````&#H````
+M`````0````$```"`[@<``````)CH`````````0````$```!P[P<``````+#H
+M`````````0````$```"0[P<``````.CH`````````0````$```"`\`<`````
+M``#I`````````0````$```"@\`<``````#CI`````````0````$```"0\0<`
+M`````%#I`````````0````$```#`\0<``````'#I`````````0````$````@
+M\@<``````(CI`````````0````$```!0\@<``````*CI`````````0````$`
+M``"P\@<``````,CI`````````0````$```#P\@<``````.CI`````````0``
+M``$```!0\P<```````CJ`````````0````$```"0\P<``````"CJ````````
+M`0````$```#P\P<``````$CJ`````````0````$````P]`<``````&CJ````
+M`````0````$```"0]`<``````(CJ`````````0````$````0]0<``````*CJ
+M`````````0````$```!@]0<``````,CJ`````````0````$```#@]0<`````
+M`/#J`````````0````$```"0]@<``````!CK`````````0````$````P]P<`
+M`````$#K`````````0````$`````^`<``````&CK`````````0````$```#@
+M^`<``````)#K`````````0````$````@^0<``````+#K`````````0````$`
+M``!@^0<``````-CK`````````0````$````@^@<```````#L`````````0``
+M``$```!@^@<``````"#L`````````0````$```"@^@<``````#CL````````
+M`0````$```#`^@<``````&#L`````````0````$```!0^P<``````'CL````
+M`````0````$```"0^P<``````*#L`````````0````$```!@_`<``````,CL
+M`````````0````$````@_0<``````/#L`````````0````$```!@_0<`````
+M`!#M`````````0````$```"@_0<``````#CM`````````0````$```!P_@<`
+M`````&#M`````````0````$```"P_@<``````(#M`````````0````$```#P
+M_@<``````*CM`````````0````$```#@_P<``````-#M`````````0````$`
+M```P``@``````/#M`````````0````$```!P``@``````!CN`````````0``
+M``$```"``0@``````$#N`````````0````$```#0`0@``````&#N````````
+M`0````$````0`@@``````(#N`````````0````$```#``@@``````*#N````
+M`````0````$````@`P@``````,#N`````````0````$```!@`P@``````-CN
+M`````````0````$```"``P@``````/CN`````````0````$```#``P@`````
+M`!CO`````````0````$````P!`@``````$#O`````````0````$```"`!`@`
+M`````&#O`````````0````$```#P!`@``````(CO`````````0````$```!`
+M!0@``````*CO`````````0````$```"P!0@``````-#O`````````0````$`
+M````!@@``````/#O`````````0````$```!P!@@``````!CP`````````0``
+M``$```#`!@@``````#CP`````````0````$````P!P@``````&#P````````
+M`0````$```"`!P@``````(#P`````````0````$```#P!P@``````*CP````
+M`````0````$```!`"`@``````,CP`````````0````$```#P"`@``````.CP
+M`````````0````$````P"P@```````CQ`````````0````$```"P"P@`````
+M`"CQ`````````0````$```#0"P@``````$CQ`````````0````$````0#`@`
+M`````&CQ`````````0````$```"0#`@``````(CQ`````````0````$```"P
+M#`@``````*CQ`````````0````$```#P#`@``````-#Q`````````0````$`
+M``#P#0@``````/#Q`````````0````$```!`#@@``````!#R`````````0``
+M``$```"`#@@``````##R`````````0````$`````#P@``````%#R````````
+M`0````$```"@#P@``````'#R`````````0````$```#@#P@``````)#R````
+M`````0````$```!@$`@``````+#R`````````0````$```"`$`@``````-#R
+M`````````0````$```#`$`@``````/#R`````````0````$```!0$0@`````
+M`!#S`````````0````$```"0$0@``````##S`````````0````$````@$@@`
+M`````%#S`````````0````$```!@$@@``````&CS`````````0````$```"`
+M$@@``````(CS`````````0````$```#`$@@``````*#S`````````0````$`
+M``#@$@@``````,#S`````````0````$````@$P@``````-CS`````````0``
+M``$```!`$P@```````#T`````````0````$```#0$P@``````"#T````````
+M`0````$```"0%`@``````$#T`````````0````$```"P%`@``````&#T````
+M`````0````$```!P%0@``````(#T`````````0````$```"0%0@``````*#T
+M`````````0````$`````%@@``````,#T`````````0````$```!`%@@`````
+M`.CT`````````0````$`````%P@``````"#U`````````0````$`````&`@`
+M`````$CU`````````0````$```#`&`@``````'#U`````````0````$```!`
+M&0@``````)#U`````````0````$```"`&0@``````+#U`````````0````$`
+M``#P&0@``````-#U`````````0````$````@&@@``````/#U`````````0``
+M``$```!@&@@```````CV`````````0````$```"0&@@``````$CV````````
+M`0````$```!P&P@``````&CV`````````0````$```#@&P@``````(CV````
+M`````0````$````@'`@``````*CV`````````0````$```#0'`@``````,CV
+M`````````0````$```"0'0@``````.#V`````````0````$```#@'0@`````
+M``#W`````````0````$```!P'@@``````"CW`````````0````$```"0'P@`
+M`````%#W`````````0````$```"@(`@``````'#W`````````0````$`````
+M(0@``````)#W`````````0````$````P(0@``````*CW`````````0````$`
+M``!`(0@``````,CW`````````0````$```!`(@@``````/#W`````````0``
+M``$```#0(P@``````"#X`````````0````$```#`)`@``````$CX````````
+M`0````$```#`)P@``````&#X`````````0````$```#0)P@``````'CX````
+M`````0````$````0*`@``````)CX`````````0````$```!@*`@``````+CX
+M`````````0````$```"P*`@``````.#X`````````0````$```!P*0@`````
+M``CY`````````0````$````@*@@``````##Y`````````0````$````0*P@`
+M`````'#Y`````````0````$````0+`@``````(CY`````````0````$````0
+M+0@``````*CY`````````0````$```"0+0@``````,#Y`````````0````$`
+M````+@@``````.#Y`````````0````$```!@+@@``````/CY`````````0``
+M``$````P+P@``````!CZ`````````0````$```#@,`@``````#CZ````````
+M`0````$```"0,0@``````%#Z`````````0````$```"P,0@``````&CZ````
+M`````0````$```#`,0@``````*CZ`````````0````$```#`-`@``````,CZ
+M`````````0````$`````-0@``````.CZ`````````0````$```!0-0@`````
+M``C[`````````0````$```#`-0@``````#C[`````````0````$```#`-@@`
+M`````&#[`````````0````$```"@-P@``````*#[`````````0````$```!@
+M.0@``````+C[`````````0````$```"`.0@``````.#[`````````0````$`
+M``"0.@@```````C\`````````0````$````0/0@``````##\`````````0``
+M``$```"P/@@``````&#\`````````0````$```!@10@``````'C\````````
+M`0````$```"@10@``````*C\`````````0````$```"@2`@``````,C\````
+M`````0````$```#`2`@``````/#\`````````0````$```!@20@``````!C]
+M`````````0````$```#P20@``````##]`````````0````$```"`2@@`````
+M`'#]`````````0````$```"02P@``````)C]`````````0````$```"@3`@`
+M`````,#]`````````0````$````P30@``````.C]`````````0````$```!@
+M3P@``````!#^`````````0````$```!`4`@``````##^`````````0````$`
+M``"P4`@``````%#^`````````0````$```!040@``````'C^`````````0``
+M``$```!@4@@``````+C^`````````0````$```#`4@@``````-#^````````
+M`0````$```#@4@@``````.C^`````````0````$```#P4@@```````#_````
+M`````0````$````04P@``````"#_`````````0````$```!P4P@``````$#_
+M`````````0````$```"04P@``````%C_`````````0````$```"@4P@`````
+M`'C_`````````0````$```#`4P@``````*#_`````````0````$```"P5`@`
+M`````,#_`````````0````$`````50@``````````0```````0````$```!`
+M50@``````!@``0```````0````$```!P50@``````$@``0```````0````$`
+M``"@50@``````&@``0```````0````$```#050@``````(@``0```````0``
+M``$````05@@``````*@``0```````0````$```!`5@@``````-```0``````
+M`0````$`````5P@```````@!`0```````0````$````@5P@``````"@!`0``
+M`````0````$```!05P@``````$@!`0```````0````$```!P5P@``````&@!
+M`0```````0````$```"@5P@``````*@!`0```````0````$```"P6`@`````
+M`-`!`0```````0````$````P60@``````.@!`0```````0````$```#`60@`
+M``````@"`0```````0````$```#06@@``````#`"`0```````0````$````@
+M70@``````&@"`0```````0````$```!`70@``````(@"`0```````0````$`
+M``#`70@``````*@"`0```````0````$````@7@@``````-`"`0```````0``
+M``$```"@7@@``````/@"`0```````0````$```#`8`@``````"`#`0``````
+M`0````$```!09`@``````$`#`0```````0````$```!P9`@``````%@#`0``
+M`````0````$```#@9`@``````(`#`0```````0````$```"090@``````*`#
+M`0```````0````$```!`9@@``````+@#`0```````0````$```#`9@@`````
+M`.`#`0```````0````$```#@:`@``````"`$`0```````0````$````P:P@`
+M`````#@$`0```````0````$```!@:P@``````%`$`0```````0````$```"0
+M:P@``````(`$`0```````0````$```#P:P@``````*@$`0```````0````$`
+M``!`;`@``````,`$`0```````0````$```"`;`@``````-@$`0```````0``
+M``$`````;0@``````/`$`0```````0````$```!P;0@``````!`%`0``````
+M`0````$```!@;@@``````"@%`0```````0````$```"@;@@``````%`%`0``
+M`````0````$`````;P@``````)`%`0```````0````$```!P<`@``````+@%
+M`0```````0````$````@<@@``````/@%`0```````0````$```!@=`@`````
+M`"`&`0```````0````$````@=0@``````%@&`0```````0````$`````=@@`
+M`````(`&`0```````0````$```#`=P@``````*`&`0```````0````$````0
+M>`@``````-`&`0```````0````$```"0>`@``````/`&`0```````0````$`
+M``#0>`@``````#`'`0```````0````$````@?0@``````%`'`0```````0``
+M``$```!P?0@``````(@'`0```````0````$```!0?@@``````,@'`0``````
+M`0````$```#`?P@``````/@'`0```````0````$```!`@`@``````!@(`0``
+M`````0````$```#@@`@``````#`(`0```````0````$`````@@@``````%@(
+M`0```````0````$```"@@P@``````'@(`0```````0````$```#@@P@`````
+M`*`(`0```````0````$````PA0@``````,@(`0```````0````$```#`A@@`
+M``````@)`0```````0````$```!0B0@``````$@)`0```````0````$```"@
+MB@@``````(@)`0```````0````$```!@C`@``````+`)`0```````0````$`
+M``#@C`@``````-`)`0```````0````$````PC0@``````.@)`0```````0``
+M``$```"0C0@``````"@*`0```````0````$````@D@@``````&@*`0``````
+M`0````$```#`P0@``````*`*`0```````0````$```"@Q`@``````.`*`0``
+M`````0````$```!`R@@```````@+`0```````0````$```"PRP@``````"@+
+M`0```````0````$```!`S`@``````&@+`0```````0````$```!@SP@`````
+M`)`+`0```````0````$```!PT`@``````-`+`0```````0````$```#@TP@`
+M`````!`,`0```````0````$```#0VP@``````%`,`0```````0````$```#0
+MW@@``````'`,`0```````0````$````@WP@``````*@,`0```````0````$`
+M``#@WP@``````-`,`0```````0````$```"0X0@``````/@,`0```````0``
+M``$```"PXP@``````"`-`0```````0````$```!@Y@@``````$`-`0``````
+M`0````$```"@Y@@``````&`-`0```````0````$`````YP@``````)`-`0``
+M`````0````$```!0Z`@``````+`-`0```````0````$```"PZ`@``````-@-
+M`0```````0````$````PZ0@````````.`0```````0````$````PZ@@`````
+M`"@.`0```````0````$```#PZ@@``````$@.`0```````0````$````PZP@`
+M`````&@.`0```````0````$````P[`@``````*`.`0```````0````$```!@
+M[`@``````,`.`0```````0````$```"0[`@``````.`.`0```````0````$`
+M``"P[`@````````/`0```````0````$```#@[`@``````"@/`0```````0``
+M``$```!@[@@``````%`/`0```````0````$```#@[@@``````&@/`0``````
+M`0````$````@[P@``````(@/`0```````0````$```#0[P@``````+`/`0``
+3`````0````$`````\@@`````````
+`
+end
diff --git a/sys/dev/hpt27xx/array.h b/sys/dev/hpt27xx/array.h
new file mode 100644
index 0000000..e22464c
--- /dev/null
+++ b/sys/dev/hpt27xx/array.h
@@ -0,0 +1,187 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+
+#ifndef _HPT_ARRAY_H_
+#define _HPT_ARRAY_H_
+
+#define VERMAGIC_ARRAY 46
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#define MAX_ARRAY_NAME 16
+
+#ifndef MAX_MEMBERS
+#define MAX_MEMBERS 16
+#endif
+
+#if MAX_MEMBERS<=16
+typedef HPT_U16 HPT_MMASK;
+#elif MAX_MEMBERS<=32
+typedef HPT_U32 HPT_MMASK;
+#elif MAX_MEMBERS<=64
+typedef HPT_U64 HPT_MMASK;
+#else
+#error "MAX_MEMBERS too large"
+#endif
+
+#define HPT_MMASK_VALUE(x) (HPT_MMASK)((HPT_MMASK)1<<(x))
+
+#if MAX_MEMBERS<32
+#define HPT_MMASK_VALUE_SAFE(x) HPT_MMASK_VALUE(x)
+#else
+#define HPT_MMASK_VALUE_SAFE(x) ((x)>=MAX_MEMBERS? (HPT_MMASK)0 : HPT_MMASK_VALUE(x))
+#endif
+
+#define MAX_REBUILD_SECTORS 128
+
+typedef struct _RAID_FLAGS {
+ HPT_UINT rf_need_initialize : 1;
+ HPT_UINT rf_need_rebuild: 1;
+ HPT_UINT rf_need_sync: 1;
+ /* ioctl flags */
+ HPT_UINT rf_auto_rebuild: 1;
+ HPT_UINT rf_rebuilding: 1;
+ HPT_UINT rf_verifying: 1;
+ HPT_UINT rf_initializing: 1;
+ HPT_UINT rf_abort_verifying: 1;
+ HPT_UINT rf_raid15: 1;
+ HPT_UINT rf_v3_format : 1;
+ HPT_UINT rf_need_transform : 1;
+ HPT_UINT rf_transforming : 1;
+ HPT_UINT rf_abort_transform : 1;
+ HPT_UINT rf_log_write: 1;
+} RAID_FLAGS;
+
+typedef struct transform_cmd_ext
+{
+ HPT_LBA lba;
+ HPT_U16 total_sectors;
+ HPT_U16 finished_sectors;
+} TRANSFORM_CMD_EXT , *PTRANSFORM_CMD_EXT;
+
+
+#define TO_MOVE_DATA 0
+#define TO_INITIALIZE 1
+#define TO_INITIALIZE_ONLY 2
+#define TO_MOVE_DATA_ONLY 3
+typedef struct hpt_transform
+{
+ HPT_U32 stamp;
+ PVDEV source;
+ PVDEV target;
+ struct list_head link;
+ HPT_U8 transform_from_tail;
+ struct tq_item task;
+
+ struct lock_request lock;
+ TRANSFORM_CMD_EXT cmdext;
+
+ HPT_U64 transform_point;
+ HPT_U16 transform_sectors_per_step;
+ HPT_U8 operation;
+ HPT_U8 disabled;
+} HPT_TRANSFORM, *PHPT_TRANSFORM;
+
+typedef struct hpt_array
+{
+ HPT_U32 array_stamp;
+ HPT_U32 data_stamp;
+ HPT_U32 array_sn;
+
+ HPT_U8 ndisk;
+ HPT_U8 block_size_shift;
+ HPT_U16 strip_width;
+ HPT_U8 sector_size_shift; /*sector size = 512B<<sector_size_shift*/
+ HPT_U8 jid;
+ HPT_U8 reserved[2];
+
+
+ HPT_MMASK outdated_members;
+ HPT_MMASK offline_members;
+
+ PVDEV member[MAX_MEMBERS];
+
+ RAID_FLAGS flags;
+
+ HPT_U64 rebuilt_sectors;
+
+
+ HPT_U8 name[MAX_ARRAY_NAME];
+ PHPT_TRANSFORM transform;
+
+ TIME_RECORD create_time;
+ HPT_U8 description[64];
+ HPT_U8 create_manager[16];
+
+#ifdef OS_SUPPORT_TASK
+ int floating_priority;
+ OSM_TASK ioctl_task;
+ IOCTL_ARG ioctl_arg;
+
+ char ioctl_inbuf[sizeof(PVDEV)+sizeof(HPT_U64)+sizeof(HPT_U16)];
+ char ioctl_outbuf[sizeof(HPT_UINT)];
+#endif
+
+} HPT_ARRAY, *PHPT_ARRAY;
+
+#ifdef OS_SUPPORT_TASK
+void ldm_start_rebuild(struct _VDEV *pArray);
+#else
+#define ldm_start_rebuild(pArray)
+#endif
+
+typedef struct _raw_partition{
+ struct _raw_partition * next;
+ __HPT_RAW_LBA start;
+ __HPT_RAW_LBA capacity;
+ PVDEV vd_part;
+} RAW_PARTITION, *PRAW_PARTITION;
+
+typedef struct hpt_partiton
+{
+ PVDEV raw_disk;
+ __HPT_RAW_LBA des_location;
+ PRAW_PARTITION raw_part;
+ HPT_U8 del_mbr;
+ HPT_U8 reserved[3];
+} HPT_PARTITION, *PHPT_PARTITION;
+
+void ldm_check_array_online(PVDEV pArray);
+void ldm_generic_member_failed(PVDEV member);
+void ldm_sync_array_info(PVDEV pArray);
+void ldm_sync_array_stamp(PVDEV pArray);
+void ldm_add_spare_to_array(PVDEV pArray, PVDEV spare_partition);
+
+#if defined(__cplusplus)
+}
+#endif
+#endif
diff --git a/sys/dev/hpt27xx/him.h b/sys/dev/hpt27xx/him.h
new file mode 100644
index 0000000..58d4217
--- /dev/null
+++ b/sys/dev/hpt27xx/him.h
@@ -0,0 +1,496 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+
+#ifndef _HPT_HIM_H_
+#define _HPT_HIM_H_
+
+#define VERMAGIC_HIM 55
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#include <dev/hpt27xx/list.h>
+
+#define SECTOR_TO_BYTE_SHIFT 9
+#define SECTOR_TO_BYTE(x) ((HPT_U32)(x) << SECTOR_TO_BYTE_SHIFT)
+#define BYTE_TO_SECTOR(x) ((x)>>SECTOR_TO_BYTE_SHIFT)
+
+typedef struct _PCI_ID
+{
+ HPT_U16 vid;
+ HPT_U16 did;
+ HPT_U32 subsys;
+ HPT_U8 rev;
+ HPT_U8 nbase;
+ HPT_U16 reserve;
+}
+PCI_ID;
+
+typedef struct _PCI_ADDRESS
+{
+ HPT_U8 tree;
+ HPT_U8 bus;
+ HPT_U8 device;
+ HPT_U8 function;
+}
+PCI_ADDRESS;
+
+typedef struct _HIM_ADAPTER_CONFIG
+{
+ PCI_ADDRESS pci_addr;
+ PCI_ID pci_id;
+
+ HPT_U8 max_devices;
+
+ HPT_U8 bProbeInInitializing:1;
+
+ HPT_U8 bSpinupOneDevEachTime:1;
+
+ HPT_U8 bGlobalNcq:1;
+ HPT_U8 bSGPIOPartSupport:1;
+
+ HPT_U8 bNeedSASIdleTimer:1;
+ HPT_U8 reserved:3;
+
+ HPT_U8 bDevsPerBus;
+ HPT_U8 first_on_slot;
+
+ HPT_U8 bChipType;
+ HPT_U8 bChipIntrNum;
+ HPT_U8 bChipFlags;
+ HPT_U8 bNumBuses;
+
+ HPT_U8 szVendorID[36];
+ HPT_U8 szProductID[36];
+ HPT_U32 nvramSize;
+ HPT_U64 nvramAddress;
+ HPT_U8 slot_index;
+ HPT_U8 reserved2[11];
+}
+HIM_ADAPTER_CONFIG, *PHIM_ADAPTER_CONFIG;
+
+typedef struct _HIM_CHANNEL_CONFIG
+{
+ HPT_U32 io_port;
+ HPT_U32 ctl_port;
+} HIM_CHANNEL_CONFIG, *PHIM_CHANNEL_CONFIG;
+
+typedef struct _HIM_DEVICE_FLAGS
+{
+ HPT_UINT df_atapi :1;
+ HPT_UINT df_removable_drive :1;
+ HPT_UINT df_on_line :1;
+ HPT_UINT df_reduce_mode :1;
+ HPT_UINT df_sata :1;
+ HPT_UINT df_on_pm_port :1;
+ HPT_UINT df_support_read_ahead :1;
+ HPT_UINT df_read_ahead_enabled :1;
+ HPT_UINT df_support_write_cache :1;
+ HPT_UINT df_write_cache_enabled :1;
+ HPT_UINT df_cdrom_device :1;
+ HPT_UINT df_tape_device :1;
+ HPT_UINT df_support_tcq :1;
+ HPT_UINT df_tcq_enabled :1;
+ HPT_UINT df_support_ncq :1;
+ HPT_UINT df_ncq_enabled :1;
+ HPT_UINT df_sas :1;
+ HPT_UINT df_in_enclosure :1;
+ HPT_UINT df_ssd :1;
+} DEVICE_FLAGS, *PDEVICE_FLAGS;
+
+#pragma pack(1)
+typedef struct _IDENTIFY_DATA {
+ HPT_U16 GeneralConfiguration;
+ HPT_U16 NumberOfCylinders;
+ HPT_U16 Reserved1;
+ HPT_U16 NumberOfHeads;
+ HPT_U16 UnformattedBytesPerTrack;
+ HPT_U16 UnformattedBytesPerSector;
+ HPT_U8 SasAddress[8];
+ HPT_U16 SerialNumber[10];
+ HPT_U16 BufferType;
+ HPT_U16 BufferSectorSize;
+ HPT_U16 NumberOfEccBytes;
+ HPT_U16 FirmwareRevision[4];
+ HPT_U16 ModelNumber[20];
+ HPT_U8 MaximumBlockTransfer;
+ HPT_U8 VendorUnique2;
+ HPT_U16 DoubleWordIo;
+ HPT_U16 Capabilities;
+ HPT_U16 Reserved2;
+ HPT_U8 VendorUnique3;
+ HPT_U8 PioCycleTimingMode;
+ HPT_U8 VendorUnique4;
+ HPT_U8 DmaCycleTimingMode;
+ HPT_U16 TranslationFieldsValid;
+ HPT_U16 NumberOfCurrentCylinders;
+ HPT_U16 NumberOfCurrentHeads;
+ HPT_U16 CurrentSectorsPerTrack;
+ HPT_U32 CurrentSectorCapacity;
+ HPT_U16 CurrentMultiSectorSetting;
+ HPT_U32 UserAddressableSectors;
+ HPT_U8 SingleWordDMASupport;
+ HPT_U8 SingleWordDMAActive;
+ HPT_U8 MultiWordDMASupport;
+ HPT_U8 MultiWordDMAActive;
+ HPT_U8 AdvancedPIOModes;
+ HPT_U8 Reserved4;
+ HPT_U16 MinimumMWXferCycleTime;
+ HPT_U16 RecommendedMWXferCycleTime;
+ HPT_U16 MinimumPIOCycleTime;
+ HPT_U16 MinimumPIOCycleTimeIORDY;
+ HPT_U16 Reserved5[2];
+ HPT_U16 ReleaseTimeOverlapped;
+ HPT_U16 ReleaseTimeServiceCommand;
+ HPT_U16 MajorRevision;
+ HPT_U16 MinorRevision;
+ HPT_U16 MaxQueueDepth;
+ HPT_U16 SataCapability;
+ HPT_U16 Reserved6[9];
+ HPT_U16 CommandSupport;
+ HPT_U16 CommandEnable;
+ HPT_U16 UtralDmaMode;
+ HPT_U16 Reserved7[11];
+ HPT_U32 Lba48BitLow;
+ HPT_U32 Lba48BitHigh;
+ HPT_U16 Reserved8[23];
+ HPT_U16 SpecialFunctionsEnabled;
+ HPT_U16 Reserved9[128];
+}
+#ifdef __GNUC__
+__attribute__((packed))
+#endif
+IDENTIFY_DATA, *PIDENTIFY_DATA;
+#pragma pack()
+
+typedef struct _HIM_DEVICE_CONFIG
+{
+ HPT_U64 capacity;
+
+ DEVICE_FLAGS flags;
+
+ HPT_U8 path_id;
+ HPT_U8 target_id;
+ HPT_U8 max_queue_depth;
+ HPT_U8 spin_up_mode;
+
+ HPT_U8 reserved;
+ HPT_U8 transfer_mode;
+ HPT_U8 bMaxShowMode;
+ HPT_U8 bDeUsable_Mode;
+
+ HPT_U16 max_sectors_per_cmd;
+
+ PIDENTIFY_DATA pIdentifyData;
+
+
+ HPT_U8 fixed_path_id; /*equals to phy id */
+}
+HIM_DEVICE_CONFIG, *PHIM_DEVICE_CONFIG;
+
+
+#define _DIT_MODE 0
+#define _DIT_601 1
+#define _DIT_READ_AHEAD 2
+#define _DIT_WRITE_CACHE 3
+#define _DIT_TCQ 4
+#define _DIT_NCQ 5
+#define _DIT_BEEP_OFF 6
+#define _DIT_SPIN_UP_MODE 7
+#define _DIT_IDLE_STANDBY 8
+#define _DIT_IDENTIFY 9
+
+#define SPIN_UP_MODE_NOSUPPORT 0
+#define SPIN_UP_MODE_FULL 1
+#define SPIN_UP_MODE_STANDBY 2
+
+struct tcq_control {
+ HPT_U8 enable;
+ HPT_U8 depth;
+};
+
+struct ncq_control {
+ HPT_U8 enable;
+ HPT_U8 depth;
+};
+
+typedef struct _HIM_ALTERABLE_DEV_INFO{
+ HPT_U8 type;
+ union {
+ HPT_U8 mode;
+ HPT_U8 enable_read_ahead;
+ HPT_U8 enable_read_cache;
+ HPT_U8 enable_write_cache;
+ struct tcq_control tcq;
+ struct ncq_control ncq;
+ void * adapter;
+ HPT_U8 spin_up_mode;
+ HPT_U8 idle_standby_timeout;
+ HPT_U8 identify_indicator;
+ }u;
+} HIM_ALTERABLE_DEV_INFO, *PHIM_ALTERABLE_DEV_INFO;
+
+struct _COMMAND;
+struct _IOCTL_ARG;
+
+typedef void (*PROBE_CALLBACK)(void *arg, void *dev, int index);
+
+typedef struct _HIM {
+ char *name;
+ struct _HIM *next;
+ HPT_UINT max_sg_descriptors;
+ #define _HIM_INTERFACE(_type, _fn, _args) _type (* _fn) _args;
+ #include <dev/hpt27xx/himfuncs.h>
+}
+HIM, *PHIM;
+
+
+#pragma pack(1)
+#ifdef SG_FLAG_EOT
+#error "don't use SG_FLAG_EOT with _SG.eot. clean the code!"
+#endif
+
+typedef struct _SG {
+ HPT_U32 size;
+ HPT_UINT eot;
+ union {
+ HPT_U8 FAR * _logical;
+ BUS_ADDRESS bus;
+ }
+ addr;
+}
+SG, *PSG;
+#pragma pack()
+
+typedef struct _AtaCommand
+{
+ HPT_U64 Lba;
+ HPT_U16 nSectors;
+ HPT_U16 pad;
+} AtaComm, *PAtaComm;
+
+#define ATA_CMD_NOP 0x0
+
+#define ATA_CMD_SET_FEATURES 0xef
+#define ATA_CMD_FLUSH 0xE7
+#define ATA_CMD_VERIFY 0x40
+#define ATA_CMD_STANDBY 0xe2
+#define ATA_CMD_READ_MULTI 0xC4
+#define ATA_CMD_READ_MULTI_EXT 0x29
+#define ATA_CMD_WRITE_MULTI 0xC5
+#define ATA_CMD_WRITE_MULTI_EXT 0x39
+#define ATA_CMD_WRITE_MULTI_FUA_EXT 0xCE
+
+#define ATA_CMD_READ_DMA 0xc8 /* IDE DMA read command */
+#define ATA_CMD_WRITE_DMA 0xca /* IDE DMA write command */
+#define ATA_CMD_READ_DMA_EXT 0x25
+#define ATA_CMD_READ_QUEUE_EXT 0x26
+#define ATA_CMD_READ_MAX_ADDR 0x27
+#define ATA_CMD_READ_EXT 0x24
+#define ATA_CMD_VERIFY_EXT 0x42
+#define ATA_CMD_WRITE_DMA_EXT 0x35
+#define ATA_CMD_WRITE_QUEUE_EXT 0x36
+#define ATA_CMD_WRITE_EXT 0x34
+
+#define ATA_SET_FEATURES_XFER 0x3
+#define ATA_SECTOR_SIZE 512
+
+typedef struct _PassthroughCmd {
+ HPT_U16 bFeaturesReg;
+ HPT_U16 bSectorCountReg;
+ HPT_U16 bLbaLowReg;
+ HPT_U16 bLbaMidReg;
+ HPT_U16 bLbaHighReg;
+ HPT_U8 bDriveHeadReg;
+ HPT_U8 bCommandReg;
+ HPT_U16 nSectors;
+ HPT_U8 *pDataBuffer;
+}
+PassthroughCmd;
+
+typedef struct _ScsiComm {
+ HPT_U8 cdbLength;
+ HPT_U8 senseLength;
+ HPT_U8 scsiStatus;
+ HPT_U8 reserve1;
+ HPT_U32 dataLength;
+ HPT_U8 *cdb;
+ HPT_U8 *senseBuffer;
+}
+ScsiComm;
+
+
+#define CTRL_CMD_REBUILD 1
+#define CTRL_CMD_VERIFY 2
+#define CTRL_CMD_INIT 3
+
+
+typedef struct _R5ControlCmd {
+ HPT_U64 StripeLine;
+ HPT_U16 Offset;
+ HPT_U8 Command;
+ HPT_U8 reserve1;
+}
+R5ControlCmd, *PR5ControlCmd;
+
+typedef struct _HPT_ADDRESS
+{
+ HPT_U8 * logical;
+ BUS_ADDRESS bus;
+}
+HPT_ADDRESS;
+
+
+typedef struct ctl_pages {
+ HPT_ADDRESS *pages;
+ HPT_UINT page_size;
+ HPT_UINT npages;
+ HPT_UINT min_sg_descriptors;
+} CONTROL_PAGES, *PCONTROL_PAGES;
+
+typedef struct _R1ControlCmd {
+ HPT_U64 Lba;
+ HPT_U16 nSectors;
+ HPT_U8 Command; /* CTRL_CMD_XXX */
+ HPT_U8 reserve1;
+ PCONTROL_PAGES ctl_pages;
+}
+R1ControlCmd, *PR1ControlCmd;
+
+typedef void (*TQ_PROC)(void *arg);
+
+struct tq_item {
+ TQ_PROC proc;
+ void *arg;
+ struct tq_item *next;
+};
+
+#define INIT_TQ_ITEM(t, p, a) \
+ do { (t)->proc = p; (t)->arg = a; (t)->next = 0; } while (0)
+
+typedef struct _COMMAND
+{
+
+ struct _VBUS * vbus;
+
+ struct freelist *grplist;
+ HPT_UINT grpcnt;
+
+
+ struct list_head q_link;
+ struct tq_item done_dpc;
+
+ HPT_UINT extsize;
+ void *ext;
+
+
+
+ void *target;
+ void *priv;
+ HPT_UPTR priv2;
+
+ int priority;
+ struct lock_request *owned_lock;
+ struct lock_request *lock_req;
+ void (*dtor)(struct _COMMAND *, void *);
+ void *dtor_arg;
+
+ union{
+ AtaComm Ide;
+ PassthroughCmd Passthrough;
+ ScsiComm Scsi;
+ R5ControlCmd R5Control;
+ R1ControlCmd R1Control;
+ } uCmd;
+
+ HPT_U8 type; /* CMD_TYPE_* */
+
+ struct {
+ HPT_U8 physical_sg: 1;
+ HPT_U8 data_in: 1;
+ HPT_U8 data_out: 1;
+ HPT_U8 transform : 1;
+ HPT_U8 hard_flush: 2;
+ HPT_U8 from_cc: 1;
+ HPT_U8 force_cc: 1;
+ } flags;
+
+ /* return status */
+ HPT_U8 Result;
+ /* retry count */
+ HPT_U8 RetryCount;
+
+
+ PSG psg;
+
+
+ int (*buildsgl)(struct _COMMAND *cmd, PSG psg, int logical);
+ void (*done)(struct _COMMAND *cmd);
+}
+COMMAND, *PCOMMAND;
+
+/* command types */
+#define CMD_TYPE_IO 0
+#define CMD_TYPE_CONTROL 1
+#define CMD_TYPE_ATAPI 2
+#define CMD_TYPE_SCSI CMD_TYPE_ATAPI
+#define CMD_TYPE_PASSTHROUGH 3
+#define CMD_TYPE_FLUSH 4
+#define CMD_TYPE_IO_INDIRECT 0x80
+
+/* flush command flags */
+#define CF_HARD_FLUSH_CACHE 1
+#define CF_HARD_FLUSH_STANDBY 2
+
+/* command return values */
+#define RETURN_PENDING 0
+#define RETURN_SUCCESS 1
+#define RETURN_BAD_DEVICE 2
+#define RETURN_BAD_PARAMETER 3
+#define RETURN_WRITE_NO_DRQ 4
+#define RETURN_DEVICE_BUSY 5
+#define RETURN_INVALID_REQUEST 6
+#define RETURN_SELECTION_TIMEOUT 7
+#define RETURN_IDE_ERROR 8
+#define RETURN_NEED_LOGICAL_SG 9
+#define RETURN_NEED_PHYSICAL_SG 10
+#define RETURN_RETRY 11
+#define RETURN_DATA_ERROR 12
+#define RETURN_BUS_RESET 13
+#define RETURN_BAD_TRANSFER_LENGTH 14
+#define RETURN_INSUFFICIENT_MEMORY 15
+#define RETURN_SECTOR_ERROR 16
+#define RETURN_NEED_SPINUP 17
+
+#if defined(__cplusplus)
+}
+#endif
+#endif
diff --git a/sys/dev/hpt27xx/himfuncs.h b/sys/dev/hpt27xx/himfuncs.h
new file mode 100644
index 0000000..a14ff77
--- /dev/null
+++ b/sys/dev/hpt27xx/himfuncs.h
@@ -0,0 +1,107 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+/*
+ * define _HIM_INTERFACE before include this file, and
+ * undef it after include this file.
+ */
+
+
+#ifndef _HIM_INTERFACE
+#error "you must define _HIM_INTERFACE before this file"
+#endif
+
+_HIM_INTERFACE(HPT_BOOL, get_supported_device_id, (int index, PCI_ID *id))
+
+_HIM_INTERFACE(HPT_U8, get_controller_count, (PCI_ID *id, HPT_U8 *reached, PCI_ADDRESS *addr))
+
+
+_HIM_INTERFACE(HPT_UINT, get_adapter_size, (const PCI_ID *id))
+
+
+_HIM_INTERFACE(HPT_BOOL, create_adapter, (const PCI_ID *id, PCI_ADDRESS pciAddress, void *adapter, void *osext))
+
+_HIM_INTERFACE(void, get_adapter_config, (void *adapter, HIM_ADAPTER_CONFIG *config))
+
+_HIM_INTERFACE(HPT_BOOL, get_meminfo, (void *adapter))
+
+
+_HIM_INTERFACE(HPT_BOOL, adapter_on_same_vbus, (void *adapter1, void *adapter2))
+_HIM_INTERFACE(void, route_irq, (void *adapter, HPT_BOOL enable))
+
+
+_HIM_INTERFACE(HPT_BOOL, initialize, (void *adapter))
+
+
+_HIM_INTERFACE(HPT_UINT, get_device_size, (void *adapter))
+
+
+_HIM_INTERFACE(HPT_BOOL, probe_device, (void *adapter, int index, void *devhandle, PROBE_CALLBACK done, void *arg))
+_HIM_INTERFACE(void *, get_device, (void *adapter, int index))
+_HIM_INTERFACE(void, get_device_config, (void *dev, HIM_DEVICE_CONFIG *config))
+_HIM_INTERFACE(void, remove_device, (void *dev))
+
+_HIM_INTERFACE(void, reset_device, (void * dev, void (*done)(void *arg), void *arg))
+
+
+_HIM_INTERFACE(HPT_U32, get_cmdext_size, (void))
+
+_HIM_INTERFACE(void, queue_cmd, (void *dev, struct _COMMAND *cmd))
+
+
+_HIM_INTERFACE(int, read_write, (void *dev,HPT_LBA lba, HPT_U16 nsector, HPT_U8 *buffer, HPT_BOOL read))
+
+_HIM_INTERFACE(HPT_BOOL, intr_handler, (void *adapter))
+_HIM_INTERFACE(HPT_BOOL, intr_control, (void * adapter, HPT_BOOL enable))
+
+
+_HIM_INTERFACE(int, get_channel_config, (void * adapter, int index, PHIM_CHANNEL_CONFIG pInfo))
+_HIM_INTERFACE(int, set_device_info, (void * dev, PHIM_ALTERABLE_DEV_INFO pInfo))
+_HIM_INTERFACE(void, unplug_device, (void * dev))
+
+
+_HIM_INTERFACE(void, shutdown, (void *adapter))
+_HIM_INTERFACE(void, suspend, (void *adapter))
+_HIM_INTERFACE(void, resume, (void *adapter))
+_HIM_INTERFACE(void, release_adapter, (void *adapter))
+
+/*called after ldm_register_adapter*/
+_HIM_INTERFACE(HPT_BOOL, verify_adapter, (void *adapter))
+
+/* (optional) */
+_HIM_INTERFACE(void, ioctl, (void * adapter, struct _IOCTL_ARG *arg))
+_HIM_INTERFACE(int, compare_slot_seq, (void *adapter1, void *adapter2))
+_HIM_INTERFACE(int, get_enclosure_count, (void *adapter))
+_HIM_INTERFACE(int, get_enclosure_info, (void *adapter, int id, void *pinfo))
+_HIM_INTERFACE(int, get_enclosure_info_v2, (void *adapter, int id, void *pinfo))
+_HIM_INTERFACE(int, get_enclosure_info_v3, (void *adapter, int id, void *pinfo))
+
+_HIM_INTERFACE(HPT_BOOL, flash_access, (void *adapter, HPT_U32 offset, void *value, int size, HPT_BOOL reading))
+
+#undef _HIM_INTERFACE
diff --git a/sys/dev/hpt27xx/hpt27xx_config.c b/sys/dev/hpt27xx/hpt27xx_config.c
new file mode 100644
index 0000000..f87c7ee
--- /dev/null
+++ b/sys/dev/hpt27xx/hpt27xx_config.c
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+/****************************************************************************
+ * config.c - auto-generated file
+ ****************************************************************************/
+#include <dev/hpt27xx/os_bsd.h>
+
+extern int init_module_him_rr2720(void);
+extern int init_module_him_rr273x(void);
+extern int init_module_him_rr276x(void);
+extern int init_module_him_rr278x(void);
+extern int init_module_vdev_raw(void);
+extern int init_module_partition(void);
+extern int init_module_raid0(void);
+extern int init_module_raid1(void);
+extern int init_module_raid5(void);
+extern int init_module_jbod(void);
+
+int init_config(void)
+{
+ init_module_him_rr2720();
+ init_module_him_rr273x();
+ init_module_him_rr276x();
+ init_module_him_rr278x();
+ init_module_vdev_raw();
+ init_module_partition();
+ init_module_raid0();
+ init_module_raid1();
+ init_module_raid5();
+ init_module_jbod();
+ return 0;
+}
+
+char driver_name[] = "hpt27xx";
+char driver_name_long[] = "RocketRAID 27xx controller driver";
+char driver_ver[] = "v1.0 (" __DATE__ " " __TIME__ ")";
+int osm_max_targets = 0xff;
+
+
+int os_max_cache_size = 0x1000000;
diff --git a/sys/dev/hpt27xx/hpt27xx_config.h b/sys/dev/hpt27xx/hpt27xx_config.h
new file mode 100644
index 0000000..dad8760
--- /dev/null
+++ b/sys/dev/hpt27xx/hpt27xx_config.h
@@ -0,0 +1,155 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef hpt27xx_CONFIG_H
+#define hpt27xx_CONFIG_H
+#define SUPPORT_ARRAY
+#define __KERNEL__ 1
+#define DRIVER_MINOR 16
+#define TARGETNAME hpt27xx
+#define __dummy_reg hpt27xx___dummy_reg
+#define __ldm_alloc_cmd hpt27xx___ldm_alloc_cmd
+#define delay_between_spinup hpt27xx_delay_between_spinup
+#define dmapool_active hpt27xx_dmapool_active
+#define dmapool_get_page hpt27xx_dmapool_get_page
+#define dmapool_get_page_at hpt27xx_dmapool_get_page_at
+#define dmapool_init hpt27xx_dmapool_init
+#define dmapool_make_order hpt27xx_dmapool_make_order
+#define dmapool_max_class_pages hpt27xx_dmapool_max_class_pages
+#define dmapool_put_page hpt27xx_dmapool_put_page
+#define dmapool_register_client hpt27xx_dmapool_register_client
+#define driver_name hpt27xx_driver_name
+#define driver_name_long hpt27xx_driver_name_long
+#define driver_ver hpt27xx_driver_ver
+#define freelist_get hpt27xx_freelist_get
+#define freelist_get_dma hpt27xx_freelist_get_dma
+#define freelist_put hpt27xx_freelist_put
+#define freelist_put_dma hpt27xx_freelist_put_dma
+#define freelist_reserve hpt27xx_freelist_reserve
+#define freelist_reserve_dma hpt27xx_freelist_reserve_dma
+#define gGlobalNcqFlag hpt27xx_gGlobalNcqFlag
+#define gProbeInInitializing hpt27xx_gProbeInInitializing
+#define gSGPIOPartSupport hpt27xx_gSGPIOPartSupport
+#define gSpinupOneDevEachTime hpt27xx_gSpinupOneDevEachTime
+#define g_legacy_mode hpt27xx_g_legacy_mode
+#define gautorebuild hpt27xx_gautorebuild
+#define grebuildpriority hpt27xx_grebuildpriority
+#define him_handle_to_vbus hpt27xx_him_handle_to_vbus
+#define him_list hpt27xx_him_list
+#define init_config hpt27xx_init_config
+#define init_module_him_rr2720 hpt27xx_init_module_him_rr2720
+#define init_module_him_rr273x hpt27xx_init_module_him_rr273x
+#define init_module_him_rr276x hpt27xx_init_module_him_rr276x
+#define init_module_him_rr278x hpt27xx_init_module_him_rr278x
+#define init_module_jbod hpt27xx_init_module_jbod
+#define init_module_partition hpt27xx_init_module_partition
+#define init_module_raid0 hpt27xx_init_module_raid0
+#define init_module_raid1 hpt27xx_init_module_raid1
+#define init_module_raid5 hpt27xx_init_module_raid5
+#define init_module_vdev_raw hpt27xx_init_module_vdev_raw
+#define ldm_acquire_lock hpt27xx_ldm_acquire_lock
+#define ldm_add_spare_to_array hpt27xx_ldm_add_spare_to_array
+#define ldm_alloc_cmds_R_6_55_75_46_64 hpt27xx_ldm_alloc_cmds_R_6_55_75_46_64
+#define ldm_alloc_cmds_from_list hpt27xx_ldm_alloc_cmds_from_list
+#define ldm_check_array_online hpt27xx_ldm_check_array_online
+#define ldm_create_vbus hpt27xx_ldm_create_vbus
+#define ldm_create_vdev hpt27xx_ldm_create_vdev
+#define ldm_event_notify hpt27xx_ldm_event_notify
+#define ldm_find_stamp hpt27xx_ldm_find_stamp
+#define ldm_find_target hpt27xx_ldm_find_target
+#define ldm_finish_cmd hpt27xx_ldm_finish_cmd
+#define ldm_free_cmds hpt27xx_ldm_free_cmds
+#define ldm_free_cmds_to_list hpt27xx_ldm_free_cmds_to_list
+#define ldm_generic_member_failed hpt27xx_ldm_generic_member_failed
+#define ldm_get_cmd_size hpt27xx_ldm_get_cmd_size
+#define ldm_get_device_id hpt27xx_ldm_get_device_id
+#define ldm_get_mem_info hpt27xx_ldm_get_mem_info
+#define ldm_get_next_vbus hpt27xx_ldm_get_next_vbus
+#define ldm_get_vbus_ext hpt27xx_ldm_get_vbus_ext
+#define ldm_get_vbus_size hpt27xx_ldm_get_vbus_size
+#define ldm_ide_fixstring hpt27xx_ldm_ide_fixstring
+#define ldm_idle hpt27xx_ldm_idle
+#define ldm_initialize_vbus_async hpt27xx_ldm_initialize_vbus_async
+#define ldm_intr hpt27xx_ldm_intr
+#define ldm_ioctl hpt27xx_ldm_ioctl
+#define ldm_on_timer hpt27xx_ldm_on_timer
+#define ldm_queue_cmd hpt27xx_ldm_queue_cmd
+#define ldm_queue_task hpt27xx_ldm_queue_task
+#define ldm_queue_vbus_dpc hpt27xx_ldm_queue_vbus_dpc
+#define ldm_register_adapter hpt27xx_ldm_register_adapter
+#define ldm_register_device hpt27xx_ldm_register_device
+#define ldm_register_him_R_6_55_75_46_64 hpt27xx_ldm_register_him_R_6_55_75_46_64
+#define ldm_register_vdev_class_R_6_55_75_46_64 hpt27xx_ldm_register_vdev_class_R_6_55_75_46_64
+#define ldm_release_lock hpt27xx_ldm_release_lock
+#define ldm_release_vbus hpt27xx_ldm_release_vbus
+#define ldm_release_vdev hpt27xx_ldm_release_vdev
+#define ldm_remove_timer hpt27xx_ldm_remove_timer
+#define ldm_request_timer hpt27xx_ldm_request_timer
+#define ldm_reset_vbus hpt27xx_ldm_reset_vbus
+#define ldm_resume hpt27xx_ldm_resume
+#define ldm_run hpt27xx_ldm_run
+#define ldm_set_autorebuild hpt27xx_ldm_set_autorebuild
+#define ldm_shutdown hpt27xx_ldm_shutdown
+#define ldm_suspend hpt27xx_ldm_suspend
+#define ldm_sync_array_info hpt27xx_ldm_sync_array_info
+#define ldm_sync_array_stamp hpt27xx_ldm_sync_array_stamp
+#define ldm_timer_probe_device hpt27xx_ldm_timer_probe_device
+#define ldm_unregister_device hpt27xx_ldm_unregister_device
+#define log_sector_repair hpt27xx_log_sector_repair
+#define num_drives_per_spinup hpt27xx_num_drives_per_spinup
+#define os_get_stamp hpt27xx_os_get_stamp
+#define os_get_vbus_seq hpt27xx_os_get_vbus_seq
+#define os_inb hpt27xx_os_inb
+#define os_inl hpt27xx_os_inl
+#define os_insw hpt27xx_os_insw
+#define os_inw hpt27xx_os_inw
+#define os_map_pci_bar hpt27xx_os_map_pci_bar
+#define os_max_cache_size hpt27xx_os_max_cache_size
+#define os_outb hpt27xx_os_outb
+#define os_outl hpt27xx_os_outl
+#define os_outsw hpt27xx_os_outsw
+#define os_outw hpt27xx_os_outw
+#define os_pci_readb hpt27xx_os_pci_readb
+#define os_pci_readl hpt27xx_os_pci_readl
+#define os_pci_readw hpt27xx_os_pci_readw
+#define os_pci_writeb hpt27xx_os_pci_writeb
+#define os_pci_writel hpt27xx_os_pci_writel
+#define os_pci_writew hpt27xx_os_pci_writew
+#define os_printk hpt27xx_os_printk
+#define os_query_remove_device hpt27xx_os_query_remove_device
+#define os_query_time hpt27xx_os_query_time
+#define os_request_timer hpt27xx_os_request_timer
+#define os_revalidate_device hpt27xx_os_revalidate_device
+#define os_schedule_task hpt27xx_os_schedule_task
+#define os_stallexec hpt27xx_os_stallexec
+#define os_unmap_pci_bar hpt27xx_os_unmap_pci_bar
+#define osm_max_targets hpt27xx_osm_max_targets
+#define pcicfg_read_dword hpt27xx_pcicfg_read_dword
+#define vbus_list hpt27xx_vbus_list
+#define vdev_queue_cmd hpt27xx_vdev_queue_cmd
+#endif
diff --git a/sys/dev/hpt27xx/hptintf.h b/sys/dev/hpt27xx/hptintf.h
new file mode 100644
index 0000000..c2a7b7f
--- /dev/null
+++ b/sys/dev/hpt27xx/hptintf.h
@@ -0,0 +1,2112 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+
+#ifndef HPT_INTF_H
+#define HPT_INTF_H
+
+#if defined(__BIG_ENDIAN__)&&!defined(__BIG_ENDIAN_BITFIELD)
+#define __BIG_ENDIAN_BITFIELD
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __GNUC__
+#define __attribute__(x)
+#endif
+
+#pragma pack(1)
+
+/*
+ * Version of this interface.
+ * The user mode application must first issue a hpt_get_version() call to
+ * check HPT_INTERFACE_VERSION. When an utility using newer version interface
+ * is used with old version drivers, it must call only the functions that
+ * driver supported.
+ * A new version interface should only add ioctl functions; it should implement
+ * all old version functions without change their definition.
+ */
+#define __this_HPT_INTERFACE_VERSION 0x02010000
+
+#ifndef HPT_INTERFACE_VERSION
+#error "You must define HPT_INTERFACE_VERSION you implemented"
+#endif
+
+#if HPT_INTERFACE_VERSION > __this_HPT_INTERFACE_VERSION
+#error "HPT_INTERFACE_VERSION is invalid"
+#endif
+
+/*
+ * DEFINITION
+ * Logical device --- a device that can be accessed by OS.
+ * Physical device --- device attached to the controller.
+ * A logical device can be simply a physical device.
+ *
+ * Each logical and physical device has a 32bit ID. GUI will use this ID
+ * to identify devices.
+ * 1. The ID must be unique.
+ * 2. The ID must be immutable. Once an ID is assigned to a device, it
+ * must not change when system is running and the device exists.
+ * 3. The ID of logical device must be NOT reusable. If a device is
+ * removed, other newly created logical device must not use the same ID.
+ * 4. The ID must not be zero or 0xFFFFFFFF.
+ */
+typedef HPT_U32 DEVICEID;
+
+/*
+ * logical device type.
+ * Identify array (logical device) and physical device.
+ */
+#define LDT_ARRAY 1
+#define LDT_DEVICE 2
+
+/*
+ * Array types
+ * GUI will treat all array as 1-level RAID. No RAID0/1 or RAID1/0.
+ * A RAID0/1 device is type AT_RAID1. A RAID1/0 device is type AT_RAID0.
+ * Their members may be another array of type RAID0 or RAID1.
+ */
+#define AT_UNKNOWN 0
+#define AT_RAID0 1
+#define AT_RAID1 2
+#define AT_RAID5 3
+#define AT_RAID6 4
+#define AT_RAID3 5
+#define AT_RAID4 6
+#define AT_JBOD 7
+#define AT_RAID1E 8
+
+/*
+ * physical device type
+ */
+#define PDT_UNKNOWN 0
+#define PDT_HARDDISK 1
+#define PDT_CDROM 2
+#define PDT_TAPE 3
+
+/*
+ * Some constants.
+ */
+#define MAX_NAME_LENGTH 36
+#define MAX_ARRAYNAME_LEN 16
+
+#define MAX_ARRAY_MEMBERS_V1 8
+
+#ifndef MAX_ARRAY_MEMBERS_V2
+#define MAX_ARRAY_MEMBERS_V2 16
+#endif
+
+#ifndef MAX_ARRAY_MEMBERS_V3
+#define MAX_ARRAY_MEMBERS_V3 64
+#endif
+
+/* keep definition for source code compatiblity */
+#define MAX_ARRAY_MEMBERS MAX_ARRAY_MEMBERS_V1
+
+/*
+ * io commands
+ * GUI use these commands to do IO on logical/physical devices.
+ */
+#define IO_COMMAND_READ 1
+#define IO_COMMAND_WRITE 2
+
+
+
+/*
+ * array flags
+ */
+#define ARRAY_FLAG_DISABLED 0x00000001 /* The array is disabled */
+#define ARRAY_FLAG_NEEDBUILDING 0x00000002 /* array data need to be rebuilt */
+#define ARRAY_FLAG_REBUILDING 0x00000004 /* array is in rebuilding process */
+#define ARRAY_FLAG_BROKEN 0x00000008 /* broken but may still working */
+#define ARRAY_FLAG_BOOTDISK 0x00000010 /* array has a active partition */
+
+#define ARRAY_FLAG_BOOTMARK 0x00000040 /* array has boot mark set */
+#define ARRAY_FLAG_NEED_AUTOREBUILD 0x00000080 /* auto-rebuild should start */
+#define ARRAY_FLAG_VERIFYING 0x00000100 /* is being verified */
+#define ARRAY_FLAG_INITIALIZING 0x00000200 /* is being initialized */
+#define ARRAY_FLAG_TRANSFORMING 0x00000400 /* tranform in progress */
+#define ARRAY_FLAG_NEEDTRANSFORM 0x00000800 /* array need tranform */
+#define ARRAY_FLAG_NEEDINITIALIZING 0x00001000 /* the array's initialization hasn't finished*/
+#define ARRAY_FLAG_BROKEN_REDUNDANT 0x00002000 /* broken but redundant (raid6) */
+#define ARRAY_FLAG_RAID15PLUS 0x80000000 /* display this RAID 1 as RAID 1.5 */
+/*
+ * device flags
+ */
+#define DEVICE_FLAG_DISABLED 0x00000001 /* device is disabled */
+#define DEVICE_FLAG_BOOTDISK 0x00000002 /* disk has a active partition */
+#define DEVICE_FLAG_BOOTMARK 0x00000004 /* disk has boot mark set */
+#define DEVICE_FLAG_WITH_601 0x00000008 /* has HPT601 connected */
+#define DEVICE_FLAG_SATA 0x00000010 /* SATA or SAS device */
+#define DEVICE_FLAG_ON_PM_PORT 0x00000020 /* PM port */
+#define DEVICE_FLAG_SAS 0x00000040 /* SAS device */
+#define DEVICE_FLAG_IN_ENCLOSURE 0x00000080 /* PathId is enclosure# */
+#define DEVICE_FLAG_UNINITIALIZED 0x00010000 /* device is not initialized, can't be used to create array */
+#define DEVICE_FLAG_LEGACY 0x00020000 /* single disk & mbr contains at least one partition */
+
+#define DEVICE_FLAG_IS_SPARE 0x80000000 /* is a spare disk */
+
+/*
+ * array states used by hpt_set_array_state()
+ */
+/* old defines */
+#define MIRROR_REBUILD_START 1
+#define MIRROR_REBUILD_ABORT 2
+#define MIRROR_REBUILD_COMPLETE 3
+/* new defines */
+#define AS_REBUILD_START 1
+#define AS_REBUILD_ABORT 2
+#define AS_REBUILD_PAUSE AS_REBUILD_ABORT
+#define AS_REBUILD_COMPLETE 3
+#define AS_VERIFY_START 4
+#define AS_VERIFY_ABORT 5
+#define AS_VERIFY_COMPLETE 6
+#define AS_INITIALIZE_START 7
+#define AS_INITIALIZE_ABORT 8
+#define AS_INITIALIZE_COMPLETE 9
+#define AS_VERIFY_FAILED 10
+#define AS_REBUILD_STOP 11
+#define AS_SAVE_STATE 12
+#define AS_TRANSFORM_START 13
+#define AS_TRANSFORM_ABORT 14
+
+/************************************************************************
+ * ioctl code
+ * It would be better if ioctl code are the same on different platforms,
+ * but we must not conflict with system defined ioctl code.
+ ************************************************************************/
+#if defined(LINUX) || defined(__FreeBSD_version) || defined(linux)
+#define HPT_CTL_CODE(x) (x+0xFF00)
+#define HPT_CTL_CODE_LINUX_TO_IOP(x) ((x)-0xff00)
+#elif defined(_MS_WIN32_) || defined(WIN32)
+
+#ifndef CTL_CODE
+#define CTL_CODE( DeviceType, Function, Method, Access ) \
+ (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
+#endif
+#define HPT_CTL_CODE(x) CTL_CODE(0x370, 0x900+(x), 0, 0)
+#define HPT_CTL_CODE_WIN32_TO_IOP(x) ((((x) & 0xffff)>>2)-0x900)
+
+#else
+#define HPT_CTL_CODE(x) (x)
+#endif
+
+#define HPT_IOCTL_GET_VERSION HPT_CTL_CODE(0)
+#define HPT_IOCTL_GET_CONTROLLER_COUNT HPT_CTL_CODE(1)
+#define HPT_IOCTL_GET_CONTROLLER_INFO HPT_CTL_CODE(2)
+#define HPT_IOCTL_GET_CHANNEL_INFO HPT_CTL_CODE(3)
+#define HPT_IOCTL_GET_LOGICAL_DEVICES HPT_CTL_CODE(4)
+#define HPT_IOCTL_GET_DEVICE_INFO HPT_CTL_CODE(5)
+#define HPT_IOCTL_CREATE_ARRAY HPT_CTL_CODE(6)
+#define HPT_IOCTL_DELETE_ARRAY HPT_CTL_CODE(7)
+#define HPT_IOCTL_ARRAY_IO HPT_CTL_CODE(8)
+#define HPT_IOCTL_DEVICE_IO HPT_CTL_CODE(9)
+#define HPT_IOCTL_GET_EVENT HPT_CTL_CODE(10)
+#define HPT_IOCTL_REBUILD_MIRROR HPT_CTL_CODE(11)
+/* use HPT_IOCTL_REBUILD_DATA_BLOCK from now on */
+#define HPT_IOCTL_REBUILD_DATA_BLOCK HPT_IOCTL_REBUILD_MIRROR
+#define HPT_IOCTL_ADD_SPARE_DISK HPT_CTL_CODE(12)
+#define HPT_IOCTL_REMOVE_SPARE_DISK HPT_CTL_CODE(13)
+#define HPT_IOCTL_ADD_DISK_TO_ARRAY HPT_CTL_CODE(14)
+#define HPT_IOCTL_SET_ARRAY_STATE HPT_CTL_CODE(15)
+#define HPT_IOCTL_SET_ARRAY_INFO HPT_CTL_CODE(16)
+#define HPT_IOCTL_SET_DEVICE_INFO HPT_CTL_CODE(17)
+#define HPT_IOCTL_RESCAN_DEVICES HPT_CTL_CODE(18)
+#define HPT_IOCTL_GET_DRIVER_CAPABILITIES HPT_CTL_CODE(19)
+#define HPT_IOCTL_GET_601_INFO HPT_CTL_CODE(20)
+#define HPT_IOCTL_SET_601_INFO HPT_CTL_CODE(21)
+#define HPT_IOCTL_LOCK_DEVICE HPT_CTL_CODE(22)
+#define HPT_IOCTL_UNLOCK_DEVICE HPT_CTL_CODE(23)
+#define HPT_IOCTL_IDE_PASS_THROUGH HPT_CTL_CODE(24)
+#define HPT_IOCTL_VERIFY_DATA_BLOCK HPT_CTL_CODE(25)
+#define HPT_IOCTL_INITIALIZE_DATA_BLOCK HPT_CTL_CODE(26)
+#define HPT_IOCTL_ADD_DEDICATED_SPARE HPT_CTL_CODE(27)
+#define HPT_IOCTL_DEVICE_IO_EX HPT_CTL_CODE(28)
+#define HPT_IOCTL_SET_BOOT_MARK HPT_CTL_CODE(29)
+#define HPT_IOCTL_QUERY_REMOVE HPT_CTL_CODE(30)
+#define HPT_IOCTL_REMOVE_DEVICES HPT_CTL_CODE(31)
+#define HPT_IOCTL_CREATE_ARRAY_V2 HPT_CTL_CODE(32)
+#define HPT_IOCTL_GET_DEVICE_INFO_V2 HPT_CTL_CODE(33)
+#define HPT_IOCTL_SET_DEVICE_INFO_V2 HPT_CTL_CODE(34)
+#define HPT_IOCTL_REBUILD_DATA_BLOCK_V2 HPT_CTL_CODE(35)
+#define HPT_IOCTL_VERIFY_DATA_BLOCK_V2 HPT_CTL_CODE(36)
+#define HPT_IOCTL_INITIALIZE_DATA_BLOCK_V2 HPT_CTL_CODE(37)
+#define HPT_IOCTL_LOCK_DEVICE_V2 HPT_CTL_CODE(38)
+#define HPT_IOCTL_DEVICE_IO_V2 HPT_CTL_CODE(39)
+#define HPT_IOCTL_DEVICE_IO_EX_V2 HPT_CTL_CODE(40)
+#define HPT_IOCTL_CREATE_TRANSFORM HPT_CTL_CODE(41)
+#define HPT_IOCTL_STEP_TRANSFORM HPT_CTL_CODE(42)
+#define HPT_IOCTL_SET_VDEV_INFO HPT_CTL_CODE(43)
+#define HPT_IOCTL_CALC_MAX_CAPACITY HPT_CTL_CODE(44)
+#define HPT_IOCTL_INIT_DISKS HPT_CTL_CODE(45)
+#define HPT_IOCTL_GET_DEVICE_INFO_V3 HPT_CTL_CODE(46)
+#define HPT_IOCTL_GET_CONTROLLER_INFO_V2 HPT_CTL_CODE(47)
+#define HPT_IOCTL_I2C_TRANSACTION HPT_CTL_CODE(48)
+#define HPT_IOCTL_GET_PARAMETER_LIST HPT_CTL_CODE(49)
+#define HPT_IOCTL_GET_PARAMETER HPT_CTL_CODE(50)
+#define HPT_IOCTL_SET_PARAMETER HPT_CTL_CODE(51)
+#define HPT_IOCTL_GET_DRIVER_CAPABILITIES_V2 HPT_CTL_CODE(52)
+#define HPT_IOCTL_GET_CHANNEL_INFO_V2 HPT_CTL_CODE(53)
+#define HPT_IOCTL_GET_CONTROLLER_INFO_V3 HPT_CTL_CODE(54)
+#define HPT_IOCTL_GET_DEVICE_INFO_V4 HPT_CTL_CODE(55)
+#define HPT_IOCTL_CREATE_ARRAY_V3 HPT_CTL_CODE(56)
+#define HPT_IOCTL_CREATE_TRANSFORM_V2 HPT_CTL_CODE(57)
+#define HPT_IOCTL_CALC_MAX_CAPACITY_V2 HPT_CTL_CODE(58)
+#define HPT_IOCTL_SCSI_PASSTHROUGH HPT_CTL_CODE(59)
+#define HPT_IOCTL_GET_PHYSICAL_DEVICES HPT_CTL_CODE(60)
+#define HPT_IOCTL_GET_ENCLOSURE_COUNT HPT_CTL_CODE(61)
+#define HPT_IOCTL_GET_ENCLOSURE_INFO HPT_CTL_CODE(62)
+#define HPT_IOCTL_GET_PERFMON_STATUS HPT_CTL_CODE(63)
+#define HPT_IOCTL_SET_PERFMON_STATUS HPT_CTL_CODE(64)
+#define HPT_IOCTL_GET_PERFMON_DATA HPT_CTL_CODE(65)
+#define HPT_IOCTL_IDE_PASS_THROUGH_V2 HPT_CTL_CODE(66)
+#define HPT_IOCTL_GET_ENCLOSURE_INFO_V2 HPT_CTL_CODE(67)
+#define HPT_IOCTL_GET_ENCLOSURE_INFO_V3 HPT_CTL_CODE(68)
+
+#define HPT_IOCTL_GET_CONTROLLER_IDS HPT_CTL_CODE(100)
+#define HPT_IOCTL_GET_DCB HPT_CTL_CODE(101)
+
+#define HPT_IOCTL_EPROM_IO HPT_CTL_CODE(102)
+#define HPT_IOCTL_GET_CONTROLLER_VENID HPT_CTL_CODE(103)
+
+/************************************************************************
+ * shared data structures
+ ************************************************************************/
+
+/*
+ * Chip Type
+ */
+#define CHIP_TYPE_HPT366 1
+#define CHIP_TYPE_HPT368 2
+#define CHIP_TYPE_HPT370 3
+#define CHIP_TYPE_HPT370A 4
+#define CHIP_TYPE_HPT370B 5
+#define CHIP_TYPE_HPT374 6
+#define CHIP_TYPE_HPT372 7
+#define CHIP_TYPE_HPT372A 8
+#define CHIP_TYPE_HPT302 9
+#define CHIP_TYPE_HPT371 10
+#define CHIP_TYPE_HPT372N 11
+#define CHIP_TYPE_HPT302N 12
+#define CHIP_TYPE_HPT371N 13
+#define CHIP_TYPE_SI3112A 14
+#define CHIP_TYPE_ICH5 15
+#define CHIP_TYPE_ICH5R 16
+#define CHIP_TYPE_MV50XX 20
+#define CHIP_TYPE_MV60X1 21
+#define CHIP_TYPE_MV60X2 22
+#define CHIP_TYPE_MV70X2 23
+#define CHIP_TYPE_MV5182 24
+#define CHIP_TYPE_IOP331 31
+#define CHIP_TYPE_IOP333 32
+#define CHIP_TYPE_IOP341 33
+#define CHIP_TYPE_IOP348 34
+
+/*
+ * Chip Flags
+ */
+#define CHIP_SUPPORT_ULTRA_66 0x20
+#define CHIP_SUPPORT_ULTRA_100 0x40
+#define CHIP_HPT3XX_DPLL_MODE 0x80
+#define CHIP_SUPPORT_ULTRA_133 0x01
+#define CHIP_SUPPORT_ULTRA_150 0x02
+#define CHIP_MASTER 0x04
+#define CHIP_SUPPORT_SATA_300 0x08
+
+#define HPT_SPIN_UP_MODE_NOSUPPORT 0
+#define HPT_SPIN_UP_MODE_FULL 1
+#define HPT_SPIN_UP_MODE_STANDBY 2
+
+typedef struct _DRIVER_CAPABILITIES {
+ HPT_U32 dwSize;
+
+ HPT_U8 MaximumControllers; /* maximum controllers the driver can support */
+ HPT_U8 SupportCrossControllerRAID; /* 1-support, 0-not support */
+ HPT_U8 MinimumBlockSizeShift; /* minimum block size shift */
+ HPT_U8 MaximumBlockSizeShift; /* maximum block size shift */
+
+ HPT_U8 SupportDiskModeSetting;
+ HPT_U8 SupportSparePool;
+ HPT_U8 MaximumArrayNameLength;
+ /* only one HPT_U8 left here! */
+#ifdef __BIG_ENDIAN_BITFIELD
+ HPT_U8 reserved: 2;
+ HPT_U8 SupportPerformanceMonitor: 1;
+ HPT_U8 SupportVariableSectorSize: 1;
+ HPT_U8 SupportHotSwap: 1;
+ HPT_U8 HighPerformanceRAID1: 1;
+ HPT_U8 RebuildProcessInDriver: 1;
+ HPT_U8 SupportDedicatedSpare: 1;
+#else
+ HPT_U8 SupportDedicatedSpare: 1; /* call hpt_add_dedicated_spare() for dedicated spare. */
+ HPT_U8 RebuildProcessInDriver: 1; /* Windows only. used by mid layer for rebuild control. */
+ HPT_U8 HighPerformanceRAID1: 1;
+ HPT_U8 SupportHotSwap: 1;
+ HPT_U8 SupportVariableSectorSize: 1;
+ HPT_U8 SupportPerformanceMonitor: 1;
+ HPT_U8 reserved: 2;
+#endif
+
+
+ HPT_U8 SupportedRAIDTypes[16];
+ /* maximum members in an array corresponding to SupportedRAIDTypes */
+ HPT_U8 MaximumArrayMembers[16];
+}
+DRIVER_CAPABILITIES, *PDRIVER_CAPABILITIES;
+
+typedef struct _DRIVER_CAPABILITIES_V2 {
+ DRIVER_CAPABILITIES v1;
+ HPT_U8 SupportedCachePolicies[16];
+ HPT_U32 reserved[17];
+}
+DRIVER_CAPABILITIES_V2, *PDRIVER_CAPABILITIES_V2;
+
+/*
+ * Controller information.
+ */
+typedef struct _CONTROLLER_INFO {
+ HPT_U8 ChipType; /* chip type */
+ HPT_U8 InterruptLevel; /* IRQ level */
+ HPT_U8 NumBuses; /* bus count */
+ HPT_U8 ChipFlags;
+
+ HPT_U8 szProductID[MAX_NAME_LENGTH];/* product name */
+ HPT_U8 szVendorID[MAX_NAME_LENGTH]; /* vender name */
+
+} CONTROLLER_INFO, *PCONTROLLER_INFO;
+
+#if HPT_INTERFACE_VERSION>=0x01020000
+typedef struct _CONTROLLER_INFO_V2 {
+ HPT_U8 ChipType; /* chip type */
+ HPT_U8 InterruptLevel; /* IRQ level */
+ HPT_U8 NumBuses; /* bus count */
+ HPT_U8 ChipFlags;
+
+ HPT_U8 szProductID[MAX_NAME_LENGTH];/* product name */
+ HPT_U8 szVendorID[MAX_NAME_LENGTH]; /* vender name */
+
+ HPT_U32 GroupId; /* low 32bit of vbus pointer the controller belongs
+ * the master controller has CHIP_MASTER flag set*/
+ HPT_U8 pci_tree;
+ HPT_U8 pci_bus;
+ HPT_U8 pci_device;
+ HPT_U8 pci_function;
+
+ HPT_U32 ExFlags;
+} CONTROLLER_INFO_V2, *PCONTROLLER_INFO_V2;
+
+
+#define CEXF_IOPModel 1
+#define CEXF_SDRAMSize 2
+#define CEXF_BatteryInstalled 4
+#define CEXF_BatteryStatus 8
+#define CEXF_BatteryVoltage 0x10
+#define CEXF_BatteryBackupTime 0x20
+#define CEXF_FirmwareVersion 0x40
+#define CEXF_SerialNumber 0x80
+#define CEXF_BatteryTemperature 0x100
+#define CEXF_Power12v 0x200
+#define CEXF_Power5v 0x400
+#define CEXF_Power3p3v 0x800
+#define CEXF_Power2p5v 0x1000
+#define CEXF_Power1p8v 0x2000
+#define CEXF_Core1p8v 0x4000
+#define CEXF_Core1p2v 0x8000
+#define CEXF_DDR1p8v 0x10000
+#define CEXF_DDR1p8vRef 0x20000
+#define CEXF_CPUTemperature 0x40000
+#define CEXF_BoardTemperature 0x80000
+#define CEXF_FanSpeed 0x100000
+#define CEXF_Core1p0v 0x200000
+#define CEXF_Fan2Speed 0x400000
+
+typedef struct _CONTROLLER_INFO_V3 {
+ HPT_U8 ChipType;
+ HPT_U8 InterruptLevel;
+ HPT_U8 NumBuses;
+ HPT_U8 ChipFlags;
+ HPT_U8 szProductID[MAX_NAME_LENGTH];
+ HPT_U8 szVendorID[MAX_NAME_LENGTH];
+ HPT_U32 GroupId;
+ HPT_U8 pci_tree;
+ HPT_U8 pci_bus;
+ HPT_U8 pci_device;
+ HPT_U8 pci_function;
+ HPT_U32 ExFlags;
+ HPT_U8 IOPModel[32];
+ HPT_U32 SDRAMSize;
+ HPT_U8 BatteryInstalled;
+ HPT_U8 BatteryStatus;
+ HPT_U16 BatteryVoltage;
+ HPT_U32 BatteryBackupTime;
+ HPT_U32 FirmwareVersion;
+ HPT_U8 SerialNumber[32];
+ HPT_U8 BatteryMBInstalled;
+ HPT_U8 BatteryTemperature;
+ signed char CPUTemperature;
+ signed char BoardTemperature;
+ HPT_U16 FanSpeed;
+ HPT_U16 Power12v;
+ HPT_U16 Power5v;
+ HPT_U16 Power3p3v;
+ HPT_U16 Power2p5v;
+ HPT_U16 Power1p8v;
+ HPT_U16 Core1p8v;
+ HPT_U16 Core1p2v;
+ HPT_U16 DDR1p8v;
+ HPT_U16 DDR1p8vRef;
+ HPT_U16 Core1p0v;
+ HPT_U16 Fan2Speed;
+ HPT_U8 reserve[60];
+}
+CONTROLLER_INFO_V3, *PCONTROLLER_INFO_V3;
+typedef char check_CONTROLLER_INFO_V3[sizeof(CONTROLLER_INFO_V3)==256? 1:-1];
+#endif
+/*
+ * Channel information.
+ */
+typedef struct _CHANNEL_INFO {
+ HPT_U32 IoPort; /* IDE Base Port Address */
+ HPT_U32 ControlPort; /* IDE Control Port Address */
+
+ DEVICEID Devices[2]; /* device connected to this channel */
+
+} CHANNEL_INFO, *PCHANNEL_INFO;
+
+typedef struct _CHANNEL_INFO_V2 {
+ HPT_U32 IoPort; /* IDE Base Port Address */
+ HPT_U32 ControlPort; /* IDE Control Port Address */
+
+ DEVICEID Devices[2+13]; /* device connected to this channel, PMPort max=15 */
+} CHANNEL_INFO_V2, *PCHANNEL_INFO_V2;
+
+typedef struct _ENCLOSURE_INFO {
+ HPT_U8 EnclosureType;
+ HPT_U8 NumberOfPhys;
+ HPT_U8 AttachedTo;
+ HPT_U8 Status;
+ HPT_U8 VendorId[8];
+ HPT_U8 ProductId[16];
+ HPT_U8 ProductRevisionLevel[4];
+ HPT_U32 PortPhyMap;
+ HPT_U32 reserve[55];
+} ENCLOSURE_INFO, *PENCLOSURE_INFO;
+
+
+typedef struct _SES_ELEMENT_STATUS {
+ HPT_U8 ElementType;
+ HPT_U8 ElementOverallIndex;
+ HPT_U8 ElementStatus;
+ HPT_U8 Reserved;
+ HPT_U32 ElementValue;
+ HPT_U8 ElementDescriptor[32];
+}SES_ELEMENT_STATUS,*PSES_ELEMENT_STATUS;
+
+#define MAX_ELEMENT_COUNT 80
+/* Element Type */
+#define SES_TYPE_UNSPECIFIED 0x00
+#define SES_TYPE_DEVICE 0x01
+#define SES_TYPE_POWER_SUPPLY 0x02
+#define SES_TYPE_FAN 0x03
+#define SES_TYPE_TEMPERATURE_SENSOR 0x04
+#define SES_TYPE_DOOR_LOCK 0x05
+#define SES_TYPE_SPEAKER 0x06
+#define SES_TYPE_ES_CONTROLLER 0x07
+#define SES_TYPE_SCC_CONTROLLER 0x08
+#define SES_TYPE_NONVOLATILE_CACHE 0x09
+#define SES_TYPE_UPS 0x0B
+#define SES_TYPE_DISPLAY 0x0C
+#define SES_TYPE_KEYPAD 0x0D
+#define SES_TYPE_ENCLOSURE 0x0E
+#define SES_TYPE_SCSI_TRANSCEIVER 0x0F
+#define SES_TYPE_LANGUAGE 0x10
+#define SES_TYPE_COMM_PORT 0x11
+#define SES_TYPE_VOLTAGE_SENSOR 0x12
+#define SES_TYPE_CURRENT_SENSOR 0x13
+#define SES_TYPE_SCSI_TARGET_PORT 0x14
+#define SES_TYPE_SCSI_INITIATOR_PORT 0x15
+#define SES_TYPE_SIMPLE_SUBENCLOSURE 0x16
+#define SES_TYPE_ARRAY_DEVICE 0x17
+#define SES_TYPE_VENDOR_SPECIFIC 0x80
+
+/* Element Status */
+
+#define SES_STATUS_UNSUPPORTED 0x00
+#define SES_STATUS_OK 0x01
+#define SES_STATUS_CRITICAL 0x02
+#define SES_STATUS_NONCRITICAL 0x03
+#define SES_STATUS_UNRECOVERABLE 0x04
+#define SES_STATUS_NOTINSTALLED 0x05
+#define SES_STATUS_UNKNOWN 0x06
+#define SES_STATUS_NOTAVAILABLE 0x06
+#define SES_STATUS_RESERVED 0x07
+
+
+typedef struct _ENCLOSURE_INFO_V2 {
+ HPT_U8 EnclosureType;
+ HPT_U8 NumberOfPhys;
+ HPT_U8 AttachedTo;
+ HPT_U8 Status;
+ HPT_U8 VendorId[8];
+ HPT_U8 ProductId[16];
+ HPT_U8 ProductRevisionLevel[4];
+ HPT_U32 PortPhyMap;
+ SES_ELEMENT_STATUS ElementStatus[MAX_ELEMENT_COUNT];
+} ENCLOSURE_INFO_V2, *PENCLOSURE_INFO_V2;
+
+typedef struct _ENCLOSURE_INFO_V3 {
+ HPT_U8 EnclosureType;
+ HPT_U8 NumberOfPhys;
+ HPT_U8 AttachedTo;
+ HPT_U8 Status;
+ HPT_U8 VendorId[8];
+ HPT_U8 ProductId[16];
+ HPT_U8 ProductRevisionLevel[4];
+ HPT_U32 PortPhyMap;
+ HPT_U32 UnitId; /*272x card has two Cores, unitId is used to distinguish them */
+ HPT_U32 reserved[32];
+ SES_ELEMENT_STATUS ElementStatus[MAX_ELEMENT_COUNT];
+} ENCLOSURE_INFO_V3, *PENCLOSURE_INFO_V3;
+
+#define ENCLOSURE_STATUS_OFFLINE 1
+
+#define ENCLOSURE_TYPE_INTERNAL 0
+#define ENCLOSURE_TYPE_SMP 1
+#define ENCLOSURE_TYPE_PM 2
+
+#ifndef __KERNEL__
+/*
+ * time represented in HPT_U32 format
+ */
+typedef struct _TIME_RECORD {
+ HPT_U32 seconds:6; /* 0 - 59 */
+ HPT_U32 minutes:6; /* 0 - 59 */
+ HPT_U32 month:4; /* 1 - 12 */
+ HPT_U32 hours:6; /* 0 - 59 */
+ HPT_U32 day:5; /* 1 - 31 */
+ HPT_U32 year:5; /* 0=2000, 31=2031 */
+} TIME_RECORD;
+#endif
+
+/*
+ * Array information.
+ */
+typedef struct _HPT_ARRAY_INFO {
+ HPT_U8 Name[MAX_ARRAYNAME_LEN];/* array name */
+ HPT_U8 Description[64]; /* array description */
+ HPT_U8 CreateManager[16]; /* who created it */
+ TIME_RECORD CreateTime; /* when created it */
+
+ HPT_U8 ArrayType; /* array type */
+ HPT_U8 BlockSizeShift; /* stripe size */
+ HPT_U8 nDisk; /* member count: Number of ID in Members[] */
+ HPT_U8 SubArrayType;
+
+ HPT_U32 Flags; /* working flags, see ARRAY_FLAG_XXX */
+ HPT_U32 Members[MAX_ARRAY_MEMBERS_V1]; /* member array/disks */
+
+ /*
+ * rebuilding progress, xx.xx% = sprintf(s, "%.2f%%", RebuildingProgress/100.0);
+ * only valid if rebuilding is done by driver code.
+ * Member Flags will have ARRAY_FLAG_REBUILDING set at this case.
+ * Verify operation use same fields below, the only difference is
+ * ARRAY_FLAG_VERIFYING is set.
+ */
+ HPT_U32 RebuildingProgress;
+ HPT_U32 RebuiltSectors; /* rebuilding point (LBA) for single member */
+
+} HPT_ARRAY_INFO, *PHPT_ARRAY_INFO;
+
+#if HPT_INTERFACE_VERSION>=0x01010000
+typedef struct _HPT_ARRAY_INFO_V2 {
+ HPT_U8 Name[MAX_ARRAYNAME_LEN];/* array name */
+ HPT_U8 Description[64]; /* array description */
+ HPT_U8 CreateManager[16]; /* who created it */
+ TIME_RECORD CreateTime; /* when created it */
+
+ HPT_U8 ArrayType; /* array type */
+ HPT_U8 BlockSizeShift; /* stripe size */
+ HPT_U8 nDisk; /* member count: Number of ID in Members[] */
+ HPT_U8 SubArrayType;
+
+ HPT_U32 Flags; /* working flags, see ARRAY_FLAG_XXX */
+ HPT_U32 Members[MAX_ARRAY_MEMBERS_V2]; /* member array/disks */
+
+ HPT_U32 RebuildingProgress;
+ HPT_U64 RebuiltSectors; /* rebuilding point (LBA) for single member */
+
+ HPT_U32 reserve4[4];
+} HPT_ARRAY_INFO_V2, *PHPT_ARRAY_INFO_V2;
+#endif
+
+#if HPT_INTERFACE_VERSION>=0x01020000
+typedef struct _HPT_ARRAY_INFO_V3 {
+ HPT_U8 Name[MAX_ARRAYNAME_LEN];/* array name */
+ HPT_U8 Description[64]; /* array description */
+ HPT_U8 CreateManager[16]; /* who created it */
+ TIME_RECORD CreateTime; /* when created it */
+
+ HPT_U8 ArrayType; /* array type */
+ HPT_U8 BlockSizeShift; /* stripe size */
+ HPT_U8 nDisk; /* member count: Number of ID in Members[] */
+ HPT_U8 SubArrayType;
+
+ HPT_U32 Flags; /* working flags, see ARRAY_FLAG_XXX */
+ HPT_U32 Members[MAX_ARRAY_MEMBERS_V2]; /* member array/disks */
+
+ HPT_U32 RebuildingProgress;
+ HPT_U64 RebuiltSectors; /* rebuilding point (LBA) for single member */
+
+ DEVICEID TransformSource;
+ DEVICEID TransformTarget; /* destination device ID */
+ HPT_U32 TransformingProgress;
+ HPT_U32 Signature; /* persistent identification*/
+#if MAX_ARRAY_MEMBERS_V2==16
+ HPT_U16 Critical_Members; /* bit mask of critical members */
+ HPT_U16 reserve2;
+ HPT_U32 reserve;
+#else
+ HPT_U32 Critical_Members;
+ HPT_U32 reserve;
+#endif
+} HPT_ARRAY_INFO_V3, *PHPT_ARRAY_INFO_V3;
+#endif
+
+#if HPT_INTERFACE_VERSION>=0x02000001
+typedef struct _HPT_ARRAY_INFO_V4 {
+ HPT_U8 Name[MAX_ARRAYNAME_LEN];/* array name */
+ HPT_U8 Description[64]; /* array description */
+ HPT_U8 CreateManager[16]; /* who created it */
+ TIME_RECORD CreateTime; /* when created it */
+
+ HPT_U8 ArrayType; /* array type */
+ HPT_U8 BlockSizeShift; /* stripe size */
+ HPT_U8 nDisk; /* member count: Number of ID in Members[] */
+ HPT_U8 SubArrayType;
+
+ HPT_U32 Flags; /* working flags, see ARRAY_FLAG_XXX */
+
+ HPT_U32 RebuildingProgress;
+ HPT_U64 RebuiltSectors; /* rebuilding point (LBA) for single member */
+
+ DEVICEID TransformSource;
+ DEVICEID TransformTarget; /* destination device ID */
+ HPT_U32 TransformingProgress;
+ HPT_U32 Signature; /* persistent identification*/
+ HPT_U8 SectorSizeShift; /*sector size = 512B<<SectorSizeShift*/
+ HPT_U8 reserved2[7];
+ HPT_U64 Critical_Members;
+ HPT_U32 Members[MAX_ARRAY_MEMBERS_V3]; /* member array/disks */
+} HPT_ARRAY_INFO_V4, *PHPT_ARRAY_INFO_V4;
+#endif
+
+
+/*
+ * ATA/ATAPI Device identify data without the Reserved4.
+ */
+typedef struct _IDENTIFY_DATA2 {
+ HPT_U16 GeneralConfiguration;
+ HPT_U16 NumberOfCylinders;
+ HPT_U16 Reserved1;
+ HPT_U16 NumberOfHeads;
+ HPT_U16 UnformattedBytesPerTrack;
+ HPT_U16 UnformattedBytesPerSector;
+ HPT_U8 SasAddress[8];
+ HPT_U16 SerialNumber[10];
+ HPT_U16 BufferType;
+ HPT_U16 BufferSectorSize;
+ HPT_U16 NumberOfEccBytes;
+ HPT_U16 FirmwareRevision[4];
+ HPT_U16 ModelNumber[20];
+ HPT_U8 MaximumBlockTransfer;
+ HPT_U8 VendorUnique2;
+ HPT_U16 DoubleWordIo;
+ HPT_U16 Capabilities;
+ HPT_U16 Reserved2;
+ HPT_U8 VendorUnique3;
+ HPT_U8 PioCycleTimingMode;
+ HPT_U8 VendorUnique4;
+ HPT_U8 DmaCycleTimingMode;
+ HPT_U16 TranslationFieldsValid;
+ HPT_U16 NumberOfCurrentCylinders;
+ HPT_U16 NumberOfCurrentHeads;
+ HPT_U16 CurrentSectorsPerTrack;
+ HPT_U32 CurrentSectorCapacity;
+ HPT_U16 CurrentMultiSectorSetting;
+ HPT_U32 UserAddressableSectors;
+ HPT_U8 SingleWordDMASupport;
+ HPT_U8 SingleWordDMAActive;
+ HPT_U8 MultiWordDMASupport;
+ HPT_U8 MultiWordDMAActive;
+ HPT_U8 AdvancedPIOModes;
+ HPT_U8 Reserved4;
+ HPT_U16 MinimumMWXferCycleTime;
+ HPT_U16 RecommendedMWXferCycleTime;
+ HPT_U16 MinimumPIOCycleTime;
+ HPT_U16 MinimumPIOCycleTimeIORDY;
+ HPT_U16 Reserved5[2];
+ HPT_U16 ReleaseTimeOverlapped;
+ HPT_U16 ReleaseTimeServiceCommand;
+ HPT_U16 MajorRevision;
+ HPT_U16 MinorRevision;
+} __attribute__((packed)) IDENTIFY_DATA2, *PIDENTIFY_DATA2;
+
+/*
+ * physical device information.
+ * IdentifyData.ModelNumber[] is HPT_U8-swapped from the original identify data.
+ */
+typedef struct _DEVICE_INFO {
+ HPT_U8 ControllerId; /* controller id */
+ HPT_U8 PathId; /* bus */
+ HPT_U8 TargetId; /* id */
+ HPT_U8 DeviceModeSetting; /* Current Data Transfer mode: 0-4 PIO 0-4 */
+ /* 5-7 MW DMA0-2, 8-13 UDMA0-5 */
+ HPT_U8 DeviceType; /* device type */
+ HPT_U8 UsableMode; /* highest usable mode */
+
+#ifdef __BIG_ENDIAN_BITFIELD
+ HPT_U8 NCQEnabled: 1;
+ HPT_U8 NCQSupported: 1;
+ HPT_U8 TCQEnabled: 1;
+ HPT_U8 TCQSupported: 1;
+ HPT_U8 WriteCacheEnabled: 1;
+ HPT_U8 WriteCacheSupported: 1;
+ HPT_U8 ReadAheadEnabled: 1;
+ HPT_U8 ReadAheadSupported: 1;
+ HPT_U8 reserved6: 6;
+ HPT_U8 SpinUpMode: 2;
+#else
+ HPT_U8 ReadAheadSupported: 1;
+ HPT_U8 ReadAheadEnabled: 1;
+ HPT_U8 WriteCacheSupported: 1;
+ HPT_U8 WriteCacheEnabled: 1;
+ HPT_U8 TCQSupported: 1;
+ HPT_U8 TCQEnabled: 1;
+ HPT_U8 NCQSupported: 1;
+ HPT_U8 NCQEnabled: 1;
+ HPT_U8 SpinUpMode: 2;
+ HPT_U8 reserved6: 6;
+#endif
+
+ HPT_U32 Flags; /* working flags, see DEVICE_FLAG_XXX */
+
+ IDENTIFY_DATA2 IdentifyData; /* Identify Data of this device */
+
+}
+__attribute__((packed)) DEVICE_INFO, *PDEVICE_INFO;
+
+#if HPT_INTERFACE_VERSION>=0x01020000
+#define MAX_PARENTS_PER_DISK 8
+/*
+ * physical device information.
+ * IdentifyData.ModelNumber[] is HPT_U8-swapped from the original identify data.
+ */
+typedef struct _DEVICE_INFO_V2 {
+ HPT_U8 ControllerId; /* controller id */
+ HPT_U8 PathId; /* bus */
+ HPT_U8 TargetId; /* id */
+ HPT_U8 DeviceModeSetting; /* Current Data Transfer mode: 0-4 PIO 0-4 */
+ /* 5-7 MW DMA0-2, 8-13 UDMA0-5 */
+ HPT_U8 DeviceType; /* device type */
+ HPT_U8 UsableMode; /* highest usable mode */
+
+#ifdef __BIG_ENDIAN_BITFIELD
+ HPT_U8 NCQEnabled: 1;
+ HPT_U8 NCQSupported: 1;
+ HPT_U8 TCQEnabled: 1;
+ HPT_U8 TCQSupported: 1;
+ HPT_U8 WriteCacheEnabled: 1;
+ HPT_U8 WriteCacheSupported: 1;
+ HPT_U8 ReadAheadEnabled: 1;
+ HPT_U8 ReadAheadSupported: 1;
+ HPT_U8 reserved6: 6;
+ HPT_U8 SpinUpMode: 2;
+#else
+ HPT_U8 ReadAheadSupported: 1;
+ HPT_U8 ReadAheadEnabled: 1;
+ HPT_U8 WriteCacheSupported: 1;
+ HPT_U8 WriteCacheEnabled: 1;
+ HPT_U8 TCQSupported: 1;
+ HPT_U8 TCQEnabled: 1;
+ HPT_U8 NCQSupported: 1;
+ HPT_U8 NCQEnabled: 1;
+ HPT_U8 SpinUpMode: 2;
+ HPT_U8 reserved6: 6;
+#endif
+
+ HPT_U32 Flags; /* working flags, see DEVICE_FLAG_XXX */
+
+ IDENTIFY_DATA2 IdentifyData; /* Identify Data of this device */
+
+ HPT_U64 TotalFree;
+ HPT_U64 MaxFree;
+ HPT_U64 BadSectors;
+ DEVICEID ParentArrays[MAX_PARENTS_PER_DISK];
+
+}
+__attribute__((packed)) DEVICE_INFO_V2, *PDEVICE_INFO_V2, DEVICE_INFO_V3, *PDEVICE_INFO_V3;
+
+/*
+ * HPT601 information
+ */
+#endif
+/*
+ * HPT601 information
+ */
+#define HPT601_INFO_DEVICEID 1
+#define HPT601_INFO_TEMPERATURE 2
+#define HPT601_INFO_FANSTATUS 4
+#define HPT601_INFO_BEEPERCONTROL 8
+#define HPT601_INFO_LED1CONTROL 0x10
+#define HPT601_INFO_LED2CONTROL 0x20
+#define HPT601_INFO_POWERSTATUS 0x40
+
+typedef struct _HPT601_INFO_ {
+ HPT_U16 ValidFields; /* mark valid fields below */
+ HPT_U16 DeviceId; /* 0x5A3E */
+ HPT_U16 Temperature; /* Read: temperature sensor value. Write: temperature limit */
+ HPT_U16 FanStatus; /* Fan status */
+ HPT_U16 BeeperControl; /* bit4: beeper control bit. bit0-3: frequency bits */
+ HPT_U16 LED1Control; /* bit4: twinkling control bit. bit0-3: frequency bits */
+ HPT_U16 LED2Control; /* bit4: twinkling control bit. bit0-3: frequency bits */
+ HPT_U16 PowerStatus; /* 1: has power 2: no power */
+} HPT601_INFO, *PHPT601_INFO;
+
+#if HPT_INTERFACE_VERSION>=0x01010000
+#ifndef __KERNEL__
+/* cache policy for each vdev, copied from ldm.h */
+#define CACHE_POLICY_NONE 0
+#define CACHE_POLICY_WRITE_THROUGH 1
+#define CACHE_POLICY_WRITE_BACK 2
+
+#endif
+#endif
+/*
+ * Logical device information.
+ * Union of ArrayInfo and DeviceInfo.
+ * Common properties will be put in logical device information.
+ */
+typedef struct _LOGICAL_DEVICE_INFO {
+ HPT_U8 Type; /* LDT_ARRAY or LDT_DEVICE */
+ HPT_U8 reserved[3];
+
+ HPT_U32 Capacity; /* array capacity */
+ DEVICEID ParentArray;
+
+ union {
+ HPT_ARRAY_INFO array;
+ DEVICE_INFO device;
+ } __attribute__((packed)) u;
+
+} __attribute__((packed)) LOGICAL_DEVICE_INFO, *PLOGICAL_DEVICE_INFO;
+
+#if HPT_INTERFACE_VERSION>=0x01010000
+typedef struct _LOGICAL_DEVICE_INFO_V2 {
+ HPT_U8 Type; /* LDT_ARRAY or LDT_DEVICE */
+ HPT_U8 reserved[3];
+
+ HPT_U64 Capacity; /* array capacity */
+ DEVICEID ParentArray; /* for physical device, Please don't use this field.
+ * use ParentArrays field in DEVICE_INFO_V2
+ */
+
+ union {
+ HPT_ARRAY_INFO_V2 array;
+ DEVICE_INFO device;
+ } __attribute__((packed)) u;
+
+} __attribute__((packed)) LOGICAL_DEVICE_INFO_V2, *PLOGICAL_DEVICE_INFO_V2;
+#endif
+
+#if HPT_INTERFACE_VERSION>=0x01020000
+#define INVALID_TARGET_ID 0xFF
+#define INVALID_BUS_ID 0xFF
+typedef struct _LOGICAL_DEVICE_INFO_V3 {
+ HPT_U8 Type; /* LDT_ARRAY or LDT_DEVICE */
+ HPT_U8 CachePolicy; /* refer to CACHE_POLICY_xxx */
+ HPT_U8 VBusId; /* vbus sequence in vbus_list */
+ HPT_U8 TargetId; /* OS target id. Value 0xFF is invalid */
+ /* OS disk name: HPT DISK $VBusId_$TargetId */
+ HPT_U64 Capacity; /* array capacity */
+ DEVICEID ParentArray; /* for physical device, don't use this field.
+ * use ParentArrays field in DEVICE_INFO_V2 instead.
+ */
+ HPT_U32 TotalIOs;
+ HPT_U32 TobalMBs;
+ HPT_U32 IOPerSec;
+ HPT_U32 MBPerSec;
+
+ union {
+ HPT_ARRAY_INFO_V3 array;
+ DEVICE_INFO_V2 device;
+ } __attribute__((packed)) u;
+
+}
+__attribute__((packed)) LOGICAL_DEVICE_INFO_V3, *PLOGICAL_DEVICE_INFO_V3;
+#endif
+
+#if HPT_INTERFACE_VERSION>=0x02000001
+typedef struct _LOGICAL_DEVICE_INFO_V4 {
+ HPT_U32 dwSize;
+ HPT_U8 revision;
+ HPT_U8 reserved[7];
+
+ HPT_U8 Type; /* LDT_ARRAY or LDT_DEVICE */
+ HPT_U8 CachePolicy; /* refer to CACHE_POLICY_xxx */
+ HPT_U8 VBusId; /* vbus sequence in vbus_list */
+ HPT_U8 TargetId; /* OS target id. Value 0xFF is invalid */
+ /* OS disk name: HPT DISK $VBusId_$TargetId */
+ HPT_U64 Capacity; /* array capacity */
+ DEVICEID ParentArray; /* for physical device, don't use this field.
+ * use ParentArrays field in DEVICE_INFO_V2 instead.
+ */
+ HPT_U32 TotalIOs;
+ HPT_U32 TobalMBs;
+ HPT_U32 IOPerSec;
+ HPT_U32 MBPerSec;
+
+ union {
+ HPT_ARRAY_INFO_V4 array;
+ DEVICE_INFO_V3 device;
+ } __attribute__((packed)) u;
+}
+__attribute__((packed)) LOGICAL_DEVICE_INFO_V4, *PLOGICAL_DEVICE_INFO_V4;
+
+/*LOGICAL_DEVICE_INFO_V4 max revision number*/
+#define LOGICAL_DEVICE_INFO_V4_REVISION 0
+/*If new revision was defined please check evey revision size*/
+#define LOGICAL_DEVICE_INFO_V4_R0_SIZE (sizeof(LOGICAL_DEVICE_INFO_V4))
+#endif
+
+/*
+ * ALTERABLE_ARRAY_INFO and ALTERABLE_DEVICE_INFO, used in set_array_info()
+ * and set_device_info().
+ * When set_xxx_info() is called, the ValidFields member indicates which
+ * fields in the structure are valid.
+ */
+/* field masks */
+#define AAIF_NAME 1
+#define AAIF_DESCRIPTION 2
+
+#define ADIF_MODE 1
+#define ADIF_TCQ 2
+#define ADIF_NCQ 4
+#define ADIF_WRITE_CACHE 8
+#define ADIF_READ_AHEAD 0x10
+#define ADIF_SPIN_UP_MODE 0x20
+
+typedef struct _ALTERABLE_ARRAY_INFO {
+ HPT_U32 ValidFields; /* mark valid fields below */
+ HPT_U8 Name[MAX_ARRAYNAME_LEN]; /* array name */
+ HPT_U8 Description[64]; /* array description */
+}__attribute__((packed))ALTERABLE_ARRAY_INFO, *PALTERABLE_ARRAY_INFO;
+
+typedef struct _ALTERABLE_DEVICE_INFO {
+ HPT_U32 ValidFields; /* mark valid fields below */
+ HPT_U8 DeviceModeSetting; /* 0-4 PIO 0-4, 5-7 MW DMA0-2, 8-13 UDMA0-5 */
+}__attribute__((packed))ALTERABLE_DEVICE_INFO, *PALTERABLE_DEVICE_INFO;
+
+typedef struct _ALTERABLE_DEVICE_INFO_V2 {
+ HPT_U32 ValidFields; /* mark valid fields below */
+ HPT_U8 DeviceModeSetting; /* 0-4 PIO 0-4, 5-7 MW DMA0-2, 8-13 UDMA0-5 */
+ HPT_U8 TCQEnabled;
+ HPT_U8 NCQEnabled;
+ HPT_U8 WriteCacheEnabled;
+ HPT_U8 ReadAheadEnabled;
+ HPT_U8 SpinUpMode;
+ HPT_U8 reserve[2];
+ HPT_U32 reserve2[13]; /* pad to 64 bytes */
+}__attribute__((packed))ALTERABLE_DEVICE_INFO_V2, *PALTERABLE_DEVICE_INFO_V2;
+
+#if HPT_INTERFACE_VERSION>=0x01020000
+
+#define TARGET_TYPE_DEVICE 0
+#define TARGET_TYPE_ARRAY 1
+
+
+#define AIT_NAME 0
+#define AIT_DESCRIPTION 1
+#define AIT_CACHE_POLICY 2
+
+
+#define DIT_MODE 0
+#define DIT_READ_AHEAD 1
+#define DIT_WRITE_CACHE 2
+#define DIT_TCQ 3
+#define DIT_NCQ 4
+#define DIT_IDENTIFY 5
+
+/* param type is determined by target_type and info_type*/
+typedef struct _SET_DEV_INFO
+{
+ HPT_U8 target_type;
+ HPT_U8 infor_type;
+ HPT_U16 param_length;
+ #define SET_VDEV_INFO_param(p) ((HPT_U8 *)(p)+sizeof(SET_VDEV_INFO))
+ /* HPT_U8 param[0]; */
+} SET_VDEV_INFO, * PSET_VDEV_INFO;
+
+typedef HPT_U8 PARAM_ARRAY_NAME[MAX_ARRAYNAME_LEN] ;
+typedef HPT_U8 PARAM_ARRAY_DES[64];
+typedef HPT_U8 PARAM_DEVICE_MODE, PARAM_TCQ, PARAM_NCQ, PARAM_READ_AHEAD, PARAM_WRITE_CACHE, PARAM_CACHE_POLICY;
+
+#endif
+
+/*
+ * CREATE_ARRAY_PARAMS
+ * Param structure used to create an array.
+ */
+typedef struct _CREATE_ARRAY_PARAMS {
+ HPT_U8 ArrayType; /* 1-level array type */
+ HPT_U8 nDisk; /* number of elements in Members[] array */
+ HPT_U8 BlockSizeShift; /* Stripe size if ArrayType==AT_RAID0 / AT_RAID5 */
+ HPT_U8 CreateFlags; /* See CAF_xxx */
+
+ HPT_U8 ArrayName[MAX_ARRAYNAME_LEN];/* Array name */
+ HPT_U8 Description[64]; /* array description */
+ HPT_U8 CreateManager[16]; /* who created it */
+ TIME_RECORD CreateTime; /* when created it */
+
+ HPT_U32 Members[MAX_ARRAY_MEMBERS_V1];/* ID of array members, a member can be an array */
+
+} CREATE_ARRAY_PARAMS, *PCREATE_ARRAY_PARAMS;
+
+#if HPT_INTERFACE_VERSION>=0x01010000
+typedef struct _CREATE_ARRAY_PARAMS_V2 {
+ HPT_U8 ArrayType; /* 1-level array type */
+ HPT_U8 nDisk; /* number of elements in Members[] array */
+ HPT_U8 BlockSizeShift; /* Stripe size if ArrayType==AT_RAID0 / AT_RAID5 */
+ HPT_U8 CreateFlags; /* See CAF_xxx */
+
+ HPT_U8 ArrayName[MAX_ARRAYNAME_LEN];/* Array name */
+ HPT_U8 Description[64]; /* array description */
+ HPT_U8 CreateManager[16]; /* who created it */
+ TIME_RECORD CreateTime; /* when created it */
+ HPT_U64 Capacity;
+
+ HPT_U32 Members[MAX_ARRAY_MEMBERS_V2];/* ID of array members, a member can be an array */
+
+} CREATE_ARRAY_PARAMS_V2, *PCREATE_ARRAY_PARAMS_V2;
+#endif
+
+#if HPT_INTERFACE_VERSION>=0x02000001
+typedef struct _CREATE_ARRAY_PARAMS_V3 {
+ HPT_U32 dwSize;
+ HPT_U8 revision; /*CREATE_ARRAY_PARAMS_V3_REVISION*/
+ HPT_U8 reserved[5];
+ HPT_U8 subDisks; /* RAIDn0 sub array */
+ HPT_U8 SectorSizeShift; /*sector size = 512B<<SectorSizeShift*/
+ HPT_U8 ArrayType; /* 1-level array type */
+ HPT_U8 nDisk; /* number of elements in Members[] array */
+ HPT_U8 BlockSizeShift; /* Stripe size if ArrayType==AT_RAID0 / AT_RAID5 */
+ HPT_U8 CreateFlags; /* See CAF_xxx */
+
+ HPT_U8 ArrayName[MAX_ARRAYNAME_LEN];/* Array name */
+ HPT_U8 Description[64]; /* array description */
+ HPT_U8 CreateManager[16]; /* who created it */
+ TIME_RECORD CreateTime; /* when created it */
+ HPT_U64 Capacity;
+
+ HPT_U32 Members[MAX_ARRAY_MEMBERS_V3];/* ID of array members, a member can be an array */
+} CREATE_ARRAY_PARAMS_V3, *PCREATE_ARRAY_PARAMS_V3;
+
+/*CREATE_ARRAY_PARAMS_V3 current max revision*/
+#define CREATE_ARRAY_PARAMS_V3_REVISION 0
+/*If new revision defined please check evey revision size*/
+#define CREATE_ARRAY_PARAMS_V3_R0_SIZE (sizeof(CREATE_ARRAY_PARAMS_V3))
+#endif
+
+#if HPT_INTERFACE_VERSION < 0x01020000
+/*
+ * Flags used for creating an RAID 1 array
+ *
+ * CAF_CREATE_AND_DUPLICATE
+ * Copy source disk contents to target for RAID 1. If user choose "create and duplicate"
+ * to create an array, GUI will call CreateArray() with this flag set. Then GUI should
+ * call hpt_get_device_info() with the returned array ID and check returned flags to
+ * see if ARRAY_FLAG_REBUILDING is set. If not set, driver does not support rebuilding
+ * and GUI must do duplication itself.
+ * CAF_DUPLICATE_MUST_DONE
+ * If the duplication is aborted or fails, do not create the array.
+ */
+#define CAF_CREATE_AND_DUPLICATE 1
+#define CAF_DUPLICATE_MUST_DONE 2
+#define CAF_CREATE_AS_RAID15 4
+/*
+ * Flags used for creating an RAID 5 array
+ */
+#define CAF_CREATE_R5_NO_BUILD 1
+#define CAF_CREATE_R5_ZERO_INIT 2
+#define CAF_CREATE_R5_BUILD_PARITY 4
+
+#else
+/*
+ * Flags used for creating
+ */
+#define CAF_FOREGROUND_INITIALIZE 1
+#define CAF_BACKGROUND_INITIALIZE 2
+#define CAF_CREATE_R5_WRITE_BACK (CACHE_POLICY_WRITE_BACK<<CAF_CACHE_POLICY_SHIFT)
+
+
+#define CAF_CACHE_POLICY_MASK 0x1C
+#define CAF_CACHE_POLICY_SHIFT 2
+
+#endif
+
+#define CAF_KEEP_DATA_ALWAYS 0x80
+
+/* Flags used for deleting an array
+ *
+ * DAF_KEEP_DATA_IF_POSSIBLE
+ * If this flag is set, deleting a RAID 1 array will not destroy the data on both disks.
+ * Deleting a JBOD should keep partitions on first disk ( not implement now ).
+ * Deleting a RAID 0/1 should result as two RAID 0 array ( not implement now ).
+ */
+#define DAF_KEEP_DATA_IF_POSSIBLE 1
+#define DAF_KEEP_DATA_ALWAYS 2
+
+/*
+ * event types
+ */
+#define ET_DEVICE_REMOVED 1 /* device removed */
+#define ET_DEVICE_PLUGGED 2 /* device plugged */
+#define ET_DEVICE_ERROR 3 /* device I/O error */
+#define ET_REBUILD_STARTED 4
+#define ET_REBUILD_ABORTED 5
+#define ET_REBUILD_FINISHED 6
+#define ET_SPARE_TOOK_OVER 7
+#define ET_REBUILD_FAILED 8
+#define ET_VERIFY_STARTED 9
+#define ET_VERIFY_ABORTED 10
+#define ET_VERIFY_FAILED 11
+#define ET_VERIFY_FINISHED 12
+#define ET_INITIALIZE_STARTED 13
+#define ET_INITIALIZE_ABORTED 14
+#define ET_INITIALIZE_FAILED 15
+#define ET_INITIALIZE_FINISHED 16
+#define ET_VERIFY_DATA_ERROR 17
+#define ET_TRANSFORM_STARTED 18
+#define ET_TRANSFORM_ABORTED 19
+#define ET_TRANSFORM_FAILED 20
+#define ET_TRANSFORM_FINISHED 21
+#define ET_SMART_FAILED 22
+#define ET_SMART_PASSED 23
+#define ET_SECTOR_REPAIR_FAIL 24
+#define ET_SECTOR_REPAIR_SUCCESS 25
+#define ET_ERASE_FAIL 26
+#define ET_ERASE_SUCCESS 27
+#define ET_CONTINUE_REBUILD_ON_ERROR 28
+
+
+/*
+ * event structure
+ */
+typedef struct _HPT_EVENT {
+ TIME_RECORD Time;
+ DEVICEID DeviceID;
+ HPT_U8 EventType;
+ HPT_U8 reserved[3];
+
+ HPT_U8 Data[32]; /* various data depend on EventType */
+} HPT_EVENT, *PHPT_EVENT;
+
+/*
+ * IDE pass-through command. Use it at your own risk!
+ */
+typedef struct _IDE_PASS_THROUGH_HEADER {
+ DEVICEID idDisk; /* disk ID */
+ HPT_U8 bFeaturesReg; /* feature register */
+ HPT_U8 bSectorCountReg; /* IDE sector count register. */
+ HPT_U8 bLbaLowReg; /* IDE LBA low value. */
+ HPT_U8 bLbaMidReg; /* IDE LBA mid register. */
+ HPT_U8 bLbaHighReg; /* IDE LBA high value. */
+ HPT_U8 bDriveHeadReg; /* IDE drive/head register. */
+ HPT_U8 bCommandReg; /* Actual IDE command. Checked for validity by driver. */
+ HPT_U8 nSectors; /* data size in sectors, if the command has data transfer */
+ HPT_U8 protocol; /* IO_COMMAND_(READ,WRITE) or zero for non-DATA */
+ HPT_U8 reserve[3];
+ #define IDE_PASS_THROUGH_buffer(p) ((HPT_U8 *)(p) + sizeof(IDE_PASS_THROUGH_HEADER))
+ /* HPT_U8 DataBuffer[0]; */
+}
+IDE_PASS_THROUGH_HEADER, *PIDE_PASS_THROUGH_HEADER;
+
+typedef struct _IDE_PASS_THROUGH_HEADER_V2 {
+ DEVICEID idDisk; /* disk ID */
+ HPT_U16 bFeaturesReg; /* feature register */
+ HPT_U16 bSectorCountReg; /* IDE sector count register. */
+ HPT_U16 bLbaLowReg; /* IDE LBA low value. */
+ HPT_U16 bLbaMidReg; /* IDE LBA mid register. */
+ HPT_U16 bLbaHighReg; /* IDE LBA high value. */
+ HPT_U8 bDriveHeadReg; /* IDE drive/head register. */
+ HPT_U8 bCommandReg; /* Actual IDE command. Checked for validity by driver. */
+ HPT_U16 nSectors; /* data size in sectors, if the command has data transfer */
+ HPT_U8 protocol; /* IO_COMMAND_(READ,WRITE) or zero for non-DATA */
+ HPT_U8 reserve;
+ #define IDE_PASS_THROUGH_V2_buffer(p) ((HPT_U8 *)(p) + sizeof(IDE_PASS_THROUGH_HEADER_V2))
+ /* HPT_U8 DataBuffer[0]; */
+}
+IDE_PASS_THROUGH_HEADER_V2, *PIDE_PASS_THROUGH_HEADER_V2;
+
+typedef struct _HPT_SCSI_PASSTHROUGH_IN {
+ DEVICEID idDisk;
+ HPT_U8 protocol;
+ HPT_U8 reserve1;
+ HPT_U8 reserve2;
+ HPT_U8 cdbLength;
+ HPT_U8 cdb[16];
+ HPT_U32 dataLength;
+ /* data follows, if any */
+}
+HPT_SCSI_PASSTHROUGH_IN, *PHPT_SCSI_PASSTHROUGH_IN;
+
+typedef struct _HPT_SCSI_PASSTHROUGH_OUT {
+ HPT_U8 scsiStatus;
+ HPT_U8 reserve1;
+ HPT_U8 reserve2;
+ HPT_U8 reserve3;
+ HPT_U32 dataLength;
+ /* data/sense follows if any */
+}
+HPT_SCSI_PASSTHROUGH_OUT, *PHPT_SCSI_PASSTHROUGH_OUT;
+
+/*
+ * device io packet format
+ */
+typedef struct _DEVICE_IO_EX_PARAMS {
+ DEVICEID idDisk;
+ HPT_U32 Lba;
+ HPT_U16 nSectors;
+ HPT_U8 Command; /* IO_COMMAD_xxx */
+ HPT_U8 BufferType; /* BUFFER_TYPE_xxx, see below */
+ HPT_U32 BufferPtr;
+}
+DEVICE_IO_EX_PARAMS, *PDEVICE_IO_EX_PARAMS;
+
+#define BUFFER_TYPE_LOGICAL 1 /* logical pointer to buffer */
+#define BUFFER_TYPE_PHYSICAL 2 /* physical address of buffer */
+#define BUFFER_TYPE_LOGICAL_LOGICAL_SG 3 /* logical pointer to logical S/G table */
+#define BUFFER_TYPE_LOGICAL_PHYSICAL_SG 4 /* logical pointer to physical S/G table */
+#define BUFFER_TYPE_PHYSICAL_LOGICAL_SG 5 /* physical address to logical S/G table */
+#define BUFFER_TYPE_PHYSICAL_PHYSICAL_SG 6 /* physical address of physical S/G table */
+#define BUFFER_TYPE_PHYSICAL_PHYSICAL_SG_PIO 7 /* non DMA capable physical address of physical S/G table */
+
+typedef struct _HPT_DRIVER_PARAMETER {
+ char name[32];
+ HPT_U8 value[32];
+ HPT_U8 type; /* HPT_DRIVER_PARAMETER_TYPE_* */
+ HPT_U8 persistent;
+ HPT_U8 reserve2[2];
+ HPT_U8 location; /* 0 - system */
+ HPT_U8 controller;
+ HPT_U8 bus;
+ HPT_U8 reserve1;
+ char desc[128];
+}
+HPT_DRIVER_PARAMETER, *PHPT_DRIVER_PARAMETER;
+
+#define HPT_DRIVER_PARAMETER_TYPE_INT 1
+#define HPT_DRIVER_PARAMETER_TYPE_BOOL 2
+
+typedef struct _HPT_PM_CMDSTAT {
+ HPT_U64 timeStamp;
+ HPT_U64 lba;
+ HPT_U16 sectors;
+ HPT_U16 reserved;
+ HPT_U32 rspTime;
+}
+HPT_PM_CMDSTAT, *PHPT_PM_CMDSTAT;
+
+#define HIGHEST_RSPTIME_CMD_SAVE 10
+#define RSPTIME_HISTOGRAM_SEGMENT_COUNT 38
+
+typedef struct _HPT_PM_IOSTAT {
+ HPT_PM_CMDSTAT highestRspCmdStatData[HIGHEST_RSPTIME_CMD_SAVE];
+ HPT_U32 rspTimeHistogram[RSPTIME_HISTOGRAM_SEGMENT_COUNT];
+ HPT_U16 pendingIo;
+ HPT_U16 activeIo;
+ HPT_U32 instantKBPs;
+ HPT_U32 averageKBPs;
+ HPT_U32 instantIOPs;
+ HPT_U32 averageIOPs;
+}
+HPT_PM_IOSTAT, *PHPT_PM_IOSTAT;
+
+
+
+/*
+ * ioctl structure
+ */
+#define HPT_IOCTL_MAGIC32 0x1A2B3C4D
+#define HPT_IOCTL_MAGIC 0xA1B2C3D4
+
+typedef struct _HPT_IOCTL_PARAM {
+ HPT_U32 Magic; /* used to check if it's a valid ioctl packet */
+ HPT_U32 dwIoControlCode; /* operation control code */
+ HPT_PTR lpInBuffer; /* input data buffer */
+ HPT_U32 nInBufferSize; /* size of input data buffer */
+ HPT_PTR lpOutBuffer; /* output data buffer */
+ HPT_U32 nOutBufferSize; /* size of output data buffer */
+ HPT_PTR lpBytesReturned; /* count of HPT_U8s returned */
+}
+HPT_IOCTL_PARAM, *PHPT_IOCTL_PARAM;
+
+/* for 32-bit app running on 64-bit system */
+typedef struct _HPT_IOCTL_PARAM32 {
+ HPT_U32 Magic;
+ HPT_U32 dwIoControlCode;
+ HPT_U32 lpInBuffer;
+ HPT_U32 nInBufferSize;
+ HPT_U32 lpOutBuffer;
+ HPT_U32 nOutBufferSize;
+ HPT_U32 lpBytesReturned;
+}
+HPT_IOCTL_PARAM32, *PHPT_IOCTL_PARAM32;
+
+#if !defined(__KERNEL__) || defined(SIMULATE)
+/*
+ * User-mode ioctl parameter passing conventions:
+ * The ioctl function implementation is platform specific, so we don't
+ * have forced rules for it. However, it's suggested to use a parameter
+ * passing method as below
+ * 1) Put all input data continuously in an input buffer.
+ * 2) Prepare an output buffer with enough size if needed.
+ * 3) Fill a HPT_IOCTL_PARAM structure.
+ * 4) Pass the structure to driver through a platform-specific method.
+ * This is implemented in the mid-layer user-mode library. The UI
+ * programmer needn't care about it.
+ */
+
+/************************************************************************
+ * User mode functions
+ ************************************************************************/
+/*
+ * hpt_get_version
+ * Version compatibility: all versions
+ * Parameters:
+ * None
+ * Returns:
+ * interface version. 0 when fail.
+ */
+HPT_U32 hpt_get_version(void);
+
+/*
+ * hpt_get_driver_capabilities
+ * Version compatibility: v1.0.0.2 or later
+ * Parameters:
+ * Pointer to receive a DRIVE_CAPABILITIES structure. The caller must set
+ * dwSize member to sizeof(DRIVER_CAPABILITIES). The callee must check this
+ * member to see if it's correct.
+ * Returns:
+ * 0 - Success
+ */
+int hpt_get_driver_capabilities(PDRIVER_CAPABILITIES cap);
+int hpt_get_driver_capabilities_v2(PDRIVER_CAPABILITIES_V2 cap);
+
+/*
+ * hpt_get_controller_count
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * None
+ * Returns:
+ * number of controllers
+ */
+int hpt_get_controller_count(void);
+
+/* hpt_get_controller_info
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * id Controller id
+ * pInfo pointer to CONTROLLER_INFO buffer
+ * Returns:
+ * 0 Success, controller info is put into (*pInfo ).
+ */
+int hpt_get_controller_info(int id, PCONTROLLER_INFO pInfo);
+
+#if HPT_INTERFACE_VERSION>=0x01020000
+/* hpt_get_controller_info_v2
+ * Version compatibility: v2.0.0.0 or later
+ * Parameters:
+ * id Controller id
+ * pInfo pointer to CONTROLLER_INFO_V2 buffer
+ * Returns:
+ * 0 Success, controller info is put into (*pInfo ).
+ */
+int hpt_get_controller_info_v2(int id, PCONTROLLER_INFO_V2 pInfo);
+
+/* hpt_get_controller_info_v3
+ * Version compatibility: v2.0.0.0 or later
+ * Parameters:
+ * id Controller id
+ * pInfo pointer to CONTROLLER_INFO_V3 buffer
+ * Returns:
+ * 0 Success, controller info is put into (*pInfo ).
+ */
+int hpt_get_controller_info_v3(int id, PCONTROLLER_INFO_V3 pInfo);
+#endif
+
+/* hpt_get_channel_info
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * id Controller id
+ * bus bus number
+ * pInfo pointer to CHANNEL_INFO buffer
+ * Returns:
+ * 0 Success, channel info is put into (*pInfo ).
+ */
+int hpt_get_channel_info(int id, int bus, PCHANNEL_INFO pInfo);
+
+/* hpt_get_channel_info_v2
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * id Controller id
+ * bus bus number
+ * pInfo pointer to CHANNEL_INFO buffer
+ * Returns:
+ * 0 Success, channel info is put into (*pInfo ).
+ */
+int hpt_get_channel_info_v2(int id, int bus, PCHANNEL_INFO_V2 pInfo);
+
+/* hpt_get_logical_devices
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * pIds pointer to a DEVICEID array
+ * nMaxCount array size
+ * Returns:
+ * Number of ID returned. All logical device IDs are put into pIds array.
+ * Note: A spare disk is not a logical device.
+ */
+int hpt_get_logical_devices(DEVICEID * pIds, int nMaxCount);
+
+/* hpt_get_physical_devices
+ * Version compatibility: v2.1.0.0 or later
+ * Parameters:
+ * pIds pointer to a DEVICEID array
+ * nMaxCount array size
+ * Returns:
+ * Number of ID returned. All physical device IDs are put into pIds array.
+ */
+int hpt_get_physical_devices(DEVICEID * pIds, int nMaxCount);
+
+/* hpt_get_device_info
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * id logical device id
+ * pInfo pointer to LOGICAL_DEVICE_INFO structure
+ * Returns:
+ * 0 - Success
+ */
+int hpt_get_device_info(DEVICEID id, PLOGICAL_DEVICE_INFO pInfo);
+
+/* hpt_create_array
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * pParam pointer to CREATE_ARRAY_PARAMS structure
+ * Returns:
+ * 0 failed
+ * else return array id
+ */
+DEVICEID hpt_create_array(PCREATE_ARRAY_PARAMS pParam);
+
+/* hpt_delete_array
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * id array id
+ * Returns:
+ * 0 Success
+ */
+int hpt_delete_array(DEVICEID id, HPT_U32 options);
+
+/* hpt_device_io
+ * Read/write data on array and physcal device.
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * id device id. If it's an array ID, IO will be performed on the array.
+ * If it's a physical device ID, IO will be performed on the device.
+ * cmd IO_COMMAND_READ or IO_COMMAND_WRITE
+ * buffer data buffer
+ * length data size
+ * Returns:
+ * 0 Success
+ */
+int hpt_device_io(DEVICEID id, int cmd, HPT_U32 lba, HPT_U32 nSector, void * buffer);
+
+/* hpt_add_disk_to_array
+ * Used to dynamicly add a disk to an RAID1, RAID0/1, RAID1/0 or RAID5 array.
+ * Auto-rebuild will start.
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * idArray array id
+ * idDisk disk id
+ * Returns:
+ * 0 Success
+ */
+int hpt_add_disk_to_array(DEVICEID idArray, DEVICEID idDisk);
+
+/* hpt_add_spare_disk
+ * Version compatibility: v1.0.0.1 or later
+ * Add a disk to spare pool.
+ * Parameters:
+ * idDisk disk id
+ * Returns:
+ * 0 Success
+ */
+int hpt_add_spare_disk(DEVICEID idDisk);
+
+/* hpt_add_dedicated_spare
+ * Version compatibility: v1.0.0.3 or later
+ * Add a spare disk to an array
+ * Parameters:
+ * idDisk disk id
+ * idArray array id
+ * Returns:
+ * 0 Success
+ */
+int hpt_add_dedicated_spare(DEVICEID idDisk, DEVICEID idArray);
+
+/* hpt_remove_spare_disk
+ * remove a disk from spare pool.
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * idDisk disk id
+ * Returns:
+ * 0 Success
+ */
+int hpt_remove_spare_disk(DEVICEID idDisk);
+
+/* hpt_get_event
+ * Used to poll events from driver.
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * pEvent pointer to HPT_EVENT structure
+ * Returns:
+ * 0 Success, event info is filled in *pEvent
+ */
+int hpt_get_event(PHPT_EVENT pEvent);
+
+/* hpt_rebuild_data_block
+ * Used to copy data from source disk and mirror disk.
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * idArray Array ID (RAID1, 0/1 or RAID5)
+ * Lba Start LBA for each array member
+ * nSector Number of sectors for each array member (RAID 5 will ignore this parameter)
+ *
+ * Returns:
+ * 0 Success, event info is filled in *pEvent
+ */
+int hpt_rebuild_data_block(DEVICEID idMirror, HPT_U32 Lba, HPT_U8 nSector);
+#define hpt_rebuild_mirror(p1, p2, p3) hpt_rebuild_data_block(p1, p2, p3)
+
+/* hpt_set_array_state
+ * set array state.
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * idArray Array ID
+ * state See above 'array states' constants, possible values are:
+ * MIRROR_REBUILD_START
+ * Indicate that GUI wants to rebuild a mirror array
+ * MIRROR_REBUILD_ABORT
+ * GUI wants to abort rebuilding an array
+ * MIRROR_REBUILD_COMPLETE
+ * GUI finished to rebuild an array. If rebuild is done by driver this
+ * state has no use
+ *
+ * Returns:
+ * 0 Success
+ */
+int hpt_set_array_state(DEVICEID idArray, HPT_U32 state);
+
+/* hpt_set_array_info
+ * set array info.
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * idArray Array ID
+ * pInfo pointer to new info
+ *
+ * Returns:
+ * 0 Success
+ */
+int hpt_set_array_info(DEVICEID idArray, PALTERABLE_ARRAY_INFO pInfo);
+
+/* hpt_set_device_info
+ * set device info.
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * idDisk device ID
+ * pInfo pointer to new info
+ *
+ * Returns:
+ * 0 Success
+ * Additional notes:
+ * If idDisk==0, call to this function will stop buzzer on the adapter
+ * (if supported by driver).
+ */
+int hpt_set_device_info(DEVICEID idDisk, PALTERABLE_DEVICE_INFO pInfo);
+
+#if HPT_INTERFACE_VERSION >= 0x01000004
+int hpt_set_device_info_v2(DEVICEID idDisk, PALTERABLE_DEVICE_INFO_V2 pInfo);
+#endif
+
+/* hpt_rescan_devices
+ * rescan devices
+ * Version compatibility: v1.0.0.1 or later
+ * Parameters:
+ * None
+ * Returns:
+ * 0 Success
+ */
+int hpt_rescan_devices(void);
+
+/* hpt_get_601_info
+ * Get HPT601 status
+ * Version compatibiilty: v1.0.0.3 or later
+ * Parameters:
+ * idDisk - Disk handle
+ * PHPT601_INFO - pointer to HPT601 info buffer
+ * Returns:
+ * 0 Success
+ */
+int hpt_get_601_info(DEVICEID idDisk, PHPT601_INFO pInfo);
+
+/* hpt_set_601_info
+ * HPT601 function control
+ * Version compatibiilty: v1.0.0.3 or later
+ * Parameters:
+ * idDisk - Disk handle
+ * PHPT601_INFO - pointer to HPT601 info buffer
+ * Returns:
+ * 0 Success
+ */
+int hpt_set_601_info(DEVICEID idDisk, PHPT601_INFO pInfo);
+
+/* hpt_lock_device
+ * Lock a block on a device (prevent OS accessing it)
+ * Version compatibiilty: v1.0.0.3 or later
+ * Parameters:
+ * idDisk - Disk handle
+ * Lba - Start LBA
+ * nSectors - number of sectors
+ * Returns:
+ * 0 Success
+ */
+int hpt_lock_device(DEVICEID idDisk, HPT_U32 Lba, HPT_U8 nSectors);
+
+/* hpt_lock_device
+ * Unlock a device
+ * Version compatibiilty: v1.0.0.3 or later
+ * Parameters:
+ * idDisk - Disk handle
+ * Returns:
+ * 0 Success
+ */
+int hpt_unlock_device(DEVICEID idDisk);
+
+/* hpt_ide_pass_through
+ * send a ATA passthrough command to a device.
+ * Version compatibility: v1.0.0.3 or later
+ * Parameters:
+ * p - IDE_PASS_THROUGH header pointer
+ * Returns:
+ * 0 Success
+ */
+int hpt_ide_pass_through(PIDE_PASS_THROUGH_HEADER p);
+int hpt_ide_pass_through_v2(PIDE_PASS_THROUGH_HEADER_V2 p);
+
+/* hpt_scsi_passthrough
+ * send a SCSI passthrough command to a device.
+ * Version compatibility: v2.0.0.0 or later
+ * Parameters:
+ * in - HPT_SCSI_PASSTHROUGH_IN header pointer
+ * out - PHPT_SCSI_PASSTHROUGH_OUT header pointer
+ * insize, outsize - in/out buffer size
+ * Returns:
+ * 0 Success
+ */
+int hpt_scsi_passthrough(PHPT_SCSI_PASSTHROUGH_IN in, HPT_U32 insize,
+ PHPT_SCSI_PASSTHROUGH_OUT out, HPT_U32 outsize);
+
+/* hpt_verify_data_block
+ * verify data block on RAID1 or RAID5.
+ * Version compatibility: v1.0.0.3 or later
+ * Parameters:
+ * idArray - Array ID
+ * Lba - block number (on each array member, not logical block!)
+ * nSectors - Sectors for each member (RAID 5 will ignore this parameter)
+ * Returns:
+ * 0 Success
+ * 1 Data compare error
+ * 2 I/O error
+ */
+int hpt_verify_data_block(DEVICEID idArray, HPT_U32 Lba, HPT_U8 nSectors);
+
+/* hpt_initialize_data_block
+ * initialize data block (fill with zero) on RAID5
+ * Version compatibility: v1.0.0.3 or later
+ * Parameters:
+ * idArray - Array ID
+ * Lba - block number (on each array member, not logical block!)
+ * nSectors - Sectors for each member (RAID 5 will ignore this parameter)
+ * Returns:
+ * 0 Success
+ */
+int hpt_initialize_data_block(DEVICEID idArray, HPT_U32 Lba, HPT_U8 nSectors);
+
+/* hpt_device_io_ex
+ * extended device I/O function
+ * Version compatibility: v1.0.0.3 or later
+ * Parameters:
+ * idArray - Array ID
+ * Lba - block number (on each array member, not logical block!)
+ * nSectors - Sectors for each member
+ * buffer - I/O buffer or s/g address
+ * Returns:
+ * 0 Success
+ */
+int hpt_device_io_ex(PDEVICE_IO_EX_PARAMS param);
+
+/* hpt_set_boot_mark
+ * select boot device
+ * Version compatibility: v1.0.0.3 or later
+ * Parameters:
+ * id - logical device ID. If id is 0 the boot mark will be removed.
+ * Returns:
+ * 0 Success
+ */
+int hpt_set_boot_mark(DEVICEID id);
+
+/* hpt_query_remove
+ * check if device can be removed safely
+ * Version compatibility: v1.0.0.4 or later
+ * Parameters:
+ * ndev - number of devices
+ * pIds - device ID list
+ * Returns:
+ * 0 - Success
+ * -1 - unknown error
+ * n - the n-th device that can't be removed
+ */
+int hpt_query_remove(HPT_U32 ndev, DEVICEID *pIds);
+
+/* hpt_remove_devices
+ * remove a list of devices
+ * Version compatibility: v1.0.0.4 or later
+ * Parameters:
+ * ndev - number of devices
+ * pIds - device ID list
+ * Returns:
+ * 0 - Success
+ * -1 - unknown error
+ * n - the n-th device that can't be removed
+ */
+int hpt_remove_devices(HPT_U32 ndev, DEVICEID *pIds);
+
+/* hpt_create_array_v2
+ * Version compatibility: v1.1.0.0 or later
+ * Parameters:
+ * pParam pointer to CREATE_ARRAY_PARAMS_V2 structure
+ * Returns:
+ * 0 failed
+ * else return array id
+ */
+#if HPT_INTERFACE_VERSION>=0x01010000
+DEVICEID hpt_create_array_v2(PCREATE_ARRAY_PARAMS_V2 pParam);
+#endif
+
+/* hpt_create_array_v3
+ * Version compatibility: v2.0.0.1 or later
+ * Parameters:
+ * pParam pointer to CREATE_ARRAY_PARAMS_V3 structure
+ * Returns:
+ * 0 failed
+ * else return array id
+ */
+#if HPT_INTERFACE_VERSION>=0x02000001
+DEVICEID hpt_create_array_v3(PCREATE_ARRAY_PARAMS_V3 pParam);
+#endif
+
+/* hpt_get_device_info_v2
+ * Version compatibility: v1.1.0.0 or later
+ * Parameters:
+ * id logical device id
+ * pInfo pointer to LOGICAL_DEVICE_INFO_V2 structure
+ * Returns:
+ * 0 - Success
+ */
+#if HPT_INTERFACE_VERSION>=0x01010000
+int hpt_get_device_info_v2(DEVICEID id, PLOGICAL_DEVICE_INFO_V2 pInfo);
+#endif
+
+/* hpt_get_device_info_v3
+ * Version compatibility: v1.2.0.0 or later
+ * Parameters:
+ * id logical device id
+ * pInfo pointer to LOGICAL_DEVICE_INFO_V3 structure
+ * Returns:
+ * 0 - Success
+ */
+#if HPT_INTERFACE_VERSION>=0x01020000
+int hpt_get_device_info_v3(DEVICEID id, PLOGICAL_DEVICE_INFO_V3 pInfo);
+#endif
+
+/* hpt_get_device_info_v4
+ * Version compatibility: v2.0.0.1 or later
+ * Parameters:
+ * id logical device id
+ * pInfo pointer to LOGICAL_DEVICE_INFO_V4 structure
+ * Returns:
+ * 0 - Success
+ */
+#if HPT_INTERFACE_VERSION>=0x02000001
+int hpt_get_device_info_v4(DEVICEID id, PLOGICAL_DEVICE_INFO_V4 pInfo);
+#endif
+
+/* hpt_create_transform
+ * create a transform instance.
+ * Version compatibility: v2.0.0.0 or later
+ * Parameters:
+ * idArray - source array
+ * destInfo - destination array info
+ * Returns:
+ * destination array id
+ */
+#if HPT_INTERFACE_VERSION>=0x02000000
+DEVICEID hpt_create_transform(DEVICEID idArray, PCREATE_ARRAY_PARAMS_V2 destInfo);
+#endif
+
+/* hpt_create_transform_v2
+ * create a transform instance.
+ * Version compatibility: v2.0.0.1 or later
+ * Parameters:
+ * idArray - source array
+ * destInfo - destination array info
+ * Returns:
+ * destination array id
+ */
+#if HPT_INTERFACE_VERSION>=0x02000001
+DEVICEID hpt_create_transform_v2(DEVICEID idArray, PCREATE_ARRAY_PARAMS_V3 destInfo);
+#endif
+
+/* hpt_step_transform
+ * move a block in a tranform progress.
+ * This function is called by mid-layer, not GUI (which uses set_array_state instead).
+ * Version compatibility: v2.0.0.0 or later
+ * Parameters:
+ * idArray - destination array ID
+ * the source ID will be invalid when transform complete.
+ * Returns:
+ * 0 - Success
+ */
+#if HPT_INTERFACE_VERSION>=0x02000000
+int hpt_step_transform(DEVICEID idArray);
+#endif
+
+/* hpt_set_vdev_info
+ * set information for disk or array
+ * Version compatibility: v1.2.0.0 or later
+ * Parameters:
+ * dev - destination device
+ *
+ * Returns:
+ * 0 - Success
+ */
+#if HPT_INTERFACE_VERSION>=0x01020000
+int hpt_set_vdev_info(DEVICEID dev, PSET_VDEV_INFO pInfo);
+#endif
+
+/* hpt_init_disks
+ * initialize disks for use
+ * Version compatibility: v2.0.0.0 or later
+ * Parameters:
+ * ndev - number of disks to initialize
+ * pIds - array of DEVICEID
+ *
+ * Returns:
+ * 0 - Success
+ */
+#if HPT_INTERFACE_VERSION>=0x02000000
+int hpt_init_disks(HPT_U32 ndev, DEVICEID * pIds);
+#endif
+
+/* hpt_calc_max_array_capacity
+ * cap max capacity of the array user want to create or transform
+ * Version compatibility: v1.2.0.0 or later
+ * Parameters:
+ * source - if transform, this is the source array, otherwise, it should be zero
+ * destInfo - target array params
+ * Returns:
+ * 0 - Success
+ * cap - max capacity of the target array
+ */
+#if HPT_INTERFACE_VERSION>=0x01020000
+int hpt_calc_max_array_capacity(DEVICEID source, PCREATE_ARRAY_PARAMS_V2 destInfo, HPT_U64 * cap);
+#endif
+
+/* hpt_calc_max_array_capacity_v2
+ * cap max capacity of the array user want to create or transform
+ * Version compatibility: v2.0.0.1 or later
+ * Parameters:
+ * source - if transform, this is the source array, otherwise, it should be zero
+ * destInfo - target array params
+ * Returns:
+ * 0 - Success
+ * cap - max capacity of the target array
+ */
+#if HPT_INTERFACE_VERSION>=0x02000001
+int hpt_calc_max_array_capacity_v2(DEVICEID source, PCREATE_ARRAY_PARAMS_V3 destInfo, HPT_U64 * cap);
+#endif
+
+/* hpt_rebuild_data_block2
+ * Used to copy data from source disk and mirror disk.
+ * Version compatibility: v1.1.0.0 or later
+ * Parameters:
+ * idArray Array ID (RAID1, 0/1 or RAID5)
+ * Lba Start LBA for each array member
+ * nSector Number of sectors for each array member (RAID 5 will ignore this parameter)
+ *
+ * Returns:
+ * 0 Success, event info is filled in *pEvent
+ */
+#if HPT_INTERFACE_VERSION>=0x01010000
+int hpt_rebuild_data_block_v2(DEVICEID idMirror, HPT_U64 Lba, HPT_U16 nSector);
+#endif
+
+/* hpt_verify_data_block2
+ * verify data block on RAID1 or RAID5.
+ * Version compatibility: v1.1.0.0 or later
+ * Parameters:
+ * idArray - Array ID
+ * Lba - block number (on each array member, not logical block!)
+ * nSectors - Sectors for each member (RAID 5 will ignore this parameter)
+ * Returns:
+ * 0 Success
+ * 1 Data compare error
+ * 2 I/O error
+ */
+#if HPT_INTERFACE_VERSION>=0x01010000
+int hpt_verify_data_block_v2(DEVICEID idArray, HPT_U64 Lba, HPT_U16 nSectors);
+#endif
+
+/* hpt_initialize_data_block2
+ * initialize data block (fill with zero) on RAID5
+ * Version compatibility: v1.1.0.0 or later
+ * Parameters:
+ * idArray - Array ID
+ * Lba - block number (on each array member, not logical block!)
+ * nSectors - Sectors for each member (RAID 5 will ignore this parameter)
+ * Returns:
+ * 0 Success
+ */
+#if HPT_INTERFACE_VERSION>=0x01010000
+int hpt_initialize_data_block_v2(DEVICEID idArray, HPT_U64 Lba, HPT_U16 nSectors);
+#endif
+
+/* hpt_i2c_transaction
+ * perform an transaction on i2c bus
+ * Version compatibility: v2.0.0.0 or later
+ * Parameters:
+ * indata[0] - controller ID
+ * Returns:
+ * 0 Success
+ */
+#if HPT_INTERFACE_VERSION>=0x01020000
+int hpt_i2c_transaction(HPT_U8 *indata, HPT_U32 inlen, HPT_U8 *outdata, HPT_U32 outlen, HPT_U32 *poutlen);
+#endif
+
+/* hpt_get_parameter_list
+ * get a list of driver parameters.
+ * Version compatibility: v1.0.0.0 or later
+ * Parameters:
+ * location - parameter location
+ * outBuffer - a buffer to hold the output
+ * outBufferSize - size of outBuffer
+ * Returns:
+ * 0 Success
+ * put in outBuffer a list of zero terminated parameter names. the whole list
+ * is terminated with an additional zero byte.
+ */
+int hpt_get_parameter_list(HPT_U32 location, char *outBuffer, HPT_U32 outBufferSize);
+
+/* hpt_{get,set}_parameter
+ * get/set a parameter value.
+ * Version compatibility: v1.0.0.0 or later
+ * Parameters:
+ * pParam - a pointer to HPT_DRIVER_PARAMETER.
+ * Returns:
+ * 0 Success
+ */
+int hpt_get_parameter(PHPT_DRIVER_PARAMETER pParam);
+int hpt_set_parameter(PHPT_DRIVER_PARAMETER pParam);
+int hpt_reenumerate_device(DEVICEID id);
+
+/*
+ * hpt_get_enclosure_count
+ * Version compatibility: v2.1.0.0 or later
+ * Parameters:
+ * controller_id
+ * Returns:
+ * number of enclosurers
+ */
+int hpt_get_enclosure_count(int ctlr_id);
+
+/* hpt_get_enclosure_info
+ * Version compatibility: v2.1.0.0 or later
+ * Parameters:
+ * id enclosure id
+ * pInfo pointer to ENCLOSURE_INFO buffer
+ * Returns:
+ * 0 Success, enclosure info is put into (*pInfo ).
+ */
+int hpt_get_enclosure_info(int ctlr_id, int enc_id, PENCLOSURE_INFO pInfo);
+
+int hpt_get_enclosure_info_v2(int ctlr_id, int enc_id, PENCLOSURE_INFO_V2 pInfo);
+
+int hpt_get_enclosure_info_v3(int ctlr_id, int enc_id, PENCLOSURE_INFO_V3 pInfo);
+
+/* performance monitor interface
+ * Version compatibility: v2.1.0.0 or later
+ */
+int hpt_get_perfmon_status(int ctlr_id, int *p_status);
+int hpt_set_perfmon_status(int ctlr_id, int enable);
+int hpt_get_perfmon_data(DEVICEID id, PHPT_PM_IOSTAT iostat);
+
+/* hpt_get_controller_venid
+ * Version compatibility: v1.0.0.0 or later
+ */
+int hpt_get_controller_venid(int ctlr_id, HPT_U32 *venid);
+
+#endif
+
+#pragma pack()
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/sys/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu b/sys/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu
new file mode 100644
index 0000000..ce5aafe
--- /dev/null
+++ b/sys/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu
@@ -0,0 +1,15583 @@
+begin 644 hpt27xx_lib.o
+M?T5,1@$!`0D```````````$``P`!```````````````PK0@``````#0`````
+M`"@`#@`+`(M$)`3&``C&0`$2@'PD"`$9TO?2@^($B%`"QD`#`,9`!`#&0`4`
+MQD`&`,9`!P#&0`@`QD`)`,9`"@#&0`L`@'PD#`$9TH/B((A0#,9`#0#&0`X`
+MQD`/`,9`$`#&0!$`QD`2`,9`$P"X%````,.-=@!55U93@^P8BWPD,(I$)#2(
+M1"07#[9T)#C_="0LZ/S___^)Q8/$$+@`````A>T/A)8```"+70B)\@^VPE`/
+MMD0D#U"-0P10Z/S___^)QL8#`,9#`0#&0P(`QD,#`(D\)/]T)"SH_/___X/$
+M$+D`````NA````"-1R2("$!*=?J-7@3&1R05QD<E$8A?*,9'*0"-=SP/MMN)
+M7R#'1V0`````BT4(B4<TB6]0@^P(:@!6Z/S___]3_W40_W4,5NC\____N`$`
+M``"#Q""#Q`Q;7E]=PY"0D%=64XM\)!"+1"04B<9FB4<$QD<*`&;'1P@``+L`
+M````9CG#<QB-=@`/M\N+%XGP9BG82&:)!$I#9CGS<NM;7E_#C78`5E.+7"0,
+MBT0D$(G&9HE#!,9#"@%FQT,(``"Y`````&8YP7,/#[?1BP-FB0Q0068Y\7+Q
+M6U[#B?93BUPD"(!["@%U*6:+0P@/M\B+$T!FB4,(9HL42F8[0P9R!F;'0P@`
+M`&;_2P0/M\+K$(GV9O]+!`^W4P2+`P^W!%!;PU93@^P(BTPD%(MT)!B`>0H!
+M=2D/MU$(#[=!!(E$)`2-!`(/MU$&B10DF?<\)(L99HDT4V;_003K$8UV``^W
+M402+`6:)-%!F_T$$@\0(6U[#BT0D!&:#>`0`#Y3`#[;`PXM$)`2Z`````#D`
+M=`Z+`(M(!(L0B4H$B1&)PHG0PXGVBU0D!+@`````.1)T#8M"!(M(!(L0B4H$
+MB1'#D%93@^P$BUPD$(MS1(I#/(A$)`.Y`````+IP````B=B0B`A`2G7ZB7-$
+MBD0D`XA#/(/$!%M>PXGV@^P0BU0D%(M,)!B*00&(0@&*00*(0@*+002)0@0/
+MMD(!C01`P>`"4/]Q"/]R".C\____@\0<PY!3@^P$BTPD#(M4)!"*1"04B$0D
+M`[,`.,-S&XGVB@$Z`G0*N`````#K$8UV`$%"0SI<)`-RY[@!````@\0$6\.0
+MBT0D!,9``0"+5"0(B%`"QT`$`````,.05E.+1"0,BW0D&`^V4`&-%%*+2`B-
+M')'^0`$!<`2Y`````+H,````B=B-=@"("$!*=?J+1"00BU0D%(D#B5,$B?"(
+M0PB)\@^VQHA#"<'J$(/B/XI#"H/@P`G0B$,*6U[#BU0D!(I"`3H"#Y+`#[;`
+MP[G_````N@`"``"+1"0$B?:("$!*=?K#D%.#[`2+3"0,BUPD$(I$)!2(1"0#
+MN`````"-=@`/M]"`?)$"_W4.9HD<D8I<)`.(7)$"ZP=`9H/X?W;A#[?`@\0$
+M6\.05U93BW0D$(M4)!B+3"0<#[=$)!2`?(8"_W4-9HD4AHA,A@+K%XUV``^V
+MP5`/M\)05NC\____#[?`@\0,6UY?PU93BUPD#(MT)!"*3"04N`````"0#[?0
+M.$R3`G439CDTDW4-QD23`O]FQP23___K!T!F@_A_=MT/M\!;7L.-=@!64XM<
+M)`R+="00BDPD%+@`````D`^WT#A,DP)U!V8Y-)-T")!`9H/X?W;I9CV``'4%
+MN(`!```/M\!;7L-55U93BVPD%(!])`AT.H!])"AT-(!])*AT+H!])(AT*(!]
+M)`IT(H!])"IT'(!])*IT%H!])(IT$(!])"]T"H!])(\/A18"```/MD4D@_@O
+M#X2;````@_@O?R:#^`IT98/X"G\,@_@(=%OIT@$``(GV@_@H='N#^"IT=NG!
+M`0``D#V/````#X3I````/8\```!_'CV(````#X37````/8H````/A,P```#I
+MDP$``(UV`#VH````='$]J@```'1JZ7T!``"0#[9%)8/@'\'@$`^V52;!X@@)
+MT`^V52<)T(G&OP`````/ME4HZ6,!``"-=@`/ME4FP>(8#[9%)\'@$`G"#[9%
+M*,'@"`G"#[9%*0G"B=:_``````^V52O!X@@/MD4L"<+I*`$```^V52;!XA@/
+MMD4GP>`0"<(/MD4HP>`("<(/MD4I"<*)UK\`````#[95*L'B&`^V12O!X!`)
+MP@^V12S!X`@)P@^V12T)PNG>````B?8/MG4FB?>^`````,'G&`^V32>)R[D`
+M````P>,0B?`)R(GZ"=H/MDTHB<NY`````,'C"(G&"<Z)UPG?#[9%*8G"N```
+M``")\0G!B?L)TP^V12JZ``````^DPAC!X!B)S@G&B=\)UP^V12NZ``````^D
+MPA#!X!")\0G!B?L)TP^V12RZ``````^DP@C!X`B)S@G&B=\)UP^V32V[````
+M`(GP"<B)^@G:B<:)UP^V52[!XA@/MD4OP>`0"<(/MD4PP>`("<(/MD4Q"<+K
+M$9"^`````+\`````N@````"0B758B7U<B55@9H--$@%;7E]=PY!3@^P0BUPD
+M&`^V0S-0#[9#,E`/MD,Q4`^V0S!0#[9#+U`/MD,N4`^V0RU0#[9#+%`/MD,K
+M4`^V0RI0#[9#*5`/MD,H4`^V0R=0#[9#)E`/MD,E4`^V0R104V@`````Z/S_
+M__^#Q$@/MT,04&@`````Z/S___^#Q!A;PXGV5U93BWPD$(M<)!2Z_____[D`
+M````9CG9<QV^`````)`/M\&*!#@QT`^VP,'J"#,4AD%F.=ERZ8G06UY?PY"0
+MD%.+3"0(BP&+D`0!``")%0````")TX'C?O_^_XL!B9@$`0``B=.!XW[_\O^+
+M002)&(M!!(E8#(M!!(E8$(M!!(E8%(M!!(E8&(M!!(E8!(L!BX!4`0``HP``
+M``")PX'C_@#__XL!B9A4`0``6\.-=@!64X/L!(MT)!2*5"08BT0D$(L8@_X#
+M=A"+A/.``0``HP````#K#HGVBX3S@`$``*,`````@^#^@_X#=@R)A/.``0``
+MZPJ-=@")A/.``0``A-)T88/^`W8.BX2ST`$``*,`````ZPR+A+/0`0``HP``
+M``"#R`*#_@-V"8F$L]`!``#K"8F$L]`!``")]H/^`W8/BX2ST`$``*,`````
+MZPV0BX2ST`$``*,`````J`)UW.MFB?:#_@-V#<>$\S`"````````ZPO'A/-0
+M`@```````(/L#&@0)P``Z/S___^#Q!"#_@-V#HN$\S0"``"C`````.L,BX3S
+M5`(``*,`````@\@!@_X#=@F)A/,T`@``ZP>)A/-4`@``@\0$6U[#B?975E.#
+M[!"+?"0@BD0D)(A$)`^*3"0HB$PD#HLWNP````"`?R8`#X22`0``D`^V1"0/
+MB-G3^*@!#X1S`0``@_L#=@Z+A-Z$`0``HP````#K#(N$WH0!``"C`````(/@
+M_H/[`W8,B83>A`$``.L*C78`B83>A`$``(/L#&@0)P``Z/S___^#Q!"`?"0.
+M`'1B@_L#=@Z+A)[0`0``HP````#K#(N$GM`!``"C`````(/(`H/[`W8)B82>
+MT`$``.L*B82>T`$``(UV`(/[`W8/BX2>T`$``*,`````ZPV0BX2>T`$``*,`
+M````J`)UW.MFB?:#^P-V#<>$WC`"````````ZPO'A-Y0`@```````(/L#&@0
+M)P``Z/S___^#Q!"#^P-V#HN$WC0"``"C`````.L,BX3>5`(``*,`````@\@!
+M@_L#=@F)A-XT`@``ZP>)A-Y4`@``@_L#=@_'A-Z``0```0```.L-B?;'A-Z`
+M`0```0```(/[`W80BX3>A`$``*,`````ZPZ)]HN$WH0!``"C`````(/(`8/[
+M`W8,B83>A`$``.L+C78`B83>A`$``)!##[9')CG8#X=O_O__@\006UY?PU.+
+M7"0(BDPD#(L#BX`$`0``HP````")PF:!>R2`9'009H%[)("1=`AF@7LD@)1U
+M%`^VR8/!"+@!````T^`)PNL2C78`#[;)@\$,N`$```#3X`G"BP.)D`0!``!;
+MPXUV`%.+7"0(BDPD#(L#BX`$`0``HP````")PF:!>R2`9'009H%[)("1=`AF
+M@7LD@)1U%`^VR8/!"+C^____T\`APNL2C78`#[;)@\$,N/[____3P"'"BP.)
+MD`0!``!;PXUV`%93@^P$BW0D$`^V7"044U;H_/___X/L!&@0)P``Z/S___]3
+M5NC\____@\0<6U[#D%.+7"0(BDPD#(#Y_W1Z@/D?=SF+DQ@!``")%0````"X
+M`0```-/@B<'WT"'0B8,8`0``BX-8`0``HP`````AR'1'B8-8`0``ZS^-=@"+
+MDQP!``")%0`````/MLF#Z2"X`0```-/@B<'WT"'0B8,<`0``BX-@`0``HP``
+M```AR'0(B8-@`0``B?9;PXGV5U93BW0D&(I<)!2+1"00BSB`^P-V$@^VP\>$
+MQP`"```,`0``ZQ")]@^VP\>$QP`"```,`0``@^P,:!`G``#H_/___X/$$(#[
+M`W8M#[;+#[96`\'B&`^V1@+!X!`)P@^V1@'!X`@)P@^V!@G"B93/!`(``.LK
+MC78`#[;+#[96`\'B&`^V1@+!X!`)P@^V1@'!X`@)P@^V!@G"B93/!`(``(#[
+M`W83#[;#QX3'``(``!`!``#K$8UV``^VP\>$QP`"```0`0``@^P,:!`G``#H
+M_/___X/$$(#[`W8M#[;+#[96!\'B&`^V1@;!X!`)P@^V1@7!X`@)P@^V1@0)
+MPHF4SP0"``#K*XGV#[;+#[96!\'B&`^V1@;!X!`)P@^V1@7!X`@)P@^V1@0)
+MPHF4SP0"``!;7E_#D)"04X/L,(M<)#B-1"0N4(U$)#!0C40D,E"-1"0T4(U$
+M)#90C40D.5"-1"0\4(U$)#Y0C40D05"-1"1"4(U$)$50C40D2%"-1"1+4`^W
+M0R10Z/S___^#Q#P/MD0D%U`/MD0D'%"-1"084.C\____:@$/ME0D)XT$TL'@
+M`BG0P>`#4/]S$(V#0`4``%#H_/___X/$(&H!#[9$)!F-!$"-!(#!X`-0_W,0
+MC8-<!0``4.C\____@\00:@$/MD0D&(T$0(T$P(G"P>(%*<+!X@)2_W,0C8-X
+M!0``4.C\____@\00:@$/MT0D(L'@`E#_<Q"-@Y0%``!0Z/S___^#Q!!J`0^W
+M5"0:C035`````"G0P>`$4/]S$(V#0`8``%#H_/___X/$$&H!#[9$)!T/MU0D
+M&@^OPHT$0,'@`E#_<Q"-@_`%``!0Z/S___^#Q!!J`6@``@``_W,0C8,,!@``
+M4.C\____@\00#[9$)!-0:``(``#_<Q"-@\P&``!0Z/S___^#Q!!J`0^V1"0@
+MC02`P>`"4/]S$(V#>`8``%#H_/___X/$$&H!#[9$)"&-%,"-%%#!X@-2_W,0
+MC8.4!@``4.C\____@\00:@$/MT0D'HT$0,'@`U#_<Q"-@[`&``!0Z/S___^#
+MQ!!J`0^W1"0BT>!0_W,0C8/D"```4.C\____@\00:@$/MD0D%]'@4/]S$(V#
+M#`D``%#H_/___X/$$&H!#[9$)!G1X%#_<Q"-@S0)``!0Z/S___^#Q!!J`0^V
+M1"08T>!0_W,0C8-<"0``4.C\____@\00:@$/MD,FT>!0_W,0C8.$"0``4.C\
+M____@\00:@$/MT0D),'@!5#_<Q"-@UP&``!0Z/S___^#Q!!J`?]T)!#_<Q"-
+M@ZP)``!0Z/S____'!"0!````:D`/MT0D,L'@!E#_<Q"-@\@)``!0Z/S___^#
+MQ!1J`6@``0``:``9``#_<Q"-@^P)``!0Z/S___^#Q!1J`6B`````#[=4)#*-
+M!-*-!(*-!$+!X`10_W,0C8,0"@``4.C\____@\04:@%J!`^W1"0XP>`"4/]S
+M$(V#-`H``%#H_/___X/$%&H!:@0/MT0D.L'@`E#_<Q"-@U@*``!0Z/S___^#
+MQ!1J`6H(#[9$)##!X`M0_W,0C8-\"@``4.C\____@\04:@%J"`^W5"0NC022
+MC02`P>`"*=#!X`)0_W,0@<.@"@``4^C\____N`````"#Q$A;PXGV55=64X/L
+M'+T`````BT0D,,9`.0#&0#@`QD`W`,>`7`P```````#&@%D,````N0````"Z
+M$`$``(M<)#"-@S@+``"-=@"("$!*=?J+1"0P!<P```"+5"0PB8+,````B8+0
+M````B=`%U````(F"U````(F"V````(U`"(F"W````(F"X````(U`"(F"Y```
+M`(F"Z````(U`"(F"[````(F"\````(U`$(F"_````(F"``$``(U`"(F"!`$`
+M`(F""`$``(U`\(F"]````(F"^````(/L"(U$)")0C40D)%"-1"0F4(U$)"A0
+MC40D*E"-1"0M4(U$)#!0C40D,E"-1"0U4(U$)#90C40D.5"-1"0\4(U$)#]0
+M#[=")%#H_/___XI$)$>+3"1PB$$NBD0D2(A!+XI$)$F(@<D```!FBT0D4F:)
+M04"+1"189HF!-`L``&:+1"1:2&:)@38+``"#Q$`/MT$D/8"1``!T"SV`E```
+M#X5$"0``BUPD,,9#-03&0RL$QD,V0,9#-`#&@\8````)QD,L`(/L#(G8!4`%
+M``!0Z/S___^)@U@%``"#Q!"[``````^V3"0'C13)P>("*<J-#-4`````ZP2(
+M&$E`A<EU^(/L#(M$)#P%7`4``%#H_/___XM4)$")@G0%``"#Q!"Y``````^V
+M5"0)C112C122P>(#=`:("$!*=?J#[`R+1"0\!7@%``!0Z/S___^+3"1`B8&0
+M!0``@\00NP`````/ME0D"(T44HT4THG1P>$%*=&)RL'B`G0&B!A`2G7Z@^P,
+MBT0D/`64!0``4.C\____BUPD0(F#K`4``(/$$+D`````#[=4)!+!X@)T!H@(
+M0$IU^H/L#(M$)#P%#`8``%#H_/___XM4)$")@B0&``")T`7P!0``B00DZ/S_
+M__^+3"1`B8$(!@``B<.)R`5`!@``B00DZ/S___^+5"1`B8)8!@``B<*^````
+M`(/$$&8[="0*<S>+3"0P@<'<````B5I$BD0D#8A"/(M!!(E1!(D*B4($B1`/
+MMD0D#8T$0(T<@X/"<$9F.W0D"G+3@^P,BT0D/`5<!@``4.C\____BTPD0(F!
+M=`8``(G"O@````"#Q!!F.W0D%',FBTPD,('!Y````,9""`"+002)402)"HE"
+M!(D0@\(@1F8[="04<N2#[`R+1"0\!7@&``!0Z/S___^+7"1`B8.0!@``B<*^
+M`````(/$$(!\)!``="2)V8'![````(M!!(E1!(D*B4($B1"#PA1&9@^V1"00
+M9CGP=^2#[`R+1"0\!90&``!0Z/S___^+5"1`B8*L!@``B<*^`````(/$$(!\
+M)!$`="F+3"0P@<'\````BT$$B5$$B0J)0@2)$('"F````$9F#[9$)!%F.?!W
+MX8/L#(M$)#P%L`8``%#H_/___XM,)$")@<@&``")PKX`````@\009CMT)`YS
+M(HM,)#"!P?0```"+002)402)"HE"!(D0@\(81F8[="0.<NB^`````(!\)`<`
+M=$:+?"0P@<<$`0``#[?>@^P,BT0D/`7,!@``4.C\____BU0D0(F$FN0&``"#
+MQ!"+5P2)1P2).(E0!(D"1F8/MD0D!V8Y\'?$@^P,BT0D/`7D"```4.C\____
+MBTPD0(F!_`@``(F!``D``&:+1"0B9HF!!@D``(/$"`^WP%")R`4`"0``4.C\
+M____@\0$BT0D/`4,"0``4.C\____BUPD0(F#)`D``(F#*`D``&8/MD0D%V:)
+M@RX)``"#Q`@/M\!0B=@%*`D``%#H_/___XG8!30)``")!"3H_/___XF#3`D`
+M`(F#4`D``&8/MD0D&6:)@U8)``"#Q`@/M\!0B=@%4`D``%#H_/___XG8!5P)
+M``")!"3H_/___XF#=`D``(F#>`D``&8/MD0D&&:)@WX)``"#Q`@/M\!0B=@%
+M>`D``%#H_/___XG8!80)``")!"3H_/___XF#G`D``(F#H`D``&8/MD,F9HF#
+MI@D``(/$"`^V0R90B=@%H`D``%#H_/___XG8!:P)``")!"3H_/___XF#Q`D`
+M``^V3"08C13)P>(#*<J-%)&-#)5T10``@\00NP````")RH7)=`:(&$!*=?J+
+M5"0PBX+$"0``B0B+7"0PBY/$"0``BD0D"(A"!(/L!`^V1"0,4%'_L\0)``#H
+M_/___[X`````@\00@'LF`'1Q#[?&C11`P>(#*<*+1"0PC120C:HH`0``B?&(
+M303&104`B8(H`0``QD4*`,9%-`#&11P`QT58`````(V"2`$``(E%((E%)(V"
+M5`$``(E%+(E%,('"8`$``(E5.(E5/,9%!@)&BUPD,&8/MD,F9CGP=X^+1"0P
+MQD`T`+X`````#[?&BU0D,,:$$!X%``#_1F:#_@-VZKX`````@'PD!P!T?P^W
+MSHM<)#"+DU@%``"-!,G!X`(IR,'@`\9$$",!BY-8!0``QD00(@"+DU@%``#&
+M1!!(_XN36`4``,9$$#[_BY-8!0``9L>$$)```````,>$BY@"````````B<$#
+MBU@%``"-41")41`#@U@%``"#P!")0`1&9@^V1"0'9CGP=X&+1"0P9L>`Q```
+M````O@````"-=@`/M\:+5"0PQH00F`0``/]&9H'^A0!VZ;X`````@'PD"``/
+MA*<````/M\:+7"0PBXN0!0``C01`C03`B<+!X@4IPL'B`L9$"C``BX.0!0``
+MQD0",0"+@Y`%``#'1`(,`````(G1`XN0!0``C4$0B4$0B=`#@Y`%``"#P!")
+M0`2)T0.+D`4``(U!&(E!&(G0`X.0!0``@\`8B4`$BX.0!0``B6P""(G1`XN0
+M!0``C4$HB4$H`Y.0!0``@\(HB5($1F8/MD0D"&8Y\`^'6?___XM$)##&@,<`
+M``"`O@````"`?"0)`'1T#[?6BTPD,(N!=`4``(T44HT4DL'B`V;'1`(R!`"+
+M@70%``#&1`(F`(N!=`4``,9$`BC_BX%T!0``QD0"-/^)T8M<)#`#BW0%``"-
+M012)012)T`.#=`4``(/`%(E`!(N#=`4``(EL`E1&9@^V1"0)9CGP=XR+1"0P
+MQH#(````@H/L"(M$)#@%Y`D``%"+1"0\!<@)``!0Z/S___^+5"1`B8+@"0``
+M@\0(B=`%"`H``%"-0.10Z/S___^+3"1`B8$$"@``@\0(B<@%+`H``%"-0.10
+MZ/S___^+7"1`B8,H"@``@\0(B=@%4`H``%"-0.10Z/S___^)@TP*``"#Q`B)
+MV`5T"@``4(U`Y%#H_/___XF#<`H``(/$"(G8!9@*``!0C4#D4.C\____B8.4
+M"@``BU0D0(NZF`H``(NJG`H``(E$)!"^`````(/$$(!\)!``=$Z)TX'#[```
+M`(/L#%/H_/___XG"BTPD$(E("(EX#(EH$(/$$(M#!(E3!(D:B4($B1"!P0`(
+M``")#"2!QP`(``"#U0!&9@^V1"009CGP=[J#[`B+1"0X!;P*``!0BT0D/`6@
+M"@``4.C\____BUPD0(F#N`H``(M4)$"+NKP*``"+JL`*``")1"00O@````"#
+MQ!!F.W0D#G-*B=.!P_0```"#[`Q3Z/S___^)PHM,)!")2`B)>`R):!"#Q!"+
+M0P2)4P2)&HE"!(D0@<&,`0``B0PD@<>,`0``@]4`1F8[="0.<KZ#Q!Q;7E]=
+MPU575E.#[`R+?"0@QD0D"P`/MD0D"XJ,.!X%``"`^?\/A,@````/MM&-!%+!
+MX`,IT(T$AXV0*`$``(E4)`2]`````("X,@$````/A)X```")UH/&.`^VT8T$
+M4L'@`RG0P>`"B00DC78`@^P,5NC\____B<.#Q!"+1@2)7@2),XE#!(D8@WL<
+M`'0;@^P$_W,<_[<D!0``:@7H_/___X!+)`*#Q!"0@^P$4VH"_W0D$.C\____
+M@\00@'M+`'0>@^P,5^C\____QP0D`0```.C\____@\00@'M+`'7B18GHBQ0D
+M.(0Z,@$```^'>_____Y$)`N`?"0+`P^&%/___X/L#%?H_/___X/$'%M>7UW#
+MC78`4X/L"(M,)!2+7"00.5D8=4^`>20(=%R`>20H=%:`>22H=%"`>22(=$J`
+M>20*=$2`>20J=#Z`>22J=#B`>22*=#*-D\P```"+@\P```")2`2)`8E1!(F+
+MS````.L6C78`C8/,````BU`$B4@$B0&)402)"H/L#%/H_/___X/$&%O#C78`
+M@^P4_W0D'/]T)!SH_/___X/$',-55U93@^P,BUPD)(MT)"B+;"0LOP````!F
+M@7LDX0%U#(I#)H/H$3P!=C.)]HM$)""+$(N*6`4``(VYZ!8!`&:!>Q"%`'<7
+M#[=#$`^VE!"8!```C032P>`"*="-/,'&1@0%@&8%_H`FW[(`9H%[).$!=0J*
+M0R9(/`%W`K(!B-#!X`>*%H/B?PG"B!:*0V:#X`'!X`:#XK\)PH@69H%[).$!
+M=1**0R:#Z!$\`7<(9HEN".L>B?;V0V8!=!*#[`Q7Z/S___]FB48(@\00ZP1F
+MB6X(9HM&"(A#%6:!>R3A`74ABD,F2#P!=P6*4R?K'V:!>R3A`74,BD,F@^@1
+ML@\\`78+L@"#?S``=`.*5TF#X@^*!H/@\`G0B`:#Q`Q;7E]=PY"#[`S_="0<
+M_W0D'/]T)!R+1"0<_S#H_/___X/$',.)]E93BUPD#(LS9HN#,`L``$!FB8,P
+M"P``9CN#-`L``'()9L>#,`L`````#[>+,`L``(N33`H``(M$)!"+`(D$B@^W
+M@S`+``")ABP!``!;7L.055=64XM<)""+?"08#[9L)!R+="04N@````"Y!```
+M`(G8C78`B!!`277ZB?J!XO\/``"+`R4`\/__"=")`P^V5@G!X@PE_P_P_PG0
+MB0,/MD8&T>B#X`&#^`$9P(/@`D#!X!V+$X'B____'PG"B1.*0P.#R!"#X/>(
+M0P/V1@8!=!.)ZH/B?\'B%(L#)?__#_@)T(D#6UY?7<-55U93@^P,BVPD((MT
+M)"3'1"0(`````(!^)`AT$X!^)"AT#8!^)*AT!X!^)(AU"9"#3F0*ZQZ)]H!^
+M)`IT$H!^)"IT#(!^)*IT!H!^)(IU!(-.9`)F@7XDX0%U&(I&)H/H$3P!=PZ#
+M3F0(N`````#I.`4``(M&)"7___\`/>$!$``/A0D!``!F@7X0A0`/AXD````/
+MMT80@+PHF`0``/]T>V:#?A!_=R`/MI0HF`0``(N-6`4``(T$TL'@`BG0BT3!
+M*`^V>`3K66:!?A"!`'<I#[=&$`^VA"B8!```BXV0!0``C01`C03`B<+!X@4I
+MPHM$D0@/MG@$ZR@/MT80#[:$*)@$``"+E70%``"-!$"-!("+1,)4#[9X!.L&
+MD+______B?H/ML(/MIPH'@4``(T$6\'@`RG8C9R%*`$``(N-D`4``(V![`8-
+M`&:!?A"%`'<<#[=&$`^VA"B8!```C01`C03`B<+!X@4IPHT$D?9`-1`/A6T!
+M``#&1A0$BT0D*,<``````+@!````Z1T$``"09H%^$(4`#X>,````#[=&$("\
+M*)@$``#_='YF@WX0?W<C#[:4*)@$``"+C5@%``"-!-+!X`(IT(M$P2@/MG@$
+MZUR-=@!F@7X0@0!W*0^W1A`/MH0HF`0``(N-D`4``(T$0(T$P(G"P>(%*<*+
+M1)$(#[9X!.LH#[=&$`^VA"B8!```BY5T!0``C01`C02`BT3"5`^V>`3K!I"_
+M_____[G_````9H%^$(4`=PT/MT809@^VC"B8!```B?H/ML(/MIPH'@4``(T$
+M6\'@`RG8C9R%*`$```^WT8T$TL'@`BG0BY58!0``C03"B40D"&:!?B3A`74)
+MBD8F2#P!=BV09H'Y_P!T"HM$)`CV0",$=1O&1A0&BU0D*,<"`````+@!````
+MZ?<"``"-=@"+5"0(#[9"(*@!=""H!'0<BD4L.D4V<A2+1"0HQP`!````N`$`
+M``#IR`(``(-\)`@`#X3Q````BU0D"`^V0B"H`0^$X0```*@$#X39````@^P(
+M5E+H_/___X/$$(3`=1C&1A0$BT0D*,<``````+@!````Z7P"``"+5"0(@'I+
+M'W84BT0D*,<``0```+@!````Z5X"``#V1F8!=`;V0P@!=!CV1F8!=0;V0P@!
+M=0R`?A2!=`;V0P@(="J#[`B)^@^VPE!5Z/S___^#Q!"$P'04BT0D*,<``0``
+M`+@!````Z1`"``#V1F8!#X1^`0``]D,(`0^$=`$``(/L#/]T)!3H_/___X/$
+M$&:#^!\/AEL!``"+5"0HQP(!````N`$```#ISP$``(UV`/9#!@)T,HM&)"7_
+M__\`/>$!$`!T(XM4)`B*0DLZ0DIR%XM$)"C'``$```"X`0```.F7`0``C78`
+MBT8D)?___P`]X0$0``^$^0```(M4)`@/MT(VB<+1ZH/B`;$!@'XDX0^%W@``
+M`(!^)0$/A=0````/MD8F@^@&@_@)#X>L````_R2%``````^VP5!J`595Z/S_
+M__^#Q!"$P`^%I0```(M$)"C'``(```"X`0```.D9`0``#[;!4&H`5E7H_/__
+M_X/$$(3`=7V+5"0HQP("````N`$```#I\0```&H!#[;"4%95Z/S___^#Q!"$
+MP'55BT0D*,<``@```+@!````Z<D```!J``^VPE!65>C\____@\00A,!U+8M4
+M)"C'`@(```"X`0```.FA````D,9&%`2+1"0HQP``````N`$```#IB````(/L
+M#(V%``D``%#H_/___X/$$(3`=!*+5"0HQP(!````N`$```#K89"`?B3A=5*`
+M?B4!=4R`?B8/=4:`?BD!=4!F#[9&*,'@"&8/ME8G`="#[`@/M\!05>C\____
+M@\00.49(=02%P'48QD84!(M$)"C'``````"X`0```.L+C78`N`````"-=@"#
+MQ`Q;7E]=PU93BUPD#(MT)!"Y`````+H-````B?")]H@(0$IU^HI#)8@&BD,F
+MB$8!BD,GB$8"BD,HB$8#BD,IB$8$BD,JB$8%BD,KB$8&]D-F!'0>BD,LB$8(
+MBD,MB$8)BD,NB$8*BD,OB$8+BD,PB$8,N`$```!;7L.055=64XML)!2+?"08
+MN@````"^`````(GVN0<````/MAPWC78`T>*)V-/XJ`%T$O?"`````74:@?)W
+M)]L`ZQ*)]O?"`````70(@?)W)]L`B?9)>=%&@_X'?K^)T,'H$(A%`(G0P>@(
+MB$4!B%4"6UY?7<.-=@!55U93@^Q@BVPD>(M$)'2+@"@*``")1"0@QT0D&```
+M``#'1"04`````,=$)!``````QT0D#`````!FQT4>_P^-1"1`4%7_="1\Z/S_
+M__^#Q!"$P'0)BT0D/.G?#```BT4D)?___P`]X0$0``^%(P$``(/L#&B($P``
+MZ/S___^#Q!!F@7T0A0`/AYL````/MT40BU0D<("\$)@$``#_#X2%````9H-]
+M$']W(P^VE!"8!```BUPD<(N+6`4``(T$TL'@`BG0BT3!*(I`!.M=9H%]$($`
+M=RP/MT40BW0D<`^VA#"8!```BXZ0!0``C01`C03`B<+!X@4IPHM$D0B*0`3K
+M*0^W11"+5"1P#[:$$)@$``"+DG0%``"-!$"-!("+1,)4BD`$ZP2)]K#_#[;`
+MBUPD<`^VA!@>!0``B40D&(T$0,'@`RM$)!B-A(,H`0``B40D&(N+D`4``&:!
+M?1"%`'<E#[=%$`^VA!B8!```C01`C03`B<+!X@4IPHT4D8E4)!#IA0$``('!
+M[`8-`(E,)!#I=@$``+O_````9H%]$(4`=Q$/MT40BW0D<&8/MIPPF`0``&:!
+M?23A`74.BD4F@^@1/`$/AND```!F@7T0A0`/AYD````/MT40BU0D<("\$)@$
+M``#_#X2#````9H-]$']W(P^VE!"8!```BW0D<(N.6`4``(T$TL'@`BG0BT3!
+M*(I`!.M;9H%]$($`=RP/MT40BU0D<`^VA!"8!```BXJ0!0``C01`C03`B<+!
+MX@4IPHM$D0B*0`3K)P^W11"+3"1P#[:$")@$``"+D70%``"-!$"-!("+1,)4
+MBD`$ZP*P_P^VP(MT)'`/MH0P'@4``(E$)!B-!$#!X`,K1"08C82&*`$``(E$
+M)!@/M].-!-+!X`(IT(N66`4``(T$PHE$)!3K(0^WPXT$0(T$@(M,)'"+D70%
+M``"-!,*)1"0,BW!4B70D&&:!?23A`741BE4FC4+O/`%V)HU"_SP!=A]F@?O_
+M`'0*BT0D%/9`(P1U#L9%%`:X`````.DS"@``@^P(C40D0%#_="1\Z/S___]F
+MB40D,&:)11Z#Q`3_="1\Z/S___^)1"04@\00N`(```"#?"0$``^$]@D``(M4
+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
+M!```_P^$C0```&:#?A!_=R8/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*`^V
+M0`0%$`4``.MFD&:!?A"!`'<N#[=&$`^VA#B8!```BX^0!0``C01`C03`B<+!
+MX@4IPHM$D0@/MD`$!1`%``#K+P^W1A`/MH0XF`0``(N7=`4``(T$0(T$@(M$
+MPE0/MD`$!1`%``#K"(UV`+@/!@``#[9<!PZ-!%O!X`,IV(V<AR@!``"#?E``
+M=!&#[`C_=E!7Z/S___^#Q!")]H/L"%97Z/S___^#Q`A54_^5G````(/$'%M>
+M7UW#C78`55=64X/L&(ML)"R+10")1"04C5TL4^C\____B<>#[R"#Q`3_="04
+MZ/S___^)QH/$$(U'((M3!(E#!(E?((E0!(D"N`$```"%]G1TC58\QD8DX<9&
+M)0'&1B80@$XG`8M,)"2+@9P```")1DB+1DR)2!R)R`60````B48XQD85S&8/
+MMD<S9HE&$(M%`(E&&,=&()````")3C3'1FR,-```@^P(:@!2Z/S___^#Q`A6
+M_W0D%.C\____N`````"#Q!"#Q`Q;7E]=PY!55U93@^P,BWPD)(MT)""+1BB)
+M1"0(BRAFBT\>B<AFP>@%#[?8@^$?N`$```#3X(5$G40/A6,#``"+50"-!)T`
+M`P``B8)P`0``BT4`BX!T`0``HP````")PL9'%"&+1R0E____`#WA`0\`=2"#
+M[`AJ`%?H_/___X/$#&H`5U7H_/___X/$$.D1`P``D&:+3QZ#X1^X`0```-/@
+MA<)T%H/L"&H!5^C\____B2PDZ/S___^#Q!`/MH:P````@_@$#X?8`@``_R2%
+M5`4``,:&L`````&#[`1J`5?_="04Z/S___^#Q!#ILP(``,:&L`````*#[`1J
+M"%?_="04Z/S___^#Q!#IE0(``,:&L`````.#[`16:B'_="04Z/S___^#Q!"#
+M?BP`=""#[`QJ`&H!#[9&25#_=BS_="0DZ/S___^#Q"#I5@(``(/L!&H`BU0D
+M$`^V0@E05>C\____@\00Z3H"``#&AK`````$@WXL`'0Q@^P$5FHA_W0D%.C\
+M____QP0D`````&H"#[9&25#_=BS_="0DZ/S___^#Q"#I_`$``(/L!&H`:B'_
+M="04Z/S___^#Q`QJ`8M4)!`/MD()4%7H_/___X/$$.G0`0``@^P$5FH&_W0D
+M%.C\____@\00@WX<`'05BT8<BT@$C5$!B5`$@_D%#X:C`0``QD8C`<9&(@"`
+M?DL`=!^0@^P,5>C\____QP0D`0```.C\____@\00@'Y+`'7B@WXL`'03BU8,
+MBT8(B5`$B0*+1BS^2##K%8-^,`!T#XM6,`^V1DG'1((\`````(M6!(L&B5`$
+MB0*+1"0(_D@*@[[@`````'0;@^P$:@$/MH;5````4/^VX````.C\____@\00
+M@WXL`'05@^P$:@$/MD9)4/]V+.C\____@\00@WX<`'1YBT8<QT!@`````/Z%
+M5PP``(/L#%7H_/___X/$#&H!BT8<#[9``5!5Z/S___^#Q`R+1AP/MD`"4(M&
+M'`^V0`%0:`T```#H_/___X/$#/]V'/^U)`4``&H!Z/S___^#Q`S_=AS_M20%
+M``!J!NC\____QT8<`````(/$$(/L"%95Z/S___^#Q!"+5"0(@'H%_W1BOP``
+M``"`>@H`=D&)TX/#.(GV@^P,4^C\____B<:#Q!"+0P2)<P2)'HE&!(DP@'XB
+M_W4.1XGXBU0D"#A""G?3ZPN)^(M4)`@X0@IW%HM$)`C&0`7_@^P(4%7H_/__
+M_X/$$)"#Q`Q;7E]=PU575E.#[`R+7"0DBW0D((M^*(LOQT0D"`````#V1P@0
+M=`?&AK`````&#[:&L````(/X`0^$@P```(/X`7\*A<!T'>G)`P``D(/X!`^$
+MFP```(/X!@^$Z@$``.FQ`P``QH:P`````8/L"%95Z/S____&0Q2!@$\("(/$
+M$(-[5`!T$(/L"(U#5%!5Z/S___^#Q!"-E<P```"+A<P```")6`2)`XE3!(F=
+MS````(/L#%7H_/___X/$$.E4`P``@&<(]_Z&LP```,:&L`````#&0Q0"@^P(
+M4U7H_/___XDL).C\____@\00Z24#``"0QH:S`````(-^'``/A$<!``"+1AR+
+M2`2-40&)4`2#^04/AS(!``"`9PCW@WM4`'00@^P(C4-44%7H_/___X/$$(V5
+MS````(N%S````(E8!(D#B5,$B9W,````@$\($(-^+`!T'8/L#&H`:@(/MD9)
+M4/]V+%?H_/___X/$(.FC`@``QD0D!P"`?PH`#X:Q````C4<XB00DB?:#[`S_
+M="0,Z/S___^)PX/$$(L4)(M"!(E:!(D3B4,$B1B#>QP`=!V#[`3_<QS_M20%
+M``!J!>C\____@$LD`H/$$(UV`(/L!%-J!E?H_/___X/$$(![2P!T/XM$)`C_
+M1"0(/7^6F`!W,(/L#%7H_/___\<$)`$```#H_/___X/$$(![2P!T$HM$)`C_
+M1"0(/7^6F`!VTXUV`/Y$)`>*1"0'.$<*#X=7____QD8B`X/L"%95Z/S___^#
+MQ!#IS0$``)"-E<P```"+A<P```")6`2)`XE3!(F=S````(-^'`!T%8M&'(M(
+M!(U1`8E0!(/Y!0^&>@$``(/L#&A8````Z/S___^#Q`Q6:@97Z/S____^3PJ#
+MQ!"+5@2+!HE0!(D"@WXL`'04BT8L_D@PBU8,BT8(B5`$B0+K&9"#?C``=!*+
+M5C`/MD9)QT2"/`````"-=@"`?DL`=$*+1"0(_T0D"#U_EI@`=S.-=@"#[`Q5
+MZ/S____'!"0!````Z/S___^#Q!"`?DL`=!*+1"0(_T0D"#U_EI@`=M.-=@"+
+M5@2+!HE0!(D"@[[@`````'0=@^P$:@$/MH;5````4/^VX````.C\____@\00
+MB?:#?BP`=!:#[`1J`0^V1DE0_W8LZ/S___^#Q!"0@WX<`'1VBT8<QT!@````
+M`/Z%5PP``(/L#%7H_/___X/$#&H!BT8<#[9``5!5Z/S___^#Q`R+5AP/MD("
+M4`^V0@%0:`T```#H_/___X/$#/]V'/^U)`4``&H!Z/S___^#Q`S_=AS_M20%
+M``!J!NC\____QT8<`````(/$$(/L"%95Z/S___^#Q!#K$8/L!%9J`E?H_/__
+M_X/$$(GV@^P,5>C\____@\00@\0,6UY?7<-55U93@^P,BUPD)(M\)""+;U2+
+M=0#V10@0=`3&1S4&#[9'-8/X`0^$@0```(/X`7\+A<!T'NE:`P``B?:#^`0/
+MA)$```"#^`4/A(8!``#I00,``,9'-0&#[`A75NC\____QD,4@8!-"`B#Q!"#
+M>U0`=!"#[`B-0U105NC\____@\00C9;,````BX;,````B5@$B0.)4P2)GLP`
+M``"#[`Q6Z/S___^#Q!#IYP(``(!E"/?^1S;&1S4`QD,4`H/L"%-6Z/S___^)
+M-"3H_/___X/$$.F^`@``@&4(]X-[5`!T$(/L"(U#5%!6Z/S___^#Q!"-ELP`
+M``"+ALP```")6`2)`XE3!(F>S````(/L!&H`:@95Z/S___^#Q`QJ`0^V10E0
+M5NC\____QD0D&P"#Q!"`?0H`#X:"````C7TX@^P,5^C\____B<.#Q!"+1P2)
+M7P2).XE#!(D8@WL<`'0;@^P$_W,<_[8D!0``:@7H_/___X!+)`*#Q!"0@^P$
+M4VH&5>C\____@\00@'M+`'0AC78`@^P,5NC\____QP0D`0```.C\____@\00
+M@'M+`'7B_D0D"XI$)`LX10IW@<9%!0"`30@0@^P,5>C\____@\00Z<`!``"`
+M90CW@WM4`'00@^P(C4-44%;H_/___X/$$(V&S````(N6S````(E:!(D3B4,$
+MB9[,````C44XB<(Y13@/A.@```")1"0$B?:#[`Q2Z/S___^)PX/$$(-X'`!T
+M'(/L!/]P'/^V)`4``&H%Z/S___^`2R0"@\00B?:#[`13:@95Z/S___^#Q!"`
+M>TL`="&-=@"#[`Q6Z/S____'!"0!````Z/S___^#Q!"`>TL`=>*#>QP`=%R+
+M0QS'0&``````_H97#```@^P,5NC\____@\0,:@&+0QP/MD`!4%;H_/___X/$
+M#/]S'/^V)`4``&H!Z/S___^#Q`S_<QS_MB0%``!J!NC\____QT,<`````(/$
+M$(/L"%-6Z/S___^#Q!"+5"0$.54X#X4>____@^P$:@!J!E7H_/___X/$"%=6
+MZ/S____'12@`````BP:+D%@!``")%0````"#Q!"%TG0(BP:)D%@!``#V108!
+M=%7&1"0+`(!^*P!V&@^V50F)T(I,)`O3^*@!=0I!B$PD"SA.*W?J@^P(#[9<
+M)!-35NC\____@\0(55;H_/___XG8P>`$`=C'A(8\"P```````(/$$(GV@\0,
+M6UY?7<-55U93@^P4BWPD*(M'*(E$)`R+&%=3Z/S___^#Q!"`O[,````!=@?&
+MA[`````$C7<0.7<0#X0F`@``@^P,5NC\____B40D&(/$$(M'$(M4)`B)4`2)
+M`HER!(E7$+T`````Z<,!``")]@^WU8N#K`4``(LTD(7V#X2L`0``9HM'&&8[
+M1A`/A9X!```/MY,R"P``BX-P"@``.1!T3Y!"#[>#-@L``#G0=P6Z`````(N#
+M<`H``(M$D`2I```(`'4B)?\/``!F.<5U&#ET)`AU'(/L#%/H_/___X/$$.F!
+M`0``D(N#<`H``#D0=;*+3"0$@'DT``^%,`$``&:!?A"%``^')`$```^W1A"`
+MO!B8!```_P^$$@$``(7_#X3R````#[9'(*@!#X3F````J`0/A-X```"+$V:+
+M1AYFP>@%#[?`C02%``,``(F"<`$``&:+3AZ#X1^Z`0```(G0T^")P8L#B8AT
+M`0``#[=.'HN#K`4``,<$B`````!FBTX>B<AFP>@%#[?`B00D@^$?B=#3X(G!
+M]]&+!"0AC(.P!0``9HM.'HG(9L'H!0^WP(/A']/B]](A5(-$.W0D"'0ZBU8$
+MBP:)4`2)`H-^5`!T$(/L"(U&5%!3Z/S___^#Q!"-D\P```"+@\P```")<`2)
+M!HE6!(FSS````(/L"`^W1AY0C8,`"0``4.C\_____D]+@\00ZQB+5"0$]D(&
+M`G0.@^P(5E?H_/___X/$$)!%9CEK0`^'-?[__X7_="D/MD<@J`%T(:@$=!V+
+M3"0(BU$$BP&)4`2)`H/L"%%7Z/S___^#Q!")]H/$#%M>7UW#55=64X/L%(M\
+M)"B+1U2)1"0,BQA74^C\____@\00@'\V`78$QD<U!(UW%#EW%`^$W`$``(/L
+M#%;H_/___XE$)!B#Q!"+1Q2+5"0(B5`$B0*)<@2)5Q2]`````.F!`0``#[?5
+MBX.L!0``BS20A?8/A&P!``!FBT<D9CM&$`^%7@$```^WDS(+``"+@W`*```Y
+M$'1/D$(/MX,V"P``.=!W!;H`````BX-P"@``BT20!*D```@`=2(E_P\``&8Y
+MQ748.70D"'4<@^P,4^C\____@\00Z3D!``"0BX-P"@``.1!ULF:!?A"%``^'
+M\@````^W1A"`O!B8!```_P^$X````(M,)`2`>30`#X72````]D$&`0^$R```
+M`(L39HM&'F;!Z`4/M\"-!(4``P``B8)P`0``9HM.'H/A'[H!````B=#3X(G!
+MBP.)B'0!```/MTX>BX.L!0``QP2(`````&:+3AZ)R&;!Z`4/M\")!"2#X1^)
+MT-/@B<'WT8L$)"&,@[`%``!FBTX>B<AFP>@%#[?`@^$?T^+WTB%4@T0[="0(
+M="2+5@2+!HE0!(D"C9/,````BX/,````B7`$B0:)5@2)L\P```"#[`@/MT8>
+M4(V#``D``%#H_/____Y/*8/$$(GV168Y:T`/AW7^__^+5"0$]D(&`70;BTPD
+M"(M1!(L!B5`$B0*#[`A15^C\____@\00@\0,6UY?7<-55U93@^P,BWPD(,=$
+M)`@`````C8?,````B<(YA\P````/A,\!``")Q8UV`(/L#(G64NC\____B<.#
+MQ!"#>$P`=2Z#[`Q7Z/S___^)0TR#Q!"%P'4;BX?,````B5@$B0.)<P2)G\P`
+M``#IB`$``(GVBT,D)?___P`]X0$0``^$\0```&:!>Q"```^$Y0```&8/MD,0
+M9HE#$&:#^']V$F:!>R3A`74BBD,F@^@1/`%W&&:!>Q"%`'<0#[=#$("\.)@$
+M``#_=1J)]L9#%`:#[`A35^C\____@\00Z0H!``")]F:!>R3A`74,BD,F@^@1
+M/`%V-XGVBX]8!0``9H%[$(4`=QT/MT,0#[:4.)@$``"-!-+!X`(IT(T$P8E$
+M)`CK"H'!Z!8!`(E,)`AF@7LDX0%U"XI#)D@\`78[C78`9H%[$(``=#!F@7LD
+MX0%U"HI#)H/H$3P!=AZ+1"0(]D`C!'44QD,4!H/L"%-7Z/S___^#Q!#K=9"#
+M[`A35^C\____@\00@_@"=PJ#^`%S'.L+C78`@_@#=$3K49"#[`A35^C\____
+M@\00ZT&#>U0`=!"#[`B-0U105^C\____@\00C9?,````BX?,````B5@$B0.)
+M4P2)G\P```#K'8/L"%-7Z/S___^#Q!")]HGJ.:_,````#X4V_O__@\0,6UY?
+M7<.)]E575E.#[#R*1"14B$0D(`^VR(G*P>($`<J+7"10C123BX(\"P``B40D
+M'+C^____T\`B@ED+``"(1"0;BQ.)5"04QT0D$`````"`?"0@`W8,QX)P`0``
+MQ`$``.L.BTPD%,>!<`$``*@!``"+7"04BX-T`0``HP````"*3"0@@^$#NP<`
+M``#3XXG&"=Z+1"04B;!T`0``@^P,:.@#``#H_/____?3(=Z+5"0DB;)T`0``
+M@\00@'PD(`-V%0^V1"0@BX2"T`$``*,`````B<;K%P^V1"0@BTPD%(N$@=`!
+M``"C`````(G&@\X(@'PD(`-V$@^V1"0@BUPD%(FT@]`!``#K$`^V1"0@BU0D
+M%(FT@M`!``"`?"0@`W86#[9$)""+3"04QX3!``(``#@```#K%`^V1"0@BUPD
+M%,>$PP`"```X````@^P,:!`G``#H_/___X/$$(!\)"`#=A8/MD0D((M4)!3'
+MA,($`@```````.L4#[9$)""+3"04QX3!!`(```````"#?"0<``^$;0@``+\`
+M````BUPD4(![*P!V-HGVBU0D'`^V0@F)^P^VR]/XJ`%T%8/L!&H!4?]T)%SH
+M_/___X/$$(UV`$>)^(M4)%`X0BMWS(M,)!SV008!='N#[`A1_W0D7.C\____
+M@\0(#[9<)"A3_W0D7.C\____B=C!X`0!V(M<)&"-%(.+@EP+``"#Q!"I```0
+M`'0+)?__[_^)@EP+``"#[`C_="0D_W0D7.C\____#[94)#")T,'@!`'0BU0D
+M8,>$@CP+````````@\00Z:,'``"+3"0<@'DT`'0=@^P(48M<)%S_L\0)``#H
+M_/___XM$)"S^2#2#Q!"`?"0;``^$E`(``,=$)`P`````QD0D"P"#[`@/MEPD
+M*%/_="1<Z/S___^)V,'@!`'8BTPD8(T4@8N"7`L``(/$$*D``!``=`LE___O
+M_XF"7`L``(I<)!N+1"0<B%@)OP````"+5"10@'HK``^&80$```^VZXG[#[;+
+MB>C3^*@!#X0]`0``B<C!X`0!R(I4)!N+7"10B)2#60L``(GX/`-V$8M4)!3'
+MA,H``@``.````.L4B?D/ML&+7"04QX3#``(``#@```"#[`QH$"<``.C\____
+M@\00B?@\`W80#[;`BU0D%(FLP@0"``#K$(GY#[;!BUPD%(FLPP0"``")^#P#
+M=A"+5"04QX)P`0``Q`$``.L.BTPD%,>!<`$``*@!``"+7"04BX-T`0``HP``
+M``")^8/A`[L'````T^.)Q@G>BT0D%(FP=`$``(/L#&CH`P``Z/S____WTR'>
+MBU0D)(FR=`$``(/$$(GY@/D#=A,/ML&+A(+0`0``HP````")QNL7B?L/ML.+
+M5"04BX2"T`$``*,`````B<:#S@B)^8#Y`W80#[;!BUPD%(FT@]`!``#K$(GZ
+M#[;"BTPD%(FT@=`!``!'B?N+1"10.%@K#X>B_O__BT0D'(/`+(G"BTPD'#E!
+M+'0W@^P,B=-2Z/S___^-4.")5"0<@\00BU,$B4,$B1B)4`2)`HM,)`R#>0P`
+M=`N)VHM$)!PY6"QUR8-\)`P`=$>+5"0,QD(R`+\`````BTPD4(!Y*P!V,(M<
+M)!P/MD,)B?G3^*@!=!0/MD0D"XM<)`R(3!A`_D,R_D0D"T>)^(M4)%`X0BMW
+MT(/L!&H`:($```#_="0HZ/S___\/ME0D,(G0P>`$`="+3"1@QX2!/`L`````
+M``"#Q!#IU`,``(/L!&H`:@;_="0HZ/S___^#Q`@/MEPD*%/_="1<Z/S___^)
+MV,'@!`'8BUPD8(T4@XN"7`L``(/$$*D``!``=`LE___O_XF"7`L``(M$)!R#
+MP"R)PHM,)!PY02P/A!<"``")1"0$@^P,4NC\____C6C@@\00C5`(.5`(#X30
+M`0``D(/L#(U%*%#H_/___XUP^(/$$(!^(0UU'(/L"`7X````4(M&*(L`_W`4
+MZ/S___^#Q!"-=@"+5@2+!HE0!(D"@'Y+`'0A@^P,_W0D7.C\____QP0D`0``
+M`.C\____@\00@'Y+`'7?@WX<``^$.@$``(M&',=`8`````"`?DL`#X2>````
+MOP````"+7"109H-[0``/A(H```"0BU0D4(N"K`4``(L<N(7;=&=FBT,09CM&
+M&'5=9CV%`'=7#[?`@+P0F`0``/]T2HG1BQ)FBT,>9L'H!0^WP(T$A0`#``")
+M@G`!``"+$6:+2QZ#X1^X`0```-/@B8)T`0``QD,4(8/L!&H`4_]T)%SH_/__
+M_X/$$(GV1XM<)%`/MT-`.?@/CW?____V1B0$=2V+1"10_H!7#```@^P,4.C\
+M____@\0,:@&+1AP/MD`!4/]T)%SH_/___X/$$)"#[`2+1AP/MD`"4(M&'`^V
+M0`%0:`T```#H_/___X/$#/]V'(M4)%C_LB0%``!J`>C\____@\0,_W8<BTPD
+M6/^Q)`4``&H&Z/S____'1AP`````@\00BUPD'/Y+"OY-,(/L"%;_="1<Z/S_
+M__^#Q!"-12@Y12@/A3'^__^+1"0<_D@<@^P(5?]T)%SH_/___X/$$(M4)`2+
+M3"0<.5$L#X7M_?__BT0D'(/`.(G"BUPD'#E#.`^$&`$``(G#@^P,4NC\____
+MB<:#Q!"`>$L`=$&+1"00_T0D$#U_EI@`=S*)]H/L#/]T)%SH_/___\<$)`$`
+M``#H_/___X/$$(!^2P!T#XM$)!#_1"00/7^6F`!VT(-^'``/A)$```"+1AS'
+M0&``````]D8D!'4LBT0D4/Z`5PP``(/L#%#H_/___X/$#&H!BT8<#[9``5#_
+M="1<Z/S___^#Q!"#[`2+1AP/MD`"4(M&'`^V0`%0:`T```#H_/___X/$#/]V
+M'(M4)%C_LB0%``!J`>C\____@\0,_W8<BTPD6/^Q)`4``&H&Z/S____'1AP`
+M````@\00BT0D'/Y("H/L"%;_="1<Z/S___^#Q!")VHM,)!PY63@/A>K^__^#
+M[`C_="0D_W0D7.C\____#[94)#")T,'@!`'0BUPD8,>$@SP+````````@\00
+MOP````"+1"10@'@K``^&]@```(GV#[9$)!N)^=/XJ`%U"CI,)"`/A<T```")
+M^X#[`W80BT0D%,>`<`$``,0!``#K#HM4)!3'@G`!``"H`0``BTPD%(N!=`$`
+M`*,`````B?F#X0.-#$F[!P```-/CB<8)WHM$)!2)L'0!``"#[`QHZ`,``.C\
+M____]],AWHM4)"2)LG0!``"#Q!")^8#Y`W83#[;!BX2"T`$``*,`````B<;K
+M%XG[#[;#BU0D%(N$@M`!``"C`````(G&@\X(B?F`^0-V$`^VP8M<)!2)M(/0
+M`0``ZQ.)^@^VPHM,)!2)M('0`0``C78`1XG[BT0D4#A8*P^'#/___X/$/%M>
+M7UW#5E.#[`2+="00BQZQ`(![*P!V')`/MM&)T,'@!`'0C82#.`L``#GP=`9!
+M.$LK=^4/MM&)T,'@!`'0C02#BX@\"P``A<ET8O9!!@)T7`4X"P``.4$8=5*`
+M>30`="K^033K1_Y!-(/L#&@`````#[:&BP```%!64?^SQ`D``.C\____@\0@
+MZR*+42R-<N"-02PYPG05B<*#?@P`=,:+1B"-<.`YT'7PC78`@\0$6U[#B?95
+M5U93@^P,BD0D)(A$)`N+?"0@NP`````/MLB)R,'@!`'(C12'B[(\"P``A?8/
+MA&T!``"X_O___]/`A$8)#X5=`0``C48L.48L=!F#[`R-@C@+``!0Z/S___^#
+MQ!#IL@(``(GVO0````"`?@H`#X:A`@``C5XXB?:#[`Q3Z/S___^)PH/$$(M#
+M!(E3!(D:B4($B1"`>B$`#X7O````#[="&(.\AY@"````=0J#>AP`#X2_````
+M#[="&(N$AY@"``"#>'``#X22````QH*P``````^V0B"H`G0KJ`1T)Z@!="/&
+M0B(%QD(C!%(/MD))4/]R+/]R*.C\____@\00Z8H```")]@^V0B"H`G4@J`1T
+M'*@!=!C&0B(#QD(C!(/L"%)7Z/S___^#Q!#K89`/MD(@J`)T6*@$=%2H`750
+MQD(C!L9"(@5FQX*0``````"#[`A25^C\____@\00ZS"#[`3_<AS_MR0%``!J
+M!.C\____@\00ZQB#[`0/MT(84/^W)`4``&H"Z/S___^#Q!!%B>@X1@H/A^#^
+M___I=P$``(UV`&:!^_,!=U(/MG0D"X/L#&@0)P``Z/S___^#Q!"`?"0+`W89
+MBP>+A+#0`0``HP````"I```0`'4AZQ>)]HL'BX2PT`$``*,`````J0``$`!U
+M"$-F@?OS`7:S@^P(#[9<)!-35^C\____B3PDZ/S___^)V,'@!`'8B[2'/`L`
+M`(/$$(7V#X3K````LP"`?RL`=B6-=@`/MD8)#[;+T_BH`70/@^P$:@!15^C\
+M____@\000SA?*W?>#[9$)`N)PL'B!`'"C927.`L``(E6&(U&+#E&+'4(C48X
+M.48X='*]`````,9$)`H`C48LB<(Y1BQT+(/L#(G34NC\____C6C@@\00BU,$
+MB4,$B1B)4`2)`H-]#`!T"(G:.5XL==60A>UT5,9%,@"Q`(!_*P!V2`^V1@G3
+M^*@!=!`/MD0D"HA,*$#^13+^1"0*03A/*W?@ZR;V1@8!=`^#[`A65^C\____
+M@\00ZQ&#[`AJ`%;H_/___X/$$(UV`(/$#%M>7UW#@^P4BT0D&(L09L=`,B``
+M4%+H_/___X/$',.)]E=64XMT)!"+#HM^*+,`@'DK`'8;#[;3B=#!X`0!T(V$
+M@3@+```Y\'0&0SA9*W?E@/L#=AP/ML.+$8N$@M`!``"C`````*D``!``=1SK
+M+HGV#[;#BQ&+A(+0`0``HP````"I```0`'04@^P$5P^VPU!1Z/S___^#Q!#K
+M$9"#[`@/ML-04>C\____@\006UY?PXM4)`2+@@0*``"+`*,`````BX($"@``
+MBT`$HP````"+@@0*``"+0`BC`````(N"!`H``(M`#*,`````PU575E.#[`R+
+M?"0@QD0D"P"`?RL`#X;=!@``B?8/MD0D"XU("+H!````B=/3XX5<)"1U#XU(
+M$-/BA50D)`^$I`8``(!\)`L#=A\/MD0D"XL7BX3"@`$``*,`````J0``"`!U
+M'^L]C78`#[9$)`N+%XN$PH`!``"C`````*D```@`="!7Z/S___\/ME0D#XG0
+MP>`$`="!C(=@"P`````(`(/$!(L?BDPD"X#Y`W8;#[;!BX3#@`$``*,`````
+MB<*!X@```0#K&8GV#[;!BX3#@`$``*,`````B<*!X@```0"%TG1!@/D#=A`/
+MML''A,.``0`````!`.L.#[;!QX3#@`$``````0"%TG0:#[94)`N)T,'@!`'0
+M@8R'8`L``````0"-=@"`?SD!#X5>!0``@'PD"P-V'P^V1"0+BQ>+A,*``0``
+MHP````"H`74CZ24!``"-=@`/MD0D"XL7BX3"@`$``*,`````J`$/A`<!``"#
+M[`@/MD0D$XG"P>($`<*-')>-@V0+``!0_W<4Z/S___^#Q!"#NSP+````='N+
+MJSP+``#&1"0*`(!]"@!V8XUU.(/L#%;H_/___XG#@\00BT8$B5X$B3.)0P2)
+M&/9#)`)U,H-['`!T'8/L!/]S'/^W)`4``&H%Z/S___^`2R0"@\00C78`@^P$
+M4VH&5>C\____@\00_D0D"HI$)`HX10IWH+D@H0<`ZR6#[`1J`0^V1"034%?H
+M_/___\<$)*"&`0#H_/___[D`+3$!@\00#[9$)`N)PL'B!`'"C127C8)D"P``
+MB8ID"P``QT`(*%8``('".`L``(E0#(/L"%#_=Q3H_/___X/$$(!\)`L#=A</
+MMD0D"XL7BX3"@`$``*,`````ZQ6)]@^V1"0+BQ>+A,*``0``HP````"`?"0+
+M`W8B#[9$)`N+%XN$PH`!``"C`````*F`````=2+I@P```(UV``^V1"0+BQ>+
+MA,*``0``HP````"I@````'1F@'PD"P-V%P^V1"0+BQ>+A,*$`0``HP````")
+MP^L5#[9$)`N+%XN$PH0!``"C`````(G#@'PD"P-V%P^V3"0+BQ>)V`T```$`
+MB83*A`$``.L5#[9,)`N+%XG8#0```0")A,J$`0``@'PD"P-V(0^V1"0+BQ>+
+MA,*``0``HP````"I```$`'4EZ>(!``")]@^V1"0+BQ>+A,*``0``HP````"I
+M```$``^$P@$``(!\)`L#=A</MD0D"XL7BX3"@`$``*,`````B</K%0^V1"0+
+MBQ>+A,*``0``HP````")PX'+```$`(!\)`L#=A`/ME0D"XL'B9S0@`$``.L.
+M#[94)`N+!XF<T(`!```/ME0D"XG0P>`$`="#O(<\"P```'5>@'PD"P-V$HL'
+MBX30@`$``*,`````B</K%0^V1"0+BQ>+A,*``0``HP````")PX!\)`L#=A,/
+MME0D"XL'B9S0@`$``.FE`@``#[94)`N+!XF<T(`!``#ID@(``(UV``^V5"0+
+MB=#!X`0!T(NLASP+``"#?2@`#X33````BT4H#[=0,O;&`0^%PP```(G&]L("
+M#X2P````@^P(C4!84/]W%.C\____QD0D&P"#Q!"`?A\`=FX/MD0D"XM<ACR%
+MVW14@WL<`'0:@^P$_W,<_[<D!0``:@7H_/___X!+)`*#Q!"#[`13:@95Z/S_
+M__^#Q!"`>TL`=!^0@^P,5^C\____QP0D`0```.C\____@\00@'M+`'7B_D0D
+M"XI4)`LX5A]WDL=&6""A!P#'1F`,5@``B79D@^P(C4984/]W%.C\____@\00
+MZPAF@4@R@`")]H!\)`L#=AT/MD0D"XL7BX3"@`$``*,`````]L0!=2'I$`$`
+M``^V1"0+BQ>+A,*``0``HP````#VQ`$/A/0```"`?"0+`W8<#[9$)`N+%XN$
+MPH`!``"C`````*@!="#IT0````^V1"0+BQ>+A,*``0``HP````"H`0^%M@``
+M``^V;"0+B>C!X`0!Z(VLAS@+``"#?00`#X29````BUT$B5PD!(/L"(U%+%#_
+M=Q3H_/___\9$)!,`@\00@'L*`'91B=Z#QCB#[`Q6Z/S___^)PX/$$(M&!(E>
+M!(DSB4,$B1B#>QP`=!J#[`3_<QS_MR0%``!J!>C\____@$LD`H/$$/Y$)`.*
+M1"0#BU0D!#A""G>TQT4L@(0>`,=%-`````");3B#[`B-12Q0_W<4Z/S___^#
+MQ!"0@'PD"P-V&0^V1"0+BQ>+A,*``0``HP````")P>L7B?8/MD0D"XL7BX3"
+M@`$``*,`````B<&`?"0+`W80#[94)`N+!XF,T(`!``#K#@^V5"0+BP>)C-"`
+M`0``_D0D"XI<)`LX7RL/AR7Y__^#Q`Q;7E]=PY!55U93@^P\BW0D4(N.6`4`
+M`(M$)%2-N>@6`0!F@7@0A0!W%P^W0!`/MI0PF`0``(T$TL'@`BG0C3S!#[9'
+M/L'@"`.&!`H``(N`0`@``*,`````B<7![1#!Z!B(1"00#[9'/L'@"`.&!`H`
+M`(N`1`@``*,`````B$0D*(U,)"B)PL'J"(A1`<'H$(A!`@^V1S[!X`@#A@0*
+M``"+@$@(``"C`````(A!`XG"P>H(B%$$P>@0B$$%QD$&`,9!!P"#[`S_<03_
+M="0X#[9$)"10B>H/MMI3:'@```#H_/___X/$(/;#`74;B>F$R705BUPD5,9#
+M%`"X`````.FG`@``C78`BT0D5(!X%(%U,HU$)"A0#[9$)!10B>H/ML)0_W0D
+M8.C\____BTPD9,9!%`*X`````(/$$.EK`@``C78`BUPD5(M#)"7___\`/>$!
+M#@!U$<9#%"&X`````.E'`@``C78`BT0D5/9`9@%U$O?%`0```'0*@'\B_P^%
+M!0(``(/L"%=6Z/S___^#Q`A75NC\____BQ:+3"1D9HM!'F;!Z`4/M\"-!(4`
+M`P``B8)P`0``BP:+7"1D9HM+'H/A'[H!````B=/3XXF8=`$``(M$)&0/MT@>
+MBX:L!0``QP2(`````(M<)&1FBTL>B<AFP>@%#[?`@^$?B=/3XXG9]]$AC(:P
+M!0``BT0D9&:+2!Z)R&;!Z`4/M\"#X1_3XO?2(52&1(/$"(M,)%R+402+`8E0
+M!(D"#[=!'E"-A@`)``!0Z/S____^3TN+7"1DQD,4@8/$$(-[5`!T%(/L"(G8
+M@\!44%;H_/___X/$$(GVC4<0B<(Y1Q`/A.4```"]`0```(E$)`R0@^P,4NC\
+M____B<.+%F:+0!YFP>@%#[?`C02%``,``(F"<`$``(L&9HM+'H/A'XGJT^*)
+MD'0!```/MU,>BX:L!0``QP20`````&:+2QZ)R&;!Z`4/M\"#X1^)ZM/BB='W
+MT2&,AK`%``!FBTL>B<AFP>@%#[?`@^$?B>K3XHG1]]$A3(9$@\0(#[=#'E"-
+MA@`)``!0Z/S____^3TN#Q!"#>U0`=!"#[`B-0U105NC\____@\00C9;,````
+MBX;,````B5@$B0.)4P2)GLP```"+5"0,.5<0#X4E____BTPD5(%A9/___O_&
+MA[`````$@^P(45?H_/___[@!````@\00ZR.-1"0H4`^V1"044(GK#[;#4/]T
+M)&#H_/___X/$$+@`````D(/$/%M>7UW#55=64X/L+(M\)$2+;"1`BW4`BX8H
+M"@``B40D&,=$)!0`````BT0D3`M$)$@/A.H"```/M]>-!-*-!(*-!$+!X`2+
+M3"08]D0((0)T$(N&K`4``(L$D,9`%`+K$9`/M\>+EJP%``"+!(+&0!0A#[?'
+MBY:L!0``BQ2"BT(D)?___P`]X0$0``^$G0$``+#_9H%Z$(4`=PL/MT(0BH0P
+MF`0``#S_=1@/M\>+EJP%``"+!(+&0!0&Z=,(``"-=@`/ML"-%,#!X@(IPHN&
+M6`4``(T4T(E4)!2`?"1+`'EA#[9"(*@"="6H!'0AJ`%T'8L&BX!8`0``HP``
+M``")PH7`=`J+!HF06`$``(GVBP:+@%`!``"C`````(G"@\H"BP:)D%`!``"+
+M!HN`!`$``*,`````B<*`SO^+!HF0!`$```^WUXT$THT$@HT$0L'@!(M<)!AF
+M]T08(`((#X3,````QD0D$P"S`(!^*P!V78UV``^V10D/MLO3^*@!=$>`^P-V
+M&HL&BX2(T`$``*,`````J0``$`!U'>LKC78`#[;#BQ:+A(+0`0``HP````"I
+M```0`'00N`$```"(V=/@"$0D$XUV`$,X7BMWIH!\)!,`=%N*7"03.%T)=5*)
+M^&;!Z`4/M\")^8/A'[H!````T^*%5(9$=3>+1"04@+BP`````G<'QH"P````
+M`X/L"`^WUXN&K`4``/\TD/]T)"#H_/___X/$$.EG!P``C78`]D0D2P$/A%D'
+M```/M\>+EJP%``"+#(+&010ABT$D)?___P`]X0$.``^$-@<``(M4)!0/MD(^
+MP>`(`X8$"@``BX!`"```HP````")Q\'O$(G%P>T8#[9"/L'@"`.&!`H``(N`
+M1`@``*,`````B$0D((U<)"")PL'J"(A3`<'H$(A#`HM4)!0/MD(^P>`(`X8$
+M"@``BX!("```HP````"(0P.)PL'J"(A3!,'H$(A#!<9#!@#&0P<`]D%F`74C
+MB?@/MM#VP@%T&5.)ZP^VPU!24>C\____@\00Z8<&``"-=@"#[`A15NC\____
+M@\00Z7(&``")]@^WUXN&K`4``(L$D&:!>"3A`0^%*`$```^V0":#Z`:#^`H/
+MAT@&``#_)(5H!0``#[?7BX:L!0``BPR0C032C02"C01"B</!XP2+?"08BD0[
+M,XA!%(N&K`4``(L$D/9`$P0/A`D&``"`>!0`#X3_!0``@W@X``^$]04``(M0
+M.(I$.S.(`NGG!0``#[?7C032C02"C01"P>`$B=.+EJP%``"+%)J+3"08BD0(
+M*HA"%(N&K`4``(L$F(-X-``/A*\%``"#[`R-!-N-!(.-!$/!X`0/MH0((00`
+M`%#H_/___XG%BX:L!0``BP28@\00.V@@=@.+:"`/M]>+AJP%``"+#)"-!-*-
+M!(*-!$+!X`2+7"08C408*(/L!%50_W$TZ/S___^#Q!#I1P4```^WQXN6K`4`
+M`(L$@L9`%`#I,@4``(GV#[?7BX:L!0``BRR0BT5(B40D#+#_9H%]$(4`=PL/
+MMT40BH0PF`0```^VP(T4P,'B`BG"BX98!0``C130B50D%,:"L``````/MD(@
+MJ`(/A$T!``"H!`^$10$``*@!#X0]`0``QD44`/9%9B`/A+\$``"#?"0,``^$
+MM`0``(M4)`SV0ET"#X2&````@WI8`'06@^P$_W4@_W4T_W)8Z/S___^#Q!#K
+M:H-]-`!T9+\`````BTPD#(-Y8`!T"_9!70%U!8MY8.LC@^P$:@'_MB0&``#_
+M="08BUPD'/]39(/$$(7`=`:+OB0&``"#?2``="&+732#[`3_-U/_=PCH_/__
+M_P,?@\00C4<$@\<0@S@`=.*+?"04#[9'/L'@"`.&!`H``(N`0`@``*,`````
+MB<+!ZA"+3"0,B%%3P>@89HE!2`^V1S[!X`@#A@0*``"+D$0(``")%0````!F
+M#[;"9HE!3`^VQF:)04Z)T,'H$&8/ML!FB4%0P>H8B%%2#[9'/L'@"`.&!`H`
+M`(N`3`@``*,`````9@^VP&:)04KID0,``)`/M]>-!-*-!(*-!$*)P<'A!(M<
+M)!B*1!DSA,`/A:<```"+AJP%``"+!)#&0!0`]D5F$`^$6`,``(-\)`P`#X1-
+M`P``BD09,XM\)`R(1TJ*1UVH`@^$-P,``+\`````BU0D#(-Z8`!T":@!=06+
+M>F#K(X/L!&H!_[8D!@``_W0D&(M,)!S_462#Q!"%P'0&B[XD!@``@WT@``^$
+M\@(``(M=-(UV`(/L!/\W4_]W".C\____`Q^#Q!"-1P2#QQ"#.`!TXNG)`@``
+MD#P"#X5X`@``#[??C03;C02#C01#P>`$BU0D&(U$$$")1"0(BAB#XW_&1"0'
+M`,9$)`8`QD0D!0`/M]>-!-*-!(*-!$+!X`2+3"08BT0(.(E$)!R-3"0<#[94
+M)!S!XA@/MD$!P>`0"<(/MD$"P>`("<(/MD$#"<*)%"2`^W%V-X/Z`78.BT0D
+M"(I8`8/C#XA<)`>#/"0"=@N+5"0(BE("B%0D!H,\)`-V7(M,)`B*20.(3"0%
+MZT^#/"0"=@Z+1"0(BE@"@^,/B%PD!X,\)`=V-8M4)`@/MD('@\`(.00D=@.)
+M!"2#/"0,=@N+3"0(BDD,B$PD!H,\)`UV"XM<)`B*6PV(7"0%#[?7BX:L!0``
+MBP20@'@<`'1=@SPD`'17QD`4((N&K`4``(L$D(H4)#A0'','#[9`'(D$)`^W
+MUXN&K`4``(L,D(-Y.`!T.8T$THT$@HT$0L'@!(M<)!B-1!A`@^P$_W0D!%#_
+M<3CH_/___X/$$.L0#[?'BY:L!0``BP2"QD`4(H!\)`<$=1`/M\>+EJP%``"+
+M!(+&0!0".748#X0E`0``@WPD#``/A!H!``#V1680=&$/M\>-%,"-%)"-%%#!
+MX@2+3"08BD0*,XM<)`R(0TKV0UT"=#V*!"0X11QS`XI%'(3`="X/ML@/M]>-
+M!-*-!(*-!$+!X`2+7"08C4080(/L!%%0BWPD&/]W5.C\____@\00#[9$)`>#
+M^`MW5?\DA90%``"+1"0,QD!>`>F5````@'PD!@1U$H!\)`4"=0N+5"0,QD)>
+M$>M]D(M,)`S&05X"ZW*+7"0,QD->$.MHBWPD#,9'7@OK7HM$)`S&0%X&ZU2+
+M5"0,QD)>#>M*B?8\*'4=BTPD%(I!2TB(04H/M]>+AJP%``"+!)#&0!2!ZR<\
+M"'40@^P,:!`G``#H_/___X/$$`^WQXN6K`4``(L$@L9`%"&-=@"#Q"Q;7E]=
+MPU93@^P$BW0D$(GSBP:+@%`!``"C`````(G"BP:)D%`!``")]O?"`/__`'00
+M@^P(4E;HBNO__X/$$(UV`(L#BX!0`0``HP````")PHL#B9!0`0``]\(`__\`
+M=<FX`````(/$!%M>PXGV55=64X/L+(M\)$!FBX<R"P``9HE$)"*+!XN`0`$`
+M`*,`````)?\/``!FB8<R"P``N`````!FBU0D(F8YES(+```/A/,&``!F@;\R
+M"P``_P\/A'P&``!FBTPD(F8YCS(+```/A&H&``"-M]0```")="04B?:+KR@*
+M``!F_T0D(F:+1"0B9CF'-@L``'<'9L=$)"(```^W5"0BBX=P"@``BUR0!/?#
+M```(``^$M0```(L'BX!0`0``HP````")PXL'B9A0`0``QT0D)`````#WPP#_
+M_P!T5KH`````@'\K`'1+O0$```!F#[9/*V:)3"0.#[?"C4@(B>[3YH7S=0N-
+M2!")Z-/@A<-T&P^WTHT$4L'@`RG0C82'*`$``(E$)"3K"XUV`$)F.50D#G?$
+M@WPD)`!U%8/L#/]T)$SH_/___X/$$.EY!0``D(/L#/]T)$SH_/___XM4)#2(
+M0@N#Q!#I704``)")WH'F_P\```^WQHT4P(T4D(T44,'B!(G1BU0J((M,*22)
+M5"08B4PD'(N7K`4``(LL@H7M#X0B!0``]\,``"``#X1V`0``@'T4@0^%4`$`
+M`,9%%"$/MU4>BX>L!0``QP20`````&:+31Z)R&;!Z`4/M\"#X1^^`0```-/F
+MB?'WT2&,A[`%``!FBTT>B<AFP>@%#[?`@^$?N@$```#3XHG1]]$A3(=$@^P(
+M#[=%'E"-AP`)``!0Z/S___^#Q!"#?50`=!"#[`B-15105^C\____@\009H%]
+M$(4`#X?!````#[=%$("\.)@$``#_#X2O````9H-]$']W)0^VE#B8!```BX]8
+M!0``C032P>`"*="+1,$H@'@$_W5:Z8,```!F@7T0@0!W*P^W11`/MH0XF`0`
+M`(N/D`4``(T$0(T$P(G"P>(%*<*+1)$(@'@$_W4DZU`/MT40#[:$.)@$``"+
+MEW0%``"-!$"-!("+1,)4@'@$_W0N@^P(55?H_/___X/$$(V7S````(N'S```
+M`(EH!(E%`(E5!(FOS````.F]`P``D(U%"(M,)!2+402)002)30B)4`2)`NFB
+M`P``B?:)\&;!Z`4/M\")\8/A'[H!````T^*%5(=$#X6!`P``#[?6BX>L!0``
+MBP209H%X$(4`#X>A````#[=0$("\.I@$``#_#X2/````9H-X$']W'P^VE#J8
+M!```BX]8!0``C032P>`"*="+1,$HBE`$ZVL/M]:+AZP%``"+!)!F@7@0@0!W
+M*`^W0!`/MH0XF`0``(N/D`4``(T$0(T$P(G"P>(%*<*+1)$(BE`$ZR\/M]:+
+MAZP%``"+!)`/MT`0#[:$.)@$``"+EW0%``"-!$"-!("+1,)4BE`$ZP*R_X#Z
+M_W0-#[;"@+PX'@4``/]U0HGP9L'H!0^WP(GQ@^$?O@$```#3YH5TAT0/A94"
+M``#&110&@^P(:@!5Z/S___^#Q`QJ`%57Z/S___^#Q!#I<@(```^VP@^VA#@>
+M!0``B40D)(T$0,'@`RM$)"2-A(<H`0``B40D)(M$)!P+1"08=`CWPP```@!U
+M$,=$)!@`````QT0D'`````"+5"0D]D(&`@^$9`$``/]T)!S_="0<#[?&4%+H
+M_/___XGP9L'H!0^WP(GQ@^$?NP$```")VM/B@\00A52'1`^%Z`$``(!]%($/
+MA84````/MU4>BX>L!0``QP20`````&:+31Z)R&;!Z`4/M\"#X1_3XXG9]]$A
+MC(>P!0``@^P(#[=%'E"-AP`)``!0Z/S___^#Q`A55^C\____@\00@WU4`'00
+M@^P(C4544%?H_/___X/$$(V7S````(N'S````(EH!(E%`(E5!(FOS````.E9
+M`0``QD0D(0#&1"0@`(N'U````#E$)!1T$(V7U````/Y$)"&+`#G"=?:`?"0A
+M`'0QC9_4````@^P,4^C\____C4CX@\00BU,$B4,$B1B)4`2)`CGI=07&1"0@
+M`?Y,)"%UU8!\)"``#X7P````C44(BTPD%(M1!(E!!(E-"(E0!(D"B?!FP>@%
+M#[?`B?&#X1^^`0```-/F";2'A````.FZ````_W0D'/]T)!P/M\90_W0D,.C\
+M____QD0D,0#&1"0P`(N'U````(/$$#E$)!1T$HV7U````(GV_D0D(8L`.<)U
+M]H!\)"$`=#6-G]0```"0@^P,4^C\____C4CX@\00BU,$B4,$B1B)4`2)`CGI
+M=0C&1"0@`8UV`/Y,)"%UTH!\)"``=3>`?12!=#&-10B+3"04BU$$B4$$B4T(
+MB5`$B0*)\&;!Z`4/M\")\8/A'[X!````T^8)M(>$````9HM$)")F.8<R"P``
+M#X6B^?__C8?4````B<(YA]0```!T1XGV@^P,B=92Z/S___^#Z`AFBT@>B<MF
+MP>L%#[?;@^$?NO[____3PB&4GX0```"#Q`QJ`%!7Z/S___^#Q!")\CFWU```
+M`'6[@^P,5^C\____N`$```"#Q!"#Q"Q;7E]=PXGV5U93@^P0BUPD(&;'1"0.
+M``"+FR0%``"^`````(U\)`Z+`XN`4`$``*,`````BQ.)@E`!``"%P'0;BP/'
+M@%`!```!````@^P,4^C\____B`0W@\00@<-@#```1H/^`7[`@'PD#@!U#+@`
+M````@'PD#P!T!;@!````@\006UY?PY!55U93@^P,BVPD(+D`````9@^V12N)
+MPV:#^`!V&8M$)"0/ME`)C78`B=#3^*@!=09!9CG+=_*+5"0D@WHH`'0E@^P(
+MBT(H@\!84/]U%.C\____@\0(BTPD+/]Q*%7H_/___X/$$(M$)"2#P#B)PHM,
+M)"0Y03@/A%<!``")1"0(D(/L#%+H_/___XG&@\00@W@<``^$%0$``(!X2P`/
+MA(<```"_`````&:#?4``='N)]HN%K`4``(L<N(7;=&-FBT,09CM&&'599CV%
+M`'=3#[?`@+PHF`0``/]T1HM5`&:+0QYFP>@%#[?`C02%``,``(F"<`$``(M5
+M`&:+2QZ#X1^X`0```-/@B8)T`0``QD,4(8/L!&H`4U7H_/___X/$$)!'#[=%
+M0#GX?X>+1AS'0&``````]D8D!'4G_H57#```@^P,5>C\____@\0,:@&+1AP/
+MMD`!4%7H_/___X/$$(GV@^P$BT8<#[9``E"+1AP/MD`!4&@-````Z/S___^#
+MQ`S_=AS_M20%``!J`>C\____@\0,_W8<_[4D!0``:@;H_/___\=&'`````"#
+MQ!"+1"0D_D@*@^P(5E7H_/___X/$$(M4)`B+3"0D.5$X#X6N_O__BT0D),=`
+M*`````"+10"+B%@!``")#0````"%R70)BT4`B8A8`0``@\0,6UY?7<.-=@!7
+M5E.+="00BWPD%+,`@'XK`'85#[97"9")T(C9T_BH`74&0SA>*W?P]D<(`G4(
+MC4<X.4<X=6:#[`Q7Z/S___^#Q!"$P'1$@^P,5NC\____B<&#Q!"%P'1$C4<X
+MBU`$B4@$B0&)402)"OY'"HEY*,9!(`7&02$`QD%)#VH!:@%15^C\____@\00
+MZQ*#[`@/ML-05NC\____@\00B?9;7E_#55=64X/L$(ML)"B+?50/MD4K4/]T
+M)"A7Z/S___^)QF:#33(0NP````"#Q!"+5"0@9@^V0BMFB40D"F:#^`!V%@^V
+M5PF)T(C9T_BH`74(0V8Y7"0*=^YF@_L#=B`/M\.+3"0@BQ&+A(+0`0``HP``
+M``"I```0`'4XZQZ)]@^WPXM,)""+$8N$@M`!``"C`````*D``!``=1B#[`@/
+MML-0_W0D+.C\____@\00Z9@!``"-1S@Y1S@/A(P!``"%]@^$A`$```^V1DG'
+M1(4\`````(M6!(L&B5`$B0*#[`16:@97Z/S___^#Q!"`?DL`="*0@^P,_W0D
+M+.C\____QP0D`0```.C\____@\00@'Y+`'7?@WX<`'1>BT8<QT!@`````/9&
+M)`1U%HM$)"#^@%<,``"#[`Q0Z/S___^#Q!"#[`3_=AR+5"0H_[(D!0``:@'H
+M_/___X/$#/]V'(M,)"C_L20%``!J!NC\____QT8<`````(/$$/Y/"H/L"%;_
+M="0LZ/S___^+5"0PBP*+D%@!``")%0````"#Q!"%TG0,BTPD((L!B9!8`0``
+MQD4F`&:#93+ONP````"`?1\`=!UF#[95'Y`/M\.+=(4\A?9T!H!^(O]U<T-F
+M.=IWZ?9%,H!T$H/L"%7_="0LZ/S___^#Q!#K5;L`````@'T?`'0]B?8/M\.+
+M=(4\A?9T)?9&)`)T'X/L!/]V'(M$)"C_L"0%``!J!NC\____@&8D_8/$$)!#
+M9@^V11]F.=AWQ6;'13("`(!E+?V-=@"#Q`Q;7E]=PU93@^P$BUPD$(MT)!2+
+M1E2Q`(![*P!V$@^V4`F)T-/XJ`%U!D$X2RMW\L9&)@R#[`A64^C\____@\04
+M6U[#B?975E.#[!"+?"0@BD0D)(A$)`^[``````^V\(GV@^P,:!`G``#H_/__
+M_X/$$(!\)`\#=AF+!XN$L-`!``"C`````*D``!``=2'K%XGVBP>+A+#0`0``
+MHP````"I```0`'4(0V:!^_,!=K.#[`@/MEPD%U-7Z/S___^)/"3H_/___XG8
+MP>`$`=B-!(>#Q!#V@%@+```!=!*#[`C_L#P+``!7Z/S___^#Q!"#Q!!;7E_#
+MD%575E.#[`R+="0@BSX/MU0D)(N'K`4``(L<D+T`````QT0D"`````!F@7LD
+MX0%U*(I#)H/H$3P!=QZ+1BB)1"0(BT0D+`M$)"AU28M$)`C&0#4`ZS^-=@"+
+MCU@%``"-J>@6`0!F@7L0A0!W%P^W0Q`/MI0XF`0``(T$TL'@`BG0C2S!BT0D
+M+`M$)"AU!\:%L`````"`>Q2!=0:`9@CWB?:+1"0L"T0D*`^%R@```,9#%`#V
+M0V8@#X3<`0``BW-(A?8/A-$!``#V1ET"=".#?E@`=!V#>S0`=!>#[`3_<R#_
+M<S3_=ECH_/___X/$$(UV``^V13[!X`@#AP0*``"+@$`(``"C`````(G"P>H0
+MB%93P>@89HE&2`^V13[!X`@#AP0*``"+D$0(``")%0````!F#[;"9HE&3`^V
+MQF:)1DZ)T,'H$&8/ML!FB490P>H8B%92#[9%/L'@"`.'!`H``(N`3`@``*,`
+M````9@^VP&:)1DKI(0$``)"`>Q2`=0;&0Q0AB?:#[`3_="0P_W0D,&C$````
+MZ/S___^#Q!!F@7LDX0%U((I#)H/H$3P!=Q:#[`S_="04Z/S___^#Q!#IU@``
+M`(GV]D0D*P%T:8M#)"7___\`/>$!#@!T6@^V13[!X`@#AP0*``"+@$`(``"C
+M``````^V13[!X`@#AP0*``"+@$0(``"C``````^V13[!X`@#AP0*``"+@$@(
+M``"C`````(/L"%-7Z/S___^#Q!#K9XUV`(!\)"L`>1V+!XN`6`$``*,`````
+MB<&%P'1*BP>)B%@!``#K0(!\)"@`>#F`?"0O`'DRBQ=FBT,>9L'H!0^WP(T$
+MA0`#``")@G`!``"+%V:+2QZ#X1^X`0```-/@B8)T`0``B?:#Q`Q;7E]=PU=6
+M4X/L$(M<)"2+?"0@BD,4B$0D#XN/6`4``(VQZ!8!`&:!>Q"%`'<7#[=#$`^V
+ME#B8!```C032P>`"*="--,&`?"0/`'4E9L>&D```````@'LD''46@'LF`G40
+M@^P(4U;H_/___X/$$(UV`(-[4`!T$H/L"(U#4%!7Z/S___^#Q!")]H/L"%-7
+MZ/S___^#Q!"`?"0/!G0[@^P(C9X``0``4_]W%.C\____QX8``0``@(0>`,>&
+M"`$```````")M@P!``"#Q`A3_W<4Z/S___^#Q!"#Q!!;7E_#B?955U93@^P,
+MBWPD((7_#X3`````BT<HBRB#[`Q5Z/S___^)PXU`/(E$)!B#Q!"%VP^$G@``
+M`(/L#%7H_/___XG&@\00A<!U$8/L"%-5Z/S___^#Q!#K?8GVQD,5K&:+1QAF
+MB4,0B6L8QT-D"````(ES4(M&"(E#-,=#(``(``"-A[0```")0SC&0QP@QT-L
+M`````,9#)!S&0R4!QD,F`L9#)PC&0R@`@^P(:@#_="04Z/S_____<R#_=A#_
+M=@S_="0DZ/S___^#Q!A35>C\____@\00@\0,6UY?7<.055=64X/L#(ML)""+
+M?"0DBD0D*(A$)`N+12B+,,9$)`H`C78`#[9$)`J*E#"8!```@/K_=%.#[`1J
+M"(U'#%`/MM*-!-+!X`(IT(T<Q0````")V`.&6`4```6<````4.C\____@\00
+MA,!T'HN&6`4``(I4)`N(E`/6````BX98!0``B:P#X````/Y$)`IYEH/$#%M>
+M7UW#B?955U93@^P,BTPD)(M!-(E$)`@/MD`"B<7!Y0B+5"0(9@^V0@,!Q0^W
+M]8U6!`^W02`YP@^/T````(M<)`B#PPC&1"0'`(M4)`B-1!8$.=@/AJ,```"*
+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
+M'`^%*`(```^V0B:#^`)T7(/X`G\*@_@!="CI$`(``(/X!W0S@_@*#X4"`@``
+M@^P(_W0D+%;H_/___X/$$.GM`0``@^P(_W0D+%;H_/___X/$$.G8`0``@^P(
+M_W0D+%;H_/___X/$$.G#`0``@^P(_W0D+%;H_/___X/$"(V>``$``%.+1BB+
+M`/]P%.C\____QX8``0``@(0>`,>&"`$```````")M@P!``"#Q`A3BT8HBP#_
+M<!3H_/___X/$$)#&1B+_OP````"+1"0(@'@*``^&J0```(G#@\,X@^P,4^C\
+M____B<:#Q!"+0P2)<P2)'HE&!(DP@'XB_W1K@'XA`'5M@+ZQ``````^$(`$`
+M``^V1B"H`G0,J`1T"*@!#X7F````#[9&(*@"=0RH!'0(J`$/A>D````/MD8@
+MJ`(/A.P```"H!`^$Y````*@!#X7<````@^P(5E7H_/___X/$$.G*````B?;&
+MAK$`````D$>)^HM$)`@X4`H/AUS___^)^HM$)`@X4`IU7;\`````@'@*`'92
+MB<.#PSB0@^P,4^C\____B<:#Q!"+0P2)<P2)'HE&!(DP@'XB_W0?@'XA(G0&
+M@'XA#743@^P(:@I6Z/S___^#Q!#K5XUV`$>)^HM$)`@X4`IWM(M4)`C&0@7_
+M@^P(4E7H_/___X/$$(!\)`<`#X60````ZR96#[9&25#_=BS_="04Z/S___^#
+MQ!#K#X/L"%95Z/S___^#Q!")]HM$)"2#>%``=!:#[`B+1"0L@\!04%7H_/__
+M_X/$$(GV@^P(_W0D+%7H_/___X/$$(!\)`<`=#%F_X:0````9H.^D`````IV
+M$&;'AI```````.DZ_O__B?:#[`AJ"E;H_/___X/$$(GV@\0,6UY?7<-55U93
+M@^P8BVPD+(I$)#"(1"07BT4HBSA7Z/S___^)PXU`/(E$)!2#Q!"%VP^$H```
+M`(/L#%?H_/___XG&@\00A<!U$(/L"%-7Z/S___^#Q!#K?Y#&0Q6L9HM%&&:)
+M0Q")>QC'0V0(````B7-0BT8(B4,TQT,@``@``(V%M````(E#.,9#'"#'0VP`
+M````QD,D',9#)0&*1"0+B$,FQD,G",9#*`"#[`AJ`/]T)!#H_/____]S(/]V
+M$/]V#/]T)"#H_/___X/$&%-7Z/S___^#Q!"#Q`Q;7E]=PXGV55=64X/L#(ML
+M)""+12B+,(N5Y`````^V0@*)P\'C"&8/MD(#`<,/M\.#P`0]``@```^/W0``
+M`(/L#%;H_/___XG'@\00A<`/A,<```"#[`Q6Z/S___^)1"08@\00A<!U$X/L
+M"%=6Z/S___^#Q!#IH0```)"-1SR)1"0$#[?;@\,$@^P$4_^UY````(M4)!3_
+M<@CH_/___\9'%:QFBT489HE'$(EW&(E?((-/9!*+5"08BT((B4<TB5=0C86T
+M````B4<XQD<<(,=';`````#&1R0=QD<E$,9')@(/ML>(1R>(7RB#Q`AJ`/]T
+M)!#H_/____]W((M$)!S_<!#_<`S_="0@Z/S___^#Q!A75NC\____@\00@\0,
+M6UY?7<-55U93@^P$BWPD&(I$)!R(1"0#BE0D)(A4)`*+1RB+,(MO+,9$)`$`
+M#[9$)`&*C#"8!```@/G_=&,/MM&+GE@%``"-!-+!X`(IT,'@`SF\&.````!U
+M1HI4)`,XE!C5````=3F`?"0"`'0/BX08W````(M,)"")`>LI#[;1BXY8!0``
+MC032P>`"*="+7"0@BQ.)E,'<````ZPF-=@#^1"0!>8;&1"0!`)`/MD0D`8T$
+M@(U4Q0"-@I````"`>`0!=CR`>`07=#:*3"0#.$@%=2V`?"0"`'0.BX*8````
+MBUPD((D#ZR,/MD0D`8T$@(M,)""+$8F4Q9@```#K#)#^1"0!@'PD`4]VH8/$
+M!%M>7UW#D%575E.#[`B+;"0<BD0D((A$)`.+G>0````/MD,"B<;!Y@AF#[9#
+M`P'&#[?&@\`$/0`(``!_9H!\)`,`=`N*A=@```"(0P'K"8I#`8B%V````(U#
+M"(E$)`2_``````^WQHU$&`0[1"0$=C*)]@^V1"0#4(U$)`A0B?H/ML)05>C\
+M____1X-$)!0$@\00#[?&C408!#M$)`1WTXUV`(/$"%M>7UW#4X/L"(M<)!"*
+M5"04BD0D&(A$)`/'1"0$`````(![(P%T2FH!C40D"%`/ML)04^C\____@\00
+M@WPD!`!T+XM$)`2`"("`?"0#`'0-BT0D!(!(`R#K"XUV`(M$)`2`8`/?@^P,
+M4^C\____@\00@\0(6\.-=@!75E.+7"04BWPD$(MS2&:!>Q"%``^'B@````^W
+M0Q"`O#B8!```_W1\9H-[$']W(0^VE#B8!```BX]8!0``C032P>`"*="+1,$H
+MBE`$ZUB)]F:!>Q"!`'<H#[=#$`^VA#B8!```BX^0!0``C01`C03`B<+!X@4I
+MPHM$D0B*4`3K)@^W0Q`/MH0XF`0``(N7=`4``(T$0(T$@(M$PE2*4`3K!8UV
+M`++_L?]F@7L0A0!W"P^W0Q"*C#B8!```@/K_=!@/ML*`O#@>!0``_W0+@/G_
+M=`:`>Q0&=32#>U``=!*#[`B-0U!05^C\____@\00B?:#[`A35^C\____QT8L
+M_____XDT)/]6*(/$$.M\@'L4`'4[]D-D"'04@^P$_W,@_W,T_W8<Z/S___^#
+MQ!#'1BP`````@WX@`'0(BU8@BT84B0*#[`Q6_U8H@\00ZQ/'1BS_____@^P,
+M5O]6*(/$$(GV@WM0`'02@^P(C4-04%?H_/___X/$$(GV@^P(4U?H_/___X/$
+M$(UV`%M>7\-55U93@^P8BVPD+(I$)#"(1"07BT4HBSA7Z/S___^)PXU0/(E4
+M)!2#Q!"%P`^$U0```(/L#%?H_/___XG&@\00A<!U%(/L"%-7Z/S___^#Q!#I
+ML0```(GVQD,5K&:+11AFB4,0BT0D,(E#2(E[&,=#9`@```")<U"+1@B)0S2+
+M1"0LB4,@C86T````B4,XQD,<(,=#;`````#&0R0\QD,E`HI4)`N(4R:+1"0H
+MP>@0B$,GBU0D*`^VQHA#*(A3*8M$)"S!Z!"(0RJ+5"0L#[;&B$,KB%,LQD,M
+M`(/L"&H`_W0D$.C\_____W,@_W80_W8,_W0D(.C\____@\084U?H_/___X/$
+M$(/$#%M>7UW#D%575E.#[!B+7"0LBD0D,(A$)!>+0RB+*%7H_/___XG&@\00
+MA<`/A.T```"#[`Q5Z/S___^)QX/$$(7`=1.#[`A65>C\____@\00Z<D```"0
+MC58\B50D!(/L!/]T)##_L^0```#_<`CH_/___\9&%:QFBT,89HE&$(M$)$")
+M1DB);AB+1"0\B48@@TYD$HM'"(E&-(E^4(V#M````(E&.,9&'"#'1FP`````
+MQD8D.\9&)0**5"0;B%8FBT0D.,'H$(A&)XM4)#@/ML:(1BB(5BF+1"0\P>@0
+MB$8JBU0D/`^VQHA&*XA6+,9&+0"#Q`AJ`/]T)!#H_/____]V(/]W$/]W#/]T
+M)"#H_/___X/$&%95Z/S___^#Q!"#Q`Q;7E]=PU=64XM<)!"+="04BTPD&(M\
+M)!R+5"0@A=MT#87V=`F%R70%A?]U"9"X`````.LYD&:!^H4`=PT/M\*`O!B8
+M!```_W4(N`````#K'9#&023AQD$E`<9!)A-FB5$0B7$8B7ELN`$```"06UY?
+MPXM,)`2+002+0`2C`````(G"@'PD"`!T"('*```,`.L&@>+___/_BT$$B1"+
+M002)4`R+002)4!"+002)4!2+002)4!B+002)4`3#D)!64XM<)!"+3"0PBW0D
+M.`^W1"0,/1$G``!_+CT0)P``?6,](B$``'1</2(A``!_"3T@(0``=$[K5CU`
+M(0``=$4]1"$``'0^ZT8]@"<``'0U/8`G``!_#BT@)P``@_@"=R[K(HGV/8"1
+M``!T&3V`D0``?PD]@B<``'0+ZQ,]@)0``'4,B?;&`T"+1"04Q@`"BT0D&,8`
+M!(H3BT0D+(@09L<!@`!FQP8``(M$)"#&`""+1"0D9L<```&*$XM$)"B($&8/
+MM@-F`P%F`P:+5"0T9HD"BU0D'&:)`F:+$8M$)#QFB1!FBQ&#P@N+1"1`9HD0
+M6U[#C78`55=64X/L#(I$)"2(1"0+BU0D((LZNP````!F@W]```^&>@(``(UV
+M`(G89L'H!0^WP(G9@^$?N@$```#3XH64AX0````/A4H"```/M].+AZP%``"+
+M-)"%]@^$-@(``+T`````BT8D)?___P`]X0$0``^%L@```(-\)"@`#X43`@``
+M9H%^$(4`#X>2````#[=&$("\.)@$``#_#X2`````9H-^$']W(@^VE#B8!```
+MBX]8!0``C032P>`"*="+1,$HBD@$Z3@!``!F@7X0@0!W*P^W1A`/MH0XF`0`
+M`(N/D`4``(T$0(T$P(G"P>(%*<*+1)$(BD@$Z04!```/MT80#[:$.)@$``"+
+MEW0%``"-!$"-!("+1,)4BD@$Z>$```"Q_^G:````B?9F@7X0A0`/AX@````/
+MMT80@+PXF`0``/]T>F:#?A!_=Q\/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!
+M*(I(!.M69H%^$($`=R@/MT80#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"
+MBT21"(I(!.LF#[=&$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I(!.L%C78`
+ML?]F@7X0A0!W.@^W1A"`O#B8!```_W0LBZ]8!0``9H%^$(4`=Q8/MI0XF`0`
+M`(T$TL'@`BG0C6S%`.L(@<7H%@$`B?:+1"0@.$@$#X6'````@WPD*`!T#HM4
+M)"AFBT(89CM&$'5R@'PD"P9T3XM6)('B____`('ZX0$0`'0^#[9%(*@"=#:H
+M!'0RJ`%U+H"]L`````!U)8'ZX0$/`'0YBD0D"XA&%(/L!&H!5O]T)"SH_/__
+M_X/$$.L>B?:*5"0+B%84@^P(#[?#4/]T)"SH_/___X/$$(GV0V8Y7T`/AXG]
+M__^`?"0+@0^$8@$``+T`````BY?,````C8?,````.=!T")!%BQ(YT'7Y9H7M
+M#X0\`0``C8?,````B<(YA\P````/A"@!``")1"0$@^P,B=-2Z/S___^)QH/$
+M$(-\)"@`="&+5"0H9HM"&&8[1A!T$XM#!(ES!(D>B48$B3!-Z=4```!F@7X0
+MA0`/AX4````/MT80@+PXF`0``/]T=V:#?A!_=Q\/MI0XF`0``(N/6`4``(T$
+MTL'@`BG0BT3!*(I(!.M39H%^$($`=R@/MT80#[:$.)@$``"+CY`%``"-!$"-
+M!,")PL'B!2G"BT21"(I(!.LC#[=&$`^VA#B8!```BY=T!0``C01`C02`BT3"
+M5(I(!.L"L?^+1"0@.$@$=26+1B0E____`#WA`0\`=!:*5"0+B%84@^P(5E?H
+M_/___X/$$.L3C8?,````BU`$B7`$B0:)5@2),DUFA>UT$HM4)`0YE\P````/
+MA=[^__^)]H/$#%M>7UW#5U93@^P$BW0D%(I$)!B(1"0#OP````!F@WY```^&
+M`0$``(GV#[?7BX:L!0``BQR0A=L/A.````!F@7L0A0`/AX@````/MT,0@+PP
+MF`0``/]T>F:#>Q!_=Q\/MI0PF`0``(N.6`4``(T$TL'@`BG0BT3!*(I(!.M6
+M9H%[$($`=R@/MT,0#[:$,)@$``"+CI`%``"-!$"-!,")PL'B!2G"BT21"(I(
+M!.LF#[=#$`^VA#"8!```BY9T!0``C01`C02`BT3"5(I(!.L%C78`L?^X_P``
+M`&:!>Q"%`'<-#[=#$&8/MH0PF`0```^WP(T4P,'B`BG"BX98!0``C030.DPD
+M`W46#[9`(*@!=`ZH!'0*N`$```#K$XUV`$=F.7Y`#X<!____N`````"#Q`1;
+M7E_#D%575E.#[`B+5"0<BT(HBS"+CN`)``")3"0$9L=$)`(``(UV`+L`````
+M9H-^0`!V3XN^K`4``(GV#[?3@SR7`'0WBPR7BT$D)?___P`]X0$0`'0EBVPD
+M'&:+11AF.T$0=1>)T,'@!F:+3"0"BU0D!&8Y3!`(=`F)]D-F.5Y`=[EF.5Y`
+M=`UF_T0D`F:#?"0"'W:2#[=$)`*#Q`A;7E]=PY!3BU0D"(M,)`R+7"00@WHX
+M`'09BT(XQ@!PBT(XB$@"BT(XQD`'`(M".(A8#%O#B?;#C78`5U93BUPD$(M4
+M)!2)T8'A_P$``(N#K`4``(,\B`!T)XLTB`^V1A4/MIO&````B-G3X`^W^`^W
+MTKC__P``T^`APHGP.==T!;@`````6UY?PY!64X/L!(M,)!"+="049H%^).$!
+M#X6?````BD8F@^@1/`$/AY$```"Z_P```&:!?A"%`'<,#[=&$`^VE`B8!```
+MC012C02`BY%T!0``C1S"@'LH_W5+L!2`?F@`=`8/MD9HT>`/ML"-!("-!("-
+M!("-!("-!("-!(#!X`:)0UC'0V``````B5MD@^P(C4-84/]Q%.C\____QD,H
+M`(/$$(GVC4,4BU`$B7`$B0:)5@2),OY#*>FG````NO\```!F@7X0A0!W#`^W
+M1A`/MI0(F`0``(T$TL'@`BG0BY%8!0``C1S"BT8D)?___P`]X0$0`'1N@'M(
+M_W55L!2`?F@`=`8/MD9HT>`/ML"-!("-!("-!("-!("-!("-!(#!X`:)@^@`
+M``#'@_``````````B9OT````@^P(C8/H````4/]Q%.C\____QD-(`(/$$(U#
+M$(M0!(EP!(D&B58$B3+^0TN#Q`1;7L.-=@!3@^P(BUPD%(![2/]T'8/L"(V#
+MZ````%"+1"0<_W`4Z/S____&0TC_@\00@\0(6\-3@^P(BUPD%(![*/]T&H/L
+M"(U#6%"+1"0<_W`4Z/S____&0RC_@\00@\0(6\.-=@!55U93@^P,BVPD((MT
+M)"1F@7XDX0$/A;T```"*1B:#Z!$\`0^'KP```+G_````9H%^$(4`=PP/MT80
+M#[:,*)@$``"-!$F-!("+E70%``"-',*!^?\````/A#L!``#^2RF#[`R->Q17
+MZ/S___^)P8/$$#GP=4.#[`A35>C\____@\00.7L4#X0-`0``QT-8`"TQ`<=#
+M8`````")6V2#[`B-0UA0_W44Z/S____&0R@`@\00Z>$```"0C5,4BT,4B4@$
+MB0&)402)2Q2+5@2+!HE0!(D"Z<````"Y_P```&:!?A"%`'<,#[=&$`^VC"B8
+M!```C03)P>`"*<B+E5@%``"-',*+1B0E____`#WA`1``#X2#````@?G_````
+M='O^2TN#[`R->Q!7Z/S___^)P8/$$#GP=4>#[`A35>C\____@\00.7L0=%''
+M@^@`````+3$!QX/P`````````(F;]````(/L"(V#Z````%#_=13H_/___\9#
+M2`"#Q!#K'(U3$(M#$(E(!(D!B5$$B4L0BU8$BP:)4`2)`I"#Q`Q;7E]=PU57
+M5E.#[!2+="0HBVPD+`^W11AF#[:\,)@$```/M]>-!-+!X`(IT(N66`4``(V$
+MPN0```!05NC\____#[=5&(/$$(.\EI@"````=!B+A):8`@``@WAP`'4+QX26
+MF`(````````/MT48QH0PF`0``/^#[`@/M]]3C88H"0``4.C\____BY98!0``
+MC03;P>`"*=C!X`.#Q!"`?!`^_W0/@^P(`=!05NC\____@\00@^P(55;H_/__
+M_P^WUXN.6`4``(T$TL'@`BG0P>`#QD0((@"+EE@%``#&1!`C`8/$'%M>7UW#
+MD%575E.#[`R+;"0@9L=$)`J``(GV#[=$)`IF#[:$*)@$``!F/?\`#X3D````
+M9H%\)`J!`'=[#[?`C01`C03`B<+!X@4IPHN%D`4``(T\D+X`````@'\P``^&
+MKP```(U?*(/L#%/H_/___XU(^(/$$(M3!(E#!(D8B5`$B0*+02`E`/__`#T`
+M`/\`=1GV02,$=!.#>1P`=`V+01R*5"0DB%`!C78`1HGQ.$\P=[3K7HGV#[?`
+MC01`C02`BY5T!0``C13"O@````"`>A\`=C^-=@")\0^VP8M,@CR%R70GBT$@
+M)0#__P`]``#_`'48]D$C!'02@WD<`'0,BT$<BDPD)(A(`8GV1HGP.$(?=\3_
+M1"0D9O]$)`IF@7PD"H4`#X;R_O__.:TD!0``=1:#[`C_="0L@<5@#```5>C#
+M_O__@\00@\0,6UY?7<-3@^P0BUPD&(M$)!P/ME`S9@^VA!J8!```QH0:F`0`
+M`/\/M\!0C8-X"0``4.C\____@\0(:@#_LR0%``#H=_[__X/$&%O#B?964X/L
+M#(MT)!B+1"0<#[=`)&8/MIPPF`0``,:$,)@$``#_#[?;4XV&4`D``%#H_/__
+M_XN6=`4``(T<6XT<FXT$W0````"#Q!"`?!`T_W0/@^P(`=!05NC\____@\00
+M@^P(:@#_MB0%``#H`O[__X/$%%M>PU.+7"0(N0````"Z>````(G8C78`B`A`
+M2G7ZQD,H_\9#-/^-0Q2)0Q2)0QA;PXUV`%575E.#[!B+?"0LC8=0"0``4.C\
+M____@\00N@````"$P`^%W````(/L#(V'4`D``%#H_/___XG%LX*#Q!"-=@`/
+MML.`O#B8!```_W43.)_(````<Q&(G\@```#K"8UV`$.`^X5VVKH`````@/N&
+M#X2/````#[;#B>J(E#B8!```#[?%C01`C02`C33%`````(GP`X=T!0``4.C\
+M____BY=T!0``9@^VPV:)1!8D@\0$@'\Y`74.BX=T!0``9L=$!C#__Y`/M]V+
+MAW0%``"-'%N-')O!XP/&1`,F`(N'=`4``&;'1`,R``"#[`AJ`/^W)`4``.C4
+M_/__B=H#EW0%``"#Q!")T(/$#%M>7UW#C78`@^P4BTPD&(M$)!P/ME`$9@^V
+MA`H>!0``QH0*'@4``/\/M\!0@<&@"0``4>C\____@\0<PU.+7"0(N0````"Z
+M&`$``(G8C78`B`A`2G7ZQD-(_\9#/O_&0TH?C4,0B4,0B4,46\.-=@!55U93
+M@^P8BWPD+(V'*`D``%#H_/___X/$$+H`````A,`/A3$!``"#[`R-AR@)``!0
+MZ/S___^)Q;,`@\00C78`#[;#@+PXF`0``/]U%V8/ML-F.8?$````<PYFB8?$
+M````ZP60_L-YV+H`````@/N`#X3B````#[;#B>J(E#B8!```#[?5C032P>`"
+M*="--,4`````B?`#AU@%``!0Z/S___^+EU@%``!F#[;#9HE$%AB+AU@%``#&
+M1`8B`(N'6`4``,9$!CG_BX=8!0``QD0&./^+AU@%``#&1`8Z_XN'6`4``,9$
+M!CS_BX=8!0``QD0&._^+AU@%``#&1`8]_XN'6`4``,:$!K(`````BX=8!0``
+MQH0&UP```/^#[`A7Z/S___^+EU@%``")A!;D````@\00@'\Y`74+BX=8!0``
+M@$P&)`$/M\6-%,#!X@(IPHN'6`4``(T4T(G0@\0,6UY?7<.)]E=64X/L'(MT
+M)"R-AG@)``!0Z/S___^#Q!"Z`````(3`#X4@`0``@^P,C89X"0``4.C\____
+MB<?&1"0?@(/$$`^V1"0/@+PPF`0``/]U%HI$)`\XAL<```!S%8B&QP```.L-
+MB?;^1"0/@'PD#X%VT+H`````@'PD#X(/A,<````/MD0D#XGZB)0PF`0```^W
+MQXT$0(T$P(G"P>(%*<*+AI`%``"[`````+D4#0``C020B!A`277Z#[?'C01`
+MC03`B</!XP4IP\'C`HG:`Y:0!0``C4(0B4(0B=@#AI`%``"#P!")0`2)V@.6
+MD`4``(U"&(E"&(G8`X:0!0``@\`8B4`$B=H#EI`%``"-0BB)0BB)V`.&D`4`
+M`(/`*(E`!(N&D`4``(I4)`^(5`,S@^P(:@#_MB0%``#HM?G__XG:`Y:0!0``
+M@\00B="#Q!!;7E_#D%=64X/L'(MT)"R-AJ`)``!0Z/S___^#Q!"Z`````(3`
+M#X7+````@^P,C8:@"0``4.C\____B<?&1"0?`(/$$`^V1"0/@+PP'@4``/]U
+M#HI$)`\X1C1S$(A&-.L+_D0D#X!\)`\#=MBZ`````(!\)`\$='X/MD0D#XGZ
+MB)0P'@4```^WQXT40,'B`RG"NP````"Y7````(V$EB@!``"-=@"(&$!)=?H/
+MM\>-%$#!X@,IPHT4EHV"2`$``(F"2`$``(E`!(V"5`$``(F"5`$``(E`!(V"
+M8`$``(F"8`$``(E`!(I$)`^(@BP!``"!PB@!``")T(/$$%M>7\.)]E93@^P$
+MBW0D$(V&W````+H`````.8;<````="F#[`R-AMP```!0Z/S___^)PXD$).C\
+M____B30DZ/S___^)0TR)VH/$$(G0@\0$6U[#C78`4X/L"(M<)!"+3"04C8/<
+M````BU`$B4@$B0&)402)"H-Y3`!T$X/L"(U!3%!3Z/S___^#Q!"-=@"#Q`A;
+MPXUV`(/L#(M4)!"-@N0```"Y`````#F"Y````'08@^P,C8+D````4.C\____
+MQD`(`(G!@\00B<B#Q`S#4XM<)`R+$XM$)`@%Y````(M(!(E0!(D"B4H$B1''
+M`P````!;PXUV`(/L#(M$)!"-D.P```"Y`````#F0[````'0.@^P,4NC\____
+MB<&#Q!")R(/$#,.)]E.+7"0,BQ.+1"0(!>P```"+2`2)4`2)`HE*!(D1QP,`
+M````6\.-=@!3@^P(BT0D$(V0_````+D`````.9#\````="6#[`Q2Z/S___^)
+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
+MMT,0#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"BT21"&8/ME`$ZRL/MT,0
+M#[:$.)@$``"+EW0%``"-!$"-!("+1,)49@^V4`3K"(UV`+K_````N?\```!F
+M@7L0A0!W#0^W0Q!F#[:,.)@$``!F@?K_`'06#[?"@+PX'@4``/]T"6:!^?\`
+M=1:)]H/L"%-7Z/S___^#Q!#ICP```(GV#[?"#[:T.!X%``"-!';!X`,I\(VT
+MAR@!``!F#[93)V8/MD,HP>`(`<*!XO\!```/MD,I@_@!=`6#^`AU0P^WTHN'
+MK`4``(L$D#M#2'4R9HM('HG*9L'J!0^WTH/A'[C^____T\`A1)=$@^P(BT-(
+M#[=`'E!6Z/S___^#Q!"-=@"#[`A35^C\____@\006UY?PXUV`%575E.#[!B+
+M1"0TB40D%(M4)"R+.HM,)#`/MT$0#[:4.)@$``"-!-+!X`(IT(N76`4``(TL
+MPE?H_/___XG#BT0D-&:+<!Z)\&;!Z`4/M\")\8/A'[H!````T^*#Q!"%5(=$
+M#X6X````A=L/A+````"-4SR+3"0D#[9!%0^VC\8```#3X`GPQD,DX<9#)0'&
+M0R8/B$,G9L'H"(A#*(I$)`B(0RF+A:0```")0RJ+A:@```")0RZ+3"0DB4M(
+MQD,5JF:+11AFB4,0BTPD((L!B4,8QT,@`````,=#-`````#'0VS@JP``@^P(
+M:@!2Z/S___^#Q`A35^C\____BT0D-&:+2!Z)R&;!Z`4/M\"#X1^Z`0```-/B
+M"52'1(/$$(UV`(/$#%M>7UW#55=64X/L&(M4)"R+0BB+*%7H_/___XG&@\00
+MA<!U$8M$)"#&@+$````!Z94```"0@^P,5>C\____B<>#Q!"%P'4:BU0D(,:"
+ML0````&#[`A65>C\____@\00ZVB-7CS&1B0EQD85JXM4)"!FBT(89HE&$(EN
+M&,=&(`@```#'1F0(````BT<(B48T@\`(B48XQD8<)(E^4,=&;`````"#[`AJ
+M`%/H_/___VH(_W<0_W<,4^C\____@\085E7H_/___X/$$(/$#%M>7UW#55=6
+M4X/L&(M4)"R+0BB+*%7H_/___XG&@\00A<!U$8M$)"#&@+$````!Z9T```"0
+M@^P,5>C\____B<>#Q!"%P'4:BU0D(,:"L0````&#[`A65>C\____@\00ZW"-
+M7CS&1B2>QD8E$,9&,2#&1A6KBU0D(&:+0AAFB480B6X8QT8@(````,=&9`@`
+M``"+1PB)1C2)?E"#P"")1CC&1APDQT9L`````(/L"&H`4^C\____:B#_=Q#_
+M=PQ3Z/S___^#Q!A65>C\____@\00@\0,6UY?7<-55U93@^P8BVPD+(I$)#"(
+M1"07BT4HBSA7Z/S___^)PX/$$(7`=0W&A;$````!Z:8```"0@^P,5^C\____
+MB<:#Q!"%P'46QH6Q`````8/L"%-7Z/S___^#Q!#K?8U#/(E$)`3&0R02@'PD
+M"P!T#L9#)0'&0R:`QD,H0.L$QD,H),9#%:MFBT489HE#$(E[&,=#(&````#'
+M0V0(````BT8(B4,TB7-0QT-L`````(/L"&H`_W0D$.C\____:F#_=A#_=@S_
+M="0@Z/S___^#Q!A35^C\____@\00@\0,6UY?7<.-=@!55U93@^P8BW0D+(M&
+M*(L`B40D%%#H_/___XG'NP`(``"#Q!"%P'4,QH:Q`````>F[````@^P,_W0D
+M%.C\____B<6#Q!"%P'4?QH:Q`````8/L"%?_="04Z/S___^#Q!#IB@```(UV
+M`&:!^_\`=@6[_P```,9')!K&1R4(QD<F",9')P"(7RC&1RD`QD<5JV:+1AAF
+MB4<0BT0D"(E'&`^WVXE?(,='9`@```"+10B)1S0!V(E'.,9''"2);U#'1VP`
+M````C7<\@^P(:@!6Z/S___]3_W40_W4,5NC\____@\085_]T)!3H_/___X/$
+M$(/$#%M>7UW#D%=64XM\)!"+1RB+,(/L#%;H_/___XG#@\00A<!U"L:'L0``
+M``'K49#&0"05QD`5JV:+1QAFB4,0B7,8:@%J`5-6Z/S___^#Q!"$P'47@^P(
+M4U;H_/___\:'L0````&#Q!#K%9#'0VP`````@^P(4U;H_/___X/$$%M>7\.X
+M!`````^V5"0$@_H7=SG_))7$!0``@\`DPX/`.,.#P!##@\`<PX/`2,.#P!S#
+M@\`\PX/`),.#P!C#@\`4PX/`2,.#P#"-=@##C78`5E.#[`2+="00BUPD%(![
+M/O]T&8/L"`^V0SY0_S;H_/___\9#/O_^3BR#Q!"#Q`1;7L.)]E=64XM\)!"+
+M5"04#[9"(*@"=`VH!'0)J`$/A+4```"0@'H^_P^%J@```(L'BX`8`0``HP``
+M``")QK$`N`$```")P]/CA?-U+(A*/HL7B?`)V(F"&`$``(L'BX!8`0``HP``
+M``")QB'>=&2+!XFP6`$``.M:08#Y'W;&BP>+@!P!``"C`````(G&L0"X`0``
+M`(G#T^.%\W4PC4$@B$(^BQ>)\`G8B8(<`0``BP>+@&`!``"C`````(G&(=YT
+M$8L'B;!@`0``ZP>008#Y'W;"_D<LC78`6UY?PU93@^P$BW0D$(M<)!2`>S3_
+M=!F#[`@/MD,T4/\VZ/S____&0S3__DXL@\00@\0$6U[#B?975E.+?"00BU0D
+M%(!Z-/\/A:<```"+!XN`&`$``*,`````B<:Q`+@!````D(G#T^.%\W4LB$HT
+MBQ>)\`G8B8(8`0``BP>+@%@!``"C`````(G&(=YT8(L'B;!8`0``ZU9!@/D?
+M=L:+!XN`'`$``*,`````B<:Q`+@!````B</3XX7S=2R(2C2+%XGP"=B)@AP!
+M``"+!XN`8`$``*,`````B<8AWG00BP>)L&`!``#K!D&`^1]VQOY'+(UV`%M>
+M7\-55U93@^P,BVPD((M=`+X`````9H-[0``/AA$!``")]@^WUHN#K`4``(,\
+MD``/A/$````/MGT$BP209H%X$(4`#X>Z````#[=0$("\&I@$``#_#X2H````
+M9H-X$']W*P^VE!J8!```BXM8!0``C032P>`"*="+1,$H#[9`!#GX#X2#````
+MZ9H````/M]:+@ZP%``"+!)!F@7@0@0!W+0^W0!`/MH08F`0``(N+D`4``(T$
+M0(T$P(G"P>(%*<*+1)$(#[9`!#GX=#_K60^WUHN#K`4``(L$D`^W0!`/MH08
+MF`0``(N3=`4``(T$0(T$@(M$PE0/MD`$.?AT#>LGC78`@?__````=1R#[`AJ
+M``^WUHN#K`4``/\TD.C\____@\00C78`1F8Y<T`/A_'^__^#Q`Q;7E]=PY"+
+M3"0(BU%,A=)T(HM!)(E"#(M!*(E"$(M!+(E"%(M!,(E"&(M!-(E"',9""`'#
+MB?:+3"0(BU%,A=)T'HM"#(E!)(M"$(E!*(M"%(E!+(M"&(E!,(M"'(E!-,.)
+M]E=64XMT)!"+7"04.7,8#X2H````@'L4``^%B@````^V0R2#^!5T!8/X575\
+MBTM,A<ET=8!Y"`%U;V:!>0SA`75GB[Y8!0``C9?H%@$`9H%[$(4`=Q</MT,0
+M#[:4,)@$``"-!-+!X`(IT(T4QP^V00Z#^`=T&(/X!W\'@_@&=!7K)X/X#'0<
+M@_@-=!#K&V:#8C;]ZQ1F@THV`NL-9H-B-O?K!F:#2C8(D(-[4`!T#HU#4%!6
+MZ/S___^#Q`B09H%[).$!#X4T`0``9H%[$(4`=W@/MT,0@+PPF`0``/]T:HN.
+M6`4``(V1Z!8!`&:!>Q"%`'<3#[:4,)@$``"-!-+!X`(IT(T4P8![%`!U/0^V
+M0R:#^`=T&(/X!W\'@_@&=!7K*(/X#'0<@_@-=!#K'&:#8C;]ZQ5F@THV`NL.
+M9H-B-O?K!V:#2C8(B?9F@7LDX0$/A:@```"`>R8+#X6>````B?=FBTL0#[?1
+M#[9&+DA!.<)](P^V1BZ-4/]F@?F%`'<-#[?!@+PXF`0``/]U#0^WP4$YT'SD
+MN/\```!F/?\`=%B)]V:+2Q`/M]$/MD8N2$$YPGTF#[9&+HU0_XUV`&:!^84`
+M=PT/M\&`O#B8!```_W4-#[?!03G0?.2X_P```&:)0Q#&0Q2`@^P(4U;H_/__
+M_X/$$.D9`0``QD,4`)`Y<QAT)(M#3(7`=!V`>`@!=0I35NC\____@\0(C4-,
+M4%;H_/___X/$"(-[5`!T#8U#5%!6Z/S___^#Q`B#[`A3_W,8_U-L@\009H%[
+M).$!=5N*0R:#Z!$\`7=1N?\```!F@7L0A0!W#`^W0Q`/MHPPF`0``('Y_P``
+M``^$E````(T$28T$@(N6=`4``(T$PH!X*0!U?X!X-/]T>8/L"%!6Z/S___^#
+MQ!#K:HGVN?\```!F@7L0A0!W#`^W0Q`/MHPPF`0``(T$R<'@`BG(BY98!0``
+MC13"BT,D)?___P`]X0$0`'0O@?G_````="=F@7LDX0%U"XI#)H/H$3P!=A60
+M@'I+`'4.@^P(4E;H_/___X/$$)!;7E_#5U93BW0D$(M\)!1FBU<>B=!FP>@%
+M#[?8B=&#X1^X_O___]/`B<$A1)Y$9H'Z_P]T1P^WPHN6K`4``(,\@@!T.,<$
+M@@`````AC)ZP!0``@^P(4(V&``D``%#H_/___X/$"%=6Z/S___^#Q`A75NC\
+M____@\00C78`6UY?PU93@^P0BT0D'(N8X`D```4`"0``4.C\____B<8/M]#!
+MX@8!VHM$)"2)$(/$$+L`````N4````")T(UV`(@80$EU^@^WQH/$!%M>PY!7
+M5E.#[`2+?"04BD0D'(A$)`.^`````+@`````@W\H`'1"ZP2)QNLEBT\HL@"-
+M=@`/ML*#?($\`'0-BT2!/(I<)`,X6$ETW4*`^@1VXXM'*&:!>"2%`'<&B?"%
+M]G4&N`````"0@\0$6UY?PY!55U93BWPD%&8/MEPD'`^V1"08P>`(`<.]````
+M`(!_'``/A+T```"#?S@`#X2S````]D=D"74%O0$```"Q`+X`!```D`^VT8G8
+M9B,$UF8[!-8/A8$```"`?-8%`W0'@'S6!0=U"P^VP8GJ.%3&!'5HQD<4(`^V
+MV0^V1-X&4`^V1-X%4%?H_/___XM7.(I$W@>(0@V#Q`R#?"0@`'0KBT0D((L8
+MBW`$BT<XB7`#BT<X@`B`]D=F!'00A?9T#(M'.(E8"(M'.(`@?XM7.(I''(/H
+M!XA"!^L.B?9!@/D/#X9B____B?9;7E]=PXUV`%575E.#[`R+?"0@BW0D)&:!
+M?A"%``^'B0````^W1A"`O#B8!```_W1[9H-^$']W(`^VE#B8!```BX]8!0``
+MC032P>`"*="+1,$HBD@$ZU>09H%^$($`=R@/MT80#[:$.)@$``"+CY`%``"-
+M!$"-!,")PL'B!2G"BT21"(I(!.LF#[=&$`^VA#B8!```BY=T!0``C01`C02`
+MBT3"5(I(!.L%C78`L?^Z_P```&:!?A"%`'<-#[=&$&8/MI0XF`0``(#Y_P^$
+MDP````^VP8"\.!X%``#_#X2"````9H'Z_P!T>X!^%`9T=0^VG#@>!0``C01;
+MP>`#*=B-G(<H`0``#[?2C032P>`"*="+EU@%``"-+,*`?B8!=2B#[`QJ"NC\
+M____@\0(5E?H_/___X/$#&H"55/H_/___X/$$.L?C78`@^P,:/0!``#H_/__
+M_X/$"%97Z/S___^#Q!")]H/$#%M>7UW#5U93BW0D&(M$)!"+&(/L#%/H_/__
+M_XG"@\00A<!T:<9`).'&0"4!B?"(0B;&0B</BT0D%&:+0!AFB4(0B5H8QT(@
+M`````,="-`````#'0FP`````@^P(4E/H_/___X/$$(GP/`%U$8/L#&H%Z/S_
+M__^#Q!#K$HGV@^P,:%##``#H_/___X/$$%M>7\-64X/L!(MT)!"+7"049H%[
+M$(4`#X>+````#[=#$("\,)@$``#_='UF@WL0?W<B#[:4,)@$``"+CE@%``"-
+M!-+!X`(IT(M$P2B*2`3K68UV`&:!>Q"!`'<H#[=#$`^VA#"8!```BXZ0!0``
+MC01`C03`B<+!X@4IPHM$D0B*2`3K)@^W0Q`/MH0PF`0``(N6=`4``(T$0(T$
+M@(M$PE2*2`3K!8UV`+'_LO]F@7L0A0!W"P^W0Q"*E#"8!```@/G_=!@/ML&`
+MO#`>!0``_W0+@/K_=`:`>Q0&=22#>U``=`Z-0U!05NC\____@\0(D(/L"%-6
+MZ/S___^#Q!#K:9`/ML$/MHPP'@4``(T$2<'@`RG(C8R&*`$```^VTHT$TL'@
+M`BG0BY98!0``C03"@'L4`'00@^P$:@%04>C\____@\00D(-[4`!T#HU#4%!6
+MZ/S___^#Q`B0@^P(4U;H_/___X/$$(UV`(/$!%M>PXGV55=64X/L&(M$)"R+
+M*%7H_/___XG&@\00A<`/A(L```"#[`Q5Z/S___^)QX/$$(7`=1*#[`A65>C\
+M____@\00ZVJ-=@"-7CS&1B3AQD8E`<9&)@Z+5"0D9HM"&&:)1A!F@V(T]XM4
+M)""+`HE&&,=&(``(``"+1PB)1C2)?E#'1FR4O0``@^P(:@!3Z/S_____=B#_
+M=Q#_=PQ3Z/S___^#Q!A65>C\____@\00@\0,6UY?7<.05U93BWPD$(MT)!2+
+M1RB+&(/L#%/H_/___XG"@\00A<!T/L9`)!O&0"4!B?"(0BAFBT<89HE"$,9"
+M:`^)6AC'0B``````QT(T`````,=";`````"#[`A24^C\____@\006UY?PU=6
+M4XM\)!"+1RB+,(/L#%;H_/___XG#@\00A<!T;(/L#%;H_/___XG"@\00A<!U
+M&,:'L0````&#[`A35NC\____@\00ZT2)]L9#)`!FBT<89HE#$,9#:`^)<QC'
+M0R``````QT,T`````(M""(E#.,9#'"2)4U#'0VP`````@^P(4U;H_/___X/$
+M$%M>7\.)]E575E.#[!"+;"0HBUPD+,9#(P'&0R(`4VH&5>C\____@\00@WLL
+M`'01BU,,BT,(B5`$B0*+0RS^2#"`>TL`="&#[`S_="0LZ/S____'!"0!````
+MZ/S___^#Q!"`>TL`==^#N^``````=!Z#[`1J`0^V@]4```!0_[/@````Z/S_
+M__^#Q!"-=@"#>RP`=!:#[`1J`0^V0TE0_W,LZ/S___^#Q!"0@WL<``^$J```
+M`(MS'(-^<``/A8T```"#?G0`#X6#````]D,D!'4LBT0D(/Z`5PP``(/L#%#H
+M_/___X/$#&H!BT,<#[9``5#_="0LZ/S___^#Q!"#[`2+0QP/MD`"4(M#'`^V
+M0`%0:",```#H_/___X/$#/]S'(M$)"C_L"0%``!J`>C\____@\0,_W,<BT0D
+M*/^P)`4``&H&Z/S___^#Q!"-=@#'0QP`````QT9@`````(-[,`!T#XM3,`^V
+M0TG'1((\`````(M3!(L#B5`$B0+^30J#[`A3_W0D+.C\____@\00@'T%_W16
+MOP````"`?0H`=C>-=3B#[`Q6Z/S___^)PX/$$(M&!(E>!(DSB4,$B1B`>R+_
+M=0I'B?@X10IWU^L)B?@X10IW%HGVQD4%_X/L"%7_="0LZ/S___^#Q!"#Q`Q;
+M7E]=PP^V1"0(C13`P>(#*<*-%)"-%)5T10``BT0D!(D0PXGV5E.#[`2+="04
+MBD0D&(A$)`.+7"00N`````")\8G:A?9T"(GVB`)"277ZB3.-AHRZ___!Z`*Z
+M6;;Y<O?BB=#!Z`>(0P2*1"0#.$,$=@.(0P2Q`(![!`!V(0^VT<9$$P?_C032
+MP>`#*="-!(+&A(/810``_4$X2P1WW\9#!@#&0P4`L0"0#[;!C12`C130C923
+MD#$``,9"!P&(2@9!@/D?=N.#Q`1;7L.055=64X/L#(ML)"2+="0@OP````"`
+M?@0`=CZ)]HGX#[;8C03;P>`#*=B-!(.-A(;010``@'@(_707@^P$:@A54.C\
+M____@\00A,!T!(G8ZPU'B?@X1@1WQ+C_````@\0,6UY?7<.-=@!3@^P0BUPD
+M&/]T)!Q3Z/S___^#Q!"Z"0```#S_=!8/MM"-!-+!X`,IT(T$@@^VE(-Z10``
+MB="#Q`A;PY!55U93@^P,BUPD)(V#D````(G?B[.8````@'X&``^$00$``(/L
+M"%!6Z/S___^)Q8/$$#S_#X0J`0``#[9#`8/X`71E@_@!?PR%P'0AZ1,!``"-
+M=@"#^!`/A(,````]D`````^$Q0```.GW````@+Z7,0````^%Z@```,:&ES$`
+M``'^3@:#[`AJ`&H`:@")Z@^VPE#_="0X5NC\____@\0@Z;\```"-=@"`OI<Q
+M````#X6O````QH:7,0```?Y.!H/L"&H`:@!J`8GJ#[;"4/]T)#A6Z/S___^#
+MQ"#IA````+$!B?8/ML&-%("-%-"-A):0,0``B>HX4`1U"8I`!3I'"70'D$&`
+M^1]VVOY.!H/L"%</MD<)4&H0B>H/ML)0_W0D.%;H_/___X/$(.LW#[:#H@``
+M`(T4@(T4T,:$EI<Q```!_DX&@^P(:@!J`&B0````B>H/ML)0_W0D.%;H_/__
+M_X/$((/$#%M>7UW#55=64X/L!(ML)!R*1"0DB$0D`XM4)"AFB10DBUPD&+\`
+M````B?D/ML&-%$")T<'A!@'*C110.6S3%`^%C````+D`````B?@/MO"-!':)
+MPL'B!@'0C01&C13%`````(GV#[?!C01`C03"C408((!X$`!T!H!X$/!U2P^W
+MT8T44HT$=HG!P>$&`<B-!$:-%`*-%-.):AR+3"0@B4H@C4(0BPPD9HE(%HI,
+M)`.(2!2+3"0LBP&)0BB+002)0BS&0C#_ZPJ)]D%F@?F!`':41XGX/`,/ADW_
+M__^#Q`1;7E]=PY!55U93@^P,BVPD(`^V?"0HB>N-M?0P``#&A9<Q````N@``
+M``"YD````(GPD(@00$EU^L9&`0#&!D#'@Y`Q````Q```B:N,,0``B?@/MM"-
+M!-+!X`,IT(T$@HT$@XN0T$4``(F3A#$``(N`U$4``(F#B#$``(/L"(V#]#``
+M`%#_="0PZ/S___^#Q!Q;7E]=PY!55U93@^P,BVPD(`^V?"0HB>N-M?0P``#&
+MA9<Q````N@````"YD````(GPD(@00$EU^L9&`0'&!D#'@Y`Q````Q```B:N,
+M,0``B?@/MM"-!-+!X`,IT(T$@HT$@XN0T$4``(F3A#$``(N`U$4``(F#B#$`
+M`(/L"(V#]#```%#_="0PZ/S___^#Q!Q;7E]=PY!55U93@^P,BDPD*(I$)"R(
+M1"0+BWPD(+,!#[;!C13`C2S5`````"G%C2RHD`^VPXT4@(T4T(V$EY`Q``"`
+M>`<!#X6V````B$@$BE0D"XA0!<9`!P`/MG`&C02VC03&C;2']#```+D`````
+MNI````")\(UV`(@(0$IU^L9&`1#&!D"*1"0+B$8)#[;#C0R`C0S(C0R/C9F0
+M,0``#[9#!HT4@(T4T(T4E\>"D#$```#$``"+1"0@B8*,,0``C12OBX+010``
+MB8&$,0``BX+410``B8&(,0``@^P(#[9#!HT4@(T4T(V4E_0P``!2_W0D,.C\
+M____@\00ZQ*-=@!#@/L?#X8F____N`$```"#Q`Q;7E]=PY!55U93@^P,BD0D
+M+(A$)`N+;"0PBWPD(+,!B>H/MM:)5"0$B?8/ML.-%("-%-"-%)>-@I`Q``"`
+M>`<!#X6H````QD`'`(FZC#$```^V0`:-%("-%-"-M)?T,```N0````"ZD```
+M`(GPD(@(0$IU^L9&`9#&!D"*3"0$B$X&B>B(1@>*5"0+B%8)BTPD-(L!B480
+MBT$$B484#[;#C12`C130C127QX*0,0```,0``(M$)"")@HPQ``"+3"0HBT%<
+MB8*$,0``BT%@B8*(,0``@^P(@<+T,```4O]T)##H_/___X/$$.L2C78`0X#[
+M'P^&,O___[@!````@\0,6UY?7<.055=64X/L#(ML)""*1"0LB$0D"XM\)#")
+M[HV=]#```+D`````NI````")V)"("$!*=?K&0P$3Q@-`B?H/ML:(0P:(4P>*
+M5"0+B%,)QX:0,0```,0``(FNC#$``(M4)"B+0ER)AH0Q``"+0F")AH@Q``"#
+M[`B-AO0P``!0_W0D,.C\____@\0<6UY?7<.+1"0(#[94)`QFBTQ0<$%FB4Q0
+M<&8/MD`"`<@/M\##D(M,)`2Z`0```(UV`(T$DHT$PH"\@9<Q```!=02)T,.0
+M0H/Z'W;FN/__``##4X/L"(M<)!"*1"04B$0D`XI,)!B(3"0'N@$```"-=@"-
+M!)*-!,*-A(.0,0``BDPD`SA(!'42BDPD!SA(!74)QD`'`>L)C78`0H/Z'W;2
+M@\0(6\.055=64X/L/(I$)%B(1"0OBDPD7(I4)&"(5"0NBVPD4(M\)&0/MM"-
+M!-+!X`,IT(T$@H"\A=A%``#]=06Q_8UV``^VP8/X$`^$M`(``(/X$'\7A<`/
+MA)L```"#^`$/A#0!``#I00D``)`]X@````^$L0@``#WB````?Q(]D`````^$
+MCP<``.D>"0``B?8]_P````^%$0D```^V5"0OC032P>`#*="-!(+&A(7810``
+M_X"]ES$```%U)(/L!%+_="1<_W0D7.C\____@\00A<`/A=0(``#^10;IS`@`
+M``^V1"0OQD0%!P&+5"14B52%#.FU"```D(V=]#```("]ES$```%U50^V3"0O
+MC03)P>`#*<B-!(&-1(4`BE,)B)!V10``!=!%``"*4PJ#X@&(4`G&0`@`@^P$
+M4?]T)%S_="1<Z/S___^#Q!"%P`^%6@@``/Y%!NE2"```B?8/MD0D+\9$!0<!
+MBU0D5(E4A0SI.0@``,9$!0?_@^P(:@!J`&C_````4/]TA0S_="1LZ/S___^#
+MQ"#I$@@``+\`````C8WT,```#[94)"^)UHT$TL'@`RG0C02"C5R%`(I!,HB#
+MQD4``&:+03!FB8/$10``BT$HB8.T10``BT$LB8.X10``BT$,B8.$10``BT$0
+MB8.(10``C9.410``BT$4B8.410``BT$8B4($BT$<B4((BT$@B4(,BT$DB8.L
+M10``QH/810```8!]!A\/A'X'``"`NW9%````#X29````#[9$)"^-%,"-'-4`
+M````*<.-')B)7"0HB40D#)")^@^VPE!6_W0D7/]T)%SH_/___X/$$(7`=2]'
+M_D4&C03VP>`#*?"-!(:-1(4`B?HXD'9%``!U"<:`QT4```#K&XB4G<=%``#K
+M$HGZBT0D*(B4A<=%``#K(XUV`(!]!A]T&HMT)`R-!/;!X`,I\(T$AHGZ.)2%
+M=D4``'>$QH67,0```;(`@'T$``^&Q08``)`/ML*`?`4'`0^$??[__T(X501W
+M[.FK!@``C78`QD0D)_^+1QB)1"0PC4PD,(M''(E!!`^V5"0OC032P>`#*="-
+M!(*-=(4`C8;010``QD`($/9'#'`/A)8#``"#OMQ%````=&V*6`J#[`1J"%&+
+MAMQ%``"#P%Q0Z/S___^#Q!"$P'5.]D</#W1(B[;<10``A?9T/H!^90!T+0^V
+MVU-65>C\____C5<84@^WP%!35O]T)'#_="1PZ/S___^*7F:+=FB#Q"3K!;X`
+M````A?9UQ(GV#[9/#_;!#0^$.P$```^V5"0OC032P>`#*="-!(*-%(4`````
+MC80J<$4``(!X!!\/AQ,!``"*0`2(1"0E]L$(=!(/ML#!X`0!T,:$*.A'```&
+MZR,/MDPD)0^V5"0OP>$$C032P>`#*="-!(*-!('&A"CH1P``!P^V5"0E#[9$
+M)"_!X@2-#,#!X0,IP8T,B,'A`@'*`>J-FN!'``#&0PD`BD</B$,+BT0D,(F"
+M\$<``(M$)#2)@O1'``"*1PF(0PJ*5PV#X@^*A"EZ10``.-!V`HC0B,*#X@^*
+M0PR#X/`)T(A##`^V3"0E#[94)"_!X02-!-+!X`,IT(T$@L'@`@'!C8PIX$<`
+M`(I7*8/B#XJ$*'I%```XT'8"B-"(PL'B!(I!#(/@#PG0B$$,#[94)"^-!-+!
+MX`,IT(T$@OZ$A71%``#IVP$``(UV`/9'#P(/A,X!``"#[`B-1"0X4%7H_/__
+M_XA$)#:#Q!`\_P^%30$``,9$)"<`@'T$`'8P#[94)">-!-+!X`,IT(T$@HV$
+MA=!%``"`>`C_=!.`>`C]=`W^1"0GBD0D)SA%!'?0#[94)">-!-+!X`,IT(T$
+M@KD`````NF0```"-A(5T10``D(@(0$IU^@^V5"0GC032P>`#*="-!(*-1(4`
+M#[94)"^-'-+!XP,ITXT<FHU<G0"-DW1%``")D-Q%``"+D]!%``")D,A%``"+
+MD]1%``")D,Q%``"+5"14B9#D1P``BY/@10``B9#@10``QH#810``_XV0<$4`
+M``^V<@N*3PF(C#!\10``_D(+BD\-@^$/BH-Z10``.,AV`HC(B$(*#[94)">-
+M!-+!X`,IT(T$@HU$A0"-B-!%``"+5"0PB9#010``BU0D-(E1!(I7#XB0=T4`
+M`(I$)"Z(00J*104Z101U!,9%!0#^107K4\9'!P#I.`,```^V1"0OC0S`P>$#
+M*<&-#(@/ME0D)HT$TL'@`RG0C02"C5R%`(V#=$4``#F$C=Q%``!T%XV#<$4`
+M``^V2`N*5PF(E`M\10``_D`+@'PD)O]U$P^V1"0GQD0%!P&+5"14B52%#)`/
+MMD<)4`^V7"0S4U7H_/___XT$V\'@`RG8C02#@\0,@+R%QT4````/A+,```"`
+M?08?#X2=`@``#[9<)"^-!-O!X`,IV(T$@\'@`HT4*(E4)""!PG!%``")5"0<
+M`>B)1"00ZV.0BW0D$,:&V$4``!"-OL!%```/MD<'4%/_="1<_W0D7.C\____
+M@\00A<`/A4$"``#^108/MD<'0`^VEG9%```YT`^$Z?[__XT$V\'@`RG8C02#
+M_H2%QT4``(!]!A\/A`X"``"+5"0@BH+'10``BU0D'#I"!G*+Z?8!``")]H!]
+M!@`/A>H!``"#[`AJ`&H`:)`````/MD0D0U#_="1L_W0D;.C\____@\0@Z<,!
+M``#&1`4'_X/L"&H`:@!H_P```%#_=(4,_W0D;.C\____QD0D-P&#Q"#IX0``
+M`(UV`,9$)!<`QT0D&`````"+5"08C012B<+!X@8!T(M4)!B-!$*+5"14.53%
+M%'5]NP````"+5"08C012B<+!X@8!T(M4)!B-!$*-/,4`````C78`C01;C03'
+MC0PHC7$@@'X0_W4^@'T&'P^$*`$``(/L"(U!*%"-41`/MT(64`^V0A10_W$@
+M_W0D;/]T)&SH_/___X/$((7`=0G^10;&1A#PB?9#@?N!````=J?_1"08@WPD
+M&`,/AE7___^`?08`#X72````L@"`?00`=A0/ML*`?`4'`0^$^?[__T(X501W
+M[(!\)!<`#X6K````@^P(:@!J`&CB````#[9$)$-0_W0D;/]T)&SH_/___X/$
+M(.F$````LP"`?00`=BL/MM.-!-+!X`,IT(T$@HV$A=!%``"`>`C]=`J`>`C_
+M=`3&0`C^0SA=!'?5#[94)"^-!-+!X`,IT(T$@HNTA>!%``"S``^VPXT40(G1
+MP>$&`<J-%%"-5-4`C4(0@'@(`743QD`(`(/L"/]R%/]T)%S_UH/$$$.`^P-V
+MRHGV@\0\6UY?7<-55U93@^P$BWPD'(ML)"2*1"0@B$0D`XM,)!C&10#^LP"^
+M`````(!Y!`!V-@^VTXT$TL'@`RG0C02"C02!.;CD1P``=1>)\CI4)`-U"XJ`
+MV$4``(A%`.L*1HUV`$,X601WRH/$!%M>7UW#B?955U93@^P,BVPD((I$)"R(
+M1"0+B>Z*104Z101U!,9%!0`/MGX%LP`/ML.-%$")T<'A!@'*C110C036BU0D
+M)#E0%'5%QD`8`;\`````@'X$`'9HB?@/MM"-!-+!X`,IT(T$@HT$AHM4)"0Y
+MD.1'``!U#8J`V$4``(/``SP!=CQ'B?@X1@1WS.LR#[;#C11`B='!X08!RHT4
+M4(T$UH-X%`!U#XM4)"2)4!3&0!@!ZPR)]D.`^P,/AFW___\/ML.-%$")T<'A
+M!@'*C110NP````"Y`@P``(U$UAR(&$!)=?J)^`^VT(M$)"2)1)8,C032P>`#
+M*="-!(*Y`````+ID````C82&=$4``(@(0$IU^HGX#[;0C032P>`#*="-!(*Y
+M`````+H``@``C82&Y$4``(GVB`A`2G7ZB?H/MLJ-!,G!X`,IR(T$@8T$AHM\
+M)"2)N.1'``"+5"0PB9#@10``C9C010``QD,(_\>`W$4```````"+?"0HBQ>)
+MD-!%``"+5P2)4P2*5"0+B)!Z10``@^P(:@!J`&C_````4?]T)#Q5Z/S____^
+M1@6#Q"Q;7E]=PY!55U93BVPD&(MT)!2_`````(!^!``/AI8```")^`^VT(T$
+MTL'@`RG0C02".:R&Y$<``'5QLP$/ML.-%("-%-"-A):0,0``B?HX4`1U!,9`
+M!P%#@/L?=M^)^`^VT(T$TL'@`RG0C02"C02&QX#D1P```````+D`````NF0`
+M``"-@'1%``"("$!*=?J)^`^VT(T$TL'@`RG0C02"QH2&V$4``/W^3@5'B?HX
+M5@0/AVK___^_`````(GZ#[;"C11`B='!X08!RHT44(T$UCEH%'4XQT`4````
+M`,9`&`"S`(GZ#[;"C11`B='!X08!RHT44,'B`XGV#[;#C01`C03"QD0P,`!#
+M@/N!=NQ'B?@\`W:G6UY?7<-55U93@^P<BTPD-(M$)$"*5"0\B%0D&XM\)#"]
+M`````+,`@'PD.`$/A?<```"%P`^$U````(E$)!2`?P0`=BF0B>@/MM"-!-+!
+MX`,IT(T$@CF,A^1'``!U!SI<)!MT"4-%B>HX5P1WV(GJ#[;"C1S`P>,#*<.-
+M')B-')^-@W1%``"#[`1J9%#_="0@Z/S___^^`````(/$$("[=$4```!T:(GH
+M#[;0C032P>`#*="-!(+!X`*)1"0,C90X<$4``(E4)!"0B?(/ML+!X`2+5"04
+MC1P0C4MD`T0D#`'XC9#H1P``BX#H1P``B4-DBT($B4$$BT((B4$(BT(,B4$,
+M1HGPBU0D$#A"!'>[B>@/MM"-!-+!X`,IT(T$@@^VA(=T10``ZSJ0O0````"^
+M`````(!_!`!V)(GP#[;0C032P>`#*="-!((YC(?D1P``=0-%B?9&B?(X5P1W
+MW(GJ#[;"@\0<6UY?7<.0D)!64XM$)`R+$(LRL0"`>BL`=A0/ME@)B?:)V-/X
+MJ`%U!D$X2BMW\H#Y`W81#[;!BX2&T`$``*,`````ZP\/ML&+A(;0`0``HP``
+M``"I```0``^5P`^VP%M>PXUV`%575E.#[`R+1"0DBU0D((LJBWT`QD`A`,9`
+M(`7&0",&B5`HQD0D!P#'1"0(`````+,`@'TK`'88BTPD(`^V40F)T(C9T_BH
+M`74&0SA=*W?P@/L#=A,/ML/'A,<``@``+````.L1C78`#[;#QX3'``(``"P`
+M``"#[`QH$"<``.C\____@\00@/L#=A4/ML.+A,<$`@``HP`````/MO#K$Y`/
+MML.+A,<$`@``HP`````/MO`)="0(@/L#=A$/ML/'A,<``@``)````.L/D`^V
+MP\>$QP`"```D````@^P,:!`G``#H_/___X/$$(#[`W89#[;#BX3'!`(``*,`
+M````B<:!YO___P#K%P^VPXN$QP0"``"C`````(G&@>;___\`B?#!X`@)1"0(
+M@/L#=A,/ML/'A,<``@``(````.L1C78`#[;#QX3'``(``"````"#[`QH$"<`
+M`.C\____@\00@/L#=A4/ML.+A,<$`@``HP````")QNL3B?8/ML.+A,<$`@``
+MHP````")QH%\)`@!`6F6=1F+1"0@@$@(!HGPP>@0/%`/E,`/ML#K2HGV@7PD
+M"`$!``!U$HGPP>@0/%`/E,`/ML#K+XUV`(/L#&B($P``Z/S___^#Q!#^1"0'
+M@'PD!P0/AD'^__^)\,'H$#Q0#Y3`#[;`@\0,6UY?7<-64X/L!(MT)!"+'E;H
+M_/___X/$!(3`=13&1@7_@^P(5E/H_/___X/$$.M=D+$`@'LK`'82#[96"8G0
+MT_BH`74&03A+*W?R@^P,4^C\____B<&#Q!"%P'0PC48XBU`$B4@$B0&)402)
+M"OY&"HEQ*,9!(`7&02$`QD%)#VH!:@%15NC\____@\00@\0$6U[#B?955U93
+M@^P,BVPD((MT)"2+?0"["@```)"#[`A65>C\____@\00A,!U$X/L#&CH`P``
+MZ/S___^#Q!!+==RQ`(!_*P!V$@^V50F)T-/XJ`%U!D$X3RMW\HM6!(L&B5`$
+MB0+^30J#[`A65^C\____@\00]D4(`G1*@WTH`'49@^P,5^C\____@\00A<`/
+MA&@!``")12CK`XM%*(DXB6A4QD`J`,9`*P#&0"8`9H-(,@2#[`A05^C\____
+M@\00Z3@!``"#?2@`#X3-````@^P(BT4H@\!84/]W%.C\____@\0(_W4H5^C\
+M____@\00C44XB<(Y13@/A)<```")PY"#[`Q2Z/S___^)QH/$$(-X'`!T98M`
+M',=`8`````#V1B0$=27^AU<,``"#[`Q7Z/S___^#Q`QJ`8M&'`^V0`%05^C\
+M____@\00@^P$_W8<_[<D!0``:@'H_/___X/$#/]V'/^W)`4``&H&Z/S____'
+M1AP`````@\00_DT*@^P(5E?H_/___X/$$(G:.5TX#X5L____QT4H`````(!]
+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
+MQ!")^CE]*`^%#O___XN$)$`"``#^2!R#[`A5_W0D&.C\____@\00_DPD'XM4
+M)!B+C"1``@``.5$L=`N`?"0?``^%DOS__X'$+`(``%M>7UW#B?955U93@>PD
+M`@``BZPD/`(``(M%`(E$)!3_M"0X`@``5>C\____QP0D`````&H`:@!5_[0D
+M3`(``.C\____B$0D*L9$)"L`@\0@.$0D"P^#,P,``)"#[`QJ``^V?"0;5VH!
+M5?^T)$P"``#H_/___P^VP,'@!(/`9(/$(#T``@``#X?O`@``@^P,C5PD'%-7
+M:@%5_[0D3`(``.C\____@\08C40D=%!5Z/S___^#Q!`\_P^%O@(``(/L#/]T
+M)!CH_/___XG#@\00A<`/A-$"``#^11S&0#``BT0D;(D#BT0D<(E#!(/L"(U$
+M)&Q05>C\____@\00//]T(`^VP(T$0(T$P(G"P>(%*<*+3"0,BX&0!0``C120
+MB5,,BD0D$HA#,0^V1"03T>B#X`'!X`2*4S6#XN\)PHA3-0^V1"03P>@#@^`!
+MP>`%@^+?"<*(4S4/MD0D$\'H`H/@`<'@`X/B]PG"B%,UB6L(BD0D%HB#BP``
+M`(M$)!B)0T"+1"0<B4-$BD0D%XA#,@^W1"04B4,XBT0D8&:)@X@```"*1"1B
+MB(.*````BT0D4(E#>(M$)%2)0WR+1"18B8.`````BT0D7(F#A````(M$)"")
+M0TB+1"0DB4-,BT0D*(E#4(M$)"R)0U2->UB-="00@\8@_+D&````\Z6+1"1(
+MB4-PBT0D3(E#=(U3((U%+(M(!(E0!(E#((E*!(D1OP````"`?"00``^$4`$`
+M`(/L#/]T)!CH_/___XG&@\00A<`/A&,!``#^10K&0"(%QH"P`````,9`(P3'
+M0$````4`QT!$`````&;'@)````````^WU\'B!(U4%'"*0@2(1B"*0@6(1B&)
+M;BB)7BR*0@:(1DF*0@B#X`^(AK(```!FBTXT@>'?_?__B<B#R!!FB48TBD((
+MP.@$/`EU"8G(@\@P9HE&-`^WQ\'@!(I$!'C`Z`0\"G4&9H%.-``"#[?'P>`$
+MC50D$`'0BU!LB9:<````BT!PB8:@````B9:4````B8:8````_D,PC44XBU`$
+MB7`$B0:)5@2),HU6"(U#*(M(!(E0!(E&"(E*!(D1#[9&(*@"=!JH!'06J`%T
+M$E8/MD9)4%-5Z/S___^#Q!#K(`^V1B"H`G08J`1T%*@!=1"#[`A6_W0D&.C\
+M____@\001V8/MD0D$&8Y^`^'L/[___Y$)`N*3"0*.$PD"P^"SOS__X!]"@!U
+M%,9%!?^#[`A5_W0D&.C\____@\00@<0<`@``6UY?7<.055=64X/L&(ML)"R+
+M="0P:@!J`&H`5E7H_/___XA$)"JS`(/$(#I<)`IS(HU\)`N05P^VPU!65>C\
+M____@\00@'PD"_YU?D,Z7"0*<N/^3C2`?C0`=%:+/L9&-`"+5BR-6N"-1BPY
+MPG1;B<*0@WL,`'0,BT,@C5C@.=!U\.M&_D8T@^P(5E7H_/___\<$)``````/
+MMH.+````4%-6_[?$"0``Z/S___^#Q"#K&(/L"%95Z/S___^#Q`A65>C\____
+M@\00D(/$#%M>7UW#5U93BT0D$(L8OPH```"R`(![*P!V.`^V<`F)]@^VRHGP
+MT_BH`70AB<C!X`0!R(N$@UP+```E```#`,'H$(/`"(GY.,AS`HG'0CA3*W?.
+MB?H/ML);7E_#D%=64XM$)!"+&+\(````L@"`>RL`=C@/MG`)B?8/MLJ)\-/X
+MJ`%T(8G(P>`$`<B+A(-<"P``)0```P#!Z!"#P`B)^3C(=@*)QT(X4RMWSHGZ
+M#[;"6UY?PY!55U93@^P<BT0D,(LHQD0D%P"`>`D`#X3T`P``QD0D#P`/MD`)
+MB<*H`741D/Y$)`^)T(I,)`_3^*@!=/`/ME0D#XG0P>`$`="-5(4`BX),"P``
+MJ0```@!T$`T```0`)?___?^)@DP+```/ME0D#XG0P>`$`=#VA(5."P``!`^$
+MN0(``#FM)`4``'4,C;5@#```B70D&.L*BX4D!0``B40D&(/L!`^V3"03B<C!
+MX`0!R(U$A0`/MI!7"P``4@^VD%8+``!2#[:050L``%(/MI!4"P``4@^VD%,+
+M``!2#[:04@L``%(/MI!1"P``4@^V@%`+``!0#[9%*5!1:.0```#H_/___X/$
+M,&;'1"04@``/ME0D#XG0P>`$`="-A(50"P``B40D$`^W1"04BU0D&&8/MH00
+MF`0``&8]_P!T.0^WP(T$0(T$P(G"P>(%*<*+3"08BX&0!0``C1R0BWPD$+D(
+M````_(G>\Z8/E\(/DL`XP@^$=0$``&;_1"049H%\)!2!`':A@^P,5>C\____
+MB<.#Q!"%P`^$=@(```^V5"0/B=#!X`0!T/:$A4T+```$=`2`2S4"#[94)`^)
+MT,'@!`'0]H2%3@L```1T!(!+-1`/ME0D#XG0P>`$`=#VA(5-"P``"'0$@$LU
+M!`^V5"0/B=#!X`0!T/:$A4X+```(=`2`2S4@#[94)`^)T,'@!`'0]H2%30L`
+M``)T!(!+-0$/ME0D#XG0P>`$`=#VA(5."P```G0$@$LU",9#,``/ME0D#XG0
+MP>`$`="-1(4`BY!0"P``B1.+@%0+``")0P2+1"0PB4,(4.C\____B(.+````
+MBU0D-/Y"'+$`@\0$@'TK`'8DBW0D,`^V1@G3^*@!=!`/MD0D%XA,&$#^0S+^
+M1"0703A-*W?<C5,@BT0D,(/`+(M(!(E0!(E#((E*!(D1BT0D,/Y`-(/L#&@`
+M````#[:#BP```%!3_W0D2/^UQ`D``.C\____@\0@Z24!``"#[`P/MD,'4`^V
+M0P90#[9#!5`/MD,$4`^V0P-0#[9#`E`/MD,!4`^V`U!H-`$``.C\____@\0H
+MBU0D.,9"!?]25>C\____@\00Z=<```"-=@`/ME0D#XG0P>`$`="-=(4`]H9.
+M"P``"`^$MP```(/L#%7H_/___XG#@\00A<`/A*$```#&0",&QD`B!6;'@)``
+M`````,9`(`;&0"$`QT!````%`,=`1`````"+EE`+``")D)P```"+AE0+``")
+M@Z````")DY0```")@Y@```"+3"0PB4LH4>C\____B(.R````9H-+-!#_="0T
+MZ/S___^#Q`@\"78&9H%+-``"BW0D,,9&"@&)\(/`.(M0!(E8!(D#B5,$B1J#
+M[`A35>C\____@\00D(/$'%M>7UW#55=64X/L#(MT)""+?"0DL`"%_W0#BD<%
+M#[;`O0````"%P'00/?\````/A$L!``#IC`4``(GJ#[;"BH0P'@4``#S_=!(/
+MMM"-!%+!X`,IT(V\AB@!``!%B>F`^0-VUKT`````D(GJ#[;"BH0P'@4``#S_
+M=#0/MM"-!%+!X`,IT(V\AB@!``#V1P8"=!"#[`AJ`%?H_/___X/$$.L,@^P,
+M5^C\____@\0018GI@/D#=K1F#[9&)F8YAJ0)```/A?X$``"%_P^%F@```(!^
+M.0`/A>P$``#&1CD!NP````"-=@`/M].+C):8`@``A<ET+H-Y<`!T*(M!<,=!
+M<`````#'A):8`@```````(/L!&K_4?]Q>/_0@\00ZS^-=@`/M].#O):8`@``
+M`'0OBX26F`(``(-X=`!T(HM!=,=!=`````#'A):8`@```````(/L#/]Q>/_0
+M@\00B?9#9H/[/W:!Z5P$``#&1P7_@^P(5U;H_/___X/$$.E&!```QD0D"P"0
+M#[9$)`N*A#`>!0``//\/A.P````/MM"-!%+!X`,IT(V\AB@!``"`?P7_#X30
+M````O0````"`?PH`#X:U````C5\X@^P,4^C\____B40D%(/$$(M#!(M4)`2)
+M4P2)&HE"!(D0@'HB_W1_@+JQ`````'1K#[9"(*@"=!ZH!'0:J`%T%E(/MD))
+M4/]R+%?H_/___X/$$.M'B?:+3"0$#[9!(*@"=1BH!'04J`%T$(/L"%%6Z/S_
+M__^#Q!#K(I"+5"0$#[9"(*@"=!6H!'01J`%U#8/L"%)6Z/S___^#Q!"X`0``
+M`.E>`P``D$6)Z3A/"@^'3O___[@!````Z4<#``")]OY$)`N`?"0+`P^&\?[_
+M_\9$)`L`@'XY``^%G@```+L`````D`^WPXN,AI@"``!F#[:4,)@$``"%R71M
+M@WEP`'1G@WE@`'5A9H'Z_P!T,@^WTHN^6`4``(T$TL'@`BG0P>`#]D0X(P1T
+M%X!\."$`=1"#[`1245;H_/___X/$$.LHBU%P#[?#QX2&F`(```````#'07``
+M````@^P$:O]1_W%X_]*#Q!")]D-F@_L_#X9Q____QD8Y`>F$`@``#[9$)`N*
+MA#`>!0``//\/A&`"```/MM"-!%+!X`,IT(V\AB@!``"]`````(!_"@`/AC\"
+M``"-=@"#[`R-7SA3Z/S___^)1"04@\00BT,$BU0D!(E3!(D:B4($B1"`>B+_
+M#X4"`@``9HM*&&:)3"0"#[?!9@^VE#"8!```9HD4)(N<AI@"``"+3"0$BD$D
+MJ`1T8H7;=%Z#>W``=%B#>V``=5*#X/N(023V02,$=!.#[`0/M\)04U;H_/__
+M_X/$$.LSBU-P#[=$)`+'A(:8`@```````,=#<`````"+1"0$QT`<`````(/L
+M!&K_4_]S>/_2@\00BU0D!/9"(P0/A#X!``#&@K``````@&<(Y_9")`$/A/H`
+M``"`8B3^@WH<`'12@'HA`'4M]D(C!'0G@^P$#[=4)`8/MD8IP>`&`<)2_[8D
+M!0``:@?H_/___X/$$.GL````@^P$BTPD"/]Q'/^V)`4``&H!Z/S___^#Q!#I
+MS0```(7;=&.#>W``=%V+1"0$@'@A`'4>]D`C!'08@^P$#[=$)`104U;H_/__
+M_X/$$.F;````BU-P#[=$)`+'A(:8`@```````,=#<`````"+3"0$QT$<````
+M`(/L!&K_4_]S>/_2@\00ZV:+1"0$@'@A`'5<]D`C!'16@^P$#[=4)`8/MD8I
+MP>`&`<)2_[8D!0``:@+H_/___X/$$.LRC78`BU0D!(-Z'`!T)8M"'(-X=`!T
+M'(M0=,=`=`````"#[`R+3"00BT$<_W!X_]*#Q!"+1"0$]D`D`G0?@^P$_W`<
+M_[8D!0``:@;H_/___XM4)!2`8B3]@\00D$6)Z3A/"@^'Q/W___Y$)`N`?"0+
+M`P^&??W__Y"X`0```(/$#%M>7UW#C78`55=64X/L#(M<)"2+:R@/MT,8N@``
+M``"+3"0@@+P(F`0``/\/A)`"```/MD,B@_@/#X3V````@_@/?SF#^`P/A+0`
+M``"#^`Q_$X/X!71/@_@+#X20````Z5@"``"#^`T/A*0```"#^`X/A*P```#I
+M00(``)"#^!E_#X/X&'U6@_@4="WI+`(``(/X&W0T/?\````/A)@```#I%P(`
+M`(/L"&H!4^C\____@\00Z00"``"#[`Q3Z/S___^#Q!#I\P$``(/L"&H`4^C\
+M____@\00Z>`!``"#[`AJ`5/H_/___X/$$.G-`0``@^P,4^C\____@\00Z;P!
+M``"#[`Q3Z/S___^#Q!#IJP$``(/L#%/H_/___X/$$.F:`0``@^P,4^C\____
+M@\00Z8D!``"0QD,B_XE<)`B_`````(!]"@`/AL4```"-=3B)]H/L#%;H_/__
+M_XG#@\00BT8$B5X$B3.)0P2)&(![(O\/A(<```"`>R$`#X6%````@+NQ````
+M`'1H#[9#(*@"=!RH!'08J`%T%%,/MD-)4/]S+%7H_/___X/$$.M$#[9#(*@"
+M=1RH!'08J`%T%(/L"%/_="0LZ/S___^#Q!#K(HGV#[9#(*@"=!BH!'04J`%U
+M$(/L"%/_="0LZ/S___^#Q!"Z`0```.G'````B?;&@[$`````D$>)^#A%"@^'
+M0/___XGY.$T*#X6-````BT0D"(!X(2)T!H!X(0UU&(/L"&H*_W0D%.C\____
+MN@$```"#Q!#K?K\`````@'T*`'9:C74XC78`@^P,5NC\____B<.#Q!"+1@2)
+M7@2),XE#!(D8@'LA(G0&@'LA#74E@^P(4V@Y````Z/S___^#Q`AJ"E/H_/__
+M_[H!````@\00ZR.)]D>)^3A-"G>LQD4%_X/L"%7_="0LZ/S___^#Q!"Z`0``
+M`(G0@\0,6UY?7<.055=64X/L#(M<)"2+:R@/MT,8N@````"+3"0@@+P(F`0`
+M`/\/A&P&```/MD,B@_@)#X13`P``@_@)?SV#^`4/A-P```"#^`5_%X/X`P^$
+M@@```(/X!`^$I````.DP!@``@_@'#X0,`P``@_@'#X_O`@``Z78"``"0@_@6
+M#X2X`@``@_@6?R*#^!0/A"(#``"#^!0/CWL"``"#^`H/A/P"``#IZ@4``(GV
+M@_@:#X0<`@``@_@:?PZ#^!</A(X"``#IS`4``#W_````#X3F`@``Z;P%``"+
+M11B!8"C___[_:@!J`5/_<RCH_/___\<$)`4```#H_/___X/$$.F1!0``:@!J
+M`%/_<RCH_/___\<$)%##``#H_/___X/$$.EP!0``QD0D"P"+?"0@@'\K`'8?
+M#[95"9")T(I,)`O3^*@!=0Y!B$PD"XM\)"`X3RMWY@^V0R"H`G0,J`1T"*@!
+M#X7#````BU48BT(HJ0```0!T#27___[_B4(HZ:D```"^$"<``(I$)`N(1"0*
+M#[;XBTPD((L1@'PD"P-V&P^V1"0+BX3"@`$``*,`````)0```0#K%(UV`(N$
+M^H`!``"C`````"4```$`A<!T)H!\)`H#=A#'A/J``0`````!`.L.C78`QX3Z
+M@`$``````0"%P'45@^P,:.@#``#H_/___X/$$$YUBNL$A?9U'<9#(P+&0R+_
+M@^P(4_]T)"SH_/___X/$$.EK!```]D4&`70]@^P(4U7H_/___X/$$(3`=2R^
+M^@```(UV`(/L"%-5Z/S___^#Q!"$P'43@^P,:.@#``#H_/___X/$$$YUW(!\
+M)`L#=B`/MDPD"XM\)""+%XN$RH`!``"C`````(F$RH`!``#K/@^V="0+BT0D
+M((L(@'PD"P-V#HN$\8`!``"C`````.L7#[9$)`N+?"0@BQ>+A,*``0``HP``
+M``")A/&``0``@^P(4_]S*.B')```QP0D($X``.C\____@\00Z:,#``"#[`@/
+MMT,84&AL`0``Z/S___^#Q`A3_W,HZ.4I``"#Q!#I?0,``(/L"`^W0QA0:$T`
+M``#H_/___X/$"%/_<RCH)RH``(/$$.E7`P``@^P(4_]S*.@;)```@\00Z4,#
+M``"#[`A3_W,HZ.,G``"#Q!#I+P,``(/L"%/_<RCH6R<``(/$$.D;`P``@^P(
+M4_]S*.@O*```@\00Z0<#``"#[`A3_W,HZ(,H``"#Q!#I\P(``(/L"%/_<RCH
+MUR@``(/$$.G?`@``QD,B_P^V0R"H`G0(J`1T!*@!=16#>S``=0]5Z/S___^(
+M@[(```"#Q`3V10@"#X1@`0``BWTH#[97*@^V1Q](.<)]+?Y'*OY'*\9')@!F
+MBT<R@^#^@\@(9HE',H/L"%?_="0LZ/S___^#Q!#I;P(``,9$)`L`@'T*``^&
+MP````(UU.(/L#%;H_/___XG#@\00BT8$B5X$B3.)0P2)&(![(O\/A(````"`
+MN[$`````=&L/MD,@J`)T'Z@$=!NH`7074P^V0TE0_W,L5>C\____@\00ZT>-
+M=@`/MD,@J`)U'*@$=!BH`704@^P(4_]T)"SH_/___X/$$.LBB?8/MD,@J`)T
+M&*@$=!2H`740@^P(4_]T)"SH_/___X/$$+H!````Z;\!``")]L:#L0````#^
+M1"0+BD0D"SA%"@^'0_____9',H!T'_9'+0-T&<9')@"#[`A7_W0D+.C\____
+M@\00Z7L!``#&107_QD<F`&:+1S*#X/.#R`)FB4<R@&<M_H/L"%7_="0LZ/S_
+M__^#Q!#I3`$``,9$)`L`@'T*``^&Q0```(UU.(GV@^P,5NC\____B<.#Q!"+
+M1@2)7@2),XE#!(D8@'LB_P^$B@```(![(0!U?8"[L0````!T:`^V0R"H`G0<
+MJ`1T&*@!=!13#[9#25#_<RQ5Z/S___^#Q!#K1`^V0R"H`G4<J`1T&*@!=!2#
+M[`A3_W0D+.C\____@\00ZR*)]@^V0R"H`G08J`1T%*@!=1"#[`A3_W0D+.C\
+M____@\00N@$```#IEP```(GVQH.Q`````/Y$)`N*3"0+.$T*#X=`____BD0D
+M"SA%"G58QD0D"P"`?0H`=DV-=3B#[`Q6Z/S___^)PX/$$(M&!(E>!(DSB4,$
+MB1B`>R$B=`:`>R$-=1:#[`AJ"E/H_/___[H!````@\00ZRJ0_D0D"XI,)`LX
+M30IWML9%!?^#[`A5_W0D+.C\____@\00C78`N@$```")T(/$#%M>7UW#D%57
+M5E.#[`R+?"0@BW0D)(L7BUY4#[9&)H/X&0^'MP,``/\DA20&``#V1C($=`QF
+MQT8R`0#&1B8!ZSQF@WXR('4,9L=&,@@`QD8F#>LI]D8R@'09]D8M`W039HM&
+M,B1_@\@(9HE&,L9&)@WK"O9&,@AT!,9&)@>#[`A65^C\____@\00Z5`#``"+
+M@@0!``"C`````(/(4(F"!`$``&H!:@)J`5;H_/___X/$$.DH`P``:@%J`&H!
+M5NC\____@\00Z10#``!J`6H!:@%6Z/S___^#Q!#I``,``&H!:F!J`5;H_/__
+M_X/$$.GL`@``@^P,:@$/MD8L4&I@:@%6Z/S___^#Q"#IT`(``(/L#&H!:```
+M`01J(6H!5NC\____@\0@Z;0"``"#[`QJ`6H!:@)J`%;H_/___X/$(.F;`@``
+M@^P,:@%J`&H":@!6Z/S___^#Q"#I@@(``(M#&(%@*/__]_^#[`QJ`6H!:@)J
+M`%;H_/___X/$(.E?`@``@^P,:@%J`&H":@!6Z/S___^#Q"#I1@(``&H!:@)J
+M`%;H_/___X/$$.DR`@``:@%J`&H`5NC\____@\00Z1X"``!J`6H!:@!6Z/S_
+M__^#Q!#I"@(``(M#&(%@*/__]_^#[`QJ`6K_:@%J`%;H_/___X/$(.GG`0``
+M:@%J`&H`5NC\____@\00Z=,!```/MD8KBVR&/(E=*(EU,(I&*XA%2<9%(@/&
+M12$`@$T@!?Y#"HU#.(M0!(EH!(E%`(E5!(DJ@^P,:(`:!@#H_/___\9$)!L`
+M@\00@'\K`'8:#[93"8G0BDPD"]/XJ`%U"D&(3"0+.$\K=^J+4QB+0BBI```(
+M`'0*)?__]_^)0BCK4[N8.@``#[9T)`N0@'PD"P-V&8L'BX3P@`$``*,`````
+MJ0``"`!U+.L7B?:+!XN$\(`!``"C`````*D```@`=1.#[`QHZ`,``.C\____
+M@\002W6X@^P(55?H_/___X/$$.GN````@^P,:$`-`P#H_/___VH`:B!J`5;H
+M_/___X/$%&@0)P``Z/S___^#Q!#IP````&H`:@%J`%;H_/___\<$)!`G``#H
+M_/___X/$$.F@````BT,8@6`H___W_X/L#&H`:O]J`6H`5NC\____@\04:!`G
+M``#H_/___X/$$.MS:@!J`&H`5NC\____QP0D$"<``.C\____@\00ZU9J`&H@
+M:@%6Z/S____'!"00)P``Z/S___^#Q!#K.8/L"%97Z/S___^#Q!#K*H/L"%97
+MZ/S___^#Q!#K&X/L#&H!:/````!HFP```&H!5NC\____@\0@D+@!````@\0,
+M6UY?7<.-=@!55U93@^P<BT0D,(L`B40D&,9$)!,`BU0D,(!Z*P`/AK4"```/
+MMDPD$XG(P>`$`<B+="0PC1R&]H->"P``$`^$@`(``(V34`L``+@!````T^`(
+M0@F+FSP+``")7"04]D((`@^$]````(I<)!-#.%XK#X;F````#[94)!.)T,'@
+M!`'0C02&B40D!(UV``^V\XGPP>`$`?"+5"0PC3R"]H=>"P``$`^$H@```(ML
+M)`3WA4P+``````X`#X2.````@^P$:@B-CU`+``")3"0448V%4`L``(E$)!10
+MZ/S___^#Q!"$P'1G@^P$:@B-AT0+``!0C85$"P``4.C\____@\00A,!T2+@!
+M````B?'3X(MT)`@*1@F(1@F+5"0,B$()@WPD%`!U#(N_/`L``(E\)!3K&P^V
+MTXG0P>`$`="+="04BTPD,(FT@3P+``")]D.+1"0P.%@K#X<R____B?:#?"04
+M``^%M0```(/L#/]T)#SH_/___XE$)"2#Q!"%P`^$5P$```^V5"03B=#!X`0!
+MT(M4)#"-!(*+3"04B8@\"P``C9`X"P``B5$8BH!8"P``B$$&QD$%`(M<)#")
+M&<9!"@#&030`QD$<`(I<)!-#BW0D,#A>*W9B#[94)!.)T,'@!`'0#[:4AED+
+M``"-=@`/MLN)T-/XJ`%T%HG(P>`$`<B+="04BTPD,(FT@3P+``!#BT0D,#A8
+M*W?5ZQZ-=@`/ME0D$XG0P>`$`="+3"04BU0D,(F,@CP+```/MDPD$XG(P>`$
+M`<B+7"0PC82#4`L``(I0"8MT)!2(5@D/ME@)@'PD$P-V$8M$)!C'A,@``@``
+M.````.L4#[9$)!.+5"08QX3"``(``#@```"#[`QH$"<``.C\____@\00@'PD
+M$P-V%0^V1"03BTPD&(F<P00"``#K$XUV``^V1"03BW0D&(F<Q@0"``#^1"03
+MBD0D$XM4)#`X0BL/ATO]__^#Q!Q;7E]=PXUV`%=64XM\)!"*7"04BS>`^P-V
+M$@^VP\>$QC`"```,````ZQ")]@^VP\>$QE`"```,````@^P,:!`G``#H_/__
+M_X/$$(#[`W81#[;#BX3&-`(``*,`````ZP\/ML.+A,94`@``HP````")P8'A
+M```_`,'I$`^VTXG0P>`$`="-E(=0"P``BD((@^#\B$((@_D0=0N#R`*(0@CK
+M%8UV``^VTXG0P>`$`="`C(=8"P```5M>7\.)]E=64X/L((M<)#2+1"0PBSB^
+M`````(UV`(/[`W83C02U``$``(F$WP`"``#K$8UV`(T$M0`!``")A-\``@``
+M@^P,:!`G``#H_/___X/$$(/[`W81BX3?!`(``*,`````ZP^-=@"+A-\$`@``
+MHP````")!+1&@_X&=I^)YORY!P```(M\)#CSI8/$(%M>7\.)]E=64X/L((M<
+M)#2+1"0PBSB^`````(UV`(/[`W83C02U'`$``(F$WP`"``#K$8UV`(T$M1P!
+M``")A-\``@``@^P,:!`G``#H_/___X/$$(/[`W81BX3?!`(``*,`````ZP^-
+M=@"+A-\$`@``HP````")!+1&@_X&=I^)YORY!P```(M\)#CSI8/$(%M>7\.)
+M]HM,)`2*`<#H!(G"@^(']D$"!'0#@,X"]D$#!'0&@<H```(`]D$""'0#@,X(
+M]D$#"'0&@<H```@`]D$"`G0#@,X$]D$#`G0&@<H```0`#[9!%,'@&`G"B=##
+MC78`_W0D!.C\____@\0$PXUV`%575E.#[$2+;"18BD0D7(A$)!>+50")5"00
+M#[;0B=#!X`0!T(U$A0")J#@+``#&@%D+````4E7H_/___X/$$+D`````NB``
+M``"-1"00C78`B`A`2G7Z@^P$C70D%%8/MGPD%U=5Z/S___^)^\'C!`'[C5R=
+M`%;H_/___XF#0`L``(M$)#")@T0+``"+1"0TB8-("P``C9-<"P``@\04@'PD
+M#P-V$HM,)`B+A+G0`0``HP````#K%0^V1"0/BUPD"(N$@]`!``"C`````(D"
+M#[94)`^)T,'@!`'0C8R%8`L``(!\)`\#=A*+7"0(BX33@`$``*,`````ZQ4/
+MMD0D#XM4)`B+A,*``0``HP````")`0^V5"0/B=#!X`0!T(U$A0#V@%X+```0
+M#X1#`0``]H!8"P```G1;N0````"Z(````(U$)!"-=@"("$!*=?J#[`2-?"04
+M5P^V="075E7H_/___XGSP>,$`?.-7)T`5^C\____B8-,"P``BT0D,(F#4`L`
+M`(M$)#2)@U0+``"#Q!3K%P^V5"0/B=#!X`0!T,>$A4P+```!``(`@'PD#P-V
+M%@^V1"0/BTPD",>$P3`"```8````ZQ0/MD0D#XM<)`C'A,-0`@``&````(/L
+M#&@0)P``Z/S___^#Q!"`?"0/`W89#[9$)`^+5"0(BX3"-`(``*,`````B<'K
+M%P^V1"0/BTPD"(N$P50"``"C`````(G!#[94)`^)T,'@!`'0]X2%7`L`````
+M`P!U"('A____W^L&@<D````@@'PD#P-V$@^V1"0/BUPD"(F,PS0"``#K$`^V
+M1"0/BU0D"(F,PE0"``"#Q#Q;7E]=PXUV`(M4)`2+@C@%```E____`#U0`9,`
+M=1**@CL%``#`Z`2Z`0```#P,=`6Z`````(G0PU575E.#[!R+?"0PBS?&1"00
+M4(U<)!#&0P$%QD,"!,9#`S#&0P01QD,%J\9#!@#&0P<`QX=<#````````#F_
+M)`4```^%U````(VO8`P``(/L#&H!:@B-AS@%``!0:````@!7Z/S___^+AS`%
+M``"*ESL%``"-1(+\B(<[!0``@\0@5^C\____@\0$A,!U$XM$)!")AS@%``"+
+M0P2)ASP%``"A`````(J7.P4```'"0*,`````B)<[!0``BH<X!0``B(4X!0``
+MBH<Y!0``B(4Y!0``BH<Z!0``B(4Z!0``BH<[!0``@\`"B(4[!0``BH<\!0``
+MB(4\!0``BH<]!0``B(4]!0``BH<^!0``B(4^!0``BH<_!0``B(4_!0``QX=<
+M#````````(N&``$``*,`````)?__``"H('44@\@@B88``0``BX8``0``HP``
+M``"+!\>`!`$```````"+!\>`&`$```````"+!\>`'`$```````"#[`QH@(0>
+M`.C\____QX9P`0``&`$``(N&=`$``*,`````@.3]QX9P`0``&`$``(#,!(F&
+M=`$``,>&<`$``"@!``#'AG0!``!_?P``QX9P`0``)`$``(N&=`$``*,`````
+M)0``___'AG`!```D`0``#?\_``")AG0!``#'AG`!```\`0``QX9T`0````!Z
+M`,>&<`$``*0!``#'AG0!``!]O^__QX9P`0``N`$``(N&=`$``*,`````#[?`
+MQX9P`0``N`$```T``/H`B89T`0``QX:<````_P```,>&D`(``$0!``#'AI0"
+M```&$``(QX:0`@``M`$``,>&E`(``%]P``#'AI`"```P````BX:4`@``HP``
+M```PY(#,,XF&E`(``,9$)!\`@\00@'\K``^&M@(``(GV@'PD#P-V%0^V1"0/
+MQX3&,`(```@```#K$XUV``^V1"0/QX3&4`(```@```"#[`QH$"<``.C\____
+M@\00@'PD#P-V%0^V1"0/BX3&-`(``*,`````ZQ.)]@^V1"0/BX3&5`(``*,`
+M````@'PD#P-V%`^V5"0/#0``@`")A-8T`@``ZQ*0#[94)`\-``"``(F$UE0"
+M``"#[`2-AS@%``!0#[9<)!=35^C\____@\0(4U?H_/___X/$$(!\)`\#=@W'
+MA-XP`@``1`$``.L0#[9$)`_'A,90`@``1`$``(/L#&@0)P``Z/S___^#Q!"`
+M?"0/`W85#[9$)`_'A,8T`@``!A``".L3C78`#[9$)`_'A,94`@``!A``"(!\
+M)`\#=A4/MD0D#\>$QC`"``"T`0``ZQ.-=@`/MD0D#\>$QE`"``"T`0``@^P,
+M:!`G``#H_/___X/$$(!\)`\#=A4/MD0D#\>$QC0"``!?<```ZQ.-=@`/MD0D
+M#\>$QE0"``!?<```@'PD#P-V%0^V1"0/QX3&,`(```@```#K$XUV``^V1"0/
+MQX3&4`(```@```"#[`QH$"<``.C\____N/]4@`"#Q!"`?"0/`W84#[94)`\E
+M_U0``(F$UC0"``#K$I`/ME0D#R7__W_]B8365`(``(/L!&H!#[9<)!=35^C\
+M____QP0D(*$'`.C\____@\00@'PD#P-V$(N$WH`!``"C`````.L3B?8/MD0D
+M#XN$QH`!``"C`````"7___[_@'PD#P-V#P^V5"0/B836@`$``.L-D`^V5"0/
+MB836@`$``+@%`<@`@'PD#P-V$`^V5"0/B836A`$``.L.B?8/ME0D#XF$UH0!
+M``"#[`QHH(8!`.C\____@\0(#[9$)!=05^C\____@\00_D0D#XI$)`\X1RL/
+MATS]__^#[`Q7Z/S___^+A@0!``"C`````(/(`HF&!`$``(N&``$``*,`````
+M@^#]@\@-B88``0``BX8``0``HP````"+A^0)``")A@@!``"+A^@)``")A@P!
+M``"+AP@*``")AA`!``"+APP*``")AA0!``#'AB`!````````#[>'-`L``"7_
+M#P``#0```0")AB`!``"+AU`*``")AB0!``"+AU0*``")AB@!``"+AW`*``#'
+M`/\/``#'AC0!````````#[>'-@L``"7_#P``#0```0")AC0!``"+AW0*``")
+MAC@!``"+AW@*``")ACP!``#'AD@!````````QX9,`0````$``(N&!`$``*,`
+M````@\A9B88$`0``QX94`0``^_\`#,>&7`$``/__``"#Q"Q;7E]=PXUV`%.#
+M[!2+7"0<4^AB^?__L@"#Q!"0#[;"QX2#L`4```````#'1(-$`````$*`^@]V
+MY&;'@S`+``#_#V;'@S(+``#_#\9#.`&X`0```(/$"%O#BU0D!(M,)`BX````
+M`#G(?1R-=@"`/`(`=`Z`/`(@=`BX`````,.)]D`YR'SGN`$```##D%575E.#
+M[#R+;"149H%]$(4`#X>=````#[=%$(M4)%"`O!"8!```_P^$AP```&:#?1!_
+M=R0/MI00F`0``(M<)%"+BU@%``"-!-+!X`(IT(M$P2B*2`3K7Y!F@7T0@0!W
+M+`^W11"+?"10#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"BT21"(I(!.LJ
+M#[=%$(M4)%`/MH00F`0``(N2=`4``(T$0(T$@(M$PE2*2`3K!8UV`+'_LO]F
+M@7T0A0!W#P^W11"+7"10BI08F`0``(#Y_W0<#[;!BWPD4("\.!X%``#_=`N`
+M^O]T!H!]%`9U-(-]4`!T%H/L"(U%4%#_="1<Z/S___^#Q!"-=@"#[`A5_W0D
+M7.C\____@\00Z0L'``"-=@`/ML&+3"10#[:T"!X%``"-!';!X`,I\(VT@2@!
+M```/MM*-!-+!X`(IT(N16`4``(T<PF:!NY````"K#7<'@'T4`G5'D(-]4`!T
+M%H/L"(U%4%#_="1<Z/S___^#Q!"-=@"#[`A5_W0D7.C\____QD,B_\9#(P*#
+MQ`A3_W0D7.C\____@\00Z7X&```/MD4D@_@:#X2.!0``@_@:?R6#^!)T3(/X
+M$G\-A<`/A#<%``#I'`8``(/X%0^$!`8``.D.!@``@_@E#X2/`@``@_@E?PZ#
+M^!L/A`0%``#I\@4``#V>````#X1P`P``Z>(%``"`?10`#X5"`@``BTTT@'TE
+M`'1B@'LB&0^4P(/`"XA#(H7)=$.`>0&`=3V`>0(`=3>`>0,\=S$/MG$#NA0`
+M``"-0TS&`"!`2G7Y@_X3=@6^%````(U33(U!!(/L!%904NC\____@\009L>#
+MD```````Z6T%``#&0R(8]D$&0'4/#[8!@^`?@_@-#X4\`0``#[8!@^`?@_@-
+M=0;&0R$-ZP3&0R$B@^P(#[9#(5!H8P```.C\____@\00@WU0`'03@^P(C450
+M4/]T)%SH_/___X/$$(/L"%7_="1<Z/S____&1"0_`(/$$(!^"@!V-XUN.(/L
+M#%7H_/___XG#@\00BT4$B5T$B2N)0P2)&(![(2)T!H![(0UU#?Y$)"^*7"0O
+M.%X*=\R*1"0O.$8*#X7K!```9L=$)"P``,=$)"@`````QD0D+P"`?@H`=DZ-
+M;CB#[`Q5Z/S___^)PX/$$(M%!(E=!(DKB4,$B1B`>R$B=`:`>R$-=1>+5"0L
+M9CE3&'(-B5PD*&:+6QAFB5PD+/Y$)"^*3"0O.$X*=[6#?"0H``^$>`0``(M<
+M)"B`>R+_#X1J!```QD,B_X/L"%/_="1<Z/S___^#Q!#I400```^V`8/@'X/X
+M`74-QD,A`<9#(O_I``0``/9!!0%T!,9#(AF#?30`#X3L`P``BWTTB7PD,+D`
+M````NB@```"-0V"("$!*=?JY`````+H(````C8.(````B`A`2G7ZC4-@BW0D
+M,(/&"/RY!@```(G'\Z6+5"0PBT(@B8.(````Z98#``!F_X.0````@^P,:!`G
+M``#H_/___\9#(@6#Q!#I=@,``(M--(E,)#2+13B*0`*#X`^`?10`=7\/ME$'
+M#[9!!L'@"`'"#[9!!<'@$`'"#[9!!,'@&`'"B9.L````#[91`P^V00+!X`@!
+MP@^V00'!X!`!P@^V`<'@&`'"B5-`QT-$`````(.[K`````!U(&;_@Y````"#
+M[`QH$"<``.C\____QD,B"X/$$.GJ`@``QD,B#>GA`@``@'T4('4H/`9T!#P"
+M=2!F_X.0````@^P,:!`G``#H_/___\9#(@6#Q!#ILP(``(-]4`!T$X/L"(U%
+M4%#_="1<Z/S___^#Q!"#[`A5_W0D7.C\____@\0,4U;_="1<Z/S___^#Q!#I
+ML`(``(M%.(I``H/@#XM]-(E\)#2`?10`#X4``0``#[97"P^V1PK!X`@!P@^V
+M1PG!X!`!P@^V1PC!X!@!PHF3K`````^V5P</MD<&P>`(`<(/MD<%P>`0`<(/
+MMD<$P>`8`<*)5"0@B=#!^!^)1"0D#[9'`XG"N``````#1"0@$U0D)(E$)!B)
+M5"0<#[9'`HG"N`````#!X@@#1"08$U0D'(E$)!")5"04#[9'`8G"N`````#!
+MXA`#1"00$U0D%(E$)`B)5"0,#[8'B<*X`````,'B&`-$)`@35"0,B4-`B5-$
+M]D<,`70%9H-+-@2#NZP`````=2!F_X.0````@^P,:!`G``#H_/___\9#(AF#
+MQ!#I9@$``,9#(@WI70$``(!]%"!U*#P&=`0\`G4@9O^#D````(/L#&@0)P``
+MZ/S____&0R(9@\00Z2\!``"#?5``=!.#[`B-15!0_W0D7.C\____@\00@^P(
+M5?]T)%SH_/___X/$#%-6_W0D7.C\____@\00Z2P!``#&0R(4Z>H```"`?10@
+M=3&+13B*0`*#X`\\!G0$/`)U(&;_@Y````"#[`QH$"<``.C\____QD,B%(/$
+M$.FS````QD,B&^FJ````@'T4`'56BU4TB50D,&:+0S1F@TLV`0R&9HE#-(!Z
+M`P!U!8`Z%G<=9O^#D````(/L#&@0)P``Z/S____&0R(-@\00ZV:+3"0P]D$&
+M!'0'9H-+-@+K0&:#8S;]ZSF`?10@=2Z+13B*0`*#X`\\!G0$/`)U(F;_@Y``
+M``"#[`QH$"<``.C\____QD,B!8/$$.L:9H-C-/G&0R(.ZP^`?10`=05F@TLV
+M`\9#(@^#?5``=!.#[`B-15!0_W0D7.C\____@\00@^P(5?]T)%SH_/___X/$
+M"%/_="1<Z/S___^#Q!"-=@"#Q#Q;7E]=PU575E.#[`R+?"0@BUPD)&:!>Q"%
+M``^'B0````^W0Q"`O#B8!```_W1[9H-[$']W(`^VE#B8!```BX]8!0``C032
+MP>`"*="+1,$HBD@$ZU>09H%[$($`=R@/MT,0#[:$.)@$``"+CY`%``"-!$"-
+M!,")PL'B!2G"BT21"(I(!.LF#[=#$`^VA#B8!```BY=T!0``C01`C02`BT3"
+M5(I(!.L%C78`L?^R_V:!>Q"%`'<+#[=#$(J4.)@$``"`^?]T&`^VP8"\.!X%
+M``#_=`N`^O]T!H![%`9U+(-[4`!T$H/L"(U#4%!7Z/S___^#Q!")]H/L"%-7
+MZ/S___^#Q!#I2@(``(GV#[;!#[:T.!X%``"-!';!X`,I\(VTAR@!```/MM*-
+M!-+!X`(IT(N76`4``(TLPHM#-(![%``/A*4```"`>R8&#X2;````@'LF#`^$
+MD0```&:+E9````"-0@%FB860````9H/Z"78D@'TB!G0>QD4C`L9%(O^`923^
+M@^P(55?H_/___X/$$.F^`0``@^P,:.@#``#H_/___P^V12"#Q!"H`G0EJ`1T
+M(:@!=!V#[`QJ`&H"#[9%25#_=2Q6Z/S___^#Q"#I@0$``,9%(@.#[`A55^C\
+M____@\00Z6L!``"-=@"`>R8!=0K&12($Z2D!``"0@'LF`G4)QD4B!>D9`0``
+M@'LF`P^%D````(!](@5U*6:!>`3(-W4A@^P(#[=%&%!HH`$``.C\____@\00
+MQD4B!NGC````C78`@^P(4%7H_/___VHHC45@4.A']?__@\08A,!U.&H4C45,
+M4.@U]?__@\0(A,!U)FH(C86(````4.@@]?__@\0(A,!U$8M%1`M%0'0)QD4B
+M%^F,````QD4B&F;_A9````#K?X![)A=U!L9%(A7K<X![)AAU!L9%(A;K9X![
+M)@1U!L9%(@?K6X![)@5U!L9%(@CK3X![)@9U!L9%(@GK0X![)@QU!L9%(@KK
+M-X![)A9U!L9%(A3K*X![)@YU)8-[4`!T$(/L"(U#4%!7Z/S___^#Q!"#[`A3
+M5^C\____@\00ZS"#>U``=!*#[`B-0U!05^C\____@\00B?:#[`A35^C\____
+M@\0(55?H_/___X/$$)"#Q`Q;7E]=PU575E.#[`R+?"0@BW0D)&:!?A"%``^'
+MB0````^W1A"`O#B8!```_W1[9H-^$']W(`^VE#B8!```BX]8!0``C032P>`"
+M*="+1,$HBD@$ZU>09H%^$($`=R@/MT80#[:$.)@$``"+CY`%``"-!$"-!,")
+MPL'B!2G"BT21"(I(!.LF#[=&$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I(
+M!.L%C78`L?^Z_P```&:!?A"%`'<-#[=&$&8/MI0XF`0``(#Y_W0'9H'Z_P!U
+M+(-^4`!T$H/L"(U&4%!7Z/S___^#Q!")]H/L"%97Z/S___^#Q!#IP@```(GV
+M#[;)#[:<.1X%``"-!%O!X`,IV(V<AR@!```/M]*-!-+!X`(IT(N76`4``(TL
+MPH!^%`!T.(/L"%%HP`$``.C\____@\0(BU4$BT4`B5`$B0+^2PI55^C\____
+MQD,%_X/$"%-7Z/S___^#Q!"0@'XF`74J@^P,:!`G``#H_/___X/$"%97Z/S_
+M__]J`6H`55/H_/___X/$(.LGC78`@^P,:%##``#H_/___X/$"%97Z/S___^#
+MQ`A54^C\____@\00@\0,6UY?7<-64X/L$(MT)""*1"0DB$0D#XI$)"B(1"0.
+MBT0D'(L84^C\____B<*#Q!"%P'4.QH:Q`````<9&(@/K:I#&0"3AQD`E`8!\
+M)`,!&<#WT(/``HA")K`/@'PD`@!U#+``@WXP`'0$BD9)D(A")V:+1AAFB4(0
+MB5H8QT(@`````,="-`````"X`````(!\)`(`=06XR!L!`(E";(/L"%)3Z/S_
+M__^#Q!"#Q`1;7L.055=64X/L&(ML)#"+1"0LBSA7Z/S___^)PX/$$(7`=0S&
+MA;$````!Z:$```"#[`Q7Z/S___^)QH/$$(7`=1;&A;$````!@^P(4U?H_/__
+M_X/$$.MYC5,\B50D",9#).'&0R4!QD,F`V:+11AFB4,0BU0D((L"B4,8QT,@
+M``(``(M&"(E#-+D`````N@`"``"0B`A`2G7ZB7-0QT-LR!L!`(/L"&H`_W0D
+M%.C\_____W,@_W80_W8,_W0D).C\____@\084U?H_/___X/$$(/$#%M>7UW#
+MC78`5U93BUPD$(M,)!2+?"08O@`````Y_G,5BA.*0P&(`8A1`8/!`H/#`D8Y
+M_G+K6UY?PXUV`%575E.#[`R+7"0@BVPD)(EL)`AF@WT``'D2#[=%`"4`'P``
+MP?@(B$,AC78`C7M,C744_+D%````\Z6+12Z)@X@```"+13*)@XP```"->V"-
+M=3:Q"O.E:@J-0TQ04.AJ____:@2-@X@```!04.A;____:A2-0V!04.A/____
+M9L=#-```9L=#-@``@\0DBT0D"&:#N+(!```!#Y3"P>(#BD,D@^#W"="(0R3V
+MA:<````$=`9FQT,T`0#VA:0````!="-F@TLT`O:%J@````%T!6:#2S8!]H6H
+M`````70'9H%+-``!D/:%I````"!T$V:#2S0$]H6J````('0%9H-+-@+VA:0`
+M``!`=!=F@4LT@`#VA:H```!`=`AF@TLV"(UV`,9#2@+VA9D````!="?V0S0!
+M=`IF@TLT"&:#2S80BH66````@^`?0(A#2CP@=0;&0TH?B?;VA9@````(=`9F
+M@4LT``+VA9@````$=`5F@TLT(/:%F`````)T!6:#2S00]H6H````('00]H6N
+M````('0'9H-+-$")]O9#-`%T%HN%R````(N5S````(E#0(E31.L/B?:+17B)
+M0T#'0T0`````@T-`_X-31/_V16H"=!WVA8`````/=!1F@[V``````AG`@\`$
+MB$,XZP:)]L9#.`+&0SG_]D5^!'0&QD,Y`NL8]D5^`G0&QD,Y`>L,]D5^`70&
+MQD,Y`(GVQD,Z__9%:@1T&+$`#[>%L````-/XJ`%T`XA+.D&`^09VZH/L"&@`
+M`@``5>C\____B8.4````N`$```"#Q!Q;7E]=PY!75E.+?"00BUPD%(LW@^P,
+M5NC\____B<**2SJ#Q!"%P'4*QH.Q`````>M"D,9`).'&0"4!QD`F!(A()V:+
+M0QAFB4(0BP>)0AC'0B``````QT(T`````,=";,@;`0"(2SV#[`A25NC\____
+M@\006UY?PXUV`%=64XM\)!"+7"04BS>#[`Q6Z/S___^)PHI+.(/$$(7`=0K&
+M@[$````!ZT*0QD`DX<9`)0'&0"8%B$@G9HM#&&:)0A"+!XE"&,="(`````#'
+M0C0`````QT)LR!L!`(A+.X/L"%)6Z/S___^#Q!!;7E_#C78`5U93BW0D$(M\
+M)!2+'H/L#%/H_/___XG"@\00A<!U"<:'L0````'K.\9`).'&0"4!QD`F!F:+
+M1QAFB4(0BP:)0AC'0B``````QT(T`````,=";,@;`0"#[`A24^C\____@\00
+M6UY?PY!75E.+="00BWPD%(L>@^P,4^C\____B<*#Q!"%P'4)QH>Q`````>L[
+MQD`DX<9`)0'&0"8,9HM'&&:)0A"+!HE"&,="(`````#'0C0`````QT)LR!L!
+M`(/L"%)3Z/S___^#Q!!;7E_#D%=64XMT)!"+?"04BQZ#[`Q3Z/S___^)PH/$
+M$(7`=0G&A[$````!ZT/&0"3AQD`E`<9`)A;&0"@!9HM'&&:)0A#&0F@/BP:)
+M0AC'0B``````QT(T`````,=";,@;`0"#[`A24^C\____@\006UY?PY!75E.+
+M="00BWPD%(L>@^P,4^C\____B<*#Q!"%P'4)QH>Q`````>L[QD`DX<9`)0'&
+M0"879HM'&&:)0A"+!HE"&,="(`````#'0C0`````QT)LR!L!`(/L"%)3Z/S_
+M__^#Q!!;7E_#D%=64XMT)!"+?"04BQZ#[`Q3Z/S___^)PH/$$(7`=0G&A[$`
+M```!ZSO&0"3AQD`E`<9`)AAFBT<89HE"$(L&B4(8QT(@`````,="-`````#'
+M0FS(&P$`@^P(4E/H_/___X/$$%M>7\.05U93@^P<BWPD+(I<)#"*1"0TB$0D
+M&XI$)#B(1"0:BT=4BS!6Z/S___^)PL9`).'&0"4!QD`F$8/$$+`/A-MU`XI'
+M*XA")XI$)`^(0BAFBT<D9HE"$(ER&,="(`````#'0C0`````N`````"`?"0.
+M`'4%N`````")0FR#[`A25NC\____@\0@6UY?PY!75E.#[!R+?"0LBEPD,(I$
+M)#2(1"0;BDPD/(A,)!J+1U2+,%;H_/___XG"QD`DX<9`)0'&0"82@\00L`^$
+MVW4#BD<KB$(GBD0D#XA"*(M,)"P/ML6(0BF)R,'H$(A"*HG(P>@8B$(KB$HL
+M9HM')&:)0A")<AC'0B``````QT(T`````+@`````@'PD#@!U!;@`````B4)L
+M@^P(4E;H_/___X/$(%M>7\-55U93@^P<BVPD,(M\)#3'1"08`````&:!?Q"%
+M``^'B0````^W1Q"`O"B8!```_W1[9H-_$']W(`^VE"B8!```BXU8!0``C032
+MP>`"*="+1,$HBE`$ZU>09H%_$($`=R@/MT<0#[:$*)@$``"+C9`%``"-!$"-
+M!,")PL'B!2G"BT21"(I0!.LF#[='$`^VA"B8!```BY5T!0``C01`C02`BT3"
+M5(I0!.L%C78`LO^Q_V:!?Q"%`'<+#[='$(J,*)@$```/ML(/MIPH'@4``(T$
+M6\'@`RG8C9R%*`$```^VP8T$0(T$@(N5=`4``(TTPH!_*`)U>P^V1RPE\```
+M`(/X('0%@_@0=6@/ME<LB="#X`^#^`%U(H/L#&H!B=`E\````%!J`FH`5NC\
+M____@\0@Z3X&``"-=@`/MD8KBT2&/(E$)!@/MD<L)?````"#^"`/E,"#P`B+
+M5"08B(*R````BT(P9H%@,O_^Z04&``")]H!_%`!T0HI?%(-_4`!T$8/L"(U'
+M4%!5Z/S___^#Q!"0@^P(5U7H_/___X/$$(#[`@^%S04``(/L"%95Z/S___^#
+MQ!#INP4```^V1B:#^!D/AW\%``#_)(6,!@``#[9&-,'@"`.%!`H``(N`3`@`
+M`*,`````@_@%=P6(1A_K!,9&'P6`>PL`=`W&1B8`QD,+`.D_!0``QD8F`NDV
+M!0``#[9&-,'@"`.%!`H``(N`3`@``*,`````9@^VP&:)1B`/MD8TP>`(`X4$
+M"@``BX!$"```HP````")PL'H"&:)1B(/ML+!X`AF"48@9H%^(D!!=0G&1B89
+MZ=H$``#&1B8#Z=$$```/MD8TP>`(`X4$"@``BX!$"```HP````"(1AT/MD8T
+MP>`(`X4$"@``BX!,"```HP````"H"'0&QD8>#.L<J`1T!L9&'@OK$M'H@^`!
+M@_@!&<#WT(/@"HA&'L9&)@3I;P0```^V1C3!X`@#A00*``"+@$P(``"C````
+M`(/("(A&+,9&)@7I2`0``,9&)@;I/P0```^V1C3!X`@#A00*``"+@$P(``"C
+M`````(!^*P$9P(/@`H/`%(A&)ND3!```BD8K0(A&*SI&'W,)QD8F%NG^`P``
+MQD8K`,9&)A>#[`QH(*$'`.C\____@\00Z>$#``#&1B84Z=@#``#&1B8(Z<\#
+M``#&1B84Z<8#``#&1BX"Z/S___^)1G#&1B85Z;$#```/MD8TP>`(`X4$"@``
+MBX!,"```HP`````/ML")1"04#[9&-,'@"`.%!`H``(N`1`@``*,`````#[;`
+MP>`("40D%.C\____B49TBT0D%(/@#X/X`W4/@'XN`'0)QD8F"NE-`P``BT9T
+M*T9P+4`-`P!X!H!^+@!T%L9&)A6`?BX`#X0L`P``_DXNZ20#```/MD8K@WR&
+M/``/A.\```#&1"03`(!["@!V1HU+.(E,)`R#[`S_="08Z/S___^)1"0H#[9&
+M*X/$$(M4)!@Y5(8\=!Z+3"0,BT$$B5$$B0J)0@2)$/Y$)!.*1"03.$,*=\'^
+M2PJ+5"08@WH<`'1UBT(<QT!@`````/9")`1U*?Z%5PP``(/L#%7H_/___X/$
+M#&H!BTPD((M!'`^V0`%05>C\____@\00@^P$BT0D'/]P'/^U)`4``&H!Z/S_
+M__^#Q`R+5"0<_W(<_[4D!0``:@;H_/___XM,)"C'01P`````@\00#[9&*\=$
+MACP`````@^P(_W0D(%7H_/___X/$$,9&)@GI'0(```^V1C3!X`@#A00*``"+
+M@$P(``"C``````^VT`^V1C3!X`@#A00*``"+@$0(``"C`````,'@"`G"B58X
+M@'XF"G0(]\(```$`=`[&1B8+Z<L!``#^2PKK<L9&)@P/MD8K@WR&/`!T4\9$
+M)`L`@'L*`'98C4,XB40D!(/L#/]T)!#H_/___XE$)"@/MD8K@\00BU0D&#E4
+MACQTN8M,)`2+002)402)"HE"!(D0_D0D"XI$)`LX0PIWP>L0@^P,5>C\____
+MB40D*(/$$(-\)!@`#X1X`0``#[9&*XM4)!B)5(8\BD8OB(*R````Z2\!``#'
+M!"0_0@\`BT,8]D`J"'4J@^P,5>C\____QP0D`0```.C\____@\00_PPD@SPD
+M_W0)BT,8]D`J"'36QD8F">GL````#[9&-,'@"`.%!`H``(N`3`@``*,`````
+M#[;`B40D%`^V1C3!X`@#A00*``"+@$0(``"C``````^VP,'@"`E$)!2+1"04
+M)?\/```]$P$``'0'/2,!``!U,,9&)AB+1"04)?\/```]$P$``'4&QD8O".MZ
+MBT0D%"7_#P``/2,!``!U:L9&+PGK9`^V5BH/MD8?2#G"?0S^1BK^1BO&1B8'
+MZTO&1B8`9HM&,H/@]X/(`F:)1C*#?U``=!"#[`B-1U!05>C\____@\00@^P(
+M5U7H_/___\9#!?^#Q`A35>C\____@\00ZS7&1B8#B?:#?U``=!*#[`B-1U!0
+M5>C\____@\00B?:#[`A75>C\____@\0(5E7H_/___X/$$(/$'%M>7UW#D%57
+M5E.#[!R+?"0PBVPD-,=$)!@`````QD0D$P!F@7T0A0`/AX@````/MT40@+PX
+MF`0``/]T>F:#?1!_=Q\/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*(I(!.M6
+M9H%]$($`=R@/MT40#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"BT21"(I(
+M!.LF#[=%$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I(!.L%C78`L?^S_V:!
+M?1"%`'<+#[=%$(J<.)@$```/ML.-!$"-!("+EW0%``"-!,*)1"04#[;1#[:T
+M.AX%``"-!';!X`,I\(VTAR@!``"`^?]T&("\.AX%``#_=`Z`^_]T"8!]%`9U
+M+XUV`(-]4`!T$H/L"(U%4%!7Z/S___^#Q!")]H/L"%57Z/S___^#Q!#I%@8`
+M`(GV@'T4`'02@^P(5E?H_/___X/$$.G\!0``BU0D%`^V0B:#Z`V#^`0/A[0%
+M``#_)(7T!@``BTPD%`^V033!X`@#AP0*``"+@$P(``"C``````^VT`^V033!
+MX`@#AP0*``"+@$0(``"C`````,'@"`G"QD0D$@#&1"01`+,`@'D?`'8UC78`
+M#[;+N`$```#3X(7"=!K^1"03BT0D%(-\B#P`=`;^1"01ZP7^1"02D$.+3"04
+M.%D?=\Z`?"02`'0(BT0D%(!(+0&`?"01`'0(BTPD%(!)+0*`?"03`0^%80$`
+M`+,`BT0D%(!X'P!V4@^VR[@!````T^"%PG0C@^P$45=6Z/S___^)1"0H@\00
+MA<!T&8EP*(M4)!2)4##K#9!#BTPD%#A9'W?%ZQ6+1"04B%@K.%@?=@G&0"8.
+MZ:,$``"+5"04.%H?#X66!```@^P$:@$/MD8)4%?H_/___\9$)!L`@\00@'X*
+M``^&EP```(U>.(/L#%/H_/___XE$)"B#Q!"+0P2+3"08B4L$B1F)002)"(-Y
+M'`!T'H/L!/]Q'/^W)`4``&H%Z/S___^+1"0H@$@D`H/$$(/L!/]T)!QJ!E;H
+M_/___X/$$(M4)!B`>DL`="*#[`Q7Z/S____'!"0!````Z/S___^#Q!"+3"08
+M@'E+`'7>_D0D"XI$)`LX1@H/AVS___^#?5``=!"#[`B-15!05^C\____@\00
+M@^P(55?H_/___XM4)"3&0BT`QD8%`(DT).C\____@\00Z=4#``"0BTPD%&:!
+M23*``+,`@'D?`'93#[;+N`$```#3X(7"="2#[`115U;H_/___XE$)"B#Q!"%
+MP'0:B7`HBU0D%(E0,.L.B?9#BTPD%#A9'W?$ZQ6+1"04B%@K.%@?=@G&0"8/
+MZ3L#``"+5"04.%H?#X4N`P``@^P$:@$/MD8)4%?H_/___\9$)!H`@\00@'X*
+M``^&EP```(U>.(/L#%/H_/___XE$)"B#Q!"+0P2+3"08B4L$B1F)002)"(-Y
+M'`!T'H/L!/]Q'/^W)`4``&H%Z/S___^+1"0H@$@D`H/$$(/L!/]T)!QJ!E;H
+M_/___X/$$(M4)!B`>DL`="*#[`Q7Z/S____'!"0!````Z/S___^#Q!"+3"08
+M@'E+`'7>_D0D"HI$)`HX1@H/AVS___^#?5``=!"#[`B-15!05^C\____@\00
+M@^P(55?H_/___XM4)"3&0BT`QD8%`(DT).C\____@\00Z6T"``"0BTPD%`^V
+M033!X`@#AP0*``"+@$P(``"C``````^VT`^V033!X`@#AP0*``"+@$0(``"C
+M`````,'@"`G"]\(```0`=`;V02T!=1+WPO__^_]T%XM$)!3V0"T"=`V+5"04
+MQD(F#^G/`0``BTPD%,9!+0#I]@$``+L_0@\`BT88]D`J"'4G@^P,5^C\____
+MQP0D`0```.C\____@\002X/[_W0)BT88]D`J"'39BT0D%,9`)A#I@`$``(M4
+M)!0/MD(TP>`(`X<$"@``BX!,"```HP`````/ML")1"0,#[9"-,'@"`.'!`H`
+M`(N`1`@``*,`````#[;`P>`("40D#(M$)`R#X`^#^`,/A=<```#V0BT!=`O&
+M0B82ZPW^3@KK<XM,)!3&0282BU0D%`^V0BN#?((\`'1,QD0D"0"`?@H`=E&-
+M7CB#[`Q3Z/S___^)1"0HBTPD)`^V02N#Q!"+5"08.52!/'2TBT,$B5,$B1J)
+M0@2)$/Y$)`F*3"0).$X*=\3K$(/L#%?H_/___XE$)"B#Q!"#?"08``^$T```
+M`(M4)!0/MD(KBTPD&(E,@CR+1"0,)?\/```]$P$``'4)QH&R````".MSBT0D
+M#"7_#P``/2,!``!U8XM$)!C&@+(````)ZU:)]HM4)!3&0B83ZTJ+3"04#[9!
+M-,'@"`.'!`H``(N`3`@``*,`````#[9!-,'@"`.'!`H``(N`1`@``*,`````
+M#[9!+8/@`8/X`1G`]]"#P!.(02:)]H-]4`!T$H/L"(U%4%!7Z/S___^#Q!")
+M]H/L"%57Z/S___^#Q`C_="0<5^C\____@\00B?:#Q!Q;7E]=PXM$)`2+2`2!
+MZ0`"`0`/ME0D#(/B!\'B"(#.(`^V1"0(P>`(`<B)D!S%``!FBX`<Q0``9J,`
+M````#[;`PXM$)`2+2`2!Z0`"`0`/ME0D#(/B!\'B"(I4)!"`SA`/MD0D",'@
+M"`'(B9`<Q0``PU575E.#[`S&1"0+`,9$)`H`O?_____&1"0#`+[`X>0`#[9,
+M)`-!NP$```#3X[$`D`^VP4")P@^OTXGPB=>Z`````/?WB40D!+K_____BWPD
+M(#GX=P2)^BG".>IS#HG5BD0D`XA$)`N(3"0*08#Y#W:__D0D`X!\)`,'=J0/
+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
+MMD(#@_@[="*#^#QU4L9$)!4!@^P,_W0D0%57_W0D)%/H_/___X/$(.LUBT0D
+M&(/`"X/L!%50_[/D````Z/S___^#Q`3_="1`55?_="0D4^C\____QD0D-0&#
+MQ""-=@#^1"06BDPD%HM$)!`X2#`/AU____^X`0```(!\)!4`=1N+5"0TQT(L
+M_____X/L#%+_4BBX`````(/$$)"#Q!Q;7E]=PU575E.#[!R+1"0TBW@81XM0
+M$$J)5"08QT0D%`````"+2!R)3"00@'\!`74,QT`L`````.E"`@``@'\!`G5:
+M@'\"`75$BT0D,(.X*`4```!T"HN0*`4``(E4)#"+3"0PBX$D!0``BE<#B)!6
+M#```BE<#B)"V&```BT0D-,=`+`````#I\P$``)"+5"0TQT(L_O___^GB`0``
+M@'\!!'4BBD<#@^@[/`%W&(/L"/]T)#S_="0\Z/C\__^#Q!#IW@$``(!_`0-U
+M>H!_`@%U8@^V5P.+3"0P#[9!)HT,`(G0F??Y.=%^.H/L!`^V1P10#[;:4_]T
+M)#SH_/___X/$#`^V1P104_]T)#SH_/___XM4)$3'0BP`````@\00Z5P!``"+
+M3"0TQT$L_O___^E,`0``BT0D-,=`+/[____I/`$``(GVBU0D,(.Z*`4```!T
+M"HN**`4``(E,)#")^X!_`0`/A*@```"0#[8S0XH#0XC!#[;0]L(!=#^+;"04
+M`?6+1"0T.V@4#X?4````@^P,5HM$)"`#1"0D4%)J`/]T)$SHH_C__X/$(#GP
+M#X6P````B6PD%.M/B?:-+#.)Z"GX@\`".T0D&`^/E````(/L#%93#[;!4&H`
+M_W0D3.BP^O__@\0@A<!U>8GK@'T``'4&@'T!`'0:@^P,:!`G``#H_/___X/$
+M$(![`0`/A5G___\/MC.%]G16:E1J`FH`_W0D/.B']?__@\00BU0D-(M"%"M$
+M)!0YQG8"B<:#[`Q6BT0D(`-$)"10:@!J`/]T)$SH]??__X/$((7`>`8!1"04
+MZPR+3"0TQT$L_____Y!J5&H":@#_="0\Z#'U__^#Q!"+1"0T@W@@`'0)BT`@
+MBTPD%(D(@^P,_W0D0(M$)$3_4"B#Q!"#Q!Q;7E]=PXGV@^P,BT0D$(.X*`4`
+M``!T!HN`*`4``("X5@P```!U&<8%(P````%J(&@@````:@Y0Z/S___^#Q!"#
+MQ`S#@^P,BT0D$(.X*`4```!T!HN`*`4``,8%(P````!J(&@@````:@Y0Z/S_
+M__^#Q!S#@^P0#[9$)!Q0#[9$)!Q0BT0D'/^P)`4``.C\____@\0<PXGV@^P,
+MBT0D$(I4)!2#N"@%````=`:+@"@%``"(%2````!J(&@@````:@Y0Z/S___^#
+MQ!S#D(/L#(M4)!"*3"04@'PD&`!T$K@!````T^!F"8)4#```ZQ")]KC^____
+MT\!F(8)4#```@^P(#[:"5`P``%!2Z/S___^#Q!S#D%=64XMT)!"#OB@%````
+M=`:+MB@%``"_`````&H`:@>)^`^VV%-6Z,GS__]J1&H"4U;HOO/__X/$(&C0
+M````:@!35NBM\___:@!J!%-6Z*+S__^#Q"!'@_\!=L!HH(8!`.B_\___B(;%
+M"@``#[;`4&H#:@!6Z'OS__^#Q!1;7E_#BT0D!(M0!('J``(!`(M$)`B+!`*C
+M`````,.)]HM$)`2+2`2!Z0`"`0"+5"0,BT0D"(D4`<.-=@!3BUPD"(M3!('J
+M``(!`,>"@``!``````"+@@0!`0"C`````(#,`8F"!`$!`&H$:`S"``!3Z/S_
+M__]HN`L``&@(P@``4^C\____:`$`#`!H`,(``%/H_/___X/$)&H$:`S#``!3
+MZ/S___]HN`L``&@(PP``4^C\____:`$`#`!H`,,``%/H_/___X/$)&H`:%#"
+M``!3Z/S___]J`&A0PP``4^C\____@\086\.05E.#[`2+5"00.9(D!0``#Y5$
+M)`.*1"04@^`##[;`C1Q`N`<```"(V=/@]]")QB-R/(ER/(!\)!@`=`RX!```
+M`-/@"?")0CS_<CP/MD0D!\'@"`50P@``4/^R)`4``.C\____@\006U[#C78`
+M55=64X/L#(M\)""+="0DC9\@"P``BX^0!0``C:GL!@T`9H%^$(4`=QP/MT80
+M#[:$.)@$``"-!$"-!,")PL'B!2G"C2R1BU8T@'H!`G4:BT($B0.+0@B)0P2+
+M0@R)0PB+0A")0PR-=@"#?E``=!*#[`C_=E!7Z/S___^#Q!"-=@"#[`A65^C\
+M____QD4T`(/$'%M>7UW#B?955U93@^P8BWPD+(ML)#"+1"0TB40D%(M,)#B)
+M3"00BT<(BS!6Z/S___^)PX/$$(7`='^#[`Q6Z/S___^)P8/$$(7`=&W&1S0!
+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
+M#%M>7UW#D%.#[`B+7"00:O]J`&H`BX-<#```#[8`4(U$)!104^B-_O___W0D
+M'%/HS_[__X/$&&@0)P``4^@A_O__@\00NO____^%P'49:."3!`!J`FH#4^@Z
+M____@\00@_@!&=+WTHG0@\0(6\.04X/L"(M<)!#_="04:@%J`8N#7`P```^V
+M0`M0C40D%%!3Z"+^____="0<4^AD_O__@\08:!`G``!3Z+;]__^#Q!"Z____
+M_X7`=1J+0P2+D`S&__^)%0````"+1"08B!"Z`````(G0@\0(6\.05E.#[!B+
+M7"0DBW0D*,9$)!?_C40D%U!64^C\____@\00NO____^%P'5ZN@````"`?"03
+M`'1N@^P,4^CM_O__@\00NO____^#^/]T6%9J`&H`BX-<#```#[9`"E"-1"0<
+M4%/H=?W___]T)"13Z+?]__^#Q!AH$"<``%/H"?W__X/$$+K_____A<!U&6C@
+MDP0`:@!J`U/H(O[__X/$$(/X`1G2]]*)T(/$%%M>PU.#[!2+7"0<4^AR_O__
+M@\00NO____^#^/]T6_]T)!1J`&H`BX-<#```#[9`!E"-1"044%/H]_S___]T
+M)!Q3Z#G]__^#Q!AH$"<``%/HB_S__X/$$+K_____A<!U&6C@DP0`:@!J`U/H
+MI/W__X/$$(/X`1G2]]*)T(/$"%O#C78`5E.#[!"+="0<BUX$@>L``@$`5NCH
+M_?__BT0D*(F#",@``/]T)"1J!&H`BX9<#```#[9`!5"-1"0@4%;H</S__X/$
+M*/\T)%;HL/S__V@0)P``5N@%_/__@\00NO____^%P'49:(@3``!J`&H!5N@>
+M_?__@\00@_@!&=+WTHG0@\0$6U[#55=64X/L#(ML)"2+?"0HBW0D++L`````
+M.?-S(X/L!/\T'XU$'0!0_W0D+.A,____@\00@_C_=`R#PP0Y\W+=N`````"#
+MQ`Q;7E]=PU93@^P$BUPD$(I$)!R+<P2![@`"`0`\!'8"L`3_="04#[;`4&H!
+MBX-<#```#[9`!%"-1"004%/HI/O___]T)!A3Z.;[__^#Q!AH$"<``%/H./O_
+M_X/$$+K_____A<!U&XN&#,@``*,`````B00DB<*+1"08B1"Z`````(G0@\0$
+M6U[#D%575E.#[`R+;"0DBW0D*(M$)"P!Z(E$)`2)ZX/C_(GO@^<#=$=J!(U$
+M)`Q04_]T)"SH1O___XU#!(/$$+D$````.T0D!'8(BTPD!"GI`?F)^CG/<Q*-
+M?"0(C78`B@07B`9&0CG*<O6#PP2)]HM\)`2#Y_PY^W,EC6PD")!J!%53_W0D
+M+.CS_O__BT0D&(D&@\8$@\00@\,$.?MRX#M<)`1S-FH$C40D#%!3_W0D+.C)
+M_O__BTPD%"G9N@````"#Q!`YRG,3C5PD"(UV`(H$$X@&1D(YRG+UD+@`````
+M@\0,6UY?7<.-=@!64X/L!(M<)!#'!"0`````BW,$@>X``@$`QH-8#````&H`
+M:@)J`0^V!0@```!0C40D$%!3Z#OZ____="084^A]^O__@\08:!`G``!3Z,_Y
+M__^#Q!"%P'4\BX8,R```HP````")!"0]OT,``'4GQX-(#```OT,``,>#3`P`
+M````(`#'@U`,````$```9K@``.L(C78`N/____^#Q`1;7L.05E.#[`2+7"00
+MQP0D`````(MS!('N``(!`,:#6`P```!J`&H":@$/M@4(````4(U$)!!04^B;
+M^?___W0D&%/HW?G__X/$&&@0)P``4^@O^?__@\00A<!U/(N&#,@``*,`````
+MB00D/1]C``!U)\>#2`P``!]C``#'@TP,``````0`QX-0#``````!`&:X``#K
+M"(UV`+C_____@\0$6U[#D%93@^P$BUPD$,<$)`````"+<P2![@`"`0#&@U@,
+M```!:O]J`FH!#[8%"````%"-1"004%/H^_C___]T)!A3Z#WY__^#Q!AH$"<`
+M`%/HC_C__X/$$(7`=6B+A@S(``"C`````(D$)#T?0P``="L]'T0``'5,QX-(
+M#```'T0``,>#3`P`````!`#'@U`,``````$`9K@``.LMQX-(#```'T,``,>#
+M3`P`````!`#'@U`,``````$`N`````#K"(UV`+C_____@\0$6U[#D%93@^P$
+MBUPD$,<$)`````"+<P2![@`"`0#&@U@,````:@!J`FH!#[8%"````%"-1"00
+M4%/H+_C___]T)!A3Z''X__^#Q!AH$"<``%/HP_?__X/$$(7`=7"+A@S(``"C
+M`````(D$)#WO$0``=`L][Q(``'0LZU*)]L>#2`P``.\1``#'@TP,``````0`
+MQX-0#``````!`+@`````ZS"-=@#'@T@,``#O$@``QX-,#``````$`,>#4`P`
+M`````0"X`````.L(C78`N/____^#Q`1;7L.04X/L%(M<)!Q3Z++]__^#Q!"%
+MP'43QX-<#````````+H`````ZVJ)]H/L#%/H+_[__X/$$(7`=1''@UP,````
+M````N@````#K1X/L#%/HSOS__X/$$(7`=1''@UP,````````N@````#K)H/L
+M#%/HN?[__X/$$+K_____A<!U$<>#7`P```````"Z`````(GVB="#Q`A;PY!7
+M5E.+7"00BWPD'(I$)""+="08N@````"#NUP,````#X33````A,!T.X-\)!3_
+M=1!FBX-(#```9HD&Z;$```"05U;_="0<4^A4^___@\00N@````"%P`^%G```
+M`.F/````C78`@WPD%/]U$8`^#P^4@UD,``"Z`0```.M\N@````"`NUD,````
+M=&Z+1"04N@````#WLU`,``"%TG4[@+M8#````'09@^P(_W0D'%/H_/___X/$
+M$+H`````A<!U.8/L"/]T)!Q3Z`#Y__^#Q!"Z`````(7`=2!75O]T)!Q3Z.SY
+M__^#Q!"Z`````(7`=0BZ`0```(UV`(G06UY?PY"0BT0D!,>`,`4```$```##
+MD+@`````PXGVBU0D!(M,)`BX`````#L5H`4``'TRC112P>(#9HN"X`0``&:)
+M`6:+@N($``!FB4$"BH+H!```B$$(BH+I!```B$$)N`$```##55=64X/L",=$
+M)`0`````D(M$)`3!X`6)PV:#N```````#X2'````O0````"`N!P`````=&J)
+M!"2+5"0$C435`(TTA0P```"-?"0<N00```#\\Z8/E\(/DL`XPG4SOQ````"*
+M1#L-0(A$.PV`?#L,`'0>.D0[#'889@^VP&8/MDP[#+H`````9O?QB%0[#8GV
+M18L<)`^V@QP````YZ'^9_T0D!(-\)`0##XYB____@\0(6UY?7<.)]E575E.#
+M[`S&1"0+`,9$)`H`C78`QD0D"0!J``^V1"0-4`^V1"024`^V1"074.C\____
+MB40D%+\`````@\00.SV@!0``#XU/`0``B?:-!'_!X`,/MY#B!```P>(0#[>`
+MX`0```G".U0D!`^%'0$``,9$)`@`C01_P>`#B00DC2Q_#[94)`B)T<'A!6:#
+MN0``````=7"+'"2+@^`$``")@0````"+@^0$``")@00```"+@^@$``")@0@`
+M```/MH$<````P>(#C00"BEPD"X@<A0T````/MH$<````C00"BEPD"H@<A0X`
+M```/MH$<`````<**1"0)B`25#P```/Z!'````.M[#[9T)`B)\\'C!0^VBQP`
+M``")R+H`````]S3M]`0``(72=$F-%/4`````C00*BDPD"X@,A0T````/MH,<
+M````C00"BDPD"H@,A0X````/MH,<`````<**1"0)B`25#P```/Z#'````.L2
+MC78`_D0D"(!\)`@##X8!____C01__P3%[`0``(UV`$<[/:`%```/C+/^___^
+M1"0)#X1V_O___D0D"H!\)`H?#X9B_O___D0D"X!\)`O_#X5+_O__@\0,6UY?
+M7<.-=@!55U93@^P<QT0D%`````"#/>0`````=0_'!>0````!````Z`W^__^#
+M?"0T`'0'BT0D-,8``,=$)!@`````N@`````[%:`%``!]/XGVBTPD&(T$28T4
+MQ0````"+@NP$```!1"04@WPD-`!T#HM,)#2*`0*"\`0``(@!_T0D&(M$)!@[
+M!:`%``!\PX-\)#@`#X2G````QT0D&`````"+1"08P>`%B<5F@[@```````^$
+MB````+L`````@+@<`````'1KBU0D&,'B`XE4)!")1"0,BT0D$`'8C32%#```
+M`(M\)#BY!````/SSI@^7P@^2P#C"=2F#?"0T`'0,BH4=````BU0D-(@"BT0D
+M&,'@!0^V@!P```")1"04ZQ*)]D.+;"0,#[:%'````#G8?Z3_1"08@WPD&`,/
+MCF'___\/MD0D%(/$'%M>7UW#N,`8``##B?:XG````,.)]K@$````PXGV55=6
+M4X/L#(M\)""+="0HBVPD+(V>8`P``+D`````NL`8``")\(UV`(@(0$IU^HEN
+M$(L5X````(U"`:/@````B%8HBT0D)(E&(,9&*0!FBP=FB4889HM'`F:)1AJ+
+M1P2)1AR):Q"(4RB+1"0DB4,@QD,I`6:+!V:)0QAFBT<"9HE#&HM'!(E#'`^W
+M1AH](B<``']A/2`G```/C<(````]0"$```^$MP```#U`(0``?QL]("$```^$
+MI0```#TB(0``#X2:````Z:D````]1"$```^$B@```#U$(0``#XR3````+1`G
+M``"#^`$/AX4```#K;XUV`#U@)P``=&4]8"<``'\@/4`G``!T5SU`)P``?PD]
+M,"<``'1)ZUL]1"<``'1`ZU(]@B<``'0W/8(G``!_"3V`)P``="GK.SV`D0``
+M=`D]@)0``'09ZRMFQT8D@)'&1B8$9L=#)("1QD,F!.L5D&;'1B2`E,9&)@1F
+MQT,D@)3&0R8$BD<(B$8JBD<(B$,J:```!`!J`&H"5>C\____B09H`"```&H`
+M:@!5Z/S___^)1@B#Q""#/@!T!(7`=0JX`````.GA````BP:-B``"`0")3@2-
+MD````@")%@4`0`(`B0.)2P2+1@B)0PB[`````#L=H`4``'U.BRV@!0``C01;
+MC0S%`````(L'.8'@!```=2^+@?`$``!`B8'P!```@[GL!````'09.X'L!```
+M=A&Z`````/>Q[`0``(F1\`0``$,YZWRXBT8$QX`@@O__`?`#`(M&!,>`*(+_
+M_P$``.B#[`AJ>/]V$.C\____B<(E`'```(/$$#T`(```=A2#[`1J>`^VPE#_
+M=A#H_/___X/$$/]T)"3HD/G__U;H*OG__[@!````@\0(@\0,6UY?7<.)]E.#
+M[!2+7"0<4^C\____@<-@#```B1PDZ/S___^X`0```(/$&%O#B?964X/L$(MT
+M)!R+GB0%``"!PV`,``!6Z/S___^#Q!"`?CD!=0:`>SD!=#N#[`B-GA`!``!3
+M_W84Z/S____'AA`!``#H`P``QX88`0```````(FV'`$``(/$"%/_=A3H_/__
+M_X/$$(/$!%M>PY!64X/L$(M<)!R-LV`,``!3Z/S___^)0Q2)1A2)FR0%``")
+MGB0%``"+@S`%``")AC`%``")'"3H_/___XDT).C\____B1PDZ/S___^#Q!"Z
+M`````(3`#X2%````@^P,5NC\____@\00N@````"$P'1P@^P,4^C\____QP0D
+MT`<``.C\____B1PDZ/S___^)'"3H_/___\>#$`$``.@#``#'@Q@!````````
+MB9L<`0``@\0(C8,0`0``4/]S%.C\____@\0(:@!3Z/S___^#Q`AJ`%;H_/__
+M_[H!````@\00D(G0@\0$6U[#55=64X/L/(M<)%#&1"0(;8U$)`C&0`'_QD`"
+M(\9``Q3&0`0ZQD`%[\9`!A;&0`>2@[LH!0```'0&BYLH!0``N0````"Z(```
+M`(U$)!"-=@"("$!*=?K&1"04`;T`````:B"-="045FH.4^C\____@\00A<!U
+M08/L#&B`&@8`Z/S___]J(%9J#U/H_/___X/$((/X('4AC70D((U$)`BY"```
+M`/R)Q_.F#Y?"#Y+`.,)U!;T!````B>B$P'40@^P,:'<```#H_/___X/$$(GJ
+M#[;"@\0\6UY?7<.)]L.-=@!55U93@^P,BVPD((M<)"2Y`````+IX````B=B0
+MB`A`2G7Z@[TP!0```0^40Q.+12")`X!+$1!FBT489HE#!&:+11IFB4,&BX4P
+M!0``B$-LQD,2(&:!?1H@(70(9H%]&B(A=1S&0Q<"OO@!``"->SS\N0<```#S
+MI6:EI.F$````9HM%&BT0)P``9H/X`7809H%]&D`A=`AF@7T:1"%U3<9#%P1F
+MBT4:+1`G``!F@_@!=Q6^&`(``(U[//RY!P```/.E9J6DZSUF@7T:0"%T"&:!
+M?1I$(74MOC@"``"->SS\N0<```#SI6:EI.L8QD,7"(/L"&@`````C4,\4.C\
+M____@\00BD,7]F,2B$,0A,!U!,9#$("^DP```(U[&/RY!P```/.EI(.]+`4`
+M``!T$HN%+`4``(M`"(E#9)F)4VCK"HM%"(E#9)F)4VC'0V``(```@\0,6UY?
+M7<.-=@"+1"0$QH"7`````,-75E.+="00BWYLBX<D!0``@'@G``^%B@```(M>
+M<(/L"(M68`^V@J,```!0#[:"H@```%`/MH*A````4`^V@J````!0#[:"GP``
+M`%`/MH*>````4`^V@IT```!0#[:"G````%`/MH+7````4`^V!H/@`5`/MD8"
+M4`^V1@%0_W8(:%@"``#H_/___X/$/,=&<`````#_=@A6_W9X_].#Q!#K.(UV
+M`(/L"(U>?%/_=Q3H_/___\=&?/0!``#'AH0```!D:`$`B;:(````@\0(4_]W
+M%.C\____@\006UY?PXUV`%575E.#[`R+;"0D#[=$)"B-%,#!X@(IPHM,)""+
+M@5@%``"-'-"+L20%``"!QF`,``")="0(B5U@B6L<@WLL`'4*@WLP``^$FP,`
+M`+\`````@$T``8M#,(E%:(M#+(E%9+$`BT0D((!X*P!V)8MS*)`/MM&)T,'@
+M!`'0BU0D(#NT@CP+```/A(8"``!!.$HK=]^Q@(M$)""+L"0%```/ML&*A#"8
+M!```//]T*8-[+`!T(@^VP(T$0(T$P(G"P>(%*<*+AI`%``"-%)`[4RP/A#0"
+M``!'08#Y@7;#L8*+5"0@B[(D!0``B?8/ML&*A#"8!```//]T'`^VP(T$0(T$
+M@(N6=`4``(T$PCM#,`^$[`$``$=!@/F%=M"Q@`^VP8MT)`B*A#"8!```//]T
+M*8-[+`!T(@^VP(T$0(T$P(G"P>(%*<*+AI`%``"-%)`[4RP/A)\!``!'08#Y
+M@7:_L8*-=@`/ML&+5"0(BH00F`0``#S_=!P/ML"-!$"-!("+DG0%``"-!,([
+M0S`/A%P!``!'08#YA7;,BT0D((!X.0%U1H-[+`!T%8/L!&H`#[9#25#_<RSH
+M_/___X/$$(.[X``````/A`("``"#[`1J``^V@]4```!0_[/@````Z/S___^#
+MQ!"-=@"#N^``````#X37`0``BU,LB50D!+\`````@'HP`'9%B=:#QBB#[`Q6
+MZ/S___^-2/B#Q!"+5@2)1@2),(E0!(D"@+G7````_W4/@'DA`'4)@[G@````
+M`'4,1XGYBT0D!#A(,'?`B?J+3"0$.%$P#X70````BH/7````B$4"OP````"`
+M>3``#X:Y`0``B<Z#QBB#[`Q6Z/S___^-2/B#Q!"+5@2)1@2),(E0!(D"@WD<
+M`'1"BU$<BD(".H'7````=#2#>G``=2Z#>G0`=2B*@=<```"(0@*#[`0/MT$8
+M4(M$)"C_L"0%``!J!^C\____@\00C78`1XGZBTPD!#A1,'>0Z3\!``")^(A%
+M`>FA_O__B?J(50'IE_[__XGYB$T!Z8W^__^)^(A%`>F#_O__BU0D(`^V0BF-
+M!(&(A9@```#I:OW__XI#28A%`L:#UP```/^_`````(M,)`2`>3``#X;A````
+MB<Z#QBB#[`Q6Z/S___^-2/B#Q!"+5@2)1@2),(E0!(D"@+G7````_W1'QH'7
+M````_X-Y'`!T.HM1'(I"`CI!270O@WIP`'4I@WIT`'4CBD%)B$("@^P$#[=!
+M&%"+1"0H_[`D!0``:@?H_/___X/$$)!'B?J+3"0$.%$P=XCK8HGVBD-)B$4"
+MZUB+="0@#[9&*8T$@8A%`8B%F````.LOL0"+1"0@@'@K`'8CBW,HC78`#[;1
+MB=#!X`0!T(M4)"`[M((\"P``=,%!.$HK=^.+="0@.$XK=03&10'_QD4"`(GV
+MC7T@C7-@_+D*````\Z6-?0R-<TRQ!?.EBX.(````B45(BX.,````B45,9HM#
+M-&:)15AFBT,V9HE%6HM#0(M31(E%4(E55(I#2HA%7/9#)`1U+HM$)""`N%<,
+M````=`_^B%<,``"`N%<,````=1*#[`S_="0LZ/S___^#Q!"-=@"#[`1J`(M#
+M'`^V0`%0_W0D+.C\____#[9#((/$$*@"=`^H!'0+J`%U!X!-``+K!9"`90#]
+MBE,DT.J#X@2*10"#X/L)T(A%`(/L#%7H*/K__X/$'%M>7UW#55=64X/L'(M\
+M)#"+="0TBVPD.+D`````NIP```")Z)"("$!*=?J)=0B#_C]^"8''8`P``(/N
+M0+@`````@[RWF`(````/A6D"``")K+>8`@``B7ULBT0D/(E%<(M$)$")17BX
+M`0```(!_.0$/A4("``!FQT0D&O\`@?Z%````?PYF#[:$/I@$``!FB40D&F:!
+M?"0:_P`/A`@"```/MU0D&HN/6`4``(T$TL'@`BG0C13%`````/9$"B,$#X3C
+M`0``BT0*("4`__\`/0``_P`/A<\!``"-'`KV0R0$#X0V`0``QH.P``````^V
+M0R"H`G0RJ`1T+J@!="K&0R(%QD,C!%,/MD-)4/]S+/]S*.C\____@\00Z8,!
+M``#&@[$````!ZU\/MD,@J`)U=J@$='*H`71NBVLHQD,B`\9#(P3'1"04````
+M`(!]"@!T-HUU.(/L#%;H_/___XG"@\00BT8$B58$B3*)0@2)$(!Z(O]T!#G:
+M=:;_1"04#[9%"CM$)!1_S8"[L0````$/A`X!``"#[`A35^C\____@\00Z?P`
+M```/MD,@J`(/A/````"H!`^$Z````*@!#X7@````BT,HBD`)O@````"`?R8`
+M=B</MNB)\@^VRHGHT_BH`70/@^P$:@!15^C\____@\001HGP.$<F=]S&0R,&
+MQD,B!6;'@Y```````(/L"%-7Z/S___^#Q!#IA0```(M;*(E<)!#&1"0/`(![
+M"@!V8(G:@\(XB50D"(/L#/]T)!3H_/___XG#@\00BU0D"(M"!(E:!(D3B4,$
+MB1B`>R+_=!Z`>R$B=`:`>R$-=1+'A+>8`@```````+@`````ZSO^1"0/BD0D
+M#XM4)!`X0@IWJ8/L!`^W1"0>4%57Z/S___^#Q!"X`0```.L0QX2WF`(`````
+M``"X`````(/$'%M>7UW#D%575E.#[`R+="0@BVPD)(M\)"B+7F"%VW4.@^P,
+M5__5@\00Z0`!``"#?G0`=0:#?G``=!"#[`Q7_]6#Q!#IY@```(GV@+NP````
+M``^%RP```(M3*`^V0@BH$`^%O````*@(#X6T````BQ*)5"0(@'M+`'01@^P$
+M4VH&_W,HZ/S___^#Q!");G2)?G@/MD,@J`)T*:@$="6H`70AQD,B!<9#(P13
+M#[9#25#_<RS_<RCH_/___X/$$.MOC78`#[9#(*@"=22H!'0@J`%T',9#(@/&
+M0R,$@^P(4_]T)!3H_/___X/$$.M"B?8/MD,@J`)T.*@$=#2H`74PQD,B!<9#
+M(P9FQX.0``````"#[`A3_W0D%.C\____@\00ZPV0@^P,5__5@\00C78`@\0,
+M6UY?7<-75E.+5"00BW0D%(M"*(LXBUY(#[9&%(/X('1$@_@@?PN%P'0;@_@&
+M?R[K)(/X(G0O@_@B?!J#P("#^`%W&NL0BT(<QT`$`````,9#7@'K$,9#7@WK
+M"HGVN`````#K,9"#?E``=!*#[`B-1E!05^C\____@\00B?:#[`A65^C\____
+MB1PD_U-HN`$```"#Q!!;7E_#55=64X/L'(M\)#"+;"0TBT=LB40D&(M%)(DX
+M@W]@`'43QD5>`H/L#%7_56B#Q!#IR`0``(M'8/9`)`)T$\9%7@*#[`Q5_U5H
+M@\00Z:P$``"#[`S_="0DZ/S___^)QH/$$(7`=1/&15X"@^P,5?]5:(/$$.F$
+M!```QT!D`````(EH2(M'8(E&&(M'8&:+0!AFB480QD84@`^V15R#^`(/A$4!
+M``"#^`)_"87`=!SIA@(``(/X`P^$K`$``(/X!`^$?P$``.EO`@``BT=@]D`T
+M`0^$D````/9%70)T!L9&)(CK$XI%78/@!#P!&<"#X`6#Z':(1B2+34B+74QF
+MBU509HE4)!;&1B4`B=C!Z!B(1B:)V,'H$(A&)XG8P>@(B$8HB%XIB<@/K-@8
+MB$8JB<@/K-@0B$8KB<@/K-@(B$8LB$XMQD8N`,9&+P!FBT0D%F;!Z`B(1C"*
+M1"06B$8QQD8R`,9&,P#K:_9%70)T!L9&)"CK$XI%78/@!#P!&<"#X`6#P"J(
+M1B2+34B+74QFBU509HE4)!;&1B4`B<@/K-@8B$8FB<@/K-@0B$8GB<@/K-@(
+MB$8HB$XIQD8J`&:+1"069L'H"(A&*XI$)!:(1BS&1BT`BT=@!;0```")1CC&
+M1AP@@TYD`NE8`0``@'U($'<%]@<"=0G&15X&Z><"```/MD5(C58D@^P$4/]U
+M4%+H_/___XM'8`6T````B48XQD8<((%.9```$`#&1A6K@\00]D5=!@^$"0$`
+M`(M%3(E&(.G^````BD5=@^`P/"!U$<9&)!O&1B4!QD8H`.GC````QD8D->G:
+M````BT=@#[9`(*@!=`2H!'4)QD5>!NEE`@``@4YD```@`&:+151F.T5*=#8/
+MMD53@_A"="V#^$)_!X/X0'0CZQ@]L````'0'/>P```!U"F:+151FB45*ZPG&
+M15X&Z1X"``#&1B2P9HM%2(A&)6:+14J(1B9FBT5,B$8G9HM%3HA&*&:+15"(
+M1BF*15*(1BJ*15.(1BMF#[9%28A&+&8/MD5+B$8M9@^V14V(1BYF#[9%3XA&
+M+V8/MD51B$8P]D5=!G0:#[=%5,'@"8E&((-.9`3K"I#&15X&Z:,!``"-?CS'
+M1FPP<@$`BD5=J`8/A'@!``"[`````*@"=`:#3F0(ZP2#3F00@WU@`'0+]D5=
+M`70%BUU@ZRJ#?60`="2#[`1J`(M4)"#_LB0&``!5_U5D@\00A<!T"HM$)!B+
+MF"0&``"%VW0X@^P,5NC\____@\0(:@!7Z/S___^#Q!#_,_]S#/]S"%?H_/__
+M_X/$$(U#!(/#$(,X`'3DZ?(```"#[`S_="0DZ/S___^)1"0@@\00A<!U"<9%
+M7@;IY````(M4)!"+0@B)1C2)5E"Y`````+H``@``D(@(0$IU^O9%700/A(,`
+M``#V1F8@=!:#[`3_=B#_=5C_=C3H_/___X/$$.MG]D9F$'1ABT8TB40D#(-]
+M8`!T"_9%70%U!8M=8.LD@^P$:@&+5"0@_[(D!@``5?]59(/$$(7`=`J+1"08
+MBY@D!@``@^P$_S/_<PC_="08Z/S___^+$P%4)!R#Q!"-0P2#PQ"#.`!TVX/L
+M"&H`5^C\_____W8@BT0D)/]P$/]P#%?H_/___X/$(.L$@TYD`8/L"%;_="0D
+MZ/S___^#Q!#K&(/L"%;_="0DZ/S___^)+"3_56B#Q!")]H/$'%M>7UW#55=6
+M4X/L'(MT)#"+?"0\BD0D1(A$)!O'1"0,_____XGZP>()9HE4)`J+1F")1"0$
+M@WY@`'0)@+Z7`````'0)BT0D#.E0`P``BU0D!(M2*(D4)(MN;&;'AI0````0
+M)X/L#%7H_/___XG#@\00BT0D#(7;#X0@`P``@^P,5>C\____B40D)(/$$(7`
+M=1:#[`A35>C\____BT0D'(/$$.GV`@``BX4D!0``QD`G`8/L!%;_M20%``!J
+M!>C\____BT0D%(!()`*#Q`S_=F!J(?]T)`SH_/___XU3/(E4)""#Q!"`?"0;
+M`'0-QT-D"@```,9#)"CK)\=#9!(```#&0R0J#[=$)`J#[`10_W0D2(M$)"#_
+M<`CH_/___X/$$(M&8/9`-`$/A),```"`?"0;`1G`@^`"@^AXB$,DQD,E`(M4
+M)#B)T,'H&(A#)HM4)#B)T,'H$(A#)XM4)#B)T,'H"(A#*(M4)#B(4RF+1"0T
+MBU0D.`^LT!B(0RJ+1"0TBU0D.`^LT!"(0RN+1"0TBU0D.`^LT`B(0RR*5"0T
+MB%,MQD,N`,9#+P")^&;!Z`B(0S")^(A#,<9#,@#&0S,`ZUZ`?"0;`1G`@^`"
+M@\`HB$,DQD,E`(M$)#2+5"0X#ZS0&(A#)HM$)#2+5"0X#ZS0$(A#)XM$)#2+
+M5"0X#ZS0"(A#*(I4)#2(4RG&0RH`B?AFP>@(B$,KB?B(0RS&0RT`@^P,4^C\
+M____BT9@9HM`&&:)0Q#&0Q2`B7,8BU0D)(M""(E#-`^W1"0:B4,@B5-0QD,<
+M((M&8`6T````B4,XQT-L6&@!`(/$"&H`_W0D'.C\_____W,@BT0D*/]P$/]P
+M#/]T)"SH_/___\:&EP````&#Q!A35>C\____@\00A?8/A*P```"#?F``=&&`
+MOI<`````=%B)]F:!OI0```"6`'49@^P$_W9@:B&+1F#_<"CH_/___X/$$(UV
+M`&;_CI0```"#[`QHT`<``.C\____B2PDZ/S___^#Q!"%]G14@WY@`'0)@+Z7
+M`````'6JA?9T08-^8`!T.V:#OI0`````=#&`>Q0`=2O'1"0,`````(!\)!L`
+M=!P/MT0D"H/L!%"+5"0<_W((_W0D3.C\____@\00@WM0`'00@^P(C4-04%7H
+M_/___X/$$(/L"%-5Z/S___^+A20%``#&0"<`@\0,5O^U)`4``&H&Z/S___^+
+M1"04@&`D_8M$)!R#Q!"-=@"#Q!Q;7E]=PU93@^P,BW0D&(M<)!R(7C</MMM3
+M5NC\____@\0(4X'&8`P``%;H_/___[@!````@\046U[#C78`@^P8_W0D'.C\
+M____#[;`@\0<PY"X`````,.)]E93BTPD#+X`````NH````"+F20%``")]@^W
+MPH"\&)@$``#_=`%&0F:!^H4`=NJ+B20%``"!P6`,``"Z@````)`/M\*`O`B8
+M!```_W0!1D)F@?J%`';JB?!;7L.0BTPD!(I4)`B(T,#H!#P)=@>#P%?K"HGV
+MB-#`Z`2#P#"(`8G0@^`/@_@)?@R(T(/@#X/`5^L*B?:(T(/@#X/`,(A!`<-6
+M4XMT)`R+7"00#[;'4%;HJ/___P^VVU.#Q@)6Z)O___^#Q!!;7L.055=64XM\
+M)!2+;"0<O@````"Y`````+H``0``B>B-=@"("$!*=?JZ@````(N?)`4```^W
+MPF8/MHP8F`0``&:!^?\`#X1L`0``B?!&.T0D&`^%7P$``&:!^H$`#X?0````
+M#[?!C01`C03`B<+!X@4IPHN#D`4``(T<D(-[#`!T;;F`````B[<D!0``#[?!
+M9@^VA#"8!```9CW_`'0>#[?`C01`C03`B<+!X@4IPHN&D`4``(T4D#M3#'0L
+M06:!^8$`=LBR`(![,@!V,+X!````#[;"#[9,&$")\-/@"44@0CA3,G?KZQ2(
+M30+KUY#&10+_BT,(#[9`"8E%(,9%``&*0S&(10&+0TB)102+0TR)10B+0UB)
+M10R+0UR)11"+0V")112+0V2)11B+0W")11SK>(N7)`4```^WP8T$0(T$@,'@
+M`XG#`YIT!0``QD4"_\9%``*+ER0%``"+DG0%``"*1!`?B$4!BT-4#[9`"8E%
+M(,9%!'8/MT,@4(U%!5#H5_[__\9%#&0/MT,B4(U%#5#H1?[__\9%''(/MD,=
+M4(U%'5#H[_W__X/$&+@`````Z9\!``")]D)F@?J%``^&:_[__XN_)`4``(''
+M8`P``+J`````#[?"9@^VC#B8!```9H'Y_P`/A%@!``")\$8[1"08#X5+`0``
+M9H'Z@0`/A\P````/M\&-!$"-!,")PL'B!2G"BX>0!0``C1R0@WL,`'1IN8``
+M```/M\%F#[:$.)@$``!F/?\`=!X/M\"-!$"-!,")PL'B!2G"BX>0!0``C120
+M.U,,="Q!9H'Y@0!VR+(`@'LR`'8RO@$````/ML(/MDP80(GPT^`)12!".%,R
+M=^OK%HA-`NO7C78`QD4"_XM#"`^V0`F)12#&10`!BD,QB$4!BT-(B44$BT-,
+MB44(BT-8B44,BT-<B440BT-@B444BT-DB448BT-PB44<ZVP/M\&-!$"-!(#!
+MX`.)PP.?=`4``,9%`O_&10`"BY=T!0``BD00'XA%`8M#5`^V0`F)12#&101V
+M#[=#(%"-1050Z,?\___&10QD#[=#(E"-10U0Z+7\___&11QR#[9#'5"-11U0
+MZ%_\__^#Q!BX`````.L2D$)F@?J%``^&A?[__[C_____6UY?7<.)]E575E.#
+M[`2+="08BVPD'+L`````N0````"ZI`P``(M$)"")]H@(0$IU^KJ`````B[XD
+M!0``#[?"9@^VC#B8!```9H'Y_P`/A`0#``")V$,YZ`^%^0(``&:!^H$`#X=9
+M`@``#[?!C01`C03`B<+!X@4IPHN'D`4``(TLD(-]#`!T<KF`````B?L/M\%F
+M#[:$&)@$``!F/?\`=!X/M\"-!$"-!,")PL'B!2G"BX.0!0``C120.U4,=#)!
+M9H'Y@0!VR+(`@'TR`'8]NP$````/ML(/MDPH0(G8T^")P8M$)"`)2"!".%4R
+M=^7K&XM4)""(2@+KS8M,)"#&00+_BT4(#[9`"8E!((M$)"#&``&*13&+5"0@
+MB$(!BT5(B4($BT5,B4((BT58B4(,BT5<B4(0BT5@B4(4BT5DB4(8BT5PB4(<
+MQD0D`P"`O9``````#X;T`0``#[9$)`.-!(#!X`.+5"0@C0P0`>B-F)````"*
+M4P2(422*4P6(426+@)@```"*`(/@#XA!)@^V022#^`-T*8/X`W\.@_@"#X3C
+M````Z<H```"#^`1T1X/X$@^$BP```.FW````C78`#[9,)`.-#(G!X0.+A"F8
+M````BE`!@^('#[;2P>((#[9``@'0C02`T>"+5"0@B401*.F2````#[9$)`.-
+M!("-%,4`````BX0JF````(!X`@!U#HM,)"#'1`HH`````.MH#[9$)`.-!(#!
+MX`.+E"B8````#[92`H/J%(M,)"")5`@HZT4/MDPD`XT,B<'A`XN$*9@````/
+MME`"P>((#[9``P'0C02`T>"+5"0@B401*.L7C78`#[9$)`.-!("+3"0@QT3!
+M*``````/MG0D`XTTML'F`XM$)""-?`8LC;0NG````/RY"````/.E_D0D`XI4
+M)`,XE9`````/AYS^___IBP```(N6)`4```^WP8T$0(T$@,'@`XG#`YIT!0``
+MBTPD(,9!`O_&`0*+EB0%``"+DG0%``"*1!`?B$$!BT-4#[9`"8E!(,9!!'8/
+MMT,@4(G(@\`%4.AO^?__BT0D*,9`#&0/MT,B4(M$)"R#P`U0Z%7Y__^+5"0P
+MQD(<<@^V0QU0B="#P!U0Z/GX__^#Q!BX`````.DU`P``0F:!^H4`#X;3_/__
+MB[8D!0``@<9@#```NH`````/M\)F#[:,,)@$``!F@?G_``^$\`(``(G80SGH
+M#X7E`@``9H'Z@0`/AU("```/M\&-!$"-!,")PL'B!2G"BX:0!0``C2R0@WT,
+M`'1PN8`````/M\%F#[:$,)@$``!F/?\`=!X/M\"-!$"-!,")PL'B!2G"BX:0
+M!0``C120.U4,=#)!9H'Y@0!VR+(`@'TR`'8]NP$````/ML(/MDPH0(G8T^")
+MP8M$)"`)2"!".%4R=^7K&XM4)""(2@+KS8M,)"#&00+_BT4(#[9`"8E!((M$
+M)"#&``&*13&+5"0@B$(!BT5(B4($BT5,B4((BT58B4(,BT5<B4(0BT5@B4(4
+MBT5DB4(8BT5PB4(<QD0D`@"`O9``````#X;C`0``#[9$)`*-!(#!X`.+5"0@
+MC0P0`>B-F)````"*4P2(422*4P6(426+@)@```"*`(/@#XA!)@^V022#^`-T
+M)X/X`W\.@_@"#X3A````Z<@```"#^`1T18/X$@^$B0```.FU````D`^V3"0"
+MC0R)P>$#BX0IF````(I0`8/B!P^VTL'B"`^V0`(!T(T$@-'@BU0D((E$$2CI
+MD@````^V1"0"C02`C13%`````(N$*I@```"`>`(`=0Z+3"0@QT0**`````#K
+M:`^V1"0"C02`P>`#BY0HF`````^V4@*#ZA2+3"0@B50(*.M%#[9,)`*-#(G!
+MX0.+A"F8````#[90`L'B"`^V0`,!T(T$@-'@BU0D((E$$2CK%XUV``^V1"0"
+MC02`BTPD(,=$P2@`````#[9T)`*--+;!Y@.+1"0@C7P&+(VT+IP```#\N0@`
+M``#SI?Y$)`**5"0".)60````#X>>_O__ZW\/M\&-!$"-!(#!X`.)PP.>=`4`
+M`(M,)"#&00+_Q@$"BY9T!0``BD00'XA!`8M#5`^V0`F)02#&001V#[=#(%")
+MR(/`!5#H2O;__XM$)"C&0`QD#[=#(E"+1"0L@\`-4.@P]O__BU0D,,9"''(/
+MMD,=4(G0@\`=4.C4]?__@\08N`````#K$XGV0F:!^H4`#X;M_/__N/____^#
+MQ`1;7E]=PXUV`%575E.#[`2+="08NP````"Y`````+JD#```BT0D((GVB`A`
+M2G7ZNH````"+OB0%```/M\)F#[:,.)@$``!F@?G_``^$.`,``(G80SM$)!P/
+MA2L#``!F@?J!``^'?0(```^WP8T$0(T$P(G"P>(%*<*+AY`%``"-+)"#?0P`
+M='*Y@````(G[#[?!9@^VA!B8!```9CW_`'0>#[?`C01`C03`B<+!X@4IPHN#
+MD`4``(T4D#M5#'0R06:!^8$`=LBR`(!],@!V/;L!````#[;"#[9,*$")V-/@
+MB<&+1"0@"4@@0CA5,G?EZQN+5"0@B$H"Z\V+3"0@QD$"_XM%"`^V0`F)02"+
+M1"0@Q@`!BD4QBU0D((A"`8M%2(E"!(M%3(E""(M%6(E"#(M%7(E"$(M%8(E"
+M%(M%9(E"&(M%<(E"'(M,)!R)2B3&1"0#`("]D``````/AAP"```/MD0D`XT$
+M@,'@`XM4)""-#!`!Z(V8D````(I3!(B1J````(I3!8B1J0```(N`F````(H`
+M@^`/B(&J````#[:!J````(/X`W0H@_@#?PZ#^`(/A/$```#IU0```(/X!'1)
+M@_@2#X23````Z<(```")]@^V3"0#C0R)P>$#BX0IF````(I0`8/B!P^VTL'B
+M"`^V0`(!T(T$@-'@BU0D((F$$:P```#IG@````^V1"0#C02`C13%`````(N$
+M*I@```"`>`(`=1&+3"0@QX0*K`````````#K<0^V1"0#C02`P>`#BY0HF```
+M``^V4@*#ZA2+3"0@B90(K````.M+#[9,)`.-#(G!X0.+A"F8````#[90`L'B
+M"`^V0`,!T(T$@-'@BU0D((F$$:P```#K&HUV``^V1"0#C02`BTPD(,>$P:P`
+M````````#[9T)`.--+;!Y@.+1"0@C;P&L````(VT+IP```#\N0@```#SI?Y$
+M)`.*5"0#.)60````#X=__O__Z98```"+EB0%```/M\&-!$"-!(#!X`.)PP.:
+M=`4``(M,)"#&00+_Q@$"BY8D!0``BY)T!0``BD00'XA!`8M#5`^V0`F)02#&
+M001V#[=#(%")R(/`!5#HO?+__XM$)"C&0`QD#[=#(E"+1"0L@\`-4.BC\O__
+MBU0D,,9"''(/MD,=4(G0@\`=4.A'\O__BT0D-(M,)#B)022#Q!BX`````.EP
+M`P``C78`0F:!^H4`#X:?_/__B[8D!0``@<9@#```NH`````/M\)F#[:,,)@$
+M``!F@?G_``^$*`,``(G80SM$)!P/A1L#``!F@?J!``^'?0(```^WP8T$0(T$
+MP(G"P>(%*<*+AI`%``"-+)"#?0P`='"Y@`````^WP68/MH0PF`0``&8]_P!T
+M'@^WP(T$0(T$P(G"P>(%*<*+AI`%``"-%)`[50QT,D%F@?F!`';(L@"`?3(`
+M=CV[`0````^VP@^V3"A`B=C3X(G!BT0D(`E(($(X53)WY>L;BU0D((A*`NO-
+MBTPD(,9!`O^+10@/MD`)B4$@BT0D(,8``8I%,8M4)""(0@&+14B)0@2+14R)
+M0@B+15B)0@R+15R)0A"+16")0A2+162)0AB+17")0AR+3"0<B4HDQD0D`@"`
+MO9``````#X82`@``#[9$)`*-!(#!X`.+5"0@C0P0`>B-F)````"*4P2(D:@`
+M``"*4P6(D:D```"+@)@```"*`(/@#XB!J@````^V@:@```"#^`-T*H/X`W\1
+M@_@"#X3S````Z=<```"-=@"#^`1T2(/X$@^$D@```.G!````D`^V3"0"C0R)
+MP>$#BX0IF````(I0`8/B!P^VTL'B"`^V0`(!T(T$@-'@BU0D((F$$:P```#I
+MG@````^V1"0"C02`C13%`````(N$*I@```"`>`(`=1&+3"0@QX0*K```````
+M``#K<0^V1"0"C02`P>`#BY0HF`````^V4@*#ZA2+3"0@B90(K````.M+#[9,
+M)`*-#(G!X0.+A"F8````#[90`L'B"`^V0`,!T(T$@-'@BU0D((F$$:P```#K
+M&HUV``^V1"0"C02`BTPD(,>$P:P`````````#[9T)`*--+;!Y@.+1"0@C;P&
+ML````(VT+IP```#\N0@```#SI?Y$)`**5"0".)60````#X=]_O__Z8H````/
+MM\&-!$"-!(#!X`.)PP.>=`4``(M,)"#&00+_Q@$"BY9T!0``BD00'XA!`8M#
+M5`^V0`F)02#&001V#[=#(%")R(/`!5#H7>___XM$)"C&0`QD#[=#(E"+1"0L
+M@\`-4.A#[___BU0D,,9"''(/MD,=4(G0@\`=4.CG[O__BT0D-(M,)#B)022#
+MQ!BX`````.L3B?9"9H'ZA0`/AK7\__^X_____X/$!%M>7UW#C78`55=64XMT
+M)!2+?"08BVYLN0````"Z(````(GXB`A`2G7ZBYTD!@``N0````"Z``(``(G8
+MD(@(0$IU^HU3-KD`````BD0Q(8@"0HI$,2"(`D*#P0*#^2=^ZHU3%+D`````
+MBD0Q#8@"0HI$#@R(`D*#P0*#^1-^ZHU3+KD`````BD0Q28@"0HI$,4B(`D*#
+MP0*#^0=^ZHE?&(M&4(M65(/``8/2`(D'B5<$@WY@`'4[]@8!=#:#?F0`=!6%
+M[701BT9D#[9`,X"\*)@$``#_=1N#?F@`=#R%[70XBT9H#[=`)("\*)@$``#_
+M=">+1FQF@7@:$2=U%/8&`74/#[9&`8J``````(A'#.L,BD8!B$<,ZP3&1PS_
+MBD8"B$<-BD9<B$<.QD<2$,9'$1`/M@:#X`'1X(I?"H/C_0G#B%\*#[8&@^`!
+MP>`%BD\(@^'?"<&(3P@/MT98P>@'@^`!P>`&@^&_"<&(3P@/MT98P>@"@^`!
+MBE<)@^+^"<*(5PD/MT9:P>@#@^`!P>`'@^%_"<&(3P@/MT9:T>B#X`'1X(/B
+M_0G"B%<)#[=&6,'H`X/@`<'@!H/BOPG"B%<)#[=&6L'H!(/@`<'@!X/B?PG"
+MB%<)@\D0B$\(B@;0Z(/@`8/C_@G#B%\*B@:#X`2#X_L)PXA?"F;'1Q0`$(J&
+MF````(A''%M>7UW#C78`BT0D#,=`!`````#'``````"X`````,.055=64X/L
+M#(M<)""*1"0DB$0D"\=$)`3_____BW-@BVMLA?9T#X"[EP````!U!O8#`G0-
+MD(M$)`3I_P```(UV`(/L#%7H_/___XG'@\00BT0D!(7_#X3B````QD<DX<9'
+M)0&`?"0+`@^5P(/`&HA')L9'%(!FBT889HE'$(E?&,='(`````#'1S0`````
+MQT=L6&@!`(/L"%=5Z/S____&@Y<````!9L>#E````/H`@\00A=MT78-[8`!T
+M5Y!F@;N4````E@!U&8/L!/]S8&HABT-@_W`HZ/S___^#Q!"-=@!F_XN4````
+M@^P,:-`'``#H_/___XDL).C\____@\00A=MT#X-[8`!T"8"[EP````!UJF:#
+MNY0`````=`Z`?Q0`=0C'1"0$`````(/L"%=5Z/S___^+1"04@\00D(/$#%M>
+M7UW#55=64X/L'(MT)#"*7"0TQT0D%/____^+;F"+1FR)1"00A>UT"8"^EP``
+M``!T"HM$)!3IF00``)"#[`S_="0<Z/S___^)QX/$$(M$)!2%_P^$>P0``/8&
+M`@^%$0$``(#[%'</#[;;C01;C1R%`````.L>9@^VTXG0P>`$`="-!,)FP>@(
+MP.@$#[;8@</P````QD<DX<9')0'&1R8<B%\GQD<4@&:+11AFB4<0B7<8QT<@
+M`````,='-`````#'1VQ8:`$`@^P(5_]T)!SH_/___\:&EP````%FQX:4````
+MQ`F#Q!"%]G1C@WY@`'1=C78`9H&^E````)8`=1F#[`3_=F!J(8M&8/]P*.C\
+M____@\00C78`9O^.E````(/L#&C0!P``Z/S___^#Q`3_="0<Z/S___^#Q!"%
+M]G0/@WY@`'0)@+Z7`````'6F9H.^E``````/A&0#``"`?Q0`#X5:`P``QT0D
+M%`````#I30,``(/L#/]T)!SH_/___XE$)"B#Q!"#?"08``^$+P,``(U7/(E4
+M)`R+1"08BT`(B40D",9')!K&1R4(QD<F&L9')P#&1R@0QD<I`(M$)!B)1U#&
+M1Q2`9HM%&&:)1Q")=QB+1"08BT`(B4<TQT<@$````(M&8`6T````B4<XQD<<
+M(,=';%AH`0"#[`AJ`%+H_/____]W((M$)"S_<!#_<`S_="0HZ/S___^#Q!A7
+M_W0D'.C\____QH:7`````6;'AI0```#Z`(/$$(7V=%V#?F``=%=F@;Z4````
+ME@!U%H/L!/]V8&HABT9@_W`HZ/S___^#Q!!F_XZ4````@^P,:-`'``#H_/__
+M_X/$!/]T)!SH_/___X/$$(7V=`^#?F``=`F`OI<`````=:EF@[Z4`````'0&
+M@'\4`'09@^P(C40D(%#_="0<Z/S___^#Q!#I_0$``(/L"%?_="0<Z/S___^#
+MQ`3_="0<Z/S___^)QX/$$(7`=1V#[`B-1"0@4/]T)!SH_/___XM$)"2#Q!#I
+MT@$``(U`/(E$)`R+3"0(@\$$BU0D"`^V0@.*1!`$B$($QD$!"L9!`@"Z!```
+M`(M$)`C&``!`2G7YA-MU!H!A`_SK3`^VVXT$VXT$@XT$0XT<Q0````"`20,#
+MB=C!Z!B)1"0$B$$$B=K!ZA"(406)V,'H"(D$)(A!!HA9!XI$)`2(00B(40F*
+M%"2(40J(60N+1"08B4=0QD<D%8H!P/@']]"#P!&(1R7&1R8`QD<G`,9'*!#&
+M1RD`@"$_QD<4@&:+11AFB4<0B7<8BT0D&(M`"(E'-,='(!````"+1F`%M```
+M`(E'.,9''"#'1VQ8:`$`@^P(:@#_="08Z/S_____=R"+1"0L_W`0_W`,_W0D
+M*.C\____@\085_]T)!SH_/___\:&EP````%FQX:4````^@"#Q!"%]G1=@WY@
+M`'179H&^E````)8`=1:#[`3_=F!J(8M&8/]P*.C\____@\009O^.E````(/L
+M#&C0!P``Z/S___^#Q`3_="0<Z/S___^#Q!"%]G0/@WY@`'0)@+Z7`````'6I
+M9H.^E`````!T#H!_%`!U",=$)!0`````@^P(C40D(%#_="0<Z/S___^#Q!"0
+M@^P(5_]T)!SH_/___XM$)"2#Q!"#Q!Q;7E]=PU=64XMT)!"X_____XM^;(M>
+M8/9&6`@/A(@```"#[`16_[<D!0``:@7H_/___X!+)`*#Q`Q3:B'_<RCH_/__
+M_X/$$(![2P!T'H/L#&C0!P``Z/S___^)/"3H_/___X/$$(![2P!UXH-\)!0`
+M=`]F@TY:$&:#2S80ZPV-=@!F@V9:[V:#8S;O@^P$5O^W)`4``&H&Z/S___^`
+M8R3]N`````"#Q!"06UY?PU93@^P$BT0D$`^V="04BU!LBUA@]@`!=$N#>RP`
+M=!F#[`2)\@^VPE`/MD-)4/]S+.C\____@\00@[O@`````'0]@^P$B?$/ML%0
+M#[:#U0```%#_L^````#H_/___X/$$.L<B?:#[`2)\0^VP5"+0QP/MD`!4%+H
+M_/___X/$$(/$!%M>PU575E.#[`R+7"0@BD0D)(A$)`N*1"0HB$0D"L=$)`3_
+M____BWM@BVMLA?]T"8"[EP````!T"HM$)`3I)0$``)"#[`Q5Z/S___^)QH/$
+M$(M$)`2%]@^$"@$``,9&).'&1B4!@'PD"P!T#H!\)`H!&<#WT(/`!^L,@'PD
+M"@$9P/?0@\`-B$8FQD84@&:+1QAFB480B5X8QT8@`````,=&-`````#'1FQ8
+M:`$`@^P(5E7H_/___\:#EP````%FQX.4````]`&#Q!"%VW1?@WM@`'19C78`
+M9H&[E````)8`=1F#[`3_<V!J(8M#8/]P*.C\____@\00C78`9O^+E````(/L
+M#&C0!P``Z/S___^)+"3H_/___X/$$(7;=`^#>V``=`F`NY<`````=:IF@[N4
+M`````'0<@'X4`'46BT-@9HM`-F:)0UK'1"0$`````(UV`(/L"%95Z/S___^+
+M1"04@\00C78`@\0,6UY?7<.#[`R+3"00BU0D%`^V`H/X"0^'L0```/\DA20(
+M``")]HM"!,:`5PP```"#[`Q0Z/S___^X`````(/$$.F0````@^P$#[9"!%!J
+M`%'H1/[__X/$$.M[C78`@^P$#[9"!%!J`5'H+/[__X/$$.MCC78`@^P(#[9"
+M!%!1Z/S___^#Q!#K39"#[`0/MD(%4`^V0@104>C1_/__@\00ZS2#[`@/MD($
+M4%'H_/___X/$$.LAD(/L"`^V0@104>C\____N`````"#Q!#K"+C_____C78`
+M@\0,PXM,)`2+06"%P'1*QT`<`````(!()`3'06``````QT%H`````,=!9```
+M``"#>0@_?Q.+46R+00C'A(*8`@```````,.0BU%LBT$(QX2"F`$```````##
+MB?:+3"0$BT%@A<!T2L=`'`````"`8"3[QT%@`````,=!:`````#'060`````
+M@WD(/W\3BU%LBT$(QX2"F`(```````##D(M1;(M!",>$@I@!````````PXGV
+M4X/L%(M<)!Q3Z/S___^+@R0%```%8`P``(D$).C\____@\086\.)]E.#[!2+
+M7"0<4^C\____BX,D!0``!6`,``")!"3H_/___X/$&%O#B?955U93@^P<BWPD
+M,(N')`4```5@#```B00D@S\`=!J+!RT```(`B0>#[`A0_W<0Z/S___^#Q!")
+M]H-_"`!T$H/L"/]W"/]W$.C\____@\00D(-_#`!T$H/L"/]W#/]W$.C\____
+M@\00D(/L"(U$)")0C40D)%"-1"0F4(U$)"A0C40D*E"-1"0M4(U$)#!0C40D
+M,E"-1"0U4(U$)#90C40D.5"-1"0\4(U$)#]0#[=')%#H_/___X/$0(._6`4`
+M``!T-H/L"/^W6`4``(V'0`4``%#H_/___X/$"(M$)`C_L%@%``"+1"0,!4`%
+M``!0Z/S___^#Q!")]H._=`4```!T-X/L"/^W=`4``(V'7`4``%#H_/___X/$
+M"(M$)`C_L'0%``"+1"0,!5P%``!0Z/S___^#Q!"-=@"#OY`%````=#>#[`C_
+MMY`%``"-AW@%``!0Z/S___^#Q`B+1"0(_["0!0``BT0D#`5X!0``4.C\____
+M@\00C78`@[^L!@```'0W@^P(_[>L!@``C8>4!@``4.C\____@\0(BT0D"/^P
+MK`8``(M$)`P%E`8``%#H_/___X/$$(UV`+X`````B?`Z1"0'<T6-K\P&``"0
+M@^P(B?`/MMC_M)_D!@``5>C\____@\0(BT0D"/^TF.0&``"+1"0,!<P&``!0
+MZ/S___^#Q!!&B?`Z1"0'<L*#OTP)````=#6#[`C_MTP)``"-AS0)``!0Z/S_
+M__^#Q`B+1"0(_[!,"0``BT0D#`4T"0``4.C\____@\00D(._=`D```!T-X/L
+M"/^W=`D``(V'7`D``%#H_/___X/$"(M$)`C_L'0)``"+1"0,!5P)``!0Z/S_
+M__^#Q!"-=@"#O\0)````=#>#[`C_M\0)``"-AZP)``!0Z/S___^#Q`B+1"0(
+M_[#$"0``BT0D#`6L"0``4.C\____@\00C78`@[^L!0```'0W@^P(_[>L!0``
+MC8>4!0``4.C\____@\0(BT0D"/^PK`4``(M$)`P%E`4``%#H_/___X/$$(UV
+M`(._6`8```!T-X/L"/^W6`8``(V'0`8``%#H_/___X/$"(M$)`C_L%@&``"+
+M1"0,!4`&``!0Z/S___^#Q!"-=@"#OP@&````=#>#[`C_MP@&``"-A_`%``!0
+MZ/S___^#Q`B+1"0(_[`(!@``BT0D#`7P!0``4.C\____@\00C78`@[\D!@``
+M`'0W@^P(_[<D!@``C8<,!@``4.C\____@\0(BT0D"/^P)`8``(M$)`P%#`8`
+M`%#H_/___X/$$(UV`(._D`8```!T-X/L"/^WD`8``(V'>`8``%#H_/___X/$
+M"(M$)`C_L)`&``"+1"0,!7@&``!0Z/S___^#Q!"-=@"#O\@&````=#>#[`C_
+MM\@&``"-A[`&``!0Z/S___^#Q`B+1"0(_[#(!@``BT0D#`6P!@``4.C\____
+M@\00C78`@[_\"````'0W@^P(_[?\"```C8?D"```4.C\____@\0(BT0D"/^P
+M_`@``(M$)`P%Y`@``%#H_/___X/$$(UV`(._)`D```!T-X/L"/^W)`D``(V'
+M#`D``%#H_/___X/$"(M$)`C_L"0)``"+1"0,!0P)``!0Z/S___^#Q!"-=@"#
+MOYP)````=#>#[`C_MYP)``"-AX0)``!0Z/S___^#Q`B+1"0(_["<"0``BT0D
+M#`6$"0``4.C\____@\00C78`@[]T!@```'0W@^P(_[=T!@``C8=<!@``4.C\
+M____@\0(BT0D"/^P=`8``(M$)`P%7`8``%#H_/___X/$$(UV`(._X`D```!T
+M1_^WZ`D``/^WY`D``/^WX`D``(V'R`D``%#H_/___XM$)!#_L.@)``#_L.0)
+M``#_L.`)``"+1"0<!<@)``!0Z/S___^#Q""0@[\$"@```'1'_[<,"@``_[<(
+M"@``_[<$"@``C8?L"0``4.C\____BT0D$/^P#`H``/^P"`H``/^P!`H``(M$
+M)!P%[`D``%#H_/___X/$()"#OR@*````=$?_MS`*``#_MRP*``#_MR@*``"-
+MAQ`*``!0Z/S___^+1"00_[`P"@``_[`L"@``_[`H"@``BT0D'`40"@``4.C\
+M____@\0@D(._<`H```!T1_^W>`H``/^W=`H``/^W<`H``(V'6`H``%#H_/__
+M_XM$)!#_L'@*``#_L'0*``#_L'`*``"+1"0<!5@*``!0Z/S___^#Q""0@[],
+M"@```'1'_[=4"@``_[=0"@``_[=,"@``C8<T"@``4.C\____BT0D$/^P5`H`
+M`/^P4`H``/^P3`H``(M$)!P%-`H``%#H_/___X/$()"#OY0*````=$?_MYP*
+M``#_MY@*``#_MY0*``"-AWP*``!0Z/S___^+1"00_["<"@``_["8"@``_["4
+M"@``BT0D'`5\"@``4.C\____@\0@D(._N`H```!T1_^WP`H``/^WO`H``/^W
+MN`H``(V'H`H``%#H_/___XM$)!#_L,`*``#_L+P*``#_L+@*``"+1"0<!:`*
+M``!0Z/S___^#Q""0@\0<6UY?7<-64X/L$(M<)!Q3Z/S___^-LV`,``")-"3H
+M_/___XD<).C\____QP0DT`<``.C\____B1PDZ/S___^)'"3H_/___X/$"&H!
+M4^C\____@\0(:@%6Z/S___^#Q!1;7L.-=@"#[!AHP`4``.C\____N`````"#
+MQ!S#D)"+1"0$Q@`(QD`!$H!\)`@!&=+WTH/B!(A0`L9``P#&0`0`QD`%`,9`
+M!@#&0`<`QD`(`,9`"0#&0`H`QD`+`(!\)`P!&=*#XB"(4`S&0`T`QD`.`,9`
+M#P#&0!``QD`1`,9`$@#&0!,`N!0```##C78`55=64X/L&(M\)#"*1"0TB$0D
+M%P^V="0X_W0D+.C\____B<6#Q!"X`````(7M#X26````BUT(B?(/ML)0#[9$
+M)`]0C4,$4.C\____B<;&`P#&0P$`QD,"`,9#`P")/"3_="0LZ/S___^#Q!"Y
+M`````+H0````C4<DB`A`2G7ZC5X$QD<D%<9')1&(7RC&1RD`C7<\#[;;B5\@
+MQT=D`````(M%"(E'-(EO4(/L"&H`5NC\____4_]U$/]U#%;H_/___[@!````
+M@\0@@\0,6UY?7<.0D)!75E.+?"00BT0D%(G&9HE'!,9'"@!FQT<(``"[````
+M`&8YPW,8C78`#[?+BQ>)\&8IV$AFB01*0V8Y\W+K6UY?PXUV`%93BUPD#(M$
+M)!")QF:)0P3&0PH!9L=#"```N0````!F.<%S#P^WT8L#9HD,4$%F.?%R\5M>
+MPXGV4XM<)`B`>PH!=2EFBT,(#[?(BQ-`9HE#"&:+%$IF.T,&<@9FQT,(``!F
+M_TL$#[?"ZQ")]F;_2P0/MU,$BP,/MP106\-64X/L"(M,)!2+="08@'D*`74I
+M#[=1"`^W002)1"0$C00"#[=1!HD4))GW/"2+&6:)-%-F_T$$ZQ&-=@`/MU$$
+MBP%FB3109O]!!(/$"%M>PXM$)`1F@W@$``^4P`^VP,.+1"0$N@`````Y`'0.
+MBP"+2`2+$(E*!(D1B<*)T,.)]HM4)`2X`````#D2=`V+0@2+2`2+$(E*!(D1
+MPY!64X/L!(M<)!"+<T2*0SR(1"0#N0````"Z<````(G8D(@(0$IU^HES1(I$
+M)`.(0SR#Q`1;7L.)]H/L$(M4)!2+3"08BD$!B$(!BD$"B$("BT$$B4($#[9"
+M`8T$0,'@`E#_<0C_<@CH_/___X/$',.04X/L!(M,)`R+5"00BD0D%(A$)`.S
+M`#C#<QN)]HH!.@)T"K@`````ZQ&-=@!!0D,Z7"0#<N>X`0```(/$!%O#D(M$
+M)`3&0`$`BU0D"(A0`L=`!`````##D%93BT0D#(MT)!@/ME`!C112BT@(C1R1
+M_D`!`7`$N0````"Z#````(G8C78`B`A`2G7ZBT0D$(M4)!2)`XE3!(GPB$,(
+MB?(/ML:(0PG!ZA"#XC^*0PJ#X,`)T(A#"EM>PXM4)`2*0@$Z`@^2P`^VP,.Y
+M_P```+H``@``BT0D!(GVB`A`2G7ZPY!3@^P$BTPD#(M<)!"*1"04B$0D`[@`
+M````C78`#[?0@'R1`O]U#F:)')&*7"0#B%R1`NL'0&:#^']VX0^WP(/$!%O#
+MD%=64XMT)!"+5"08BTPD'`^W1"04@'R&`O]U#6:)%(:(3(8"ZQ>-=@`/ML%0
+M#[?"4%;H_/___P^WP(/$#%M>7\-64XM<)`R+="00BDPD%+@`````D`^WT#A,
+MDP)U$V8Y-)-U#<9$DP+_9L<$D___ZP=`9H/X?W;=#[?`6U[#C78`5E.+7"0,
+MBW0D$(I,)!2X`````)`/M]`X3),"=0=F.323=`B00&:#^']VZ68]@`!U!;B`
+M`0``#[?`6U[#55=64XML)!2`?20(=#J`?20H=#2`?22H="Z`?22(="B`?20*
+M="*`?20J=!R`?22J=!:`?22*=!"`?20O=`J`?22/#X46`@``#[9%)(/X+P^$
+MFP```(/X+W\F@_@*=&6#^`I_#(/X"'1;Z=(!``")]H/X*'1[@_@J=';IP0$`
+M`)`]CP````^$Z0```#V/````?QX]B`````^$UP```#V*````#X3,````Z9,!
+M``"-=@`]J````'1Q/:H```!T:NE]`0``D`^V126#X!_!X!`/ME4FP>(("=`/
+MME4G"=")QK\`````#[95*.EC`0``C78`#[95)L'B&`^V12?!X!`)P@^V12C!
+MX`@)P@^V12D)PHG6OP`````/ME4KP>((#[9%+`G"Z2@!```/ME4FP>(8#[9%
+M)\'@$`G"#[9%*,'@"`G"#[9%*0G"B=:_``````^V52K!XA@/MD4KP>`0"<(/
+MMD4LP>`("<(/MD4M"<+IW@```(GV#[9U)HGWO@````#!YQ@/MDTGB<NY````
+M`,'C$(GP"<B)^@G:#[9-*(G+N0````#!XPB)Q@G.B=<)WP^V12F)PK@`````
+MB?$)P8G["=,/MD4JN@`````/I,(8P>`8B<X)QHG?"=</MD4KN@`````/I,(0
+MP>`0B?$)P8G["=,/MD4LN@`````/I,((P>`(B<X)QHG?"=</MDTMNP````")
+M\`G(B?H)VHG&B=</ME4NP>(8#[9%+\'@$`G"#[9%,,'@"`G"#[9%,0G"ZQ&0
+MO@````"_`````+H`````D(EU6(E]7(E58&:#31(!6UY?7<.04X/L$(M<)!@/
+MMD,S4`^V0S)0#[9#,5`/MD,P4`^V0R]0#[9#+E`/MD,M4`^V0RQ0#[9#*U`/
+MMD,J4`^V0RE0#[9#*%`/MD,G4`^V0R90#[9#)5`/MD,D4%-HK`(``.C\____
+M@\1(#[=#$%!HM0```.C\____@\086\.)]E=64XM\)!"+7"04NO____^Y````
+M`&8YV7,=OF`&``"0#[?!B@0X,=`/ML#!Z@@S%(9!9CG9<NF)T%M>7\.0D)!3
+MBTPD"(L!BY`$`0``B14`````B=.!XW[__O^+`8F8!`$``(G3@>-^__+_BT$$
+MB1B+002)6`R+002)6!"+002)6!2+002)6!B+002)6`2+`8N`5`$``*,`````
+MB<.!X_X`__^+`8F85`$``%O#C78`5E.#[`2+="04BE0D&(M$)!"+&(/^`W80
+MBX3S@`$``*,`````ZPZ)]HN$\X`!``"C`````(/@_H/^`W8,B83S@`$``.L*
+MC78`B83S@`$``(32=&&#_@-V#HN$L]`!``"C`````.L,BX2ST`$``*,`````
+M@\@"@_X#=@F)A+/0`0``ZPF)A+/0`0``B?:#_@-V#XN$L]`!``"C`````.L-
+MD(N$L]`!``"C`````*@"==SK9HGV@_X#=@W'A/,P`@```````.L+QX3S4`(`
+M``````"#[`QH$"<``.C\____@\00@_X#=@Z+A/,T`@``HP````#K#(N$\U0"
+M``"C`````(/(`8/^`W8)B83S-`(``.L'B83S5`(``(/$!%M>PXGV5U93@^P0
+MBWPD((I$)"2(1"0/BDPD*(A,)`Z+-[L`````@'\F``^$D@$``)`/MD0D#XC9
+MT_BH`0^$<P$``(/[`W8.BX3>A`$``*,`````ZPR+A-Z$`0``HP````"#X/Z#
+M^P-V#(F$WH0!``#K"HUV`(F$WH0!``"#[`QH$"<``.C\____@\00@'PD#@!T
+M8H/[`W8.BX2>T`$``*,`````ZPR+A)[0`0``HP````"#R`*#^P-V"8F$GM`!
+M``#K"HF$GM`!``"-=@"#^P-V#XN$GM`!``"C`````.L-D(N$GM`!``"C````
+M`*@"==SK9HGV@_L#=@W'A-XP`@```````.L+QX3>4`(```````"#[`QH$"<`
+M`.C\____@\00@_L#=@Z+A-XT`@``HP````#K#(N$WE0"``"C`````(/(`8/[
+M`W8)B83>-`(``.L'B83>5`(``(/[`W8/QX3>@`$```$```#K#8GVQX3>@`$`
+M``$```"#^P-V$(N$WH0!``"C`````.L.B?:+A-Z$`0``HP````"#R`&#^P-V
+M#(F$WH0!``#K"XUV`(F$WH0!``"00P^V1R8YV`^';_[__X/$$%M>7\-3BUPD
+M"(I,)`R+`XN`!`$``*,`````B<)F@7LD@&1T$&:!>R2`D70(9H%[)("4=10/
+MMLF#P0BX`0```-/@"<+K$HUV``^VR8/!#+@!````T^`)PHL#B9`$`0``6\.-
+M=@!3BUPD"(I,)`R+`XN`!`$``*,`````B<)F@7LD@&1T$&:!>R2`D70(9H%[
+M)("4=10/MLF#P0BX_O___]/`(<+K$HUV``^VR8/!#+C^____T\`APHL#B9`$
+M`0``6\.-=@!64X/L!(MT)!`/MEPD%%-6Z/S___^#[`1H$"<``.C\____4U;H
+M_/___X/$'%M>PY!3BUPD"(I,)`R`^?]T>H#Y'W<YBY,8`0``B14`````N`$`
+M``#3X(G!]]`AT(F#&`$``(N#6`$``*,`````(<AT1XF#6`$``.L_C78`BY,<
+M`0``B14`````#[;)@^D@N`$```#3X(G!]]`AT(F#'`$``(N#8`$``*,`````
+M(<AT"(F#8`$``(GV6\.)]E=64XMT)!B*7"04BT0D$(LX@/L#=A(/ML/'A,<`
+M`@``#`$``.L0B?8/ML/'A,<``@``#`$``(/L#&@0)P``Z/S___^#Q!"`^P-V
+M+0^VRP^V5@/!XA@/MD8"P>`0"<(/MD8!P>`("<(/M@8)PHF4SP0"``#K*XUV
+M``^VRP^V5@/!XA@/MD8"P>`0"<(/MD8!P>`("<(/M@8)PHF4SP0"``"`^P-V
+M$P^VP\>$QP`"```0`0``ZQ&-=@`/ML/'A,<``@``$`$``(/L#&@0)P``Z/S_
+M__^#Q!"`^P-V+0^VRP^V5@?!XA@/MD8&P>`0"<(/MD8%P>`("<(/MD8$"<*)
+ME,\$`@``ZRN)]@^VRP^V5@?!XA@/MD8&P>`0"<(/MD8%P>`("<(/MD8$"<*)
+ME,\$`@``6UY?PY"0D%.#[#"+7"0XC40D+E"-1"0P4(U$)#)0C40D-%"-1"0V
+M4(U$)#E0C40D/%"-1"0^4(U$)$%0C40D0E"-1"1%4(U$)$A0C40D2U`/MT,D
+M4.C\____@\0\#[9$)!=0#[9$)!Q0C40D&%#H_/___VH!#[94)">-!-+!X`(I
+MT,'@`U#_<Q"-@T`%``!0Z/S___^#Q"!J`0^V1"09C01`C02`P>`#4/]S$(V#
+M7`4``%#H_/___X/$$&H!#[9$)!B-!$"-!,")PL'B!2G"P>("4O]S$(V#>`4`
+M`%#H_/___X/$$&H!#[=$)"+!X`)0_W,0C8.4!0``4.C\____@\00:@$/MU0D
+M&HT$U0`````IT,'@!%#_<Q"-@T`&``!0Z/S___^#Q!!J`0^V1"0=#[=4)!H/
+MK\*-!$#!X`)0_W,0C8/P!0``4.C\____@\00:@%H``(``/]S$(V##`8``%#H
+M_/___X/$$`^V1"034&@`"```_W,0C8/,!@``4.C\____@\00:@$/MD0D((T$
+M@,'@`E#_<Q"-@W@&``!0Z/S___^#Q!!J`0^V1"0AC13`C110P>(#4O]S$(V#
+ME`8``%#H_/___X/$$&H!#[=$)!Z-!$#!X`-0_W,0C8.P!@``4.C\____@\00
+M:@$/MT0D(M'@4/]S$(V#Y`@``%#H_/___X/$$&H!#[9$)!?1X%#_<Q"-@PP)
+M``!0Z/S___^#Q!!J`0^V1"09T>!0_W,0C8,T"0``4.C\____@\00:@$/MD0D
+M&-'@4/]S$(V#7`D``%#H_/___X/$$&H!#[9#)M'@4/]S$(V#A`D``%#H_/__
+M_X/$$&H!#[=$)"3!X`50_W,0C8-<!@``4.C\____@\00:@'_="00_W,0C8.L
+M"0``4.C\____QP0D`0```&I`#[=$)#+!X`90_W,0C8/("0``4.C\____@\04
+M:@%H``$``&@`&0``_W,0C8/L"0``4.C\____@\04:@%H@`````^W5"0RC032
+MC02"C01"P>`$4/]S$(V#$`H``%#H_/___X/$%&H!:@0/MT0D.,'@`E#_<Q"-
+M@S0*``!0Z/S___^#Q!1J`6H$#[=$)#K!X`)0_W,0C8-8"@``4.C\____@\04
+M:@%J"`^V1"0PP>`+4/]S$(V#?`H``%#H_/___X/$%&H!:@@/MU0D+HT$DHT$
+M@,'@`BG0P>`"4/]S$('#H`H``%/H_/___[@`````@\1(6\.)]E575E.#[!R]
+M`````(M$)##&0#D`QD`X`,9`-P#'@%P,````````QH!9#````+D`````NA`!
+M``"+7"0PC8,X"P``C78`B`A`2G7ZBT0D,`7,````BU0D,(F"S````(F"T```
+M`(G0!=0```")@M0```")@M@```"-0`B)@MP```")@N````"-0`B)@N0```")
+M@N@```"-0`B)@NP```")@O````"-0!")@OP```")@@`!``"-0`B)@@0!``")
+M@@@!``"-0/")@O0```")@O@```"#[`B-1"0B4(U$)"10C40D)E"-1"0H4(U$
+M)"I0C40D+5"-1"0P4(U$)#)0C40D-5"-1"0V4(U$)#E0C40D/%"-1"0_4`^W
+M0B10Z/S___^*1"1'BTPD<(A!+HI$)$B(02^*1"1)B(')````9HM$)%)FB4%`
+MBT0D6&:)@30+``!FBT0D6DAFB8$V"P``@\1`#[=!)#V`D0``=`L]@)0```^%
+M1`D``(M<)##&0S4$QD,K!,9#-D#&0S0`QH/&````"<9#+`"#[`R)V`5`!0``
+M4.C\____B8-8!0``@\00NP`````/MDPD!XT4R<'B`BG*C0S5`````.L$B!A)
+M0(7)=?B#[`R+1"0\!5P%``!0Z/S___^+5"1`B8)T!0``@\00N0`````/ME0D
+M"8T44HT4DL'B`W0&B`A`2G7Z@^P,BT0D/`5X!0``4.C\____BTPD0(F!D`4`
+M`(/$$+L`````#[94)`B-%%*-%-*)T<'A!2G1B<K!X@)T!H@80$IU^H/L#(M$
+M)#P%E`4``%#H_/___XM<)$")@ZP%``"#Q!"Y``````^W5"02P>("=`:("$!*
+M=?J#[`R+1"0\!0P&``!0Z/S___^+5"1`B8(D!@``B=`%\`4``(D$).C\____
+MBTPD0(F!"`8``(G#B<@%0`8``(D$).C\____BU0D0(F"6`8``(G"O@````"#
+MQ!!F.W0D"G,WBTPD,('!W````(E:1(I$)`V(0CR+002)402)"HE"!(D0#[9$
+M)`V-!$"-'(.#PG!&9CMT)`IRTX/L#(M$)#P%7`8``%#H_/___XM,)$")@70&
+M``")PKX`````@\009CMT)!1S)HM,)#"!P>0```#&0@@`BT$$B5$$B0J)0@2)
+M$(/"($9F.W0D%'+D@^P,BT0D/`5X!@``4.C\____BUPD0(F#D`8``(G"O@``
+M``"#Q!"`?"00`'0DB=F!P>P```"+002)402)"HE"!(D0@\(41F8/MD0D$&8Y
+M\'?D@^P,BT0D/`64!@``4.C\____BU0D0(F"K`8``(G"O@````"#Q!"`?"01
+M`'0IBTPD,('!_````(M!!(E1!(D*B4($B1"!PI@```!&9@^V1"019CGP=^&#
+M[`R+1"0\!;`&``!0Z/S___^+3"1`B8'(!@``B<*^`````(/$$&8[="0.<R*+
+M3"0P@<'T````BT$$B5$$B0J)0@2)$(/"&$9F.W0D#G+HO@````"`?"0'`'1&
+MBWPD,(''!`$```^WWH/L#(M$)#P%S`8``%#H_/___XM4)$")A)KD!@``@\00
+MBU<$B4<$B3B)4`2)`D9F#[9$)`=F.?!WQ(/L#(M$)#P%Y`@``%#H_/___XM,
+M)$")@?P(``")@0`)``!FBT0D(F:)@08)``"#Q`@/M\!0B<@%``D``%#H_/__
+M_X/$!(M$)#P%#`D``%#H_/___XM<)$")@R0)``")@R@)``!F#[9$)!=FB8,N
+M"0``@\0(#[?`4(G8!2@)``!0Z/S___^)V`4T"0``B00DZ/S___^)@TP)``")
+M@U`)``!F#[9$)!EFB8-6"0``@\0(#[?`4(G8!5`)``!0Z/S___^)V`5<"0``
+MB00DZ/S___^)@W0)``")@W@)``!F#[9$)!AFB8-^"0``@\0(#[?`4(G8!7@)
+M``!0Z/S___^)V`6$"0``B00DZ/S___^)@YP)``")@Z`)``!F#[9#)F:)@Z8)
+M``"#Q`@/MD,F4(G8!:`)``!0Z/S___^)V`6L"0``B00DZ/S___^)@\0)```/
+MMDPD&(T4R<'B`RG*C121C0R5=$4``(/$$+L`````B<J%R70&B!A`2G7ZBU0D
+M,(N"Q`D``(D(BUPD,(N3Q`D``(I$)`B(0@2#[`0/MD0D#%!1_[/$"0``Z/S_
+M__^^`````(/$$(![)@!T<0^WQHT40,'B`RG"BT0D,(T4D(VJ*`$``(GQB$T$
+MQD4%`(F"*`$``,9%"@#&130`QD4<`,=%6`````"-@D@!``")12")122-@E0!
+M``")12R)13"!PF`!``")53B)53S&108"1HM<)#!F#[9#)F8Y\'>/BT0D,,9`
+M-`"^``````^WQHM4)##&A!`>!0``_T9F@_X#=NJ^`````(!\)`<`='\/M\Z+
+M7"0PBY-8!0``C03)P>`"*<C!X`/&1!`C`8N36`4``,9$$"(`BY-8!0``QD00
+M2/^+DU@%``#&1!`^_XN36`4``&;'A!"0``````#'A(N8`@```````(G!`XM8
+M!0``C5$0B5$0`X-8!0``@\`0B4`$1F8/MD0D!V8Y\'>!BT0D,&;'@,0`````
+M`+X`````C78`#[?&BU0D,,:$$)@$``#_1F:!_H4`=NF^`````(!\)`@`#X2G
+M````#[?&BUPD,(N+D`4``(T$0(T$P(G"P>(%*<+!X@+&1`HP`(N#D`4``,9$
+M`C$`BX.0!0``QT0"#`````")T0.+D`4``(U!$(E!$(G0`X.0!0``@\`0B4`$
+MB=$#BY`%``"-01B)01B)T`.#D`4``(/`&(E`!(N#D`4``(EL`@B)T0.+D`4`
+M`(U!*(E!*`.3D`4``(/"*(E2!$9F#[9$)`AF.?`/AUG___^+1"0PQH#'````
+M@+X`````@'PD"0!T=`^WUHM,)#"+@70%``"-%%*-%)+!X@-FQT0",@0`BX%T
+M!0``QD0")@"+@70%``#&1`(H_XN!=`4``,9$`C3_B=&+7"0P`XMT!0``C4$4
+MB4$4B=`#@W0%``"#P!2)0`2+@W0%``");`)41F8/MD0D"68Y\'>,BT0D,,:`
+MR````(*#[`B+1"0X!>0)``!0BT0D/`7("0``4.C\____BU0D0(F"X`D``(/$
+M"(G0!0@*``!0C4#D4.C\____BTPD0(F!!`H``(/$"(G(!2P*``!0C4#D4.C\
+M____BUPD0(F#*`H``(/$"(G8!5`*``!0C4#D4.C\____B8-,"@``@\0(B=@%
+M=`H``%"-0.10Z/S___^)@W`*``"#Q`B)V`68"@``4(U`Y%#H_/___XF#E`H`
+M`(M4)$"+NI@*``"+JIP*``")1"00O@````"#Q!"`?"00`'1.B=.!P^P```"#
+M[`Q3Z/S___^)PHM,)!")2`B)>`R):!"#Q!"+0P2)4P2)&HE"!(D0@<$`"```
+MB0PD@<<`"```@]4`1F8/MD0D$&8Y\'>Z@^P(BT0D.`6\"@``4(M$)#P%H`H`
+M`%#H_/___XM<)$")@[@*``"+5"1`B[J\"@``BZK`"@``B40D$+X`````@\00
+M9CMT)`YS2HG3@</T````@^P,4^C\____B<*+3"00B4@(B7@,B6@0@\00BT,$
+MB5,$B1J)0@2)$('!C`$``(D,)(''C`$``(/5`$9F.W0D#G*^@\0<6UY?7<-5
+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
+M%(M$)"C'``$```"X`0```.E>`@``]D9F`70&]D,(`708]D9F`74&]D,(`74,
+M@'X4@70&]D,("'0J@^P(B?H/ML)05>C\____@\00A,!T%(M$)"C'``$```"X
+M`0```.D0`@``]D9F`0^$?@$``/9#"`$/A'0!``"#[`S_="04Z/S___^#Q!!F
+M@_@?#X9;`0``BU0D*,<"`0```+@!````Z<\!``"-=@#V0P8"=#*+1B0E____
+M`#WA`1``=".+5"0(BD)+.D)*<A>+1"0HQP`!````N`$```#IEP$``(UV`(M&
+M)"7___\`/>$!$``/A/D```"+5"0(#[="-HG"T>J#X@&Q`8!^).$/A=X```"`
+M?B4!#X74````#[9&)H/H!H/X"0^'K````/\DA4P(```/ML%0:@%65>C\____
+M@\00A,`/A:4```"+1"0HQP`"````N`$```#I&0$```^VP5!J`%95Z/S___^#
+MQ!"$P'5]BU0D*,<"`@```+@!````Z?$```!J`0^VPE!65>C\____@\00A,!U
+M58M$)"C'``(```"X`0```.G)````:@`/ML)05E7H_/___X/$$(3`=2V+5"0H
+MQP("````N`$```#IH0```)#&1A0$BT0D*,<``````+@!````Z8@```"#[`R-
+MA0`)``!0Z/S___^#Q!"$P'02BU0D*,<"`0```+@!````ZV&0@'XDX752@'XE
+M`75,@'XF#W5&@'XI`75`9@^V1BC!X`AF#[96)P'0@^P(#[?`4%7H_/___X/$
+M$#E&2'4$A<!U&,9&%`2+1"0HQP``````N`$```#K"XUV`+@`````C78`@\0,
+M6UY?7<-64XM<)`R+="00N0````"Z#0```(GPB?:("$!*=?J*0R6(!HI#)HA&
+M`8I#)XA&`HI#*(A&`XI#*8A&!(I#*HA&!8I#*XA&!O9#9@1T'HI#+(A&"(I#
+M+8A&"8I#+HA&"HI#+XA&"XI#,(A&#+@!````6U[#D%575E.+;"04BWPD&+H`
+M````O@````")]KD'````#[8<-XUV`-'BB=C3^*@!=!+WP@````%U&H'R=R?;
+M`.L2B?;WP@````%T"('R=R?;`(GV27G11H/^!WZ_B=#!Z!"(10")T,'H"(A%
+M`8A5`EM>7UW#C78`55=64X/L8(ML)'B+1"1TBX`H"@``B40D(,=$)!@`````
+MQT0D%`````#'1"00`````,=$)`P`````9L=%'O\/C40D0%!5_W0D?.C\____
+M@\00A,!T"8M$)#SIWPP``(M%)"7___\`/>$!$``/A2,!``"#[`QHB!,``.C\
+M____@\009H%]$(4`#X>;````#[=%$(M4)'"`O!"8!```_P^$A0```&:#?1!_
+M=R,/MI00F`0``(M<)'"+BU@%``"-!-+!X`(IT(M$P2B*0`3K76:!?1"!`'<L
+M#[=%$(MT)'`/MH0PF`0``(N.D`4``(T$0(T$P(G"P>(%*<*+1)$(BD`$ZRD/
+MMT40BU0D<`^VA!"8!```BY)T!0``C01`C02`BT3"5(I`!.L$B?:P_P^VP(M<
+M)'`/MH08'@4``(E$)!B-!$#!X`,K1"08C82#*`$``(E$)!B+BY`%``!F@7T0
+MA0!W)0^W11`/MH08F`0``(T$0(T$P(G"P>(%*<*-%)&)5"00Z84!``"!P>P&
+M#0")3"00Z78!``"[_P```&:!?1"%`'<1#[=%$(MT)'!F#[:<,)@$``!F@7TD
+MX0%U#HI%)H/H$3P!#X;I````9H%]$(4`#X>9````#[=%$(M4)'"`O!"8!```
+M_P^$@P```&:#?1!_=R,/MI00F`0``(MT)'"+CE@%``"-!-+!X`(IT(M$P2B*
+M0`3K6V:!?1"!`'<L#[=%$(M4)'`/MH00F`0``(N*D`4``(T$0(T$P(G"P>(%
+M*<*+1)$(BD`$ZR</MT40BTPD<`^VA`B8!```BY%T!0``C01`C02`BT3"5(I`
+M!.L"L/\/ML"+="1P#[:$,!X%``")1"08C01`P>`#*T0D&(V$AB@!``")1"08
+M#[?3C032P>`"*="+EE@%``"-!,*)1"04ZR$/M\.-!$"-!("+3"1PBY%T!0``
+MC03"B40D#(MP5(ET)!AF@7TDX0%U$8I5)HU"[SP!=B:-0O\\`78?9H'[_P!T
+M"HM$)!3V0",$=0[&110&N`````#I,PH``(/L"(U$)$!0_W0D?.C\____9HE$
+M)#!FB44>@\0$_W0D?.C\____B40D%(/$$+@"````@WPD!``/A/8)``"+5"0$
+MB554#[=$)""-',"-')B-'%C!XP0#7"0<B=B+3"1P*X$H"@``@\`@F8G&B=<#
+ML2P*```3N3`*``"+1"0XB7`@BTPD.(EY)(M$)`2+<`R+>!"+1"0XB7`HBTPD
+M.(EY+(M$)#B+5"0@9HE0"+D`````NK`$``")V(UV`(@(0$IU^F:!?23A`75M
+MBD4F@^@1/`%W8XU$)$!0BT0D/`^V0`A05?]T)"#H_/___X/$$`^W5"0@C032
+MC02"C01"P>`$`T0D'(M,)'`K@2@*```%(`0``)F)QHG7`[$L"@``$[DP"@``
+MBT0D.(EP$(M,)#B)>13IK`$``(MT)!CV1@8!=2N+120E____`#WA`1``#X0,
+M`0``BU0D%`^V0B"H`0^$_````*@$#X3T````]D5F('00C40D0%!5Z/S___^#
+MQ`CK&XU$)$!0BT0D/`^V0`A05?]T)"#H_/___X/$$`^W5"0@C032C02"C01"
+MP>`$`T0D'(M,)'`K@2@*```%(`0``)F)QHG7`[$L"@``$[DP"@``BT0D.(EP
+M$(M,)#B)>11F@7TDX0%U#HI%)H/H$3P!#X;M````BW0D%`^V1B"H`@^$W0``
+M`*@$#X35````J`$/A,T````/MU0D((T$THT$@HT$0L'@!`-$)!R+5"1P*X(H
+M"@``F8G&B=>+3"1P`[$L"@``$[DP"@``BT0D.(EP&(M,)#B)>1SIA@```(UV
+M`(M<)!CV0P8"='D/MT0D((T,P(T,B(T,2,'A!`-,)!R)R(MT)'`KAB@*``"9
+MB<:)UXM<)'`#LRP*```3NS`*``"+1"0XB7`8BUPD.(E['(MT)'`KCB@*``"!
+MP2`$``")R)F)SHG7BTPD<`.Q+`H``!.Y,`H``(M$)#B)<!"+3"0XB7D4BT0D
+M.(!(`0)F#[95/8M$)#AFB5`"O@````"`?3T`="Z-%';!X@*)TXM$)`0#6`B+
+M342+!`J)`XM$"@2)0P2+1`H(B4,(1@^V13TY\'?2BU4@BT0D.(E0#&:!?23A
+M`75.BD4F@^@1/`%W1`^W7"0@4_]T)#Q5_W0D).C\____C40D4%"-!-N-!(.-
+M!$/!X`0#1"0P4%7_="0TZ/S___^+5"0X@&((_H/$(.ES!0``BTPD&/9!!@(/
+MA/($``"+1"0XQD`&_HM$)#B`8`?^@WPD%``/A.8```"+7"04#[9#(*@"#X36
+M````J`0/A,X```"H`0^$Q@````^W1"0@4/]T)#Q54>C\____@\00]D5F`70/
+MBT0D.&:+0`C!X`.(1"1!C40D0%`/MU0D)(T$THT$@HT$0L'@!`-$)"!05?]T
+M)"3H_/___X/$$/9%9@%T"HMT)!B`3@@!ZPB+1"08@&`(_@^W1"0@C0S`C0R(
+MC0Q(P>$$BU0D',8$$:&+7"04BI.R````@^(/BW0D'(I$,0&#X/`)T(A$,0%F
+MBT,80`^VT,'B"`^VQ`G09HE$,0*!PYP```")7"0(Z<(#``")]F:!?23A`0^%
+MD`(```^V12:#^`]T#H/X$`^$X@```.F=`P``9@^V52C!X@AF#[9%)P'"BT0D
+M.,9`!`V+1"0X@&`%_H!,)#<(BUPD.`^V116+="1P#[:.Q@```-/@9@E#"(M,
+M)#B*00&#X!^#R""(00$/MT0D((T,P(T,B(T,2,'A!(M$)!R-'`&+12J)@S@$
+M``"+12Z)@SP$```/ML+!X`@/MM8)PHMT)!QFB90Q1`0``(I%*8B$,4($``#&
+M`Y&+5"049HM"&$`/MM#!X@@/ML0)T&:)1#$"BUPD%(J3L@```(/B#XI$,0&#
+MX/`)T(A$,0&!PYP```")7"0(Z<`"``"+5"0X#[9%%8MT)'`/MH[&````T^!F
+M"4((#[=$)""-%,"-%)"-%%#!X@2+1"0<Q@0"@6;'1`("__^+7"00BHN+````
+M@^$/BW0D'(I$,@&#X/`)R(A$,@&#?30`=0[&110AN`````#I*@0``/9%)P%T
+M38-].`!T1XM%.(E$)`@/MT0D((T<P(T<F(T<6,'C!(/L"/]T)!"+5"1\_[+$
+M"0``Z/S___^#X`^+3"0LBE0+`8/B\`G"B%0+`8/$$.L(BUPD$(E<)`B[!```
+M`(M5-`^V0@$]DP```'=M_R2%=`@``(/#!.MA@\,$ZUR#PPCK5X/#".M2@\,(
+MZTV#PPCK2(/#".M#@\,(ZSZ#PQCK.8/#&.LT@\,,ZR^#PPCK*@^V6@2-')T(
+M````ZQV!PX@```#K%8/#).L0@\,DZPN#PR3K!H'#B````(U3`\'J`HM$)#B(
+M4`2+3"0X9L'J"(/B`8I!!8/@_@G0B$$%#[=4)""-!-*-!(*-!$+!X`2+="0<
+MC80P(`0``(/L!%/_=310Z/S___^#Q!#I)@$``(GV#[9%)(/H!#VK````=S3_
+M)(7$"@``#[9%+,'@"`^V52V-1!#]@_@*=P__)(5T#0``BT0D.(!(`02+1"0X
+M@$@!`>L(BT0D.(!@`?N+1"0XQD`$#8M$)#B`8`7^BU0D.`^V116+7"1P#[:+
+MQ@```-/@9@E""(M$)#B`8`$?#[=$)""-',"-')B-'%C!XP2+="0<QH0S(`0`
+M``:+?"04@<><````5XG>`W0D((V&(00``%#H_/___U>-AB4$``!0Z/S___^-
+MED0$``"+122)AD0$``"+12B)0@2+12R)0@B+13")0@S&!I&+1"0DBI"R````
+M@^(/BTPD+(I$"P&#X/`)T(A$"P&#Q!"+="049HM&&$`/MM#!X@@/ML0)T&:)
+M1`L"B7PD"(-\)`@`#X29````#[=4)""-!-*-!(*-!$+!X`0#1"0<BTPD"(L1
+MB5`$BU$$B5`(ZW.+7"08]D,&`71I#[=$)"!0_W0D/%53Z/S___^#Q!#V168!
+M=`^+1"0X9HM`",'@`XA$)$&-1"1`4`^W5"0DC032C02"C01"P>`$`T0D(%!5
+M_W0D).C\____@\00]D5F`70*BW0D&(!."`'K"(M$)!B`8`C^#[=<)""+5"1P
+MBX*L!0``B2R8BU0D(&;!Z@4/M]*+3"0@@^$?N`$```#3X(M,)'`)A)&P!0``
+MBT4D)?___P`]X0$0`'4KC40D-%!J`%/_="0DZ/S___^+1"1$)?___Q\-````
+M0(E$)$2#Q!#IJP```&:!?23A`74\BD4F@^@1/`%W,H/L"/]T)!3_="1\Z/S_
+M__^-1"1$4(M<)"`/MD,T4`^W1"0X4/]T)#3H_/___X/$(.MG@^P(_W0D'/]T
+M)'SH_/___XU$)$10BW0D*`^V1CY0#[=$)#A0_W0D-.C\____#[9&((/$(*@"
+M="^H!'0KJ`%T)XM$)#0E____'PT```!@B40D-`^V5CZ#XG_!XA0E__\/^`G0
+MB40D-(U$)#10_W0D=.C\____@\0(N`,```"#Q%Q;7E]=PXUV`%575E.#[`2+
+M;"08BU0D'(M=`(G09L'H!0^W\(G1@^$?N`$```")Q]/GA7RS1'4MB>!0:@`/
+MM\)05>C\____@4PD$````."-1"00@&`#]U!3Z/S___\)?+-$@\08@\0$6UY?
+M7<-55U93@^P,BWPD((MT)"2+1DR+:!QF@7X0A0`/AY\````/MT80@+PXF`0`
+M`/\/A(T```!F@WX0?W<F#[:4.)@$``"+CU@%``"-!-+!X`(IT(M$P2@/MD`$
+M!1`%``#K9I!F@7X0@0!W+@^W1A`/MH0XF`0``(N/D`4``(T$0(T$P(G"P>(%
+M*<*+1)$(#[9`!`40!0``ZR\/MT80#[:$.)@$``"+EW0%``"-!$"-!("+1,)4
+M#[9`!`40!0``ZPB-=@"X#P8```^V7`<.C01;P>`#*=B-G(<H`0``@WY0`'01
+M@^P(_W905^C\____@\00B?:#[`A65^C\____@\0(55/_E9P```"#Q!Q;7E]=
+MPXUV`%575E.#[!B+;"0LBT4`B40D%(U=+%/H_/___XG'@^\@@\0$_W0D%.C\
+M____B<:#Q!"-1R"+4P2)0P2)7R")4`2)`K@!````A?9T=(U6/,9&).'&1B4!
+MQD8F$(!.)P&+3"0DBX&<````B49(BT9,B4@<B<@%D````(E&.,9&%<QF#[9'
+M,V:)1A"+10")1AC'1B"0````B4XTQT9LC-8!`(/L"&H`4NC\____@\0(5O]T
+M)!3H_/___[@`````@\00@\0,6UY?7<.055=64X/L#(M\)"2+="0@BT8HB40D
+M"(LH9HM/'HG(9L'H!0^WV(/A'[@!````T^"%1)U$#X5C`P``BU4`C02=``,`
+M`(F"<`$``(M%`(N`=`$``*,`````B<+&1Q0ABT<D)?___P`]X0$/`'4@@^P(
+M:@!7Z/S___^#Q`QJ`%=5Z/S___^#Q!#I$0,``)!FBT\>@^$?N`$```#3X(7"
+M=!:#[`AJ`5?H_/___XDL).C\____@\00#[:&L````(/X!`^'V`(``/\DA:`-
+M``#&AK`````!@^P$:@%7_W0D%.C\____@\00Z;,"``#&AK`````"@^P$:@A7
+M_W0D%.C\____@\00Z94"``#&AK`````#@^P$5FHA_W0D%.C\____@\00@WXL
+M`'0@@^P,:@!J`0^V1DE0_W8L_W0D).C\____@\0@Z58"``"#[`1J`(M4)!`/
+MMD()4%7H_/___X/$$.DZ`@``QH:P````!(-^+`!T,8/L!%9J(?]T)!3H_/__
+M_\<$)`````!J`@^V1DE0_W8L_W0D).C\____@\0@Z?P!``"#[`1J`&HA_W0D
+M%.C\____@\0,:@&+5"00#[9""5!5Z/S___^#Q!#IT`$``(/L!%9J!O]T)!3H
+M_/___X/$$(-^'`!T%8M&'(M(!(U1`8E0!(/Y!0^&HP$``,9&(P'&1B(`@'Y+
+M`'0?D(/L#%7H_/___\<$)`$```#H_/___X/$$(!^2P!UXH-^+`!T$XM6#(M&
+M"(E0!(D"BT8L_D@PZQ6#?C``=`^+5C`/MD9)QT2"/`````"+5@2+!HE0!(D"
+MBT0D"/Y("H.^X`````!T&X/L!&H!#[:&U0```%#_MN````#H_/___X/$$(-^
+M+`!T%8/L!&H!#[9&25#_=BSH_/___X/$$(-^'`!T>8M&',=`8`````#^A5<,
+M``"#[`Q5Z/S___^#Q`QJ`8M&'`^V0`%05>C\____@\0,BT8<#[9``E"+1AP/
+MMD`!4&C"````Z/S___^#Q`S_=AS_M20%``!J`>C\____@\0,_W8<_[4D!0``
+M:@;H_/___\=&'`````"#Q!"#[`A65>C\____@\00BU0D"(!Z!?]T8K\`````
+M@'H*`'9!B=.#PSB)]H/L#%/H_/___XG&@\00BT,$B7,$B1Z)1@2),(!^(O]U
+M#D>)^(M4)`@X0@IWT^L+B?B+5"0(.$(*=Q:+1"0(QD`%_X/L"%!5Z/S___^#
+MQ!"0@\0,6UY?7<-55U93@^P,BUPD)(MT)""+?BB++\=$)`@`````]D<($'0'
+MQH:P````!@^VAK````"#^`$/A(,```"#^`%_"H7`=!WIR0,``)"#^`0/A)L`
+M``"#^`8/A.H!``#IL0,``,:&L`````&#[`A65>C\____QD,4@8!/"`B#Q!"#
+M>U0`=!"#[`B-0U105>C\____@\00C97,````BX7,````B5@$B0.)4P2)G<P`
+M``"#[`Q5Z/S___^#Q!#I5`,``(!G"/?^AK,```#&AK``````QD,4`H/L"%-5
+MZ/S___^)+"3H_/___X/$$.DE`P``D,:&LP````"#?AP`#X1'`0``BT8<BT@$
+MC5$!B5`$@_D%#X<R`0``@&<(]X-[5`!T$(/L"(U#5%!5Z/S___^#Q!"-E<P`
+M``"+A<P```")6`2)`XE3!(F=S````(!/"!"#?BP`=!V#[`QJ`&H"#[9&25#_
+M=BQ7Z/S___^#Q"#IHP(``,9$)`<`@'\*``^&L0```(U'.(D$)(GV@^P,_W0D
+M#.C\____B<.#Q!"+%"2+0@2)6@2)$XE#!(D8@WL<`'0=@^P$_W,<_[4D!0``
+M:@7H_/___X!+)`*#Q!"-=@"#[`13:@97Z/S___^#Q!"`>TL`=#^+1"0(_T0D
+M"#U_EI@`=S"#[`Q5Z/S____'!"0!````Z/S___^#Q!"`>TL`=!*+1"0(_T0D
+M"#U_EI@`=M.-=@#^1"0'BD0D!SA'"@^'5____\9&(@.#[`A65>C\____@\00
+MZ<T!``"0C97,````BX7,````B5@$B0.)4P2)G<P```"#?AP`=!6+1AR+2`2-
+M40&)4`2#^04/AGH!``"#[`QH!`,``.C\____@\0,5FH&5^C\_____D\*@\00
+MBU8$BP:)4`2)`H-^+`!T%(M&+/Y(,(M6#(M&"(E0!(D"ZQF0@WXP`'02BU8P
+M#[9&2<=$@CP`````C78`@'Y+`'1"BT0D"/]$)`@]?Y:8`'<SC78`@^P,5>C\
+M____QP0D`0```.C\____@\00@'Y+`'02BT0D"/]$)`@]?Y:8`';3C78`BU8$
+MBP:)4`2)`H.^X`````!T'8/L!&H!#[:&U0```%#_MN````#H_/___X/$$(GV
+M@WXL`'06@^P$:@$/MD9)4/]V+.C\____@\00D(-^'`!T=HM&',=`8`````#^
+MA5<,``"#[`Q5Z/S___^#Q`QJ`8M&'`^V0`%05>C\____@\0,BU8<#[9"`E`/
+MMD(!4&C"````Z/S___^#Q`S_=AS_M20%``!J`>C\____@\0,_W8<_[4D!0``
+M:@;H_/___\=&'`````"#Q!"#[`A65>C\____@\00ZQ&#[`16:@)7Z/S___^#
+MQ!")]H/L#%7H_/___X/$$(/$#%M>7UW#55=64X/L#(M<)"2+?"0@BV]4BW4`
+M]D4($'0$QD<U!@^V1S6#^`$/A($```"#^`%_"X7`=![I6@,``(GV@_@$#X21
+M````@_@%#X2&`0``Z4$#``#&1S4!@^P(5U;H_/___\9#%(&`30@(@\00@WM4
+M`'00@^P(C4-44%;H_/___X/$$(V6S````(N&S````(E8!(D#B5,$B9[,````
+M@^P,5NC\____@\00Z><"``"`90CW_D<VQD<U`,9#%`*#[`A35NC\____B30D
+MZ/S___^#Q!#IO@(``(!E"/>#>U0`=!"#[`B-0U105NC\____@\00C9;,````
+MBX;,````B5@$B0.)4P2)GLP```"#[`1J`&H&5>C\____@\0,:@$/MD4)4%;H
+M_/___\9$)!L`@\00@'T*``^&@@```(U].(/L#%?H_/___XG#@\00BT<$B5\$
+MB3N)0P2)&(-['`!T&X/L!/]S'/^V)`4``&H%Z/S___^`2R0"@\00D(/L!%-J
+M!E7H_/___X/$$(![2P!T(8UV`(/L#%;H_/___\<$)`$```#H_/___X/$$(![
+M2P!UXOY$)`N*1"0+.$4*=X'&104`@$T($(/L#%7H_/___X/$$.G``0``@&4(
+M]X-[5`!T$(/L"(U#5%!6Z/S___^#Q!"-ALP```"+ELP```")6@2)$XE#!(F>
+MS````(U%.(G".44X#X3H````B40D!(GV@^P,4NC\____B<.#Q!"#>!P`=!R#
+M[`3_<!S_MB0%``!J!>C\____@$LD`H/$$(GV@^P$4VH&5>C\____@\00@'M+
+M`'0AC78`@^P,5NC\____QP0D`0```.C\____@\00@'M+`'7B@WL<`'1<BT,<
+MQT!@`````/Z&5PP``(/L#%;H_/___X/$#&H!BT,<#[9``5!6Z/S___^#Q`S_
+M<QS_MB0%``!J`>C\____@\0,_W,<_[8D!0``:@;H_/___\=#'`````"#Q!"#
+M[`A35NC\____@\00BU0D!#E5.`^%'O___X/L!&H`:@95Z/S___^#Q`A75NC\
+M____QT4H`````(L&BY!8`0``B14`````@\00A=)T"(L&B9!8`0``]D4&`715
+MQD0D"P"`?BL`=AH/ME4)B="*3"0+T_BH`74*08A,)`LX3BMWZH/L"`^V7"03
+M4U;H_/___X/$"%56Z/S___^)V,'@!`'8QX2&/`L```````"#Q!")]H/$#%M>
+M7UW#55=64X/L%(M\)"B+1RB)1"0,BQA74^C\____@\00@+^S`````78'QH>P
+M````!(UW$#EW$`^$)@(``(/L#%;H_/___XE$)!B#Q!"+1Q"+5"0(B5`$B0*)
+M<@2)5Q"]`````.G#`0``B?8/M]6+@ZP%``"+-)"%]@^$K`$``&:+1QAF.T80
+M#X6>`0``#[>3,@L``(N#<`H``#D0=$^00@^W@S8+```YT'<%N@````"+@W`*
+M``"+1)`$J0``"`!U(B7_#P``9CG%=1@Y="0(=1R#[`Q3Z/S___^#Q!#I@0$`
+M`)"+@W`*```Y$'6RBTPD!(!Y-``/A3`!``!F@7X0A0`/AR0!```/MT80@+P8
+MF`0``/\/A!(!``"%_P^$\@````^V1R"H`0^$Y@```*@$#X3>````BQ-FBT8>
+M9L'H!0^WP(T$A0`#``")@G`!``!FBTX>@^$?N@$```")T-/@B<&+`XF(=`$`
+M``^W3AZ+@ZP%``#'!(@`````9HM.'HG(9L'H!0^WP(D$)(/A'XG0T^")P??1
+MBP0D(8R#L`4``&:+3AZ)R&;!Z`4/M\"#X1_3XO?2(52#1#MT)`AT.HM6!(L&
+MB5`$B0*#?E0`=!"#[`B-1E104^C\____@\00C9/,````BX/,````B7`$B0:)
+M5@2)L\P```"#[`@/MT8>4(V#``D``%#H_/____Y/2X/$$.L8BU0D!/9"!@)T
+M#H/L"%97Z/S___^#Q!"0168Y:T`/AS7^__^%_W0I#[9'(*@!="&H!'0=BTPD
+M"(M1!(L!B5`$B0*#[`A15^C\____@\00B?:#Q`Q;7E]=PU575E.#[!2+?"0H
+MBT=4B40D#(L85U/H_/___X/$$(!_-@%V!,9'-02-=Q0Y=Q0/A-P!``"#[`Q6
+MZ/S___^)1"08@\00BT<4BU0D"(E0!(D"B7($B5<4O0````#I@0$```^WU8N#
+MK`4``(LTD(7V#X1L`0``9HM')&8[1A`/A5X!```/MY,R"P``BX-P"@``.1!T
+M3Y!"#[>#-@L``#G0=P6Z`````(N#<`H``(M$D`2I```(`'4B)?\/``!F.<5U
+M&#ET)`AU'(/L#%/H_/___X/$$.DY`0``D(N#<`H``#D0=;)F@7X0A0`/A_(`
+M```/MT80@+P8F`0``/\/A.````"+3"0$@'DT``^%T@```/9!!@$/A,@```"+
+M$V:+1AYFP>@%#[?`C02%``,``(F"<`$``&:+3AZ#X1^Z`0```(G0T^")P8L#
+MB8AT`0``#[=.'HN#K`4``,<$B`````!FBTX>B<AFP>@%#[?`B00D@^$?B=#3
+MX(G!]]&+!"0AC(.P!0``9HM.'HG(9L'H!0^WP(/A']/B]](A5(-$.W0D"'0D
+MBU8$BP:)4`2)`HV3S````(N#S````(EP!(D&B58$B;/,````@^P(#[=&'E"-
+M@P`)``!0Z/S____^3RF#Q!")]D5F.6M`#X=U_O__BU0D!/9"!@%T&XM,)`B+
+M402+`8E0!(D"@^P(45?H_/___X/$$(/$#%M>7UW#55=64X/L#(M\)"#'1"0(
+M`````(V'S````(G".8?,````#X3/`0``B<6-=@"#[`R)UE+H_/___XG#@\00
+M@WA,`'4N@^P,5^C\____B4-,@\00A<!U&XN'S````(E8!(D#B7,$B9_,````
+MZ8@!``")]HM#)"7___\`/>$!$``/A/$```!F@7L0@``/A.4```!F#[9#$&:)
+M0Q!F@_A_=A)F@7LDX0%U(HI#)H/H$3P!=QAF@7L0A0!W$`^W0Q"`O#B8!```
+M_W4:B?;&0Q0&@^P(4U?H_/___X/$$.D*`0``B?9F@7LDX0%U#(I#)H/H$3P!
+M=C>)]HN/6`4``&:!>Q"%`'<=#[=#$`^VE#B8!```C032P>`"*="-!,&)1"0(
+MZPJ!P>@6`0")3"0(9H%[).$!=0N*0R9(/`%V.XUV`&:!>Q"``'0P9H%[).$!
+M=0J*0R:#Z!$\`78>BT0D"/9`(P1U%,9#%`:#[`A35^C\____@\00ZW60@^P(
+M4U?H_/___X/$$(/X`G<*@_@!<QSK"XUV`(/X`W1$ZU&0@^P(4U?H_/___X/$
+M$.M!@WM4`'00@^P(C4-44%?H_/___X/$$(V7S````(N'S````(E8!(D#B5,$
+MB9_,````ZQV#[`A35^C\____@\00B?:)ZCFOS`````^%-O[__X/$#%M>7UW#
+MB?955U93@^P\BD0D5(A$)"`/MLB)RL'B!`'*BUPD4(T4DXN"/`L``(E$)!RX
+M_O___]/`(H)9"P``B$0D&XL3B50D%,=$)!``````@'PD(`-V#,>"<`$``,0!
+M``#K#HM,)!3'@7`!``"H`0``BUPD%(N#=`$``*,`````BDPD((/A`[L'````
+MT^.)Q@G>BT0D%(FP=`$``(/L#&CH`P``Z/S____WTR'>BU0D)(FR=`$``(/$
+M$(!\)"`#=A4/MD0D((N$@M`!``"C`````(G&ZQ</MD0D((M,)!2+A('0`0``
+MHP````")QH/."(!\)"`#=A(/MD0D((M<)!2)M(/0`0``ZQ`/MD0D((M4)!2)
+MM(+0`0``@'PD(`-V%@^V1"0@BTPD%,>$P0`"```X````ZQ0/MD0D((M<)!3'
+MA,,``@``.````(/L#&@0)P``Z/S___^#Q!"`?"0@`W86#[9$)""+5"04QX3"
+M!`(```````#K%`^V1"0@BTPD%,>$P00"````````@WPD'``/A&T(``"_````
+M`(M<)%"`>RL`=C:)]HM4)!P/MD()B?L/MLO3^*@!=!6#[`1J`5'_="1<Z/S_
+M__^#Q!"-=@!'B?B+5"10.$(K=\R+3"0<]D$&`71[@^P(4?]T)%SH_/___X/$
+M"`^V7"0H4_]T)%SH_/___XG8P>`$`=B+7"1@C12#BX)<"P``@\00J0``$`!T
+M"R7__^__B8)<"P``@^P(_W0D)/]T)%SH_/___P^V5"0PB=#!X`0!T(M4)&#'
+MA((\"P```````(/$$.FC!P``BTPD'(!Y-`!T'8/L"%&+7"1<_[/$"0``Z/S_
+M__^+1"0L_D@T@\00@'PD&P`/A)0"``#'1"0,`````,9$)`L`@^P(#[9<)"A3
+M_W0D7.C\____B=C!X`0!V(M,)&"-%(&+@EP+``"#Q!"I```0`'0+)?__[_^)
+M@EP+``"*7"0;BT0D'(A8";\`````BU0D4(!Z*P`/AF$!```/MNN)^P^VRXGH
+MT_BH`0^$/0$``(G(P>`$`<B*5"0;BUPD4(B4@UD+``")^#P#=A&+5"04QX3*
+M``(``#@```#K%(GY#[;!BUPD%,>$PP`"```X````@^P,:!`G``#H_/___X/$
+M$(GX/`-V$`^VP(M4)!2)K,($`@``ZQ")^0^VP8M<)!2)K,,$`@``B?@\`W80
+MBU0D%,>"<`$``,0!``#K#HM,)!3'@7`!``"H`0``BUPD%(N#=`$``*,`````
+MB?F#X0.[!P```-/CB<8)WHM$)!2)L'0!``"#[`QHZ`,``.C\____]],AWHM4
+M)"2)LG0!``"#Q!")^8#Y`W83#[;!BX2"T`$``*,`````B<;K%XG[#[;#BU0D
+M%(N$@M`!``"C`````(G&@\X(B?F`^0-V$`^VP8M<)!2)M(/0`0``ZQ")^@^V
+MPHM,)!2)M('0`0``1XG[BT0D4#A8*P^'HO[__XM$)!R#P"R)PHM,)!PY02QT
+M-X/L#(G34NC\____C5#@B50D'(/$$(M3!(E#!(D8B5`$B0*+3"0,@WD,`'0+
+MB=J+1"0<.5@L=<F#?"0,`'1'BU0D#,9",@"_`````(M,)%"`>2L`=C"+7"0<
+M#[9#"8GYT_BH`704#[9$)`N+7"0,B$P80/Y#,OY$)`M'B?B+5"10.$(K=]"#
+M[`1J`&B!````_W0D*.C\____#[94)#")T,'@!`'0BTPD8,>$@3P+````````
+M@\00Z=0#``"#[`1J`&H&_W0D*.C\____@\0(#[9<)"A3_W0D7.C\____B=C!
+MX`0!V(M<)&"-%(.+@EP+``"#Q!"I```0`'0+)?__[_^)@EP+``"+1"0<@\`L
+MB<*+3"0<.4$L#X07`@``B40D!(/L#%+H_/___XUHX(/$$(U0"#E0"`^$T`$`
+M`)"#[`R-12A0Z/S___^-</B#Q!"`?B$-=1R#[`@%^````%"+1BB+`/]P%.C\
+M____@\00C78`BU8$BP:)4`2)`H!^2P!T(8/L#/]T)%SH_/___\<$)`$```#H
+M_/___X/$$(!^2P!UWX-^'``/A#H!``"+1AS'0&``````@'Y+``^$G@```+\`
+M````BUPD4&:#>T``#X2*````D(M4)%"+@JP%``"+'+B%VW1G9HM#$&8[1AAU
+M768]A0!W5P^WP("\$)@$``#_=$J)T8L29HM#'F;!Z`4/M\"-!(4``P``B8)P
+M`0``BQ%FBTL>@^$?N`$```#3X(F"=`$``,9#%"&#[`1J`%/_="1<Z/S___^#
+MQ!")]D>+7"10#[=#0#GX#X]W____]D8D!'4MBT0D4/Z`5PP``(/L#%#H_/__
+M_X/$#&H!BT8<#[9``5#_="1<Z/S___^#Q!"0@^P$BT8<#[9``E"+1AP/MD`!
+M4&C"````Z/S___^#Q`S_=AR+5"18_[(D!0``:@'H_/___X/$#/]V'(M,)%C_
+ML20%``!J!NC\____QT8<`````(/$$(M<)!S^2PK^33"#[`A6_W0D7.C\____
+M@\00C44H.44H#X4Q_O__BT0D'/Y('(/L"%7_="1<Z/S___^#Q!"+5"0$BTPD
+M'#E1+`^%[?W__XM$)!R#P#B)PHM<)!PY0S@/A!@!``")PX/L#%+H_/___XG&
+M@\00@'A+`'1!BT0D$/]$)!`]?Y:8`'<RB?:#[`S_="1<Z/S____'!"0!````
+MZ/S___^#Q!"`?DL`=`^+1"00_T0D$#U_EI@`=M"#?AP`#X21````BT8<QT!@
+M`````/9&)`1U+(M$)%#^@%<,``"#[`Q0Z/S___^#Q`QJ`8M&'`^V0`%0_W0D
+M7.C\____@\00@^P$BT8<#[9``E"+1AP/MD`!4&C"````Z/S___^#Q`S_=AR+
+M5"18_[(D!0``:@'H_/___X/$#/]V'(M,)%C_L20%``!J!NC\____QT8<````
+M`(/$$(M$)!S^2`J#[`A6_W0D7.C\____@\00B=J+3"0<.5DX#X7J_O__@^P(
+M_W0D)/]T)%SH_/___P^V5"0PB=#!X`0!T(M<)&#'A(,\"P```````(/$$+\`
+M````BT0D4(!X*P`/AO8```")]@^V1"0;B?G3^*@!=0HZ3"0@#X7-````B?N`
+M^P-V$(M$)!3'@'`!``#$`0``ZPZ+5"04QX)P`0``J`$``(M,)!2+@70!``"C
+M`````(GY@^$#C0Q)NP<```#3XXG&"=Z+1"04B;!T`0``@^P,:.@#``#H_/__
+M__?3(=Z+5"0DB;)T`0``@\00B?F`^0-V$P^VP8N$@M`!``"C`````(G&ZQ>)
+M^P^VPXM4)!2+A(+0`0``HP````")QH/."(GY@/D#=A`/ML&+7"04B;2#T`$`
+M`.L3B?H/ML*+3"04B;2!T`$``(UV`$>)^XM$)%`X6"L/APS___^#Q#Q;7E]=
+MPU93@^P$BW0D$(L>L0"`>RL`=AR0#[;1B=#!X`0!T(V$@S@+```Y\'0&03A+
+M*W?E#[;1B=#!X`0!T(T$@XN(/`L``(7)=&+V008"=%P%.`L``#E!&'52@'DT
+M`'0J_D$TZT?^032#[`QH``````^VAHL```!05E'_L\0)``#H_/___X/$(.LB
+MBU$LC7+@C4$L.<)T%8G"@WX,`'3&BT8@C7#@.=!U\(UV`(/$!%M>PXGV55=6
+M4X/L#(I$)"2(1"0+BWPD(+L`````#[;(B<C!X`0!R(T4AXNR/`L``(7V#X1M
+M`0``N/[____3P(1&"0^%70$``(U&+#E&+'09@^P,C8(X"P``4.C\____@\00
+MZ;("``")]KT`````@'X*``^&H0(``(U>.(GV@^P,4^C\____B<*#Q!"+0P2)
+M4P2)&HE"!(D0@'HA``^%[P````^W0AB#O(>8`@```'4*@WH<``^$OP````^W
+M0AB+A(>8`@``@WAP``^$D@```,:"L``````/MD(@J`)T*Z@$=">H`70CQD(B
+M!<9"(P12#[9"25#_<BS_<BCH_/___X/$$.F*````B?8/MD(@J`)U(*@$=!RH
+M`708QD(B`\9"(P2#[`A25^C\____@\00ZV&0#[9"(*@"=%BH!'14J`%U4,9"
+M(P;&0B(%9L>"D```````@^P(4E?H_/___X/$$.LP@^P$_W(<_[<D!0``:@3H
+M_/___X/$$.L8@^P$#[="&%#_MR0%``!J`NC\____@\0018GH.$8*#X?@_O__
+MZ7<!``"-=@!F@?OS`7=2#[9T)`N#[`QH$"<``.C\____@\00@'PD"P-V&8L'
+MBX2PT`$``*,`````J0``$`!U(>L7B?:+!XN$L-`!``"C`````*D``!``=0A#
+M9H'[\P%VLX/L"`^V7"034U?H_/___XD\).C\____B=C!X`0!V(NTASP+``"#
+MQ!"%]@^$ZP```+,`@'\K`'8EC78`#[9&"0^VR]/XJ`%T#X/L!&H`45?H_/__
+M_X/$$$,X7RMWW@^V1"0+B<+!X@0!PHV4ES@+``")5AB-1BPY1BQU"(U&.#E&
+M.'1RO0````#&1"0*`(U&+(G".48L="R#[`R)TU+H_/___XUHX(/$$(M3!(E#
+M!(D8B5`$B0*#?0P`=`B)VCE>+'75D(7M=%3&13(`L0"`?RL`=D@/MD8)T_BH
+M`700#[9$)`J(3"A`_D4R_D0D"D$X3RMWX.LF]D8&`70/@^P(5E?H_/___X/$
+M$.L1@^P(:@!6Z/S___^#Q!"-=@"#Q`Q;7E]=PX/L%(M$)!B+$&;'0#(@`%!2
+MZ/S___^#Q!S#B?975E.+="00BPZ+?BBS`(!Y*P!V&P^VTXG0P>`$`="-A($X
+M"P``.?!T!D,X62MWY8#[`W8<#[;#BQ&+A(+0`0``HP````"I```0`'4<ZRZ)
+M]@^VPXL1BX2"T`$``*,`````J0``$`!T%(/L!%</ML-04>C\____@\00ZQ&0
+M@^P(#[;#4%'H_/___X/$$%M>7\.+5"0$BX($"@``BP"C`````(N"!`H``(M`
+M!*,`````BX($"@``BT`(HP````"+@@0*``"+0`RC`````,-55U93@^P,BWPD
+M(,9$)`L`@'\K``^&W08``(GV#[9$)`N-2`BZ`0```(G3T^.%7"0D=0^-2!#3
+MXH54)"0/A*0&``"`?"0+`W8?#[9$)`N+%XN$PH`!``"C`````*D```@`=1_K
+M/8UV``^V1"0+BQ>+A,*``0``HP````"I```(`'0@5^C\____#[94)`^)T,'@
+M!`'0@8R'8`L`````"`"#Q`2+'XI,)`N`^0-V&P^VP8N$PX`!``"C`````(G"
+M@>(```$`ZQF)]@^VP8N$PX`!``"C`````(G"@>(```$`A=)T08#Y`W80#[;!
+MQX3#@`$``````0#K#@^VP<>$PX`!``````$`A=)T&@^V5"0+B=#!X`0!T(&,
+MAV`+``````$`C78`@'\Y`0^%7@4``(!\)`L#=A\/MD0D"XL7BX3"@`$``*,`
+M````J`%U(^DE`0``C78`#[9$)`N+%XN$PH`!``"C`````*@!#X0'`0``@^P(
+M#[9$)!.)PL'B!`'"C1R7C8-D"P``4/]W%.C\____@\00@[L\"P```'1[BZL\
+M"P``QD0D"@"`?0H`=F.-=3B#[`Q6Z/S___^)PX/$$(M&!(E>!(DSB4,$B1CV
+M0R0"=3*#>QP`=!V#[`3_<QS_MR0%``!J!>C\____@$LD`H/$$(UV`(/L!%-J
+M!E7H_/___X/$$/Y$)`J*1"0*.$4*=Z"Y(*$'`.LE@^P$:@$/MD0D$U!7Z/S_
+M___'!"2@A@$`Z/S___^Y`"TQ`8/$$`^V1"0+B<+!X@0!PHT4EXV"9`L``(F*
+M9`L``,=`""CX`0"!PC@+``")4`R#[`A0_W<4Z/S___^#Q!"`?"0+`W87#[9$
+M)`N+%XN$PH`!``"C`````.L5B?8/MD0D"XL7BX3"@`$``*,`````@'PD"P-V
+M(@^V1"0+BQ>+A,*``0``HP````"I@````'4BZ8,```"-=@`/MD0D"XL7BX3"
+M@`$``*,`````J8````!T9H!\)`L#=A</MD0D"XL7BX3"A`$``*,`````B</K
+M%0^V1"0+BQ>+A,*$`0``HP````")PX!\)`L#=A</MDPD"XL7B=@-```!`(F$
+MRH0!``#K%0^V3"0+BQ>)V`T```$`B83*A`$``(!\)`L#=B$/MD0D"XL7BX3"
+M@`$``*,`````J0``!`!U)>GB`0``B?8/MD0D"XL7BX3"@`$``*,`````J0``
+M!``/A,(!``"`?"0+`W87#[9$)`N+%XN$PH`!``"C`````(G#ZQ4/MD0D"XL7
+MBX3"@`$``*,`````B<.!RP``!`"`?"0+`W80#[94)`N+!XF<T(`!``#K#@^V
+M5"0+BP>)G-"``0``#[94)`N)T,'@!`'0@[R'/`L```!U7H!\)`L#=A*+!XN$
+MT(`!``"C`````(G#ZQ4/MD0D"XL7BX3"@`$``*,`````B<.`?"0+`W83#[94
+M)`N+!XF<T(`!``#II0(```^V5"0+BP>)G-"``0``Z9("``"-=@`/ME0D"XG0
+MP>`$`="+K(<\"P``@WTH``^$TP```(M%*`^W4#+VQ@$/A<,```")QO;"`@^$
+ML````(/L"(U`6%#_=Q3H_/___\9$)!L`@\00@'X?`'9N#[9$)`N+7(8\A=MT
+M5(-['`!T&H/L!/]S'/^W)`4``&H%Z/S___^`2R0"@\00@^P$4VH&5>C\____
+M@\00@'M+`'0?D(/L#%?H_/___\<$)`$```#H_/___X/$$(![2P!UXOY$)`N*
+M5"0+.%8?=Y+'1E@@H0<`QT9@#/@!`(EV9(/L"(U&6%#_=Q3H_/___X/$$.L(
+M9H%(,H``B?:`?"0+`W8=#[9$)`N+%XN$PH`!``"C`````/;$`74AZ1`!```/
+MMD0D"XL7BX3"@`$``*,`````]L0!#X3T````@'PD"P-V'`^V1"0+BQ>+A,*`
+M`0``HP````"H`70@Z=$````/MD0D"XL7BX3"@`$``*,`````J`$/A;8````/
+MMFPD"XGHP>`$`>B-K(<X"P``@WT$``^$F0```(M=!(E<)`2#[`B-12Q0_W<4
+MZ/S____&1"03`(/$$(!["@!V48G>@\8X@^P,5NC\____B<.#Q!"+1@2)7@2)
+M,XE#!(D8@WL<`'0:@^P$_W,<_[<D!0``:@7H_/___X!+)`*#Q!#^1"0#BD0D
+M`XM4)`0X0@IWM,=%+("$'@#'130`````B6TX@^P(C44L4/]W%.C\____@\00
+MD(!\)`L#=AD/MD0D"XL7BX3"@`$``*,`````B<'K%XGV#[9$)`N+%XN$PH`!
+M``"C`````(G!@'PD"P-V$`^V5"0+BP>)C-"``0``ZPX/ME0D"XL'B8S0@`$`
+M`/Y$)`N*7"0+.%\K#X<E^?__@\0,6UY?7<.055=64X/L/(MT)%"+CE@%``"+
+M1"14C;GH%@$`9H%X$(4`=Q</MT`0#[:4,)@$``"-!-+!X`(IT(T\P0^V1S[!
+MX`@#A@0*``"+@$`(``"C`````(G%P>T0P>@8B$0D$`^V1S[!X`@#A@0*``"+
+M@$0(``"C`````(A$)"B-3"0HB<+!Z@B(40'!Z!"(00(/MD<^P>`(`X8$"@``
+MBX!("```HP````"(00.)PL'J"(A1!,'H$(A!!<9!!@#&00<`@^P,_W$$_W0D
+M.`^V1"0D4(GJ#[;:4V@D`P``Z/S___^#Q"#VPP%U&XGIA,ET%8M<)%3&0Q0`
+MN`````#IIP(``(UV`(M$)%2`>!2!=3*-1"0H4`^V1"044(GJ#[;"4/]T)&#H
+M_/___XM,)&3&010"N`````"#Q!#I:P(``(UV`(M<)%2+0R0E____`#WA`0X`
+M=1'&0Q0AN`````#I1P(``(UV`(M$)%3V0&8!=1+WQ0$```!T"H!_(O\/A04"
+M``"#[`A75NC\____@\0(5U;H_/___XL6BTPD9&:+01YFP>@%#[?`C02%``,`
+M`(F"<`$``(L&BUPD9&:+2QZ#X1^Z`0```(G3T^.)F'0!``"+1"1D#[=('HN&
+MK`4``,<$B`````"+7"1D9HM+'HG(9L'H!0^WP(/A'XG3T^.)V??1(8R&L`4`
+M`(M$)&1FBT@>B<AFP>@%#[?`@^$?T^+WTB%4AD2#Q`B+3"1<BU$$BP&)4`2)
+M`@^W01Y0C88`"0``4.C\_____D]+BUPD9,9#%(&#Q!"#>U0`=!2#[`B)V(/`
+M5%!6Z/S___^#Q!")]HU'$(G".4<0#X3E````O0$```")1"0,D(/L#%+H_/__
+M_XG#BQ9FBT`>9L'H!0^WP(T$A0`#``")@G`!``"+!F:+2QZ#X1^)ZM/BB9!T
+M`0``#[=3'HN&K`4``,<$D`````!FBTL>B<AFP>@%#[?`@^$?B>K3XHG1]]$A
+MC(:P!0``9HM+'HG(9L'H!0^WP(/A'XGJT^*)T??1(4R&1(/$"`^W0QY0C88`
+M"0``4.C\_____D]+@\00@WM4`'00@^P(C4-44%;H_/___X/$$(V6S````(N&
+MS````(E8!(D#B5,$B9[,````BU0D##E7$`^%)?___XM,)%2!863___[_QH>P
+M````!(/L"%%7Z/S___^X`0```(/$$.LCC40D*%`/MD0D%%")ZP^VPU#_="1@
+MZ/S___^#Q!"X`````)"#Q#Q;7E]=PU575E.#["R+?"1$BVPD0(MU`(N&*`H`
+M`(E$)!C'1"04`````(M$)$P+1"1(#X3J`@``#[?7C032C02"C01"P>`$BTPD
+M&/9$""$"=!"+AJP%``"+!)#&0!0"ZQ&0#[?'BY:L!0``BP2"QD`4(0^WQXN6
+MK`4``(L4@HM")"7___\`/>$!$``/A)T!``"P_V:!>A"%`'<+#[="$(J$,)@$
+M```\_W48#[?'BY:L!0``BP2"QD`4!NG3"```C78`#[;`C13`P>("*<*+AE@%
+M``"-%-")5"04@'PD2P!Y80^V0B"H`G0EJ`1T(:@!=!V+!HN`6`$``*,`````
+MB<*%P'0*BP:)D%@!``")]HL&BX!0`0``HP````")PH/*`HL&B9!0`0``BP:+
+M@`0!``"C`````(G"@,[_BP:)D`0!```/M]>-!-*-!(*-!$+!X`2+7"089O=$
+M&"`""`^$S````,9$)!,`LP"`?BL`=EV-=@`/MD4)#[;+T_BH`71'@/L#=AJ+
+M!HN$B-`!``"C`````*D``!``=1WK*XUV``^VPXL6BX2"T`$``*,`````J0``
+M$`!T$+@!````B-G3X`A$)!.-=@!#.%XK=Z:`?"03`'1;BEPD$SA="752B?AF
+MP>@%#[?`B?F#X1^Z`0```-/BA52&1'4WBT0D%("XL`````)W!\:`L`````.#
+M[`@/M]>+AJP%``#_-)#_="0@Z/S___^#Q!#I9P<``(UV`/9$)$L!#X19!P``
+M#[?'BY:L!0``BPR"QD$4(8M!)"7___\`/>$!#@`/A#8'``"+5"04#[9"/L'@
+M"`.&!`H``(N`0`@``*,`````B<?![Q")Q<'M&`^V0C[!X`@#A@0*``"+@$0(
+M``"C`````(A$)""-7"0@B<+!Z@B(4P'!Z!"(0P*+5"04#[9"/L'@"`.&!`H`
+M`(N`2`@``*,`````B$,#B<+!Z@B(4P3!Z!"(0P7&0P8`QD,'`/9!9@%U(XGX
+M#[;0]L(!=!E3B>L/ML-04E'H_/___X/$$.F'!@``C78`@^P(45;H_/___X/$
+M$.ER!@``B?8/M]>+AJP%``"+!)!F@7@DX0$/A2@!```/MD`F@^@&@_@*#X=(
+M!@``_R2%M`T```^WUXN&K`4``(L,D(T$THT$@HT$0HG#P>,$BWPD&(I$.S.(
+M012+AJP%``"+!)#V0!,$#X0)!@``@'@4``^$_P4``(-X.``/A/4%``"+4#B*
+M1#LSB`+IYP4```^WUXT$THT$@HT$0L'@!(G3BY:L!0``BQ2:BTPD&(I$""J(
+M0A2+AJP%``"+!)B#>#0`#X2O!0``@^P,C03;C02#C01#P>`$#[:$""$$``!0
+MZ/S___^)Q8N&K`4``(L$F(/$$#MH('8#BV@@#[?7BX:L!0``BPR0C032C02"
+MC01"P>`$BUPD&(U$&"B#[`154/]Q-.C\____@\00Z4<%```/M\>+EJP%``"+
+M!(+&0!0`Z3(%``")]@^WUXN&K`4``(LLD(M%2(E$)`RP_V:!?1"%`'<+#[=%
+M$(J$,)@$```/ML"-%,#!X@(IPHN&6`4``(T4T(E4)!3&@K``````#[9"(*@"
+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
+M110A#[=5'HN'K`4``,<$D`````!FBTT>B<AFP>@%#[?`@^$?O@$```#3YHGQ
+M]]$AC(>P!0``9HM-'HG(9L'H!0^WP(/A'[H!````T^*)T??1(4R'1(/L"`^W
+M11Y0C8<`"0``4.C\____@\00@WU4`'00@^P(C4544%?H_/___X/$$&:!?1"%
+M``^'P0````^W11"`O#B8!```_P^$KP```&:#?1!_=R4/MI0XF`0``(N/6`4`
+M`(T$TL'@`BG0BT3!*(!X!/]U6NF#````9H%]$($`=RL/MT40#[:$.)@$``"+
+MCY`%``"-!$"-!,")PL'B!2G"BT21"(!X!/]U).M0#[=%$`^VA#B8!```BY=T
+M!0``C01`C02`BT3"5(!X!/]T+H/L"%57Z/S___^#Q!"-E\P```"+A\P```")
+M:`2)10")502)K\P```#IO0,``)"-10B+3"04BU$$B4$$B4T(B5`$B0+IH@,`
+M`(GVB?!FP>@%#[?`B?&#X1^Z`0```-/BA52'1`^%@0,```^WUHN'K`4``(L$
+MD&:!>!"%``^'H0````^W4!"`O#J8!```_P^$CP```&:#>!!_=Q\/MI0ZF`0`
+M`(N/6`4``(T$TL'@`BG0BT3!*(I0!.MK#[?6BX>L!0``BP209H%X$($`=R@/
+MMT`0#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"BT21"(I0!.LO#[?6BX>L
+M!0``BP20#[=`$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I0!.L"LO^`^O]T
+M#0^VPH"\.!X%``#_=4*)\&;!Z`4/M\")\8/A'[X!````T^:%=(=$#X65`@``
+MQD44!H/L"&H`5>C\____@\0,:@!55^C\____@\00Z7("```/ML(/MH0X'@4`
+M`(E$)"2-!$#!X`,K1"0DC82'*`$``(E$)"2+1"0<"T0D&'0(]\,```(`=1#'
+M1"08`````,=$)!P`````BU0D)/9"!@(/A&0!``#_="0<_W0D'`^WQE!2Z/S_
+M__^)\&;!Z`4/M\")\8/A'[L!````B=K3XH/$$(54AT0/A>@!``"`?12!#X6%
+M````#[=5'HN'K`4``,<$D`````!FBTT>B<AFP>@%#[?`@^$?T^.)V??1(8R'
+ML`4``(/L"`^W11Y0C8<`"0``4.C\____@\0(55?H_/___X/$$(-]5`!T$(/L
+M"(U%5%!7Z/S___^#Q!"-E\P```"+A\P```"):`2)10")502)K\P```#I60$`
+M`,9$)"$`QD0D(`"+A]0````Y1"04=!"-E]0```#^1"0ABP`YPG7V@'PD(0!T
+M,8V?U````(/L#%/H_/___XU(^(/$$(M3!(E#!(D8B5`$B0(YZ74%QD0D(`'^
+M3"0A==6`?"0@``^%\````(U%"(M,)!2+402)002)30B)4`2)`HGP9L'H!0^W
+MP(GQ@^$?O@$```#3Y@FTAX0```#IN@```/]T)!S_="0<#[?&4/]T)##H_/__
+M_\9$)#$`QD0D,`"+A]0```"#Q!`Y1"04=!*-E]0```")]OY$)"&+`#G"=?:`
+M?"0A`'0UC9_4````D(/L#%/H_/___XU(^(/$$(M3!(E#!(D8B5`$B0(YZ74(
+MQD0D(`&-=@#^3"0A==*`?"0@`'4W@'T4@70QC44(BTPD%(M1!(E!!(E-"(E0
+M!(D"B?!FP>@%#[?`B?&#X1^^`0```-/F";2'A````&:+1"0B9CF',@L```^%
+MHOG__XV'U````(G".8?4````=$>)]H/L#(G64NC\____@^@(9HM('HG+9L'K
+M!0^WVX/A'[K^____T\(AE)^$````@\0,:@!05^C\____@\00B?(YM]0```!U
+MNX/L#%?H_/___[@!````@\00@\0L6UY?7<.)]E=64X/L$(M<)"!FQT0D#@``
+MBYLD!0``O@````"-?"0.BP.+@%`!``"C`````(L3B8)0`0``A<!T&XL#QX!0
+M`0```0```(/L#%/H_/___X@$-X/$$('#8`P``$:#_@%^P(!\)`X`=0RX````
+M`(!\)`\`=`6X`0```(/$$%M>7\.055=64X/L#(ML)""Y`````&8/MD4KB<-F
+M@_@`=AF+1"0D#[90"8UV`(G0T_BH`74&068YRW?RBU0D)(-Z*`!T)8/L"(M"
+M*(/`6%#_=13H_/___X/$"(M,)"S_<2A5Z/S___^#Q!"+1"0D@\`XB<*+3"0D
+M.4$X#X17`0``B40D")"#[`Q2Z/S___^)QH/$$(-X'``/A!4!``"`>$L`#X2'
+M````OP````!F@WU``'1[B?:+A:P%``"+'+B%VW1C9HM#$&8[1AAU668]A0!W
+M4P^WP("\*)@$``#_=$:+50!FBT,>9L'H!0^WP(T$A0`#``")@G`!``"+50!F
+MBTL>@^$?N`$```#3X(F"=`$``,9#%"&#[`1J`%-5Z/S___^#Q!"01P^W14`Y
+M^'^'BT8<QT!@`````/9&)`1U)_Z%5PP``(/L#%7H_/___X/$#&H!BT8<#[9`
+M`5!5Z/S___^#Q!")]H/L!(M&'`^V0`)0BT8<#[9``5!HP@```.C\____@\0,
+M_W8<_[4D!0``:@'H_/___X/$#/]V'/^U)`4``&H&Z/S____'1AP`````@\00
+MBT0D)/Y("H/L"%95Z/S___^#Q!"+5"0(BTPD)#E1.`^%KO[__XM$)"3'0"@`
+M````BT4`BXA8`0``B0T`````A<ET"8M%`(F(6`$``(/$#%M>7UW#C78`5U93
+MBW0D$(M\)!2S`(!^*P!V%0^V5PF0B="(V=/XJ`%U!D,X7BMW\/9'"`)U"(U'
+M.#E'.'5F@^P,5^C\____@\00A,!T1(/L#%;H_/___XG!@\00A<!T1(U'.(M0
+M!(E(!(D!B5$$B0K^1PJ)>2C&02`%QD$A`,9!20]J`6H!45?H_/___X/$$.L2
+M@^P(#[;#4%;H_/___X/$$(GV6UY?PU575E.#[!"+;"0HBWU4#[9%*U#_="0H
+M5^C\____B<9F@TTR$+L`````@\00BU0D(&8/MD(K9HE$)`IF@_@`=A8/ME<)
+MB="(V=/XJ`%U"$-F.5PD"G?N9H/[`W8@#[?#BTPD((L1BX2"T`$``*,`````
+MJ0``$`!U..L>B?8/M\.+3"0@BQ&+A(+0`0``HP````"I```0`'48@^P(#[;#
+M4/]T)"SH_/___X/$$.F8`0``C4<X.4<X#X2,`0``A?8/A(0!```/MD9)QT2%
+M/`````"+5@2+!HE0!(D"@^P$5FH&5^C\____@\00@'Y+`'0BD(/L#/]T)"SH
+M_/___\<$)`$```#H_/___X/$$(!^2P!UWX-^'`!T7HM&',=`8`````#V1B0$
+M=1:+1"0@_H!7#```@^P,4.C\____@\00@^P$_W8<BU0D*/^R)`4``&H!Z/S_
+M__^#Q`S_=AR+3"0H_[$D!0``:@;H_/___\=&'`````"#Q!#^3PJ#[`A6_W0D
+M+.C\____BU0D,(L"BY!8`0``B14`````@\00A=)T#(M,)""+`8F06`$``,9%
+M)@!F@V4R[[L`````@'T?`'0=9@^V51^0#[?#BW2%/(7V=`:`?B+_=7-#9CG:
+M=^GV13*`=!*#[`A5_W0D+.C\____@\00ZU6[`````(!]'P!T/8GV#[?#BW2%
+M/(7V="7V1B0"=!^#[`3_=AR+1"0H_[`D!0``:@;H_/___X!F)/V#Q!"00V8/
+MMD4?9CG8=\5FQT4R`@"`92W]C78`@\0,6UY?7<-64X/L!(M<)!"+="04BT94
+ML0"`>RL`=A(/ME`)B=#3^*@!=09!.$LK=_+&1B8,@^P(5E/H_/___X/$%%M>
+MPXGV5U93@^P0BWPD((I$)"2(1"0/NP`````/MO")]H/L#&@0)P``Z/S___^#
+MQ!"`?"0/`W89BP>+A+#0`0``HP````"I```0`'4AZQ>)]HL'BX2PT`$``*,`
+M````J0``$`!U"$-F@?OS`7:S@^P(#[9<)!=35^C\____B3PDZ/S___^)V,'@
+M!`'8C02'@\00]H!8"P```702@^P(_[`\"P``5^C\____@\00@\006UY?PY!5
+M5U93@^P,BW0D((L^#[=4)"2+AZP%``"+')"]`````,=$)`@`````9H%[).$!
+M=2B*0R:#Z!$\`7<>BT8HB40D"(M$)"P+1"0H=4F+1"0(QD`U`.L_C78`BX]8
+M!0``C:GH%@$`9H%[$(4`=Q</MT,0#[:4.)@$``"-!-+!X`(IT(TLP8M$)"P+
+M1"0H=0?&A;``````@'L4@74&@&8(]XGVBT0D+`M$)"@/A<H```#&0Q0`]D-F
+M(`^$W`$``(MS2(7V#X31`0``]D9=`G0C@WY8`'0=@WLT`'07@^P$_W,@_W,T
+M_W98Z/S___^#Q!"-=@`/MD4^P>`(`X<$"@``BX!`"```HP````")PL'J$(A6
+M4\'H&&:)1D@/MD4^P>`(`X<$"@``BY!$"```B14`````9@^VPF:)1DP/ML9F
+MB49.B=#!Z!!F#[;`9HE&4,'J&(A64@^V13[!X`@#AP0*``"+@$P(``"C````
+M`&8/ML!FB49*Z2$!``"0@'L4@'4&QD,4(8GV@^P$_W0D,/]T)#!H<`,``.C\
+M____@\009H%[).$!=2"*0R:#Z!$\`7<6@^P,_W0D%.C\____@\00Z=8```")
+M]O9$)"L!=&F+0R0E____`#WA`0X`=%H/MD4^P>`(`X<$"@``BX!`"```HP``
+M```/MD4^P>`(`X<$"@``BX!$"```HP`````/MD4^P>`(`X<$"@``BX!("```
+MHP````"#[`A35^C\____@\00ZV>-=@"`?"0K`'D=BP>+@%@!``"C`````(G!
+MA<!T2HL'B8A8`0``ZT"`?"0H`'@Y@'PD+P!Y,HL79HM#'F;!Z`4/M\"-!(4`
+M`P``B8)P`0``BQ=FBTL>@^$?N`$```#3X(F"=`$``(GV@\0,6UY?7<-75E.#
+M[!"+7"0DBWPD((I#%(A$)`^+CU@%``"-L>@6`0!F@7L0A0!W%P^W0Q`/MI0X
+MF`0``(T$TL'@`BG0C33!@'PD#P!U)6;'AI```````(![)!QU%H![)@)U$(/L
+M"%-6Z/S___^#Q!"-=@"#>U``=!*#[`B-0U!05^C\____@\00B?:#[`A35^C\
+M____@\00@'PD#P9T.X/L"(V>``$``%/_=Q3H_/___\>&``$``("$'@#'A@@!
+M````````B;8,`0``@\0(4_]W%.C\____@\00@\006UY?PXGV55=64X/L#(M\
+M)""%_P^$P````(M'*(LH@^P,5>C\____B<.-0#R)1"08@\00A=L/A)X```"#
+M[`Q5Z/S___^)QH/$$(7`=1&#[`A35>C\____@\00ZWV)]L9#%:QFBT<89HE#
+M$(EK&,=#9`@```")<U"+1@B)0S3'0R``"```C8>T````B4,XQD,<(,=#;```
+M``#&0R0<QD,E`<9#)@+&0R<(QD,H`(/L"&H`_W0D%.C\_____W,@_W80_W8,
+M_W0D).C\____@\084U7H_/___X/$$(/$#%M>7UW#D%575E.#[`R+;"0@BWPD
+M)(I$)"B(1"0+BT4HBS#&1"0*`(UV``^V1"0*BI0PF`0``(#Z_W13@^P$:@B-
+M1PQ0#[;2C032P>`"*="-',4`````B=@#AE@%```%G````%#H_/___X/$$(3`
+M=!Z+AE@%``"*5"0+B)0#U@```(N&6`4``(FL`^````#^1"0*>9:#Q`Q;7E]=
+MPXGV55=64X/L#(M,)"2+032)1"0(#[9``HG%P>4(BU0D"&8/MD(#`<4/M_6-
+M5@0/MT$@.<(/C]````"+7"0(@\,(QD0D!P"+5"0(C406!#G8#X:C````B@.$
+MP'A^@^`//`9U=_9#`\!T!O9#!<!U:_8#$'0PC7,(OP````"`>P0`=EB#[`0/
+MMD,#4%;_="0LZ/S___^#QAR#Q!!'B?@X0P1WX.LVC7,$OP````"`>P(`=B@/
+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
+M)"Q6Z/S___^#Q!#IPP$``(/L"/]T)"Q6Z/S___^#Q`B-G@`!``!3BT8HBP#_
+M<!3H_/___\>&``$``("$'@#'A@@!````````B;8,`0``@\0(4XM&*(L`_W`4
+MZ/S___^#Q!"0QD8B_[\`````BT0D"(!X"@`/AJD```")PX/#.(/L#%/H_/__
+M_XG&@\00BT,$B7,$B1Z)1@2),(!^(O]T:X!^(0!U;8"^L0`````/A"`!```/
+MMD8@J`)T#*@$=`BH`0^%Y@````^V1B"H`G4,J`1T"*@!#X7I````#[9&(*@"
+M#X3L````J`0/A.0```"H`0^%W````(/L"%95Z/S___^#Q!#IR@```(GVQH:Q
+M`````)!'B?J+1"0(.%`*#X=<____B?J+1"0(.%`*=5V_`````(!X"@!V4HG#
+M@\,XD(/L#%/H_/___XG&@\00BT,$B7,$B1Z)1@2),(!^(O]T'X!^(2)T!H!^
+M(0UU$X/L"&H*5NC\____@\00ZU>-=@!'B?J+1"0(.%`*=[2+5"0(QD(%_X/L
+M"%)5Z/S___^#Q!"`?"0'``^%D````.LF5@^V1DE0_W8L_W0D%.C\____@\00
+MZP^#[`A65>C\____@\00B?:+1"0D@WA0`'06@^P(BT0D+(/`4%!5Z/S___^#
+MQ!")]H/L"/]T)"Q5Z/S___^#Q!"`?"0'`'0Q9O^&D````&:#OI`````*=A!F
+MQX:0``````#I.O[__XGV@^P(:@I6Z/S___^#Q!")]H/$#%M>7UW#55=64X/L
+M&(ML)"R*1"0PB$0D%XM%*(LX5^C\____B<.-0#R)1"04@\00A=L/A*````"#
+M[`Q7Z/S___^)QH/$$(7`=1"#[`A35^C\____@\00ZW^0QD,5K&:+11AFB4,0
+MB7L8QT-D"````(ES4(M&"(E#-,=#(``(``"-A;0```")0SC&0QP@QT-L````
+M`,9#)!S&0R4!BD0D"XA#)L9#)PC&0R@`@^P(:@#_="00Z/S_____<R#_=A#_
+M=@S_="0@Z/S___^#Q!A35^C\____@\00@\0,6UY?7<.)]E575E.#[`R+;"0@
+MBT4HBS"+E>0````/MD("B</!XPAF#[9"`P'##[?#@\`$/0`(```/C]T```"#
+M[`Q6Z/S___^)QX/$$(7`#X3'````@^P,5NC\____B40D&(/$$(7`=1.#[`A7
+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
+M9O]$)`)F@WPD`A]VD@^W1"0"@\0(6UY?7<.04XM4)`B+3"0,BUPD$(-Z.`!T
+M&8M".,8`<(M".(A(`HM".,9`!P"+0CB(6`Q;PXGVPXUV`%=64XM<)!"+5"04
+MB=&!X?\!``"+@ZP%``"#/(@`=">+-(@/MD85#[:;Q@```(C9T^`/M_@/M]*X
+M__\``-/@(<*)\#G7=`6X`````%M>7\.05E.#[`2+3"00BW0D%&:!?B3A`0^%
+MGP```(I&)H/H$3P!#X>1````NO\```!F@7X0A0!W#`^W1A`/MI0(F`0``(T$
+M4HT$@(N1=`4``(T<PH![*/]U2[`4@'YH`'0&#[9&:-'@#[;`C02`C02`C02`
+MC02`C02`C02`P>`&B4-8QT-@`````(E;9(/L"(U#6%#_<13H_/___\9#*`"#
+MQ!")]HU#%(M0!(EP!(D&B58$B3+^0RGIIP```+K_````9H%^$(4`=PP/MT80
+M#[:4")@$``"-!-+!X`(IT(N16`4``(T<PHM&)"7___\`/>$!$`!T;H![2/]U
+M5;`4@'YH`'0&#[9&:-'@#[;`C02`C02`C02`C02`C02`C02`P>`&B8/H````
+MQX/P`````````(F;]````(/L"(V#Z````%#_<13H_/___\9#2`"#Q!"-0Q"+
+M4`2)<`2)!HE6!(DR_D-+@\0$6U[#C78`4X/L"(M<)!2`>TC_=!V#[`B-@^@`
+M``!0BT0D'/]P%.C\____QD-(_X/$$(/$"%O#4X/L"(M<)!2`>RC_=!J#[`B-
+M0UA0BT0D'/]P%.C\____QD,H_X/$$(/$"%O#C78`55=64X/L#(ML)""+="0D
+M9H%^).$!#X6]````BD8F@^@1/`$/AZ\```"Y_P```&:!?A"%`'<,#[=&$`^V
+MC"B8!```C01)C02`BY5T!0``C1S"@?G_````#X0[`0``_DLI@^P,C7L45^C\
+M____B<&#Q!`Y\'5#@^P(4U7H_/___X/$$#E[%`^$#0$``,=#6``M,0''0V``
+M````B5MD@^P(C4-84/]U%.C\____QD,H`(/$$.GA````D(U3%(M#%(E(!(D!
+MB5$$B4L4BU8$BP:)4`2)`NG`````N?\```!F@7X0A0!W#`^W1A`/MHPHF`0`
+M`(T$R<'@`BG(BY58!0``C1S"BT8D)?___P`]X0$0``^$@P```('Y_P```'1[
+M_DM+@^P,C7L05^C\____B<&#Q!`Y\'5'@^P(4U7H_/___X/$$#E[$'11QX/H
+M`````"TQ`<>#\`````````")F_0```"#[`B-@^@```!0_W44Z/S____&0T@`
+M@\00ZQR-4Q"+0Q")2`2)`8E1!(E+$(M6!(L&B5`$B0*0@\0,6UY?7<-55U93
+M@^P4BW0D*(ML)"P/MT489@^VO#"8!```#[?7C032P>`"*="+EE@%``"-A,+D
+M````4%;H_/___P^W51B#Q!"#O):8`@```'08BX26F`(``(-X<`!U"\>$EI@"
+M````````#[=%&,:$,)@$``#_@^P(#[??4XV&*`D``%#H_/___XN66`4``(T$
+MV\'@`BG8P>`#@\00@'P0/O]T#X/L"`'04%;H_/___X/$$(/L"%56Z/S___\/
+MM]>+CE@%``"-!-+!X`(IT,'@`\9$""(`BY98!0``QD00(P&#Q!Q;7E]=PY!5
+M5U93@^P,BVPD(&;'1"0*@`")]@^W1"0*9@^VA"B8!```9CW_``^$Y````&:!
+M?"0*@0!W>P^WP(T$0(T$P(G"P>(%*<*+A9`%``"-/)"^`````(!_,``/AJ\`
+M``"-7RB#[`Q3Z/S___^-2/B#Q!"+4P2)0P2)&(E0!(D"BT$@)0#__P`]``#_
+M`'49]D$C!'03@WD<`'0-BT$<BE0D)(A0`8UV`$:)\3A/,'>TZUZ)]@^WP(T$
+M0(T$@(N5=`4``(T4PKX`````@'H?`'8_C78`B?$/ML&+3((\A<ET)XM!("4`
+M__\`/0``_P!U&/9!(P1T$H-Y'`!T#(M!'(I,)"2(2`&)]D:)\#A"'W?$_T0D
+M)&;_1"0*9H%\)`J%``^&\O[__SFM)`4``'46@^P(_W0D+('%8`P``%7HP_[_
+M_X/$$(/$#%M>7UW#4X/L$(M<)!B+1"0<#[90,V8/MH0:F`0``,:$&I@$``#_
+M#[?`4(V#>`D``%#H_/___X/$"&H`_[,D!0``Z'?^__^#Q!A;PXGV5E.#[`R+
+M="08BT0D'`^W0"1F#[:<,)@$``#&A#"8!```_P^WVU.-AE`)``!0Z/S___^+
+MEG0%``"-'%N-')N-!-T`````@\00@'P0-/]T#X/L"`'04%;H_/___X/$$(/L
+M"&H`_[8D!0``Z`+^__^#Q!1;7L-3BUPD"+D`````NG@```")V(UV`(@(0$IU
+M^L9#*/_&0S3_C4,4B4,4B4,86\.-=@!55U93@^P8BWPD+(V'4`D``%#H_/__
+M_X/$$+H`````A,`/A=P```"#[`R-AU`)``!0Z/S___^)Q;."@\00C78`#[;#
+M@+PXF`0``/]U$SB?R````',1B)_(````ZPF-=@!#@/N%=MJZ`````(#[A@^$
+MCP````^VPXGJB)0XF`0```^WQ8T$0(T$@(TTQ0````")\`.'=`4``%#H_/__
+M_XN7=`4``&8/ML-FB406)(/$!(!_.0%U#HN'=`4``&;'1`8P__^0#[?=BX=T
+M!0``C1Q;C1R;P>,#QD0#)@"+AW0%``!FQT0#,@``@^P(:@#_MR0%``#HU/S_
+M_XG:`Y=T!0``@\00B="#Q`Q;7E]=PXUV`(/L%(M,)!B+1"0<#[90!&8/MH0*
+M'@4``,:$"AX%``#_#[?`4('!H`D``%'H_/___X/$',-3BUPD"+D`````NA@!
+M``")V(UV`(@(0$IU^L9#2/_&0S[_QD-*'XU#$(E#$(E#%%O#C78`55=64X/L
+M&(M\)"R-AR@)``!0Z/S___^#Q!"Z`````(3`#X4Q`0``@^P,C8<H"0``4.C\
+M____B<6S`(/$$(UV``^VPX"\.)@$``#_=1=F#[;#9CF'Q````',.9HF'Q```
+M`.L%D/[#>=BZ`````(#[@`^$X@````^VPXGJB)0XF`0```^WU8T$TL'@`BG0
+MC33%`````(GP`X=8!0``4.C\____BY=8!0``9@^VPV:)1!88BX=8!0``QD0&
+M(@"+AU@%``#&1`8Y_XN'6`4``,9$!CC_BX=8!0``QD0&.O^+AU@%``#&1`8\
+M_XN'6`4``,9$!CO_BX=8!0``QD0&/?^+AU@%``#&A`:R`````(N'6`4``,:$
+M!M<```#_@^P(5^C\____BY=8!0``B806Y````(/$$(!_.0%U"XN'6`4``(!,
+M!B0!#[?%C13`P>("*<*+AU@%``"-%-")T(/$#%M>7UW#B?975E.#[!R+="0L
+MC89X"0``4.C\____@\00N@````"$P`^%(`$``(/L#(V&>`D``%#H_/___XG'
+MQD0D'X"#Q!`/MD0D#X"\,)@$``#_=1:*1"0/.(;'````<Q6(AL<```#K#8GV
+M_D0D#X!\)`^!=M"Z`````(!\)`^"#X3'````#[9$)`^)^HB4,)@$```/M\>-
+M!$"-!,")PL'B!2G"BX:0!0``NP````"Y%`T``(T$D(@80$EU^@^WQXT$0(T$
+MP(G#P>,%*</!XP*)V@.6D`4``(U"$(E"$(G8`X:0!0``@\`0B4`$B=H#EI`%
+M``"-0AB)0AB)V`.&D`4``(/`&(E`!(G:`Y:0!0``C4(HB4(HB=@#AI`%``"#
+MP"B)0`2+AI`%``"*5"0/B%0#,X/L"&H`_[8D!0``Z+7Y__^)V@.6D`4``(/$
+M$(G0@\006UY?PY!75E.#[!R+="0LC8:@"0``4.C\____@\00N@````"$P`^%
+MRP```(/L#(V&H`D``%#H_/___XG'QD0D'P"#Q!`/MD0D#X"\,!X%``#_=0Z*
+M1"0/.$8T<Q"(1C3K"_Y$)`^`?"0/`W;8N@````"`?"0/!'1^#[9$)`^)^HB4
+M,!X%```/M\>-%$#!X@,IPKL`````N5P```"-A)8H`0``C78`B!A`277Z#[?'
+MC11`P>(#*<*-%):-@D@!``")@D@!``")0`2-@E0!``")@E0!``")0`2-@F`!
+M``")@F`!``")0`2*1"0/B((L`0``@<(H`0``B="#Q!!;7E_#B?964X/L!(MT
+M)!"-AMP```"Z`````#F&W````'0I@^P,C8;<````4.C\____B<.)!"3H_/__
+M_XDT).C\____B4-,B=J#Q!")T(/$!%M>PXUV`%.#[`B+7"00BTPD%(V#W```
+M`(M0!(E(!(D!B5$$B0J#>4P`=!.#[`B-04Q04^C\____@\00C78`@\0(6\.-
+M=@"#[`R+5"00C8+D````N0`````Y@N0```!T&(/L#(V"Y````%#H_/___\9`
+M"`")P8/$$(G(@\0,PU.+7"0,BQ.+1"0(!>0```"+2`2)4`2)`HE*!(D1QP,`
+M````6\.-=@"#[`R+1"00C9#L````N0`````YD.P```!T#H/L#%+H_/___XG!
+M@\00B<B#Q`S#B?93BUPD#(L3BT0D"`7L````BT@$B5`$B0*)2@2)$<<#````
+M`%O#C78`4X/L"(M$)!"-D/P```"Y`````#F0_````'0E@^P,4NC\____B<.#
+MQ!"X`````+F8````B=J-=@"(`D))=?J)V8G(@\0(6\.0BT0D"(M4)`2!POP`
+M``"+2@2)0@2)$(E(!(D!PX/L#(M$)!"-D`0!``"Y`````#F0!`$``'0.@^P,
+M4NC\____B<&#Q!")R(/$#,.)]E.+7"0,BQ.+1"0(!00!``"+2`2)4`2)`HE*
+M!(D1QP,`````6\.-=@"#[`R+5"00C8+T````N0`````Y@O0```!T&X/L#(V"
+M]````%#H_/___\=`%`````")P8/$$(G(@\0,PY!3BUPD#(L3BT0D"`7T````
+MBT@$B5`$B0*)2@2)$<<#`````%O#C78`55=64X/L#(ML)""+1"0D9H%X$(4`
+M#X>9````#[=`$("\*)@$``#_#X2'````BU0D)&:#>A!_=R`/MI0HF`0``(N-
+M6`4``(T$TL'@`BG0BT3!*(I`!.M?D(M,)"1F@7D0@0!W*`^W01`/MH0HF`0`
+M`(N-D`4``(T$0(T$P(G"P>(%*<*+1)$(BD`$ZRJ+5"0D#[="$`^VA"B8!```
+MBY5T!0``C01`C02`BT3"5(I`!.L%C78`L/\/ML`/MKPH'@4``(T$?\'@`RGX
+MC;R%*`$``(N-D`4``(M$)"1F@7@0A0!W(@^W0!`/MH0HF`0``(T$0(T$P(G"
+MP>(%*<*-%)&)5"0(ZPJ!P>P&#0")3"0(BU0D)(M"-`^V4`&#^A)T$H'ZD0``
+M``^$*@$``.F9`0``D(L/B0PDO@````"*4`F(5"0'BD`:B$0D!KT`````@'\*
+M`'8]C5\XB?:#[`Q3Z/S___^)QH/$$(M#!(ES!(D>B48$B3"+3"0(.4XL=0R*
+M1DF+5"0D.D(5=`A%B>DX3PIWR(M$)"2#>%``=!+_<%#_="0$Z/S___^#Q`B-
+M=@"#[`C_="0L_W0D#.C\____BI:2````C4(!B(:2````@\00@/H#=R6`?"0&
+M`'4>@^P,:@!J`HM4)#@/MD(54/]V+%?H_/___X/$(.L\BI:2````C4(!B(:2
+M````@/H"=BB`?"0&`'4AQD8C`L9&(O^`9B3^@^P(5O]T)`SH_/___X/$$.F\
+M````#[9$)`90#[9$)`M0_W0D$%?H_/___X/$$.F>````B?:Z`````+X`````
+M@'\*`'8\C5\XD(/L#%/H_/___XG"@\00BT,$B5,$B1J)0@2)$(M,)`@Y2BQU
+M#(I"28M,)"0Z015T"$:)\#A'"G?(#[9"(*@"=""H!'0<J`%T&%*+3"0H#[9!
+M%5#_<BQ7Z/S___^#Q!")]HM$)"2#>%``=`[_<%!5Z/S___^#Q`B)]H/L"/]T
+M)"Q5Z/S___^#Q!"#Q`Q;7E]=PU=64XM\)!"+-X/L#%;H_/___XG#@\00A<!T
+M;H/L#%;H_/___XG!@\00A<!T7(U3/,9#).'&0R4!QD,F$,9#%;N+1"049@^V
+M0#-FB4,0BP>)0QC'0R"0````C4$(B4,TB4M0QD`!`,9!"$#'0VP`````@^P(
+M:@!2Z/S___^#Q`A35NC\____@\006UY?PXUV`%575E.#[!B+?"0LBVPD-(LW
+M5NC\____B<.#Q!"%P'1S@^P,5NC\____B<&#Q!"%P'1AC5,\QD,DX<9#)0'&
+M0R80QD,5NXM$)"1F#[9`,V:)0Q"+!XE#&,=#()````"-00B)0S2)2U#&0`$0
+MQD$(0(GIB$@)QT-L`````(/L"&H`4NC\____@\0(4U;H_/___X/$$(/$#%M>
+M7UW#D%575E.#[!B+;"0LBWPD-(M$)#B)1"04BW4`5NC\____B<.#Q!"%P`^$
+MB````(/L#%;H_/___XG!@\00A<!T=HU3/,9#).'&0R4!QD,F$(GXB$,5BT0D
+M)&8/MD`S9HE#$(M%`(E#&,=#()````"-00B)0S2)2U#&0`&1QD$(0(GYB$@)
+MBDPD"(A("L=#;`````"#[`AJ`%+H_/___X/$"%-6Z/S____'!"2@A@$`Z/S_
+M__^#Q!"#Q`Q;7E]=PXUV`%575E.#[!B+?"0LBVPD.(I$)#2(1"07BS=6Z/S_
+M__^)PX/$$(7`=0S&A;$````!Z8X```"#[`Q6Z/S___^)P8/$$(7`=1:#[`A3
+M5NC\____QH6Q`````8/$$.MFC5,\QD,DX<9#)0'&0R80BD0D"XA#%8M$)"1F
+M#[9`,V:)0Q"+!XE#&,=#()````"-00B)0S2)2U#&0`$2QD$(0(I,)`N(2`G'
+M0VP`````@^P(:@!2Z/S___^#Q`A35NC\____@\00@\0,6UY?7<.)]E=64XM\
+M)!"+7"049H%[$(4`#X>5````#[=#$("\.)@$``#_#X2#````9H-[$']W)`^V
+ME#B8!```BX]8!0``C032P>`"*="+1,$H9@^V4`3K8(UV`&:!>Q"!`'<J#[=#
+M$`^VA#B8!```BX^0!0``C01`C03`B<+!X@4IPHM$D0AF#[90!.LK#[=#$`^V
+MA#B8!```BY=T!0``C01`C02`BT3"5&8/ME`$ZPB-=@"Z_P```+G_````9H%[
+M$(4`=PT/MT,09@^VC#B8!```9H'Z_P!T%@^WPH"\.!X%``#_=`EF@?G_`'46
+MB?:#[`A35^C\____@\00Z8\```")]@^WP@^VM#@>!0``C01VP>`#*?"-M(<H
+M`0``9@^V4R=F#[9#*,'@"`'"@>+_`0``#[9#*8/X`70%@_@(=4,/M]*+AZP%
+M``"+!)`[0TAU,F:+2!Z)RF;!Z@4/M]*#X1^X_O___]/`(4271(/L"(M#2`^W
+M0!Y05NC\____@\00C78`@^P(4U?H_/___X/$$%M>7\.-=@!55U93@^P8BT0D
+M-(E$)!2+5"0LBSJ+3"0P#[=!$`^VE#B8!```C032P>`"*="+EU@%``"-+,)7
+MZ/S___^)PXM$)#1FBW`>B?!FP>@%#[?`B?&#X1^Z`0```-/B@\00A52'1`^%
+MN````(7;#X2P````C5,\BTPD)`^V014/MH_&````T^`)\,9#).'&0R4!QD,F
+M#XA#)V;!Z`B(0RB*1"0(B$,IBX6D````B4,JBX6H````B4,NBTPD)(E+2,9#
+M%:IFBT489HE#$(M,)""+`8E#&,=#(`````#'0S0`````QT-LX$T"`(/L"&H`
+M4NC\____@\0(4U?H_/___XM$)#1FBT@>B<AFP>@%#[?`@^$?N@$```#3X@E4
+MAT2#Q!"-=@"#Q`Q;7E]=PU575E.#[!B+5"0LBT(HBRA5Z/S___^)QH/$$(7`
+M=1&+1"0@QH"Q`````>F5````D(/L#%7H_/___XG'@\00A<!U&HM4)"#&@K$`
+M```!@^P(5E7H_/___X/$$.MHC5X\QD8D)<9&%:N+5"0@9HM"&&:)1A");AC'
+M1B`(````QT9D"````(M'"(E&-(/`"(E&.,9&'"2)?E#'1FP`````@^P(:@!3
+MZ/S___]J"/]W$/]W#%/H_/___X/$&%95Z/S___^#Q!"#Q`Q;7E]=PU575E.#
+M[!B+5"0LBT(HBRA5Z/S___^)QH/$$(7`=1&+1"0@QH"Q`````>F=````D(/L
+M#%7H_/___XG'@\00A<!U&HM4)"#&@K$````!@^P(5E7H_/___X/$$.MPC5X\
+MQD8DGL9&)1#&1C$@QD85JXM4)"!FBT(89HE&$(EN&,=&("````#'1F0(````
+MBT<(B48TB7Y0@\`@B48XQD8<),=&;`````"#[`AJ`%/H_/___VH@_W<0_W<,
+M4^C\____@\085E7H_/___X/$$(/$#%M>7UW#55=64X/L&(ML)"R*1"0PB$0D
+M%XM%*(LX5^C\____B<.#Q!"%P'4-QH6Q`````>FF````D(/L#%?H_/___XG&
+M@\00A<!U%L:%L0````&#[`A35^C\____@\00ZWV-0SR)1"0$QD,D$H!\)`L`
+M=`[&0R4!QD,F@,9#*$#K!,9#*"3&0Q6K9HM%&&:)0Q")>QC'0R!@````QT-D
+M"````(M&"(E#-(ES4,=#;`````"#[`AJ`/]T)!#H_/___VI@_W80_W8,_W0D
+M(.C\____@\084U?H_/___X/$$(/$#%M>7UW#C78`55=64X/L&(MT)"R+1BB+
+M`(E$)!10Z/S___^)Q[L`"```@\00A<!U#,:&L0````'INP```(/L#/]T)!3H
+M_/___XG%@\00A<!U'\:&L0````&#[`A7_W0D%.C\____@\00Z8H```"-=@!F
+M@?O_`'8%N_\```#&1R0:QD<E",9')@C&1R<`B%\HQD<I`,9'%:MFBT889HE'
+M$(M$)`B)1Q@/M]N)7R#'1V0(````BT4(B4<T`=B)1SC&1QPDB6]0QT=L````
+M`(UW/(/L"&H`5NC\____4_]U$/]U#%;H_/___X/$&%?_="04Z/S___^#Q!"#
+MQ`Q;7E]=PY!75E.+?"00BT<HBS"#[`Q6Z/S___^)PX/$$(7`=0K&A[$````!
+MZU&0QD`D%<9`%:MFBT<89HE#$(ES&&H!:@%35NC\____@\00A,!U%X/L"%-6
+MZ/S____&A[$````!@\00ZQ60QT-L`````(/L"%-6Z/S___^#Q!!;7E_#N`0`
+M```/ME0D!(/Z%W<Y_R25$`X``(/`),.#P#C#@\`0PX/`',.#P$C#@\`<PX/`
+M/,.#P"3#@\`8PX/`%,.#P$C#@\`PC78`PXUV`%93@^P$BW0D$(M<)!2`>S[_
+M=!F#[`@/MD,^4/\VZ/S____&0S[__DXL@\00@\0$6U[#B?975E.+?"00BU0D
+M%`^V0B"H`G0-J`1T":@!#X2U````D(!Z/O\/A:H```"+!XN`&`$``*,`````
+MB<:Q`+@!````B</3XX7S=2R(2CZ+%XGP"=B)@A@!``"+!XN`6`$``*,`````
+MB<8AWG1DBP>)L%@!``#K6D&`^1]VQHL'BX`<`0``HP````")QK$`N`$```")
+MP]/CA?-U,(U!((A"/HL7B?`)V(F"'`$``(L'BX!@`0``HP````")QB'>=!&+
+M!XFP8`$``.L'D$&`^1]VPOY'+(UV`%M>7\-64X/L!(MT)!"+7"04@'LT_W09
+M@^P(#[9#-%#_-NC\____QD,T__Y.+(/$$(/$!%M>PXGV5U93BWPD$(M4)!2`
+M>C3_#X6G````BP>+@!@!``"C`````(G&L0"X`0```)")P]/CA?-U+(A*-(L7
+MB?`)V(F"&`$``(L'BX!8`0``HP````")QB'>=&"+!XFP6`$``.M608#Y'W;&
+MBP>+@!P!``"C`````(G&L0"X`0```(G#T^.%\W4LB$HTBQ>)\`G8B8(<`0``
+MBP>+@&`!``"C`````(G&(=YT$(L'B;!@`0``ZP9!@/D?=L;^1RR-=@!;7E_#
+M55=64X/L#(ML)""+70"^`````&:#>T``#X81`0``B?8/M]:+@ZP%``"#/)``
+M#X3Q````#[9]!(L$D&:!>!"%``^'N@````^W4!"`O!J8!```_P^$J````&:#
+M>!!_=RL/MI0:F`0``(N+6`4``(T$TL'@`BG0BT3!*`^V0`0Y^`^$@P```.F:
+M````#[?6BX.L!0``BP209H%X$($`=RT/MT`0#[:$&)@$``"+BY`%``"-!$"-
+M!,")PL'B!2G"BT21"`^V0`0Y^'0_ZUD/M]:+@ZP%``"+!)`/MT`0#[:$&)@$
+M``"+DW0%``"-!$"-!("+1,)4#[9`!#GX=`WK)XUV`('__P```'4<@^P(:@`/
+MM]:+@ZP%``#_-)#H_/___X/$$(UV`$9F.7-`#X?Q_O__@\0,6UY?7<.0BTPD
+M"(M13(72="*+022)0@R+02B)0A"+02R)0A2+03")0AB+032)0AS&0@@!PXGV
+MBTPD"(M13(72=!Z+0@R)022+0A")02B+0A2)02R+0AB)03"+0AR)033#B?97
+M5E.+="00BUPD%#ES&`^$J````(![%``/A8H````/MD,D@_@5=`6#^%5U?(M+
+M3(7)='6`>0@!=6]F@7D,X0%U9XN^6`4``(V7Z!8!`&:!>Q"%`'<7#[=#$`^V
+ME#"8!```C032P>`"*="-%,</MD$.@_@'=!B#^`=_!X/X!G05ZR>#^`QT'(/X
+M#700ZQMF@V(V_>L49H-*-@+K#6:#8C;WZP9F@THV")"#>U``=`Z-0U!05NC\
+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
+M1,)4BD@$ZP6-=@"Q_[+_9H%[$(4`=PL/MT,0BI0PF`0``(#Y_W08#[;!@+PP
+M'@4``/]T"X#Z_W0&@'L4!G4D@WM0`'0.C4-04%;H_/___X/$")"#[`A35NC\
+M____@\00ZVF0#[;!#[:,,!X%``"-!$G!X`,IR(V,AB@!```/MM*-!-+!X`(I
+MT(N66`4``(T$PH![%`!T$(/L!&H!4%'H_/___X/$$)"#>U``=`Z-0U!05NC\
+M____@\0(D(/L"%-6Z/S___^#Q!"-=@"#Q`1;7L.)]E575E.#[!B+1"0LBRA5
+MZ/S___^)QH/$$(7`#X2+````@^P,5>C\____B<>#Q!"%P'42@^P(5E7H_/__
+M_X/$$.MJC78`C5X\QD8DX<9&)0'&1B8.BU0D)&:+0AAFB4809H-B-/>+5"0@
+MBP*)1AC'1B``"```BT<(B48TB7Y0QT9LE%\"`(/L"&H`4^C\_____W8@_W<0
+M_W<,4^C\____@\085E7H_/___X/$$(/$#%M>7UW#D%=64XM\)!"+="04BT<H
+MBQB#[`Q3Z/S___^)PH/$$(7`=#[&0"0;QD`E`8GPB$(H9HM'&&:)0A#&0F@/
+MB5H8QT(@`````,="-`````#'0FP`````@^P(4E/H_/___X/$$%M>7\-75E.+
+M?"00BT<HBS"#[`Q6Z/S___^)PX/$$(7`=&R#[`Q6Z/S___^)PH/$$(7`=1C&
+MA[$````!@^P(4U;H_/___X/$$.M$B?;&0R0`9HM'&&:)0Q#&0V@/B7,8QT,@
+M`````,=#-`````"+0@B)0SC&0QPDB5-0QT-L`````(/L"%-6Z/S___^#Q!!;
+M7E_#B?955U93@^P0BVPD*(M<)"S&0R,!QD,B`%-J!E7H_/___X/$$(-[+`!T
+M$8M3#(M#"(E0!(D"BT,L_D@P@'M+`'0A@^P,_W0D+.C\____QP0D`0```.C\
+M____@\00@'M+`'7?@[O@`````'0>@^P$:@$/MH/5````4/^SX````.C\____
+M@\00C78`@WLL`'06@^P$:@$/MD-)4/]S+.C\____@\00D(-['``/A*@```"+
+M<QR#?G``#X6-````@WYT``^%@P```/9#)`1U+(M$)"#^@%<,``"#[`Q0Z/S_
+M__^#Q`QJ`8M#'`^V0`%0_W0D+.C\____@\00@^P$BT,<#[9``E"+0QP/MD`!
+M4&C8````Z/S___^#Q`S_<QR+1"0H_[`D!0``:@'H_/___X/$#/]S'(M$)"C_
+ML"0%``!J!NC\____@\00C78`QT,<`````,=&8`````"#>S``=`^+4S`/MD-)
+MQT2"/`````"+4P2+`XE0!(D"_DT*@^P(4_]T)"SH_/___X/$$(!]!?]T5K\`
+M````@'T*`'8WC74X@^P,5NC\____B<.#Q!"+1@2)7@2),XE#!(D8@'LB_W4*
+M1XGX.$4*=]?K"8GX.$4*=Q:)]L9%!?^#[`A5_W0D+.C\____@\00@\0,6UY?
+M7<,/MD0D"(T4P,'B`RG"C120C125=$4``(M$)`2)$,.)]E93@^P$BW0D%(I$
+M)!B(1"0#BUPD$+@`````B?&)VH7V=`B)]H@"0DEU^HDSC8:,NO__P>@"NEFV
+M^7+WXHG0P>@'B$,$BD0D`SA#!'8#B$,$L0"`>P0`=B$/MM'&1!,'_XT$TL'@
+M`RG0C02"QH2#V$4``/U!.$L$=]_&0P8`QD,%`+$`D`^VP8T4@(T4T(V4DY`Q
+M``#&0@<!B$H&08#Y'W;C@\0$6U[#D%575E.#[`R+;"0DBW0D(+\`````@'X$
+M`'8^B?:)^`^VV(T$V\'@`RG8C02#C82&T$4``(!X"/UT%X/L!&H(55#H_/__
+M_X/$$(3`=`2)V.L-1XGX.$8$=\2X_P```(/$#%M>7UW#C78`4X/L$(M<)!C_
+M="0<4^C\____@\00N@D````\_W06#[;0C032P>`#*="-!((/MI2#>D4``(G0
+M@\0(6\.055=64X/L#(M<)"2-@Y````")WXNSF````(!^!@`/A$$!``"#[`A0
+M5NC\____B<6#Q!`\_P^$*@$```^V0P&#^`%T98/X`7\,A<!T(>D3`0``C78`
+M@_@0#X2#````/9`````/A,4```#I]P```("^ES$````/A>H```#&AI<Q```!
+M_DX&@^P(:@!J`&H`B>H/ML)0_W0D.%;H_/___X/$(.F_````C78`@+Z7,0``
+M``^%KP```,:&ES$```'^3@:#[`AJ`&H`:@&)Z@^VPE#_="0X5NC\____@\0@
+MZ80```"Q`8GV#[;!C12`C130C826D#$``(GJ.%`$=0F*0`4Z1PET!Y!!@/D?
+M=MK^3@:#[`A7#[9'"5!J$(GJ#[;"4/]T)#A6Z/S___^#Q"#K-P^V@Z(```"-
+M%("-%-#&A):7,0```?Y.!H/L"&H`:@!HD````(GJ#[;"4/]T)#A6Z/S___^#
+MQ""#Q`Q;7E]=PU575E.#[`2+;"0<BD0D)(A$)`.+5"0H9HD4)(M<)!B_````
+M`(GY#[;!C11`B='!X08!RHT44#ELTQ0/A8P```"Y`````(GX#[;PC01VB<+!
+MX@8!T(T$1HT4Q0````")]@^WP8T$0(T$PHU$&""`>!``=`:`>!#P=4L/M]&-
+M%%*-!':)P<'A!@'(C01&C10"C133B6H<BTPD((E*((U"$(L,)&:)2!:*3"0#
+MB$@4BTPD+(L!B4(HBT$$B4(LQD(P_^L*B?9!9H'Y@0!VE$>)^#P##X9-____
+M@\0$6UY?7<.055=64X/L#(ML)"`/MGPD*(GKC;7T,```QH67,0```+H`````
+MN9````")\)"($$!)=?K&1@$`Q@9`QX.0,0```&8"`(FKC#$``(GX#[;0C032
+MP>`#*="-!(*-!(.+D-!%``")DX0Q``"+@-1%``")@X@Q``"#[`B-@_0P``!0
+M_W0D,.C\____@\0<6UY?7<.055=64X/L#(ML)"`/MGPD*(GKC;7T,```QH67
+M,0```+H`````N9````")\)"($$!)=?K&1@$!Q@9`QX.0,0```&8"`(FKC#$`
+M`(GX#[;0C032P>`#*="-!(*-!(.+D-!%``")DX0Q``"+@-1%``")@X@Q``"#
+M[`B-@_0P``!0_W0D,.C\____@\0<6UY?7<.055=64X/L#(I,)"B*1"0LB$0D
+M"XM\)""S`0^VP8T4P(TLU0`````IQ8TLJ)`/ML.-%("-%-"-A)>0,0``@'@'
+M`0^%M@```(A(!(I4)`N(4`7&0`<`#[9P!HT$MHT$QHVTA_0P``"Y`````+J0
+M````B?"-=@"("$!*=?K&1@$0Q@9`BD0D"XA&"0^VPXT,@(T,R(T,CXV9D#$`
+M``^V0P:-%("-%-"-%)?'@I`Q````9@(`BT0D((F"C#$``(T4KXN"T$4``(F!
+MA#$``(N"U$4``(F!B#$``(/L"`^V0P:-%("-%-"-E)?T,```4O]T)##H_/__
+M_X/$$.L2C78`0X#['P^&)O___[@!````@\0,6UY?7<.055=64X/L#(I$)"R(
+M1"0+BVPD,(M\)""S`8GJ#[;6B50D!(GV#[;#C12`C130C127C8*0,0``@'@'
+M`0^%J````,9`!P")NHPQ```/MD`&C12`C130C;27]#```+D`````NI````")
+M\)"("$!*=?K&1@&0Q@9`BDPD!(A.!HGHB$8'BE0D"XA6"8M,)#2+`8E&$(M!
+M!(E&%`^VPXT4@(T4T(T4E\>"D#$```!F`@"+1"0@B8*,,0``BTPD*(M!7(F"
+MA#$``(M!8(F"B#$``(/L"('"]#```%+_="0PZ/S___^#Q!#K$HUV`$.`^Q\/
+MAC+___^X`0```(/$#%M>7UW#D%575E.#[`R+;"0@BD0D+(A$)`N+?"0PB>Z-
+MG?0P``"Y`````+J0````B=B0B`A`2G7ZQD,!$\8#0(GZ#[;&B$,&B%,'BE0D
+M"XA3"<>&D#$```!F`@")KHPQ``"+5"0HBT)<B8:$,0``BT)@B8:(,0``@^P(
+MC8;T,```4/]T)##H_/___X/$'%M>7UW#BT0D"`^V5"0,9HM,4'!!9HE,4'!F
+M#[9``@'(#[?`PY"+3"0$N@$```"-=@"-!)*-!,*`O(&7,0```74$B=##D$*#
+M^A]VYKC__P``PU.#[`B+7"00BD0D%(A$)`.*3"08B$PD![H!````C78`C022
+MC03"C82#D#$``(I,)`,X2`1U$HI,)`<X2`5U"<9`!P'K"8UV`$*#^A]VTH/$
+M"%O#D%575E.#[#R*1"18B$0D+XI,)%R*5"1@B%0D+HML)%"+?"1D#[;0C032
+MP>`#*="-!(*`O(7810``_74%L?V-=@`/ML&#^!`/A+0"``"#^!!_%X7`#X2;
+M````@_@!#X0T`0``Z4$)``"0/>(````/A+$(```]X@```'\2/9`````/A(\'
+M``#I'@D``(GV/?\````/A1$)```/ME0D+XT$TL'@`RG0C02"QH2%V$4``/^`
+MO9<Q```!=22#[`12_W0D7/]T)%SH_/___X/$$(7`#X74"```_D4&Z<P(```/
+MMD0D+\9$!0<!BU0D5(E4A0SIM0@``)"-G?0P``"`O9<Q```!=54/MDPD+XT$
+MR<'@`RG(C02!C42%`(I3"8B0=D4```7010``BE,*@^(!B%`)QD`(`(/L!%'_
+M="1<_W0D7.C\____@\00A<`/A5H(``#^10;I4@@``(GV#[9$)"_&1`4'`8M4
+M)%2)5(4,Z3D(``#&1`4'_X/L"&H`:@!H_P```%#_=(4,_W0D;.C\____@\0@
+MZ1((``"_`````(V-]#````^V5"0OB=:-!-+!X`,IT(T$@HU<A0"*03*(@\9%
+M``!FBT$P9HF#Q$4``(M!*(F#M$4``(M!+(F#N$4``(M!#(F#A$4``(M!$(F#
+MB$4``(V3E$4``(M!%(F#E$4``(M!&(E"!(M!'(E""(M!((E"#(M!)(F#K$4`
+M`,:#V$4```&`?08?#X1^!P``@+MV10````^$F0````^V1"0OC13`C1S5````
+M`"G#C1R8B5PD*(E$)`R0B?H/ML)05O]T)%S_="1<Z/S___^#Q!"%P'4O1_Y%
+M!HT$]L'@`RGPC02&C42%`(GZ.)!V10``=0G&@,=%````ZQN(E)W'10``ZQ*)
+M^HM$)"B(E(7'10``ZR.-=@"`?08?=!J+="0,C03VP>`#*?"-!(:)^CB4A79%
+M``!WA,:%ES$```&R`(!]!``/AL4&``"0#[;"@'P%!P$/A'W^__]".%4$=^SI
+MJP8``(UV`,9$)"?_BT<8B40D,(U,)#"+1QR)000/ME0D+XT$TL'@`RG0C02"
+MC72%`(V&T$4``,9`"!#V1PQP#X26`P``@[[<10```'1MBE@*@^P$:@A1BX;<
+M10``@\!<4.C\____@\00A,!U3O9'#P]T2(NVW$4``(7V=#Z`?F4`="T/MMM3
+M5E7H_/___XU7&%(/M\!04U;_="1P_W0D<.C\____BEYFBW9H@\0DZP6^````
+M`(7V=<2)]@^V3P_VP0T/A#L!```/ME0D+XT$TL'@`RG0C02"C12%`````(V$
+M*G!%``"`>`0?#X<3`0``BD`$B$0D)?;!"'02#[;`P>`$`=#&A"CH1P``!NLC
+M#[9,)"4/ME0D+\'A!(T$TL'@`RG0C02"C02!QH0HZ$<```</ME0D)0^V1"0O
+MP>($C0S`P>$#*<&-#(C!X0(!R@'JC9K@1P``QD,)`(I'#XA#"XM$)#")@O!'
+M``"+1"0TB8+T1P``BD<)B$,*BE<-@^(/BH0I>D4``#C0=@*(T(C"@^(/BD,,
+M@^#P"="(0PP/MDPD)0^V5"0OP>$$C032P>`#*="-!(+!X`(!P8V,*>!'``"*
+M5RF#X@^*A"AZ10``.-!V`HC0B,+!X@2*00R#X`\)T(A!#`^V5"0OC032P>`#
+M*="-!(+^A(5T10``Z=L!``"-=@#V1P\"#X3.`0``@^P(C40D.%!5Z/S___^(
+M1"0V@\00//\/A4T!``#&1"0G`(!]!`!V,`^V5"0GC032P>`#*="-!(*-A(70
+M10``@'@(_W03@'@(_70-_D0D)XI$)"<X101WT`^V5"0GC032P>`#*="-!(*Y
+M`````+ID````C82%=$4``)"("$!*=?H/ME0D)XT$TL'@`RG0C02"C42%``^V
+M5"0OC1S2P>,#*=.-')J-7)T`C9-T10``B9#<10``BY/010``B9#(10``BY/4
+M10``B9#,10``BU0D5(F0Y$<``(N3X$4``(F0X$4``,:`V$4``/^-D'!%```/
+MMG(+BD\)B(PP?$4``/Y""XI/#8/A#XJ#>D4``#C(=@*(R(A""@^V5"0GC032
+MP>`#*="-!(*-1(4`C8C010``BU0D,(F0T$4``(M4)#2)402*5P^(D'=%``"*
+M1"0NB$$*BD4%.D4$=03&104`_D4%ZU/&1P<`Z3@#```/MD0D+XT,P,'A`RG!
+MC0R(#[94)":-!-+!X`,IT(T$@HU<A0"-@W1%```YA(W<10``=!>-@W!%```/
+MMD@+BE<)B)0+?$4``/Y`"X!\)";_=1,/MD0D)\9$!0<!BU0D5(E4A0R0#[9'
+M"5`/MEPD,U-5Z/S___^-!-O!X`,IV(T$@X/$#("\A<=%````#X2S````@'T&
+M'P^$G0(```^V7"0OC03;P>`#*=B-!(/!X`*-%"B)5"0@@<)P10``B50D'`'H
+MB40D$.MCD(MT)!#&AMA%```0C;[`10``#[9'!U!3_W0D7/]T)%SH_/___X/$
+M$(7`#X5!`@``_D4&#[9'!T`/MI9V10``.=`/A.G^__^-!-O!X`,IV(T$@_Z$
+MA<=%``"`?08?#X0.`@``BU0D((J"QT4``(M4)!PZ0@9RB^GV`0``B?:`?08`
+M#X7J`0``@^P(:@!J`&B0````#[9$)$-0_W0D;/]T)&SH_/___X/$(.G#`0``
+MQD0%!_^#[`AJ`&H`:/\```!0_W2%#/]T)&SH_/___\9$)#<!@\0@Z>$```"-
+M=@#&1"07`,=$)!@`````BU0D&(T$4HG"P>(&`="+5"08C01"BU0D5#E4Q11U
+M?;L`````BU0D&(T$4HG"P>(&`="+5"08C01"C3S%`````(UV`(T$6XT$QXT,
+M*(UQ((!^$/]U/H!]!A\/A"@!``"#[`B-02A0C5$0#[="%E`/MD(44/]Q(/]T
+M)&S_="1LZ/S___^#Q""%P'4)_D4&QD80\(GV0X'[@0```':G_T0D&(-\)!@#
+M#X95____@'T&``^%T@```+(`@'T$`'84#[;"@'P%!P$/A/G^__]".%4$=^R`
+M?"07``^%JP```(/L"&H`:@!HX@````^V1"1#4/]T)&S_="1LZ/S___^#Q"#I
+MA````+,`@'T$`'8K#[;3C032P>`#*="-!(*-A(7010``@'@(_70*@'@(_W0$
+MQD`(_D,X701WU0^V5"0OC032P>`#*="-!(*+M(7@10``LP`/ML.-%$")T<'A
+M!@'*C110C535`(U"$(!X"`%U$\9`"`"#[`C_<A3_="1<_]:#Q!!#@/L#=LJ)
+M]H/$/%M>7UW#55=64X/L!(M\)!R+;"0DBD0D((A$)`.+3"08QD4`_K,`O@``
+M``"`>00`=C8/MM.-!-+!X`,IT(T$@HT$@3FXY$<``'47B?(Z5"0#=0N*@-A%
+M``"(10#K"D:-=@!#.%D$=\J#Q`1;7E]=PXGV55=64X/L#(ML)""*1"0LB$0D
+M"XGNBD4%.D4$=03&104`#[9^!;,`#[;#C11`B='!X08!RHT44(T$UHM4)"0Y
+M4!1U1<9`&`&_`````(!^!`!V:(GX#[;0C032P>`#*="-!(*-!(:+5"0D.9#D
+M1P``=0V*@-A%``"#P`,\`78\1XGX.$8$=\SK,@^VPXT40(G1P>$&`<J-%%"-
+M!-:#>!0`=0^+5"0DB5`4QD`8`>L,B?9#@/L##X9M____#[;#C11`B='!X08!
+MRHT44+L`````N0(,``"-1-8<B!A`277ZB?@/MM"+1"0DB426#(T$TL'@`RG0
+MC02"N0````"Z9````(V$AG1%``"("$!*=?J)^`^VT(T$TL'@`RG0C02"N0``
+M``"Z``(``(V$AN1%``")]H@(0$IU^HGZ#[;*C03)P>`#*<B-!(&-!(:+?"0D
+MB;CD1P``BU0D,(F0X$4``(V8T$4``,9#"/_'@-Q%````````BWPD*(L7B9#0
+M10``BU<$B5,$BE0D"XB0>D4``(/L"&H`:@!H_P```%'_="0\5>C\_____D8%
+M@\0L6UY?7<.055=64XML)!B+="04OP````"`?@0`#X:6````B?@/MM"-!-+!
+MX`,IT(T$@CFLAN1'``!U<;,!#[;#C12`C130C826D#$``(GZ.%`$=03&0`<!
+M0X#['W;?B?@/MM"-!-+!X`,IT(T$@HT$AL>`Y$<```````"Y`````+ID````
+MC8!T10``B`A`2G7ZB?@/MM"-!-+!X`,IT(T$@L:$AMA%``#]_DX%1XGZ.%8$
+M#X=J____OP````")^@^VPHT40(G1P>$&`<J-%%"-!-8Y:!1U.,=`%`````#&
+M0!@`LP")^@^VPHT40(G1P>$&`<J-%%#!X@.)]@^VPXT$0(T$PL9$,#``0X#[
+M@7;L1XGX/`-VIUM>7UW#55=64X/L'(M,)#2+1"1`BE0D/(A4)!N+?"0PO0``
+M``"S`(!\)#@!#X7W````A<`/A-0```")1"04@'\$`'8ID(GH#[;0C032P>`#
+M*="-!((YC(?D1P``=0<Z7"0;=`E#18GJ.%<$=]B)Z@^VPHT<P,'C`RG#C1R8
+MC1R?C8-T10``@^P$:F10_W0D(.C\____O@````"#Q!"`NW1%````=&B)Z`^V
+MT(T$TL'@`RG0C02"P>`"B40D#(V4.'!%``")5"00D(GR#[;"P>`$BU0D%(T<
+M$(U+9`-$)`P!^(V0Z$<``(N`Z$<``(E#9(M"!(E!!(M""(E!"(M"#(E!#$:)
+M\(M4)!`X0@1WNXGH#[;0C032P>`#*="-!((/MH2'=$4``.LZD+T`````O@``
+M``"`?P0`=B2)\`^VT(T$TL'@`RG0C02".8R'Y$<``'4#18GV1HGR.%<$=]R)
+MZ@^VPH/$'%M>7UW#D)"05E.+1"0,BQ"+,K$`@'HK`'84#[98"8GVB=C3^*@!
+M=09!.$HK=_*`^0-V$0^VP8N$AM`!``"C`````.L/#[;!BX2&T`$``*,`````
+MJ0``$``/E<`/ML!;7L.-=@!55U93@^P,BT0D)(M4)""+*HM]`,9`(0#&0"`%
+MQD`C!HE0*,9$)`<`QT0D"`````"S`(!]*P!V&(M,)"`/ME$)B="(V=/XJ`%U
+M!D,X72MW\(#[`W83#[;#QX3'``(``"P```#K$8UV``^VP\>$QP`"```L````
+M@^P,:!`G``#H_/___X/$$(#[`W85#[;#BX3'!`(``*,`````#[;PZQ.0#[;#
+MBX3'!`(``*,`````#[;P"70D"(#[`W81#[;#QX3'``(``"0```#K#Y`/ML/'
+MA,<``@``)````(/L#&@0)P``Z/S___^#Q!"`^P-V&0^VPXN$QP0"``"C````
+M`(G&@>;___\`ZQ</ML.+A,<$`@``HP````")QH'F____`(GPP>`("40D"(#[
+M`W83#[;#QX3'``(``"````#K$8UV``^VP\>$QP`"```@````@^P,:!`G``#H
+M_/___X/$$(#[`W85#[;#BX3'!`(``*,`````B<;K$XGV#[;#BX3'!`(``*,`
+M````B<:!?"0(`0%IEG49BT0D((!("`:)\,'H$#Q0#Y3`#[;`ZTJ)]H%\)`@!
+M`0``=1*)\,'H$#Q0#Y3`#[;`ZR^-=@"#[`QHB!,``.C\____@\00_D0D!X!\
+M)`<$#X9!_O__B?#!Z!`\4`^4P`^VP(/$#%M>7UW#5E.#[`2+="00BQY6Z/S_
+M__^#Q`2$P'44QD8%_X/L"%93Z/S___^#Q!#K79"Q`(![*P!V$@^V5@F)T-/X
+MJ`%U!D$X2RMW\H/L#%/H_/___XG!@\00A<!T,(U&.(M0!(E(!(D!B5$$B0K^
+M1@J)<2C&02`%QD$A`,9!20]J`6H!45;H_/___X/$$(/$!%M>PXGV55=64X/L
+M#(ML)""+="0DBWT`NPH```"0@^P(5E7H_/___X/$$(3`=1.#[`QHZ`,``.C\
+M____@\002W7<L0"`?RL`=A(/ME4)B=#3^*@!=09!.$\K=_*+5@2+!HE0!(D"
+M_DT*@^P(5E?H_/___X/$$/9%"`)T2H-]*`!U&8/L#%?H_/___X/$$(7`#X1H
+M`0``B44HZP.+12B).(EH5,9`*@#&0"L`QD`F`&:#2#($@^P(4%?H_/___X/$
+M$.DX`0``@WTH``^$S0```(/L"(M%*(/`6%#_=Q3H_/___X/$"/]U*%?H_/__
+M_X/$$(U%.(G".44X#X27````B<.0@^P,4NC\____B<:#Q!"#>!P`=&6+0!S'
+M0&``````]D8D!'4E_H=7#```@^P,5^C\____@\0,:@&+1AP/MD`!4%?H_/__
+M_X/$$(/L!/]V'/^W)`4``&H!Z/S___^#Q`S_=AS_MR0%``!J!NC\____QT8<
+M`````(/$$/Y-"H/L"%97Z/S___^#Q!")VCE=.`^%;/___\=%*`````"`?0H`
+M=!:#[`R-13A0Z/S___^)QOY-"H/$$.L.@^P,5^C\____B<:#Q!"%]G0SC44X
+MBU`$B7`$B0:)5@2),OY%"HEN*,9&(`7&1B$`QD8C!L9&(@.#[`A65^C\____
+M@\00@\0,6UY?7<-55U93@^P,BWPD((ML)"2*1"0HB$0D"XI$)"R(1"0*BP>)
+M1"0$N@````"^`````(!_"@!V-XU?.(/L#%/H_/___XG"@\00BT,$B5,$B1J)
+M0@2)$#EJ+'4,BD0D"SA"270+C78`1HGP.$<*=\R)\#A'"G0M@'PD"E!U)L9"
+M(P;&0B(%QD(@!\9"(0"):BR)>BB#[`A2_W0D$.C\____@\00@\0,6UY?7<-5
+M5U93@^P,BVPD((M]`,9$)`O_LX"^_____X#[A7<+#[;##[:T.)@$``")\#S_
+M=$@/ML"+CY`%``"-!$"-!,")PL'B!2G"C025`````#EL"`AU)8/L!&H(_W0D
+M+`.'D`4``%#H_/___X/$$(3`=`F)\(A$)`OK!Y!#@/N!=I</MD0D"X/$#%M>
+M7UW#D%575E.!["P"``"*A"1(`@``B$0D'XN4)$`"``"+4@B)5"08BRJ+C"1`
+M`@``BDDPB$PD%XN$)$`"``"#P"B)PHN,)$`"```Y02@/A&<"``"`?"07``^$
+M7`(``(E$)`R)]H/L#%+H_/___XUP^(/$!(U$)"Q0#[9$)"]0:@'_="0P_[0D
+M8`(``.C\____OP````"#Q""`?"0@``^&X0```(U6"(E4)!")]H/L!&H(C8:<
+M````4(GY#[;!P>`$C50D+(T<$(U#;%#H_/___X/$$(3`#X29````C5-@BD((
+M@^`/B(:R````9HM.-('AW_W__XG(@\@09HE&-(I"",#H!#P)=0F)R(/(,&:)
+M1C2)^0^VP<'@!(J$!(@```#`Z`0\"G4&9H%.-``"BX0D0`(``(/`*(M0!(M,
+M)!")2`2)1@B)402)"HI&)*@"=#6#X/V(1B2#?AP`="F#[`3_=AS_M20%``!J
+M!NC\____@\00ZQ&01XGX.$0D(`^'*____^L-D(GZ.%0D(`^'"P$``(/L!%9J
+M!O]T)"3H_/___X/$$(!^2P!T'H/L#%7H_/___\<$)`$```#H_/___X/$$(!^
+M2P!UXH.^X`````!T'8/L!&H!#[:&U0```%#_MN````#H_/___X/$$(GV@WXL
+M`'06@^P$:@$/MD9)4/]V+.C\____@\00D(-^'`!T98M&',=`8`````#V1B0$
+M=27^A5<,``"#[`Q5Z/S___^#Q`QJ`8M&'`^V0`%05>C\____@\00@^P$_W8<
+M_[4D!0``:@;H_/___X/$#/]V'/^U)`4``&H!Z/S____'1AP`````@\00BU8$
+MBP:)4`2)`HM,)!C^20J+A"1``@``_D@P@^P(5E7H_/___X/$$/Y,)!>+5"0,
+MBXPD0`(``#E1*'0+@'PD%P`/A:K]__^!Q"P"``!;7E]=PXUV`%575E.!["@"
+M``"+O"1``@``BX0D/`(``(L`B40D&,9$)!<`C5PD'%,/MK0D3`(``%9J`?^T
+M)$@"``!7Z/S___^#Q!Q65_^T)$0"``#H_/___XN$)$@"``"+4"B-:OB#Q!"+
+MA"0X`@``@\`H.<)T*XG"C78`@'TA#70&@'TA(G40QD0D"P'&12(%QD4C!.L+
+MD(M%"(UH^#G0==K&1"0*`(!\)!``#X;L`0``BYPD.`(``(/#*(N4)#@"``"+
+M0BB-</@YV'0U#[9$)`J)Q\'G!)"#[`1J"(V$/(0```!0C8:<````4.C\____
+M@\00A,!U"HM&"(UP^#G8==:-1@@YV`^%?P$``,9$)`L`@^P,_W0D&.C\____
+MB<:#Q!"%P`^$B`$``(N$)#`"``#^0`K&1B(%QH:P`````,9&(P1FQX:0````
+M``#&AI(`````QT9````%`,=&1``````/MD0D"L'@!(U$!'"*4`2(5B"*4`6(
+M5B&+E"0P`@``B58HBE`(@^(/B):R````9HM.-('AW_W__XG*@\H09HE6-(I`
+M",#H!#P)=0F)R(/(,&:)1C0/MD0D"L'@!(I$!'C`Z`0\"G4&9H%.-``"BX0D
+M.`(``(E&+`^V1"0*P>`$C50D$`'0BE!FB%9)BU!LB9:<````BT!PB8:@````
+MB9:4````B8:8````BX0D.`(``/Y`,(N$)#`"``"#P#B+4`2)<`2)!HE6!(DR
+MC48(BU,$B4,$B5X(B5`$B0(/MD8@J`)T)Z@$=".H`70?5@^V1DE0_[0D0`(`
+M`/^T)#P"``#H_/___X/$$.LAD`^V1B"H`G08J`1T%*@!=1"#[`A6_W0D&.C\
+M____@\00_D0D"HI4)`HX5"00#X<>_O__@'PD"P!T#H/L"&H*5>C\____@\00
+M@<0<`@``6UY?7<.)]E575E.!["P"``"+A"1``@``BP")1"0,BXPD0`(``(I)
+M'(A,)!^+A"1``@``@\`LB<*+M"1``@``.48L#X1Z`P``A,D/A'(#``")1"08
+M@^P,4NC\____C6C@QP0D`````&H`:@#_M"18`@``_[0D8`(``.C\____B$0D
+M/<9$)#X`@\0@.$0D'@^#\@$``(UV`(/L#&H`#[9\)"Y7:@'_M"18`@``_[0D
+M8`(``.C\____#[;`P>`$@\!D@\0@/0`"```/AWD!``"#[`R-7"0L4U=J`?^T
+M)%@"``#_M"1@`@``Z/S___^#Q!QJ"%6-A"2(````4.C\____@\00A,`/A#T!
+M``"-52"+A"1``@``@\`LBT@$B5`$B44@B4H$B1&*1"0BB$4Q@^P(C40D?%#_
+MM"1,`@``Z/S___^#Q!`\_W0@#[;`C01`C03`B<+!X@4IPHM,)`R+@9`%``"-
+M%)")50R`?"0>`'1/#[9#`]'H@^`!P>`$BE4U@^+O"<*(534/MD,#P>@#@^`!
+MP>`%@^+?"<*(534/MD,#P>@"@^`!P>`#@^+W"<*(536*0P:(A8L```#IG@``
+M`(I#`HA%,8NT)$`"``")=0B*0P:(A8L````/MT,$B44X9HM#4&:)A8@```"*
+M0U*(A8H```"+0T")17B+0T2)17R+0TB)A8````"+0TR)A80```"+0Q")14B+
+M0Q2)14R+0QB)15"+0QR)152-?5B-0R#\N08```")QO.EBT,XB45PBT,\B45T
+MZQ:)]OY$)!Z*1"0=.$0D'@^"/O[__^LK#[9$)!Y05?^T)$P"``#_M"1,`@``
+MZ/S___^#Q!"*3"0=.$PD'@^"'0$``(U%*(G".44H#X3U````B<>0@^P,4NC\
+M____C5CX@\0,4VH&_[0D3`(``.C\____@\00@'M+`'0BD(/L#/]T)!CH_/__
+M_\<$)`$```#H_/___X/$$(![2P!UWX-['`!T<8M#',=`8`````#V0R0$=2F+
+M="0,_H97#```@^P,5NC\____@\0,:@&+0QP/MD`!4%;H_/___X/$$(/L!/]S
+M'(M$)!3_L"0%``!J`>C\____@\0,_W,<BTPD%/^Q)`4``&H&Z/S____'0QP`
+M````@\00BU,$BP.)4`2)`HNT)$`"``#^3@K^33"#[`A3_W0D&.C\____@\00
+MB?HY?2@/A0[___^+A"1``@``_D@<@^P(5?]T)!CH_/___X/$$/Y,)!^+5"08
+MBXPD0`(``#E1+'0+@'PD'P`/A9+\__^!Q"P"``!;7E]=PXGV55=64X'L)`(`
+M`(NL)#P"``"+10")1"04_[0D.`(``%7H_/___\<$)`````!J`&H`5?^T)$P"
+M``#H_/___XA$)"K&1"0K`(/$(#A$)`L/@S,#``"0@^P,:@`/MGPD&U=J`57_
+MM"1,`@``Z/S___\/ML#!X`2#P&2#Q"`]``(```^'[P(``(/L#(U<)!Q35VH!
+M5?^T)$P"``#H_/___X/$&(U$)'105>C\____@\00//\/A;X"``"#[`S_="08
+MZ/S___^)PX/$$(7`#X31`@``_D4<QD`P`(M$)&R)`XM$)'")0P2#[`B-1"1L
+M4%7H_/___X/$$#S_="`/ML"-!$"-!,")PL'B!2G"BTPD#(N!D`4``(T4D(E3
+M#(I$)!*(0S$/MD0D$]'H@^`!P>`$BE,U@^+O"<*(4S4/MD0D$\'H`X/@`<'@
+M!8/BWPG"B%,U#[9$)!/!Z`*#X`'!X`.#XO<)PHA3-8EK"(I$)!:(@XL```"+
+M1"08B4-`BT0D'(E#1(I$)!>(0S(/MT0D%(E#.(M$)&!FB8.(````BD0D8HB#
+MB@```(M$)%")0WB+1"14B4-\BT0D6(F#@````(M$)%R)@X0```"+1"0@B4-(
+MBT0D)(E#3(M$)"B)0U"+1"0LB4-4C7M8C70D$(/&(/RY!@```/.EBT0D2(E#
+M<(M$)$R)0W2-4R"-12R+2`2)4`2)0R")2@2)$;\`````@'PD$``/A%`!``"#
+M[`S_="08Z/S___^)QH/$$(7`#X1C`0``_D4*QD`B!<:`L`````#&0",$QT!`
+M```%`,=`1`````!FQX"0```````/M]?!X@2-5!1PBD($B$8@BD(%B$8AB6XH
+MB5XLBD(&B$9)BD((@^`/B(:R````9HM.-('AW_W__XG(@\@09HE&-(I"",#H
+M!#P)=0F)R(/(,&:)1C0/M\?!X`2*1`1XP.@$/`IU!F:!3C0``@^WQ\'@!(U4
+M)!`!T(M0;(F6G````(M`<(F&H````(F6E````(F&F````/Y#,(U%.(M0!(EP
+M!(D&B58$B3*-5@B-0RB+2`2)4`2)1@B)2@2)$0^V1B"H`G0:J`1T%J@!=!)6
+M#[9&25!35>C\____@\00ZR`/MD8@J`)T&*@$=!2H`740@^P(5O]T)!CH_/__
+M_X/$$$=F#[9$)!!F.?@/A[#^___^1"0+BDPD"CA,)`L/@L[\__^`?0H`=13&
+M107_@^P(5?]T)!CH_/___X/$$('$'`(``%M>7UW#D%575E.#[!B+;"0LBW0D
+M,&H`:@!J`%95Z/S___^(1"0JLP"#Q"`Z7"0*<R*-?"0+D%</ML-05E7H_/__
+M_X/$$(!\)`O^=7Y#.EPD"G+C_DXT@'XT`'16BS[&1C0`BU8LC5K@C48L.<)T
+M6XG"D(-[#`!T#(M#((U8X#G0=?#K1OY&-(/L"%95Z/S____'!"0`````#[:#
+MBP```%!35O^WQ`D``.C\____@\0@ZQB#[`A65>C\____@\0(5E7H_/___X/$
+M$)"#Q`Q;7E]=PU=64XM$)!"+&+\*````L@"`>RL`=C@/MG`)B?8/MLJ)\-/X
+MJ`%T(8G(P>`$`<B+A(-<"P``)0```P#!Z!"#P`B)^3C(<P*)QT(X4RMWSHGZ
+M#[;"6UY?PY!75E.+1"00BQB_"````+(`@'LK`'8X#[9P"8GV#[;*B?#3^*@!
+M="&)R,'@!`'(BX2#7`L``"4```,`P>@0@\`(B?DXR'8"B<=".%,K=\Z)^@^V
+MPEM>7\.055=64X/L'(M$)#"+*,9$)!<`@'@)``^$]`,``,9$)`\`#[9`"8G"
+MJ`%U$9#^1"0/B="*3"0/T_BH`73P#[94)`^)T,'@!`'0C52%`(N"3`L``*D`
+M``(`=!`-```$`"7___W_B8),"P``#[94)`^)T,'@!`'0]H2%3@L```0/A+D"
+M```YK20%``!U#(VU8`P``(ET)!CK"HN%)`4``(E$)!B#[`0/MDPD$XG(P>`$
+M`<B-1(4`#[:05PL``%(/MI!6"P``4@^VD%4+``!2#[:05`L``%(/MI!3"P``
+M4@^VD%(+``!2#[:040L``%(/MH!0"P``4`^V12E046B0`P``Z/S___^#Q#!F
+MQT0D%(``#[94)`^)T,'@!`'0C82%4`L``(E$)!`/MT0D%(M4)!AF#[:$$)@$
+M``!F/?\`=#D/M\"-!$"-!,")PL'B!2G"BTPD&(N!D`4``(T<D(M\)!"Y"```
+M`/R)WO.F#Y?"#Y+`.,(/A'4!``!F_T0D%&:!?"04@0!VH8/L#%7H_/___XG#
+M@\00A<`/A'8"```/ME0D#XG0P>`$`=#VA(5-"P``!'0$@$LU`@^V5"0/B=#!
+MX`0!T/:$A4X+```$=`2`2S40#[94)`^)T,'@!`'0]H2%30L```AT!(!+-00/
+MME0D#XG0P>`$`=#VA(5."P``"'0$@$LU(`^V5"0/B=#!X`0!T/:$A4T+```"
+M=`2`2S4!#[94)`^)T,'@!`'0]H2%3@L```)T!(!+-0C&0S``#[94)`^)T,'@
+M!`'0C42%`(N04`L``(D3BX!4"P``B4,$BT0D,(E#"%#H_/___XB#BP```(M4
+M)#3^0ARQ`(/$!(!]*P!V)(MT)#`/MD8)T_BH`700#[9$)!>(3!A`_D,R_D0D
+M%T$X32MWW(U3((M$)#"#P"R+2`2)4`2)0R")2@2)$8M$)##^0#2#[`QH````
+M``^V@XL```!04_]T)$C_M<0)``#H_/___X/$(.DE`0``@^P,#[9#!U`/MD,&
+M4`^V0P50#[9#!%`/MD,#4`^V0P)0#[9#`5`/M@-0:.`#``#H_/___X/$*(M4
+M)#C&0@7_4E7H_/___X/$$.G7````C78`#[94)`^)T,'@!`'0C72%`/:&3@L`
+M``@/A+<```"#[`Q5Z/S___^)PX/$$(7`#X2A````QD`C!L9`(@5FQX"0````
+M``#&0"`&QD`A`,=`0```!0#'0$0`````BY90"P``B9"<````BX94"P``B8.@
+M````B9.4````B8.8````BTPD,(E+*%'H_/___XB#L@```&:#2S00_W0D-.C\
+M____@\0(/`EV!F:!2S0``HMT)##&1@H!B?"#P#B+4`2)6`2)`XE3!(D:@^P(
+M4U7H_/___X/$$)"#Q!Q;7E]=PU575E.#[`R+="0@BWPD)+``A?]T`XI'!0^V
+MP+T`````A<!T$#W_````#X1+`0``Z8P%``")Z@^VPHJ$,!X%```\_W02#[;0
+MC012P>`#*="-O(8H`0``18GI@/D#=M:]`````)")Z@^VPHJ$,!X%```\_W0T
+M#[;0C012P>`#*="-O(8H`0``]D<&`G00@^P(:@!7Z/S___^#Q!#K#(/L#%?H
+M_/___X/$$$6)Z8#Y`W:T9@^V1B9F.8:D"0``#X7^!```A?\/A9H```"`?CD`
+M#X7L!```QD8Y`;L`````C78`#[?3BXR6F`(``(7)="Z#>7``="B+07#'07``
+M````QX26F`(```````"#[`1J_U'_<7C_T(/$$.L_C78`#[?3@[R6F`(```!T
+M+XN$EI@"``"#>'0`="*+073'070`````QX26F`(```````"#[`S_<7C_T(/$
+M$(GV0V:#^S]V@>E<!```QD<%_X/L"%=6Z/S___^#Q!#I1@0``,9$)`L`D`^V
+M1"0+BH0P'@4``#S_#X3L````#[;0C012P>`#*="-O(8H`0``@'\%_P^$T```
+M`+T`````@'\*``^&M0```(U?.(/L#%/H_/___XE$)!2#Q!"+0P2+5"0$B5,$
+MB1J)0@2)$(!Z(O]T?X"ZL0````!T:P^V0B"H`G0>J`1T&J@!=!92#[9"25#_
+M<BQ7Z/S___^#Q!#K1XGVBTPD!`^V02"H`G48J`1T%*@!=!"#[`A15NC\____
+M@\00ZR*0BU0D!`^V0B"H`G05J`1T$:@!=0V#[`A25NC\____@\00N`$```#I
+M7@,``)!%B>DX3PH/AT[___^X`0```.E'`P``B?;^1"0+@'PD"P,/AO'^___&
+M1"0+`(!^.0`/A9X```"[`````)`/M\.+C(:8`@``9@^VE#"8!```A<ET;8-Y
+M<`!T9X-Y8`!U86:!^O\`=#(/M]*+OE@%``"-!-+!X`(IT,'@`_9$.",$=!>`
+M?#@A`'40@^P$4E%6Z/S___^#Q!#K*(M1<`^WP\>$AI@"````````QT%P````
+M`(/L!&K_4?]Q>/_2@\00B?9#9H/[/P^&<?___\9&.0'IA`(```^V1"0+BH0P
+M'@4``#S_#X1@`@``#[;0C012P>`#*="-O(8H`0``O0````"`?PH`#X8_`@``
+MC78`@^P,C5\X4^C\____B40D%(/$$(M#!(M4)`2)4P2)&HE"!(D0@'HB_P^%
+M`@(``&:+2AAFB4PD`@^WP68/MI0PF`0``&:)%"2+G(:8`@``BTPD!(I!)*@$
+M=&*%VW1>@WMP`'18@WM@`'52@^#[B$$D]D$C!'03@^P$#[?"4%-6Z/S___^#
+MQ!#K,XM3<`^W1"0"QX2&F`(```````#'0W``````BT0D!,=`'`````"#[`1J
+M_U/_<WC_TH/$$(M4)`3V0B,$#X0^`0``QH*P`````(!G".?V0B0!#X3Z````
+M@&(D_H-Z'`!T4H!Z(0!U+?9"(P1T)X/L!`^W5"0&#[9&*<'@!@'"4O^V)`4`
+M`&H'Z/S___^#Q!#I[````(/L!(M,)`C_<1S_MB0%``!J`>C\____@\00Z<T`
+M``"%VW1C@WMP`'1=BT0D!(!X(0!U'O9`(P1T&(/L!`^W1"0$4%-6Z/S___^#
+MQ!#IFP```(M3<`^W1"0"QX2&F`(```````#'0W``````BTPD!,=!'`````"#
+M[`1J_U/_<WC_TH/$$.MFBT0D!(!X(0!U7/9`(P1T5H/L!`^W5"0&#[9&*<'@
+M!@'"4O^V)`4``&H"Z/S___^#Q!#K,HUV`(M4)`2#>AP`="6+0AR#>'0`=!R+
+M4'3'0'0`````@^P,BTPD$(M!'/]P>/_2@\00BT0D!/9`)`)T'X/L!/]P'/^V
+M)`4``&H&Z/S___^+5"04@&(D_8/$$)!%B>DX3PH/A\3]___^1"0+@'PD"P,/
+MAGW]__^0N`$```"#Q`Q;7E]=PXUV`%575E.#[`R+7"0DBVLH#[=#&+H`````
+MBTPD(("\")@$``#_#X20`@``#[9#(H/X#P^$]@```(/X#W\Y@_@,#X2T````
+M@_@,?Q.#^`5T3X/X"P^$D````.E8`@``@_@-#X2D````@_@.#X2L````Z4$"
+M``"0@_@9?P^#^!A]5H/X%'0MZ2P"``"#^!MT-#W_````#X28````Z1<"``"#
+M[`AJ`5/H_/___X/$$.D$`@``@^P,4^C\____@\00Z?,!``"#[`AJ`%/H_/__
+M_X/$$.G@`0``@^P(:@%3Z/S___^#Q!#IS0$``(/L#%/H_/___X/$$.F\`0``
+M@^P,4^C\____@\00Z:L!``"#[`Q3Z/S___^#Q!#IF@$``(/L#%/H_/___X/$
+M$.F)`0``D,9#(O^)7"0(OP````"`?0H`#X;%````C74XB?:#[`Q6Z/S___^)
+MPX/$$(M&!(E>!(DSB4,$B1B`>R+_#X2'````@'LA``^%A0```("[L0````!T
+M:`^V0R"H`G0<J`1T&*@!=!13#[9#25#_<RQ5Z/S___^#Q!#K1`^V0R"H`G4<
+MJ`1T&*@!=!2#[`A3_W0D+.C\____@\00ZR*)]@^V0R"H`G08J`1T%*@!=1"#
+M[`A3_W0D+.C\____@\00N@$```#IQP```(GVQH.Q`````)!'B?@X10H/AT#_
+M__^)^3A-"@^%C0```(M$)`B`>"$B=`:`>"$-=1B#[`AJ"O]T)!3H_/___[H!
+M````@\00ZWZ_`````(!]"@!V6HUU.(UV`(/L#%;H_/___XG#@\00BT8$B5X$
+MB3.)0P2)&(![(2)T!H![(0UU)8/L"%-H[@```.C\____@\0(:@I3Z/S___^Z
+M`0```(/$$.LCB?9'B?DX30IWK,9%!?^#[`A5_W0D+.C\____@\00N@$```")
+MT(/$#%M>7UW#D%575E.#[`R+7"0DBVLH#[=#&+H`````BTPD(("\")@$``#_
+M#X1L!@``#[9#(H/X"0^$4P,``(/X"7\]@_@%#X3<````@_@%?Q>#^`,/A((`
+M``"#^`0/A*0```#I,`8``(/X!P^$#`,``(/X!P^/[P(``.EV`@``D(/X%@^$
+MN`(``(/X%G\B@_@4#X0B`P``@_@4#X][`@``@_@*#X3\`@``Z>H%``")]H/X
+M&@^$'`(``(/X&G\.@_@7#X2.`@``Z<P%```]_P````^$Y@(``.F\!0``BT48
+M@6`H___^_VH`:@%3_W,HZ/S____'!"0%````Z/S___^#Q!#ID04``&H`:@!3
+M_W,HZ/S____'!"10PP``Z/S___^#Q!#I<`4``,9$)`L`BWPD((!_*P!V'P^V
+M50F0B="*3"0+T_BH`74.08A,)`N+?"0@.$\K=^8/MD,@J`)T#*@$=`BH`0^%
+MPP```(M5&(M"**D```$`=`TE___^_XE"*.FI````OA`G``"*1"0+B$0D"@^V
+M^(M,)""+$8!\)`L#=AL/MD0D"XN$PH`!``"C`````"4```$`ZQ2-=@"+A/J`
+M`0``HP`````E```!`(7`=":`?"0*`W80QX3Z@`$``````0#K#HUV`,>$^H`!
+M``````$`A<!U%8/L#&CH`P``Z/S___^#Q!!.=8KK!(7V=1W&0R,"QD,B_X/L
+M"%/_="0LZ/S___^#Q!#I:P0``/9%!@%T/8/L"%-5Z/S___^#Q!"$P'4LOOH`
+M``"-=@"#[`A35>C\____@\00A,!U$X/L#&CH`P``Z/S___^#Q!!.==R`?"0+
+M`W8@#[9,)`N+?"0@BQ>+A,J``0``HP````")A,J``0``ZSX/MG0D"XM$)""+
+M"(!\)`L#=@Z+A/&``0``HP````#K%P^V1"0+BWPD((L7BX3"@`$``*,`````
+MB83Q@`$``(/L"%/_<RCHAR0``,<$)"!.``#H_/___X/$$.FC`P``@^P(#[=#
+M&%!H&`0``.C\____@\0(4_]S*.CE*0``@\00Z7T#``"#[`@/MT,84&@"`0``
+MZ/S___^#Q`A3_W,HZ"<J``"#Q!#I5P,``(/L"%/_<RCH&R0``(/$$.E#`P``
+M@^P(4_]S*.CC)P``@\00Z2\#``"#[`A3_W,HZ%LG``"#Q!#I&P,``(/L"%/_
+M<RCH+R@``(/$$.D'`P``@^P(4_]S*.B#*```@\00Z?,"``"#[`A3_W,HZ-<H
+M``"#Q!#IWP(``,9#(O\/MD,@J`)T"*@$=`2H`745@WLP`'4/5>C\____B(.R
+M````@\0$]D4(`@^$8`$``(M]*`^V5RH/MD<?2#G"?2W^1RK^1RO&1R8`9HM'
+M,H/@_H/("&:)1S*#[`A7_W0D+.C\____@\00Z6\"``#&1"0+`(!]"@`/AL``
+M``"-=3B#[`Q6Z/S___^)PX/$$(M&!(E>!(DSB4,$B1B`>R+_#X2`````@+NQ
+M`````'1K#[9#(*@"=!^H!'0;J`%T%U,/MD-)4/]S+%7H_/___X/$$.M'C78`
+M#[9#(*@"=1RH!'08J`%T%(/L"%/_="0LZ/S___^#Q!#K(HGV#[9#(*@"=!BH
+M!'04J`%U$(/L"%/_="0LZ/S___^#Q!"Z`0```.F_`0``B?;&@[$`````_D0D
+M"XI$)`LX10H/AT/____V1S*`=!_V1RT#=!G&1R8`@^P(5_]T)"SH_/___X/$
+M$.E[`0``QD4%_\9')@!FBT<R@^#S@\@"9HE',H!G+?Z#[`A5_W0D+.C\____
+M@\00Z4P!``#&1"0+`(!]"@`/AL4```"-=3B)]H/L#%;H_/___XG#@\00BT8$
+MB5X$B3.)0P2)&(![(O\/A(H```"`>R$`=7V`N[$`````=&@/MD,@J`)T'*@$
+M=!BH`7044P^V0TE0_W,L5>C\____@\00ZT0/MD,@J`)U'*@$=!BH`704@^P(
+M4_]T)"SH_/___X/$$.LBB?8/MD,@J`)T&*@$=!2H`740@^P(4_]T)"SH_/__
+M_X/$$+H!````Z9<```")]L:#L0````#^1"0+BDPD"SA-"@^'0/___XI$)`LX
+M10IU6,9$)`L`@'T*`'9-C74X@^P,5NC\____B<.#Q!"+1@2)7@2),XE#!(D8
+M@'LA(G0&@'LA#746@^P(:@I3Z/S___^Z`0```(/$$.LJD/Y$)`N*3"0+.$T*
+M=[;&107_@^P(5?]T)"SH_/___X/$$(UV`+H!````B="#Q`Q;7E]=PY!55U93
+M@^P,BWPD((MT)"2+%XM>5`^V1B:#^!D/A[<#``#_)(5P#@``]D8R!'0,9L=&
+M,@$`QD8F`>L\9H-^,B!U#&;'1C((`,9&)@WK*?9&,H!T&?9&+0-T$V:+1C(D
+M?X/("&:)1C+&1B8-ZPKV1C((=`3&1B8'@^P(5E?H_/___X/$$.E0`P``BX($
+M`0``HP````"#R%")@@0!``!J`6H":@%6Z/S___^#Q!#I*`,``&H!:@!J`5;H
+M_/___X/$$.D4`P``:@%J`6H!5NC\____@\00Z0`#``!J`6I@:@%6Z/S___^#
+MQ!#I[`(``(/L#&H!#[9&+%!J8&H!5NC\____@\0@Z=`"``"#[`QJ`6@```$$
+M:B%J`5;H_/___X/$(.FT`@``@^P,:@%J`6H":@!6Z/S___^#Q"#IFP(``(/L
+M#&H!:@!J`FH`5NC\____@\0@Z8("``"+0QB!8"C___?_@^P,:@%J`6H":@!6
+MZ/S___^#Q"#I7P(``(/L#&H!:@!J`FH`5NC\____@\0@Z48"``!J`6H":@!6
+MZ/S___^#Q!#I,@(``&H!:@!J`%;H_/___X/$$.D>`@``:@%J`6H`5NC\____
+M@\00Z0H"``"+0QB!8"C___?_@^P,:@%J_VH!:@!6Z/S___^#Q"#IYP$``&H!
+M:@!J`%;H_/___X/$$.G3`0``#[9&*XMLACR)72B)=3"*1BN(14G&12(#QD4A
+M`(!-(`7^0PJ-0SB+4`2):`2)10")502)*H/L#&B`&@8`Z/S____&1"0;`(/$
+M$(!_*P!V&@^V4PF)T(I,)`O3^*@!=0I!B$PD"SA/*W?JBU,8BT(HJ0``"`!T
+M"B7___?_B4(HZU.[F#H```^V="0+D(!\)`L#=AF+!XN$\(`!``"C`````*D`
+M``@`=2SK%XGVBP>+A/"``0``HP````"I```(`'43@^P,:.@#``#H_/___X/$
+M$$MUN(/L"%57Z/S___^#Q!#I[@```(/L#&A`#0,`Z/S___]J`&H@:@%6Z/S_
+M__^#Q!1H$"<``.C\____@\00Z<````!J`&H!:@!6Z/S____'!"00)P``Z/S_
+M__^#Q!#IH````(M#&(%@*/__]_^#[`QJ`&K_:@%J`%;H_/___X/$%&@0)P``
+MZ/S___^#Q!#K<VH`:@!J`%;H_/___\<$)!`G``#H_/___X/$$.M6:@!J(&H!
+M5NC\____QP0D$"<``.C\____@\00ZSF#[`A65^C\____@\00ZRJ#[`A65^C\
+M____@\00ZQN#[`QJ`6CP````:)L```!J`5;H_/___X/$()"X`0```(/$#%M>
+M7UW#C78`55=64X/L'(M$)#"+`(E$)!C&1"03`(M4)#"`>BL`#X:U`@``#[9,
+M)!.)R,'@!`'(BW0D,(T<AO:#7@L``!`/A(`"``"-DU`+``"X`0```-/@"$()
+MBYL\"P``B5PD%/9""`(/A/0```"*7"030SA>*P^&Y@````^V5"03B=#!X`0!
+MT(T$AHE$)`2-=@`/MO.)\,'@!`'PBU0D,(T\@O:'7@L``!`/A*(```"+;"0$
+M]X5,"P`````.``^$C@```(/L!&H(C8]0"P``B4PD%%&-A5`+``")1"044.C\
+M____@\00A,!T9X/L!&H(C8=$"P``4(V%1`L``%#H_/___X/$$(3`=$BX`0``
+M`(GQT^"+="0("D8)B$8)BU0D#(A""8-\)!0`=0R+OSP+``")?"04ZQL/MM.)
+MT,'@!`'0BW0D%(M,)#")M($\"P``B?9#BT0D,#A8*P^',O___XGV@WPD%``/
+MA;4```"#[`S_="0\Z/S___^)1"0D@\00A<`/A%<!```/ME0D$XG0P>`$`="+
+M5"0PC02"BTPD%(F(/`L``(V0.`L``(E1&(J`6`L``(A!!L9!!0"+7"0PB1G&
+M00H`QD$T`,9!'`"*7"030XMT)#`X7BMV8@^V5"03B=#!X`0!T`^VE(99"P``
+MC78`#[;+B=#3^*@!=!:)R,'@!`'(BW0D%(M,)#")M($\"P``0XM$)#`X6"MW
+MU>L>C78`#[94)!.)T,'@!`'0BTPD%(M4)#")C((\"P``#[9,)!.)R,'@!`'(
+MBUPD,(V$@U`+``"*4`F+="04B%8)#[98"8!\)!,#=A&+1"08QX3(``(``#@`
+M``#K%`^V1"03BU0D&,>$P@`"```X````@^P,:!`G``#H_/___X/$$(!\)!,#
+M=A4/MD0D$XM,)!B)G,$$`@``ZQ.-=@`/MD0D$XMT)!B)G,8$`@``_D0D$XI$
+M)!.+5"0P.$(K#X=+_?__@\0<6UY?7<.-=@!75E.+?"00BEPD%(LW@/L#=A(/
+MML/'A,8P`@``#````.L0B?8/ML/'A,90`@``#````(/L#&@0)P``Z/S___^#
+MQ!"`^P-V$0^VPXN$QC0"``"C`````.L/#[;#BX3&5`(``*,`````B<&!X0``
+M/P#!Z1`/MM.)T,'@!`'0C92'4`L``(I""(/@_(A""(/Y$'4+@\@"B$((ZQ6-
+M=@`/MM.)T,'@!`'0@(R'6`L```%;7E_#B?975E.#[""+7"0TBT0D,(LXO@``
+M``"-=@"#^P-V$XT$M0`!``")A-\``@``ZQ&-=@"-!+4``0``B83?``(``(/L
+M#&@0)P``Z/S___^#Q!"#^P-V$8N$WP0"``"C`````.L/C78`BX3?!`(``*,`
+M````B02T1H/^!G:?B>;\N0<```"+?"0X\Z6#Q"!;7E_#B?975E.#[""+7"0T
+MBT0D,(LXO@````"-=@"#^P-V$XT$M1P!``")A-\``@``ZQ&-=@"-!+4<`0``
+MB83?``(``(/L#&@0)P``Z/S___^#Q!"#^P-V$8N$WP0"``"C`````.L/C78`
+MBX3?!`(``*,`````B02T1H/^!G:?B>;\N0<```"+?"0X\Z6#Q"!;7E_#B?:+
+M3"0$B@'`Z`2)PH/B!_9!`@1T`X#.`O9!`P1T!H'*```"`/9!`@AT`X#."/9!
+M`PAT!H'*```(`/9!`@)T`X#.!/9!`P)T!H'*```$``^V013!X!@)PHG0PXUV
+M`/]T)`3H_/___X/$!,.-=@!55U93@^Q$BVPD6(I$)%R(1"07BU4`B50D$`^V
+MT(G0P>`$`="-1(4`B:@X"P``QH!9"P```%)5Z/S___^#Q!"Y`````+H@````
+MC40D$(UV`(@(0$IU^H/L!(UT)!16#[9\)!=75>C\____B?O!XP0!^XU<G0!6
+MZ/S___^)@T`+``"+1"0PB8-$"P``BT0D-(F#2`L``(V37`L``(/$%(!\)`\#
+M=A*+3"0(BX2YT`$``*,`````ZQ4/MD0D#XM<)`B+A(/0`0``HP````")`@^V
+M5"0/B=#!X`0!T(V,A6`+``"`?"0/`W82BUPD"(N$TX`!``"C`````.L5#[9$
+M)`^+5"0(BX3"@`$``*,`````B0$/ME0D#XG0P>`$`="-1(4`]H!>"P``$`^$
+M0P$``/:`6`L```)T6[D`````NB````"-1"00C78`B`A`2G7Z@^P$C7PD%%</
+MMG0D%U95Z/S___^)\\'C!`'SC5R=`%?H_/___XF#3`L``(M$)#")@U`+``"+
+M1"0TB8-4"P``@\04ZQ</ME0D#XG0P>`$`=#'A(5,"P```0`"`(!\)`\#=A8/
+MMD0D#XM,)`C'A,$P`@``&````.L4#[9$)`^+7"0(QX3#4`(``!@```"#[`QH
+M$"<``.C\____@\00@'PD#P-V&0^V1"0/BU0D"(N$PC0"``"C`````(G!ZQ</
+MMD0D#XM,)`B+A,%4`@``HP````")P0^V5"0/B=#!X`0!T/>$A5P+``````,`
+M=0B!X?___]_K!H')````((!\)`\#=A(/MD0D#XM<)`B)C,,T`@``ZQ`/MD0D
+M#XM4)`B)C,)4`@``@\0\6UY?7<.-=@"+5"0$BX(X!0``)?___P`]4`&3`'42
+MBH([!0``P.@$N@$````\#'0%N@````")T,-55U93@^P<BWPD,(LWQD0D$%"-
+M7"00QD,!!<9#`@3&0P,PQD,$$<9#!:O&0P8`QD,'`,>'7`P````````YOR0%
+M```/A=0```"-KV`,``"#[`QJ`6H(C8<X!0``4&@```(`5^C\____BX<P!0``
+MBI<[!0``C42"_(B'.P4``(/$(%?H_/___X/$!(3`=1.+1"00B8<X!0``BT,$
+MB8<\!0``H0````"*ESL%```!PD"C`````(B7.P4``(J'.`4``(B%.`4``(J'
+M.04``(B%.04``(J'.@4``(B%.@4``(J'.P4``(/``HB%.P4``(J'/`4``(B%
+M/`4``(J'/04``(B%/04``(J'/@4``(B%/@4``(J'/P4``(B%/P4``,>'7`P`
+M``````"+A@`!``"C`````"7__P``J"!U%(/(((F&``$``(N&``$``*,`````
+MBP?'@`0!````````BP?'@!@!````````BP?'@!P!````````@^P,:("$'@#H
+M_/___\>&<`$``!@!``"+AG0!``"C`````(#D_<>&<`$``!@!``"`S`2)AG0!
+M``#'AG`!```H`0``QX9T`0``?W\``,>&<`$``"0!``"+AG0!``"C`````"4`
+M`/__QX9P`0``)`$```W_/P``B89T`0``QX9P`0``/`$``,>&=`$`````>@#'
+MAG`!``"D`0``QX9T`0``?;_O_\>&<`$``+@!``"+AG0!``"C``````^WP,>&
+M<`$``+@!```-``#Z`(F&=`$``,>&G````/\```#'AI`"``!$`0``QX:4`@``
+M!A``",>&D`(``+0!``#'AI0"``!?<```QX:0`@``,````(N&E`(``*,`````
+M,.2`S#.)AI0"``#&1"0?`(/$$(!_*P`/AK8"``")]H!\)`\#=A4/MD0D#\>$
+MQC`"```(````ZQ.-=@`/MD0D#\>$QE`"```(````@^P,:!`G``#H_/___X/$
+M$(!\)`\#=A4/MD0D#XN$QC0"``"C`````.L3B?8/MD0D#XN$QE0"``"C````
+M`(!\)`\#=A0/ME0D#PT``(``B836-`(``.L2D`^V5"0/#0``@`")A-94`@``
+M@^P$C8<X!0``4`^V7"074U?H_/___X/$"%-7Z/S___^#Q!"`?"0/`W8-QX3>
+M,`(``$0!``#K$`^V1"0/QX3&4`(``$0!``"#[`QH$"<``.C\____@\00@'PD
+M#P-V%0^V1"0/QX3&-`(```80``CK$XUV``^V1"0/QX3&5`(```80``B`?"0/
+M`W85#[9$)`_'A,8P`@``M`$``.L3C78`#[9$)`_'A,90`@``M`$``(/L#&@0
+M)P``Z/S___^#Q!"`?"0/`W85#[9$)`_'A,8T`@``7W```.L3C78`#[9$)`_'
+MA,94`@``7W```(!\)`\#=A4/MD0D#\>$QC`"```(````ZQ.-=@`/MD0D#\>$
+MQE`"```(````@^P,:!`G``#H_/___[C_5(``@\00@'PD#P-V%`^V5"0/)?]4
+M``")A-8T`@``ZQ*0#[94)`\E__]__8F$UE0"``"#[`1J`0^V7"074U?H_/__
+M_\<$)""A!P#H_/___X/$$(!\)`\#=A"+A-Z``0``HP````#K$XGV#[9$)`^+
+MA,:``0``HP`````E___^_X!\)`\#=@\/ME0D#XF$UH`!``#K#9`/ME0D#XF$
+MUH`!``"X!0'(`(!\)`\#=A`/ME0D#XF$UH0!``#K#HGV#[94)`^)A-:$`0``
+M@^P,:*"&`0#H_/___X/$"`^V1"074%?H_/___X/$$/Y$)`^*1"0/.$<K#X=,
+M_?__@^P,5^C\____BX8$`0``HP````"#R`*)A@0!``"+A@`!``"C`````(/@
+M_8/(#8F&``$``(N&``$``*,`````BX?D"0``B88(`0``BX?H"0``B88,`0``
+MBX<("@``B880`0``BX<,"@``B884`0``QX8@`0````````^WAS0+```E_P\`
+M``T```$`B88@`0``BX=0"@``B88D`0``BX=4"@``B88H`0``BX=P"@``QP#_
+M#P``QX8T`0````````^WAS8+```E_P\```T```$`B88T`0``BX=T"@``B88X
+M`0``BX=X"@``B88\`0``QX9(`0```````,>&3`$````!``"+A@0!``"C````
+M`(/(68F&!`$``,>&5`$``/O_``S'AEP!``#__P``@\0L6UY?7<.-=@!3@^P4
+MBUPD'%/H8OG__[(`@\00D`^VPL>$@[`%````````QT2#1`````!"@/H/=N1F
+MQX,P"P``_P]FQX,R"P``_P_&0S@!N`$```"#Q`A;PXM4)`2+3"0(N``````Y
+MR'T<C78`@#P"`'0.@#P"('0(N`````##B?9`.<A\Y[@!````PY!55U93@^P\
+MBVPD5&:!?1"%``^'G0````^W11"+5"10@+P0F`0``/\/A(<```!F@WT0?W<D
+M#[:4$)@$``"+7"10BXM8!0``C032P>`"*="+1,$HBD@$ZU^09H%]$($`=RP/
+MMT40BWPD4`^VA#B8!```BX^0!0``C01`C03`B<+!X@4IPHM$D0B*2`3K*@^W
+M11"+5"10#[:$$)@$``"+DG0%``"-!$"-!("+1,)4BD@$ZP6-=@"Q_[+_9H%]
+M$(4`=P\/MT40BUPD4(J4&)@$``"`^?]T'`^VP8M\)%"`O#@>!0``_W0+@/K_
+M=`:`?10&=32#?5``=!:#[`B-15!0_W0D7.C\____@\00C78`@^P(5?]T)%SH
+M_/___X/$$.D+!P``C78`#[;!BTPD4`^VM`@>!0``C01VP>`#*?"-M($H`0``
+M#[;2C032P>`"*="+D5@%``"-',)F@;N0````JPUW!X!]%`)U1Y"#?5``=!:#
+M[`B-15!0_W0D7.C\____@\00C78`@^P(5?]T)%SH_/___\9#(O_&0R,"@\0(
+M4_]T)%SH_/___X/$$.E^!@``#[9%)(/X&@^$C@4``(/X&G\E@_@2=$R#^!)_
+M#87`#X0W!0``Z1P&``"#^!4/A`0&``#I#@8``(/X)0^$CP(``(/X)7\.@_@;
+M#X0$!0``Z?(%```]G@````^$<`,``.GB!0``@'T4``^%0@(``(M--(!])0!T
+M8H![(AD/E,"#P`N(0R*%R71#@'D!@'4]@'D"`'4W@'D#/'<Q#[9Q`[H4````
+MC4-,Q@`@0$IU^8/^$W8%OA0```"-4TR-002#[`164%+H_/___X/$$&;'@Y``
+M`````.EM!0``QD,B&/9!!D!U#P^V`8/@'X/X#0^%/`$```^V`8/@'X/X#74&
+MQD,A#>L$QD,A(H/L"`^V0R%0:!@!``#H_/___X/$$(-]4`!T$X/L"(U%4%#_
+M="1<Z/S___^#Q!"#[`A5_W0D7.C\____QD0D/P"#Q!"`?@H`=C>-;CB#[`Q5
+MZ/S___^)PX/$$(M%!(E=!(DKB4,$B1B`>R$B=`:`>R$-=0W^1"0OBEPD+SA>
+M"G?,BD0D+SA&"@^%ZP0``&;'1"0L``#'1"0H`````,9$)"\`@'X*`'9.C6XX
+M@^P,5>C\____B<.#Q!"+102)702)*XE#!(D8@'LA(G0&@'LA#747BU0D+&8Y
+M4QAR#8E<)"AFBUL89HE<)"S^1"0OBDPD+SA."G>U@WPD*``/A'@$``"+7"0H
+M@'LB_P^$:@0``,9#(O^#[`A3_W0D7.C\____@\00Z5$$```/M@&#X!^#^`%U
+M#<9#(0'&0R+_Z0`$``#V004!=`3&0R(9@WTT``^$[`,``(M]-(E\)#"Y````
+M`+HH````C4-@B`A`2G7ZN0````"Z"````(V#B````(@(0$IU^HU#8(MT)#"#
+MQ@C\N08```")Q_.EBU0D,(M"((F#B````.F6`P``9O^#D````(/L#&@0)P``
+MZ/S____&0R(%@\00Z78#``"+332)3"0TBT4XBD`"@^`/@'T4`'5_#[91!P^V
+M00;!X`@!P@^V007!X!`!P@^V003!X!@!PHF3K`````^V40,/MD$"P>`(`<(/
+MMD$!P>`0`<(/M@'!X!@!PHE30,=#1`````"#NZP`````=2!F_X.0````@^P,
+M:!`G``#H_/___\9#(@N#Q!#IZ@(``,9#(@WIX0(``(!]%"!U*#P&=`0\`G4@
+M9O^#D````(/L#&@0)P``Z/S____&0R(%@\00Z;,"``"#?5``=!.#[`B-15!0
+M_W0D7.C\____@\00@^P(5?]T)%SH_/___X/$#%-6_W0D7.C\____@\00Z;`"
+M``"+13B*0`*#X`^+?32)?"0T@'T4``^%``$```^V5PL/MD<*P>`(`<(/MD<)
+MP>`0`<(/MD<(P>`8`<*)DZP````/ME<'#[9'!L'@"`'"#[9'!<'@$`'"#[9'
+M!,'@&`'"B50D((G0P?@?B40D)`^V1P.)PK@``````T0D(!-4)"2)1"08B50D
+M'`^V1P*)PK@`````P>((`T0D&!-4)!R)1"00B50D%`^V1P&)PK@`````P>(0
+M`T0D$!-4)!2)1"0(B50D#`^V!XG"N`````#!XA@#1"0($U0D#(E#0(E31/9'
+M#`%T!6:#2S8$@[NL`````'4@9O^#D````(/L#&@0)P``Z/S____&0R(9@\00
+MZ68!``#&0R(-Z5T!``"`?10@=2@\!G0$/`)U(&;_@Y````"#[`QH$"<``.C\
+M____QD,B&8/$$.DO`0``@WU0`'03@^P(C4504/]T)%SH_/___X/$$(/L"%7_
+M="1<Z/S___^#Q`Q35O]T)%SH_/___X/$$.DL`0``QD,B%.GJ````@'T4('4Q
+MBT4XBD`"@^`//`9T!#P"=2!F_X.0````@^P,:!`G``#H_/___\9#(A2#Q!#I
+MLP```,9#(AOIJ@```(!]%`!U5HM5-(E4)#!FBT,T9H-+-@$,AF:)0S2`>@,`
+M=06`.A9W'6;_@Y````"#[`QH$"<``.C\____QD,B#8/$$.MFBTPD,/9!!@1T
+M!V:#2S8"ZT!F@V,V_>LY@'T4('4NBT4XBD`"@^`//`9T!#P"=2)F_X.0````
+M@^P,:!`G``#H_/___\9#(@6#Q!#K&F:#8S3YQD,B#NL/@'T4`'4%9H-+-@/&
+M0R(/@WU0`'03@^P(C4504/]T)%SH_/___X/$$(/L"%7_="1<Z/S___^#Q`A3
+M_W0D7.C\____@\00C78`@\0\6UY?7<-55U93@^P,BWPD((M<)"1F@7L0A0`/
+MAXD````/MT,0@+PXF`0``/]T>V:#>Q!_=R`/MI0XF`0``(N/6`4``(T$TL'@
+M`BG0BT3!*(I(!.M7D&:!>Q"!`'<H#[=#$`^VA#B8!```BX^0!0``C01`C03`
+MB<+!X@4IPHM$D0B*2`3K)@^W0Q`/MH0XF`0``(N7=`4``(T$0(T$@(M$PE2*
+M2`3K!8UV`+'_LO]F@7L0A0!W"P^W0Q"*E#B8!```@/G_=!@/ML&`O#@>!0``
+M_W0+@/K_=`:`>Q0&=2R#>U``=!*#[`B-0U!05^C\____@\00B?:#[`A35^C\
+M____@\00Z4H"``")]@^VP0^VM#@>!0``C01VP>`#*?"-M(<H`0``#[;2C032
+MP>`"*="+EU@%``"-+,*+0S2`>Q0`#X2E````@'LF!@^$FP```(![)@P/A)$`
+M``!FBY60````C4(!9HF%D````&:#^@EV)(!](@9T'L9%(P+&12+_@&4D_H/L
+M"%57Z/S___^#Q!#IO@$``(/L#&CH`P``Z/S___\/MD4@@\00J`)T):@$="&H
+M`70=@^P,:@!J`@^V14E0_W4L5NC\____@\0@Z8$!``#&12(#@^P(55?H_/__
+M_X/$$.EK`0``C78`@'LF`74*QD4B!.DI`0``D(![)@)U"<9%(@7I&0$``(![
+M)@,/A9````"`?2(%=2EF@7@$R#=U(8/L"`^W11A0:$P$``#H_/___X/$$,9%
+M(@;IXP```(UV`(/L"%!5Z/S___]J*(U%8%#H1_7__X/$&(3`=3AJ%(U%3%#H
+M-?7__X/$"(3`=29J"(V%B````%#H(/7__X/$"(3`=1&+140+14!T"<9%(A?I
+MC````,9%(AIF_X60````ZW^`>R87=0;&12(5ZW.`>R88=0;&12(6ZV>`>R8$
+M=0;&12('ZUN`>R8%=0;&12((ZT^`>R8&=0;&12()ZT.`>R8,=0;&12(*ZS>`
+M>R86=0;&12(4ZRN`>R8.=26#>U``=!"#[`B-0U!05^C\____@\00@^P(4U?H
+M_/___X/$$.LP@WM0`'02@^P(C4-04%?H_/___X/$$(GV@^P(4U?H_/___X/$
+M"%57Z/S___^#Q!"0@\0,6UY?7<-55U93@^P,BWPD((MT)"1F@7X0A0`/AXD`
+M```/MT80@+PXF`0``/]T>V:#?A!_=R`/MI0XF`0``(N/6`4``(T$TL'@`BG0
+MBT3!*(I(!.M7D&:!?A"!`'<H#[=&$`^VA#B8!```BX^0!0``C01`C03`B<+!
+MX@4IPHM$D0B*2`3K)@^W1A`/MH0XF`0``(N7=`4``(T$0(T$@(M$PE2*2`3K
+M!8UV`+'_NO\```!F@7X0A0!W#0^W1A!F#[:4.)@$``"`^?]T!V:!^O\`=2R#
+M?E``=!*#[`B-1E!05^C\____@\00B?:#[`A65^C\____@\00Z<(```")]@^V
+MR0^VG#D>!0``C01;P>`#*=B-G(<H`0``#[?2C032P>`"*="+EU@%``"-+,*`
+M?A0`=#B#[`A1:&P$``#H_/___X/$"(M5!(M%`(E0!(D"_DL*55?H_/___\9#
+M!?^#Q`A35^C\____@\00D(!^)@%U*H/L#&@0)P``Z/S___^#Q`A65^C\____
+M:@%J`%53Z/S___^#Q"#K)XUV`(/L#&A0PP``Z/S___^#Q`A65^C\____@\0(
+M55/H_/___X/$$(/$#%M>7UW#5E.#[!"+="0@BD0D)(A$)`^*1"0HB$0D#HM$
+M)!R+&%/H_/___XG"@\00A<!U#L:&L0````'&1B(#ZVJ0QD`DX<9`)0&`?"0#
+M`1G`]]"#P`*(0B:P#X!\)`(`=0RP`(-^,`!T!(I&29"(0B=FBT889HE"$(E:
+M&,="(`````#'0C0`````N`````"`?"0"`'4%N,B]`@")0FR#[`A24^C\____
+M@\00@\0$6U[#D%575E.#[!B+;"0PBT0D+(LX5^C\____B<.#Q!"%P'4,QH6Q
+M`````>FA````@^P,5^C\____B<:#Q!"%P'46QH6Q`````8/L"%-7Z/S___^#
+MQ!#K>8U3/(E4)`C&0R3AQD,E`<9#)@-FBT489HE#$(M4)""+`HE#&,=#(``"
+M``"+1@B)0S2Y`````+H``@``D(@(0$IU^HES4,=#;,B]`@"#[`AJ`/]T)!3H
+M_/____]S(/]V$/]V#/]T)"3H_/___X/$&%-7Z/S___^#Q!"#Q`Q;7E]=PXUV
+M`%=64XM<)!"+3"04BWPD&+X`````.?YS%8H3BD,!B`&(40&#P0*#PP)&.?YR
+MZUM>7\.-=@!55U93@^P,BUPD((ML)"2);"0(9H-]``!Y$@^W10`E`!\``,'X
+M"(A#(8UV`(U[3(UU%/RY!0```/.EBT4NB8.(````BT4RB8.,````C7M@C74V
+ML0KSI6H*C4-,4%#H:O___VH$C8.(````4%#H6____VH4C4-@4%#H3____V;'
+M0S0``&;'0S8``(/$)(M$)`AF@[BR`0```0^4PL'B`XI#)(/@]PG0B$,D]H6G
+M````!'0&9L=#-`$`]H6D`````70C9H-+-`+VA:H````!=`5F@TLV`?:%J```
+M``%T!V:!2S0``9#VA:0````@=!-F@TLT!/:%J@```"!T!6:#2S8"]H6D````
+M0'079H%+-(``]H6J````0'0(9H-+-@B-=@#&0TH"]H69`````70G]D,T`70*
+M9H-+-`AF@TLV$(J%E@```(/@'T"(0TH\('4&QD-*'XGV]H68````"'0&9H%+
+M-``"]H68````!'0%9H-+-"#VA9@````"=`5F@TLT$/:%J````"!T$/:%K@``
+M`"!T!V:#2S1`B?;V0S0!=!:+A<@```"+E<P```")0T")4T3K#XGVBT5XB4-`
+MQT-$`````(-#0/^#4T3_]D5J`G0=]H6`````#W049H.]@`````(9P(/`!(A#
+M..L&B?;&0S@"QD,Y__9%?@1T!L9#.0+K&/9%?@)T!L9#.0'K#/9%?@%T!L9#
+M.0")]L9#.O_V16H$=!BQ``^WA;````#3^*@!=`.(2SI!@/D&=NJ#[`AH``(`
+M`%7H_/___XF#E````+@!````@\0<6UY?7<.05U93BWPD$(M<)!2+-X/L#%;H
+M_/___XG"BDLZ@\00A<!U"L:#L0````'K0I#&0"3AQD`E`<9`)@2(2"=FBT,8
+M9HE"$(L'B4(8QT(@`````,="-`````#'0FS(O0(`B$L]@^P(4E;H_/___X/$
+M$%M>7\.-=@!75E.+?"00BUPD%(LW@^P,5NC\____B<**2SB#Q!"%P'4*QH.Q
+M`````>M"D,9`).'&0"4!QD`F!8A()V:+0QAFB4(0BP>)0AC'0B``````QT(T
+M`````,=";,B]`@"(2SN#[`A25NC\____@\006UY?PXUV`%=64XMT)!"+?"04
+MBQZ#[`Q3Z/S___^)PH/$$(7`=0G&A[$````!ZSO&0"3AQD`E`<9`)@9FBT<8
+M9HE"$(L&B4(8QT(@`````,="-`````#'0FS(O0(`@^P(4E/H_/___X/$$%M>
+M7\.05U93BW0D$(M\)!2+'H/L#%/H_/___XG"@\00A<!U"<:'L0````'K.\9`
+M).'&0"4!QD`F#&:+1QAFB4(0BP:)0AC'0B``````QT(T`````,=";,B]`@"#
+M[`A24^C\____@\006UY?PY!75E.+="00BWPD%(L>@^P,4^C\____B<*#Q!"%
+MP'4)QH>Q`````>M#QD`DX<9`)0'&0"86QD`H`6:+1QAFB4(0QD)H#XL&B4(8
+MQT(@`````,="-`````#'0FS(O0(`@^P(4E/H_/___X/$$%M>7\.05U93BW0D
+M$(M\)!2+'H/L#%/H_/___XG"@\00A<!U"<:'L0````'K.\9`).'&0"4!QD`F
+M%V:+1QAFB4(0BP:)0AC'0B``````QT(T`````,=";,B]`@"#[`A24^C\____
+M@\006UY?PY!75E.+="00BWPD%(L>@^P,4^C\____B<*#Q!"%P'4)QH>Q````
+M`>L[QD`DX<9`)0'&0"889HM'&&:)0A"+!HE"&,="(`````#'0C0`````QT)L
+MR+T"`(/L"%)3Z/S___^#Q!!;7E_#D%=64X/L'(M\)"R*7"0PBD0D-(A$)!N*
+M1"0XB$0D&HM'5(LP5NC\____B<+&0"3AQD`E`<9`)A&#Q!"P#X3;=0.*1RN(
+M0B>*1"0/B$(H9HM')&:)0A")<AC'0B``````QT(T`````+@`````@'PD#@!U
+M!;@`````B4)L@^P(4E;H_/___X/$(%M>7\.05U93@^P<BWPD+(I<)#"*1"0T
+MB$0D&XI,)#R(3"0:BT=4BS!6Z/S___^)PL9`).'&0"4!QD`F$H/$$+`/A-MU
+M`XI'*XA")XI$)`^(0BB+3"0L#[;%B$(IB<C!Z!"(0BJ)R,'H&(A"*XA*+&:+
+M1R1FB4(0B7(8QT(@`````,="-`````"X`````(!\)`X`=06X`````(E";(/L
+M"%)6Z/S___^#Q"!;7E_#55=64X/L'(ML)#"+?"0TQT0D&`````!F@7\0A0`/
+MAXD````/MT<0@+PHF`0``/]T>V:#?Q!_=R`/MI0HF`0``(N-6`4``(T$TL'@
+M`BG0BT3!*(I0!.M7D&:!?Q"!`'<H#[='$`^VA"B8!```BXV0!0``C01`C03`
+MB<+!X@4IPHM$D0B*4`3K)@^W1Q`/MH0HF`0``(N5=`4``(T$0(T$@(M$PE2*
+M4`3K!8UV`++_L?]F@7\0A0!W"P^W1Q"*C"B8!```#[;"#[:<*!X%``"-!%O!
+MX`,IV(V<A2@!```/ML&-!$"-!("+E70%``"--,*`?R@"=7L/MD<L)?````"#
+M^"!T!8/X$'5H#[97+(G0@^`/@_@!=2*#[`QJ`8G0)?````!0:@)J`%;H_/__
+M_X/$(.D^!@``C78`#[9&*XM$ACR)1"08#[9'+"7P````@_@@#Y3`@\`(BU0D
+M&(B"L@```(M",&:!8#+__ND%!@``B?:`?Q0`=$**7Q2#?U``=!&#[`B-1U!0
+M5>C\____@\00D(/L"%=5Z/S___^#Q!"`^P(/A<T%``"#[`A65>C\____@\00
+MZ;L%```/MD8F@_@9#X=_!0``_R2%V`X```^V1C3!X`@#A00*``"+@$P(``"C
+M`````(/X!7<%B$8?ZP3&1A\%@'L+`'0-QD8F`,9#"P#I/P4``,9&)@+I-@4`
+M``^V1C3!X`@#A00*``"+@$P(``"C`````&8/ML!FB48@#[9&-,'@"`.%!`H`
+M`(N`1`@``*,`````B<+!Z`AFB48B#[;"P>`(9@E&(&:!?B)`074)QD8F&>G:
+M!```QD8F`^G1!```#[9&-,'@"`.%!`H``(N`1`@``*,`````B$8=#[9&-,'@
+M"`.%!`H``(N`3`@``*,`````J`AT!L9&'@SK'*@$=`;&1AX+ZQ+1Z(/@`8/X
+M`1G`]]"#X`J(1A[&1B8$Z6\$```/MD8TP>`(`X4$"@``BX!,"```HP````"#
+MR`B(1BS&1B8%Z4@$``#&1B8&Z3\$```/MD8TP>`(`X4$"@``BX!,"```HP``
+M``"`?BL!&<"#X`*#P!2(1B;I$P0``(I&*T"(1BLZ1A]S"<9&)A;I_@,``,9&
+M*P#&1B87@^P,:""A!P#H_/___X/$$.GA`P``QD8F%.G8`P``QD8F".G/`P``
+MQD8F%.G&`P``QD8N`NC\____B49PQD8F%>FQ`P``#[9&-,'@"`.%!`H``(N`
+M3`@``*,`````#[;`B40D%`^V1C3!X`@#A00*``"+@$0(``"C``````^VP,'@
+M"`E$)!3H_/___XE&=(M$)!2#X`^#^`-U#X!^+@!T"<9&)@KI30,``(M&="M&
+M<"U`#0,`>`:`?BX`=!;&1B85@'XN``^$+`,``/Y.+NDD`P``#[9&*X-\ACP`
+M#X3O````QD0D$P"`>PH`=D:-2SB)3"0,@^P,_W0D&.C\____B40D*`^V1BN#
+MQ!"+5"08.52&/'0>BTPD#(M!!(E1!(D*B4($B1#^1"03BD0D$SA#"G?!_DL*
+MBU0D&(-Z'`!T=8M"',=`8`````#V0B0$=2G^A5<,``"#[`Q5Z/S___^#Q`QJ
+M`8M,)""+01P/MD`!4%7H_/___X/$$(/L!(M$)!S_<!S_M20%``!J`>C\____
+M@\0,BU0D'/]R'/^U)`4``&H&Z/S___^+3"0HQT$<`````(/$$`^V1BO'1(8\
+M`````(/L"/]T)"!5Z/S___^#Q!#&1B8)Z1T"```/MD8TP>`(`X4$"@``BX!,
+M"```HP`````/MM`/MD8TP>`(`X4$"@``BX!$"```HP````#!X`@)PHE6.(!^
+M)@IT"/?"```!`'0.QD8F"^G+`0``_DL*ZW+&1B8,#[9&*X-\ACP`=%/&1"0+
+M`(!["@!V6(U#.(E$)`2#[`S_="00Z/S___^)1"0H#[9&*X/$$(M4)!@Y5(8\
+M=+F+3"0$BT$$B5$$B0J)0@2)$/Y$)`N*1"0+.$,*=\'K$(/L#%7H_/___XE$
+M)"B#Q!"#?"08``^$>`$```^V1BN+5"08B52&/(I&+XB"L@```.DO`0``QP0D
+M/T(/`(M#&/9`*@AU*H/L#%7H_/___\<$)`$```#H_/___X/$$/\,)(,\)/]T
+M"8M#&/9`*@ATUL9&)@GI[`````^V1C3!X`@#A00*``"+@$P(``"C``````^V
+MP(E$)!0/MD8TP>`(`X4$"@``BX!$"```HP`````/ML#!X`@)1"04BT0D%"7_
+M#P``/1,!``!T!STC`0``=3#&1B88BT0D%"7_#P``/1,!``!U!L9&+PCK>HM$
+M)!0E_P\``#TC`0``=6K&1B\)ZV0/ME8J#[9&'T@YPGT,_D8J_D8KQD8F!^M+
+MQD8F`&:+1C*#X/>#R`)FB48R@W]0`'00@^P(C4=04%7H_/___X/$$(/L"%=5
+MZ/S____&0P7_@\0(4U7H_/___X/$$.LUQD8F`XGV@W]0`'02@^P(C4=04%7H
+M_/___X/$$(GV@^P(5U7H_/___X/$"%95Z/S___^#Q!"#Q!Q;7E]=PY!55U93
+M@^P<BWPD,(ML)#3'1"08`````,9$)!,`9H%]$(4`#X>(````#[=%$("\.)@$
+M``#_='IF@WT0?W<?#[:4.)@$``"+CU@%``"-!-+!X`(IT(M$P2B*2`3K5F:!
+M?1"!`'<H#[=%$`^VA#B8!```BX^0!0``C01`C03`B<+!X@4IPHM$D0B*2`3K
+M)@^W11`/MH0XF`0``(N7=`4``(T$0(T$@(M$PE2*2`3K!8UV`+'_L_]F@7T0
+MA0!W"P^W11"*G#B8!```#[;#C01`C02`BY=T!0``C03"B40D%`^VT0^VM#H>
+M!0``C01VP>`#*?"-M(<H`0``@/G_=!B`O#H>!0``_W0.@/O_=`F`?10&=2^-
+M=@"#?5``=!*#[`B-15!05^C\____@\00B?:#[`A55^C\____@\00Z18&``")
+M]H!]%`!T$H/L"%97Z/S___^#Q!#I_`4``(M4)!0/MD(F@^@-@_@$#X>T!0``
+M_R2%0`\``(M,)!0/MD$TP>`(`X<$"@``BX!,"```HP`````/MM`/MD$TP>`(
+M`X<$"@``BX!$"```HP````#!X`@)PL9$)!(`QD0D$0"S`(!Y'P!V-8UV``^V
+MR[@!````T^"%PG0:_D0D$XM$)!2#?(@\`'0&_D0D$>L%_D0D$I!#BTPD%#A9
+M'W?.@'PD$@!T"(M$)!2`2"T!@'PD$0!T"(M,)!2`22T"@'PD$P$/A6$!``"S
+M`(M$)!2`>!\`=E(/MLNX`0```-/@A<)T(X/L!%%75NC\____B40D*(/$$(7`
+M=!F)<"B+5"04B5`PZPV00XM,)!0X61]WQ>L5BT0D%(A8*SA8'W8)QD`F#NFC
+M!```BU0D%#A:'P^%E@0``(/L!&H!#[9&"5!7Z/S____&1"0;`(/$$(!^"@`/
+MAI<```"-7CB#[`Q3Z/S___^)1"0H@\00BT,$BTPD&(E+!(D9B4$$B0B#>1P`
+M=!Z#[`3_<1S_MR0%``!J!>C\____BT0D*(!()`*#Q!"#[`3_="0<:@96Z/S_
+M__^#Q!"+5"08@'I+`'0B@^P,5^C\____QP0D`0```.C\____@\00BTPD&(!Y
+M2P!UWOY$)`N*1"0+.$8*#X=L____@WU0`'00@^P(C4504%?H_/___X/$$(/L
+M"%57Z/S___^+5"0DQD(M`,9&!0")-"3H_/___X/$$.G5`P``D(M,)!1F@4DR
+M@`"S`(!Y'P!V4P^VR[@!````T^"%PG0D@^P$45=6Z/S___^)1"0H@\00A<!T
+M&HEP*(M4)!2)4##K#HGV0XM,)!0X61]WQ.L5BT0D%(A8*SA8'W8)QD`F#^D[
+M`P``BU0D%#A:'P^%+@,``(/L!&H!#[9&"5!7Z/S____&1"0:`(/$$(!^"@`/
+MAI<```"-7CB#[`Q3Z/S___^)1"0H@\00BT,$BTPD&(E+!(D9B4$$B0B#>1P`
+M=!Z#[`3_<1S_MR0%``!J!>C\____BT0D*(!()`*#Q!"#[`3_="0<:@96Z/S_
+M__^#Q!"+5"08@'I+`'0B@^P,5^C\____QP0D`0```.C\____@\00BTPD&(!Y
+M2P!UWOY$)`J*1"0*.$8*#X=L____@WU0`'00@^P(C4504%?H_/___X/$$(/L
+M"%57Z/S___^+5"0DQD(M`,9&!0")-"3H_/___X/$$.EM`@``D(M,)!0/MD$T
+MP>`(`X<$"@``BX!,"```HP`````/MM`/MD$TP>`(`X<$"@``BX!$"```HP``
+M``#!X`@)PO?"```$`'0&]D$M`742]\+___O_=!>+1"04]D`M`G0-BU0D%,9"
+M)@_ISP$``(M,)!3&02T`Z?8!``"[/T(/`(M&&/9`*@AU)X/L#%?H_/___\<$
+M)`$```#H_/___X/$$$N#^_]T"8M&&/9`*@ATV8M$)!3&0"80Z8`!``"+5"04
+M#[9"-,'@"`.'!`H``(N`3`@``*,`````#[;`B40D#`^V0C3!X`@#AP0*``"+
+M@$0(``"C``````^VP,'@"`E$)`R+1"0,@^`/@_@##X77````]D(M`70+QD(F
+M$NL-_DX*ZW.+3"04QD$F$HM4)!0/MD(K@WR"/`!T3,9$)`D`@'X*`'91C5XX
+M@^P,4^C\____B40D*(M,)"0/MD$K@\00BU0D&#E4@3QTM(M#!(E3!(D:B4($
+MB1#^1"0)BDPD"3A."G?$ZQ"#[`Q7Z/S___^)1"0H@\00@WPD&``/A-````"+
+M5"04#[9"*XM,)!B)3((\BT0D#"7_#P``/1,!``!U"<:!L@````CK<XM$)`PE
+M_P\``#TC`0``=6.+1"08QH"R````">M6B?:+5"04QD(F$^M*BTPD%`^V033!
+MX`@#AP0*``"+@$P(``"C``````^V033!X`@#AP0*``"+@$0(``"C``````^V
+M02V#X`&#^`$9P/?0@\`3B$$FB?:#?5``=!*#[`B-15!05^C\____@\00B?:#
+M[`A55^C\____@\0(_W0D'%?H_/___X/$$(GV@\0<6UY?7<.+1"0$BT@$@>D`
+M`@$`#[94)`R#X@?!X@B`SB`/MD0D",'@"`'(B9`<Q0``9HN`',4``&:C````
+M``^VP,.+1"0$BT@$@>D``@$`#[94)`R#X@?!X@B*5"00@,X0#[9$)`C!X`@!
+MR(F0',4``,-55U93@^P,QD0D"P#&1"0*`+W_____QD0D`P"^P.'D``^V3"0#
+M0;L!````T^.Q`)`/ML%`B<(/K].)\(G7N@````#W]XE$)`2Z_____XM\)"`Y
+M^'<$B?HIPCGJ<PZ)U8I$)`.(1"0+B$PD"D&`^0]VO_Y$)`.`?"0#!W:D#[9$
+M)`K!X`,*1"0+#[;`@\0,6UY?7<.05U93BUPD$(V[Q`H``&H`:@</MG0D'%93
+MZ!____\/MD<!4&H#5E/H$?___X/$(%M>7\.)]E93@^P$BW0D$(I$)!2(1"0#
+MNP````")]FH"#[9$)`=05NBF_O__@\0,J`AT![@`````ZQN#[`QJ`>C\____
+M@\000X'[#R<``';.N/\```"#Q`1;7L.-=@!3BEPD#&H##[9$)!10_W0D$.A>
+M_O__@\0,.-@/E,`/ML!;PY!64X/L!(MT)!"*1"04B$0D`XI$)!B(1"0"#[;`
+M4&H!#[9<)`M35NAA_O__:D!J`E-6Z%;^__^#Q!A35NA$____@\00NO\```"%
+MP'5I@WPD'`!T0?9$)`(!=!X/MD0D`U!J0%;H=/___X/$#+K_````A<!T0>LZ
+MB?8/MD0D`U!J&%;H5O___X/$#+K_````A<!T(^L<#[9$)`-0:BA6Z#K___^#
+MQ`RZ_P```(7`=`>)]KH`````B="#Q`1;7L.-=@!75E.+?"00BEPD%`^V="08
+M@^P(#[;#4%?HI_[__X/$$+K_____A<!U-@^VPU")\@^VPE!7Z./^__^#Q`RZ
+M_____X7`=!IJ`0^VPU!7Z#_]__^+5"0HB`*Z`````(/$#(G06UY?PXUV`%57
+M5E.#[`R+?"0@BD0D)(A$)`L/MG0D*+T`````B?*$T@^$S0```&ID:@(/MMA3
+M5^@O_?__@\0(4U?H'?[__X/$$(7`=0YJ`U-7Z-G\__^#Q`R)]FH!B?(/ML)0
+M#[9$)!-05^AP_O__@\00NO____^$P`^%5`$``+L`````.UPD,`^-0P$```^V
+M="0+BT0D,$@YV'4K:D!J`E97Z,3\__^+1"0\`=A0:EA65^CH_O__@\0@A<`/
+MA0\!``#K*8UV`&I$:@)65^B9_/__BT0D/`'84&I05E?HO?[__X/$((7`#X7D
+M````14,[7"0P?)[IUP```)!HH(8!`.B6_/__#[;`B00D:@,/MEPD$U-7Z%+\
+M__^#Q`A35^A`_?__@\00A<!T(0^VA\4*``!0:@-35^@P_/__NO____^#Q!#I
+MBP```(UV``^V7"0+4VI@5^AB_?__@\0,A<!U&P^VA\4*``!0:@-35^CZ^___
+MNO____^#Q!#K6+L`````.UPD,'TR#[9T)`MJ1&H"5E?HU?O__XM$)#P!V%!H
+M@````%97Z/;]__^#Q""%P'4(14,[7"0P?-,/MH?%"@``4&H##[9$)!-05^B=
+M^___@\00B>J)T(/$#%M>7UW#B?964X/L$(M<)!S_="0H_W0D*`^V1"0H4&H`
+M4^@)_O__B<:#Q"!J5&H":@!3Z%S[__^)\(/$%%M>PU93@^P0BUPD'/]T)"C_
+M="0H#[9$)"A0:@%3Z-']__^)QH/$(&I4:@)J`5/H)/O__XGP@\046U[#55=6
+M4X/L#(M\)""+;"0PBD0D)(A$)`L/MG0D*&ID:@(/MMA35^CR^O__@\0(4U?H
+MX/O__X/$$(7`=0UJ`U-7Z)SZ__^#Q`R0:@&)\@^VPE`/MD0D$U!7Z#3\__^#
+MQ!"Z_____X3`=3_K"KK_____ZS:-=@"[`````#GK?24/MG0D"XGV:@"+5"0P
+M#[8$&E!65^CZ^___@\00A,!US4,YZWSBN@````")T(/$#%M>7UW#C78`5E.#
+M[!"+7"0<_W0D*/]T)"@/MD0D*%!J`%/H+?___XG&@\0@:E1J`FH`4^@X^O__
+MB?"#Q!1;7L-64X/L$(M<)!S_="0H_W0D*`^V1"0H4&H!4^CU_O__B<:#Q"!J
+M5&H":@%3Z`#Z__^)\(/$%%M>PU575E.#[!R+;"0PBT0D-(M0&$*)5"08BDH"
+MB$PD%\9$)!4`QT0D$`````"^`````(N=)`4``+&`#[9\)!>-=@`/ML%F#[:4
+M&)@$``!F@?K_`'1-B?!&.?AU1H#Y@7<?#[?"C01`C03`B<+!X@4IPHN#D`4`
+M`(T4D(E4)!#K(HM$)#3'0"S_____@^P,4/]0*+@`````@\00Z:L!``"-=@!!
+M@/F%=IJ+G20%``"!PV`,``"Q@`^V?"07C78`#[;!9@^VE!B8!```9H'Z_P!T
+M38GP1CGX=4:`^8%W'P^WPHT$0(T$P(G"P>(%*<*+@Y`%``"-%)")5"00ZR*+
+M5"0TQT(L_____X/L#%+_4BBX`````(/$$.DO`0``C78`08#YA7::BTPD&(I1
+M!`^V:07!Y1`/MD$&P>`("<4/MD$'"<4/MGD(P><0#[9!"<'@"`G'#[9!"@G'
+M@WPD$``/A,$```#&1"06`(M$)!"`>#``#X:N````B<:#QB@/MM*)5"0,D(/L
+M#%;H_/___XU8^(/$$(M6!(E&!(DPB5`$B0*`>R$-=`:`>R$B=62+5"08#[9"
+M`X/X.W0B@_@\=5+&1"05`8/L#/]T)$!55_]T)"13Z/S___^#Q"#K-8M$)!B#
+MP`N#[`154/^SY````.C\____@\0$_W0D0%57_W0D)%/H_/___\9$)#4!@\0@
+MC78`_D0D%HI,)!:+1"00.$@P#X=?____N`$```"`?"05`'4;BU0D-,="+/__
+M__^#[`Q2_U(HN`````"#Q!"0@\0<6UY?7<-55U93@^P<BT0D-(MX&$>+4!!*
+MB50D&,=$)!0`````BT@<B4PD$(!_`0%U#,=`+`````#I0@(``(!_`0)U6H!_
+M`@%U1(M$)#"#N"@%````=`J+D"@%``")5"0PBTPD,(N!)`4``(I7`XB05@P`
+M`(I7`XB0MA@``(M$)#3'0"P`````Z?,!``"0BU0D-,="+/[____IX@$``(!_
+M`01U(HI'`X/H.SP!=QB#[`C_="0\_W0D/.CX_/__@\00Z=X!``"`?P$#=7J`
+M?P(!=6(/ME<#BTPD,`^V02:-#`")T)GW^3G1?CJ#[`0/MD<$4`^VVE/_="0\
+MZ/S___^#Q`P/MD<$4%/_="0\Z/S___^+5"1$QT(L`````(/$$.E<`0``BTPD
+M-,=!+/[____I3`$``(M$)#3'0"S^____Z3P!``")]HM4)#"#NB@%````=`J+
+MBB@%``")3"0PB?N`?P$`#X2H````D`^V,T.*`T.(P0^VT/;"`70_BVPD%`'U
+MBT0D-#MH%`^'U````(/L#%:+1"0@`T0D)%!2:@#_="1,Z*/X__^#Q"`Y\`^%
+ML````(EL)!3K3XGVC2PSB>@I^(/``CM$)!@/CY0```"#[`Q64P^VP5!J`/]T
+M)$SHL/K__X/$((7`=7F)ZX!]``!U!H!]`0!T&H/L#&@0)P``Z/S___^#Q!"`
+M>P$`#X59____#[8SA?9T5FI4:@)J`/]T)#SHA_7__X/$$(M4)#2+0A0K1"04
+M.<9V`HG&@^P,5HM$)"`#1"0D4&H`:@#_="1,Z/7W__^#Q""%P'@&`40D%.L,
+MBTPD-,=!+/____^0:E1J`FH`_W0D/.@Q]?__@\00BT0D-(-X(`!T"8M`((M,
+M)!2)"(/L#/]T)$"+1"1$_U`H@\00@\0<6UY?7<.)]H/L#(M$)!"#N"@%````
+M=`:+@"@%``"`N%8,````=1G&!2,!```!:B!H(`$``&H.4.C\____@\00@\0,
+MPX/L#(M$)!"#N"@%````=`:+@"@%``#&!2,!````:B!H(`$``&H.4.C\____
+M@\0<PU=64XM\)!"#[`0/MG0D'%8/MEPD'%/_MR0%``#H_/___X/$#%935^C\
+M____@\006UY?PY"+5"0$BTPD"(M"!&;'@&S^___LF(M"!&:)B&C^___#D%.#
+M[`B+7"00BD0D%(I,)!C&!"0%B>+&1"0!#\9$)`("QD0D`P/&1"0$!L9$)`4'
+MQD0D!@O&1"0'##P'=T&$R707#[;`#[8,`KC^____T\!F(8-4#```ZQ4/ML`/
+MM@P$N`$```#3X&8)@U0,```/MX-4#```4%/H_/___X/$"(/$"%O#D%=64XMT
+M)!"#OB@%````=`:+MB@%``"_`````&H`:@>)^`^VV%-6Z)'S__]J1&H"4U;H
+MAO/__X/$(&C0````:@!35NAU\___:@!J!%-6Z&KS__^#Q"!'@_\!=L!HH(8!
+M`.B'\___B(;%"@``#[;`4&H#:@!6Z$/S__^#Q!1;7E_#BT0D!(M0!('J``(!
+M`(M$)`B+!`*C`````,.)]HM$)`2+2`2!Z0`"`0"+5"0,BT0D"(D4`<.-=@!3
+MBUPD"(M3!('J``(!`,>"@``!``````"+@@0!`0"C`````(#,`8F"!`$!`&H$
+M:`S"``!3Z/S___]HN`L``&@(P@``4^C\____:`$`#`!H`,(``%/H_/___X/$
+M)&H$:`S#``!3Z/S___]HN`L``&@(PP``4^C\____:`$`#`!H`,,``%/H_/__
+M_X/$)&H`:%#"``!3Z/S___]J`&A0PP``4^C\____BT,$9L>`3/[__P``BT,$
+M9L>`;/[__^R8BT,$9L>`:/[__^R89L>#5`P``/__@\086\-64X/L!(M4)!`Y
+MDB0%```/E40D`XI$)!2#X`,/ML"-'$"X!P```(C9T^#WT(G&(W(\B7(\@'PD
+M&`!T#+@$````T^`)\(E"//]R/`^V1"0'P>`(!5#"``!0_[(D!0``Z/S___^#
+MQ!!;7L.-=@!55U93@^P,BWPD((MT)"2-GR`+``"+CY`%``"-J>P&#0!F@7X0
+MA0!W'`^W1A`/MH0XF`0``(T$0(T$P(G"P>(%*<*-+)&+5C2`>@$"=1J+0@2)
+M`XM""(E#!(M"#(E#"(M"$(E##(UV`(-^4`!T$H/L"/]V4%?H_/___X/$$(UV
+M`(/L"%97Z/S____&130`@\0<6UY?7<.)]E575E.#[!B+?"0LBVPD,(M$)#2)
+M1"04BTPD.(E,)!"+1PB+,%;H_/___XG#@\00A<!T?X/L#%;H_/___XG!@\00
+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
+MQKC_____@\0,6UY?7<.04X/L"(M<)!!J_VH`:@"+@UP,```/M@!0C40D%%!3
+MZ(W^____="0<4^C/_O__@\08:!`G``!3Z"'^__^#Q!"Z_____X7`=1EHX),$
+M`&H":@-3Z#K___^#Q!"#^`$9TO?2B="#Q`A;PY!3@^P(BUPD$/]T)!1J`6H!
+MBX-<#```#[9`"U"-1"044%/H(O[___]T)!Q3Z&3^__^#Q!AH$"<``%/HMOW_
+M_X/$$+K_____A<!U&HM#!(N0#,;__XD5`````(M$)!B($+H`````B="#Q`A;
+MPY!64X/L&(M<)"2+="0HQD0D%_^-1"074%93Z/S___^#Q!"Z_____X7`=7JZ
+M`````(!\)!,`=&Z#[`Q3Z.W^__^#Q!"Z_____X/X_W185FH`:@"+@UP,```/
+MMD`*4(U$)!Q04^AU_?___W0D)%/HM_W__X/$&&@0)P``4^@)_?__@\00NO__
+M__^%P'49:."3!`!J`&H#4^@B_O__@\00@_@!&=+WTHG0@\046U[#4X/L%(M<
+M)!Q3Z'+^__^#Q!"Z_____X/X_W1;_W0D%&H`:@"+@UP,```/MD`&4(U$)!10
+M4^CW_/___W0D'%/H.?W__X/$&&@0)P``4^B+_/__@\00NO____^%P'49:."3
+M!`!J`&H#4^BD_?__@\00@_@!&=+WTHG0@\0(6\.-=@!64X/L$(MT)!R+7@2!
+MZP`"`0!6Z.C]__^+1"0HB8,(R```_W0D)&H$:@"+AEP,```/MD`%4(U$)"!0
+M5NAP_/__@\0H_S0D5NBP_/__:!`G``!6Z`7\__^#Q!"Z_____X7`=1EHB!,`
+M`&H`:@%6Z![]__^#Q!"#^`$9TO?2B="#Q`1;7L-55U93@^P,BVPD)(M\)"B+
+M="0LNP`````Y\W,C@^P$_S0?C40=`%#_="0LZ$S___^#Q!"#^/]T#(/#!#GS
+M<MVX`````(/$#%M>7UW#5E.#[`2+7"00BD0D'(MS!('N``(!`#P$=@*P!/]T
+M)!0/ML!0:@&+@UP,```/MD`$4(U$)!!04^BD^____W0D&%/HYOO__X/$&&@0
+M)P``4^@X^___@\00NO____^%P'4;BX8,R```HP````")!"2)PHM$)!B)$+H`
+M````B="#Q`1;7L.055=64X/L#(ML)"2+="0HBT0D+`'HB40D!(GK@^/\B>^#
+MYP-T1VH$C40D#%!3_W0D+.A&____C4,$@\00N00````[1"0$=@B+3"0$*>D!
+M^8GZ.<]S$HU\)`B-=@"*!!>(!D9".<IR]8/#!(GVBWPD!(/G_#G[<R6-;"0(
+MD&H$55/_="0LZ//^__^+1"08B0:#Q@2#Q!"#PP0Y^W+@.UPD!',V:@2-1"0,
+M4%/_="0LZ,G^__^+3"04*=FZ`````(/$$#G*<Q.-7"0(C78`B@03B`9&0CG*
+M<O60N`````"#Q`Q;7E]=PXUV`%93@^P$BUPD$,<$)`````"+<P2![@`"`0#&
+M@U@,````:@!J`FH!#[8%"````%"-1"004%/H._K___]T)!A3Z'WZ__^#Q!AH
+M$"<``%/HS_G__X/$$(7`=3R+A@S(``"C`````(D$)#V_0P``=2?'@T@,``"_
+M0P``QX-,#``````@`,>#4`P````0``!FN```ZPB-=@"X_____X/$!%M>PY!6
+M4X/L!(M<)!#'!"0`````BW,$@>X``@$`QH-8#````&H`:@)J`0^V!0@```!0
+MC40D$%!3Z)OY____="084^C=^?__@\08:!`G``!3Z"_Y__^#Q!"%P'4\BX8,
+MR```HP````")!"0]'V,``'4GQX-(#```'V,``,>#3`P`````!`#'@U`,````
+M``$`9K@``.L(C78`N/____^#Q`1;7L.05E.#[`2+7"00QP0D`````(MS!('N
+M``(!`,:#6`P```%J_VH":@$/M@4(````4(U$)!!04^C[^/___W0D&%/H/?G_
+M_X/$&&@0)P``4^B/^/__@\00A<!U:(N&#,@``*,`````B00D/1]#``!T*ST?
+M1```=4S'@T@,```?1```QX-,#``````$`,>#4`P``````0!FN```ZRW'@T@,
+M```?0P``QX-,#``````$`,>#4`P``````0"X`````.L(C78`N/____^#Q`1;
+M7L.05E.#[`2+7"00QP0D`````(MS!('N``(!`,:#6`P```!J`&H":@$/M@4(
+M````4(U$)!!04^@O^/___W0D&%/H<?C__X/$&&@0)P``4^C#]___@\00A<!U
+M<(N&#,@``*,`````B00D/>\1``!T"SWO$@``="SK4HGVQX-(#```[Q$``,>#
+M3`P`````!`#'@U`,``````$`N`````#K,(UV`,>#2`P``.\2``#'@TP,````
+M``0`QX-0#``````!`+@`````ZPB-=@"X_____X/$!%M>PY!3@^P4BUPD'%/H
+MLOW__X/$$(7`=1/'@UP,````````N@````#K:HGV@^P,4^@O_O__@\00A<!U
+M$<>#7`P```````"Z`````.M'@^P,4^C._/__@\00A<!U$<>#7`P```````"Z
+M`````.LF@^P,4^BY_O__@\00NO____^%P'41QX-<#````````+H`````B?:)
+MT(/$"%O#D%=64XM<)!"+?"0<BD0D((MT)!BZ`````(.[7`P````/A-,```"$
+MP'0[@WPD%/]U$&:+@T@,``!FB0;IL0```)!75O]T)!Q3Z%3[__^#Q!"Z````
+M`(7`#X6<````Z8\```"-=@"#?"04_W41@#X/#Y2#60P``+H!````ZWRZ````
+M`("[60P```!T;HM$)!2Z`````/>S4`P``(72=3N`NU@,````=!F#[`C_="0<
+M4^C\____@\00N@````"%P'4Y@^P(_W0D'%/H`/G__X/$$+H`````A<!U(%=6
+M_W0D'%/H[/G__X/$$+H`````A<!U"+H!````C78`B=!;7E_#D)!55U93@^Q,
+MBVPD8,9$)!AMC40D&,9``?_&0`(CQD`#%,9`!#K&0`7OQD`&%L9`!Y*Y````
+M`+H@````C40D((GVB`A`2G7ZQD0D)`'&1"0/`&H@C5PD)%-J#E7H_/___X/$
+M$(7`=5B#[`QH@!H&`.C\____:B!3:@]5Z/S___^#Q""#^"!U.(U4)#"-1"08
+MN0@```#\B=:)Q_.F#Y?"#Y+`.,)U&L9$)`\!#[9$)"[!X`@/ME0D+PG0B84T
+M!0``#[9$)`^#Q$Q;7E]=PY!64XM4)`R[`Q$`)[D`````@WH(`'0NBT((BP"C
+M`````(G&BT((B1B+0@B+`*,`````N0`````YV'4*BT((B3"Y`0```(G(6U[#
+MC78`55=64X/L'(M<)#"+`XN`8`#__Z,`````@^`#@_@!=!B#^`%R!X/X`G1G
+MZV_'@S`%```!````ZV.#[`Q3Z/S___^#Q!"$P'0>H60"``")'(5``@``0*-D
+M`@``QX,P!0```@```.LU4^C\____@\0$A,!T**%H`@``B1R%4`(``$"C:`(`
+M`,>#,`4```0```#K"L>#,`4```,```"A8`(``(D<A0`"``!`HV`"``"`/0T`
+M````#X6-````QD0D$P"%P`^.9P(``(,]0`(```!T+`^V5"03NP`"``"+#4`"
+M```[#)-T%XL$DXF(*`4``(L4DZ%``@``B8*($0``@SU0`@```'0L#[94)!.[
+M``(``(L-4`(``#L,DW07BP23B8@L!0``BQ23H5`"``")@HP1``#^1"03#[9$
+M)!,[!6`"``!\A>GG`0``QD0D$P"A0`(``(E$)!B%P`^$W0```+T`````@SU@
+M`@````^.KP```)")Z0^VT8L$E0`"``"#N"@%````#X6#````BTPD&#G(='N^
+M`````(H-#0```(3)=&R)5"0,BU0D#+@``@``BQR0.$LA<D,/ME,A#[;!B<<#
+M/30+```Y^G,PBU0D&#A*(7(G#[9"(3GX<Q^)DR@%``"+3"0,N@`"``"+!(J+
+M3"08B8B($0``ZQ601HGR#[;"P>`%BH@-````A,EUF9!%B>D/ML$[!6`"```/
+MC%+____^1"03#[9$)!.+!(5``@``B40D&(7`#X4C____QD0D$P"A4`(``(E$
+M)!2%P`^$W@```+T`````@SU@`@````^.L````(GVB>D/MM&+!)4``@``@[@L
+M!0````^%@P```(M,)!0YR'1[O@````"*#0T```"$R71LB50D"(M4)`BX``(`
+M`(L<D#A+(7)##[93(0^VP8G'`STT"P``.?IS,(M4)!0X2B%R)P^V0B$Y^',?
+MB9,L!0``BTPD"+H``@``BP2*BTPD%(F(C!$``.L5D$:)\@^VPL'@!8J(#0``
+M`(3)=9F018GI#[;!.P5@`@``#XQ2_____D0D$P^V1"03BP2%4`(``(E$)!2%
+MP`^%(O___X/$'%M>7UW#B?955U93BVPD%+X`````N`$```"`/0T`````=&'K
+M![@!````ZUB)\@^VPL'@!4:*B`T```"$R71`BSTT"P``C78`.$TA<A\/ME4A
+M#[;!C1PX.=IS$8M$)!@X2"%R"`^V0"$YV'*YB?(/ML+!X`5&BH@-````A,EU
+MR;@`````6UY?7<.-=@!3BTPD"(M<)`R+@3`%``"Z`0```#N#,`4``'<.BX$P
+M!0``.X,P!0``&=*)T%O#B?:+5"0$BTPD"+@`````.Q6`"P``?3*-%%+!X@-F
+MBX(@"P``9HD!9HN"(@L``&:)00**@B@+``"(00B*@BD+``"(00FX`0```,-5
+M5U93@^P(QT0D!`````"0BT0D!,'@!8G#9H.X```````/A(<```"]`````("X
+M'`````!T:HD$)(M4)`2-1-4`C32%#````(U\)!RY!````/SSI@^7P@^2P#C"
+M=3._$````(I$.PU`B$0[#8!\.PP`=!XZ1#L,=AAF#[;`9@^V3#L,N@````!F
+M]_&(5#L-B?9%BQPD#[:#'````#GH?YG_1"0$@WPD!`,/CF+___^#Q`A;7E]=
+MPXGV55=64X/L+,9$)"L`QD0D*@"-=@#&1"0I``^V1"0KB40D%&H`#[9$)"U0
+M#[9$)#)0#[9$)#=0Z/S___^)1"0TOP````"#Q!`[/8`+```/C88!``"+5"04
+MB50D&)"-!'_!X`,/MY`B"P``P>(0#[>`(`L```G".U0D)`^%30$``,9$)"@`
+MC01_P>`#B40D((T,?XE,)!P/ME0D*(G1P>$%9H.Y``````!U=XM<)""+@R`+
+M``")@0````"+@R0+``")@00```"+@R@+``")@0@````/MH$<````P>(#C00"
+MBEPD*X@<A0T````/MH$<````C00"BEPD*H@<A0X````/MH$<`````<**1"0I
+MB`25#P```/Z!'````.FB````C78`#[9<)"B)VL'B!8E4)!"^$`````^V3#(,
+MB<B+="0<O3`+``"Z`````/=T]02%TG1@P>,#C10+#[8$E0D```"+3"08*<&#
+M^0%_1XI$)"N(!)4-````BU0D$+D0````#[9$"@R-!`.*5"0JB!2%#@```(MT
+M)!`/MD0.#(T$`XI4)"F(%(4/````_D0.#.L2C78`_D0D*(!\)"@##X;6_O__
+MC01__P3%+`L``(UV`$<[/8`+```/C(/^___^1"0I#X0__O___D0D*H!\)"H?
+M#X8B_O___D0D*X!\)"O_#X4+_O__@\0L6UY?7<.-=@!55U93@^P<QT0D%```
+M``"#/6P"````=0_'!6P"```!````Z,W]__^#?"0T`'0'BT0D-,8``,=$)!@`
+M````N@`````[%8`+``!]/XGVBTPD&(T$28T4Q0````"+@BP+```!1"04@WPD
+M-`!T#HM,)#2*`0*",`L``(@!_T0D&(M$)!@[!8`+``!\PX-\)#@`#X2G````
+MQT0D&`````"+1"08P>`%B<5F@[@```````^$B````+L`````@+@<`````'1K
+MBU0D&,'B`XE4)!")1"0,BT0D$`'8C32%#````(M\)#BY!````/SSI@^7P@^2
+MP#C"=2F#?"0T`'0,BH4=````BU0D-(@"BT0D&,'@!0^V@!P```")1"04ZQ*)
+M]D.+;"0,#[:%'````#G8?Z3_1"08@WPD&`,/CF'___\/MD0D%(/$'%M>7UW#
+MN,`8``##B?:XG````,.)]K@$````PXGV55=64X/L#(M\)""+="0HBVPD+(V>
+M8`P``+D`````NL`8``")\(UV`(@(0$IU^HEN$(L5X`$``(U"`:/@`0``B%8H
+MBT0D)(E&(,9&*0!FBP=FB4889HM'`F:)1AJ+1P2)1AR):Q"(4RB+1"0DB4,@
+MQD,I`6:+!V:)0QAFBT<"9HE#&HM'!(E#'`^W1AH](B<``']A/2`G```/C<(`
+M```]0"$```^$MP```#U`(0``?QL]("$```^$I0```#TB(0``#X2:````Z:D`
+M```]1"$```^$B@```#U$(0``#XR3````+1`G``"#^`$/AX4```#K;XUV`#U@
+M)P``=&4]8"<``'\@/4`G``!T5SU`)P``?PD],"<``'1)ZUL]1"<``'1`ZU(]
+M@B<``'0W/8(G``!_"3V`)P``="GK.SV`D0``=`D]@)0``'09ZRMFQT8D@)'&
+M1B8$9L=#)("1QD,F!.L5D&;'1B2`E,9&)@1FQT,D@)3&0R8$BD<(B$8JBD<(
+MB$,J:```!`!J`&H"5>C\____B09H`"```&H`:@!5Z/S___^)1@B#Q""#/@!T
+M!(7`=0JX`````.GD````BP:-B``"`0")3@2-D````@")%@4`0`(`B0.)2P2+
+M1@B)0PB[`````#L=@`L``'U.BRV`"P``C01;C0S%`````(L'.8$@"P``=2^+
+M@3`+``!`B8$P"P``@[DL"P```'09.X$L"P``=A&Z`````/>Q+`L``(F1,`L`
+M`$,YZWRXBT8$QX`@@O__`?`#`(M&!,>`*(+__P$``.B#[`AJ>/]V$.C\____
+MB<(E`'```(/$$#T`(```=A2#[`1J>`^VPE#_=A#H_/___X/$$/]T)"3H4/G_
+M_X/L"%;H$_7__[@!````@\00@\0,6UY?7<.-=@!3@^P4BUPD'%/H_/___X'#
+M8`P``(D<).C\____N`$```"#Q!A;PXGV5E.#[!"+="0<BYXD!0``@<-@#```
+M5NC\____@\00@'XY`74&@'LY`70[@^P(C9X0`0``4_]V%.C\____QX80`0``
+MZ`,``,>&&`$```````")MAP!``"#Q`A3_W84Z/S___^#Q!"#Q`1;7L.05E.#
+M[!"+7"0<C;-@#```4^C\____B4,4B484B9LD!0``B9XD!0``BX,P!0``B88P
+M!0``B1PDZ/S___^)-"3H_/___XD<).C\____@\00N@````"$P`^$A0```(/L
+M#%;H_/___X/$$+H`````A,!T<(/L#%/H_/___\<$)-`'``#H_/___XD<).C\
+M____B1PDZ/S____'@Q`!``#H`P``QX,8`0```````(F;'`$``(/$"(V#$`$`
+M`%#_<Q3H_/___X/$"&H`4^C\____@\0(:@!6Z/S___^Z`0```(/$$)")T(/$
+M!%M>PU575E.#[#R+7"10QD0D"&V-1"0(QD`!_\9``B/&0`,4QD`$.L9`!>_&
+M0`86QD`'DH.[*`4```!T!HN;*`4``+D`````NB````"-1"00C78`B`A`2G7Z
+MQD0D%`&]`````&H@C70D%%9J#E/H_/___X/$$(7`=4&#[`QH@!H&`.C\____
+M:B!6:@]3Z/S___^#Q""#^"!U(8UT)""-1"0(N0@```#\B<?SI@^7P@^2P#C"
+M=06]`0```(GHA,!U$(/L#&@L`0``Z/S___^#Q!")Z@^VPH/$/%M>7UW#B?;#
+MC78`55=64X/L#(ML)""+7"0DN0````"Z>````(G8D(@(0$IU^H.],`4```$/
+ME$,3BT4@B0.`2Q$09HM%&&:)0P1FBT4:9HE#!HN%,`4``(A#;,9#$B!F@7T:
+M("%T"&:!?1HB(74<QD,7`KZD!```C7L\_+D'````\Z5FI:3IA````&:+11HM
+M$"<``&:#^`%V$&:!?1I`(70(9H%]&D0A=4W&0Q<$9HM%&BT0)P``9H/X`7<5
+MOL0$``"->SS\N0<```#SI6:EI.L]9H%]&D`A=`AF@7T:1"%U+;[D!```C7L\
+M_+D'````\Z5FI:3K&,9#%PB#[`AH`````(U#/%#H_/___X/$$(I#%_9C$HA#
+M$(3`=03&0Q"`OD@!``"->QC\N0<```#SI:2#O2P%````=!*+A2P%``"+0`B)
+M0V29B5-HZPJ+10B)0V29B5-HQT-@`"```(/$#%M>7UW#C78`BT0D!,:`EP``
+M``##5U93BW0D$(M^;(N')`4``(!X)P`/A8H```"+7G"#[`B+5F`/MH*C````
+M4`^V@J(```!0#[:"H0```%`/MH*@````4`^V@I\```!0#[:"G@```%`/MH*=
+M````4`^V@IP```!0#[:"UP```%`/M@:#X`%0#[9&`E`/MD8!4/]V"&@$!0``
+MZ/S___^#Q#S'1G``````_W8(5O]V>/_3@\00ZSB-=@"#[`B-7GQ3_W<4Z/S_
+M___'1GST`0``QX:$````^`\#`(FVB````(/$"%/_=Q3H_/___X/$$%M>7\.-
+M=@!55U93@^P,BVPD)`^W1"0HC13`P>("*<*+3"0@BX%8!0``C1S0B[$D!0``
+M@<9@#```B70D"(E=8(EK'(-[+`!U"H-[,``/A)L#``"_`````(!-``&+0S")
+M16B+0RR)162Q`(M$)""`>"L`=B6+<RB0#[;1B=#!X`0!T(M4)"`[M((\"P``
+M#X2&`@``03A**W??L8"+1"0@B[`D!0``#[;!BH0PF`0``#S_="F#>RP`="(/
+MML"-!$"-!,")PL'B!2G"BX:0!0``C120.U,L#X0T`@``1T&`^8%VP[&"BU0D
+M((NR)`4``(GV#[;!BH0PF`0``#S_=!P/ML"-!$"-!("+EG0%``"-!,([0S`/
+MA.P!``!'08#YA7;0L8`/ML&+="0(BH0PF`0``#S_="F#>RP`="(/ML"-!$"-
+M!,")PL'B!2G"BX:0!0``C120.U,L#X2?`0``1T&`^8%VO[&"C78`#[;!BU0D
+M"(J$$)@$```\_W0<#[;`C01`C02`BY)T!0``C03".T,P#X1<`0``1T&`^85V
+MS(M$)""`>#D!=4:#>RP`=!6#[`1J``^V0TE0_W,LZ/S___^#Q!"#N^``````
+M#X0"`@``@^P$:@`/MH/5````4/^SX````.C\____@\00C78`@[O@``````^$
+MUP$``(M3+(E4)`2_`````(!Z,`!V18G6@\8H@^P,5NC\____C4CX@\00BU8$
+MB48$B3")4`2)`H"YUP```/]U#X!Y(0!U"8.YX`````!U#$>)^8M$)`0X2#!W
+MP(GZBTPD!#A1,`^%T````(J#UP```(A%`K\`````@'DP``^&N0$``(G.@\8H
+M@^P,5NC\____C4CX@\00BU8$B48$B3")4`2)`H-Y'`!T0HM1'(I"`CJ!UP``
+M`'0T@WIP`'4N@WIT`'4HBH'7````B$("@^P$#[=!&%"+1"0H_[`D!0``:@?H
+M_/___X/$$(UV`$>)^HM,)`0X43!WD.D_`0``B?B(10'IH?[__XGZB%4!Z9?^
+M__^)^8A-`>F-_O__B?B(10'I@_[__XM4)"`/MD(IC02!B(68````Z6K]__^*
+M0TF(10+&@]<```#_OP````"+3"0$@'DP``^&X0```(G.@\8H@^P,5NC\____
+MC4CX@\00BU8$B48$B3")4`2)`H"YUP```/]T1\:!UP```/^#>1P`=#J+41R*
+M0@(Z04ET+X-Z<`!U*8-Z=`!U(XI!28A"`H/L!`^W01A0BT0D*/^P)`4``&H'
+MZ/S___^#Q!"01XGZBTPD!#A1,'>(ZV*)]HI#28A%`NM8BW0D(`^V1BF-!(&(
+M10&(A9@```#K+[$`BT0D((!X*P!V(XMS*(UV``^VT8G0P>`$`="+5"0@.[2"
+M/`L``'3!03A**W?CBW0D(#A.*W4$QD4!_\9%`@")]HU]((US8/RY"@```/.E
+MC7T,C7-,L07SI8N#B````(E%2(N#C````(E%3&:+0S1FB4589HM#-F:)15J+
+M0T"+4T2)15")552*0TJ(15SV0R0$=2Z+1"0@@+A7#````'0/_HA7#```@+A7
+M#````'42@^P,_W0D+.C\____@\00C78`@^P$:@"+0QP/MD`!4/]T)"SH_/__
+M_P^V0R"#Q!"H`G0/J`1T"Z@!=0>`30`"ZP60@&4`_8I3)-#J@^($BD4`@^#[
+M"="(10"#[`Q5Z"CZ__^#Q!Q;7E]=PU575E.#[!R+?"0PBW0D-(ML)#BY````
+M`+J<````B>B0B`A`2G7ZB74(@_X_?@F!QV`,``"#[D"X`````(.\MY@"````
+M#X5I`@``B:RWF`(``(E];(M$)#R)17"+1"1`B45XN`$```"`?SD!#X5"`@``
+M9L=$)!K_`('^A0```'\.9@^VA#Z8!```9HE$)!IF@7PD&O\`#X0(`@``#[=4
+M)!J+CU@%``"-!-+!X`(IT(T4Q0````#V1`HC!`^$XP$``(M$"B`E`/__`#T`
+M`/\`#X7/`0``C1P*]D,D!`^$-@$``,:#L``````/MD,@J`)T,J@$="ZH`70J
+MQD,B!<9#(P13#[9#25#_<RS_<RCH_/___X/$$.F#`0``QH.Q`````>M?#[9#
+M(*@"=7:H!'1RJ`%T;HMK*,9#(@/&0R,$QT0D%`````"`?0H`=#:-=3B#[`Q6
+MZ/S___^)PH/$$(M&!(E6!(DRB4($B1"`>B+_=`0YVG6F_T0D%`^V10H[1"04
+M?\V`N[$````!#X0.`0``@^P(4U?H_/___X/$$.G\````#[9#(*@"#X3P````
+MJ`0/A.@```"H`0^%X````(M#*(I`";X`````@'\F`'8G#[;HB?(/MLJ)Z-/X
+MJ`%T#X/L!&H`45?H_/___X/$$$:)\#A')G?<QD,C!L9#(@5FQX.0``````"#
+M[`A35^C\____@\00Z84```"+6RB)7"00QD0D#P"`>PH`=F")VH/".(E4)`B#
+M[`S_="04Z/S___^)PX/$$(M4)`B+0@2)6@2)$XE#!(D8@'LB_W0>@'LA(G0&
+M@'LA#742QX2WF`(```````"X`````.L[_D0D#XI$)`^+5"00.$(*=ZF#[`0/
+MMT0D'E!55^C\____@\00N`$```#K$,>$MY@"````````N`````"#Q!Q;7E]=
+MPY!55U93@^P,BW0D((ML)"2+?"0HBUY@A=MU#H/L#%?_U8/$$.D``0``@WYT
+M`'4&@WYP`'00@^P,5__5@\00Z>8```")]H"[L``````/A<L```"+4R@/MD((
+MJ!`/A;P```"H"`^%M````(L2B50D"(![2P!T$8/L!%-J!O]S*.C\____@\00
+MB6YTB7YX#[9#(*@"="FH!'0EJ`%T(<9#(@7&0R,$4P^V0TE0_W,L_W,HZ/S_
+M__^#Q!#K;XUV``^V0R"H`G4DJ`1T(*@!=!S&0R(#QD,C!(/L"%/_="04Z/S_
+M__^#Q!#K0HGV#[9#(*@"=#BH!'0TJ`%U,,9#(@7&0R,&9L>#D```````@^P(
+M4_]T)!3H_/___X/$$.L-D(/L#%?_U8/$$(UV`(/$#%M>7UW#5U93BU0D$(MT
+M)!2+0BB+.(M>2`^V1A2#^"!T1(/X('\+A<!T&X/X!G\NZR2#^")T+X/X(GP:
+M@\"`@_@!=QKK$(M"',=`!`````#&0UX!ZQ#&0UX-ZPJ)]K@`````ZS&0@WY0
+M`'02@^P(C4904%?H_/___X/$$(GV@^P(5E?H_/___XD<)/]3:+@!````@\00
+M6UY?PU575E.#[!R+?"0PBVPD-(M';(E$)!B+122).(-_8`!U$\9%7@*#[`Q5
+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
+MQD,4@(ES&(M4)"2+0@B)0S0/MT0D&HE#((E34,9#'""+1F`%M````(E#.,=#
+M;.P/`P"#Q`AJ`/]T)!SH_/____]S((M$)"C_<!#_<`S_="0LZ/S____&AI<`
+M```!@\084U7H_/___X/$$(7V#X2L````@WY@`'1A@+Z7`````'18B?9F@;Z4
+M````E@!U&8/L!/]V8&HABT9@_W`HZ/S___^#Q!"-=@!F_XZ4````@^P,:-`'
+M``#H_/___XDL).C\____@\00A?9T5(-^8`!T"8"^EP````!UJH7V=$&#?F``
+M=#MF@[Z4`````'0Q@'L4`'4KQT0D#`````"`?"0;`'0<#[=$)`J#[`10BU0D
+M'/]R"/]T)$SH_/___X/$$(-[4`!T$(/L"(U#4%!5Z/S___^#Q!"#[`A35>C\
+M____BX4D!0``QD`G`(/$#%;_M20%``!J!NC\____BT0D%(!@)/V+1"0<@\00
+MC78`@\0<6UY?7<-64X/L#(MT)!B+7"0<B%XW#[;;4U;H_/___X/$"%.!QF`,
+M``!6Z/S___^X`0```(/$%%M>PXUV`(/L&/]T)!SH_/___P^VP(/$',.0N```
+M``##B?964XM,)`R^`````+J`````BYDD!0``B?8/M\*`O!B8!```_W0!1D)F
+M@?J%`';JBXDD!0``@<%@#```NH````"0#[?"@+P(F`0``/]T`49"9H'ZA0!V
+MZHGP6U[#D(M,)`2*5"0(B-#`Z`0\"78'@\!7ZPJ)]HC0P.@$@\`PB`&)T(/@
+M#X/X"7X,B-"#X`^#P%?K"HGVB-"#X`^#P#"(00'#5E.+="0,BUPD$`^VQU!6
+MZ*C___\/MMM3@\8"5NB;____@\006U[#D%575E.+?"04BVPD'+X`````N0``
+M``"Z``$``(GHC78`B`A`2G7ZNH````"+GR0%```/M\)F#[:,&)@$``!F@?G_
+M``^$;`$``(GP1CM$)!@/A5\!``!F@?J!``^'T`````^WP8T$0(T$P(G"P>(%
+M*<*+@Y`%``"-')"#>PP`=&VY@````(NW)`4```^WP68/MH0PF`0``&8]_P!T
+M'@^WP(T$0(T$P(G"P>(%*<*+AI`%``"-%)`[4PQT+$%F@?F!`';(L@"`>S(`
+M=C"^`0````^VP@^V3!A`B?#3X`E%($(X4S)WZ^L4B$T"Z]>0QD4"_XM#"`^V
+M0`F)12#&10`!BD,QB$4!BT-(B44$BT-,B44(BT-8B44,BT-<B440BT-@B444
+MBT-DB448BT-PB44<ZWB+ER0%```/M\&-!$"-!(#!X`.)PP.:=`4``,9%`O_&
+M10`"BY<D!0``BY)T!0``BD00'XA%`8M#5`^V0`F)12#&101V#[=#(%"-1050
+MZ%?^___&10QD#[=#(E"-10U0Z$7^___&11QR#[9#'5"-11U0Z._]__^#Q!BX
+M`````.F?`0``B?9"9H'ZA0`/AFO^__^+OR0%``"!QV`,``"Z@`````^WPF8/
+MMHPXF`0``&:!^?\`#X18`0``B?!&.T0D&`^%2P$``&:!^H$`#X?,````#[?!
+MC01`C03`B<+!X@4IPHN'D`4``(T<D(-[#`!T:;F`````#[?!9@^VA#B8!```
+M9CW_`'0>#[?`C01`C03`B<+!X@4IPHN'D`4``(T4D#M3#'0L06:!^8$`=LBR
+M`(![,@!V,KX!````#[;"#[9,&$")\-/@"44@0CA3,G?KZQ:(30+KUXUV`,9%
+M`O^+0P@/MD`)B44@QD4``8I#,8A%`8M#2(E%!(M#3(E%"(M#6(E%#(M#7(E%
+M$(M#8(E%%(M#9(E%&(M#<(E%'.ML#[?!C01`C02`P>`#B<,#GW0%``#&10+_
+MQD4``HN7=`4``(I$$!^(10&+0U0/MD`)B44@QD4$=@^W0R!0C44%4.C'_/__
+MQD4,9`^W0R)0C44-4.BU_/__QD4<<@^V0QU0C44=4.A?_/__@\08N`````#K
+M$I!"9H'ZA0`/AH7^__^X_____UM>7UW#B?955U93@^P$BW0D&(ML)!R[````
+M`+D`````NJ0,``"+1"0@B?:("$!*=?JZ@````(N^)`4```^WPF8/MHPXF`0`
+M`&:!^?\`#X0$`P``B=A#.>@/A?D"``!F@?J!``^'60(```^WP8T$0(T$P(G"
+MP>(%*<*+AY`%``"-+)"#?0P`='*Y@````(G[#[?!9@^VA!B8!```9CW_`'0>
+M#[?`C01`C03`B<+!X@4IPHN#D`4``(T4D#M5#'0R06:!^8$`=LBR`(!],@!V
+M/;L!````#[;"#[9,*$")V-/@B<&+1"0@"4@@0CA5,G?EZQN+5"0@B$H"Z\V+
+M3"0@QD$"_XM%"`^V0`F)02"+1"0@Q@`!BD4QBU0D((A"`8M%2(E"!(M%3(E"
+M"(M%6(E"#(M%7(E"$(M%8(E"%(M%9(E"&(M%<(E"',9$)`,`@+V0``````^&
+M]`$```^V1"0#C02`P>`#BU0D((T,$`'HC9B0````BE,$B%$DBE,%B%$EBX"8
+M````B@"#X`^(028/MD$D@_@#="F#^`-_#H/X`@^$XP```.G*````@_@$=$>#
+M^!(/A(L```#IMP```(UV``^V3"0#C0R)P>$#BX0IF````(I0`8/B!P^VTL'B
+M"`^V0`(!T(T$@-'@BU0D((E$$2CID@````^V1"0#C02`C13%`````(N$*I@`
+M``"`>`(`=0Z+3"0@QT0**`````#K:`^V1"0#C02`P>`#BY0HF`````^V4@*#
+MZA2+3"0@B50(*.M%#[9,)`.-#(G!X0.+A"F8````#[90`L'B"`^V0`,!T(T$
+M@-'@BU0D((E$$2CK%XUV``^V1"0#C02`BTPD(,=$P2@`````#[9T)`.--+;!
+MY@.+1"0@C7P&+(VT+IP```#\N0@```#SI?Y$)`.*5"0#.)60````#X><_O__
+MZ8L```"+EB0%```/M\&-!$"-!(#!X`.)PP.:=`4``(M,)"#&00+_Q@$"BY8D
+M!0``BY)T!0``BD00'XA!`8M#5`^V0`F)02#&001V#[=#(%")R(/`!5#H;_G_
+M_XM$)"C&0`QD#[=#(E"+1"0L@\`-4.A5^?__BU0D,,9"''(/MD,=4(G0@\`=
+M4.CY^/__@\08N`````#I-0,``$)F@?J%``^&T_S__XNV)`4``('&8`P``+J`
+M````#[?"9@^VC#"8!```9H'Y_P`/A/`"``")V$,YZ`^%Y0(``&:!^H$`#X=2
+M`@``#[?!C01`C03`B<+!X@4IPHN&D`4``(TLD(-]#`!T<+F`````#[?!9@^V
+MA#"8!```9CW_`'0>#[?`C01`C03`B<+!X@4IPHN&D`4``(T4D#M5#'0R06:!
+M^8$`=LBR`(!],@!V/;L!````#[;"#[9,*$")V-/@B<&+1"0@"4@@0CA5,G?E
+MZQN+5"0@B$H"Z\V+3"0@QD$"_XM%"`^V0`F)02"+1"0@Q@`!BD4QBU0D((A"
+M`8M%2(E"!(M%3(E""(M%6(E"#(M%7(E"$(M%8(E"%(M%9(E"&(M%<(E"',9$
+M)`(`@+V0``````^&XP$```^V1"0"C02`P>`#BU0D((T,$`'HC9B0````BE,$
+MB%$DBE,%B%$EBX"8````B@"#X`^(028/MD$D@_@#=">#^`-_#H/X`@^$X0``
+M`.G(````@_@$=$6#^!(/A(D```#IM0```)`/MDPD`HT,B<'A`XN$*9@```"*
+M4`&#X@</MM+!X@@/MD`"`="-!(#1X(M4)"")1!$HZ9(````/MD0D`HT$@(T4
+MQ0````"+A"J8````@'@"`'4.BTPD(,=$"B@`````ZV@/MD0D`HT$@,'@`XN4
+M*)@````/ME("@^H4BTPD((E4""CK10^V3"0"C0R)P>$#BX0IF`````^V4`+!
+MX@@/MD`#`="-!(#1X(M4)"")1!$HZQ>-=@`/MD0D`HT$@(M,)"#'1,$H````
+M``^V="0"C32VP>8#BT0D((U\!BR-M"Z<````_+D(````\Z7^1"0"BE0D`CB5
+MD`````^'GO[__^M_#[?!C01`C02`P>`#B<,#GG0%``"+3"0@QD$"_\8!`HN6
+M=`4``(I$$!^(00&+0U0/MD`)B4$@QD$$=@^W0R!0B<B#P`50Z$KV__^+1"0H
+MQD`,9`^W0R)0BT0D+(/`#5#H,/;__XM4)##&0AQR#[9#'5")T(/`'5#HU/7_
+M_X/$&+@`````ZQ.)]D)F@?J%``^&[?S__[C_____@\0$6UY?7<.-=@!55U93
+M@^P$BW0D&+L`````N0````"ZI`P``(M$)"")]H@(0$IU^KJ`````B[XD!0``
+M#[?"9@^VC#B8!```9H'Y_P`/A#@#``")V$,[1"0<#X4K`P``9H'Z@0`/AWT"
+M```/M\&-!$"-!,")PL'B!2G"BX>0!0``C2R0@WT,`'1RN8````")^P^WP68/
+MMH08F`0``&8]_P!T'@^WP(T$0(T$P(G"P>(%*<*+@Y`%``"-%)`[50QT,D%F
+M@?F!`';(L@"`?3(`=CV[`0````^VP@^V3"A`B=C3X(G!BT0D(`E(($(X53)W
+MY>L;BU0D((A*`NO-BTPD(,9!`O^+10@/MD`)B4$@BT0D(,8``8I%,8M4)""(
+M0@&+14B)0@2+14R)0@B+15B)0@R+15R)0A"+16")0A2+162)0AB+17")0AR+
+M3"0<B4HDQD0D`P"`O9``````#X8<`@``#[9$)`.-!(#!X`.+5"0@C0P0`>B-
+MF)````"*4P2(D:@```"*4P6(D:D```"+@)@```"*`(/@#XB!J@````^V@:@`
+M``"#^`-T*(/X`W\.@_@"#X3Q````Z=4```"#^`1T28/X$@^$DP```.G"````
+MB?8/MDPD`XT,B<'A`XN$*9@```"*4`&#X@</MM+!X@@/MD`"`="-!(#1X(M4
+M)"")A!&L````Z9X````/MD0D`XT$@(T4Q0````"+A"J8````@'@"`'41BTPD
+M(,>$"JP`````````ZW$/MD0D`XT$@,'@`XN4*)@````/ME("@^H4BTPD((F4
+M"*P```#K2P^V3"0#C0R)P>$#BX0IF`````^V4`+!X@@/MD`#`="-!(#1X(M4
+M)"")A!&L````ZQJ-=@`/MD0D`XT$@(M,)"#'A,&L``````````^V="0#C32V
+MP>8#BT0D((V\!K````"-M"Z<````_+D(````\Z7^1"0#BE0D`SB5D`````^'
+M?_[__^F6````BY8D!0``#[?!C01`C02`P>`#B<,#FG0%``"+3"0@QD$"_\8!
+M`HN6)`4``(N2=`4``(I$$!^(00&+0U0/MD`)B4$@QD$$=@^W0R!0B<B#P`50
+MZ+WR__^+1"0HQD`,9`^W0R)0BT0D+(/`#5#HH_+__XM4)##&0AQR#[9#'5")
+MT(/`'5#H1_+__XM$)#2+3"0XB4$D@\08N`````#I<`,``(UV`$)F@?J%``^&
+MG_S__XNV)`4``('&8`P``+J`````#[?"9@^VC#"8!```9H'Y_P`/A"@#``")
+MV$,[1"0<#X4;`P``9H'Z@0`/AWT"```/M\&-!$"-!,")PL'B!2G"BX:0!0``
+MC2R0@WT,`'1PN8`````/M\%F#[:$,)@$``!F/?\`=!X/M\"-!$"-!,")PL'B
+M!2G"BX:0!0``C120.U4,=#)!9H'Y@0!VR+(`@'TR`'8]NP$````/ML(/MDPH
+M0(G8T^")P8M$)"`)2"!".%4R=^7K&XM4)""(2@+KS8M,)"#&00+_BT4(#[9`
+M"8E!((M$)"#&``&*13&+5"0@B$(!BT5(B4($BT5,B4((BT58B4(,BT5<B4(0
+MBT5@B4(4BT5DB4(8BT5PB4(<BTPD'(E*),9$)`(`@+V0``````^&$@(```^V
+M1"0"C02`P>`#BU0D((T,$`'HC9B0````BE,$B)&H````BE,%B)&I````BX"8
+M````B@"#X`^(@:H````/MH&H````@_@#="J#^`-_$8/X`@^$\P```.G7````
+MC78`@_@$=$B#^!(/A)(```#IP0```)`/MDPD`HT,B<'A`XN$*9@```"*4`&#
+MX@</MM+!X@@/MD`"`="-!(#1X(M4)"")A!&L````Z9X````/MD0D`HT$@(T4
+MQ0````"+A"J8````@'@"`'41BTPD(,>$"JP`````````ZW$/MD0D`HT$@,'@
+M`XN4*)@````/ME("@^H4BTPD((F4"*P```#K2P^V3"0"C0R)P>$#BX0IF```
+M``^V4`+!X@@/MD`#`="-!(#1X(M4)"")A!&L````ZQJ-=@`/MD0D`HT$@(M,
+M)"#'A,&L``````````^V="0"C32VP>8#BT0D((V\!K````"-M"Z<````_+D(
+M````\Z7^1"0"BE0D`CB5D`````^'??[__^F*````#[?!C01`C02`P>`#B<,#
+MGG0%``"+3"0@QD$"_\8!`HN6=`4``(I$$!^(00&+0U0/MD`)B4$@QD$$=@^W
+M0R!0B<B#P`50Z%WO__^+1"0HQD`,9`^W0R)0BT0D+(/`#5#H0^___XM4)##&
+M0AQR#[9#'5")T(/`'5#HY^[__XM$)#2+3"0XB4$D@\08N`````#K$XGV0F:!
+M^H4`#X:U_/__N/____^#Q`1;7E]=PXUV`%575E.+="04BWPD&(MN;+D`````
+MNB````")^(@(0$IU^HN=)`8``+D`````N@`"``")V)"("$!*=?J-4S:Y````
+M`(I$,2&(`D**1#$@B`)"@\$"@_DG?NJ-4Q2Y`````(I$,0V(`D**1`X,B`)"
+M@\$"@_D3?NJ-4RZY`````(I$,4F(`D**1#%(B`)"@\$"@_D'?NJ)7QB+1E"+
+M5E2#P`&#T@")!XE7!(-^8`!U._8&`70V@WYD`'05A>UT$8M&9`^V0#.`O"B8
+M!```_W4;@WYH`'0=A>UT&8M&:`^W0"2`O"B8!```_W0(BD8!B$<,ZP3&1PS_
+MBD8"B$<-BD9<B$<.QD<2$,9'$1`/M@:#X`'1X(I?"H/C_0G#B%\*#[8&@^`!
+MP>`%BD\(@^'?"<&(3P@/MT98P>@'@^`!P>`&@^&_"<&(3P@/MT98P>@"@^`!
+MBE<)@^+^"<*(5PD/MT9:P>@#@^`!P>`'@^%_"<&(3P@/MT9:T>B#X`'1X(/B
+M_0G"B%<)#[=&6,'H`X/@`<'@!H/BOPG"B%<)#[=&6L'H!(/@`<'@!X/B?PG"
+MB%<)@\D0B$\(B@;0Z(/@`8/C_@G#B%\*B@:#X`2#X_L)PXA?"F;'1Q0`$(J&
+MF````(A''%M>7UW#B?:+1"0,QT`$`````,<``````+@`````PY!55U93@^P,
+MBUPD((I$)"2(1"0+QT0D!/____^+<V"+:VR%]G0/@+N7`````'4&]@,"=`V0
+MBT0D!.G_````C78`@^P,5>C\____B<>#Q!"+1"0$A?\/A.(```#&1R3AQD<E
+M`8!\)`L"#Y7`@\`:B$<FQD<4@&:+1AAFB4<0B5\8QT<@`````,='-`````#'
+M1VSL#P,`@^P(5U7H_/___\:#EP````%FQX.4````^@"#Q!"%VW1=@WM@`'17
+MD&:!NY0```"6`'49@^P$_W-@:B&+0V#_<"CH_/___X/$$(UV`&;_BY0```"#
+M[`QHT`<``.C\____B2PDZ/S___^#Q!"%VW0/@WM@`'0)@+N7`````'6J9H.[
+ME`````!T#H!_%`!U",=$)`0`````@^P(5U7H_/___XM$)!2#Q!"0@\0,6UY?
+M7<-55U93@^P<BW0D,(I<)#3'1"04_____XMN8(M&;(E$)!"%[70)@+Z7````
+M`'0*BT0D%.F9!```D(/L#/]T)!SH_/___XG'@\00BT0D%(7_#X1[!```]@8"
+M#X41`0``@/L4=P\/MMN-!%N-'(4`````ZQYF#[;3B=#!X`0!T(T$PF;!Z`C`
+MZ`0/MMB!P_````#&1R3AQD<E`<9')AR(7R?&1Q2`9HM%&&:)1Q")=QC'1R``
+M````QT<T`````,=';.P/`P"#[`A7_W0D'.C\____QH:7`````6;'AI0```#$
+M"8/$$(7V=&.#?F``=%V-=@!F@;Z4````E@!U&8/L!/]V8&HABT9@_W`HZ/S_
+M__^#Q!"-=@!F_XZ4````@^P,:-`'``#H_/___X/$!/]T)!SH_/___X/$$(7V
+M=`^#?F``=`F`OI<`````=:9F@[Z4``````^$9`,``(!_%``/A5H#``#'1"04
+M`````.E-`P``@^P,_W0D'.C\____B40D*(/$$(-\)!@`#X0O`P``C5<\B50D
+M#(M$)!B+0`B)1"0(QD<D&L9')0C&1R8:QD<G`,9'*!#&1RD`BT0D&(E'4,9'
+M%(!FBT489HE'$(EW&(M$)!B+0`B)1S3'1R`0````BT9@!;0```")1SC&1QP@
+MQT=L[`\#`(/L"&H`4NC\_____W<@BT0D+/]P$/]P#/]T)"CH_/___X/$&%?_
+M="0<Z/S____&AI<````!9L>&E````/H`@\00A?9T78-^8`!T5V:!OI0```"6
+M`'46@^P$_W9@:B&+1F#_<"CH_/___X/$$&;_CI0```"#[`QHT`<``.C\____
+M@\0$_W0D'.C\____@\00A?9T#X-^8`!T"8"^EP````!UJ6:#OI0`````=`:`
+M?Q0`=!F#[`B-1"0@4/]T)!SH_/___X/$$.G]`0``@^P(5_]T)!SH_/___X/$
+M!/]T)!SH_/___XG'@\00A<!U'8/L"(U$)"!0_W0D'.C\____BT0D)(/$$.G2
+M`0``C4`\B40D#(M,)`B#P02+5"0(#[9"`XI$$`2(0@3&00$*QD$"`+H$````
+MBT0D",8``$!*=?F$VW4&@&$#_.M,#[;;C03;C02#C01#C1S%`````(!)`P.)
+MV,'H&(E$)`2(002)VL'J$(A1!8G8P>@(B00DB$$&B%D'BD0D!(A!"(A1"8H4
+M)(A1"HA9"XM$)!B)1U#&1R05B@'`^`?WT(/`$8A')<9')@#&1R<`QD<H$,9'
+M*0"`(3_&1Q2`9HM%&&:)1Q")=QB+1"08BT`(B4<TQT<@$````(M&8`6T````
+MB4<XQD<<(,=';.P/`P"#[`AJ`/]T)!CH_/____]W((M$)"S_<!#_<`S_="0H
+MZ/S___^#Q!A7_W0D'.C\____QH:7`````6;'AI0```#Z`(/$$(7V=%V#?F``
+M=%=F@;Z4````E@!U%H/L!/]V8&HABT9@_W`HZ/S___^#Q!!F_XZ4````@^P,
+M:-`'``#H_/___X/$!/]T)!SH_/___X/$$(7V=`^#?F``=`F`OI<`````=:EF
+M@[Z4`````'0.@'\4`'4(QT0D%`````"#[`B-1"0@4/]T)!SH_/___X/$$)"#
+M[`A7_W0D'.C\____BT0D)(/$$(/$'%M>7UW#5U93BW0D$+C_____BWYLBUY@
+M]D98"`^$B````(/L!%;_MR0%``!J!>C\____@$LD`H/$#%-J(?]S*.C\____
+M@\00@'M+`'0>@^P,:-`'``#H_/___XD\).C\____@\00@'M+`'7B@WPD%`!T
+M#V:#3EH09H-+-A#K#8UV`&:#9EKO9H-C-N^#[`16_[<D!0``:@;H_/___X!C
+M)/VX`````(/$$)!;7E_#5E.#[`2+1"00#[9T)!2+4&R+6&#V``%T2X-[+`!T
+M&8/L!(GR#[;"4`^V0TE0_W,LZ/S___^#Q!"#N^``````=#V#[`2)\0^VP5`/
+MMH/5````4/^SX````.C\____@\00ZQR)]H/L!(GQ#[;!4(M#'`^V0`%04NC\
+M____@\00@\0$6U[#55=64X/L#(M<)""*1"0DB$0D"XI$)"B(1"0*QT0D!/__
+M__^+>V"+:VR%_W0)@+N7`````'0*BT0D!.DE`0``D(/L#%7H_/___XG&@\00
+MBT0D!(7V#X0*`0``QD8DX<9&)0&`?"0+`'0.@'PD"@$9P/?0@\`'ZPR`?"0*
+M`1G`]]"#P`V(1B;&1A2`9HM'&&:)1A")7AC'1B``````QT8T`````,=&;.P/
+M`P"#[`A65>C\____QH.7`````6;'@Y0```#T`8/$$(7;=%^#>V``=%F-=@!F
+M@;N4````E@!U&8/L!/]S8&HABT-@_W`HZ/S___^#Q!"-=@!F_XN4````@^P,
+M:-`'``#H_/___XDL).C\____@\00A=MT#X-[8`!T"8"[EP````!UJF:#NY0`
+M````=!R`?A0`=1:+0V!FBT`V9HE#6L=$)`0`````C78`@^P(5E7H_/___XM$
+M)!2#Q!"-=@"#Q`Q;7E]=PX/L#(M,)!"+5"04#[8"@_@)#X>Q````_R2%7!``
+M`(GVBT($QH!7#````(/L#%#H_/___[@`````@\00Z9````"#[`0/MD($4&H`
+M4>A$_O__@\00ZWN-=@"#[`0/MD($4&H!4>@L_O__@\00ZV.-=@"#[`@/MD($
+M4%'H_/___X/$$.M-D(/L!`^V0@50#[9"!%!1Z-'\__^#Q!#K-(/L"`^V0@10
+M4>C\____@\00ZR&0@^P(#[9"!%!1Z/S___^X`````(/$$.L(N/____^-=@"#
+MQ`S#BTPD!(M!8(7`=$K'0!P`````@$@D!,=!8`````#'06@`````QT%D````
+M`(-Y"#]_$XM1;(M!",>$@I@"````````PY"+46R+00C'A(*8`0```````,.)
+M]HM,)`2+06"%P'1*QT`<`````(!@)/O'06``````QT%H`````,=!9`````"#
+M>0@_?Q.+46R+00C'A(*8`@```````,.0BU%LBT$(QX2"F`$```````##B?93
+M@^P4BUPD'%/H_/___XN#)`4```5@#```B00DZ/S___^#Q!A;PXGV4X/L%(M<
+M)!Q3Z/S___^+@R0%```%8`P``(D$).C\____@\086\.)]E575E.#[!R+?"0P
+MBX<D!0``!6`,``")!"2#/P!T&HL'+0```@")!X/L"%#_=Q#H_/___X/$$(GV
+M@W\(`'02@^P(_W<(_W<0Z/S___^#Q!"0@W\,`'02@^P(_W<,_W<0Z/S___^#
+MQ!"0@^P(C40D(E"-1"0D4(U$)"90C40D*%"-1"0J4(U$)"U0C40D,%"-1"0R
+M4(U$)#50C40D-E"-1"0Y4(U$)#Q0C40D/U`/MT<D4.C\____@\1`@[]8!0``
+M`'0V@^P(_[=8!0``C8=`!0``4.C\____@\0(BT0D"/^P6`4``(M$)`P%0`4`
+M`%#H_/___X/$$(GV@[]T!0```'0W@^P(_[=T!0``C8=<!0``4.C\____@\0(
+MBT0D"/^P=`4``(M$)`P%7`4``%#H_/___X/$$(UV`(._D`4```!T-X/L"/^W
+MD`4``(V'>`4``%#H_/___X/$"(M$)`C_L)`%``"+1"0,!7@%``!0Z/S___^#
+MQ!"-=@"#OZP&````=#>#[`C_MZP&``"-AY0&``!0Z/S___^#Q`B+1"0(_["L
+M!@``BT0D#`64!@``4.C\____@\00C78`O@````")\#I$)`=S18VOS`8``)"#
+M[`B)\`^VV/^TG^0&``!5Z/S___^#Q`B+1"0(_[28Y`8``(M$)`P%S`8``%#H
+M_/___X/$$$:)\#I$)`=RPH._3`D```!T-8/L"/^W3`D``(V'-`D``%#H_/__
+M_X/$"(M$)`C_L$P)``"+1"0,!30)``!0Z/S___^#Q!"0@[]T"0```'0W@^P(
+M_[=T"0``C8=<"0``4.C\____@\0(BT0D"/^P=`D``(M$)`P%7`D``%#H_/__
+M_X/$$(UV`(._Q`D```!T-X/L"/^WQ`D``(V'K`D``%#H_/___X/$"(M$)`C_
+ML,0)``"+1"0,!:P)``!0Z/S___^#Q!"-=@"#OZP%````=#>#[`C_MZP%``"-
+MAY0%``!0Z/S___^#Q`B+1"0(_["L!0``BT0D#`64!0``4.C\____@\00C78`
+M@[]8!@```'0W@^P(_[=8!@``C8=`!@``4.C\____@\0(BT0D"/^P6`8``(M$
+M)`P%0`8``%#H_/___X/$$(UV`(._"`8```!T-X/L"/^W"`8``(V'\`4``%#H
+M_/___X/$"(M$)`C_L`@&``"+1"0,!?`%``!0Z/S___^#Q!"-=@"#OR0&````
+M=#>#[`C_MR0&``"-APP&``!0Z/S___^#Q`B+1"0(_[`D!@``BT0D#`4,!@``
+M4.C\____@\00C78`@[^0!@```'0W@^P(_[>0!@``C8=X!@``4.C\____@\0(
+MBT0D"/^PD`8``(M$)`P%>`8``%#H_/___X/$$(UV`(._R`8```!T-X/L"/^W
+MR`8``(V'L`8``%#H_/___X/$"(M$)`C_L,@&``"+1"0,!;`&``!0Z/S___^#
+MQ!"-=@"#O_P(````=#>#[`C_M_P(``"-A^0(``!0Z/S___^#Q`B+1"0(_[#\
+M"```BT0D#`7D"```4.C\____@\00C78`@[\D"0```'0W@^P(_[<D"0``C8<,
+M"0``4.C\____@\0(BT0D"/^P)`D``(M$)`P%#`D``%#H_/___X/$$(UV`(._
+MG`D```!T-X/L"/^WG`D``(V'A`D``%#H_/___X/$"(M$)`C_L)P)``"+1"0,
+M!80)``!0Z/S___^#Q!"-=@"#OW0&````=#>#[`C_MW0&``"-AUP&``!0Z/S_
+M__^#Q`B+1"0(_[!T!@``BT0D#`5<!@``4.C\____@\00C78`@[_@"0```'1'
+M_[?H"0``_[?D"0``_[?@"0``C8?("0``4.C\____BT0D$/^PZ`D``/^PY`D`
+M`/^PX`D``(M$)!P%R`D``%#H_/___X/$()"#OP0*````=$?_MPP*``#_MP@*
+M``#_MP0*``"-A^P)``!0Z/S___^+1"00_[`,"@``_[`("@``_[`$"@``BT0D
+M'`7L"0``4.C\____@\0@D(._*`H```!T1_^W,`H``/^W+`H``/^W*`H``(V'
+M$`H``%#H_/___XM$)!#_L#`*``#_L"P*``#_L"@*``"+1"0<!1`*``!0Z/S_
+M__^#Q""0@[]P"@```'1'_[=X"@``_[=T"@``_[=P"@``C8=8"@``4.C\____
+MBT0D$/^P>`H``/^P=`H``/^P<`H``(M$)!P%6`H``%#H_/___X/$()"#OTP*
+M````=$?_MU0*``#_MU`*``#_MTP*``"-AS0*``!0Z/S___^+1"00_[!4"@``
+M_[!0"@``_[!,"@``BT0D'`4T"@``4.C\____@\0@D(._E`H```!T1_^WG`H`
+M`/^WF`H``/^WE`H``(V'?`H``%#H_/___XM$)!#_L)P*``#_L)@*``#_L)0*
+M``"+1"0<!7P*``!0Z/S___^#Q""0@[^X"@```'1'_[?`"@``_[>\"@``_[>X
+M"@``C8>@"@``4.C\____BT0D$/^PP`H``/^PO`H``/^PN`H``(M$)!P%H`H`
+M`%#H_/___X/$()"#Q!Q;7E]=PU93@^P0BUPD'%/H_/___XVS8`P``(DT).C\
+M____B1PDZ/S____'!"30!P``Z/S___^)'"3H_/___XD<).C\____@\0(:@%3
+MZ/S___^#Q`AJ`5;H_/___X/$%%M>PXUV`(/L&&B@"P``Z/S___^X`````(/$
+M',.0D(M$)`3&``C&0`$2@'PD"`$9TO?2@^($B%`"QD`#`,9`!`#&0`4`QD`&
+M`,9`!P#&0`@`QD`)`,9`"@#&0`L`@'PD#`$9TH/B((A0#,9`#0#&0`X`QD`/
+M`,9`$`#&0!$`QD`2`,9`$P"X%````,.-=@!55U93@^P8BWPD,(I$)#2(1"07
+M#[9T)#C_="0LZ/S___^)Q8/$$+@`````A>T/A)8```"+70B)\@^VPE`/MD0D
+M#U"-0P10Z/S___^)QL8#`,9#`0#&0P(`QD,#`(D\)/]T)"SH_/___X/$$+D`
+M````NA````"-1R2("$!*=?J-7@3&1R05QD<E$8A?*,9'*0"-=SP/MMN)7R#'
+M1V0`````BT4(B4<TB6]0@^P(:@!6Z/S___]3_W40_W4,5NC\____N`$```"#
+MQ""#Q`Q;7E]=PY"0D%=64XM\)!"+1"04B<9FB4<$QD<*`&;'1P@``+L`````
+M9CG#<QB-=@`/M\N+%XGP9BG82&:)!$I#9CGS<NM;7E_#C78`5E.+7"0,BT0D
+M$(G&9HE#!,9#"@%FQT,(``"Y`````&8YP7,/#[?1BP-FB0Q0068Y\7+Q6U[#
+MB?93BUPD"(!["@%U*6:+0P@/M\B+$T!FB4,(9HL42F8[0P9R!F;'0P@``&;_
+M2P0/M\+K$(GV9O]+!`^W4P2+`P^W!%!;PU93@^P(BTPD%(MT)!B`>0H!=2D/
+MMU$(#[=!!(E$)`2-!`(/MU$&B10DF?<\)(L99HDT4V;_003K$8UV``^W402+
+M`6:)-%!F_T$$@\0(6U[#BT0D!&:#>`0`#Y3`#[;`PXM$)`2Z`````#D`=`Z+
+M`(M(!(L0B4H$B1&)PHG0PXGVBU0D!+@`````.1)T#8M"!(M(!(L0B4H$B1'#
+MD%93@^P$BUPD$(MS1(I#/(A$)`.Y`````+IP````B=B0B`A`2G7ZB7-$BD0D
+M`XA#/(/$!%M>PXGV@^P0BU0D%(M,)!B*00&(0@&*00*(0@*+002)0@0/MD(!
+MC01`P>`"4/]Q"/]R".C\____@\0<PY!3@^P$BTPD#(M4)!"*1"04B$0D`[,`
+M.,-S&XGVB@$Z`G0*N`````#K$8UV`$%"0SI<)`-RY[@!````@\0$6\.0BT0D
+M!,9``0"+5"0(B%`"QT`$`````,.05E.+1"0,BW0D&`^V4`&-%%*+2`B-')'^
+M0`$!<`2Y`````+H,````B=B-=@"("$!*=?J+1"00BU0D%(D#B5,$B?"(0PB)
+M\@^VQHA#"<'J$(/B/XI#"H/@P`G0B$,*6U[#BU0D!(I"`3H"#Y+`#[;`P[G_
+M````N@`"``"+1"0$B?:("$!*=?K#D%.#[`2+3"0,BUPD$(I$)!2(1"0#N```
+M``"-=@`/M]"`?)$"_W4.9HD<D8I<)`.(7)$"ZP=`9H/X?W;A#[?`@\0$6\.0
+M5U93BW0D$(M4)!B+3"0<#[=$)!2`?(8"_W4-9HD4AHA,A@+K%XUV``^VP5`/
+MM\)05NC\____#[?`@\0,6UY?PU93BUPD#(MT)!"*3"04N`````"0#[?0.$R3
+M`G439CDTDW4-QD23`O]FQP23___K!T!F@_A_=MT/M\!;7L.-=@!64XM<)`R+
+M="00BDPD%+@`````D`^WT#A,DP)U!V8Y-)-T")!`9H/X?W;I9CV``'4%N(`!
+M```/M\!;7L-55U93BVPD%(!])`AT.H!])"AT-(!])*AT+H!])(AT*(!])`IT
+M(H!])"IT'(!])*IT%H!])(IT$(!])"]T"H!])(\/A18"```/MD4D@_@O#X2;
+M````@_@O?R:#^`IT98/X"G\,@_@(=%OIT@$``(GV@_@H='N#^"IT=NG!`0``
+MD#V/````#X3I````/8\```!_'CV(````#X37````/8H````/A,P```#IDP$`
+M`(UV`#VH````='$]J@```'1JZ7T!``"0#[9%)8/@'\'@$`^V52;!X@@)T`^V
+M52<)T(G&OP`````/ME4HZ6,!``"-=@`/ME4FP>(8#[9%)\'@$`G"#[9%*,'@
+M"`G"#[9%*0G"B=:_``````^V52O!X@@/MD4L"<+I*`$```^V52;!XA@/MD4G
+MP>`0"<(/MD4HP>`("<(/MD4I"<*)UK\`````#[95*L'B&`^V12O!X!`)P@^V
+M12S!X`@)P@^V12T)PNG>````B?8/MG4FB?>^`````,'G&`^V32>)R[D`````
+MP>,0B?`)R(GZ"=H/MDTHB<NY`````,'C"(G&"<Z)UPG?#[9%*8G"N`````")
+M\0G!B?L)TP^V12JZ``````^DPAC!X!B)S@G&B=\)UP^V12NZ``````^DPA#!
+MX!")\0G!B?L)TP^V12RZ``````^DP@C!X`B)S@G&B=\)UP^V32V[`````(GP
+M"<B)^@G:B<:)UP^V52[!XA@/MD4OP>`0"<(/MD4PP>`("<(/MD4Q"<+K$9"^
+M`````+\`````N@````"0B758B7U<B55@9H--$@%;7E]=PY!3@^P0BUPD&`^V
+M0S-0#[9#,E`/MD,Q4`^V0S!0#[9#+U`/MD,N4`^V0RU0#[9#+%`/MD,K4`^V
+M0RI0#[9#*5`/MD,H4`^V0R=0#[9#)E`/MD,E4`^V0R104VA8!0``Z/S___^#
+MQ$@/MT,04&AJ`0``Z/S___^#Q!A;PXGV5U93BWPD$(M<)!2Z_____[D`````
+M9CG9<QV^0`P``)`/M\&*!#@QT`^VP,'J"#,4AD%F.=ERZ8G06UY?PY"0D%.+
+M3"0(BP&+D`0!``")%0````")TX'C?O_^_XL!B9@$`0``B=.!XW[_\O^+002)
+M&(M!!(E8#(M!!(E8$(M!!(E8%(M!!(E8&(M!!(E8!(L!BX!4`0``HP````")
+MPX'C_@#__XL!B9A4`0``6\.-=@!64X/L!(MT)!2*5"08BT0D$(L8@_X#=A"+
+MA/.``0``HP````#K#HGVBX3S@`$``*,`````@^#^@_X#=@R)A/.``0``ZPJ-
+M=@")A/.``0``A-)T88/^`W8.BX2ST`$``*,`````ZPR+A+/0`0``HP````"#
+MR`*#_@-V"8F$L]`!``#K"8F$L]`!``")]H/^`W8/BX2ST`$``*,`````ZPV0
+MBX2ST`$``*,`````J`)UW.MFB?:#_@-V#<>$\S`"````````ZPO'A/-0`@``
+M`````(/L#&@0)P``Z/S___^#Q!"#_@-V#HN$\S0"``"C`````.L,BX3S5`(`
+M`*,`````@\@!@_X#=@F)A/,T`@``ZP>)A/-4`@``@\0$6U[#B?975E.#[!"+
+M?"0@BD0D)(A$)`^*3"0HB$PD#HLWNP````"`?R8`#X22`0``D`^V1"0/B-G3
+M^*@!#X1S`0``@_L#=@Z+A-Z$`0``HP````#K#(N$WH0!``"C`````(/@_H/[
+M`W8,B83>A`$``.L*C78`B83>A`$``(/L#&@0)P``Z/S___^#Q!"`?"0.`'1B
+M@_L#=@Z+A)[0`0``HP````#K#(N$GM`!``"C`````(/(`H/[`W8)B82>T`$`
+M`.L*B82>T`$``(UV`(/[`W8/BX2>T`$``*,`````ZPV0BX2>T`$``*,`````
+MJ`)UW.MFB?:#^P-V#<>$WC`"````````ZPO'A-Y0`@```````(/L#&@0)P``
+MZ/S___^#Q!"#^P-V#HN$WC0"``"C`````.L,BX3>5`(``*,`````@\@!@_L#
+M=@F)A-XT`@``ZP>)A-Y4`@``@_L#=@_'A-Z``0```0```.L-B?;'A-Z``0``
+M`0```(/[`W80BX3>A`$``*,`````ZPZ)]HN$WH0!``"C`````(/(`8/[`W8,
+MB83>A`$``.L+C78`B83>A`$``)!##[9')CG8#X=O_O__@\006UY?PU.+7"0(
+MBDPD#(L#BX`$`0``HP````")PF:!>R2`9'009H%[)("1=`AF@7LD@)1U%`^V
+MR8/!"+@!````T^`)PNL2C78`#[;)@\$,N`$```#3X`G"BP.)D`0!``!;PXUV
+M`%.+7"0(BDPD#(L#BX`$`0``HP````")PF:!>R2`9'009H%[)("1=`AF@7LD
+M@)1U%`^VR8/!"+C^____T\`APNL2C78`#[;)@\$,N/[____3P"'"BP.)D`0!
+M``!;PXUV`%93@^P$BW0D$`^V7"044U;H_/___X/L!&@0)P``Z/S___]35NC\
+M____@\0<6U[#D%.+7"0(BDPD#(#Y_W1Z@/D?=SF+DQ@!``")%0````"X`0``
+M`-/@B<'WT"'0B8,8`0``BX-8`0``HP`````AR'1'B8-8`0``ZS^-=@"+DQP!
+M``")%0`````/MLF#Z2"X`0```-/@B<'WT"'0B8,<`0``BX-@`0``HP`````A
+MR'0(B8-@`0``B?9;PXGV5U93BW0D&(I<)!2+1"00BSB`^P-V$@^VP\>$QP`"
+M```,`0``ZQ")]@^VP\>$QP`"```,`0``@^P,:!`G``#H_/___X/$$(#[`W8M
+M#[;+#[96`\'B&`^V1@+!X!`)P@^V1@'!X`@)P@^V!@G"B93/!`(``.LKC78`
+M#[;+#[96`\'B&`^V1@+!X!`)P@^V1@'!X`@)P@^V!@G"B93/!`(``(#[`W83
+M#[;#QX3'``(``!`!``#K$8UV``^VP\>$QP`"```0`0``@^P,:!`G``#H_/__
+M_X/$$(#[`W8M#[;+#[96!\'B&`^V1@;!X!`)P@^V1@7!X`@)P@^V1@0)PHF4
+MSP0"``#K*XGV#[;+#[96!\'B&`^V1@;!X!`)P@^V1@7!X`@)P@^V1@0)PHF4
+MSP0"``!;7E_#D)"04X/L,(M<)#B-1"0N4(U$)#!0C40D,E"-1"0T4(U$)#90
+MC40D.5"-1"0\4(U$)#Y0C40D05"-1"1"4(U$)$50C40D2%"-1"1+4`^W0R10
+MZ/S___^#Q#P/MD0D%U`/MD0D'%"-1"084.C\____:@$/ME0D)XT$TL'@`BG0
+MP>`#4/]S$(V#0`4``%#H_/___X/$(&H!#[9$)!F-!$"-!(#!X`-0_W,0C8-<
+M!0``4.C\____@\00:@$/MD0D&(T$0(T$P(G"P>(%*<+!X@)2_W,0C8-X!0``
+M4.C\____@\00:@$/MT0D(L'@`E#_<Q"-@Y0%``!0Z/S___^#Q!!J`0^W5"0:
+MC035`````"G0P>`$4/]S$(V#0`8``%#H_/___X/$$&H!#[9$)!T/MU0D&@^O
+MPHT$0,'@`E#_<Q"-@_`%``!0Z/S___^#Q!!J`6@``@``_W,0C8,,!@``4.C\
+M____@\00#[9$)!-0:``(``#_<Q"-@\P&``!0Z/S___^#Q!!J`0^V1"0@C02`
+MP>`"4/]S$(V#>`8``%#H_/___X/$$&H!#[9$)"&-%,"-%%#!X@-2_W,0C8.4
+M!@``4.C\____@\00:@$/MT0D'HT$0,'@`U#_<Q"-@[`&``!0Z/S___^#Q!!J
+M`0^W1"0BT>!0_W,0C8/D"```4.C\____@\00:@$/MD0D%]'@4/]S$(V##`D`
+M`%#H_/___X/$$&H!#[9$)!G1X%#_<Q"-@S0)``!0Z/S___^#Q!!J`0^V1"08
+MT>!0_W,0C8-<"0``4.C\____@\00:@$/MD,FT>!0_W,0C8.$"0``4.C\____
+M@\00:@$/MT0D),'@!5#_<Q"-@UP&``!0Z/S___^#Q!!J`?]T)!#_<Q"-@ZP)
+M``!0Z/S____'!"0!````:D`/MT0D,L'@!E#_<Q"-@\@)``!0Z/S___^#Q!1J
+M`6@``0``:``9``#_<Q"-@^P)``!0Z/S___^#Q!1J`6B`````#[=4)#*-!-*-
+M!(*-!$+!X`10_W,0C8,0"@``4.C\____@\04:@%J!`^W1"0XP>`"4/]S$(V#
+M-`H``%#H_/___X/$%&H!:@0/MT0D.L'@`E#_<Q"-@U@*``!0Z/S___^#Q!1J
+M`6H(#[9$)##!X`M0_W,0C8-\"@``4.C\____@\04:@%J"`^W5"0NC022C02`
+MP>`"*=#!X`)0_W,0@<.@"@``4^C\____N`````"#Q$A;PXGV55=64X/L'+T`
+M````BT0D,,9`.0#&0#@`QD`W`,>`7`P```````#&@%D,````N0````"Z$`$`
+M`(M<)#"-@S@+``"-=@"("$!*=?J+1"0P!<P```"+5"0PB8+,````B8+0````
+MB=`%U````(F"U````(F"V````(U`"(F"W````(F"X````(U`"(F"Y````(F"
+MZ````(U`"(F"[````(F"\````(U`$(F"_````(F"``$``(U`"(F"!`$``(F"
+M"`$``(U`\(F"]````(F"^````(/L"(U$)")0C40D)%"-1"0F4(U$)"A0C40D
+M*E"-1"0M4(U$)#!0C40D,E"-1"0U4(U$)#90C40D.5"-1"0\4(U$)#]0#[="
+M)%#H_/___XI$)$>+3"1PB$$NBD0D2(A!+XI$)$F(@<D```!FBT0D4F:)04"+
+M1"189HF!-`L``&:+1"1:2&:)@38+``"#Q$`/MT$D/8"1``!T"SV`E```#X5$
+M"0``BUPD,,9#-03&0RL$QD,V0,9#-`#&@\8````)QD,L`(/L#(G8!4`%``!0
+MZ/S___^)@U@%``"#Q!"[``````^V3"0'C13)P>("*<J-#-4`````ZP2(&$E`
+MA<EU^(/L#(M$)#P%7`4``%#H_/___XM4)$")@G0%``"#Q!"Y``````^V5"0)
+MC112C122P>(#=`:("$!*=?J#[`R+1"0\!7@%``!0Z/S___^+3"1`B8&0!0``
+M@\00NP`````/ME0D"(T44HT4THG1P>$%*=&)RL'B`G0&B!A`2G7Z@^P,BT0D
+M/`64!0``4.C\____BUPD0(F#K`4``(/$$+D`````#[=4)!+!X@)T!H@(0$IU
+M^H/L#(M$)#P%#`8``%#H_/___XM4)$")@B0&``")T`7P!0``B00DZ/S___^+
+M3"1`B8$(!@``B<.)R`5`!@``B00DZ/S___^+5"1`B8)8!@``B<*^`````(/$
+M$&8[="0*<S>+3"0P@<'<````B5I$BD0D#8A"/(M!!(E1!(D*B4($B1`/MD0D
+M#8T$0(T<@X/"<$9F.W0D"G+3@^P,BT0D/`5<!@``4.C\____BTPD0(F!=`8`
+M`(G"O@````"#Q!!F.W0D%',FBTPD,('!Y````,9""`"+002)402)"HE"!(D0
+M@\(@1F8[="04<N2#[`R+1"0\!7@&``!0Z/S___^+7"1`B8.0!@``B<*^````
+M`(/$$(!\)!``="2)V8'![````(M!!(E1!(D*B4($B1"#PA1&9@^V1"009CGP
+M=^2#[`R+1"0\!90&``!0Z/S___^+5"1`B8*L!@``B<*^`````(/$$(!\)!$`
+M="F+3"0P@<'\````BT$$B5$$B0J)0@2)$('"F````$9F#[9$)!%F.?!WX8/L
+M#(M$)#P%L`8``%#H_/___XM,)$")@<@&``")PKX`````@\009CMT)`YS(HM,
+M)#"!P?0```"+002)402)"HE"!(D0@\(81F8[="0.<NB^`````(!\)`<`=$:+
+M?"0P@<<$`0``#[?>@^P,BT0D/`7,!@``4.C\____BU0D0(F$FN0&``"#Q!"+
+M5P2)1P2).(E0!(D"1F8/MD0D!V8Y\'?$@^P,BT0D/`7D"```4.C\____BTPD
+M0(F!_`@``(F!``D``&:+1"0B9HF!!@D``(/$"`^WP%")R`4`"0``4.C\____
+M@\0$BT0D/`4,"0``4.C\____BUPD0(F#)`D``(F#*`D``&8/MD0D%V:)@RX)
+M``"#Q`@/M\!0B=@%*`D``%#H_/___XG8!30)``")!"3H_/___XF#3`D``(F#
+M4`D``&8/MD0D&6:)@U8)``"#Q`@/M\!0B=@%4`D``%#H_/___XG8!5P)``")
+M!"3H_/___XF#=`D``(F#>`D``&8/MD0D&&:)@WX)``"#Q`@/M\!0B=@%>`D`
+M`%#H_/___XG8!80)``")!"3H_/___XF#G`D``(F#H`D``&8/MD,F9HF#I@D`
+M`(/$"`^V0R90B=@%H`D``%#H_/___XG8!:P)``")!"3H_/___XF#Q`D```^V
+M3"08C13)P>(#*<J-%)&-#)5T10``@\00NP````")RH7)=`:(&$!*=?J+5"0P
+MBX+$"0``B0B+7"0PBY/$"0``BD0D"(A"!(/L!`^V1"0,4%'_L\0)``#H_/__
+M_[X`````@\00@'LF`'1Q#[?&C11`P>(#*<*+1"0PC120C:HH`0``B?&(303&
+M104`B8(H`0``QD4*`,9%-`#&11P`QT58`````(V"2`$``(E%((E%)(V"5`$`
+M`(E%+(E%,('"8`$``(E5.(E5/,9%!@)&BUPD,&8/MD,F9CGP=X^+1"0PQD`T
+M`+X`````#[?&BU0D,,:$$!X%``#_1F:#_@-VZKX`````@'PD!P!T?P^WSHM<
+M)#"+DU@%``"-!,G!X`(IR,'@`\9$$",!BY-8!0``QD00(@"+DU@%``#&1!!(
+M_XN36`4``,9$$#[_BY-8!0``9L>$$)```````,>$BY@"````````B<$#BU@%
+M``"-41")41`#@U@%``"#P!")0`1&9@^V1"0'9CGP=X&+1"0P9L>`Q```````
+MO@````"-=@`/M\:+5"0PQH00F`0``/]&9H'^A0!VZ;X`````@'PD"``/A*<`
+M```/M\:+7"0PBXN0!0``C01`C03`B<+!X@4IPL'B`L9$"C``BX.0!0``QD0"
+M,0"+@Y`%``#'1`(,`````(G1`XN0!0``C4$0B4$0B=`#@Y`%``"#P!")0`2)
+MT0.+D`4``(U!&(E!&(G0`X.0!0``@\`8B4`$BX.0!0``B6P""(G1`XN0!0``
+MC4$HB4$H`Y.0!0``@\(HB5($1F8/MD0D"&8Y\`^'6?___XM$)##&@,<```"`
+MO@````"`?"0)`'1T#[?6BTPD,(N!=`4``(T44HT4DL'B`V;'1`(R!`"+@70%
+M``#&1`(F`(N!=`4``,9$`BC_BX%T!0``QD0"-/^)T8M<)#`#BW0%``"-012)
+M012)T`.#=`4``(/`%(E`!(N#=`4``(EL`E1&9@^V1"0)9CGP=XR+1"0PQH#(
+M````@H/L"(M$)#@%Y`D``%"+1"0\!<@)``!0Z/S___^+5"1`B8+@"0``@\0(
+MB=`%"`H``%"-0.10Z/S___^+3"1`B8$$"@``@\0(B<@%+`H``%"-0.10Z/S_
+M__^+7"1`B8,H"@``@\0(B=@%4`H``%"-0.10Z/S___^)@TP*``"#Q`B)V`5T
+M"@``4(U`Y%#H_/___XF#<`H``(/$"(G8!9@*``!0C4#D4.C\____B8.4"@``
+MBU0D0(NZF`H``(NJG`H``(E$)!"^`````(/$$(!\)!``=$Z)TX'#[````(/L
+M#%/H_/___XG"BTPD$(E("(EX#(EH$(/$$(M#!(E3!(D:B4($B1"!P0`(``")
+M#"2!QP`(``"#U0!&9@^V1"009CGP=[J#[`B+1"0X!;P*``!0BT0D/`6@"@``
+M4.C\____BUPD0(F#N`H``(M4)$"+NKP*``"+JL`*``")1"00O@````"#Q!!F
+M.W0D#G-*B=.!P_0```"#[`Q3Z/S___^)PHM,)!")2`B)>`R):!"#Q!"+0P2)
+M4P2)&HE"!(D0@<&,`0``B0PD@<>,`0``@]4`1F8[="0.<KZ#Q!Q;7E]=PU57
+M5E.#[`R+?"0@QD0D"P`/MD0D"XJ,.!X%``"`^?\/A,@````/MM&-!%+!X`,I
+MT(T$AXV0*`$``(E4)`2]`````("X,@$````/A)X```")UH/&.`^VT8T$4L'@
+M`RG0P>`"B00DC78`@^P,5NC\____B<.#Q!"+1@2)7@2),XE#!(D8@WL<`'0;
+M@^P$_W,<_[<D!0``:@7H_/___X!+)`*#Q!"0@^P$4VH"_W0D$.C\____@\00
+M@'M+`'0>@^P,5^C\____QP0D`0```.C\____@\00@'M+`'7B18GHBQ0D.(0Z
+M,@$```^'>_____Y$)`N`?"0+`P^&%/___X/L#%?H_/___X/$'%M>7UW#C78`
+M4X/L"(M,)!2+7"00.5D8=4^`>20(=%R`>20H=%:`>22H=%"`>22(=$J`>20*
+M=$2`>20J=#Z`>22J=#B`>22*=#*-D\P```"+@\P```")2`2)`8E1!(F+S```
+M`.L6C78`C8/,````BU`$B4@$B0&)402)"H/L#%/H_/___X/$&%O#C78`@^P4
+M_W0D'/]T)!SH_/___X/$',-55U93@^P,BUPD)(MT)"B+;"0LOP````!F@7LD
+MX0%U#(I#)H/H$3P!=C.)]HM$)""+$(N*6`4``(VYZ!8!`&:!>Q"%`'<7#[=#
+M$`^VE!"8!```C032P>`"*="-/,'&1@0%@&8%_H`FW[(`9H%[).$!=0J*0R9(
+M/`%W`K(!B-#!X`>*%H/B?PG"B!:*0V:#X`'!X`:#XK\)PH@69H%[).$!=1**
+M0R:#Z!$\`7<(9HEN".L>B?;V0V8!=!*#[`Q7Z/S___]FB48(@\00ZP1FB6X(
+M9HM&"(A#%6:!>R3A`74ABD,F2#P!=P6*4R?K'V:!>R3A`74,BD,F@^@1L@\\
+M`78+L@"#?S``=`.*5TF#X@^*!H/@\`G0B`:#Q`Q;7E]=PY"#[`S_="0<_W0D
+M'/]T)!R+1"0<_S#H_/___X/$',.)]E93BUPD#(LS9HN#,`L``$!FB8,P"P``
+M9CN#-`L``'()9L>#,`L`````#[>+,`L``(N33`H``(M$)!"+`(D$B@^W@S`+
+M``")ABP!``!;7L.055=64XM<)""+?"08#[9L)!R+="04N@````"Y!````(G8
+MC78`B!!`277ZB?J!XO\/``"+`R4`\/__"=")`P^V5@G!X@PE_P_P_PG0B0,/
+MMD8&T>B#X`&#^`$9P(/@`D#!X!V+$X'B____'PG"B1.*0P.#R!"#X/>(0P/V
+M1@8!=!.)ZH/B?\'B%(L#)?__#_@)T(D#6UY?7<-55U93@^P,BVPD((MT)"3'
+M1"0(`````(!^)`AT$X!^)"AT#8!^)*AT!X!^)(AU"9"#3F0*ZQZ)]H!^)`IT
+M$H!^)"IT#(!^)*IT!H!^)(IU!(-.9`)F@7XDX0%U&(I&)H/H$3P!=PZ#3F0(
+MN`````#I.`4``(M&)"7___\`/>$!$``/A0D!``!F@7X0A0`/AXD````/MT80
+M@+PHF`0``/]T>V:#?A!_=R`/MI0HF`0``(N-6`4``(T$TL'@`BG0BT3!*`^V
+M>`3K66:!?A"!`'<I#[=&$`^VA"B8!```BXV0!0``C01`C03`B<+!X@4IPHM$
+MD0@/MG@$ZR@/MT80#[:$*)@$``"+E70%``"-!$"-!("+1,)4#[9X!.L&D+__
+M____B?H/ML(/MIPH'@4``(T$6\'@`RG8C9R%*`$``(N-D`4``(V![`8-`&:!
+M?A"%`'<<#[=&$`^VA"B8!```C01`C03`B<+!X@4IPHT$D?9`-1`/A6T!``#&
+M1A0$BT0D*,<``````+@!````Z1T$``"09H%^$(4`#X>,````#[=&$("\*)@$
+M``#_='YF@WX0?W<C#[:4*)@$``"+C5@%``"-!-+!X`(IT(M$P2@/MG@$ZUR-
+M=@!F@7X0@0!W*0^W1A`/MH0HF`0``(N-D`4``(T$0(T$P(G"P>(%*<*+1)$(
+M#[9X!.LH#[=&$`^VA"B8!```BY5T!0``C01`C02`BT3"5`^V>`3K!I"_____
+M_[G_````9H%^$(4`=PT/MT809@^VC"B8!```B?H/ML(/MIPH'@4``(T$6\'@
+M`RG8C9R%*`$```^WT8T$TL'@`BG0BY58!0``C03"B40D"&:!?B3A`74)BD8F
+M2#P!=BV09H'Y_P!T"HM$)`CV0",$=1O&1A0&BU0D*,<"`````+@!````Z?<"
+M``"-=@"+5"0(#[9"(*@!=""H!'0<BD4L.D4V<A2+1"0HQP`!````N`$```#I
+MR`(``(-\)`@`#X3Q````BU0D"`^V0B"H`0^$X0```*@$#X39````@^P(5E+H
+M_/___X/$$(3`=1C&1A0$BT0D*,<``````+@!````Z7P"``"+5"0(@'I+'W84
+MBT0D*,<``0```+@!````Z5X"``#V1F8!=`;V0P@!=!CV1F8!=0;V0P@!=0R`
+M?A2!=`;V0P@(="J#[`B)^@^VPE!5Z/S___^#Q!"$P'04BT0D*,<``0```+@!
+M````Z1`"``#V1F8!#X1^`0``]D,(`0^$=`$``(/L#/]T)!3H_/___X/$$&:#
+M^!\/AEL!``"+5"0HQP(!````N`$```#ISP$``(UV`/9#!@)T,HM&)"7___\`
+M/>$!$`!T(XM4)`B*0DLZ0DIR%XM$)"C'``$```"X`0```.F7`0``C78`BT8D
+M)?___P`]X0$0``^$^0```(M4)`@/MT(VB<+1ZH/B`;$!@'XDX0^%W@```(!^
+M)0$/A=0````/MD8F@^@&@_@)#X>L````_R2%A!````^VP5!J`595Z/S___^#
+MQ!"$P`^%I0```(M$)"C'``(```"X`0```.D9`0``#[;!4&H`5E7H_/___X/$
+M$(3`=7V+5"0HQP("````N`$```#I\0```&H!#[;"4%95Z/S___^#Q!"$P'55
+MBT0D*,<``@```+@!````Z<D```!J``^VPE!65>C\____@\00A,!U+8M4)"C'
+M`@(```"X`0```.FA````D,9&%`2+1"0HQP``````N`$```#IB````(/L#(V%
+M``D``%#H_/___X/$$(3`=!*+5"0HQP(!````N`$```#K89"`?B3A=5*`?B4!
+M=4R`?B8/=4:`?BD!=4!F#[9&*,'@"&8/ME8G`="#[`@/M\!05>C\____@\00
+M.49(=02%P'48QD84!(M$)"C'``````"X`0```.L+C78`N`````"-=@"#Q`Q;
+M7E]=PU93BUPD#(MT)!"Y`````+H-````B?")]H@(0$IU^HI#)8@&BD,FB$8!
+MBD,GB$8"BD,HB$8#BD,IB$8$BD,JB$8%BD,KB$8&]D-F!'0>BD,LB$8(BD,M
+MB$8)BD,NB$8*BD,OB$8+BD,PB$8,N`$```!;7L.055=64XML)!2+?"08N@``
+M``"^`````(GVN0<````/MAPWC78`T>*)V-/XJ`%T$O?"`````74:@?)W)]L`
+MZQ*)]O?"`````70(@?)W)]L`B?9)>=%&@_X'?K^)T,'H$(A%`(G0P>@(B$4!
+MB%4"6UY?7<.-=@!55U93@^Q@BVPD>(M$)'2+@"@*``")1"0@QT0D&`````#'
+M1"04`````,=$)!``````QT0D#`````!FQT4>_P^-1"1`4%7_="1\Z/S___^#
+MQ!"$P'0)BT0D/.G?#```BT4D)?___P`]X0$0``^%(P$``(/L#&B($P``Z/S_
+M__^#Q!!F@7T0A0`/AYL````/MT40BU0D<("\$)@$``#_#X2%````9H-]$']W
+M(P^VE!"8!```BUPD<(N+6`4``(T$TL'@`BG0BT3!*(I`!.M=9H%]$($`=RP/
+MMT40BW0D<`^VA#"8!```BXZ0!0``C01`C03`B<+!X@4IPHM$D0B*0`3K*0^W
+M11"+5"1P#[:$$)@$``"+DG0%``"-!$"-!("+1,)4BD`$ZP2)]K#_#[;`BUPD
+M<`^VA!@>!0``B40D&(T$0,'@`RM$)!B-A(,H`0``B40D&(N+D`4``&:!?1"%
+M`'<E#[=%$`^VA!B8!```C01`C03`B<+!X@4IPHT4D8E4)!#IA0$``('![`8-
+M`(E,)!#I=@$``+O_````9H%]$(4`=Q$/MT40BW0D<&8/MIPPF`0``&:!?23A
+M`74.BD4F@^@1/`$/AND```!F@7T0A0`/AYD````/MT40BU0D<("\$)@$``#_
+M#X2#````9H-]$']W(P^VE!"8!```BW0D<(N.6`4``(T$TL'@`BG0BT3!*(I`
+M!.M;9H%]$($`=RP/MT40BU0D<`^VA!"8!```BXJ0!0``C01`C03`B<+!X@4I
+MPHM$D0B*0`3K)P^W11"+3"1P#[:$")@$``"+D70%``"-!$"-!("+1,)4BD`$
+MZP*P_P^VP(MT)'`/MH0P'@4``(E$)!B-!$#!X`,K1"08C82&*`$``(E$)!@/
+MM].-!-+!X`(IT(N66`4``(T$PHE$)!3K(0^WPXT$0(T$@(M,)'"+D70%``"-
+M!,*)1"0,BW!4B70D&&:!?23A`741BE4FC4+O/`%V)HU"_SP!=A]F@?O_`'0*
+MBT0D%/9`(P1U#L9%%`:X`````.DS"@``@^P(C40D0%#_="1\Z/S___]FB40D
+M,&:)11Z#Q`3_="1\Z/S___^)1"04@\00N`(```"#?"0$``^$]@D``(M4)`2)
+M550/MT0D((T<P(T<F(T<6,'C!`-<)!R)V(M,)'`K@2@*``"#P""9B<:)UP.Q
+M+`H``!.Y,`H``(M$)#B)<""+3"0XB7DDBT0D!(MP#(MX$(M$)#B)<"B+3"0X
+MB7DLBT0D.(M4)"!FB5`(N0````"ZL`0``(G8C78`B`A`2G7Z9H%]).$!=6V*
+M12:#Z!$\`7=CC40D0%"+1"0\#[9`"%!5_W0D(.C\____@\00#[=4)""-!-*-
+M!(*-!$+!X`0#1"0<BTPD<"N!*`H```4@!```F8G&B=<#L2P*```3N3`*``"+
+M1"0XB7`0BTPD.(EY%.FL`0``BW0D&/9&!@%U*XM%)"7___\`/>$!$``/A`P!
+M``"+5"04#[9"(*@!#X3\````J`0/A/0```#V168@=!"-1"1`4%7H_/___X/$
+M".L;C40D0%"+1"0\#[9`"%!5_W0D(.C\____@\00#[=4)""-!-*-!(*-!$+!
+MX`0#1"0<BTPD<"N!*`H```4@!```F8G&B=<#L2P*```3N3`*``"+1"0XB7`0
+MBTPD.(EY%&:!?23A`74.BD4F@^@1/`$/ANT```"+="04#[9&(*@"#X3=````
+MJ`0/A-4```"H`0^$S0````^W5"0@C032C02"C01"P>`$`T0D'(M4)'`K@B@*
+M``"9B<:)UXM,)'`#L2P*```3N3`*``"+1"0XB7`8BTPD.(EY'.F&````C78`
+MBUPD&/9#!@)T>0^W1"0@C0S`C0R(C0Q(P>$$`TPD'(G(BW0D<"N&*`H``)F)
+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
+M_XU$)$10BUPD(`^V0S10#[=$)#A0_W0D-.C\____@\0@ZV>#[`C_="0<_W0D
+M?.C\____C40D1%"+="0H#[9&/E`/MT0D.%#_="0TZ/S___\/MD8@@\0@J`)T
+M+Z@$="NH`70GBT0D-"7___\?#0```&")1"0T#[96/H/B?\'B%"7__P_X"=")
+M1"0TC40D-%#_="1TZ/S___^#Q`BX`P```(/$7%M>7UW#C78`55=64X/L!(ML
+M)!B+5"0<BUT`B=!FP>@%#[?PB=&#X1^X`0```(G'T^>%?+-$=2V)X%!J``^W
+MPE!5Z/S___^!3"00````X(U$)!"`8`/W4%/H_/___PE\LT2#Q!B#Q`1;7E]=
+MPU575E.#[`R+?"0@BW0D)(M&3(MH'&:!?A"%``^'GP````^W1A"`O#B8!```
+M_P^$C0```&:#?A!_=R8/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*`^V0`0%
+M$`4``.MFD&:!?A"!`'<N#[=&$`^VA#B8!```BX^0!0``C01`C03`B<+!X@4I
+MPHM$D0@/MD`$!1`%``#K+P^W1A`/MH0XF`0``(N7=`4``(T$0(T$@(M$PE0/
+MMD`$!1`%``#K"(UV`+@/!@``#[9<!PZ-!%O!X`,IV(V<AR@!``"#?E``=!&#
+M[`C_=E!7Z/S___^#Q!")]H/L"%97Z/S___^#Q`A54_^5G````(/$'%M>7UW#
+MC78`55=64X/L&(ML)"R+10")1"04C5TL4^C\____B<>#[R"#Q`3_="04Z/S_
+M__^)QH/$$(U'((M3!(E#!(E?((E0!(D"N`$```"%]G1TC58\QD8DX<9&)0'&
+M1B80@$XG`8M,)"2+@9P```")1DB+1DR)2!R)R`60````B48XQD85S&8/MD<S
+M9HE&$(M%`(E&&,=&()````")3C3'1FP`?@,`@^P(:@!2Z/S___^#Q`A6_W0D
+M%.C\____N`````"#Q!"#Q`Q;7E]=PY!55U93@^P,BWPD)(MT)""+1BB)1"0(
+MBRAFBT\>B<AFP>@%#[?8@^$?N`$```#3X(5$G40/A6,#``"+50"-!)T``P``
+MB8)P`0``BT4`BX!T`0``HP````")PL9'%"&+1R0E____`#WA`0\`=2"#[`AJ
+M`%?H_/___X/$#&H`5U7H_/___X/$$.D1`P``D&:+3QZ#X1^X`0```-/@A<)T
+M%H/L"&H!5^C\____B2PDZ/S___^#Q!`/MH:P````@_@$#X?8`@``_R2%V!4`
+M`,:&L`````&#[`1J`5?_="04Z/S___^#Q!#ILP(``,:&L`````*#[`1J"%?_
+M="04Z/S___^#Q!#IE0(``,:&L`````.#[`16:B'_="04Z/S___^#Q!"#?BP`
+M=""#[`QJ`&H!#[9&25#_=BS_="0DZ/S___^#Q"#I5@(``(/L!&H`BU0D$`^V
+M0@E05>C\____@\00Z3H"``#&AK`````$@WXL`'0Q@^P$5FHA_W0D%.C\____
+MQP0D`````&H"#[9&25#_=BS_="0DZ/S___^#Q"#I_`$``(/L!&H`:B'_="04
+MZ/S___^#Q`QJ`8M4)!`/MD()4%7H_/___X/$$.G0`0``@^P$5FH&_W0D%.C\
+M____@\00@WX<`'05BT8<BT@$C5$!B5`$@_D%#X:C`0``QD8C`<9&(@"`?DL`
+M=!^0@^P,5>C\____QP0D`0```.C\____@\00@'Y+`'7B@WXL`'03BU8,BT8(
+MB5`$B0*+1BS^2##K%8-^,`!T#XM6,`^V1DG'1((\`````(M6!(L&B5`$B0*+
+M1"0(_D@*@[[@`````'0;@^P$:@$/MH;5````4/^VX````.C\____@\00@WXL
+M`'05@^P$:@$/MD9)4/]V+.C\____@\00@WX<`'1YBT8<QT!@`````/Z%5PP`
+M`(/L#%7H_/___X/$#&H!BT8<#[9``5!5Z/S___^#Q`R+1AP/MD`"4(M&'`^V
+M0`%0:'<!``#H_/___X/$#/]V'/^U)`4``&H!Z/S___^#Q`S_=AS_M20%``!J
+M!NC\____QT8<`````(/$$(/L"%95Z/S___^#Q!"+5"0(@'H%_W1BOP````"`
+M>@H`=D&)TX/#.(GV@^P,4^C\____B<:#Q!"+0P2)<P2)'HE&!(DP@'XB_W4.
+M1XGXBU0D"#A""G?3ZPN)^(M4)`@X0@IW%HM$)`C&0`7_@^P(4%7H_/___X/$
+M$)"#Q`Q;7E]=PU575E.#[`R+7"0DBW0D((M^*(LOQT0D"`````#V1P@0=`?&
+MAK`````&#[:&L````(/X`0^$@P```(/X`7\*A<!T'>G)`P``D(/X!`^$FP``
+M`(/X!@^$Z@$``.FQ`P``QH:P`````8/L"%95Z/S____&0Q2!@$\("(/$$(-[
+M5`!T$(/L"(U#5%!5Z/S___^#Q!"-E<P```"+A<P```")6`2)`XE3!(F=S```
+M`(/L#%7H_/___X/$$.E4`P``@&<(]_Z&LP```,:&L`````#&0Q0"@^P(4U7H
+M_/___XDL).C\____@\00Z24#``"0QH:S`````(-^'``/A$<!``"+1AR+2`2-
+M40&)4`2#^04/AS(!``"`9PCW@WM4`'00@^P(C4-44%7H_/___X/$$(V5S```
+M`(N%S````(E8!(D#B5,$B9W,````@$\($(-^+`!T'8/L#&H`:@(/MD9)4/]V
+M+%?H_/___X/$(.FC`@``QD0D!P"`?PH`#X:Q````C4<XB00DB?:#[`S_="0,
+MZ/S___^)PX/$$(L4)(M"!(E:!(D3B4,$B1B#>QP`=!V#[`3_<QS_M20%``!J
+M!>C\____@$LD`H/$$(UV`(/L!%-J!E?H_/___X/$$(![2P!T/XM$)`C_1"0(
+M/7^6F`!W,(/L#%7H_/___\<$)`$```#H_/___X/$$(![2P!T$HM$)`C_1"0(
+M/7^6F`!VTXUV`/Y$)`>*1"0'.$<*#X=7____QD8B`X/L"%95Z/S___^#Q!#I
+MS0$``)"-E<P```"+A<P```")6`2)`XE3!(F=S````(-^'`!T%8M&'(M(!(U1
+M`8E0!(/Y!0^&>@$``(/L#&BP!0``Z/S___^#Q`Q6:@97Z/S____^3PJ#Q!"+
+M5@2+!HE0!(D"@WXL`'04BT8L_D@PBU8,BT8(B5`$B0+K&9"#?C``=!*+5C`/
+MMD9)QT2"/`````"-=@"`?DL`=$*+1"0(_T0D"#U_EI@`=S.-=@"#[`Q5Z/S_
+M___'!"0!````Z/S___^#Q!"`?DL`=!*+1"0(_T0D"#U_EI@`=M.-=@"+5@2+
+M!HE0!(D"@[[@`````'0=@^P$:@$/MH;5````4/^VX````.C\____@\00B?:#
+M?BP`=!:#[`1J`0^V1DE0_W8LZ/S___^#Q!"0@WX<`'1VBT8<QT!@`````/Z%
+M5PP``(/L#%7H_/___X/$#&H!BT8<#[9``5!5Z/S___^#Q`R+5AP/MD("4`^V
+M0@%0:'<!``#H_/___X/$#/]V'/^U)`4``&H!Z/S___^#Q`S_=AS_M20%``!J
+M!NC\____QT8<`````(/$$(/L"%95Z/S___^#Q!#K$8/L!%9J`E?H_/___X/$
+M$(GV@^P,5>C\____@\00@\0,6UY?7<-55U93@^P,BUPD)(M\)""+;U2+=0#V
+M10@0=`3&1S4&#[9'-8/X`0^$@0```(/X`7\+A<!T'NE:`P``B?:#^`0/A)$`
+M``"#^`4/A(8!``#I00,``,9'-0&#[`A75NC\____QD,4@8!-"`B#Q!"#>U0`
+M=!"#[`B-0U105NC\____@\00C9;,````BX;,````B5@$B0.)4P2)GLP```"#
+M[`Q6Z/S___^#Q!#IYP(``(!E"/?^1S;&1S4`QD,4`H/L"%-6Z/S___^)-"3H
+M_/___X/$$.F^`@``@&4(]X-[5`!T$(/L"(U#5%!6Z/S___^#Q!"-ELP```"+
+MALP```")6`2)`XE3!(F>S````(/L!&H`:@95Z/S___^#Q`QJ`0^V10E05NC\
+M____QD0D&P"#Q!"`?0H`#X:"````C7TX@^P,5^C\____B<.#Q!"+1P2)7P2)
+M.XE#!(D8@WL<`'0;@^P$_W,<_[8D!0``:@7H_/___X!+)`*#Q!"0@^P$4VH&
+M5>C\____@\00@'M+`'0AC78`@^P,5NC\____QP0D`0```.C\____@\00@'M+
+M`'7B_D0D"XI$)`LX10IW@<9%!0"`30@0@^P,5>C\____@\00Z<`!``"`90CW
+M@WM4`'00@^P(C4-44%;H_/___X/$$(V&S````(N6S````(E:!(D3B4,$B9[,
+M````C44XB<(Y13@/A.@```")1"0$B?:#[`Q2Z/S___^)PX/$$(-X'`!T'(/L
+M!/]P'/^V)`4``&H%Z/S___^`2R0"@\00B?:#[`13:@95Z/S___^#Q!"`>TL`
+M="&-=@"#[`Q6Z/S____'!"0!````Z/S___^#Q!"`>TL`=>*#>QP`=%R+0QS'
+M0&``````_H97#```@^P,5NC\____@\0,:@&+0QP/MD`!4%;H_/___X/$#/]S
+M'/^V)`4``&H!Z/S___^#Q`S_<QS_MB0%``!J!NC\____QT,<`````(/$$(/L
+M"%-6Z/S___^#Q!"+5"0$.54X#X4>____@^P$:@!J!E7H_/___X/$"%=6Z/S_
+M___'12@`````BP:+D%@!``")%0````"#Q!"%TG0(BP:)D%@!``#V108!=%7&
+M1"0+`(!^*P!V&@^V50F)T(I,)`O3^*@!=0I!B$PD"SA.*W?J@^P(#[9<)!-3
+M5NC\____@\0(55;H_/___XG8P>`$`=C'A(8\"P```````(/$$(GV@\0,6UY?
+M7<-55U93@^P4BWPD*(M'*(E$)`R+&%=3Z/S___^#Q!"`O[,````!=@?&A[``
+M```$C7<0.7<0#X0F`@``@^P,5NC\____B40D&(/$$(M'$(M4)`B)4`2)`HER
+M!(E7$+T`````Z<,!``")]@^WU8N#K`4``(LTD(7V#X2L`0``9HM'&&8[1A`/
+MA9X!```/MY,R"P``BX-P"@``.1!T3Y!"#[>#-@L``#G0=P6Z`````(N#<`H`
+M`(M$D`2I```(`'4B)?\/``!F.<5U&#ET)`AU'(/L#%/H_/___X/$$.F!`0``
+MD(N#<`H``#D0=;*+3"0$@'DT``^%,`$``&:!?A"%``^')`$```^W1A"`O!B8
+M!```_P^$$@$``(7_#X3R````#[9'(*@!#X3F````J`0/A-X```"+$V:+1AYF
+MP>@%#[?`C02%``,``(F"<`$``&:+3AZ#X1^Z`0```(G0T^")P8L#B8AT`0``
+M#[=.'HN#K`4``,<$B`````!FBTX>B<AFP>@%#[?`B00D@^$?B=#3X(G!]]&+
+M!"0AC(.P!0``9HM.'HG(9L'H!0^WP(/A']/B]](A5(-$.W0D"'0ZBU8$BP:)
+M4`2)`H-^5`!T$(/L"(U&5%!3Z/S___^#Q!"-D\P```"+@\P```")<`2)!HE6
+M!(FSS````(/L"`^W1AY0C8,`"0``4.C\_____D]+@\00ZQB+5"0$]D(&`G0.
+M@^P(5E?H_/___X/$$)!%9CEK0`^'-?[__X7_="D/MD<@J`%T(:@$=!V+3"0(
+MBU$$BP&)4`2)`H/L"%%7Z/S___^#Q!")]H/$#%M>7UW#55=64X/L%(M\)"B+
+M1U2)1"0,BQA74^C\____@\00@'\V`78$QD<U!(UW%#EW%`^$W`$``(/L#%;H
+M_/___XE$)!B#Q!"+1Q2+5"0(B5`$B0*)<@2)5Q2]`````.F!`0``#[?5BX.L
+M!0``BS20A?8/A&P!``!FBT<D9CM&$`^%7@$```^WDS(+``"+@W`*```Y$'1/
+MD$(/MX,V"P``.=!W!;H`````BX-P"@``BT20!*D```@`=2(E_P\``&8YQ748
+M.70D"'4<@^P,4^C\____@\00Z3D!``"0BX-P"@``.1!ULF:!?A"%``^'\@``
+M``^W1A"`O!B8!```_P^$X````(M,)`2`>30`#X72````]D$&`0^$R````(L3
+M9HM&'F;!Z`4/M\"-!(4``P``B8)P`0``9HM.'H/A'[H!````B=#3X(G!BP.)
+MB'0!```/MTX>BX.L!0``QP2(`````&:+3AZ)R&;!Z`4/M\")!"2#X1^)T-/@
+MB<'WT8L$)"&,@[`%``!FBTX>B<AFP>@%#[?`@^$?T^+WTB%4@T0[="0(="2+
+M5@2+!HE0!(D"C9/,````BX/,````B7`$B0:)5@2)L\P```"#[`@/MT8>4(V#
+M``D``%#H_/____Y/*8/$$(GV168Y:T`/AW7^__^+5"0$]D(&`70;BTPD"(M1
+M!(L!B5`$B0*#[`A15^C\____@\00@\0,6UY?7<-55U93@^P,BWPD(,=$)`@`
+M````C8?,````B<(YA\P````/A,\!``")Q8UV`(/L#(G64NC\____B<.#Q!"#
+M>$P`=2Z#[`Q7Z/S___^)0TR#Q!"%P'4;BX?,````B5@$B0.)<P2)G\P```#I
+MB`$``(GVBT,D)?___P`]X0$0``^$\0```&:!>Q"```^$Y0```&8/MD,09HE#
+M$&:#^']V$F:!>R3A`74BBD,F@^@1/`%W&&:!>Q"%`'<0#[=#$("\.)@$``#_
+M=1J)]L9#%`:#[`A35^C\____@\00Z0H!``")]F:!>R3A`74,BD,F@^@1/`%V
+M-XGVBX]8!0``9H%[$(4`=QT/MT,0#[:4.)@$``"-!-+!X`(IT(T$P8E$)`CK
+M"H'!Z!8!`(E,)`AF@7LDX0%U"XI#)D@\`78[C78`9H%[$(``=#!F@7LDX0%U
+M"HI#)H/H$3P!=AZ+1"0(]D`C!'44QD,4!H/L"%-7Z/S___^#Q!#K=9"#[`A3
+M5^C\____@\00@_@"=PJ#^`%S'.L+C78`@_@#=$3K49"#[`A35^C\____@\00
+MZT&#>U0`=!"#[`B-0U105^C\____@\00C9?,````BX?,````B5@$B0.)4P2)
+MG\P```#K'8/L"%-7Z/S___^#Q!")]HGJ.:_,````#X4V_O__@\0,6UY?7<.)
+M]E575E.#[#R*1"14B$0D(`^VR(G*P>($`<J+7"10C123BX(\"P``B40D'+C^
+M____T\`B@ED+``"(1"0;BQ.)5"04QT0D$`````"`?"0@`W8,QX)P`0``Q`$`
+M`.L.BTPD%,>!<`$``*@!``"+7"04BX-T`0``HP````"*3"0@@^$#NP<```#3
+MXXG&"=Z+1"04B;!T`0``@^P,:.@#``#H_/____?3(=Z+5"0DB;)T`0``@\00
+M@'PD(`-V%0^V1"0@BX2"T`$``*,`````B<;K%P^V1"0@BTPD%(N$@=`!``"C
+M`````(G&@\X(@'PD(`-V$@^V1"0@BUPD%(FT@]`!``#K$`^V1"0@BU0D%(FT
+M@M`!``"`?"0@`W86#[9$)""+3"04QX3!``(``#@```#K%`^V1"0@BUPD%,>$
+MPP`"```X````@^P,:!`G``#H_/___X/$$(!\)"`#=A8/MD0D((M4)!3'A,($
+M`@```````.L4#[9$)""+3"04QX3!!`(```````"#?"0<``^$;0@``+\`````
+MBUPD4(![*P!V-HGVBU0D'`^V0@F)^P^VR]/XJ`%T%8/L!&H!4?]T)%SH_/__
+M_X/$$(UV`$>)^(M4)%`X0BMWS(M,)!SV008!='N#[`A1_W0D7.C\____@\0(
+M#[9<)"A3_W0D7.C\____B=C!X`0!V(M<)&"-%(.+@EP+``"#Q!"I```0`'0+
+M)?__[_^)@EP+``"#[`C_="0D_W0D7.C\____#[94)#")T,'@!`'0BU0D8,>$
+M@CP+````````@\00Z:,'``"+3"0<@'DT`'0=@^P(48M<)%S_L\0)``#H_/__
+M_XM$)"S^2#2#Q!"`?"0;``^$E`(``,=$)`P`````QD0D"P"#[`@/MEPD*%/_
+M="1<Z/S___^)V,'@!`'8BTPD8(T4@8N"7`L``(/$$*D``!``=`LE___O_XF"
+M7`L``(I<)!N+1"0<B%@)OP````"+5"10@'HK``^&80$```^VZXG[#[;+B>C3
+M^*@!#X0]`0``B<C!X`0!R(I4)!N+7"10B)2#60L``(GX/`-V$8M4)!3'A,H`
+M`@``.````.L4B?D/ML&+7"04QX3#``(``#@```"#[`QH$"<``.C\____@\00
+MB?@\`W80#[;`BU0D%(FLP@0"``#K$(GY#[;!BUPD%(FLPP0"``")^#P#=A"+
+M5"04QX)P`0``Q`$``.L.BTPD%,>!<`$``*@!``"+7"04BX-T`0``HP````")
+M^8/A`[L'````T^.)Q@G>BT0D%(FP=`$``(/L#&CH`P``Z/S____WTR'>BU0D
+M)(FR=`$``(/$$(GY@/D#=A,/ML&+A(+0`0``HP````")QNL7B?L/ML.+5"04
+MBX2"T`$``*,`````B<:#S@B)^8#Y`W80#[;!BUPD%(FT@]`!``#K$(GZ#[;"
+MBTPD%(FT@=`!``!'B?N+1"10.%@K#X>B_O__BT0D'(/`+(G"BTPD'#E!+'0W
+M@^P,B=-2Z/S___^-4.")5"0<@\00BU,$B4,$B1B)4`2)`HM,)`R#>0P`=`N)
+MVHM$)!PY6"QUR8-\)`P`=$>+5"0,QD(R`+\`````BTPD4(!Y*P!V,(M<)!P/
+MMD,)B?G3^*@!=!0/MD0D"XM<)`R(3!A`_D,R_D0D"T>)^(M4)%`X0BMWT(/L
+M!&H`:($```#_="0HZ/S___\/ME0D,(G0P>`$`="+3"1@QX2!/`L```````"#
+MQ!#IU`,``(/L!&H`:@;_="0HZ/S___^#Q`@/MEPD*%/_="1<Z/S___^)V,'@
+M!`'8BUPD8(T4@XN"7`L``(/$$*D``!``=`LE___O_XF"7`L``(M$)!R#P"R)
+MPHM,)!PY02P/A!<"``")1"0$@^P,4NC\____C6C@@\00C5`(.5`(#X30`0``
+MD(/L#(U%*%#H_/___XUP^(/$$(!^(0UU'(/L"`7X````4(M&*(L`_W`4Z/S_
+M__^#Q!"-=@"+5@2+!HE0!(D"@'Y+`'0A@^P,_W0D7.C\____QP0D`0```.C\
+M____@\00@'Y+`'7?@WX<``^$.@$``(M&',=`8`````"`?DL`#X2>````OP``
+M``"+7"109H-[0``/A(H```"0BU0D4(N"K`4``(L<N(7;=&=FBT,09CM&&'5=
+M9CV%`'=7#[?`@+P0F`0``/]T2HG1BQ)FBT,>9L'H!0^WP(T$A0`#``")@G`!
+M``"+$6:+2QZ#X1^X`0```-/@B8)T`0``QD,4(8/L!&H`4_]T)%SH_/___X/$
+M$(GV1XM<)%`/MT-`.?@/CW?____V1B0$=2V+1"10_H!7#```@^P,4.C\____
+M@\0,:@&+1AP/MD`!4/]T)%SH_/___X/$$)"#[`2+1AP/MD`"4(M&'`^V0`%0
+M:'<!``#H_/___X/$#/]V'(M4)%C_LB0%``!J`>C\____@\0,_W8<BTPD6/^Q
+M)`4``&H&Z/S____'1AP`````@\00BUPD'/Y+"OY-,(/L"%;_="1<Z/S___^#
+MQ!"-12@Y12@/A3'^__^+1"0<_D@<@^P(5?]T)%SH_/___X/$$(M4)`2+3"0<
+M.5$L#X7M_?__BT0D'(/`.(G"BUPD'#E#.`^$&`$``(G#@^P,4NC\____B<:#
+MQ!"`>$L`=$&+1"00_T0D$#U_EI@`=S*)]H/L#/]T)%SH_/___\<$)`$```#H
+M_/___X/$$(!^2P!T#XM$)!#_1"00/7^6F`!VT(-^'``/A)$```"+1AS'0&``
+M````]D8D!'4LBT0D4/Z`5PP``(/L#%#H_/___X/$#&H!BT8<#[9``5#_="1<
+MZ/S___^#Q!"#[`2+1AP/MD`"4(M&'`^V0`%0:'<!``#H_/___X/$#/]V'(M4
+M)%C_LB0%``!J`>C\____@\0,_W8<BTPD6/^Q)`4``&H&Z/S____'1AP`````
+M@\00BT0D'/Y("H/L"%;_="1<Z/S___^#Q!")VHM,)!PY63@/A>K^__^#[`C_
+M="0D_W0D7.C\____#[94)#")T,'@!`'0BUPD8,>$@SP+````````@\00OP``
+M``"+1"10@'@K``^&]@```(GV#[9$)!N)^=/XJ`%U"CI,)"`/A<T```")^X#[
+M`W80BT0D%,>`<`$``,0!``#K#HM4)!3'@G`!``"H`0``BTPD%(N!=`$``*,`
+M````B?F#X0.-#$F[!P```-/CB<8)WHM$)!2)L'0!``"#[`QHZ`,``.C\____
+M]],AWHM4)"2)LG0!``"#Q!")^8#Y`W83#[;!BX2"T`$``*,`````B<;K%XG[
+M#[;#BU0D%(N$@M`!``"C`````(G&@\X(B?F`^0-V$`^VP8M<)!2)M(/0`0``
+MZQ.)^@^VPHM,)!2)M('0`0``C78`1XG[BT0D4#A8*P^'#/___X/$/%M>7UW#
+M5E.#[`2+="00BQZQ`(![*P!V')`/MM&)T,'@!`'0C82#.`L``#GP=`9!.$LK
+M=^4/MM&)T,'@!`'0C02#BX@\"P``A<ET8O9!!@)T7`4X"P``.4$8=5*`>30`
+M="K^033K1_Y!-(/L#&@`````#[:&BP```%!64?^SQ`D``.C\____@\0@ZR*+
+M42R-<N"-02PYPG05B<*#?@P`=,:+1B"-<.`YT'7PC78`@\0$6U[#B?955U93
+M@^P,BD0D)(A$)`N+?"0@NP`````/MLB)R,'@!`'(C12'B[(\"P``A?8/A&T!
+M``"X_O___]/`A$8)#X5=`0``C48L.48L=!F#[`R-@C@+``!0Z/S___^#Q!#I
+ML@(``(GVO0````"`?@H`#X:A`@``C5XXB?:#[`Q3Z/S___^)PH/$$(M#!(E3
+M!(D:B4($B1"`>B$`#X7O````#[="&(.\AY@"````=0J#>AP`#X2_````#[="
+M&(N$AY@"``"#>'``#X22````QH*P``````^V0B"H`G0KJ`1T)Z@!="/&0B(%
+MQD(C!%(/MD))4/]R+/]R*.C\____@\00Z8H```")]@^V0B"H`G4@J`1T'*@!
+M=!C&0B(#QD(C!(/L"%)7Z/S___^#Q!#K89`/MD(@J`)T6*@$=%2H`750QD(C
+M!L9"(@5FQX*0``````"#[`A25^C\____@\00ZS"#[`3_<AS_MR0%``!J!.C\
+M____@\00ZQB#[`0/MT(84/^W)`4``&H"Z/S___^#Q!!%B>@X1@H/A^#^___I
+M=P$``(UV`&:!^_,!=U(/MG0D"X/L#&@0)P``Z/S___^#Q!"`?"0+`W89BP>+
+MA+#0`0``HP````"I```0`'4AZQ>)]HL'BX2PT`$``*,`````J0``$`!U"$-F
+M@?OS`7:S@^P(#[9<)!-35^C\____B3PDZ/S___^)V,'@!`'8B[2'/`L``(/$
+M$(7V#X3K````LP"`?RL`=B6-=@`/MD8)#[;+T_BH`70/@^P$:@!15^C\____
+M@\000SA?*W?>#[9$)`N)PL'B!`'"C927.`L``(E6&(U&+#E&+'4(C48X.48X
+M='*]`````,9$)`H`C48LB<(Y1BQT+(/L#(G34NC\____C6C@@\00BU,$B4,$
+MB1B)4`2)`H-]#`!T"(G:.5XL==60A>UT5,9%,@"Q`(!_*P!V2`^V1@G3^*@!
+M=!`/MD0D"HA,*$#^13+^1"0*03A/*W?@ZR;V1@8!=`^#[`A65^C\____@\00
+MZQ&#[`AJ`%;H_/___X/$$(UV`(/$#%M>7UW#@^P4BT0D&(L09L=`,B``4%+H
+M_/___X/$',.)]E=64XMT)!"+#HM^*+,`@'DK`'8;#[;3B=#!X`0!T(V$@3@+
+M```Y\'0&0SA9*W?E@/L#=AP/ML.+$8N$@M`!``"C`````*D``!``=1SK+HGV
+M#[;#BQ&+A(+0`0``HP````"I```0`'04@^P$5P^VPU!1Z/S___^#Q!#K$9"#
+M[`@/ML-04>C\____@\006UY?PXM4)`2+@@0*``"+`*,`````BX($"@``BT`$
+MHP````"+@@0*``"+0`BC`````(N"!`H``(M`#*,`````PU575E.#[`R+?"0@
+MQD0D"P"`?RL`#X;=!@``B?8/MD0D"XU("+H!````B=/3XX5<)"1U#XU($-/B
+MA50D)`^$I`8``(!\)`L#=A\/MD0D"XL7BX3"@`$``*,`````J0``"`!U'^L]
+MC78`#[9$)`N+%XN$PH`!``"C`````*D```@`="!7Z/S___\/ME0D#XG0P>`$
+M`="!C(=@"P`````(`(/$!(L?BDPD"X#Y`W8;#[;!BX3#@`$``*,`````B<*!
+MX@```0#K&8GV#[;!BX3#@`$``*,`````B<*!X@```0"%TG1!@/D#=A`/ML''
+MA,.``0`````!`.L.#[;!QX3#@`$``````0"%TG0:#[94)`N)T,'@!`'0@8R'
+M8`L``````0"-=@"`?SD!#X5>!0``@'PD"P-V'P^V1"0+BQ>+A,*``0``HP``
+M``"H`74CZ24!``"-=@`/MD0D"XL7BX3"@`$``*,`````J`$/A`<!``"#[`@/
+MMD0D$XG"P>($`<*-')>-@V0+``!0_W<4Z/S___^#Q!"#NSP+````='N+JSP+
+M``#&1"0*`(!]"@!V8XUU.(/L#%;H_/___XG#@\00BT8$B5X$B3.)0P2)&/9#
+M)`)U,H-['`!T'8/L!/]S'/^W)`4``&H%Z/S___^`2R0"@\00C78`@^P$4VH&
+M5>C\____@\00_D0D"HI$)`HX10IWH+D@H0<`ZR6#[`1J`0^V1"034%?H_/__
+M_\<$)*"&`0#H_/___[D`+3$!@\00#[9$)`N)PL'B!`'"C127C8)D"P``B8ID
+M"P``QT`(G)\#`('".`L``(E0#(/L"%#_=Q3H_/___X/$$(!\)`L#=A</MD0D
+M"XL7BX3"@`$``*,`````ZQ6)]@^V1"0+BQ>+A,*``0``HP````"`?"0+`W8B
+M#[9$)`N+%XN$PH`!``"C`````*F`````=2+I@P```(UV``^V1"0+BQ>+A,*`
+M`0``HP````"I@````'1F@'PD"P-V%P^V1"0+BQ>+A,*$`0``HP````")P^L5
+M#[9$)`N+%XN$PH0!``"C`````(G#@'PD"P-V%P^V3"0+BQ>)V`T```$`B83*
+MA`$``.L5#[9,)`N+%XG8#0```0")A,J$`0``@'PD"P-V(0^V1"0+BQ>+A,*`
+M`0``HP````"I```$`'4EZ>(!``")]@^V1"0+BQ>+A,*``0``HP````"I```$
+M``^$P@$``(!\)`L#=A</MD0D"XL7BX3"@`$``*,`````B</K%0^V1"0+BQ>+
+MA,*``0``HP````")PX'+```$`(!\)`L#=A`/ME0D"XL'B9S0@`$``.L.#[94
+M)`N+!XF<T(`!```/ME0D"XG0P>`$`="#O(<\"P```'5>@'PD"P-V$HL'BX30
+M@`$``*,`````B</K%0^V1"0+BQ>+A,*``0``HP````")PX!\)`L#=A,/ME0D
+M"XL'B9S0@`$``.FE`@``#[94)`N+!XF<T(`!``#ID@(``(UV``^V5"0+B=#!
+MX`0!T(NLASP+``"#?2@`#X33````BT4H#[=0,O;&`0^%PP```(G&]L("#X2P
+M````@^P(C4!84/]W%.C\____QD0D&P"#Q!"`?A\`=FX/MD0D"XM<ACR%VW14
+M@WL<`'0:@^P$_W,<_[<D!0``:@7H_/___X!+)`*#Q!"#[`13:@95Z/S___^#
+MQ!"`>TL`=!^0@^P,5^C\____QP0D`0```.C\____@\00@'M+`'7B_D0D"XI4
+M)`LX5A]WDL=&6""A!P#'1F"`GP,`B79D@^P(C4984/]W%.C\____@\00ZPAF
+M@4@R@`")]H!\)`L#=AT/MD0D"XL7BX3"@`$``*,`````]L0!=2'I$`$```^V
+M1"0+BQ>+A,*``0``HP````#VQ`$/A/0```"`?"0+`W8<#[9$)`N+%XN$PH`!
+M``"C`````*@!="#IT0````^V1"0+BQ>+A,*``0``HP````"H`0^%M@````^V
+M;"0+B>C!X`0!Z(VLAS@+``"#?00`#X29````BUT$B5PD!(/L"(U%+%#_=Q3H
+M_/___\9$)!,`@\00@'L*`'91B=Z#QCB#[`Q6Z/S___^)PX/$$(M&!(E>!(DS
+MB4,$B1B#>QP`=!J#[`3_<QS_MR0%``!J!>C\____@$LD`H/$$/Y$)`.*1"0#
+MBU0D!#A""G>TQT4L@(0>`,=%-`````");3B#[`B-12Q0_W<4Z/S___^#Q!"0
+M@'PD"P-V&0^V1"0+BQ>+A,*``0``HP````")P>L7B?8/MD0D"XL7BX3"@`$`
+M`*,`````B<&`?"0+`W80#[94)`N+!XF,T(`!``#K#@^V5"0+BP>)C-"``0``
+M_D0D"XI<)`LX7RL/AR7Y__^#Q`Q;7E]=PY!55U93@^P\BW0D4(N.6`4``(M$
+M)%2-N>@6`0!F@7@0A0!W%P^W0!`/MI0PF`0``(T$TL'@`BG0C3S!#[9'/L'@
+M"`.&!`H``(N`0`@``*,`````B<7![1#!Z!B(1"00#[9'/L'@"`.&!`H``(N`
+M1`@``*,`````B$0D*(U,)"B)PL'J"(A1`<'H$(A!`@^V1S[!X`@#A@0*``"+
+M@$@(``"C`````(A!`XG"P>H(B%$$P>@0B$$%QD$&`,9!!P"#[`S_<03_="0X
+M#[9$)"10B>H/MMI3:-`%``#H_/___X/$(/;#`74;B>F$R705BUPD5,9#%`"X
+M`````.FG`@``C78`BT0D5(!X%(%U,HU$)"A0#[9$)!10B>H/ML)0_W0D8.C\
+M____BTPD9,9!%`*X`````(/$$.EK`@``C78`BUPD5(M#)"7___\`/>$!#@!U
+M$<9#%"&X`````.E'`@``C78`BT0D5/9`9@%U$O?%`0```'0*@'\B_P^%!0(`
+M`(/L"%=6Z/S___^#Q`A75NC\____BQ:+3"1D9HM!'F;!Z`4/M\"-!(4``P``
+MB8)P`0``BP:+7"1D9HM+'H/A'[H!````B=/3XXF8=`$``(M$)&0/MT@>BX:L
+M!0``QP2(`````(M<)&1FBTL>B<AFP>@%#[?`@^$?B=/3XXG9]]$AC(:P!0``
+MBT0D9&:+2!Z)R&;!Z`4/M\"#X1_3XO?2(52&1(/$"(M,)%R+402+`8E0!(D"
+M#[=!'E"-A@`)``!0Z/S____^3TN+7"1DQD,4@8/$$(-[5`!T%(/L"(G8@\!4
+M4%;H_/___X/$$(GVC4<0B<(Y1Q`/A.4```"]`0```(E$)`R0@^P,4NC\____
+MB<.+%F:+0!YFP>@%#[?`C02%``,``(F"<`$``(L&9HM+'H/A'XGJT^*)D'0!
+M```/MU,>BX:L!0``QP20`````&:+2QZ)R&;!Z`4/M\"#X1^)ZM/BB='WT2&,
+MAK`%``!FBTL>B<AFP>@%#[?`@^$?B>K3XHG1]]$A3(9$@\0(#[=#'E"-A@`)
+M``!0Z/S____^3TN#Q!"#>U0`=!"#[`B-0U105NC\____@\00C9;,````BX;,
+M````B5@$B0.)4P2)GLP```"+5"0,.5<0#X4E____BTPD5(%A9/___O_&A[``
+M```$@^P(45?H_/___[@!````@\00ZR.-1"0H4`^V1"044(GK#[;#4/]T)&#H
+M_/___X/$$+@`````D(/$/%M>7UW#55=64X/L+(M\)$2+;"1`BW4`BX8H"@``
+MB40D&,=$)!0`````BT0D3`M$)$@/A.H"```/M]>-!-*-!(*-!$+!X`2+3"08
+M]D0((0)T$(N&K`4``(L$D,9`%`+K$9`/M\>+EJP%``"+!(+&0!0A#[?'BY:L
+M!0``BQ2"BT(D)?___P`]X0$0``^$G0$``+#_9H%Z$(4`=PL/MT(0BH0PF`0`
+M`#S_=1@/M\>+EJP%``"+!(+&0!0&Z=,(``"-=@`/ML"-%,#!X@(IPHN&6`4`
+M`(T4T(E4)!2`?"1+`'EA#[9"(*@"="6H!'0AJ`%T'8L&BX!8`0``HP````")
+MPH7`=`J+!HF06`$``(GVBP:+@%`!``"C`````(G"@\H"BP:)D%`!``"+!HN`
+M!`$``*,`````B<*`SO^+!HF0!`$```^WUXT$THT$@HT$0L'@!(M<)!AF]T08
+M(`((#X3,````QD0D$P"S`(!^*P!V78UV``^V10D/MLO3^*@!=$>`^P-V&HL&
+MBX2(T`$``*,`````J0``$`!U'>LKC78`#[;#BQ:+A(+0`0``HP````"I```0
+M`'00N`$```"(V=/@"$0D$XUV`$,X7BMWIH!\)!,`=%N*7"03.%T)=5*)^&;!
+MZ`4/M\")^8/A'[H!````T^*%5(9$=3>+1"04@+BP`````G<'QH"P`````X/L
+M"`^WUXN&K`4``/\TD/]T)"#H_/___X/$$.EG!P``C78`]D0D2P$/A%D'```/
+MM\>+EJP%``"+#(+&010ABT$D)?___P`]X0$.``^$-@<``(M4)!0/MD(^P>`(
+M`X8$"@``BX!`"```HP````")Q\'O$(G%P>T8#[9"/L'@"`.&!`H``(N`1`@`
+M`*,`````B$0D((U<)"")PL'J"(A3`<'H$(A#`HM4)!0/MD(^P>`(`X8$"@``
+MBX!("```HP````"(0P.)PL'J"(A3!,'H$(A#!<9#!@#&0P<`]D%F`74CB?@/
+MMM#VP@%T&5.)ZP^VPU!24>C\____@\00Z8<&``"-=@"#[`A15NC\____@\00
+MZ7(&``")]@^WUXN&K`4``(L$D&:!>"3A`0^%*`$```^V0":#Z`:#^`H/AT@&
+M``#_)(7L%0``#[?7BX:L!0``BPR0C032C02"C01"B</!XP2+?"08BD0[,XA!
+M%(N&K`4``(L$D/9`$P0/A`D&``"`>!0`#X3_!0``@W@X``^$]04``(M0.(I$
+M.S.(`NGG!0``#[?7C032C02"C01"P>`$B=.+EJP%``"+%)J+3"08BD0(*HA"
+M%(N&K`4``(L$F(-X-``/A*\%``"#[`R-!-N-!(.-!$/!X`0/MH0((00``%#H
+M_/___XG%BX:L!0``BP28@\00.V@@=@.+:"`/M]>+AJP%``"+#)"-!-*-!(*-
+M!$+!X`2+7"08C408*(/L!%50_W$TZ/S___^#Q!#I1P4```^WQXN6K`4``(L$
+M@L9`%`#I,@4``(GV#[?7BX:L!0``BRR0BT5(B40D#+#_9H%]$(4`=PL/MT40
+MBH0PF`0```^VP(T4P,'B`BG"BX98!0``C130B50D%,:"L``````/MD(@J`(/
+MA$T!``"H!`^$10$``*@!#X0]`0``QD44`/9%9B`/A+\$``"#?"0,``^$M`0`
+M`(M4)`SV0ET"#X2&````@WI8`'06@^P$_W4@_W4T_W)8Z/S___^#Q!#K:H-]
+M-`!T9+\`````BTPD#(-Y8`!T"_9!70%U!8MY8.LC@^P$:@'_MB0&``#_="08
+MBUPD'/]39(/$$(7`=`:+OB0&``"#?2``="&+732#[`3_-U/_=PCH_/___P,?
+M@\00C4<$@\<0@S@`=.*+?"04#[9'/L'@"`.&!`H``(N`0`@``*,`````B<+!
+MZA"+3"0,B%%3P>@89HE!2`^V1S[!X`@#A@0*``"+D$0(``")%0````!F#[;"
+M9HE!3`^VQF:)04Z)T,'H$&8/ML!FB4%0P>H8B%%2#[9'/L'@"`.&!`H``(N`
+M3`@``*,`````9@^VP&:)04KID0,``)`/M]>-!-*-!(*-!$*)P<'A!(M<)!B*
+M1!DSA,`/A:<```"+AJP%``"+!)#&0!0`]D5F$`^$6`,``(-\)`P`#X1-`P``
+MBD09,XM\)`R(1TJ*1UVH`@^$-P,``+\`````BU0D#(-Z8`!T":@!=06+>F#K
+M(X/L!&H!_[8D!@``_W0D&(M,)!S_462#Q!"%P'0&B[XD!@``@WT@``^$\@(`
+M`(M=-(UV`(/L!/\W4_]W".C\____`Q^#Q!"-1P2#QQ"#.`!TXNG)`@``D#P"
+M#X5X`@``#[??C03;C02#C01#P>`$BU0D&(U$$$")1"0(BAB#XW_&1"0'`,9$
+M)`8`QD0D!0`/M]>-!-*-!(*-!$+!X`2+3"08BT0(.(E$)!R-3"0<#[94)!S!
+MXA@/MD$!P>`0"<(/MD$"P>`("<(/MD$#"<*)%"2`^W%V-X/Z`78.BT0D"(I8
+M`8/C#XA<)`>#/"0"=@N+5"0(BE("B%0D!H,\)`-V7(M,)`B*20.(3"0%ZT^#
+M/"0"=@Z+1"0(BE@"@^,/B%PD!X,\)`=V-8M4)`@/MD('@\`(.00D=@.)!"2#
+M/"0,=@N+3"0(BDD,B$PD!H,\)`UV"XM<)`B*6PV(7"0%#[?7BX:L!0``BP20
+M@'@<`'1=@SPD`'17QD`4((N&K`4``(L$D(H4)#A0'','#[9`'(D$)`^WUXN&
+MK`4``(L,D(-Y.`!T.8T$THT$@HT$0L'@!(M<)!B-1!A`@^P$_W0D!%#_<3CH
+M_/___X/$$.L0#[?'BY:L!0``BP2"QD`4(H!\)`<$=1`/M\>+EJP%``"+!(+&
+M0!0".748#X0E`0``@WPD#``/A!H!``#V1680=&$/M\>-%,"-%)"-%%#!X@2+
+M3"08BD0*,XM<)`R(0TKV0UT"=#V*!"0X11QS`XI%'(3`="X/ML@/M]>-!-*-
+M!(*-!$+!X`2+7"08C4080(/L!%%0BWPD&/]W5.C\____@\00#[9$)`>#^`MW
+M5?\DA1@6``"+1"0,QD!>`>F5````@'PD!@1U$H!\)`4"=0N+5"0,QD)>$>M]
+MD(M,)`S&05X"ZW*+7"0,QD->$.MHBWPD#,9'7@OK7HM$)`S&0%X&ZU2+5"0,
+MQD)>#>M*B?8\*'4=BTPD%(I!2TB(04H/M]>+AJP%``"+!)#&0!2!ZR<\"'40
+M@^P,:!`G``#H_/___X/$$`^WQXN6K`4``(L$@L9`%"&-=@"#Q"Q;7E]=PU93
+M@^P$BW0D$(GSBP:+@%`!``"C`````(G"BP:)D%`!``")]O?"`/__`'00@^P(
+M4E;HBNO__X/$$(UV`(L#BX!0`0``HP````")PHL#B9!0`0``]\(`__\`=<FX
+M`````(/$!%M>PXGV55=64X/L+(M\)$!FBX<R"P``9HE$)"*+!XN`0`$``*,`
+M````)?\/``!FB8<R"P``N`````!FBU0D(F8YES(+```/A/,&``!F@;\R"P``
+M_P\/A'P&``!FBTPD(F8YCS(+```/A&H&``"-M]0```")="04B?:+KR@*``!F
+M_T0D(F:+1"0B9CF'-@L``'<'9L=$)"(```^W5"0BBX=P"@``BUR0!/?#```(
+M``^$M0```(L'BX!0`0``HP````")PXL'B9A0`0``QT0D)`````#WPP#__P!T
+M5KH`````@'\K`'1+O0$```!F#[9/*V:)3"0.#[?"C4@(B>[3YH7S=0N-2!")
+MZ-/@A<-T&P^WTHT$4L'@`RG0C82'*`$``(E$)"3K"XUV`$)F.50D#G?$@WPD
+M)`!U%8/L#/]T)$SH_/___X/$$.EY!0``D(/L#/]T)$SH_/___XM4)#2(0@N#
+MQ!#I704``)")WH'F_P\```^WQHT4P(T4D(T44,'B!(G1BU0J((M,*22)5"08
+MB4PD'(N7K`4``(LL@H7M#X0B!0``]\,``"``#X1V`0``@'T4@0^%4`$``,9%
+M%"$/MU4>BX>L!0``QP20`````&:+31Z)R&;!Z`4/M\"#X1^^`0```-/FB?'W
+MT2&,A[`%``!FBTT>B<AFP>@%#[?`@^$?N@$```#3XHG1]]$A3(=$@^P(#[=%
+M'E"-AP`)``!0Z/S___^#Q!"#?50`=!"#[`B-15105^C\____@\009H%]$(4`
+M#X?!````#[=%$("\.)@$``#_#X2O````9H-]$']W)0^VE#B8!```BX]8!0``
+MC032P>`"*="+1,$H@'@$_W5:Z8,```!F@7T0@0!W*P^W11`/MH0XF`0``(N/
+MD`4``(T$0(T$P(G"P>(%*<*+1)$(@'@$_W4DZU`/MT40#[:$.)@$``"+EW0%
+M``"-!$"-!("+1,)4@'@$_W0N@^P(55?H_/___X/$$(V7S````(N'S````(EH
+M!(E%`(E5!(FOS````.F]`P``D(U%"(M,)!2+402)002)30B)4`2)`NFB`P``
+MB?:)\&;!Z`4/M\")\8/A'[H!````T^*%5(=$#X6!`P``#[?6BX>L!0``BP20
+M9H%X$(4`#X>A````#[=0$("\.I@$``#_#X2/````9H-X$']W'P^VE#J8!```
+MBX]8!0``C032P>`"*="+1,$HBE`$ZVL/M]:+AZP%``"+!)!F@7@0@0!W*`^W
+M0!`/MH0XF`0``(N/D`4``(T$0(T$P(G"P>(%*<*+1)$(BE`$ZR\/M]:+AZP%
+M``"+!)`/MT`0#[:$.)@$``"+EW0%``"-!$"-!("+1,)4BE`$ZP*R_X#Z_W0-
+M#[;"@+PX'@4``/]U0HGP9L'H!0^WP(GQ@^$?O@$```#3YH5TAT0/A94"``#&
+M110&@^P(:@!5Z/S___^#Q`QJ`%57Z/S___^#Q!#I<@(```^VP@^VA#@>!0``
+MB40D)(T$0,'@`RM$)"2-A(<H`0``B40D)(M$)!P+1"08=`CWPP```@!U$,=$
+M)!@`````QT0D'`````"+5"0D]D(&`@^$9`$``/]T)!S_="0<#[?&4%+H_/__
+M_XGP9L'H!0^WP(GQ@^$?NP$```")VM/B@\00A52'1`^%Z`$``(!]%($/A84`
+M```/MU4>BX>L!0``QP20`````&:+31Z)R&;!Z`4/M\"#X1_3XXG9]]$AC(>P
+M!0``@^P(#[=%'E"-AP`)``!0Z/S___^#Q`A55^C\____@\00@WU4`'00@^P(
+MC4544%?H_/___X/$$(V7S````(N'S````(EH!(E%`(E5!(FOS````.E9`0``
+MQD0D(0#&1"0@`(N'U````#E$)!1T$(V7U````/Y$)"&+`#G"=?:`?"0A`'0Q
+MC9_4````@^P,4^C\____C4CX@\00BU,$B4,$B1B)4`2)`CGI=07&1"0@`?Y,
+M)"%UU8!\)"``#X7P````C44(BTPD%(M1!(E!!(E-"(E0!(D"B?!FP>@%#[?`
+MB?&#X1^^`0```-/F";2'A````.FZ````_W0D'/]T)!P/M\90_W0D,.C\____
+MQD0D,0#&1"0P`(N'U````(/$$#E$)!1T$HV7U````(GV_D0D(8L`.<)U]H!\
+M)"$`=#6-G]0```"0@^P,4^C\____C4CX@\00BU,$B4,$B1B)4`2)`CGI=0C&
+M1"0@`8UV`/Y,)"%UTH!\)"``=3>`?12!=#&-10B+3"04BU$$B4$$B4T(B5`$
+MB0*)\&;!Z`4/M\")\8/A'[X!````T^8)M(>$````9HM$)")F.8<R"P``#X6B
+M^?__C8?4````B<(YA]0```!T1XGV@^P,B=92Z/S___^#Z`AFBT@>B<MFP>L%
+M#[?;@^$?NO[____3PB&4GX0```"#Q`QJ`%!7Z/S___^#Q!")\CFWU````'6[
+M@^P,5^C\____N`$```"#Q!"#Q"Q;7E]=PXGV5U93@^P0BUPD(&;'1"0.``"+
+MFR0%``"^`````(U\)`Z+`XN`4`$``*,`````BQ.)@E`!``"%P'0;BP/'@%`!
+M```!````@^P,4^C\____B`0W@\00@<-@#```1H/^`7[`@'PD#@!U#+@`````
+M@'PD#P!T!;@!````@\006UY?PY!55U93@^P,BVPD(+D`````9@^V12N)PV:#
+M^`!V&8M$)"0/ME`)C78`B=#3^*@!=09!9CG+=_*+5"0D@WHH`'0E@^P(BT(H
+M@\!84/]U%.C\____@\0(BTPD+/]Q*%7H_/___X/$$(M$)"2#P#B)PHM,)"0Y
+M03@/A%<!``")1"0(D(/L#%+H_/___XG&@\00@W@<``^$%0$``(!X2P`/A(<`
+M``"_`````&:#?4``='N)]HN%K`4``(L<N(7;=&-FBT,09CM&&'599CV%`'=3
+M#[?`@+PHF`0``/]T1HM5`&:+0QYFP>@%#[?`C02%``,``(F"<`$``(M5`&:+
+M2QZ#X1^X`0```-/@B8)T`0``QD,4(8/L!&H`4U7H_/___X/$$)!'#[=%0#GX
+M?X>+1AS'0&``````]D8D!'4G_H57#```@^P,5>C\____@\0,:@&+1AP/MD`!
+M4%7H_/___X/$$(GV@^P$BT8<#[9``E"+1AP/MD`!4&AW`0``Z/S___^#Q`S_
+M=AS_M20%``!J`>C\____@\0,_W8<_[4D!0``:@;H_/___\=&'`````"#Q!"+
+M1"0D_D@*@^P(5E7H_/___X/$$(M4)`B+3"0D.5$X#X6N_O__BT0D),=`*```
+M``"+10"+B%@!``")#0````"%R70)BT4`B8A8`0``@\0,6UY?7<.-=@!75E.+
+M="00BWPD%+,`@'XK`'85#[97"9")T(C9T_BH`74&0SA>*W?P]D<(`G4(C4<X
+M.4<X=6:#[`Q7Z/S___^#Q!"$P'1$@^P,5NC\____B<&#Q!"%P'1$C4<XBU`$
+MB4@$B0&)402)"OY'"HEY*,9!(`7&02$`QD%)#VH!:@%15^C\____@\00ZQ*#
+M[`@/ML-05NC\____@\00B?9;7E_#55=64X/L$(ML)"B+?50/MD4K4/]T)"A7
+MZ/S___^)QF:#33(0NP````"#Q!"+5"0@9@^V0BMFB40D"F:#^`!V%@^V5PF)
+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
+M`,9#)!S&0R4!QD,F`L9#)PC&0R@`@^P(:@#_="04Z/S_____<R#_=A#_=@S_
+M="0DZ/S___^#Q!A35>C\____@\00@\0,6UY?7<.055=64X/L#(ML)""+?"0D
+MBD0D*(A$)`N+12B+,,9$)`H`C78`#[9$)`J*E#"8!```@/K_=%.#[`1J"(U'
+M#%`/MM*-!-+!X`(IT(T<Q0````")V`.&6`4```6<````4.C\____@\00A,!T
+M'HN&6`4``(I4)`N(E`/6````BX98!0``B:P#X````/Y$)`IYEH/$#%M>7UW#
+MB?955U93@^P,BTPD)(M!-(E$)`@/MD`"B<7!Y0B+5"0(9@^V0@,!Q0^W]8U6
+M!`^W02`YP@^/T````(M<)`B#PPC&1"0'`(M4)`B-1!8$.=@/AJ,```"*`X3`
+M>'Z#X`\\!G5W]D,#P'0&]D,%P'5K]@,0=#"-<PB_`````(![!`!V6(/L!`^V
+M0P-05O]T)"SH_/___X/&'(/$$$>)^#A#!'?@ZS:-<P2_`````(![`@!V*`^V
+M5"0'B10D@^P$_W0D!%;_="0LZ/S___^#QAR#Q!!'B?@X0P)WX9#^1"0'#[9#
+M`8U<`P(/M\6+5"0(C400!#G8#X==____@^P(:@'_="0LZ/S___^#Q!"#Q`Q;
+M7E]=PU575E.#[`2+;"08#[9\)!R*1"0DB$0D`XM%*(LPLP")^0-,)""(3"0"
+MC78`#[;#BH0PF`0``#S_=$H/MM"+CE@%``"-!-+!X`(IT(T4Q0````")^#B$
+M"M8```!U)SFL"N````!U'HI$)`*(A`K5````BX98!0``BDPD`XB,`M0```")
+M]O[#>:2#Q`1;7E]=PU93BW0D&(I<)!"*5"04BT0D#(M(+("YD````$]W+0^V
+M@9````"-!("-%!.(E,&5````#[:!D````(T$@(GRB)3!E````/Z!D````%M>
+MPXGV55=64X/L#(M,)"2+630/MD,"P>`(9@^V4P,!T`^WP(/`!`^W42`YT`^/
+M\@```(U3",9$)`L`O0````"*2P&)]HI"`@!$)`L/MD(#C50"!$6)Z#C!<^J)
+MUL9$)`H`O0````")ZCI4)`L/@Y8```")]HI&`0!$)`J`/@%T!8`^%W4SBEPD
+M"BI>`3I<)`IS9HU%`0^V^`^V!E!7#[;#4/]T)"SH_/___X/$$$,Z7"0*<N3K
+M0HGVBU0D((M"+("XD0````%T,(I<)`HJ7@$Z7"0*<R.-10$/MOB0#[8&4%</
+MML-0_W0D+.C\____@\000SI<)`IRY(/&!$6)Z#I$)`L/@FS___^+5"0@BT(L
+MQH"1`````8/L"&H'4NC\____@\00@\0,6UY?7<-55U93@^PLBW0D0(ML)$2S
+M_XGG_+D%````N`````#SJV8YZ7-&C78`9H/Y#G<)#[?1B@0RB`04#[?!B@0P
+M@^@P/`EW'(#[_W4#LP"0#[;#C02`#[?1BA0RC5Q"T.L'B?:`^_]U!D%F.>ER
+MO0^VPX/$+%M>7UW#B?975E.#[`2+?"04BD0D&(A$)`.*5"0<B%0D`HM'*(LP
+MLP"-=@`/ML.*A#"8!```//]T.@^VT(N.6`4``(T$TL'@`BG0P>`#.;P(X```
+M`'4=BE0D`SB4"-4```!U$(I4)`*(E`C7````ZP>-=@#^PWFT@\0$6UY?PY!5
+M5U93@^P,BVPD)(I$)"B(1"0+BT0D((MP++L`````C7T$B?:-!)N-A,:0````
+M@'@$`78T@'@$%W0NBE0D"SA0!74EBE4#@/H@=@*R((T$FXV$QIP````/MM*#
+M[`125U#H_/___X/$$$.#^T]^MH/$#%M>7UW#B?955U93@^P,BTPD),9$)`8`
+MBVDT#[9%`L'@"&:)1"0*9@^V10-F`40D"@^W7"0*C5,$#[=!(#G"#X\*`0``
+MC74(QD0D!P"-1"L$.?`/AN4```"-=@`/MD8"P>`(9@^V5@,!PF:)5"0(#[?:
+M4XU&!%#H_/___X/$"#S_=6W&1"0&_XU<,P0/MT0D"HU$*`0YV'9QC78`#[9#
+M`L'@"&8/ME,#C3P"#[?'4(U#!%#H_/___X/$"#S_=1&`?"0&_W5$QD0D!@#K
+M/8UV`#I$)`9S!(A$)`8/M\>-7`,$#[=$)`J-1"@$.=AWKNL:*D0D!@^VP%`/
+MMD0D"U#_="0HZ/S___^#Q`R#[`0/MD0D"U!6_W0D+.C\_____D0D%P^W1"08
+MC70&!(/$$`^W1"0*C40H!#GP#X<>____@^P(:@+_="0LZ/S___^#Q!"#Q`Q;
+M7E]=PY!64X/L!(MT)!"+3"04BUDT#[9#`L'@"&8/ME,#`=`/M\"-4`0/MT$@
+M.<)_((/L!%)3_[;D````Z/S___^#Q`AJ`%;H_/___X/$$(GV@\0$6U[#B?95
+M5U93@^P,BVPD((M$)"2*0!2(1"0'BU0D)&:!>A"%``^'I@````^W0A"`O"B8
+M!```_P^$E````&:#>A!_=R4/MI0HF`0``(N-6`4``(T$TL'@`BG0BT3!*`^V
+M0`0%$`4``.MMBT0D)&:!>!"!`'<N#[=`$`^VA"B8!```BXV0!0``C01`C03`
+MB<+!X@4IPHM$D0@/MD`$!1`%``#K,XM4)"0/MT(0#[:$*)@$``"+E70%``"-
+M!$"-!("+1,)4#[9`!`40!0``ZPB-=@"X#P8```^V1`4.B40D"(T$0,'@`RM$
+M)`B-A(4H`0``B40D"(N-6`4``(M$)"2-L>@6`0!F@7@0A0!W%P^W0!`/MI0H
+MF`0``(T$TL'@`BG0C33!@'PD!P`/A3\"``!FQX:0``````"+5"0D@'HD'`^%
+M*`(```^V0B:#^`)T7(/X`G\*@_@!="CI$`(``(/X!W0S@_@*#X4"`@``@^P(
+M_W0D+%;H_/___X/$$.GM`0``@^P(_W0D+%;H_/___X/$$.G8`0``@^P(_W0D
+M+%;H_/___X/$$.G#`0``@^P(_W0D+%;H_/___X/$"(V>``$``%.+1BB+`/]P
+M%.C\____QX8``0``@(0>`,>&"`$```````")M@P!``"#Q`A3BT8HBP#_<!3H
+M_/___X/$$)#&1B+_OP````"+1"0(@'@*``^&J0```(G#@\,X@^P,4^C\____
+MB<:#Q!"+0P2)<P2)'HE&!(DP@'XB_W1K@'XA`'5M@+ZQ``````^$(`$```^V
+M1B"H`G0,J`1T"*@!#X7F````#[9&(*@"=0RH!'0(J`$/A>D````/MD8@J`(/
+MA.P```"H!`^$Y````*@!#X7<````@^P(5E7H_/___X/$$.G*````B?;&AK$`
+M````D$>)^HM$)`@X4`H/AUS___^)^HM$)`@X4`IU7;\`````@'@*`'92B<.#
+MPSB0@^P,4^C\____B<:#Q!"+0P2)<P2)'HE&!(DP@'XB_W0?@'XA(G0&@'XA
+M#743@^P(:@I6Z/S___^#Q!#K5XUV`$>)^HM$)`@X4`IWM(M4)`C&0@7_@^P(
+M4E7H_/___X/$$(!\)`<`#X60````ZR96#[9&25#_=BS_="04Z/S___^#Q!#K
+M#X/L"%95Z/S___^#Q!")]HM$)"2#>%``=!:#[`B+1"0L@\!04%7H_/___X/$
+M$(GV@^P(_W0D+%7H_/___X/$$(!\)`<`=#%F_X:0````9H.^D`````IV$&;'
+MAI```````.DZ_O__B?:#[`AJ"E;H_/___X/$$(GV@\0,6UY?7<-55U93@^P8
+MBVPD+(I$)#"(1"07BT4HBSA7Z/S___^)PXU`/(E$)!2#Q!"%VP^$H````(/L
+M#%?H_/___XG&@\00A<!U$(/L"%-7Z/S___^#Q!#K?Y#&0Q6L9HM%&&:)0Q")
+M>QC'0V0(````B7-0BT8(B4,TQT,@``@``(V%M````(E#.,9#'"#'0VP`````
+MQD,D',9#)0&*1"0+B$,FQD,G",9#*`"#[`AJ`/]T)!#H_/____]S(/]V$/]V
+M#/]T)"#H_/___X/$&%-7Z/S___^#Q!"#Q`Q;7E]=PXGV55=64X/L#(ML)""+
+M12B+,(N5Y`````^V0@*)P\'C"&8/MD(#`<,/M\.#P`0]``@```^/W0```(/L
+M#%;H_/___XG'@\00A<`/A,<```"#[`Q6Z/S___^)1"08@\00A<!U$X/L"%=6
+MZ/S___^#Q!#IH0```)"-1SR)1"0$#[?;@\,$@^P$4_^UY````(M4)!3_<@CH
+M_/___\9'%:QFBT489HE'$(EW&(E?((-/9!*+5"08BT((B4<TB5=0C86T````
+MB4<XQD<<(,=';`````#&1R0=QD<E$,9')@(/ML>(1R>(7RB#Q`AJ`/]T)!#H
+M_/____]W((M$)!S_<!#_<`S_="0@Z/S___^#Q!A75NC\____@\00@\0,6UY?
+M7<-55U93@^P$BWPD&(I$)!R(1"0#BE0D)(A4)`*+1RB+,(MO+,9$)`$`#[9$
+M)`&*C#"8!```@/G_=&,/MM&+GE@%``"-!-+!X`(IT,'@`SF\&.````!U1HI4
+M)`,XE!C5````=3F`?"0"`'0/BX08W````(M,)"")`>LI#[;1BXY8!0``C032
+MP>`"*="+7"0@BQ.)E,'<````ZPF-=@#^1"0!>8;&1"0!`)`/MD0D`8T$@(U4
+MQ0"-@I````"`>`0!=CR`>`07=#:*3"0#.$@%=2V`?"0"`'0.BX*8````BUPD
+M((D#ZR,/MD0D`8T$@(M,)""+$8F4Q9@```#K#)#^1"0!@'PD`4]VH8/$!%M>
+M7UW#D%575E.#[`B+;"0<BD0D((A$)`.+G>0````/MD,"B<;!Y@AF#[9#`P'&
+M#[?&@\`$/0`(``!_9H!\)`,`=`N*A=@```"(0P'K"8I#`8B%V````(U#"(E$
+M)`2_``````^WQHU$&`0[1"0$=C*)]@^V1"0#4(U$)`A0B?H/ML)05>C\____
+M1X-$)!0$@\00#[?&C408!#M$)`1WTXUV`(/$"%M>7UW#4X/L"(M<)!"*5"04
+MBD0D&(A$)`/'1"0$`````(![(P%T2FH!C40D"%`/ML)04^C\____@\00@WPD
+M!`!T+XM$)`2`"("`?"0#`'0-BT0D!(!(`R#K"XUV`(M$)`2`8`/?@^P,4^C\
+M____@\00@\0(6\.-=@!75E.+7"04BWPD$(MS2&:!>Q"%``^'B@````^W0Q"`
+MO#B8!```_W1\9H-[$']W(0^VE#B8!```BX]8!0``C032P>`"*="+1,$HBE`$
+MZUB)]F:!>Q"!`'<H#[=#$`^VA#B8!```BX^0!0``C01`C03`B<+!X@4IPHM$
+MD0B*4`3K)@^W0Q`/MH0XF`0``(N7=`4``(T$0(T$@(M$PE2*4`3K!8UV`++_
+ML?]F@7L0A0!W"P^W0Q"*C#B8!```@/K_=!@/ML*`O#@>!0``_W0+@/G_=`:`
+M>Q0&=32#>U``=!*#[`B-0U!05^C\____@\00B?:#[`A35^C\____QT8L____
+M_XDT)/]6*(/$$.M\@'L4`'4[]D-D"'04@^P$_W,@_W,T_W8<Z/S___^#Q!#'
+M1BP`````@WX@`'0(BU8@BT84B0*#[`Q6_U8H@\00ZQ/'1BS_____@^P,5O]6
+M*(/$$(GV@WM0`'02@^P(C4-04%?H_/___X/$$(GV@^P(4U?H_/___X/$$(UV
+M`%M>7\-55U93@^P8BVPD+(I$)#"(1"07BT4HBSA7Z/S___^)PXU0/(E4)!2#
+MQ!"%P`^$U0```(/L#%?H_/___XG&@\00A<!U%(/L"%-7Z/S___^#Q!#IL0``
+M`(GVQD,5K&:+11AFB4,0BT0D,(E#2(E[&,=#9`@```")<U"+1@B)0S2+1"0L
+MB4,@C86T````B4,XQD,<(,=#;`````#&0R0\QD,E`HI4)`N(4R:+1"0HP>@0
+MB$,GBU0D*`^VQHA#*(A3*8M$)"S!Z!"(0RJ+5"0L#[;&B$,KB%,LQD,M`(/L
+M"&H`_W0D$.C\_____W,@_W80_W8,_W0D(.C\____@\084U?H_/___X/$$(/$
+M#%M>7UW#D%575E.#[!B+7"0LBD0D,(A$)!>+0RB+*%7H_/___XG&@\00A<`/
+MA.T```"#[`Q5Z/S___^)QX/$$(7`=1.#[`A65>C\____@\00Z<D```"0C58\
+MB50D!(/L!/]T)##_L^0```#_<`CH_/___\9&%:QFBT,89HE&$(M$)$")1DB)
+M;AB+1"0\B48@@TYD$HM'"(E&-(E^4(V#M````(E&.,9&'"#'1FP`````QD8D
+M.\9&)0**5"0;B%8FBT0D.,'H$(A&)XM4)#@/ML:(1BB(5BF+1"0\P>@0B$8J
+MBU0D/`^VQHA&*XA6+,9&+0"#Q`AJ`/]T)!#H_/____]V(/]W$/]W#/]T)"#H
+M_/___X/$&%95Z/S___^#Q!"#Q`Q;7E]=PU=64XM<)!"+="04BTPD&(M\)!R+
+M5"0@A=MT#87V=`F%R70%A?]U"9"X`````.LYD&:!^H4`=PT/M\*`O!B8!```
+M_W4(N`````#K'9#&023AQD$E`<9!)A-FB5$0B7$8B7ELN`$```"06UY?PXM,
+M)`2+002+0`2C`````(G"@'PD"`!T"('*```,`.L&@>+___/_BT$$B1"+002)
+M4`R+002)4!"+002)4!2+002)4!B+002)4`3#D)!64XM<)!"+3"0PBW0D.`^W
+M1"0,/1$G``!_+CT0)P``?6,](B$``'1</2(A``!_"3T@(0``=$[K5CU`(0``
+M=$4]1"$``'0^ZT8]@"<``'0U/8`G``!_#BT@)P``@_@"=R[K(HGV/8"1``!T
+M&3V`D0``?PD]@B<``'0+ZQ,]@)0``'4,B?;&`T"+1"04Q@`"BT0D&,8`!(H3
+MBT0D+(@09L<!@`!FQP8``(M$)"#&`""+1"0D9L<```&*$XM$)"B($&8/M@-F
+M`P%F`P:+5"0T9HD"BU0D'&:)`F:+$8M$)#QFB1!FBQ&#P@N+1"1`9HD06U[#
+MC78`55=64X/L#(I$)"2(1"0+BU0D((LZNP````!F@W]```^&>@(``(UV`(G8
+M9L'H!0^WP(G9@^$?N@$```#3XH64AX0````/A4H"```/M].+AZP%``"+-)"%
+M]@^$-@(``+T`````BT8D)?___P`]X0$0``^%L@```(-\)"@`#X43`@``9H%^
+M$(4`#X>2````#[=&$("\.)@$``#_#X2`````9H-^$']W(@^VE#B8!```BX]8
+M!0``C032P>`"*="+1,$HBD@$Z3@!``!F@7X0@0!W*P^W1A`/MH0XF`0``(N/
+MD`4``(T$0(T$P(G"P>(%*<*+1)$(BD@$Z04!```/MT80#[:$.)@$``"+EW0%
+M``"-!$"-!("+1,)4BD@$Z>$```"Q_^G:````B?9F@7X0A0`/AX@````/MT80
+M@+PXF`0``/]T>F:#?A!_=Q\/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*(I(
+M!.M69H%^$($`=R@/MT80#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"BT21
+M"(I(!.LF#[=&$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I(!.L%C78`L?]F
+M@7X0A0!W.@^W1A"`O#B8!```_W0LBZ]8!0``9H%^$(4`=Q8/MI0XF`0``(T$
+MTL'@`BG0C6S%`.L(@<7H%@$`B?:+1"0@.$@$#X6'````@WPD*`!T#HM4)"AF
+MBT(89CM&$'5R@'PD"P9T3XM6)('B____`('ZX0$0`'0^#[9%(*@"=#:H!'0R
+MJ`%U+H"]L`````!U)8'ZX0$/`'0YBD0D"XA&%(/L!&H!5O]T)"SH_/___X/$
+M$.L>B?:*5"0+B%84@^P(#[?#4/]T)"SH_/___X/$$(GV0V8Y7T`/AXG]__^`
+M?"0+@0^$8@$``+T`````BY?,````C8?,````.=!T")!%BQ(YT'7Y9H7M#X0\
+M`0``C8?,````B<(YA\P````/A"@!``")1"0$@^P,B=-2Z/S___^)QH/$$(-\
+M)"@`="&+5"0H9HM"&&8[1A!T$XM#!(ES!(D>B48$B3!-Z=4```!F@7X0A0`/
+MAX4````/MT80@+PXF`0``/]T=V:#?A!_=Q\/MI0XF`0``(N/6`4``(T$TL'@
+M`BG0BT3!*(I(!.M39H%^$($`=R@/MT80#[:$.)@$``"+CY`%``"-!$"-!,")
+MPL'B!2G"BT21"(I(!.LC#[=&$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I(
+M!.L"L?^+1"0@.$@$=26+1B0E____`#WA`0\`=!:*5"0+B%84@^P(5E?H_/__
+M_X/$$.L3C8?,````BU`$B7`$B0:)5@2),DUFA>UT$HM4)`0YE\P````/A=[^
+M__^)]H/$#%M>7UW#5U93@^P$BW0D%(I$)!B(1"0#OP````!F@WY```^&`0$`
+M`(GV#[?7BX:L!0``BQR0A=L/A.````!F@7L0A0`/AX@````/MT,0@+PPF`0`
+M`/]T>F:#>Q!_=Q\/MI0PF`0``(N.6`4``(T$TL'@`BG0BT3!*(I(!.M69H%[
+M$($`=R@/MT,0#[:$,)@$``"+CI`%``"-!$"-!,")PL'B!2G"BT21"(I(!.LF
+M#[=#$`^VA#"8!```BY9T!0``C01`C02`BT3"5(I(!.L%C78`L?^X_P```&:!
+M>Q"%`'<-#[=#$&8/MH0PF`0```^WP(T4P,'B`BG"BX98!0``C030.DPD`W46
+M#[9`(*@!=`ZH!'0*N`$```#K$XUV`$=F.7Y`#X<!____N`````"#Q`1;7E_#
+MD%575E.#[`B+5"0<BT(HBS"+CN`)``")3"0$9L=$)`(``(UV`+L`````9H-^
+M0`!V3XN^K`4``(GV#[?3@SR7`'0WBPR7BT$D)?___P`]X0$0`'0EBVPD'&:+
+M11AF.T$0=1>)T,'@!F:+3"0"BU0D!&8Y3!`(=`F)]D-F.5Y`=[EF.5Y`=`UF
+M_T0D`F:#?"0"'W:2#[=$)`*#Q`A;7E]=PY!3BU0D"(M,)`R+7"00@WHX`'09
+MBT(XQ@!PBT(XB$@"BT(XQD`'`(M".(A8#%O#B?;#C78`5U93BUPD$(M4)!2)
+MT8'A_P$``(N#K`4``(,\B`!T)XLTB`^V1A4/MIO&````B-G3X`^W^`^WTKC_
+M_P``T^`APHGP.==T!;@`````6UY?PY!64X/L!(M,)!"+="049H%^).$!#X6?
+M````BD8F@^@1/`$/AY$```"Z_P```&:!?A"%`'<,#[=&$`^VE`B8!```C012
+MC02`BY%T!0``C1S"@'LH_W5+L!2`?F@`=`8/MD9HT>`/ML"-!("-!("-!("-
+M!("-!("-!(#!X`:)0UC'0V``````B5MD@^P(C4-84/]Q%.C\____QD,H`(/$
+M$(GVC4,4BU`$B7`$B0:)5@2),OY#*>FG````NO\```!F@7X0A0!W#`^W1A`/
+MMI0(F`0``(T$TL'@`BG0BY%8!0``C1S"BT8D)?___P`]X0$0`'1N@'M(_W55
+ML!2`?F@`=`8/MD9HT>`/ML"-!("-!("-!("-!("-!("-!(#!X`:)@^@```#'
+M@_``````````B9OT````@^P(C8/H````4/]Q%.C\____QD-(`(/$$(U#$(M0
+M!(EP!(D&B58$B3+^0TN#Q`1;7L.-=@!3@^P(BUPD%(![2/]T'8/L"(V#Z```
+M`%"+1"0<_W`4Z/S____&0TC_@\00@\0(6\-3@^P(BUPD%(![*/]T&H/L"(U#
+M6%"+1"0<_W`4Z/S____&0RC_@\00@\0(6\.-=@!55U93@^P,BVPD((MT)"1F
+M@7XDX0$/A;T```"*1B:#Z!$\`0^'KP```+G_````9H%^$(4`=PP/MT80#[:,
+M*)@$``"-!$F-!("+E70%``"-',*!^?\````/A#L!``#^2RF#[`R->Q17Z/S_
+M__^)P8/$$#GP=4.#[`A35>C\____@\00.7L4#X0-`0``QT-8`"TQ`<=#8```
+M``")6V2#[`B-0UA0_W44Z/S____&0R@`@\00Z>$```"0C5,4BT,4B4@$B0&)
+M402)2Q2+5@2+!HE0!(D"Z<````"Y_P```&:!?A"%`'<,#[=&$`^VC"B8!```
+MC03)P>`"*<B+E5@%``"-',*+1B0E____`#WA`1``#X2#````@?G_````='O^
+M2TN#[`R->Q!7Z/S___^)P8/$$#GP=4>#[`A35>C\____@\00.7L0=%''@^@`
+M````+3$!QX/P`````````(F;]````(/L"(V#Z````%#_=13H_/___\9#2`"#
+MQ!#K'(U3$(M#$(E(!(D!B5$$B4L0BU8$BP:)4`2)`I"#Q`Q;7E]=PU575E.#
+M[!2+="0HBVPD+`^W11AF#[:\,)@$```/M]>-!-+!X`(IT(N66`4``(V$PN0`
+M``!05NC\____#[=5&(/$$(.\EI@"````=!B+A):8`@``@WAP`'4+QX26F`(`
+M```````/MT48QH0PF`0``/^#[`@/M]]3C88H"0``4.C\____BY98!0``C03;
+MP>`"*=C!X`.#Q!"`?!`^_W0/@^P(`=!05NC\____@\00@^P(55;H_/___P^W
+MUXN.6`4``(T$TL'@`BG0P>`#QD0((@"+EE@%``#&1!`C`8/$'%M>7UW#D%57
+M5E.#[`R+;"0@9L=$)`J``(GV#[=$)`IF#[:$*)@$``!F/?\`#X3D````9H%\
+M)`J!`'=[#[?`C01`C03`B<+!X@4IPHN%D`4``(T\D+X`````@'\P``^&KP``
+M`(U?*(/L#%/H_/___XU(^(/$$(M3!(E#!(D8B5`$B0*+02`E`/__`#T``/\`
+M=1GV02,$=!.#>1P`=`V+01R*5"0DB%`!C78`1HGQ.$\P=[3K7HGV#[?`C01`
+MC02`BY5T!0``C13"O@````"`>A\`=C^-=@")\0^VP8M,@CR%R70GBT$@)0#_
+M_P`]``#_`'48]D$C!'02@WD<`'0,BT$<BDPD)(A(`8GV1HGP.$(?=\3_1"0D
+M9O]$)`IF@7PD"H4`#X;R_O__.:TD!0``=1:#[`C_="0L@<5@#```5>C#_O__
+M@\00@\0,6UY?7<-3@^P0BUPD&(M$)!P/ME`S9@^VA!J8!```QH0:F`0``/\/
+MM\!0C8-X"0``4.C\____@\0(:@#_LR0%``#H=_[__X/$&%O#B?964X/L#(MT
+M)!B+1"0<#[=`)&8/MIPPF`0``,:$,)@$``#_#[?;4XV&4`D``%#H_/___XN6
+M=`4``(T<6XT<FXT$W0````"#Q!"`?!`T_W0/@^P(`=!05NC\____@\00@^P(
+M:@#_MB0%``#H`O[__X/$%%M>PU.+7"0(N0````"Z>````(G8C78`B`A`2G7Z
+MQD,H_\9#-/^-0Q2)0Q2)0QA;PXUV`%575E.#[!B+?"0LC8=0"0``4.C\____
+M@\00N@````"$P`^%W````(/L#(V'4`D``%#H_/___XG%LX*#Q!"-=@`/ML.`
+MO#B8!```_W43.)_(````<Q&(G\@```#K"8UV`$.`^X5VVKH`````@/N&#X2/
+M````#[;#B>J(E#B8!```#[?%C01`C02`C33%`````(GP`X=T!0``4.C\____
+MBY=T!0``9@^VPV:)1!8D@\0$@'\Y`74.BX=T!0``9L=$!C#__Y`/M]V+AW0%
+M``"-'%N-')O!XP/&1`,F`(N'=`4``&;'1`,R``"#[`AJ`/^W)`4``.C4_/__
+MB=H#EW0%``"#Q!")T(/$#%M>7UW#C78`@^P4BTPD&(M$)!P/ME`$9@^VA`H>
+M!0``QH0*'@4``/\/M\!0@<&@"0``4>C\____@\0<PU.+7"0(N0````"Z&`$`
+M`(G8C78`B`A`2G7ZQD-(_\9#/O_&0TH?C4,0B4,0B4,46\.-=@!55U93@^P8
+MBWPD+(V'*`D``%#H_/___X/$$+H`````A,`/A3$!``"#[`R-AR@)``!0Z/S_
+M__^)Q;,`@\00C78`#[;#@+PXF`0``/]U%V8/ML-F.8?$````<PYFB8?$````
+MZP60_L-YV+H`````@/N`#X3B````#[;#B>J(E#B8!```#[?5C032P>`"*="-
+M-,4`````B?`#AU@%``!0Z/S___^+EU@%``!F#[;#9HE$%AB+AU@%``#&1`8B
+M`(N'6`4``,9$!CG_BX=8!0``QD0&./^+AU@%``#&1`8Z_XN'6`4``,9$!CS_
+MBX=8!0``QD0&._^+AU@%``#&1`8]_XN'6`4``,:$!K(`````BX=8!0``QH0&
+MUP```/^#[`A7Z/S___^+EU@%``")A!;D````@\00@'\Y`74+BX=8!0``@$P&
+M)`$/M\6-%,#!X@(IPHN'6`4``(T4T(G0@\0,6UY?7<.)]E=64X/L'(MT)"R-
+MAG@)``!0Z/S___^#Q!"Z`````(3`#X4@`0``@^P,C89X"0``4.C\____B<?&
+M1"0?@(/$$`^V1"0/@+PPF`0``/]U%HI$)`\XAL<```!S%8B&QP```.L-B?;^
+M1"0/@'PD#X%VT+H`````@'PD#X(/A,<````/MD0D#XGZB)0PF`0```^WQXT$
+M0(T$P(G"P>(%*<*+AI`%``"[`````+D4#0``C020B!A`277Z#[?'C01`C03`
+MB</!XP4IP\'C`HG:`Y:0!0``C4(0B4(0B=@#AI`%``"#P!")0`2)V@.6D`4`
+M`(U"&(E"&(G8`X:0!0``@\`8B4`$B=H#EI`%``"-0BB)0BB)V`.&D`4``(/`
+M*(E`!(N&D`4``(I4)`^(5`,S@^P(:@#_MB0%``#HM?G__XG:`Y:0!0``@\00
+MB="#Q!!;7E_#D%=64X/L'(MT)"R-AJ`)``!0Z/S___^#Q!"Z`````(3`#X7+
+M````@^P,C8:@"0``4.C\____B<?&1"0?`(/$$`^V1"0/@+PP'@4``/]U#HI$
+M)`\X1C1S$(A&-.L+_D0D#X!\)`\#=MBZ`````(!\)`\$='X/MD0D#XGZB)0P
+M'@4```^WQXT40,'B`RG"NP````"Y7````(V$EB@!``"-=@"(&$!)=?H/M\>-
+M%$#!X@,IPHT4EHV"2`$``(F"2`$``(E`!(V"5`$``(F"5`$``(E`!(V"8`$`
+M`(F"8`$``(E`!(I$)`^(@BP!``"!PB@!``")T(/$$%M>7\.)]E93@^P$BW0D
+M$(V&W````+H`````.8;<````="F#[`R-AMP```!0Z/S___^)PXD$).C\____
+MB30DZ/S___^)0TR)VH/$$(G0@\0$6U[#C78`4X/L"(M<)!"+3"04C8/<````
+MBU`$B4@$B0&)402)"H-Y3`!T$X/L"(U!3%!3Z/S___^#Q!"-=@"#Q`A;PXUV
+M`(/L#(M4)!"-@N0```"Y`````#F"Y````'08@^P,C8+D````4.C\____QD`(
+M`(G!@\00B<B#Q`S#4XM<)`R+$XM$)`@%Y````(M(!(E0!(D"B4H$B1''`P``
+M``!;PXUV`(/L#(M$)!"-D.P```"Y`````#F0[````'0.@^P,4NC\____B<&#
+MQ!")R(/$#,.)]E.+7"0,BQ.+1"0(!>P```"+2`2)4`2)`HE*!(D1QP,`````
+M6\.-=@!3@^P(BT0D$(V0_````+D`````.9#\````="6#[`Q2Z/S___^)PX/$
+M$+@`````N9@```")VHUV`(@"0DEU^HG9B<B#Q`A;PY"+1"0(BU0D!('"_```
+M`(M*!(E"!(D0B4@$B0'#@^P,BT0D$(V0!`$``+D`````.9`$`0``=`Z#[`Q2
+MZ/S___^)P8/$$(G(@\0,PXGV4XM<)`R+$XM$)`@%!`$``(M(!(E0!(D"B4H$
+MB1''`P````!;PXUV`(/L#(M4)!"-@O0```"Y`````#F"]````'0;@^P,C8+T
+M````4.C\____QT`4`````(G!@\00B<B#Q`S#D%.+7"0,BQ.+1"0(!?0```"+
+M2`2)4`2)`HE*!(D1QP,`````6\.-=@!55U93@^P,BVPD((M$)"1F@7@0A0`/
+MAYD````/MT`0@+PHF`0``/\/A(<```"+5"0D9H-Z$']W(`^VE"B8!```BXU8
+M!0``C032P>`"*="+1,$HBD`$ZU^0BTPD)&:!>1"!`'<H#[=!$`^VA"B8!```
+MBXV0!0``C01`C03`B<+!X@4IPHM$D0B*0`3K*HM4)"0/MT(0#[:$*)@$``"+
+ME70%``"-!$"-!("+1,)4BD`$ZP6-=@"P_P^VP`^VO"@>!0``C01_P>`#*?B-
+MO(4H`0``BXV0!0``BT0D)&:!>!"%`'<B#[=`$`^VA"B8!```C01`C03`B<+!
+MX@4IPHT4D8E4)`CK"H'![`8-`(E,)`B+5"0DBT(T#[90`8/Z$G02@?J1````
+M#X0J`0``Z9D!``"0BP^)#"2^`````(I0"8A4)`>*0!J(1"0&O0````"`?PH`
+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
+M1(/$$(UV`(/$#%M>7UW#55=64X/L&(M4)"R+0BB+*%7H_/___XG&@\00A<!U
+M$8M$)"#&@+$````!Z94```"0@^P,5>C\____B<>#Q!"%P'4:BU0D(,:"L0``
+M``&#[`A65>C\____@\00ZVB-7CS&1B0EQD85JXM4)"!FBT(89HE&$(EN&,=&
+M(`@```#'1F0(````BT<(B48T@\`(B48XQD8<)(E^4,=&;`````"#[`AJ`%/H
+M_/___VH(_W<0_W<,4^C\____@\085E7H_/___X/$$(/$#%M>7UW#55=64X/L
+M&(M4)"R+0BB+*%7H_/___XG&@\00A<!U$8M$)"#&@+$````!Z9T```"0@^P,
+M5>C\____B<>#Q!"%P'4:BU0D(,:"L0````&#[`A65>C\____@\00ZW"-7CS&
+M1B2>QD8E$,9&,2#&1A6KBU0D(&:+0AAFB480B6X8QT8@(````,=&9`@```"+
+M1PB)1C2)?E"#P"")1CC&1APDQT9L`````(/L"&H`4^C\____:B#_=Q#_=PQ3
+MZ/S___^#Q!A65>C\____@\00@\0,6UY?7<-55U93@^P8BVPD+(I$)#"(1"07
+MBT4HBSA7Z/S___^)PX/$$(7`=0W&A;$````!Z:8```"0@^P,5^C\____B<:#
+MQ!"%P'46QH6Q`````8/L"%-7Z/S___^#Q!#K?8U#/(E$)`3&0R02@'PD"P!T
+M#L9#)0'&0R:`QD,H0.L$QD,H),9#%:MFBT489HE#$(E[&,=#(&````#'0V0(
+M````BT8(B4,TB7-0QT-L`````(/L"&H`_W0D$.C\____:F#_=A#_=@S_="0@
+MZ/S___^#Q!A35^C\____@\00@\0,6UY?7<.-=@!55U93@^P8BW0D+(M&*(L`
+MB40D%%#H_/___XG'NP`(``"#Q!"%P'4,QH:Q`````>F[````@^P,_W0D%.C\
+M____B<6#Q!"%P'4?QH:Q`````8/L"%?_="04Z/S___^#Q!#IB@```(UV`&:!
+M^_\`=@6[_P```,9')!K&1R4(QD<F",9')P"(7RC&1RD`QD<5JV:+1AAFB4<0
+MBT0D"(E'&`^WVXE?(,='9`@```"+10B)1S0!V(E'.,9''"2);U#'1VP`````
+MC7<\@^P(:@!6Z/S___]3_W40_W4,5NC\____@\085_]T)!3H_/___X/$$(/$
+M#%M>7UW#D%=64XM\)!"+1RB+,(/L#%;H_/___XG#@\00A<!U"L:'L0````'K
+M49#&0"05QD`5JV:+1QAFB4,0B7,8:@%J`5-6Z/S___^#Q!"$P'47@^P(4U;H
+M_/___\:'L0````&#Q!#K%9#'0VP`````@^P(4U;H_/___X/$$%M>7\.X!```
+M``^V5"0$@_H7=SG_))5(%@``@\`DPX/`.,.#P!##@\`<PX/`2,.#P!S#@\`\
+MPX/`),.#P!C#@\`4PX/`2,.#P#"-=@##C78`5E.#[`2+="00BUPD%(![/O]T
+M&8/L"`^V0SY0_S;H_/___\9#/O_^3BR#Q!"#Q`1;7L.)]E=64XM\)!"+5"04
+M#[9"(*@"=`VH!'0)J`$/A+4```"0@'H^_P^%J@```(L'BX`8`0``HP````")
+MQK$`N`$```")P]/CA?-U+(A*/HL7B?`)V(F"&`$``(L'BX!8`0``HP````")
+MQB'>=&2+!XFP6`$``.M:08#Y'W;&BP>+@!P!``"C`````(G&L0"X`0```(G#
+MT^.%\W4PC4$@B$(^BQ>)\`G8B8(<`0``BP>+@&`!``"C`````(G&(=YT$8L'
+MB;!@`0``ZP>008#Y'W;"_D<LC78`6UY?PU93@^P$BW0D$(M<)!2`>S3_=!F#
+M[`@/MD,T4/\VZ/S____&0S3__DXL@\00@\0$6U[#B?975E.+?"00BU0D%(!Z
+M-/\/A:<```"+!XN`&`$``*,`````B<:Q`+@!````D(G#T^.%\W4LB$HTBQ>)
+M\`G8B8(8`0``BP>+@%@!``"C`````(G&(=YT8(L'B;!8`0``ZU9!@/D?=L:+
+M!XN`'`$``*,`````B<:Q`+@!````B</3XX7S=2R(2C2+%XGP"=B)@AP!``"+
+M!XN`8`$``*,`````B<8AWG00BP>)L&`!``#K!D&`^1]VQOY'+(UV`%M>7\-5
+M5U93@^P,BVPD((M=`+X`````9H-[0``/AA$!``")]@^WUHN#K`4``(,\D``/
+MA/$````/MGT$BP209H%X$(4`#X>Z````#[=0$("\&I@$``#_#X2H````9H-X
+M$']W*P^VE!J8!```BXM8!0``C032P>`"*="+1,$H#[9`!#GX#X2#````Z9H`
+M```/M]:+@ZP%``"+!)!F@7@0@0!W+0^W0!`/MH08F`0``(N+D`4``(T$0(T$
+MP(G"P>(%*<*+1)$(#[9`!#GX=#_K60^WUHN#K`4``(L$D`^W0!`/MH08F`0`
+M`(N3=`4``(T$0(T$@(M$PE0/MD`$.?AT#>LGC78`@?__````=1R#[`AJ``^W
+MUHN#K`4``/\TD.C\____@\00C78`1F8Y<T`/A_'^__^#Q`Q;7E]=PY"+3"0(
+MBU%,A=)T(HM!)(E"#(M!*(E"$(M!+(E"%(M!,(E"&(M!-(E"',9""`'#B?:+
+M3"0(BU%,A=)T'HM"#(E!)(M"$(E!*(M"%(E!+(M"&(E!,(M"'(E!-,.)]E=6
+M4XMT)!"+7"04.7,8#X2H````@'L4``^%B@````^V0R2#^!5T!8/X575\BTM,
+MA<ET=8!Y"`%U;V:!>0SA`75GB[Y8!0``C9?H%@$`9H%[$(4`=Q</MT,0#[:4
+M,)@$``"-!-+!X`(IT(T4QP^V00Z#^`=T&(/X!W\'@_@&=!7K)X/X#'0<@_@-
+M=!#K&V:#8C;]ZQ1F@THV`NL-9H-B-O?K!F:#2C8(D(-[4`!T#HU#4%!6Z/S_
+M__^#Q`B09H%[).$!#X4T`0``9H%[$(4`=W@/MT,0@+PPF`0``/]T:HN.6`4`
+M`(V1Z!8!`&:!>Q"%`'<3#[:4,)@$``"-!-+!X`(IT(T4P8![%`!U/0^V0R:#
+M^`=T&(/X!W\'@_@&=!7K*(/X#'0<@_@-=!#K'&:#8C;]ZQ5F@THV`NL.9H-B
+M-O?K!V:#2C8(B?9F@7LDX0$/A:@```"`>R8+#X6>````B?=FBTL0#[?1#[9&
+M+DA!.<)](P^V1BZ-4/]F@?F%`'<-#[?!@+PXF`0``/]U#0^WP4$YT'SDN/\`
+M``!F/?\`=%B)]V:+2Q`/M]$/MD8N2$$YPGTF#[9&+HU0_XUV`&:!^84`=PT/
+MM\&`O#B8!```_W4-#[?!03G0?.2X_P```&:)0Q#&0Q2`@^P(4U;H_/___X/$
+M$.D9`0``QD,4`)`Y<QAT)(M#3(7`=!V`>`@!=0I35NC\____@\0(C4-,4%;H
+M_/___X/$"(-[5`!T#8U#5%!6Z/S___^#Q`B#[`A3_W,8_U-L@\009H%[).$!
+M=5N*0R:#Z!$\`7=1N?\```!F@7L0A0!W#`^W0Q`/MHPPF`0``('Y_P````^$
+ME````(T$28T$@(N6=`4``(T$PH!X*0!U?X!X-/]T>8/L"%!6Z/S___^#Q!#K
+M:HGVN?\```!F@7L0A0!W#`^W0Q`/MHPPF`0``(T$R<'@`BG(BY98!0``C13"
+MBT,D)?___P`]X0$0`'0O@?G_````="=F@7LDX0%U"XI#)H/H$3P!=A60@'I+
+M`'4.@^P(4E;H_/___X/$$)!;7E_#5U93BW0D$(M\)!1FBU<>B=!FP>@%#[?8
+MB=&#X1^X_O___]/`B<$A1)Y$9H'Z_P]T1P^WPHN6K`4``(,\@@!T.,<$@@``
+M```AC)ZP!0``@^P(4(V&``D``%#H_/___X/$"%=6Z/S___^#Q`A75NC\____
+M@\00C78`6UY?PU93@^P0BT0D'(N8X`D```4`"0``4.C\____B<8/M]#!X@8!
+MVHM$)"2)$(/$$+L`````N4````")T(UV`(@80$EU^@^WQH/$!%M>PY!75E.#
+M[`2+?"04BD0D'(A$)`.^`````+@`````@W\H`'1"ZP2)QNLEBT\HL@"-=@`/
+MML*#?($\`'0-BT2!/(I<)`,X6$ETW4*`^@1VXXM'*&:!>"2%`'<&B?"%]G4&
+MN`````"0@\0$6UY?PY!55U93BWPD%&8/MEPD'`^V1"08P>`(`<.]`````(!_
+M'``/A+T```"#?S@`#X2S````]D=D"74%O0$```"Q`+Y`$```D`^VT8G89B,$
+MUF8[!-8/A8$```"`?-8%`W0'@'S6!0=U"P^VP8GJ.%3&!'5HQD<4(`^VV0^V
+M1-X&4`^V1-X%4%?H_/___XM7.(I$W@>(0@V#Q`R#?"0@`'0KBT0D((L8BW`$
+MBT<XB7`#BT<X@`B`]D=F!'00A?9T#(M'.(E8"(M'.(`@?XM7.(I''(/H!XA"
+M!^L.B?9!@/D/#X9B____B?9;7E]=PXUV`%575E.#[`R+?"0@BW0D)&:!?A"%
+M``^'B0````^W1A"`O#B8!```_W1[9H-^$']W(`^VE#B8!```BX]8!0``C032
+MP>`"*="+1,$HBD@$ZU>09H%^$($`=R@/MT80#[:$.)@$``"+CY`%``"-!$"-
+M!,")PL'B!2G"BT21"(I(!.LF#[=&$`^VA#B8!```BY=T!0``C01`C02`BT3"
+M5(I(!.L%C78`L?^Z_P```&:!?A"%`'<-#[=&$&8/MI0XF`0``(#Y_P^$DP``
+M``^VP8"\.!X%``#_#X2"````9H'Z_P!T>X!^%`9T=0^VG#@>!0``C01;P>`#
+M*=B-G(<H`0``#[?2C032P>`"*="+EU@%``"-+,*`?B8!=2B#[`QJ"NC\____
+M@\0(5E?H_/___X/$#&H"55/H_/___X/$$.L?C78`@^P,:/0!``#H_/___X/$
+M"%97Z/S___^#Q!")]H/$#%M>7UW#5U93BW0D&(M$)!"+&(/L#%/H_/___XG"
+M@\00A<!T:<9`).'&0"4!B?"(0B;&0B</BT0D%&:+0!AFB4(0B5H8QT(@````
+M`,="-`````#'0FP`````@^P(4E/H_/___X/$$(GP/`%U$8/L#&H%Z/S___^#
+MQ!#K$HGV@^P,:%##``#H_/___X/$$%M>7\-64X/L!(MT)!"+7"049H%[$(4`
+M#X>+````#[=#$("\,)@$``#_='UF@WL0?W<B#[:4,)@$``"+CE@%``"-!-+!
+MX`(IT(M$P2B*2`3K68UV`&:!>Q"!`'<H#[=#$`^VA#"8!```BXZ0!0``C01`
+MC03`B<+!X@4IPHM$D0B*2`3K)@^W0Q`/MH0PF`0``(N6=`4``(T$0(T$@(M$
+MPE2*2`3K!8UV`+'_LO]F@7L0A0!W"P^W0Q"*E#"8!```@/G_=!@/ML&`O#`>
+M!0``_W0+@/K_=`:`>Q0&=22#>U``=`Z-0U!05NC\____@\0(D(/L"%-6Z/S_
+M__^#Q!#K:9`/ML$/MHPP'@4``(T$2<'@`RG(C8R&*`$```^VTHT$TL'@`BG0
+MBY98!0``C03"@'L4`'00@^P$:@%04>C\____@\00D(-[4`!T#HU#4%!6Z/S_
+M__^#Q`B0@^P(4U;H_/___X/$$(UV`(/$!%M>PXGV55=64X/L&(M$)"R+*%7H
+M_/___XG&@\00A<`/A(L```"#[`Q5Z/S___^)QX/$$(7`=1*#[`A65>C\____
+M@\00ZVJ-=@"-7CS&1B3AQD8E`<9&)@Z+5"0D9HM"&&:)1A!F@V(T]XM4)""+
+M`HE&&,=&(``(``"+1PB)1C2)?E#'1FP(!P0`@^P(:@!3Z/S_____=B#_=Q#_
+M=PQ3Z/S___^#Q!A65>C\____@\00@\0,6UY?7<.05U93BWPD$(MT)!2+1RB+
+M&(/L#%/H_/___XG"@\00A<!T/L9`)!O&0"4!B?"(0BAFBT<89HE"$,9":`^)
+M6AC'0B``````QT(T`````,=";`````"#[`A24^C\____@\006UY?PU=64XM\
+M)!"+1RB+,(/L#%;H_/___XG#@\00A<!T;(/L#%;H_/___XG"@\00A<!U&,:'
+ML0````&#[`A35NC\____@\00ZT2)]L9#)`!FBT<89HE#$,9#:`^)<QC'0R``
+M````QT,T`````(M""(E#.,9#'"2)4U#'0VP`````@^P(4U;H_/___X/$$%M>
+M7\.)]E575E.#[!"+;"0HBUPD+,9#(P'&0R(`4VH&5>C\____@\00@WLL`'01
+MBU,,BT,(B5`$B0*+0RS^2#"`>TL`="&#[`S_="0LZ/S____'!"0!````Z/S_
+M__^#Q!"`>TL`==^#N^``````=!Z#[`1J`0^V@]4```!0_[/@````Z/S___^#
+MQ!"-=@"#>RP`=!:#[`1J`0^V0TE0_W,LZ/S___^#Q!"0@WL<``^$J````(MS
+M'(-^<``/A8T```"#?G0`#X6#````]D,D!'4LBT0D(/Z`5PP``(/L#%#H_/__
+M_X/$#&H!BT,<#[9``5#_="0LZ/S___^#Q!"#[`2+0QP/MD`"4(M#'`^V0`%0
+M:(T!``#H_/___X/$#/]S'(M$)"C_L"0%``!J`>C\____@\0,_W,<BT0D*/^P
+M)`4``&H&Z/S___^#Q!"-=@#'0QP`````QT9@`````(-[,`!T#XM3,`^V0TG'
+M1((\`````(M3!(L#B5`$B0+^30J#[`A3_W0D+.C\____@\00@'T%_W16OP``
+M``"`?0H`=C>-=3B#[`Q6Z/S___^)PX/$$(M&!(E>!(DSB4,$B1B`>R+_=0I'
+MB?@X10IWU^L)B?@X10IW%HGVQD4%_X/L"%7_="0LZ/S___^#Q!"#Q`Q;7E]=
+MPP^V1"0(C13`P>(#*<*-%)"-%)5T10``BT0D!(D0PXGV5E.#[`2+="04BD0D
+M&(A$)`.+7"00N`````")\8G:A?9T"(GVB`)"277ZB3.-AHRZ___!Z`*Z6;;Y
+M<O?BB=#!Z`>(0P2*1"0#.$,$=@.(0P2Q`(![!`!V(0^VT<9$$P?_C032P>`#
+M*="-!(+&A(/810``_4$X2P1WW\9#!@#&0P4`L0"0#[;!C12`C130C923D#$`
+M`,9"!P&(2@9!@/D?=N.#Q`1;7L.055=64X/L#(ML)"2+="0@OP````"`?@0`
+M=CZ)]HGX#[;8C03;P>`#*=B-!(.-A(;010``@'@(_707@^P$:@A54.C\____
+M@\00A,!T!(G8ZPU'B?@X1@1WQ+C_````@\0,6UY?7<.-=@!3@^P0BUPD&/]T
+M)!Q3Z/S___^#Q!"Z"0```#S_=!8/MM"-!-+!X`,IT(T$@@^VE(-Z10``B="#
+MQ`A;PY!55U93@^P,BUPD)(V#D````(G?B[.8````@'X&``^$00$``(/L"%!6
+MZ/S___^)Q8/$$#S_#X0J`0``#[9#`8/X`71E@_@!?PR%P'0AZ1,!``"-=@"#
+M^!`/A(,````]D`````^$Q0```.GW````@+Z7,0````^%Z@```,:&ES$```'^
+M3@:#[`AJ`&H`:@")Z@^VPE#_="0X5NC\____@\0@Z;\```"-=@"`OI<Q````
+M#X6O````QH:7,0```?Y.!H/L"&H`:@!J`8GJ#[;"4/]T)#A6Z/S___^#Q"#I
+MA````+$!B?8/ML&-%("-%-"-A):0,0``B>HX4`1U"8I`!3I'"70'D$&`^1]V
+MVOY.!H/L"%</MD<)4&H0B>H/ML)0_W0D.%;H_/___X/$(.LW#[:#H@```(T4
+M@(T4T,:$EI<Q```!_DX&@^P(:@!J`&B0````B>H/ML)0_W0D.%;H_/___X/$
+M((/$#%M>7UW#55=64X/L!(ML)!R*1"0DB$0D`XM4)"AFB10DBUPD&+\`````
+MB?D/ML&-%$")T<'A!@'*C110.6S3%`^%C````+D`````B?@/MO"-!':)PL'B
+M!@'0C01&C13%`````(GV#[?!C01`C03"C408((!X$`!T!H!X$/!U2P^WT8T4
+M4HT$=HG!P>$&`<B-!$:-%`*-%-.):AR+3"0@B4H@C4(0BPPD9HE(%HI,)`.(
+M2!2+3"0LBP&)0BB+002)0BS&0C#_ZPJ)]D%F@?F!`':41XGX/`,/ADW___^#
+MQ`1;7E]=PY!55U93@^P,BVPD(`^V?"0HB>N-M?0P``#&A9<Q````N@````"Y
+MD````(GPD(@00$EU^L9&`0#&!D#'@Y`Q``!T#00`B:N,,0``B?@/MM"-!-+!
+MX`,IT(T$@HT$@XN0T$4``(F3A#$``(N`U$4``(F#B#$``(/L"(V#]#```%#_
+M="0PZ/S___^#Q!Q;7E]=PY!55U93@^P,BVPD(`^V?"0HB>N-M?0P``#&A9<Q
+M````N@````"YD````(GPD(@00$EU^L9&`0'&!D#'@Y`Q``!T#00`B:N,,0``
+MB?@/MM"-!-+!X`,IT(T$@HT$@XN0T$4``(F3A#$``(N`U$4``(F#B#$``(/L
+M"(V#]#```%#_="0PZ/S___^#Q!Q;7E]=PY!55U93@^P,BDPD*(I$)"R(1"0+
+MBWPD(+,!#[;!C13`C2S5`````"G%C2RHD`^VPXT4@(T4T(V$EY`Q``"`>`<!
+M#X6V````B$@$BE0D"XA0!<9`!P`/MG`&C02VC03&C;2']#```+D`````NI``
+M``")\(UV`(@(0$IU^L9&`1#&!D"*1"0+B$8)#[;#C0R`C0S(C0R/C9F0,0``
+M#[9#!HT4@(T4T(T4E\>"D#$``'0-!`"+1"0@B8*,,0``C12OBX+010``B8&$
+M,0``BX+410``B8&(,0``@^P(#[9#!HT4@(T4T(V4E_0P``!2_W0D,.C\____
+M@\00ZQ*-=@!#@/L?#X8F____N`$```"#Q`Q;7E]=PY!55U93@^P,BD0D+(A$
+M)`N+;"0PBWPD(+,!B>H/MM:)5"0$B?8/ML.-%("-%-"-%)>-@I`Q``"`>`<!
+M#X6H````QD`'`(FZC#$```^V0`:-%("-%-"-M)?T,```N0````"ZD````(GP
+MD(@(0$IU^L9&`9#&!D"*3"0$B$X&B>B(1@>*5"0+B%8)BTPD-(L!B480BT$$
+MB484#[;#C12`C130C127QX*0,0``=`T$`(M$)"")@HPQ``"+3"0HBT%<B8*$
+M,0``BT%@B8*(,0``@^P(@<+T,```4O]T)##H_/___X/$$.L2C78`0X#['P^&
+M,O___[@!````@\0,6UY?7<.055=64X/L#(ML)""*1"0LB$0D"XM\)#")[HV=
+M]#```+D`````NI````")V)"("$!*=?K&0P$3Q@-`B?H/ML:(0P:(4P>*5"0+
+MB%,)QX:0,0``=`T$`(FNC#$``(M4)"B+0ER)AH0Q``"+0F")AH@Q``"#[`B-
+MAO0P``!0_W0D,.C\____@\0<6UY?7<.+1"0(#[94)`QFBTQ0<$%FB4Q0<&8/
+MMD`"`<@/M\##D(M,)`2Z`0```(UV`(T$DHT$PH"\@9<Q```!=02)T,.00H/Z
+M'W;FN/__``##4X/L"(M<)!"*1"04B$0D`XI,)!B(3"0'N@$```"-=@"-!)*-
+M!,*-A(.0,0``BDPD`SA(!'42BDPD!SA(!74)QD`'`>L)C78`0H/Z'W;2@\0(
+M6\.055=64X/L/(I$)%B(1"0OBDPD7(I4)&"(5"0NBVPD4(M\)&0/MM"-!-+!
+MX`,IT(T$@H"\A=A%``#]=06Q_8UV``^VP8/X$`^$M`(``(/X$'\7A<`/A)L`
+M``"#^`$/A#0!``#I00D``)`]X@````^$L0@``#WB````?Q(]D`````^$CP<`
+M`.D>"0``B?8]_P````^%$0D```^V5"0OC032P>`#*="-!(+&A(7810``_X"]
+MES$```%U)(/L!%+_="1<_W0D7.C\____@\00A<`/A=0(``#^10;IS`@```^V
+M1"0OQD0%!P&+5"14B52%#.FU"```D(V=]#```("]ES$```%U50^V3"0OC03)
+MP>`#*<B-!(&-1(4`BE,)B)!V10``!=!%``"*4PJ#X@&(4`G&0`@`@^P$4?]T
+M)%S_="1<Z/S___^#Q!"%P`^%6@@``/Y%!NE2"```B?8/MD0D+\9$!0<!BU0D
+M5(E4A0SI.0@``,9$!0?_@^P(:@!J`&C_````4/]TA0S_="1LZ/S___^#Q"#I
+M$@@``+\`````C8WT,```#[94)"^)UHT$TL'@`RG0C02"C5R%`(I!,HB#QD4`
+M`&:+03!FB8/$10``BT$HB8.T10``BT$LB8.X10``BT$,B8.$10``BT$0B8.(
+M10``C9.410``BT$4B8.410``BT$8B4($BT$<B4((BT$@B4(,BT$DB8.L10``
+MQH/810```8!]!A\/A'X'``"`NW9%````#X29````#[9$)"^-%,"-'-4`````
+M*<.-')B)7"0HB40D#)")^@^VPE!6_W0D7/]T)%SH_/___X/$$(7`=2]'_D4&
+MC03VP>`#*?"-!(:-1(4`B?HXD'9%``!U"<:`QT4```#K&XB4G<=%``#K$HGZ
+MBT0D*(B4A<=%``#K(XUV`(!]!A]T&HMT)`R-!/;!X`,I\(T$AHGZ.)2%=D4`
+M`'>$QH67,0```;(`@'T$``^&Q08``)`/ML*`?`4'`0^$??[__T(X501W[.FK
+M!@``C78`QD0D)_^+1QB)1"0PC4PD,(M''(E!!`^V5"0OC032P>`#*="-!(*-
+M=(4`C8;010``QD`($/9'#'`/A)8#``"#OMQ%````=&V*6`J#[`1J"%&+AMQ%
+M``"#P%Q0Z/S___^#Q!"$P'5.]D</#W1(B[;<10``A?9T/H!^90!T+0^VVU-6
+M5>C\____C5<84@^WP%!35O]T)'#_="1PZ/S___^*7F:+=FB#Q"3K!;X`````
+MA?9UQ(GV#[9/#_;!#0^$.P$```^V5"0OC032P>`#*="-!(*-%(4`````C80J
+M<$4``(!X!!\/AQ,!``"*0`2(1"0E]L$(=!(/ML#!X`0!T,:$*.A'```&ZR,/
+MMDPD)0^V5"0OP>$$C032P>`#*="-!(*-!('&A"CH1P``!P^V5"0E#[9$)"_!
+MX@2-#,#!X0,IP8T,B,'A`@'*`>J-FN!'``#&0PD`BD</B$,+BT0D,(F"\$<`
+M`(M$)#2)@O1'``"*1PF(0PJ*5PV#X@^*A"EZ10``.-!V`HC0B,*#X@^*0PR#
+MX/`)T(A##`^V3"0E#[94)"_!X02-!-+!X`,IT(T$@L'@`@'!C8PIX$<``(I7
+M*8/B#XJ$*'I%```XT'8"B-"(PL'B!(I!#(/@#PG0B$$,#[94)"^-!-+!X`,I
+MT(T$@OZ$A71%``#IVP$``(UV`/9'#P(/A,X!``"#[`B-1"0X4%7H_/___XA$
+M)#:#Q!`\_P^%30$``,9$)"<`@'T$`'8P#[94)">-!-+!X`,IT(T$@HV$A=!%
+M``"`>`C_=!.`>`C]=`W^1"0GBD0D)SA%!'?0#[94)">-!-+!X`,IT(T$@KD`
+M````NF0```"-A(5T10``D(@(0$IU^@^V5"0GC032P>`#*="-!(*-1(4`#[94
+M)"^-'-+!XP,ITXT<FHU<G0"-DW1%``")D-Q%``"+D]!%``")D,A%``"+D]1%
+M``")D,Q%``"+5"14B9#D1P``BY/@10``B9#@10``QH#810``_XV0<$4```^V
+M<@N*3PF(C#!\10``_D(+BD\-@^$/BH-Z10``.,AV`HC(B$(*#[94)">-!-+!
+MX`,IT(T$@HU$A0"-B-!%``"+5"0PB9#010``BU0D-(E1!(I7#XB0=T4``(I$
+M)"Z(00J*104Z101U!,9%!0#^107K4\9'!P#I.`,```^V1"0OC0S`P>$#*<&-
+M#(@/ME0D)HT$TL'@`RG0C02"C5R%`(V#=$4``#F$C=Q%``!T%XV#<$4```^V
+M2`N*5PF(E`M\10``_D`+@'PD)O]U$P^V1"0GQD0%!P&+5"14B52%#)`/MD<)
+M4`^V7"0S4U7H_/___XT$V\'@`RG8C02#@\0,@+R%QT4````/A+,```"`?08?
+M#X2=`@``#[9<)"^-!-O!X`,IV(T$@\'@`HT4*(E4)""!PG!%``")5"0<`>B)
+M1"00ZV.0BW0D$,:&V$4``!"-OL!%```/MD<'4%/_="1<_W0D7.C\____@\00
+MA<`/A4$"``#^108/MD<'0`^VEG9%```YT`^$Z?[__XT$V\'@`RG8C02#_H2%
+MQT4``(!]!A\/A`X"``"+5"0@BH+'10``BU0D'#I"!G*+Z?8!``")]H!]!@`/
+MA>H!``"#[`AJ`&H`:)`````/MD0D0U#_="1L_W0D;.C\____@\0@Z<,!``#&
+M1`4'_X/L"&H`:@!H_P```%#_=(4,_W0D;.C\____QD0D-P&#Q"#IX0```(UV
+M`,9$)!<`QT0D&`````"+5"08C012B<+!X@8!T(M4)!B-!$*+5"14.53%%'5]
+MNP````"+5"08C012B<+!X@8!T(M4)!B-!$*-/,4`````C78`C01;C03'C0PH
+MC7$@@'X0_W4^@'T&'P^$*`$``(/L"(U!*%"-41`/MT(64`^V0A10_W$@_W0D
+M;/]T)&SH_/___X/$((7`=0G^10;&1A#PB?9#@?N!````=J?_1"08@WPD&`,/
+MAE7___^`?08`#X72````L@"`?00`=A0/ML*`?`4'`0^$^?[__T(X501W[(!\
+M)!<`#X6K````@^P(:@!J`&CB````#[9$)$-0_W0D;/]T)&SH_/___X/$(.F$
+M````LP"`?00`=BL/MM.-!-+!X`,IT(T$@HV$A=!%``"`>`C]=`J`>`C_=`3&
+M0`C^0SA=!'?5#[94)"^-!-+!X`,IT(T$@HNTA>!%``"S``^VPXT40(G1P>$&
+M`<J-%%"-5-4`C4(0@'@(`743QD`(`(/L"/]R%/]T)%S_UH/$$$.`^P-VRHGV
+M@\0\6UY?7<-55U93@^P$BWPD'(ML)"2*1"0@B$0D`XM,)!C&10#^LP"^````
+M`(!Y!`!V-@^VTXT$TL'@`RG0C02"C02!.;CD1P``=1>)\CI4)`-U"XJ`V$4`
+M`(A%`.L*1HUV`$,X601WRH/$!%M>7UW#B?955U93@^P,BVPD((I$)"R(1"0+
+MB>Z*104Z101U!,9%!0`/MGX%LP`/ML.-%$")T<'A!@'*C110C036BU0D)#E0
+M%'5%QD`8`;\`````@'X$`'9HB?@/MM"-!-+!X`,IT(T$@HT$AHM4)"0YD.1'
+M``!U#8J`V$4``(/``SP!=CQ'B?@X1@1WS.LR#[;#C11`B='!X08!RHT44(T$
+MUH-X%`!U#XM4)"2)4!3&0!@!ZPR)]D.`^P,/AFW___\/ML.-%$")T<'A!@'*
+MC110NP````"Y`@P``(U$UAR(&$!)=?J)^`^VT(M$)"2)1)8,C032P>`#*="-
+M!(*Y`````+ID````C82&=$4``(@(0$IU^HGX#[;0C032P>`#*="-!(*Y````
+M`+H``@``C82&Y$4``(GVB`A`2G7ZB?H/MLJ-!,G!X`,IR(T$@8T$AHM\)"2)
+MN.1'``"+5"0PB9#@10``C9C010``QD,(_\>`W$4```````"+?"0HBQ>)D-!%
+M``"+5P2)4P2*5"0+B)!Z10``@^P(:@!J`&C_````4?]T)#Q5Z/S____^1@6#
+MQ"Q;7E]=PY!55U93BVPD&(MT)!2_`````(!^!``/AI8```")^`^VT(T$TL'@
+M`RG0C02".:R&Y$<``'5QLP$/ML.-%("-%-"-A):0,0``B?HX4`1U!,9`!P%#
+M@/L?=M^)^`^VT(T$TL'@`RG0C02"C02&QX#D1P```````+D`````NF0```"-
+M@'1%``"("$!*=?J)^`^VT(T$TL'@`RG0C02"QH2&V$4``/W^3@5'B?HX5@0/
+MAVK___^_`````(GZ#[;"C11`B='!X08!RHT44(T$UCEH%'4XQT`4`````,9`
+M&`"S`(GZ#[;"C11`B='!X08!RHT44,'B`XGV#[;#C01`C03"QD0P,`!#@/N!
+M=NQ'B?@\`W:G6UY?7<-55U93@^P<BTPD-(M$)$"*5"0\B%0D&XM\)#"]````
+M`+,`@'PD.`$/A?<```"%P`^$U````(E$)!2`?P0`=BF0B>@/MM"-!-+!X`,I
+MT(T$@CF,A^1'``!U!SI<)!MT"4-%B>HX5P1WV(GJ#[;"C1S`P>,#*<.-')B-
+M')^-@W1%``"#[`1J9%#_="0@Z/S___^^`````(/$$("[=$4```!T:(GH#[;0
+MC032P>`#*="-!(+!X`*)1"0,C90X<$4``(E4)!"0B?(/ML+!X`2+5"04C1P0
+MC4MD`T0D#`'XC9#H1P``BX#H1P``B4-DBT($B4$$BT((B4$(BT(,B4$,1HGP
+MBU0D$#A"!'>[B>@/MM"-!-+!X`,IT(T$@@^VA(=T10``ZSJ0O0````"^````
+M`(!_!`!V)(GP#[;0C032P>`#*="-!((YC(?D1P``=0-%B?9&B?(X5P1WW(GJ
+M#[;"@\0<6UY?7<.0D)!64XM$)`R+$(LRL0"`>BL`=A0/ME@)B?:)V-/XJ`%U
+M!D$X2BMW\H#Y`W81#[;!BX2&T`$``*,`````ZP\/ML&+A(;0`0``HP````"I
+M```0``^5P`^VP%M>PXUV`%575E.#[`R+1"0DBU0D((LJBWT`QD`A`,9`(`7&
+M0",&B5`HQD0D!P#'1"0(`````+,`@'TK`'88BTPD(`^V40F)T(C9T_BH`74&
+M0SA=*W?P@/L#=A,/ML/'A,<``@``+````.L1C78`#[;#QX3'``(``"P```"#
+M[`QH$"<``.C\____@\00@/L#=A4/ML.+A,<$`@``HP`````/MO#K$Y`/ML.+
+MA,<$`@``HP`````/MO`)="0(@/L#=A$/ML/'A,<``@``)````.L/D`^VP\>$
+MQP`"```D````@^P,:!`G``#H_/___X/$$(#[`W89#[;#BX3'!`(``*,`````
+MB<:!YO___P#K%P^VPXN$QP0"``"C`````(G&@>;___\`B?#!X`@)1"0(@/L#
+M=A,/ML/'A,<``@``(````.L1C78`#[;#QX3'``(``"````"#[`QH$"<``.C\
+M____@\00@/L#=A4/ML.+A,<$`@``HP````")QNL3B?8/ML.+A,<$`@``HP``
+M``")QH%\)`@!`6F6=1F+1"0@@$@(!HGPP>@0/%`/E,`/ML#K2HGV@7PD"`$!
+M``!U$HGPP>@0/%`/E,`/ML#K+XUV`(/L#&B($P``Z/S___^#Q!#^1"0'@'PD
+M!P0/AD'^__^)\,'H$#Q0#Y3`#[;`@\0,6UY?7<-64X/L!(MT)!"+'E;H_/__
+M_X/$!(3`=13&1@7_@^P(5E/H_/___X/$$.M=D+$`@'LK`'82#[96"8G0T_BH
+M`74&03A+*W?R@^P,4^C\____B<&#Q!"%P'0PC48XBU`$B4@$B0&)402)"OY&
+M"HEQ*,9!(`7&02$`QD%)#VH!:@%15NC\____@\00@\0$6U[#B?955U93@^P,
+MBVPD((MT)"2+?0"["@```)"#[`A65>C\____@\00A,!U$X/L#&CH`P``Z/S_
+M__^#Q!!+==RQ`(!_*P!V$@^V50F)T-/XJ`%U!D$X3RMW\HM6!(L&B5`$B0+^
+M30J#[`A65^C\____@\00]D4(`G1*@WTH`'49@^P,5^C\____@\00A<`/A&@!
+M``")12CK`XM%*(DXB6A4QD`J`,9`*P#&0"8`9H-(,@2#[`A05^C\____@\00
+MZ3@!``"#?2@`#X3-````@^P(BT4H@\!84/]W%.C\____@\0(_W4H5^C\____
+M@\00C44XB<(Y13@/A)<```")PY"#[`Q2Z/S___^)QH/$$(-X'`!T98M`',=`
+M8`````#V1B0$=27^AU<,``"#[`Q7Z/S___^#Q`QJ`8M&'`^V0`%05^C\____
+M@\00@^P$_W8<_[<D!0``:@'H_/___X/$#/]V'/^W)`4``&H&Z/S____'1AP`
+M````@\00_DT*@^P(5E?H_/___X/$$(G:.5TX#X5L____QT4H`````(!]"@!T
+M%H/L#(U%.%#H_/___XG&_DT*@\00ZPZ#[`Q7Z/S___^)QH/$$(7V=#.-13B+
+M4`2)<`2)!HE6!(DR_D4*B6XHQD8@!<9&(0#&1B,&QD8B`X/L"%97Z/S___^#
+MQ!"#Q`Q;7E]=PU575E.#[`R+?"0@BVPD)(I$)"B(1"0+BD0D+(A$)`J+!XE$
+M)`2Z`````+X`````@'\*`'8WC5\X@^P,4^C\____B<*#Q!"+0P2)4P2)&HE"
+M!(D0.6HL=0R*1"0+.$))=`N-=@!&B?`X1PIWS(GP.$<*="V`?"0*4'4FQD(C
+M!L9"(@7&0B`'QD(A`(EJ+(EZ*(/L"%+_="00Z/S___^#Q!"#Q`Q;7E]=PU57
+M5E.#[`R+;"0@BWT`QD0D"_^S@+[_____@/N%=PL/ML,/MK0XF`0``(GP//]T
+M2`^VP(N/D`4``(T$0(T$P(G"P>(%*<*-!)4`````.6P("'4E@^P$:@C_="0L
+M`X>0!0``4.C\____@\00A,!T"8GPB$0D"^L'D$.`^X%VEP^V1"0+@\0,6UY?
+M7<.055=64X'L+`(``(J$)$@"``"(1"0?BY0D0`(``(M2"(E4)!B+*HN,)$`"
+M``"*23"(3"07BX0D0`(``(/`*(G"BXPD0`(``#E!*`^$9P(``(!\)!<`#X1<
+M`@``B40D#(GV@^P,4NC\____C7#X@\0$C40D+%`/MD0D+U!J`?]T)##_M"1@
+M`@``Z/S___^_`````(/$((!\)"``#X;A````C58(B50D$(GV@^P$:@B-AIP`
+M``!0B?D/ML'!X`2-5"0LC1P0C4-L4.C\____@\00A,`/A)D```"-4V"*0@B#
+MX`^(AK(```!FBTXT@>'?_?__B<B#R!!FB48TBD((P.@$/`EU"8G(@\@P9HE&
+M-(GY#[;!P>`$BH0$B````,#H!#P*=09F@4XT``*+A"1``@``@\`HBU`$BTPD
+M$(E(!(E&"(E1!(D*BD8DJ`)T-8/@_8A&)(-^'`!T*8/L!/]V'/^U)`4``&H&
+MZ/S___^#Q!#K$9!'B?@X1"0@#X<K____ZPV0B?HX5"0@#X<+`0``@^P$5FH&
+M_W0D).C\____@\00@'Y+`'0>@^P,5>C\____QP0D`0```.C\____@\00@'Y+
+M`'7B@[[@`````'0=@^P$:@$/MH;5````4/^VX````.C\____@\00B?:#?BP`
+M=!:#[`1J`0^V1DE0_W8LZ/S___^#Q!"0@WX<`'1EBT8<QT!@`````/9&)`1U
+M)?Z%5PP``(/L#%7H_/___X/$#&H!BT8<#[9``5!5Z/S___^#Q!"#[`3_=AS_
+MM20%``!J!NC\____@\0,_W8<_[4D!0``:@'H_/___\=&'`````"#Q!"+5@2+
+M!HE0!(D"BTPD&/Y)"HN$)$`"``#^2#"#[`A65>C\____@\00_DPD%XM4)`R+
+MC"1``@``.5$H=`N`?"07``^%JOW__X'$+`(``%M>7UW#C78`55=64X'L*`(`
+M`(N\)$`"``"+A"0\`@``BP")1"08QD0D%P"-7"0<4P^VM"1,`@``5FH!_[0D
+M2`(``%?H_/___X/$'%97_[0D1`(``.C\____BX0D2`(``(M0*(UJ^(/$$(N$
+M)#@"``"#P"@YPG0KB<*-=@"`?2$-=`:`?2$B=1#&1"0+`<9%(@7&12,$ZPN0
+MBT4(C6CX.=!UVL9$)`H`@'PD$``/ANP!``"+G"0X`@``@\,HBY0D.`(``(M"
+M*(UP^#G8=#4/MD0D"HG'P><$D(/L!&H(C80\A````%"-AIP```!0Z/S___^#
+MQ!"$P'4*BT8(C7#X.=AUUHU&"#G8#X5_`0``QD0D"P"#[`S_="08Z/S___^)
+MQH/$$(7`#X2(`0``BX0D,`(``/Y`"L9&(@7&AK``````QD8C!&;'AI``````
+M`,:&D@````#'1D````4`QT9$``````^V1"0*P>`$C40$<(I0!(A6((I0!8A6
+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
+M`@!T$`T```0`)?___?^)@DP+```/ME0D#XG0P>`$`=#VA(5."P``!`^$N0(`
+M`#FM)`4``'4,C;5@#```B70D&.L*BX4D!0``B40D&(/L!`^V3"03B<C!X`0!
+MR(U$A0`/MI!7"P``4@^VD%8+``!2#[:050L``%(/MI!4"P``4@^VD%,+``!2
+M#[:04@L``%(/MI!1"P``4@^V@%`+``!0#[9%*5!1:#P&``#H_/___X/$,&;'
+M1"04@``/ME0D#XG0P>`$`="-A(50"P``B40D$`^W1"04BU0D&&8/MH00F`0`
+M`&8]_P!T.0^WP(T$0(T$P(G"P>(%*<*+3"08BX&0!0``C1R0BWPD$+D(````
+M_(G>\Z8/E\(/DL`XP@^$=0$``&;_1"049H%\)!2!`':A@^P,5>C\____B<.#
+MQ!"%P`^$=@(```^V5"0/B=#!X`0!T/:$A4T+```$=`2`2S4"#[94)`^)T,'@
+M!`'0]H2%3@L```1T!(!+-1`/ME0D#XG0P>`$`=#VA(5-"P``"'0$@$LU!`^V
+M5"0/B=#!X`0!T/:$A4X+```(=`2`2S4@#[94)`^)T,'@!`'0]H2%30L```)T
+M!(!+-0$/ME0D#XG0P>`$`=#VA(5."P```G0$@$LU",9#,``/ME0D#XG0P>`$
+M`="-1(4`BY!0"P``B1.+@%0+``")0P2+1"0PB4,(4.C\____B(.+````BU0D
+M-/Y"'+$`@\0$@'TK`'8DBW0D,`^V1@G3^*@!=!`/MD0D%XA,&$#^0S+^1"07
+M03A-*W?<C5,@BT0D,(/`+(M(!(E0!(E#((E*!(D1BT0D,/Y`-(/L#&@`````
+M#[:#BP```%!3_W0D2/^UQ`D``.C\____@\0@Z24!``"#[`P/MD,'4`^V0P90
+M#[9#!5`/MD,$4`^V0P-0#[9#`E`/MD,!4`^V`U!HC`8``.C\____@\0HBU0D
+M.,9"!?]25>C\____@\00Z=<```"-=@`/ME0D#XG0P>`$`="-=(4`]H9."P``
+M"`^$MP```(/L#%7H_/___XG#@\00A<`/A*$```#&0",&QD`B!6;'@)``````
+M`,9`(`;&0"$`QT!````%`,=`1`````"+EE`+``")D)P```"+AE0+``")@Z``
+M``")DY0```")@Y@```"+3"0PB4LH4>C\____B(.R````9H-+-!#_="0TZ/S_
+M__^#Q`@\"78&9H%+-``"BW0D,,9&"@&)\(/`.(M0!(E8!(D#B5,$B1J#[`A3
+M5>C\____@\00D(/$'%M>7UW#55=64X/L#(MT)""+?"0DL`"%_W0#BD<%#[;`
+MO0````"%P'00/?\````/A$L!``#IC`4``(GJ#[;"BH0P'@4``#S_=!(/MM"-
+M!%+!X`,IT(V\AB@!``!%B>F`^0-VUKT`````D(GJ#[;"BH0P'@4``#S_=#0/
+MMM"-!%+!X`,IT(V\AB@!``#V1P8"=!"#[`AJ`%?H_/___X/$$.L,@^P,5^C\
+M____@\0018GI@/D#=K1F#[9&)F8YAJ0)```/A?X$``"%_P^%F@```(!^.0`/
+MA>P$``#&1CD!NP````"-=@`/M].+C):8`@``A<ET+H-Y<`!T*(M!<,=!<```
+M``#'A):8`@```````(/L!&K_4?]Q>/_0@\00ZS^-=@`/M].#O):8`@```'0O
+MBX26F`(``(-X=`!T(HM!=,=!=`````#'A):8`@```````(/L#/]Q>/_0@\00
+MB?9#9H/[/W:!Z5P$``#&1P7_@^P(5U;H_/___X/$$.E&!```QD0D"P"0#[9$
+M)`N*A#`>!0``//\/A.P````/MM"-!%+!X`,IT(V\AB@!``"`?P7_#X30````
+MO0````"`?PH`#X:U````C5\X@^P,4^C\____B40D%(/$$(M#!(M4)`2)4P2)
+M&HE"!(D0@'HB_W1_@+JQ`````'1K#[9"(*@"=!ZH!'0:J`%T%E(/MD))4/]R
+M+%?H_/___X/$$.M'B?:+3"0$#[9!(*@"=1BH!'04J`%T$(/L"%%6Z/S___^#
+MQ!#K(I"+5"0$#[9"(*@"=!6H!'01J`%U#8/L"%)6Z/S___^#Q!"X`0```.E>
+M`P``D$6)Z3A/"@^'3O___[@!````Z4<#``")]OY$)`N`?"0+`P^&\?[__\9$
+M)`L`@'XY``^%G@```+L`````D`^WPXN,AI@"``!F#[:4,)@$``"%R71M@WEP
+M`'1G@WE@`'5A9H'Z_P!T,@^WTHN^6`4``(T$TL'@`BG0P>`#]D0X(P1T%X!\
+M."$`=1"#[`1245;H_/___X/$$.LHBU%P#[?#QX2&F`(```````#'07``````
+M@^P$:O]1_W%X_]*#Q!")]D-F@_L_#X9Q____QD8Y`>F$`@``#[9$)`N*A#`>
+M!0``//\/A&`"```/MM"-!%+!X`,IT(V\AB@!``"]`````(!_"@`/AC\"``"-
+M=@"#[`R-7SA3Z/S___^)1"04@\00BT,$BU0D!(E3!(D:B4($B1"`>B+_#X4"
+M`@``9HM*&&:)3"0"#[?!9@^VE#"8!```9HD4)(N<AI@"``"+3"0$BD$DJ`1T
+M8H7;=%Z#>W``=%B#>V``=5*#X/N(023V02,$=!.#[`0/M\)04U;H_/___X/$
+M$.LSBU-P#[=$)`+'A(:8`@```````,=#<`````"+1"0$QT`<`````(/L!&K_
+M4_]S>/_2@\00BU0D!/9"(P0/A#X!``#&@K``````@&<(Y_9")`$/A/H```"`
+M8B3^@WH<`'12@'HA`'4M]D(C!'0G@^P$#[=4)`8/MD8IP>`&`<)2_[8D!0``
+M:@?H_/___X/$$.GL````@^P$BTPD"/]Q'/^V)`4``&H!Z/S___^#Q!#IS0``
+M`(7;=&.#>W``=%V+1"0$@'@A`'4>]D`C!'08@^P$#[=$)`104U;H_/___X/$
+M$.F;````BU-P#[=$)`+'A(:8`@```````,=#<`````"+3"0$QT$<`````(/L
+M!&K_4_]S>/_2@\00ZV:+1"0$@'@A`'5<]D`C!'16@^P$#[=4)`8/MD8IP>`&
+M`<)2_[8D!0``:@+H_/___X/$$.LRC78`BU0D!(-Z'`!T)8M"'(-X=`!T'(M0
+M=,=`=`````"#[`R+3"00BT$<_W!X_]*#Q!"+1"0$]D`D`G0?@^P$_W`<_[8D
+M!0``:@;H_/___XM4)!2`8B3]@\00D$6)Z3A/"@^'Q/W___Y$)`N`?"0+`P^&
+M??W__Y"X`0```(/$#%M>7UW#C78`55=64X/L#(M<)"2+:R@/MT,8N@````"+
+M3"0@@+P(F`0``/\/A)`"```/MD,B@_@/#X3V````@_@/?SF#^`P/A+0```"#
+M^`Q_$X/X!71/@_@+#X20````Z5@"``"#^`T/A*0```"#^`X/A*P```#I00(`
+M`)"#^!E_#X/X&'U6@_@4="WI+`(``(/X&W0T/?\````/A)@```#I%P(``(/L
+M"&H!4^C\____@\00Z00"``"#[`Q3Z/S___^#Q!#I\P$``(/L"&H`4^C\____
+M@\00Z>`!``"#[`AJ`5/H_/___X/$$.G-`0``@^P,4^C\____@\00Z;P!``"#
+M[`Q3Z/S___^#Q!#IJP$``(/L#%/H_/___X/$$.F:`0``@^P,4^C\____@\00
+MZ8D!``"0QD,B_XE<)`B_`````(!]"@`/AL4```"-=3B)]H/L#%;H_/___XG#
+M@\00BT8$B5X$B3.)0P2)&(![(O\/A(<```"`>R$`#X6%````@+NQ`````'1H
+M#[9#(*@"=!RH!'08J`%T%%,/MD-)4/]S+%7H_/___X/$$.M$#[9#(*@"=1RH
+M!'08J`%T%(/L"%/_="0LZ/S___^#Q!#K(HGV#[9#(*@"=!BH!'04J`%U$(/L
+M"%/_="0LZ/S___^#Q!"Z`0```.G'````B?;&@[$`````D$>)^#A%"@^'0/__
+M_XGY.$T*#X6-````BT0D"(!X(2)T!H!X(0UU&(/L"&H*_W0D%.C\____N@$`
+M``"#Q!#K?K\`````@'T*`'9:C74XC78`@^P,5NC\____B<.#Q!"+1@2)7@2)
+M,XE#!(D8@'LA(G0&@'LA#74E@^P(4VBC`0``Z/S___^#Q`AJ"E/H_/___[H!
+M````@\00ZR.)]D>)^3A-"G>LQD4%_X/L"%7_="0LZ/S___^#Q!"Z`0```(G0
+M@\0,6UY?7<.055=64X/L#(M<)"2+:R@/MT,8N@````"+3"0@@+P(F`0``/\/
+MA&P&```/MD,B@_@)#X13`P``@_@)?SV#^`4/A-P```"#^`5_%X/X`P^$@@``
+M`(/X!`^$I````.DP!@``@_@'#X0,`P``@_@'#X_O`@``Z78"``"0@_@6#X2X
+M`@``@_@6?R*#^!0/A"(#``"#^!0/CWL"``"#^`H/A/P"``#IZ@4``(GV@_@:
+M#X0<`@``@_@:?PZ#^!</A(X"``#IS`4``#W_````#X3F`@``Z;P%``"+11B!
+M8"C___[_:@!J`5/_<RCH_/___\<$)`4```#H_/___X/$$.F1!0``:@!J`%/_
+M<RCH_/___\<$)%##``#H_/___X/$$.EP!0``QD0D"P"+?"0@@'\K`'8?#[95
+M"9")T(I,)`O3^*@!=0Y!B$PD"XM\)"`X3RMWY@^V0R"H`G0,J`1T"*@!#X7#
+M````BU48BT(HJ0```0!T#27___[_B4(HZ:D```"^$"<``(I$)`N(1"0*#[;X
+MBTPD((L1@'PD"P-V&P^V1"0+BX3"@`$``*,`````)0```0#K%(UV`(N$^H`!
+M``"C`````"4```$`A<!T)H!\)`H#=A#'A/J``0`````!`.L.C78`QX3Z@`$`
+M`````0"%P'45@^P,:.@#``#H_/___X/$$$YUBNL$A?9U'<9#(P+&0R+_@^P(
+M4_]T)"SH_/___X/$$.EK!```]D4&`70]@^P(4U7H_/___X/$$(3`=2R^^@``
+M`(UV`(/L"%-5Z/S___^#Q!"$P'43@^P,:.@#``#H_/___X/$$$YUW(!\)`L#
+M=B`/MDPD"XM\)""+%XN$RH`!``"C`````(F$RH`!``#K/@^V="0+BT0D((L(
+M@'PD"P-V#HN$\8`!``"C`````.L7#[9$)`N+?"0@BQ>+A,*``0``HP````")
+MA/&``0``@^P(4_]S*.B')```QP0D($X``.C\____@\00Z:,#``"#[`@/MT,8
+M4&C$!@``Z/S___^#Q`A3_W,HZ.4I``"#Q!#I?0,``(/L"`^W0QA0:+<!``#H
+M_/___X/$"%/_<RCH)RH``(/$$.E7`P``@^P(4_]S*.@;)```@\00Z4,#``"#
+M[`A3_W,HZ.,G``"#Q!#I+P,``(/L"%/_<RCH6R<``(/$$.D;`P``@^P(4_]S
+M*.@O*```@\00Z0<#``"#[`A3_W,HZ(,H``"#Q!#I\P(``(/L"%/_<RCHUR@`
+M`(/$$.G?`@``QD,B_P^V0R"H`G0(J`1T!*@!=16#>S``=0]5Z/S___^(@[(`
+M``"#Q`3V10@"#X1@`0``BWTH#[97*@^V1Q](.<)]+?Y'*OY'*\9')@!FBT<R
+M@^#^@\@(9HE',H/L"%?_="0LZ/S___^#Q!#I;P(``,9$)`L`@'T*``^&P```
+M`(UU.(/L#%;H_/___XG#@\00BT8$B5X$B3.)0P2)&(![(O\/A(````"`N[$`
+M````=&L/MD,@J`)T'Z@$=!NH`7074P^V0TE0_W,L5>C\____@\00ZT>-=@`/
+MMD,@J`)U'*@$=!BH`704@^P(4_]T)"SH_/___X/$$.LBB?8/MD,@J`)T&*@$
+M=!2H`740@^P(4_]T)"SH_/___X/$$+H!````Z;\!``")]L:#L0````#^1"0+
+MBD0D"SA%"@^'0_____9',H!T'_9'+0-T&<9')@"#[`A7_W0D+.C\____@\00
+MZ7L!``#&107_QD<F`&:+1S*#X/.#R`)FB4<R@&<M_H/L"%7_="0LZ/S___^#
+MQ!#I3`$``,9$)`L`@'T*``^&Q0```(UU.(GV@^P,5NC\____B<.#Q!"+1@2)
+M7@2),XE#!(D8@'LB_P^$B@```(![(0!U?8"[L0````!T:`^V0R"H`G0<J`1T
+M&*@!=!13#[9#25#_<RQ5Z/S___^#Q!#K1`^V0R"H`G4<J`1T&*@!=!2#[`A3
+M_W0D+.C\____@\00ZR*)]@^V0R"H`G08J`1T%*@!=1"#[`A3_W0D+.C\____
+M@\00N@$```#IEP```(GVQH.Q`````/Y$)`N*3"0+.$T*#X=`____BD0D"SA%
+M"G58QD0D"P"`?0H`=DV-=3B#[`Q6Z/S___^)PX/$$(M&!(E>!(DSB4,$B1B`
+M>R$B=`:`>R$-=1:#[`AJ"E/H_/___[H!````@\00ZRJ0_D0D"XI,)`LX30IW
+MML9%!?^#[`A5_W0D+.C\____@\00C78`N@$```")T(/$#%M>7UW#D%575E.#
+M[`R+?"0@BW0D)(L7BUY4#[9&)H/X&0^'MP,``/\DA:@6``#V1C($=`QFQT8R
+M`0#&1B8!ZSQF@WXR('4,9L=&,@@`QD8F#>LI]D8R@'09]D8M`W039HM&,B1_
+M@\@(9HE&,L9&)@WK"O9&,@AT!,9&)@>#[`A65^C\____@\00Z5`#``"+@@0!
+M``"C`````(/(4(F"!`$``&H!:@)J`5;H_/___X/$$.DH`P``:@%J`&H!5NC\
+M____@\00Z10#``!J`6H!:@%6Z/S___^#Q!#I``,``&H!:F!J`5;H_/___X/$
+M$.GL`@``@^P,:@$/MD8L4&I@:@%6Z/S___^#Q"#IT`(``(/L#&H!:````01J
+M(6H!5NC\____@\0@Z;0"``"#[`QJ`6H!:@)J`%;H_/___X/$(.F;`@``@^P,
+M:@%J`&H":@!6Z/S___^#Q"#I@@(``(M#&(%@*/__]_^#[`QJ`6H!:@)J`%;H
+M_/___X/$(.E?`@``@^P,:@%J`&H":@!6Z/S___^#Q"#I1@(``&H!:@)J`%;H
+M_/___X/$$.DR`@``:@%J`&H`5NC\____@\00Z1X"``!J`6H!:@!6Z/S___^#
+MQ!#I"@(``(M#&(%@*/__]_^#[`QJ`6K_:@%J`%;H_/___X/$(.GG`0``:@%J
+M`&H`5NC\____@\00Z=,!```/MD8KBVR&/(E=*(EU,(I&*XA%2<9%(@/&12$`
+M@$T@!?Y#"HU#.(M0!(EH!(E%`(E5!(DJ@^P,:(`:!@#H_/___\9$)!L`@\00
+M@'\K`'8:#[93"8G0BDPD"]/XJ`%U"D&(3"0+.$\K=^J+4QB+0BBI```(`'0*
+M)?__]_^)0BCK4[N8.@``#[9T)`N0@'PD"P-V&8L'BX3P@`$``*,`````J0``
+M"`!U+.L7B?:+!XN$\(`!``"C`````*D```@`=1.#[`QHZ`,``.C\____@\00
+M2W6X@^P(55?H_/___X/$$.GN````@^P,:$`-`P#H_/___VH`:B!J`5;H_/__
+M_X/$%&@0)P``Z/S___^#Q!#IP````&H`:@%J`%;H_/___\<$)!`G``#H_/__
+M_X/$$.F@````BT,8@6`H___W_X/L#&H`:O]J`6H`5NC\____@\04:!`G``#H
+M_/___X/$$.MS:@!J`&H`5NC\____QP0D$"<``.C\____@\00ZU9J`&H@:@%6
+MZ/S____'!"00)P``Z/S___^#Q!#K.8/L"%97Z/S___^#Q!#K*H/L"%97Z/S_
+M__^#Q!#K&X/L#&H!:/````!HFP```&H!5NC\____@\0@D+@!````@\0,6UY?
+M7<.-=@!55U93@^P<BT0D,(L`B40D&,9$)!,`BU0D,(!Z*P`/AK4"```/MDPD
+M$XG(P>`$`<B+="0PC1R&]H->"P``$`^$@`(``(V34`L``+@!````T^`(0@F+
+MFSP+``")7"04]D((`@^$]````(I<)!-#.%XK#X;F````#[94)!.)T,'@!`'0
+MC02&B40D!(UV``^V\XGPP>`$`?"+5"0PC3R"]H=>"P``$`^$H@```(ML)`3W
+MA4P+``````X`#X2.````@^P$:@B-CU`+``")3"0448V%4`L``(E$)!10Z/S_
+M__^#Q!"$P'1G@^P$:@B-AT0+``!0C85$"P``4.C\____@\00A,!T2+@!````
+MB?'3X(MT)`@*1@F(1@F+5"0,B$()@WPD%`!U#(N_/`L``(E\)!3K&P^VTXG0
+MP>`$`="+="04BTPD,(FT@3P+``")]D.+1"0P.%@K#X<R____B?:#?"04``^%
+MM0```(/L#/]T)#SH_/___XE$)"2#Q!"%P`^$5P$```^V5"03B=#!X`0!T(M4
+M)#"-!(*+3"04B8@\"P``C9`X"P``B5$8BH!8"P``B$$&QD$%`(M<)#")&<9!
+M"@#&030`QD$<`(I<)!-#BW0D,#A>*W9B#[94)!.)T,'@!`'0#[:4AED+``"-
+M=@`/MLN)T-/XJ`%T%HG(P>`$`<B+="04BTPD,(FT@3P+``!#BT0D,#A8*W?5
+MZQZ-=@`/ME0D$XG0P>`$`="+3"04BU0D,(F,@CP+```/MDPD$XG(P>`$`<B+
+M7"0PC82#4`L``(I0"8MT)!2(5@D/ME@)@'PD$P-V$8M$)!C'A,@``@``.```
+M`.L4#[9$)!.+5"08QX3"``(``#@```"#[`QH$"<``.C\____@\00@'PD$P-V
+M%0^V1"03BTPD&(F<P00"``#K$XUV``^V1"03BW0D&(F<Q@0"``#^1"03BD0D
+M$XM4)#`X0BL/ATO]__^#Q!Q;7E]=PXUV`%=64XM\)!"*7"04BS>`^P-V$@^V
+MP\>$QC`"```,````ZQ")]@^VP\>$QE`"```,````@^P,:!`G``#H_/___X/$
+M$(#[`W81#[;#BX3&-`(``*,`````ZP\/ML.+A,94`@``HP````")P8'A```_
+M`,'I$`^VTXG0P>`$`="-E(=0"P``BD((@^#\B$((@_D0=0N#R`*(0@CK%8UV
+M``^VTXG0P>`$`="`C(=8"P```5M>7\.)]E=64X/L((M<)#2+1"0PBSB^````
+M`(UV`(/[`W83C02U``$``(F$WP`"``#K$8UV`(T$M0`!``")A-\``@``@^P,
+M:!`G``#H_/___X/$$(/[`W81BX3?!`(``*,`````ZP^-=@"+A-\$`@``HP``
+M``")!+1&@_X&=I^)YORY!P```(M\)#CSI8/$(%M>7\.)]E=64X/L((M<)#2+
+M1"0PBSB^`````(UV`(/[`W83C02U'`$``(F$WP`"``#K$8UV`(T$M1P!``")
+MA-\``@``@^P,:!`G``#H_/___X/$$(/[`W81BX3?!`(``*,`````ZP^-=@"+
+MA-\$`@``HP````")!+1&@_X&=I^)YORY!P```(M\)#CSI8/$(%M>7\.)]HM,
+M)`2*`<#H!(G"@^(']D$"!'0#@,X"]D$#!'0&@<H```(`]D$""'0#@,X(]D$#
+M"'0&@<H```@`]D$"`G0#@,X$]D$#`G0&@<H```0`#[9!%,'@&`G"B=##C78`
+M_W0D!.C\____@\0$PXUV`%575E.#[$2+;"18BD0D7(A$)!>+50")5"00#[;0
+MB=#!X`0!T(U$A0")J#@+``#&@%D+````4E7H_/___X/$$+D`````NB````"-
+M1"00C78`B`A`2G7Z@^P$C70D%%8/MGPD%U=5Z/S___^)^\'C!`'[C5R=`%;H
+M_/___XF#0`L``(M$)#")@T0+``"+1"0TB8-("P``C9-<"P``@\04@'PD#P-V
+M$HM,)`B+A+G0`0``HP````#K%0^V1"0/BUPD"(N$@]`!``"C`````(D"#[94
+M)`^)T,'@!`'0C8R%8`L``(!\)`\#=A*+7"0(BX33@`$``*,`````ZQ4/MD0D
+M#XM4)`B+A,*``0``HP````")`0^V5"0/B=#!X`0!T(U$A0#V@%X+```0#X1#
+M`0``]H!8"P```G1;N0````"Z(````(U$)!"-=@"("$!*=?J#[`2-?"045P^V
+M="075E7H_/___XGSP>,$`?.-7)T`5^C\____B8-,"P``BT0D,(F#4`L``(M$
+M)#2)@U0+``"#Q!3K%P^V5"0/B=#!X`0!T,>$A4P+```!``(`@'PD#P-V%@^V
+M1"0/BTPD",>$P3`"```8````ZQ0/MD0D#XM<)`C'A,-0`@``&````(/L#&@0
+M)P``Z/S___^#Q!"`?"0/`W89#[9$)`^+5"0(BX3"-`(``*,`````B<'K%P^V
+M1"0/BTPD"(N$P50"``"C`````(G!#[94)`^)T,'@!`'0]X2%7`L``````P!U
+M"('A____W^L&@<D````@@'PD#P-V$@^V1"0/BUPD"(F,PS0"``#K$`^V1"0/
+MBU0D"(F,PE0"``"#Q#Q;7E]=PXUV`(M4)`2+@C@%```E____`#U0`9,`=1**
+M@CL%``#`Z`2Z`0```#P,=`6Z`````(G0PU575E.#[!R+?"0PBS?&1"004(U<
+M)!#&0P$%QD,"!,9#`S#&0P01QD,%J\9#!@#&0P<`QX=<#````````#F_)`4`
+M``^%U````(VO8`P``(/L#&H!:@B-AS@%``!0:````@!7Z/S___^+AS`%``"*
+MESL%``"-1(+\B(<[!0``@\0@5^C\____@\0$A,!U$XM$)!")AS@%``"+0P2)
+MASP%``"A`````(J7.P4```'"0*,`````B)<[!0``BH<X!0``B(4X!0``BH<Y
+M!0``B(4Y!0``BH<Z!0``B(4Z!0``BH<[!0``@\`"B(4[!0``BH<\!0``B(4\
+M!0``BH<]!0``B(4]!0``BH<^!0``B(4^!0``BH<_!0``B(4_!0``QX=<#```
+M`````(N&``$``*,`````)?__``"H('44@\@@B88``0``BX8``0``HP````"+
+M!\>`!`$```````"+!\>`&`$```````"+!\>`'`$```````"#[`QH@(0>`.C\
+M____QX9P`0``&`$``(N&=`$``*,`````@.3]QX9P`0``&`$``(#,!(F&=`$`
+M`,>&<`$``"@!``#'AG0!``!_?P``QX9P`0``)`$``(N&=`$``*,`````)0``
+M___'AG`!```D`0``#?\_``")AG0!``#'AG`!```\`0``QX9T`0````!Z`,>&
+M<`$``*0!``#'AG0!``!]O^__QX9P`0``N`$``(N&=`$``*,`````#[?`QX9P
+M`0``N`$```T``/H`B89T`0``QX:<````_P```,>&D`(``$0!``#'AI0"```&
+M$``(QX:0`@``M`$``,>&E`(``%]P``#'AI`"```P````BX:4`@``HP`````P
+MY(#,,XF&E`(``,9$)!\`@\00@'\K``^&M@(``(GV@'PD#P-V%0^V1"0/QX3&
+M,`(```@```#K$XUV``^V1"0/QX3&4`(```@```"#[`QH$"<``.C\____@\00
+M@'PD#P-V%0^V1"0/BX3&-`(``*,`````ZQ.)]@^V1"0/BX3&5`(``*,`````
+M@'PD#P-V%`^V5"0/#0``@`")A-8T`@``ZQ*0#[94)`\-``"``(F$UE0"``"#
+M[`2-AS@%``!0#[9<)!=35^C\____@\0(4U?H_/___X/$$(!\)`\#=@W'A-XP
+M`@``1`$``.L0#[9$)`_'A,90`@``1`$``(/L#&@0)P``Z/S___^#Q!"`?"0/
+M`W85#[9$)`_'A,8T`@``!A``".L3C78`#[9$)`_'A,94`@``!A``"(!\)`\#
+M=A4/MD0D#\>$QC`"``"T`0``ZQ.-=@`/MD0D#\>$QE`"``"T`0``@^P,:!`G
+M``#H_/___X/$$(!\)`\#=A4/MD0D#\>$QC0"``!?<```ZQ.-=@`/MD0D#\>$
+MQE0"``!?<```@'PD#P-V%0^V1"0/QX3&,`(```@```#K$XUV``^V1"0/QX3&
+M4`(```@```"#[`QH$"<``.C\____N/]4@`"#Q!"`?"0/`W84#[94)`\E_U0`
+M`(F$UC0"``#K$I`/ME0D#R7__W_]B8365`(``(/L!&H!#[9<)!=35^C\____
+MQP0D(*$'`.C\____@\00@'PD#P-V$(N$WH`!``"C`````.L3B?8/MD0D#XN$
+MQH`!``"C`````"7___[_@'PD#P-V#P^V5"0/B836@`$``.L-D`^V5"0/B836
+M@`$``+@%`<@`@'PD#P-V$`^V5"0/B836A`$``.L.B?8/ME0D#XF$UH0!``"#
+M[`QHH(8!`.C\____@\0(#[9$)!=05^C\____@\00_D0D#XI$)`\X1RL/ATS]
+M__^#[`Q7Z/S___^+A@0!``"C`````(/(`HF&!`$``(N&``$``*,`````@^#]
+M@\@-B88``0``BX8``0``HP````"+A^0)``")A@@!``"+A^@)``")A@P!``"+
+MAP@*``")AA`!``"+APP*``")AA0!``#'AB`!````````#[>'-`L``"7_#P``
+M#0```0")AB`!``"+AU`*``")AB0!``"+AU0*``")AB@!``"+AW`*``#'`/\/
+M``#'AC0!````````#[>'-@L``"7_#P``#0```0")AC0!``"+AW0*``")AC@!
+M``"+AW@*``")ACP!``#'AD@!````````QX9,`0````$``(N&!`$``*,`````
+M@\A9B88$`0``QX94`0``^_\`#,>&7`$``/__``"#Q"Q;7E]=PXUV`%.#[!2+
+M7"0<4^AB^?__L@"#Q!"0#[;"QX2#L`4```````#'1(-$`````$*`^@]VY&;'
+M@S`+``#_#V;'@S(+``#_#\9#.`&X`0```(/$"%O#BU0D!(M,)`BX`````#G(
+M?1R-=@"`/`(`=`Z`/`(@=`BX`````,.)]D`YR'SGN`$```##D%575E.#[#R+
+M;"149H%]$(4`#X>=````#[=%$(M4)%"`O!"8!```_P^$AP```&:#?1!_=R0/
+MMI00F`0``(M<)%"+BU@%``"-!-+!X`(IT(M$P2B*2`3K7Y!F@7T0@0!W+`^W
+M11"+?"10#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"BT21"(I(!.LJ#[=%
+M$(M4)%`/MH00F`0``(N2=`4``(T$0(T$@(M$PE2*2`3K!8UV`+'_LO]F@7T0
+MA0!W#P^W11"+7"10BI08F`0``(#Y_W0<#[;!BWPD4("\.!X%``#_=`N`^O]T
+M!H!]%`9U-(-]4`!T%H/L"(U%4%#_="1<Z/S___^#Q!"-=@"#[`A5_W0D7.C\
+M____@\00Z0L'``"-=@`/ML&+3"10#[:T"!X%``"-!';!X`,I\(VT@2@!```/
+MMM*-!-+!X`(IT(N16`4``(T<PF:!NY````"K#7<'@'T4`G5'D(-]4`!T%H/L
+M"(U%4%#_="1<Z/S___^#Q!"-=@"#[`A5_W0D7.C\____QD,B_\9#(P*#Q`A3
+M_W0D7.C\____@\00Z7X&```/MD4D@_@:#X2.!0``@_@:?R6#^!)T3(/X$G\-
+MA<`/A#<%``#I'`8``(/X%0^$!`8``.D.!@``@_@E#X2/`@``@_@E?PZ#^!L/
+MA`0%``#I\@4``#V>````#X1P`P``Z>(%``"`?10`#X5"`@``BTTT@'TE`'1B
+M@'LB&0^4P(/`"XA#(H7)=$.`>0&`=3V`>0(`=3>`>0,\=S$/MG$#NA0```"-
+M0TS&`"!`2G7Y@_X3=@6^%````(U33(U!!(/L!%904NC\____@\009L>#D```
+M````Z6T%``#&0R(8]D$&0'4/#[8!@^`?@_@-#X4\`0``#[8!@^`?@_@-=0;&
+M0R$-ZP3&0R$B@^P(#[9#(5!HS0$``.C\____@\00@WU0`'03@^P(C4504/]T
+M)%SH_/___X/$$(/L"%7_="1<Z/S____&1"0_`(/$$(!^"@!V-XUN.(/L#%7H
+M_/___XG#@\00BT4$B5T$B2N)0P2)&(![(2)T!H![(0UU#?Y$)"^*7"0O.%X*
+M=\R*1"0O.$8*#X7K!```9L=$)"P``,=$)"@`````QD0D+P"`?@H`=DZ-;CB#
+M[`Q5Z/S___^)PX/$$(M%!(E=!(DKB4,$B1B`>R$B=`:`>R$-=1>+5"0L9CE3
+M&'(-B5PD*&:+6QAFB5PD+/Y$)"^*3"0O.$X*=[6#?"0H``^$>`0``(M<)"B`
+M>R+_#X1J!```QD,B_X/L"%/_="1<Z/S___^#Q!#I400```^V`8/@'X/X`74-
+MQD,A`<9#(O_I``0``/9!!0%T!,9#(AF#?30`#X3L`P``BWTTB7PD,+D`````
+MNB@```"-0V"("$!*=?JY`````+H(````C8.(````B`A`2G7ZC4-@BW0D,(/&
+M"/RY!@```(G'\Z6+5"0PBT(@B8.(````Z98#``!F_X.0````@^P,:!`G``#H
+M_/___\9#(@6#Q!#I=@,``(M--(E,)#2+13B*0`*#X`^`?10`=7\/ME$'#[9!
+M!L'@"`'"#[9!!<'@$`'"#[9!!,'@&`'"B9.L````#[91`P^V00+!X`@!P@^V
+M00'!X!`!P@^V`<'@&`'"B5-`QT-$`````(.[K`````!U(&;_@Y````"#[`QH
+M$"<``.C\____QD,B"X/$$.GJ`@``QD,B#>GA`@``@'T4('4H/`9T!#P"=2!F
+M_X.0````@^P,:!`G``#H_/___\9#(@6#Q!#ILP(``(-]4`!T$X/L"(U%4%#_
+M="1<Z/S___^#Q!"#[`A5_W0D7.C\____@\0,4U;_="1<Z/S___^#Q!#IL`(`
+M`(M%.(I``H/@#XM]-(E\)#2`?10`#X4``0``#[97"P^V1PK!X`@!P@^V1PG!
+MX!`!P@^V1PC!X!@!PHF3K`````^V5P</MD<&P>`(`<(/MD<%P>`0`<(/MD<$
+MP>`8`<*)5"0@B=#!^!^)1"0D#[9'`XG"N``````#1"0@$U0D)(E$)!B)5"0<
+M#[9'`HG"N`````#!X@@#1"08$U0D'(E$)!")5"04#[9'`8G"N`````#!XA`#
+M1"00$U0D%(E$)`B)5"0,#[8'B<*X`````,'B&`-$)`@35"0,B4-`B5-$]D<,
+M`70%9H-+-@2#NZP`````=2!F_X.0````@^P,:!`G``#H_/___\9#(AF#Q!#I
+M9@$``,9#(@WI70$``(!]%"!U*#P&=`0\`G4@9O^#D````(/L#&@0)P``Z/S_
+M___&0R(9@\00Z2\!``"#?5``=!.#[`B-15!0_W0D7.C\____@\00@^P(5?]T
+M)%SH_/___X/$#%-6_W0D7.C\____@\00Z2P!``#&0R(4Z>H```"`?10@=3&+
+M13B*0`*#X`\\!G0$/`)U(&;_@Y````"#[`QH$"<``.C\____QD,B%(/$$.FS
+M````QD,B&^FJ````@'T4`'56BU4TB50D,&:+0S1F@TLV`0R&9HE#-(!Z`P!U
+M!8`Z%G<=9O^#D````(/L#&@0)P``Z/S____&0R(-@\00ZV:+3"0P]D$&!'0'
+M9H-+-@+K0&:#8S;]ZSF`?10@=2Z+13B*0`*#X`\\!G0$/`)U(F;_@Y````"#
+M[`QH$"<``.C\____QD,B!8/$$.L:9H-C-/G&0R(.ZP^`?10`=05F@TLV`\9#
+M(@^#?5``=!.#[`B-15!0_W0D7.C\____@\00@^P(5?]T)%SH_/___X/$"%/_
+M="1<Z/S___^#Q!"-=@"#Q#Q;7E]=PU575E.#[`R+?"0@BUPD)&:!>Q"%``^'
+MB0````^W0Q"`O#B8!```_W1[9H-[$']W(`^VE#B8!```BX]8!0``C032P>`"
+M*="+1,$HBD@$ZU>09H%[$($`=R@/MT,0#[:$.)@$``"+CY`%``"-!$"-!,")
+MPL'B!2G"BT21"(I(!.LF#[=#$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I(
+M!.L%C78`L?^R_V:!>Q"%`'<+#[=#$(J4.)@$``"`^?]T&`^VP8"\.!X%``#_
+M=`N`^O]T!H![%`9U+(-[4`!T$H/L"(U#4%!7Z/S___^#Q!")]H/L"%-7Z/S_
+M__^#Q!#I2@(``(GV#[;!#[:T.!X%``"-!';!X`,I\(VTAR@!```/MM*-!-+!
+MX`(IT(N76`4``(TLPHM#-(![%``/A*4```"`>R8&#X2;````@'LF#`^$D0``
+M`&:+E9````"-0@%FB860````9H/Z"78D@'TB!G0>QD4C`L9%(O^`923^@^P(
+M55?H_/___X/$$.F^`0``@^P,:.@#``#H_/___P^V12"#Q!"H`G0EJ`1T(:@!
+M=!V#[`QJ`&H"#[9%25#_=2Q6Z/S___^#Q"#I@0$``,9%(@.#[`A55^C\____
+M@\00Z6L!``"-=@"`>R8!=0K&12($Z2D!``"0@'LF`G4)QD4B!>D9`0``@'LF
+M`P^%D````(!](@5U*6:!>`3(-W4A@^P(#[=%&%!H^`8``.C\____@\00QD4B
+M!NGC````C78`@^P(4%7H_/___VHHC45@4.A']?__@\08A,!U.&H4C45,4.@U
+M]?__@\0(A,!U)FH(C86(````4.@@]?__@\0(A,!U$8M%1`M%0'0)QD4B%^F,
+M````QD4B&F;_A9````#K?X![)A=U!L9%(A7K<X![)AAU!L9%(A;K9X![)@1U
+M!L9%(@?K6X![)@5U!L9%(@CK3X![)@9U!L9%(@GK0X![)@QU!L9%(@KK-X![
+M)A9U!L9%(A3K*X![)@YU)8-[4`!T$(/L"(U#4%!7Z/S___^#Q!"#[`A35^C\
+M____@\00ZS"#>U``=!*#[`B-0U!05^C\____@\00B?:#[`A35^C\____@\0(
+M55?H_/___X/$$)"#Q`Q;7E]=PU575E.#[`R+?"0@BW0D)&:!?A"%``^'B0``
+M``^W1A"`O#B8!```_W1[9H-^$']W(`^VE#B8!```BX]8!0``C032P>`"*="+
+M1,$HBD@$ZU>09H%^$($`=R@/MT80#[:$.)@$``"+CY`%``"-!$"-!,")PL'B
+M!2G"BT21"(I(!.LF#[=&$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I(!.L%
+MC78`L?^Z_P```&:!?A"%`'<-#[=&$&8/MI0XF`0``(#Y_W0'9H'Z_P!U+(-^
+M4`!T$H/L"(U&4%!7Z/S___^#Q!")]H/L"%97Z/S___^#Q!#IP@```(GV#[;)
+M#[:<.1X%``"-!%O!X`,IV(V<AR@!```/M]*-!-+!X`(IT(N76`4``(TLPH!^
+M%`!T.(/L"%%H&`<``.C\____@\0(BU4$BT4`B5`$B0+^2PI55^C\____QD,%
+M_X/$"%-7Z/S___^#Q!"0@'XF`74J@^P,:!`G``#H_/___X/$"%97Z/S___]J
+M`6H`55/H_/___X/$(.LGC78`@^P,:%##``#H_/___X/$"%97Z/S___^#Q`A5
+M4^C\____@\00@\0,6UY?7<-64X/L$(MT)""*1"0DB$0D#XI$)"B(1"0.BT0D
+M'(L84^C\____B<*#Q!"%P'4.QH:Q`````<9&(@/K:I#&0"3AQD`E`8!\)`,!
+M&<#WT(/``HA")K`/@'PD`@!U#+``@WXP`'0$BD9)D(A")V:+1AAFB4(0B5H8
+MQT(@`````,="-`````"X`````(!\)`(`=06X/&4$`(E";(/L"%)3Z/S___^#
+MQ!"#Q`1;7L.055=64X/L&(ML)#"+1"0LBSA7Z/S___^)PX/$$(7`=0S&A;$`
+M```!Z:$```"#[`Q7Z/S___^)QH/$$(7`=1;&A;$````!@^P(4U?H_/___X/$
+M$.MYC5,\B50D",9#).'&0R4!QD,F`V:+11AFB4,0BU0D((L"B4,8QT,@``(`
+M`(M&"(E#-+D`````N@`"``"0B`A`2G7ZB7-0QT-L/&4$`(/L"&H`_W0D%.C\
+M_____W,@_W80_W8,_W0D).C\____@\084U?H_/___X/$$(/$#%M>7UW#C78`
+M5U93BUPD$(M,)!2+?"08O@`````Y_G,5BA.*0P&(`8A1`8/!`H/#`D8Y_G+K
+M6UY?PXUV`%575E.#[`R+7"0@BVPD)(EL)`AF@WT``'D2#[=%`"4`'P``P?@(
+MB$,AC78`C7M,C744_+D%````\Z6+12Z)@X@```"+13*)@XP```"->V"-=3:Q
+M"O.E:@J-0TQ04.AJ____:@2-@X@```!04.A;____:A2-0V!04.A/____9L=#
+M-```9L=#-@``@\0DBT0D"&:#N+(!```!#Y3"P>(#BD,D@^#W"="(0R3VA:<`
+M```$=`9FQT,T`0#VA:0````!="-F@TLT`O:%J@````%T!6:#2S8!]H6H````
+M`70'9H%+-``!D/:%I````"!T$V:#2S0$]H6J````('0%9H-+-@+VA:0```!`
+M=!=F@4LT@`#VA:H```!`=`AF@TLV"(UV`,9#2@+VA9D````!="?V0S0!=`IF
+M@TLT"&:#2S80BH66````@^`?0(A#2CP@=0;&0TH?B?;VA9@````(=`9F@4LT
+M``+VA9@````$=`5F@TLT(/:%F`````)T!6:#2S00]H6H````('00]H6N````
+M('0'9H-+-$")]O9#-`%T%HN%R````(N5S````(E#0(E31.L/B?:+17B)0T#'
+M0T0`````@T-`_X-31/_V16H"=!WVA8`````/=!1F@[V``````AG`@\`$B$,X
+MZP:)]L9#.`+&0SG_]D5^!'0&QD,Y`NL8]D5^`G0&QD,Y`>L,]D5^`70&QD,Y
+M`(GVQD,Z__9%:@1T&+$`#[>%L````-/XJ`%T`XA+.D&`^09VZH/L"&@``@``
+M5>C\____B8.4````N`$```"#Q!Q;7E]=PY!75E.+?"00BUPD%(LW@^P,5NC\
+M____B<**2SJ#Q!"%P'4*QH.Q`````>M"D,9`).'&0"4!QD`F!(A()V:+0QAF
+MB4(0BP>)0AC'0B``````QT(T`````,=";#QE!`"(2SV#[`A25NC\____@\00
+M6UY?PXUV`%=64XM\)!"+7"04BS>#[`Q6Z/S___^)PHI+.(/$$(7`=0K&@[$`
+M```!ZT*0QD`DX<9`)0'&0"8%B$@G9HM#&&:)0A"+!XE"&,="(`````#'0C0`
+M````QT)L/&4$`(A+.X/L"%)6Z/S___^#Q!!;7E_#C78`5U93BW0D$(M\)!2+
+M'H/L#%/H_/___XG"@\00A<!U"<:'L0````'K.\9`).'&0"4!QD`F!F:+1QAF
+MB4(0BP:)0AC'0B``````QT(T`````,=";#QE!`"#[`A24^C\____@\006UY?
+MPY!75E.+="00BWPD%(L>@^P,4^C\____B<*#Q!"%P'4)QH>Q`````>L[QD`D
+MX<9`)0'&0"8,9HM'&&:)0A"+!HE"&,="(`````#'0C0`````QT)L/&4$`(/L
+M"%)3Z/S___^#Q!!;7E_#D%=64XMT)!"+?"04BQZ#[`Q3Z/S___^)PH/$$(7`
+M=0G&A[$````!ZT/&0"3AQD`E`<9`)A;&0"@!9HM'&&:)0A#&0F@/BP:)0AC'
+M0B``````QT(T`````,=";#QE!`"#[`A24^C\____@\006UY?PY!75E.+="00
+MBWPD%(L>@^P,4^C\____B<*#Q!"%P'4)QH>Q`````>L[QD`DX<9`)0'&0"87
+M9HM'&&:)0A"+!HE"&,="(`````#'0C0`````QT)L/&4$`(/L"%)3Z/S___^#
+MQ!!;7E_#D%=64XMT)!"+?"04BQZ#[`Q3Z/S___^)PH/$$(7`=0G&A[$````!
+MZSO&0"3AQD`E`<9`)AAFBT<89HE"$(L&B4(8QT(@`````,="-`````#'0FP\
+M900`@^P(4E/H_/___X/$$%M>7\.05U93@^P<BWPD+(I<)#"*1"0TB$0D&XI$
+M)#B(1"0:BT=4BS!6Z/S___^)PL9`).'&0"4!QD`F$8/$$+`/A-MU`XI'*XA"
+M)XI$)`^(0BAFBT<D9HE"$(ER&,="(`````#'0C0`````N`````"`?"0.`'4%
+MN`````")0FR#[`A25NC\____@\0@6UY?PY!75E.#[!R+?"0LBEPD,(I$)#2(
+M1"0;BDPD/(A,)!J+1U2+,%;H_/___XG"QD`DX<9`)0'&0"82@\00L`^$VW4#
+MBD<KB$(GBD0D#XA"*(M,)"P/ML6(0BF)R,'H$(A"*HG(P>@8B$(KB$HL9HM'
+M)&:)0A")<AC'0B``````QT(T`````+@`````@'PD#@!U!;@`````B4)L@^P(
+M4E;H_/___X/$(%M>7\-55U93@^P<BVPD,(M\)#3'1"08`````&:!?Q"%``^'
+MB0````^W1Q"`O"B8!```_W1[9H-_$']W(`^VE"B8!```BXU8!0``C032P>`"
+M*="+1,$HBE`$ZU>09H%_$($`=R@/MT<0#[:$*)@$``"+C9`%``"-!$"-!,")
+MPL'B!2G"BT21"(I0!.LF#[='$`^VA"B8!```BY5T!0``C01`C02`BT3"5(I0
+M!.L%C78`LO^Q_V:!?Q"%`'<+#[='$(J,*)@$```/ML(/MIPH'@4``(T$6\'@
+M`RG8C9R%*`$```^VP8T$0(T$@(N5=`4``(TTPH!_*`)U>P^V1RPE\````(/X
+M('0%@_@0=6@/ME<LB="#X`^#^`%U(H/L#&H!B=`E\````%!J`FH`5NC\____
+M@\0@Z3X&``"-=@`/MD8KBT2&/(E$)!@/MD<L)?````"#^"`/E,"#P`B+5"08
+MB(*R````BT(P9H%@,O_^Z04&``")]H!_%`!T0HI?%(-_4`!T$8/L"(U'4%!5
+MZ/S___^#Q!"0@^P(5U7H_/___X/$$(#[`@^%S04``(/L"%95Z/S___^#Q!#I
+MNP4```^V1B:#^!D/AW\%``#_)(40%P``#[9&-,'@"`.%!`H``(N`3`@``*,`
+M````@_@%=P6(1A_K!,9&'P6`>PL`=`W&1B8`QD,+`.D_!0``QD8F`NDV!0``
+M#[9&-,'@"`.%!`H``(N`3`@``*,`````9@^VP&:)1B`/MD8TP>`(`X4$"@``
+MBX!$"```HP````")PL'H"&:)1B(/ML+!X`AF"48@9H%^(D!!=0G&1B89Z=H$
+M``#&1B8#Z=$$```/MD8TP>`(`X4$"@``BX!$"```HP````"(1AT/MD8TP>`(
+M`X4$"@``BX!,"```HP````"H"'0&QD8>#.L<J`1T!L9&'@OK$M'H@^`!@_@!
+M&<#WT(/@"HA&'L9&)@3I;P0```^V1C3!X`@#A00*``"+@$P(``"C`````(/(
+M"(A&+,9&)@7I2`0``,9&)@;I/P0```^V1C3!X`@#A00*``"+@$P(``"C````
+M`(!^*P$9P(/@`H/`%(A&)ND3!```BD8K0(A&*SI&'W,)QD8F%NG^`P``QD8K
+M`,9&)A>#[`QH(*$'`.C\____@\00Z>$#``#&1B84Z=@#``#&1B8(Z<\#``#&
+M1B84Z<8#``#&1BX"Z/S___^)1G#&1B85Z;$#```/MD8TP>`(`X4$"@``BX!,
+M"```HP`````/ML")1"04#[9&-,'@"`.%!`H``(N`1`@``*,`````#[;`P>`(
+M"40D%.C\____B49TBT0D%(/@#X/X`W4/@'XN`'0)QD8F"NE-`P``BT9T*T9P
+M+4`-`P!X!H!^+@!T%L9&)A6`?BX`#X0L`P``_DXNZ20#```/MD8K@WR&/``/
+MA.\```#&1"03`(!["@!V1HU+.(E,)`R#[`S_="08Z/S___^)1"0H#[9&*X/$
+M$(M4)!@Y5(8\=!Z+3"0,BT$$B5$$B0J)0@2)$/Y$)!.*1"03.$,*=\'^2PJ+
+M5"08@WH<`'1UBT(<QT!@`````/9")`1U*?Z%5PP``(/L#%7H_/___X/$#&H!
+MBTPD((M!'`^V0`%05>C\____@\00@^P$BT0D'/]P'/^U)`4``&H!Z/S___^#
+MQ`R+5"0<_W(<_[4D!0``:@;H_/___XM,)"C'01P`````@\00#[9&*\=$ACP`
+M````@^P(_W0D(%7H_/___X/$$,9&)@GI'0(```^V1C3!X`@#A00*``"+@$P(
+M``"C``````^VT`^V1C3!X`@#A00*``"+@$0(``"C`````,'@"`G"B58X@'XF
+M"G0(]\(```$`=`[&1B8+Z<L!``#^2PKK<L9&)@P/MD8K@WR&/`!T4\9$)`L`
+M@'L*`'98C4,XB40D!(/L#/]T)!#H_/___XE$)"@/MD8K@\00BU0D&#E4ACQT
+MN8M,)`2+002)402)"HE"!(D0_D0D"XI$)`LX0PIWP>L0@^P,5>C\____B40D
+M*(/$$(-\)!@`#X1X`0``#[9&*XM4)!B)5(8\BD8OB(*R````Z2\!``#'!"0_
+M0@\`BT,8]D`J"'4J@^P,5>C\____QP0D`0```.C\____@\00_PPD@SPD_W0)
+MBT,8]D`J"'36QD8F">GL````#[9&-,'@"`.%!`H``(N`3`@``*,`````#[;`
+MB40D%`^V1C3!X`@#A00*``"+@$0(``"C``````^VP,'@"`E$)!2+1"04)?\/
+M```]$P$``'0'/2,!``!U,,9&)AB+1"04)?\/```]$P$``'4&QD8O".MZBT0D
+M%"7_#P``/2,!``!U:L9&+PGK9`^V5BH/MD8?2#G"?0S^1BK^1BO&1B8'ZTO&
+M1B8`9HM&,H/@]X/(`F:)1C*#?U``=!"#[`B-1U!05>C\____@\00@^P(5U7H
+M_/___\9#!?^#Q`A35>C\____@\00ZS7&1B8#B?:#?U``=!*#[`B-1U!05>C\
+M____@\00B?:#[`A75>C\____@\0(5E7H_/___X/$$(/$'%M>7UW#D%575E.#
+M[!R+?"0PBVPD-,=$)!@`````QD0D$P!F@7T0A0`/AX@````/MT40@+PXF`0`
+M`/]T>F:#?1!_=Q\/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*(I(!.M69H%]
+M$($`=R@/MT40#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"BT21"(I(!.LF
+M#[=%$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I(!.L%C78`L?^S_V:!?1"%
+M`'<+#[=%$(J<.)@$```/ML.-!$"-!("+EW0%``"-!,*)1"04#[;1#[:T.AX%
+M``"-!';!X`,I\(VTAR@!``"`^?]T&("\.AX%``#_=`Z`^_]T"8!]%`9U+XUV
+M`(-]4`!T$H/L"(U%4%!7Z/S___^#Q!")]H/L"%57Z/S___^#Q!#I%@8``(GV
+M@'T4`'02@^P(5E?H_/___X/$$.G\!0``BU0D%`^V0B:#Z`V#^`0/A[0%``#_
+M)(5X%P``BTPD%`^V033!X`@#AP0*``"+@$P(``"C``````^VT`^V033!X`@#
+MAP0*``"+@$0(``"C`````,'@"`G"QD0D$@#&1"01`+,`@'D?`'8UC78`#[;+
+MN`$```#3X(7"=!K^1"03BT0D%(-\B#P`=`;^1"01ZP7^1"02D$.+3"04.%D?
+M=\Z`?"02`'0(BT0D%(!(+0&`?"01`'0(BTPD%(!)+0*`?"03`0^%80$``+,`
+MBT0D%(!X'P!V4@^VR[@!````T^"%PG0C@^P$45=6Z/S___^)1"0H@\00A<!T
+M&8EP*(M4)!2)4##K#9!#BTPD%#A9'W?%ZQ6+1"04B%@K.%@?=@G&0"8.Z:,$
+M``"+5"04.%H?#X66!```@^P$:@$/MD8)4%?H_/___\9$)!L`@\00@'X*``^&
+MEP```(U>.(/L#%/H_/___XE$)"B#Q!"+0P2+3"08B4L$B1F)002)"(-Y'`!T
+M'H/L!/]Q'/^W)`4``&H%Z/S___^+1"0H@$@D`H/$$(/L!/]T)!QJ!E;H_/__
+M_X/$$(M4)!B`>DL`="*#[`Q7Z/S____'!"0!````Z/S___^#Q!"+3"08@'E+
+M`'7>_D0D"XI$)`LX1@H/AVS___^#?5``=!"#[`B-15!05^C\____@\00@^P(
+M55?H_/___XM4)"3&0BT`QD8%`(DT).C\____@\00Z=4#``"0BTPD%&:!23*`
+M`+,`@'D?`'93#[;+N`$```#3X(7"="2#[`115U;H_/___XE$)"B#Q!"%P'0:
+MB7`HBU0D%(E0,.L.B?9#BTPD%#A9'W?$ZQ6+1"04B%@K.%@?=@G&0"8/Z3L#
+M``"+5"04.%H?#X4N`P``@^P$:@$/MD8)4%?H_/___\9$)!H`@\00@'X*``^&
+MEP```(U>.(/L#%/H_/___XE$)"B#Q!"+0P2+3"08B4L$B1F)002)"(-Y'`!T
+M'H/L!/]Q'/^W)`4``&H%Z/S___^+1"0H@$@D`H/$$(/L!/]T)!QJ!E;H_/__
+M_X/$$(M4)!B`>DL`="*#[`Q7Z/S____'!"0!````Z/S___^#Q!"+3"08@'E+
+M`'7>_D0D"HI$)`HX1@H/AVS___^#?5``=!"#[`B-15!05^C\____@\00@^P(
+M55?H_/___XM4)"3&0BT`QD8%`(DT).C\____@\00Z6T"``"0BTPD%`^V033!
+MX`@#AP0*``"+@$P(``"C``````^VT`^V033!X`@#AP0*``"+@$0(``"C````
+M`,'@"`G"]\(```0`=`;V02T!=1+WPO__^_]T%XM$)!3V0"T"=`V+5"04QD(F
+M#^G/`0``BTPD%,9!+0#I]@$``+L_0@\`BT88]D`J"'4G@^P,5^C\____QP0D
+M`0```.C\____@\002X/[_W0)BT88]D`J"'39BT0D%,9`)A#I@`$``(M4)!0/
+MMD(TP>`(`X<$"@``BX!,"```HP`````/ML")1"0,#[9"-,'@"`.'!`H``(N`
+M1`@``*,`````#[;`P>`("40D#(M$)`R#X`^#^`,/A=<```#V0BT!=`O&0B82
+MZPW^3@KK<XM,)!3&0282BU0D%`^V0BN#?((\`'1,QD0D"0"`?@H`=E&-7CB#
+M[`Q3Z/S___^)1"0HBTPD)`^V02N#Q!"+5"08.52!/'2TBT,$B5,$B1J)0@2)
+M$/Y$)`F*3"0).$X*=\3K$(/L#%?H_/___XE$)"B#Q!"#?"08``^$T````(M4
+M)!0/MD(KBTPD&(E,@CR+1"0,)?\/```]$P$``'4)QH&R````".MSBT0D#"7_
+M#P``/2,!``!U8XM$)!C&@+(````)ZU:)]HM4)!3&0B83ZTJ+3"04#[9!-,'@
+M"`.'!`H``(N`3`@``*,`````#[9!-,'@"`.'!`H``(N`1`@``*,`````#[9!
+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
+MC120B50D$.LBBT0D-,=`+/____^#[`Q0_U`HN`````"#Q!#IJP$``(UV`$&`
+M^85VFHN=)`4``('#8`P``+&`#[9\)!>-=@`/ML%F#[:4&)@$``!F@?K_`'1-
+MB?!&.?AU1H#Y@7<?#[?"C01`C03`B<+!X@4IPHN#D`4``(T4D(E4)!#K(HM4
+M)#3'0BS_____@^P,4O]2*+@`````@\00Z2\!``"-=@!!@/F%=IJ+3"08BE$$
+M#[9I!<'E$`^V00;!X`@)Q0^V00<)Q0^V>0C!YQ`/MD$)P>`("<</MD$*"<>#
+M?"00``^$P0```,9$)!8`BT0D$(!X,``/AJX```")QH/&*`^VTHE4)`R0@^P,
+M5NC\____C5CX@\00BU8$B48$B3")4`2)`H![(0UT!H![(2)U9(M4)!@/MD(#
+M@_@[="*#^#QU4L9$)!4!@^P,_W0D0%57_W0D)%/H_/___X/$(.LUBT0D&(/`
+M"X/L!%50_[/D````Z/S___^#Q`3_="1`55?_="0D4^C\____QD0D-0&#Q""-
+M=@#^1"06BDPD%HM$)!`X2#`/AU____^X`0```(!\)!4`=1N+5"0TQT(L____
+M_X/L#%+_4BBX`````(/$$)"#Q!Q;7E]=PU575E.#[!R+1"0TBW@81XM0$$J)
+M5"08QT0D%`````"+2!R)3"00@'\!`74,QT`L`````.E"`@``@'\!`G5:@'\"
+M`75$BT0D,(.X*`4```!T"HN0*`4``(E4)#"+3"0PBX$D!0``BE<#B)!6#```
+MBE<#B)"V&```BT0D-,=`+`````#I\P$``)"+5"0TQT(L_O___^GB`0``@'\!
+M!'4BBD<#@^@[/`%W&(/L"/]T)#S_="0\Z/C\__^#Q!#IW@$``(!_`0-U>H!_
+M`@%U8@^V5P.+3"0P#[9!)HT,`(G0F??Y.=%^.H/L!`^V1P10#[;:4_]T)#SH
+M_/___X/$#`^V1P104_]T)#SH_/___XM4)$3'0BP`````@\00Z5P!``"+3"0T
+MQT$L_O___^E,`0``BT0D-,=`+/[____I/`$``(GVBU0D,(.Z*`4```!T"HN*
+M*`4``(E,)#")^X!_`0`/A*@```"0#[8S0XH#0XC!#[;0]L(!=#^+;"04`?6+
+M1"0T.V@4#X?4````@^P,5HM$)"`#1"0D4%)J`/]T)$SHH_C__X/$(#GP#X6P
+M````B6PD%.M/B?:-+#.)Z"GX@\`".T0D&`^/E````(/L#%93#[;!4&H`_W0D
+M3.BP^O__@\0@A<!U>8GK@'T``'4&@'T!`'0:@^P,:!`G``#H_/___X/$$(![
+M`0`/A5G___\/MC.%]G16:E1J`FH`_W0D/.B']?__@\00BU0D-(M"%"M$)!0Y
+MQG8"B<:#[`Q6BT0D(`-$)"10:@!J`/]T)$SH]??__X/$((7`>`8!1"04ZPR+
+M3"0TQT$L_____Y!J5&H":@#_="0\Z#'U__^#Q!"+1"0T@W@@`'0)BT`@BTPD
+M%(D(@^P,_W0D0(M$)$3_4"B#Q!"#Q!Q;7E]=PXGV@^P,BT0D$(.X*`4```!T
+M!HN`*`4``("X5@P```!U&<8%HP(```%J(&B@`@``:@Y0Z/S___^#Q!"#Q`S#
+M@^P,BT0D$(.X*`4```!T!HN`*`4``,8%HP(```!J(&B@`@``:@Y0Z/S___^#
+MQ!S#5U93BWPD$(/L!`^V="0<5@^V7"0<4_^W)`4``.C\____@\0,5E-7Z/S_
+M__^#Q!!;7E_#D(M4)`2+3"0(BT($9L>`;/[__^R8BT($9HF(:/[__\.04X/L
+M"(M<)!"*1"04BDPD&,8$)`6)XL9$)`$/QD0D`@+&1"0#`\9$)`0&QD0D!0?&
+M1"0&"\9$)`<,/`=W083)=!</ML`/M@P"N/[____3P&8A@U0,``#K%0^VP`^V
+M#`2X`0```-/@9@F#5`P```^W@U0,``!04^C\____@\0(@\0(6\.05U93BW0D
+M$(.^*`4```!T!HNV*`4``+\`````:@!J!XGX#[;84U;HD?/__VI$:@)35NB&
+M\___@\0@:-````!J`%-6Z'7S__]J`&H$4U;H:O/__X/$($>#_P%VP&B@A@$`
+MZ(?S__^(AL4*```/ML!0:@-J`%;H0_/__X/$%%M>7\.+1"0$BU`$@>H``@$`
+MBT0D"(L$`J,`````PXGVBT0D!(M(!('I``(!`(M4)`R+1"0(B10!PXUV`%.+
+M7"0(BU,$@>H``@$`QX*```$``````(N"!`$!`*,`````@,P!B8($`0$`:@1H
+M#,(``%/H_/___VBX"P``:`C"``!3Z/S___]H`0`,`&@`P@``4^C\____@\0D
+M:@1H#,,``%/H_/___VBX"P``:`C#``!3Z/S___]H`0`,`&@`PP``4^C\____
+M@\0D:@!H4,(``%/H_/___VH`:%##``!3Z/S___^+0P1FQX!,_O__``"+0P1F
+MQX!L_O__[)B+0P1FQX!H_O__[)AFQX-4#```__^#Q!A;PU93@^P$BU0D$#F2
+M)`4```^51"0#BD0D%(/@`P^VP(T<0+@'````B-G3X/?0B<8C<CR)<CR`?"08
+M`'0,N`0```#3X`GPB4(\_W(\#[9$)`?!X`@%4,(``%#_LB0%``#H_/___X/$
+M$%M>PXUV`%575E.#[`R+?"0@BW0D)(V?(`L``(N/D`4``(VI[`8-`&:!?A"%
+M`'<<#[=&$`^VA#B8!```C01`C03`B<+!X@4IPHTLD8M6-(!Z`0)U&HM"!(D#
+MBT((B4,$BT(,B4,(BT(0B4,,C78`@WY0`'02@^P(_W905^C\____@\00C78`
+M@^P(5E?H_/___\9%-`"#Q!Q;7E]=PXGV55=64X/L&(M\)"R+;"0PBT0D-(E$
+M)!2+3"0XB4PD$(M'"(LP5NC\____B<.#Q!"%P'1_@^P,5NC\____B<&#Q!"%
+MP'1MQD<T`8U#/,9#).'&0R4!QD,F$,9#%;MF#[97,V:)4Q")<QC'0R"0````
+MC5$(B5,TB4M0QD(!`L9!"$")Z8A*`HI,)`B(2@.*3"0$B$H$QT-L`````(/L
+M"&H`4.C\____@\0(4U;H_/___X/$$(/$#%M>7UW#B?955U93@^P8BUPD+(I$
+M)#"(1"07BDPD-(A,)!:*1"0XB$0D%8M#"(LH5>C\____B40D$(/$$(7`#X0U
+M`0``@^P,5>C\____B<*#Q!"%P`^$'P$``,9#-`&+#"2#P3R)3"0$BS0DQD8D
+MX<9&)0'&1B80QD85NV8/MD,S9HE&$(EN&,=&()````"-0@B)1C2)5E")P[D`
+M````NI````"("$!*=?K&0P&"Q@-`BD0D"XA#`HI,)`J(2P.*1"0)B$,$/`)W
+M/`^V1"0)C7L(C94@"P``_(T<A0````")V<'I`HG6\Z6)\HG8@^`"A<!T!&:E
+MB?*)V(/@`87`=%&)UJ3K3(N%(`L``(E#"(N%)`L``(E##`^V1"0)C7L0C94H
+M"P``_(T<A?C___^)V<'I`HG6\Z6)\HG8@^`"A<!T!&:EB?*)V(/@`87`=`.)
+MUJ2+!"3'0&P`````@^P(:@#_="00Z/S___^#Q`C_="0(5>C\____@\00@\0,
+M6UY?7<.)]E=64X/L$(MT)""*1"0DBE0D*(A4)`^(PL#J`HA4)`Z#X`.)QXM&
+M"(L8:@)J`&H`5NC\____@\00@'XT`'0@B?:#[`Q3Z/S____'!"0!````Z/S_
+M__^#Q!"`?C0`=>*+1@B+$('"(`L``(I"`H3`>#R#R("(0@)J`6H`:@!6Z/S_
+M__^#Q!"`?C0`="&0@^P,4^C\____QP0D`0```.C\____@\00@'XT`'7BB?9J
+M`0^V1"024&H#5NC\____@\00@'XT`'0AC78`@^P,4^C\____QP0D`0```.C\
+M____@\00@'XT`'7BBT8(BQB!PR`+``")^@^VPKD#````*<&`?"0/``^5P@^V
+MTL'B`XL$"X/@YPG0B00+:@$/MD0D$E!J`U;H_/___X/$(%M>7\.0D)!55U93
+MBU0D%(M\)!B+;"0<BUPD((N*6`4``(VQZ!8!`&:!?Q"%`'<7#[='$`^VE!"8
+M!```C032P>`"*="--,&-C2`$``#&A2`$```G9H%_).$!=22*1R9(/`%W"(I7
+M)^LBC78`9H%_).$!=0R*1R:#Z!&R#SP!=@NR`(-^,`!T`XI628/B#XI!`8/@
+M\`G0B$$!L@!F@7\DX0%U"8I')D@\`78#D+(!P>('BD$!@^!_"="(00&*0P:(
+M00**`XA!`XI#!8A!!XI#!XA!#XI#`HA!!(I#`XA!!8I#!(A!!HI#`8A!#(I#
+M"HA!"(I#"XA!"8I##(A!"HI#"(A!"XI#"8A!#5M>7UW#B?964X/L!(M,)!"+
+M7"04BU$HBS(/MD,D@_@O=&6#^"]_*(/X&P^$ZP```(/X&W\*@_@2=$WI\```
+M`(/X*'1#@_@J=#[IX0```)`]B@```'0Q/8H```!_%H/X-0^$M0```#V(````
+M=!KIO0```)`]CP```'0-/>$```!T9>FI````D/9!-`%T!X%+9```!`#V0380
+M#X2=````@'LD*'07@'LD*G01@'LDB'0+@'LDB@^%@0```)#V0@@!=1:#[`@/
+MMD($4%;H_/___X/$$(3`=&60@'L4@71>@4MD```!`.M5N`````"`>R4!=4\/
+MMD,F@_@<=QG_)(6,%P``@TMD".LT@TMD`>LN@TMD(.LHN`````#K)I#V030!
+M=`>!2V0```0`@TMD`>L-D+@`````]D-F('0&D+@!````@\0$6U[#D`^V1"0$
+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
+M5E.+?"04BT0D$(MP!('N``(!`+L`````.?MS+8UV`(N&`,@``*,`````J`%U
+M";@`````ZQF)]H/L#&H*Z/S___^#Q!!#.?MRUKC_____6UY?PY!3BUPD'(M$
+M)`B+2`2!Z0`"`0`/ME0D$,'B"`^V1"08P>`$"<*`?"04`'0#@\H$@_O_=!")
+MV"7__P,`B8$$R```@\H"BT0D#(D06\.0BT0D!(M0!('J``(!`(M$)`B#R`&)
+M@@#(``##D%93@^P$BUPD$(MS!('N``(!`&K_:@%J`8N#7`P```^V0`)0C40D
+M$%!3Z&K_____="084^BL____@\08:!`G``!3Z/[^__^#Q!"Z_____X7`=1N+
+MA@S(``"C`````(D$)(G"BT0D%(@0N@````")T(/$!%M>PXUV`%575E.#[`R+
+M;"0@BWPD+`^V="0DBD0D*(A$)`J[`````#G[<SV-=@"#[`B-1"034%7H4O__
+M_X/$$(7`=1.)\")$)`LZ1"0*=0>X`````.L7@^P,:@KH_/___X/$$$,Y^W+&
+MN/____^#Q`Q;7E]=PY!3@^P(BUPD$&K_:@!J`(N#7`P```^V`%"-1"044%/H
+MC?[___]T)!Q3Z,_^__^#Q!AH$"<``%/H(?[__X/$$+K_____A<!U&6C@DP0`
+M:@)J`U/H.O___X/$$(/X`1G2]]*)T(/$"%O#D%.#[`B+7"00_W0D%&H!:@&+
+M@UP,```/MD`+4(U$)!104^@B_O___W0D'%/H9/[__X/$&&@0)P``4^BV_?__
+M@\00NO____^%P'4:BT,$BY`,QO__B14`````BT0D&(@0N@````")T(/$"%O#
+MD%93@^P8BUPD)(MT)"C&1"07_XU$)!=05E/H_/___X/$$+K_____A<!U>KH`
+M````@'PD$P!T;H/L#%/H[?[__X/$$+K_____@_C_=%A6:@!J`(N#7`P```^V
+M0`I0C40D'%!3Z'7]____="0D4^BW_?__@\08:!`G``!3Z`G]__^#Q!"Z____
+M_X7`=1EHX),$`&H`:@-3Z"+^__^#Q!"#^`$9TO?2B="#Q!1;7L-3@^P4BUPD
+M'%/H<O[__X/$$+K_____@_C_=%O_="04:@!J`(N#7`P```^V0`90C40D%%!3
+MZ/?\____="0<4^@Y_?__@\08:!`G``!3Z(O\__^#Q!"Z_____X7`=1EHX),$
+M`&H`:@-3Z*3]__^#Q!"#^`$9TO?2B="#Q`A;PXUV`%93@^P0BW0D'(M>!('K
+M``(!`%;HZ/W__XM$)"B)@PC(``#_="0D:@1J`(N&7`P```^V0`50C40D(%!6
+MZ'#\__^#Q"C_-"16Z+#\__]H$"<``%;H!?S__X/$$+K_____A<!U&6B($P``
+M:@!J`5;H'OW__X/$$(/X`1G2]]*)T(/$!%M>PU575E.#[`R+;"0DBWPD*(MT
+M)"R[`````#GS<R.#[`3_-!^-1!T`4/]T)"SH3/___X/$$(/X_W0,@\,$.?-R
+MW;@`````@\0,6UY?7<-64X/L!(M<)!"*1"0<BW,$@>X``@$`/`1V`K`$_W0D
+M%`^VP%!J`8N#7`P```^V0`10C40D$%!3Z*3[____="084^CF^___@\08:!`G
+M``!3Z#C[__^#Q!"Z_____X7`=1N+A@S(``"C`````(D$)(G"BT0D&(D0N@``
+M``")T(/$!%M>PY!55U93@^P,BVPD)(MT)"B+1"0L`>B)1"0$B>N#X_R)[X/G
+M`W1':@2-1"0,4%/_="0LZ$;___^-0P2#Q!"Y!````#M$)`1V"(M,)`0IZ0'Y
+MB?HYSW,2C7PD"(UV`(H$%X@&1D(YRG+U@\,$B?:+?"0$@^?\.?MS)8UL)`B0
+M:@154_]T)"SH\_[__XM$)!B)!H/&!(/$$(/#!#G[<N`[7"0$<S9J!(U$)`Q0
+M4_]T)"SHR?[__XM,)!0IV;H`````@\00.<IS$XU<)`B-=@"*!!.(!D9".<IR
+M]9"X`````(/$#%M>7UW#C78`5E.#[`2+7"00QP0D`````(MS!('N``(!`,:#
+M6`P```!J`&H":@$/M@4(````4(U$)!!04^@[^O___W0D&%/H??K__X/$&&@0
+M)P``4^C/^?__@\00A<!U/(N&#,@``*,`````B00D/;]#``!U)\>#2`P``+]#
+M``#'@TP,`````"``QX-0#````!```&:X``#K"(UV`+C_____@\0$6U[#D%93
+M@^P$BUPD$,<$)`````"+<P2![@`"`0#&@U@,````:@!J`FH!#[8%"````%"-
+M1"004%/HF_G___]T)!A3Z-WY__^#Q!AH$"<``%/H+_G__X/$$(7`=3R+A@S(
+M``"C`````(D$)#T?8P``=2?'@T@,```?8P``QX-,#``````$`,>#4`P`````
+M`0!FN```ZPB-=@"X_____X/$!%M>PY!64X/L!(M<)!#'!"0`````BW,$@>X`
+M`@$`QH-8#````6K_:@)J`0^V!0@```!0C40D$%!3Z/OX____="084^@]^?__
+M@\08:!`G``!3Z(_X__^#Q!"%P'5HBX8,R```HP````")!"0]'T,``'0K/1]$
+M``!U3,>#2`P``!]$``#'@TP,``````0`QX-0#``````!`&:X``#K+<>#2`P`
+M`!]#``#'@TP,``````0`QX-0#``````!`+@`````ZPB-=@"X_____X/$!%M>
+MPY!64X/L!(M<)!#'!"0`````BW,$@>X``@$`QH-8#````&H`:@)J`0^V!0@`
+M``!0C40D$%!3Z"_X____="084^AQ^/__@\08:!`G``!3Z,/W__^#Q!"%P'5P
+MBX8,R```HP````")!"0][Q$``'0+/>\2``!T+.M2B?;'@T@,``#O$0``QX-,
+M#``````$`,>#4`P``````0"X`````.LPC78`QX-(#```[Q(``,>#3`P`````
+M!`#'@U`,``````$`N`````#K"(UV`+C_____@\0$6U[#D%.#[!2+7"0<4^BR
+M_?__@\00A<!U$\>#7`P```````"Z`````.MJB?:#[`Q3Z"_^__^#Q!"%P'41
+MQX-<#````````+H`````ZT>#[`Q3Z,[\__^#Q!"%P'41QX-<#````````+H`
+M````ZR:#[`Q3Z+G^__^#Q!"Z_____X7`=1''@UP,````````N@````")]HG0
+M@\0(6\.05U93BUPD$(M\)!R*1"0@BW0D&+H`````@[M<#`````^$TP```(3`
+M=#N#?"04_W409HN#2`P``&:)!NFQ````D%=6_W0D'%/H5/O__X/$$+H`````
+MA<`/A9P```#ICP```(UV`(-\)!3_=1&`/@\/E(-9#```N@$```#K?+H`````
+M@+M9#````'1NBT0D%+H`````][-0#```A=)U.X"[6`P```!T&8/L"/]T)!Q3
+MZ/S___^#Q!"Z`````(7`=3F#[`C_="0<4^@`^?__@\00N@````"%P'4@5U;_
+M="0<4^CL^?__@\00N@````"%P'4(N@$```"-=@")T%M>7\.0D%575E.#[$R+
+M;"1@QD0D&&V-1"08QD`!_\9``B/&0`,4QD`$.L9`!>_&0`86QD`'DKD`````
+MNB````"-1"0@B?:("$!*=?K&1"0D`<9$)`\`:B"-7"0D4VH.5>C\____@\00
+MA<!U6(/L#&B`&@8`Z/S___]J(%-J#U7H_/___X/$((/X('4XC50D,(U$)!BY
+M"````/R)UHG'\Z8/E\(/DL`XPG4:QD0D#P$/MD0D+L'@"`^V5"0O"=")A30%
+M```/MD0D#X/$3%M>7UW#D%93BU0D#+L#$0`GN0````"#>@@`="Z+0@B+`*,`
+M````B<:+0@B)&(M""(L`HP````"Y`````#G8=0J+0@B),+D!````B<A;7L.-
+M=@!55U93@^P<BUPD,(L#BX!@`/__HP````"#X`.#^`%T&(/X`7('@_@"=&?K
+M;\>#,`4```$```#K8X/L#%/H_/___X/$$(3`=!ZAY`,``(D<A<`#``!`H^0#
+M``#'@S`%```"````ZS53Z/S___^#Q`2$P'0HH>@#``")'(70`P``0*/H`P``
+MQX,P!0``!````.L*QX,P!0```P```*'@`P``B1R%@`,``$"CX`,``(`]#0``
+M```/A8T```#&1"03`(7`#XYG`@``@SW``P```'0L#[94)!.[@`,``(L-P`,`
+M`#L,DW07BP23B8@H!0``BQ23H<`#``")@H@1``"#/=`#````="P/ME0D$[N`
+M`P``BPW0`P``.PR3=!>+!).)B"P%``"+%).AT`,``(F"C!$``/Y$)!,/MD0D
+M$SL%X`,``'R%Z><!``#&1"03`*'``P``B40D&(7`#X3=````O0````"#/>`#
+M````#XZO````D(GI#[;1BP25@`,``(.X*`4````/A8,```"+3"08.<AT>[X`
+M````B@T-````A,ET;(E4)`R+5"0,N(`#``"+')`X2R%R0P^V4R$/ML&)QP,]
+M%!$``#GZ<S"+5"08.$HA<B</MD(A.?AS'XF3*`4``(M,)`RZ@`,``(L$BHM,
+M)!B)B(@1``#K%9!&B?(/ML+!X`6*B`T```"$R769D$6)Z0^VP3L%X`,```^,
+M4O____Y$)!,/MD0D$XL$A<`#``")1"08A<`/A2/____&1"03`*'0`P``B40D
+M%(7`#X3>````O0````"#/>`#````#XZP````B?:)Z0^VT8L$E8`#``"#N"P%
+M````#X6#````BTPD%#G(='N^`````(H-#0```(3)=&R)5"0(BU0D"+B``P``
+MBQR0.$LA<D,/ME,A#[;!B<<#/101```Y^G,PBU0D%#A*(7(G#[9"(3GX<Q^)
+MDRP%``"+3"0(NH`#``"+!(J+3"04B8B,$0``ZQ601HGR#[;"P>`%BH@-````
+MA,EUF9!%B>D/ML$[!>`#```/C%+____^1"03#[9$)!.+!(70`P``B40D%(7`
+M#X4B____@\0<6UY?7<.)]E575E.+;"04O@````"X`0```(`]#0````!T8>L'
+MN`$```#K6(GR#[;"P>`%1HJ(#0```(3)=$"+/101``"-=@`X32%R'P^V52$/
+MML&-'#@YVG,1BT0D&#A((7((#[9`(3G8<KF)\@^VPL'@!4:*B`T```"$R77)
+MN`````!;7E]=PXUV`%.+3"0(BUPD#(N!,`4``+H!````.X,P!0``=PZ+@3`%
+M```[@S`%```9THG06\.)]HM4)`2+3"0(N``````[%6`1``!],HT44L'B`V:+
+M@@`1``!FB0%FBX("$0``9HE!`HJ""!$``(A!"(J""1$``(A!";@!````PU57
+M5E.#[`C'1"0$`````)"+1"0$P>`%B<-F@[@```````^$AP```+T`````@+@<
+M`````'1JB00DBU0D!(U$U0"--(4,````C7PD'+D$````_/.F#Y?"#Y+`.,)U
+M,[\0````BD0[#4"(1#L-@'P[#`!T'CI$.PQV&&8/ML!F#[9,.PRZ`````&;W
+M\8A4.PV)]D6+'"0/MH,<````.>A_F?]$)`2#?"0$`P^.8O___X/$"%M>7UW#
+MB?955U93@^P,QD0D"P#&1"0*`(UV`,9$)`D`:@`/MD0D#5`/MD0D$E`/MD0D
+M%U#H_/___XE$)!2_`````(/$$#L]8!$```^-3P$``(GVC01_P>`##[>0`A$`
+M`,'B$`^W@``1```)PCM4)`0/A1T!``#&1"0(`(T$?\'@`XD$)(TL?P^V5"0(
+MB='!X05F@[D``````'5PBQPDBX,`$0``B8$`````BX,$$0``B8$$````BX,(
+M$0``B8$(````#[:!'````,'B`XT$`HI<)`N('(4-````#[:!'````(T$`HI<
+M)`J('(4.````#[:!'`````'"BD0D"8@$E0\```#^@1P```#K>P^V="0(B?/!
+MXP4/MHL<````B<BZ`````/<T[101``"%TG1)C13U`````(T$"HI,)`N(#(4-
+M````#[:#'````(T$`HI,)`J(#(4.````#[:#'`````'"BD0D"8@$E0\```#^
+M@QP```#K$HUV`/Y$)`B`?"0(`P^&`?___XT$?_\$Q0P1``"-=@!'.SU@$0``
+M#XRS_O___D0D"0^$=O[___Y$)`J`?"0*'P^&8O[___Y$)`N`?"0+_P^%2_[_
+M_X/$#%M>7UW#C78`55=64X/L',=$)!0`````@SWL`P```'4/QP7L`P```0``
+M`.@-_O__@WPD-`!T!XM$)#3&``#'1"08`````+H`````.Q5@$0``?3^)]HM,
+M)!B-!$F-%,4`````BX(,$0```40D%(-\)#0`=`Z+3"0TB@$"@A`1``"(`?]$
+M)!B+1"08.P5@$0``?,.#?"0X``^$IP```,=$)!@`````BT0D&,'@!8G%9H.X
+M```````/A(@```"[`````("X'`````!T:XM4)!C!X@.)5"00B40D#(M$)!`!
+MV(TTA0P```"+?"0XN00```#\\Z8/E\(/DL`XPG4I@WPD-`!T#(J%'0```(M4
+M)#2(`HM$)!C!X`4/MH`<````B40D%.L2B?9#BVPD#`^VA1P````YV'^D_T0D
+M&(-\)!@##XYA____#[9$)!2#Q!Q;7E]=P[C`&```PXGVN)P```##B?:X!```
+M`,.)]E575E.#[`R+?"0@BW0D*(ML)"R-GF`,``"Y`````+K`&```B?"-=@"(
+M"$!*=?J);A"+%6`#``"-0@&C8`,``(A6*(M$)"2)1B#&1BD`9HL'9HE&&&:+
+M1P)FB48:BT<$B48<B6L0B%,HBT0D)(E#(,9#*0%FBP=FB4,89HM'`F:)0QJ+
+M1P2)0QP/MT8:/2(G``!_83T@)P``#XW"````/4`A```/A+<````]0"$``'\;
+M/2`A```/A*4````](B$```^$F@```.FI````/40A```/A(H````]1"$```^,
+MDP```"T0)P``@_@!#X>%````ZV^-=@`]8"<``'1E/6`G``!_(#U`)P``=%<]
+M0"<``'\)/3`G``!T2>M;/40G``!T0.M2/8(G``!T-SV")P``?PD]@"<``'0I
+MZSL]@)$``'0)/8"4``!T&>LK9L=&)("1QD8F!&;'0R2`D<9#)@3K%9!FQT8D
+M@)3&1B8$9L=#)("4QD,F!(I'"(A&*HI'"(A#*F@```0`:@!J`E7H_/___XD&
+M:``@``!J`&H`5>C\____B48(@\0@@SX`=`2%P'4*N`````#IY````(L&C8@`
+M`@$`B4X$C9````(`B18%`$`"`(D#B4L$BT8(B4,(NP`````['6`1``!]3HLM
+M8!$``(T$6XT,Q0````"+!SF!`!$``'4OBX$0$0``0(F!$!$``(.Y#!$```!T
+M&3N!#!$``'81N@````#WL0P1``")D1`1``!#.>M\N(M&!,>`((+__P'P`P"+
+M1@3'@"B"__\!``#H@^P(:GC_=A#H_/___XG")0!P``"#Q!`]`"```'84@^P$
+M:G@/ML)0_W80Z/S___^#Q!#_="0DZ)#Y__^#[`A6Z%/U__^X`0```(/$$(/$
+M#%M>7UW#C78`4X/L%(M<)!Q3Z/S___^!PV`,``")'"3H_/___[@!````@\08
+M6\.)]E93@^P0BW0D'(N>)`4``('#8`P``%;H_/___X/$$(!^.0%U!H![.0%T
+M.X/L"(V>$`$``%/_=A3H_/___\>&$`$``.@#``#'AA@!````````B;8<`0``
+M@\0(4_]V%.C\____@\00@\0$6U[#D%93@^P0BUPD'(VS8`P``%/H_/___XE#
+M%(E&%(F;)`4``(F>)`4``(N#,`4``(F&,`4``(D<).C\____B30DZ/S___^)
+M'"3H_/___X/$$+H`````A,`/A(4```"#[`Q6Z/S___^#Q!"Z`````(3`='"#
+M[`Q3Z/S____'!"30!P``Z/S___^)'"3H_/___XD<).C\____QX,0`0``Z`,`
+M`,>#&`$```````")FQP!``"#Q`B-@Q`!``!0_W,4Z/S___^#Q`AJ`%/H_/__
+M_X/$"&H`5NC\____N@$```"#Q!"0B="#Q`1;7L-55U93@^P\BUPD4,9$)`AM
+MC40D",9``?_&0`(CQD`#%,9`!#K&0`7OQD`&%L9`!Y*#NR@%````=`:+FR@%
+M``"Y`````+H@````C40D$(UV`(@(0$IU^L9$)!0!O0````!J((UT)!16:@Y3
+MZ/S___^#Q!"%P'5!@^P,:(`:!@#H_/___VH@5FH/4^C\____@\0@@_@@=2&-
+M="0@C40D"+D(````_(G'\Z8/E\(/DL`XPG4%O0$```")Z(3`=1"#[`QHX0$`
+M`.C\____@\00B>H/ML*#Q#Q;7E]=PXGVPXUV`%575E.#[`R+;"0@BUPD)+D`
+M````NG@```")V)"("$!*=?J#O3`%```!#Y1#$XM%((D#@$L1$&:+11AFB4,$
+M9HM%&F:)0P:+A3`%``"(0VS&0Q(@9H%]&B`A=`AF@7T:(B%U',9#%P*^4`<`
+M`(U[//RY!P```/.E9J6DZ80```!FBT4:+1`G``!F@_@!=A!F@7T:0"%T"&:!
+M?1I$(75-QD,7!&:+11HM$"<``&:#^`%W%;YP!P``C7L\_+D'````\Z5FI:3K
+M/6:!?1I`(70(9H%]&D0A=2V^D`<``(U[//RY!P```/.E9J6DZQC&0Q<(@^P(
+M:`````"-0SQ0Z/S___^#Q!"*0Q?V8Q*(0Q"$P'4$QD,0@+[]`0``C7L8_+D'
+M````\Z6D@[TL!0```'02BX4L!0``BT`(B4-DF8E3:.L*BT4(B4-DF8E3:,=#
+M8``@``"#Q`Q;7E]=PXUV`(M$)`3&@)<`````PU=64XMT)!"+?FR+AR0%``"`
+M>"<`#X6*````BUYP@^P(BU9@#[:"HP```%`/MH*B````4`^V@J$```!0#[:"
+MH````%`/MH*?````4`^V@IX```!0#[:"G0```%`/MH*<````4`^V@M<```!0
+M#[8&@^`!4`^V1@)0#[9&`5#_=@AHL`<``.C\____@\0\QT9P`````/]V"%;_
+M=GC_TX/$$.LXC78`@^P(C5Y\4_]W%.C\____QT9\]`$``,>&A````"RW!`")
+MMH@```"#Q`A3_W<4Z/S___^#Q!!;7E_#C78`55=64X/L#(ML)"0/MT0D*(T4
+MP,'B`BG"BTPD((N!6`4``(T<T(NQ)`4``('&8`P``(ET)`B)76"):QR#>RP`
+M=0J#>S``#X2;`P``OP````"`30`!BT,PB45HBT,LB45DL0"+1"0@@'@K`'8E
+MBW,HD`^VT8G0P>`$`="+5"0@.[2"/`L```^$A@(``$$X2BMWW[&`BT0D((NP
+M)`4```^VP8J$,)@$```\_W0I@WLL`'0B#[;`C01`C03`B<+!X@4IPHN&D`4`
+M`(T4D#M3+`^$-`(``$=!@/F!=L.Q@HM4)""+LB0%``")]@^VP8J$,)@$```\
+M_W0<#[;`C01`C02`BY9T!0``C03".T,P#X3L`0``1T&`^85VT+&`#[;!BW0D
+M"(J$,)@$```\_W0I@WLL`'0B#[;`C01`C03`B<+!X@4IPHN&D`4``(T4D#M3
+M+`^$GP$``$=!@/F!=K^Q@HUV``^VP8M4)`B*A!"8!```//]T'`^VP(T$0(T$
+M@(N2=`4``(T$PCM#,`^$7`$``$=!@/F%=LR+1"0@@'@Y`75&@WLL`'05@^P$
+M:@`/MD-)4/]S+.C\____@\00@[O@``````^$`@(``(/L!&H`#[:#U0```%#_
+ML^````#H_/___X/$$(UV`(.[X``````/A-<!``"+4RR)5"0$OP````"`>C``
+M=D6)UH/&*(/L#%;H_/___XU(^(/$$(M6!(E&!(DPB5`$B0*`N=<```#_=0^`
+M>2$`=0F#N>``````=0Q'B?F+1"0$.$@P=\")^HM,)`0X43`/A=````"*@]<`
+M``"(10*_`````(!Y,``/AKD!``")SH/&*(/L#%;H_/___XU(^(/$$(M6!(E&
+M!(DPB5`$B0*#>1P`=$*+41R*0@(Z@=<```!T-(-Z<`!U+H-Z=`!U*(J!UP``
+M`(A"`H/L!`^W01A0BT0D*/^P)`4``&H'Z/S___^#Q!"-=@!'B?J+3"0$.%$P
+M=Y#I/P$``(GXB$4!Z:'^__^)^HA5`>F7_O__B?F(30'IC?[__XGXB$4!Z8/^
+M__^+5"0@#[9"*8T$@8B%F````.EJ_?__BD-)B$4"QH/7````_[\`````BTPD
+M!(!Y,``/AN$```")SH/&*(/L#%;H_/___XU(^(/$$(M6!(E&!(DPB5`$B0*`
+MN=<```#_=$?&@=<```#_@WD<`'0ZBU$<BD(".D%)="^#>G``=2F#>G0`=2.*
+M04F(0@*#[`0/MT$84(M$)"C_L"0%``!J!^C\____@\00D$>)^HM,)`0X43!W
+MB.MBB?:*0TF(10+K6(MT)"`/MD8IC02!B$4!B(68````ZR^Q`(M$)""`>"L`
+M=B.+<RB-=@`/MM&)T,'@!`'0BU0D(#NT@CP+``!TP4$X2BMWXXMT)"`X3BMU
+M!,9%`?_&10(`B?:-?2"-<V#\N0H```#SI8U]#(US3+$%\Z6+@X@```")14B+
+M@XP```")14QFBT,T9HE%6&:+0S9FB45:BT-`BU-$B450B554BD-*B$5<]D,D
+M!'4NBT0D(("X5PP```!T#_Z(5PP``("X5PP```!U$H/L#/]T)"SH_/___X/$
+M$(UV`(/L!&H`BT,<#[9``5#_="0LZ/S___\/MD,@@\00J`)T#Z@$=`NH`74'
+M@$T``NL%D(!E`/V*4R30ZH/B!(I%`(/@^PG0B$4`@^P,5>@H^O__@\0<6UY?
+M7<-55U93@^P<BWPD,(MT)#2+;"0XN0````"ZG````(GHD(@(0$IU^HEU"(/^
+M/WX)@<=@#```@^Y`N`````"#O+>8`@````^%:0(``(FLMY@"``")?6R+1"0\
+MB45PBT0D0(E%>+@!````@'\Y`0^%0@(``&;'1"0:_P"!_H4```!_#F8/MH0^
+MF`0``&:)1"0:9H%\)!K_``^$"`(```^W5"0:BX]8!0``C032P>`"*="-%,4`
+M````]D0*(P0/A.,!``"+1`H@)0#__P`]``#_``^%SP$``(T<"O9#)`0/A#8!
+M``#&@[``````#[9#(*@"=#*H!'0NJ`%T*L9#(@7&0R,$4P^V0TE0_W,L_W,H
+MZ/S___^#Q!#I@P$``,:#L0````'K7P^V0R"H`G5VJ`1T<J@!=&Z+:RC&0R(#
+MQD,C!,=$)!0`````@'T*`'0VC74X@^P,5NC\____B<*#Q!"+1@2)5@2),HE"
+M!(D0@'HB_W0$.=IUIO]$)!0/MD4*.T0D%'_-@+NQ`````0^$#@$``(/L"%-7
+MZ/S___^#Q!#I_`````^V0R"H`@^$\````*@$#X3H````J`$/A>````"+0RB*
+M0`F^`````(!_)@!V)P^VZ(GR#[;*B>C3^*@!=`^#[`1J`%%7Z/S___^#Q!!&
+MB?`X1R9WW,9#(P;&0R(%9L>#D```````@^P(4U?H_/___X/$$.F%````BULH
+MB5PD$,9$)`\`@'L*`'9@B=J#PCB)5"0(@^P,_W0D%.C\____B<.#Q!"+5"0(
+MBT($B5H$B1.)0P2)&(![(O]T'H![(2)T!H![(0UU$L>$MY@"````````N```
+M``#K._Y$)`^*1"0/BU0D$#A""G>I@^P$#[=$)!Y055?H_/___X/$$+@!````
+MZQ#'A+>8`@```````+@`````@\0<6UY?7<.055=64X/L#(MT)""+;"0DBWPD
+M*(M>8(7;=0Z#[`Q7_]6#Q!#I``$``(-^=`!U!H-^<`!T$(/L#%?_U8/$$.GF
+M````B?:`N[``````#X7+````BU,H#[9""*@0#X6\````J`@/A;0```"+$HE4
+M)`B`>TL`=!&#[`13:@;_<RCH_/___X/$$(EN=(E^>`^V0R"H`G0IJ`1T):@!
+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
+M''(/MD,=4(U%'5#H7_S__X/$&+@`````ZQ*00F:!^H4`#X:%_O__N/____];
+M7E]=PXGV55=64X/L!(MT)!B+;"0<NP````"Y`````+JD#```BT0D((GVB`A`
+M2G7ZNH````"+OB0%```/M\)F#[:,.)@$``!F@?G_``^$!`,``(G80SGH#X7Y
+M`@``9H'Z@0`/AUD"```/M\&-!$"-!,")PL'B!2G"BX>0!0``C2R0@WT,`'1R
+MN8````")^P^WP68/MH08F`0``&8]_P!T'@^WP(T$0(T$P(G"P>(%*<*+@Y`%
+M``"-%)`[50QT,D%F@?F!`';(L@"`?3(`=CV[`0````^VP@^V3"A`B=C3X(G!
+MBT0D(`E(($(X53)WY>L;BU0D((A*`NO-BTPD(,9!`O^+10@/MD`)B4$@BT0D
+M(,8``8I%,8M4)""(0@&+14B)0@2+14R)0@B+15B)0@R+15R)0A"+16")0A2+
+M162)0AB+17")0AS&1"0#`("]D``````/AO0!```/MD0D`XT$@,'@`XM4)""-
+M#!`!Z(V8D````(I3!(A1)(I3!8A1)8N`F````(H`@^`/B$$F#[9!)(/X`W0I
+M@_@#?PZ#^`(/A.,```#IR@```(/X!'1'@_@2#X2+````Z;<```"-=@`/MDPD
+M`XT,B<'A`XN$*9@```"*4`&#X@</MM+!X@@/MD`"`="-!(#1X(M4)"")1!$H
+MZ9(````/MD0D`XT$@(T4Q0````"+A"J8````@'@"`'4.BTPD(,=$"B@`````
+MZV@/MD0D`XT$@,'@`XN4*)@````/ME("@^H4BTPD((E4""CK10^V3"0#C0R)
+MP>$#BX0IF`````^V4`+!X@@/MD`#`="-!(#1X(M4)"")1!$HZQ>-=@`/MD0D
+M`XT$@(M,)"#'1,$H``````^V="0#C32VP>8#BT0D((U\!BR-M"Z<````_+D(
+M````\Z7^1"0#BE0D`SB5D`````^'G/[__^F+````BY8D!0``#[?!C01`C02`
+MP>`#B<,#FG0%``"+3"0@QD$"_\8!`HN6)`4``(N2=`4``(I$$!^(00&+0U0/
+MMD`)B4$@QD$$=@^W0R!0B<B#P`50Z&_Y__^+1"0HQD`,9`^W0R)0BT0D+(/`
+M#5#H5?G__XM4)##&0AQR#[9#'5")T(/`'5#H^?C__X/$&+@`````Z34#``!"
+M9H'ZA0`/AM/\__^+MB0%``"!QF`,``"Z@`````^WPF8/MHPPF`0``&:!^?\`
+M#X3P`@``B=A#.>@/A>4"``!F@?J!``^'4@(```^WP8T$0(T$P(G"P>(%*<*+
+MAI`%``"-+)"#?0P`='"Y@`````^WP68/MH0PF`0``&8]_P!T'@^WP(T$0(T$
+MP(G"P>(%*<*+AI`%``"-%)`[50QT,D%F@?F!`';(L@"`?3(`=CV[`0````^V
+MP@^V3"A`B=C3X(G!BT0D(`E(($(X53)WY>L;BU0D((A*`NO-BTPD(,9!`O^+
+M10@/MD`)B4$@BT0D(,8``8I%,8M4)""(0@&+14B)0@2+14R)0@B+15B)0@R+
+M15R)0A"+16")0A2+162)0AB+17")0AS&1"0"`("]D``````/AN,!```/MD0D
+M`HT$@,'@`XM4)""-#!`!Z(V8D````(I3!(A1)(I3!8A1)8N`F````(H`@^`/
+MB$$F#[9!)(/X`W0G@_@#?PZ#^`(/A.$```#IR````(/X!'1%@_@2#X2)````
+MZ;4```"0#[9,)`*-#(G!X0.+A"F8````BE`!@^('#[;2P>((#[9``@'0C02`
+MT>"+5"0@B401*.F2````#[9$)`*-!("-%,4`````BX0JF````(!X`@!U#HM,
+M)"#'1`HH`````.MH#[9$)`*-!(#!X`.+E"B8````#[92`H/J%(M,)"")5`@H
+MZT4/MDPD`HT,B<'A`XN$*9@````/ME`"P>((#[9``P'0C02`T>"+5"0@B401
+M*.L7C78`#[9$)`*-!("+3"0@QT3!*``````/MG0D`HTTML'F`XM$)""-?`8L
+MC;0NG````/RY"````/.E_D0D`HI4)`(XE9`````/AY[^___K?P^WP8T$0(T$
+M@,'@`XG#`YYT!0``BTPD(,9!`O_&`0*+EG0%``"*1!`?B$$!BT-4#[9`"8E!
+M(,9!!'8/MT,@4(G(@\`%4.A*]O__BT0D*,9`#&0/MT,B4(M$)"R#P`U0Z##V
+M__^+5"0PQD(<<@^V0QU0B="#P!U0Z-3U__^#Q!BX`````.L3B?9"9H'ZA0`/
+MANW\__^X_____X/$!%M>7UW#C78`55=64X/L!(MT)!B[`````+D`````NJ0,
+M``"+1"0@B?:("$!*=?JZ@````(N^)`4```^WPF8/MHPXF`0``&:!^?\`#X0X
+M`P``B=A#.T0D'`^%*P,``&:!^H$`#X=]`@``#[?!C01`C03`B<+!X@4IPHN'
+MD`4``(TLD(-]#`!T<KF`````B?L/M\%F#[:$&)@$``!F/?\`=!X/M\"-!$"-
+M!,")PL'B!2G"BX.0!0``C120.U4,=#)!9H'Y@0!VR+(`@'TR`'8]NP$````/
+MML(/MDPH0(G8T^")P8M$)"`)2"!".%4R=^7K&XM4)""(2@+KS8M,)"#&00+_
+MBT4(#[9`"8E!((M$)"#&``&*13&+5"0@B$(!BT5(B4($BT5,B4((BT58B4(,
+MBT5<B4(0BT5@B4(4BT5DB4(8BT5PB4(<BTPD'(E*),9$)`,`@+V0``````^&
+M'`(```^V1"0#C02`P>`#BU0D((T,$`'HC9B0````BE,$B)&H````BE,%B)&I
+M````BX"8````B@"#X`^(@:H````/MH&H````@_@#="B#^`-_#H/X`@^$\0``
+M`.G5````@_@$=$F#^!(/A),```#IP@```(GV#[9,)`.-#(G!X0.+A"F8````
+MBE`!@^('#[;2P>((#[9``@'0C02`T>"+5"0@B801K````.F>````#[9$)`.-
+M!("-%,4`````BX0JF````(!X`@!U$8M,)"#'A`JL`````````.MQ#[9$)`.-
+M!(#!X`.+E"B8````#[92`H/J%(M,)"")E`BL````ZTL/MDPD`XT,B<'A`XN$
+M*9@````/ME`"P>((#[9``P'0C02`T>"+5"0@B801K````.L:C78`#[9$)`.-
+M!("+3"0@QX3!K``````````/MG0D`XTTML'F`XM$)""-O`:P````C;0NG```
+M`/RY"````/.E_D0D`XI4)`,XE9`````/AW_^___IE@```(N6)`4```^WP8T$
+M0(T$@,'@`XG#`YIT!0``BTPD(,9!`O_&`0*+EB0%``"+DG0%``"*1!`?B$$!
+MBT-4#[9`"8E!(,9!!'8/MT,@4(G(@\`%4.B]\O__BT0D*,9`#&0/MT,B4(M$
+M)"R#P`U0Z*/R__^+5"0PQD(<<@^V0QU0B="#P!U0Z$?R__^+1"0TBTPD.(E!
+M)(/$&+@`````Z7`#``"-=@!"9H'ZA0`/AI_\__^+MB0%``"!QF`,``"Z@```
+M``^WPF8/MHPPF`0``&:!^?\`#X0H`P``B=A#.T0D'`^%&P,``&:!^H$`#X=]
+M`@``#[?!C01`C03`B<+!X@4IPHN&D`4``(TLD(-]#`!T<+F`````#[?!9@^V
+MA#"8!```9CW_`'0>#[?`C01`C03`B<+!X@4IPHN&D`4``(T4D#M5#'0R06:!
+M^8$`=LBR`(!],@!V/;L!````#[;"#[9,*$")V-/@B<&+1"0@"4@@0CA5,G?E
+MZQN+5"0@B$H"Z\V+3"0@QD$"_XM%"`^V0`F)02"+1"0@Q@`!BD4QBU0D((A"
+M`8M%2(E"!(M%3(E""(M%6(E"#(M%7(E"$(M%8(E"%(M%9(E"&(M%<(E"'(M,
+M)!R)2B3&1"0"`("]D``````/AA("```/MD0D`HT$@,'@`XM4)""-#!`!Z(V8
+MD````(I3!(B1J````(I3!8B1J0```(N`F````(H`@^`/B(&J````#[:!J```
+M`(/X`W0J@_@#?Q&#^`(/A/,```#IUP```(UV`(/X!'1(@_@2#X22````Z<$`
+M``"0#[9,)`*-#(G!X0.+A"F8````BE`!@^('#[;2P>((#[9``@'0C02`T>"+
+M5"0@B801K````.F>````#[9$)`*-!("-%,4`````BX0JF````(!X`@!U$8M,
+M)"#'A`JL`````````.MQ#[9$)`*-!(#!X`.+E"B8````#[92`H/J%(M,)"")
+ME`BL````ZTL/MDPD`HT,B<'A`XN$*9@````/ME`"P>((#[9``P'0C02`T>"+
+M5"0@B801K````.L:C78`#[9$)`*-!("+3"0@QX3!K``````````/MG0D`HTT
+MML'F`XM$)""-O`:P````C;0NG````/RY"````/.E_D0D`HI4)`(XE9`````/
+MAWW^___IB@````^WP8T$0(T$@,'@`XG#`YYT!0``BTPD(,9!`O_&`0*+EG0%
+M``"*1!`?B$$!BT-4#[9`"8E!(,9!!'8/MT,@4(G(@\`%4.A=[___BT0D*,9`
+M#&0/MT,B4(M$)"R#P`U0Z$/O__^+5"0PQD(<<@^V0QU0B="#P!U0Z.?N__^+
+M1"0TBTPD.(E!)(/$&+@`````ZQ.)]D)F@?J%``^&M?S__[C_____@\0$6UY?
+M7<.-=@!55U93BW0D%(M\)!B+;FRY`````+H@````B?B("$!*=?J+G20&``"Y
+M`````+H``@``B=B0B`A`2G7ZC5,VN0````"*1#$AB`)"BD0Q((@"0H/!`H/Y
+M)W[JC5,4N0````"*1#$-B`)"BD0.#(@"0H/!`H/Y$W[JC5,NN0````"*1#%)
+MB`)"BD0Q2(@"0H/!`H/Y!W[JB5\8BT90BU94@\`!@](`B0>)5P2#?F``=3OV
+M!@%T-H-^9`!T%87M=!&+1F0/MD`S@+PHF`0``/]U&X-^:`!T'87M=!F+1F@/
+MMT`D@+PHF`0``/]T"(I&`8A'#.L$QD<,_XI&`HA'#8I&7(A'#L9'$A#&1Q$0
+M#[8&@^`!T>"*7PJ#X_T)PXA?"@^V!H/@`<'@!8I/"(/AWPG!B$\(#[=&6,'H
+M!X/@`<'@!H/AOPG!B$\(#[=&6,'H`H/@`8I7"8/B_@G"B%<)#[=&6L'H`X/@
+M`<'@!X/A?PG!B$\(#[=&6M'H@^`!T>"#XOT)PHA7"0^W1EC!Z`.#X`'!X`:#
+MXK\)PHA7"0^W1EK!Z`2#X`'!X`>#XG\)PHA7"8/)$(A/"(H&T.B#X`&#X_X)
+MPXA?"HH&@^`$@^/["<.(7PIFQT<4`!"*AI@```"(1QQ;7E]=PXGVBT0D#,=`
+M!`````#'``````"X`````,.055=64X/L#(M<)""*1"0DB$0D"\=$)`3_____
+MBW-@BVMLA?9T#X"[EP````!U!O8#`G0-D(M$)`3I_P```(UV`(/L#%7H_/__
+M_XG'@\00BT0D!(7_#X3B````QD<DX<9')0&`?"0+`@^5P(/`&HA')L9'%(!F
+MBT889HE'$(E?&,='(`````#'1S0`````QT=L(+<$`(/L"%=5Z/S____&@Y<`
+M```!9L>#E````/H`@\00A=MT78-[8`!T5Y!F@;N4````E@!U&8/L!/]S8&HA
+MBT-@_W`HZ/S___^#Q!"-=@!F_XN4````@^P,:-`'``#H_/___XDL).C\____
+M@\00A=MT#X-[8`!T"8"[EP````!UJF:#NY0`````=`Z`?Q0`=0C'1"0$````
+M`(/L"%=5Z/S___^+1"04@\00D(/$#%M>7UW#55=64X/L'(MT)#"*7"0TQT0D
+M%/____^+;F"+1FR)1"00A>UT"8"^EP````!T"HM$)!3IF00``)"#[`S_="0<
+MZ/S___^)QX/$$(M$)!2%_P^$>P0``/8&`@^%$0$``(#[%'</#[;;C01;C1R%
+M`````.L>9@^VTXG0P>`$`="-!,)FP>@(P.@$#[;8@</P````QD<DX<9')0'&
+M1R8<B%\GQD<4@&:+11AFB4<0B7<8QT<@`````,='-`````#'1VP@MP0`@^P(
+M5_]T)!SH_/___\:&EP````%FQX:4````Q`F#Q!"%]G1C@WY@`'1=C78`9H&^
+ME````)8`=1F#[`3_=F!J(8M&8/]P*.C\____@\00C78`9O^.E````(/L#&C0
+M!P``Z/S___^#Q`3_="0<Z/S___^#Q!"%]G0/@WY@`'0)@+Z7`````'6F9H.^
+ME``````/A&0#``"`?Q0`#X5:`P``QT0D%`````#I30,``(/L#/]T)!SH_/__
+M_XE$)"B#Q!"#?"08``^$+P,``(U7/(E4)`R+1"08BT`(B40D",9')!K&1R4(
+MQD<F&L9')P#&1R@0QD<I`(M$)!B)1U#&1Q2`9HM%&&:)1Q")=QB+1"08BT`(
+MB4<TQT<@$````(M&8`6T````B4<XQD<<(,=';""W!`"#[`AJ`%+H_/____]W
+M((M$)"S_<!#_<`S_="0HZ/S___^#Q!A7_W0D'.C\____QH:7`````6;'AI0`
+M``#Z`(/$$(7V=%V#?F``=%=F@;Z4````E@!U%H/L!/]V8&HABT9@_W`HZ/S_
+M__^#Q!!F_XZ4````@^P,:-`'``#H_/___X/$!/]T)!SH_/___X/$$(7V=`^#
+M?F``=`F`OI<`````=:EF@[Z4`````'0&@'\4`'09@^P(C40D(%#_="0<Z/S_
+M__^#Q!#I_0$``(/L"%?_="0<Z/S___^#Q`3_="0<Z/S___^)QX/$$(7`=1V#
+M[`B-1"0@4/]T)!SH_/___XM$)"2#Q!#IT@$``(U`/(E$)`R+3"0(@\$$BU0D
+M"`^V0@.*1!`$B$($QD$!"L9!`@"Z!````(M$)`C&``!`2G7YA-MU!H!A`_SK
+M3`^VVXT$VXT$@XT$0XT<Q0````"`20,#B=C!Z!B)1"0$B$$$B=K!ZA"(406)
+MV,'H"(D$)(A!!HA9!XI$)`2(00B(40F*%"2(40J(60N+1"08B4=0QD<D%8H!
+MP/@']]"#P!&(1R7&1R8`QD<G`,9'*!#&1RD`@"$_QD<4@&:+11AFB4<0B7<8
+MBT0D&(M`"(E'-,='(!````"+1F`%M````(E'.,9''"#'1VP@MP0`@^P(:@#_
+M="08Z/S_____=R"+1"0L_W`0_W`,_W0D*.C\____@\085_]T)!SH_/___\:&
+MEP````%FQX:4````^@"#Q!"%]G1=@WY@`'179H&^E````)8`=1:#[`3_=F!J
+M(8M&8/]P*.C\____@\009O^.E````(/L#&C0!P``Z/S___^#Q`3_="0<Z/S_
+M__^#Q!"%]G0/@WY@`'0)@+Z7`````'6I9H.^E`````!T#H!_%`!U",=$)!0`
+M````@^P(C40D(%#_="0<Z/S___^#Q!"0@^P(5_]T)!SH_/___XM$)"2#Q!"#
+MQ!Q;7E]=PU=64XMT)!"X_____XM^;(M>8/9&6`@/A(@```"#[`16_[<D!0``
+M:@7H_/___X!+)`*#Q`Q3:B'_<RCH_/___X/$$(![2P!T'H/L#&C0!P``Z/S_
+M__^)/"3H_/___X/$$(![2P!UXH-\)!0`=`]F@TY:$&:#2S80ZPV-=@!F@V9:
+M[V:#8S;O@^P$5O^W)`4``&H&Z/S___^`8R3]N`````"#Q!"06UY?PU93@^P$
+MBT0D$`^V="04BU!LBUA@]@`!=$N#>RP`=!F#[`2)\@^VPE`/MD-)4/]S+.C\
+M____@\00@[O@`````'0]@^P$B?$/ML%0#[:#U0```%#_L^````#H_/___X/$
+M$.L<B?:#[`2)\0^VP5"+0QP/MD`!4%+H_/___X/$$(/$!%M>PU575E.#[`R+
+M7"0@BD0D)(A$)`N*1"0HB$0D"L=$)`3_____BWM@BVMLA?]T"8"[EP````!T
+M"HM$)`3I)0$``)"#[`Q5Z/S___^)QH/$$(M$)`2%]@^$"@$``,9&).'&1B4!
+M@'PD"P!T#H!\)`H!&<#WT(/`!^L,@'PD"@$9P/?0@\`-B$8FQD84@&:+1QAF
+MB480B5X8QT8@`````,=&-`````#'1FP@MP0`@^P(5E7H_/___\:#EP````%F
+MQX.4````]`&#Q!"%VW1?@WM@`'19C78`9H&[E````)8`=1F#[`3_<V!J(8M#
+M8/]P*.C\____@\00C78`9O^+E````(/L#&C0!P``Z/S___^)+"3H_/___X/$
+M$(7;=`^#>V``=`F`NY<`````=:IF@[N4`````'0<@'X4`'46BT-@9HM`-F:)
+M0UK'1"0$`````(UV`(/L"%95Z/S___^+1"04@\00C78`@\0,6UY?7<.#[`R+
+M3"00BU0D%`^V`H/X"0^'L0```/\DA908``")]HM"!,:`5PP```"#[`Q0Z/S_
+M__^X`````(/$$.F0````@^P$#[9"!%!J`%'H1/[__X/$$.M[C78`@^P$#[9"
+M!%!J`5'H+/[__X/$$.MCC78`@^P(#[9"!%!1Z/S___^#Q!#K39"#[`0/MD(%
+M4`^V0@104>C1_/__@\00ZS2#[`@/MD($4%'H_/___X/$$.LAD(/L"`^V0@10
+M4>C\____N`````"#Q!#K"+C_____C78`@\0,PXM,)`2+06"%P'1*QT`<````
+M`(!()`3'06``````QT%H`````,=!9`````"#>0@_?Q.+46R+00C'A(*8`@``
+M`````,.0BU%LBT$(QX2"F`$```````##B?:+3"0$BT%@A<!T2L=`'`````"`
+M8"3[QT%@`````,=!:`````#'060`````@WD(/W\3BU%LBT$(QX2"F`(`````
+M``##D(M1;(M!",>$@I@!````````PXGV4X/L%(M<)!Q3Z/S___^+@R0%```%
+M8`P``(D$).C\____@\086\.)]E.#[!2+7"0<4^C\____BX,D!0``!6`,``")
+M!"3H_/___X/$&%O#B?955U93@^P<BWPD,(N')`4```5@#```B00D@S\`=!J+
+M!RT```(`B0>#[`A0_W<0Z/S___^#Q!")]H-_"`!T$H/L"/]W"/]W$.C\____
+M@\00D(-_#`!T$H/L"/]W#/]W$.C\____@\00D(/L"(U$)")0C40D)%"-1"0F
+M4(U$)"A0C40D*E"-1"0M4(U$)#!0C40D,E"-1"0U4(U$)#90C40D.5"-1"0\
+M4(U$)#]0#[=')%#H_/___X/$0(._6`4```!T-H/L"/^W6`4``(V'0`4``%#H
+M_/___X/$"(M$)`C_L%@%``"+1"0,!4`%``!0Z/S___^#Q!")]H._=`4```!T
+M-X/L"/^W=`4``(V'7`4``%#H_/___X/$"(M$)`C_L'0%``"+1"0,!5P%``!0
+MZ/S___^#Q!"-=@"#OY`%````=#>#[`C_MY`%``"-AW@%``!0Z/S___^#Q`B+
+M1"0(_["0!0``BT0D#`5X!0``4.C\____@\00C78`@[^L!@```'0W@^P(_[>L
+M!@``C8>4!@``4.C\____@\0(BT0D"/^PK`8``(M$)`P%E`8``%#H_/___X/$
+M$(UV`+X`````B?`Z1"0'<T6-K\P&``"0@^P(B?`/MMC_M)_D!@``5>C\____
+M@\0(BT0D"/^TF.0&``"+1"0,!<P&``!0Z/S___^#Q!!&B?`Z1"0'<L*#OTP)
+M````=#6#[`C_MTP)``"-AS0)``!0Z/S___^#Q`B+1"0(_[!,"0``BT0D#`4T
+M"0``4.C\____@\00D(._=`D```!T-X/L"/^W=`D``(V'7`D``%#H_/___X/$
+M"(M$)`C_L'0)``"+1"0,!5P)``!0Z/S___^#Q!"-=@"#O\0)````=#>#[`C_
+MM\0)``"-AZP)``!0Z/S___^#Q`B+1"0(_[#$"0``BT0D#`6L"0``4.C\____
+M@\00C78`@[^L!0```'0W@^P(_[>L!0``C8>4!0``4.C\____@\0(BT0D"/^P
+MK`4``(M$)`P%E`4``%#H_/___X/$$(UV`(._6`8```!T-X/L"/^W6`8``(V'
+M0`8``%#H_/___X/$"(M$)`C_L%@&``"+1"0,!4`&``!0Z/S___^#Q!"-=@"#
+MOP@&````=#>#[`C_MP@&``"-A_`%``!0Z/S___^#Q`B+1"0(_[`(!@``BT0D
+M#`7P!0``4.C\____@\00C78`@[\D!@```'0W@^P(_[<D!@``C8<,!@``4.C\
+M____@\0(BT0D"/^P)`8``(M$)`P%#`8``%#H_/___X/$$(UV`(._D`8```!T
+M-X/L"/^WD`8``(V'>`8``%#H_/___X/$"(M$)`C_L)`&``"+1"0,!7@&``!0
+MZ/S___^#Q!"-=@"#O\@&````=#>#[`C_M\@&``"-A[`&``!0Z/S___^#Q`B+
+M1"0(_[#(!@``BT0D#`6P!@``4.C\____@\00C78`@[_\"````'0W@^P(_[?\
+M"```C8?D"```4.C\____@\0(BT0D"/^P_`@``(M$)`P%Y`@``%#H_/___X/$
+M$(UV`(._)`D```!T-X/L"/^W)`D``(V'#`D``%#H_/___X/$"(M$)`C_L"0)
+M``"+1"0,!0P)``!0Z/S___^#Q!"-=@"#OYP)````=#>#[`C_MYP)``"-AX0)
+M``!0Z/S___^#Q`B+1"0(_["<"0``BT0D#`6$"0``4.C\____@\00C78`@[]T
+M!@```'0W@^P(_[=T!@``C8=<!@``4.C\____@\0(BT0D"/^P=`8``(M$)`P%
+M7`8``%#H_/___X/$$(UV`(._X`D```!T1_^WZ`D``/^WY`D``/^WX`D``(V'
+MR`D``%#H_/___XM$)!#_L.@)``#_L.0)``#_L.`)``"+1"0<!<@)``!0Z/S_
+M__^#Q""0@[\$"@```'1'_[<,"@``_[<("@``_[<$"@``C8?L"0``4.C\____
+MBT0D$/^P#`H``/^P"`H``/^P!`H``(M$)!P%[`D``%#H_/___X/$()"#OR@*
+M````=$?_MS`*``#_MRP*``#_MR@*``"-AQ`*``!0Z/S___^+1"00_[`P"@``
+M_[`L"@``_[`H"@``BT0D'`40"@``4.C\____@\0@D(._<`H```!T1_^W>`H`
+M`/^W=`H``/^W<`H``(V'6`H``%#H_/___XM$)!#_L'@*``#_L'0*``#_L'`*
+M``"+1"0<!5@*``!0Z/S___^#Q""0@[],"@```'1'_[=4"@``_[=0"@``_[=,
+M"@``C8<T"@``4.C\____BT0D$/^P5`H``/^P4`H``/^P3`H``(M$)!P%-`H`
+M`%#H_/___X/$()"#OY0*````=$?_MYP*``#_MY@*``#_MY0*``"-AWP*``!0
+MZ/S___^+1"00_["<"@``_["8"@``_["4"@``BT0D'`5\"@``4.C\____@\0@
+MD(._N`H```!T1_^WP`H``/^WO`H``/^WN`H``(V'H`H``%#H_/___XM$)!#_
+ML,`*``#_L+P*``#_L+@*``"+1"0<!:`*``!0Z/S___^#Q""0@\0<6UY?7<-6
+M4X/L$(M<)!Q3Z/S___^-LV`,``")-"3H_/___XD<).C\____QP0DT`<``.C\
+M____B1PDZ/S___^)'"3H_/___X/$"&H!4^C\____@\0(:@%6Z/S___^#Q!1;
+M7L.-=@"#[!AH@!$``.C\____N`````"#Q!S#D)"+1"0$Q@`(QD`!$H!\)`@!
+M&=+WTH/B!(A0`L9``P#&0`0`QD`%`,9`!@#&0`<`QD`(`,9`"0#&0`H`QD`+
+M`(!\)`P!&=*#XB"(4`S&0`T`QD`.`,9`#P#&0!``QD`1`,9`$@#&0!,`N!0`
+M``##C78`55=64X/L&(M\)#"*1"0TB$0D%P^V="0X_W0D+.C\____B<6#Q!"X
+M`````(7M#X26````BUT(B?(/ML)0#[9$)`]0C4,$4.C\____B<;&`P#&0P$`
+MQD,"`,9#`P")/"3_="0LZ/S___^#Q!"Y`````+H0````C4<DB`A`2G7ZC5X$
+MQD<D%<9')1&(7RC&1RD`C7<\#[;;B5\@QT=D`````(M%"(E'-(EO4(/L"&H`
+M5NC\____4_]U$/]U#%;H_/___[@!````@\0@@\0,6UY?7<.0D)!75E.+?"00
+MBT0D%(G&9HE'!,9'"@!FQT<(``"[`````&8YPW,8C78`#[?+BQ>)\&8IV$AF
+MB01*0V8Y\W+K6UY?PXUV`%93BUPD#(M$)!")QF:)0P3&0PH!9L=#"```N0``
+M``!F.<%S#P^WT8L#9HD,4$%F.?%R\5M>PXGV4XM<)`B`>PH!=2EFBT,(#[?(
+MBQ-`9HE#"&:+%$IF.T,&<@9FQT,(``!F_TL$#[?"ZQ")]F;_2P0/MU,$BP,/
+MMP106\-64X/L"(M,)!2+="08@'D*`74I#[=1"`^W002)1"0$C00"#[=1!HD4
+M))GW/"2+&6:)-%-F_T$$ZQ&-=@`/MU$$BP%FB3109O]!!(/$"%M>PXM$)`1F
+M@W@$``^4P`^VP,.+1"0$N@`````Y`'0.BP"+2`2+$(E*!(D1B<*)T,.)]HM4
+M)`2X`````#D2=`V+0@2+2`2+$(E*!(D1PY!64X/L!(M<)!"+<T2*0SR(1"0#
+MN0````"Z<````(G8D(@(0$IU^HES1(I$)`.(0SR#Q`1;7L.)]H/L$(M4)!2+
+M3"08BD$!B$(!BD$"B$("BT$$B4($#[9"`8T$0,'@`E#_<0C_<@CH_/___X/$
+M',.04X/L!(M,)`R+5"00BD0D%(A$)`.S`#C#<QN)]HH!.@)T"K@`````ZQ&-
+M=@!!0D,Z7"0#<N>X`0```(/$!%O#D(M$)`3&0`$`BU0D"(A0`L=`!`````##
+MD%93BT0D#(MT)!@/ME`!C112BT@(C1R1_D`!`7`$N0````"Z#````(G8C78`
+MB`A`2G7ZBT0D$(M4)!2)`XE3!(GPB$,(B?(/ML:(0PG!ZA"#XC^*0PJ#X,`)
+MT(A#"EM>PXM4)`2*0@$Z`@^2P`^VP,.Y_P```+H``@``BT0D!(GVB`A`2G7Z
+MPY!3@^P$BTPD#(M<)!"*1"04B$0D`[@`````C78`#[?0@'R1`O]U#F:)')&*
+M7"0#B%R1`NL'0&:#^']VX0^WP(/$!%O#D%=64XMT)!"+5"08BTPD'`^W1"04
+M@'R&`O]U#6:)%(:(3(8"ZQ>-=@`/ML%0#[?"4%;H_/___P^WP(/$#%M>7\-6
+M4XM<)`R+="00BDPD%+@`````D`^WT#A,DP)U$V8Y-)-U#<9$DP+_9L<$D___
+MZP=`9H/X?W;=#[?`6U[#C78`5E.+7"0,BW0D$(I,)!2X`````)`/M]`X3),"
+M=0=F.323=`B00&:#^']VZ68]@`!U!;B``0``#[?`6U[#55=64XML)!2`?20(
+M=#J`?20H=#2`?22H="Z`?22(="B`?20*="*`?20J=!R`?22J=!:`?22*=!"`
+M?20O=`J`?22/#X46`@``#[9%)(/X+P^$FP```(/X+W\F@_@*=&6#^`I_#(/X
+M"'1;Z=(!``")]H/X*'1[@_@J=';IP0$``)`]CP````^$Z0```#V/````?QX]
+MB`````^$UP```#V*````#X3,````Z9,!``"-=@`]J````'1Q/:H```!T:NE]
+M`0``D`^V126#X!_!X!`/ME4FP>(("=`/ME4G"=")QK\`````#[95*.EC`0``
+MC78`#[95)L'B&`^V12?!X!`)P@^V12C!X`@)P@^V12D)PHG6OP`````/ME4K
+MP>((#[9%+`G"Z2@!```/ME4FP>(8#[9%)\'@$`G"#[9%*,'@"`G"#[9%*0G"
+MB=:_``````^V52K!XA@/MD4KP>`0"<(/MD4LP>`("<(/MD4M"<+IW@```(GV
+M#[9U)HGWO@````#!YQ@/MDTGB<NY`````,'C$(GP"<B)^@G:#[9-*(G+N0``
+M``#!XPB)Q@G.B=<)WP^V12F)PK@`````B?$)P8G["=,/MD4JN@`````/I,(8
+MP>`8B<X)QHG?"=</MD4KN@`````/I,(0P>`0B?$)P8G["=,/MD4LN@`````/
+MI,((P>`(B<X)QHG?"=</MDTMNP````")\`G(B?H)VHG&B=</ME4NP>(8#[9%
+M+\'@$`G"#[9%,,'@"`G"#[9%,0G"ZQ&0O@````"_`````+H`````D(EU6(E]
+M7(E58&:#31(!6UY?7<.04X/L$(M<)!@/MD,S4`^V0S)0#[9#,5`/MD,P4`^V
+M0R]0#[9#+E`/MD,M4`^V0RQ0#[9#*U`/MD,J4`^V0RE0#[9#*%`/MD,G4`^V
+M0R90#[9#)5`/MD,D4%-H!`@``.C\____@\1(#[=#$%!H'P(``.C\____@\08
+M6\.)]E=64XM\)!"+7"04NO____^Y`````&8YV7,=OB`2``"0#[?!B@0X,=`/
+MML#!Z@@S%(9!9CG9<NF)T%M>7\.0D)!3BTPD"(L!BY`$`0``B14`````B=.!
+MXW[__O^+`8F8!`$``(G3@>-^__+_BT$$B1B+002)6`R+002)6!"+002)6!2+
+M002)6!B+002)6`2+`8N`5`$``*,`````B<.!X_X`__^+`8F85`$``%O#C78`
+M5E.#[`2+="04BE0D&(M$)!"+&(/^`W80BX3S@`$``*,`````ZPZ)]HN$\X`!
+M``"C`````(/@_H/^`W8,B83S@`$``.L*C78`B83S@`$``(32=&&#_@-V#HN$
+ML]`!``"C`````.L,BX2ST`$``*,`````@\@"@_X#=@F)A+/0`0``ZPF)A+/0
+M`0``B?:#_@-V#XN$L]`!``"C`````.L-D(N$L]`!``"C`````*@"==SK9HGV
+M@_X#=@W'A/,P`@```````.L+QX3S4`(```````"#[`QH$"<``.C\____@\00
+M@_X#=@Z+A/,T`@``HP````#K#(N$\U0"``"C`````(/(`8/^`W8)B83S-`(`
+M`.L'B83S5`(``(/$!%M>PXGV5U93@^P0BWPD((I$)"2(1"0/BDPD*(A,)`Z+
+M-[L`````@'\F``^$D@$``)`/MD0D#XC9T_BH`0^$<P$``(/[`W8.BX3>A`$`
+M`*,`````ZPR+A-Z$`0``HP````"#X/Z#^P-V#(F$WH0!``#K"HUV`(F$WH0!
+M``"#[`QH$"<``.C\____@\00@'PD#@!T8H/[`W8.BX2>T`$``*,`````ZPR+
+MA)[0`0``HP````"#R`*#^P-V"8F$GM`!``#K"HF$GM`!``"-=@"#^P-V#XN$
+MGM`!``"C`````.L-D(N$GM`!``"C`````*@"==SK9HGV@_L#=@W'A-XP`@``
+M`````.L+QX3>4`(```````"#[`QH$"<``.C\____@\00@_L#=@Z+A-XT`@``
+MHP````#K#(N$WE0"``"C`````(/(`8/[`W8)B83>-`(``.L'B83>5`(``(/[
+M`W8/QX3>@`$```$```#K#8GVQX3>@`$```$```"#^P-V$(N$WH0!``"C````
+M`.L.B?:+A-Z$`0``HP````"#R`&#^P-V#(F$WH0!``#K"XUV`(F$WH0!``"0
+M0P^V1R8YV`^';_[__X/$$%M>7\-3BUPD"(I,)`R+`XN`!`$``*,`````B<)F
+M@7LD@&1T$&:!>R2`D70(9H%[)("4=10/MLF#P0BX`0```-/@"<+K$HUV``^V
+MR8/!#+@!````T^`)PHL#B9`$`0``6\.-=@!3BUPD"(I,)`R+`XN`!`$``*,`
+M````B<)F@7LD@&1T$&:!>R2`D70(9H%[)("4=10/MLF#P0BX_O___]/`(<+K
+M$HUV``^VR8/!#+C^____T\`APHL#B9`$`0``6\.-=@!64X/L!(MT)!`/MEPD
+M%%-6Z/S___^#[`1H$"<``.C\____4U;H_/___X/$'%M>PY!3BUPD"(I,)`R`
+M^?]T>H#Y'W<YBY,8`0``B14`````N`$```#3X(G!]]`AT(F#&`$``(N#6`$`
+M`*,`````(<AT1XF#6`$``.L_C78`BY,<`0``B14`````#[;)@^D@N`$```#3
+MX(G!]]`AT(F#'`$``(N#8`$``*,`````(<AT"(F#8`$``(GV6\.)]E=64XMT
+M)!B*7"04BT0D$(LX@/L#=A(/ML/'A,<``@``#`$``.L0B?8/ML/'A,<``@``
+M#`$``(/L#&@0)P``Z/S___^#Q!"`^P-V+0^VRP^V5@/!XA@/MD8"P>`0"<(/
+MMD8!P>`("<(/M@8)PHF4SP0"``#K*XUV``^VRP^V5@/!XA@/MD8"P>`0"<(/
+MMD8!P>`("<(/M@8)PHF4SP0"``"`^P-V$P^VP\>$QP`"```0`0``ZQ&-=@`/
+MML/'A,<``@``$`$``(/L#&@0)P``Z/S___^#Q!"`^P-V+0^VRP^V5@?!XA@/
+MMD8&P>`0"<(/MD8%P>`("<(/MD8$"<*)E,\$`@``ZRN)]@^VRP^V5@?!XA@/
+MMD8&P>`0"<(/MD8%P>`("<(/MD8$"<*)E,\$`@``6UY?PY"0D%.#[#"+7"0X
+MC40D+E"-1"0P4(U$)#)0C40D-%"-1"0V4(U$)#E0C40D/%"-1"0^4(U$)$%0
+MC40D0E"-1"1%4(U$)$A0C40D2U`/MT,D4.C\____@\0\#[9$)!=0#[9$)!Q0
+MC40D&%#H_/___VH!#[94)">-!-+!X`(IT,'@`U#_<Q"-@T`%``!0Z/S___^#
+MQ"!J`0^V1"09C01`C02`P>`#4/]S$(V#7`4``%#H_/___X/$$&H!#[9$)!B-
+M!$"-!,")PL'B!2G"P>("4O]S$(V#>`4``%#H_/___X/$$&H!#[=$)"+!X`)0
+M_W,0C8.4!0``4.C\____@\00:@$/MU0D&HT$U0`````IT,'@!%#_<Q"-@T`&
+M``!0Z/S___^#Q!!J`0^V1"0=#[=4)!H/K\*-!$#!X`)0_W,0C8/P!0``4.C\
+M____@\00:@%H``(``/]S$(V##`8``%#H_/___X/$$`^V1"034&@`"```_W,0
+MC8/,!@``4.C\____@\00:@$/MD0D((T$@,'@`E#_<Q"-@W@&``!0Z/S___^#
+MQ!!J`0^V1"0AC13`C110P>(#4O]S$(V#E`8``%#H_/___X/$$&H!#[=$)!Z-
+M!$#!X`-0_W,0C8.P!@``4.C\____@\00:@$/MT0D(M'@4/]S$(V#Y`@``%#H
+M_/___X/$$&H!#[9$)!?1X%#_<Q"-@PP)``!0Z/S___^#Q!!J`0^V1"09T>!0
+M_W,0C8,T"0``4.C\____@\00:@$/MD0D&-'@4/]S$(V#7`D``%#H_/___X/$
+M$&H!#[9#)M'@4/]S$(V#A`D``%#H_/___X/$$&H!#[=$)"3!X`50_W,0C8-<
+M!@``4.C\____@\00:@'_="00_W,0C8.L"0``4.C\____QP0D`0```&I`#[=$
+M)#+!X`90_W,0C8/("0``4.C\____@\04:@%H``$``&@`&0``_W,0C8/L"0``
+M4.C\____@\04:@%H@`````^W5"0RC032C02"C01"P>`$4/]S$(V#$`H``%#H
+M_/___X/$%&H!:@0/MT0D.,'@`E#_<Q"-@S0*``!0Z/S___^#Q!1J`6H$#[=$
+M)#K!X`)0_W,0C8-8"@``4.C\____@\04:@%J"`^V1"0PP>`+4/]S$(V#?`H`
+M`%#H_/___X/$%&H!:@@/MU0D+HT$DHT$@,'@`BG0P>`"4/]S$('#H`H``%/H
+M_/___[@`````@\1(6\.)]E575E.#[!R]`````(M$)##&0#D`QD`X`,9`-P#'
+M@%P,````````QH!9#````+D`````NA`!``"+7"0PC8,X"P``C78`B`A`2G7Z
+MBT0D,`7,````BU0D,(F"S````(F"T````(G0!=0```")@M0```")@M@```"-
+M0`B)@MP```")@N````"-0`B)@N0```")@N@```"-0`B)@NP```")@O````"-
+M0!")@OP```")@@`!``"-0`B)@@0!``")@@@!``"-0/")@O0```")@O@```"#
+M[`B-1"0B4(U$)"10C40D)E"-1"0H4(U$)"I0C40D+5"-1"0P4(U$)#)0C40D
+M-5"-1"0V4(U$)#E0C40D/%"-1"0_4`^W0B10Z/S___^*1"1'BTPD<(A!+HI$
+M)$B(02^*1"1)B(')````9HM$)%)FB4%`BT0D6&:)@30+``!FBT0D6DAFB8$V
+M"P``@\1`#[=!)#V`D0``=`L]@)0```^%1`D``(M<)##&0S4$QD,K!,9#-D#&
+M0S0`QH/&````"<9#+`"#[`R)V`5`!0``4.C\____B8-8!0``@\00NP`````/
+MMDPD!XT4R<'B`BG*C0S5`````.L$B!A)0(7)=?B#[`R+1"0\!5P%``!0Z/S_
+M__^+5"1`B8)T!0``@\00N0`````/ME0D"8T44HT4DL'B`W0&B`A`2G7Z@^P,
+MBT0D/`5X!0``4.C\____BTPD0(F!D`4``(/$$+L`````#[94)`B-%%*-%-*)
+MT<'A!2G1B<K!X@)T!H@80$IU^H/L#(M$)#P%E`4``%#H_/___XM<)$")@ZP%
+M``"#Q!"Y``````^W5"02P>("=`:("$!*=?J#[`R+1"0\!0P&``!0Z/S___^+
+M5"1`B8(D!@``B=`%\`4``(D$).C\____BTPD0(F!"`8``(G#B<@%0`8``(D$
+M).C\____BU0D0(F"6`8``(G"O@````"#Q!!F.W0D"G,WBTPD,('!W````(E:
+M1(I$)`V(0CR+002)402)"HE"!(D0#[9$)`V-!$"-'(.#PG!&9CMT)`IRTX/L
+M#(M$)#P%7`8``%#H_/___XM,)$")@70&``")PKX`````@\009CMT)!1S)HM,
+M)#"!P>0```#&0@@`BT$$B5$$B0J)0@2)$(/"($9F.W0D%'+D@^P,BT0D/`5X
+M!@``4.C\____BUPD0(F#D`8``(G"O@````"#Q!"`?"00`'0DB=F!P>P```"+
+M002)402)"HE"!(D0@\(41F8/MD0D$&8Y\'?D@^P,BT0D/`64!@``4.C\____
+MBU0D0(F"K`8``(G"O@````"#Q!"`?"01`'0IBTPD,('!_````(M!!(E1!(D*
+MB4($B1"!PI@```!&9@^V1"019CGP=^&#[`R+1"0\!;`&``!0Z/S___^+3"1`
+MB8'(!@``B<*^`````(/$$&8[="0.<R*+3"0P@<'T````BT$$B5$$B0J)0@2)
+M$(/"&$9F.W0D#G+HO@````"`?"0'`'1&BWPD,(''!`$```^WWH/L#(M$)#P%
+MS`8``%#H_/___XM4)$")A)KD!@``@\00BU<$B4<$B3B)4`2)`D9F#[9$)`=F
+M.?!WQ(/L#(M$)#P%Y`@``%#H_/___XM,)$")@?P(``")@0`)``!FBT0D(F:)
+M@08)``"#Q`@/M\!0B<@%``D``%#H_/___X/$!(M$)#P%#`D``%#H_/___XM<
+M)$")@R0)``")@R@)``!F#[9$)!=FB8,N"0``@\0(#[?`4(G8!2@)``!0Z/S_
+M__^)V`4T"0``B00DZ/S___^)@TP)``")@U`)``!F#[9$)!EFB8-6"0``@\0(
+M#[?`4(G8!5`)``!0Z/S___^)V`5<"0``B00DZ/S___^)@W0)``")@W@)``!F
+M#[9$)!AFB8-^"0``@\0(#[?`4(G8!7@)``!0Z/S___^)V`6$"0``B00DZ/S_
+M__^)@YP)``")@Z`)``!F#[9#)F:)@Z8)``"#Q`@/MD,F4(G8!:`)``!0Z/S_
+M__^)V`6L"0``B00DZ/S___^)@\0)```/MDPD&(T4R<'B`RG*C121C0R5=$4`
+M`(/$$+L`````B<J%R70&B!A`2G7ZBU0D,(N"Q`D``(D(BUPD,(N3Q`D``(I$
+M)`B(0@2#[`0/MD0D#%!1_[/$"0``Z/S___^^`````(/$$(![)@!T<0^WQHT4
+M0,'B`RG"BT0D,(T4D(VJ*`$``(GQB$T$QD4%`(F"*`$``,9%"@#&130`QD4<
+M`,=%6`````"-@D@!``")12")122-@E0!``")12R)13"!PF`!``")53B)53S&
+M108"1HM<)#!F#[9#)F8Y\'>/BT0D,,9`-`"^``````^WQHM4)##&A!`>!0``
+M_T9F@_X#=NJ^`````(!\)`<`='\/M\Z+7"0PBY-8!0``C03)P>`"*<C!X`/&
+M1!`C`8N36`4``,9$$"(`BY-8!0``QD002/^+DU@%``#&1!`^_XN36`4``&;'
+MA!"0``````#'A(N8`@```````(G!`XM8!0``C5$0B5$0`X-8!0``@\`0B4`$
+M1F8/MD0D!V8Y\'>!BT0D,&;'@,0``````+X`````C78`#[?&BU0D,,:$$)@$
+M``#_1F:!_H4`=NF^`````(!\)`@`#X2G````#[?&BUPD,(N+D`4``(T$0(T$
+MP(G"P>(%*<+!X@+&1`HP`(N#D`4``,9$`C$`BX.0!0``QT0"#`````")T0.+
+MD`4``(U!$(E!$(G0`X.0!0``@\`0B4`$B=$#BY`%``"-01B)01B)T`.#D`4`
+M`(/`&(E`!(N#D`4``(EL`@B)T0.+D`4``(U!*(E!*`.3D`4``(/"*(E2!$9F
+M#[9$)`AF.?`/AUG___^+1"0PQH#'````@+X`````@'PD"0!T=`^WUHM,)#"+
+M@70%``"-%%*-%)+!X@-FQT0",@0`BX%T!0``QD0")@"+@70%``#&1`(H_XN!
+M=`4``,9$`C3_B=&+7"0P`XMT!0``C4$4B4$4B=`#@W0%``"#P!2)0`2+@W0%
+M``");`)41F8/MD0D"68Y\'>,BT0D,,:`R````(*#[`B+1"0X!>0)``!0BT0D
+M/`7("0``4.C\____BU0D0(F"X`D``(/$"(G0!0@*``!0C4#D4.C\____BTPD
+M0(F!!`H``(/$"(G(!2P*``!0C4#D4.C\____BUPD0(F#*`H``(/$"(G8!5`*
+M``!0C4#D4.C\____B8-,"@``@\0(B=@%=`H``%"-0.10Z/S___^)@W`*``"#
+MQ`B)V`68"@``4(U`Y%#H_/___XF#E`H``(M4)$"+NI@*``"+JIP*``")1"00
+MO@````"#Q!"`?"00`'1.B=.!P^P```"#[`Q3Z/S___^)PHM,)!")2`B)>`R)
+M:!"#Q!"+0P2)4P2)&HE"!(D0@<$`"```B0PD@<<`"```@]4`1F8/MD0D$&8Y
+M\'>Z@^P(BT0D.`6\"@``4(M$)#P%H`H``%#H_/___XM<)$")@[@*``"+5"1`
+MB[J\"@``BZK`"@``B40D$+X`````@\009CMT)`YS2HG3@</T````@^P,4^C\
+M____B<*+3"00B4@(B7@,B6@0@\00BT,$B5,$B1J)0@2)$('!C`$``(D,)(''
+MC`$``(/5`$9F.W0D#G*^@\0<6UY?7<-55U93@^P,BWPD(,9$)`L`#[9$)`N*
+MC#@>!0``@/G_#X3(````#[;1C012P>`#*="-!(>-D"@!``")5"0$O0````"`
+MN#(!````#X2>````B=:#QC@/MM&-!%+!X`,IT,'@`HD$)(UV`(/L#%;H_/__
+M_XG#@\00BT8$B5X$B3.)0P2)&(-['`!T&X/L!/]S'/^W)`4``&H%Z/S___^`
+M2R0"@\00D(/L!%-J`O]T)!#H_/___X/$$(![2P!T'H/L#%?H_/___\<$)`$`
+M``#H_/___X/$$(![2P!UXD6)Z(L4)#B$.C(!```/AWO____^1"0+@'PD"P,/
+MAA3___^#[`Q7Z/S___^#Q!Q;7E]=PXUV`%.#[`B+3"04BUPD$#E9&'5/@'DD
+M"'1<@'DD*'16@'DDJ'10@'DDB'1*@'DD"G1$@'DD*G0^@'DDJG0X@'DDBG0R
+MC9/,````BX/,````B4@$B0&)402)B\P```#K%HUV`(V#S````(M0!(E(!(D!
+MB5$$B0J#[`Q3Z/S___^#Q!A;PXUV`(/L%/]T)!S_="0<Z/S___^#Q!S#55=6
+M4X/L#(M<)"2+="0HBVPD++\`````9H%[).$!=0R*0R:#Z!$\`78SB?:+1"0@
+MBQ"+BE@%``"-N>@6`0!F@7L0A0!W%P^W0Q`/MI00F`0``(T$TL'@`BG0C3S!
+MQD8$!8!F!?Z`)M^R`&:!>R3A`74*BD,F2#P!=P*R`8C0P>`'BA:#XG\)PH@6
+MBD-F@^`!P>`&@^*_"<*(%F:!>R3A`742BD,F@^@1/`%W"&:);@CK'HGV]D-F
+M`702@^P,5^C\____9HE&"(/$$.L$9HEN"&:+1@B(0Q5F@7LDX0%U(8I#)D@\
+M`7<%BE,GZQ]F@7LDX0%U#(I#)H/H$;(//`%V"[(`@W\P`'0#BE=)@^(/B@:#
+MX/`)T(@&@\0,6UY?7<.0@^P,_W0D'/]T)!S_="0<BT0D'/\PZ/S___^#Q!S#
+MB?964XM<)`R+,V:+@S`+``!`9HF#,`L``&8[@S0+``!R"6;'@S`+``````^W
+MBS`+``"+DTP*``"+1"00BP")!(H/MX,P"P``B88L`0``6U[#D%575E.+7"0@
+MBWPD&`^V;"0<BW0D%+H`````N00```")V(UV`(@00$EU^HGZ@>+_#P``BP,E
+M`/#__PG0B0,/ME8)P>(,)?\/\/\)T(D##[9&!M'H@^`!@_@!&<"#X`)`P>`=
+MBQ.!XO___Q\)PHD3BD,#@\@0@^#WB$,#]D8&`703B>J#XG_!XA2+`R7__P_X
+M"=")`UM>7UW#55=64X/L#(ML)""+="0DQT0D"`````"`?B0(=!.`?B0H=`V`
+M?B2H=`>`?B2(=0F0@TYD"NL>B?:`?B0*=!*`?B0J=`R`?B2J=`:`?B2*=02#
+M3F0"9H%^).$!=1B*1B:#Z!$\`7<.@TYD"+@`````Z3@%``"+1B0E____`#WA
+M`1``#X4)`0``9H%^$(4`#X>)````#[=&$("\*)@$``#_='MF@WX0?W<@#[:4
+M*)@$``"+C5@%``"-!-+!X`(IT(M$P2@/MG@$ZUEF@7X0@0!W*0^W1A`/MH0H
+MF`0``(N-D`4``(T$0(T$P(G"P>(%*<*+1)$(#[9X!.LH#[=&$`^VA"B8!```
+MBY5T!0``C01`C02`BT3"5`^V>`3K!I"______XGZ#[;"#[:<*!X%``"-!%O!
+MX`,IV(V<A2@!``"+C9`%``"-@>P&#0!F@7X0A0!W'`^W1A`/MH0HF`0``(T$
+M0(T$P(G"P>(%*<*-!)'V0#40#X5M`0``QD84!(M$)"C'``````"X`0```.D=
+M!```D&:!?A"%``^'C`````^W1A"`O"B8!```_W1^9H-^$']W(P^VE"B8!```
+MBXU8!0``C032P>`"*="+1,$H#[9X!.M<C78`9H%^$($`=RD/MT80#[:$*)@$
+M``"+C9`%``"-!$"-!,")PL'B!2G"BT21"`^V>`3K*`^W1A`/MH0HF`0``(N5
+M=`4``(T$0(T$@(M$PE0/MG@$ZP:0O_____^Y_P```&:!?A"%`'<-#[=&$&8/
+MMHPHF`0``(GZ#[;"#[:<*!X%``"-!%O!X`,IV(V<A2@!```/M]&-!-+!X`(I
+MT(N56`4``(T$PHE$)`AF@7XDX0%U"8I&)D@\`78MD&:!^?\`=`J+1"0(]D`C
+M!'4;QD84!HM4)"C'`@````"X`0```.GW`@``C78`BU0D"`^V0B"H`70@J`1T
+M'(I%+#I%-G(4BT0D*,<``0```+@!````Z<@"``"#?"0(``^$\0```(M4)`@/
+MMD(@J`$/A.$```"H!`^$V0```(/L"%92Z/S___^#Q!"$P'48QD84!(M$)"C'
+M``````"X`0```.E\`@``BU0D"(!Z2Q]V%(M$)"C'``$```"X`0```.E>`@``
+M]D9F`70&]D,(`708]D9F`74&]D,(`74,@'X4@70&]D,("'0J@^P(B?H/ML)0
+M5>C\____@\00A,!T%(M$)"C'``$```"X`0```.D0`@``]D9F`0^$?@$``/9#
+M"`$/A'0!``"#[`S_="04Z/S___^#Q!!F@_@?#X9;`0``BU0D*,<"`0```+@!
+M````Z<\!``"-=@#V0P8"=#*+1B0E____`#WA`1``=".+5"0(BD)+.D)*<A>+
+M1"0HQP`!````N`$```#IEP$``(UV`(M&)"7___\`/>$!$``/A/D```"+5"0(
+M#[="-HG"T>J#X@&Q`8!^).$/A=X```"`?B4!#X74````#[9&)H/H!H/X"0^'
+MK````/\DA<`8```/ML%0:@%65>C\____@\00A,`/A:4```"+1"0HQP`"````
+MN`$```#I&0$```^VP5!J`%95Z/S___^#Q!"$P'5]BU0D*,<"`@```+@!````
+MZ?$```!J`0^VPE!65>C\____@\00A,!U58M$)"C'``(```"X`0```.G)````
+M:@`/ML)05E7H_/___X/$$(3`=2V+5"0HQP("````N`$```#IH0```)#&1A0$
+MBT0D*,<``````+@!````Z8@```"#[`R-A0`)``!0Z/S___^#Q!"$P'02BU0D
+M*,<"`0```+@!````ZV&0@'XDX752@'XE`75,@'XF#W5&@'XI`75`9@^V1BC!
+MX`AF#[96)P'0@^P(#[?`4%7H_/___X/$$#E&2'4$A<!U&,9&%`2+1"0HQP``
+M````N`$```#K"XUV`+@`````C78`@\0,6UY?7<-64XM<)`R+="00N0````"Z
+M#0```(GPB?:("$!*=?J*0R6(!HI#)HA&`8I#)XA&`HI#*(A&`XI#*8A&!(I#
+M*HA&!8I#*XA&!O9#9@1T'HI#+(A&"(I#+8A&"8I#+HA&"HI#+XA&"XI#,(A&
+M#+@!````6U[#D%575E.+;"04BWPD&+H`````O@````")]KD'````#[8<-XUV
+M`-'BB=C3^*@!=!+WP@````%U&H'R=R?;`.L2B?;WP@````%T"('R=R?;`(GV
+M27G11H/^!WZ_B=#!Z!"(10")T,'H"(A%`8A5`EM>7UW#C78`55=64X/L8(ML
+M)'B+1"1TBX`H"@``B40D(,=$)!@`````QT0D%`````#'1"00`````,=$)`P`
+M````9L=%'O\/C40D0%!5_W0D?.C\____@\00A,!T"8M$)#SIWPP``(M%)"7_
+M__\`/>$!$``/A2,!``"#[`QHB!,``.C\____@\009H%]$(4`#X>;````#[=%
+M$(M4)'"`O!"8!```_P^$A0```&:#?1!_=R,/MI00F`0``(M<)'"+BU@%``"-
+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
+MQ!"+="049HM&&$`/MM#!X@@/ML0)T&:)1`L"B7PD"(-\)`@`#X29````#[=4
+M)""-!-*-!(*-!$+!X`0#1"0<BTPD"(L1B5`$BU$$B5`(ZW.+7"08]D,&`71I
+M#[=$)"!0_W0D/%53Z/S___^#Q!#V168!=`^+1"0X9HM`",'@`XA$)$&-1"1`
+M4`^W5"0DC032C02"C01"P>`$`T0D(%!5_W0D).C\____@\00]D5F`70*BW0D
+M&(!."`'K"(M$)!B`8`C^#[=<)""+5"1PBX*L!0``B2R8BU0D(&;!Z@4/M]*+
+M3"0@@^$?N`$```#3X(M,)'`)A)&P!0``BT4D)?___P`]X0$0`'4KC40D-%!J
+M`%/_="0DZ/S___^+1"1$)?___Q\-````0(E$)$2#Q!#IJP```&:!?23A`74\
+MBD4F@^@1/`%W,H/L"/]T)!3_="1\Z/S___^-1"1$4(M<)"`/MD,T4`^W1"0X
+M4/]T)#3H_/___X/$(.MG@^P(_W0D'/]T)'SH_/___XU$)$10BW0D*`^V1CY0
+M#[=$)#A0_W0D-.C\____#[9&((/$(*@"="^H!'0KJ`%T)XM$)#0E____'PT`
+M``!@B40D-`^V5CZ#XG_!XA0E__\/^`G0B40D-(U$)#10_W0D=.C\____@\0(
+MN`,```"#Q%Q;7E]=PXUV`%575E.#[`2+;"08BU0D'(M=`(G09L'H!0^W\(G1
+M@^$?N`$```")Q]/GA7RS1'4MB>!0:@`/M\)05>C\____@4PD$````."-1"00
+M@&`#]U!3Z/S___\)?+-$@\08@\0$6UY?7<-55U93@^P,BWPD((MT)"2+1DR+
+M:!QF@7X0A0`/AY\````/MT80@+PXF`0``/\/A(T```!F@WX0?W<F#[:4.)@$
+M``"+CU@%``"-!-+!X`(IT(M$P2@/MD`$!1`%``#K9I!F@7X0@0!W+@^W1A`/
+MMH0XF`0``(N/D`4``(T$0(T$P(G"P>(%*<*+1)$(#[9`!`40!0``ZR\/MT80
+M#[:$.)@$``"+EW0%``"-!$"-!("+1,)4#[9`!`40!0``ZPB-=@"X#P8```^V
+M7`<.C01;P>`#*=B-G(<H`0``@WY0`'01@^P(_W905^C\____@\00B?:#[`A6
+M5^C\____@\0(55/_E9P```"#Q!Q;7E]=PXUV`%575E.#[!B+;"0LBT4`B40D
+M%(U=+%/H_/___XG'@^\@@\0$_W0D%.C\____B<:#Q!"-1R"+4P2)0P2)7R")
+M4`2)`K@!````A?9T=(U6/,9&).'&1B4!QD8F$(!.)P&+3"0DBX&<````B49(
+MBT9,B4@<B<@%D````(E&.,9&%<QF#[9',V:)1A"+10")1AC'1B"0````B4XT
+MQT9L-"4%`(/L"&H`4NC\____@\0(5O]T)!3H_/___[@`````@\00@\0,6UY?
+M7<.055=64X/L#(M\)"2+="0@BT8HB40D"(LH9HM/'HG(9L'H!0^WV(/A'[@!
+M````T^"%1)U$#X5C`P``BU4`C02=``,``(F"<`$``(M%`(N`=`$``*,`````
+MB<+&1Q0ABT<D)?___P`]X0$/`'4@@^P(:@!7Z/S___^#Q`QJ`%=5Z/S___^#
+MQ!#I$0,``)!FBT\>@^$?N`$```#3X(7"=!:#[`AJ`5?H_/___XDL).C\____
+M@\00#[:&L````(/X!`^'V`(``/\DA10>``#&AK`````!@^P$:@%7_W0D%.C\
+M____@\00Z;,"``#&AK`````"@^P$:@A7_W0D%.C\____@\00Z94"``#&AK``
+M```#@^P$5FHA_W0D%.C\____@\00@WXL`'0@@^P,:@!J`0^V1DE0_W8L_W0D
+M).C\____@\0@Z58"``"#[`1J`(M4)!`/MD()4%7H_/___X/$$.DZ`@``QH:P
+M````!(-^+`!T,8/L!%9J(?]T)!3H_/___\<$)`````!J`@^V1DE0_W8L_W0D
+M).C\____@\0@Z?P!``"#[`1J`&HA_W0D%.C\____@\0,:@&+5"00#[9""5!5
+MZ/S___^#Q!#IT`$``(/L!%9J!O]T)!3H_/___X/$$(-^'`!T%8M&'(M(!(U1
+M`8E0!(/Y!0^&HP$``,9&(P'&1B(`@'Y+`'0?D(/L#%7H_/___\<$)`$```#H
+M_/___X/$$(!^2P!UXH-^+`!T$XM6#(M&"(E0!(D"BT8L_D@PZQ6#?C``=`^+
+M5C`/MD9)QT2"/`````"+5@2+!HE0!(D"BT0D"/Y("H.^X`````!T&X/L!&H!
+M#[:&U0```%#_MN````#H_/___X/$$(-^+`!T%8/L!&H!#[9&25#_=BSH_/__
+M_X/$$(-^'`!T>8M&',=`8`````#^A5<,``"#[`Q5Z/S___^#Q`QJ`8M&'`^V
+M0`%05>C\____@\0,BT8<#[9``E"+1AP/MD`!4&@L`@``Z/S___^#Q`S_=AS_
+MM20%``!J`>C\____@\0,_W8<_[4D!0``:@;H_/___\=&'`````"#Q!"#[`A6
+M5>C\____@\00BU0D"(!Z!?]T8K\`````@'H*`'9!B=.#PSB)]H/L#%/H_/__
+M_XG&@\00BT,$B7,$B1Z)1@2),(!^(O]U#D>)^(M4)`@X0@IWT^L+B?B+5"0(
+M.$(*=Q:+1"0(QD`%_X/L"%!5Z/S___^#Q!"0@\0,6UY?7<-55U93@^P,BUPD
+M)(MT)""+?BB++\=$)`@`````]D<($'0'QH:P````!@^VAK````"#^`$/A(,`
+M``"#^`%_"H7`=!WIR0,``)"#^`0/A)L```"#^`8/A.H!``#IL0,``,:&L```
+M``&#[`A65>C\____QD,4@8!/"`B#Q!"#>U0`=!"#[`B-0U105>C\____@\00
+MC97,````BX7,````B5@$B0.)4P2)G<P```"#[`Q5Z/S___^#Q!#I5`,``(!G
+M"/?^AK,```#&AK``````QD,4`H/L"%-5Z/S___^)+"3H_/___X/$$.DE`P``
+MD,:&LP````"#?AP`#X1'`0``BT8<BT@$C5$!B5`$@_D%#X<R`0``@&<(]X-[
+M5`!T$(/L"(U#5%!5Z/S___^#Q!"-E<P```"+A<P```")6`2)`XE3!(F=S```
+M`(!/"!"#?BP`=!V#[`QJ`&H"#[9&25#_=BQ7Z/S___^#Q"#IHP(``,9$)`<`
+M@'\*``^&L0```(U'.(D$)(GV@^P,_W0D#.C\____B<.#Q!"+%"2+0@2)6@2)
+M$XE#!(D8@WL<`'0=@^P$_W,<_[4D!0``:@7H_/___X!+)`*#Q!"-=@"#[`13
+M:@97Z/S___^#Q!"`>TL`=#^+1"0(_T0D"#U_EI@`=S"#[`Q5Z/S____'!"0!
+M````Z/S___^#Q!"`>TL`=!*+1"0(_T0D"#U_EI@`=M.-=@#^1"0'BD0D!SA'
+M"@^'5____\9&(@.#[`A65>C\____@\00Z<T!``"0C97,````BX7,````B5@$
+MB0.)4P2)G<P```"#?AP`=!6+1AR+2`2-40&)4`2#^04/AGH!``"#[`QH7`@`
+M`.C\____@\0,5FH&5^C\_____D\*@\00BU8$BP:)4`2)`H-^+`!T%(M&+/Y(
+M,(M6#(M&"(E0!(D"ZQF0@WXP`'02BU8P#[9&2<=$@CP`````C78`@'Y+`'1"
+MBT0D"/]$)`@]?Y:8`'<SC78`@^P,5>C\____QP0D`0```.C\____@\00@'Y+
+M`'02BT0D"/]$)`@]?Y:8`';3C78`BU8$BP:)4`2)`H.^X`````!T'8/L!&H!
+M#[:&U0```%#_MN````#H_/___X/$$(GV@WXL`'06@^P$:@$/MD9)4/]V+.C\
+M____@\00D(-^'`!T=HM&',=`8`````#^A5<,``"#[`Q5Z/S___^#Q`QJ`8M&
+M'`^V0`%05>C\____@\0,BU8<#[9"`E`/MD(!4&@L`@``Z/S___^#Q`S_=AS_
+MM20%``!J`>C\____@\0,_W8<_[4D!0``:@;H_/___\=&'`````"#Q!"#[`A6
+M5>C\____@\00ZQ&#[`16:@)7Z/S___^#Q!")]H/L#%7H_/___X/$$(/$#%M>
+M7UW#55=64X/L#(M<)"2+?"0@BV]4BW4`]D4($'0$QD<U!@^V1S6#^`$/A($`
+M``"#^`%_"X7`=![I6@,``(GV@_@$#X21````@_@%#X2&`0``Z4$#``#&1S4!
+M@^P(5U;H_/___\9#%(&`30@(@\00@WM4`'00@^P(C4-44%;H_/___X/$$(V6
+MS````(N&S````(E8!(D#B5,$B9[,````@^P,5NC\____@\00Z><"``"`90CW
+M_D<VQD<U`,9#%`*#[`A35NC\____B30DZ/S___^#Q!#IO@(``(!E"/>#>U0`
+M=!"#[`B-0U105NC\____@\00C9;,````BX;,````B5@$B0.)4P2)GLP```"#
+M[`1J`&H&5>C\____@\0,:@$/MD4)4%;H_/___\9$)!L`@\00@'T*``^&@@``
+M`(U].(/L#%?H_/___XG#@\00BT<$B5\$B3N)0P2)&(-['`!T&X/L!/]S'/^V
+M)`4``&H%Z/S___^`2R0"@\00D(/L!%-J!E7H_/___X/$$(![2P!T(8UV`(/L
+M#%;H_/___\<$)`$```#H_/___X/$$(![2P!UXOY$)`N*1"0+.$4*=X'&104`
+M@$T($(/L#%7H_/___X/$$.G``0``@&4(]X-[5`!T$(/L"(U#5%!6Z/S___^#
+MQ!"-ALP```"+ELP```")6@2)$XE#!(F>S````(U%.(G".44X#X3H````B40D
+M!(GV@^P,4NC\____B<.#Q!"#>!P`=!R#[`3_<!S_MB0%``!J!>C\____@$LD
+M`H/$$(GV@^P$4VH&5>C\____@\00@'M+`'0AC78`@^P,5NC\____QP0D`0``
+M`.C\____@\00@'M+`'7B@WL<`'1<BT,<QT!@`````/Z&5PP``(/L#%;H_/__
+M_X/$#&H!BT,<#[9``5!6Z/S___^#Q`S_<QS_MB0%``!J`>C\____@\0,_W,<
+M_[8D!0``:@;H_/___\=#'`````"#Q!"#[`A35NC\____@\00BU0D!#E5.`^%
+M'O___X/L!&H`:@95Z/S___^#Q`A75NC\____QT4H`````(L&BY!8`0``B14`
+M````@\00A=)T"(L&B9!8`0``]D4&`715QD0D"P"`?BL`=AH/ME4)B="*3"0+
+MT_BH`74*08A,)`LX3BMWZH/L"`^V7"034U;H_/___X/$"%56Z/S___^)V,'@
+M!`'8QX2&/`L```````"#Q!")]H/$#%M>7UW#55=64X/L%(M\)"B+1RB)1"0,
+MBQA74^C\____@\00@+^S`````78'QH>P````!(UW$#EW$`^$)@(``(/L#%;H
+M_/___XE$)!B#Q!"+1Q"+5"0(B5`$B0*)<@2)5Q"]`````.G#`0``B?8/M]6+
+M@ZP%``"+-)"%]@^$K`$``&:+1QAF.T80#X6>`0``#[>3,@L``(N#<`H``#D0
+M=$^00@^W@S8+```YT'<%N@````"+@W`*``"+1)`$J0``"`!U(B7_#P``9CG%
+M=1@Y="0(=1R#[`Q3Z/S___^#Q!#I@0$``)"+@W`*```Y$'6RBTPD!(!Y-``/
+MA3`!``!F@7X0A0`/AR0!```/MT80@+P8F`0``/\/A!(!``"%_P^$\@````^V
+M1R"H`0^$Y@```*@$#X3>````BQ-FBT8>9L'H!0^WP(T$A0`#``")@G`!``!F
+MBTX>@^$?N@$```")T-/@B<&+`XF(=`$```^W3AZ+@ZP%``#'!(@`````9HM.
+M'HG(9L'H!0^WP(D$)(/A'XG0T^")P??1BP0D(8R#L`4``&:+3AZ)R&;!Z`4/
+MM\"#X1_3XO?2(52#1#MT)`AT.HM6!(L&B5`$B0*#?E0`=!"#[`B-1E104^C\
+M____@\00C9/,````BX/,````B7`$B0:)5@2)L\P```"#[`@/MT8>4(V#``D`
+M`%#H_/____Y/2X/$$.L8BU0D!/9"!@)T#H/L"%97Z/S___^#Q!"0168Y:T`/
+MAS7^__^%_W0I#[9'(*@!="&H!'0=BTPD"(M1!(L!B5`$B0*#[`A15^C\____
+M@\00B?:#Q`Q;7E]=PU575E.#[!2+?"0HBT=4B40D#(L85U/H_/___X/$$(!_
+M-@%V!,9'-02-=Q0Y=Q0/A-P!``"#[`Q6Z/S___^)1"08@\00BT<4BU0D"(E0
+M!(D"B7($B5<4O0````#I@0$```^WU8N#K`4``(LTD(7V#X1L`0``9HM')&8[
+M1A`/A5X!```/MY,R"P``BX-P"@``.1!T3Y!"#[>#-@L``#G0=P6Z`````(N#
+M<`H``(M$D`2I```(`'4B)?\/``!F.<5U&#ET)`AU'(/L#%/H_/___X/$$.DY
+M`0``D(N#<`H``#D0=;)F@7X0A0`/A_(````/MT80@+P8F`0``/\/A.````"+
+M3"0$@'DT``^%T@```/9!!@$/A,@```"+$V:+1AYFP>@%#[?`C02%``,``(F"
+M<`$``&:+3AZ#X1^Z`0```(G0T^")P8L#B8AT`0``#[=.'HN#K`4``,<$B```
+M``!FBTX>B<AFP>@%#[?`B00D@^$?B=#3X(G!]]&+!"0AC(.P!0``9HM.'HG(
+M9L'H!0^WP(/A']/B]](A5(-$.W0D"'0DBU8$BP:)4`2)`HV3S````(N#S```
+M`(EP!(D&B58$B;/,````@^P(#[=&'E"-@P`)``!0Z/S____^3RF#Q!")]D5F
+M.6M`#X=U_O__BU0D!/9"!@%T&XM,)`B+402+`8E0!(D"@^P(45?H_/___X/$
+M$(/$#%M>7UW#55=64X/L#(M\)"#'1"0(`````(V'S````(G".8?,````#X3/
+M`0``B<6-=@"#[`R)UE+H_/___XG#@\00@WA,`'4N@^P,5^C\____B4-,@\00
+MA<!U&XN'S````(E8!(D#B7,$B9_,````Z8@!``")]HM#)"7___\`/>$!$``/
+MA/$```!F@7L0@``/A.4```!F#[9#$&:)0Q!F@_A_=A)F@7LDX0%U(HI#)H/H
+M$3P!=QAF@7L0A0!W$`^W0Q"`O#B8!```_W4:B?;&0Q0&@^P(4U?H_/___X/$
+M$.D*`0``B?9F@7LDX0%U#(I#)H/H$3P!=C>)]HN/6`4``&:!>Q"%`'<=#[=#
+M$`^VE#B8!```C032P>`"*="-!,&)1"0(ZPJ!P>@6`0")3"0(9H%[).$!=0N*
+M0R9(/`%V.XUV`&:!>Q"``'0P9H%[).$!=0J*0R:#Z!$\`78>BT0D"/9`(P1U
+M%,9#%`:#[`A35^C\____@\00ZW60@^P(4U?H_/___X/$$(/X`G<*@_@!<QSK
+M"XUV`(/X`W1$ZU&0@^P(4U?H_/___X/$$.M!@WM4`'00@^P(C4-44%?H_/__
+M_X/$$(V7S````(N'S````(E8!(D#B5,$B9_,````ZQV#[`A35^C\____@\00
+MB?:)ZCFOS`````^%-O[__X/$#%M>7UW#B?955U93@^P\BD0D5(A$)"`/MLB)
+MRL'B!`'*BUPD4(T4DXN"/`L``(E$)!RX_O___]/`(H)9"P``B$0D&XL3B50D
+M%,=$)!``````@'PD(`-V#,>"<`$``,0!``#K#HM,)!3'@7`!``"H`0``BUPD
+M%(N#=`$``*,`````BDPD((/A`[L'````T^.)Q@G>BT0D%(FP=`$``(/L#&CH
+M`P``Z/S____WTR'>BU0D)(FR=`$``(/$$(!\)"`#=A4/MD0D((N$@M`!``"C
+M`````(G&ZQ</MD0D((M,)!2+A('0`0``HP````")QH/."(!\)"`#=A(/MD0D
+M((M<)!2)M(/0`0``ZQ`/MD0D((M4)!2)M(+0`0``@'PD(`-V%@^V1"0@BTPD
+M%,>$P0`"```X````ZQ0/MD0D((M<)!3'A,,``@``.````(/L#&@0)P``Z/S_
+M__^#Q!"`?"0@`W86#[9$)""+5"04QX3"!`(```````#K%`^V1"0@BTPD%,>$
+MP00"````````@WPD'``/A&T(``"_`````(M<)%"`>RL`=C:)]HM4)!P/MD()
+MB?L/MLO3^*@!=!6#[`1J`5'_="1<Z/S___^#Q!"-=@!'B?B+5"10.$(K=\R+
+M3"0<]D$&`71[@^P(4?]T)%SH_/___X/$"`^V7"0H4_]T)%SH_/___XG8P>`$
+M`=B+7"1@C12#BX)<"P``@\00J0``$`!T"R7__^__B8)<"P``@^P(_W0D)/]T
+M)%SH_/___P^V5"0PB=#!X`0!T(M4)&#'A((\"P```````(/$$.FC!P``BTPD
+M'(!Y-`!T'8/L"%&+7"1<_[/$"0``Z/S___^+1"0L_D@T@\00@'PD&P`/A)0"
+M``#'1"0,`````,9$)`L`@^P(#[9<)"A3_W0D7.C\____B=C!X`0!V(M,)&"-
+M%(&+@EP+``"#Q!"I```0`'0+)?__[_^)@EP+``"*7"0;BT0D'(A8";\`````
+MBU0D4(!Z*P`/AF$!```/MNN)^P^VRXGHT_BH`0^$/0$``(G(P>`$`<B*5"0;
+MBUPD4(B4@UD+``")^#P#=A&+5"04QX3*``(``#@```#K%(GY#[;!BUPD%,>$
+MPP`"```X````@^P,:!`G``#H_/___X/$$(GX/`-V$`^VP(M4)!2)K,($`@``
+MZQ")^0^VP8M<)!2)K,,$`@``B?@\`W80BU0D%,>"<`$``,0!``#K#HM,)!3'
+M@7`!``"H`0``BUPD%(N#=`$``*,`````B?F#X0.[!P```-/CB<8)WHM$)!2)
+ML'0!``"#[`QHZ`,``.C\____]],AWHM4)"2)LG0!``"#Q!")^8#Y`W83#[;!
+MBX2"T`$``*,`````B<;K%XG[#[;#BU0D%(N$@M`!``"C`````(G&@\X(B?F`
+M^0-V$`^VP8M<)!2)M(/0`0``ZQ")^@^VPHM,)!2)M('0`0``1XG[BT0D4#A8
+M*P^'HO[__XM$)!R#P"R)PHM,)!PY02QT-X/L#(G34NC\____C5#@B50D'(/$
+M$(M3!(E#!(D8B5`$B0*+3"0,@WD,`'0+B=J+1"0<.5@L=<F#?"0,`'1'BU0D
+M#,9",@"_`````(M,)%"`>2L`=C"+7"0<#[9#"8GYT_BH`704#[9$)`N+7"0,
+MB$P80/Y#,OY$)`M'B?B+5"10.$(K=]"#[`1J`&B!````_W0D*.C\____#[94
+M)#")T,'@!`'0BTPD8,>$@3P+````````@\00Z=0#``"#[`1J`&H&_W0D*.C\
+M____@\0(#[9<)"A3_W0D7.C\____B=C!X`0!V(M<)&"-%(.+@EP+``"#Q!"I
+M```0`'0+)?__[_^)@EP+``"+1"0<@\`LB<*+3"0<.4$L#X07`@``B40D!(/L
+M#%+H_/___XUHX(/$$(U0"#E0"`^$T`$``)"#[`R-12A0Z/S___^-</B#Q!"`
+M?B$-=1R#[`@%^````%"+1BB+`/]P%.C\____@\00C78`BU8$BP:)4`2)`H!^
+M2P!T(8/L#/]T)%SH_/___\<$)`$```#H_/___X/$$(!^2P!UWX-^'``/A#H!
+M``"+1AS'0&``````@'Y+``^$G@```+\`````BUPD4&:#>T``#X2*````D(M4
+M)%"+@JP%``"+'+B%VW1G9HM#$&8[1AAU768]A0!W5P^WP("\$)@$``#_=$J)
+MT8L29HM#'F;!Z`4/M\"-!(4``P``B8)P`0``BQ%FBTL>@^$?N`$```#3X(F"
+M=`$``,9#%"&#[`1J`%/_="1<Z/S___^#Q!")]D>+7"10#[=#0#GX#X]W____
+M]D8D!'4MBT0D4/Z`5PP``(/L#%#H_/___X/$#&H!BT8<#[9``5#_="1<Z/S_
+M__^#Q!"0@^P$BT8<#[9``E"+1AP/MD`!4&@L`@``Z/S___^#Q`S_=AR+5"18
+M_[(D!0``:@'H_/___X/$#/]V'(M,)%C_L20%``!J!NC\____QT8<`````(/$
+M$(M<)!S^2PK^33"#[`A6_W0D7.C\____@\00C44H.44H#X4Q_O__BT0D'/Y(
+M'(/L"%7_="1<Z/S___^#Q!"+5"0$BTPD'#E1+`^%[?W__XM$)!R#P#B)PHM<
+M)!PY0S@/A!@!``")PX/L#%+H_/___XG&@\00@'A+`'1!BT0D$/]$)!`]?Y:8
+M`'<RB?:#[`S_="1<Z/S____'!"0!````Z/S___^#Q!"`?DL`=`^+1"00_T0D
+M$#U_EI@`=M"#?AP`#X21````BT8<QT!@`````/9&)`1U+(M$)%#^@%<,``"#
+M[`Q0Z/S___^#Q`QJ`8M&'`^V0`%0_W0D7.C\____@\00@^P$BT8<#[9``E"+
+M1AP/MD`!4&@L`@``Z/S___^#Q`S_=AR+5"18_[(D!0``:@'H_/___X/$#/]V
+M'(M,)%C_L20%``!J!NC\____QT8<`````(/$$(M$)!S^2`J#[`A6_W0D7.C\
+M____@\00B=J+3"0<.5DX#X7J_O__@^P(_W0D)/]T)%SH_/___P^V5"0PB=#!
+MX`0!T(M<)&#'A(,\"P```````(/$$+\`````BT0D4(!X*P`/AO8```")]@^V
+M1"0;B?G3^*@!=0HZ3"0@#X7-````B?N`^P-V$(M$)!3'@'`!``#$`0``ZPZ+
+M5"04QX)P`0``J`$``(M,)!2+@70!``"C`````(GY@^$#C0Q)NP<```#3XXG&
+M"=Z+1"04B;!T`0``@^P,:.@#``#H_/____?3(=Z+5"0DB;)T`0``@\00B?F`
+M^0-V$P^VP8N$@M`!``"C`````(G&ZQ>)^P^VPXM4)!2+A(+0`0``HP````")
+MQH/."(GY@/D#=A`/ML&+7"04B;2#T`$``.L3B?H/ML*+3"04B;2!T`$``(UV
+M`$>)^XM$)%`X6"L/APS___^#Q#Q;7E]=PU93@^P$BW0D$(L>L0"`>RL`=AR0
+M#[;1B=#!X`0!T(V$@S@+```Y\'0&03A+*W?E#[;1B=#!X`0!T(T$@XN(/`L`
+M`(7)=&+V008"=%P%.`L``#E!&'52@'DT`'0J_D$TZT?^032#[`QH``````^V
+MAHL```!05E'_L\0)``#H_/___X/$(.LBBU$LC7+@C4$L.<)T%8G"@WX,`'3&
+MBT8@C7#@.=!U\(UV`(/$!%M>PXGV55=64X/L#(I$)"2(1"0+BWPD(+L`````
+M#[;(B<C!X`0!R(T4AXNR/`L``(7V#X1M`0``N/[____3P(1&"0^%70$``(U&
+M+#E&+'09@^P,C8(X"P``4.C\____@\00Z;("``")]KT`````@'X*``^&H0(`
+M`(U>.(GV@^P,4^C\____B<*#Q!"+0P2)4P2)&HE"!(D0@'HA``^%[P````^W
+M0AB#O(>8`@```'4*@WH<``^$OP````^W0AB+A(>8`@``@WAP``^$D@```,:"
+ML``````/MD(@J`)T*Z@$=">H`70CQD(B!<9"(P12#[9"25#_<BS_<BCH_/__
+M_X/$$.F*````B?8/MD(@J`)U(*@$=!RH`708QD(B`\9"(P2#[`A25^C\____
+M@\00ZV&0#[9"(*@"=%BH!'14J`%U4,9"(P;&0B(%9L>"D```````@^P(4E?H
+M_/___X/$$.LP@^P$_W(<_[<D!0``:@3H_/___X/$$.L8@^P$#[="&%#_MR0%
+M``!J`NC\____@\0018GH.$8*#X?@_O__Z7<!``"-=@!F@?OS`7=2#[9T)`N#
+M[`QH$"<``.C\____@\00@'PD"P-V&8L'BX2PT`$``*,`````J0``$`!U(>L7
+MB?:+!XN$L-`!``"C`````*D``!``=0A#9H'[\P%VLX/L"`^V7"034U?H_/__
+M_XD\).C\____B=C!X`0!V(NTASP+``"#Q!"%]@^$ZP```+,`@'\K`'8EC78`
+M#[9&"0^VR]/XJ`%T#X/L!&H`45?H_/___X/$$$,X7RMWW@^V1"0+B<+!X@0!
+MPHV4ES@+``")5AB-1BPY1BQU"(U&.#E&.'1RO0````#&1"0*`(U&+(G".48L
+M="R#[`R)TU+H_/___XUHX(/$$(M3!(E#!(D8B5`$B0*#?0P`=`B)VCE>+'75
+MD(7M=%3&13(`L0"`?RL`=D@/MD8)T_BH`700#[9$)`J(3"A`_D4R_D0D"D$X
+M3RMWX.LF]D8&`70/@^P(5E?H_/___X/$$.L1@^P(:@!6Z/S___^#Q!"-=@"#
+MQ`Q;7E]=PX/L%(M$)!B+$&;'0#(@`%!2Z/S___^#Q!S#B?975E.+="00BPZ+
+M?BBS`(!Y*P!V&P^VTXG0P>`$`="-A($X"P``.?!T!D,X62MWY8#[`W8<#[;#
+MBQ&+A(+0`0``HP````"I```0`'4<ZRZ)]@^VPXL1BX2"T`$``*,`````J0``
+M$`!T%(/L!%</ML-04>C\____@\00ZQ&0@^P(#[;#4%'H_/___X/$$%M>7\.+
+M5"0$BX($"@``BP"C`````(N"!`H``(M`!*,`````BX($"@``BT`(HP````"+
+M@@0*``"+0`RC`````,-55U93@^P,BWPD(,9$)`L`@'\K``^&W08``(GV#[9$
+M)`N-2`BZ`0```(G3T^.%7"0D=0^-2!#3XH54)"0/A*0&``"`?"0+`W8?#[9$
+M)`N+%XN$PH`!``"C`````*D```@`=1_K/8UV``^V1"0+BQ>+A,*``0``HP``
+M``"I```(`'0@5^C\____#[94)`^)T,'@!`'0@8R'8`L`````"`"#Q`2+'XI,
+M)`N`^0-V&P^VP8N$PX`!``"C`````(G"@>(```$`ZQF)]@^VP8N$PX`!``"C
+M`````(G"@>(```$`A=)T08#Y`W80#[;!QX3#@`$``````0#K#@^VP<>$PX`!
+M``````$`A=)T&@^V5"0+B=#!X`0!T(&,AV`+``````$`C78`@'\Y`0^%7@4`
+M`(!\)`L#=A\/MD0D"XL7BX3"@`$``*,`````J`%U(^DE`0``C78`#[9$)`N+
+M%XN$PH`!``"C`````*@!#X0'`0``@^P(#[9$)!.)PL'B!`'"C1R7C8-D"P``
+M4/]W%.C\____@\00@[L\"P```'1[BZL\"P``QD0D"@"`?0H`=F.-=3B#[`Q6
+MZ/S___^)PX/$$(M&!(E>!(DSB4,$B1CV0R0"=3*#>QP`=!V#[`3_<QS_MR0%
+M``!J!>C\____@$LD`H/$$(UV`(/L!%-J!E7H_/___X/$$/Y$)`J*1"0*.$4*
+M=Z"Y(*$'`.LE@^P$:@$/MD0D$U!7Z/S____'!"2@A@$`Z/S___^Y`"TQ`8/$
+M$`^V1"0+B<+!X@0!PHT4EXV"9`L``(F*9`L``,=`"-!&!0"!PC@+``")4`R#
+M[`A0_W<4Z/S___^#Q!"`?"0+`W87#[9$)`N+%XN$PH`!``"C`````.L5B?8/
+MMD0D"XL7BX3"@`$``*,`````@'PD"P-V(@^V1"0+BQ>+A,*``0``HP````"I
+M@````'4BZ8,```"-=@`/MD0D"XL7BX3"@`$``*,`````J8````!T9H!\)`L#
+M=A</MD0D"XL7BX3"A`$``*,`````B</K%0^V1"0+BQ>+A,*$`0``HP````")
+MPX!\)`L#=A</MDPD"XL7B=@-```!`(F$RH0!``#K%0^V3"0+BQ>)V`T```$`
+MB83*A`$``(!\)`L#=B$/MD0D"XL7BX3"@`$``*,`````J0``!`!U)>GB`0``
+MB?8/MD0D"XL7BX3"@`$``*,`````J0``!``/A,(!``"`?"0+`W87#[9$)`N+
+M%XN$PH`!``"C`````(G#ZQ4/MD0D"XL7BX3"@`$``*,`````B<.!RP``!`"`
+M?"0+`W80#[94)`N+!XF<T(`!``#K#@^V5"0+BP>)G-"``0``#[94)`N)T,'@
+M!`'0@[R'/`L```!U7H!\)`L#=A*+!XN$T(`!``"C`````(G#ZQ4/MD0D"XL7
+MBX3"@`$``*,`````B<.`?"0+`W83#[94)`N+!XF<T(`!``#II0(```^V5"0+
+MBP>)G-"``0``Z9("``"-=@`/ME0D"XG0P>`$`="+K(<\"P``@WTH``^$TP``
+M`(M%*`^W4#+VQ@$/A<,```")QO;"`@^$L````(/L"(U`6%#_=Q3H_/___\9$
+M)!L`@\00@'X?`'9N#[9$)`N+7(8\A=MT5(-['`!T&H/L!/]S'/^W)`4``&H%
+MZ/S___^`2R0"@\00@^P$4VH&5>C\____@\00@'M+`'0?D(/L#%?H_/___\<$
+M)`$```#H_/___X/$$(![2P!UXOY$)`N*5"0+.%8?=Y+'1E@@H0<`QT9@M$8%
+M`(EV9(/L"(U&6%#_=Q3H_/___X/$$.L(9H%(,H``B?:`?"0+`W8=#[9$)`N+
+M%XN$PH`!``"C`````/;$`74AZ1`!```/MD0D"XL7BX3"@`$``*,`````]L0!
+M#X3T````@'PD"P-V'`^V1"0+BQ>+A,*``0``HP````"H`70@Z=$````/MD0D
+M"XL7BX3"@`$``*,`````J`$/A;8````/MFPD"XGHP>`$`>B-K(<X"P``@WT$
+M``^$F0```(M=!(E<)`2#[`B-12Q0_W<4Z/S____&1"03`(/$$(!["@!V48G>
+M@\8X@^P,5NC\____B<.#Q!"+1@2)7@2),XE#!(D8@WL<`'0:@^P$_W,<_[<D
+M!0``:@7H_/___X!+)`*#Q!#^1"0#BD0D`XM4)`0X0@IWM,=%+("$'@#'130`
+M````B6TX@^P(C44L4/]W%.C\____@\00D(!\)`L#=AD/MD0D"XL7BX3"@`$`
+M`*,`````B<'K%XGV#[9$)`N+%XN$PH`!``"C`````(G!@'PD"P-V$`^V5"0+
+MBP>)C-"``0``ZPX/ME0D"XL'B8S0@`$``/Y$)`N*7"0+.%\K#X<E^?__@\0,
+M6UY?7<.055=64X/L/(MT)%"+CE@%``"+1"14C;GH%@$`9H%X$(4`=Q</MT`0
+M#[:4,)@$``"-!-+!X`(IT(T\P0^V1S[!X`@#A@0*``"+@$`(``"C`````(G%
+MP>T0P>@8B$0D$`^V1S[!X`@#A@0*``"+@$0(``"C`````(A$)"B-3"0HB<+!
+MZ@B(40'!Z!"(00(/MD<^P>`(`X8$"@``BX!("```HP````"(00.)PL'J"(A1
+M!,'H$(A!!<9!!@#&00<`@^P,_W$$_W0D.`^V1"0D4(GJ#[;:4VA\"```Z/S_
+M__^#Q"#VPP%U&XGIA,ET%8M<)%3&0Q0`N`````#IIP(``(UV`(M$)%2`>!2!
+M=3*-1"0H4`^V1"044(GJ#[;"4/]T)&#H_/___XM,)&3&010"N`````"#Q!#I
+M:P(``(UV`(M<)%2+0R0E____`#WA`0X`=1'&0Q0AN`````#I1P(``(UV`(M$
+M)%3V0&8!=1+WQ0$```!T"H!_(O\/A04"``"#[`A75NC\____@\0(5U;H_/__
+M_XL6BTPD9&:+01YFP>@%#[?`C02%``,``(F"<`$``(L&BUPD9&:+2QZ#X1^Z
+M`0```(G3T^.)F'0!``"+1"1D#[=('HN&K`4``,<$B`````"+7"1D9HM+'HG(
+M9L'H!0^WP(/A'XG3T^.)V??1(8R&L`4``(M$)&1FBT@>B<AFP>@%#[?`@^$?
+MT^+WTB%4AD2#Q`B+3"1<BU$$BP&)4`2)`@^W01Y0C88`"0``4.C\_____D]+
+MBUPD9,9#%(&#Q!"#>U0`=!2#[`B)V(/`5%!6Z/S___^#Q!")]HU'$(G".4<0
+M#X3E````O0$```")1"0,D(/L#%+H_/___XG#BQ9FBT`>9L'H!0^WP(T$A0`#
+M``")@G`!``"+!F:+2QZ#X1^)ZM/BB9!T`0``#[=3'HN&K`4``,<$D`````!F
+MBTL>B<AFP>@%#[?`@^$?B>K3XHG1]]$AC(:P!0``9HM+'HG(9L'H!0^WP(/A
+M'XGJT^*)T??1(4R&1(/$"`^W0QY0C88`"0``4.C\_____D]+@\00@WM4`'00
+M@^P(C4-44%;H_/___X/$$(V6S````(N&S````(E8!(D#B5,$B9[,````BU0D
+M##E7$`^%)?___XM,)%2!863___[_QH>P````!(/L"%%7Z/S___^X`0```(/$
+M$.LCC40D*%`/MD0D%%")ZP^VPU#_="1@Z/S___^#Q!"X`````)"#Q#Q;7E]=
+MPU575E.#["R+?"1$BVPD0(MU`(N&*`H``(E$)!C'1"04`````(M$)$P+1"1(
+M#X3J`@``#[?7C032C02"C01"P>`$BTPD&/9$""$"=!"+AJP%``"+!)#&0!0"
+MZQ&0#[?'BY:L!0``BP2"QD`4(0^WQXN6K`4``(L4@HM")"7___\`/>$!$``/
+MA)T!``"P_V:!>A"%`'<+#[="$(J$,)@$```\_W48#[?'BY:L!0``BP2"QD`4
+M!NG3"```C78`#[;`C13`P>("*<*+AE@%``"-%-")5"04@'PD2P!Y80^V0B"H
+M`G0EJ`1T(:@!=!V+!HN`6`$``*,`````B<*%P'0*BP:)D%@!``")]HL&BX!0
+M`0``HP````")PH/*`HL&B9!0`0``BP:+@`0!``"C`````(G"@,[_BP:)D`0!
+M```/M]>-!-*-!(*-!$+!X`2+7"089O=$&"`""`^$S````,9$)!,`LP"`?BL`
+M=EV-=@`/MD4)#[;+T_BH`71'@/L#=AJ+!HN$B-`!``"C`````*D``!``=1WK
+M*XUV``^VPXL6BX2"T`$``*,`````J0``$`!T$+@!````B-G3X`A$)!.-=@!#
+M.%XK=Z:`?"03`'1;BEPD$SA="752B?AFP>@%#[?`B?F#X1^Z`0```-/BA52&
+M1'4WBT0D%("XL`````)W!\:`L`````.#[`@/M]>+AJP%``#_-)#_="0@Z/S_
+M__^#Q!#I9P<``(UV`/9$)$L!#X19!P``#[?'BY:L!0``BPR"QD$4(8M!)"7_
+M__\`/>$!#@`/A#8'``"+5"04#[9"/L'@"`.&!`H``(N`0`@``*,`````B<?!
+M[Q")Q<'M&`^V0C[!X`@#A@0*``"+@$0(``"C`````(A$)""-7"0@B<+!Z@B(
+M4P'!Z!"(0P*+5"04#[9"/L'@"`.&!`H``(N`2`@``*,`````B$,#B<+!Z@B(
+M4P3!Z!"(0P7&0P8`QD,'`/9!9@%U(XGX#[;0]L(!=!E3B>L/ML-04E'H_/__
+M_X/$$.F'!@``C78`@^P(45;H_/___X/$$.ER!@``B?8/M]>+AJP%``"+!)!F
+M@7@DX0$/A2@!```/MD`F@^@&@_@*#X=(!@``_R2%*!X```^WUXN&K`4``(L,
+MD(T$THT$@HT$0HG#P>,$BWPD&(I$.S.(012+AJP%``"+!)#V0!,$#X0)!@``
+M@'@4``^$_P4``(-X.``/A/4%``"+4#B*1#LSB`+IYP4```^WUXT$THT$@HT$
+M0L'@!(G3BY:L!0``BQ2:BTPD&(I$""J(0A2+AJP%``"+!)B#>#0`#X2O!0``
+M@^P,C03;C02#C01#P>`$#[:$""$$``!0Z/S___^)Q8N&K`4``(L$F(/$$#MH
+M('8#BV@@#[?7BX:L!0``BPR0C032C02"C01"P>`$BUPD&(U$&"B#[`154/]Q
+M-.C\____@\00Z4<%```/M\>+EJP%``"+!(+&0!0`Z3(%``")]@^WUXN&K`4`
+M`(LLD(M%2(E$)`RP_V:!?1"%`'<+#[=%$(J$,)@$```/ML"-%,#!X@(IPHN&
+M6`4``(T4T(E4)!3&@K``````#[9"(*@"#X1-`0``J`0/A$4!``"H`0^$/0$`
+M`,9%%`#V168@#X2_!```@WPD#``/A+0$``"+5"0,]D)=`@^$A@```(-Z6`!T
+M%H/L!/]U(/]U-/]R6.C\____@\00ZVJ#?30`=&2_`````(M,)`R#>6``=`OV
+M05T!=06+>6#K(X/L!&H!_[8D!@``_W0D&(M<)!S_4V2#Q!"%P'0&B[XD!@``
+M@WT@`'0ABUTT@^P$_S=3_W<(Z/S___\#'X/$$(U'!(/'$(,X`'3BBWPD%`^V
+M1S[!X`@#A@0*``"+@$`(``"C`````(G"P>H0BTPD#(A14\'H&&:)04@/MD<^
+MP>`(`X8$"@``BY!$"```B14`````9@^VPF:)04P/ML9FB4%.B=#!Z!!F#[;`
+M9HE!4,'J&(A14@^V1S[!X`@#A@0*``"+@$P(``"C`````&8/ML!FB4%*Z9$#
+M``"0#[?7C032C02"C01"B<'!X02+7"08BD09,X3`#X6G````BX:L!0``BP20
+MQD`4`/9%9A`/A%@#``"#?"0,``^$30,``(I$&3.+?"0,B$=*BD==J`(/A#<#
+M``"_`````(M4)`R#>F``=`FH`74%BWI@ZR.#[`1J`?^V)`8``/]T)!B+3"0<
+M_U%D@\00A<!T!HN^)`8``(-](``/A/("``"+732-=@"#[`3_-U/_=PCH_/__
+M_P,?@\00C4<$@\<0@S@`=.+IR0(``)`\`@^%>`(```^WWXT$VXT$@XT$0\'@
+M!(M4)!B-1!!`B40D"(H8@^-_QD0D!P#&1"0&`,9$)`4`#[?7C032C02"C01"
+MP>`$BTPD&(M$"#B)1"0<C4PD'`^V5"0<P>(8#[9!`<'@$`G"#[9!`L'@"`G"
+M#[9!`PG"B10D@/MQ=C>#^@%V#HM$)`B*6`&#XP^(7"0'@SPD`G8+BU0D"(I2
+M`HA4)`:#/"0#=ER+3"0(BDD#B$PD!>M/@SPD`G8.BT0D"(I8`H/C#XA<)`>#
+M/"0'=C6+5"0(#[9"!X/`"#D$)'8#B00D@SPD#'8+BTPD"(I)#(A,)`:#/"0-
+M=@N+7"0(BEL-B%PD!0^WUXN&K`4``(L$D(!X'`!T78,\)`!T5\9`%""+AJP%
+M``"+!)"*%"0X4!QS!P^V0!R)!"0/M]>+AJP%``"+#)"#>3@`=#F-!-*-!(*-
+M!$+!X`2+7"08C4080(/L!/]T)`10_W$XZ/S___^#Q!#K$`^WQXN6K`4``(L$
+M@L9`%"*`?"0'!'40#[?'BY:L!0``BP2"QD`4`CEU&`^$)0$``(-\)`P`#X0:
+M`0``]D5F$'1A#[?'C13`C120C110P>($BTPD&(I$"C.+7"0,B$-*]D-=`G0]
+MB@0D.$4<<P.*11R$P'0N#[;(#[?7C032C02"C01"P>`$BUPD&(U$&$"#[`11
+M4(M\)!C_=U3H_/___X/$$`^V1"0'@_@+=U7_)(54'@``BT0D#,9`7@'IE0``
+M`(!\)`8$=1*`?"0%`G4+BU0D#,9"7A'K?9"+3"0,QD%>`NMRBUPD#,9#7A#K
+M:(M\)`S&1UX+ZUZ+1"0,QD!>!NM4BU0D#,9"7@WK2HGV/"AU'8M,)!2*04M(
+MB$%*#[?7BX:L!0``BP20QD`4@>LG/`AU$(/L#&@0)P``Z/S___^#Q!`/M\>+
+MEJP%``"+!(+&0!0AC78`@\0L6UY?7<-64X/L!(MT)!")\XL&BX!0`0``HP``
+M``")PHL&B9!0`0``B?;WP@#__P!T$(/L"%)6Z(KK__^#Q!"-=@"+`XN`4`$`
+M`*,`````B<*+`XF04`$``/?"`/__`'7)N`````"#Q`1;7L.)]E575E.#["R+
+M?"1`9HN',@L``&:)1"0BBP>+@$`!``"C`````"7_#P``9HF',@L``+@`````
+M9HM4)")F.9<R"P``#X3S!@``9H&_,@L``/\/#X1\!@``9HM,)")F.8\R"P``
+M#X1J!@``C;?4````B70D%(GVBZ\H"@``9O]$)")FBT0D(F8YAS8+``!W!V;'
+M1"0B```/MU0D(HN'<`H``(M<D`3WPP``"``/A+4```"+!XN`4`$``*,`````
+MB<.+!XF84`$``,=$)"0`````]\,`__\`=%:Z`````(!_*P!T2[T!````9@^V
+M3RMFB4PD#@^WPHU("(GNT^:%\W4+C4@0B>C3X(7#=!L/M]*-!%+!X`,IT(V$
+MAR@!``")1"0DZPN-=@!"9CE4)`YWQ(-\)"0`=16#[`S_="1,Z/S___^#Q!#I
+M>04``)"#[`S_="1,Z/S___^+5"0TB$(+@\00Z5T%``"0B=Z!YO\/```/M\:-
+M%,"-%)"-%%#!X@2)T8M4*B"+3"DDB50D&(E,)!R+EZP%``"++(*%[0^$(@4`
+M`/?#```@``^$=@$``(!]%($/A5`!``#&110A#[=5'HN'K`4``,<$D`````!F
+MBTT>B<AFP>@%#[?`@^$?O@$```#3YHGQ]]$AC(>P!0``9HM-'HG(9L'H!0^W
+MP(/A'[H!````T^*)T??1(4R'1(/L"`^W11Y0C8<`"0``4.C\____@\00@WU4
+M`'00@^P(C4544%?H_/___X/$$&:!?1"%``^'P0````^W11"`O#B8!```_P^$
+MKP```&:#?1!_=R4/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*(!X!/]U6NF#
+M````9H%]$($`=RL/MT40#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"BT21
+M"(!X!/]U).M0#[=%$`^VA#B8!```BY=T!0``C01`C02`BT3"5(!X!/]T+H/L
+M"%57Z/S___^#Q!"-E\P```"+A\P```"):`2)10")502)K\P```#IO0,``)"-
+M10B+3"04BU$$B4$$B4T(B5`$B0+IH@,``(GVB?!FP>@%#[?`B?&#X1^Z`0``
+M`-/BA52'1`^%@0,```^WUHN'K`4``(L$D&:!>!"%``^'H0````^W4!"`O#J8
+M!```_P^$CP```&:#>!!_=Q\/MI0ZF`0``(N/6`4``(T$TL'@`BG0BT3!*(I0
+M!.MK#[?6BX>L!0``BP209H%X$($`=R@/MT`0#[:$.)@$``"+CY`%``"-!$"-
+M!,")PL'B!2G"BT21"(I0!.LO#[?6BX>L!0``BP20#[=`$`^VA#B8!```BY=T
+M!0``C01`C02`BT3"5(I0!.L"LO^`^O]T#0^VPH"\.!X%``#_=4*)\&;!Z`4/
+MM\")\8/A'[X!````T^:%=(=$#X65`@``QD44!H/L"&H`5>C\____@\0,:@!5
+M5^C\____@\00Z7("```/ML(/MH0X'@4``(E$)"2-!$#!X`,K1"0DC82'*`$`
+M`(E$)"2+1"0<"T0D&'0(]\,```(`=1#'1"08`````,=$)!P`````BU0D)/9"
+M!@(/A&0!``#_="0<_W0D'`^WQE!2Z/S___^)\&;!Z`4/M\")\8/A'[L!````
+MB=K3XH/$$(54AT0/A>@!``"`?12!#X6%````#[=5'HN'K`4``,<$D`````!F
+MBTT>B<AFP>@%#[?`@^$?T^.)V??1(8R'L`4``(/L"`^W11Y0C8<`"0``4.C\
+M____@\0(55?H_/___X/$$(-]5`!T$(/L"(U%5%!7Z/S___^#Q!"-E\P```"+
+MA\P```"):`2)10")502)K\P```#I60$``,9$)"$`QD0D(`"+A]0````Y1"04
+M=!"-E]0```#^1"0ABP`YPG7V@'PD(0!T,8V?U````(/L#%/H_/___XU(^(/$
+M$(M3!(E#!(D8B5`$B0(YZ74%QD0D(`'^3"0A==6`?"0@``^%\````(U%"(M,
+M)!2+402)002)30B)4`2)`HGP9L'H!0^WP(GQ@^$?O@$```#3Y@FTAX0```#I
+MN@```/]T)!S_="0<#[?&4/]T)##H_/___\9$)#$`QD0D,`"+A]0```"#Q!`Y
+M1"04=!*-E]0```")]OY$)"&+`#G"=?:`?"0A`'0UC9_4````D(/L#%/H_/__
+M_XU(^(/$$(M3!(E#!(D8B5`$B0(YZ74(QD0D(`&-=@#^3"0A==*`?"0@`'4W
+M@'T4@70QC44(BTPD%(M1!(E!!(E-"(E0!(D"B?!FP>@%#[?`B?&#X1^^`0``
+M`-/F";2'A````&:+1"0B9CF',@L```^%HOG__XV'U````(G".8?4````=$>)
+M]H/L#(G64NC\____@^@(9HM('HG+9L'K!0^WVX/A'[K^____T\(AE)^$````
+M@\0,:@!05^C\____@\00B?(YM]0```!UNX/L#%?H_/___[@!````@\00@\0L
+M6UY?7<.)]E=64X/L$(M<)"!FQT0D#@``BYLD!0``O@````"-?"0.BP.+@%`!
+M``"C`````(L3B8)0`0``A<!T&XL#QX!0`0```0```(/L#%/H_/___X@$-X/$
+M$('#8`P``$:#_@%^P(!\)`X`=0RX`````(!\)`\`=`6X`0```(/$$%M>7\.0
+M55=64X/L#(ML)""Y`````&8/MD4KB<-F@_@`=AF+1"0D#[90"8UV`(G0T_BH
+M`74&068YRW?RBU0D)(-Z*`!T)8/L"(M"*(/`6%#_=13H_/___X/$"(M,)"S_
+M<2A5Z/S___^#Q!"+1"0D@\`XB<*+3"0D.4$X#X17`0``B40D")"#[`Q2Z/S_
+M__^)QH/$$(-X'``/A!4!``"`>$L`#X2'````OP````!F@WU``'1[B?:+A:P%
+M``"+'+B%VW1C9HM#$&8[1AAU668]A0!W4P^WP("\*)@$``#_=$:+50!FBT,>
+M9L'H!0^WP(T$A0`#``")@G`!``"+50!FBTL>@^$?N`$```#3X(F"=`$``,9#
+M%"&#[`1J`%-5Z/S___^#Q!"01P^W14`Y^'^'BT8<QT!@`````/9&)`1U)_Z%
+M5PP``(/L#%7H_/___X/$#&H!BT8<#[9``5!5Z/S___^#Q!")]H/L!(M&'`^V
+M0`)0BT8<#[9``5!H+`(``.C\____@\0,_W8<_[4D!0``:@'H_/___X/$#/]V
+M'/^U)`4``&H&Z/S____'1AP`````@\00BT0D)/Y("H/L"%95Z/S___^#Q!"+
+M5"0(BTPD)#E1.`^%KO[__XM$)"3'0"@`````BT4`BXA8`0``B0T`````A<ET
+M"8M%`(F(6`$``(/$#%M>7UW#C78`5U93BW0D$(M\)!2S`(!^*P!V%0^V5PF0
+MB="(V=/XJ`%U!D,X7BMW\/9'"`)U"(U'.#E'.'5F@^P,5^C\____@\00A,!T
+M1(/L#%;H_/___XG!@\00A<!T1(U'.(M0!(E(!(D!B5$$B0K^1PJ)>2C&02`%
+MQD$A`,9!20]J`6H!45?H_/___X/$$.L2@^P(#[;#4%;H_/___X/$$(GV6UY?
+MPU575E.#[!"+;"0HBWU4#[9%*U#_="0H5^C\____B<9F@TTR$+L`````@\00
+MBU0D(&8/MD(K9HE$)`IF@_@`=A8/ME<)B="(V=/XJ`%U"$-F.5PD"G?N9H/[
+M`W8@#[?#BTPD((L1BX2"T`$``*,`````J0``$`!U..L>B?8/M\.+3"0@BQ&+
+MA(+0`0``HP````"I```0`'48@^P(#[;#4/]T)"SH_/___X/$$.F8`0``C4<X
+M.4<X#X2,`0``A?8/A(0!```/MD9)QT2%/`````"+5@2+!HE0!(D"@^P$5FH&
+M5^C\____@\00@'Y+`'0BD(/L#/]T)"SH_/___\<$)`$```#H_/___X/$$(!^
+M2P!UWX-^'`!T7HM&',=`8`````#V1B0$=1:+1"0@_H!7#```@^P,4.C\____
+M@\00@^P$_W8<BU0D*/^R)`4``&H!Z/S___^#Q`S_=AR+3"0H_[$D!0``:@;H
+M_/___\=&'`````"#Q!#^3PJ#[`A6_W0D+.C\____BU0D,(L"BY!8`0``B14`
+M````@\00A=)T#(M,)""+`8F06`$``,9%)@!F@V4R[[L`````@'T?`'0=9@^V
+M51^0#[?#BW2%/(7V=`:`?B+_=7-#9CG:=^GV13*`=!*#[`A5_W0D+.C\____
+M@\00ZU6[`````(!]'P!T/8GV#[?#BW2%/(7V="7V1B0"=!^#[`3_=AR+1"0H
+M_[`D!0``:@;H_/___X!F)/V#Q!"00V8/MD4?9CG8=\5FQT4R`@"`92W]C78`
+M@\0,6UY?7<-64X/L!(M<)!"+="04BT94L0"`>RL`=A(/ME`)B=#3^*@!=09!
+M.$LK=_+&1B8,@^P(5E/H_/___X/$%%M>PXGV5U93@^P0BWPD((I$)"2(1"0/
+MNP`````/MO")]H/L#&@0)P``Z/S___^#Q!"`?"0/`W89BP>+A+#0`0``HP``
+M``"I```0`'4AZQ>)]HL'BX2PT`$``*,`````J0``$`!U"$-F@?OS`7:S@^P(
+M#[9<)!=35^C\____B3PDZ/S___^)V,'@!`'8C02'@\00]H!8"P```702@^P(
+M_[`\"P``5^C\____@\00@\006UY?PY!55U93@^P,BW0D((L^#[=4)"2+AZP%
+M``"+')"]`````,=$)`@`````9H%[).$!=2B*0R:#Z!$\`7<>BT8HB40D"(M$
+M)"P+1"0H=4F+1"0(QD`U`.L_C78`BX]8!0``C:GH%@$`9H%[$(4`=Q</MT,0
+M#[:4.)@$``"-!-+!X`(IT(TLP8M$)"P+1"0H=0?&A;``````@'L4@74&@&8(
+M]XGVBT0D+`M$)"@/A<H```#&0Q0`]D-F(`^$W`$``(MS2(7V#X31`0``]D9=
+M`G0C@WY8`'0=@WLT`'07@^P$_W,@_W,T_W98Z/S___^#Q!"-=@`/MD4^P>`(
+M`X<$"@``BX!`"```HP````")PL'J$(A64\'H&&:)1D@/MD4^P>`(`X<$"@``
+MBY!$"```B14`````9@^VPF:)1DP/ML9FB49.B=#!Z!!F#[;`9HE&4,'J&(A6
+M4@^V13[!X`@#AP0*``"+@$P(``"C`````&8/ML!FB49*Z2$!``"0@'L4@'4&
+MQD,4(8GV@^P$_W0D,/]T)#!HR`@``.C\____@\009H%[).$!=2"*0R:#Z!$\
+M`7<6@^P,_W0D%.C\____@\00Z=8```")]O9$)"L!=&F+0R0E____`#WA`0X`
+M=%H/MD4^P>`(`X<$"@``BX!`"```HP`````/MD4^P>`(`X<$"@``BX!$"```
+MHP`````/MD4^P>`(`X<$"@``BX!("```HP````"#[`A35^C\____@\00ZV>-
+M=@"`?"0K`'D=BP>+@%@!``"C`````(G!A<!T2HL'B8A8`0``ZT"`?"0H`'@Y
+M@'PD+P!Y,HL79HM#'F;!Z`4/M\"-!(4``P``B8)P`0``BQ=FBTL>@^$?N`$`
+M``#3X(F"=`$``(GV@\0,6UY?7<-75E.#[!"+7"0DBWPD((I#%(A$)`^+CU@%
+M``"-L>@6`0!F@7L0A0!W%P^W0Q`/MI0XF`0``(T$TL'@`BG0C33!@'PD#P!U
+M)6;'AI```````(![)!QU%H![)@)U$(/L"%-6Z/S___^#Q!"-=@"#>U``=!*#
+M[`B-0U!05^C\____@\00B?:#[`A35^C\____@\00@'PD#P9T.X/L"(V>``$`
+M`%/_=Q3H_/___\>&``$``("$'@#'A@@!````````B;8,`0``@\0(4_]W%.C\
+M____@\00@\006UY?PXGV55=64X/L#(M\)""%_P^$P````(M'*(LH@^P,5>C\
+M____B<.-0#R)1"08@\00A=L/A)X```"#[`Q5Z/S___^)QH/$$(7`=1&#[`A3
+M5>C\____@\00ZWV)]L9#%:QFBT<89HE#$(EK&,=#9`@```")<U"+1@B)0S3'
+M0R``"```C8>T````B4,XQD,<(,=#;`````#&0R0<QD,E`<9#)@+&0R<(QD,H
+M`(/L"&H`_W0D%.C\_____W,@_W80_W8,_W0D).C\____@\084U7H_/___X/$
+M$(/$#%M>7UW#D%575E.#[`R+;"0@BWPD)(I$)"B(1"0+BT4HBS#&1"0*`(UV
+M``^V1"0*BI0PF`0``(#Z_W13@^P$:@B-1PQ0#[;2C032P>`"*="-',4`````
+MB=@#AE@%```%G````%#H_/___X/$$(3`=!Z+AE@%``"*5"0+B)0#U@```(N&
+M6`4``(FL`^````#^1"0*>9:#Q`Q;7E]=PXGV55=64X/L#(M,)"2+032)1"0(
+M#[9``HG%P>4(BU0D"&8/MD(#`<4/M_6-5@0/MT$@.<(/C]````"+7"0(@\,(
+MQD0D!P"+5"0(C406!#G8#X:C````B@.$P'A^@^`//`9U=_9#`\!T!O9#!<!U
+M:_8#$'0PC7,(OP````"`>P0`=EB#[`0/MD,#4%;_="0LZ/S___^#QAR#Q!!'
+MB?@X0P1WX.LVC7,$OP````"`>P(`=B@/ME0D!XD4)(/L!/]T)`16_W0D+.C\
+M____@\8<@\001XGX.$,"=^&0_D0D!P^V0P&-7`,"#[?%BU0D"(U$$`0YV`^'
+M7?___X/L"&H!_W0D+.C\____@\00@\0,6UY?7<-55U93@^P$BVPD&`^V?"0<
+MBD0D)(A$)`.+12B+,+,`B?D#3"0@B$PD`HUV``^VPXJ$,)@$```\_W1*#[;0
+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
+M(O]T:X!^(0!U;8"^L0`````/A"`!```/MD8@J`)T#*@$=`BH`0^%Y@````^V
+M1B"H`G4,J`1T"*@!#X7I````#[9&(*@"#X3L````J`0/A.0```"H`0^%W```
+M`(/L"%95Z/S___^#Q!#IR@```(GVQH:Q`````)!'B?J+1"0(.%`*#X=<____
+MB?J+1"0(.%`*=5V_`````(!X"@!V4HG#@\,XD(/L#%/H_/___XG&@\00BT,$
+MB7,$B1Z)1@2),(!^(O]T'X!^(2)T!H!^(0UU$X/L"&H*5NC\____@\00ZU>-
+M=@!'B?J+1"0(.%`*=[2+5"0(QD(%_X/L"%)5Z/S___^#Q!"`?"0'``^%D```
+M`.LF5@^V1DE0_W8L_W0D%.C\____@\00ZP^#[`A65>C\____@\00B?:+1"0D
+M@WA0`'06@^P(BT0D+(/`4%!5Z/S___^#Q!")]H/L"/]T)"Q5Z/S___^#Q!"`
+M?"0'`'0Q9O^&D````&:#OI`````*=A!FQX:0``````#I.O[__XGV@^P(:@I6
+MZ/S___^#Q!")]H/$#%M>7UW#55=64X/L&(ML)"R*1"0PB$0D%XM%*(LX5^C\
+M____B<.-0#R)1"04@\00A=L/A*````"#[`Q7Z/S___^)QH/$$(7`=1"#[`A3
+M5^C\____@\00ZW^0QD,5K&:+11AFB4,0B7L8QT-D"````(ES4(M&"(E#-,=#
+M(``(``"-A;0```")0SC&0QP@QT-L`````,9#)!S&0R4!BD0D"XA#)L9#)PC&
+M0R@`@^P(:@#_="00Z/S_____<R#_=A#_=@S_="0@Z/S___^#Q!A35^C\____
+M@\00@\0,6UY?7<.)]E575E.#[`R+;"0@BT4HBS"+E>0````/MD("B</!XPAF
+M#[9"`P'##[?#@\`$/0`(```/C]T```"#[`Q6Z/S___^)QX/$$(7`#X3'````
+M@^P,5NC\____B40D&(/$$(7`=1.#[`A75NC\____@\00Z:$```"0C4<\B40D
+M!`^WVX/#!(/L!%/_M>0```"+5"04_W((Z/S____&1Q6L9HM%&&:)1Q")=QB)
+M7R"#3V02BU0D&(M""(E'-(E74(V%M````(E'.,9''"#'1VP`````QD<D'<9'
+M)1#&1R8"#[;'B$<GB%\H@\0(:@#_="00Z/S_____=R"+1"0<_W`0_W`,_W0D
+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
+M)P``?PXM("<``(/X`G<NZR*)]CV`D0``=!D]@)$``'\)/8(G``!T"^L3/8"4
+M``!U#(GVQ@-`BT0D%,8``HM$)!C&``2*$XM$)"R($&;'`8``9L<&``"+1"0@
+MQ@`@BT0D)&;'```!BA.+1"0HB!!F#[8#9@,!9@,&BU0D-&:)`HM4)!QFB0)F
+MBQ&+1"0\9HD09HL1@\(+BT0D0&:)$%M>PXUV`%575E.#[`R*1"0DB$0D"XM4
+M)""+.KL`````9H-_0``/AGH"``"-=@")V&;!Z`4/M\")V8/A'[H!````T^*%
+ME(>$````#X5*`@``#[?3BX>L!0``BS20A?8/A#8"``"]`````(M&)"7___\`
+M/>$!$``/A;(```"#?"0H``^%$P(``&:!?A"%``^'D@````^W1A"`O#B8!```
+M_P^$@````&:#?A!_=R(/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*(I(!.DX
+M`0``9H%^$($`=RL/MT80#[:$.)@$``"+CY`%``"-!$"-!,")PL'B!2G"BT21
+M"(I(!.D%`0``#[=&$`^VA#B8!```BY=T!0``C01`C02`BT3"5(I(!.GA````
+ML?_IV@```(GV9H%^$(4`#X>(````#[=&$("\.)@$``#_='IF@WX0?W<?#[:4
+M.)@$``"+CU@%``"-!-+!X`(IT(M$P2B*2`3K5F:!?A"!`'<H#[=&$`^VA#B8
+M!```BX^0!0``C01`C03`B<+!X@4IPHM$D0B*2`3K)@^W1A`/MH0XF`0``(N7
+M=`4``(T$0(T$@(M$PE2*2`3K!8UV`+'_9H%^$(4`=SH/MT80@+PXF`0``/]T
+M+(NO6`4``&:!?A"%`'<6#[:4.)@$``"-!-+!X`(IT(ULQ0#K"('%Z!8!`(GV
+MBT0D(#A(!`^%AP```(-\)"@`=`Z+5"0H9HM"&&8[1A!U<H!\)`L&=$^+5B2!
+MXO___P"!^N$!$`!T/@^V12"H`G0VJ`1T,J@!=2Z`O;``````=26!^N$!#P!T
+M.8I$)`N(1A2#[`1J`5;_="0LZ/S___^#Q!#K'HGVBE0D"XA6%(/L"`^WPU#_
+M="0LZ/S___^#Q!")]D-F.5]`#X>)_?__@'PD"X$/A&(!``"]`````(N7S```
+M`(V'S````#G0=`B018L2.=!U^6:%[0^$/`$``(V'S````(G".8?,````#X0H
+M`0``B40D!(/L#(G34NC\____B<:#Q!"#?"0H`'0ABU0D*&:+0AAF.T80=!.+
+M0P2)<P2)'HE&!(DP3>G5````9H%^$(4`#X>%````#[=&$("\.)@$``#_='=F
+M@WX0?W<?#[:4.)@$``"+CU@%``"-!-+!X`(IT(M$P2B*2`3K4V:!?A"!`'<H
+M#[=&$`^VA#B8!```BX^0!0``C01`C03`B<+!X@4IPHM$D0B*2`3K(P^W1A`/
+MMH0XF`0``(N7=`4``(T$0(T$@(M$PE2*2`3K`K'_BT0D(#A(!'4EBT8D)?__
+M_P`]X0$/`'06BE0D"XA6%(/L"%97Z/S___^#Q!#K$XV'S````(M0!(EP!(D&
+MB58$B3)-9H7M=!*+5"0$.9?,````#X7>_O__B?:#Q`Q;7E]=PU=64X/L!(MT
+M)!2*1"08B$0D`[\`````9H-^0``/A@$!``")]@^WUXN&K`4``(L<D(7;#X3@
+M````9H%[$(4`#X>(````#[=#$("\,)@$``#_='IF@WL0?W<?#[:4,)@$``"+
+MCE@%``"-!-+!X`(IT(M$P2B*2`3K5F:!>Q"!`'<H#[=#$`^VA#"8!```BXZ0
+M!0``C01`C03`B<+!X@4IPHM$D0B*2`3K)@^W0Q`/MH0PF`0``(N6=`4``(T$
+M0(T$@(M$PE2*2`3K!8UV`+'_N/\```!F@7L0A0!W#0^W0Q!F#[:$,)@$```/
+MM\"-%,#!X@(IPHN&6`4``(T$T#I,)`-U%@^V0""H`70.J`1T"K@!````ZQ.-
+M=@!'9CE^0`^'`?___[@`````@\0$6UY?PY!55U93@^P(BU0D'(M"*(LPBX[@
+M"0``B4PD!&;'1"0"``"-=@"[`````&:#?D``=D^+OJP%``")]@^WTX,\EP!T
+M-XL,EXM!)"7___\`/>$!$`!T)8ML)!QFBT489CM!$'47B=#!X`9FBTPD`HM4
+M)`1F.4P0"'0)B?9#9CE>0'>Y9CE>0'0-9O]$)`)F@WPD`A]VD@^W1"0"@\0(
+M6UY?7<.04XM4)`B+3"0,BUPD$(-Z.`!T&8M".,8`<(M".(A(`HM".,9`!P"+
+M0CB(6`Q;PXGVPXUV`%=64XM<)!"+5"04B=&!X?\!``"+@ZP%``"#/(@`=">+
+M-(@/MD85#[:;Q@```(C9T^`/M_@/M]*X__\``-/@(<*)\#G7=`6X`````%M>
+M7\.05E.#[`2+3"00BW0D%&:!?B3A`0^%GP```(I&)H/H$3P!#X>1````NO\`
+M``!F@7X0A0!W#`^W1A`/MI0(F`0``(T$4HT$@(N1=`4``(T<PH![*/]U2[`4
+M@'YH`'0&#[9&:-'@#[;`C02`C02`C02`C02`C02`C02`P>`&B4-8QT-@````
+M`(E;9(/L"(U#6%#_<13H_/___\9#*`"#Q!")]HU#%(M0!(EP!(D&B58$B3+^
+M0RGIIP```+K_````9H%^$(4`=PP/MT80#[:4")@$``"-!-+!X`(IT(N16`4`
+M`(T<PHM&)"7___\`/>$!$`!T;H![2/]U5;`4@'YH`'0&#[9&:-'@#[;`C02`
+MC02`C02`C02`C02`C02`P>`&B8/H````QX/P`````````(F;]````(/L"(V#
+MZ````%#_<13H_/___\9#2`"#Q!"-0Q"+4`2)<`2)!HE6!(DR_D-+@\0$6U[#
+MC78`4X/L"(M<)!2`>TC_=!V#[`B-@^@```!0BT0D'/]P%.C\____QD-(_X/$
+M$(/$"%O#4X/L"(M<)!2`>RC_=!J#[`B-0UA0BT0D'/]P%.C\____QD,H_X/$
+M$(/$"%O#C78`55=64X/L#(ML)""+="0D9H%^).$!#X6]````BD8F@^@1/`$/
+MAZ\```"Y_P```&:!?A"%`'<,#[=&$`^VC"B8!```C01)C02`BY5T!0``C1S"
+M@?G_````#X0[`0``_DLI@^P,C7L45^C\____B<&#Q!`Y\'5#@^P(4U7H_/__
+M_X/$$#E[%`^$#0$``,=#6``M,0''0V``````B5MD@^P(C4-84/]U%.C\____
+MQD,H`(/$$.GA````D(U3%(M#%(E(!(D!B5$$B4L4BU8$BP:)4`2)`NG`````
+MN?\```!F@7X0A0!W#`^W1A`/MHPHF`0``(T$R<'@`BG(BY58!0``C1S"BT8D
+M)?___P`]X0$0``^$@P```('Y_P```'1[_DM+@^P,C7L05^C\____B<&#Q!`Y
+M\'5'@^P(4U7H_/___X/$$#E[$'11QX/H`````"TQ`<>#\`````````")F_0`
+M``"#[`B-@^@```!0_W44Z/S____&0T@`@\00ZQR-4Q"+0Q")2`2)`8E1!(E+
+M$(M6!(L&B5`$B0*0@\0,6UY?7<-55U93@^P4BW0D*(ML)"P/MT489@^VO#"8
+M!```#[?7C032P>`"*="+EE@%``"-A,+D````4%;H_/___P^W51B#Q!"#O):8
+M`@```'08BX26F`(``(-X<`!U"\>$EI@"````````#[=%&,:$,)@$``#_@^P(
+M#[??4XV&*`D``%#H_/___XN66`4``(T$V\'@`BG8P>`#@\00@'P0/O]T#X/L
+M"`'04%;H_/___X/$$(/L"%56Z/S___\/M]>+CE@%``"-!-+!X`(IT,'@`\9$
+M""(`BY98!0``QD00(P&#Q!Q;7E]=PY!55U93@^P,BVPD(&;'1"0*@`")]@^W
+M1"0*9@^VA"B8!```9CW_``^$Y````&:!?"0*@0!W>P^WP(T$0(T$P(G"P>(%
+M*<*+A9`%``"-/)"^`````(!_,``/AJ\```"-7RB#[`Q3Z/S___^-2/B#Q!"+
+M4P2)0P2)&(E0!(D"BT$@)0#__P`]``#_`'49]D$C!'03@WD<`'0-BT$<BE0D
+M)(A0`8UV`$:)\3A/,'>TZUZ)]@^WP(T$0(T$@(N5=`4``(T4PKX`````@'H?
+M`'8_C78`B?$/ML&+3((\A<ET)XM!("4`__\`/0``_P!U&/9!(P1T$H-Y'`!T
+M#(M!'(I,)"2(2`&)]D:)\#A"'W?$_T0D)&;_1"0*9H%\)`J%``^&\O[__SFM
+M)`4``'46@^P(_W0D+('%8`P``%7HP_[__X/$$(/$#%M>7UW#4X/L$(M<)!B+
+M1"0<#[90,V8/MH0:F`0``,:$&I@$``#_#[?`4(V#>`D``%#H_/___X/$"&H`
+M_[,D!0``Z'?^__^#Q!A;PXGV5E.#[`R+="08BT0D'`^W0"1F#[:<,)@$``#&
+MA#"8!```_P^WVU.-AE`)``!0Z/S___^+EG0%``"-'%N-')N-!-T`````@\00
+M@'P0-/]T#X/L"`'04%;H_/___X/$$(/L"&H`_[8D!0``Z`+^__^#Q!1;7L-3
+MBUPD"+D`````NG@```")V(UV`(@(0$IU^L9#*/_&0S3_C4,4B4,4B4,86\.-
+M=@!55U93@^P8BWPD+(V'4`D``%#H_/___X/$$+H`````A,`/A=P```"#[`R-
+MAU`)``!0Z/S___^)Q;."@\00C78`#[;#@+PXF`0``/]U$SB?R````',1B)_(
+M````ZPF-=@!#@/N%=MJZ`````(#[A@^$CP````^VPXGJB)0XF`0```^WQ8T$
+M0(T$@(TTQ0````")\`.'=`4``%#H_/___XN7=`4``&8/ML-FB406)(/$!(!_
+M.0%U#HN'=`4``&;'1`8P__^0#[?=BX=T!0``C1Q;C1R;P>,#QD0#)@"+AW0%
+M``!FQT0#,@``@^P(:@#_MR0%``#HU/S__XG:`Y=T!0``@\00B="#Q`Q;7E]=
+MPXUV`(/L%(M,)!B+1"0<#[90!&8/MH0*'@4``,:$"AX%``#_#[?`4('!H`D`
+M`%'H_/___X/$',-3BUPD"+D`````NA@!``")V(UV`(@(0$IU^L9#2/_&0S[_
+MQD-*'XU#$(E#$(E#%%O#C78`55=64X/L&(M\)"R-AR@)``!0Z/S___^#Q!"Z
+M`````(3`#X4Q`0``@^P,C8<H"0``4.C\____B<6S`(/$$(UV``^VPX"\.)@$
+M``#_=1=F#[;#9CF'Q````',.9HF'Q````.L%D/[#>=BZ`````(#[@`^$X@``
+M``^VPXGJB)0XF`0```^WU8T$TL'@`BG0C33%`````(GP`X=8!0``4.C\____
+MBY=8!0``9@^VPV:)1!88BX=8!0``QD0&(@"+AU@%``#&1`8Y_XN'6`4``,9$
+M!CC_BX=8!0``QD0&.O^+AU@%``#&1`8\_XN'6`4``,9$!CO_BX=8!0``QD0&
+M/?^+AU@%``#&A`:R`````(N'6`4``,:$!M<```#_@^P(5^C\____BY=8!0``
+MB806Y````(/$$(!_.0%U"XN'6`4``(!,!B0!#[?%C13`P>("*<*+AU@%``"-
+M%-")T(/$#%M>7UW#B?975E.#[!R+="0LC89X"0``4.C\____@\00N@````"$
+MP`^%(`$``(/L#(V&>`D``%#H_/___XG'QD0D'X"#Q!`/MD0D#X"\,)@$``#_
+M=1:*1"0/.(;'````<Q6(AL<```#K#8GV_D0D#X!\)`^!=M"Z`````(!\)`^"
+M#X3'````#[9$)`^)^HB4,)@$```/M\>-!$"-!,")PL'B!2G"BX:0!0``NP``
+M``"Y%`T``(T$D(@80$EU^@^WQXT$0(T$P(G#P>,%*</!XP*)V@.6D`4``(U"
+M$(E"$(G8`X:0!0``@\`0B4`$B=H#EI`%``"-0AB)0AB)V`.&D`4``(/`&(E`
+M!(G:`Y:0!0``C4(HB4(HB=@#AI`%``"#P"B)0`2+AI`%``"*5"0/B%0#,X/L
+M"&H`_[8D!0``Z+7Y__^)V@.6D`4``(/$$(G0@\006UY?PY!75E.#[!R+="0L
+MC8:@"0``4.C\____@\00N@````"$P`^%RP```(/L#(V&H`D``%#H_/___XG'
+MQD0D'P"#Q!`/MD0D#X"\,!X%``#_=0Z*1"0/.$8T<Q"(1C3K"_Y$)`^`?"0/
+M`W;8N@````"`?"0/!'1^#[9$)`^)^HB4,!X%```/M\>-%$#!X@,IPKL`````
+MN5P```"-A)8H`0``C78`B!A`277Z#[?'C11`P>(#*<*-%):-@D@!``")@D@!
+M``")0`2-@E0!``")@E0!``")0`2-@F`!``")@F`!``")0`2*1"0/B((L`0``
+M@<(H`0``B="#Q!!;7E_#B?964X/L!(MT)!"-AMP```"Z`````#F&W````'0I
+M@^P,C8;<````4.C\____B<.)!"3H_/___XDT).C\____B4-,B=J#Q!")T(/$
+M!%M>PXUV`%.#[`B+7"00BTPD%(V#W````(M0!(E(!(D!B5$$B0J#>4P`=!.#
+M[`B-04Q04^C\____@\00C78`@\0(6\.-=@"#[`R+5"00C8+D````N0`````Y
+M@N0```!T&(/L#(V"Y````%#H_/___\9`"`")P8/$$(G(@\0,PU.+7"0,BQ.+
+M1"0(!>0```"+2`2)4`2)`HE*!(D1QP,`````6\.-=@"#[`R+1"00C9#L````
+MN0`````YD.P```!T#H/L#%+H_/___XG!@\00B<B#Q`S#B?93BUPD#(L3BT0D
+M"`7L````BT@$B5`$B0*)2@2)$<<#`````%O#C78`4X/L"(M$)!"-D/P```"Y
+M`````#F0_````'0E@^P,4NC\____B<.#Q!"X`````+F8````B=J-=@"(`D))
+M=?J)V8G(@\0(6\.0BT0D"(M4)`2!POP```"+2@2)0@2)$(E(!(D!PX/L#(M$
+M)!"-D`0!``"Y`````#F0!`$``'0.@^P,4NC\____B<&#Q!")R(/$#,.)]E.+
+M7"0,BQ.+1"0(!00!``"+2`2)4`2)`HE*!(D1QP,`````6\.-=@"#[`R+5"00
+MC8+T````N0`````Y@O0```!T&X/L#(V"]````%#H_/___\=`%`````")P8/$
+M$(G(@\0,PY!3BUPD#(L3BT0D"`7T````BT@$B5`$B0*)2@2)$<<#`````%O#
+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
+MM]*#X1^X_O___]/`(4271(/L"(M#2`^W0!Y05NC\____@\00C78`@^P(4U?H
+M_/___X/$$%M>7\.-=@!55U93@^P8BT0D-(E$)!2+5"0LBSJ+3"0P#[=!$`^V
+ME#B8!```C032P>`"*="+EU@%``"-+,)7Z/S___^)PXM$)#1FBW`>B?!FP>@%
+M#[?`B?&#X1^Z`0```-/B@\00A52'1`^%N````(7;#X2P````C5,\BTPD)`^V
+M014/MH_&````T^`)\,9#).'&0R4!QD,F#XA#)V;!Z`B(0RB*1"0(B$,IBX6D
+M````B4,JBX6H````B4,NBTPD)(E+2,9#%:IFBT489HE#$(M,)""+`8E#&,=#
+M(`````#'0S0`````QT-LB)P%`(/L"&H`4NC\____@\0(4U?H_/___XM$)#1F
+MBT@>B<AFP>@%#[?`@^$?N@$```#3X@E4AT2#Q!"-=@"#Q`Q;7E]=PU575E.#
+M[!B+5"0LBT(HBRA5Z/S___^)QH/$$(7`=1&+1"0@QH"Q`````>F5````D(/L
+M#%7H_/___XG'@\00A<!U&HM4)"#&@K$````!@^P(5E7H_/___X/$$.MHC5X\
+MQD8D)<9&%:N+5"0@9HM"&&:)1A");AC'1B`(````QT9D"````(M'"(E&-(/`
+M"(E&.,9&'"2)?E#'1FP`````@^P(:@!3Z/S___]J"/]W$/]W#%/H_/___X/$
+M&%95Z/S___^#Q!"#Q`Q;7E]=PU575E.#[!B+5"0LBT(HBRA5Z/S___^)QH/$
+M$(7`=1&+1"0@QH"Q`````>F=````D(/L#%7H_/___XG'@\00A<!U&HM4)"#&
+M@K$````!@^P(5E7H_/___X/$$.MPC5X\QD8DGL9&)1#&1C$@QD85JXM4)"!F
+MBT(89HE&$(EN&,=&("````#'1F0(````BT<(B48TB7Y0@\`@B48XQD8<),=&
+M;`````"#[`AJ`%/H_/___VH@_W<0_W<,4^C\____@\085E7H_/___X/$$(/$
+M#%M>7UW#55=64X/L&(ML)"R*1"0PB$0D%XM%*(LX5^C\____B<.#Q!"%P'4-
+MQH6Q`````>FF````D(/L#%?H_/___XG&@\00A<!U%L:%L0````&#[`A35^C\
+M____@\00ZWV-0SR)1"0$QD,D$H!\)`L`=`[&0R4!QD,F@,9#*$#K!,9#*"3&
+M0Q6K9HM%&&:)0Q")>QC'0R!@````QT-D"````(M&"(E#-(ES4,=#;`````"#
+M[`AJ`/]T)!#H_/___VI@_W80_W8,_W0D(.C\____@\084U?H_/___X/$$(/$
+M#%M>7UW#C78`55=64X/L&(MT)"R+1BB+`(E$)!10Z/S___^)Q[L`"```@\00
+MA<!U#,:&L0````'INP```(/L#/]T)!3H_/___XG%@\00A<!U'\:&L0````&#
+M[`A7_W0D%.C\____@\00Z8H```"-=@!F@?O_`'8%N_\```#&1R0:QD<E",9'
+M)@C&1R<`B%\HQD<I`,9'%:MFBT889HE'$(M$)`B)1Q@/M]N)7R#'1V0(````
+MBT4(B4<T`=B)1SC&1QPDB6]0QT=L`````(UW/(/L"&H`5NC\____4_]U$/]U
+M#%;H_/___X/$&%?_="04Z/S___^#Q!"#Q`Q;7E]=PY!75E.+?"00BT<HBS"#
+M[`Q6Z/S___^)PX/$$(7`=0K&A[$````!ZU&0QD`D%<9`%:MFBT<89HE#$(ES
+M&&H!:@%35NC\____@\00A,!U%X/L"%-6Z/S____&A[$````!@\00ZQ60QT-L
+M`````(/L"%-6Z/S___^#Q!!;7E_#N`0````/ME0D!(/Z%W<Y_R25A!X``(/`
+M),.#P#C#@\`0PX/`',.#P$C#@\`<PX/`/,.#P"3#@\`8PX/`%,.#P$C#@\`P
+MC78`PXUV`%93@^P$BW0D$(M<)!2`>S[_=!F#[`@/MD,^4/\VZ/S____&0S[_
+M_DXL@\00@\0$6U[#B?975E.+?"00BU0D%`^V0B"H`G0-J`1T":@!#X2U````
+MD(!Z/O\/A:H```"+!XN`&`$``*,`````B<:Q`+@!````B</3XX7S=2R(2CZ+
+M%XGP"=B)@A@!``"+!XN`6`$``*,`````B<8AWG1DBP>)L%@!``#K6D&`^1]V
+MQHL'BX`<`0``HP````")QK$`N`$```")P]/CA?-U,(U!((A"/HL7B?`)V(F"
+M'`$``(L'BX!@`0``HP````")QB'>=!&+!XFP8`$``.L'D$&`^1]VPOY'+(UV
+M`%M>7\-64X/L!(MT)!"+7"04@'LT_W09@^P(#[9#-%#_-NC\____QD,T__Y.
+M+(/$$(/$!%M>PXGV5U93BWPD$(M4)!2`>C3_#X6G````BP>+@!@!``"C````
+M`(G&L0"X`0```)")P]/CA?-U+(A*-(L7B?`)V(F"&`$``(L'BX!8`0``HP``
+M``")QB'>=&"+!XFP6`$``.M608#Y'W;&BP>+@!P!``"C`````(G&L0"X`0``
+M`(G#T^.%\W4LB$HTBQ>)\`G8B8(<`0``BP>+@&`!``"C`````(G&(=YT$(L'
+MB;!@`0``ZP9!@/D?=L;^1RR-=@!;7E_#55=64X/L#(ML)""+70"^`````&:#
+M>T``#X81`0``B?8/M]:+@ZP%``"#/)``#X3Q````#[9]!(L$D&:!>!"%``^'
+MN@````^W4!"`O!J8!```_P^$J````&:#>!!_=RL/MI0:F`0``(N+6`4``(T$
+MTL'@`BG0BT3!*`^V0`0Y^`^$@P```.F:````#[?6BX.L!0``BP209H%X$($`
+M=RT/MT`0#[:$&)@$``"+BY`%``"-!$"-!,")PL'B!2G"BT21"`^V0`0Y^'0_
+MZUD/M]:+@ZP%``"+!)`/MT`0#[:$&)@$``"+DW0%``"-!$"-!("+1,)4#[9`
+M!#GX=`WK)XUV`('__P```'4<@^P(:@`/M]:+@ZP%``#_-)#H_/___X/$$(UV
+M`$9F.7-`#X?Q_O__@\0,6UY?7<.0BTPD"(M13(72="*+022)0@R+02B)0A"+
+M02R)0A2+03")0AB+032)0AS&0@@!PXGVBTPD"(M13(72=!Z+0@R)022+0A")
+M02B+0A2)02R+0AB)03"+0AR)033#B?975E.+="00BUPD%#ES&`^$J````(![
+M%``/A8H````/MD,D@_@5=`6#^%5U?(M+3(7)='6`>0@!=6]F@7D,X0%U9XN^
+M6`4``(V7Z!8!`&:!>Q"%`'<7#[=#$`^VE#"8!```C032P>`"*="-%,</MD$.
+M@_@'=!B#^`=_!X/X!G05ZR>#^`QT'(/X#700ZQMF@V(V_>L49H-*-@+K#6:#
+M8C;WZP9F@THV")"#>U``=`Z-0U!05NC\____@\0(D&:!>R3A`0^%-`$``&:!
+M>Q"%`'=X#[=#$("\,)@$``#_=&J+CE@%``"-D>@6`0!F@7L0A0!W$P^VE#"8
+M!```C032P>`"*="-%,&`>Q0`=3T/MD,F@_@'=!B#^`=_!X/X!G05ZRB#^`QT
+M'(/X#700ZQQF@V(V_>L59H-*-@+K#F:#8C;WZP=F@THV"(GV9H%[).$!#X6H
+M````@'LF"P^%G@```(GW9HM+$`^WT0^V1BY(03G"?2,/MD8NC5#_9H'YA0!W
+M#0^WP8"\.)@$``#_=0T/M\%!.=!\Y+C_````9CW_`'18B?=FBTL0#[?1#[9&
+M+DA!.<)])@^V1BZ-4/^-=@!F@?F%`'<-#[?!@+PXF`0``/]U#0^WP4$YT'SD
+MN/\```!FB4,0QD,4@(/L"%-6Z/S___^#Q!#I&0$``,9#%`"0.7,8="2+0TR%
+MP'0=@'@(`74*4U;H_/___X/$"(U#3%!6Z/S___^#Q`B#>U0`=`V-0U105NC\
+M____@\0(@^P(4_]S&/]3;(/$$&:!>R3A`75;BD,F@^@1/`%W4;G_````9H%[
+M$(4`=PP/MT,0#[:,,)@$``"!^?\````/A)0```"-!$F-!("+EG0%``"-!,*`
+M>"D`=7^`>#3_='F#[`A05NC\____@\00ZVJ)]KG_````9H%[$(4`=PP/MT,0
+M#[:,,)@$``"-!,G!X`(IR(N66`4``(T4PHM#)"7___\`/>$!$`!T+X'Y_P``
+M`'0G9H%[).$!=0N*0R:#Z!$\`785D(!Z2P!U#H/L"%)6Z/S___^#Q!"06UY?
+MPU=64XMT)!"+?"049HM7'HG09L'H!0^WV(G1@^$?N/[____3P(G!(42>1&:!
+M^O\/=$</M\*+EJP%``"#/((`=#C'!((`````(8R>L`4``(/L"%"-A@`)``!0
+MZ/S___^#Q`A75NC\____@\0(5U;H_/___X/$$(UV`%M>7\-64X/L$(M$)!R+
+MF.`)```%``D``%#H_/___XG&#[?0P>(&`=J+1"0DB1"#Q!"[`````+E`````
+MB="-=@"(&$!)=?H/M\:#Q`1;7L.05U93@^P$BWPD%(I$)!R(1"0#O@````"X
+M`````(-_*`!T0NL$B<;K)8M/*+(`C78`#[;"@WR!/`!T#8M$@3R*7"0#.%A)
+M=-U"@/H$=N.+1RAF@7@DA0!W!HGPA?9U!K@`````D(/$!%M>7\.055=64XM\
+M)!1F#[9<)!P/MD0D&,'@"`'#O0````"`?QP`#X2]````@W\X``^$LP```/9'
+M9`EU!;T!````L0"^(!8``)`/MM&)V&8C!-9F.P36#X6!````@'S6!0-T!X!\
+MU@4'=0L/ML&)ZCA4Q@1U:,9'%"`/MMD/MD3>!E`/MD3>!5!7Z/S___^+5SB*
+M1-X'B$(-@\0,@WPD(`!T*XM$)""+&(MP!(M'.(EP`XM'.(`(@/9'9@1T$(7V
+M=`R+1SB)6`B+1SB`('^+5SB*1QR#Z`>(0@?K#HGV08#Y#P^&8O___XGV6UY?
+M7<.-=@!55U93@^P,BWPD((MT)"1F@7X0A0`/AXD````/MT80@+PXF`0``/]T
+M>V:#?A!_=R`/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*(I(!.M7D&:!?A"!
+M`'<H#[=&$`^VA#B8!```BX^0!0``C01`C03`B<+!X@4IPHM$D0B*2`3K)@^W
+M1A`/MH0XF`0``(N7=`4``(T$0(T$@(M$PE2*2`3K!8UV`+'_NO\```!F@7X0
+MA0!W#0^W1A!F#[:4.)@$``"`^?\/A),````/ML&`O#@>!0``_P^$@@```&:!
+M^O\`='N`?A0&='4/MIPX'@4``(T$6\'@`RG8C9R'*`$```^WTHT$TL'@`BG0
+MBY=8!0``C2S"@'XF`74H@^P,:@KH_/___X/$"%97Z/S___^#Q`QJ`E53Z/S_
+M__^#Q!#K'XUV`(/L#&CT`0``Z/S___^#Q`A65^C\____@\00B?:#Q`Q;7E]=
+MPU=64XMT)!B+1"00BQB#[`Q3Z/S___^)PH/$$(7`=&G&0"3AQD`E`8GPB$(F
+MQD(G#XM$)!1FBT`89HE"$(E:&,="(`````#'0C0`````QT)L`````(/L"%)3
+MZ/S___^#Q!")\#P!=1&#[`QJ!>C\____@\00ZQ*)]H/L#&A0PP``Z/S___^#
+MQ!!;7E_#5E.#[`2+="00BUPD%&:!>Q"%``^'BP````^W0Q"`O#"8!```_W1]
+M9H-[$']W(@^VE#"8!```BXY8!0``C032P>`"*="+1,$HBD@$ZUF-=@!F@7L0
+M@0!W*`^W0Q`/MH0PF`0``(N.D`4``(T$0(T$P(G"P>(%*<*+1)$(BD@$ZR8/
+MMT,0#[:$,)@$``"+EG0%``"-!$"-!("+1,)4BD@$ZP6-=@"Q_[+_9H%[$(4`
+M=PL/MT,0BI0PF`0``(#Y_W08#[;!@+PP'@4``/]T"X#Z_W0&@'L4!G4D@WM0
+M`'0.C4-04%;H_/___X/$")"#[`A35NC\____@\00ZVF0#[;!#[:,,!X%``"-
+M!$G!X`,IR(V,AB@!```/MM*-!-+!X`(IT(N66`4``(T$PH![%`!T$(/L!&H!
+M4%'H_/___X/$$)"#>U``=`Z-0U!05NC\____@\0(D(/L"%-6Z/S___^#Q!"-
+M=@"#Q`1;7L.)]E575E.#[!B+1"0LBRA5Z/S___^)QH/$$(7`#X2+````@^P,
+M5>C\____B<>#Q!"%P'42@^P(5E7H_/___X/$$.MJC78`C5X\QD8DX<9&)0'&
+M1B8.BU0D)&:+0AAFB4809H-B-/>+5"0@BP*)1AC'1B``"```BT<(B48TB7Y0
+MQT9L/*X%`(/L"&H`4^C\_____W8@_W<0_W<,4^C\____@\085E7H_/___X/$
+M$(/$#%M>7UW#D%=64XM\)!"+="04BT<HBQB#[`Q3Z/S___^)PH/$$(7`=#[&
+M0"0;QD`E`8GPB$(H9HM'&&:)0A#&0F@/B5H8QT(@`````,="-`````#'0FP`
+M````@^P(4E/H_/___X/$$%M>7\-75E.+?"00BT<HBS"#[`Q6Z/S___^)PX/$
+M$(7`=&R#[`Q6Z/S___^)PH/$$(7`=1C&A[$````!@^P(4U;H_/___X/$$.M$
+MB?;&0R0`9HM'&&:)0Q#&0V@/B7,8QT,@`````,=#-`````"+0@B)0SC&0QPD
+MB5-0QT-L`````(/L"%-6Z/S___^#Q!!;7E_#B?955U93@^P0BVPD*(M<)"S&
+M0R,!QD,B`%-J!E7H_/___X/$$(-[+`!T$8M3#(M#"(E0!(D"BT,L_D@P@'M+
+M`'0A@^P,_W0D+.C\____QP0D`0```.C\____@\00@'M+`'7?@[O@`````'0>
+M@^P$:@$/MH/5````4/^SX````.C\____@\00C78`@WLL`'06@^P$:@$/MD-)
+M4/]S+.C\____@\00D(-['``/A*@```"+<QR#?G``#X6-````@WYT``^%@P``
+M`/9#)`1U+(M$)"#^@%<,``"#[`Q0Z/S___^#Q`QJ`8M#'`^V0`%0_W0D+.C\
+M____@\00@^P$BT,<#[9``E"+0QP/MD`!4&A"`@``Z/S___^#Q`S_<QR+1"0H
+M_[`D!0``:@'H_/___X/$#/]S'(M$)"C_L"0%``!J!NC\____@\00C78`QT,<
+M`````,=&8`````"#>S``=`^+4S`/MD-)QT2"/`````"+4P2+`XE0!(D"_DT*
+M@^P(4_]T)"SH_/___X/$$(!]!?]T5K\`````@'T*`'8WC74X@^P,5NC\____
+MB<.#Q!"+1@2)7@2),XE#!(D8@'LB_W4*1XGX.$4*=]?K"8GX.$4*=Q:)]L9%
+M!?^#[`A5_W0D+.C\____@\00@\0,6UY?7<,/MD0D"(T4P,'B`RG"C120C125
+M=$4``(M$)`2)$,.)]E93@^P$BW0D%(I$)!B(1"0#BUPD$+@`````B?&)VH7V
+M=`B)]H@"0DEU^HDSC8:,NO__P>@"NEFV^7+WXHG0P>@'B$,$BD0D`SA#!'8#
+MB$,$L0"`>P0`=B$/MM'&1!,'_XT$TL'@`RG0C02"QH2#V$4``/U!.$L$=]_&
+M0P8`QD,%`+$`D`^VP8T4@(T4T(V4DY`Q``#&0@<!B$H&08#Y'W;C@\0$6U[#
+MD%575E.#[`R+;"0DBW0D(+\`````@'X$`'8^B?:)^`^VV(T$V\'@`RG8C02#
+MC82&T$4``(!X"/UT%X/L!&H(55#H_/___X/$$(3`=`2)V.L-1XGX.$8$=\2X
+M_P```(/$#%M>7UW#C78`4X/L$(M<)!C_="0<4^C\____@\00N@D````\_W06
+M#[;0C032P>`#*="-!((/MI2#>D4``(G0@\0(6\.055=64X/L#(M<)"2-@Y``
+M``")WXNSF````(!^!@`/A$$!``"#[`A05NC\____B<6#Q!`\_P^$*@$```^V
+M0P&#^`%T98/X`7\,A<!T(>D3`0``C78`@_@0#X2#````/9`````/A,4```#I
+M]P```("^ES$````/A>H```#&AI<Q```!_DX&@^P(:@!J`&H`B>H/ML)0_W0D
+M.%;H_/___X/$(.F_````C78`@+Z7,0````^%KP```,:&ES$```'^3@:#[`AJ
+M`&H`:@&)Z@^VPE#_="0X5NC\____@\0@Z80```"Q`8GV#[;!C12`C130C826
+MD#$``(GJ.%`$=0F*0`4Z1PET!Y!!@/D?=MK^3@:#[`A7#[9'"5!J$(GJ#[;"
+M4/]T)#A6Z/S___^#Q"#K-P^V@Z(```"-%("-%-#&A):7,0```?Y.!H/L"&H`
+M:@!HD````(GJ#[;"4/]T)#A6Z/S___^#Q""#Q`Q;7E]=PU575E.#[`2+;"0<
+MBD0D)(A$)`.+5"0H9HD4)(M<)!B_`````(GY#[;!C11`B='!X08!RHT44#EL
+MTQ0/A8P```"Y`````(GX#[;PC01VB<+!X@8!T(T$1HT4Q0````")]@^WP8T$
+M0(T$PHU$&""`>!``=`:`>!#P=4L/M]&-%%*-!':)P<'A!@'(C01&C10"C133
+MB6H<BTPD((E*((U"$(L,)&:)2!:*3"0#B$@4BTPD+(L!B4(HBT$$B4(LQD(P
+M_^L*B?9!9H'Y@0!VE$>)^#P##X9-____@\0$6UY?7<.055=64X/L#(ML)"`/
+MMGPD*(GKC;7T,```QH67,0```+H`````N9````")\)"($$!)=?K&1@$`Q@9`
+MQX.0,0``J+0%`(FKC#$``(GX#[;0C032P>`#*="-!(*-!(.+D-!%``")DX0Q
+M``"+@-1%``")@X@Q``"#[`B-@_0P``!0_W0D,.C\____@\0<6UY?7<.055=6
+M4X/L#(ML)"`/MGPD*(GKC;7T,```QH67,0```+H`````N9````")\)"($$!)
+M=?K&1@$!Q@9`QX.0,0``J+0%`(FKC#$``(GX#[;0C032P>`#*="-!(*-!(.+
+MD-!%``")DX0Q``"+@-1%``")@X@Q``"#[`B-@_0P``!0_W0D,.C\____@\0<
+M6UY?7<.055=64X/L#(I,)"B*1"0LB$0D"XM\)""S`0^VP8T4P(TLU0`````I
+MQ8TLJ)`/ML.-%("-%-"-A)>0,0``@'@'`0^%M@```(A(!(I4)`N(4`7&0`<`
+M#[9P!HT$MHT$QHVTA_0P``"Y`````+J0````B?"-=@"("$!*=?K&1@$0Q@9`
+MBD0D"XA&"0^VPXT,@(T,R(T,CXV9D#$```^V0P:-%("-%-"-%)?'@I`Q``"H
+MM`4`BT0D((F"C#$``(T4KXN"T$4``(F!A#$``(N"U$4``(F!B#$``(/L"`^V
+M0P:-%("-%-"-E)?T,```4O]T)##H_/___X/$$.L2C78`0X#['P^&)O___[@!
+M````@\0,6UY?7<.055=64X/L#(I$)"R(1"0+BVPD,(M\)""S`8GJ#[;6B50D
+M!(GV#[;#C12`C130C127C8*0,0``@'@'`0^%J````,9`!P")NHPQ```/MD`&
+MC12`C130C;27]#```+D`````NI````")\)"("$!*=?K&1@&0Q@9`BDPD!(A.
+M!HGHB$8'BE0D"XA6"8M,)#2+`8E&$(M!!(E&%`^VPXT4@(T4T(T4E\>"D#$`
+M`*BT!0"+1"0@B8*,,0``BTPD*(M!7(F"A#$``(M!8(F"B#$``(/L"('"]#``
+M`%+_="0PZ/S___^#Q!#K$HUV`$.`^Q\/AC+___^X`0```(/$#%M>7UW#D%57
+M5E.#[`R+;"0@BD0D+(A$)`N+?"0PB>Z-G?0P``"Y`````+J0````B=B0B`A`
+M2G7ZQD,!$\8#0(GZ#[;&B$,&B%,'BE0D"XA3"<>&D#$``*BT!0")KHPQ``"+
+M5"0HBT)<B8:$,0``BT)@B8:(,0``@^P(C8;T,```4/]T)##H_/___X/$'%M>
+M7UW#BT0D"`^V5"0,9HM,4'!!9HE,4'!F#[9``@'(#[?`PY"+3"0$N@$```"-
+M=@"-!)*-!,*`O(&7,0```74$B=##D$*#^A]VYKC__P``PU.#[`B+7"00BD0D
+M%(A$)`.*3"08B$PD![H!````C78`C022C03"C82#D#$``(I,)`,X2`1U$HI,
+M)`<X2`5U"<9`!P'K"8UV`$*#^A]VTH/$"%O#D%575E.#[#R*1"18B$0D+XI,
+M)%R*5"1@B%0D+HML)%"+?"1D#[;0C032P>`#*="-!(*`O(7810``_74%L?V-
+M=@`/ML&#^!`/A+0"``"#^!!_%X7`#X2;````@_@!#X0T`0``Z4$)``"0/>(`
+M```/A+$(```]X@```'\2/9`````/A(\'``#I'@D``(GV/?\````/A1$)```/
+MME0D+XT$TL'@`RG0C02"QH2%V$4``/^`O9<Q```!=22#[`12_W0D7/]T)%SH
+M_/___X/$$(7`#X74"```_D4&Z<P(```/MD0D+\9$!0<!BU0D5(E4A0SIM0@`
+M`)"-G?0P``"`O9<Q```!=54/MDPD+XT$R<'@`RG(C02!C42%`(I3"8B0=D4`
+M``7010``BE,*@^(!B%`)QD`(`(/L!%'_="1<_W0D7.C\____@\00A<`/A5H(
+M``#^10;I4@@``(GV#[9$)"_&1`4'`8M4)%2)5(4,Z3D(``#&1`4'_X/L"&H`
+M:@!H_P```%#_=(4,_W0D;.C\____@\0@Z1((``"_`````(V-]#````^V5"0O
+MB=:-!-+!X`,IT(T$@HU<A0"*03*(@\9%``!FBT$P9HF#Q$4``(M!*(F#M$4`
+M`(M!+(F#N$4``(M!#(F#A$4``(M!$(F#B$4``(V3E$4``(M!%(F#E$4``(M!
+M&(E"!(M!'(E""(M!((E"#(M!)(F#K$4``,:#V$4```&`?08?#X1^!P``@+MV
+M10````^$F0````^V1"0OC13`C1S5`````"G#C1R8B5PD*(E$)`R0B?H/ML)0
+M5O]T)%S_="1<Z/S___^#Q!"%P'4O1_Y%!HT$]L'@`RGPC02&C42%`(GZ.)!V
+M10``=0G&@,=%````ZQN(E)W'10``ZQ*)^HM$)"B(E(7'10``ZR.-=@"`?08?
+M=!J+="0,C03VP>`#*?"-!(:)^CB4A79%``!WA,:%ES$```&R`(!]!``/AL4&
+M``"0#[;"@'P%!P$/A'W^__]".%4$=^SIJP8``(UV`,9$)"?_BT<8B40D,(U,
+M)#"+1QR)000/ME0D+XT$TL'@`RG0C02"C72%`(V&T$4``,9`"!#V1PQP#X26
+M`P``@[[<10```'1MBE@*@^P$:@A1BX;<10``@\!<4.C\____@\00A,!U3O9'
+M#P]T2(NVW$4``(7V=#Z`?F4`="T/MMM35E7H_/___XU7&%(/M\!04U;_="1P
+M_W0D<.C\____BEYFBW9H@\0DZP6^`````(7V=<2)]@^V3P_VP0T/A#L!```/
+MME0D+XT$TL'@`RG0C02"C12%`````(V$*G!%``"`>`0?#X<3`0``BD`$B$0D
+M)?;!"'02#[;`P>`$`=#&A"CH1P``!NLC#[9,)"4/ME0D+\'A!(T$TL'@`RG0
+MC02"C02!QH0HZ$<```</ME0D)0^V1"0OP>($C0S`P>$#*<&-#(C!X0(!R@'J
+MC9K@1P``QD,)`(I'#XA#"XM$)#")@O!'``"+1"0TB8+T1P``BD<)B$,*BE<-
+M@^(/BH0I>D4``#C0=@*(T(C"@^(/BD,,@^#P"="(0PP/MDPD)0^V5"0OP>$$
+MC032P>`#*="-!(+!X`(!P8V,*>!'``"*5RF#X@^*A"AZ10``.-!V`HC0B,+!
+MX@2*00R#X`\)T(A!#`^V5"0OC032P>`#*="-!(+^A(5T10``Z=L!``"-=@#V
+M1P\"#X3.`0``@^P(C40D.%!5Z/S___^(1"0V@\00//\/A4T!``#&1"0G`(!]
+M!`!V,`^V5"0GC032P>`#*="-!(*-A(7010``@'@(_W03@'@(_70-_D0D)XI$
+M)"<X101WT`^V5"0GC032P>`#*="-!(*Y`````+ID````C82%=$4``)"("$!*
+M=?H/ME0D)XT$TL'@`RG0C02"C42%``^V5"0OC1S2P>,#*=.-')J-7)T`C9-T
+M10``B9#<10``BY/010``B9#(10``BY/410``B9#,10``BU0D5(F0Y$<``(N3
+MX$4``(F0X$4``,:`V$4``/^-D'!%```/MG(+BD\)B(PP?$4``/Y""XI/#8/A
+M#XJ#>D4``#C(=@*(R(A""@^V5"0GC032P>`#*="-!(*-1(4`C8C010``BU0D
+M,(F0T$4``(M4)#2)402*5P^(D'=%``"*1"0NB$$*BD4%.D4$=03&104`_D4%
+MZU/&1P<`Z3@#```/MD0D+XT,P,'A`RG!C0R(#[94)":-!-+!X`,IT(T$@HU<
+MA0"-@W1%```YA(W<10``=!>-@W!%```/MD@+BE<)B)0+?$4``/Y`"X!\)";_
+M=1,/MD0D)\9$!0<!BU0D5(E4A0R0#[9'"5`/MEPD,U-5Z/S___^-!-O!X`,I
+MV(T$@X/$#("\A<=%````#X2S````@'T&'P^$G0(```^V7"0OC03;P>`#*=B-
+M!(/!X`*-%"B)5"0@@<)P10``B50D'`'HB40D$.MCD(MT)!#&AMA%```0C;[`
+M10``#[9'!U!3_W0D7/]T)%SH_/___X/$$(7`#X5!`@``_D4&#[9'!T`/MI9V
+M10``.=`/A.G^__^-!-O!X`,IV(T$@_Z$A<=%``"`?08?#X0.`@``BU0D((J"
+MQT4``(M4)!PZ0@9RB^GV`0``B?:`?08`#X7J`0``@^P(:@!J`&B0````#[9$
+M)$-0_W0D;/]T)&SH_/___X/$(.G#`0``QD0%!_^#[`AJ`&H`:/\```!0_W2%
+M#/]T)&SH_/___\9$)#<!@\0@Z>$```"-=@#&1"07`,=$)!@`````BU0D&(T$
+M4HG"P>(&`="+5"08C01"BU0D5#E4Q11U?;L`````BU0D&(T$4HG"P>(&`="+
+M5"08C01"C3S%`````(UV`(T$6XT$QXT,*(UQ((!^$/]U/H!]!A\/A"@!``"#
+M[`B-02A0C5$0#[="%E`/MD(44/]Q(/]T)&S_="1LZ/S___^#Q""%P'4)_D4&
+MQD80\(GV0X'[@0```':G_T0D&(-\)!@##X95____@'T&``^%T@```+(`@'T$
+M`'84#[;"@'P%!P$/A/G^__]".%4$=^R`?"07``^%JP```(/L"&H`:@!HX@``
+M``^V1"1#4/]T)&S_="1LZ/S___^#Q"#IA````+,`@'T$`'8K#[;3C032P>`#
+M*="-!(*-A(7010``@'@(_70*@'@(_W0$QD`(_D,X701WU0^V5"0OC032P>`#
+M*="-!(*+M(7@10``LP`/ML.-%$")T<'A!@'*C110C535`(U"$(!X"`%U$\9`
+M"`"#[`C_<A3_="1<_]:#Q!!#@/L#=LJ)]H/$/%M>7UW#55=64X/L!(M\)!R+
+M;"0DBD0D((A$)`.+3"08QD4`_K,`O@````"`>00`=C8/MM.-!-+!X`,IT(T$
+M@HT$@3FXY$<``'47B?(Z5"0#=0N*@-A%``"(10#K"D:-=@!#.%D$=\J#Q`1;
+M7E]=PXGV55=64X/L#(ML)""*1"0LB$0D"XGNBD4%.D4$=03&104`#[9^!;,`
+M#[;#C11`B='!X08!RHT44(T$UHM4)"0Y4!1U1<9`&`&_`````(!^!`!V:(GX
+M#[;0C032P>`#*="-!(*-!(:+5"0D.9#D1P``=0V*@-A%``"#P`,\`78\1XGX
+M.$8$=\SK,@^VPXT40(G1P>$&`<J-%%"-!-:#>!0`=0^+5"0DB5`4QD`8`>L,
+MB?9#@/L##X9M____#[;#C11`B='!X08!RHT44+L`````N0(,``"-1-8<B!A`
+M277ZB?@/MM"+1"0DB426#(T$TL'@`RG0C02"N0````"Z9````(V$AG1%``"(
+M"$!*=?J)^`^VT(T$TL'@`RG0C02"N0````"Z``(``(V$AN1%``")]H@(0$IU
+M^HGZ#[;*C03)P>`#*<B-!(&-!(:+?"0DB;CD1P``BU0D,(F0X$4``(V8T$4`
+M`,9#"/_'@-Q%````````BWPD*(L7B9#010``BU<$B5,$BE0D"XB0>D4``(/L
+M"&H`:@!H_P```%'_="0\5>C\_____D8%@\0L6UY?7<.055=64XML)!B+="04
+MOP````"`?@0`#X:6````B?@/MM"-!-+!X`,IT(T$@CFLAN1'``!U<;,!#[;#
+MC12`C130C826D#$``(GZ.%`$=03&0`<!0X#['W;?B?@/MM"-!-+!X`,IT(T$
+M@HT$AL>`Y$<```````"Y`````+ID````C8!T10``B`A`2G7ZB?@/MM"-!-+!
+MX`,IT(T$@L:$AMA%``#]_DX%1XGZ.%8$#X=J____OP````")^@^VPHT40(G1
+MP>$&`<J-%%"-!-8Y:!1U.,=`%`````#&0!@`LP")^@^VPHT40(G1P>$&`<J-
+M%%#!X@.)]@^VPXT$0(T$PL9$,#``0X#[@7;L1XGX/`-VIUM>7UW#55=64X/L
+M'(M,)#2+1"1`BE0D/(A4)!N+?"0PO0````"S`(!\)#@!#X7W````A<`/A-0`
+M``")1"04@'\$`'8ID(GH#[;0C032P>`#*="-!((YC(?D1P``=0<Z7"0;=`E#
+M18GJ.%<$=]B)Z@^VPHT<P,'C`RG#C1R8C1R?C8-T10``@^P$:F10_W0D(.C\
+M____O@````"#Q!"`NW1%````=&B)Z`^VT(T$TL'@`RG0C02"P>`"B40D#(V4
+M.'!%``")5"00D(GR#[;"P>`$BU0D%(T<$(U+9`-$)`P!^(V0Z$<``(N`Z$<`
+M`(E#9(M"!(E!!(M""(E!"(M"#(E!#$:)\(M4)!`X0@1WNXGH#[;0C032P>`#
+M*="-!((/MH2'=$4``.LZD+T`````O@````"`?P0`=B2)\`^VT(T$TL'@`RG0
+MC02".8R'Y$<``'4#18GV1HGR.%<$=]R)Z@^VPH/$'%M>7UW#D)"05E.+1"0,
+MBQ"+,K$`@'HK`'84#[98"8GVB=C3^*@!=09!.$HK=_*`^0-V$0^VP8N$AM`!
+M``"C`````.L/#[;!BX2&T`$``*,`````J0``$``/E<`/ML!;7L.-=@!55U93
+M@^P,BT0D)(M4)""+*HM]`,9`(0#&0"`%QD`C!HE0*,9$)`<`QT0D"`````"S
+M`(!]*P!V&(M,)"`/ME$)B="(V=/XJ`%U!D,X72MW\(#[`W83#[;#QX3'``(`
+M`"P```#K$8UV``^VP\>$QP`"```L````@^P,:!`G``#H_/___X/$$(#[`W85
+M#[;#BX3'!`(``*,`````#[;PZQ.0#[;#BX3'!`(``*,`````#[;P"70D"(#[
+M`W81#[;#QX3'``(``"0```#K#Y`/ML/'A,<``@``)````(/L#&@0)P``Z/S_
+M__^#Q!"`^P-V&0^VPXN$QP0"``"C`````(G&@>;___\`ZQ</ML.+A,<$`@``
+MHP````")QH'F____`(GPP>`("40D"(#[`W83#[;#QX3'``(``"````#K$8UV
+M``^VP\>$QP`"```@````@^P,:!`G``#H_/___X/$$(#[`W85#[;#BX3'!`(`
+M`*,`````B<;K$XGV#[;#BX3'!`(``*,`````B<:!?"0(`0%IEG49BT0D((!(
+M"`:)\,'H$#Q0#Y3`#[;`ZTJ)]H%\)`@!`0``=1*)\,'H$#Q0#Y3`#[;`ZR^-
+M=@"#[`QHB!,``.C\____@\00_D0D!X!\)`<$#X9!_O__B?#!Z!`\4`^4P`^V
+MP(/$#%M>7UW#5E.#[`2+="00BQY6Z/S___^#Q`2$P'44QD8%_X/L"%93Z/S_
+M__^#Q!#K79"Q`(![*P!V$@^V5@F)T-/XJ`%U!D$X2RMW\H/L#%/H_/___XG!
+M@\00A<!T,(U&.(M0!(E(!(D!B5$$B0K^1@J)<2C&02`%QD$A`,9!20]J`6H!
+M45;H_/___X/$$(/$!%M>PXGV55=64X/L#(ML)""+="0DBWT`NPH```"0@^P(
+M5E7H_/___X/$$(3`=1.#[`QHZ`,``.C\____@\002W7<L0"`?RL`=A(/ME4)
+MB=#3^*@!=09!.$\K=_*+5@2+!HE0!(D"_DT*@^P(5E?H_/___X/$$/9%"`)T
+M2H-]*`!U&8/L#%?H_/___X/$$(7`#X1H`0``B44HZP.+12B).(EH5,9`*@#&
+M0"L`QD`F`&:#2#($@^P(4%?H_/___X/$$.DX`0``@WTH``^$S0```(/L"(M%
+M*(/`6%#_=Q3H_/___X/$"/]U*%?H_/___X/$$(U%.(G".44X#X27````B<.0
+M@^P,4NC\____B<:#Q!"#>!P`=&6+0!S'0&``````]D8D!'4E_H=7#```@^P,
+M5^C\____@\0,:@&+1AP/MD`!4%?H_/___X/$$(/L!/]V'/^W)`4``&H!Z/S_
+M__^#Q`S_=AS_MR0%``!J!NC\____QT8<`````(/$$/Y-"H/L"%97Z/S___^#
+MQ!")VCE=.`^%;/___\=%*`````"`?0H`=!:#[`R-13A0Z/S___^)QOY-"H/$
+M$.L.@^P,5^C\____B<:#Q!"%]G0SC44XBU`$B7`$B0:)5@2),OY%"HEN*,9&
+M(`7&1B$`QD8C!L9&(@.#[`A65^C\____@\00@\0,6UY?7<-55U93@^P,BWPD
+M((ML)"2*1"0HB$0D"XI$)"R(1"0*BP>)1"0$N@````"^`````(!_"@!V-XU?
+M.(/L#%/H_/___XG"@\00BT,$B5,$B1J)0@2)$#EJ+'4,BD0D"SA"270+C78`
+M1HGP.$<*=\R)\#A'"G0M@'PD"E!U)L9"(P;&0B(%QD(@!\9"(0"):BR)>BB#
+M[`A2_W0D$.C\____@\00@\0,6UY?7<-55U93@^P,BVPD((M]`,9$)`O_LX"^
+M_____X#[A7<+#[;##[:T.)@$``")\#S_=$@/ML"+CY`%``"-!$"-!,")PL'B
+M!2G"C025`````#EL"`AU)8/L!&H(_W0D+`.'D`4``%#H_/___X/$$(3`=`F)
+M\(A$)`OK!Y!#@/N!=I</MD0D"X/$#%M>7UW#D%575E.!["P"``"*A"1(`@``
+MB$0D'XN4)$`"``"+4@B)5"08BRJ+C"1``@``BDDPB$PD%XN$)$`"``"#P"B)
+MPHN,)$`"```Y02@/A&<"``"`?"07``^$7`(``(E$)`R)]H/L#%+H_/___XUP
+M^(/$!(U$)"Q0#[9$)"]0:@'_="0P_[0D8`(``.C\____OP````"#Q""`?"0@
+M``^&X0```(U6"(E4)!")]H/L!&H(C8:<````4(GY#[;!P>`$C50D+(T<$(U#
+M;%#H_/___X/$$(3`#X29````C5-@BD((@^`/B(:R````9HM.-('AW_W__XG(
+M@\@09HE&-(I"",#H!#P)=0F)R(/(,&:)1C2)^0^VP<'@!(J$!(@```#`Z`0\
+M"G4&9H%.-``"BX0D0`(``(/`*(M0!(M,)!")2`2)1@B)402)"HI&)*@"=#6#
+MX/V(1B2#?AP`="F#[`3_=AS_M20%``!J!NC\____@\00ZQ&01XGX.$0D(`^'
+M*____^L-D(GZ.%0D(`^'"P$``(/L!%9J!O]T)"3H_/___X/$$(!^2P!T'H/L
+M#%7H_/___\<$)`$```#H_/___X/$$(!^2P!UXH.^X`````!T'8/L!&H!#[:&
+MU0```%#_MN````#H_/___X/$$(GV@WXL`'06@^P$:@$/MD9)4/]V+.C\____
+M@\00D(-^'`!T98M&',=`8`````#V1B0$=27^A5<,``"#[`Q5Z/S___^#Q`QJ
+M`8M&'`^V0`%05>C\____@\00@^P$_W8<_[4D!0``:@;H_/___X/$#/]V'/^U
+M)`4``&H!Z/S____'1AP`````@\00BU8$BP:)4`2)`HM,)!C^20J+A"1``@``
+M_D@P@^P(5E7H_/___X/$$/Y,)!>+5"0,BXPD0`(``#E1*'0+@'PD%P`/A:K]
+M__^!Q"P"``!;7E]=PXUV`%575E.!["@"``"+O"1``@``BX0D/`(``(L`B40D
+M&,9$)!<`C5PD'%,/MK0D3`(``%9J`?^T)$@"``!7Z/S___^#Q!Q65_^T)$0"
+M``#H_/___XN$)$@"``"+4"B-:OB#Q!"+A"0X`@``@\`H.<)T*XG"C78`@'TA
+M#70&@'TA(G40QD0D"P'&12(%QD4C!.L+D(M%"(UH^#G0==K&1"0*`(!\)!``
+M#X;L`0``BYPD.`(``(/#*(N4)#@"``"+0BB-</@YV'0U#[9$)`J)Q\'G!)"#
+M[`1J"(V$/(0```!0C8:<````4.C\____@\00A,!U"HM&"(UP^#G8==:-1@@Y
+MV`^%?P$``,9$)`L`@^P,_W0D&.C\____B<:#Q!"%P`^$B`$``(N$)#`"``#^
+M0`K&1B(%QH:P`````,9&(P1FQX:0``````#&AI(`````QT9````%`,=&1```
+M```/MD0D"L'@!(U$!'"*4`2(5B"*4`6(5B&+E"0P`@``B58HBE`(@^(/B):R
+M````9HM.-('AW_W__XG*@\H09HE6-(I`",#H!#P)=0F)R(/(,&:)1C0/MD0D
+M"L'@!(I$!'C`Z`0\"G4&9H%.-``"BX0D.`(``(E&+`^V1"0*P>`$C50D$`'0
+MBE!FB%9)BU!LB9:<````BT!PB8:@````B9:4````B8:8````BX0D.`(``/Y`
+M,(N$)#`"``"#P#B+4`2)<`2)!HE6!(DRC48(BU,$B4,$B5X(B5`$B0(/MD8@
+MJ`)T)Z@$=".H`70?5@^V1DE0_[0D0`(``/^T)#P"``#H_/___X/$$.LAD`^V
+M1B"H`G08J`1T%*@!=1"#[`A6_W0D&.C\____@\00_D0D"HI4)`HX5"00#X<>
+M_O__@'PD"P!T#H/L"&H*5>C\____@\00@<0<`@``6UY?7<.)]E575E.!["P"
+M``"+A"1``@``BP")1"0,BXPD0`(``(I)'(A,)!^+A"1``@``@\`LB<*+M"1`
+M`@``.48L#X1Z`P``A,D/A'(#``")1"08@^P,4NC\____C6C@QP0D`````&H`
+M:@#_M"18`@``_[0D8`(``.C\____B$0D/<9$)#X`@\0@.$0D'@^#\@$``(UV
+M`(/L#&H`#[9\)"Y7:@'_M"18`@``_[0D8`(``.C\____#[;`P>`$@\!D@\0@
+M/0`"```/AWD!``"#[`R-7"0L4U=J`?^T)%@"``#_M"1@`@``Z/S___^#Q!QJ
+M"%6-A"2(````4.C\____@\00A,`/A#T!``"-52"+A"1``@``@\`LBT@$B5`$
+MB44@B4H$B1&*1"0BB$4Q@^P(C40D?%#_M"1,`@``Z/S___^#Q!`\_W0@#[;`
+MC01`C03`B<+!X@4IPHM,)`R+@9`%``"-%)")50R`?"0>`'1/#[9#`]'H@^`!
+MP>`$BE4U@^+O"<*(534/MD,#P>@#@^`!P>`%@^+?"<*(534/MD,#P>@"@^`!
+MP>`#@^+W"<*(536*0P:(A8L```#IG@```(I#`HA%,8NT)$`"``")=0B*0P:(
+MA8L````/MT,$B44X9HM#4&:)A8@```"*0U*(A8H```"+0T")17B+0T2)17R+
+M0TB)A8````"+0TR)A80```"+0Q")14B+0Q2)14R+0QB)15"+0QR)152-?5B-
+M0R#\N08```")QO.EBT,XB45PBT,\B45TZQ:)]OY$)!Z*1"0=.$0D'@^"/O[_
+M_^LK#[9$)!Y05?^T)$P"``#_M"1,`@``Z/S___^#Q!"*3"0=.$PD'@^"'0$`
+M`(U%*(G".44H#X3U````B<>0@^P,4NC\____C5CX@\0,4VH&_[0D3`(``.C\
+M____@\00@'M+`'0BD(/L#/]T)!CH_/___\<$)`$```#H_/___X/$$(![2P!U
+MWX-['`!T<8M#',=`8`````#V0R0$=2F+="0,_H97#```@^P,5NC\____@\0,
+M:@&+0QP/MD`!4%;H_/___X/$$(/L!/]S'(M$)!3_L"0%``!J`>C\____@\0,
+M_W,<BTPD%/^Q)`4``&H&Z/S____'0QP`````@\00BU,$BP.)4`2)`HNT)$`"
+M``#^3@K^33"#[`A3_W0D&.C\____@\00B?HY?2@/A0[___^+A"1``@``_D@<
+M@^P(5?]T)!CH_/___X/$$/Y,)!^+5"08BXPD0`(``#E1+'0+@'PD'P`/A9+\
+M__^!Q"P"``!;7E]=PXGV55=64X'L)`(``(NL)#P"``"+10")1"04_[0D.`(`
+M`%7H_/___\<$)`````!J`&H`5?^T)$P"``#H_/___XA$)"K&1"0K`(/$(#A$
+M)`L/@S,#``"0@^P,:@`/MGPD&U=J`57_M"1,`@``Z/S___\/ML#!X`2#P&2#
+MQ"`]``(```^'[P(``(/L#(U<)!Q35VH!5?^T)$P"``#H_/___X/$&(U$)'10
+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
+MMD8)T_BH`700#[9$)!>(3!A`_D,R_D0D%T$X32MWW(U3((M$)#"#P"R+2`2)
+M4`2)0R")2@2)$8M$)##^0#2#[`QH``````^V@XL```!04_]T)$C_M<0)``#H
+M_/___X/$(.DE`0``@^P,#[9#!U`/MD,&4`^V0P50#[9#!%`/MD,#4`^V0P)0
+M#[9#`5`/M@-0:#@)``#H_/___X/$*(M4)#C&0@7_4E7H_/___X/$$.G7````
+MC78`#[94)`^)T,'@!`'0C72%`/:&3@L```@/A+<```"#[`Q5Z/S___^)PX/$
+M$(7`#X2A````QD`C!L9`(@5FQX"0``````#&0"`&QD`A`,=`0```!0#'0$0`
+M````BY90"P``B9"<````BX94"P``B8.@````B9.4````B8.8````BTPD,(E+
+M*%'H_/___XB#L@```&:#2S00_W0D-.C\____@\0(/`EV!F:!2S0``HMT)##&
+M1@H!B?"#P#B+4`2)6`2)`XE3!(D:@^P(4U7H_/___X/$$)"#Q!Q;7E]=PU57
+M5E.#[`R+="0@BWPD)+``A?]T`XI'!0^VP+T`````A<!T$#W_````#X1+`0``
+MZ8P%``")Z@^VPHJ$,!X%```\_W02#[;0C012P>`#*="-O(8H`0``18GI@/D#
+M=M:]`````)")Z@^VPHJ$,!X%```\_W0T#[;0C012P>`#*="-O(8H`0``]D<&
+M`G00@^P(:@!7Z/S___^#Q!#K#(/L#%?H_/___X/$$$6)Z8#Y`W:T9@^V1B9F
+M.8:D"0``#X7^!```A?\/A9H```"`?CD`#X7L!```QD8Y`;L`````C78`#[?3
+MBXR6F`(``(7)="Z#>7``="B+07#'07``````QX26F`(```````"#[`1J_U'_
+M<7C_T(/$$.L_C78`#[?3@[R6F`(```!T+XN$EI@"``"#>'0`="*+073'070`
+M````QX26F`(```````"#[`S_<7C_T(/$$(GV0V:#^S]V@>E<!```QD<%_X/L
+M"%=6Z/S___^#Q!#I1@0``,9$)`L`D`^V1"0+BH0P'@4``#S_#X3L````#[;0
+MC012P>`#*="-O(8H`0``@'\%_P^$T````+T`````@'\*``^&M0```(U?.(/L
+M#%/H_/___XE$)!2#Q!"+0P2+5"0$B5,$B1J)0@2)$(!Z(O]T?X"ZL0````!T
+M:P^V0B"H`G0>J`1T&J@!=!92#[9"25#_<BQ7Z/S___^#Q!#K1XGVBTPD!`^V
+M02"H`G48J`1T%*@!=!"#[`A15NC\____@\00ZR*0BU0D!`^V0B"H`G05J`1T
+M$:@!=0V#[`A25NC\____@\00N`$```#I7@,``)!%B>DX3PH/AT[___^X`0``
+M`.E'`P``B?;^1"0+@'PD"P,/AO'^___&1"0+`(!^.0`/A9X```"[`````)`/
+MM\.+C(:8`@``9@^VE#"8!```A<ET;8-Y<`!T9X-Y8`!U86:!^O\`=#(/M]*+
+MOE@%``"-!-+!X`(IT,'@`_9$.",$=!>`?#@A`'40@^P$4E%6Z/S___^#Q!#K
+M*(M1<`^WP\>$AI@"````````QT%P`````(/L!&K_4?]Q>/_2@\00B?9#9H/[
+M/P^&<?___\9&.0'IA`(```^V1"0+BH0P'@4``#S_#X1@`@``#[;0C012P>`#
+M*="-O(8H`0``O0````"`?PH`#X8_`@``C78`@^P,C5\X4^C\____B40D%(/$
+M$(M#!(M4)`2)4P2)&HE"!(D0@'HB_P^%`@(``&:+2AAFB4PD`@^WP68/MI0P
+MF`0``&:)%"2+G(:8`@``BTPD!(I!)*@$=&*%VW1>@WMP`'18@WM@`'52@^#[
+MB$$D]D$C!'03@^P$#[?"4%-6Z/S___^#Q!#K,XM3<`^W1"0"QX2&F`(`````
+M``#'0W``````BT0D!,=`'`````"#[`1J_U/_<WC_TH/$$(M4)`3V0B,$#X0^
+M`0``QH*P`````(!G".?V0B0!#X3Z````@&(D_H-Z'`!T4H!Z(0!U+?9"(P1T
+M)X/L!`^W5"0&#[9&*<'@!@'"4O^V)`4``&H'Z/S___^#Q!#I[````(/L!(M,
+M)`C_<1S_MB0%``!J`>C\____@\00Z<T```"%VW1C@WMP`'1=BT0D!(!X(0!U
+M'O9`(P1T&(/L!`^W1"0$4%-6Z/S___^#Q!#IFP```(M3<`^W1"0"QX2&F`(`
+M``````#'0W``````BTPD!,=!'`````"#[`1J_U/_<WC_TH/$$.MFBT0D!(!X
+M(0!U7/9`(P1T5H/L!`^W5"0&#[9&*<'@!@'"4O^V)`4``&H"Z/S___^#Q!#K
+M,HUV`(M4)`2#>AP`="6+0AR#>'0`=!R+4'3'0'0`````@^P,BTPD$(M!'/]P
+M>/_2@\00BT0D!/9`)`)T'X/L!/]P'/^V)`4``&H&Z/S___^+5"04@&(D_8/$
+M$)!%B>DX3PH/A\3]___^1"0+@'PD"P,/AGW]__^0N`$```"#Q`Q;7E]=PXUV
+M`%575E.#[`R+7"0DBVLH#[=#&+H`````BTPD(("\")@$``#_#X20`@``#[9#
+M(H/X#P^$]@```(/X#W\Y@_@,#X2T````@_@,?Q.#^`5T3X/X"P^$D````.E8
+M`@``@_@-#X2D````@_@.#X2L````Z4$"``"0@_@9?P^#^!A]5H/X%'0MZ2P"
+M``"#^!MT-#W_````#X28````Z1<"``"#[`AJ`5/H_/___X/$$.D$`@``@^P,
+M4^C\____@\00Z?,!``"#[`AJ`%/H_/___X/$$.G@`0``@^P(:@%3Z/S___^#
+MQ!#IS0$``(/L#%/H_/___X/$$.F\`0``@^P,4^C\____@\00Z:L!``"#[`Q3
+MZ/S___^#Q!#IF@$``(/L#%/H_/___X/$$.F)`0``D,9#(O^)7"0(OP````"`
+M?0H`#X;%````C74XB?:#[`Q6Z/S___^)PX/$$(M&!(E>!(DSB4,$B1B`>R+_
+M#X2'````@'LA``^%A0```("[L0````!T:`^V0R"H`G0<J`1T&*@!=!13#[9#
+M25#_<RQ5Z/S___^#Q!#K1`^V0R"H`G4<J`1T&*@!=!2#[`A3_W0D+.C\____
+M@\00ZR*)]@^V0R"H`G08J`1T%*@!=1"#[`A3_W0D+.C\____@\00N@$```#I
+MQP```(GVQH.Q`````)!'B?@X10H/AT#___^)^3A-"@^%C0```(M$)`B`>"$B
+M=`:`>"$-=1B#[`AJ"O]T)!3H_/___[H!````@\00ZWZ_`````(!]"@!V6HUU
+M.(UV`(/L#%;H_/___XG#@\00BT8$B5X$B3.)0P2)&(![(2)T!H![(0UU)8/L
+M"%-H6`(``.C\____@\0(:@I3Z/S___^Z`0```(/$$.LCB?9'B?DX30IWK,9%
+M!?^#[`A5_W0D+.C\____@\00N@$```")T(/$#%M>7UW#D%575E.#[`R+7"0D
+MBVLH#[=#&+H`````BTPD(("\")@$``#_#X1L!@``#[9#(H/X"0^$4P,``(/X
+M"7\]@_@%#X3<````@_@%?Q>#^`,/A((```"#^`0/A*0```#I,`8``(/X!P^$
+M#`,``(/X!P^/[P(``.EV`@``D(/X%@^$N`(``(/X%G\B@_@4#X0B`P``@_@4
+M#X][`@``@_@*#X3\`@``Z>H%``")]H/X&@^$'`(``(/X&G\.@_@7#X2.`@``
+MZ<P%```]_P````^$Y@(``.F\!0``BT48@6`H___^_VH`:@%3_W,HZ/S____'
+M!"0%````Z/S___^#Q!#ID04``&H`:@!3_W,HZ/S____'!"10PP``Z/S___^#
+MQ!#I<`4``,9$)`L`BWPD((!_*P!V'P^V50F0B="*3"0+T_BH`74.08A,)`N+
+M?"0@.$\K=^8/MD,@J`)T#*@$=`BH`0^%PP```(M5&(M"**D```$`=`TE___^
+M_XE"*.FI````OA`G``"*1"0+B$0D"@^V^(M,)""+$8!\)`L#=AL/MD0D"XN$
+MPH`!``"C`````"4```$`ZQ2-=@"+A/J``0``HP`````E```!`(7`=":`?"0*
+M`W80QX3Z@`$``````0#K#HUV`,>$^H`!``````$`A<!U%8/L#&CH`P``Z/S_
+M__^#Q!!.=8KK!(7V=1W&0R,"QD,B_X/L"%/_="0LZ/S___^#Q!#I:P0``/9%
+M!@%T/8/L"%-5Z/S___^#Q!"$P'4LOOH```"-=@"#[`A35>C\____@\00A,!U
+M$X/L#&CH`P``Z/S___^#Q!!.==R`?"0+`W8@#[9,)`N+?"0@BQ>+A,J``0``
+MHP````")A,J``0``ZSX/MG0D"XM$)""+"(!\)`L#=@Z+A/&``0``HP````#K
+M%P^V1"0+BWPD((L7BX3"@`$``*,`````B83Q@`$``(/L"%/_<RCHAR0``,<$
+M)"!.``#H_/___X/$$.FC`P``@^P(#[=#&%!H<`D``.C\____@\0(4_]S*.CE
+M*0``@\00Z7T#``"#[`@/MT,84&AL`@``Z/S___^#Q`A3_W,HZ"<J``"#Q!#I
+M5P,``(/L"%/_<RCH&R0``(/$$.E#`P``@^P(4_]S*.CC)P``@\00Z2\#``"#
+M[`A3_W,HZ%LG``"#Q!#I&P,``(/L"%/_<RCH+R@``(/$$.D'`P``@^P(4_]S
+M*.B#*```@\00Z?,"``"#[`A3_W,HZ-<H``"#Q!#IWP(``,9#(O\/MD,@J`)T
+M"*@$=`2H`745@WLP`'4/5>C\____B(.R````@\0$]D4(`@^$8`$``(M]*`^V
+M5RH/MD<?2#G"?2W^1RK^1RO&1R8`9HM',H/@_H/("&:)1S*#[`A7_W0D+.C\
+M____@\00Z6\"``#&1"0+`(!]"@`/AL````"-=3B#[`Q6Z/S___^)PX/$$(M&
+M!(E>!(DSB4,$B1B`>R+_#X2`````@+NQ`````'1K#[9#(*@"=!^H!'0;J`%T
+M%U,/MD-)4/]S+%7H_/___X/$$.M'C78`#[9#(*@"=1RH!'08J`%T%(/L"%/_
+M="0LZ/S___^#Q!#K(HGV#[9#(*@"=!BH!'04J`%U$(/L"%/_="0LZ/S___^#
+MQ!"Z`0```.F_`0``B?;&@[$`````_D0D"XI$)`LX10H/AT/____V1S*`=!_V
+M1RT#=!G&1R8`@^P(5_]T)"SH_/___X/$$.E[`0``QD4%_\9')@!FBT<R@^#S
+M@\@"9HE',H!G+?Z#[`A5_W0D+.C\____@\00Z4P!``#&1"0+`(!]"@`/AL4`
+M``"-=3B)]H/L#%;H_/___XG#@\00BT8$B5X$B3.)0P2)&(![(O\/A(H```"`
+M>R$`=7V`N[$`````=&@/MD,@J`)T'*@$=!BH`7044P^V0TE0_W,L5>C\____
+M@\00ZT0/MD,@J`)U'*@$=!BH`704@^P(4_]T)"SH_/___X/$$.LBB?8/MD,@
+MJ`)T&*@$=!2H`740@^P(4_]T)"SH_/___X/$$+H!````Z9<```")]L:#L0``
+M``#^1"0+BDPD"SA-"@^'0/___XI$)`LX10IU6,9$)`L`@'T*`'9-C74X@^P,
+M5NC\____B<.#Q!"+1@2)7@2),XE#!(D8@'LA(G0&@'LA#746@^P(:@I3Z/S_
+M__^Z`0```(/$$.LJD/Y$)`N*3"0+.$T*=[;&107_@^P(5?]T)"SH_/___X/$
+M$(UV`+H!````B="#Q`Q;7E]=PY!55U93@^P,BWPD((MT)"2+%XM>5`^V1B:#
+M^!D/A[<#``#_)(7D'@``]D8R!'0,9L=&,@$`QD8F`>L\9H-^,B!U#&;'1C((
+M`,9&)@WK*?9&,H!T&?9&+0-T$V:+1C(D?X/("&:)1C+&1B8-ZPKV1C((=`3&
+M1B8'@^P(5E?H_/___X/$$.E0`P``BX($`0``HP````"#R%")@@0!``!J`6H"
+M:@%6Z/S___^#Q!#I*`,``&H!:@!J`5;H_/___X/$$.D4`P``:@%J`6H!5NC\
+M____@\00Z0`#``!J`6I@:@%6Z/S___^#Q!#I[`(``(/L#&H!#[9&+%!J8&H!
+M5NC\____@\0@Z=`"``"#[`QJ`6@```$$:B%J`5;H_/___X/$(.FT`@``@^P,
+M:@%J`6H":@!6Z/S___^#Q"#IFP(``(/L#&H!:@!J`FH`5NC\____@\0@Z8("
+M``"+0QB!8"C___?_@^P,:@%J`6H":@!6Z/S___^#Q"#I7P(``(/L#&H!:@!J
+M`FH`5NC\____@\0@Z48"``!J`6H":@!6Z/S___^#Q!#I,@(``&H!:@!J`%;H
+M_/___X/$$.D>`@``:@%J`6H`5NC\____@\00Z0H"``"+0QB!8"C___?_@^P,
+M:@%J_VH!:@!6Z/S___^#Q"#IYP$``&H!:@!J`%;H_/___X/$$.G3`0``#[9&
+M*XMLACR)72B)=3"*1BN(14G&12(#QD4A`(!-(`7^0PJ-0SB+4`2):`2)10")
+M502)*H/L#&B`&@8`Z/S____&1"0;`(/$$(!_*P!V&@^V4PF)T(I,)`O3^*@!
+M=0I!B$PD"SA/*W?JBU,8BT(HJ0``"`!T"B7___?_B4(HZU.[F#H```^V="0+
+MD(!\)`L#=AF+!XN$\(`!``"C`````*D```@`=2SK%XGVBP>+A/"``0``HP``
+M``"I```(`'43@^P,:.@#``#H_/___X/$$$MUN(/L"%57Z/S___^#Q!#I[@``
+M`(/L#&A`#0,`Z/S___]J`&H@:@%6Z/S___^#Q!1H$"<``.C\____@\00Z<``
+M``!J`&H!:@!6Z/S____'!"00)P``Z/S___^#Q!#IH````(M#&(%@*/__]_^#
+M[`QJ`&K_:@%J`%;H_/___X/$%&@0)P``Z/S___^#Q!#K<VH`:@!J`%;H_/__
+M_\<$)!`G``#H_/___X/$$.M6:@!J(&H!5NC\____QP0D$"<``.C\____@\00
+MZSF#[`A65^C\____@\00ZRJ#[`A65^C\____@\00ZQN#[`QJ`6CP````:)L`
+M``!J`5;H_/___X/$()"X`0```(/$#%M>7UW#C78`55=64X/L'(M$)#"+`(E$
+M)!C&1"03`(M4)#"`>BL`#X:U`@``#[9,)!.)R,'@!`'(BW0D,(T<AO:#7@L`
+M`!`/A(`"``"-DU`+``"X`0```-/@"$()BYL\"P``B5PD%/9""`(/A/0```"*
+M7"030SA>*P^&Y@````^V5"03B=#!X`0!T(T$AHE$)`2-=@`/MO.)\,'@!`'P
+MBU0D,(T\@O:'7@L``!`/A*(```"+;"0$]X5,"P`````.``^$C@```(/L!&H(
+MC8]0"P``B4PD%%&-A5`+``")1"044.C\____@\00A,!T9X/L!&H(C8=$"P``
+M4(V%1`L``%#H_/___X/$$(3`=$BX`0```(GQT^"+="0("D8)B$8)BU0D#(A"
+M"8-\)!0`=0R+OSP+``")?"04ZQL/MM.)T,'@!`'0BW0D%(M,)#")M($\"P``
+MB?9#BT0D,#A8*P^',O___XGV@WPD%``/A;4```"#[`S_="0\Z/S___^)1"0D
+M@\00A<`/A%<!```/ME0D$XG0P>`$`="+5"0PC02"BTPD%(F(/`L``(V0.`L`
+M`(E1&(J`6`L``(A!!L9!!0"+7"0PB1G&00H`QD$T`,9!'`"*7"030XMT)#`X
+M7BMV8@^V5"03B=#!X`0!T`^VE(99"P``C78`#[;+B=#3^*@!=!:)R,'@!`'(
+MBW0D%(M,)#")M($\"P``0XM$)#`X6"MWU>L>C78`#[94)!.)T,'@!`'0BTPD
+M%(M4)#")C((\"P``#[9,)!.)R,'@!`'(BUPD,(V$@U`+``"*4`F+="04B%8)
+M#[98"8!\)!,#=A&+1"08QX3(``(``#@```#K%`^V1"03BU0D&,>$P@`"```X
+M````@^P,:!`G``#H_/___X/$$(!\)!,#=A4/MD0D$XM,)!B)G,$$`@``ZQ.-
+M=@`/MD0D$XMT)!B)G,8$`@``_D0D$XI$)!.+5"0P.$(K#X=+_?__@\0<6UY?
+M7<.-=@!75E.+?"00BEPD%(LW@/L#=A(/ML/'A,8P`@``#````.L0B?8/ML/'
+MA,90`@``#````(/L#&@0)P``Z/S___^#Q!"`^P-V$0^VPXN$QC0"``"C````
+M`.L/#[;#BX3&5`(``*,`````B<&!X0``/P#!Z1`/MM.)T,'@!`'0C92'4`L`
+M`(I""(/@_(A""(/Y$'4+@\@"B$((ZQ6-=@`/MM.)T,'@!`'0@(R'6`L```%;
+M7E_#B?975E.#[""+7"0TBT0D,(LXO@````"-=@"#^P-V$XT$M0`!``")A-\`
+M`@``ZQ&-=@"-!+4``0``B83?``(``(/L#&@0)P``Z/S___^#Q!"#^P-V$8N$
+MWP0"``"C`````.L/C78`BX3?!`(``*,`````B02T1H/^!G:?B>;\N0<```"+
+M?"0X\Z6#Q"!;7E_#B?975E.#[""+7"0TBT0D,(LXO@````"-=@"#^P-V$XT$
+MM1P!``")A-\``@``ZQ&-=@"-!+4<`0``B83?``(``(/L#&@0)P``Z/S___^#
+MQ!"#^P-V$8N$WP0"``"C`````.L/C78`BX3?!`(``*,`````B02T1H/^!G:?
+MB>;\N0<```"+?"0X\Z6#Q"!;7E_#B?:+3"0$B@'`Z`2)PH/B!_9!`@1T`X#.
+M`O9!`P1T!H'*```"`/9!`@AT`X#."/9!`PAT!H'*```(`/9!`@)T`X#.!/9!
+M`P)T!H'*```$``^V013!X!@)PHG0PXUV`/]T)`3H_/___X/$!,.-=@!55U93
+M@^Q$BVPD6(I$)%R(1"07BU4`B50D$`^VT(G0P>`$`="-1(4`B:@X"P``QH!9
+M"P```%)5Z/S___^#Q!"Y`````+H@````C40D$(UV`(@(0$IU^H/L!(UT)!16
+M#[9\)!=75>C\____B?O!XP0!^XU<G0!6Z/S___^)@T`+``"+1"0PB8-$"P``
+MBT0D-(F#2`L``(V37`L``(/$%(!\)`\#=A*+3"0(BX2YT`$``*,`````ZQ4/
+MMD0D#XM<)`B+A(/0`0``HP````")`@^V5"0/B=#!X`0!T(V,A6`+``"`?"0/
+M`W82BUPD"(N$TX`!``"C`````.L5#[9$)`^+5"0(BX3"@`$``*,`````B0$/
+MME0D#XG0P>`$`="-1(4`]H!>"P``$`^$0P$``/:`6`L```)T6[D`````NB``
+M``"-1"00C78`B`A`2G7Z@^P$C7PD%%</MG0D%U95Z/S___^)\\'C!`'SC5R=
+M`%?H_/___XF#3`L``(M$)#")@U`+``"+1"0TB8-4"P``@\04ZQ</ME0D#XG0
+MP>`$`=#'A(5,"P```0`"`(!\)`\#=A8/MD0D#XM,)`C'A,$P`@``&````.L4
+M#[9$)`^+7"0(QX3#4`(``!@```"#[`QH$"<``.C\____@\00@'PD#P-V&0^V
+M1"0/BU0D"(N$PC0"``"C`````(G!ZQ</MD0D#XM,)`B+A,%4`@``HP````")
+MP0^V5"0/B=#!X`0!T/>$A5P+``````,`=0B!X?___]_K!H')````((!\)`\#
+M=A(/MD0D#XM<)`B)C,,T`@``ZQ`/MD0D#XM4)`B)C,)4`@``@\0\6UY?7<.-
+M=@"+5"0$BX(X!0``)?___P`]4`&3`'42BH([!0``P.@$N@$````\#'0%N@``
+M``")T,-55U93@^P<BWPD,(LWQD0D$%"-7"00QD,!!<9#`@3&0P,PQD,$$<9#
+M!:O&0P8`QD,'`,>'7`P````````YOR0%```/A=0```"-KV`,``"#[`QJ`6H(
+MC8<X!0``4&@```(`5^C\____BX<P!0``BI<[!0``C42"_(B'.P4``(/$(%?H
+M_/___X/$!(3`=1.+1"00B8<X!0``BT,$B8<\!0``H0````"*ESL%```!PD"C
+M`````(B7.P4``(J'.`4``(B%.`4``(J'.04``(B%.04``(J'.@4``(B%.@4`
+M`(J'.P4``(/``HB%.P4``(J'/`4``(B%/`4``(J'/04``(B%/04``(J'/@4`
+M`(B%/@4``(J'/P4``(B%/P4``,>'7`P```````"+A@`!``"C`````"7__P``
+MJ"!U%(/(((F&``$``(N&``$``*,`````BP?'@`0!````````BP?'@!@!````
+M````BP?'@!P!````````@^P,:("$'@#H_/___\>&<`$``!@!``"+AG0!``"C
+M`````(#D_<>&<`$``!@!``"`S`2)AG0!``#'AG`!```H`0``QX9T`0``?W\`
+M`,>&<`$``"0!``"+AG0!``"C`````"4``/__QX9P`0``)`$```W_/P``B89T
+M`0``QX9P`0``/`$``,>&=`$`````>@#'AG`!``"D`0``QX9T`0``?;_O_\>&
+M<`$``+@!``"+AG0!``"C``````^WP,>&<`$``+@!```-``#Z`(F&=`$``,>&
+MG````/\```#'AI`"``!$`0``QX:4`@``!A``",>&D`(``+0!``#'AI0"``!?
+M<```QX:0`@``,````(N&E`(``*,`````,.2`S#.)AI0"``#&1"0?`(/$$(!_
+M*P`/AK8"``")]H!\)`\#=A4/MD0D#\>$QC`"```(````ZQ.-=@`/MD0D#\>$
+MQE`"```(````@^P,:!`G``#H_/___X/$$(!\)`\#=A4/MD0D#XN$QC0"``"C
+M`````.L3B?8/MD0D#XN$QE0"``"C`````(!\)`\#=A0/ME0D#PT``(``B836
+M-`(``.L2D`^V5"0/#0``@`")A-94`@``@^P$C8<X!0``4`^V7"074U?H_/__
+M_X/$"%-7Z/S___^#Q!"`?"0/`W8-QX3>,`(``$0!``#K$`^V1"0/QX3&4`(`
+M`$0!``"#[`QH$"<``.C\____@\00@'PD#P-V%0^V1"0/QX3&-`(```80``CK
+M$XUV``^V1"0/QX3&5`(```80``B`?"0/`W85#[9$)`_'A,8P`@``M`$``.L3
+MC78`#[9$)`_'A,90`@``M`$``(/L#&@0)P``Z/S___^#Q!"`?"0/`W85#[9$
+M)`_'A,8T`@``7W```.L3C78`#[9$)`_'A,94`@``7W```(!\)`\#=A4/MD0D
+M#\>$QC`"```(````ZQ.-=@`/MD0D#\>$QE`"```(````@^P,:!`G``#H_/__
+M_[C_5(``@\00@'PD#P-V%`^V5"0/)?]4``")A-8T`@``ZQ*0#[94)`\E__]_
+M_8F$UE0"``"#[`1J`0^V7"074U?H_/___\<$)""A!P#H_/___X/$$(!\)`\#
+M=A"+A-Z``0``HP````#K$XGV#[9$)`^+A,:``0``HP`````E___^_X!\)`\#
+M=@\/ME0D#XF$UH`!``#K#9`/ME0D#XF$UH`!``"X!0'(`(!\)`\#=A`/ME0D
+M#XF$UH0!``#K#HGV#[94)`^)A-:$`0``@^P,:*"&`0#H_/___X/$"`^V1"07
+M4%?H_/___X/$$/Y$)`^*1"0/.$<K#X=,_?__@^P,5^C\____BX8$`0``HP``
+M``"#R`*)A@0!``"+A@`!``"C`````(/@_8/(#8F&``$``(N&``$``*,`````
+MBX?D"0``B88(`0``BX?H"0``B88,`0``BX<("@``B880`0``BX<,"@``B884
+M`0``QX8@`0````````^WAS0+```E_P\```T```$`B88@`0``BX=0"@``B88D
+M`0``BX=4"@``B88H`0``BX=P"@``QP#_#P``QX8T`0````````^WAS8+```E
+M_P\```T```$`B88T`0``BX=T"@``B88X`0``BX=X"@``B88\`0``QX9(`0``
+M`````,>&3`$````!``"+A@0!``"C`````(/(68F&!`$``,>&5`$``/O_``S'
+MAEP!``#__P``@\0L6UY?7<.-=@!3@^P4BUPD'%/H8OG__[(`@\00D`^VPL>$
+M@[`%````````QT2#1`````!"@/H/=N1FQX,P"P``_P]FQX,R"P``_P_&0S@!
+MN`$```"#Q`A;PXM4)`2+3"0(N``````YR'T<C78`@#P"`'0.@#P"('0(N```
+M``##B?9`.<A\Y[@!````PY!55U93@^P\BVPD5&:!?1"%``^'G0````^W11"+
+M5"10@+P0F`0``/\/A(<```!F@WT0?W<D#[:4$)@$``"+7"10BXM8!0``C032
+MP>`"*="+1,$HBD@$ZU^09H%]$($`=RP/MT40BWPD4`^VA#B8!```BX^0!0``
+MC01`C03`B<+!X@4IPHM$D0B*2`3K*@^W11"+5"10#[:$$)@$``"+DG0%``"-
+M!$"-!("+1,)4BD@$ZP6-=@"Q_[+_9H%]$(4`=P\/MT40BUPD4(J4&)@$``"`
+M^?]T'`^VP8M\)%"`O#@>!0``_W0+@/K_=`:`?10&=32#?5``=!:#[`B-15!0
+M_W0D7.C\____@\00C78`@^P(5?]T)%SH_/___X/$$.D+!P``C78`#[;!BTPD
+M4`^VM`@>!0``C01VP>`#*?"-M($H`0``#[;2C032P>`"*="+D5@%``"-',)F
+M@;N0````JPUW!X!]%`)U1Y"#?5``=!:#[`B-15!0_W0D7.C\____@\00C78`
+M@^P(5?]T)%SH_/___\9#(O_&0R,"@\0(4_]T)%SH_/___X/$$.E^!@``#[9%
+M)(/X&@^$C@4``(/X&G\E@_@2=$R#^!)_#87`#X0W!0``Z1P&``"#^!4/A`0&
+M``#I#@8``(/X)0^$CP(``(/X)7\.@_@;#X0$!0``Z?(%```]G@````^$<`,`
+M`.GB!0``@'T4``^%0@(``(M--(!])0!T8H![(AD/E,"#P`N(0R*%R71#@'D!
+M@'4]@'D"`'4W@'D#/'<Q#[9Q`[H4````C4-,Q@`@0$IU^8/^$W8%OA0```"-
+M4TR-002#[`164%+H_/___X/$$&;'@Y```````.EM!0``QD,B&/9!!D!U#P^V
+M`8/@'X/X#0^%/`$```^V`8/@'X/X#74&QD,A#>L$QD,A(H/L"`^V0R%0:(("
+M``#H_/___X/$$(-]4`!T$X/L"(U%4%#_="1<Z/S___^#Q!"#[`A5_W0D7.C\
+M____QD0D/P"#Q!"`?@H`=C>-;CB#[`Q5Z/S___^)PX/$$(M%!(E=!(DKB4,$
+MB1B`>R$B=`:`>R$-=0W^1"0OBEPD+SA>"G?,BD0D+SA&"@^%ZP0``&;'1"0L
+M``#'1"0H`````,9$)"\`@'X*`'9.C6XX@^P,5>C\____B<.#Q!"+102)702)
+M*XE#!(D8@'LA(G0&@'LA#747BU0D+&8Y4QAR#8E<)"AFBUL89HE<)"S^1"0O
+MBDPD+SA."G>U@WPD*``/A'@$``"+7"0H@'LB_P^$:@0``,9#(O^#[`A3_W0D
+M7.C\____@\00Z5$$```/M@&#X!^#^`%U#<9#(0'&0R+_Z0`$``#V004!=`3&
+M0R(9@WTT``^$[`,``(M]-(E\)#"Y`````+HH````C4-@B`A`2G7ZN0````"Z
+M"````(V#B````(@(0$IU^HU#8(MT)#"#Q@C\N08```")Q_.EBU0D,(M"((F#
+MB````.F6`P``9O^#D````(/L#&@0)P``Z/S____&0R(%@\00Z78#``"+332)
+M3"0TBT4XBD`"@^`/@'T4`'5_#[91!P^V00;!X`@!P@^V007!X!`!P@^V003!
+MX!@!PHF3K`````^V40,/MD$"P>`(`<(/MD$!P>`0`<(/M@'!X!@!PHE30,=#
+M1`````"#NZP`````=2!F_X.0````@^P,:!`G``#H_/___\9#(@N#Q!#IZ@(`
+M`,9#(@WIX0(``(!]%"!U*#P&=`0\`G4@9O^#D````(/L#&@0)P``Z/S____&
+M0R(%@\00Z;,"``"#?5``=!.#[`B-15!0_W0D7.C\____@\00@^P(5?]T)%SH
+M_/___X/$#%-6_W0D7.C\____@\00Z;`"``"+13B*0`*#X`^+?32)?"0T@'T4
+M``^%``$```^V5PL/MD<*P>`(`<(/MD<)P>`0`<(/MD<(P>`8`<*)DZP````/
+MME<'#[9'!L'@"`'"#[9'!<'@$`'"#[9'!,'@&`'"B50D((G0P?@?B40D)`^V
+M1P.)PK@``````T0D(!-4)"2)1"08B50D'`^V1P*)PK@`````P>((`T0D&!-4
+M)!R)1"00B50D%`^V1P&)PK@`````P>(0`T0D$!-4)!2)1"0(B50D#`^V!XG"
+MN`````#!XA@#1"0($U0D#(E#0(E31/9'#`%T!6:#2S8$@[NL`````'4@9O^#
+MD````(/L#&@0)P``Z/S____&0R(9@\00Z68!``#&0R(-Z5T!``"`?10@=2@\
+M!G0$/`)U(&;_@Y````"#[`QH$"<``.C\____QD,B&8/$$.DO`0``@WU0`'03
+M@^P(C4504/]T)%SH_/___X/$$(/L"%7_="1<Z/S___^#Q`Q35O]T)%SH_/__
+M_X/$$.DL`0``QD,B%.GJ````@'T4('4QBT4XBD`"@^`//`9T!#P"=2!F_X.0
+M````@^P,:!`G``#H_/___\9#(A2#Q!#ILP```,9#(AOIJ@```(!]%`!U5HM5
+M-(E4)#!FBT,T9H-+-@$,AF:)0S2`>@,`=06`.A9W'6;_@Y````"#[`QH$"<`
+M`.C\____QD,B#8/$$.MFBTPD,/9!!@1T!V:#2S8"ZT!F@V,V_>LY@'T4('4N
+MBT4XBD`"@^`//`9T!#P"=2)F_X.0````@^P,:!`G``#H_/___\9#(@6#Q!#K
+M&F:#8S3YQD,B#NL/@'T4`'4%9H-+-@/&0R(/@WU0`'03@^P(C4504/]T)%SH
+M_/___X/$$(/L"%7_="1<Z/S___^#Q`A3_W0D7.C\____@\00C78`@\0\6UY?
+M7<-55U93@^P,BWPD((M<)"1F@7L0A0`/AXD````/MT,0@+PXF`0``/]T>V:#
+M>Q!_=R`/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*(I(!.M7D&:!>Q"!`'<H
+M#[=#$`^VA#B8!```BX^0!0``C01`C03`B<+!X@4IPHM$D0B*2`3K)@^W0Q`/
+MMH0XF`0``(N7=`4``(T$0(T$@(M$PE2*2`3K!8UV`+'_LO]F@7L0A0!W"P^W
+M0Q"*E#B8!```@/G_=!@/ML&`O#@>!0``_W0+@/K_=`:`>Q0&=2R#>U``=!*#
+M[`B-0U!05^C\____@\00B?:#[`A35^C\____@\00Z4H"``")]@^VP0^VM#@>
+M!0``C01VP>`#*?"-M(<H`0``#[;2C032P>`"*="+EU@%``"-+,*+0S2`>Q0`
+M#X2E````@'LF!@^$FP```(![)@P/A)$```!FBY60````C4(!9HF%D````&:#
+M^@EV)(!](@9T'L9%(P+&12+_@&4D_H/L"%57Z/S___^#Q!#IO@$``(/L#&CH
+M`P``Z/S___\/MD4@@\00J`)T):@$="&H`70=@^P,:@!J`@^V14E0_W4L5NC\
+M____@\0@Z8$!``#&12(#@^P(55?H_/___X/$$.EK`0``C78`@'LF`74*QD4B
+M!.DI`0``D(![)@)U"<9%(@7I&0$``(![)@,/A9````"`?2(%=2EF@7@$R#=U
+M(8/L"`^W11A0:*0)``#H_/___X/$$,9%(@;IXP```(UV`(/L"%!5Z/S___]J
+M*(U%8%#H1_7__X/$&(3`=3AJ%(U%3%#H-?7__X/$"(3`=29J"(V%B````%#H
+M(/7__X/$"(3`=1&+140+14!T"<9%(A?IC````,9%(AIF_X60````ZW^`>R87
+M=0;&12(5ZW.`>R88=0;&12(6ZV>`>R8$=0;&12('ZUN`>R8%=0;&12((ZT^`
+M>R8&=0;&12()ZT.`>R8,=0;&12(*ZS>`>R86=0;&12(4ZRN`>R8.=26#>U``
+M=!"#[`B-0U!05^C\____@\00@^P(4U?H_/___X/$$.LP@WM0`'02@^P(C4-0
+M4%?H_/___X/$$(GV@^P(4U?H_/___X/$"%57Z/S___^#Q!"0@\0,6UY?7<-5
+M5U93@^P,BWPD((MT)"1F@7X0A0`/AXD````/MT80@+PXF`0``/]T>V:#?A!_
+M=R`/MI0XF`0``(N/6`4``(T$TL'@`BG0BT3!*(I(!.M7D&:!?A"!`'<H#[=&
+M$`^VA#B8!```BX^0!0``C01`C03`B<+!X@4IPHM$D0B*2`3K)@^W1A`/MH0X
+MF`0``(N7=`4``(T$0(T$@(M$PE2*2`3K!8UV`+'_NO\```!F@7X0A0!W#0^W
+M1A!F#[:4.)@$``"`^?]T!V:!^O\`=2R#?E``=!*#[`B-1E!05^C\____@\00
+MB?:#[`A65^C\____@\00Z<(```")]@^VR0^VG#D>!0``C01;P>`#*=B-G(<H
+M`0``#[?2C032P>`"*="+EU@%``"-+,*`?A0`=#B#[`A1:,0)``#H_/___X/$
+M"(M5!(M%`(E0!(D"_DL*55?H_/___\9#!?^#Q`A35^C\____@\00D(!^)@%U
+M*H/L#&@0)P``Z/S___^#Q`A65^C\____:@%J`%53Z/S___^#Q"#K)XUV`(/L
+M#&A0PP``Z/S___^#Q`A65^C\____@\0(55/H_/___X/$$(/$#%M>7UW#5E.#
+M[!"+="0@BD0D)(A$)`^*1"0HB$0D#HM$)!R+&%/H_/___XG"@\00A<!U#L:&
+ML0````'&1B(#ZVJ0QD`DX<9`)0&`?"0#`1G`]]"#P`*(0B:P#X!\)`(`=0RP
+M`(-^,`!T!(I&29"(0B=FBT889HE"$(E:&,="(`````#'0C0`````N`````"`
+M?"0"`'4%N'`,!@")0FR#[`A24^C\____@\00@\0$6U[#D%575E.#[!B+;"0P
+MBT0D+(LX5^C\____B<.#Q!"%P'4,QH6Q`````>FA````@^P,5^C\____B<:#
+MQ!"%P'46QH6Q`````8/L"%-7Z/S___^#Q!#K>8U3/(E4)`C&0R3AQD,E`<9#
+M)@-FBT489HE#$(M4)""+`HE#&,=#(``"``"+1@B)0S2Y`````+H``@``D(@(
+M0$IU^HES4,=#;'`,!@"#[`AJ`/]T)!3H_/____]S(/]V$/]V#/]T)"3H_/__
+M_X/$&%-7Z/S___^#Q!"#Q`Q;7E]=PXUV`%=64XM<)!"+3"04BWPD&+X`````
+M.?YS%8H3BD,!B`&(40&#P0*#PP)&.?YRZUM>7\.-=@!55U93@^P,BUPD((ML
+M)"2);"0(9H-]``!Y$@^W10`E`!\``,'X"(A#(8UV`(U[3(UU%/RY!0```/.E
+MBT4NB8.(````BT4RB8.,````C7M@C74VL0KSI6H*C4-,4%#H:O___VH$C8.(
+M````4%#H6____VH4C4-@4%#H3____V;'0S0``&;'0S8``(/$)(M$)`AF@[BR
+M`0```0^4PL'B`XI#)(/@]PG0B$,D]H6G````!'0&9L=#-`$`]H6D`````70C
+M9H-+-`+VA:H````!=`5F@TLV`?:%J`````%T!V:!2S0``9#VA:0````@=!-F
+M@TLT!/:%J@```"!T!6:#2S8"]H6D````0'079H%+-(``]H6J````0'0(9H-+
+M-@B-=@#&0TH"]H69`````70G]D,T`70*9H-+-`AF@TLV$(J%E@```(/@'T"(
+M0TH\('4&QD-*'XGV]H68````"'0&9H%+-``"]H68````!'0%9H-+-"#VA9@`
+M```"=`5F@TLT$/:%J````"!T$/:%K@```"!T!V:#2S1`B?;V0S0!=!:+A<@`
+M``"+E<P```")0T")4T3K#XGVBT5XB4-`QT-$`````(-#0/^#4T3_]D5J`G0=
+M]H6`````#W049H.]@`````(9P(/`!(A#..L&B?;&0S@"QD,Y__9%?@1T!L9#
+M.0+K&/9%?@)T!L9#.0'K#/9%?@%T!L9#.0")]L9#.O_V16H$=!BQ``^WA;``
+M``#3^*@!=`.(2SI!@/D&=NJ#[`AH``(``%7H_/___XF#E````+@!````@\0<
+M6UY?7<.05U93BWPD$(M<)!2+-X/L#%;H_/___XG"BDLZ@\00A<!U"L:#L0``
+M``'K0I#&0"3AQD`E`<9`)@2(2"=FBT,89HE"$(L'B4(8QT(@`````,="-```
+M``#'0FQP#`8`B$L]@^P(4E;H_/___X/$$%M>7\.-=@!75E.+?"00BUPD%(LW
+M@^P,5NC\____B<**2SB#Q!"%P'4*QH.Q`````>M"D,9`).'&0"4!QD`F!8A(
+M)V:+0QAFB4(0BP>)0AC'0B``````QT(T`````,=";'`,!@"(2SN#[`A25NC\
+M____@\006UY?PXUV`%=64XMT)!"+?"04BQZ#[`Q3Z/S___^)PH/$$(7`=0G&
+MA[$````!ZSO&0"3AQD`E`<9`)@9FBT<89HE"$(L&B4(8QT(@`````,="-```
+M``#'0FQP#`8`@^P(4E/H_/___X/$$%M>7\.05U93BW0D$(M\)!2+'H/L#%/H
+M_/___XG"@\00A<!U"<:'L0````'K.\9`).'&0"4!QD`F#&:+1QAFB4(0BP:)
+M0AC'0B``````QT(T`````,=";'`,!@"#[`A24^C\____@\006UY?PY!75E.+
+M="00BWPD%(L>@^P,4^C\____B<*#Q!"%P'4)QH>Q`````>M#QD`DX<9`)0'&
+M0"86QD`H`6:+1QAFB4(0QD)H#XL&B4(8QT(@`````,="-`````#'0FQP#`8`
+M@^P(4E/H_/___X/$$%M>7\.05U93BW0D$(M\)!2+'H/L#%/H_/___XG"@\00
+MA<!U"<:'L0````'K.\9`).'&0"4!QD`F%V:+1QAFB4(0BP:)0AC'0B``````
+MQT(T`````,=";'`,!@"#[`A24^C\____@\006UY?PY!75E.+="00BWPD%(L>
+M@^P,4^C\____B<*#Q!"%P'4)QH>Q`````>L[QD`DX<9`)0'&0"889HM'&&:)
+M0A"+!HE"&,="(`````#'0C0`````QT)L<`P&`(/L"%)3Z/S___^#Q!!;7E_#
+MD%=64X/L'(M\)"R*7"0PBD0D-(A$)!N*1"0XB$0D&HM'5(LP5NC\____B<+&
+M0"3AQD`E`<9`)A&#Q!"P#X3;=0.*1RN(0B>*1"0/B$(H9HM')&:)0A")<AC'
+M0B``````QT(T`````+@`````@'PD#@!U!;@`````B4)L@^P(4E;H_/___X/$
+M(%M>7\.05U93@^P<BWPD+(I<)#"*1"0TB$0D&XI,)#R(3"0:BT=4BS!6Z/S_
+M__^)PL9`).'&0"4!QD`F$H/$$+`/A-MU`XI'*XA")XI$)`^(0BB+3"0L#[;%
+MB$(IB<C!Z!"(0BJ)R,'H&(A"*XA*+&:+1R1FB4(0B7(8QT(@`````,="-```
+M``"X`````(!\)`X`=06X`````(E";(/L"%)6Z/S___^#Q"!;7E_#55=64X/L
+M'(ML)#"+?"0TQT0D&`````!F@7\0A0`/AXD````/MT<0@+PHF`0``/]T>V:#
+M?Q!_=R`/MI0HF`0``(N-6`4``(T$TL'@`BG0BT3!*(I0!.M7D&:!?Q"!`'<H
+M#[='$`^VA"B8!```BXV0!0``C01`C03`B<+!X@4IPHM$D0B*4`3K)@^W1Q`/
+MMH0HF`0``(N5=`4``(T$0(T$@(M$PE2*4`3K!8UV`++_L?]F@7\0A0!W"P^W
+M1Q"*C"B8!```#[;"#[:<*!X%``"-!%O!X`,IV(V<A2@!```/ML&-!$"-!("+
+ME70%``"--,*`?R@"=7L/MD<L)?````"#^"!T!8/X$'5H#[97+(G0@^`/@_@!
+M=2*#[`QJ`8G0)?````!0:@)J`%;H_/___X/$(.D^!@``C78`#[9&*XM$ACR)
+M1"08#[9'+"7P````@_@@#Y3`@\`(BU0D&(B"L@```(M",&:!8#+__ND%!@``
+MB?:`?Q0`=$**7Q2#?U``=!&#[`B-1U!05>C\____@\00D(/L"%=5Z/S___^#
+MQ!"`^P(/A<T%``"#[`A65>C\____@\00Z;L%```/MD8F@_@9#X=_!0``_R2%
+M3!\```^V1C3!X`@#A00*``"+@$P(``"C`````(/X!7<%B$8?ZP3&1A\%@'L+
+M`'0-QD8F`,9#"P#I/P4``,9&)@+I-@4```^V1C3!X`@#A00*``"+@$P(``"C
+M`````&8/ML!FB48@#[9&-,'@"`.%!`H``(N`1`@``*,`````B<+!Z`AFB48B
+M#[;"P>`(9@E&(&:!?B)`074)QD8F&>G:!```QD8F`^G1!```#[9&-,'@"`.%
+M!`H``(N`1`@``*,`````B$8=#[9&-,'@"`.%!`H``(N`3`@``*,`````J`AT
+M!L9&'@SK'*@$=`;&1AX+ZQ+1Z(/@`8/X`1G`]]"#X`J(1A[&1B8$Z6\$```/
+MMD8TP>`(`X4$"@``BX!,"```HP````"#R`B(1BS&1B8%Z4@$``#&1B8&Z3\$
+M```/MD8TP>`(`X4$"@``BX!,"```HP````"`?BL!&<"#X`*#P!2(1B;I$P0`
+M`(I&*T"(1BLZ1A]S"<9&)A;I_@,``,9&*P#&1B87@^P,:""A!P#H_/___X/$
+M$.GA`P``QD8F%.G8`P``QD8F".G/`P``QD8F%.G&`P``QD8N`NC\____B49P
+MQD8F%>FQ`P``#[9&-,'@"`.%!`H``(N`3`@``*,`````#[;`B40D%`^V1C3!
+MX`@#A00*``"+@$0(``"C``````^VP,'@"`E$)!3H_/___XE&=(M$)!2#X`^#
+M^`-U#X!^+@!T"<9&)@KI30,``(M&="M&<"U`#0,`>`:`?BX`=!;&1B85@'XN
+M``^$+`,``/Y.+NDD`P``#[9&*X-\ACP`#X3O````QD0D$P"`>PH`=D:-2SB)
+M3"0,@^P,_W0D&.C\____B40D*`^V1BN#Q!"+5"08.52&/'0>BTPD#(M!!(E1
+M!(D*B4($B1#^1"03BD0D$SA#"G?!_DL*BU0D&(-Z'`!T=8M"',=`8`````#V
+M0B0$=2G^A5<,``"#[`Q5Z/S___^#Q`QJ`8M,)""+01P/MD`!4%7H_/___X/$
+M$(/L!(M$)!S_<!S_M20%``!J`>C\____@\0,BU0D'/]R'/^U)`4``&H&Z/S_
+M__^+3"0HQT$<`````(/$$`^V1BO'1(8\`````(/L"/]T)"!5Z/S___^#Q!#&
+M1B8)Z1T"```/MD8TP>`(`X4$"@``BX!,"```HP`````/MM`/MD8TP>`(`X4$
+M"@``BX!$"```HP````#!X`@)PHE6.(!^)@IT"/?"```!`'0.QD8F"^G+`0``
+M_DL*ZW+&1B8,#[9&*X-\ACP`=%/&1"0+`(!["@!V6(U#.(E$)`2#[`S_="00
+MZ/S___^)1"0H#[9&*X/$$(M4)!@Y5(8\=+F+3"0$BT$$B5$$B0J)0@2)$/Y$
+M)`N*1"0+.$,*=\'K$(/L#%7H_/___XE$)"B#Q!"#?"08``^$>`$```^V1BN+
+M5"08B52&/(I&+XB"L@```.DO`0``QP0D/T(/`(M#&/9`*@AU*H/L#%7H_/__
+M_\<$)`$```#H_/___X/$$/\,)(,\)/]T"8M#&/9`*@ATUL9&)@GI[`````^V
+M1C3!X`@#A00*``"+@$P(``"C``````^VP(E$)!0/MD8TP>`(`X4$"@``BX!$
+M"```HP`````/ML#!X`@)1"04BT0D%"7_#P``/1,!``!T!STC`0``=3#&1B88
+MBT0D%"7_#P``/1,!``!U!L9&+PCK>HM$)!0E_P\``#TC`0``=6K&1B\)ZV0/
+MME8J#[9&'T@YPGT,_D8J_D8KQD8F!^M+QD8F`&:+1C*#X/>#R`)FB48R@W]0
+M`'00@^P(C4=04%7H_/___X/$$(/L"%=5Z/S____&0P7_@\0(4U7H_/___X/$
+M$.LUQD8F`XGV@W]0`'02@^P(C4=04%7H_/___X/$$(GV@^P(5U7H_/___X/$
+M"%95Z/S___^#Q!"#Q!Q;7E]=PY!55U93@^P<BWPD,(ML)#3'1"08`````,9$
+M)!,`9H%]$(4`#X>(````#[=%$("\.)@$``#_='IF@WT0?W<?#[:4.)@$``"+
+MCU@%``"-!-+!X`(IT(M$P2B*2`3K5F:!?1"!`'<H#[=%$`^VA#B8!```BX^0
+M!0``C01`C03`B<+!X@4IPHM$D0B*2`3K)@^W11`/MH0XF`0``(N7=`4``(T$
+M0(T$@(M$PE2*2`3K!8UV`+'_L_]F@7T0A0!W"P^W11"*G#B8!```#[;#C01`
+MC02`BY=T!0``C03"B40D%`^VT0^VM#H>!0``C01VP>`#*?"-M(<H`0``@/G_
+M=!B`O#H>!0``_W0.@/O_=`F`?10&=2^-=@"#?5``=!*#[`B-15!05^C\____
+M@\00B?:#[`A55^C\____@\00Z18&``")]H!]%`!T$H/L"%97Z/S___^#Q!#I
+M_`4``(M4)!0/MD(F@^@-@_@$#X>T!0``_R2%M!\``(M,)!0/MD$TP>`(`X<$
+M"@``BX!,"```HP`````/MM`/MD$TP>`(`X<$"@``BX!$"```HP````#!X`@)
+MPL9$)!(`QD0D$0"S`(!Y'P!V-8UV``^VR[@!````T^"%PG0:_D0D$XM$)!2#
+M?(@\`'0&_D0D$>L%_D0D$I!#BTPD%#A9'W?.@'PD$@!T"(M$)!2`2"T!@'PD
+M$0!T"(M,)!2`22T"@'PD$P$/A6$!``"S`(M$)!2`>!\`=E(/MLNX`0```-/@
+MA<)T(X/L!%%75NC\____B40D*(/$$(7`=!F)<"B+5"04B5`PZPV00XM,)!0X
+M61]WQ>L5BT0D%(A8*SA8'W8)QD`F#NFC!```BU0D%#A:'P^%E@0``(/L!&H!
+M#[9&"5!7Z/S____&1"0;`(/$$(!^"@`/AI<```"-7CB#[`Q3Z/S___^)1"0H
+M@\00BT,$BTPD&(E+!(D9B4$$B0B#>1P`=!Z#[`3_<1S_MR0%``!J!>C\____
+MBT0D*(!()`*#Q!"#[`3_="0<:@96Z/S___^#Q!"+5"08@'I+`'0B@^P,5^C\
+M____QP0D`0```.C\____@\00BTPD&(!Y2P!UWOY$)`N*1"0+.$8*#X=L____
+M@WU0`'00@^P(C4504%?H_/___X/$$(/L"%57Z/S___^+5"0DQD(M`,9&!0")
+M-"3H_/___X/$$.G5`P``D(M,)!1F@4DR@`"S`(!Y'P!V4P^VR[@!````T^"%
+MPG0D@^P$45=6Z/S___^)1"0H@\00A<!T&HEP*(M4)!2)4##K#HGV0XM,)!0X
+M61]WQ.L5BT0D%(A8*SA8'W8)QD`F#^D[`P``BU0D%#A:'P^%+@,``(/L!&H!
+M#[9&"5!7Z/S____&1"0:`(/$$(!^"@`/AI<```"-7CB#[`Q3Z/S___^)1"0H
+M@\00BT,$BTPD&(E+!(D9B4$$B0B#>1P`=!Z#[`3_<1S_MR0%``!J!>C\____
+MBT0D*(!()`*#Q!"#[`3_="0<:@96Z/S___^#Q!"+5"08@'I+`'0B@^P,5^C\
+M____QP0D`0```.C\____@\00BTPD&(!Y2P!UWOY$)`J*1"0*.$8*#X=L____
+M@WU0`'00@^P(C4504%?H_/___X/$$(/L"%57Z/S___^+5"0DQD(M`,9&!0")
+M-"3H_/___X/$$.EM`@``D(M,)!0/MD$TP>`(`X<$"@``BX!,"```HP`````/
+MMM`/MD$TP>`(`X<$"@``BX!$"```HP````#!X`@)PO?"```$`'0&]D$M`742
+M]\+___O_=!>+1"04]D`M`G0-BU0D%,9")@_ISP$``(M,)!3&02T`Z?8!``"[
+M/T(/`(M&&/9`*@AU)X/L#%?H_/___\<$)`$```#H_/___X/$$$N#^_]T"8M&
+M&/9`*@ATV8M$)!3&0"80Z8`!``"+5"04#[9"-,'@"`.'!`H``(N`3`@``*,`
+M````#[;`B40D#`^V0C3!X`@#AP0*``"+@$0(``"C``````^VP,'@"`E$)`R+
+M1"0,@^`/@_@##X77````]D(M`70+QD(F$NL-_DX*ZW.+3"04QD$F$HM4)!0/
+MMD(K@WR"/`!T3,9$)`D`@'X*`'91C5XX@^P,4^C\____B40D*(M,)"0/MD$K
+M@\00BU0D&#E4@3QTM(M#!(E3!(D:B4($B1#^1"0)BDPD"3A."G?$ZQ"#[`Q7
+MZ/S___^)1"0H@\00@WPD&``/A-````"+5"04#[9"*XM,)!B)3((\BT0D#"7_
+M#P``/1,!``!U"<:!L@````CK<XM$)`PE_P\``#TC`0``=6.+1"08QH"R````
+M">M6B?:+5"04QD(F$^M*BTPD%`^V033!X`@#AP0*``"+@$P(``"C``````^V
+M033!X`@#AP0*``"+@$0(``"C``````^V02V#X`&#^`$9P/?0@\`3B$$FB?:#
+M?5``=!*#[`B-15!05^C\____@\00B?:#[`A55^C\____@\0(_W0D'%?H_/__
+M_X/$$(GV@\0<6UY?7<.+1"0$BT@$@>D``@$`#[94)`R#X@?!X@B`SB`/MD0D
+M",'@"`'(B9`<Q0``9HN`',4``&:C``````^VP,.+1"0$BT@$@>D``@$`#[94
+M)`R#X@?!X@B*5"00@,X0#[9$)`C!X`@!R(F0',4``,-55U93@^P,QD0D"P#&
+M1"0*`+W_____QD0D`P"^P.'D``^V3"0#0;L!````T^.Q`)`/ML%`B<(/K].)
+M\(G7N@````#W]XE$)`2Z_____XM\)"`Y^'<$B?HIPCGJ<PZ)U8I$)`.(1"0+
+MB$PD"D&`^0]VO_Y$)`.`?"0#!W:D#[9$)`K!X`,*1"0+#[;`@\0,6UY?7<.0
+M5U93BUPD$(V[Q`H``&H`:@</MG0D'%93Z!____\/MD<!4&H#5E/H$?___X/$
+M(%M>7\.)]E93@^P$BW0D$(I$)!2(1"0#NP````")]FH"#[9$)`=05NBF_O__
+M@\0,J`AT![@`````ZQN#[`QJ`>C\____@\000X'[#R<``';.N/\```"#Q`1;
+M7L.-=@!3BEPD#&H##[9$)!10_W0D$.A>_O__@\0,.-@/E,`/ML!;PY!64X/L
+M!(MT)!"*1"04B$0D`XI$)!B(1"0"#[;`4&H!#[9<)`M35NAA_O__:D!J`E-6
+MZ%;^__^#Q!A35NA$____@\00NO\```"%P'5I@WPD'`!T0?9$)`(!=!X/MD0D
+M`U!J0%;H=/___X/$#+K_````A<!T0>LZB?8/MD0D`U!J&%;H5O___X/$#+K_
+M````A<!T(^L<#[9$)`-0:BA6Z#K___^#Q`RZ_P```(7`=`>)]KH`````B="#
+MQ`1;7L.-=@!75E.+?"00BEPD%`^V="08@^P(#[;#4%?HI_[__X/$$+K_____
+MA<!U-@^VPU")\@^VPE!7Z./^__^#Q`RZ_____X7`=!IJ`0^VPU!7Z#_]__^+
+M5"0HB`*Z`````(/$#(G06UY?PXUV`%575E.#[`R+?"0@BD0D)(A$)`L/MG0D
+M*+T`````B?*$T@^$S0```&ID:@(/MMA35^@O_?__@\0(4U?H'?[__X/$$(7`
+M=0YJ`U-7Z-G\__^#Q`R)]FH!B?(/ML)0#[9$)!-05^AP_O__@\00NO____^$
+MP`^%5`$``+L`````.UPD,`^-0P$```^V="0+BT0D,$@YV'4K:D!J`E97Z,3\
+M__^+1"0\`=A0:EA65^CH_O__@\0@A<`/A0\!``#K*8UV`&I$:@)65^B9_/__
+MBT0D/`'84&I05E?HO?[__X/$((7`#X7D````14,[7"0P?)[IUP```)!HH(8!
+M`.B6_/__#[;`B00D:@,/MEPD$U-7Z%+\__^#Q`A35^A`_?__@\00A<!T(0^V
+MA\4*``!0:@-35^@P_/__NO____^#Q!#IBP```(UV``^V7"0+4VI@5^AB_?__
+M@\0,A<!U&P^VA\4*``!0:@-35^CZ^___NO____^#Q!#K6+L`````.UPD,'TR
+M#[9T)`MJ1&H"5E?HU?O__XM$)#P!V%!H@````%97Z/;]__^#Q""%P'4(14,[
+M7"0P?-,/MH?%"@``4&H##[9$)!-05^B=^___@\00B>J)T(/$#%M>7UW#B?96
+M4X/L$(M<)!S_="0H_W0D*`^V1"0H4&H`4^@)_O__B<:#Q"!J5&H":@!3Z%S[
+M__^)\(/$%%M>PU93@^P0BUPD'/]T)"C_="0H#[9$)"A0:@%3Z-']__^)QH/$
+M(&I4:@)J`5/H)/O__XGP@\046U[#55=64X/L#(M\)""+;"0PBD0D)(A$)`L/
+MMG0D*&ID:@(/MMA35^CR^O__@\0(4U?HX/O__X/$$(7`=0UJ`U-7Z)SZ__^#
+MQ`R0:@&)\@^VPE`/MD0D$U!7Z#3\__^#Q!"Z_____X3`=3_K"KK_____ZS:-
+M=@"[`````#GK?24/MG0D"XGV:@"+5"0P#[8$&E!65^CZ^___@\00A,!US4,Y
+MZWSBN@````")T(/$#%M>7UW#C78`5E.#[!"+7"0<_W0D*/]T)"@/MD0D*%!J
+M`%/H+?___XG&@\0@:E1J`FH`4^@X^O__B?"#Q!1;7L-64X/L$(M<)!S_="0H
+M_W0D*`^V1"0H4&H!4^CU_O__B<:#Q"!J5&H":@%3Z`#Z__^)\(/$%%M>PU57
+M5E.#[!R+;"0PBT0D-(M0&$*)5"08BDH"B$PD%\9$)!4`QT0D$`````"^````
+M`(N=)`4``+&`#[9\)!>-=@`/ML%F#[:4&)@$``!F@?K_`'1-B?!&.?AU1H#Y
+M@7<?#[?"C01`C03`B<+!X@4IPHN#D`4``(T4D(E4)!#K(HM$)#3'0"S_____
+M@^P,4/]0*+@`````@\00Z:L!``"-=@!!@/F%=IJ+G20%``"!PV`,``"Q@`^V
+M?"07C78`#[;!9@^VE!B8!```9H'Z_P!T38GP1CGX=4:`^8%W'P^WPHT$0(T$
+MP(G"P>(%*<*+@Y`%``"-%)")5"00ZR*+5"0TQT(L_____X/L#%+_4BBX````
+M`(/$$.DO`0``C78`08#YA7::BTPD&(I1!`^V:07!Y1`/MD$&P>`("<4/MD$'
+M"<4/MGD(P><0#[9!"<'@"`G'#[9!"@G'@WPD$``/A,$```#&1"06`(M$)!"`
+M>#``#X:N````B<:#QB@/MM*)5"0,D(/L#%;H_/___XU8^(/$$(M6!(E&!(DP
+MB5`$B0*`>R$-=`:`>R$B=62+5"08#[9"`X/X.W0B@_@\=5+&1"05`8/L#/]T
+M)$!55_]T)"13Z/S___^#Q"#K-8M$)!B#P`N#[`154/^SY````.C\____@\0$
+M_W0D0%57_W0D)%/H_/___\9$)#4!@\0@C78`_D0D%HI,)!:+1"00.$@P#X=?
+M____N`$```"`?"05`'4;BU0D-,="+/____^#[`Q2_U(HN`````"#Q!"0@\0<
+M6UY?7<-55U93@^P<BT0D-(MX&$>+4!!*B50D&,=$)!0`````BT@<B4PD$(!_
+M`0%U#,=`+`````#I0@(``(!_`0)U6H!_`@%U1(M$)#"#N"@%````=`J+D"@%
+M``")5"0PBTPD,(N!)`4``(I7`XB05@P``(I7`XB0MA@``(M$)#3'0"P`````
+MZ?,!``"0BU0D-,="+/[____IX@$``(!_`01U(HI'`X/H.SP!=QB#[`C_="0\
+M_W0D/.CX_/__@\00Z=X!``"`?P$#=7J`?P(!=6(/ME<#BTPD,`^V02:-#`")
+MT)GW^3G1?CJ#[`0/MD<$4`^VVE/_="0\Z/S___^#Q`P/MD<$4%/_="0\Z/S_
+M__^+5"1$QT(L`````(/$$.E<`0``BTPD-,=!+/[____I3`$``(M$)#3'0"S^
+M____Z3P!``")]HM4)#"#NB@%````=`J+BB@%``")3"0PB?N`?P$`#X2H````
+MD`^V,T.*`T.(P0^VT/;"`70_BVPD%`'UBT0D-#MH%`^'U````(/L#%:+1"0@
+M`T0D)%!2:@#_="1,Z*/X__^#Q"`Y\`^%L````(EL)!3K3XGVC2PSB>@I^(/`
+M`CM$)!@/CY0```"#[`Q64P^VP5!J`/]T)$SHL/K__X/$((7`=7F)ZX!]``!U
+M!H!]`0!T&H/L#&@0)P``Z/S___^#Q!"`>P$`#X59____#[8SA?9T5FI4:@)J
+M`/]T)#SHA_7__X/$$(M4)#2+0A0K1"04.<9V`HG&@^P,5HM$)"`#1"0D4&H`
+M:@#_="1,Z/7W__^#Q""%P'@&`40D%.L,BTPD-,=!+/____^0:E1J`FH`_W0D
+M/.@Q]?__@\00BT0D-(-X(`!T"8M`((M,)!2)"(/L#/]T)$"+1"1$_U`H@\00
+M@\0<6UY?7<.)]H/L#(M$)!"#N"@%````=`:+@"@%``"`N%8,````=1G&!2,$
+M```!:B!H(`0``&H.4.C\____@\00@\0,PX/L#(M$)!"#N"@%````=`:+@"@%
+M``#&!2,$````:B!H(`0``&H.4.C\____@\0<PU=64XM\)!"#[`0/MG0D'%8/
+MMEPD'%/_MR0%``#H_/___X/$#%935^C\____@\006UY?PY"+5"0$BTPD"(M"
+M!&;'@&S^___LF(M"!&:)B&C^___#D%.#[`B+7"00BD0D%(I,)!C&!"0"B>+&
+M1"0!`\9$)`(%QD0D`P;&1"0$!\9$)`4+QD0D!@S&1"0'#SP'=T&$R707#[;`
+M#[8,`KC^____T\!F(8-4#```ZQ4/ML`/M@P$N`$```#3X&8)@U0,```/MX-4
+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
+M__]T)!Q3Z&3^__^#Q!AH$"<``%/HMOW__X/$$+K_____A<!U&HM#!(N0#,;_
+M_XD5`````(M$)!B($+H`````B="#Q`A;PY!64X/L&(M<)"2+="0HQD0D%_^-
+M1"074%93Z/S___^#Q!"Z_____X7`=7JZ`````(!\)!,`=&Z#[`Q3Z.W^__^#
+MQ!"Z_____X/X_W185FH`:@"+@UP,```/MD`*4(U$)!Q04^AU_?___W0D)%/H
+MM_W__X/$&&@0)P``4^@)_?__@\00NO____^%P'49:."3!`!J`&H#4^@B_O__
+M@\00@_@!&=+WTHG0@\046U[#4X/L%(M<)!Q3Z'+^__^#Q!"Z_____X/X_W1;
+M_W0D%&H`:@"+@UP,```/MD`&4(U$)!104^CW_/___W0D'%/H.?W__X/$&&@0
+M)P``4^B+_/__@\00NO____^%P'49:."3!`!J`&H#4^BD_?__@\00@_@!&=+W
+MTHG0@\0(6\.-=@!64X/L$(MT)!R+7@2!ZP`"`0!6Z.C]__^+1"0HB8,(R```
+M_W0D)&H$:@"+AEP,```/MD`%4(U$)"!05NAP_/__@\0H_S0D5NBP_/__:!`G
+M``!6Z`7\__^#Q!"Z_____X7`=1EHB!,``&H`:@%6Z![]__^#Q!"#^`$9TO?2
+MB="#Q`1;7L-55U93@^P,BVPD)(M\)"B+="0LNP`````Y\W,C@^P$_S0?C40=
+M`%#_="0LZ$S___^#Q!"#^/]T#(/#!#GS<MVX`````(/$#%M>7UW#5E.#[`2+
+M7"00BD0D'(MS!('N``(!`#P$=@*P!/]T)!0/ML!0:@&+@UP,```/MD`$4(U$
+M)!!04^BD^____W0D&%/HYOO__X/$&&@0)P``4^@X^___@\00NO____^%P'4;
+MBX8,R```HP````")!"2)PHM$)!B)$+H`````B="#Q`1;7L.055=64X/L#(ML
+M)"2+="0HBT0D+`'HB40D!(GK@^/\B>^#YP-T1VH$C40D#%!3_W0D+.A&____
+MC4,$@\00N00````[1"0$=@B+3"0$*>D!^8GZ.<]S$HU\)`B-=@"*!!>(!D9"
+M.<IR]8/#!(GVBWPD!(/G_#G[<R6-;"0(D&H$55/_="0LZ//^__^+1"08B0:#
+MQ@2#Q!"#PP0Y^W+@.UPD!',V:@2-1"0,4%/_="0LZ,G^__^+3"04*=FZ````
+M`(/$$#G*<Q.-7"0(C78`B@03B`9&0CG*<O60N`````"#Q`Q;7E]=PXUV`%93
+M@^P$BUPD$,<$)`````"+<P2![@`"`0#&@U@,````:@!J`FH!#[8%"````%"-
+M1"004%/H._K___]T)!A3Z'WZ__^#Q!AH$"<``%/HS_G__X/$$(7`=3R+A@S(
+M``"C`````(D$)#V_0P``=2?'@T@,``"_0P``QX-,#``````@`,>#4`P````0
+M``!FN```ZPB-=@"X_____X/$!%M>PY!64X/L!(M<)!#'!"0`````BW,$@>X`
+M`@$`QH-8#````&H`:@)J`0^V!0@```!0C40D$%!3Z)OY____="084^C=^?__
+M@\08:!`G``!3Z"_Y__^#Q!"%P'4\BX8,R```HP````")!"0]'V,``'4GQX-(
+M#```'V,``,>#3`P`````!`#'@U`,``````$`9K@``.L(C78`N/____^#Q`1;
+M7L.05E.#[`2+7"00QP0D`````(MS!('N``(!`,:#6`P```%J_VH":@$/M@4(
+M````4(U$)!!04^C[^/___W0D&%/H/?G__X/$&&@0)P``4^B/^/__@\00A<!U
+M:(N&#,@``*,`````B00D/1]#``!T*ST?1```=4S'@T@,```?1```QX-,#```
+M```$`,>#4`P``````0!FN```ZRW'@T@,```?0P``QX-,#``````$`,>#4`P`
+M`````0"X`````.L(C78`N/____^#Q`1;7L.05E.#[`2+7"00QP0D`````(MS
+M!('N``(!`,:#6`P```!J`&H":@$/M@4(````4(U$)!!04^@O^/___W0D&%/H
+M<?C__X/$&&@0)P``4^C#]___@\00A<!U<(N&#,@``*,`````B00D/>\1``!T
+M"SWO$@``="SK4HGVQX-(#```[Q$``,>#3`P`````!`#'@U`,``````$`N```
+M``#K,(UV`,>#2`P``.\2``#'@TP,``````0`QX-0#``````!`+@`````ZPB-
+M=@"X_____X/$!%M>PY!3@^P4BUPD'%/HLOW__X/$$(7`=1/'@UP,````````
+MN@````#K:HGV@^P,4^@O_O__@\00A<!U$<>#7`P```````"Z`````.M'@^P,
+M4^C._/__@\00A<!U$<>#7`P```````"Z`````.LF@^P,4^BY_O__@\00NO__
+M__^%P'41QX-<#````````+H`````B?:)T(/$"%O#D%=64XM<)!"+?"0<BD0D
+M((MT)!BZ`````(.[7`P````/A-,```"$P'0[@WPD%/]U$&:+@T@,``!FB0;I
+ML0```)!75O]T)!Q3Z%3[__^#Q!"Z`````(7`#X6<````Z8\```"-=@"#?"04
+M_W41@#X/#Y2#60P``+H!````ZWRZ`````("[60P```!T;HM$)!2Z`````/>S
+M4`P``(72=3N`NU@,````=!F#[`C_="0<4^C\____@\00N@````"%P'4Y@^P(
+M_W0D'%/H`/G__X/$$+H`````A<!U(%=6_W0D'%/H[/G__X/$$+H`````A<!U
+M"+H!````C78`B=!;7E_#D)!55U93@^P4BU0D*(L"BX!@`/__HP````"#X`-T
+M!X/X`70.ZSK'@C`%```"````ZRZA9`4``(D4A4`%``!`HV0%``"A:`4``(D4
+MA5`%``!`HV@%``#'@C`%```!````H6`%``")%(4`!0``0*-@!0``@#T-````
+M``^%C0```,9$)`L`A<`/CF@"``"#/4`%````="P/ME0D"[L`!0``BPU`!0``
+M.PR3=!>+!).)B"@%``"+%).A0`4``(F"B!$``(,]4`4```!T+`^V5"0+NP`%
+M``"+#5`%```[#)-T%XL$DXF(+`4``(L4DZ%0!0``B8*,$0``_D0D"P^V1"0+
+M.P5@!0``?(7IZ`$``,9$)`L`H4`%``")1"00A<`/A-X```"]`````(,]8`4`
+M```/CK````")]HGI#[;1BP25``4``(.X*`4````/A8,```"+3"00.<AT>[X`
+M````B@T-````A,ET;(E4)`2+5"0$N``%``"+')`X2R%R0P^V4R$/ML&)QP,]
+M]!8``#GZ<S"+5"00.$HA<B</MD(A.?AS'XF3*`4``(M,)`2Z``4``(L$BHM,
+M)!")B(@1``#K%9!&B?(/ML+!X`6*B`T```"$R769D$6)Z0^VP3L%8`4```^,
+M4O____Y$)`L/MD0D"XL$A4`%``")1"00A<`/A2+____&1"0+`*%0!0``B40D
+M#(7`#X3>````O0````"#/6`%````#XZP````B?:)Z0^VT8L$E0`%``"#N"P%
+M````#X6#````BTPD##G(='N^`````(H-#0```(3)=&R)%"20BQ0DN``%``"+
+M')`X2R%R1`^V4R$/ML&)QP,]]!8``#GZ<S&+5"0,.$HA<B@/MD(A.?AS((F3
+M+`4``(L,)+H`!0``BP2*BTPD#(F(C!$``.L7C78`1HGR#[;"P>`%BH@-````
+MA,EUF9!%B>D/ML$[!6`%```/C%+____^1"0+#[9$)`N+!(50!0``B40D#(7`
+M#X4B____@\046UY?7<.)]E575E.+;"04O@````"X`0```(`]#0````!T8>L'
+MN`$```#K6(GR#[;"P>`%1HJ(#0```(3)=$"+/?06``"-=@`X32%R'P^V52$/
+MML&-'#@YVG,1BT0D&#A((7((#[9`(3G8<KF)\@^VPL'@!4:*B`T```"$R77)
+MN`````!;7E]=PXUV`%.+3"0(BUPD#(N!,`4``+H!````.X,P!0``=PZ+@3`%
+M```[@S`%```9THG06\.)]HM4)`2+3"0(N``````[%7`7``!],HT44L'B`V:+
+M@N`6``!FB0%FBX+B%@``9HE!`HJ"Z!8``(A!"(J"Z18``(A!";@!````PU57
+M5E.#[`C'1"0$`````)"+1"0$P>`%B<-F@[@```````^$AP```+T`````@+@<
+M`````'1JB00DBU0D!(U$U0"--(4,````C7PD'+D$````_/.F#Y?"#Y+`.,)U
+M,[\0````BD0[#4"(1#L-@'P[#`!T'CI$.PQV&&8/ML!F#[9,.PRZ`````&;W
+M\8A4.PV)]D6+'"0/MH,<````.>A_F?]$)`2#?"0$`P^.8O___X/$"%M>7UW#
+MB?955U93@^P,QD0D"P#&1"0*`(UV`,9$)`D`:@`/MD0D#5`/MD0D$E`/MD0D
+M%U#H_/___XE$)!2_`````(/$$#L]<!<```^-3P$``(GVC01_P>`##[>0XA8`
+M`,'B$`^W@.`6```)PCM4)`0/A1T!``#&1"0(`(T$?\'@`XD$)(TL?P^V5"0(
+MB='!X05F@[D``````'5PBQPDBX/@%@``B8$`````BX/D%@``B8$$````BX/H
+M%@``B8$(````#[:!'````,'B`XT$`HI<)`N('(4-````#[:!'````(T$`HI<
+M)`J('(4.````#[:!'`````'"BD0D"8@$E0\```#^@1P```#K>P^V="0(B?/!
+MXP4/MHL<````B<BZ`````/<T[?06``"%TG1)C13U`````(T$"HI,)`N(#(4-
+M````#[:#'````(T$`HI,)`J(#(4.````#[:#'`````'"BD0D"8@$E0\```#^
+M@QP```#K$HUV`/Y$)`B`?"0(`P^&`?___XT$?_\$Q>P6``"-=@!'.SUP%P``
+M#XRS_O___D0D"0^$=O[___Y$)`J`?"0*'P^&8O[___Y$)`N`?"0+_P^%2_[_
+M_X/$#%M>7UW#C78`55=64X/L',=$)!0`````@SUL!0```'4/QP5L!0```0``
+M`.@-_O__@WPD-`!T!XM$)#3&``#'1"08`````+H`````.Q5P%P``?3^)]HM,
+M)!B-!$F-%,4`````BX+L%@```40D%(-\)#0`=`Z+3"0TB@$"@O`6``"(`?]$
+M)!B+1"08.P5P%P``?,.#?"0X``^$IP```,=$)!@`````BT0D&,'@!8G%9H.X
+M```````/A(@```"[`````("X'`````!T:XM4)!C!X@.)5"00B40D#(M$)!`!
+MV(TTA0P```"+?"0XN00```#\\Z8/E\(/DL`XPG4I@WPD-`!T#(J%'0```(M4
+M)#2(`HM$)!C!X`4/MH`<````B40D%.L2B?9#BVPD#`^VA1P````YV'^D_T0D
+M&(-\)!@##XYA____#[9$)!2#Q!Q;7E]=P[C`&```PXGVN)P```##B?:X!```
+M`,.)]E575E.#[`R+?"0@BW0D*(ML)"R-GF`,``"Y`````+K`&```B?"-=@"(
+M"$!*=?J);A"+%>`$``"-0@&CX`0``(A6*(M$)"2)1B#&1BD`9HL'9HE&&&:+
+M1P)FB48:BT<$B48<B6L0B%,HBT0D)(E#(,9#*0%FBP=FB4,89HM'`F:)0QJ+
+M1P2)0QP/MT8:/2(G``!_83T@)P``#XW"````/4`A```/A+<````]0"$``'\;
+M/2`A```/A*4````](B$```^$F@```.FI````/40A```/A(H````]1"$```^,
+MDP```"T0)P``@_@!#X>%````ZV^-=@`]8"<``'1E/6`G``!_(#U`)P``=%<]
+M0"<``'\)/3`G``!T2>M;/40G``!T0.M2/8(G``!T-SV")P``?PD]@"<``'0I
+MZSL]@)$``'0)/8"4``!T&>LK9L=&)("1QD8F!&;'0R2`D<9#)@3K%9!FQT8D
+M@)3&1B8$9L=#)("4QD,F!(I'"(A&*HI'"(A#*F@```0`:@!J`E7H_/___XD&
+M:``@``!J`&H`5>C\____B48(@\0@@SX`=`2%P'4*N`````#IX0```(L&C8@`
+M`@$`B4X$C9````(`B18%`$`"`(D#B4L$BT8(B4,(NP`````['7`7``!]3HLM
+M<!<``(T$6XT,Q0````"+!SF!X!8``'4OBX'P%@``0(F!\!8``(.Y[!8```!T
+M&3N![!8``'81N@````#WL>P6``")D?`6``!#.>M\N(M&!,>`((+__P'P`P"+
+M1@3'@"B"__\!``#H@^P(:GC_=A#H_/___XG")0!P``"#Q!`]`"```'84@^P$
+M:G@/ML)0_W80Z/S___^#Q!#_="0DZ)#Y__]6Z)+U__^X`0```(/$"(/$#%M>
+M7UW#B?93@^P4BUPD'%/H_/___X'#8`P``(D<).C\____N`$```"#Q!A;PXGV
+M5E.#[!"+="0<BYXD!0``@<-@#```5NC\____@\00@'XY`74&@'LY`70[@^P(
+MC9X0`0``4_]V%.C\____QX80`0``Z`,``,>&&`$```````")MAP!``"#Q`A3
+M_W84Z/S___^#Q!"#Q`1;7L.05E.#[!"+7"0<C;-@#```4^C\____B4,4B484
+MB9LD!0``B9XD!0``BX,P!0``B88P!0``B1PDZ/S___^)-"3H_/___XD<).C\
+M____@\00N@````"$P`^$A0```(/L#%;H_/___X/$$+H`````A,!T<(/L#%/H
+M_/___\<$)-`'``#H_/___XD<).C\____B1PDZ/S____'@Q`!``#H`P``QX,8
+M`0```````(F;'`$``(/$"(V#$`$``%#_<Q3H_/___X/$"&H`4^C\____@\0(
+M:@!6Z/S___^Z`0```(/$$)")T(/$!%M>PU575E.#[#R+7"10QD0D"&V-1"0(
+MQD`!_\9``B/&0`,4QD`$.L9`!>_&0`86QD`'DH.[*`4```!T!HN;*`4``+D`
+M````NB````"-1"00C78`B`A`2G7ZQD0D%`&]`````&H@C70D%%9J#E/H_/__
+M_X/$$(7`=4&#[`QH@!H&`.C\____:B!6:@]3Z/S___^#Q""#^"!U(8UT)""-
+M1"0(N0@```#\B<?SI@^7P@^2P#C"=06]`0```(GHA,!U$(/L#&B6`@``Z/S_
+M__^#Q!")Z@^VPH/$/%M>7UW#B?;#C78`55=64X/L#(ML)""+7"0DN0````"Z
+M>````(G8D(@(0$IU^H.],`4```$/E$,3BT4@B0.`2Q$09HM%&&:)0P1FBT4:
+M9HE#!HN%,`4``(A#;,9#$B!F@7T:("%T"&:!?1HB(74<QD,7`K[\"0``C7L\
+M_+D'````\Z5FI:3IA````&:+11HM$"<``&:#^`%V$&:!?1I`(70(9H%]&D0A
+M=4W&0Q<$9HM%&BT0)P``9H/X`7<5OAP*``"->SS\N0<```#SI6:EI.L]9H%]
+M&D`A=`AF@7T:1"%U+;X\"@``C7L\_+D'````\Z5FI:3K&,9#%PB#[`AH````
+M`(U#/%#H_/___X/$$(I#%_9C$HA#$(3`=03&0Q"`OK("``"->QC\N0<```#S
+MI:2#O2P%````=!*+A2P%``"+0`B)0V29B5-HZPJ+10B)0V29B5-HQT-@`"``
+M`(/$#%M>7UW#C78`BT0D!,:`EP````##5U93BW0D$(M^;(N')`4``(!X)P`/
+MA8H```"+7G"#[`B+5F`/MH*C````4`^V@J(```!0#[:"H0```%`/MH*@````
+M4`^V@I\```!0#[:"G@```%`/MH*=````4`^V@IP```!0#[:"UP```%`/M@:#
+MX`%0#[9&`E`/MD8!4/]V"&A<"@``Z/S___^#Q#S'1G``````_W8(5O]V>/_3
+M@\00ZSB-=@"#[`B-7GQ3_W<4Z/S____'1GST`0``QX:$````"%T&`(FVB```
+M`(/$"%/_=Q3H_/___X/$$%M>7\.-=@!55U93@^P,BVPD)`^W1"0HC13`P>("
+M*<*+3"0@BX%8!0``C1S0B[$D!0``@<9@#```B70D"(E=8(EK'(-[+`!U"H-[
+M,``/A)L#``"_`````(!-``&+0S")16B+0RR)162Q`(M$)""`>"L`=B6+<RB0
+M#[;1B=#!X`0!T(M4)"`[M((\"P``#X2&`@``03A**W??L8"+1"0@B[`D!0``
+M#[;!BH0PF`0``#S_="F#>RP`="(/ML"-!$"-!,")PL'B!2G"BX:0!0``C120
+M.U,L#X0T`@``1T&`^8%VP[&"BU0D((NR)`4``(GV#[;!BH0PF`0``#S_=!P/
+MML"-!$"-!("+EG0%``"-!,([0S`/A.P!``!'08#YA7;0L8`/ML&+="0(BH0P
+MF`0``#S_="F#>RP`="(/ML"-!$"-!,")PL'B!2G"BX:0!0``C120.U,L#X2?
+M`0``1T&`^8%VO[&"C78`#[;!BU0D"(J$$)@$```\_W0<#[;`C01`C02`BY)T
+M!0``C03".T,P#X1<`0``1T&`^85VS(M$)""`>#D!=4:#>RP`=!6#[`1J``^V
+M0TE0_W,LZ/S___^#Q!"#N^``````#X0"`@``@^P$:@`/MH/5````4/^SX```
+M`.C\____@\00C78`@[O@``````^$UP$``(M3+(E4)`2_`````(!Z,`!V18G6
+M@\8H@^P,5NC\____C4CX@\00BU8$B48$B3")4`2)`H"YUP```/]U#X!Y(0!U
+M"8.YX`````!U#$>)^8M$)`0X2#!WP(GZBTPD!#A1,`^%T````(J#UP```(A%
+M`K\`````@'DP``^&N0$``(G.@\8H@^P,5NC\____C4CX@\00BU8$B48$B3")
+M4`2)`H-Y'`!T0HM1'(I"`CJ!UP```'0T@WIP`'4N@WIT`'4HBH'7````B$("
+M@^P$#[=!&%"+1"0H_[`D!0``:@?H_/___X/$$(UV`$>)^HM,)`0X43!WD.D_
+M`0``B?B(10'IH?[__XGZB%4!Z9?^__^)^8A-`>F-_O__B?B(10'I@_[__XM4
+M)"`/MD(IC02!B(68````Z6K]__^*0TF(10+&@]<```#_OP````"+3"0$@'DP
+M``^&X0```(G.@\8H@^P,5NC\____C4CX@\00BU8$B48$B3")4`2)`H"YUP``
+M`/]T1\:!UP```/^#>1P`=#J+41R*0@(Z04ET+X-Z<`!U*8-Z=`!U(XI!28A"
+M`H/L!`^W01A0BT0D*/^P)`4``&H'Z/S___^#Q!"01XGZBTPD!#A1,'>(ZV*)
+M]HI#28A%`NM8BW0D(`^V1BF-!(&(10&(A9@```#K+[$`BT0D((!X*P!V(XMS
+M*(UV``^VT8G0P>`$`="+5"0@.[2"/`L``'3!03A**W?CBW0D(#A.*W4$QD4!
+M_\9%`@")]HU]((US8/RY"@```/.EC7T,C7-,L07SI8N#B````(E%2(N#C```
+M`(E%3&:+0S1FB4589HM#-F:)15J+0T"+4T2)15")552*0TJ(15SV0R0$=2Z+
+M1"0@@+A7#````'0/_HA7#```@+A7#````'42@^P,_W0D+.C\____@\00C78`
+M@^P$:@"+0QP/MD`!4/]T)"SH_/___P^V0R"#Q!"H`G0/J`1T"Z@!=0>`30`"
+MZP60@&4`_8I3)-#J@^($BD4`@^#["="(10"#[`Q5Z"CZ__^#Q!Q;7E]=PU57
+M5E.#[!R+?"0PBW0D-(ML)#BY`````+J<````B>B0B`A`2G7ZB74(@_X_?@F!
+MQV`,``"#[D"X`````(.\MY@"````#X5I`@``B:RWF`(``(E];(M$)#R)17"+
+M1"1`B45XN`$```"`?SD!#X5"`@``9L=$)!K_`('^A0```'\.9@^VA#Z8!```
+M9HE$)!IF@7PD&O\`#X0(`@``#[=4)!J+CU@%``"-!-+!X`(IT(T4Q0````#V
+M1`HC!`^$XP$``(M$"B`E`/__`#T``/\`#X7/`0``C1P*]D,D!`^$-@$``,:#
+ML``````/MD,@J`)T,J@$="ZH`70JQD,B!<9#(P13#[9#25#_<RS_<RCH_/__
+M_X/$$.F#`0``QH.Q`````>M?#[9#(*@"=7:H!'1RJ`%T;HMK*,9#(@/&0R,$
+MQT0D%`````"`?0H`=#:-=3B#[`Q6Z/S___^)PH/$$(M&!(E6!(DRB4($B1"`
+M>B+_=`0YVG6F_T0D%`^V10H[1"04?\V`N[$````!#X0.`0``@^P(4U?H_/__
+M_X/$$.G\````#[9#(*@"#X3P````J`0/A.@```"H`0^%X````(M#*(I`";X`
+M````@'\F`'8G#[;HB?(/MLJ)Z-/XJ`%T#X/L!&H`45?H_/___X/$$$:)\#A'
+M)G?<QD,C!L9#(@5FQX.0``````"#[`A35^C\____@\00Z84```"+6RB)7"00
+MQD0D#P"`>PH`=F")VH/".(E4)`B#[`S_="04Z/S___^)PX/$$(M4)`B+0@2)
+M6@2)$XE#!(D8@'LB_W0>@'LA(G0&@'LA#742QX2WF`(```````"X`````.L[
+M_D0D#XI$)`^+5"00.$(*=ZF#[`0/MT0D'E!55^C\____@\00N`$```#K$,>$
+MMY@"````````N`````"#Q!Q;7E]=PY!55U93@^P,BW0D((ML)"2+?"0HBUY@
+MA=MU#H/L#%?_U8/$$.D``0``@WYT`'4&@WYP`'00@^P,5__5@\00Z>8```")
+M]H"[L``````/A<L```"+4R@/MD((J!`/A;P```"H"`^%M````(L2B50D"(![
+M2P!T$8/L!%-J!O]S*.C\____@\00B6YTB7YX#[9#(*@"="FH!'0EJ`%T(<9#
+M(@7&0R,$4P^V0TE0_W,L_W,HZ/S___^#Q!#K;XUV``^V0R"H`G4DJ`1T(*@!
+M=!S&0R(#QD,C!(/L"%/_="04Z/S___^#Q!#K0HGV#[9#(*@"=#BH!'0TJ`%U
+M,,9#(@7&0R,&9L>#D```````@^P(4_]T)!3H_/___X/$$.L-D(/L#%?_U8/$
+M$(UV`(/$#%M>7UW#5U93BU0D$(MT)!2+0BB+.(M>2`^V1A2#^"!T1(/X('\+
+MA<!T&X/X!G\NZR2#^")T+X/X(GP:@\"`@_@!=QKK$(M"',=`!`````#&0UX!
+MZQ#&0UX-ZPJ)]K@`````ZS&0@WY0`'02@^P(C4904%?H_/___X/$$(GV@^P(
+M5E?H_/___XD<)/]3:+@!````@\006UY?PU575E.#[!R+?"0PBVPD-(M';(E$
+M)!B+122).(-_8`!U$\9%7@*#[`Q5_U5H@\00Z<@$``"+1V#V0"0"=!/&15X"
+M@^P,5?]5:(/$$.FL!```@^P,_W0D).C\____B<:#Q!"%P'43QD5>`H/L#%7_
+M56B#Q!#IA`0``,=`9`````"):$B+1V")1AB+1V!FBT`89HE&$,9&%(`/MD5<
+M@_@"#X1%`0``@_@"?PF%P'0<Z88"``"#^`,/A*P!``"#^`0/A'\!``#I;P(`
+M`(M'8/9`-`$/A)````#V15T"=`;&1B2(ZQ.*15V#X`0\`1G`@^`%@^AVB$8D
+MBTU(BUU,9HM54&:)5"06QD8E`(G8P>@8B$8FB=C!Z!"(1B>)V,'H"(A&*(A>
+M*8G(#ZS8&(A&*HG(#ZS8$(A&*XG(#ZS8"(A&+(A.+<9&+@#&1B\`9HM$)!9F
+MP>@(B$8PBD0D%HA&,<9&,@#&1C,`ZVOV15T"=`;&1B0HZQ.*15V#X`0\`1G`
+M@^`%@\`JB$8DBTU(BUU,9HM54&:)5"06QD8E`(G(#ZS8&(A&)HG(#ZS8$(A&
+M)XG(#ZS8"(A&*(A.*<9&*@!FBT0D%F;!Z`B(1BN*1"06B$8LQD8M`(M'8`6T
+M````B48XQD8<((-.9`+I6`$``(!]2!!W!?8'`G4)QD5>!NGG`@``#[9%2(U6
+M)(/L!%#_=5!2Z/S___^+1V`%M````(E&.,9&'""!3F0``!``QD85JX/$$/9%
+M708/A`D!``"+14R)1B#I_@```(I%78/@,#P@=1'&1B0;QD8E`<9&*`#IXP``
+M`,9&)#7IV@```(M'8`^V0""H`70$J`1U"<9%7@;I90(``(%.9```(`!FBT54
+M9CM%2G0V#[9%4X/X0G0M@_A"?P>#^$!T(^L8/;````!T!SWL````=0IFBT54
+M9HE%2NL)QD5>!ND>`@``QD8DL&:+14B(1B5FBT5*B$8F9HM%3(A&)V:+14Z(
+M1BAFBT50B$8IBD52B$8JBD53B$8K9@^V14F(1BQF#[9%2XA&+68/MD5-B$8N
+M9@^V14^(1B]F#[9%48A&,/9%709T&@^W153!X`F)1B"#3F0$ZPJ0QD5>!NFC
+M`0``C7X\QT9LU&8&`(I%7:@&#X1X`0``NP````"H`G0&@TYD".L$@TYD$(-]
+M8`!T"_9%70%T!8M=8.LJ@WUD`'0D@^P$:@"+5"0@_[(D!@``5?]59(/$$(7`
+M=`J+1"08BY@D!@``A=MT.(/L#%;H_/___X/$"&H`5^C\____@\00_S/_<PS_
+M<PA7Z/S___^#Q!"-0P2#PQ"#.`!TY.GR````@^P,_W0D).C\____B40D((/$
+M$(7`=0G&15X&Z>0```"+5"00BT((B48TB590N0````"Z``(``)"("$!*=?KV
+M15T$#X2#````]D9F('06@^P$_W8@_W58_W8TZ/S___^#Q!#K9_9&9A!T88M&
+M-(E$)`R#?6``=`OV15T!=06+76#K)(/L!&H!BU0D(/^R)`8``%7_562#Q!"%
+MP'0*BT0D&(N8)`8``(/L!/\S_W,(_W0D&.C\____BQ,!5"0<@\00C4,$@\,0
+M@S@`=-N#[`AJ`%?H_/____]V((M$)"3_<!#_<`Q7Z/S___^#Q"#K!(-.9`&#
+M[`A6_W0D).C\____@\00ZQB#[`A6_W0D).C\____B2PD_U5H@\00B?:#Q!Q;
+M7E]=PU575E.#[!R+="0PBWPD/(I$)$2(1"0;QT0D#/____^)^L'B"6:)5"0*
+MBT9@B40D!(-^8`!T"8"^EP````!T"8M$)`SI4`,``(M4)`2+4BB)%"2+;FQF
+MQX:4````$">#[`Q5Z/S___^)PX/$$(M$)`R%VP^$(`,``(/L#%7H_/___XE$
+M)"2#Q!"%P'46@^P(4U7H_/___XM$)!R#Q!#I]@(``(N%)`4``,9`)P&#[`16
+M_[4D!0``:@7H_/___XM$)!2`2"0"@\0,_W9@:B'_="0,Z/S___^-4SR)5"0@
+M@\00@'PD&P!T#<=#9`H```#&0R0HZR?'0V02````QD,D*@^W1"0*@^P$4/]T
+M)$B+1"0@_W`(Z/S___^#Q!"+1F#V0#0!#X23````@'PD&P$9P(/@`H/H>(A#
+M),9#)0"+5"0XB=#!Z!B(0R:+5"0XB=#!Z!"(0R>+5"0XB=#!Z`B(0RB+5"0X
+MB%,IBT0D-(M4)#@/K-`8B$,JBT0D-(M4)#@/K-`0B$,KBT0D-(M4)#@/K-`(
+MB$,LBE0D-(A3+<9#+@#&0R\`B?AFP>@(B$,PB?B(0S'&0S(`QD,S`.M>@'PD
+M&P$9P(/@`H/`*(A#),9#)0"+1"0TBU0D.`^LT!B(0R:+1"0TBU0D.`^LT!"(
+M0R>+1"0TBU0D.`^LT`B(0RB*5"0TB%,IQD,J`(GX9L'H"(A#*XGXB$,LQD,M
+M`(/L#%/H_/___XM&8&:+0!AFB4,0QD,4@(ES&(M4)"2+0@B)0S0/MT0D&HE#
+M((E34,9#'""+1F`%M````(E#.,=#;/Q<!@"#Q`AJ`/]T)!SH_/____]S((M$
+M)"C_<!#_<`S_="0LZ/S____&AI<````!@\084U7H_/___X/$$(7V#X2L````
+M@WY@`'1A@+Z7`````'18B?9F@;Z4````E@!U&8/L!/]V8&HABT9@_W`HZ/S_
+M__^#Q!"-=@!F_XZ4````@^P,:-`'``#H_/___XDL).C\____@\00A?9T5(-^
+M8`!T"8"^EP````!UJH7V=$&#?F``=#MF@[Z4`````'0Q@'L4`'4KQT0D#```
+M``"`?"0;`'0<#[=$)`J#[`10BU0D'/]R"/]T)$SH_/___X/$$(-[4`!T$(/L
+M"(U#4%!5Z/S___^#Q!"#[`A35>C\____BX4D!0``QD`G`(/$#%;_M20%``!J
+M!NC\____BT0D%(!@)/V+1"0<@\00C78`@\0<6UY?7<-64X/L#(MT)!B+7"0<
+MB%XW#[;;4U;H_/___X/$"%.!QF`,``!6Z/S___^X`0```(/$%%M>PXUV`(/L
+M&/]T)!SH_/___P^VP(/$',.0N`````##B?964XM,)`R^`````+J`````BYDD
+M!0``B?8/M\*`O!B8!```_W0!1D)F@?J%`';JBXDD!0``@<%@#```NH````"0
+M#[?"@+P(F`0``/]T`49"9H'ZA0!VZHGP6U[#D(M,)`2*5"0(B-#`Z`0\"78'
+M@\!7ZPJ)]HC0P.@$@\`PB`&)T(/@#X/X"7X,B-"#X`^#P%?K"HGVB-"#X`^#
+MP#"(00'#5E.+="0,BUPD$`^VQU!6Z*C___\/MMM3@\8"5NB;____@\006U[#
+MD%575E.+?"04BVPD'+X`````N0````"Z``$``(GHC78`B`A`2G7ZNH````"+
+MGR0%```/M\)F#[:,&)@$``!F@?G_``^$;`$``(GP1CM$)!@/A5\!``!F@?J!
+M``^'T`````^WP8T$0(T$P(G"P>(%*<*+@Y`%``"-')"#>PP`=&VY@````(NW
+M)`4```^WP68/MH0PF`0``&8]_P!T'@^WP(T$0(T$P(G"P>(%*<*+AI`%``"-
+M%)`[4PQT+$%F@?F!`';(L@"`>S(`=C"^`0````^VP@^V3!A`B?#3X`E%($(X
+M4S)WZ^L4B$T"Z]>0QD4"_XM#"`^V0`F)12#&10`!BD,QB$4!BT-(B44$BT-,
+MB44(BT-8B44,BT-<B440BT-@B444BT-DB448BT-PB44<ZWB+ER0%```/M\&-
+M!$"-!(#!X`.)PP.:=`4``,9%`O_&10`"BY<D!0``BY)T!0``BD00'XA%`8M#
+M5`^V0`F)12#&101V#[=#(%"-1050Z%?^___&10QD#[=#(E"-10U0Z$7^___&
+M11QR#[9#'5"-11U0Z._]__^#Q!BX`````.F?`0``B?9"9H'ZA0`/AFO^__^+
+MOR0%``"!QV`,``"Z@`````^WPF8/MHPXF`0``&:!^?\`#X18`0``B?!&.T0D
+M&`^%2P$``&:!^H$`#X?,````#[?!C01`C03`B<+!X@4IPHN'D`4``(T<D(-[
+M#`!T:;F`````#[?!9@^VA#B8!```9CW_`'0>#[?`C01`C03`B<+!X@4IPHN'
+MD`4``(T4D#M3#'0L06:!^8$`=LBR`(![,@!V,KX!````#[;"#[9,&$")\-/@
+M"44@0CA3,G?KZQ:(30+KUXUV`,9%`O^+0P@/MD`)B44@QD4``8I#,8A%`8M#
+M2(E%!(M#3(E%"(M#6(E%#(M#7(E%$(M#8(E%%(M#9(E%&(M#<(E%'.ML#[?!
+MC01`C02`P>`#B<,#GW0%``#&10+_QD4``HN7=`4``(I$$!^(10&+0U0/MD`)
+MB44@QD4$=@^W0R!0C44%4.C'_/__QD4,9`^W0R)0C44-4.BU_/__QD4<<@^V
+M0QU0C44=4.A?_/__@\08N`````#K$I!"9H'ZA0`/AH7^__^X_____UM>7UW#
+MB?955U93@^P$BW0D&(ML)!R[`````+D`````NJ0,``"+1"0@B?:("$!*=?JZ
+M@````(N^)`4```^WPF8/MHPXF`0``&:!^?\`#X0$`P``B=A#.>@/A?D"``!F
+M@?J!``^'60(```^WP8T$0(T$P(G"P>(%*<*+AY`%``"-+)"#?0P`='*Y@```
+M`(G[#[?!9@^VA!B8!```9CW_`'0>#[?`C01`C03`B<+!X@4IPHN#D`4``(T4
+MD#M5#'0R06:!^8$`=LBR`(!],@!V/;L!````#[;"#[9,*$")V-/@B<&+1"0@
+M"4@@0CA5,G?EZQN+5"0@B$H"Z\V+3"0@QD$"_XM%"`^V0`F)02"+1"0@Q@`!
+MBD4QBU0D((A"`8M%2(E"!(M%3(E""(M%6(E"#(M%7(E"$(M%8(E"%(M%9(E"
+M&(M%<(E"',9$)`,`@+V0``````^&]`$```^V1"0#C02`P>`#BU0D((T,$`'H
+MC9B0````BE,$B%$DBE,%B%$EBX"8````B@"#X`^(028/MD$D@_@#="F#^`-_
+M#H/X`@^$XP```.G*````@_@$=$>#^!(/A(L```#IMP```(UV``^V3"0#C0R)
+MP>$#BX0IF````(I0`8/B!P^VTL'B"`^V0`(!T(T$@-'@BU0D((E$$2CID@``
+M``^V1"0#C02`C13%`````(N$*I@```"`>`(`=0Z+3"0@QT0**`````#K:`^V
+M1"0#C02`P>`#BY0HF`````^V4@*#ZA2+3"0@B50(*.M%#[9,)`.-#(G!X0.+
+MA"F8````#[90`L'B"`^V0`,!T(T$@-'@BU0D((E$$2CK%XUV``^V1"0#C02`
+MBTPD(,=$P2@`````#[9T)`.--+;!Y@.+1"0@C7P&+(VT+IP```#\N0@```#S
+MI?Y$)`.*5"0#.)60````#X><_O__Z8L```"+EB0%```/M\&-!$"-!(#!X`.)
+MPP.:=`4``(M,)"#&00+_Q@$"BY8D!0``BY)T!0``BD00'XA!`8M#5`^V0`F)
+M02#&001V#[=#(%")R(/`!5#H;_G__XM$)"C&0`QD#[=#(E"+1"0L@\`-4.A5
+M^?__BU0D,,9"''(/MD,=4(G0@\`=4.CY^/__@\08N`````#I-0,``$)F@?J%
+M``^&T_S__XNV)`4``('&8`P``+J`````#[?"9@^VC#"8!```9H'Y_P`/A/`"
+M``")V$,YZ`^%Y0(``&:!^H$`#X=2`@``#[?!C01`C03`B<+!X@4IPHN&D`4`
+M`(TLD(-]#`!T<+F`````#[?!9@^VA#"8!```9CW_`'0>#[?`C01`C03`B<+!
+MX@4IPHN&D`4``(T4D#M5#'0R06:!^8$`=LBR`(!],@!V/;L!````#[;"#[9,
+M*$")V-/@B<&+1"0@"4@@0CA5,G?EZQN+5"0@B$H"Z\V+3"0@QD$"_XM%"`^V
+M0`F)02"+1"0@Q@`!BD4QBU0D((A"`8M%2(E"!(M%3(E""(M%6(E"#(M%7(E"
+M$(M%8(E"%(M%9(E"&(M%<(E"',9$)`(`@+V0``````^&XP$```^V1"0"C02`
+MP>`#BU0D((T,$`'HC9B0````BE,$B%$DBE,%B%$EBX"8````B@"#X`^(028/
+MMD$D@_@#=">#^`-_#H/X`@^$X0```.G(````@_@$=$6#^!(/A(D```#IM0``
+M`)`/MDPD`HT,B<'A`XN$*9@```"*4`&#X@</MM+!X@@/MD`"`="-!(#1X(M4
+M)"")1!$HZ9(````/MD0D`HT$@(T4Q0````"+A"J8````@'@"`'4.BTPD(,=$
+M"B@`````ZV@/MD0D`HT$@,'@`XN4*)@````/ME("@^H4BTPD((E4""CK10^V
+M3"0"C0R)P>$#BX0IF`````^V4`+!X@@/MD`#`="-!(#1X(M4)"")1!$HZQ>-
+M=@`/MD0D`HT$@(M,)"#'1,$H``````^V="0"C32VP>8#BT0D((U\!BR-M"Z<
+M````_+D(````\Z7^1"0"BE0D`CB5D`````^'GO[__^M_#[?!C01`C02`P>`#
+MB<,#GG0%``"+3"0@QD$"_\8!`HN6=`4``(I$$!^(00&+0U0/MD`)B4$@QD$$
+M=@^W0R!0B<B#P`50Z$KV__^+1"0HQD`,9`^W0R)0BT0D+(/`#5#H,/;__XM4
+M)##&0AQR#[9#'5")T(/`'5#HU/7__X/$&+@`````ZQ.)]D)F@?J%``^&[?S_
+M_[C_____@\0$6UY?7<.-=@!55U93@^P$BW0D&+L`````N0````"ZI`P``(M$
+M)"")]H@(0$IU^KJ`````B[XD!0``#[?"9@^VC#B8!```9H'Y_P`/A#@#``")
+MV$,[1"0<#X4K`P``9H'Z@0`/AWT"```/M\&-!$"-!,")PL'B!2G"BX>0!0``
+MC2R0@WT,`'1RN8````")^P^WP68/MH08F`0``&8]_P!T'@^WP(T$0(T$P(G"
+MP>(%*<*+@Y`%``"-%)`[50QT,D%F@?F!`';(L@"`?3(`=CV[`0````^VP@^V
+M3"A`B=C3X(G!BT0D(`E(($(X53)WY>L;BU0D((A*`NO-BTPD(,9!`O^+10@/
+MMD`)B4$@BT0D(,8``8I%,8M4)""(0@&+14B)0@2+14R)0@B+15B)0@R+15R)
+M0A"+16")0A2+162)0AB+17")0AR+3"0<B4HDQD0D`P"`O9``````#X8<`@``
+M#[9$)`.-!(#!X`.+5"0@C0P0`>B-F)````"*4P2(D:@```"*4P6(D:D```"+
+M@)@```"*`(/@#XB!J@````^V@:@```"#^`-T*(/X`W\.@_@"#X3Q````Z=4`
+M``"#^`1T28/X$@^$DP```.G"````B?8/MDPD`XT,B<'A`XN$*9@```"*4`&#
+MX@</MM+!X@@/MD`"`="-!(#1X(M4)"")A!&L````Z9X````/MD0D`XT$@(T4
+MQ0````"+A"J8````@'@"`'41BTPD(,>$"JP`````````ZW$/MD0D`XT$@,'@
+M`XN4*)@````/ME("@^H4BTPD((F4"*P```#K2P^V3"0#C0R)P>$#BX0IF```
+M``^V4`+!X@@/MD`#`="-!(#1X(M4)"")A!&L````ZQJ-=@`/MD0D`XT$@(M,
+M)"#'A,&L``````````^V="0#C32VP>8#BT0D((V\!K````"-M"Z<````_+D(
+M````\Z7^1"0#BE0D`SB5D`````^'?_[__^F6````BY8D!0``#[?!C01`C02`
+MP>`#B<,#FG0%``"+3"0@QD$"_\8!`HN6)`4``(N2=`4``(I$$!^(00&+0U0/
+MMD`)B4$@QD$$=@^W0R!0B<B#P`50Z+WR__^+1"0HQD`,9`^W0R)0BT0D+(/`
+M#5#HH_+__XM4)##&0AQR#[9#'5")T(/`'5#H1_+__XM$)#2+3"0XB4$D@\08
+MN`````#I<`,``(UV`$)F@?J%``^&G_S__XNV)`4``('&8`P``+J`````#[?"
+M9@^VC#"8!```9H'Y_P`/A"@#``")V$,[1"0<#X4;`P``9H'Z@0`/AWT"```/
+MM\&-!$"-!,")PL'B!2G"BX:0!0``C2R0@WT,`'1PN8`````/M\%F#[:$,)@$
+M``!F/?\`=!X/M\"-!$"-!,")PL'B!2G"BX:0!0``C120.U4,=#)!9H'Y@0!V
+MR+(`@'TR`'8]NP$````/ML(/MDPH0(G8T^")P8M$)"`)2"!".%4R=^7K&XM4
+M)""(2@+KS8M,)"#&00+_BT4(#[9`"8E!((M$)"#&``&*13&+5"0@B$(!BT5(
+MB4($BT5,B4((BT58B4(,BT5<B4(0BT5@B4(4BT5DB4(8BT5PB4(<BTPD'(E*
+M),9$)`(`@+V0``````^&$@(```^V1"0"C02`P>`#BU0D((T,$`'HC9B0````
+MBE,$B)&H````BE,%B)&I````BX"8````B@"#X`^(@:H````/MH&H````@_@#
+M="J#^`-_$8/X`@^$\P```.G7````C78`@_@$=$B#^!(/A)(```#IP0```)`/
+MMDPD`HT,B<'A`XN$*9@```"*4`&#X@</MM+!X@@/MD`"`="-!(#1X(M4)"")
+MA!&L````Z9X````/MD0D`HT$@(T4Q0````"+A"J8````@'@"`'41BTPD(,>$
+M"JP`````````ZW$/MD0D`HT$@,'@`XN4*)@````/ME("@^H4BTPD((F4"*P`
+M``#K2P^V3"0"C0R)P>$#BX0IF`````^V4`+!X@@/MD`#`="-!(#1X(M4)"")
+MA!&L````ZQJ-=@`/MD0D`HT$@(M,)"#'A,&L``````````^V="0"C32VP>8#
+MBT0D((V\!K````"-M"Z<````_+D(````\Z7^1"0"BE0D`CB5D`````^'??[_
+M_^F*````#[?!C01`C02`P>`#B<,#GG0%``"+3"0@QD$"_\8!`HN6=`4``(I$
+M$!^(00&+0U0/MD`)B4$@QD$$=@^W0R!0B<B#P`50Z%WO__^+1"0HQD`,9`^W
+M0R)0BT0D+(/`#5#H0^___XM4)##&0AQR#[9#'5")T(/`'5#HY^[__XM$)#2+
+M3"0XB4$D@\08N`````#K$XGV0F:!^H4`#X:U_/__N/____^#Q`1;7E]=PXUV
+M`%575E.+="04BWPD&(MN;+D`````NB````")^(@(0$IU^HN=)`8``+D`````
+MN@`"``")V)"("$!*=?J-4S:Y`````(I$,2&(`D**1#$@B`)"@\$"@_DG?NJ-
+M4Q2Y`````(I$,0V(`D**1`X,B`)"@\$"@_D3?NJ-4RZY`````(I$,4F(`D**
+M1#%(B`)"@\$"@_D'?NJ)7QB+1E"+5E2#P`&#T@")!XE7!(-^8`!U._8&`70V
+M@WYD`'05A>UT$8M&9`^V0#.`O"B8!```_W4;@WYH`'0=A>UT&8M&:`^W0"2`
+MO"B8!```_W0(BD8!B$<,ZP3&1PS_BD8"B$<-BD9<B$<.QD<2$,9'$1`/M@:#
+MX`'1X(I?"H/C_0G#B%\*#[8&@^`!P>`%BD\(@^'?"<&(3P@/MT98P>@'@^`!
+MP>`&@^&_"<&(3P@/MT98P>@"@^`!BE<)@^+^"<*(5PD/MT9:P>@#@^`!P>`'
+M@^%_"<&(3P@/MT9:T>B#X`'1X(/B_0G"B%<)#[=&6,'H`X/@`<'@!H/BOPG"
+MB%<)#[=&6L'H!(/@`<'@!X/B?PG"B%<)@\D0B$\(B@;0Z(/@`8/C_@G#B%\*
+MB@:#X`2#X_L)PXA?"F;'1Q0`$(J&F````(A''%M>7UW#B?:+1"0,QT`$````
+M`,<``````+@`````PY!55U93@^P,BUPD((I$)"2(1"0+QT0D!/____^+<V"+
+M:VR%]G0/@+N7`````'4&]@,"=`V0BT0D!.G_````C78`@^P,5>C\____B<>#
+MQ!"+1"0$A?\/A.(```#&1R3AQD<E`8!\)`L"#Y7`@\`:B$<FQD<4@&:+1AAF
+MB4<0B5\8QT<@`````,='-`````#'1VS\7`8`@^P(5U7H_/___\:#EP````%F
+MQX.4````^@"#Q!"%VW1=@WM@`'17D&:!NY0```"6`'49@^P$_W-@:B&+0V#_
+M<"CH_/___X/$$(UV`&;_BY0```"#[`QHT`<``.C\____B2PDZ/S___^#Q!"%
+MVW0/@WM@`'0)@+N7`````'6J9H.[E`````!T#H!_%`!U",=$)`0`````@^P(
+M5U7H_/___XM$)!2#Q!"0@\0,6UY?7<-55U93@^P<BW0D,(I<)#3'1"04____
+M_XMN8(M&;(E$)!"%[70)@+Z7`````'0*BT0D%.F9!```D(/L#/]T)!SH_/__
+M_XG'@\00BT0D%(7_#X1[!```]@8"#X41`0``@/L4=P\/MMN-!%N-'(4`````
+MZQYF#[;3B=#!X`0!T(T$PF;!Z`C`Z`0/MMB!P_````#&1R3AQD<E`<9')AR(
+M7R?&1Q2`9HM%&&:)1Q")=QC'1R``````QT<T`````,=';/Q<!@"#[`A7_W0D
+M'.C\____QH:7`````6;'AI0```#$"8/$$(7V=&.#?F``=%V-=@!F@;Z4````
+ME@!U&8/L!/]V8&HABT9@_W`HZ/S___^#Q!"-=@!F_XZ4````@^P,:-`'``#H
+M_/___X/$!/]T)!SH_/___X/$$(7V=`^#?F``=`F`OI<`````=:9F@[Z4````
+M``^$9`,``(!_%``/A5H#``#'1"04`````.E-`P``@^P,_W0D'.C\____B40D
+M*(/$$(-\)!@`#X0O`P``C5<\B50D#(M$)!B+0`B)1"0(QD<D&L9')0C&1R8:
+MQD<G`,9'*!#&1RD`BT0D&(E'4,9'%(!FBT489HE'$(EW&(M$)!B+0`B)1S3'
+M1R`0````BT9@!;0```")1SC&1QP@QT=L_%P&`(/L"&H`4NC\_____W<@BT0D
+M+/]P$/]P#/]T)"CH_/___X/$&%?_="0<Z/S____&AI<````!9L>&E````/H`
+M@\00A?9T78-^8`!T5V:!OI0```"6`'46@^P$_W9@:B&+1F#_<"CH_/___X/$
+M$&;_CI0```"#[`QHT`<``.C\____@\0$_W0D'.C\____@\00A?9T#X-^8`!T
+M"8"^EP````!UJ6:#OI0`````=`:`?Q0`=!F#[`B-1"0@4/]T)!SH_/___X/$
+M$.G]`0``@^P(5_]T)!SH_/___X/$!/]T)!SH_/___XG'@\00A<!U'8/L"(U$
+M)"!0_W0D'.C\____BT0D)(/$$.G2`0``C4`\B40D#(M,)`B#P02+5"0(#[9"
+M`XI$$`2(0@3&00$*QD$"`+H$````BT0D",8``$!*=?F$VW4&@&$#_.M,#[;;
+MC03;C02#C01#C1S%`````(!)`P.)V,'H&(E$)`2(002)VL'J$(A1!8G8P>@(
+MB00DB$$&B%D'BD0D!(A!"(A1"8H4)(A1"HA9"XM$)!B)1U#&1R05B@'`^`?W
+MT(/`$8A')<9')@#&1R<`QD<H$,9'*0"`(3_&1Q2`9HM%&&:)1Q")=QB+1"08
+MBT`(B4<TQT<@$````(M&8`6T````B4<XQD<<(,=';/Q<!@"#[`AJ`/]T)!CH
+M_/____]W((M$)"S_<!#_<`S_="0HZ/S___^#Q!A7_W0D'.C\____QH:7````
+M`6;'AI0```#Z`(/$$(7V=%V#?F``=%=F@;Z4````E@!U%H/L!/]V8&HABT9@
+M_W`HZ/S___^#Q!!F_XZ4````@^P,:-`'``#H_/___X/$!/]T)!SH_/___X/$
+M$(7V=`^#?F``=`F`OI<`````=:EF@[Z4`````'0.@'\4`'4(QT0D%`````"#
+M[`B-1"0@4/]T)!SH_/___X/$$)"#[`A7_W0D'.C\____BT0D)(/$$(/$'%M>
+M7UW#5U93BW0D$+C_____BWYLBUY@]D98"`^$B````(/L!%;_MR0%``!J!>C\
+M____@$LD`H/$#%-J(?]S*.C\____@\00@'M+`'0>@^P,:-`'``#H_/___XD\
+M).C\____@\00@'M+`'7B@WPD%`!T#V:#3EH09H-+-A#K#8UV`&:#9EKO9H-C
+M-N^#[`16_[<D!0``:@;H_/___X!C)/VX`````(/$$)!;7E_#5E.#[`2+1"00
+M#[9T)!2+4&R+6&#V``%T2X-[+`!T&8/L!(GR#[;"4`^V0TE0_W,LZ/S___^#
+MQ!"#N^``````=#V#[`2)\0^VP5`/MH/5````4/^SX````.C\____@\00ZQR)
+M]H/L!(GQ#[;!4(M#'`^V0`%04NC\____@\00@\0$6U[#55=64X/L#(M<)""*
+M1"0DB$0D"XI$)"B(1"0*QT0D!/____^+>V"+:VR%_W0)@+N7`````'0*BT0D
+M!.DE`0``D(/L#%7H_/___XG&@\00BT0D!(7V#X0*`0``QD8DX<9&)0&`?"0+
+M`'0.@'PD"@$9P/?0@\`'ZPR`?"0*`1G`]]"#P`V(1B;&1A2`9HM'&&:)1A")
+M7AC'1B``````QT8T`````,=&;/Q<!@"#[`A65>C\____QH.7`````6;'@Y0`
+M``#T`8/$$(7;=%^#>V``=%F-=@!F@;N4````E@!U&8/L!/]S8&HABT-@_W`H
+MZ/S___^#Q!"-=@!F_XN4````@^P,:-`'``#H_/___XDL).C\____@\00A=MT
+M#X-[8`!T"8"[EP````!UJF:#NY0`````=!R`?A0`=1:+0V!FBT`V9HE#6L=$
+M)`0`````C78`@^P(5E7H_/___XM$)!2#Q!"-=@"#Q`Q;7E]=PX/L#(M,)!"+
+M5"04#[8"@_@)#X>Q````_R2%Y"```(GVBT($QH!7#````(/L#%#H_/___[@`
+M````@\00Z9````"#[`0/MD($4&H`4>A$_O__@\00ZWN-=@"#[`0/MD($4&H!
+M4>@L_O__@\00ZV.-=@"#[`@/MD($4%'H_/___X/$$.M-D(/L!`^V0@50#[9"
+M!%!1Z-'\__^#Q!#K-(/L"`^V0@104>C\____@\00ZR&0@^P(#[9"!%!1Z/S_
+M__^X`````(/$$.L(N/____^-=@"#Q`S#BTPD!(M!8(7`=$K'0!P`````@$@D
+M!,=!8`````#'06@`````QT%D`````(-Y"#]_$XM1;(M!",>$@I@"````````
+MPY"+46R+00C'A(*8`0```````,.)]HM,)`2+06"%P'1*QT`<`````(!@)/O'
+M06``````QT%H`````,=!9`````"#>0@_?Q.+46R+00C'A(*8`@```````,.0
+MBU%LBT$(QX2"F`$```````##B?93@^P4BUPD'%/H_/___XN#)`4```5@#```
+MB00DZ/S___^#Q!A;PXGV4X/L%(M<)!Q3Z/S___^+@R0%```%8`P``(D$).C\
+M____@\086\.)]E575E.#[!R+?"0PBX<D!0``!6`,``")!"2#/P!T&HL'+0``
+M`@")!X/L"%#_=Q#H_/___X/$$(GV@W\(`'02@^P(_W<(_W<0Z/S___^#Q!"0
+M@W\,`'02@^P(_W<,_W<0Z/S___^#Q!"0@^P(C40D(E"-1"0D4(U$)"90C40D
+M*%"-1"0J4(U$)"U0C40D,%"-1"0R4(U$)#50C40D-E"-1"0Y4(U$)#Q0C40D
+M/U`/MT<D4.C\____@\1`@[]8!0```'0V@^P(_[=8!0``C8=`!0``4.C\____
+M@\0(BT0D"/^P6`4``(M$)`P%0`4``%#H_/___X/$$(GV@[]T!0```'0W@^P(
+M_[=T!0``C8=<!0``4.C\____@\0(BT0D"/^P=`4``(M$)`P%7`4``%#H_/__
+M_X/$$(UV`(._D`4```!T-X/L"/^WD`4``(V'>`4``%#H_/___X/$"(M$)`C_
+ML)`%``"+1"0,!7@%``!0Z/S___^#Q!"-=@"#OZP&````=#>#[`C_MZP&``"-
+MAY0&``!0Z/S___^#Q`B+1"0(_["L!@``BT0D#`64!@``4.C\____@\00C78`
+MO@````")\#I$)`=S18VOS`8``)"#[`B)\`^VV/^TG^0&``!5Z/S___^#Q`B+
+M1"0(_[28Y`8``(M$)`P%S`8``%#H_/___X/$$$:)\#I$)`=RPH._3`D```!T
+M-8/L"/^W3`D``(V'-`D``%#H_/___X/$"(M$)`C_L$P)``"+1"0,!30)``!0
+MZ/S___^#Q!"0@[]T"0```'0W@^P(_[=T"0``C8=<"0``4.C\____@\0(BT0D
+M"/^P=`D``(M$)`P%7`D``%#H_/___X/$$(UV`(._Q`D```!T-X/L"/^WQ`D`
+M`(V'K`D``%#H_/___X/$"(M$)`C_L,0)``"+1"0,!:P)``!0Z/S___^#Q!"-
+M=@"#OZP%````=#>#[`C_MZP%``"-AY0%``!0Z/S___^#Q`B+1"0(_["L!0``
+MBT0D#`64!0``4.C\____@\00C78`@[]8!@```'0W@^P(_[=8!@``C8=`!@``
+M4.C\____@\0(BT0D"/^P6`8``(M$)`P%0`8``%#H_/___X/$$(UV`(._"`8`
+M``!T-X/L"/^W"`8``(V'\`4``%#H_/___X/$"(M$)`C_L`@&``"+1"0,!?`%
+M``!0Z/S___^#Q!"-=@"#OR0&````=#>#[`C_MR0&``"-APP&``!0Z/S___^#
+MQ`B+1"0(_[`D!@``BT0D#`4,!@``4.C\____@\00C78`@[^0!@```'0W@^P(
+M_[>0!@``C8=X!@``4.C\____@\0(BT0D"/^PD`8``(M$)`P%>`8``%#H_/__
+M_X/$$(UV`(._R`8```!T-X/L"/^WR`8``(V'L`8``%#H_/___X/$"(M$)`C_
+ML,@&``"+1"0,!;`&``!0Z/S___^#Q!"-=@"#O_P(````=#>#[`C_M_P(``"-
+MA^0(``!0Z/S___^#Q`B+1"0(_[#\"```BT0D#`7D"```4.C\____@\00C78`
+M@[\D"0```'0W@^P(_[<D"0``C8<,"0``4.C\____@\0(BT0D"/^P)`D``(M$
+M)`P%#`D``%#H_/___X/$$(UV`(._G`D```!T-X/L"/^WG`D``(V'A`D``%#H
+M_/___X/$"(M$)`C_L)P)``"+1"0,!80)``!0Z/S___^#Q!"-=@"#OW0&````
+M=#>#[`C_MW0&``"-AUP&``!0Z/S___^#Q`B+1"0(_[!T!@``BT0D#`5<!@``
+M4.C\____@\00C78`@[_@"0```'1'_[?H"0``_[?D"0``_[?@"0``C8?("0``
+M4.C\____BT0D$/^PZ`D``/^PY`D``/^PX`D``(M$)!P%R`D``%#H_/___X/$
+M()"#OP0*````=$?_MPP*``#_MP@*``#_MP0*``"-A^P)``!0Z/S___^+1"00
+M_[`,"@``_[`("@``_[`$"@``BT0D'`7L"0``4.C\____@\0@D(._*`H```!T
+M1_^W,`H``/^W+`H``/^W*`H``(V'$`H``%#H_/___XM$)!#_L#`*``#_L"P*
+M``#_L"@*``"+1"0<!1`*``!0Z/S___^#Q""0@[]P"@```'1'_[=X"@``_[=T
+M"@``_[=P"@``C8=8"@``4.C\____BT0D$/^P>`H``/^P=`H``/^P<`H``(M$
+M)!P%6`H``%#H_/___X/$()"#OTP*````=$?_MU0*``#_MU`*``#_MTP*``"-
+MAS0*``!0Z/S___^+1"00_[!4"@``_[!0"@``_[!,"@``BT0D'`4T"@``4.C\
+M____@\0@D(._E`H```!T1_^WG`H``/^WF`H``/^WE`H``(V'?`H``%#H_/__
+M_XM$)!#_L)P*``#_L)@*``#_L)0*``"+1"0<!7P*``!0Z/S___^#Q""0@[^X
+M"@```'1'_[?`"@``_[>\"@``_[>X"@``C8>@"@``4.C\____BT0D$/^PP`H`
+M`/^PO`H``/^PN`H``(M$)!P%H`H``%#H_/___X/$()"#Q!Q;7E]=PU93@^P0
+MBUPD'%/H_/___XVS8`P``(DT).C\____B1PDZ/S____'!"30!P``Z/S___^)
+M'"3H_/___XD<).C\____@\0(:@%3Z/S___^#Q`AJ`5;H_/___X/$%%M>PXUV
+M`(/L&&B`%P``Z/S___^X`````(/$',.0D(M4)`2A`````(E"!(D5`````,.0
+MH0`````%F`$#`,.05U93BW0D$(L=`````+\`````Z/S___^)\H7`=`N-=@")
+M^8@*0DAU^(,]``````!U"(DU`````.L0@SL`=`F)]HL;@SL`=?F),XM$)!2)
+M1@2-1@R)1@R)1A"-1A2)1A2)1AB-1AR)1AR)1B"-AD`!``")AD`!``")AD0!
+M``"-AF`!``")AF`!`P#'AF0!`P``$```6UY?PY"+5"0$BTPD"(72=`2+$NL(
+MBQ4`````B?:%TG0)A<ET!8M"!(D!B=##BT0D"(M`$`-$)`0%F`$#`,.-=@!3
+M@>P0`0``BY0D&`$``(N<)!P!``"+2@2-A"2(````4/]R"/]1'(/$"(M3!(U$
+M)`A0_W,(_U(<@\00N@$```"*A"2!````.D0D`7=8NO____^*A"2!````.D0D
+M`7)&N@$```"*A"2"````.D0D`G<TNO____^*A"2"````.D0D`G(BN@$```"*
+MA"2#````.D0D`W<0BH0D@P```#I$)`,9THUV`(G0@<0(`0``6\.)]E=64XMT
+M)!"+'0````"%VP^$I0```(UV`(-["`!U%HE>#,<&`````(ES"+@!````Z8L`
+M``"+0PB+5@0[4`1U<8/L"/]P"/]V"/]2)(/$$(3`=%Z->PB#>P@`=$*+1@2#
+MN(``````=!V+%SM"!'46@^P(_W((_W8(_Y"`````@\00ZQ")]H/L"/\W5NC\
+M____@\00A<!X!XL_@S\`=;Z)7@R+!XD&B3>X`0```.L2C78`BQN%VP^%7O__
+M_[@`````6UY?PY"+5"0$H0````")`HD5`````(-Z#`!T$:$`````B4(0BT(,
+M`04`````PXUV`%.#[`B*1"00B$0D!XL=`````(7;=#")]HI$)`<X0P1T&8-[
+M0`!T&8/L#`^V1"034/]30(/$$(7`=`:)V.L-B?:+&X7;==*X`````(/$"%O#
+M55=64X/L+(ML)$"Y`````(`]``````)U/X.]E`$#`"!W-H/L"(M$)$R+4%"-
+M1"0(4(M$)%#_<%S_4CR+1"14BU!8#[9$)!P#0BB+5"14B4(<@\00ZSN)]HUU
+M#(GWC78`NP````"+10PYQG0:B?J)]CF(]/W__W4(0;L!````ZP:+`#G"=>J%
+MVW76BT0D1(E('(/$+%M>7UW#C78`N`````"+%0````"%TG0/D#E"&'8#BT(8
+MBQ*%TG7R@\!LPXGV5U93@\2`B[0DD````(N\))0```"%_W4$BWX$D(M>"(7;
+M=%^0BX:4`0,`B4,H@^P(BU,$C40D"%#_<PC_4AP/MD0D(`&&E`$#`%"#[`B+
+M0P3_<PC_4#"#Q`Q05XU#$%#H_/___X/$(`^V1"004&H45XU#+%#H_/___X/$
+M$(L;A=MUHKH`````BQT`````A=MT$8UV`#E3%'8#BU,4BQN%VW7R@<)@`@``
+MBX:4`0,`C03`4%)7C48X4.C\____@\00_[:4`0,`:``"``!7C4904.C\____
+M@\00:@%J+%>-AI@```!0Z/S___^#Q!#_MI0!`P!J%%>-AK````!0Z/S___^#
+MQ!"+AI0!`P"-!,!0:FA7C8:`````4.C\____@\00QX;D`````0```,>&\```
+M```0``#'AN@`````$```Z/S___]H0B$``%!7C49H4.C\____@\00BQT`````
+MA=MT'H-['`!T$H/L!/^VE`$#`%=6_U,<@\00D(L;A=MUXH/L@%M>7\.-=@!7
+M5E.#[!"+?"0@BD0D)(A$)`^`/0`````"=1"X`````(!\)`\!#X45`0``@^P,
+M#[9$)!M0Z/S___^)QH/$$+@`````A?8/A/4```"#[`R-1SA0Z/S___^)PX/$
+M$+D`````NF`"``")]H@(0$IU^J&<!0``0*.<!0``B8-8`@``C8-(`@``B8-(
+M`@``B8-,`@``@(L<`@```8ES!(I$)`^(0PB).X-^%`!T&XV#8`(``(E#$+D`
+M````BU84A=)T!H@(0$IU^HV#,`(``(F#,`(``(F#-`(``(V#.`(``(F#.`(`
+M`(F#/`(``,=#(`(!``#'0QS_____@WXP`'0G@^P,4_]6,(/$$(7`=!F#[`A3
+MC4<X4.C\____N`````"#Q!#K'HGVC8,H`@``C5<,BTH$B4($B9,H`@``B4@$
+MB0&)V(/$$%M>7\.055=64X/L#(ML)""+?0"+7QR-1QPYV'0WC7/TBQLY;BAU
+M)HU&#(M(!(M6#(E*!(D1B48,B4`$QD9>`H/L#%;H_/___X/$$(GVC4<<.=AU
+MR8M%!(-X-`!T#(/L#%7_4#2#Q!")]HN5+`(``(N%*`(``(E0!(D"@^P(58U'
+M.%#H_/___X/$'%M>7UW#B?975E.+?"00BW<,C4<,.?`/A*0```"-=@"-GMC]
+M___V@QP"```!#X2!````@WL,`'5[@'L(!'85@[MD`0```'08BX-D`0``.5@$
+M=`V0@'L(`75:]D-,`G14@WL<`'D-@^P(4U?H?/O__X/$$/:#'`(```)T.(/L
+M"&H`5^C\____B<*#Q!"%P'0D.=AT(/:`'`(```)T"8"C'`(``/WK#HM#'(E"
+M',=#'`````"0BS:-1PPY\`^%7____UM>7\.-=@!75E.+="00BWPD%(M$)!B+
+M7@S_BY`!`P"%P'@P@^P$4%=6Z/S___^#Q!"%P'4N@^P,BT8$5_]00(/$"%>-
+M1A!0Z/S___^#Q!#K$HGV@^P(5XU&$%#H_/___X/$$(.[D`$#``!U#X/L#%/H
+M"@```(/$$(UV`%M>7\-55U93@^P,BVPD(,9$)`L`BUT,C44,.=AT6XGVC;/8
+M_?__@'X(`75$]D9,0'0.@^P,5NC\____@\00ZS"`/0``````="?V1DP"=2'V
+M1DP!=`R#[`Q6Z/S___^#Q!"*1DRH!'4(@\@DB$9,B?:+&XU%##G8=:>+712-
+M110YV'0:B<:-=@"-0_2#[`Q0Z/S___^#Q!"+&SG>=>N+70R-10PYV'0KB<>-
+M=@"-L]C]__^`?@@$=A2#?@P`=0Z#[`Q6Z/S___^#Q!")]HL;.=]UVHM=#(U%
+M##G8=&6-L]C]__^`?@@!=5"*1DRH('1)@^#;B$9,BT8DA<!T%H-X%`!T"L9$
+M)`L!ZPF-=@"+`(7`=>J`?"0+`'4?@#T``````746@^P,5NC\____B30DZ/S_
+M__^#Q!")]HL;C44,.=AUFX/L#%7H@OW__X/$$(.]C`$#``!T$H/L#/]U!/^5
+MC`$#`(/$$(UV`(/$#%M>7UW#55=64X'LG````(N<)+````"+:PS'1"0,````
+M`(7;#X0/`0``@^P(BT,$C50D&%+_<PC_4!R#Q!`/MD0D(#L%H`4```^.U@``
+M`(U#$(E$)`3V1"0A`755#[8%`````#M$)`QU2`^V!0````"-!("-!("-!("-
+M!("-!("-!(#!X`:CI`4``,<%K`4```````")';`%``"#[`AHI`4``%7H_/__
+M_X/$$.FC````D(M#&(E$)`C_A9`!`P"#[`R+?"005^C\____B<:+0P2)'"1H
+M1)X&`%;_-:`%``#_<PC_4#2#Q""$P'45@^P(5E?H_/____^-D`$#`(/$$.L,
+MBT0D"#E#&(-4)`P`_P6@!0``#[9$)"`[!:`%```/CS'____'!:`%````````
+MBQN%VP^%\?[___^-D`$#`(.]D`$#``!U#(/L#%7H2?W__X/$$('$G````%M>
+M7UW#C78`55=64X/L#(MT)""+?"0DBVPD*(FNC`$#`(M>"(7;=!F#[`R+0P3_
+M<PC_4'B#Q!"$P'1SBQN%VW7GBQT`````A=MT%Y"#>R@`=`J#[`Q6_U,H@\00
+MBQN%VW7JA?]T%8/L"(M'!&H!_W<(_U`HQD=$`8/$$,>&D`$#``$```"#[`S_
+M=@CH_/___X/$$(.^D`$#``!T2(7M=!>#[`Q6Z/S___^#Q!#K-L:&A`$#``'K
+M+8.^D`$#``!T)(/L#&B@A@$`Z/S___^)-"3H_/___X/$$(.^D`$#``!UWXUV
+M`(/$#%M>7UW#5E.#[`2+="00.34`````=0N+!J,`````ZR2)]HL5`````(72
+M=!@Y,G0,B?:+$H72=`PY,G7VA=)T!(L&B0*-1@PY1@QT&XG#BT8,+2@"``"#
+M[`Q0Z/S___^#Q!`Y7@QUYXU&%#E&%'0NC78`BT84C4CTBU`$BP")4`2)`H/L
+M"%&-AH````!0Z/S___^#Q!"-1A0Y1A1UU8"^A`$#``!U(HL=`````(7;=!B)
+M]H-[+`!T"H/L#%;_4RR#Q!"+&X7;=>J+7@B%VW08C78`@^P,BT,$_W,(_U!T
+M@\00BQN%VW7K@\0$6U[#D%.+3"0(BUPD#(M1#(U!##G0=!:)P8UV`(V"V/W_
+M_SE8''0+BQ(YT77ON`````!;PU93@^P0BUPD'%/H_/___XG&QT`(`````(U`
+M;(E&)(M##(/H;(E&((U&#(E&#(E&$(/$$+D`````ND0```"-1BB("$!*=?J)
+M\(/$!%M>PXGV5E.#[`2+7"04BW0D&+@`````.7,(<B&#[`Q3Z/S___^+5"0@
+MB1")6`2)<`B+4P@I\D*)4PB#Q!"#Q`1;7L.)]H/L%(M$)!B+3"0<BU`(`U$(
+M2HE0"%%0Z/S___^#Q!S#@^P0BT0D%/]T)!B-4&A24.C\____@\0<PXUV`(/L
+M%(M$)!A0BP"#P&A0Z/S___^#Q!S#D%=64XM\)!"^`````+@`````@+^$`0,`
+M`'4[BU\(A=MT&HUV`(/L#(M#!/]S"/]05`G&@\00BQN%VW7IB?"$P'0/@^P,
+M5^C\____@\00C78`B?(/ML);7E_#C78`4X/L"(M$)!"+6`B%VW06D(/L#(M#
+M!/]S"/]0;(/$$(L;A=MUZX/$"%O#B?964X/L!(MT)!"+7@B%VW0N@^P,BT,$
+M_W,(_U!P@\00@'M$`'03@^P(BT,$:@'_<PC_4"B#Q!")]HL;A=MUTHM>#(U&
+M##G8="J)QHGVC8/8_?__@'@(`744BU`$@WHX`'0+@^P,4/]2.(/$$)"+&SG>
+M==J#Q`1;7L-3@^P(BT0D$(M8"(7;="Z0@'M$`'02@^P(BT,$:@#_<PC_4"B#
+MQ!"0@^P,BT,$_W,(_U!H@\00BQN%VW73@\0(6\.)]E93BUPD#(MT)!"+0PR+
+M4`R#P`PYT'0CB<&-=@"-@MC]__^`>`@!=0PY<%1U!SE86'0-B?:+$CG1=>*X
+M`````%M>PXGV55=64X/L#(M\)""+;"0D55?HIO___XG#@\0(A<`/A(\```"Z
+M`````/:`'`(```$/A<L```"#N*0`````=0F#N)0`````=`VZ`````.FO````
+MC78`BT,DA<!T2Y"+4!2%TG0]BTH,A<ET)[@`````@'DP`'0<#[9Q,(UV`#E4
+M@4AU"L=$@4@`````B?9`.<9_ZX/L#%+H_/___X/$$.NUD(L`A<!UMH/L#%/H
+M_/___X/$$(/L#(U'$%#H_/___XG#@\00A<!T,H/L#(M'!/]T)#C_="0X4U7_
+M=PC_4#2#Q""Z`0```(3`=1>#[`A3C4<04.C\____@\00N@````")]HG0@\0,
+M6UY?7<.)]E=64XM\)!"#[`Q7Z/S___^+7PR#Q!"-1PPYV'0MB<:0C8/8_?__
+M@[@D`@```'05BU`$@WHX`'0,@^P,4/]2.(/$$(GVBQLYWG76@^P,5^C\____
+MBU\,@\00C4<,.=AT%H-[^`!T"K@!````ZPZ-=@"+&SG8=>JX`````%M>7\.0
+M@^P4BT0D&%#_,.CA\?__@\0<PY"+1"0$@W@<`'@'QT`<_____\.)]E.+3"0(
+MNP````"+5"0,2H/Z_W0,#[8!`<-!2H/Z_W7T#[;#6\.-=@"+3"0$H0````"%
+MP'08BU`(A=)T"SE*"'01BQ*%TG7UBP"%P'7HN`````##D%93@^P$BW0D$(M,
+M)!2#>1``=&&+GL@```"#>10`=`F+412+01")0A"+41"+012)`L=!$`````#'
+M010`````@[[(`````'0M.9[(````="6#[!"+GL@```#H_/___X/$"(M3!"G"
+M4O]V!.C\____@\00C78`@\0$6U[#B?975E.+?"00BW0D%.C\____B<&#?A``
+M=!Z#?A0`=`F+5A2+1A")0A"+5A"+1A2)`L=&$`````")R`,&B48$BY?(````
+MC8_(````A=)T%HG#D(M"!"G8A<!_"HU*%(M2%(72=>V)5A2)3A"%TG0&C484
+MB4(0B3$YM\@```!U$X/L"/\V_W<$Z/S___^#Q!"-=@!;7E_#5U93BW0D$.C\
+M____B<>+GL@```")V87;=$R)]HM!!"GXA<!_08-Y%`!T#(M1%(V&R````(E"
+M$(M!%(F&R````(G#QT$0`````,=!%`````"#[`S_<0S_40B#Q!"+CL@```"%
+MR76V@^P,5NC\____@\00A=MT'CF>R````'46@^P(BT,$*?A0_W8$Z/S___^#
+MQ!")]EM>7\-75E.+5"00BWPD%(MT)!B+2@R-0@PYR'0]B<.0C9'8_?__@'H(
+M!'8H.7HD=2.%]G@3@WH,`'0)BT(,.52P2'0*A?9Y#(-Z#`!U!HG0ZPV)]HL)
+M.<MUQK@`````6UY?PY!64XMT)`R+7A"Y`````+HL````B=B-=@"("$!*=?J-
+M0PB)0PB)0PR)&XE;!,=#%.BN!@")<QC'0QP`````N`````!;7L.-=@!75E.+
+M="00@^P(:$`8``#_-NC\____B<>#Q!#V1DP(=1R+1B2%P'05BQB#[`A05^C\
+M____B=B#Q!"%VW7K@^P,BT90_W9<_U!`@\0(_W9<BT98@\`04.C\____@\00
+M6UY?PXGV5E.#[`2+="00C48D]D`H`G0.@^P,5NC\____@\00ZR*+&(7;=!R)
+M]HM3%(72=`V#[`R+0@12_U`D@\00BQN%VW7FQX:D`````````(/$!%M>PXGV
+M4X/L$(M$)!B+6!!0BP,%L````%#H_/___\>#F````*BJ!@")FYP```#'@Z``
+M````````@\0(C8.8````4(L#@\`D4.C\____@\086\.-=@!75E.+?"00@*<<
+M`@``_HM?)(7;=!F-=@"#>Q0`=`J+0Q2`H!P"``#^BQN%VW7J@^P(5VH!Z/S_
+M___'AZ0````!````BP<%L````(D$).C\____B<:#Q!"%P'1@QP`!````QT`$
+M_*H&`(E&",=`#`````")>!"+7R2%VW0LBT,4A<!T'X-X#`!T#(UV`(M`#(-X
+M#`!U]X/L"%90Z/S___^#Q!"+&X7;==3_#H,^`'4,@^P,5NCX_O__@\006UY?
+MPY!75E.+="00BWPD%(M$)!B%P`^(S0```(/L!%!75NC\____B<.#Q!"%P`^$
+MI0```(MV#+\`````]D!,`G0/@^P,4.C\____@\00ZR^0@#T``````'0E]D!,
+M`70-@^P,4.C\____@\00D(I#3*A$=0:#R"2(0TR_`0```(.^)`$```!U087_
+M=#W'AB0!```!````QX88`0```````(FV'`$``,>&(`$```````"#[`B-AA@!
+M``!0C48D4.C\____@\00C78`@^P(4VH"Z/S___^#Q!#K((/L#(M&!%?_4$"#
+MQ!"-=@"#[`A7C4804.C\____@\006UY?PU93@^P,BT0D&(M8#(MP$%"-0RQ0
+MZ/S___]3:`RL!@!64^C\____@\0D6U[#BT0D!(M`)`,%6!@``(/H%,.-=@!5
+M5U93@^P,BW0D(%;HV____X/$!(E$)`B+;BB+?1#_3Q`/MD9>@_@-=!Z#^`U_
+M#8/X"W10Z9L```"-=@"#^!%T7>F.````B?9FBT9<)?\"``!F/0`"=7V`?E\`
+M=2'&1E\!QD9>`(U'"(M0!(M,)`B)2`2)`8E1!(D*Z8P```#&1EX0ZU#&1EX`
+MC4<(BU`$BTPD"(E(!(D!B5$$B0KK;(/L#%7HF1X``(/$$(7`=2:`?E\!=R#^
+M1E_&1EX`C4<(BU`$BTPD"(E(!(D!B5$$B0KK.8UV`(!^7A!U&HM=$(EU$(/L
+M"%5J`^C\____B5T0@\00C78`BU0D"(M""(E&:(/L#%;H_/___X/$$(-_(`!U
+M(,='(`$```"#[`B-1Q10BT4`@\`L4.C\____@\00C78`@\0,6UY?7<.+1"0$
+MBT`0BPBZ`````#G!=!*+402+`8E0!(D"B0F)202+40R)T,.05E.#[`2+="00
+MBUPD%(M.$(![7`!U%0^W0U"Z``````-#2!-33(E&0(E61/]!$(/L"(M&4%/_
+M=ES_4$R#Q!1;7L.-=@!64X/L!(MT)!"+7A#'0R``````]H8<`@``&`^%X```
+M`(.^E``````/A=,```"*0RBH`@^%R````*@$="2-0P@Y0PAU!#D;=!B#[`Q6
+MZ$L=``"#Q!#V0R@"#X6B````B?:-0P@Y0PAT+8-[$``/A8X```"+0PB+2`2+
+M$(E*!(D1B0")0`2#[`C_<`Q6Z"S___^#Q!#K:P^V1DHY0Q!S8HGV5NCN_O__
+MB<*#Q`2%P'119HM`7"7_,```9CT$('4J.1MT&L9"7@&#[`Q2Z/S___]6Z+_^
+M__^)PH/$%.L,]D,H`70&@$LH!(GV@^P(4E;HRO[__X/$$`^V1DHY0Q!RHHGV
+M@\0$6U[#B?975E.+="00BWXHBU\05N@M_?__@\0$B<*`?EP$=1[V1ETP=`;V
+M0R@$=!+&1EX!@^P,5NC\____@\00ZUC'0R0`````QT(0`````(ER#(M&:(E"
+M",=&:$2M!@"+0P2)4P2)&HE"!(D0#[9'2CE#$',D@WL@`'4>QT,@`0```(/L
+M"(U#%%"+!X/`+%#H_/___X/$$(GV6UY?PX/L#(M4)!"+0A"`HAP"``#WQX*4
+M`````````(-X(`!U'\=`(`$```"#[`B#P!10BP*#P"Q0Z/S___^#Q!"-=@"#
+MQ`S#@^P,BU0D$(J"'`(``*@(=1^#R`B(@AP"``"#[`2+0E!2:(BP!@#_<ES_
+M4$2#Q!"0@\0,PU93@^P$BW0D$(M&)(7`=$J+4!2%TG0]BTH,A<ET)[@`````
+M@'DP`'0<#[99,(UV`#E4@4AU"L=$@4@`````B?9`.<-_ZX/L#%+H_/___X/$
+M$.NVD(L`A<!UMH/L#%;H_/___X/$!(M&4/]V7/]09(DT).C\____@\046U[#
+MC78`4X/L"(M,)!"+7"0<BE0D)+C_____]H$<`@```70C@^P(BT%0#[;24O]T
+M)"P/M]-2_W0D+/]T)"S_<5S_4%"#Q""#Q`A;PXGV55=64XM,)!2_`````(M9
+M.(MQ/('#``#^_X/6_XG8)0``_O^)PX/#`8/6`(M1)(72=!Z]`0```)"+0A2%
+MP'0+BT@H*=F)Z-/@"<>+$H72=>BY`````+H!````B?:)T-/@A<=U#(G(F0'8
+M$?+K$XUV`$&#^0-^YK@`````N@````!;7E]=PXUV`%575E.+7"04O@````"_
+M`````+T`````QT,P`````,=#-`````#V0TQ`=!''0R@`````QT,L`````.M=
+MD(M+)(7)=#>0@WD4`'0&1>LGC78`BT,PBU,T`T$,$U$0B4,PB5,T.7D0<@UW
+M!3EQ#'8&BW$,BWD0BPF%R77*@_T#?A#'0R@`````QT,L`````.L)B7,HB7LL
+MC78`6UY?7<.-=@!55U93@^P,BT0D((M8)+D`````A=MT#I"#>Q0!@]G_BQN%
+MVW7SN`````"#^0,/CXP$``#K1XG8Z8,$``"+,XM&!(M6"(E#!(E3"(L&B0.#
+M[`A6@^P,:$`8``"+5"0\_S+H_/___X/$%%#H_/___[@`````@\00Z40$``"0
+MBW0D((M>)(7;#X0O!```D(-[%``/A48"``"+?"0H.7L(#X<M`@``<@V+5"0D
+M.5,$#X<>`@``BW0D)(M\)"@#="0L$WPD,(M#!(M3"`-##!-3$#G7#X?Z`0``
+M<@@YQ@^'\`$``(M4)"@S4PB+1"0D,T,$"<)U%HM4)#`S4Q"+1"0L,T,,"<(/
+MA"W___^+5"0H,U,(BT0D)#-#!`G"#X6&````@^P8:$`8``"+="0\_S;H_/__
+M_X/$%%#H_/___XG&@\00N`````"%]@^$<P,``+D`````NA@```")\(@(0$IU
+M^HM##(M3$"M$)"P;5"0PB48,B580BT0D)(M4)"@#1"0L$U0D,(E&!(E6"(L#
+MB0:),XM$)"R+5"0PB4,,B5,0B=CI'`,``)"+5"0H.5,(#X<?`0``<@V+?"0D
+M.7L$#X,0`0``@^P8:$`8``"+1"0\_S#H_/___X/$%%#H_/___XG&@\00N```
+M``"%]@^$T0(``+D`````NA@```")\(@(0$IU^HM#!(M3"(E&!(E6"(M4)"2+
+M3"0H*U,$&TL(B58,B4X0BP.)!HDSBW0D)(M\)"B)<P2)>P@I4PP92Q"+?"0P
+M.7L0#X*`````=PF+5"0L.5,,=G6#[!AH0!@``(MT)#S_-NC\____@\044.C\
+M____B<:#Q!"%P`^$P?W__[D`````NA@```"("$!*=?J+1"0LBU0D,`-#!!-3
+M"(E&!(E6"(M##(M3$"M$)"P;5"0PB48,B580BP.)!HDSBT0D+(M4)#")0PR)
+M4Q")V.GQ`0``B?:#>Q0`#X36`0``B?:+5"0H,U,(BT0D)#-#!`G"#X6^`0``
+MN0$```"+,X7V=#.#?A0`=">+5"0H,U8(BT0D)#-&!`G"=16+1@R+5A`[4Q!R
+M"7<%.T,,=@*)\T&+-H7V=<VX`````(/Y`0^/@0$``(M4)#`Y4Q!R='<)BWPD
+M+#E[#')I@^P8:$`8``"+1"0\_S#H_/___X/$%%#H_/___XG&@\00N`````"%
+M]@^$/P$``+D`````NA@```")\(@(0$IU^HM$)"2+5"0HB48$B58(BT0D+(M4
+M)#")1@R)5A"+`XD&B3.)\.D$`0``BU0D((MR)(7V#X3<````@WX4``^%R```
+M`(M[#(MK$(M#!(M3"`'X$>J+3@@QT3-&!`G!#X6H````BT8,BU80`?@1ZCM4
+M)#!W$G(&.T0D+',*N`````#IJ0```(/L&&A`&```BWPD//\WZ/S___^#Q!10
+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
+M`````0```(M#!(M`.(F#B````(F;C````,>#D`````````"#[`B-@X@```!0
+MC44L4.C\____@\00Z>4```"`BQP"```0Z=D```"`HQP"``#OBT,0@W@@``^%
+MQ0```,=`(`$```"#[`B+0Q"#P!10C44L4.C\____@\00Z:,```"#[`B+0UB+
+M4`2-1"0(4/]S7/]2/(I$)!Z(0TJ#Q!#I@````(/L#%;H_/___XG%BU@(@\00
+MA=MT#HUV`#ES"'0&BQN%VW7U@^P,C4,L4.C\____@\00A<!T2HE8#(M4)$B)
+M4!#'``2M!@")0`3'0`@`````@^P(4(U%)%#H_/___X/$$.L>B?:+7A#'1A``
+M````@^P(5FH#Z/S___^)7A"#Q!"0@\0L6UY?7<-3@^P(QP58&````````(L=
+M`````(7;=!O_4T@Y!5@8``!S"?]32*-8&```D(M;!(7;=>6#!5@8```4@^P,
+M:$`8``#H_/___[@`````@\086\.-=@"#[!C_="0<Z/S___^#Q!S#4X/L"(M<
+M)!"+4Q"*0BB#X`4\`75/BT0D%#E")')&@^P(:@'_,^C\____B<*#Q!"%P'0T
+MBD!=@^#/@\@@B$)=B5HHB5HLQD)<!,9"7@#'0F@PR@8`@^P,4NC\____@\00
+MZP6)]O]")(/$"%O#BT0D!(M`$,=`)`$```##D%93@^P0BT0D'(M8+(LP4.C\
+M_____PN#Q!"#.P!U$H/L"(U#!%!6Z/S___^#Q!")]H/$!%M>PXGV5E.#[`R+
+M="08BUX0:@'_-NC\____@\00N@````"%P'1?]D,H`70=QD!<`L=`4$PA``#&
+M0$@&QT!,`````,9`20#K.)#&0%P#QT!8`````,9`4T!FQT!,``!FQT!.``!F
+MQT!0``#&0%)`9L=`2```9L=`2@$`9L=`5```B7`HB<*)T(/$!%M>PU.#[!2+
+M7"0@_W0D'.AG____@\00A<!T&(E8+,=`:+S*!@#_`X/L#%#H_/___X/$$(/$
+M"%O#C78`5U93BUPD$(M\)!2`>P@$=C>^`````(![,`!T4(M$LTB%P'08]H`<
+M`@```70/@^P(5U#H_/___X/$$(GV1@^V0S`Y\'_7ZR60@'L(!'4&BULDC78`
+M]H,<`@```70/@^P(5U/H8?___X/$$(GV6UY?PU93@^P$BTPD$(MQ*(M>$(I3
+M*(C0@^#]B$,H@'E>`74(B-"#X/F(0RB#[`Q1Z/S___^#Q!"#>R``=1['0R`!
+M````@^P(C4,44(L&@\`L4.C\____@\00B?:#Q`1;7L.)]E93@^P0BUPD'(MS
+M$%/H7O[__XG"@\00N/____^%TG0@QT)H),P&`(!.*`*#[`B+0U!2_W-<_U!,
+MN`````"#Q!"#Q`1;7L.0D%93BW0D#(L-`````(7)=":+40R-00PYT'06B<.-
+M@MC]__\YL%@"``!T$8L2.=-U[(L)A<EUVK@`````6U[#B?:+5"0$@'H$`'42
+MN`````"!.GL!``!V%^L0C78`N`````"!.GL!``!V!;@!````PY"+5"0$@'H$
+M`'42N`````"!.L,!``!V%^L0C78`N`````"!.L,!``!V!;@!````PY"+5"0$
+MBTPD"(H".@%U$HGV@#H`=`M"08H".@%T\XUV``^^`@^^$2G0PXUV`%575E.#
+M[`R+?"0@BVPD)(FO:`$#`+X`````.>YS)HGVC1QVC1R?@^P(C8-D`0``4%?H
+M_/___XF#8`$``(/$$$8Y[G+<QX=L`0,`$@```(L5`````(72=!N+AVP!`P`[
+M0@AV"8M""(F';`$#`(M2!(72=>6#Q`Q;7E]=PY!64X/L!(MT)!"[`````(.^
+M:`$#``!V*Y"-!%N-!(;_L&@!``#_L&0!``#_L&`!``!6Z/S___^#Q!!#.9YH
+M`0,`=];'AF@!`P``````@^P,5NC\____@\046U[#D%575E.![(P```"^````
+M`(L]`````(7_#X2S````C78`BU\(A=L/A)L```"-;"0`D(/L"(M#!%7_<PC_
+M4!R#Q!"`?"03`'1UB?!&.X0DH````'5I@[PDI`````!T6P^V1"07BY0DI```
+M`#D"?$N+&X7;=0FX`````.M;B?8/MD0D%XN4)*0````I`H/L"(M#!%7_<PC_
+M4!R#Q!"`?"03`'0'N`````#K+0^V1"07BY0DI````#D"?;6)V.L9BQN%VP^%
+M:O___XL_A?\/A5#___^X`````('$C````%M>7UW#55=64X'LC````+X`````
+MBST`````A?\/A*<```"-=@"+7PB%VP^$CP```(UL)`"0@^P(BT,$5?]S"/]0
+M'(/$$(!\)!,`=&F)\$8[A"2@````=5V#O"2D`````'1/BX0DI````(,X`'1#
+MBQN%VW4)N`````#K4XGVBX0DI````/\(@^P(BT,$5?]S"/]0'(/$$(!\)!,`
+M=`BX`````.LJD(N$)*0```"#.`!UO8G8ZQF+&X7;#X5V____BS^%_P^%7/__
+M_[@`````@<2,````6UY?7<-55U93@>R<````B[PDN````(NT)+P```#'1"0,
+M_____\=$)`@`````QP<`````QP8`````BRT`````A>T/A)````")]HM="(7;
+M='R0@^P(BU,$C40D&%#_<PC_4AR+0P2#Q!"#N(0`````=!B%]G04@^P,_W,(
+M_Y"$````B40D&(/$$)"`?"0C`'00_T0D#,<'`````,<&`````#N<)+````!U
+M$(N$)+0```"+5"0,B1#K'Y`/MD0D)P$'BT0D"`$&BQN%VW6%BVT`A>T/A7+_
+M__^!Q)P```!;7E]=PXUV`%575E.![(P```"_`````(LM`````(7M=#2-=@"+
+M70B%VW0CC70D`)"#[`B+0P16_W,(_U`<@\00@'PD$P&#W_^+&X7;=>*+;0"%
+M[77/B?B!Q(P```!;7E]=PXGV55=64X'LI````(NL)+P```!J`/^T)+P```#H
+M\?S__XG#@\00N/____^%VP^$JP```+D`````NDP```")Z(UV`(@(0$IU^KD`
+M````NG@```"-1"00B`A`2G7Z@^P(BU,$C40D&%#_<PC_4AR*1"0VB$4#BD0D
+M-(A%`(I$)#6(10&-?02-="1<_+@)````B<'SI8U]*(UT)#B)P?.EBD0D-XA%
+M`H/$$(,[`'0LBQN#[`B+4P2-1"084/]S"/]2'(/$$(!\)",`=0^*10("1"0G
+MB$4"@SL`==2X`````('$G````%M>7UW#D%575E.![*0```"+K"2\````:@#_
+MM"2\````Z`G\__^)PX/$$+C_____A=L/A-<```"Y`````+I8````B>B-=@"(
+M"$!*=?JY`````+IX````C40D$(@(0$IU^H/L"(M3!(U$)!A0_W,(_U(<BD0D
+M-HA%`XI$)#2(10"*1"0UB$4!C7T$C70D7/RX"0```(G!\Z6-?2B-="0XB<'S
+MI8I$)""(15"*1"0AB$51BD0D(HA%4HI$)".(15.+0PR)14R#Q!"`>T0`=`2`
+M30,$BD0D)XA%`H,[`'0LBQN#[`B+4P2-1"084/]S"/]2'(/$$(!\)",`=0^*
+M10("1"0GB$4"@SL`==2X`````('$G````%M>7UW#D%575E.![,0```"-A"3<
+M````4/^T)-P```#H]OK__XG'QD0D%P"#Q!"X_____X7_#X3Q````BV\,N0``
+M``"Z1````(N$)-@```"-=@"("$!*=?J#[`B+5P2-1"0X4/]W"/]2'(/$$(!\
+M)$(/=@7&1"1"#X/L!(M'!(U4)`Q2_[0DW````/]W"/]07(/$$(7`=12+1"0,
+MBY0DV````(E"!(M$)`B)`HM=#(U%##G8='*0C;/8_?__@'X(`75<.7Y8=5>#
+M[`B+5E"-1"084/]V7/]2/(/$$/9$)!H"=3P/MD0D'#N$)-0```!U+HI$)!TZ
+M1"1"<R0/MM"+AE@"``"+C"38````B421"/Y$)`>*1"0'.$0D0G0+B?:+&XU%
+M##G8=8^X`````('$O````%M>7UW#C78`55=64XML)!2+?"08O@````"X````
+M`(7_?G_K!(GPZWF+'0````"%VW1MB?:+2PR-0PPYR'1;B?:-@=C]__^#>`P`
+M=42`>`@$=B*+D&0!``"%TG0+@WH$`'0%.4((="F+@%@"``")1+4`1NL8@'@(
+M`742]D!,`G0,BX!8`@``B42U`$:0.?YTE(L)C4,,.<AUIXL;A=MUE8GP6UY?
+M7<.)]E575E.+;"04BWPD&+X`````N`````"%_WY(ZP2)\.M"BPT`````A<ET
+M-HGVBU$,C4$,.=!T)(G#C8+8_?__@'@(`740BX!8`@``B42U`$8Y_G3)D(L2
+M.=-UWHL)A<EUS(GP6UY?7<.0BU0D!(/J!;@`````@_H'=S?_))54(0``N`$`
+M``##N`(```##N`<```##N`4```##N`8```##N`,```##N`0```##N`@```"0
+MPXUV`%575E.#[`R+;"0@QT0D"`````#VA1P"```!=23'1"0(`0```/:%20$`
+M``1T",=$)`@!"```BT0D".GB`0``B?;VA4@!```"=1J+13B+73R)PC-50(G9
+M,TU$(<(AV8G("=!T!8-,)`@"]H5(`0```70(@4PD"``0``#VA4@!```0=`6#
+M3"0(!/:%2`$``"!T"(%,)`@``0``]H5(`0``0'0(@4PD"``"``"+140+14!T
+M*X-,)`@(@^P(_W5$_W5`Z/S___^+500/ME(&@\00.=!]"H%,)`@`(```B?;V
+MA1P"```$=`6#3"0($/:%'`(```)T!8-,)`A`]H5(`0``"'0(@4PD"(````#V
+MA4D!```$=`B!3"0(``@``/:%20$```AT"(%,)`@`!```OP````"`?3``#X2[
+M````B?:+=+U(A?8/A*````#VAAP"```!#X23````@'X(!`^&B0```/:&2`$`
+M``)U&HM&.(M>/(G",U9`B=DS3D0APB'9B<@)T'0%@TPD"`+VAD@!```!=`B!
+M3"0(`!```/:&2`$``!!T!8-,)`@$]H9(`0``('0(@4PD"``!``#VAD@!``!`
+M=`B!3"0(``(``(M&1`M&0'0%@TPD"`CVAD@!```(=`J!3"0(@````(GV1P^V
+M13`Y^`^/1_____9$)`@"="#W1"0(`!```'4.BT0D""4((```@_@(=0B#9"0(
+M_8UV`(M$)`B#Q`Q;7E]=PXM,)`2+5"0(N`````#V@1P"```!=0*P`?9"""!T
+M`X/((/:!'`(```1T`X/(`O:!'`(```)T`X/(!/9""!!T`X/($/9""@%T`X/(
+M0/9""@)T`@R`]D%,!'0%#0```(#V04P"=`4-```"`/9!3`%T!0T```$`PXUV
+M`%575E.#[!R+3"0PBX%,`0``BY%0`0``#ZS0"\'J"XG!B=,/I,,"P>$"`<$1
+MTXG(B=H/I,H"P>`"`<$1TXG(B=H/I,H"P>`"`<$1TP^DRP/!X0.+="0PBT84
+MBU88#ZS0"\'J"U)04U'H_/___X/$$(E$)`B)5"0,#[9&,(E$)!2+3@0/MDD&
+M*<B)P8M$)`CWX8G!P>`"`<B-'`"^`````(-\)!0`#XZ;````B?:+1"0PBTRP
+M2(7)='SV@1P"```!='.`>0@$=FWV@4@!``!P=&2+@4P!``"+D5`!```/K-`+
+MC02`C02`C02`C2S%`````(M!%(M1&`^LT`O!Z@N)1"0(B50D#(GHN@````#W
+M="0(B<4/MD$PBU$$#[92!BG0#Z_%C02`T>"%VW0$.<-V!8G#C78`1HM4)#`/
+MMD(P.?`/CV?___^!^Q`G``!V!;L0)P``B=B#Q!Q;7E]=PU575E.#[`R+1"0@
+MBZAD`0``@'UF`@^%)0$``(M%"(M-!(M0&(M`%"M!%!M1&`^LT`O!Z@NY$"<`
+M`(G3"<,/A,4"``"`?10`='B+10B+<!2+>!B)\(GZ*T5<&U5@#ZS0"\'J"XG!
+MB=,/I,,"P>$"`<$1TXG(B=H/I,H"P>`"`<$1TXG(B=H/I,H"P>`"`<$1TP^D
+MRP/!X0.+100K<!0;>!@/K/X+P>\+5U934>C\____@\00B<'!X0(!P='AZ4<"
+M``"+102+<!2+>!B+15R+56`I\!GZ#ZS0"\'J"XG!B=,/I,,"P>$"`<$1TXG(
+MB=H/I,H"P>`"`<$1TXG(B=H/I,H"P>`"`<$1TP^DRP/!X0.+10B+4!B+0!0I
+M\!GZ#ZS0"\'J"U)04U'H_/___X/$$(G!P>$"`<'1X>G+`0``C78`@'UF`P^%
+MX@```(!]%`!T<(M%!(MP%(MX&(GQB?LK35P;76`/K-D+P>L+B<B)V@^DR@+!
+MX`(!R!':B<&)TP^DPP+!X0(!R!':B<&)TP^DPP+!X0(!R!':#Z3"`\'@`P^L
+M_@O![PM75E)0Z/S___^#Q!")P<'A`@'!T>'I20$``)"+15R+56`/K-`+P>H+
+MB<&)TP^DPP+!X0(!P1'3B<B)V@^DR@+!X`(!P1'3B<B)V@^DR@+!X`(!P1'3
+M#Z3+`\'A`XM%!(M0&(M`%`^LT`O!Z@M24%-1Z/S___^#Q!")P<'A`@'!T>'I
+MW0```)"`?10`=&Z+10B+<!2+>!B)\8G[*TU<&UU@#ZS9"\'K"XG(B=H/I,H"
+MP>`"`<@1VHG!B=,/I,,"P>$"`<@1VHG!B=,/I,,"P>$"`<@1V@^DP@/!X`,/
+MK/X+P>\+5U924.C\____@\00B<'!X0(!P='AZVJ)]HM%7(M58`^LT`O!Z@N)
+MP8G3#Z3#`L'A`@'!$=.)R(G:#Z3*`L'@`@'!$=.)R(G:#Z3*`L'@`@'!$=,/
+MI,L#P>$#BT4(BU`8BT`4#ZS0"\'J"U)04U'H_/___X/$$(G!P>$"`<'1X8GV
+M@?D0)P``=@6Y$"<``(G(@\0,6UY?7<.055=64X/L#(ML)""+?"0DBX54`0``
+MB0>+A5@!``")1P2+A5P!``")1PB+A6`!``")1PP/MD4(4.A<^/__@^P(B$=D
+MBD4QB$=EBX5,`0``B8>0````5>B*^/__B4=HB2PDZ/S___^)AXP```#&1V8`
+MO@````"#Q!"`?3``=%N-=@"+7+5(A=MT1X!_9P!U$`^V0PA0Z`#X__^#Q`2(
+M1V>`>P@$=10/MD=FBU,DBY)8`@``B52';.L/D`^V5V:+@U@"``")1)=L_D=F
+M@']F!W<)1@^V13`Y\'^H#[9W9H/^!W\1C78`QT2W;/____]&@_X'?O*#Q`Q;
+M7E]=PXGV55=64X/L#(ML)""+?"0DBX54`0``B0>+A5@!``")1P2+A5P!``")
+M1PB+A6`!``")1PP/MD4(4.A@]___@^P(B$=DBD4QB$=EBX5,`0``BY50`0``
+MB8>P````B9>T````5>B"]___B4=HB2PDZ/S___^)AZP```#&1V8`O@````"#
+MQ!"`?3``=%N-=@"+7+5(A=MT1X!_9P!U$`^V0PA0Z/CV__^#Q`2(1V>`>P@$
+M=10/MD=FBU,DBY)8`@``B52';.L/D`^V5V:+@U@"``")1)=L_D=F@']F#W<)
+M1@^V13`Y\'^H#[9W9H/^#W\1C78`QT2W;/____]&@_X/?O*#Q`Q;7E]=PXGV
+M4XM<)`B+4PR%TG4,BT,DZR<#0B1`ZR&0N`````"`>C``=!`/MDHPD#E<@DAT
+MXT`YP7?UN`````!;PXGV55=64X/L#(ML)""+?"0D9HM%.&:)A\@```!5Z*3_
+M__^)A\0```"+A50!``")!XN%6`$``(E'!(N%7`$``(E'"(N%8`$``(E'#`^V
+M10A0Z`7V__^#[`2(1V2*13&(1V6+A4P!``"+E5`!``")A[````")E[0```!5
+MZ"?V__^)1VB)+"3H_/___XF'K````,9'9@"^`````(/$$(!],`!T68M<M4B%
+MVW0X@']G`'40#[9#"%#HH/7__X/$!(A'9X!["`1U$(M#)(N`6`(``(E$MVSK
+M%9"+@U@"``")1+=LZPC'1+=L`````/Y'9D8/MD4P.?!^!8/^#WZG#[9W9H/^
+M#W\0B?;'1+=L_____T:#_@]^\H.]9`$```!T68N59`$``+C_____@WH$`'0)
+MBT($BX!8`@``B8>X````N/____^#>@@`=`F+0@B+@%@"``")A[P```"#>@0`
+M=!F#>@@`=!.#[`Q5Z/S___^#Q!")A\````"0@\0,6UY?7<-55U93@^P,BVPD
+M((M\)"2+13B+53R)AY````")EY0```!5Z"'^__^)AX0```"+A50!``")!XN%
+M6`$``(E'!(N%7`$``(E'"(N%8`$``(E'#`^V10A0Z(+T__^#[`2(1V2*13&(
+M1V6*132(AX@```"+A4P!``"+E5`!``")1W")5W15Z*'T__^)1VB)+"3H_/__
+M_XE';,9'9@"^`````(/$$(!],`!T9I"+7+5(A=MT0(!_9P!U$`^V0PA0Z!ST
+M__^#Q`2(1V>`>P@$=12+0R2+@%@"``")A+>8````ZQZ)]HN#6`(``(F$MY@`
+M``#K#9#'A+>8`````````)#^1V9&#[9%,#GP?@6#_C]^FP^V=V:#_C]_$XGV
+MQX2WF````/____]&@_X_?N^#O60!````=%*+E60!``"X_____X-Z!`!T"8M"
+M!(N`6`(``(E'>+C_____@WH(`'0)BT((BX!8`@``B4=\@WH$`'08@WH(`'02
+M@^P,5>C\____@\00B8>`````@\0,6UY?7<-75E.![+````"+O"3`````B[0D
+MQ````(M?6+C_____@'\(`0^%C`$``(/L"(M74(V$))@```!0_W=<_U(\@\0(
+MBU,$C40D&%#_<PC_4AR-1"0<4(U$)!Q0C40D'%!3Z'GM__^*A"2]````B$8"
+M#[:$)+P```"#Q"#VA"2:`````G0&`T0D#.L$`T0D"(A&`8M$)`2(!H!_3`!Y
+M"8I'2XA&`^L+D(J$)*(```"(1@.*E"28````B-'`Z0:#X0&*1@:#X/S`Z@?1
+MX@G("=`/MHPDF0```(/A`<'A`H/@\XJ<))D```"-%)T`````@^(("<@)T(C9
+M@^$0@^#/B-J#XB`)R`G0B-F#X4"#X#^(VL#J!P^VTL'B!PG("="(1@:*E"2?
+M````@^(#BD8'@^#\"="(1@>*A"2C````B$8%]L,$=`?&1@0"ZQR0BH0DF0``
+M`,#H`X/@`8/X`1G`@^#^@\`#B$8$C80DD````%!7Z%/T__^#Q`B)1@B#O"2H
+M`````'0OC48,@^P$:)8```#_M"2P````4.C\____C5Y"@\0(:BA3Z/S____&
+M0R<`@\00B?:X`````('$L````%M>7\.05U93@>RP````B[PDP````(NT),0`
+M``"+7UBX_____X!_"`$/A>D!``"#[`B+5U"-A"28````4/]W7/]2/(/$"(M3
+M!(U$)!A0_W,(_U(<C40D'%"-1"0<4(U$)!Q04^BYZ___BH0DO0```(A&`@^V
+MA"2\````@\0@]H0DF@````)T!@-$)`SK!`-$)`B(1@&+1"0$B`:`?TP`>0B*
+M1TN(1@/K"HJ$)*(```"(1@.*A"2C````B$8%BI0DF````(C1P.D&@^$!BD8&
+M@^#\P.H'T>()R`G0#[:,))D```"#X0'!X0*#X/.*G"29````C12=`````(/B
+M"`G("="(V8/A$(/@SXC:@^(@"<@)T(C9@^%`@^`_B-K`Z@</MM+!X@<)R`G0
+MB$8&BI0DGP```(/B`XI&!X/@_`G0B$8']L,$=`;&1@0"ZQN*A"29````P.@#
+M@^`!@_@!&<"#X/Z#P`.(1@2-A"20````4%?HE?+__X/$"(E&"(.\)*@`````
+M="V-1@R#[`1HE@```/^T)+````!0Z/S___^-7D*#Q`AJ*%/H_/___\9#)P"#
+MQ!#V1TQ!=22+1S"+5S2)AJ(```")EJ8```"+1RB+5RR)AJH```")EJX```"+
+M5R2Y`````(72="N)]H-Z%`!T&(M"%(M`#(7`=`Z+@%@"``")A(ZZ````08/Y
+M!W\&BQ*%TG77N`````"!Q+````!;7E_#5U93BWPD$(MT)!17Z/S___^)PX/$
+M!+D`````NJX```")\(GVB`A`2G7ZA?]T!(7;=0>X_____^M;BT,4B48$N/__
+M__^#>PP`=`F+0PR+@%@"``")1@B`>P@$=AK&!@&#[`B-1@Q04^AP]O__N```
+M``"#Q!#K'KC_____@'L(`743Q@8"@^P(C48,4%/HD_O__X/$$%M>7\-75E.+
+M?"00BW0D%%?H_/___XG#@\0$N0````"ZV````(GPB?:("$!*=?J%_W0$A=MU
+M![C_____ZV&+0Q2+4QB)1@2)5@BX_____X-[#`!T"8M##(N`6`(``(E&#(![
+M"`1V&L8&`8/L"(U&$%!3Z,[V__^X`````(/$$.L>N/____^`>P@!=1/&!@*#
+M[`B-1A!04^CU^O__@\006UY?PXGV5U93BWPD$(MT)!17Z/S___^)PX/$!+D`
+M````NOH```")\(GVB`A`2G7ZA?]T!(7;=0JX_____^F+````BT,4BU,8B48$
+MB58(N/____^#>PP`=`F+0PR+@%@"``")1@RP_X-['`!X`XI#'(A&`X/L#(L#
+M_W`$Z/S___^(1@**@QT"``"(1@&#Q!"`>P@$=AK&!@&#[`B-1B!04^A%]___
+MN`````"#Q!#K'KC_____@'L(`743Q@8"@^P(C48@4%/HZ/O__X/$$%M>7\.0
+M5U93BWPD$(MT)!17Z/S___^)PX/$!+D`````C58%BP:#Z`5T"8UV`(@*0DAU
+M^H7_=`2%VW4*N/_____IF````(M#%(M3&(E&$(E6%+C_____@WL,`'0)BT,,
+MBX!8`@``B488L/^#>QP`>`.*0QR(1@^#[`R+`_]P!.C\____B$8.BH,=`@``
+MB$8-@\00@'L(!'8FQD8,`;C_____@'LP0'<V@^P(C48L4%/HY??__[@`````
+M@\00ZQ^X_____X!["`%U%,9&#`*#[`B-1BQ04^@+^___@\006UY?PU575E.!
+M[#P"``"+K"10`@``BH0D6`(``(A$)"_'1"0@_____\=$)"3_____QD0D'P"+
+ME"14`@``@'H/`'@,@'T(!G4+]D(/`G0%QD0D'P&Y`````+H``@``C40D,(UV
+M`(@(0$IU^HN4)%0"``"*0@N(132*0@Z(13$/MDH.N`$```#3X&:)13**E4@!
+M``"(T(/(!(B%2`$``(N$)%0"``#V0`\#=&*(T(/(!8B%2`$``,>%3`$`````
+M``#'A5`!````````BT4$@'@'`'1.B-"#R`>(A4@!``"`?0@*=3T/MDTP2;@!
+M````N@`````/I<+3X/;!('0'B<*X`````(E%.(E5/.L5D,>%3`$``/_____'
+MA5`!``#_____BY0D5`(``(M"$(F%5`$``(M"%(F%6`$``(M"&(F%7`$``(M"
+M'(F%8`$``+\`````@'TP``^$*@$``(MTO4B);@R+1"0D.488=QER"8M$)"`Y
+M1A1S#HM&%(M6&(E$)"")5"0D@'X(!`^%Z@```(M6)(E4)!B`?"0O`'1$@'PD
+M'P!U2+L`````C40D,(E$)!2#[`AJ`/]T)"!J`8M.,(G8F0-!!!-1"%)0_W0D
+M-.C\____@\0@0X/[`7[5Z9@```"`?"0?``^$C0```(/L"&H!C40D/%!J`8M&
+M,/]P"/]P!/]T)#3H_/___X/$((7`=6B`O"0N`@``JG4<@+PD+P(``%5U$L:$
+M)"X"``!5QH0D+P(``*JP`8!\)#!2=1:`?"0Q174/QD0D,$7&1"0Q4K@!````
+MA<!T(8/L"&H`C40D/%!J`8M&,/]P"/]P!/]T)#3H_/___X/$($</MD4P.?@/
+MC];^__^`?0@'=3&_``````^V13")PX/X``^.A@```(M,O4B+112+51@#0103
+M41B)112)51A'.?M_Y>MIBT4$@'@%`'0A#[=%,O?8B<&)P\'['XM$)"`AR(M4
+M)"0AVHE$)"")5"0D#[9%,(M5!`^V4@8IT(E$)`B9B50D#(M$)"#W9"0(B<&+
+M?"0D#Z]\)`B)U@'^BT0D(`^O1"0,C1P&B4T4B5T8BY0D5`(```^V0@^#X!S!
+M^`*(A1T"``"!Q#P"``!;7E]=PXGV55=64XM\)!2+;"08O@````"`?S``=%Z0
+MBU2W2(72=$SV@AP"```!=$.`>@@$=C&Y`````(!Z,`!T,@^V6C")]HM$BDB%
+MP'0.]H`<`@```70%.6@D="1!.<M_Y>L/C78`.6HD=0>)T.L1C78`1@^V1S`Y
+M\'^CN`````!;7E]=PY!55U93@^P(BT0D'(ML)"#'1"0$`````,<$)`````"%
+M[70&BU4PB10DO@````"_`````(M8)(7;=!6-=@"#>Q0`=`:#Q@&#UP"+&X7;
+M=>Z#_P!W!8/^`W8/N`````"Z`````.FU````O@````"_`````(7M=`:+=12+
+M?1B+6"2%VW14B?:%[70%.6L4=$.#/"0`="6#>Q0`=3>+#"2+002+40@#00P3
+M41"+2P@QT3-#!`G!=02)7"0$@WL4`'42.7L0<@UW!3ES#'8&BW,,BWL0BQN%
+MVW6N@SPD`'0[@WPD!`!T-(M,)`2+00R+41"+#"0#00P341`Y^G(==P0Y\'87
+MBTPD!(M!#(M1$(G&B=>+#"0#<0P3>1")\(GZD(/$"%M>7UW#55=64X/L3(ML
+M)&"+7"1HBD0D9(A$)$>*5"1TB%0D1<=$)#C_____QT0D//_____'1"0P````
+M`,=$)#0`````BDPD<(/A#XA,)$:%[0^$E@$``(!]"`=T%#P'#X6``0``@'T(
+M!P^%?@$``(GV@'TP`0^$\@$``(!]"`</A6@!``"`?"1'!P^%70$``+\`````
+M@'TP``^$3@$``#G?#X-&`0``BW2]2(7V#X3$!```BT0D;/\TN.C\____@\0$
+M.48D=!9'#[9%,#GX#X89`0``.=]RS^D0`0``#[9%,+H`````N0`````YV`^'
+MP`0``.L3BU8,BTX0`50D,!%,)#3I@P```+\`````@'TP`'0MBW2]2(7V#X1D
+M!```BTPD;/\TN>C\____@\0$.48D#X58!```1P^V13`Y^'?3#[9%,(M\A42+
+M1R2+512+31B)5"0PB4PD-(MP)(7V="N#?A0`=1^+3S"+002+40@#00P341"+
+M3@@QT3-&!`G!#X1P____BS:%]G75#[9],#G?<T6+3"1L_S2YZ/S___^)QH/$
+M!(7`=`V+`#M%`'4&@'X(`700N@````"Y`````.GO`P``D(M&*(M6+`%$)#`1
+M5"0T1SG?<KN+5"0PBTPD-.G.`P``A>T/A8````"_`````#G?#X/G````C78`
+MBU0D;/\TNNC\____B<:#Q`2%P'0&@'@(`701N@````"Y`````.F,`P``B?:+
+M0"P+1B@/A&@#``"+1BB+5BP!1"0P$50D-(M4)#PY5BQW&7()BT0D.#E&*',.
+MBU8HBTXLB50D.(E,)#Q'.=]RD^MUD+\`````.=]S:XUV`(M,)&S_-+GH_/__
+M_XG&@\0$A<!T#8L`.T4`=0:`?@@!=!*Z`````+D`````Z0D#``"-=@!65>BM
+M^___4%;H)OS__P%$)$`15"1$@\00.U0D/'<0<@8[1"0X<PB)1"0XB50D/$<Y
+MWW*8#[9$)$>#^`</A[H"``#_)(5T(0``BU0D,(M,)#3IL`(``(!\)$4!=U6)
+M7"0HQT0D+`````"X_____XI,)$;3X)F+3"0X(<&)#"2+3"0\(=&)3"0$BT0D
+M*/<D)(G!BWPD*`^O?"0$B=8!_HL$)`^O1"0LC1P&B<J)V>E4`@``@'PD10(/
+MAK4````/MG0D18G8N@````#W]HG%A=(/A8X```"#^`$/CH4```"X_____XI,
+M)$;3X(E$)""9B50D)(M,)"`C3"0XB0PDBT0D)"-$)#R)1"0$C4[_B<O!^Q^+
+M!"3WX8E$)""+/"0/K_N)U@'^BT0D!`^OP0'&B70D)(GIB>O!^Q^+1"0@]^6)
+M!"2+?"0@#Z_[B=8!_@^O3"0D`<Z)="0$BQ0DBTPD!.FC`0``N@````"Y````
+M`.F4`0``N@````"Y`````(/[`0^&@0$``(M4)#B+3"0\@_L"#X9P`0``N/__
+M__^*3"1&T^")1"08F8E4)!R+3"08(TPD.(D,)(M$)!PC1"0\B40D!(G9T>F[
+M`````(L$)/?AB40D&(L\)`^O^XG6`?Z+1"0$#Z_!`<:)="0<BU0D&(M,)!SI
+M#P$``+H`````N0````"#^P(/AOP```"-0_^)1"00QT0D%`````"X_____XI,
+M)$;3X)F+3"0X(<&)#"2+3"0\(=&)3"0$BT0D$/<D)(G!BWPD$`^O?"0$B=8!
+M_HL$)`^O1"04C1P&B<J)V>FD````N@````"Y`````(/[`P^&D0```(U#_HE$
+M)`C'1"0,`````+C_____BDPD1M/@F8M,)#@AP8D,)(M,)#PAT8E,)`2+1"0(
+M]R0DB<&+?"0(#Z]\)`2)U@'^BP0D#Z]$)`R-'`:)RHG9ZSRZ`````+D`````
+MZS"Z`````+D`````ZR2Z`````+D`````ZQB)]KH`````N0````#K"KH`````
+MN0````")T(G*@\1,6UY?7<.)]E575E.![!P"``"+K"0P`@``BH0D-`(``(A$
+M)`^^`````(!],``/AE$!``"0BURU2(7;#X0X`0``@'L(!'8>@^P$_[0D/`(`
+M``^V1"074%/HK/___X/$$.D4`0``BX0D.`(``$B#^`%W-XG?@'L(!'4/BWLD
+M@^P,4^C\____@\00@[PD.`(```(/A>(```"#[`Q7Z/S___^#Q!#IT0```)"+
+M>R2`>S0`=0N`?"0/``^$E````/:''`(```$/A(<```"#[`AJ`8U$)!Q0:@&+
+M0S#_<`C_<`17Z/S___^#Q""%P'5E@+PD#@(``%5U'("\)`\"``"J=1+&A"0.
+M`@``JL:$)`\"``!5L`&`?"001746@'PD$5)U#\9$)!!2QD0D$46X`0```(7`
+M=!Z#[`AJ`(U$)!Q0:@&+0S#_<`C_<`17Z/S___^#Q""#[`Q3Z/S___^#Q!#V
+M1TP0=!;VAQP"```!=`V#[`Q7Z/S___^#Q!"01HGP.$4P#X>P_O__@^P,5>C\
+M____@<0L`@``6UY?7<-55U93@^P8BT0D+(MH+(M8*(LXB[<H`0``4.C\____
+MBT,<B44<@\00BU<<C4<<.=!T%(G!C4+T.5@H=02):"B0BQ(YT77N@^P$:@!J
+M`%/H'?[__X/$"/]U'/]W!.C\____B2PDZ/S___^+1AR+E5@"``")$,=&,#!W
+M!P")=C3'1C@`````@\0(C48P4/]V".C\____@\0<6UY?7<-3@^P(BUPD$(![
+M7@%T8OY#7X![7P)W6<9#7@"+0SS'0!``````BT,\QT`<`````(M#/,=`(```
+M``"+0SS'0"0`````BU,\C4(4B4(4BU,\C4(4B4(8BT,\QT`H`````(/L#%/H
+M_/___X/$$.L\C78`@^P(_W,\BP,%F````%#H_/___\=#%#CU!@")6QC'0QP`
+M````@\0(C4,44(L#@\`D4.C\____@\00@\0(6\.)]E.#[!2+1"0<BT`$BQA0
+MZ/S___^+DR@!``#'0C`P=P<`B5(TQT(X`````(/$"(U",%#_<@CH_/___X/$
+M&%O#B?955U93@^P,BWPD((M?+(L'B40D"(N`*`$``(E$)`2+:P2+<PB`?UX!
+M=&+^1U^`?U\"=UG&1UX`BT<\QT`0`````(M'/,=`'`````"+1SS'0"``````
+MBT<\QT`D`````(M7/(U"%(E"%(M7/(U"%(E"&(M'/,=`*`````"#[`Q7Z/S_
+M__^#Q!#IJ0```(/L"/]W/(M$)!0%F````%#H_/___XD\).C\____BT0D%(M0
+M'(/$$+C_____A?9T!HN&6`(``(D"@_C_=0N+1"0$QT`L_____X"-20$```2`
+MCDD!```$@*9(`0``_8F>9`$``(F=9`$``(U3#(M$)`B#P!2+2`2)4`2)0PR)
+M2@2)$<=#&(3V!@")6QS'0R``````@^P(C4,84(M$)!2#P"10Z/S___^#Q!"#
+MQ`Q;7E]=PXUV`%575E.#["R+;"1`BWPD1+X`````@'TP`'0P@'\-`'0JBURU
+M2(7;=#__=+=\Z/S___^#Q`0Y0R1T&T8/MD4P.?!^"`^V1PTY\'_6N@$```#I
+M&`,``(I%,+K_____.D<-#X<'`P``ZQZZ_____^G[`@``NO_____I\0(``+K_
+M____Z><"``"^`````(!],`!T(HM<M4B%VW39_W2W?.C\____@\0$.4,D==)&
+M#[9%,#GP?]Z+1W2+5W@K110;51B)1"0@B50D)`G"#X1+`@``#[9%,(MTA42+
+M1B2)1"0<QT0D$`````#'1"04`````(M8)(7;#X3R````@WL4``^%W@```(M.
+M,(M!!(M1"`-!#!-1$(M+"#'1,T,$"<$/A;\```"+1A2+5AB)1"00B50D%(M4
+M)"0Y4Q!R8G<)BU0D(#E3#'97BTXPBT0D((M4)"0#00P341")00R)41")1A2)
+M5AB+1"0@BU0D)`%#!!%3""E##!E3$,=$)"``````QT0D)`````"+5"0<@$I,
+M$(/L#%+H_/___X/$$.M0BT,,BU,0*40D(!E4)"2+3C`#00P341")00R)41")
+M1A2)5AB#[`A3_W0D*.C\____BT0D+(!(3!")!"3H_/___X/$$.L+D(L;A=L/
+MA0[___^+5"0D"U0D(`^$(0$```^V=3`/MD<-.?`/CO8```#_=+=\Z/S___^)
+MPXM`*(M3+(E$)`R)5"00@\0$BT0D)#G"<B`Y1"0,=PJ+1"0@.40D"'80BT0D
+M((M4)"2)1"0(B50D#&H`_W0D$/]T)!!3Z/S___^)1+5(@\00A<!U:8M4)!0+
+M5"00="Z#[`P/MD4P_W2%1.C\____#[9=,&H`_W0D*/]T)"C_="0XZ/S___^)
+M1)U$@\0@#[9=,#GS?1R#[`S_=)U(Z/S____'1)U(`````(/$$$,Y\WSDNO__
+M___IGP```(UV`(M$M4B):`R+1"0(BU0D#"E$)"`95"0D1@^V1PTY\'X.BU0D
+M)`M4)"`/A0K___\/MD<-.?!U#HM$)"0+1"0@#X53____B?*(53"+1W2+5WB)
+M112)51B+1Q")A50!``"+1Q2)A5@!``"+1QB)A5P!``"+1QR)A6`!``"#[`Q5
+MZ/S___^#Q`C_=1R+10#_<`3H_/___[H`````@\00D(G0@\0L6UY?7<.)]L.-
+M=@"#[!2+3"08C9',`0``BP&)0@C'0@P/_P``C8$(`@``B4(8QT(0"````,="
+M%`````#'0B``````BX%8`@``B8$(`@``BTH8BT0D'(E!!,="*'S[!@!2_W((
+MZ%MZ``"#Q!S#C78`5E.#[`2+="00B?.#?@P`=`.+7@R*@TD!``"H!'1RJ`@/
+MA<H```"+DV0!``"%T@^$O````(-Z!``/A+(```"#>@@`#X2H````BT($@(A)
+M`0``"(M""("(20$```C'@\0!``!H`0<`B9O(`0``@^P(C8/``0``4(L#_W`$
+MZ/S___^#Q`A3:A+H_/___X/$$.M@]H9(`0``$'57A=MT"?:#20$```AU2HJ&
+M2`$``*A@=4"#X/>#R!"(AD@!``#'AL0!``!H`0<`B;;(`0``@^P(C8;``0``
+M4(L&_W`$Z/S___^#Q`A6:@3H_/___X/$$(GV@\0$6U[#B?:#[!2+1"08BT`D
+MQX#$`0``:`$'`(F`R`$``(V0P`$``%*+`/]P!.C\____@\0<PY!3@^P0BUPD
+M&(M$)!R)F-0!``#'@-@!```/_P``C8@(`@``B8CD`0``QX#<`0``"````(N0
+M6`(``(F0"`(``,=!!`P```"-D!8"``")D.@!``#'@.`!````````QX#L`0``
+M`````(F`\`$``,>`]`$``-S\!@`%S`$``%!3Z/S___^#Q!A;PXGV55=64X/L
+M+(ML)$"+?22#?2S]=12`OQ<"```"?PO^AQ<"``#I?`,``,:'%P(```#VATD!
+M```(=&"#?2S]=2:`/0``````=!W'12P`````@^P(5VH<Z/S___^#Q!#INP(`
+M`(UV`(-]+``/A*X"``"`ITD!``#WBX=D`0``BT`(@*!)`0``]X/L"%=J%.C\
+M____@\00Z3,#``#VAT@!```0#X3/````@WTL_74Y@#T``````'0PQT4L````
+M`(/L"%=J'.C\____#[>'%`(``+H``````8=,`0``$9=0`0``@\00ZR&0@WTL
+M`'0:@*=(`0``[X/L"%=J".C\____@\00Z<<"```/MD<PBU<$#[92!BG0B40D
+M")F)5"0,BY],`0``BT0D"/?CB40D((E4)"2+="0(#Z^W4`$``(G1`?$/KUPD
+M#(T<&8E<)"0[7Q@/@LH!``!W#8M4)"`[5Q0/@KL!``"#[`AJ`U?H@/S__X/$
+M$.E7`@``BH=(`0``J"`/A.(```"#?2P`=5^$P'A5#[9',(M7!`^V4@8IT(E$
+M)`B9B50D#(N?3`$``(M$)`CWXXE$)!B)5"0<BW0D"`^OMU`!``")T0'Q#Z]<
+M)`R-'!F)7"0<.U\8=PMR8XM4)!@[5Q1R6H-]+`!T!+`+ZQF*AT@!``#`Z`</
+MML"#^`$9P(/@`H/`"HGV@*=(`0``7X/L"%</ML!0Z/S___^#Q!#VAT@!```(
+M#X2C`0``@^P(:@%7Z+G[__^#Q!#ID`$``(N'Z`$``(`X``^$T@```("G2`$`
+M`-^#[`AJ`5?HD/O__X/$$.EG`0``BH=(`0``J$`/A%D!``"H`74<@^"_B(=(
+M`0``@^P(5VH.Z/S___^#Q!#I.0$``(-]+`!T&H"G2`$``+^#[`A7:@_H_/__
+M_X/$$.D9`0``#[9',(M7!`^V4@8IT(E$)`B9B50D#(N?3`$``(M$)`CWXXE$
+M)!")5"04BW0D"`^OMU`!``")T0'Q#Z]<)`R-'!F)7"04.U\8<B!W"8M4)!`[
+M5Q1R%8/L"&H)5^C:^O__@\00Z;$```")]O:'20$```AT)XN'9`$``(M87('C
+M__\/`+X`````#[=09+D`````.<YR*G<$.=-R)/:'2`$``%!T3XN'3`$``"7_
+M_S\`N@````"#^@!W.H/X?W<UD,>'Q`$```S]!@")O\@!``#'A\`!````````
+M@^P(C8?``0``4(L'_W`$Z/S___^#Q!#K*)#'A\0!``!H`0<`B;_(`0``@^P(
+MC8?``0``4(L'_W`$Z/S___^#Q!"#Q"Q;7E]=PY!55U93@^P<BVPD,(M\)#2)
+MK]0!``"-AP@"``")A^0!``"-AQ8"``")A^@!``#'A^`!````````QX?L`0``
+M`````(F_\`$``,>']`$``)3]!@"+AU@"``")AP@"``#VATD!```(=!K'A]@!
+M```J_P``QX?<`0``!````.D]`0``D(J'2`$``*AP#X1:`0``@^"@/*!T5P^V
+M1S"+5P0/ME(&*=")1"0(F8E4)`R+GTP!``"+1"0(]^.)1"00B50D%(MT)`@/
+MK[=0`0``B=$!\0^O7"0,`=F)3"04.T\8=PYR+8M4)!`[5Q1R)(UV`,>'^`$`
+M``````"#[`R-A\P!``!0Z"?[__^#Q!#IVP```(J'2`$``+HC_P``J!!U$\#H
+M!8/@`8/X`1G2]]*!PB7_``")E]@!``"+A^0!``"+ETP!``"+CU`!``")4`2)
+M2`B+1P2`>`4`=!"+E^0!``!FBT<R9HE"#.LMBX_D`0``BT<4BU<8*X=,`0``
+M&Y=0`0``@_H`=P<]@````'8%N(````!FB4$,QX?<`0``#@```/:'2`$``"!T
+M%HN'Z`$``,8``,>'X`$```$```"-=@#_A[P!``"#O[P!``!D?@K'A[P!````
+M````@^P(C8?,`0``4%7H_/___X/$$(/$'%M>7UW#4X/L"(M<)!"+0QC_,.C\
+M____@^P(4.C\____QT,P,'<'`(E;-,=#.`````"#Q`B-0S!0_W,(Z/S___^#
+MQ!A;PU575E.#[`R+7"0@BSN+<RR+1AB+`(E$)`A0Z/S___^)Q8/$!(![7@%T
+M8OY#7X![7P)W6<9#7@"+0SS'0!``````BT,\QT`<`````(M#/,=`(`````"+
+M0SS'0"0`````BU,\C4(4B4(4BU,\C4(4B4(8BT,\QT`H`````(/L#%/H_/__
+M_X/$$.FN````@^P(_W,\C8>8````4.C\____B1PDZ/S___^#Q!"+1@P]*_\`
+M`'0A/2O_``!W"CTI_P``=`KK$9`].?\``'4)BT8<BU0D"(D0A>UT.#E]`'4S
+MQX=(`0``6`,'`(FW3`$``,>'4`$```````"#[`B-AT@!``!0C4<D4.C\____
+M@\00ZRN0QT8L_O___\=&,#!W!P")=C3'1C@`````@^P(C48P4/]V".C\____
+M@\00@\0,6UY?7<.)]E=64XM\)!"+'X/L"/]W(%/H_/___XG&@<.8````B1PD
+MZ/S____'0!``````QP``````QT`$`````(M7%(M/&(E0"(E(#,=`'`````#'
+M0"``````QT`D`````(/$!(U0%(E0%(E0&,=`*`````")1CR)?BC&1EP$BT0D
+M((E&+(M$)"2)1FC&1EX`5NC\____@\006UY?PXGV55=64X'LC````(NL)*@`
+M``#H_/___XE$)'R+172+57B)1"1PB50D=,9$)%``QT0D2`````#'1"1``0``
+M`,=$)#P`````BD4.P.@$B$0D;G43BE4*B%0D;H32=0C&1"1N`8UV`(!E#@^`
+M?0U`=PR`?0T!=Q"`?0P'=`JX_____^D0#0``OP````"`?0T`=#*0_W2]?.C\
+M____@\0$@'@(`74)]H`<`@```74-N/_____IWPP``(UV`$</MD4-.?A_SP^V
+M10R#^`AW;?\DA90A``#&1"1O!^MLQD0D;P6`?"1N`QG)@^'^@\$(B$PD4.M4
+MQD0D;PJX_____X!]#@</A9`,``#K/L9$)&\(ZS?&1"1O">LPQD0D;P:`?0T"
+M=B7&1"1O!<9$)%`&QD0D;@+K%,9$)&\,ZPVX_____^E3#```C78`@^P,#[9$
+M)'M0Z/S___^)1"1<@\00N/____^#?"1,``^$*PP``(!\)&X!=D9F#[9%#68/
+MMDPD;KH`````9O?QN/____]FA=(/A0,,``"#[`P/MD0D7%#H_/___XE$)%B#
+MQ!"X_____X-\)$@`#X3>"P``BUPD=`M<)'`/A:T```"`?"1O!W5)OP````"`
+M?0T`#X0&`0``_W2]?.C\____B<.#Q`2+0"P+0R@/A$P+``"+172+57@#0R@3
+M4RR)172)57A'#[9%#3GX?\OIS````,=$)'#_____QT0D=/____^_`````(!]
+M#0`/A*T```"0_W2]?.C\____B<.#Q`2+1"1T.4,L=QMR"XM,)'`Y2RAS$(GV
+MBT,HBU,LB40D<(E4)'1'#[9%#3GX?\7K;XM4)$R`>@4`="UF#[9%#?9T)&X/
+MML`/ME(&*="94E#_="1\_W0D?.C\____@\00B40D<(E4)'2#?"1(`'0QBTPD
+M2(!Y!0!T)P^V1"1N#[91!BG0F5)0_W0D?/]T)'SH_/___X/$$(E$)'")5"1T
+MD(M<)$R`>P4`=1F#?"1(``^$XP```(M$)$B`>`4`#X35````#[9-#KC_____
+MT^")P8G#P?L?BT0D<"'(BU0D="':B40D<(E4)'2)172)57B+5"1,@'H%`'1)
+M9@^V10WV="1N#[;`#[92!BG0B<&)P\'['XM]=/?GB40D"(E4)`R+57@/K]&+
+M="0,`=8/K_L!_HET)`R+3"0(BUPD#(E-=(E=>(-\)$@`=$^+7"1(@'L%`'1%
+M#[9$)&X/ME,&*=")P8G#P?L?BWUT]^>)1"0(B50D#(M5>`^OT8MT)`P!U@^O
+M^P'^B70D#(M,)`B+7"0,B4UTB5UXC78`@[PDI``````/A$0!``"+G"2D````
+M@'L(!'8IBX0DH````#D#=1[V@QP"```!=!6#NV0!````=0QF]X-(`0``4`)T
+M"Y"X_____^EN"0``BXPDI````(M!%(M1&#M5>'(1=P4[171V"KC_____Z4L)
+M``"`90_\BYPDI````(!["`=T%(!]#`</A<8```"`>P@'#X6T````@'T,!P^%
+MEP```(/L"%7_M"2P````Z`CN__^)QX/$$(7`=7$/MD4/@^`<P?@"B,*+C"2D
+M````@+D=`@```G4V.($=`@``="Z(@1T"``"#[`1HF`,'`(N<)*@```#_LR@!
+M``!1Z)+Z__^X`````(/$$.FQ"```BX0DI````(B0'0(``(N4)*0```"+@E@"
+M``#ID@@``+C_____A?\/B(4(``"+C"2D````@'D(!W4&@'DP`70(QT0D/`$`
+M``"#[`@/MD0D=U#_M"2L````Z/S___^)1"14@\00N/____^#?"1$``^$/@@`
+M`(!\)&\'#X4&`0``BT5TBU5XB40D*(E4)"R_`````(!]#0`/A,P````)P@^$
+MQ````/]TO7SH_/___XG#BU`HBT@LB50D)(E,)"B#Q`2+1"0L.<%R(#E$)"1W
+M"HM,)"@Y3"0@=A"+1"0HBU0D+(E$)"")5"0D:@#_="0H_W0D*%/H_/___XM4
+M)%2)1+I(@\00A<!U.KL`````.?M]&(/L#(M,)%#_=)E(Z/S___^#Q!!#.?M\
+MZ(/L#/]T)%#H_/___[C_____@\00Z7$'``"+1"0@BU0D)"E$)"@95"0L1P^V
+M10TY^'X.BU0D+`M4)"@/A3S___\/MD4-.?AU"HM,)"P+3"0H=8V)^XM$)$2(
+M6##K=+\`````@'T-`'1?_W2]?.C\____B<.#Q`2X`````(-\)#P`=1J#O"2D
+M`````'004_^T)*@```#H,>#__X/$"%#_="1X_W0D>%/H_/___XM4)%2)1+I(
+M@\00A<`/A"'___]'#[9%#3GX?Z&*10V+3"1$B$$PBT0D?(M<)$2)0R2)0RR`
+M?"1N`0^&N@$``+\`````#[94)&Z)5"0<B50D&(/L"`^V1"184/^T)*P```#H
+M_/___XG&@\00A<`/A8````"[`````(GXF?=\)!R#^`!^)8MT)!B#[`1J`6H`
+MBU0D4/]TFDCHX^;__X/$$$.)^)GW_CG8?]^)^XM4)$0/MD(P.?A^((/L#(M,
+M)%#_=)E(Z/S___^#Q!!#BU0D1`^V0C`YV'_@@^P,_W0D4.C\____N/____^#
+MQ!#I[P4``(UV`+L`````BU0D'(/Z`'X6B?:-!!^+3"1$BT2!2(E$GDA#.=I_
+M[(I<)&Z(7C"+5"1$BT(DB48D@^P$@[PDJ``````/E,`/ML!055;HFMO__XGX
+MF?=\)"R+5"14B72"2`-\)"R#Q!")^3A*,`^'[_[__V8/MD(P]O.(0C`/MOB)
+M^X#[/W<4BT0D1,=$N$@`````1XGZ@/H_=NR#[`2#O"2H``````^4P`^VP%!5
+M_W0D4.@UV___OP````"#Q!"+3"1$#[9!,(G"@_@`?EN+7"1$BW2[2(G3BU0D
+M3`^V0@:)V2G!B<B94E&+1"1,_W`8_W`4Z/S___^#Q!")1A2)5AA'B=HY^W_&
+MZQ^#[`2#O"2H``````^4P`^VP%!5_W0D4.C&VO__@\00@[PDI``````/A.,"
+M``"+E"2D````BT(LBTPD1(E!+(/L"%%2Z/S___^#Q!"$P`^%7`$``(N<)*0`
+M``"*DQP"``"#X@2+3"1$BH$<`@``@^#["="(@1P"``"*DQP"``"#X@*#X/T)
+MT(B!'`(``(I#-(A!-(N<)*0```"+0Q2+4Q@[41AW9G(%.T$4=U^+5"1$BT($
+M@'@&`'4,BT)(BT`$@'@&`'1&@^P,_[0DL````.COQO__@\00)0(0``")1"1`
+M#X7*````BXPDI````(M!%(M1&(M<)$0[4Q@/@K````!W"3M#%`^"I0```(N$
+M)*0```"`N!T"```"=1^#[`1HU/4&`/]T)$Q0Z([U__^X`````(/$$.FM`P``
+MBY0DI````(M"'(M,)$2)01R+G"2@````BU,<B=B#P!PYT'0>B<&-0O2+G"2D
+M````.5@H=0>+7"1$B5@HBQ(YT77D@^P$:@!J`/^T)+````#H^./__X/$"(M$
+M)$S_<!R+E"2L````_W($Z/S___^#Q!#I80$``(/L#(N$)*P```"#Z(!0Z/S_
+M__^)PX/$$+D`````NF@```"0B`A`2G7ZZ/S___^)`XN,)*0```")2P2+1"1$
+MB4,(@^P,4^C\____BU0D5(M"!(/$$(!X!@!U#(M"2(M`!(!X!@!T%;`"@WPD
+M0`!T!X![%``/E<"(0V;K!,9#9@.`>Q0`=">`>V8#=0^+C"2D````BT$4BU$8
+MZPJ+3"1$BT$4BU$8B4-<B5-@ZR2X`````+H`````@WPD0`!U#8N,)*0```"+
+M012+41B)0UR)4V"`>V8"=!"+A"2D````@+@=`@```G4B@^P$:,3V!@!3_[0D
+ML````.@0]/__N`````"#Q!#I+P(``(N4)*0```"`BDD!```$BTPD1(")20$`
+M``2`H4@!``#]B9ED`0``B9ID`0``C4,,BY0DH````(/"%(M*!(E"!(E3#(E(
+M!(D!@^P,_[0DL````.C\____@\00@^P,_W0D4.C\____@\00@[PDI`````!U
+M%?9%#P%U#X/L#/]T)%#H_/___X/$$/9%#P$/A,H```"`?"1N`79WBUPD2(![
+M!@!T;;\`````BT0D1(!X,`!T3HM4)$2+7+I(@(M(`0``0,>#Q`$``&@!!P")
+MF\@!``"#[`B-@\`!``!0BP/_<`3H_/___X/$"%-J#>C\____@\001XM,)$0/
+MMD$P.?A_LHM<)$2`HT@!``"_Z10!``"+1"1$@(A(`0``0,>`Q`$``&@!!P")
+M@,@!``"#[`B+1"1,!<`!``!0BU0D4(L"_W`$Z/S___^#Q`C_="1,:@WH_/__
+M_X/$$.G(````]D4/`@^$O@```(!\)&X!=G:+3"1(@'D&`'1LOP````"+7"1$
+M@'LP``^$F@```(M$)$2+7+A(@(M(`0``$,>#Q`$``&@!!P")F\@!``"#[`B-
+M@\`!``!0BP/_<`3H_/___X/$"%-J!.C\____@\001XM4)$0/MD(P.?A_LNM*
+MB?:X_____^M-BTPD1(")2`$``!#'@<0!``!H`0<`B8G(`0``@^P(B<@%P`$`
+M`%"+`?]P!.C\____@\0(_W0D3&H$Z/S___^#Q!"+7"1$BX-8`@``B?:!Q(P`
+M``!;7E]=PY!75HL5P`4``+C_____.Q7$!0``=$.--)*--'*--+7@!0``_+D+
+M````BWPD#/.EBPW`!0``C4$!H\`%``")PH7`>0:-01"-=@"#X/`IPHD5P`4`
+M`+@`````7E_#D%=6BW0D#(L-Q`4``(U1`8G0A=)Y`XU!$(/@\"G"N/____\[
+M%<`%``!T):'$!0``C3R`C3QXC3R]X`4``/RY"P```/.EB17$!0``N`````!>
+M7\.)]E93@^PTBU0D0(M,)$B+7"1,BW0D4(!Z"`%U%8N"6`(``(E$)`2)3"0,
+MB5PD$.LED(!Z"`1U'HM")(M2,(N`6`(``(E$)`0#2@036@B)3"0,B5PD$(-\
+M)$0!&<"#P!F(1"0(9HET)!2)X%#H_/___X/$.%M>PXUV`%575E.#[`R+;"0@
+MBT48BU@$_S#H_/___XG&QT0D#`````"#Q`2#^PX/AYX'``#_))VX(0``QT0D
+M"`,```#IN@<``(N`9`$``&;WAD@!``!P"`^%=0<``(7`#X1M!P``@'AG``^%
+M8P<``(M0!(M`"/:"'`(```$/A%`'``#V@!P"```!#X1#!P``@*))`0``[X"@
+M20$``.^`BDD!```(@(A)`0``",>&Q`$``&@!!P")ML@!``"#[`B-AL`!``!0
+MBP;_<`3H_/___X/$"%9J$NC\____@\00Z2`'``"+D&0!``!FBX!(`0``)7`(
+M``!F/0`(#X74!@``A=(/A,P&``"+0@2+4@B`H$D!``#W@*))`0``]\=$)`@!
+M````@^P(5FH3Z/S___^#Q!#IS08``(M`#(7`=`WV@$D!```,#X6)!@``9O>&
+M2`$``'`,#X5Z!@``]H8<`@```0^$;08``(!^"`4/A9D```"_`````(!^,``/
+MA.,```"+7+Y(A=MT<X!["`1V;?:#2`$``!!U9(/L"/]S1/]S0.C\____BU,$
+M#[92!H/$$#G0#XT=!@``BH-(`0``@^#W@\@0B(-(`0``QX/$`0``:`$'`(F;
+MR`$``(/L"(V#P`$``%"+`_]P!.C\____@\0(4VH$Z/S___^#Q!!'#[9&,#GX
+M#X]X____ZUF#[`C_=D3_=D#H_/___XM6!`^V4@:#Q!`YT`^-J@4``(".2`$`
+M`!#'AL0!``!H`0<`B;;(`0``@^P(C8;``0``4(L&_W`$Z/S___^#Q`A6:@3H
+M_/___X/$$("F2`$``/>+1D0+1D!T".C\____B48HQT0D"`$```#I?04``(!X
+M"`5U1K\`````@'@P`'10BU2^2(72="B`>@@$=B**@D@!``"H$'08@^#GB()(
+M`0``@^P(4FH%Z/S___^#Q!"01P^V1C`Y^'_'ZQ6`H$@!``#G@^P(4&H%Z/S_
+M__^#Q!#'1"0(`0```.D/!0``BH!(`0``J!`/A-$$``#VAAP"```!#X3$!```
+M@^#EB(9(`0``BT9`BU9$B48XB58\QX9,`0``_____\>&4`$``/____^#[`A6
+M:@;H_/___X"F2`$``/Z#Q!"#?@P`=$V+3@R_`````(!Y,`!T/P^V63"+1+E(
+MA<!T+O:`'`(```%T)8!X"`1V'P^VD$@!``"#X@&*@4@!``"#X/X)T(B!2`$`
+M`*@!=05'.?M_Q8M&1`M&0(/X`1G`@\`"B40D".E,!```BT`,A<!T#?:`20$`
+M``P/A0@$``!F]X9(`0``<`P/A?D#``#VAAP"```!#X3L`P``@'X(!0^%SP``
+M`+\`````@'XP``^$`P0``(M4ODB)5"0$A=(/A)X```"`>@@$#X:4````]H)(
+M`0``(`^%AP```(/L"(M..(M>/(G("T9`B=H+5D124.C\____BU8$#[92!H/$
+M$#G0#XV``P``BT0D!("(2`$``"#'@$P!````````QX!0`0```````,>`Q`$`
+M`&@!!P")@,@!``"#[`B+1"0,!<`!``!0BU0D$(L"_W`$Z/S___^#Q`C_="0,
+M:@GH_/___X/$$$</MD8P.?@/CT7____I0P,``(/L"(M..(M>/(G("T9`B=H+
+M5D124.C\____BU8$#[92!H/$$#G0#XWG`@``@(Y(`0``(,>&3`$```````#'
+MAE`!````````QX;$`0``:`$'`(FVR`$``(/L"(V&P`$``%"+!O]P!.C\____
+M@\0(5FH)Z/S___^#Q!#IQ0(``)"`H$@!``#?@^P(4&H*Z/S___^#Q!#IJ@(`
+M`("@2`$``-^#[`A0:@OH_/___X/$$.F0`@``@*!(`0``W^F$`@``]H`<`@``
+M`0^$1P(``(M`1`M&0`^%.P(``&:+AD@!```E<0P``&:#^`$/A24"``"`?@@%
+M#X6+````OP````"`?C``#X3)````BUR^2(7;=&F`>P@$=F.*DT@!``"(T(/@
+M03P!=52(T(/(0(/@]XB#2`$``,>#3`$```````#'@U`!````````QX/$`0``
+M:`$'`(F;R`$``(/L"(V#P`$``%"+`_]P!.C\____@\0(4VH-Z/S___^#Q!!'
+M#[9&,#GX?X;K38".2`$``$#'ADP!````````QX90`0```````,>&Q`$``&@!
+M!P")ML@!``"#[`B-AL`!``!0BP;_<`3H_/___X/$"%9J#>C\____@\00@*9(
+M`0``]^EG`0``@W@,`'0*D(MV#(-^#`!U]X!^"`5U2+\`````@'XP`'12B?:+
+M5+Y(A=)T*(!Z"`1V(HJ"2`$``*A`=!B#X+^(@D@!``"#[`A2:@[H_/___X/$
+M$)!'#[9&,#GX?\?K%8"F2`$``+^#[`A6:@[H_/___X/$$(-^'`!Y#(/L#%;H
+M_/___X/$$,=$)`@!````Z=4```"`H$@!``"TQX!,`0``_____\>`4`$``/__
+M___'0#@`````QT`\`````(/L"%!J$.C\____@\00@WX,`'1!BW8,OP````"`
+M?C``=#,/ME8PB?:+1+Y(A<!T(/:`'`(```%T%X!X"`1V$?:`2`$```%T",=$
+M)`@!````1SGZ?].#?"0(`'43@*9(`0``_H/L#%;H_/___X/$$,=$)`@!````
+MZS.-=@#'12S^____QT4P,'<'`(EM-,=%.`````"#[`B-13!0_W4(Z/S___^#
+MQ!#IJ````)"#?"0(`'1]@WX,`'07@WPD"`-T$(MV#(-^#`!T!X-\)`@#=?"`
+MCD@!```$@WPD"`)U#H/L#%;H_/___X/$$.M$@[YD`0```'0NBX9D`0``BU`$
+MBU@(A=)T#(/L#%+H_/___X/$$(7;=!N#[`Q3Z/S___^#Q!#K#8/L#%;H_/__
+M_X/$$)#'13`P=P<`B6TTQT4X`````(/L"(U%,%#_=0CH_/___X/$$(/$#%M>
+M7UW#D%575E.#[`R+?"0@QD0D"P"]`````+D`````NBP```")^(UV`(@(0$IU
+M^L<'+````.CGL___B$<$H0````"#.``/E$<%@^P,_S4`````Z/S____!X`R#
+MQ!`]____`78*QD<&!<9'!POK",9'!@?&1P<'QD<(`,9'"0'&1PH/BD<+@^#^
+M@\@8B$<+NP4```")]H/L#`^VPU#H_/___X/$$(7`=#B)Z`^V\%/H`KC__X/$
+M!(A$-PR#^P9U#,9$-QP"@$PD"T#K%(GJ#[;"QD0''$"#^P5U!8!,)`L@14.#
+M^PQ^KX!\)`M@=1VA`````(.XE`$#``-V#XGJ#[;"QD0'#!+&1`<<0*$`````
+M@[B4`0,`!78018GJ#[;"QD0'#!/&1`<<0+@`````@\0,6UY?7<-55U93@^P,
+MBVPD((MU&+\`````@SX`=F7_=+X$Z/S___^)PX/$!(!X"`%T+,=%+/[____'
+M13`P=P<`B6TTQT4X`````(/L"(U%,%#_=0CH_/___X/$$.M(]D!,`G0.@^P,
+M4.C\____@\00B?:#[`Q3Z/S___^#Q!!'.3YWF\=%,#!W!P");33'13@`````
+M@^P(C44P4/]U".C\____@\00@\0,6UY?7<-64X/L!(MT)!"+7BR!>PPD_P``
+M=`F!>PP9_P``=2B`?EX,=1R+0QS&``&#[`C_=BAJ$>C\____QD9>`8/$$.L&
+MBT,<Q@``#[9&7H/X$'<A_R2%]"$``(GVQT,L`````.L6C78`QT,L_?___^L*
+MC78`QT,L_____X/L"/]V/(L&!9@```!0Z/S___^#Q`3_-NC`KO__B30DZ/S_
+M___'0S`P=P<`B5LTQT,X`````(/$"(U#,%#_<PCH_/___X/$%%M>PXGV4X/L
+M#(M<)!3_<QAJ`/]S".C;Y?__BU,<B0*#Q!"#^/]U"L=#+/____^-=@#'0S`P
+M=P<`B5LTQT,X`````(/L"(U#,%#_<PCH_/___X/$&%O#C78`55=64X'LS```
+M`(N<).````"+:PB+>QB)YKD`````N@P```")X(UV`(@(0$IU^L<&?`$``(U&
+M#(/L!&BP````5U#H_/___X/$#%9J`%7H2N7__XM3'(D"@\00@_C_=0?'0RS_
+M____QT,P,'<'`(E;-,=#.`````"#[`B-0S!0_W,(Z/S___^!Q-P```!;7E]=
+MPXUV`%575E.![+P```"+G"30````BT,(B40D#(MS&(UL)!"Y`````+H,````
+MB>B0B`A`2G7ZQT4`?`$``(U%#(/L!&IH5E#H_/___\=%=`````#'17@`````
+MC7U\@\9H_+D(````\Z6#Q`Q5:@#_="08Z)7D__^+4QR)`H/$$(/X_W4'QT,L
+M_____\=#,#!W!P")6S3'0S@`````@^P(C4,P4/]S".C\____@<3,````6UY?
+M7<.)]E575E.![,P```"+M"3@````BT88C7@$_S#H_/___XG%C5PD!(G<N0``
+M``"Z#````(G8B?:("$!*=?K'`WP!``"-0PR#[`1HL````%=0Z/S___^#Q`Q3
+M5?]V".CUX___B<*#Q!"%P'0T@_C_=0?'1BS_____BT8<B1#'1C`P=P<`B78T
+MQT8X`````(/L"(U&,%#_=@CH_/___X/$$('$S````%M>7UW#D%93@^P$BW0D
+M$(M&&(U8!/\PZ/S___]34/]V".B,X___B<*#Q!"%P'0W@_C_=0K'1BS_____
+MC78`BT8<B1#'1C`P=P<`B78TQT8X`````(/L"(U&,%#_=@CH_/___X/$$(/$
+M!%M>PXGV55=64X/L#(M\)""+1QB+6`2+5PB)5"0(_S#H_/___XG&@\0$]L,#
+M#Y1$)`>]`````(N89`$``(7;=$F#>P0`=!>+0P2#N"`"````=2N#N%0"````
+M=2*)]H7;="B#>P@`="*+0PB#N"`"````=0J#N%0"````=`V0O?_____IN@``
+M`(GV]H9(`0``<'0+O?_____II0```)"Z`````(!^,`!T(0^V3C"0BT262(7`
+M=`^`>`@$=@GV@$@!``!P=6)".=%_Y(7;=&"#>P0`=!:#[`1J``^V1"0/4/]S
+M!.B7T/__@\00@WL(`'06@^P$:@`/MD0D#U#_<PCH>]#__X/$$(M3$(M##(E0
+M!(D"@^P(4XM$)!2#Z(!0Z/S___^#Q!#K&[W_____ZQ2#[`1J``^V1"0/4%;H
+M/]#__X/$$(M''(DH@_W_=0K'1RS_____C78`QT<P,'<'`(E_-,='.`````"#
+M[`B-1S!0_W<(Z/S___^#Q!Q;7E]=PU.#[`B+7"00BT,8_S#H_/___XG!@\0$
+M@7L,#/\```^4PHI`3(A$)`?`Z`*#X`$/MM(YT'0>P>("BD0D!X/@^PG0@\@0
+MB$%,@^P,4>C\____@\00QT,P,'<'`(E;-,=#.`````"#[`B-0S!0_W,(Z/S_
+M__^#Q!A;PU=64XM<)!"+0QB+<`3_,.C\____B<=6Z/S___]05^C\____@\0(
+M@_@!&<#WT(E#+,=#,#!W!P")6S3'0S@`````C4,P4/]S".C\____@\006UY?
+MPU575E.#[`R+;"0@BUT8C7L$_S/H_/___XG&@\0$]D,$`71"N0````"Z$```
+M`(V`5`$``)"("$!*=?J+1P2)AE0!``"+1PB)AE@!``"+1PR)AEP!``"+1Q")
+MAF`!``"`CD@!```$]@<"=#>Y`````+I`````C89L`0``B?:("$!*=?J-EFP!
+M``"-1Q2#[`1J0%!2Z/S___^`CD@!```$@\00]H9(`0``!'0,@^P,5NC\____
+M@\00QT4P,'<'`(EM-,=%.`````"#[`B-13!0_W4(Z/S___^#Q!Q;7E]=PXGV
+M5E.#[!3&1"0(!HM$)""+6`B%VW0BC70D"(UV`(M#"(E&!(/L"(M#!%9J`/]0
+M8(/$$(L;A=MUY8/$%%M>PXUV`%=64X/L$(M<)""+0QB+$(UX!(72=3J#[`S_
+M<PCHG____\=#+/S____'0S`P=P<`B5LTQT,X`````(/$"(U#,%#_<PCH_/__
+M_X/$$.F'````4NC\____B<:#Q`3V!P%T0,9$)`@`C50D"(I'!(A"!(/L"(M&
+M4%+_=ES_4&")0RR#Q!"%P'4:BD9,B,*#RH"(5DR*5P2(5DN#R)"(1DR-=@#V
+M1DP0=`Z#[`Q6Z/S___^#Q!")]L=#,#!W!P")6S3'0S@`````@^P(C4,P4/]S
+M".C\____@\00@\006UY?PXGV5U93@^PPBWPD0(M'&(L0C7`$A=)U.H/L#/]W
+M".B__O__QT<L_/___\=',#!W!P")?S3'1S@`````@\0(C4<P4/]W".C\____
+M@\00Z0,"``!2Z/S___^)PX/$!/8&`71`QD0D"`"-5"0(BD8$B$($@^P(BT-0
+M4O]S7/]08(E'+(/$$(7`=1J*0TR(PH/*@(A33(I6!(A32X/(D(A#3(UV`/8&
+M`G1+QD0D"`2-5"0(BD8%B$($QD(%`(/L"(M#4%+_<US_4&")1RR#Q!"%P'4A
+MBE--@\H0B%--@'X%``^5P,'@!8/BWPG"B%--@$M,$(GV]@8$=$_&1"0(!8U4
+M)`B*1@:(0@3&0@4`@^P(BT-04O]S7/]08(E'+(/$$(7`=26*4TV#RD"(4TV`
+M?@8`#Y7`#[;`P>`'@^)_"<*(4TV`2TP0C78`]@8(=$?&1"0(`XU4)`B*1@>(
+M0@2#[`B+0U!2_W-<_U!@B4<L@\00A<!U(8I338/*!(A338!^!P`/E<#!X`.#
+MXO<)PHA338!+3!")]O8&$'1'QD0D"`*-5"0(BD8(B$($@^P(BT-04O]S7/]0
+M8(E'+(/$$(7`=2&*4TV#R@&(4TV`?@@`#Y7`T>"#XOT)PHA338!+3!"-=@#V
+M!B!T(\9$)`@'C50D"(I&"8A"!(/L"(M#4%+_<US_4&")1RR#Q!"0]D-,$'0F
+M@^P(BT-0C50D&%+_<US_4#R*1"0NB$-*B1PDZ/S___^#Q!"-=@#'1S`P=P<`
+MB7\TQT<X`````(/L"(U',%#_=PCH_/___X/$$(/$,%M>7\.)]E575E.#[#R+
+M5"10BT(8BQ"-6`2%TG5+QD0D"`:+/0````"%_P^$C0,``(UL)`B)]HM?"(7;
+M="")[HUV`(M#"(E&!(/L"(M#!%9J`/]08(/$$(L;A=MUY8L_A?]UT^E5`P``
+M4NC\____B<:#Q`0/M@.%P'0.@_@!#X3#`0``Z2H#``"`?@@!#X5W`0``#[9#
+M`8/X!0^':@$``/\DA3@B``"+1"10@W@0"0^%50$``(!.3(#&1"0(`(U4)`B*
+M0P2(0@2#[`B+1E!2_W9<_U!@BU0D8(E"+(!.3!"#Q!#I+0$``(M$)%"#>!`)
+M#X44`0``QD0D"`*-5"0(BD,$B$($@^P(BT904O]V7/]08(M4)&")0BR`3DP0
+M@\00Z?````"+1"10@W@0"0^%UP```,9$)`@#C50D"(I#!(A"!(/L"(M&4%+_
+M=ES_4&"+5"1@B4(L@$Y,$(/$$.FS````BT0D4(-X$`D/A9H```#&1"0(!(U4
+M)`B*0P2(0@3&0@4`@^P(BT904O]V7/]08(M4)&")0BR`3DP0@\00ZW6+1"10
+M@W@0"75@QD0D"`6-5"0(BD,$B$($QD(%`(/L"(M&4%+_=ES_4&"+5"1@B4(L
+M@$Y,$(/$$.L[BT0D4(-X$`EU)L9$)`@)C50D"(I#!(A"!(/L"(M&4%+_=ES_
+M4&"+5"1@B4(L@\00BT0D4,=`+/[____V1DP0#X2?`0``@^P(BT90C50D&%+_
+M=ES_4#R*1"0NB$9*B30DZ/S___^#Q!#I=P$``(!^"`1VO0^V0P&#^`%T;(/X
+M`7\)A<!T$^DL`0``@_@"#X2=````Z1X!``"+5"10@WH0&'6.N0````"Z$```
+M`(V&5`$``(@(0$IU^HM#!(F&5`$``(M#"(F&6`$``(M##(F&7`$``(M#$(F&
+M8`$``(".2`$```3IV0```(M$)%"#>!!(#X4Z____N0````"Z!````(V&;`$`
+M`(@(0$IU^HV6;`$``(U#!(/L!&I`4%+H_/___X".2`$```2#Q!#ID0````^V
+MOAT"``"+5"10@WH0"0^%Z_[__P^V0P0Y^'0]BD,$B(8=`@``@'X(!'8NN0``
+M``"`?C``=",/MFXPBU2.2(72=!*`>@@$=@R*AAT"``"(@AT"``!!.<U_X8/_
+M`G4>@'L$`G08@^P$:)@#!P#_="185NB2V/__@\00ZV>0@(Y(`0``!.L+BT0D
+M4,=`+/[____VAD@!```$=!J#[`Q6Z/S___^#Q!#K#)"+5"10QT(L_O___XM$
+M)%#'0#`P=P<`B4`TQT`X`````(/L"(M$)%B#P#!0BU0D7/]R".C\____@\00
+M@\0\6UY?7<.)]E575E.#[`R+?"0@BVPD)(M$)"B+=PS_CI`!`P"%P'AT@^P$
+M4%57Z/S___^)PX/$$(7`=1R#[`R+1P15_U!`@\0(58U'$%#H_/___X/$$.M4
+M@#T``````'0K]D!,`G4E]D!,`70/@^P,4.C\____@\00C78`BD-,J`1U"8/(
+M)(A#3(UV`(/L"%-J`NC\____@\00ZQ"#[`A5C4<04.C\____@\00@[Z0`0,`
+M`'4SQX94`0``?#$'`(FV6`$``,>&7`$```````"#[`B-AE0!``!0C48D4.C\
+M____@\00C78`@\0,6UY?7<-55U93@>R8````BZPDK````(M]"%?HDO?__X/$
+M$(._D`$#``!T+\=%+/S____'13`P=P<`B6TTQT4X`````(/L"(U%,%#_=0CH
+M_/___X/$$.G2````QX>0`0,``0```(M?"(7;=%B)]H/L"(M#!(U4)`A2_W,(
+M_U`<#[9$)"`!AY`!`P"^`````(/$$(!\)!``="604VC`+`<`5E/H_/___X/$
+M$(3`=0;_CY`!`P!&#[9$)!`Y\'_<BQN%VW6J_X^0`0,`@[^0`0,``'4PQX=4
+M`0``?#$'`(F_6`$``,>'7`$```````"#[`B-AU0!``!0C4<D4.C\____@\00
+MQT4L_/___\=%,#!W!P");33'13@`````@^P(C44P4/]U".C\____@\00@<2,
+M````6UY?7<.)]E575E.#[!2+1"0HBW@0QD0D$P!0C8>P````4.C\____QX<D
+M`0```````(MW#(/$$(U'##GP=#*0C9[8_?__@'L(`74<]D-,0'06]H,<`@``
+M`70-@^P,4^C\____@\00D(LVC4<,.?!USXMW%(U'%#GP=!J)PXUV`(U&](/L
+M#%#H_/___X/$$(LV.?-UZXMW#(U'##GP="N)Q8UV`(V>V/W__X!["`1V%(-[
+M#`!U#H/L#%/H_/___X/$$(GVBS8Y]77:BW<,C4<,.?!T78V>V/W__X!["`%U
+M2(I#3*@@=$&#X-N(0TR+0R2%P'06@W@4`'0*QD0D"P'K"8UV`(L`A<!UZH!\
+M)`L`=1>#[`Q3Z/S___^)'"3H_/___X/$$(UV`(LVC4<,.?!UHXMW#(U'##GP
+M#X3:````D(V>V/W__X-['``/B:0```#V@QP"```!#X2O````@'L(!'9U@WL,
+M``^%GP```/:#2`$``$`/A9(```"#NV0!````=`N+@V0!```Y6`1U?KT`````
+MN@````"`>S``="`/MDLPBT232(7`=`^`>`@$=@GV@$@!``!`=1=".=%_Y(7M
+M=4J#[`Q3Z/S___^#Q!#K/+T!````Z^>0@'L(`74N]D-,`G0H@^P,4^C\____
+M@\00ZQJ)]O:#'`(```%U#X/L#%/H_/___X/$$(UV`(LVC4<,.?`/A2?___^#
+MQ`Q;7E]=PXUV`%=64XM\)!"#[`R-A[````!0Z/S___^)QH/$$(7`=&''``$`
+M``#'0`3<+@<`B48(QT`,`````(EX$(M?#(U'##G8=">)QXUV`(V#V/W__X!X
+M"`%U$(/L"%90Z/S___^#Q!"-=@"+&SG?==[_#H,^`'4/@^P,5NAJ_?__@\00
+MC78`6UY?PX/L&/]T)!SH_/___X/$',-55U93@^P,BWPD((MW"(M'&(LH5>C\
+M____B40D#(M>#(/$!(U&##G8#X2?````B?:-D]C]__^Y`````(-Z#`!U?X7M
+M=1>*@AP"``"H`G0-@^#]B((<`@``L0'K0#M4)`AU&HJ"'`(``*@"=1"#R`*(
+M@AP"``"Y`0```.L@BH(<`@``J`)T%CM4)`AT$(/@_8B"'`(``+D!````B?:%
+MR70@@'H(`74.@^P,4NC\____@\00ZPR#[`Q2Z/S___^#Q!"+&XU&##G8#X5C
+M____QT<P,'<'`(E_-,='.`````"#[`B-1S!0_W<(Z/S___^#Q!Q;7E]=PXUV
+M`%.#[!"+7"08BP/_L'`!`P!0Z/Z:__^+`X/$$(-X)`!U#X/L#%/H_/___X/$
+M$.L7D(U##(L3@\(<BTH$B4($B5,,B4@$B0&#Q`A;PY!55U93@^P,BT0D,&:)
+M1"0*BU0D-(MJ"`^WV,'C"0.=9`$#`$N)V+H`````][5D`0,`B<.#?"0D`'06
+MBU0D)/:"20$```1U"8M"!(!X!@!U.(M,)#3'02S^____QT$P,'<'`(E)-,=!
+M.`````"#[`B)R(/`,%#_<0CH_/___X/$$.G/`@``C78`#[=$)`JZ`````(MT
+M)"B+?"0L`<81UXM4)"0/MD(PBU($#[92!BG0F5)0BT0D+/]P&/]P%.C\____
+M@\00.==R!G>&.<9W@H/L#(V%F````%#H_/___XG&@\00A<!U-HM4)#3'0BS]
+M____QT(P,'<'`(E2-,=".`````"#[`B)T(/`,%#_<@CH_/___X/$$.DY`@``
+MD(/L"(M,)"S_<2!5Z/S___^)QX/$$(7`=1>#[`A6C868````4.C\____@\00
+MZYR)]L=&$`````"+1"0HBU0D+(D&B58$#[=$)`JZ``````-$)"@35"0LB48(
+MB58,QT8<`````,=&(`````#'1B0`````C484B484B488QT8H`0```(EW/(M4
+M)#2)5RS&1UP!H0````"%P'X6BTPD)(N!O`$``#L%``````^<P`^VP(E'-(M4
+M)"2+0@2`>`4`=%"+1"0@+0O_``"#^!IW(O\DA5`B``#&1U(!Z?,```#&1U("
+MZ>H```#&1U(#Z>$```"#[`A6C868````4.C\____B3PDZ/S___^#Q!#I)O[_
+M_XM$)"`M"_\``(/X&G<;_R2%O"(``,9'4@'K+L9'4@/K*-'CQD=2`NL@@^P(
+M5HV%F````%#H_/___XD\).C\____@\00Z=W]__^-A6`!`P")1U2+1"0HBU0D
+M+(E'2(E73&:+5"0*9HE74,='9`````#&1UX`BTPD)(E/*,=':,`>!P")G7`!
+M`P#'A8`!`P``````QX5T`0,`A#('`(F]>`$#`,>%?`$#``````"#[`B-A7`!
+M`P!05>C\____@\00ZVF+1"0D#[9(,8M$)"B+5"0L#ZW0T^KVP2!T!XG0N@``
+M``")1TB)5TS'1V0`````QD=>`(M4)"2)5RC'1VC`'@<`@WTD`'4.@^P,5^C\
+M____@\00ZQ6-1PR-51R+2@2)0@2)5PR)2`2)`9"#Q`Q;7E]=PU575E.+="08
+MBU0D%(M"*(N09`$``(UZ4(LH@<5@`0,`BT0D%`^W6%#!XPF`>A0`=!_V0%T$
+M=!D/MT\(#[='"BG!BU0D%`^W0E`IP<'A">L'#[=/"L'A"8G(N@````#W=02-
+M!$"+30"-/(&)T87;=$:#?"0<`'0)B<@#!XE&".L3B<BZ``````-'!!-7"(E&
+M"(E6#(M%!"G(.=AV`HG8B0;'1@0`````N0````"#QA"#QPPIPW6ZQT;T`0``
+M`+@!````6UY?7<.055=64XML)!B_`````(!],`!T9I"+=+U(A?9T5(!^"`1V
+M'H/L"%;_="0@Z-'___^#Q!"$P'0ZN`$```#K08UV`(M&,(M4)!2+2C"+4`B+
+M0`2+60@QTS-!!`G#=12+1B2+5"04.T(D=0BX`0```.L/D$</MD4P.?A_F[@`
+M````6UY?7<.055=64XM\)!2+;"08O@````"`?S``=#J0BURW2(7;="B`>P@$
+M=A*#[`A54^C0____@\00ZQ.-=@!54^@]____@\0(A,`/E$,T1@^V1S`Y\'_'
+M6UY?7<.)]E93@^P,BT0D&(MP!(M8"%"+`X/H@%#H_/___X/$#&H`:@!6Z+"[
+M__^`BT@!```$B1PDZ/S___^#Q!1;7L.-=@"#[!2+1"08QT`8T#<'`(E`',=`
+M(`````"-4!A2BT`$BP"#P"10Z/S___^#Q!S#B?955U93@^P,BW0D((MN!(M>
+M"(M%`(NX*`$``%-5Z!?____'@V0!````````QX5D`0```````(J5'`(``(/B
+M!(J#'`(``(/@^PG0B(,<`@``BI4<`@``@^("@^#]"="(@QP"``"*132(0S3'
+M1S`P=P<`B7\TQT<X`````(U',%#_=PCH_/___X/$"%-J%>C\____@\0(BU80
+MBT8,B5`$B0+'1A@0.`<`B78<QT8@`````(/&&%;_=0#H_/___X/$'%M>7UW#
+M5E.#[!"+5"0<BUHLBT,$BS!2Z/S____'0QA`.`<`B5L<QT,@`````(/$"(/#
+M&%.#QB16Z/S___^#Q!1;7L.)]E=64XMT)!"+7@2+5@B+.XM#'(E"',=#'/__
+M__^`HTD!``#S@*))`0``\X/L"/]R'/]W!.C\____@\0(_W,@5^C\____B5@H
+MQD!<!(EP+,=`:`0Y!P")!"3H_/___X/$$%M>7\-55U93@^P,BT0D((MH+(M`
+M*(NP9`$``(U.4(M^!(M>"(E<)`B*1F:(1"0'@'X4`'1;#[=!"+H`````BTY<
+MBUY@*<$9TXE.7(E>8(!^9@%U%(M7&#':BT<4,<@)PG4&QD9F`(GV@'YF`G42
+MBT9<BU9@BT\8,=$S1Q0)P71VBT9@"T9<=&[IKP```(UV``^W00BZ`````(G!
+MB=,#3EP37F")3ER)7F"`?F8`=16+5Q@QVHM'%#'("<)U!\9&9@&-=@"`?F8#
+M=1:+3@2+1ER+5F"+61@QTS-!%`G#=!>0BT9<BU9@BUPD"(M+&#'1,T,4"<%U
+M1H/L#/\WZ'"3__^#Q!"`?"0'`'0'@'PD!P-U$H/L"(U&)%#_=@3H_/___X/$
+M$(/L#/]T)"SH_/___XDT).AI_O__@\00ZUR#[`S_-^@JD___@\00@'PD!P!T
+M!X!\)`<#=1*#[`B-1B10_W8$Z/S___^#Q!"#[`S_="0LZ/S____'13`P=P<`
+MB6TTQT4X`````(/$"(U%,%#_=0CH_/___X/$$(/$#%M>7UW#4X/L"(M<)!"+
+M$\9#7@#V0UT"=!R#>B0`=!:-0PR#PAR+2@2)0@2)4PR)2`2)`>L,@^P,4^C\
+M____@\00@\0(6\.-=@!55U93@^P,BW0D((MN+(M&*(N89`$``(L&B40D"(U[
+M4(!^7@$/A,X```"`?EX"=#3&1EX`QT,81#L'`(ES',=#(`````"#[`B-0QA0
+MBT0D%(/`)%#H_/___X/$$.F_`0``C78`QD-G`8M#!("@'`(``/Z+0PB`H!P"
+M``#^BT,$@*!)`0``]XM#"("@20$``/>#[`R+0P3_,.COD?__@\00@'MF`'0&
+M@'MF`W42@^P(C4,D4/]S!.C\____@\00@^P,5NC\____QT4L_____\=%,#!W
+M!P");33'13@`````@\0(C44P4/]U".C\____@\00Z2H!``")]F:+1PJ)PF8#
+M5E!FB5<*BT8H.T,$=0YF.U<(<C9FQT<*``")]F:+1PIF.T<(#X/H````BD9=
+M@^#]@\@$B$9=BT,(B48HQT8\`````,=&.`````#&1EX`BTPD"(N1;`$#`$J+
+M@60!`P#!Z`F)T0^OR`^W5P@/MT<**<(YT78"B=%FB4Y09H'Y``%V!F;'1E``
+M`8![%`!T-O9&701T,`^W1PBZ``````,'$U<$#[=/"KL`````*<@9V@^W3E"[
+M`````"G(&=J)1DB)5DSK%`^W1PJZ``````,'$U<$B49(B59,]D9=`G0FBT0D
+M"(-X)`!T'(U&#(M4)`B#PAR+2@2)0@2)5@R)2`2)`>L>B?:#[`Q6Z/S___^#
+MQ!#K#H/L#%;H!?S__X/$$(GV@\0,6UY?7<-55U93@^P4BT0D*(/`4(E$)!"+
+M5"0HBT($BRB+C2@!``")3"0,_[5P`0,`5>BWC___@\0(BUPD*(M#"(M3!(M`
+M(#M"(',#BT(@4(M\)"R+1P3_,.C\____B<:#Q!"%P'5L@']F`'0&@']F`W4:
+M@^P(BT0D*(/`)%"+1"0L_W`$Z/S___^#Q!"#[`R+5"0LBT($_S#HS(___XM,
+M)!3'02S_____QT$P,'<'`(E)-,=!.`````"#Q`B)R(/`,%#_<0CH_/___X/$
+M$.EW`0``H0````"%P'X9BUPD((M#!(N`O`$``#L%``````^<P`^VP(E&-,9&
+M7@"+?"0@@']F`'0&@']F`W4:BT0D((/`)(E&.(M4)""+0@2)1BB`3ET"ZTV+
+M3"0@BT$(B48H@$Y=!+L`````@[UH`0,``'8QOP````"-=@"+E6`!`P"-!%N+
+MC60!`P"+!(*%R70*B?:)^H@00$EU^$,YG6@!`P!WUXN5;`$#`$J+A60!`P#!
+MZ`F)T0^OR(M<)`@/MU,(#[=#"BG".=%V`HG19HE.4&:!^0`!=@9FQT90``&+
+M?"0@@'\4`'0Z]D9=!'0TBTPD"`^W00BZ``````,!$U$$#[=)"KL`````*<@9
+MV@^W3E"[`````"G(&=J)1DB)5DSK&(M,)`@/MT$*N@`````#`1-1!(E&2(E6
+M3(!.70B+?"0$B7XLQT9HB#L'`,=&9"PV!P"#?20`=0Z#[`Q6Z/S___^#Q!#K
+M%(U&#(U5'(M*!(E"!(E6#(E(!(D!@\0,6UY?7<-3@^P0BTPD&(M!!(L`B40D
+M#`^W05C!X`F+5"0,`X)D`0,`2(G3N@````#WLV0!`P")@W`!`P#'@X`!`P``
+M````QX-T`0,`L#T'`(F+>`$#`,>#?`$#``````")V`5P`0,`4%/H_/___X/$
+M&%O#C78`4XM4)`B+3"0,B<NX`````(!Z"`%U8H7)="6+@60!``"%P'0;.4@$
+M=1.+6`CK$;@`````ZT.X`````.L\BU@$BU(DA=)T+8GV@WH4`'0?A<ETW(M"
+M%(-X#`!T"I"+0`R#>`P`=?<YR'0$.=AUR(L2A=)UU;@!````6\.)]E=64XM<
+M)!"+?"04@[L@`@```'4)@[M4`@```'0+N@````#IG0```)"#>QS_=!R#[`C_
+M<QR+`_]P!.C\____@\00N@````"%P'5Z@'L(!'9`N@````!F]X-(`0``<`AU
+M9+X`````@'LP`'12D(M$LTB%P'01@^P(5U#H@O___X/$$(3`=#%&#[9#,#GP
+M?][K+8!["`1U$5?_<R3HY?[__P^VT(/$".L=5U/HUO[__P^VT(/$".L.N@``
+M``#K![H!````B?:)T%M>7\.)]H/L#(M4)!"`>@@$=@ZX`````(.Z9`$```!U
+M$X/L"/]T)!Q2Z`S___\/ML"#Q!"#Q`S#B?955U93@^P8BU0D+(M:+(L#B40D
+M%(NX*`$``(M'&(L`B40D$(MJ,%+H_/___X/$$(!["`1V;XNS9`$``(7V=%*#
+M?@0`=!.#[`1J`FH`_W8$Z&RQ__^#Q!"0@WX(`'02@^P$:@)J`/]V".A3L?__
+M@\00BU80BT8,B5`$B0*#[`A6BT0D%(/H@%#H_/___X/$$.L?@^P$:@)J`%/H
+M(K'__X/$$.L-D(/L#%/H_/___X/$$$4[;"0$=27'1S`P=P<`B7\TQT<X````
+M`(/L"(U',%#_=PCH_/___X/$$.L9BT<8_W2H!.C\____@^P$55#H.@```(/$
+M$(/$#%M>7UW#C78`@^P4BT0D&,=`%.A!!P")0!C'0!P`````C5`44HL`@\`D
+M4.C\____@\0<PY!3@^P0BUPD&/]S(/\SZ/S___^*4%V#XL^#RB"(4%V)6"C&
+M0%P$B5@LBU0D)(E0,,9`7@#'0&CH0@<`B00DZ/S___^#Q!A;PY!55U93@^P,
+MBWPD((M'&(L0]L;_#Y3`#[;H#[;RBT<<QP``````NP`````Y\W-JA>UT.HGV
+MBT<8_W28!.C\____@\0$B<*`>`@$=P6Z`````(/L"%)0Z/[]__^#Q!"$P'1$
+M0SGS<P:%[77*B?:[`````#GS<R.-=@"+1QC_=)@$Z/S___^#[`A0Z/S___^#
+MQ!!#.?-RXXUV`(7M=3C'1RP`````ZSC'1RS_____BU<<C4,!B0+K)XM'&/]T
+MF`3H_/___X/L!%-0Z.S^__^#Q!#K+XUV`+L`````.?-RV<=',#!W!P")?S3'
+M1S@`````@^P(C4<P4/]W".C\____@\00@\0,6UY?7<-64X/L!(MT)!"`/0``
+M````=&R+7@R-1@PYV'0UC9/8_?__@'H(`74@]H(<`@```707@^P(#[8%````
+M`%!2Z/S___^#Q!"-=@"+&XU&##G8=<O'ALP`````AY,#QX;4````9$0'`(FV
+MV````(/L"(V&S````%!6Z/S___^#Q!"#Q`1;7L-55U93@>R<````BZPDL```
+M`(M]"(M%&(E$)`3'!"0`````BW<,C4<,.?!T38V>V/W___:#'`(```%T-8![
+M"`%U+X/L#%/H_/___\9$)!@(BU0D%(I"((A$)!R#Q`B+0U"-5"004O]S7/]0
+M8(/$$(GVBS:-1PPY\'6SBU0D!(I"(*(`````BU\(A=MT*H/L"(M3!(U$)!A0
+M_W,(_U(<@\00]D0D(1!T"<<$)`$```#K!HL;A=MUUH,\)`!T.(/L"(V?S```
+M`%-7Z/S____'A\P`````AY,#QX?4````9$0'`(F_V````(/$"%-7Z/S___^#
+MQ!"0QT4L`````,=%,#!W!P");33'13@`````@^P(C44P4/]U".C\____@<2L
+M````6UY?7<.)]E575E.#[#R+;"10BWT(BT48QD0D"`>`>"`!&<"#P`*(1"0,
+MBU\,C4<,.=AT5(UV`(VSV/W___:&'`(```%T.8!^"`%U,X/L"(M&4(U4)!A2
+M_W9<_U`\C50D&(/$$(I$)!\Z0@1T$H/L"(M&4%+_=ES_4&"#Q!")]HL;C4<,
+M.=AUK\=%+`````#'13`P=P<`B6TTQT4X`````(/L"(U%,%#_=0CH_/___X/$
+M3%M>7UW#@^P4BU0D&(L"!2P!``!04NC\____@\0<PXUV`(M$)`2#>!``>`:#
+M>!0#=P?'0"S^____PX/L%(M$)!B+4!S'`@```0+'0#`P=P<`B4`TQT`X````
+M`(U0,%+_<`CH_/___X/$',.-=@"+1"0$@7@0QP```'8)@7@4QP```'<'QT`L
+M_O___\.)]E575E.#[`R+1"0@BV@8BU@<QT`L`````(`]``````%W/VC4`@``
+M5>CXA?__@\0(A<!U+?RY"````(G?B>[SI<9#1`#&0T$`QD-``HI%18A#1:``
+M````B$,@Z=8```")]FCA`@``5>BYA?__@\0(A<!U0ORY"````(G?B>[SI<9#
+M1`#&0T$`BD5%B$-%QD-``8L5`````(G0!9`!``!Y"8V"EP$``(UV`,'X`XA#
+M(.F!````D&CR`@``5>AEA?__@\0(A<!U*/RY"````(G?B>[SI<9#1`#&0T$`
+MBD5%B$-%QD-``J``````B$,@ZT9H#P,``%7H*X7__X/$"(7`=2C\N0@```")
+MWXGN\Z7&0T0`QD-!`(I%18A#1<9#0`&@`````(A#(.L,BU0D(,="+/____^0
+MBT0D(,=`,#!W!P")0#3'0#@`````@^P(BT0D*(/`,%"+5"0L_W((Z/S___^#
+MQ!Q;7E]=PXM$)`2!>!#'````=@>#>!0`>0B0QT`L_O___\-64X/L!(MT)!!H
+M#P,``/]V&.B*A/__@\0(A<!U/XM&"(M8#(/`##G8=#*)]HV#V/W___:`'`(`
+M``%T%8!X"`%U#X/L#%#HJOW__X/$$(UV`(L;BT8(@\`,.=AUT(/$!%M>PXGV
+M5E.#[`2+="00BUX8:-0"``!3Z"6$__^#Q`B%P'4RBD,@H@````#'1C`P=P<`
+MB78TQT8X`````(/L"(U&,%#_=@CH_/___X/$$.E*`0``B?9HX0(``%/HX8/_
+M_X/$"(7`=3H/MD,@C03%</[__Z,`````QT8P,'<'`(EV-,=&.`````"#[`B-
+M1C!0_W8(Z/S___^#Q!#I_@```(GV:/("``!3Z)6#__^#Q`B%P'4RBD,@H@``
+M``#'1C`P=P<`B78TQT8X`````(/L"(U&,%#_=@CH_/___X/$$.FZ````B?9H
+M#P,``%/H48/__X/$"(7`=36+1@C'@$@!``#H1`<`B;!,`0``QX!0`0``````
+M`(/L"(V02`$``%*#P"10Z/S___^#Q!#K<6@L`P``4^@*@___@\0(A<!U-8M&
+M",>`2`$``!!&!P")L$P!``#'@%`!````````@^P(C9!(`0``4H/`)%#H_/__
+M_X/$$.LJQT8L_____\=&,#!W!P")=C3'1C@`````@^P(C48P4/]V".C\____
+M@\00@\0$6U[#B?:+1"0$@W@0`'@&@W@4`W<'QT`L_O___\-64X/L!(M<)!"+
+M<QSH"X;__XD&QT,P,'<'`(E;-,=#.`````"#[`B-0S!0_W,(Z/S___^#Q!1;
+M7L.-=@"+1"0$@W@0`W8&@W@42W<'QT`L_O___\-3@^P0BUPD&(M#&/]S'/\P
+MZ`^&__^#Q!"%P'0'QT,L_____\=#,#!W!P")6S3'0S@`````@^P(C4,P4/]S
+M".C\____@\086\.+1"0$@W@0`W8&@W@45W<'QT`L_O___\-3@^P0BUPD&(M#
+M&/]S'/\PZ)>&__^#Q!"%P'0'QT,L_____\=#,#!W!P")6S3'0S@`````@^P(
+MC4,P4/]S".C\____@\086\.+1"0$@W@0!W8&@W@4#W<'QT`L_O___\-64X/L
+M6(M<)&2+0QB+<QR-5"0$4O]P!/\PZ$*'__^#Q!"%P'0+QT,L_____^L<B?:+
+M!"2)!HM$)`2)1@2+1"0(B48(BT0D#(E&#,=#,#!W!P")6S3'0S@`````@^P(
+MC4,P4/]S".C\____@\1D6U[#BT0D!(-X$`=V!H-X%$-W!\=`+/[____#4X/L
+M#(M<)!2+0QC_<QS_<`3_,.C`AO__@\00A<!T!\=#+/_____'0S`P=P<`B5LT
+MQT,X`````(/L"(U#,%#_<PCH_/___X/$&%O#D(M$)`2#>!`#=@:#>!0#=P?'
+M0"S^____PU=64X'LB````(NT))@```"+1AAJ`/\PZ&R!__^)P[\`````@\00
+MA<!T0XGVBT,$@[B$`````'04@^P,_W,(_Y"$`````<>#Q!"-=@"+&X7;=!N#
+M[`B+4P2-1"0(4/]S"/]2'(/$$(!\)!,`=+^+1AR).,=&,#!W!P")=C3'1C@`
+M````@^P(C48P4/]V".C\____@<20````6UY?PXM$)`2#>!`'=@F!>!3_````
+M=P?'0"S^____PY!55U93@>RD````B[PDN````(M'&(MP!(M7'(E4)!1J`/\P
+MZ*F`__^)P[T`````QT<L_____X/$$(7`='F+0P2#N(0`````=$R#[`S_<PC_
+MD(0```"#Q!`Y\'XU@^P$BT,$_W0D$%;_<PC_D(@```"#Q!"%P'4_BT0D#(!X
+M`O]T!8GJ`%`"QT<L`````.LGB?8IQ@'%BQN%VW0;@^P(BU,$C40D&%#_<PC_
+M4AR#Q!"`?"0C`'2'QT<P,'<'`(E_-,='.`````"#[`B-1S!0_W<(Z/S___^!
+MQ*P```!;7E]=PXM$)`2#>!`'=@F!>!2C#```=P?'0"S^____PY!55U93@>RD
+M````B[PDN````(M'&(MP!(M7'(E4)!1J`/\PZ*U___^)P[T`````QT<L____
+M_X/$$(7`='F+0P2#N(0`````=$R#[`S_<PC_D(0```"#Q!`Y\'XU@^P$BT,$
+M_W0D$%;_<PC_D(P```"#Q!"%P'4_BT0D#(!X`O]T!8GJ`%`"QT<L`````.LG
+MB?8IQ@'%BQN%VW0;@^P(BU,$C40D&%#_<PC_4AR#Q!"`?"0C`'2'QT<P,'<'
+M`(E_-,='.`````"#[`B-1S!0_W<(Z/S___^!Q*P```!;7E]=PXM$)`2#>!`'
+M=@F!>!0G#0``=P?'0"S^____PY!55U93@>RD````B[PDN````(M'&(MP!(M7
+M'(E4)!1J`/\PZ+%^__^)P[T`````QT<L_____X/$$(7`='F+0P2#N(0`````
+M=$R#[`S_<PC_D(0```"#Q!`Y\'XU@^P$BT,$_W0D$%;_<PC_D)````"#Q!"%
+MP'4_BT0D#(!X`O]T!8GJ`%`"QT<L`````.LGB?8IQ@'%BQN%VW0;@^P(BU,$
+MC40D&%#_<PC_4AR#Q!"`?"0C`'2'QT<P,'<'`(E_-,='.`````"#[`B-1S!0
+M_W<(Z/S___^!Q*P```!;7E]=PXM4)`2+0AB+`(-Z$`-V#(T$A00````Y0A1S
+M!\="+/[____#D%93@^P$BUPD$(M3&(MS'(U&!/\R4.C:@___B0;'0S`P=P<`
+MB5LTQT,X`````(U#,%#_<PCH_/___X/$%%M>PY"+5"0$BT(8BP"#>A`#=@R-
+M!(4$````.4(4<P?'0BS^____PY!64X/L!(M<)!"+4QB+<QR-1@3_,E#H%H3_
+M_XD&QT,P,'<'`(E;-,=#.`````"-0S!0_W,(Z/S___^#Q!1;7L.04XM<)`B+
+M0QB+`(-[$`-V"8%[%*T```!W"\=#+/[____K%HGV4.C\____@\0$A<!U!\=#
+M+/[___];PXGV5U93BUPD$(M#&(LXBW,<N`````"YK@```(GRD(@"0DEU^H/L
+M"%97Z'R4__^#Q!"%P'0'QT,L_____\=#,#!W!P")6S3'0S@`````@^P(C4,P
+M4/]S".C\____@\006UY?PXUV`%.+7"0(BT,8BP"#>Q`#=@F!>Q37````=PO'
+M0RS^____ZQ:)]E#H_/___X/$!(7`=0?'0RS^____6\.)]E=64XM<)!"+0QB+
+M.(MS'+@`````N=@```")\I"(`D))=?J#[`A65^ATE/__@\00A<!T!\=#+/__
+M___'0S`P=P<`B5LTQT,X`````(/L"(U#,%#_<PCH_/___X/$$%M>7\.-=@!3
+MBUPD"(M#&(L`@WL0`W8)@7L4^0```'<+QT,L_O___^L6B?90Z/S___^#Q`2%
+MP'4'QT,L_O___UO#B?975E.+7"00BT,8BSB+<QRX`````+GZ````B?*0B`)"
+M277Z@^P(5E?H=)3__X/$$(7`=`?'0RS_____QT,P,'<'`(E;-,=#.`````"#
+M[`B-0S!0_W,(Z/S___^#Q!!;7E_#C78`5E.+7"0,BT,8BS"+2QR#>Q`(=@:#
+M>Q0$?PK'0RS^____ZSF0BT,8BU`$BD`(B1&(0011Z.1Y__^#Q`0\`70)QT,L
+M_O___^L45NC\____@\0$A<!U!\=#+/[___];7L.04X/L$(M<)!B+0QC_<QS_
+M,.B3E/__@\00A<!T!\=#+/_____'0S`P=P<`B5LTQT,X`````(/L"(U#,%#_
+M<PCH_/___X/$&%O#5E.+7"0,@7L0LP```'8&@WL4!W<+QT,L_O___^LVB?:+
+M0QB+,%;H_/___X/$!(7V="*#_O]T'87`=`^`>`@$=@F#N&0!````=`K'0RS^
+M____C78`6U[#D%575E.#[`R+?"0@BT<8BQB-<`2+;QQ3Z/S___^)PH/$!(7;
+M=`>#^_]U!XGVN@````!J``^V1@*#X`]0C49P4`^V1@%0#[8&4%+H?IG__XE%
+M`(E5!,=',#!W!P")?S3'1S@`````@\00C4<P4/]W".C\____@\0<6UY?7<-7
+M5E.+7"00@WL0"'8&@WL4!W<)QT,L_O___^M(BT,8BS"->`16Z/S___^#Q`2%
+M]G0?@_[_=!J%P'0/@'@(!'8)@[AD`0```'0'QT,L_O___U?H&GC__X/$!#P!
+M=`?'0RS^____6UY?PU575E.#[`R+?"0@BT<8BS"-6`2+;QQ6Z/S___^)PH/$
+M!(7V=`>#_O]U!XGVN@````"`>PH`=`D/MD,*ZPR-=@"*0P[`Z`0/ML!0#[9#
+M#H/@#U"-0WQ0#[9##5`/MD,,4%+H@IC__XE%`(E5!,=',#!W!P")?S3'1S@`
+M````@\00C4<P4/]W".C\____@\0<6UY?7<-55U93BW0D%(M&&(LXC02]!```
+M`#E&$'('@WX4`'D-D,=&+/[____K<XUV`(`]``````)U)\=&+/[____K7L=&
+M+/[____K5<=&+/S____K3,=&+/[____K0XUV`+T`````.?US-XUV`(M&&(M<
+MJ`13Z/S___^#Q`2%P'3"4^C\____B<*#Q`2+`#M&"'6Y]D),`72\13G]<L^-
+M=@!;7E]=PXUV`%93@^P$BT0D$(M8&+X`````@SL`=AZ)]H/L#/]TLP3H_/__
+M_XD$).A8\/__@\001CDS=^2#Q`1;7L.)]H/L%(M$)!B+4`C'@D@!```8'@<`
+MB8),`0``QX)0`0```````(V"2`$``%"#PB12Z/S___^#Q!S#55=64XM<)!2+
+M<QB!>Q"'````=@:#>Q0#=PK'0RS^____ZV&0@'X!"'8>QT,L_O___^M1QT,L
+M_O___^M(QT,L_/___^L_C78`O0````"`?@$`=C&0B>H/ML*+?(9H5^C\____
+M@\0$A<!TR5?H_/___X/$!(L`.T,(=<)%B>@X1@%WTHGV6UY?7<.-=@!64X/L
+M!(M$)!"+6!B^`````(![`0!T(9"#[`S_=+-HZ/S___^)!"3H6.___X/$$$8/
+MMD,!.?!WX(/$!%M>PXGV@^P4BT0D&(M0",>"2`$``&P@!P")@DP!``#'@E`!
+M````````C8)(`0``4(/")%+H_/___X/$',.+1"0$@W@0`W8&@W@4`W\'QT`L
+M_O___\-64X'LC````(N<))@```"+0QAJ`/\PZ(EV__^)P8MS'(/$$(7`="F#
+M[`B+4`2-1"0(4/]Q"/]2'(M$)!1FB09FBT0D%F:)1@*#Q!#K"HUV`,=#+/[_
+M___'0S`P=P<`B5LTQT,X`````(/L"(U#,%#_<PCH_/___X'$E````%M>PU93
+MBTPD#(M!&(M8"(MP#(M1$(7;=`J-1A`YPG(3ZP:0@_H/=@N%VW4..7$4<PF)
+M]L=!+/[___];7L.)]E575E.#[!2+7"0HBT,8BV@$BW`(BW@,:@#_,.C(=?__
+MB<&#Q!"%P'4+QT,L_O___^L_B?:%]G4<@^P,BT`$:@%7_W,<5?]Q"/^0E```
+M`(/$(.L>D(M#&(/`$(/L#(M1!&H`5U!5_W$(_Y*4````@\0@QT,P,'<'`(E;
+M-,=#.`````"#[`B-0S!0_W,(Z/S___^#Q!Q;7E]=PXUV`%575E.+7"04BW,8
+M@7L0KP```'8&@WL4`W<*QT,L_O___^MAD(!^`1!V'L=#+/[____K4<=#+/[_
+M___K2,=#+/S____K/XUV`+T`````@'X!`'8QD(GJ#[;"BWR&<%?H_/___X/$
+M!(7`=,E7Z/S___^#Q`2+`#M#"'7"18GH.$8!=]*)]EM>7UW#C78`5E.#[`2+
+M1"00BU@8O@````"`>P$`="&0@^P,_W2S<.C\____B00DZ.3L__^#Q!!&#[9#
+M`3GP=^"#Q`1;7L.)]H/L%(M$)!B+4`C'@D@!``#8'P<`B8),`0``QX)0`0``
+M`````(V"2`$``%"#PB12Z/S___^#Q!S#55=64XM<)!2+<QB#>Q`$?@:#>Q0#
+M=PG'0RS^____ZW16Z+YR__^#Q`0\`70)QT,L_O___^M>@'X-0'8<QT,L_O__
+M_^M/QT,L_O___^M&QT,L_/___^L]D+T`````@'X-`'8QB>H/ML*+?(9\5^C\
+M____@\0$A<!TS%?H_/___X/$!(L`.T,(=<5%B>@X1@UWTHUV`%M>7UW#C78`
+M5E.#[`2+1"00BU@8O@````"`>PT`="&0@^P,_W2S?.C\____B00DZ-#K__^#
+MQ!!&#[9##3GP=^"#Q`1;7L.)]H/L%(M$)!B+4`C'@D@!``"$'P<`B8),`0``
+MQX)0`0```````(V"2`$``%"#PB12Z/S___^#Q!S#55=64XM<)!2+0QB+,(UX
+M!(%[$+,```!V!H-[%`-W#<=#+/[____IC0```)!6Z/S___^#Q`2%P'4)QT,L
+M_O___^MV5NC\____@\0$BP`[0PAT"<=#+/S____K78!_`1!V&\=#+/[____K
+M3L=#+/[____K1<=#+/S____K/+T`````@'\!`'8QB>H/ML*+=(=P5NC\____
+M@\0$A<!TS5;H_/___X/$!(L`.T,(=<9%B>@X1P%WTHUV`%M>7UW#C78`5E.#
+M[`2+1"00BU@8@\,$O@````"`>P$`="*)]H/L#/]TLW#H_/___XD$).B4ZO__
+M@\001@^V0P$Y\'?@@\0$6U[#B?:#[!2+1"08BU`(QX)(`0``("$'`(F"3`$`
+M`,>"4`$```````"-@D@!``!0@\(D4NC\____@\0<PU575E.+7"04BT,8BS"-
+M>`2#>Q`(=@:#>Q0#=PS'0RS^____Z:0```!6Z/S___^#Q`2%P'4,QT,L_O__
+M_^F+````5NC\____@\0$BP`[0PAT"<=#+/S____K<E?H-'#__X/$!#P!=`G'
+M0RS^____ZUR`?PU`=AO'0RS^____ZTW'0RS^____ZT3'0RS\____ZSN]````
+M`(!_#0!V,(GJ#[;"BW2'?%;H_/___X/$!(7`=,U6Z/S___^#Q`2+`#M#"'7&
+M18GH.$<-=]*)]EM>7UW#C78`5E.#[`2+1"00BU@8@\,$O@````"`>PT`="*)
+M]H/L#/]TLWSH_/___XD$).A$Z?__@\001@^V0PTY\'?@@\0$6U[#B?:#[!2+
+M1"08BU`(QX)(`0``R"$'`(F"3`$``,>"4`$```````"-@D@!``!0@\(D4NC\
+M____@\0<PU93@^P$BUPD$(M#&(LP@WL0!W8&@WL4`W<*QT,L_O___^MMD%;H
+M_/___X/$!(7`=0G'0RS^____ZU96Z/S___^)PH/$!(L`.T,(=`G'0RS\____
+MZSN#>@P`=0:`>@@$=PG'0RS^____ZR:#>AS_=""#[`C_<AR+`O]P!.C\____
+M@\00A<!T"<=#+/____^)]H/$!%M>PXGV4X/L"(M$)!"+0!C_,.C\____B<.#
+MQ`2%P'1!@[AD`0```'0XBX!D`0``@W@$`'00@^P,_W`$Z"7H__^#Q!")]HN#
+M9`$``(-X"`!T'(/L#/]P".@)Z/__@\00ZPR#[`Q3Z/OG__^#Q!"#Q`A;PXUV
+M`(/L%(M$)!B+4`C'@D@!```P(@<`B8),`0``QX)0`0```````(V"2`$``%"#
+MPB12Z/S___^#Q!S#BT0D!(-X$`!X!H-X%"MW!\=`+/[____#4X/L"(M<)!#_
+M<QSHY+/__X/$!(7`=`?'0RS_____QT,P,'<'`(E;-,=#.`````"#[`B-0S!0
+M_W,(Z/S___^#Q!A;PY!64XM<)`R+0QB+,(-[$`AV!X-[%`!Y#9#'0RS^____
+MZS.-=@!6Z/S___^#Q`2%P'4)QT,L_O___^L:5NC\____@\0$BP`[0PAT"L=#
+M+/S___^-=@!;7L.04X/L$(M<)!B+2QA3#[9!"%"+002Z`````%)0_S'H_/__
+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
+M````C8)(`0``4(/")%+H_/___X/$',-75E.+7"00BT,8BS"+>`2#>Q`'=@>#
+M>Q0`>0V0QT,L_O___^F4````5NC\____@\0$A<!U"<=#+/[____K?E?H_/__
+M_X/$!(7`=0G'0RS^____ZVA6Z/S___^)QE?H_/___XG"@\0(BP8[0PAT"<=#
+M+/S____K18L".T,(=`G'0RS\____ZS6+1@2`>`8`=".`>@@!=1V+1D0+1D!T
+M%8.^9`$```!T%8N&9`$``(!X9P!T"<=#+/[___^)]EM>7\-64X/L!(M$)!"+
+M0!B+6`3_,.C\____B<93Z/S___^)PX/L!%;HV][__XD<).C3WO__@\046U[#
+MD(/L%(M$)!B+4`C'@D@!```@)`<`B8),`0``QX)0`0```````(V"2`$``%"#
+MPB12Z/S___^#Q!S#5E.+7"0,BT,8BS"#>Q`'=@>#>Q0`>0V0QT,L_O___^M#
+MC78`5NC\____@\0$A<!U"<=#+/[____K*E;H_/___XG"@\0$BP`[0PAT"<=#
+M+/S____K#X!Z"`1W"<=#+/[___^)]EM>PY!64X/L!(M$)!"+0!B+6`3_,.C\
+M____B<:#Q`2#^PUU1(7`=%R#N&0!````=%.+@&0!``"#>`0`=`^#[`S_<`3H
+MZ-W__X/$$)"+AF0!``"#>`@`="R#[`S_<`CHS=W__X/$$.L<@_L!=`N#^P1T
+M!H/[!W4-D(/L#%;HK]W__X/$$(/$!%M>PXGV@^P4BT0D&(M0",>"2`$``#P4
+M!P")@DP!``#'@E`!````````C8)(`0``4(/")%+H_/___X/$',-64XM<)`R+
+M0QB+,(-[$%=V!X-[%`!Y#9#'0RS^____ZT>-=@!6Z/S___^#Q`2%P'4)QT,L
+M_O___^LN5NC\____B<*#Q`2+`#M#"'0)QT,L_/___^L3@'H(!'8&@WH,`'0'
+MQT,L_O___UM>PY"#[!B+1"0<BT`8_S#H_/___XD$).CGW/__@\0<PXUV`(/L
+M%(M$)!B+4`C'@D@!``!T)`<`B8),`0``QX)0`0```````(V"2`$``%"#PB12
+MZ/S___^#Q!S#5E.+7"0,BT,8BS"#>Q!#=@>#>Q0`>0V0QT,L_O___^M'C78`
+MA?9T0%;H_/___X/$!(7`=0G'0RS^____ZRI6Z/S___^)PH/$!(L`.T,(=`G'
+M0RS\____ZP^`>@@!=`G'0RS^____B?9;7L.0@^P4BT0D&(M0",>"2`$``'0F
+M!P")@DP!``#'@E`!````````C8)(`0``4(/")%+H_/___X/$',-64XM<)`R+
+M0QB+,(-[$`AV!X-[%`!Y#9#'0RS^____ZT>-=@"%]G1`5NC\____@\0$A<!U
+M"<=#+/[____K*E;H_/___XG"@\0$BP`[0PAT"<=#+/S____K#X!Z"`%T"<=#
+M+/[___^)]EM>PY"#[!2+1"08BU`(QX)(`0``E"4'`(F"3`$``,>"4`$`````
+M``"-@D@!``!0@\(D4NC\____@\0<PXM$)`2#>!``>`:#>!0`>0?'0"S^____
+MPX/L%(M$)!B+4`C'@D@!``"H+0<`B8),`0``QX)0`0```````(V"2`$``%"#
+MPB12Z/S___^#Q!S#BT0D!(-X$`!X!H-X%"MW!\=`+/[____#4X/L%(M<)!S_
+M<QSH$+'__X/$$(7`=`?'0RS_____QT,P,'<'`(E;-,=#.`````"#[`B-0S!0
+M_W,(Z/S___^#Q!A;PY"+1"0$@W@0`'@&@W@4?W<'QT`L_O___\-64X/L$(MT
+M)!R+7AQ3Z+*P__^#Q!"%P'0'QT8L_____\<#@````+D`````NE0```"-0RR0
+MB`A`2G7ZN@````"0BD03#(/@#P^VP(/H`X/X`G<%QD03+`9"@_H/?N/'1C`P
+M=P<`B78TQT8X`````(/L"(U&,%#_=@CH_/___X/$%%M>PY!64XMT)`R+7A@/
+MME,+P>()BTX0@'L,`G4+C4(0.<%R).L'B?:#^0]V&XM.%(![#`%U"HU"$#G!
+M<@OK%9"#^0]W#XUV`,=&+/[____K0XUV`/\SZ/S___^#Q`2%P'4)QT8L_O__
+M_^LI_S/H_/___XG"@\0$BP`[1@AT"<=&+/S____K#8!Z"`%T!\=&+/[___];
+M7L.04X/L"(M<)!"+0QC_,.C\____@^P$4U#H9`T``(/$&%O#C78`5E.+="0,
+MBUX8#[=3$,'B"8M.$(![$@)U"XU"%#G!<B3K!XGV@_D3=AN+3A2`>Q(!=0J-
+M0A0YP7(+ZQ60@_D3=P^-=@#'1BS^____ZT.-=@#_,^C\____@\0$A<!U"<=&
+M+/[____K*?\SZ/S___^)PH/$!(L`.T8(=`G'1BS\____ZPV`>@@!=`?'1BS^
+M____6U[#D%.#[`B+7"00BT,8_S#H_/___X/L!%-0Z*P,``"#Q!A;PXUV`%93
+MBUPD#(M#&(LP@WL0`W8'@WL4`'D-D,=#+/[____K,XUV`%;H_/___X/$!(7`
+M=0G'0RS^____ZQI6Z/S___^#Q`2+`#M#"'0*QT,L_/___XUV`%M>PY"#[!2+
+M1"08BU`(QX)(`0``C#$'`(F"3`$``,>"4`$```````"-@D@!``!0@\(D4NC\
+M____@\0<PU575E.+7"04BT,8#[8XC02]!````#E#$'(&@WL4`W<<QT,L_O__
+M_^M+QT,L_O___^M"QT,L_/___^LYD+T`````.?US+XUV`(M#&(MTJ`16Z/S_
+M__^#Q`2%P'3-5NC\____@\0$BP`[0PAUQD4Y_7+7C78`6UY?7<.-=@!55U93
+M@^P,BVPD((M%&(LXB?@E``$``(E$)`B!Y_\```"+11S'``````"^`````#G^
+M#X.1````D(M%&/]TL`3H_/___XG#@\0$@WPD"`!T-(-X#`!U'(/L"(!["`1W
+M!;@`````4%/H)=+__X/$$(3`=0J+51R-1@&)`NM,@WPD"`!U.9"#>PP`=2AF
+M]X-(`0``<`AU'8-['/]T(8/L"/]S'(L#_W`$Z/S___^#Q!"%P'0*BU4<C48!
+MB0+K#$8Y_@^"<____XUV`,=%,#!W!P");33'13@`````@^P(C44P4/]U".C\
+M____@\0<6UY?7<-55U93BUPD%(M#&`^V.(T$O00````Y0Q!R!H-[%`-W',=#
+M+/[____K2\=#+/[____K0L=#+/S____K.9"]`````#G]<R^-=@"+0QB+=*@$
+M5NC\____@\0$A<!TS5;H_/___X/$!(L`.T,(=<9%.?URUXUV`%M>7UW#C78`
+M5U93BWPD$(M'&(L`]L3_#Y3"#[;PA-)T0[L`````.?-].HGVBT<8_W28!.C\
+M____@\0$A<!T'8!X"`1V%X.X9`$```!U#H/L#%#HX=7__X/$$(GV0SGS?,N-
+M=@!;7E_#@^P4BT0D&(M0",>"2`$``%Q#!P")@DP!``#'@E`!````````C8)(
+M`0``4(/")%+H_/___X/$',-64XM<)`R+0QB+,(-[$`=W"\=#+/[____K,HGV
+M5NC\____@\0$A<!U"<=#+/[____K&E;H_/___X/$!(L`.T,(=`K'0RS\____
+MC78`6U[#D(/L#(M$)!"+0!B+$(!X!`%U%H/L#%+H_/___XD$).@EU?__@\00
+MB?:#Q`S#@^P4BT0D&(M0",>"2`$``-`H!P")@DP!``#'@E`!````````C8)(
+M`0``4(/")%+H_/___X/$',.+5"0$BT(8BP"#>A`#=@R-!(4$````.4(4<P?'
+M0BS^____PY!55U93@>R<````BZPDL````(M%&(L`B40D#,=$)`0`````OP``
+M``"+11R#P`2)1"0(BS4`````A?9T4I"+7@B%VW1$D(/L"(M3!(U$)!A0_W,(
+M_U(<@\00@'PD(P!T(CEU"'4<BU0D"(DZ@\($B50D"/]$)`2+1"0,.40D!',.
+MD$>+&X7;=;V+-H7V=:^+11R+5"0$B1#'13`P=P<`B6TTQT4X`````(/L"(U%
+M,%#_=0CH_/___X'$K````%M>7UW#C78`4X/L"(M<)!"+0QB*`(-[$`)V"8-[
+M%`!Y#XUV`,=#+/[____K/XUV`(/L"&H`#[;`4.AV6___B<*#Q!"%P'0)BT`$
+M@WA\`'4,QT,L_O___^L3C78`BT(,.T,(=`C'0RS\____D(/$"%O#C78`@^P4
+MBT0D&(M("(N12`$``(E0*,=`,#!W!P")0#3'0#@`````@\`P4%'H_/___X/$
+M',.)]E.#[`B+7"00BT,8BA"`>`(#=2$/MD`$B40D!(/L"(U$)`Q0#[;"4.C@
+M6O__B<&#Q!#K/)"`>`($=2(/MD`!B00D@^P(C40D"%`/ML)0Z)I;__^)P8/$
+M$.L6C78`@^P(:@`/ML)0Z*):__^)P8/$$(M3"(M#*(F"2`$``(M#"(F83`$`
+M`(M#",>`4`$```````#'0R@P<P<`@^P(BT$$4_]Q"/]0?(/$&%O#B?964XMT
+M)`R+7AB+5A"`>P0"=0Z+0QB#P!PYPG(HZP>)]H/Z&W8?BU84@'L$`74.BT,8
+M@\`(.<)R#.L6B?:#^@=W#XUV`,=&+/[____K0XUV`/\SZ/S___^#Q`2%P'4)
+MQT8L_O___^LI_S/H_/___XG"@\0$BP`[1@AT"<=&+/S____K#8!Z"`%T!\=&
+M+/[___];7L.04XM<)`R+1"0(BU`LBTH8N`````"#?"00`'0K@'D$`74+BT(<
+M@\`(B4,(ZPF+0AB#P!R)0PB+01B)`\=#!`$```"X`0```%O#5E.#[`2+3"00
+MBUDLBW,<@'E>`70&@'E*`'0UQT,L`````(I!2H@&A,!T"0^V04F)1@3K!HM!
+M3(E&!(-[(`!T%XM3((M&!(/`"(D"ZPJ-=@#'0RS_____@^P,4>C\____QT,P
+M,'<'`(E;-,=#.`````"#Q`B-0S!0_W,(Z/S___^#Q!1;7L.)]E=64XM\)!"+
+M=QC_-NC\____B<.#[`3_<"#_,.C\____B<*#Q!"%P'4OQT<L_?___\=',#!W
+M!P")?S3'1S@`````@^P(C4<P4/]W".C\____@\00ZVF-=@")>"R)6"C&0%P"
+M@'X$`74(@$A=`NL.B?:`?@0"=0:`2%T$B?:-1@B)0E"*1@>(0DB+1AB)0DR*
+M1Q2#Z`B(0DF$P'0)BT<<@\`(B4)4QT)DI'0'`,=":.QT!P"#[`Q2Z/S___^#
+MQ!!;7E_#B?975E.+?"00BW0D%+N@&```@SV@&```_W0?H:`8```[1@QT$)"#
+MPQ2#._]T#(L#.T8,=?&#._]U%L=&+/[___^#[`Q6_U8H@\00Z:8```#'1BP`
+M````@^P,5O]3!(/$$(-^+`!T#X/L#%;_5BB#Q!#I@````("_A`$#``!UNX-[
+M$`!U9H._*`$```!T%8V'0`$``(M0!(EP!(D&B58$B3+K4XFW*`$``(-["`!T
+M/,>'+`$```$```"+0PR)AS`!``")MS0!``#'AS@!````````@^P,5O]3"/^/
+M+`$``(/$$(._+`$```!U"X/L#%;_4PR#Q!"06UY?PU93@^P$BW0D$(M>"#FS
+M*`$``'4\QX,H`0```````(V#0`$``#F#0`$``'0DBX-``0``BT@$BQ")2@2)
+M$8D`B4`$@^P(4%/HO?[__X/$$(GV@^P,5O]6*(/$%%M>PXUV`%.#[`B+7"00
+MBTPD%(E9"(-Y(`!T"(M1((M!%(D"@^P(45/H@?[__XD<).C\____@\086\.+
+M1"0$BX!8`@``PY!64X/L-(I<)$"+="1$N0````"Z+````(G@C78`B`A`2G7Z
+MB%PD"(#[!W46@WX,`'0-BT8,BX!8`@``B40D#(MV)(#[!G0/@/L$=`J`^P5T
+M!8#["'4.]H9(`0```70%QD0D#`&`^QQU((N&3`$``(N64`$``(E$)`R)5"00
+M9HN&%`(``&:)1"04@/L#=3B#?A``=#*+3A"*05R(1"0,@'E<`'4BBT%(BU%,
+MB40D$(E4)!0/MT%0B40D&(I!7=#H@^`!B$0D#8N&6`(``(E$)`2)X%#H_/__
+M_X/$.%M>PXUV`%=64X/L((MT)#"+7BR+?BB!>PQ"_P``=4.+4QR*1E.(0@]F
+MBT9,9HE""&:+1DYFB4(*9HM&4&:)0@R*1E*(0@YFBT9(9HE"!&:+1DIFB4(&
+M9HM&5&:)0A#K.XGVBU,<BD93B$(*9HM&3(A"!F:+1DZ(0@=FBT90B$((BD92
+MB$()9HM&2(A"!&:+1DJ(0@5FBT94B$(+@'Y>`75AQT,L`````(%[#$+_``!U
+M"8M#&(!X#_)T$H%[#!C_``!U1HM#&(!X"O)U/8/L"(M74(U$)`A0_W=<_U(\
+MBT0D*(/$$/:```$```1T'("@``$``/N#[`Q7Z/S___^#Q!#K!\=#+/____^#
+M[`Q6Z/S____'0S`P=P<`B5LTQT,X`````(/$"(U#,%#_<PCH_/___X/$,%M>
+M7\.05U93@>RX````B[PDR````(MW*(M>6(M64(V$))@```!0_W9<_U(\@\0(
+MBU,$C40D&%#_<PC_4AR-1"0<4(U$)!Q0C40D'%!3Z/-5__\/MH0DO````(/$
+M(/:$))H````"=`8#1"0,ZP0#1"0(@']>`74B@^P$4/]T)`QHL`H``.C\____
+M@\005FH;Z/S___^#Q`CK((/L!%#_="0,:-@*``#H_/___X/$$%9J&NC\____
+M@\0(@^P(_W<LBP:#P%!0Z/S___^)/"3H_/___X'$P````%M>7\.055=64X/L
+M%(M\)"B+;"0L_W<@_S?H_/___XG#@\00A<!U,L=%+/W____'13`P=P<`B6TT
+MQT4X`````(/L"(U%,%#_=0CH_/___X/$$.GK`0``C78`B7@HQD!<`X%]#$+_
+M```/E,`/MO"%]G00BT48@'@/]`^4P`^VP.L.D(M%&(!X"O0/E,`/ML"%P`^$
+MOP```(/L#(L'@\!04.C\____B<>#Q!"%P'04A?9T"(M%&(/`%.M`BT48@\`0
+MZSC'12S_____QT4P,'<'`(EM-,=%.`````"#[`B-13!0_W4(Z/S___^)'"3H
+M_/___X/$$.E)`0``D(/L!&@``@``4%?H_/___X/$"(E[+(!+702)>UC&0U/T
+M9L=#5`$`QT-HY'D'`,=%+`````#'13`P=P<`B6TTQT4X`````(U%,%#_=0CH
+M_/___X/$$.GC````C78`A?9T:(M5&(!Z$@%U#X!+70*+11R#P!2)0UCK$(!Z
+M$@)U"H!+702-0A2)0UB*0@^(0U-FBT((9HE#3&:+0@IFB4-.9HM"#&:)0U"*
+M0@Z(0U)FBT($9HE#2&:+0@9FB4-*9HM"$&:)0U3K;(GVBU48@'H,`74/@$M=
+M`HM%'(/`$(E#6.L0@'H,`G4*@$M=!(U"$(E#6(I""HA#4V8/MD(&9HE#3&8/
+MMD('9HE#3F8/MD((9HE#4(I""8A#4F8/MD($9HE#2&8/MD(%9HE#2F8/MD(+
+M9HE#5(EK+,=#:+!X!P"#[`Q3Z/S___^#Q!"#Q`Q;7E]=PXM$)`BB`````,.)
+M]E.+3"0(BUPD#(M1#(U!##G0=">)P8UV`(V"V/W__X!X"`%U$/:`'`(```%T
+M!X7;=`Y+B?:+$CG1==ZX`````%O#C78`5E.#[!"+="0<BUXL_W,(_U,$@\0(
+M4XL&!;````!0Z/S___^)-"3H_/___X/$%%M>PXUV`(/L#(M4)!"+0BS_"(,X
+M`'4KQT(44'T'`(E2&,="'`````"#[`B-0A10BP*#P"Q0Z/S___^#Q!#K#XUV
+M`(/L#%+H_/___X/$$(/$#,-75E.+3"00BT$HBY!D`0``.4($=0>+>@CK!8GV
+MBWH$A?]T7?:''`(```%T5(MQ+(I97<#K!(/C`X/L#%'H_/___X/$"/]W(/\W
+MZ/S___^)P<'C!(I`78/@SPG8B$%=B7DHQD%<!(EQ+,9!7@#'06B$?0<`B0PD
+MZ/S___^#Q!#K#(/L#%'H*____X/$$%M>7\-64X/L#(MT)!B+7"0@_P/_=B#_
+M-NC\____B<&#Q!"#?"04`1G`@\`"@^`#P>`$BE%=@^+/"<*(45V)<2C&05P$
+MB5DLQD%>`(!^"`1V$X.^9`$```!T"L=!:-!]!P#K")#'06B$?0<`@^P,4>C\
+M____@\0$_S;H_/___X/$%%M>PU575E.#[!B+;"0LC86P````4.C\____B<:#
+MQ!"%P'4@@^P,:#T#``#H_/___X/$!/]T)#3_5"0T@\00ZW>-=@#'``$```"+
+M1"0DB48$BT0D*(E&",=&#`````");A"+70R-10PYV'0EB<>)]HV#V/W__X-X
+M'/]T#X/L!%9J`%#H_/[__X/$$(L;.=]UW_\.@SX`=2"#[`A6C86P````4.C\
+M____@\0$_W0D-/]4)#2#Q!")]H/$#%M>7UW#55=64X/L&(M\)"R+;"0TC8>P
+M````4.C\____B<:#Q!"%P'4<@^P,:%4#``#H_/___XDL)/]4)#2#Q!#K=XUV
+M`,<``0```(M$)"2)1@2);@C'1@P`````B7X0BU\,C4<,.=AT+8V#V/W__X!X
+M"`%U&/:`'`(```%T#X/L!%9J`5#H/_[__X/$$(L;C4<,.=AUT_\.@SX`=1R#
+M[`A6C8>P````4.C\____B2PD_U0D-(/$$(GV@\0,6UY?7<-55U93BVPD%(MT
+M)!B+C5`"``"%R70UB?:+`8M1!#M6#'<B<@4[1@AS&XM!"(M1##M6!'(0=P0[
+M!G8*N`$```#IOP```(M)$(7)=<V+G3`"``"-A3`"```YV'1'B<>-=@"-2_2`
+M>5P`=3,/MT%0N@`````#04@344PY5@1W'W($.09S&8M&"(M6##M13'(.=P4[
+M04AV![@!````ZV>+&SG?=;Z+G3@"``"-A3@"```YV'1,B<>-2_2`>5P`=`>`
+M>5R`=360#[=!4+H``````T%($U%,.58$=R!R!#D&<QJ+1@B+5@P[44QR#W<%
+M.T%(=@BX`0```.L,D(L;.=]UMK@`````6UY?7<-64XMT)`R+7"004U;HY_[_
+M_X/$"(7`="R#>QP`=!^)V8V65`(``(.^5`(```!T#)"+`HU0$(-X$`!U]8D*
+MN/_____K%(N&4`(``(E#$(F>4`(``+@`````6U[#D%575E.+;"04BUPD&(V5
+M4`(``#F=4`(``'0,B?:+`HU0$#E8$'7VBT,0B0+'0Q``````C7L4B[5,`@``
+M.7L4=!B+0Q2+3P2+%HEP!(D&B1&)2@2)>Q2)?P2+10#'0#0!````6UY?7<.0
+M4X/L"(M4)!"+0BC_@"`"``")TX-Z/`!T,HM"/,=`'`````"+0CR)4""+0CS'
+M0"0`````_W(\_W(HZ/S___^#Q`B%P'42BT,\B4,X@^P,4^C\____@\00@\0(
+M6\-55U93BWPD&(M?2(MW3`^W5U"Y``````':$?&+;"04BX50`@``A<!T2HUO
+M#/9'74!T!H-X*`!T-#E'.'0O.4@$=RIR!#D0<R0Y<`QR'W<%.5@(=AB#P!2+
+M4`2):`2)1PR)502)*K@!````ZV&+0!"%P'6Y@W\X`'5/]D==0'5)BVPD%(N%
+M5`(``(7`=#N-;PPY2`1W*W($.1!S)3EP#'(@=P4Y6`AV&8/`%(M0!(EH!(E'
+M#(E5!(DJN`$```#K#I"+0!"%P'7)D+@`````6UY?7<.)]E=64XM\)!"+=RB`
+M?UP`#X6@````5U;H$?___X/$"(7`#X5*`0``@'X(!`^&A````(.^9`$```!T
+M*8N&9`$``(!X9P!U'?9'70AU%X/L#%?H:`<``(/$$(7`#X41`0``BW<H@'X(
+M!'9,]D==!'1&BH9)`0``J"!T/(/@WXB&20$``.C\____B48H@(Y(`0``!(L'
+MQX"(`0,``0```(M..(M>/(G("T9`B=H+5D2)1CB)5CR)]HV.,`(``#F.,`(`
+M`'4FBP?'0#0!````C4<,BY8P`@``B4($B5<,B4@$B88P`@``Z8@```"#?S0`
+M=4*+CC0"``"-6?2#>S0`>1>-1PR+402)002)3PR)4`2)`O]#-.M=D(U'#(V6
+M,`(``(M*!(E"!(E7#(E(!(D!ZT.-=@"#?S0`?B"-1PR-CC`"``"+EC`"``")
+M0@2)5PR)2`2)AC`"``#K&HU'#(V6,`(``(M*!(E"!(E7#(E(!(D!C78`6UY?
+MPU93@^P$BUPD$(MT)!3V@QP"```!=3;&1EX"_X,D`@``C48,C9,X`@``BTH$
+MB4($B58,B4@$B0&#[`Q6Z/S___^X`````(/$$.M?B?:#NR0"````=`N+@T0"
+M```[1C1_1/:#'`(``!AU.XM&-(F#1`(``/^#)`(``(U6#(V#.`(``(M(!(E0
+M!(E&#(E*!(D1@^P,BT,$5O]0(+@`````@\00ZP:0N`$```"#Q`1;7L.0BU0D
+M!(M,)`B#.@!U!XE*!(D*PY"+0@2)2`B)2@3#B?;_="0(BT0D"(/`+%#H_/__
+M_X/$",.-=@!55U93@^P<BT0D,(/`+(E$)!"+5"0P@\(<B50D#(M,)##'030`
+M````ZPV)]H/L#/]P!/\0@\00BT0D$(L0.U`$=1+'0`0`````QP``````ZPR-
+M=@"+0@B+3"00B0&%TG0'QT((`````(G0A=)UOL=$)!0`````BT0D,(M`#(E$
+M)!B+1"0P@\`,.T0D&`^$=0$``(MT)!B![B@"``"#OB`"````=0GVAAP"```@
+M=`C'1"04`0```(V^,`(``.LNB?:#[`A35NA._O__@\00A<!T&XU##(N6,`(`
+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
+MB=@)R'5%@*9(`0``_>M4N`$```"Z``````^EPM/@]L$@=`>)PK@`````]]#W
+MTB-%0"-51(E%0(E51(/L#%7H_/___X/$$.M#C78`BT8X(<B+5CPAVHG1"<%T
+M"(".2`$```*0]H8<`@```70?A>UT&[``@'TP`'83C78`#[;(.72-2'2+0#A%
+M,'?QD%M>7UW#C78`55=64X/L#(ML)""+=0RY`````+L`````#[9&,+H`````
+M@_H`=P:#^`!V()`Y;(Y(=!F#P0&#TP`/MD8PN@`````YVG(&=^4YR'?AN`$`
+M``"Z``````^EPM/@]L$@=`>)PK@`````B<&)TXM&0`G(BU9$"=J)1D")5D16
+MZ/S___^#Q`3VAAP"```!#X4'`0``@WX,`'02@^P,BT8,BT`$5O]0)(/$$.L,
+M@^P,5NC\____@\00N0````"[``````^V1C"Z`````(/Z`'<(@_@`=G2-=@"+
+M5(Y(A=)T4/:"'`(```%T1X!Z"`1V00^VND@!``")^(/@CXB"2`$``#GJ=0V)
+M^(/@C(B"2`$``.L>]H)(`0```705BH)(`0``@^#^@\@"B()(`0``C78`@\$!
+M@],`#[9&,+H`````.=IR!G>3.<AWCX.^9`$````/A)L!``"+AF0!``"#>`0`
+M#X2+`0``@W@(``^$@0$``#EP!'4%BW`(ZPF+AF0!``"+<`2`IAP"``#^@^P,
+M5NC\____@\00Z58!``"]`````(J&2`$``(/@OXB&2`$``*@@=!V#R("(AD@!
+M``#'ADP!````````QX90`0````````^VOD@!``")^(/@_HB&2`$``(M.0(M>
+M1(G(]]")VO?2(T8X(U8\B=$)P74+B?B#X.R(AD@!``"#?@P`='B+?@R`IT@!
+M``#^N0````"[``````^V1S"Z`````(/Z`'<%@_@`=E&+5(](A=)T,/:"'`(`
+M``%T)X!Z"`1V(?:"2`$```%T&(J"2`$``(/(`H/@KHB"2`$``+T!````D(/!
+M`8/3``^V1S"Z`````#G:<@9WLSG(=Z^#OF0!````=36#?@P`=`R+1@R#N&0!
+M````=2.#?AP`>0^#?@P`=!>+1@R#>!P`>`Z#[`AJ`%;H_/___X/$$/:&2`$`
+M``1T#H/L#%;H_/___X/$$.L0A>UT#(/L#%;H_/___X/$$(".20$``""#Q`Q;
+M7E]=PXUV`%575E.#[!2+;"0LBU0D,(T$4@^V1,4A4/]T)"SH_/___XE$)!B#
+MQ!"X`````(-\)`@`#X17`0``BTPD"("A'`(``/Z*11>(@1T"``")SX/')(M%
+M!(E!)(N%Q@```(E'"(J%Q0```(A'$(M$)"B-'$"-7-T`C7,0BE85P.H"@^(!
+MBH<D`0``@^#^"="(AR0!``"+0RF+4RV)AR@!``")ERP!``"+5"0HBX25O0``
+M`(E'!(I#)(A'#0^VR+@!````T^!FB4<.BT8)BU8-BTPD"(E!%(E1&(I#(HA'
+M#+C_____NO____^`?PP_=R4/MD\,N`$```"Z``````^EPM/@]L$@=`>)PK@`
+M````@\#_@]+_B4<<B5<@BT5)B8<P`0``BT5-B8<T`0``BT51B8<X`0``BT55
+MB8<\`0``BT59B8=$`0``BX6=````B8>(`0``BX6A````B8>,`0``BX6E````
+MB8>0`0``BX6I````B8>4`0``C9=(`0``C45=@^P$:D!04NC\____BT0D&(/$
+M$(/$#%M>7UW#D%575E.![#0"``"+A"1(`@``BP")1"0@:@&-5"0L4FH!BXPD
+M5`(``/]Q+/]Q*/]Q).C\____@\0@@7PD(/06>%IU&8/L"&@``@``C40D+%#H
+M_/___X/$$(3`=`VZ_____^DW!P``C78`@^P,C50D+%+H_/___X/$$+K_____
+M@'PD000/AA0'``"`?"1"0'<'@'PD6D!V"KK_____Z?P&```/MT0D1[H`````
+MBXPDS0````G!B4PD$(N,)-$````)T8E,)!2+3"08BU$,B<B#P`PYT`^$X0``
+M`(V"V/W__XE$)!R`>`@$#X:\````@W@,``^%L@```(G!BT`D.T0D)`^%HP``
+M`+,`]H$<`@```70KBT0D$`M!.(M4)!0+43Q24.C\____BTPD)(M1!`^V4@:#
+MQ`@YT'X$LP'K5H!\)#@!=D\/MD0D0XM4)!R+;()(A>UT/O:%'`(```%T-0^W
+M1"1?N@`````+A"35````"Y0DV0````M%.`M5/%)0Z/S___^+500/ME(&@\0(
+M.=!^`K,!A-MT2X/L#/]T)"CH_/___X/$$.L3B?:+$HM$)!B#P`PYT`^%'___
+M_X/L!&H`C4PD*%'_="0DZ)S\__^)1"0L@\00NO____^%P`^$O`4``(ML)!R#
+MQ22*A20!``"(P=#IBE0D18/B`0G*@^(!T>*#X/T)T(B%)`$``(MU%(M]&(!]
+M##]W1@^V30RX`0```+H`````#Z7"T^#VP2!T!XG"N`````"#P/^#TO\C1"00
+M(U0D%(GQ"<&)^PG3ZQN-=@")G4`!``#IF````)"+3"00"?&+7"04"?N)312)
+M71@/MI4D`0``@^(!BD0D1<#H`H/@`3G"=">*E20!``"#XOZ(E20!``"+3"0<
+MBT$$@'@&`'0+B-"#R`*(A20!``"#?"0H``^$4`$``("-)0$```2+G4`!``"%
+MVP^%M0```(M$)!B+4!2#P!0YT'08B<&-6O2+0O0[1"0H#X1C____BQ(YT77J
+M@[U``0````^%@@```(/L#(M$)"2#Z(!0Z/S___^)A4`!``")PX/$$+K_____
+MA<`/A'0$``"Y`````+IH````BX5``0``B`A`2G7ZC5,,BT0D&(/`%(M(!(E0
+M!(E##(E*!(D1BT0D*(D#BT0D+(M4)#")0UR)4V"*1"0TB$-F]D0D-@)T"HN%
+M0`$``,9`%`&`>Q0`=!J+0UR+4V`[5"0P=R)R!CM$)"QW&H![%`!U*8M#7(M3
+M8#M4)#!R"'<;.T0D+',5BT0D+(M4)#")0UR)4V"*1"0TB$-F]D0D-@1T#X-[
+M"`!U%HM4)!R)4PCK#8-[!`!U!XM,)!R)2P2+0P0[0PAU$L=#!`````"Z____
+M_^F5`P``D(M%!#N$)-T```!T'8"-)`$```+'A2@!````````QX4L`0``````
+M`.LOBX4H`0``BY4L`0``.U0D37(==P8[1"1)=A6+1"1)BU0D38F%*`$``(F5
+M+`$``)#V1"0V`70+BT0D'("('`(```**7"1#@'PD.`$/AB0"```/ML.+;(4D
+MA>UU,X/L!&H!C50D*%+_="0DZ,GY__^)Q8/$$+K_____A<`/A.L"``"+3"0<
+MB4@,#[;#B6R!2/9$)#8!=`>`C1P"```"BI5(`0``B-'0Z8I$)%V#X`$)R(/@
+M`='@@^+]"<*(E4@!```/MTPD7[L`````BX0DU0````G(BY0DV0````G:B<:)
+MUX!],#]W/0^V13")1"0,N`$```"Z`````(I,)`P/I<+3X/;!('0'B<*X````
+M`(G!B=.#P?^#T_^)\"'(B?HAVHG&B=>+13@)\(M5/`GZB44XB54\#[:52`$`
+M`(/B`8I$)%W`Z`*#X`$YPG0CBI5(`0``@^+^B)5(`0``BT4$@'@&`'0+B-"#
+MR`*(A4@!``"*7"1;#[;#NO____^#?(5(``^%YP$```^VPXN4)$`"``")5(5(
+MB6H,BT4H.X0DX0```'0=@(U(`0```L>%3`$```````#'A5`!````````ZRZ+
+MA4P!``"+E5`!```[5"1E<AQW!CM$)&%V%(M$)&&+5"1EB85,`0``B950`0``
+MN`$```"Z`````(C9#Z7"T^#VPR!T!XG"N`````#WT/?2(T5`(U5$B45`B55$
+M5>C\____@\0$]H5(`0``$'09QX5,`0```````,>%4`$```````#IRP```(J%
+M2`$``*@@#X2]````@\B`B(5(`0``QX5,`0```````,>%4`$```````#IFP``
+M``^VRXN4)$`"``"+1"0<B52(2(E"#+@!````N@`````/I<+3X/;!('0'B<*X
+M`````/?0]]*+3"0<(T%`(U%$B4%`B5%$4>C\____@\0$BT0D'/:`2`$``!!T
+M%L>`3`$```````#'@%`!````````ZRN+5"0<BH)(`0``J"!T'8/(@(B"2`$`
+M`,>"3`$```````#'@E`!````````BTPD'/:!'`(```%T1X.Y9`$```!T/HN!
+M9`$``(-X!`!T,H-X"`!T+#E(!'4)BT`(B40D'.L1BU0D'(N"9`$``(M`!(E$
+M)!S_="0<Z/S___^#Q`20N@````"-=@")T('$+`(``%M>7UW#C78`4XM<)`B+
+M4PRQ`(!Z,`!V#P^VP3E<@DAT"T$X2C!W\;C_````6\.)]E575E.![`P"``"+
+MK"0@`@``OP````")YHM%)/:`'`(```$/A)4"``"+70R%VW0+@WL,`'0%B=^+
+M6PRY`````+H``@``B?")]H@(0$IU^L<&]!9X6K@`````A=MT`XM#)(E&!+@`
+M````A=MT`XM#+(F&Q@```/:%'`(```)T!(!.%@&P`(7;=`B#_P$9P(/``HA&
+M&(7;#X1=`0``@[MD`0```'0]BXMD`0``BP&)1@B+05R+46")1@R)5A"*012#
+MX`'1X(I6%H/B_0G"B%86.5D(=0B(T(/(!(A&%HI!9HA&%(I#-(B&Q0```(J#
+M'0(``(A&%XM#%(M3&(E&&8E6'8I#"(A&(8I#,(A&(HGXA?]U`HGH4.B__O__
+MB$8CBD,QB$8D#[:#2`$``(/@`<'@`HI6)8/B^PG"B%8E@\0$]H-(`0```G0(
+MB-"#R`&(1B6+0SB+4SR)AJT```")EK$```!FBT,X9HE&)XN#3`$``(N34`$`
+M`(E&*8E6+8M#*(F&O0```(N#5`$``(E&28N#6`$``(E&38N#7`$``(E&48N#
+M8`$``(E&58N#:`$``(E&68N#K`$``(F&G0```(N#L`$``(F&H0```(N#M`$`
+M`(F&I0```(N#N`$``(F&J0```(U678V#;`$``(/L!&I`4%+H_/___X/$$(7_
+M#X2(````BT<4BU<8B48QB58UBD<(B$8YBD<PB$8Z5>BZ_?__B$8[BD<QB$8\
+M#[:'2`$``(/@`<'@`HI6/8/B^PG"B%8]@\0$]H=(`0```G0(B-"#R`&(1CV+
+M1SB+5SR)AK4```")EKD```!FBT<X9HE&/XN'3`$``(N74`$``(E&08E618M'
+M*(F&P0```(/L#%;H_/___X/$"&@``@``5NC\____]]B(1A6#Q`AJ`%9J`?]U
+M+/]U*/]U).C\____@\0@@<0,`@``6UY?7<-3@^P4BUPD'%/H*OW__XM#)(/$
+M$/9`3!!T#H/L#%#H_/___X/$$(GV@\0(6\.-=@!64X/L!(MT)!"`?@@$=@>`
+MID@!``#[]H8<`@```71M@'X(!'9:NP````"`?C``=%R#?)Y(`'0]BTR>2(J6
+M'`(``(/B`HJ!'`(``(/@_0G0B($<`@``BU2>2(!Z"`1V!HI&-(A"-(/L#/]T
+MGDCH_/___X/$$$,/MD8P.=A_L^L-@^P,5NA(____@\00D(/$!%M>PXGV5U93
+MBUPD$(-[#`!T#(UV`(M;#(-[#`!U]^C\____B4,DB[MD`0``A?]T-CE?!'4(
+MBW<(ZP:-=@"+=P3H_/___XD'A?9T&XGVZ/S___^)1B0[0R1T\X/L#%;H_/__
+M_X/$$(/L#%/H_/___XM#!(/$$(-X/`!T"H/L#%/_4#R#Q!!;7E_#5U93BWPD
+M$(M$)!2+<"2%]G1?BT84A<!T4HG!@W@,`'1*C78`BTD,.?EU";@!````ZT2)
+M]KH`````@'DP`'0F#[99,)"+1)%(A<!T%(!X"`1V#CGX=0JX`0```.L9C78`
+M0CG3?]^#>0P`=;F+-H7V=:&X`````%M>7\.)]E575E.#[!R+?"0P#[9',(M7
+M!`^V4@8IT)E24/]W&/]W%.C\____@\00B40D$(E4)!3'1"0(_____\=$)`S_
+M____O0````"+!XMP#(/`##GP='&)]HV>V/W___:#'`(```%T58!["`%U3_9#
+M3`1T25-7Z`[___^#Q`B$P'4[BT0D%#E#+'(R=PF+1"00.4,H<B>+5"0,.5,L
+M=QYR"8M4)`@Y4RAS$XM#*(M3+(E$)`B)5"0,B=V-=@"+-HL'@\`,.?!UD;@`
+M````A>UT0/:'20$```)U%6H`_W0D&/]T)!A5Z/S___^#Q!#K(HM%)(7`=`^-
+M=@"#>!0`=0J+`(7`=?2)Z.L(N`````"-=@"#Q!Q;7E]=PU575E.#[`R+="0@
+MOP````"`?C``#X0%`0``B?:#?+Y(`'01BT2^2/:`'`(```$/A=X```"+;"0D
+MA>UU&(/L#%;HI_[__X/$$(G%A<`/A+D```")]HEU#(-\OD@`=`N+1+Y(QT`,
+M`````(ELODB*ED@!``"(T(/("HB&2`$``,>&3`$```````#'AE`!````````
+MJ"!T"XC0@\B*B(9(`0``N`$```"Z`````(GY#Z7"T^#VP2!T!XG"N`````")
+M!"2)5"0$BP0D"T8XBU0D!`M6/(E&.(E6/(L$)/?0BU0D!/?2(T9`(U9$B49`
+MB59$@WPD)`!U#H/L"%5J!^C\____@\00@(Y(`0``!(-\)"0`=0U'#[9&,#GX
+M#X_]_O__]H9(`0``"'0,@^P,5NC\____@\00@\0,6UY?7<-64X/L!(M<)!"+
+M="045E/H(/W__X/$"+K_____A,!U:0^V0S"+4P0/ME(&*="94E#_<QC_<Q3H
+M_/___X/$$/:#20$```)U)6H`4E!6Z/S___^#Q!"Z_____X7`="R#[`A04^C\
+M____@\00B?;V@T@!```$=`^#[`Q3Z/S___^#Q!"-=@"Z`````(G0@\0$6U[#
+MC78`55=64X/L#(M\)"`/MD<(@^@%@_@%#X<-`@``_R2%*",``(GVO0````"^
+M`````(!_,`!T18M<MTB%VW0T@'L(!'8N@^P,4^C\____@\00]H-(`0``!'0'
+M@(](`0``!(J#2`$``(/@`SP"=06]`0```$8/MD<P.?!_NX7M#X2G`0``@*=(
+M`0``_KX`````@'\P``^$D0$``)"+7+=(A=MT,(!["`1V*O:#2`$```%T(8J#
+M2`$``(/@OH/(`HB#2`$``(/L#%/H_/___X/$$(UV`$8/MD<P.?!_O^E*`0``
+MB?8/MT<RN@````"#P/^#TO_WT/?2(X=,`0``(Y=0`0``B8=,`0``B9=0`0``
+M]H<<`@```70DBT=`BU]$B<+WTHG9]]$C5S@C3SR)R`G0=`J`CT@!```"C78`
+MBT=$"T=`=0B+1SP+1SAT.X!_"`IU+@^V3S!)N`$```"Z``````^EPM/@]L$@
+M=`>)PK@`````BT\\,=$S1S@)P70)B?:`IT@!``#^BT=$"T=`=`>`CTD!```@
+MBT=$"T=`="KVAQP"```!="&#?PP`=`R+1PSV@!P"```!=`^#[`AJ`%?H_/__
+M_X/$$)#VAQP"```!=%OVATD!```$=5+VAT@!```#=$F+=SB+;SR)Z`GP=!B+
+M1T"+7T2)PO?2B=GWT2'R(>F)R`G0="6#?PP`=`R+1PSV@!P"```!=!.`CT@!
+M```(@^P,5^C\____@\00@W\,`'46]H=(`0``!'0-@^P,5^C\____@\00D(/$
+M#%M>7UW#5U93@^P(BUPD&(MT)!R+?"0@@'L(!`^&B````,<$)`````#'1"0$
+M`0```+@`````@'LP`'03#[9+,(GVBU2#2(72=45`.<%_\XM3!(!Z!0!T(@^V
+M0S`/ME(&*=`/KT0D!(E$)`0/MT,R.P0D=@:)!"2-=@"%]G0%BP0DB0:%_W0W
+MBT0D!(D'ZR^#[`2-1"0(4(U$)`A04NC\____@\00ZZB-=@"%]G0&QP8`````
+MA?]T!L<'`0```(/$"%M>7\.04X/L$(M<)!B-1"0,4(U$)`Q0_W,$Z/S___^-
+M1"004(U$)!!0_W,(Z/S___^#Q!B+1"0,.T0D!`^70Q2+1"0(.P0D<P.+!"0/
+MKT0D#&:)0V1FA<!U!F;'0V2``(/$$%O#4X/L"(M4)!"+6@2+0@B%VW0+A<!U
+M&H"C'`(``/Z%P'0'@*`<`@``_L9"9P'K5HGV]H,<`@```70)]H`<`@```74;
+M@*`<`@``_H"C'`(``/['0QS_____QD)G`>LGQD)G`("+20$```2`B$D!```$
+M4NC\____@^P(4^C\____@\00C78`@\0(6\.-=@!55U93@^P$BW0D&(ML)!R*
+M1@@Z10AU#6:+13!F.48P=`V-=@"X`0```.F^````QP0D`````(!^,``/A*4`
+M``"+!"2+3(9(BU2%2(7)='^%TG1[@'D(!'8F@'H(!'8:@^P(4E'H_/___X/$
+M$(3`=&6X`0```.MVB?:`>0@$=TB`>@@$=T*+020[0B1U,XMY,(M:,(M'!(M7
+M"(M+"#'1,T,$"<%U&XM'#(M7$#M3$'<0<@4[0PQW"?:&2`$```-T%;@!````
+MZR:X`0```.L?N`$```#K&/\$)`^V1C`[!"0/CUO___^X`````(UV`(/$!%M>
+M7UW#5E.#[`2+="00BUX,C48,.=AT/I"-@]C]__^`>`@$=BCV@$@!```$=!^#
+M>`P`=`J0BT`,@W@,`'7W@^P,4.C\____@\00C78`BQN-1@PYV'7#@\0$6U[#
+MD*$`````A<!Y!P7_#P``B?;!^`S#PXUV`(M,)`2+5"0(BX'\````B4(,B9'\
+M````PX/L#(M4)!"+3"04@[H``0```'4PBX+L````.P%R%H/L#/]Q"/]1!+@`
+M````@\00ZS.-=@")B@0!``")B@`!``#K$8GVBX($`0``B4@0B8H$`0``@^P,
+M4NC\____N`$```"#Q!"#Q`S#@^P4_W0D'(M$)!P%Y````%#H_/___X/$',.)
+M]K@`````PXGV@^P,_W0D'/]T)!S_="0<BT0D'`7D````4.C\____@\0<PXGV
+M5U93BWPD$,>'%`$```````"+MP`!``"%]G1]D(N'[````#L&<CXYMP0!``!U
+M%L>'!`$```````#'AP`!````````ZPF+1A")AP`!``#'1A``````@^P,_W8(
+M_U8$@\00ZRR)]HN?_````(7;=!:)]H/L"/\V_S/_4P2#Q!"+6PR%VW7LBX?L
+M````.P9R-HNW``$``(7V=82!O^P```!_`0``=R"+G_P```"%VW06B?:#[`AJ
+M`/\S_U,$@\00BUL,A=MU[%M>7\-3@^P(BUPD$(.[%`$```!U.\>#"`$``!RH
+M!P")FPP!``#'@Q`!````````@^P(C8,(`0``4(U#+%#H_/___\>#%`$```$`
+M``"#Q!"0@\0(6\.-=@!64X/L!(MT)!"+GOP```"%VW05D(/L"&K__S/_4P2#
+MQ!"+6PR%VW7L@WXL``^5P`^VP(/$!%M>PXM$)`3V0!4$=`2`2!0$]D`5`70$
+M@$@4`?9`)01T!(!()`3V0"4!=`2`2"0!PXUV`(M$)`3V0"8$=`2`2"4$]D`F
+M`70$@$@E`?9`/@1T!(!(/03V0#X!=`2`2#T!PY"0D(/L#(M4)!"`HAP"``#^
+M@WH,`'00@^P,BT(,BT`$4O]0)(/$$(/$#,-3@^P0BU0D&(M:+(I"7HA#7E+_
+M<P3H_/___XM#!/]("(D<).C\____@\086\.-=@"#[`R+1"00BU`LN`````"#
+M>F0`=!.#[`3_="0<_W0D'%+_4F2#Q!"0@\0,PU=64XMT)!"+?BB+1@3_0`B#
+M[`S_=@3H_/___XG#BP:)`XM&!(E#!(M&-(E#-(/$$(I&78A#7<=#:/BI!P")
+M<RR+1R2)0RB*1ER(0UR`?EP`=2J+3S"+1DB+5DP#000340B)0TB)4TQFBT90
+M9HE#4(M&8(E#8,=#9"BJ!P"#[`Q3Z/S___^#Q!!;7E_#@^P8:"`=``#H_/__
+M_[@`````@\0<PY"0@^P4:(`=``#_="0<Z/S___]J`6@@`0``_W0D+%#H_/__
+M_X/$+,.)]E.#[!!H@!T``/]T)!SH_/___XG#B00DZ/S___^)0QB#Q!A;PX/L
+M%&B`'0``_W0D'.C\____@\0(_W`84.C\____@\0<PXUV`%575E.#[!2+1"0H
+MBWPD,(M0*(M2#(E4)!"+6"R+<R2+4V")5"0,BE`PB%0D"FB`'0``_S#H_/__
+M_XM0&(/$$(-\)`0`=`^*0UV#X`%F#[;`9CGX=22)5"0$@WMD`'00@^P$5U)3
+M_U-D@\00A<!U"K@`````Z:8````/MUX,P>,)BD8(B$0D`Y"+5"0$BW((BWH,
+MBRJ)V3GK=@*)Z8I$)`(X1"0#=1J+5"0DB0K'0@0`````B7((B7H,@\(0B50D
+M)"G-N@`````!SA'7*<MU)OY$)`.*1"0#BU0D"#I",'4(QD0D`P"-=@"+5"0(
+M#[=",HG#P>,)A>UUFXM$)`2#>`0`=0R#P!")1"0$Z7G___^+5"0DQT+T`0``
+M`+@!````@\0,6UY?7<.05U93BWPD$(M?+(MS)(M/,+@!````N@`````/I<+3
+MX/;!('0'B<*X`````/?0]](C1A0C5AB)1A2)5AB`?UX!=`:*1UZ(0UZ#[`A7
+M_W,$Z/S___^+0P3_2`B#Q!"+1A@+1A1U%H![7@!U!,9#7@&#[`Q3Z/S___^#
+MQ!!;7E_#B?955U93@^P4BT0D+(I<)"B+4"B)5"0,BT@DBS&+>01FBVD0.%D(
+M=1$/MT$.N@`````!QA'7ZR&)]CA9"'8:BT0D#`^W0#*)!"3'1"0$``````,T
+M)!-\)`0X60AU!&8#:0PX60EU!V8#:0J-=@"`>1P`=`XX60AS)3A9"7<6ZQZ)
+M]CA9"',(BT0D#&8#:#(X60EV"HM4)`QF`VHRB?:+1"0P9HEH4(EP2(EX3(/$
+M%%M>7UW#B?955U:#[""+="0PBT0D-(M02(M(3(E4)!B)3"0<9HMH4(MX),=$
+M)`P`````#[9.,8M$)!B+5"0<#ZW0T^KVP2!T!XG0N@````")1"00B50D%&;'
+M1Q```,9''`$/MD8PN@````!24/]T)!S_="0<Z/S___^#Q!`/MDXQ#Z7"T^#V
+MP2!T!XG"N`````")!XE7!`^V1C"Z`````%)0_W0D'/]T)!SH_/___X/$$(A'
+M"(C!9HM&,D@C1"089HE'#F:+5C)F*<+'1Q0`````QT<8`````&8YZG(+9HEO
+M#+T`````ZV-FB5<,9BG5QT0D#`$```"X`0```+H`````#Z7"T^#VP2!T!XG"
+MN``````+1Q0+5QB)1Q2)5QA!.$XP=1NQ`(!_'`!T!\9''`#K#9!FBT<09@-&
+M,F:)1Q!F.6XR<P9F*VXRZZRX`0```+H`````#Z7"T^#VP2!T!XG"N``````+
+M1Q0+5QB)1Q2)5QB(3PEFB6\*BT0D#(/$(%Y?7<.-=@!55U93@^P,BT0D((M`
+M*(E$)`B+5"0@BU(DB50D!(M,)""`>5P$#X7A````QT(4`````,="&`````"]
+M`````(!X,``/AM`!``")Z`^V^(M4)`B+=+I(A?8/A)<```#VAAP"```!#X2*
+M````N`$```"Z`````(GY#Z7"T^#VP2!T!XG"N`````"+3"0$"T$4"U$8B4$4
+MB5$8BU0D((M"!/]`"(/L#/]R!.C\____B<.+3"0PBP&)`XM!!(E#!(M!-(E#
+M-(ES*,9#7`2*45V#XC"*0UV#X,\)T(A#7<=#:)"L!P")2RR)>S")'"3H_/__
+M_X/$$(GV18GHBU0D"#A",`^'1/___^D/`0``C78`@^P(_W0D*/]T)!3H9/W_
+M_XE$)!"#Q!"+3"0$BT$8"T$4=1F+1"0@QD!>`H/L#%#H_/___X/$$.G0````
+MO0````"+5"0(@'HP``^&O0```)")Z0^V^;@!````N@````")^0^EPM/@]L$@
+M=`>)PK@`````BTPD!"-!%"-1&(G1"<%T>HM$)`B+=+A(BU0D((M"!/]`"(/L
+M#/]R!.C\____B<.+3"0PBP&)`XM!!(E#!(M!-(E#-(/$$(ES*(I!78A#7<=#
+M:)"L!P#'0V1HJP<`B4LLB7LP4U%7Z./[__^#Q`R#/"0`=0J+5"0@BT)@B4-@
+M@^P,4^C\____@\0018GIBT0D"#A(,`^'1/___X/$#%M>7UW#@^P8:(`=``#H
+M_/___[@`````@\0<PY"05E.#[`2+3"04BW0D&(M$)!"+6"R+4V"%TG0-BD-=
+M@^`!#[;`.?!U)(-[9`!T%8/L!%914_]39(/$$+H!````A<!U,KH`````ZRN)
+M]HL"B0&+0@2)002+0@B)00B+0@R)00R#P1"-0@2#PA"#.`!TW+H!````B="#
+MQ`1;7L.-=@!55U93@^P<O@````"_`````+T`````BT0D,(!X,`!T6P^V4#")
+M5"04BTPD,(M$L4B%P'0)]H`<`@```74WN`$```"Z`````(GQ#Z7"T^#VP2!T
+M!XG"N`````")1"0(B50D#(M$)`@)^(M4)`P)ZHG'B=6)]D8Y="04=ZV+3"0P
+MBU%$,>J+04`Q^`G"=!.)>4"):42#[`Q1Z/S___^#Q!"0@\0<6UY?7<-64X/L
+M$(M<)!R+<RP/MT-04/]S3/]S2(![7@$/E,`/ML!0_W,HZ/S___^#Q""`?EP`
+M=0G&1EX!ZPF-=@"*0UZ(1EZ#[`A3_W8$Z/S___^+1@3_2`B)-"3H_/___X/$
+M%%M>PXGV55=64X/L#(M\)""+7RR+4RB+<R2`?UP$=1:`?UX!#X2J`0``BD=>
+MB$->Z9\!``"0@']>`0^$`@$``/9#70(/A(@```"`>U\`#X5Z`0``BT(\"T(X
+M#X5N`0``BT)$"T)`#X5B`0``QD-?`8-_,``/E,`/MLB)3S"+1(I(A<!T.8E'
+M*+@!````N@`````/I<+3X/;!('0'B<*X`````(D&B58$QD=>`(/L#%?H_/__
+M_X/$$.EU`0``D(-_,``/E,`/ML")1S#I_@```(GV]D-=!`^$\@```(!_7@)T
+M%<9'7@"#[`Q7Z/S___^#Q!#I.P$``(/L#%+H^OW__X/$$(![7@$/A,<```"+
+M3S"X`0```+H`````#Z7"T^#VP2!T!XG"N`````"+3@0QT3,&"<$/A)0```#I
+ME0```(UV`(![7P`/A((````/MF]=]\4"````=':#?S``#Y3`#[;(B4\PBT2*
+M2(7`=%'V@!P"```!=$B)1RB)Z(/@_8/(!(A'7;@!````N@`````/I<+3X/;!
+M('0'B<*X`````(D&B58$QT=HI+('`,9'7@"#[`Q7Z/S___^#Q!#K=9"#?S``
+M#Y3`#[;`B4<PC78`BD=>B$->BT\PN`$```"Z``````^EPM/@]L$@=`>)PK@`
+M````]]#WTB,&(U8$B0:)5@2#[`A7_W,$Z/S___^+0P3_2`B#Q!"+1@0+!G46
+M@'M>`'4$QD->`8/L#%/H_/___X/$$(/$#%M>7UW#55=64X/L'(M$)#"+>"B+
+M4"2)5"08QT((`````(!X7`%U$H/L#%#H30@``(/$$.E\`P``D(M,)#"`>5P$
+M#X7B````BUPD&,<#`````,=#!`````"^`````(!_,``/ADT#``")]HGP#[;H
+MBURO2(7;#X2;````]H,<`@```0^$C@```+@!````N@````")Z0^EPM/@]L$@
+M=`>)PK@`````BTPD&`L!"U$$B0&)402+5"0PBT($_T`(@^P,_W($Z/S___^)
+MP8M4)$"+`HD!BT($B4$$BT(TB4$T@\0$B5DHQD%<!(M<)#R*4UV#XC"*05V#
+MX,\)T(A!7<=!:`BS!P")62R):3!1Z/S___^#Q!"-=@!&B?`X1S`/ATC____I
+MC@(``(UV`(M'1`M'0`^%U````(M'/`M'.`^%R````(M4)##V0ET"#X2Z````
+MBT=(]H`<`@```0^$J@```(M73/:"'`(```$/A)H```"`>`@$=0.+0"2`>@@$
+M=0.+4B2`>`@!=6Z`>@@!=6B+7"0PBTM(B<LK6D"+L"`"``"+DB`"```K2$!Y
+M`O?9A=MY`O?;.=E](+T`````A=(/A;(```"#_@4/AJD```"]`0```.F?````
+MO0````"%]G4)@_H%#X>-````O0$```#I@P```(UV`(M7$(,Z``^4P(G%#[;`
+MB0+K;HGVO0````"`?S``=F&+5T")5"04BT\XB4PD$(M?1(E<)`R+=SR)="0(
+MD(GH#[;PN`$```")\=/@B<&)P\'['XM$)!`+1"04BU0D"`M4)`PAP2'3B=@)
+MR'4-BT2W2/:`'`(```%U"$6)ZCA7,'>\BTPD&,<!`````,=!!`````"^````
+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
+MD`4``/]U$HL$)#E"!'4*.7H(=04Y>@QT"K@`````ZPZ-=@!#.%D2=\*X`0``
+M`(7`=%*+1"0<BU`$.<)T1XV^D`D``(V*</;__XN"</;__SL&=2B+60R+20@[
+M7@QW&7(%.TX(<Q*+`HEX!(F&D`D``(E7!(DZZR2)U8GVBU($.U0D''6_C8:0
+M"0``BU4$B44$B:Z0"0``B5`$B0*#Q`1;7E]=PXM,)`2*D;$)```/ML*-!(#!
+MX`2-A`BT"0``0HB1L0D``(D(QD`%`,9`!@#&0`<`PU=64XM\)!"+="04NP``
+M``#K$XGV@^P(_W2>&%?H8_W__X/$$$,/ME82@'X2!'81C4+]T?B-!`(YV'_9
+MZPJ-=@"-0@$YV'_-QT8$`````(/L"%:-1SQ0Z/S___^#Q!!;7E_#B?955U93
+M@^P8BWPD,(MT)#R)^(A$)!>)\XM$)"R#P#Q0Z/S___^)Q8V`D`D``(F%D`D`
+M`(F%E`D``(/$$(M4)""+`HF%K`D``(M$)"B+5"0LB44(B54,9HEU$(GXB$42
+MQH7XA@```,>%[(4```````#'A?"%````````QD45`&;!ZP,/M_N%_W4$9K\!
+M`,>%_(8```````"^`````(!\)`L`=$N[``````^V5"0+B50D!(GPP>`$NA``
+M``"-A"B0`0``C78`B!A`2G7ZB?#!X`2Y`````+H0````C80HD`4``(@(0$IU
+M^D8Y="0$?\.^``````^V5"0+C4+]T?B-!`*)!"2-6@'K')"#[`A7_W0D+.C#
+M^___B42U&`&]_(8``(/$$$:`?"0+!'8'.30D?]GK!#GS?].)Z(/$#%M>7UW#
+MD%575E.#[`R+7"0DBWPD*(ML)"R+1"0P9HE$)`J+4Q`/MDLQB?C3Z"7_`P``
+MBQ*-!(*)1"0$BS"%]@^$DP```)"+5@PQZHM&"#'X"<)U=H"^^(8```%U)L:&
+M^(8```"-AI`)``"+2`2+EI`)``")2@2)$8F&D`D``(E`!.LW@+[XA@```W4N
+MQH;XA@```(M4)"#_BM````"-AI`)``"+2`2+EI`)``")2@2)$8F&D`D``(E`
+M!/Z&^88``(GPZ?,```"-=@"+MIP)``"%]@^%;O___X/L#`^W1"064%57#[9#
+M,%#_="0\Z-7]__^)QHD8QX`0AP```````(M#)(E&!(/$((-[#`!T+L9&%`"+
+M0PR)P8!X,`!T(Y`/OD84.5R!2'08_D84#[Y6%(M+#`^V03`YPGSDZP3&1A3_
+MBTPD!(L!B8:<"0``A<!T#HL1C8:<"0``B8*8"0``BT0D!(F&F`D``(DPBD,P
+MB$822(A$)`.(1A.`>P@(=3,/MDLQ#ZWOT^WVP2!T!XGOO0`````/MD,PN@``
+M``!24%57Z/S___^#Q!"*3"0#*,&(3A/&AOF&```!B?"#Q`Q;7E]=PU575E.#
+M["R+1"1$BT`DB40D*(M,)$2*45V(T-#H@_`!B<&#X0&)3"0DQT0D'`````"+
+M1"1$@WA@`'0%]L(!=#&#[`R+1"1,@\!L4.C\____B40D+(E$)#"#Q`QJ`?]T
+M)"3_="10BU0D5/]29(/$$.L+BTPD1(M)8(E,)""+1"0@BRC'1"00`````,9$
+M)!H`BU0D*("ZH@`````/AD8!```/ME0D&HM,)"@/MH11I````(T$0(M$P22)
+M1"04BI11I0```(A4)!L/ML*+3"049HN4@?2%``!FBX2!]H4``&:)1"0.B=!F
+MP>@##[?`B40D"(/B!V:)5"0,#[?"B<+!X@FX"````&8K1"0,9HE$)`QFBT0D
+M#F8Y1"0,=@5FB40D#`^W1"0,B<;!Y@D/MD0D&XM,)!2+1($8B=>+3"0(`WR(
+M!(UV`#EL)!!U%H-$)"`0BT0D((LHQT0D$`````"-=@")ZRM<)!`Y\W8"B?.+
+M5"0@BT((@WPD)`!T%@-$)!"#[`134%?H_/___X/$$.L4B?8#1"00@^P$4U=0
+MZ/S___^#Q!`!7"00*=YT!`'?ZY:+3"0,9BE,)`YT%?]$)`BZ`````&;'1"0,
+M"`#I0?____Y$)!J*1"0:BU0D*#B"H@````^'NO[__X-\)!P`=!>#[`C_="0D
+MBT0D3(/`;%#H_/___X/$$(/L!&H`_W0D3(M,)$S_,?]4)%B#Q#Q;7E]=PY!6
+M4X/L!(M4)!"+<BR+7B2`>EX!=`:*0EZ(1EZ#[`A2_W8$Z/S___^+1@3_2`B#
+MQ!"*@Z$```!`B(.A````.H.@````=3>`?EX`=03&1EX!BD9>B$0D`X7V="*)
+M]HM&)(M8%(I$)`.(1EZ#[`Q6Z/S___^)WH/$$(7;=>&0@\0$6U[#B?955U93
+M@^P,BVPD((M%$(MP",=`"`````"+1B2)1"0(QH"A`````,:`H`````"_````
+M`(!],`!T=8M<O4B%VW1D]H,<`@```71;BT8$_T`(@^P,_W8$Z/S___^+%HD0
+MBU8$B5`$BU8TB5`T@\0$B5@HQD!<!(I.78/A,(I078/BSPG*B%!=QT!HH,@'
+M`(EP+(M4)!3^@J````!0Z/S___^#Q!")]D</MD4P.?AWBX/$#%M>7UW#C78`
+M55=64X/L#(ML)""+="0D@[[PA0```'1@B?.X`````'0WBX;PA0``BT`DBT@4
+M.8[PA0``=0_'AO"%````````ZQ6-=@"+@_"%``"+4"2+022+0!2)0A2)R(/L
+M#%#HTW@``(/$$(7`#X0<`0``@[[PA0```'6LC78`@+[YA@````^%`P$``(.^
+M$(<```!T"L>&$(<```````")][$`@'X2`'9!B?8/ML'!X`0!^(V0D`$``+L`
+M````@[B0`0```'44@WH$`'4.@WH(`'4(@WH,`'0'B?:[`0```(7;=3Q!.$\2
+M=\&X`````(7`=#3&AOB&```#BY:4"0``BX:0"0``B5`$B0*-10Q05N@.]___
+M_X70````@\0(ZS:X`0```.O(QH;XA@```8V6D`D``(M*!(N&D`D``(E(!(D!
+MC44$BT@$B5`$B8:0"0``B4H$B1&+%HM"$(-X"`!T+H/L#%+H55L``(/$$(7`
+M=!"#[`C_-E7H=U$``(/$$.L.@^P,_S;HQ/W__X/$$)"#Q`Q;7E]=PU.#[!"+
+M1"0<QH#XA@```(V0D`D``(M:!(N(D`D``(E9!(D+B9"0"0``B5($QX#LA0``
+M`````/Z(^88``%#_="0<Z"K^__^#Q!A;PY!55U93@^P4BVPD+&A`'@``_W0D
+M+.C\____B<>+=22#Q!"#?"0H`'0$QD5>"[L`````@+Z>`````'0AB?:-!%N#
+M[`C_=,8D5^AH____@\000P^VAIX````YV'_A@^P,5>C,6P``@\0<6UY?7<.#
+M[!2+1"08QD`5`,>``(<``&#,!P")@`2'``#'@`B'````````C9``AP``4O^P
+MK`D``.C\____@\0<PY!55U93@^PTBW0D2(N&K`D``(E$)"QH0!X``%#H_/__
+M_XE$)#"++HM%$(N6[(4``(E4)"S_2`2#Q!"#>`0`=0>`I1P"``#?@[X,AP``
+M`'0=@+[VA@```744@^P,5N@K&0``@\00Z9X$``"-=@"#?"0<``^$)00``(M,
+M)!R+222)3"08@+ZS"0```'1A@+[VA@```74RB?>S`(!^$@!V/;D`````#[;#
+MP>`$NA````"-A#B0`0``C78`B`A`2G7Z0SA?$G??ZQ6`OO:&```"=0R#[`Q5
+MZ"QZ``"#Q!"#[`Q6Z*@8``"#Q!#I&P0``("^]H8``!!U/XM$)!R`>%P`=!"`
+M>%P!#X5/`@``@'A2`G4EBTPD'(I17XU"`8A!7X#Z`G<3@^P,5NAB&```@\00
+MZ=4#``")]HM$)!R`>%P!#X46`@``#[=&$+H``````T8($U8,B40D$(E4)!2+
+M5"0<@'I2`@^%L````("^]H8```$/A:P````/MT80P>`)4`^V1A/_=(88Z"OS
+M__^#Q`B%P`^%@P```,:&]H8```R`C4@!```"@'T("G4L#[9-,$FX`0```+H`
+M````#Z7"T^#VP2!T!XG"N``````+13@+53R)13B)53R`C4@!```(#[=%,O?8
+MF8M.""'!BUX,(=,YG5`!``!R(W<(.8U,`0``=AD/MT4R]]B9(T8((U8,B85,
+M`0``B950`0``@+[VA@```70NBH;VA@``BTPD'(A!7H/L"%;_="0LZ-+\__^#
+MQ`3_="0HZ$)9``"#Q!#IN0(``(N%3`$``(N54`$``(M.##'1,T8("<%U%(M$
+M)!"+5"04B85,`0``B950`0``@^P(5O]T)"SHA?S__P^W53*)5"00QT0D%```
+M``"+="0LBTY(BUY,@\$!@],`BT0D$/?AB40D&(M\)!`/K_N)U@'^B<@/KT0D
+M%`'&B70D'(/$$(M4)!0Y5"0,<FUW"HMT)!`Y="0(=F&+1"08QT`D`````(M4
+M)!"+3"04BW0D&(E6*(E.+%;_="0@5?]T)"SH4F\``(/$$(7`#X3N`0``QT8$
+M_#T(`(M$)!R)1@C'1@P`````@^P(5O]T)##H_/___X/$$.G$`0``@^P,_W0D
+M*.@Y6```@\00Z;`!``"0BU0D&(J"GP```$"(@I\````Z@IX````/A9(!``"+
+M3"0<]D%=!`^$EP```+\`````@+J>`````'9UB?H/ML*-!$"+3"08BW3!)("^
+M]H8```%U,(GULP"`?A(`=C.Y``````^VP\'@!+H0````C80HD`$``)"("$!*
+M=?I#.%T2=^'K#8J&]H8``(M4)!R(0EZ#[`A6_W0D+.@8^___@\001XGYBW0D
+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
+M!0R+5)88B92$,`$``$$XRW?AQT0D)`````"+1"0@.40D)`^-_0```(UV`(M4
+M)"0/MH24,0(``(G'P><)#[:$E#("``#!X`F)1"0HBH24,`(``(A$)`^Q`(N4
+M)%0#``"`>DP`=B`/MO"*6DP/ML&+E(0P`0``BVRR!(T4+XE4A#!!.,MWY@^V
+M1"0/B?V+5"0L`VR"!(U\)#"+A"14`P``#[9P3(M4)"B)5"0<@_X!=1.#[`12
+M_W0D.%7H_/___X/$$.M0.2]U%/]T)!S_=P15Z./@__^#Q`SK%(GV_W0D'/]W
+M!/\W5>B1X/__@\00@_X"=B&[`@```#GS<QC_="0<_S2?5>BOX/__@\0,0SGS
+M<NN-=@#_1"0DBWPD(#E\)"0/C`;___^#[`1J`/^T)%P#``#_M"1<`P``Z`X`
+M``"!Q$P#``!;7E]=PXUV`%=64XM\)!"+7"04BW0D&,9#!0*#_@$9P(/@]8/`
+M#(A#!H/L"%-7Z(WQ__^#Q!"`>P0#=3"+0PB+4!"%TG0FQT`0`````,9"!0*#
+M_@$9P(/@]8/`#(A"!H/L"%)7Z%?Q__^#Q!!;7E_#4X/L#(M<)!2+@]@```!J
+M`%!0Z/S___^#Q`QJ`/]T)!S_,^AQ____@\086\-3BTPD"(M<)`P/ME,'A=)T
+M2XUV``^VA%'4?P``C02`P>`$C80(M`D``(!X!0)T";@`````ZRN)]H!X!@%T
+M$L9#!0**0`:(0P:X`````.L2D`^VE%'5?P``A=)UN+@!````6\.055=64X/L
+M;(N\)(````#&A[()````@+_WA@````^$C@```+X`````C9^T"0``@+^Q"0``
+M`'11B?:`>P4!=3J`>P0#=26+0PB`>!4`=!R#>!``=!;'0!``````QD,%`HJ'
+M]H8``(A#!NL/QH>R"0```>F\!```C78`1H/#4`^VA[$)```Y\'^Q@^P,5^CD
+MZO__@\00Z9D$``"*0P:(A_:&``#&A_>&```!Z77___^-=@#'1"1H`````,=$
+M)&0!````O@````"-G[0)``"`O[$)````#X0K!```@'L%``^%[@$``%-7Z+/^
+M__^#Q`B%P`^$T`$``,9#!0&)7"1@BX>L"0``B40D7(/L"&A`'@``4.C\____
+M@\00#[93!(/Z"`^'H`$``/\DE4`C``"#[`C_="1H4.A@]O__@\00Z80!``"#
+M[`C_="1H_W0D:.C@^/__@\00Z6P!``"#[`C_="1H_W0D:.CH^O__@\00Z50!
+M``"#[`C_="1H_W0D:.CD^___@\00Z3P!``#&1Q4!#[97$XG0P>`$C80XD`$`
+M`(E$)%B)1"00BTPD8(/!"(L`BU0D8`M""(M4)%B)`HM4)!"+0@0+002+5"18
+MB4($BU0D$(M""`M!"(M4)%B)0@B+5"00BT(,"T$,BU0D6(E"#`^V1Q/!X`2-
+MA#B0!0``B40D5(E$)!"+$(M$)&`+4`B+1"14B1"+5"00BT($"T$$BU0D5(E"
+M!(M4)!"+0@@+00B+5"14B4((BU0D$(M"#`M!#(M4)%2)0@R#OQ"'````=0K'
+MAQ"'````````BT0D8,9`!0+&0`8!@^P(4/]T)&CH3^[__X/$$.M.@^P(_W0D
+M:%#H[?S__X/$$.L\#[9'$\'@!+D`````NA````"-A#B0!0``B`A`2G7ZBU0D
+M8,9"!0+&0@8!@^P(4O]T)&CH`>[__X/$$(GV@'L%`G4,_T0D:(GV@'L%`G0.
+MQT0D9`````#I#0(``)"`>P8!#X0"`@``@'\5``^$H/W__XL'#[93"(M$D$CV
+M@!P"```!#X3=`0``QT0D9`````#&0P4!QD,&`(E<)%"+AZP)``")1"1,@^P(
+M:$`>``!0Z/S___^#Q!`/ME,$@_H(#X>E`0``_R259",``(/L"/]T)%A0Z#GT
+M__^#Q!#IB0$``(/L"/]T)%C_="18Z+GV__^#Q!#I<0$``(/L"/]T)%C_="18
+MZ,'X__^#Q!#I60$``(/L"/]T)%C_="18Z+WY__^#Q!#I00$``,9'%0$/ME<3
+MB=#!X`2-A#B0`0``B40D2(E$)!"+3"10@\$(BP"+5"10"T((BU0D2(D"BU0D
+M$(M"!`M!!(M4)$B)0@2+5"00BT(("T$(BU0D2(E""(M4)!"+0@P+00R+5"1(
+MB4(,#[9'$\'@!(V$.)`%``")1"1$B40D$(L0BT0D4`M0"(M$)$2)$(M4)!"+
+M0@0+002+5"1$B4($BU0D$(M""`M!"(M4)$2)0@B+5"00BT(,"T$,BU0D1(E"
+M#(._$(<```!U"L>'$(<```````"+1"10QD`%`L9`!@&#[`A0_W0D6.@H[/__
+M@\00ZU.#[`C_="184.C&^O__@\00ZT$/MD<3P>`$N0````"Z$````(V$.)`%
+M``"("$!*=?J+5"10QD(%`L9"!@&#[`A2_W0D6.C:Z___@\00ZP60QD,&`4:#
+MPU`/MH>Q"0``.?`/C]7[__^#?"1H``^%HOO__X-\)&0`=!7&A_:&```!@^P,
+M5^A/YO__@\00ZP?&A[()```!@\1L6UY?7<.-=@!55U93@>R4````BX0DJ```
+M`(L`B40D9(N4)*@```"+DNR%``")5"1@:$`>``"+C"2L````_[&L"0``Z/S_
+M__^+7"1LBUL0B5PD9(VP>`,``(ET)&`%>`<``(E$)%S&1"1-`,9$)$P`_T,$
+MBT0D;("('`(``""+3"1LBU%`BTE$B50D&(E,)!R#Q!"+7"1<BX-,`0``BY-0
+M`0``B[0DH````#M6#'="<@4[1@AW.XM$)%R+<#B+>#R)^@GR=!:+1"0("?"+
+M5"0,"?J)1"0(B50D#.L5BTPD7/:!2`$```)T",9$)#P!C78`BUPD#`M<)`AT
+M4+T`````O@$```"_`````.L!18GPB?J)Z0^E\M/@]L$@=`>)PK@`````(T0D
+M""-4)`R)TPG#=-J+M"2@````B(ZP"0``ZQBX`0```.F>````BX0DH````,:`
+ML`D``$"+E"2@````QH*Q"0```,:"U'\```#&@O:&````QH+WA@```,>"#(<`
+M``````#&@K,)````@'H5``^$.P$``(G6L0"`>A(`=D,/ML'!X`0!\(V0D`$`
+M`+L`````@[B0`0```'44@WH$`'4.@WH(`'4(@WH,`'0'B?:[`0```(7;#X5C
+M____03A.$G>]N`````"%P`^$G`<``,9$)#\`BXPDH````(!Y$@`/AL(T``")
+M]@^V1"0_P>`$`X0DH````(V0D`$``(N`D`$``(E$)'"+0@2)1"1TBT((B40D
+M>(M"#(E$)'R*7"0_B[0DH````#B>L`D``'1EN`````"#?"1P`'45@WPD=`!U
+M#H-\)'@`=0>#?"1\`'0%N`$```"%P'0[_[0DH````.B'VO__@\0$QD`$`HI4
+M)#^(4`B(4`F+5"1PB5`,BU0D=(E0$(M4)'B)4!2+5"1\B5`8B?;^1"0_BDPD
+M/XN<)*`````X2Q(/ASS____I]S,``(NT)*````"`OK`)``!`#X6H!```B?"+
+M7@B+=@P/MU`0BTPD7(MY$(M/#(U'##G(=%")T+H``````=@1\HE$)!")5"04
+MC6\,B<^+01"Z``````-!"!-1##GR<B!W!#G8=AJ+1"00BU0D%#M7#'(-=P4[
+M1PAV!HGXZPV)]HL).<UUQK@`````BYPDH````(F##(<``(7`#X0A!```N0``
+M``"Z$````(U$)'")]H@(0$IU^HNT)*````"+A@R'``"+4`@K5@B+<!"_````
+M`(/Z'W=)B?D/ML&-7(1PB=6Y(````"G1.?%V`HGQ@_D@=0C'`______K#K@!
+M````T^!(B>G3X`D#N"`````IT#GP<Q:-=!;@N@````#K`X/J($>)^X#[`W:G
+MBX0DH````(I`$XA$)#N+E"2@````B(+0A0``QH+1A0```(M$)'")@KR%``"+
+M1"1TB8+`A0``BT0D>(F"Q(4``(M$)'R)@LB%``#'@LR%````````B=.!P[R%
+M``!2Z+38__^#Q`3&0`0#B5@(BDPD.XA(#(G%QD0D/P"+G"2@````@'L2``^&
+M<@(``('#O(4``(E<)#20#[94)#^+M"2@````BX8,AP``.U`4#X0T`@``B=;!
+MY@2+E"2@````C006C9B0!0``C8B0`0``BY"0`0``]](CD)`%``")5"1@BT$$
+M]]`C0P2)1"1DBT$(]]`C0PB)1"1HBT$,]]`C0PR)1"1LBUPD3(T,'O?2(U0D
+M<(D1BT0D9/?0(T0D=(E!!(M$)&CWT"-$)'B)00B+1"1L]]`C1"1\B4$,N```
+M``"#.0!U$H-Y!`!U#(-Y"`!U!H-Y#`!T!;@!````A<`/A`X!``"+M"2@````
+MBEX2#[9T)#^)\,'@!(M4)$R--!#_M"2@````Z([7__^#Q`3&0`0!BDPD/XA(
+M"(A8"8L6B5`,BU8$B5`0BU8(B5`4BU8,B5`8B<>+"/Z!U'\```^VF=1_``")
+MZBG*@>JT"0``P?H$C022C02`C01"B<+!X@@!T(G"P>(0`=#WV(B$6=1_``"*
+M1P>(A%G5?P``B%\'B[0DH````(I>$E;H"]?__X/$!,9`!`.+5"0TB5`(B%@,
+MB40D2(L(_H'4?P``#[:9U'\``(GZ*<J!ZK0)``#!^@2-!)*-!("-!$*)PL'B
+M"`'0B<+!XA`!T/?8B(19U'\``(MT)$B*1@>(A%G5?P``B%X'ZW+_M"2@````
+MZ)O6__^#Q`3&0`0#BU0D-(E0"(I,)#^(2`R)1"1(BPC^@=1_```/MIG4?P``
+MB>HIRH'JM`D``,'Z!(T$DHT$@(T$0HG"P>((`=")PL'B$`'0]]B(A%G4?P``
+MBW0D2(I&!XB$6=5_``"(7@>+;"1(_D0D/XI$)#^+E"2@````.$(2#X>9_?__
+MBXPDH````(N!#(<``(M8%(I!$XA$)#-1Z/S5__^#Q`3&0`0"B%@(BE0D,XA0
+M"8M4)'")4`R+5"1TB5`0BU0D>(E0%(M4)'R)4!B)QHL(_H'4?P``#[:9U'\`
+M`(GJ*<J!ZK0)``#!^@2-!)*-!("-!$*)PL'B"`'0B<+!XA`!T/?8B(19U'\`
+M`(I&!XB$6=5_``"(7@?I.R\``(-\)%@`#X0`&```BTPD6(!Y7`$/A1(*```/
+MMD%2@_@"#X2.!0``@_@"?PZ#^`$/A&,!``#I`B\``(/X`P^%^2X``+D`````
+MNA````"-1"1PB`A`2G7ZOP````"+M"2@````#[=>$+X`````@_\?=TF)\@^V
+MPHU4A'")_;D@````*?DYV78"B=F#^2!U",<"_____^L.N`$```#3X$B)Z=/@
+M"0*X(````"GX.=AS%8U<.^"_`````.L#@^\@1HGP/`-VJ(N4)*````#_<ACH
+MI=+__\9$)$,`@\0$BXPDH````(!Y$@`/AE`N``"[``````^V1"0_P>`$NA``
+M``"+M"2@````C80PD`$``(@80$IU^@^V1"0_P>`$N0````"Z$````(NT)*``
+M``"-A#"0!0``B?:("$!*=?K_M"2@````Z#K4__^#Q`3&0`0"BE0D/XA0",9`
+M"0"+5"1PB5`,BU0D=(E0$(M4)'B)4!2+5"1\B5`8_D0D/XI,)#^+M"2@````
+M.$X2#X=E____Z:LM``"X`0```.M1B[0DH````+$`@'X2`'8]#[;!P>`$`?"-
+MD)`!``"[`````(.XD`$```!U$H-Z!`!U#(-Z"`!U!H-Z#`!T!;L!````A=MU
+MLT$X3A)WP[@`````A<!T$XN$)*````#&@+,)```!Z0P6``"Y`````+H0````
+MC40D<(GVB`A`2G7ZOP````"+E"2@````#[=:$+X`````D(/_'W=)B?$/ML&-
+M5(1PB?VY(````"GY.=EV`HG9@_D@=0C'`O_____K#K@!````T^!(B>G3X`D"
+MN"`````I^#G8<Q6-7#O@OP````#K`X/O($:)\#P#=JB+E"2@````@+JP"0``
+M0'4)BD(3B(*P"0``BXPDH````(J9L`D``(B9T(4``,:!T84```&+1"1PB8&\
+MA0``BT0D=(F!P(4``(M$)'B)@<2%``"+1"1\B8'(A0``QX',A0```````%'H
+MD=+__X/$!,9`!`*(6`B(6`F+5"1PB5`,BU0D=(E0$(M4)'B)4!2+5"1\B5`8
+MB<:+G"2@````@'L2`@^'2@$``('#O(4``/^T)*````#H0]+__X/$!,9`!`6)
+M6`C&0$P`B40D2(L._H'4?P``#[:9U'\``(G"*<J!ZK0)``#!^@2-!)*-!("-
+M!$*)PL'B"`'0B<+!XA`!T/?8B(19U'\``(I&!XB$6=5_``"(7@?&1"0_`(NT
+M)*````"`?A(`#X:.*P``BD0D/XN4)*`````X@K`)```/A),```!2Z+71__^#
+MQ`3&0`0!BDPD/XA("(A("8M4)'")4`R+5"1TB5`0BU0D>(E0%(M4)'R)4!B+
+M7"1(BE-,#[;*BEPD/XMT)$B(7`X,0HA63(L._H'4?P``#[:9U'\``"G(+;0)
+M``#!^`2-%("-%)*-%%")T,'@"`'"B=#!X!`!PO?:B)19U'\``(I&!XB$6=5_
+M``"(7@?^1"0_BD0D/XN4)*`````X0A(/AS[____IQRH``,9$)#\`BXPDH```
+M`(!Y$@`/AK$J``")S8'%O(4``)"*7"0_BX0DH````#B8L`D```^$Y@```%#H
+MS]#__X/$!,9`!`&(6`B(6`F+5"1PB5`,BU0D=(E0$(M4)'B)4!2+5"1\B5`8
+MB<?_M"2@````Z)C0__^#Q`3&0`0#B6@(B%@,B40D2(L(_H'4?P``#[:9U'\`
+M`(GZ*<J!ZK0)``#!^@2-!)*-!("-!$*)PL'B"`'0B<+!XA`!T/?8B(19U'\`
+M`(M4)$B*0@>(A%G5?P``B%H'BP[^@=1_```/MIG4?P``BU0D2"G*@>JT"0``
+MP?H$C022C02`C01"B<+!X@@!T(G"P>(0`=#WV(B$6=1_``"*1@>(A%G5?P``
+MB%X'_D0D/XI,)#^+G"2@````.$L2#X?K_O__Z8XI``"X`0```.M1B[0DH```
+M`+$`@'X2`'8]#[;!P>`$`?"-D)`!``"[`````(.XD`$```!U$H-Z!`!U#(-Z
+M"`!U!H-Z#`!T!;L!````A=MULT$X3A)WP[@`````A<!T$XNT)*````#&AK,)
+M```!Z>\1``#_M"2@````Z%?/__^)1"1$QD`$!X/$!+D`````NA````"-1"1P
+MB`A`2G7ZOP````"+A"2@````#[=8$+X`````@_\?=TF)\@^VPHU4A'")_;D@
+M````*?DYV78"B=F#^2!U",<"_____^L.N`$```#3X$B)Z=/@"0*X(````"GX
+M.=AS%8U<.^"_`````.L#@^\@1HGP/`-VJ(N4)*````"*0A.(@M"%``#&@M&%
+M````BT0D<(F"O(4``(M$)'2)@L"%``"+1"1XB8+$A0``BT0D?(F"R(4``,>"
+MS(4```````"`>A("#X=9`0``B=.!P[R%``!2Z&K.__^#Q`3&0`0%B5@(QD!,
+M`(E$)$B+"/Z!U'\```^VF=1_``"+5"1`*<J!ZK0)``#!^@2-!)*-!("-!$*)
+MPL'B"`'0B<+!XA`!T/?8B(19U'\``(MT)$B*1@>(A%G5?P``B%X'BY0DH```
+M`(I"$XA&#,9&3`'&1"0_`(!Z$@`/AJ4G``#_M"2@````Z-W-__^#Q`3&0`0!
+MBDPD/XA("(A("8M4)'")4`R+5"1TB5`0BU0D>(E0%(M4)'R)4!B+7"1`BPO^
+M@=1_```/MIG4?P``*<@MM`D``,'X!(T4@(T4DHT44(G0P>`(`<*)T,'@$`'"
+M]]J(E%G4?P``BW0D0(I&!XB$6=5_``"(7@>*1"0_BY0DH````#A"$W06BTPD
+M2(I!3`^VT(I<)#^(7!$,0(A!3/Y$)#^*1"0_BY0DH````#A"$@^'.____^G;
+M)@``BXPDH````(I9$U'H#\W__X/$!,9`!`&(6`B(6`F+5"1PB5`,BU0D=(E0
+M$(M4)'B)4!2+5"1\B5`8BUPD0(L+_H'4?P``#[:9U'\``"G(+;0)``#!^`2-
+M%("-%)*-%%")T,'@"`'"B=#!X!`!PO?:B)19U'\``(MT)$"*1@>(A%G5?P``
+MB%X'QD0D/P"+A"2@````@'@2``^&/B8``(G&@<:\A0``BE0D/XN,)*`````X
+M41,/A.X```!1Z&#,__^#Q`3&0`0!BEPD/XA8"(A8"8M4)'")4`R+5"1TB5`0
+MBU0D>(E0%(M4)'R)4!B)Q_^T)*````#H)<S__X/$!,9`!`.)<`B(6`R)1"1(
+MBPC^@=1_```/MIG4?P``B?HIRH'JM`D``,'Z!(T$DHT$@(T$0HG"P>((`=")
+MPL'B$`'0]]B(A%G4?P``BU0D2(I"!XB$6=5_``"(6@>+"OZ!U'\```^VF=1_
+M``"+5"1`*<J!ZK0)``#!^@2-!)*-!("-!$*)PL'B"`'0B<+!XA`!T/?8B(19
+MU'\``(M4)$B*0@>(A%G5?P``B%H'_D0D/XI,)#^+G"2@````.$L2#X?F_O__
+MZ1<E``"X`0```.MO@WPD6``/A-4-``"+="18BD9=J`(/A,8-``"H"'1HB[0D
+MH````+$`@'X2`'8]#[;!P>`$`?"-D)`!``"[`````(.XD`$```!U$H-Z!`!U
+M#(-Z"`!U!H-Z#`!T!;L!````A=MUE4$X3A)WP[@`````A<!T$XN$)*````#&
+M@+,)```!Z5H-``"+E"2@````BI+TA@``B%0D/XN,)*`````XD?6&```/@E0"
+M``"*7"0_B[0DH````#A>$P^$)0(```^VP\'@!+D`````NA````"+7"10C008
+MC78`B`A`2G7Z#[9L)#^)ZHGHP>`$BW0D4(TL,(N$)*`````/MYR0](4```^W
+MM)#VA0``OP````"-=@"#^Q]W3XGZ#[;"C52%`(E<)"RY(````"G9.?%V`HGQ
+M@_D@=0C'`O_____K$+@!````T^!(BDPD+-/@"0*X(````"G8.?!S%XUT'N"[
+M`````.L%B?:#ZR!'B?@\`W:B#[9<)#^)V,'@!(M,)$R-'`B)QHM$)%"-#`:+
+MA"2@````C90&D`4``(L"]]`C`8D#BT($]]`C002)0P2+0@CWT"-!"(E#"(M"
+M#/?0(T$,B4,,BE0D/XN,)*`````XD;`)```/A0T!``"+7"1,C00>N@````"#
+M.`!U$H-X!`!U#(-X"`!U!H-X#`!T!;H!````A=(/A-T```#&1"0]`8MT)%2#
+M?AQ`#X;*````#[9L)#^)Z,'@!(M4)$R-+!"_`````(N,)*`````/MUD0O@``
+M``"#_Q]W38GR#[;"C52%`(E\)"BY(````"GY.=EV`HG9@_D@=0C'`O_____K
+M$+@!````T^!(BDPD*-/@"0*X(````"GX.=AS%8U<.^"_`````.L#@^\@1HGP
+M/`-VI`^V7"0_B=C!X`2+3"1,C1P(B[0DH````(V4,)`%``"+`O?0(P.)`XM"
+M!/?0(T,$B4,$BT((]]`C0PB)0PB+0@SWT"-##(E##/Y$)#^*1"0_BY0DH```
+M`#B"]88```^#K/W__X!\)#T`#X1E"```N0````"Z$````(U$)'"0B`A`2G7Z
+MQD0D/P"+C"2@````@'D2`'9IBEPD/XNT)*`````XGK`)``!T0CA>$W0]#[;3
+MP>($`?*-BI`!``"+1"1P"X*0`0``B40D<(M$)'0+002)1"1TBT0D>`M!"(E$
+M)'B+1"1\"T$,B40D?/Y$)#^*1"0_BY0DH````#A"$G>7BXPDH`````^VN;`)
+M``")^,'@!(M<)$R-/!B+1"1P(P>)1"1@BU0D="-7!(E4)&2+3"1X(T\(B4PD
+M:(M<)'PC7PR)7"1L]]`C!XE$)'#WTB-7!(E4)'3WT2-/"(E,)'CWTR-?#(E<
+M)'S_M"2@````Z$?'__^#Q`3&0`0`B40D0+@`````@WPD<`!U%8-\)'0`=0Z#
+M?"1X`'4'@WPD?`!T!;@!````A<`/A%0#``"+M"2@````BH:P"0``B(;0A0``
+MBT0D<(F&O(4``(M$)'2)AL"%``"+1"1XB8;$A0``BT0D?(F&R(4``,:&T84`
+M``''ALR%````````@'X2`G=SB?.!P[R%``!6Z*[&__^#Q`3&0`0%B5@(QD!,
+M`(E$)$B+1"1`BPC^@=1_```/MIG4?P``BU0D2"G*@>JT"0``P?H$C022C02`
+MC01"B<+!X@@!T(G"P>(0`=#WV(B$6=1_``"+5"1`BD('B(19U7\``(A:!\9$
+M)#\`BXPDH````(!Y$@`/ADL#``"*7"0_B[0DH````#B>L`D```^$10(``#B>
+M](8``'<-.)[UA@``<@4X7A-U4`^V1"0_P>`$BU0D3(T,$`.$)*````"-D)`%
+M``"+@)`%``#WT"-$)'")`8M"!/?0(T0D=(E!!(M""/?0(T0D>(E!"(M"#/?0
+M(T0D?(E!#.ME#[9<)#^)V,'@!(MT)$R-'#")P8M$)'`+`XD#BT0D=`M#!(E#
+M!(M$)'@+0PB)0PB+1"1\"T,,B4,,BX0DH````(V,`9`%``"+`??0(0.+003W
+MT"%#!(M!"/?0(4,(BT$,]]`A0PR+E"2@````@'H2`G<;BTPD2(I!3`^VT(I<
+M)#^(7!$,0(A!3.F+````BYPDH````('#O(4``/^T)*````#H$<7__X/$!,9`
+M!`.)6`B*5"0_B%`,B40D2(N,)*`````X41-U48M<)$"+"_Z!U'\```^VF=1_
+M``")PBG*@>JT"0``P?H$C022C02`C01"B<+!X@@!T(G"P>(0`=#WV(B$6=1_
+M``"+="1`BD8'B(19U7\``(A>!P^V1"0_P>`$`T0D3+H`````@S@`=1*#>`0`
+M=0R#>`@`=0:#>`P`=`6Z`0```(72#X23````#[9<)#^)V,'@!(M4)$R-'!#_
+MM"2@````Z$W$__^#Q`3&0`0!BDPD/XA("(A("8L3B5`,BU,$B5`0BU,(B5`4
+MBU,,B5`8BUPD2(L+_H'4?P``#[:9U'\``"G(+;0)``#!^`2-%("-%)*-%%")
+MT,'@"`'"B=#!X!`!PO?:B)19U'\``(MT)$B*1@>(A%G5?P``B%X'_D0D/XI$
+M)#^+E"2@````.$(2#X>,_?__Z=(```#&1"0_`(N,)*````"`>1(`#X:\````
+MBEPD/XNT)*`````XGO2&```/AXT````XGO6&```/@H$````X7A-T?#B>L`D`
+M`'1T#[;#P>`$`T0D3+H`````@S@`=1*#>`0`=0R#>`@`=0:#>`P`=`6Z`0``
+M`(72=$4/MEPD/XG8P>`$BU0D3(T<$/^T)*````#H*,/__X/$!,9`!`&*3"0_
+MB$@(B$@)BQ.)4`R+4P2)4!"+4PB)4!2+4PR)4!C^1"0_BEPD/XNT)*`````X
+M7A(/AT3___^X`````(-\)&``=16#?"1D`'4.@WPD:`!U!X-\)&P`=`6X`0``
+M`(7`#X1V'```BX0DH````(J`L`D``(A$)">+E"2@````B(+HA0``BT0D8(F"
+MU(4``(M$)&2)@MB%``"+1"1HB8+<A0``BT0D;(F"X(4``,:"Z84```#'@N2%
+M````````BEH34NA:PO__@\0$QD`$`8A8"(I,)">(2`F+5"1@B5`,BU0D9(E0
+M$(M4)&B)4!2+5"1LB5`8B40D1+T`````QD0D/P"+G"2@````@'L2``^&W@$`
+M`(I$)#^+E"2@````.(*P"0``#X2O`0``.$(3#X2F`0``BEH34NCEP?__@\0$
+MQD`$`8I,)#^(2`B(6`F+5"1@B5`,BU0D9(E0$(M4)&B)4!2+5"1LB5`8B<>+
+M"/Z!U'\```^VF=1_``"+5"1`*<J!ZK0)``#!^@2-!)*-!("-!$*)PL'B"`'0
+MB<+!XA`!T/?8B(19U'\``(I'!XB$6=5_``"(7P>%[71)BP_^@=1_```/MIG4
+M?P``B>HIRH'JM`D``,'Z!(T$DHT$@(T$0HG"P>((`=")PL'B$`'0]]B(A%G4
+M?P``BD<'B(19U7\``(A?!XN<)*````"!P]2%``"+A"2@````BD`3B$0D)O^T
+M)*````#H]\#__X/$!,9`!`.)6`B*5"0FB%`,B40D2(G%BPC^@=1_```/MIG4
+M?P``B?HIRH'JM`D``,'Z!(T$DHT$@(T$0HG"P>((`=")PL'B$`'0]]B(A%G4
+M?P``BW0D2(I&!XB$6=5_``"(7@>+#OZ!U'\```^VF=1_``"+5"1$*<J!ZK0)
+M``#!^@2-!)*-!("-!$*)PL'B"`'0B<+!XA`!T/?8B(19U'\``(I&!XB$6=5_
+M``"(7@?^1"0_BD0D/XN4)*`````X0A(/AR+^__^+G"2@````#[9+$XG(P>`$
+MC8P8D`4``(M$)&#WT",!B0&+1"1D]]`C002)002+1"1H]]`C00B)00B+1"1L
+M]]`C00R)00SIHAD``(MT)%2#?AQ`#X:;`0``QD0D/P"+A"2@````@'@2``^&
+M?AD``(I4)#^+C"2@````.)&P"0``#X11`0``#[;"P>`$N0````"Z$````(M<
+M)$R-!!B("$!*=?H/MG0D/XGPP>`$`T0D3(E$)""_`````(N$)*`````/MU@0
+MO@````"#_Q]W3(GR#[;"BTPD((T4@8G]N2`````I^3G9=@*)V8/Y('4(QP+_
+M____ZPZX`0```-/@2(GIT^`)`K@@````*?@YV',5C5P[X+\`````ZP.#[R!&
+MB?`\`W:E#[9,)#^)R,'@!(M<)$R-#!B+M"2@````C90PD`4``(L"]]`C`8D!
+MBT($]]`C002)002+0@CWT"-!"(E!"(M"#/?0(T$,B4$,N`````"#.0!U$H-Y
+M!`!U#(-Y"`!U!H-Y#`!T!;@!````A<!T10^V7"0_B=C!X`2+5"1,C1P0_[0D
+MH````.B"OO__@\0$QD`$`8I,)#^(2`B(2`F+$XE0#(M3!(E0$(M3"(E0%(M3
+M#(E0&/Y$)#^*7"0_B[0DH````#A>$@^'@/[__^GY%P``BX0DH````(J`](8`
+M`(A$)#^+E"2@````.(+UA@``#X+5%P``BDPD/XN<)*`````X2Q-T=`^VP<'@
+M!`-$)$RZ`````(,X`'42@W@$`'4,@W@(`'4&@W@,`'0%N@$```"%TG1%#[9<
+M)#^)V,'@!(MT)$R-'##_M"2@````Z+V]__^#Q`3&0`0!BE0D/XA0"(A0"8L3
+MB5`,BU,$B5`0BU,(B5`4BU,,B5`8_D0D/XI,)#^+G"2@````.(OUA@``#X-A
+M____Z3$7``"0B[0DH````("^L`D``#\/AFT,``"Y`````+H0````C40D<(GV
+MB`A`2G7ZQD0D/@#&1"0_`(N$)*````"`>!(`#X:I````C78`BE0D/XN,)*``
+M```X41-T?@^VPL'@!`'(C9"0`0``N0````"#N)`!````=1*#>@0`=0R#>@@`
+M=0:#>@P`=`6Y`0```(7)=$</ME0D/XG0P>`$BYPDH````(V4&)`!``"+1"1P
+M"P*)1"1PBT0D=`M"!(E$)'2+1"1X"T((B40D>(M$)'P+0@R)1"1\_D0D/OY$
+M)#^*1"0_BY0DH````#A"$@^'6O___P^V5"0^BXPDH`````^V01*#Z`/1^#G"
+M?PN`?"0\``^$3`8``(NT)*````"*7A.(GM"%``"+1"1PB8:\A0``BT0D=(F&
+MP(4``(M$)'B)AL2%``"+1"1\B8;(A0``QH;1A0```<>&S(4```````!6Z!.\
+M__^#Q`3&0`0"B%@(B%@)BU0D<(E0#(M4)'2)4!"+5"1XB5`4BU0D?(E0&(G&
+M_[0DH````.C<N___@\0$QD`$!HM4)'")4`B+5"1TB5`,BU0D>(E0$(M4)'R)
+M4!2)1"1`BP[^@=1_```/MIG4?P``B<(IRH'JM`D``,'Z!(T$DHT$@(T$0HG"
+MP>((`=")PL'B$`'0]]B(A%G4?P``BD8'B(19U7\``(A>!XN$)*````"`>!("
+M#X>H`@``B<.!P[R%``!0Z$V[__^#Q`3&0`0%B5@(QD!,`(E$)$B+5"1`BPK^
+M@=1_```/MIG4?P``B<(IRH'JM`D``,'Z!(T$DHT$@(T$0HG"P>((`=")PL'B
+M$`'0]]B(A%G4?P``BW0D0(I&!XB$6=5_``"(7@?&1"0_`(N$)*````"`>!(`
+M#X:0%```BE0D/XN,)*`````X41,/A/`!``"+7"1(BD-,#[;0BDPD/XA,$PQ`
+MB$-,#[;!P>`$BUPD3(T,&`.$)*````"-D)`%``"+@)`%``#WT"-$)'")`8M"
+M!/?0(T0D=(E!!(M""/?0(T0D>(E!"(M"#/?0(T0D?(E!#+@`````@SD`=1*#
+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
+M```X2Q(/AP;____I<PD``+D`````NA````"-1"1PD(@(0$IU^O^T)*````#H
+MEJ___X/$!,9`!`:[`````+D0````C5`(B?:(&D))=?J)1"1`QD0D/P"+M"2@
+M````@'X2``^&3`$``(I$)#^+E"2@````.$(3#X0@`0``#[;`P>`$`="-D)`!
+M``"Y`````(.XD`$```!U$H-Z!`!U#(-Z"`!U!H-Z#`!T!;D!````A<D/A.4`
+M```/ME0D/XG1B=#!X`2+G"2@````C908D`$``(M$)'`+`HE$)'"+1"1T"T($
+MB40D=(M$)'@+0@B)1"1XBT0D?`M"#(E$)'R*1"0_.(.P"0``#X20````B<O!
+MXP2+E"2@````C9P3D`$``%+HHZ[__X/$!,9`!`**3"0_B$@(B$@)BQ.)4`R+
+M4P2)4!"+4PB)4!2+4PR)4!B)QHL(_H'4?P``#[:9U'\``(M4)$`IRH'JM`D`
+M`,'Z!(T$DHT$@(T$0HG"P>((`=")PL'B$`'0]]B(A%G4?P``BD8'B(19U7\`
+M`(A>!XGV_D0D/XI<)#^+M"2@````.%X2#X>T_O__BX0DH````(I8$U#H!*[_
+M_X/$!,9`!`*(6`B(6`F+5"1PB5`,BU0D=(E0$(M4)'B)4!2+5"1\B5`8B<:+
+M"/Z!U'\```^VF=1_``"+5"1`*<J!ZK0)``#!^@2-!)*-!("-!$*)PL'B"`'0
+MB<+!XA`!T/?8B(19U'\``(I&!XB$6=5_``"(7@>+1"1PBU0D0(E""(M$)'2)
+M0@R+1"1XB4(0BT0D?(E"%(N<)*`````/MHNP"0``B<J)R,'@!(V,&)`%``"+
+M`??0BWPD<"'XB40D8(M!!/?0BW0D="'PB40D9(M!"/?0BUPD>"'8B40D:(M!
+M#/?0BTPD?"'(B40D;,'B!(N$)*````"-E`*0!0``(SJ)?"1P(W($B70D="-:
+M"(E<)'@C2@R)3"1\N`````"#?"1P`'4/@WPD=`!U"(7;=02%R70%N`$```"%
+MP`^$A`(``(N4)*````"*0A.(@M"%``"+1"1PB8*\A0``BT0D=(F"P(4``(M$
+M)'B)@L2%``"+1"1\B8+(A0``QH+1A0```<>"S(4```````#&1"0_`(!Z$@`/
+MABP"``")UX''O(4``(I,)#^+G"2@````.(NP"0``=6I3Z$JL__^#Q`3&0`0#
+MB7@(BE0D/XA0#(M<)$"+"_Z!U'\```^VF=1_```IR"VT"0``P?@$C12`C122
+MC110B=#!X`@!PHG0P>`0`<+WVHB46=1_``"+="1`BD8'B(19U7\``(A>!^F/
+M`0``BD0D/XN4)*`````X0A,/A'L!```/MLB)R,'@!(M<)$R-#!B)QHV4$)`%
+M``"+`O?0(T0D<(D!BT($]]`C1"1TB4$$BT((]]`C1"1XB4$(BT(,]]`C1"1\
+MB4$,_[0DH````.B`J___@\0$QD`$`XEX"(I4)#^(4`R)1"1(BUPD0(L+_H'4
+M?P``#[:9U'\``(G"*<J!ZK0)``#!^@2-!)*-!("-!$*)PL'B"`'0B<+!XA`!
+MT/?8B(19U'\``(M4)$"*0@>(A%G5?P``B%H'BTPD3(T$#KH`````@S@`=1*#
+M>`0`=0R#>`@`=0:#>`P`=`6Z`0```(72#X23````#[9<)#^)V,'@!(MT)$R-
+M'##_M"2@````Z,VJ__^#Q`3&0`0!BE0D/XA0"(A0"8L3B5`,BU,$B5`0BU,(
+MB5`4BU,,B5`8BUPD2(L+_H'4?P``#[:9U'\``"G(+;0)``#!^`2-%("-%)*-
+M%%")T,'@"`'"B=#!X!`!PO?:B)19U'\``(MT)$B*1@>(A%G5?P``B%X'_D0D
+M/XI$)#^+E"2@````.$(2#X?<_?__N`````"#?"1@`'45@WPD9`!U#H-\)&@`
+M=0>#?"1L`'0%N`$```"%P`^$S0,``(N,)*````"*61-1Z`&J__^#Q`3&0`0!
+MB%@(B%@)BU0D8(E0#(M4)&2)4!"+5"1HB5`4BU0D;(E0&(E$)$2]`````,9$
+M)#\`BYPDH````(![$@`/AG4#``"*1"0_BY0DH````#B"L`D```^$1@,``#A"
+M$P^$/0,```^VP,'@!(M,)$R-'`@!T(V(D`$``(M4)&`CD)`!``")$XM$)&0C
+M002)0P2+1"1H(T$(B4,(BT0D;"-!#(E##+@`````@SL`=1*#>P0`=0R#>P@`
+M=0:#>PP`=`6X`0```(7`#X35`@``B[0DH````(J>L`D```^V="0_B?#!X`2+
+M5"1,C300_[0DH````.@'J?__@\0$QD`$`8I,)#^(2`B(6`F+%HE0#(M6!(E0
+M$(M6"(E0%(M6#(E0&(G'A>UT28L(_H'4?P``#[:9U'\``(GJ*<J!ZK0)``#!
+M^@2-!)*-!("-!$*)PL'B"`'0B<+!XA`!T/?8B(19U'\``(I'!XB$6=5_``"(
+M7P>+M"2@````BEX3BH:P"0``B$0D'0^V;"0_B>Z)Z,'@!(M4)$R-+!#_M"2@
+M````Z%VH__^#Q`3&0`0$B%@8BDPD'8A(&8M5`(E0"(M5!(E0#(M5"(E0$(M5
+M#(E0%(E$)$B)Q8L(_H'4?P``#[:9U'\``(M4)$0IRH'JM`D``,'Z!(T$DHT$
+M@(T$0HG"P>((`=")PL'B$`'0]]B(A%G4?P``BU0D2(I"!XB$6=5_``"(6@>+
+M"OZ!U'\```^VF=1_``")^BG*@>JT"0``P?H$C022C02`C01"B<+!X@@!T(G"
+MP>(0`=#WV(B$6=1_``"+5"1(BD('B(19U7\``(A:!XM<)$"+"_Z!U'\```^V
+MF=1_``"+5"1(*<J!ZK0)``#!^@2-!)*-!("-!$*)PL'B"`'0B<+!XA`!T/?8
+MB(19U'\``(M4)$"*0@>(A%G5?P``B%H'BXPDH````(I9$\'F!`-T)$Q1Z"BG
+M__^#Q`3&0`0$B%@8BEPD/XA8&8L6B5`(BU8$B5`,BU8(B5`0BU8,B5`4B40D
+M2(L(_H'4?P``#[:9U'\``(M4)$0IRH'JM`D``,'Z!(T$DHT$@(T$0HG"P>((
+M`=")PL'B$`'0]]B(A%G4?P``BW0D2(I&!XB$6=5_``"(7@>+1"1`BPC^@=1_
+M```/MIG4?P``B?(IRH'JM`D``,'Z!(T$DHT$@(T$0HG"P>((`=")PL'B$`'0
+M]]B(A%G4?P``BU0D0(I"!XB$6=5_``"(6@?^1"0_BDPD/XN<)*`````X2Q(/
+MAXO\__^#[`S_M"2L````Z/7#__^!Q)P```!;7E]=PXGV55=64X/L'(M$)#"#
+MP`R+5"0P.4(,#X0C`P``B40D$(M*#(E,)!0YP0^$$`,``(GVBUPD%('KD`D`
+M`(E<)`R+="04BS:)="04BP.)1"0(#[9#$DB)!"29B50D!(G9BUL(BP0D]^.)
+MQXLT)`^O<0R)T0'Q#Z]<)`2-+!F+5"0(@WH,``^$@````(M*#(E,)`B+F60!
+M``"^`````(7;#X2N````.4L$#X6E````@'L4`'0I#[9!,+H`````4E#_<V#_
+M<USH_/___X/$$#GJ<C-W!#GX=BV`>Q0`=7:+3"0(#[9!,+H`````4E#_<V#_
+M<USH_/___X/$$#GJ=P9R4SGX=D^^`0```.M(BW0D"(N>9`$``+X`````A=MT
+M-8M$)`@Y0P1U+(![%`!T$CEK8'(9=P4Y>UQV$H![%`!U%#EK8'<'<@TY>UQV
+M"+X!````C78`A?8/A)````"+5"0,QH+XA@```(M,)##_B=````")T`60"0``
+MBT@$BUPD#(N3D`D``(E*!(D1B8.0"0``B4`$@[N8"0```'0W@[N<"0```'02
+MBY.<"0``BX.8"0``B8*8"0``BW0D#(N6F`D``(N&G`D``(D"QX:8"0``````
+M`(/L"/]T)!3_="0\Z'FD__^#Q!#I20$``)"#?"0T`'00BU0D-(M$)`PY$`^%
+M,0$``(M,)`R+$8M:$(M#!(MT)#`[AM0````/@R,!``#V@AP"```!#X6P````
+MQH'XA@```/^.T````(G(!9`)``"+2`2+="0,BY:0"0``B4H$B1&)AI`)``")
+M0`2#OI@)````=#F#OIP)````=!*+EIP)``"+AI@)``")@I@)``"+1"0,BY"8
+M"0``B<&+@)P)``")`L>!F`D```````"#[`C_="04_W0D/.BOH___@\00@WL(
+M`'1^B?:+0PB+4"2+4A2)4PC&0%X"@^P,4.C\____@\00@WL(`'7>ZUB+7"0,
+MQH/XA@```HMT)##_CM````")VH'"D`D``(M*!(N#D`D``(E(!(D!B?"#P!2+
+M2`2)4`2)@Y`)``")2@2)$?Z#^88``(/L#%/H_,7__X/$$.L1C78`BT0D$#E$
+M)!0/A?+\__^#Q!Q;7E]=PXGV55=64X/L+,=$)!P`````BT0D0(M`!(E$)"2+
+M1"1`@\`$.T0D)`^$W@$``)"+5"0D@>J0"0``B50D((M,)"2+B7#V__^)3"08
+M#[9"$DB)1"0(B</!^Q^)7"0,BUH(BT0D"/?CB<>)U8MT)`B+5"0@#Z]R#(GI
+M`?$/KUPD#(TL&8M,)!B#>0P`#X2#````BUD,B5PD&(G8BYMD`0``O@````"%
+MVP^$JP```#E#!`^%H@```(![%`!T*0^V0#"Z`````%)0_W-@_W-<Z/S___^#
+MQ!`YZG(S=P0Y^'8M@'L4`'5SBTPD&`^V03"Z`````%)0_W-@_W-<Z/S___^#
+MQ!`YZG<&<E`Y^'9,O@$```#K19"+1"08BYAD`0``O@````"%VW0Q.4,$=2R`
+M>Q0`=!(Y:V!R&7<%.7M<=A*`>Q0`=10Y:V!W!W(-.7M<=@B^`0```(UV`(7V
+M#X24````BU0D)(L2B50D)(M,)"#&@?B&````B<@%D`D``(M(!(M<)""+DY`)
+M``")2@2)$8F#D`D``(E`!(N#_(8```%$)!R#NY@)````=#>#NYP)````=!*+
+MDYP)``"+@Y@)``")@I@)``"+3"0@BY&8"0``BX&<"0``B0+'@9@)````````
+M@^P(_W0D*/]T)$SH(Z'__X/$$(M<)"2+&XE<)"2+1"1`@\`$.=@/A2/^__^+
+M1"1`BT`,B40D)(M$)$"#P`P[1"0D#X3J`0``C78`BU0D)('JD`D``(E4)""+
+M3"0DBXEP]O__B4PD%`^V0A)(B40D"(G#P?L?B5PD#(M:"(M$)`CWXXG'B=6+
+M="0(BU0D(`^O<@R)Z0'Q#Z]<)`R-+!F+3"04@WD,``^$@P```(M9#(E<)!2)
+MV(N;9`$``+X`````A=L/A*L````Y0P0/A:(```"`>Q0`="D/MD`PN@````!2
+M4/]S8/]S7.C\____@\00.>IR,W<$.?AV+8![%`!U<XM,)!0/MD$PN@````!2
+M4/]S8/]S7.C\____@\00.>IW!G)0.?AV3+X!````ZT60BT0D%(N89`$``+X`
+M````A=MT,3E#!'4L@'L4`'02.6M@<AEW!3E[7'82@'L4`'44.6M@=P=R#3E[
+M7'8(O@$```"-=@"%]@^$G@```(M4)"2+$HE4)"2+3"0@QH'XA@```(M<)$#_
+MB]````")R`60"0``BT@$BUPD((N3D`D``(E*!(D1B8.0"0``B4`$BX/\A@``
+M`40D'(.[F`D```!T-X.[G`D```!T$HN3G`D``(N#F`D``(F"F`D``(M,)""+
+MD9@)``"+@9P)``")`L>!F`D```````"#[`C_="0H_W0D3.@=G___@\00BUPD
+M)(L;B5PD)(M$)$"#P`PYV`^%&?[__X-\)$0`=2"+5"1`BX+,````T>B+5"0<
+MBTPD0#F!T`````^"00(``(-\)$3_#X2Y````BUPD1#E<)!P/@ZL```"0BT0D
+M0(/`!(M4)$`Y0@0/A)8```"+2@2)3"0D@>F0"0``B4PD(,:!^(8```"+7"0D
+MBU,$BP.)4`2)`HD;B5L$BX'\A@```40D'(.YF`D```!T-X.YG`D```!T$HN1
+MG`D``(N!F`D``(F"F`D``(M,)""+D9@)``"+@9P)``")`L>!F`D```````"#
+M[`C_="0H_W0D3.@GGO__@\00BUPD1#E<)!P/@E;___^+;"1`@\4,BT0D0(M`
+M#(E$)"0YZ`^$'`$``(M4)"2!ZI`)``")5"0@BTPD)(L)B4PD)(L"]H`<`@``
+M`0^$]0```(M`$(M`!(M<)$`[@]0````/@]\```")T;\`````O@````!F@WH0
+M('8%O_____]F@WD00'8%OO____^S`(!Y$@!V/8UV`#A9$W0O#[;#P>`$`<B-
+MD)`%``"#N)`%``#_=0\Y>@1U"CER"'4%.7(,=`FX`````.L-B?9#.%D2=\:X
+M`0```(7`=&V+1"0@QH#XA@```HM4)$#_BM````")PH'"D`D``(M*!(M<)""+
+M@Y`)``")2`2)`8M$)$"#P!2+2`2)4`2)@Y`)``")2@2)$?Z#^88``(/L#%/H
+MP[___XN#_(8```%$)"R#Q!`Y;"0D#X7D_O__BU0D1#E4)!QS.8M,)$"+F=0`
+M``"#^P-V#X/Z_W4*QX'4`````P```(/L"&H`_W0D3.A2]O__BT0D4(F8U```
+M`(/$$(M4)!R)T(/$+%M>7UW#C78`55=64X/L%&A`'@``BT0D+/\PZ/S___^)
+MQ8M0#(/$$(U`##G0#X2'````B?:-@G#V__^+3"0@.8IP]O__=6:)Q[,`@'@2
+M`'8_#[;#P>`$`?B-B)`!``"^`````(.XD`$```!U%(-Y!`!U#H-Y"`!U"(-Y
+M#`!T!XGVO@$```"%]G490SA?$G?!N`````"%P'04N`$```#IL````+@!````
+MZ^N-=@"+$HU%##G0#X5[____BU44C444.=`/A(8```"0C8)P]O__BTPD(#F*
+M</;__W5FB<.^`````(!X$@!V0I")\0^VP<'@!`'8C8B0`0``OP````"#N)`!
+M````=1*#>00`=0R#>0@`=0:#>0P`=`6_`0```(7_=1A&B?`X0Q)WO[@`````
+MA<!T#K@!````ZQFX`0```.ONBQ*-110YT`^%>____[@`````@\0,6UY?7<.)
+M]E93@^P$BUPD$(LS@'M>`'4$QD->`8![7@%T,8![7`!U*X![7@9T)8![7@-T
+M'X![7A!T&8![7@)U#X/L#/]S*.@X'P``@\00D,9#7@N#[`Q3Z/S___^)-"3H
+M_/___X/$%%M>PY!55U93@^PTBWPD3&A`'@``BT0D3/\PZ/S___^)1"0TBU0D
+M4(M:+(M+)(E,)##'1"00`````(/$$(-[8`!T#XI#78/@`0^VP#M$)$AU7+@`
+M````@WMD``^$#0,``(/L#(ML)#"#Q6Q5Z/S___^)1"00B<:#Q`S_="1,4%/_
+M4V2#Q!"%P'4G@^P(_W0D"%7H_/___[@`````@\00Z<H"``")'X/'$.F7`@``
+MBW-@O0````"+1"1`BD`PB$0D!XM,)$"+44B+24R)5"0(B4PD#,9$)`8`BT0D
+M(("XH@`````/AO0!```/MD0D!HM4)""*G$*E````#[:$0J0```"-!$"-3,(D
+M.%D,=2(/MT$.N@`````#000340B)1"00B50D%&:+21!FB4PD'NM/.%D-=2P/
+MMT$2N@`````#000340B)1"00B50D%&:+211FB4PD'NLHB1^#QQ#I@0```(M!
+M!(M1"(E$)!")5"04BU0D(&:+DIP```!FB50D'CI<)`</A10!``"+7"00*UPD
+M",'C"71,@WPD2`!T#XM,)"2+@=@```")1PCK%HM,)"2+@=P```"+D>````")
+M1PB)5PS'1P0`````@?L`$```=H;'!P`0``"#QQ"!ZP`0``!UM`^W7"0>P>,)
+MBPZ)R"GH.=AR,HGHN@`````#1@@35@R)1PB)5PR)'\='!`````"#QQ`!W3G-
+M=3R]`````(/&$.LRC78`B>BZ``````-&"!-6#(E'"(E7#(G(*>B)!\='!```
+M``"#QQ`IPX/&$+T`````ZY4/MT0D'HE$)`C'1"0,`````(M$)!"+5"04`40D
+M"!%4)`R+3"1`#[=!4+H``````T%($U%,BTPD##'1,T0D"`G!=$?K+0'=ZRD/
+MMUPD'L'C"9"+#HG(*>@YV'?IB<@IZ"G#@WX$`'4*@\80O0````#KX/Y$)`:*
+M1"0&BU0D(#B"H@````^'#/[__XM,)$`/MT%0BUE(`<,K7"0(P>,)=%*)]H-\
+M)$@`=`^+5"0DBX+8````B4<(ZQ:+3"0DBX'<````BY'@````B4<(B5<,QT<$
+M`````('[`!````^&</W__\<'`!```(/'$('K`!```'6PQT?T`0```(,\)`!T
+M%X/L"/]T)`B+1"0P@\!L4.C\____@\00N`$```"#Q"Q;7E]=PXUV`%=64XMT
+M)!"+7BR+>R2`?EX!=#^`?EX0=3.#[`@/MT904/]V3/]V2`^V1C!0_W,H@^P,
+M:$`>``#_,^C\____@\044.BUI?__@\0@B?:*1EZ(0UZ#[`A6_W,$Z/S___^+
+M0P3_2`B#Q!"*AZ$```!`B(>A````.H>@````=4"`>UX`=03&0UX!@'M>`70D
+M@'M>!G0>@'M>`W08@'M>`G4.@^P,_W,HZ/L:``"#Q!#&0UX+@^P,4^C\____
+M@\006UY?PU575E.#[#R+5"10BT0D5(M`*(E$)"B+2!")3"0DBUPD5(M;)(E<
+M)"")QXM`/`M'.'42BT=$"T=`=0J)R(/`##E!#'0*N`````#I4`0``(V"^```
+M`(E$)#B!PO@"``")5"0TN0````"Z@````(M$)#2("$!*=?K&1"0S`(M4)""`
+MNIX`````#X8\`P``#[9$)#.-!$"+3"0@BT3!)(E$)"R)QK$`@'@2`'9!B?8/
+MML'!X`0!\(V0D`$``+L`````@[B0`0```'44@WH$`'4.@WH(`'4(@WH,`'0'
+MB?:[`0```(7;=1E!.$X2=\&X`````(7`=!&X`````.F@`P``N`$```#KZXM<
+M)"R*F_2&``"(7"0RBWPD+#B?]88```^"D0$``)"*1"0RBU0D+#A"$P^$L0``
+M``^VR(M<)#B-+,N+?"0TC3Q/B7PD'(G3#[>$BO2%``"Z`````(G&B=<#<P@3
+M>PQFBXR+]H4``&:)3"0:BT0D'&:#.`!T50^W`+H`````B<&)TP--`!-=!`^W
+M1"0:N@`````!\!'Z.=IR#7<$.<AV!P^W3"0:`?$Y?01R#7<%.74`=@:)=0")
+M?02)R&8K10"+7"0<9HD#Z<T```")=0")?01FBT0D&HM\)!QFB0?IM@```(M4
+M)"B`>@@(#X6H````BTPD)(-Y'$`/AIH````/MFPD,HGHBUPD.(TLZXM\)#2-
+M!$>)1"04BT0D+(MP"(MX#&:+4!!FB50D$HM,)!1F@SD`=%(/MP&Z`````(G!
+MB=,#30`3700/MT0D$KH``````?`1^CG:<@UW!#G(=@</MTPD$@'Q.7T$<@UW
+M!3EU`'8&B74`B7T$B<AF*T4`BUPD%&:)`^L2B74`B7T$9HM$)!*+?"049HD'
+M_D0D,HI4)#*+3"0L.)'UA@``#X-P_O__BUPD*(!["`@/A>X```"+?"0D@W\<
+M0`^&X````(M$)"P/MI#UA@``#[>$D/2%``"+3"0L#[>4D?:%```!T`^W41`Y
+MT`^%LP```(I<)#(X61)W!<9$)#(`BD0D,HM4)"PX0A,/A90````/MNB)Z(M,
+M)#B-+.F+7"0TC01#B40D#(MR"(MZ#&:+4A!FB50D"HM,)`QF@SD`=%(/MP&Z
+M`````(G!B=,#30`3700/MT0D"KH``````?`1^CG:<@UW!#G(=@</MTPD"@'Q
+M.7T$<@UW!3EU`'8&B74`B7T$B<AF*T4`BUPD#&:)`^L2B74`B7T$9HM$)`J+
+M?"0,9HD'_D0D,XI4)#.+3"0@.)&>````#X?$_/__BUPD(,:#H`````#&@Z$`
+M````QD0D,@"+?"0H@'\P``^&K`````^V="0RBT0D-&:#/'``#X2#````BU0D
+M*(M<LDB+3"14BT$$_T`(@^P,_W$$Z/S___^+?"1DBQ>)$(M7!(E0!(M7-(E0
+M-(/$!(M4)"S^@J````"+3"1`9HL4<6:)4%"+?"1$BQ3WBTSW!(E02(E(3(!(
+M70+'0&1,*`@`QT!HP"L(`(E8*(M4)&")4"R)<#!0Z/S___^#Q!#^1"0RBDPD
+M,HM<)"@X2S`/AU3___^X`0```(/$/%M>7UW#B?955U93@^Q4:$`>``"+1"1L
+M_S#H_/___XE$)%B+5"1PBU(DB50D5(M,)'"+22B)3"1,@\00BT0D8/9`700/
+MA/\'``#'1"1``````("ZG@`````/A&\'``"+5"1`C012BTPD1(M$P22)1"0X
+MBH#TA@``B$0D-XM4)#@X@O6&```/@D(!``"*3"0WBT0D.#A($P^$&0$```^V
+MP8G"P>($BTPD.(V4"I`!``")5"0P#[>4@?2%```/M[2!]H4``+\`````C78`
+M@_H?=T^)^0^VP8M,)#"-'(&)U;D@````*=$Y\78"B?&#^2!U"\<#_____^L1
+MC78`N`$```#3X$B)Z=/@"0.X(````"G0.?!S%8UT%N"Z`````.L#@^H@1XGX
+M/`-VH@^V;"0WB>J)Z,'@!(M,)#B-K`B0!0``#[><D?2%```/M[21]H4``+\`
+M````B?:#^Q]W3XGZ#[;"C52%`(E<)"RY(````"G9.?%V`HGQ@_D@=0C'`O__
+M___K$+@!````T^!(BDPD+-/@"0*X(````"G8.?!S%XUT'N"[`````.L%B?:#
+MZR!'B?@\`W:B_D0D-XI4)#>+3"0X.)'UA@``#X.^_O__BT0D8/9`70@/A-D%
+M``"+5"0\BX)D`0``A<!U"8M"#(N`9`$``(!X%``/A-0"``"+3"0XBHGTA@``
+MB$PD-P^VP8M4)#AFBY2"](4``&:)5"0J9H72#X0,`0``P>`$BTPD.(V$")`!
+M``")1"0DOP`````/M_*R`(/_'W=*#[;"BTPD)(T<@8G]N2`````I^3GQ=@*)
+M\8/Y('4(QP/_____ZPZX`0```-/@2(GIT^`)`[@@````*?@Y\',4C70^X+\`
+M````ZP.#[R!"@/H#=J@/MD0D-\'@!(M4)#B-A!"0!0``B40D(+\`````#[=T
+M)"JR`(/_'W=*#[;"BTPD((T<@8G]N2`````I^3GQ=@*)\8/Y('4(QP/_____
+MZPZX`0```-/@2(GIT^`)`[@@````*?@Y\',4C70^X+\`````ZP.#[R!"@/H#
+M=J@/MT0D*E!J``^V1"0_BU0D0/]T@ACH+XW__X/$#,9$)#<`BTPD.("Y](8`
+M```/AFL$``")]HI$)#>+5"0X.$(3#X17`0``#[;`P>`$`="-D)`%``"Y````
+M`(.XD`4```!U$H-Z!`!U#(-Z"`!U!H-Z#`!T!;D!````A<D/A1P!```/MDPD
+M-XG(P>`$BU0D.(V$$)`!``")1"0<OP`````/MUH0O@````"0@_\?=TR)\0^V
+MP8M,)!R-%(&)_;D@````*?DYV78"B=F#^2!U",<"_____^L.N`$```#3X$B)
+MZ=/@"0*X(````"GX.=AS%8U<.^"_`````.L#@^\@1HGP/`-VI0^V5"0WB=#!
+MX`2+3"0XC80(D`4``(E$)!B_``````^W61"^`````(GV@_\?=TR)\@^VPHM,
+M)!B-%(&)_;D@````*?DYV78"B=F#^2!U",<"_____^L.N`$```#3X$B)Z=/@
+M"0*X(````"GX.=AS%8U<.^"_`````.L#@^\@1HGP/`-VI0^V1"0WBU0D./]T
+M@ACH%XO__X/$!/Y$)#>*3"0WBT0D.#B(](8```^'@/[__^GD`@``BU0D.(J2
+M]88``(A4)#</MLJ+5"0X9HN$BO2%``!F`X2*]H4``&:)1"0J9CE"$`^&%P$`
+M`(G(P>`$C800D`$``(E$)!0/MUPD*@^W<A`IWK(`@_L?=TH/ML*+3"04C3R!
+MB=VY(````"G9.?%V`HGQ@_D@=0C'!______K#K@!````T^!(B>G3X`D'N"``
+M```IV#GP<Q2-=![@NP````#K`X/K($*`^@-VJ`^V1"0WP>`$BU0D.(V$$)`%
+M``")1"00#[=<)"H/MW(0*=ZR`(/['W=*#[;"BTPD$(T\@8G=N2`````IV3GQ
+M=@*)\8/Y('4(QP?_____ZPZX`0```-/@2(GIT^`)![@@````*=@Y\',4C70>
+MX+L`````ZP.#ZR!"@/H#=JB+5"0X#[="$`^W5"0J*=!04@^V1"0_BTPD0/]T
+M@1CH1XK__X/$#/Y$)#>*1"0WBU0D.#A"$@^&A`$``(UV`(I,)#>+1"0X.$@3
+M#X1;`0``#[;!P>`$`T0D.(V0D`4``+D`````@[B0!0```'42@WH$`'4,@WH(
+M`'4&@WH,`'0%N0$```"%R0^%'@$```^V5"0WB=#!X`2+3"0XC80(D`$``(E$
+M)`R_``````^W61"^`````(UV`(/_'W=,B?(/ML*+3"0,C12!B?VY(````"GY
+M.=EV`HG9@_D@=0C'`O_____K#K@!````T^!(B>G3X`D"N"`````I^#G8<Q6-
+M7#O@OP````#K`X/O($:)\#P#=J4/ME0D-XG0P>`$BTPD.(V$")`%``")1"0(
+MOP`````/MUD0O@````")]H/_'W=,B?(/ML*+3"0(C12!B?VY(````"GY.=EV
+M`HG9@_D@=0C'`O_____K#K@!````T^!(B>G3X`D"N"`````I^#G8<Q6-7#O@
+MOP````#K`X/O($:)\#P#=J4/MD0D-XM4)#C_=((8Z"N(__^#Q`3^1"0WBDPD
+M-XM$)#@X2!(/AW_^____1"1`BU0D1`^V@IX````[1"1`#X^1^/__BTPD/("Y
+M'0(```)T"HM$)&#V0%T(=&3'1"1``````(M4)$2`NIX`````=#Z+3"1`C01)
+MBU0D1(M$PB3'@.R%````````@^P(4/]T)%3H+)+__X/$$/]$)$"+3"1$#[:!
+MG@```#M$)$!_PH/L#/]T)&SHA.[__X/$$.M$QT0D0`````"+1"1$@+B>````
+M`'0O@^P,BU0D3(T$4HM,)%#_=,$DZ%>L__^#Q!#_1"1`BU0D1`^V@IX````[
+M1"1`?]&#Q$Q;7E]=PXUV`%575E.#[$R+7"1DBT,DB40D1(M3*(E4)$#'1"0T
+M`````&:+2C)FB4PD/F:!^8``=@=FQT0D/H``9HM4)#Z+1"1$9HF0G````(G0
+M9L'H`P^WR(7)=0*Q`8M$)$`/ME`P@'@P!'80C4+]T?@!P@^ORHE,)"CK"$(/
+MK\J)3"0H@'M<`74OBU0D1,:"G@````''0B0`````BTPD:(M!$(M1%(M<)$2)
+M0RB)4RR+1"0HZ3T#``"+3"1H#[9!(KH`````4E"+7"1P_W,$_S/H_/___X/$
+M$(A$)#.*0R*(1"0RBU0D0(!Z"`AU(0^V0C"Z`````%)0BUPD</]S#/]S".C\
+M____@\00*$0D,HI$)#(X1"0S@%PD,_^+3"1`9HM1,HU"_XM<)&AFBTL8(<%F
+M*<IFB50D/&8Y4R!S"6:+0R!FB40D/(M4)$3&@IX`````QH*?`````,:"H@``
+M``#'1"0D`````,=$)"P!````#[=$)#[WV(E$)!B)P\'['XE<)!P/M\&Z````
+M`(G'B=6+3"1H`WD0$VD49HM$)#Y((?AFBUPD/F8IPV:)7"0ZBT0D/&8YPW8%
+M9HE$)#J+3"08(?F+7"0<(>N#?"0L``^$F0```,=$)"P`````9HM$)#Z+5"1`
+M9CE",G9'O@````"+5"1$#[:"G@```(E$)!2#^`!^+HGVC01VBU0D1(U$PB2)
+M1"0TBU`(,=J)5"0$BU`$,<J+1"0$"=!T0D8Y="04?]2+5"1$BH*>````#[;P
+M0(B"G@```(T$=HU$PB2)1"0TQP``````B4@$B5@(QD`,0,9`#0"+1"0H`40D
+M)(I4)#.+1"0T.%`,=AF(4`R)^&8IR(M4)#1FB4(.9HM$)#IFB4(0BE0D,XM$
+M)#0X4`US&8A0#8GX9BG(BU0D-&:)0A)FBTPD.F:)2A2+7"1$#[:+H@```(M$
+M)#0IV(/H),'X`XT4@(T4D(T4D(G0P>`(`<*)T,'@$`'"]]J(E$ND````#[:#
+MH@```(I4)#.(E$.E````_H.B````9HM<)#J+3"1H9BE9(&8I7"0\=!D/M\.Z
+M``````''$=7'1"0L`0```.EE_O__BT0D:&:#>"``#X2M````N0````#^1"0S
+MBE0D,CA4)#-U!/Y$)#.*7"0SBT0D0#A8,'5)@'@("'48@'PD,@!T!OY,)#+K
+M"XM4)&B*4B*(5"0R@'PD,@`/E$0D,XM<)$`/MT,RN@````"+7"1H`4,0$5,4
+MQT0D+`$```#K%V:+5"0^BT0D0&8Y4#)V",=$)"P!````BUPD:&:+6R!FB5PD
+M/(M$)$!F.U@R#X:A_?__9HM0,F:)5"0\Z9/]__^+1"0D@\1,6UY?7<.0@^P,
+MBU0D%(-\)!@`=!+&0EX+@^P,4N@=ZO__@\00ZR6+0B3'0!@H,0@`B5`<QT`@
+M`````(/L"(/`&%#_,NC\____@\00@\0,PXUV`%575E.#[!1H0!X``(M$)"S_
+M,.C\____B<6+1"0PBW`DOP````"#Q!"`OIX`````=#F-=@"-''^-'-Z#[`P/
+MMX:<````4/]S+/]S*(M$)#C_<"A5Z'"&__^)0R2#Q"!'#[:&G@```#GX?\J#
+M[`S_="0LZ)X$``"#Q!"#^`)U/K\`````@+Z>`````'0?@^P(C01__W3&)%7H
+M1(O__X/$$$</MH:>````.?A_X8/L#/]U`.C\____@\00C78`@\0,6UY?7<-5
+M5U93@^P,O@````"+1"0L@+B>``````^$E0```(T$=HM4)"R-1,(DB40D"(M<
+M)"2+4Q`/MDLQBT`$T^@E_P,``(L2BQR"A=MT,HM$)`B+:`B+>`2+0PB+4PR)
+MZ3'1,?@)P70,BYN<"0``A=MUYNL,BU0D"(D:A=MU)(GVA?9^%$Z-!':+7"0L
+MQT3#)`````"%]G_LN/_____I'@$``$:+5"0L#[:"G@```#GP#X]K____O@``
+M``"+7"0L@+N>``````^$C@```(T$=HM4)"R+7,(D@+OXA@```74HQH/XA@``
+M`(V#D`D``(M(!(N3D`D``(E*!(D1B8.0"0``B4`$ZSJ)]H"[^(8```-U+\:#
+M^(8```"+1"0@_XC0````C8.0"0``BT@$BY.0"0``B4H$B1&)@Y`)``")0`20
+M_H/YA@``1HM4)"P/MH*>````.?`/CW+___^#[`S_="0TZ.X"``"#Q!"#^`)U
+M3;X`````BUPD+("[G@````!T*H/L"(T$=HM4)#3_=,(D_W0D+.B)B?__@\00
+M1HM<)"P/MH.>````.?!_UH/L#(M$)"S_,.C\____@\00N`````"#Q`Q;7E]=
+MPU575E.#[&2+1"1XBP")1"0D:$`>``!0Z/S___^)1"0HBY0D@````(M2*(E4
+M)"2+6A"#Q!"+3"1P@'E<!'5.BT$DBU,(B5`4B4L(@^P,_W0D(.BZY?__@\00
+MA<!T&(/L"/]T)!S_="0DZ-?;__^#Q!#I#P(``(/L#/]T)"#H'XC__X/$$.G[
+M`0``C78`BW0D<(!^7``/A1H!``#V1ET&=1C&1EX!@^P,5NC\____@\00Z<\!
+M``"-=@"+1"1P]D!=!'0RQT,<`````(-["`!T8)"+0PB+4"2+4A2)4PC&0%X!
+M@^P,4.C\____@\00@WL(`'7>ZSN+0Q2+4QB+="1PBTY,,=$S1D@)P74%_T,<
+MZP?'0QP`````BTPD<`^W05"Z``````-!2!-13(E#%(E3&(M$)'"+6$B+<$R)
+M7"0XB70D/&:+0%!FB40D0(M,)!2*03!(B$0D0@^V23$/K?/3[O;!('0'B?.^
+M`````(E<)"")="0D#[9$)$*Z`````%)05E/H_/___X/$$(E$)"B)5"0LBUPD
+M%`^V2S$/I<+3X/;!('0'B<*X`````(E$)#")5"0TZVV+="04BT9$"T9`=!R+
+M1"1PQD!>!H/L#%#H_/___X/$$.FK````C78`BU0D%`^W4C*)5"0(QT0D#```
+M``"+7"1PBWM(BT0D"/?GB<&)TXML)`B+5"1P#Z]J3(G>`>X/KWPD#(T</HE,
+M)#")7"0TBTPD<(M9)(/L!(U$)"104?]T)"CH^O;__XD#QT,0`````%/_M"2$
+M````_W0D+/]T)#3HY/O__X/$((7`="7'0P3\/0@`BW0D<(ES",=##`````"#
+M[`A3_W0D*.C\____@\00@\1<6UY?7<-55U93@^P4:$`>``"+1"0L_S#H_/__
+M_XE$)!B+5"0PBVHDOP````"#Q!"`O9X`````=&F0C01_BUS%)("[^(8```)U
+M3(G>BTPD((.[\(4```!T)(M1)(N#\(4``(M`)(M`%(E"%(N#\(4``(M`)(M4
+M)"")4!3K!HM!)(E(%(F.\(4``+@!````Z>L!``"-=@!'#[:%G@```#GX?YB_
+M`````("]G@`````/A,H```")]HT$?XU$Q0"-2"2+6"2+1"0@@'A<``^%G0``
+M`(I!#(B#](8``(I!#8B#]88```^VD_2&```/ML`YT'Q]D`^V@_2&```YT'4=
+M9HM!#F:)A)/TA0``9HM!$&:)A)/VA0``ZTF-=@`/MH/UA@``.=!U'6:+01)F
+MB823](4``&:+011FB823]H4``.LAC78`#[9#$SG0=!9FQX23](4`````9HM#
+M$&:)A)/VA0``0@^V@_6&```YT'V&B?9'#[:%G@```#GX#X\X____BU0D(/9"
+M70)T1H/L"%+_="04Z.'G__^#Q!"$P'0ROP````"`O9X`````=!F-!'^+1,4D
+M_HCYA@``1P^VA9X````Y^'_GN`(```#IL0```)"_`````("]G@````!T4XMT
+M)`B#QA2-=@"-!'^+7,4DQH/XA@```HV3D`D``(M*!(N#D`D``(E(!(D!BT8$
+MB58$B;.0"0``B4($B1"+1"0@B8/LA0``1P^VA9X````Y^'^WBU0D(/9"701T
+M%X/L!&BP/0@`4O]T)!3H*X'__X/$$.LIBU0D((M"),=`&"@Q"`")4!S'0"``
+M````@^P(@\`84/\RZ/S___^#Q!"X`````(/$#%M>7UW#4X/L"(M$)!"+6!"#
+M>P@`="6-=@"+0PB+4"2+4A2)4PC&0%X-@^P,4.C\____@\00@WL(`'7>@\0(
+M6\.04X/L$(M<)!AH0!X``/\SZ/S___^+6Q"#P%2)!"3H_/___XD#@\00N/__
+M__^#.P!T([D`````N@`0``"+`XUV`(@(0$IU^HU##(E##(E#$+@`````@\0(
+M6\.-=@!55U93@^P4BUPD*&A`'@``_S/H_/___XG'BT,0B40D&(/$$(,X``^$
+M!@$``+T`````C78`BU0D"(L"BS2HA?8/A((```"-=@"`OOB&```#=2_&AOB&
+M````_X_0````C8:0"0``BT@$BY:0"0``B4H$B1&)AI`)``")0`3K)XUV`,:&
+M^(8```"-AI`)``"+2`2+EI`)``")2@2)$8F&D`D``(E`!,>&F`D```````"+
+MGIP)``"#[`A65^@Z?/__B=Z#Q!"%VW6!18']_P,```^&8/___X/L"(M$)!#_
+M,(U'5%#H_/___XM4)!C'`@````"+2@R+&8/$$(G0@\`,.<AT,8M1!(L!B5`$
+MB0*)"8E)!(/L"%&-A[0```!0Z/S___^#Q!")V8L;BT0D"(/`##G(=<^#Q`Q;
+M7E]=PXGV55=64X/L'+X`````OP````"]`````(M$)#"`>#``=%L/ME`PB50D
+M%(M,)#"+1+%(A<!T"?:`'`(```%U-[@!````N@````")\0^EPM/@]L$@=`>)
+MPK@`````B40D"(E4)`R+1"0("?B+5"0,">J)QXG5B?9&.70D%'>MBTPD,(M1
+M1#'JBT%`,?@)PG03B7E`B6E$@^P,4>C\____@\00D(/$'%M>7UW#5E.#[!"+
+M="0<BUX,5NC\____N@````"#Q!"`>S``="$Y=)-(=1*#[`A24^B`C/__@\00
+MZPR-=@!"#[9#,#G0=]_V@QP"```!="[V@T@!```$=26#[`Q3Z"S>__^#Q!"%
+MP'05Z/S___^)0RB#[`Q3Z/S___^#Q!"0@\0$6U[#B?975E.+7"00BW0D%(/L
+M"&A`'@``4^C\____B<>)'"3H_/___XF'S````,'@#(G#P>L04V@4AP``5HU'
+M/%#H_/___X/$((T$6\'@!"G8T>!0:,0```!6C4<D4.C\____@\00:A!H`!``
+M`%:-1U10Z/S___^#Q!!J`6@@`0``5HU';%#H_/___X/$$,>'U`````,```!H
+M,!@``(/L#.C\____@\0,4%:-AYP```!0Z/S____'!"0!````:``0``!H`!``
+M`%:-AX0```!0Z/S___^#Q"!J$&H85HV'M````%#H_/___X/$$%M>7\.)]E93
+M@^P,BUPD&&A`'@``4^C\____B<:)&(U`!(E&!(E&"(/$#(U&#(E&#(E&$(U&
+M%(E&%(E&&(U&'(E&'(E&(/^VI````(V&G````%!3Z/S___^)AN0```"#Q`B-
+MAMP```!0C8:$````4.C\____B8;8````B;;H````QX;L````$"`(`,>&\```
+M``````"#Q`B-AN@```!04^C\____@\046U[#4X/L$&A`'@``_W0D'.C\____
+MB<.#Q`C_L.0```"-@)P```!0Z/S_____L^````#_L]P```#_L]@```"-@X0`
+M``!0Z/S___^#Q"A;PU575E.#[!2+="0H:$`>``#_-NC\____B<>]_____X/$
+M$(-^#`!T+;D`````BT8,B<*`>#``=!V)PXUV`#ETBDAU!HG-ZPZ)]D&)V@^V
+M0S`YR'_ID(M7#(U'##G0="2)PXV*</;__SFR</;__W4.BT8DB4$$B>B(012-
+M=@"+$CG3==Z+5Q2-1Q0YT'0FB<.)]HV*</;__SFR</;__W4.BT8DB4$$B>B(
+M012-=@"+$CG3==Z+5P2-1P0YT'0FB<.)]HV*</;__SFR</;__W4.BT8DB4$$
+MB>B(012-=@"+$CG3==Z#Q`Q;7E]=PXGV@^P8Q@5('@```6A`'@``Z/S___^X
+M`````(/$',.0D)"#[!1HH!X``/]T)!SH_/___VH!:"`!``#_="0L4.C\____
+M@\0LPXGV4X/L$&B@'@``_W0D'.C\____B<.)!"3H_/___XE#&(/$&%O#@^P4
+M:*`>``#_="0<Z/S___^#Q`C_<!A0Z/S___^#Q!S#C78`55=64X/L%(MT)"R+
+M1"0HBW@LBV\DBU]@:*`>``#_,.C\____BU`8@\00A=MT#XI'78/@`0^VP#M$
+M)"AU)XG3@W]D`'03@^P$_W0D+%)7_U=D@\00A<!U#+@`````Z=\```")]H!]
+M"?\/A*H````/MTT*P>$)BSLY^78TD`^V10B+5"0@.4(P=1N+`XD&BT,$B48$
+MBT,(B48(BT,,B48,@\80B?8I^8/#$(L[.?EWS0^V10B+5"0@.4(P=1R+0PB+
+M4PR)1@B)5@R)#L=&!`$```"X`0```.MI.?ES-XG(N@`````#0P@34PR)1@B)
+M5@R)^"G(B0:#>P0`=`['1@0!````N`$```#K.,=&!`````"#QA"#PQ")]HL#
+MB0:+0P2)1@2+0PB)1@B+0PR)1@R#QA"-0P2#PQ"#.`!TW+@!````@\0,6UY?
+M7<.-=@!75E.+?"00BU\LBW,DBT\PN`$```"Z``````^EPM/@]L$@=`>)PK@`
+M````]]#WTB-&$"-6%(E&$(E6%(!_7@%T!HI'7HA#7H/L"%?_<P3H_/___XM#
+M!/]("(/$$(M&%`M&$'46@'M>`'4$QD->`8/L#%/H_/___X/$$%M>7\.)]HM,
+M)`R+1"0(BU`DBD0D!#A""'449HM""F:)05"+`HM2!(E!2(E13,-FBT(,9HE!
+M4,=!2`````#'04P`````PY!55U93@^P(BU0D'(M$)""+:"2+6$B+<$QFBT!0
+M9HE$)`;'!"0`````N0````"`>C``#X30````D(M\BD@Y=QAW#P^"K0```#E?
+M%`^&I````(E=`(EU!(A-"+@!````N@`````/I<+3X/;!('0'B<*X`````(E%
+M$(E5%`^W1"0&N@`````!V!'R.U<8<E=W!3M'%'90QP0D`0```(U!`8A%"4&X
+M`0```+H`````#Z7"T^#VP2!T!XG"N``````+11`+512)11")511FBT<49BG8
+M9HE%"F:+5"0&9BG"9HE5#.LEB?;&10G_9HM$)`9FB44*ZQ20*U\4&W<800^V
+M0C`YR`^',?___XL$)(/$"%M>7UW#B?955U93@^P,BT0D((M`*(E$)`B+5"0@
+MBU(DB50D!(M,)""`>5P$#X7A````QT(0`````,="%`````"]`````(!X,``/
+MAK@!``")Z`^V^(M4)`B+=+I(A?8/A)<```#VAAP"```!#X2*````N`$```"Z
+M`````(GY#Z7"T^#VP2!T!XG"N`````"+3"0$"T$0"U$4B4$0B5$4BU0D((M"
+M!/]`"(/L#/]R!.C\____B<.+3"0PBP&)`XM!!(E#!(M!-(E#-(ES*,9#7`2*
+M45V#XC"*0UV#X,\)T(A#7<=#:#!-"`")2RR)>S")'"3H_/___X/$$(GV18GH
+MBU0D"#A",`^'1/___^GW````C78`_W0D(/]T)`SHT_W__X/$"(M,)`2+010+
+M01!U'(M$)"#&0%X"@^P,4.C\____@\00Z;\```"-=@"]`````(M4)`B`>C``
+M#X:I````D(GI#[;YN`$```"Z`````(GY#Z7"T^#VP2!T!XG"N`````"+3"0$
+M(T$0(U$4B=$)P71DBT0D"(MTN$B+5"0@BT($_T`(@^P,_W($Z/S___^)PXM,
+M)#"+`8D#BT$$B4,$BT$TB4,T@\00B7,HBD%=B$-=QT-H,$T(`,=#9.1+"`")
+M2RR)>S!345?HQ_S__U/H_/___X/$$$6)Z(M4)`@X0C`/AUK___^)]H/$#%M>
+M7UW#@^P8:*`>``#H_/___[@`````@\0<PP````````````"K)```UR0``%`E
+M``!0)0``4"4``%`E``#_)```)R4``%`E``!H)0``SC```,XP``!H,```;3``
+M`,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```
+MSC```'(P``!W,```?#```($P``"&,```BS```)`P``"5,```SC```,XP``#.
+M,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP
+M``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC``
+M`,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```
+MSC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.
+M,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP
+M``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC``
+M`,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```
+MSC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.
+M,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP``#.,```SC```,XP
+M``":,```GS```*0P``#.,```SC```+$P``#.,```SC```,XP``#.,```SC``
+M`,XP``#.,```SC```,XP``#.,```N3```+XP``##,```R#```%PQ``!F,0``
+M9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F
+M,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q
+M``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$`
+M`#DQ``!F,0``.3$``&8Q``!F,0``9C$``#DQ```Y,0``9C$``&8Q``!F,0``
+M9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F
+M,0``9C$``&8Q```Y,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q
+M``!F,0``9C$``&8Q``!F,0``9C$``&8Q```Y,0``.3$``#DQ```Y,0``9C$`
+M`&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``
+M9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F
+M,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q
+M``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``#DQ``!F,0``9C$`
+M`&8Q``!F,0``9C$``&8Q``!F,0``9C$``#DQ``!F,0``.3$``&8Q``!F,0``
+M9C$``#DQ```Y,0``9C$``&8Q``!F,0``.3$``&8Q``!F,0``9C$``&8Q``!F
+M,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q``!F,0``9C$``&8Q
+M``!F,0``9C$``&8Q``!F,0``.3$``&8Q```Y,0``9C$``&8Q``!F,0``.3$`
+M`#DQ``!4,0``5#$``%PQ``!4,0``5#$``%PQ``!4,0``5#$``%0Q``!4,0``
+M5#$``"\W``!--P``:S<``,8W```P.```Y64``.5E```L:P``+&L``"QK```L
+M:P``Y64``.5E```L:P``ZV0``$5E``#8:@``BFH``)=J``"Z:@``V&H``,YJ
+M``#$:@``V&H``-AJ``#8:@``V&H``,1J``"FL@``JK(``*ZR``"RL@``V+(`
+M`-BR``#8L@``V+(``-BR``#8L@``V+(``-BR``#8L@``V+(``-BR``#8L@``
+MMK(``+JR``"^L@``PK(``,:R``#*L@``SK(``-*R``#P``$`4`$!`'@!`0",
+M`0$`H`$!`+0!`0#0`0$`'@(!`$$"`0"Y`@$`@@(!`)8"`0#-`@$`L@,!`.`#
+M`0``!`$`+00!`$H$`0!G!`$`=@0!`%H"`0!N`@$`[`$!``4"`0""`@$`A00!
+M`&`P`0#H*@$`*BL!`(\K`0#Q*P$`&"P!`"$L`0"(+`$`D2P!`'0O`0!#+@$`
+M,2\!`&`P`0!@,`$`8#`!`&`P`0!@,`$`8#`!`&`P`0!@,`$`FBP!`*\L`0!-
+M+`$`?RP!`$,N`0!:,`$`"S(!`(`U`0#V-0$`.#8!`&XW`0`@3`$`%$P!`!1,
+M`0`.3`$`%$P!`!1,`0`43`$`%$P!`!1,`0`43`$`%$P!`!1,`0`43`$`%$P!
+M``Y,`0`@3`$`($P!``Y,`0`.3`$`($P!`"!,`0`:3`$`%$P!`!1,`0`43`$`
+M($P!`!1,`0`43`$`%$P!`$13`0"@40$`J5$!`+)1`0"[40$`[5$!``)2`0`.
+M4@$`05(!`%52`0!I4@$`?5(!`)=2`0"C4@$`KU(!`$13`0!$4P$`P%(!`/]2
+M`0!$4P$`1%,!`-12`0`H4P$`T%$!`-Q1`0!$4P$`&E(!`"92`0`R4@$`````
+M`````````````````%)O8VME=%)!240@,C<R>%\Q>"!305,@0V]N=')O;&QE
+M<@```/R8`0#\F`$`=)@!`(R8`0#\F`$`N)@!`%28`0"DF`$`T)@!`.28`0"K
+MQ@$`U\8!`%#'`0!0QP$`4,<!`%#'`0#_Q@$`)\<!`%#'`0!HQP$`SM(!`,[2
+M`0!HT@$`;=(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!
+M`,[2`0#.T@$`SM(!`'+2`0!WT@$`?-(!`('2`0"&T@$`B](!`)#2`0"5T@$`
+MSM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.
+MT@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2
+M`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!
+M`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`
+MSM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.
+MT@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2
+M`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!
+M`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`
+MSM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.
+MT@$`SM(!`,[2`0":T@$`G](!`*32`0#.T@$`SM(!`+'2`0#.T@$`SM(!`,[2
+M`0#.T@$`SM(!`,[2`0#.T@$`SM(!`,[2`0#.T@$`N=(!`+[2`0##T@$`R-(!
+M`%S3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`
+M9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!F
+MTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3
+M`0!FTP$`9M,!`#G3`0!FTP$`.=,!`&;3`0!FTP$`9M,!`#G3`0`YTP$`9M,!
+M`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`
+M9M,!`&;3`0!FTP$`9M,!`&;3`0`YTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!F
+MTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0`YTP$`.=,!`#G3
+M`0`YTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!
+M`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`
+M9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!F
+MTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`#G3
+M`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`#G3`0!FTP$`.=,!
+M`&;3`0!FTP$`9M,!`#G3`0`YTP$`9M,!`&;3`0!FTP$`.=,!`&;3`0!FTP$`
+M9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!F
+MTP$`9M,!`&;3`0!FTP$`9M,!`&;3`0!FTP$`.=,!`&;3`0`YTP$`9M,!`&;3
+M`0!FTP$`.=,!`#G3`0!4TP$`5-,!`%S3`0!4TP$`5-,!`%S3`0!4TP$`5-,!
+M`%33`0!4TP$`5-,!`"_9`0!-V0$`:]D!`,;9`0`PV@$`Y0<"`.4'`@`L#0(`
+M+`T"`"P-`@`L#0(`Y0<"`.4'`@`L#0(`ZP8"`$4'`@#8#`(`B@P"`)<,`@"Z
+M#`(`V`P"`,X,`@#$#`(`V`P"`-@,`@#8#`(`V`P"`,0,`@"F5`(`JE0"`*Y4
+M`@"R5`(`V%0"`-A4`@#85`(`V%0"`-A4`@#85`(`V%0"`-A4`@#85`(`V%0"
+M`-A4`@#85`(`ME0"`+I4`@"^5`(`PE0"`,94`@#*5`(`SE0"`-)4`@#PH@(`
+M4*,"`'BC`@",HP(`H*,"`+2C`@#0HP(`'J0"`$&D`@"YI`(`@J0"`):D`@#-
+MI`(`LJ4"`."E`@``I@(`+:8"`$JF`@!GI@(`=J8"`%JD`@!NI`(`[*,"``6D
+M`@""I`(`A:8"`&#2`@#HS`(`*LT"`(_-`@#QS0(`&,X"`"'.`@"(S@(`D<X"
+M`'31`@!#T`(`,=$"`&#2`@!@T@(`8-("`&#2`@!@T@(`8-("`&#2`@!@T@(`
+MFLX"`*_.`@!-S@(`?\X"`$/0`@!:T@(`"]0"`(#7`@#VUP(`.-@"`&[9`@"$
+M[@(`>.X"`'CN`@!R[@(`>.X"`'CN`@!X[@(`>.X"`'CN`@!X[@(`>.X"`'CN
+M`@!X[@(`>.X"`'+N`@"$[@(`A.X"`'+N`@!R[@(`A.X"`(3N`@!^[@(`>.X"
+M`'CN`@!X[@(`A.X"`'CN`@!X[@(`>.X"`*CU`@`$]`(`#?0"`!;T`@`?]`(`
+M4?0"`&;T`@!R]`(`I?0"`+GT`@#-]`(`X?0"`/OT`@`']0(`$_4"`*CU`@"H
+M]0(`)/4"`&/U`@"H]0(`J/4"`#CU`@",]0(`-/0"`$#T`@"H]0(`?O0"`(KT
+M`@"6]`(`4F]C:V5T4D%)1"`R-S9X(%-!4R!#;VYT<F]L;&5R``!P0`,`<$`#
+M`.@_`P``0`,`<$`#`"Q``P#(/P,`&$`#`$1``P!80`,`'VX#`$MN`P#$;@,`
+MQ&X#`,1N`P#$;@,`<VX#`)MN`P#$;@,`W&X#`$)Z`P!">@,`W'D#`.%Y`P!"
+M>@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z
+M`P#F>0,`ZWD#`/!Y`P#U>0,`^GD#`/]Y`P`$>@,`"7H#`$)Z`P!">@,`0GH#
+M`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`
+M0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!"
+M>@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z
+M`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#
+M`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`
+M0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!"
+M>@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z
+M`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#
+M`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!">@,`
+M#GH#`!-Z`P`8>@,`0GH#`$)Z`P`E>@,`0GH#`$)Z`P!">@,`0GH#`$)Z`P!"
+M>@,`0GH#`$)Z`P!">@,`0GH#`"UZ`P`R>@,`-WH#`#QZ`P#0>@,`VGH#`-IZ
+M`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#
+M`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`
+MVGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P"M
+M>@,`VGH#`*UZ`P#:>@,`VGH#`-IZ`P"M>@,`K7H#`-IZ`P#:>@,`VGH#`-IZ
+M`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#
+M`-IZ`P#:>@,`K7H#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`
+MVGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`K7H#`*UZ`P"M>@,`K7H#`-IZ`P#:
+M>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ
+M`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#
+M`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`
+MVGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P"M>@,`VGH#`-IZ`P#:
+M>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P"M>@,`VGH#`*UZ`P#:>@,`VGH#`-IZ
+M`P"M>@,`K7H#`-IZ`P#:>@,`VGH#`*UZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#
+M`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`VGH#`-IZ`P#:>@,`
+MVGH#`-IZ`P#:>@,`VGH#`*UZ`P#:>@,`K7H#`-IZ`P#:>@,`VGH#`*UZ`P"M
+M>@,`R'H#`,AZ`P#0>@,`R'H#`,AZ`P#0>@,`R'H#`,AZ`P#(>@,`R'H#`,AZ
+M`P"C@`,`P8`#`-^``P`Z@0,`I($#`%FO`P!9KP,`H+0#`*"T`P"@M`,`H+0#
+M`%FO`P!9KP,`H+0#`%^N`P"YK@,`3+0#`/ZS`P`+M`,`+K0#`$RT`P!"M`,`
+M.+0#`$RT`P!,M`,`3+0#`$RT`P`XM`,`&OP#`![\`P`B_`,`)OP#`$S\`P!,
+M_`,`3/P#`$S\`P!,_`,`3/P#`$S\`P!,_`,`3/P#`$S\`P!,_`,`3/P#`"K\
+M`P`N_`,`,OP#`#;\`P`Z_`,`/OP#`$+\`P!&_`,`9$H$`,1*!`#L2@0``$L$
+M`!1+!``H2P0`1$L$`))+!`"U2P0`+4P$`/9+!``*3`0`04P$`"9-!`!4300`
+M=$T$`*%-!`"^300`VTT$`.I-!`#.2P0`XDL$`&!+!`!Y2P0`]DL$`/E-!`#4
+M>00`7'0$`)YT!``#=00`974$`(QU!`"5=00`_'4$``5V!`#H>`0`MW<$`*5X
+M!`#4>00`U'D$`-1Y!`#4>00`U'D$`-1Y!`#4>00`U'D$``YV!``C=@0`P74$
+M`/-U!`"W=P0`SGD$`'][!`#T?@0`:G\$`*Q_!`#B@`0`^)4$`.R5!`#LE00`
+MYI4$`.R5!`#LE00`[)4$`.R5!`#LE00`[)4$`.R5!`#LE00`[)4$`.R5!`#F
+ME00`^)4$`/B5!`#FE00`YI4$`/B5!`#XE00`\I4$`.R5!`#LE00`[)4$`/B5
+M!`#LE00`[)4$`.R5!``<G00`>)L$`(&;!`"*FP0`DYL$`,6;!`#:FP0`YIL$
+M`!F<!``MG`0`09P$`%6<!`!OG`0`>YP$`(><!``<G00`')T$`)B<!`#7G`0`
+M')T$`!R=!`"LG`0``)T$`*B;!`"TFP0`')T$`/*;!`#^FP0`"IP$`%)O8VME
+M=%)!240@,C<X>"!305,@0V]N=')O;&QE<@``I.<$`*3G!``<YP0`-.<$`*3G
+M!`!@YP0`_.8$`$SG!`!XYP0`C.<$``````!3%04`?Q4%`/@5!0#X%04`^!4%
+M`/@5!0"G%04`SQ4%`/@5!0`0%@4`=B$%`'8A!0`0(04`%2$%`'8A!0!V(04`
+M=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`!HA!0`?
+M(04`)"$%`"DA!0`N(04`,R$%`#@A!0`](04`=B$%`'8A!0!V(04`=B$%`'8A
+M!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%
+M`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`
+M=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V
+M(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A
+M!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%
+M`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`
+M=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V
+M(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A
+M!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!"(04`1R$%
+M`$PA!0!V(04`=B$%`%DA!0!V(04`=B$%`'8A!0!V(04`=B$%`'8A!0!V(04`
+M=B$%`'8A!0!V(04`82$%`&8A!0!K(04`<"$%``0B!0`.(@4`#B(%``XB!0`.
+M(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB
+M!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%
+M``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%`.$A!0`.(@4`
+MX2$%``XB!0`.(@4`#B(%`.$A!0#A(04`#B(%``XB!0`.(@4`#B(%``XB!0`.
+M(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB
+M!0#A(04`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%
+M``XB!0`.(@4`#B(%``XB!0#A(04`X2$%`.$A!0#A(04`#B(%``XB!0`.(@4`
+M#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.
+M(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB
+M!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%
+M``XB!0`.(@4`#B(%``XB!0`.(@4`#B(%`.$A!0`.(@4`#B(%``XB!0`.(@4`
+M#B(%``XB!0`.(@4`#B(%`.$A!0`.(@4`X2$%``XB!0`.(@4`#B(%`.$A!0#A
+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
+M($1E=FEC92`E>`!&86EL960@=&\@=F5R:69Y(&-O;G1R;VQL97(`2&EG:%!O
+M:6YT(%1E8VAN;VQO9VEE<RP@26YC+@!O9&EN`$1E=FEC95])9#TE9`!$979I
+M8V4@)7@O)7@@<F5M;W9E9"X`1&5V:6-E("5X+R5X(')E;6]V960N`'-T87)T
+M(%-%4R!D979I8V4@)7``1&5V:6-E("5X('!O=V5R960@=7`N`$9O=6YD(%-%
+M4R!$979I8V4@)7@`1F%I;&5D('1O('9E<FEF>2!C;VYT<F]L;&5R`$AI9VA0
+M;VEN="!496-H;F]L;V=I97,L($EN8RX`;V1I;@!$979I8V5?260])60`1&5V
+M:6-E("5X+R5X(')E;6]V960N`$1E=FEC92`E>"\E>"!R96UO=F5D+@!S=&%R
+M="!315,@9&5V:6-E("5P`$1E=FEC92`E>"!P;W=E<F5D('5P+@!&;W5N9"!3
+M15,@1&5V:6-E("5X`$9A:6QE9"!T;R!V97)I9GD@8V]N=')O;&QE<@!(:6=H
+M4&]I;G0@5&5C:&YO;&]G:65S+"!);F,N`&]D:6X`1&5V:6-E7TED/25D`$1E
+M=FEC92`E>"\E>"!R96UO=F5D+@!$979I8V4@)7@O)7@@<F5M;W9E9"X`<W1A
+M<G0@4T53(&1E=FEC92`E<`!$979I8V4@)7@@<&]W97)E9"!U<"X`1F]U;F0@
+M4T53($1E=FEC92`E>`!&86EL960@=&\@=F5R:69Y(&-O;G1R;VQL97(`2&EG
+M:%!O:6YT(%1E8VAN;VQO9VEE<RP@26YC+@!O9&EN`$%U=&\@4F5B=6EL9`!2
+M96)U:6QD(%!R:6]R:71Y`$-O;G1I;G5E(%)E8G5I;&1I;F<@;VX@17)R;W(`
+M4W!I;F1O=VX@261L92!$:7-K("AM:6YU=&5S*0!3=&%G9V5R960@<W!I;G5P
+M`$9A:6QE9"!T;R!F;'5S:"!T87)G971S`$9A:6QE9"!T;R!S<&EN9&]W;B!D
+M979I8V5S``````````"6,`=W+&$.[KI1"9D9Q&T'C_1J<#6E8^FCE62>,HC;
+M#J2XW'D>Z=7@B-G2ERM,M@F]?+%^!RVXYY$=OY!D$+<=\B"P:DAQN?/>0;Z$
+M?=3:&NODW6U1M=3TQX73@U:8;!/`J&MD>OEB_>S)98I/7`$4V6P&8V,]#_KU
+M#0B-R"!N.UX0:4SD06#5<G%GHM'D`SQ'U`1+_84-TFNU"J7ZJ+4U;)BR0M;)
+MN]M`^;RLXVS8,G5<WT7/#=;<63W1JZPPV28Z`-Y1@%'7R!9AT+^U]+0A(\2S
+M5IF5NL\/I;VXGK@"*`B(!5^RV0S&).D+L8=\;R\13&A8JQUAP3TM9K:00=QV
+M!G';`;P@TI@J$-7OB86Q<1^UM@:EY+^?,]2XZ*+)!W@T^0`/CJ@)EAB8#N&[
+M#6I_+3UM")=L9)$!7&/F]%%K:V)A;!S8,&6%3@!B\NV5!FQ[I0$;P?0(@E?$
+M#_7&V;!E4.FW$NJXOHM\B+G\WQW=8DDMVA7S?-.,94S4^UAALDW.4;4Z=`"\
+MH^(PN]1!I=]*UY78/6W$T:3[]-;3:NEI0_S9;C1&B&>MT+A@VG,M!$3E'0,S
+M7TP*JLE\#=T\<050JD$")Q`0"[Z&(`S));5H5[.%;R`)U&:YG^1AS@[YWEZ8
+MR=DI(IC0L+2HU\<7/;-9@0VT+CM<O;>M;+K`((.X[;:SOYH,XK8#FM*Q=#E'
+MU>JO=]*=%2;;!(,6W',2"V/CA#MDE#YJ;0VH6FIZ"\\.Y)W_"9,GK@`*L9X'
+M?423#_#2HPB':/(!'O["!FE=5V+WRV=E@'$V;!GG!FMN=AO4_N`KTXE:>MH0
+MS$K=9V_?N?GY[[Z.0[ZW%]6.L&#HH];6?I/1H<3"V#A2\M]/\6>[T6=7O*;=
+M!K4_2S:R2-HK#=A,&PJO]DH#-F!Z!$'#[V#?5=]GJ.^.;C%YOFE&C+-ARQJ#
+M9KR@TF\E-N)H4I5W#,P#1PN[N18"(B\F!56^.[K%*`N]LI):M"L$:K-<I__7
+MPC'/T+6+GMDL':[>6[#"9)LF\F/LG*-J=0J3;0*I!@F</S8.ZX5G!W(35P`%
+M@DJ_E11ZN.*N*[%[.!NV#)N.TI(-OM7EM^_<?"'?VPO4TM.&0N+4\?BSW6AN
+M@]H?S1:^@5LFN?;A=[!O=T>W&.9:"(AP:@__RCL&9EP+`1'_GF6/::YB^-/_
+M:V%%SVP6>.(*H.[2#==4@P1.PK,#.6$F9Z?W%F#034=I2=MW;CY*:M&NW%K6
+MV68+WT#P.]@W4ZZ\J<6>N]Y_S[)'Z?^U,!SRO;V*PKK*,).S4Z:CM"0%-M"Z
+MDP;7S2E7WE2_9]DC+GIFL[A*8<0"&VA=E"MO*C>^"[2AC@S#&]\%6HWO`BT`
+M(```!$0````@`0`$1````@$```(Z```"`0$``CH```0!```+````!`$!``L`
+M```(`0``!EH!``@!`0`&6@$`$`$```,4`0`0`0$``Q0!`"`!```&*```(`$!
+M``8H``!``0```Q$``$`!`0`')P``@`$```M'`P"``0$`"T<#``8$!0$#`B!@
+MD%!2```````&!`4!`P)28A4`````````!@0%`0,"V&"?-CD\``````8$!0$#
+M`MA@D``````````$!08'``$"`P```````````````````````````````*L1
+M@)$```````(``````````````0```*L1@)0```````(``````````````0``
+M`$L;@)0```````(``````````````0````,1("<```````(`````````````
+M`0````,1(2<```````(``````````````0````,1(B<```````(`````````
+M`````0````,1$"<```````(``````````````0````,1$2<```````(`````
+M`````````0````@`````````````````````````````````````````L```
+M```````A````T%T!`)Q@`0#D80$`_&$!`/QF`0"@9`$`R%T!`/AF`0`T90$`
+M[&$!`$1N`0"T>P$`9(T!````````<0$`]&$!`,1R`0#(=P$`H'L!`&A[`0!H
+MCP$`-)@!``B9`0"XF0$`X)D!`(BA`0`(F@$`'&8!````````````O'L!`(1\
+M`0#<?P$`;(8!``````````````````````"6,`=W+&$.[KI1"9D9Q&T'C_1J
+M<#6E8^FCE62>,HC;#J2XW'D>Z=7@B-G2ERM,M@F]?+%^!RVXYY$=OY!D$+<=
+M\B"P:DAQN?/>0;Z$?=3:&NODW6U1M=3TQX73@U:8;!/`J&MD>OEB_>S)98I/
+M7`$4V6P&8V,]#_KU#0B-R"!N.UX0:4SD06#5<G%GHM'D`SQ'U`1+_84-TFNU
+M"J7ZJ+4U;)BR0M;)N]M`^;RLXVS8,G5<WT7/#=;<63W1JZPPV28Z`-Y1@%'7
+MR!9AT+^U]+0A(\2S5IF5NL\/I;VXGK@"*`B(!5^RV0S&).D+L8=\;R\13&A8
+MJQUAP3TM9K:00=QV!G';`;P@TI@J$-7OB86Q<1^UM@:EY+^?,]2XZ*+)!W@T
+M^0`/CJ@)EAB8#N&[#6I_+3UM")=L9)$!7&/F]%%K:V)A;!S8,&6%3@!B\NV5
+M!FQ[I0$;P?0(@E?$#_7&V;!E4.FW$NJXOHM\B+G\WQW=8DDMVA7S?-.,94S4
+M^UAALDW.4;4Z=`"\H^(PN]1!I=]*UY78/6W$T:3[]-;3:NEI0_S9;C1&B&>M
+MT+A@VG,M!$3E'0,S7TP*JLE\#=T\<050JD$")Q`0"[Z&(`S));5H5[.%;R`)
+MU&:YG^1AS@[YWEZ8R=DI(IC0L+2HU\<7/;-9@0VT+CM<O;>M;+K`((.X[;:S
+MOYH,XK8#FM*Q=#E'U>JO=]*=%2;;!(,6W',2"V/CA#MDE#YJ;0VH6FIZ"\\.
+MY)W_"9,GK@`*L9X'?423#_#2HPB':/(!'O["!FE=5V+WRV=E@'$V;!GG!FMN
+M=AO4_N`KTXE:>MH0S$K=9V_?N?GY[[Z.0[ZW%]6.L&#HH];6?I/1H<3"V#A2
+M\M]/\6>[T6=7O*;=!K4_2S:R2-HK#=A,&PJO]DH#-F!Z!$'#[V#?5=]GJ.^.
+M;C%YOFE&C+-ARQJ#9KR@TF\E-N)H4I5W#,P#1PN[N18"(B\F!56^.[K%*`N]
+MLI):M"L$:K-<I__7PC'/T+6+GMDL':[>6[#"9)LF\F/LG*-J=0J3;0*I!@F<
+M/S8.ZX5G!W(35P`%@DJ_E11ZN.*N*[%[.!NV#)N.TI(-OM7EM^_<?"'?VPO4
+MTM.&0N+4\?BSW6AN@]H?S1:^@5LFN?;A=[!O=T>W&.9:"(AP:@__RCL&9EP+
+M`1'_GF6/::YB^-/_:V%%SVP6>.(*H.[2#==4@P1.PK,#.6$F9Z?W%F#034=I
+M2=MW;CY*:M&NW%K6V68+WT#P.]@W4ZZ\J<6>N]Y_S[)'Z?^U,!SRO;V*PKK*
+M,).S4Z:CM"0%-M"ZDP;7S2E7WE2_9]DC+GIFL[A*8<0"&VA=E"MO*C>^"[2A
+MC@S#&]\%6HWO`BT`(```!$0````@`0`$1````@$```(Z```"`0$``CH```0!
+M```+````!`$!``L````(`0``!EH!``@!`0`&6@$`$`$```,4`0`0`0$``Q0!
+M`"`!```&*```(`$!``8H``!``0```Q$``$`!`0`')P``@`$```M'`P"``0$`
+M"T<#``8$!0$#`B!@D%!2```````&!`4!`P)28A4`````````!@0%`0,"V&"?
+M-CD\``````8$!0$#`MA@D`````````"K$8"1```````"``````````````0`
+M``"K$8"4```````"``````````````0```!+&X"4```````"````````````
+M``0````#$6`G```````"``````````````0````$````````````````````
+M`````````````````````&4!````````(0```"`%`P`L"`,`=`D#`(P)`P"0
+M#@,`-`P#`&P$`P",#@,`R`P#`'P)`P#8%0,`2",#`/@T`P``````E!@#`(0)
+M`P!8&@,`7!\#`#0C`P#\(@,`W#8#`*@_`P!\0`,`+$$#`%1!`P#\2`,`?$$#
+M`+`-`P``````\`0#`%`C`P`8)`,`<"<#```N`P``````````````````````
+MEC`'=RQA#NZZ40F9&<1M!X_T:G`UI6/IHY5DGC*(VPZDN-QY'NG5X(C9TI<K
+M3+8)O7RQ?@<MN.>1';^09!"W'?(@L&I(<;GSWD&^A'W4VAKKY-UM4;74],>%
+MTX-6F&P3P*AK9'KY8OWLR66*3UP!%-EL!F-C/0_Z]0T(C<@@;CM>$&E,Y$%@
+MU7)Q9Z+1Y`,\1]0$2_V%#=)KM0JE^JBU-6R8LD+6R;O;0/F\K.-LV#)U7-]%
+MSPW6W%D]T:NL,-DF.@#>48!1U\@68="_M?2T(2/$LU:9E;K/#Z6]N)ZX`B@(
+MB`5?LMD,QB3I"[&'?&\O$4QH6*L=8<$]+6:VD$'<=@9QVP&\(-*8*A#5[XF%
+ML7$?M;8&I>2_GS/4N.BBR0=X-/D`#XZH"988F`[ANPUJ?RT];0B7;&21`5QC
+MYO11:VMB86P<V#!EA4X`8O+ME09L>Z4!&\'T"()7Q`_UQMFP95#IMQ+JN+Z+
+M?(BY_-\=W6))+=H5\WS3C&5,U/M88;)-SE&U.G0`O*/B,+O40:7?2M>5V#UM
+MQ-&D^_36TVKI:4/\V6XT1HAGK="X8-IS+01$Y1T#,U],"JK)?`W=/'$%4*I!
+M`B<0$`N^AB`,R26U:%>SA6\@"=1FN9_D8<X.^=Y>F,G9*2*8T+"TJ-?'%SVS
+M68$-M"X[7+VWK6RZP""#N.VVL[^:#.*V`YK2L70Y1]7JKW?2G14FVP2#%MQS
+M$@MCXX0[9)0^:FT-J%IJ>@O/#N2=_PF3)ZX`"K&>!WU$DP_PTJ,(AVCR`1[^
+MP@9I75=B]\MG98!Q-FP9YP9K;G8;U/[@*].)6GK:$,Q*W6=OW[GY^>^^CD.^
+MMQ?5CK!@Z*/6UGZ3T:'$PM@X4O+?3_%GN]%G5[RFW0:U/TLVLDC:*PW83!L*
+MK_9*`S9@>@1!P^]@WU7?9ZCOCFXQ>;YI1HRS8<L:@V:\H-)O)3;B:%*5=PS,
+M`T<+N[D6`B(O)@55OCNZQ2@+O;*26K0K!&JS7*?_U\(QS]"UBY[9+!VNWENP
+MPF2;)O)C[)RC:G4*DVT"J08)G#\V#NN%9P=R$U<`!8)*OY44>KCBKBNQ>S@;
+MM@R;CM*2#;[5Y;?OW'PAW]L+U-+3AD+BU/'XL]UH;H/:'\T6OH%;)KGVX7>P
+M;W='MQCF6@B(<&H/_\H[!F9<"P$1_YYECVFN8OC3_VMA1<]L%GCB"J#NT@W7
+M5(,$3L*S`SEA)F>G]Q9@T$U':4G;=VX^2FK1KMQ:UMEF"]]`\#O8-U.NO*G%
+MGKO>?\^R1^G_M3`<\KV]BL*ZRC"3LU.FH[0D!3;0NI,&U\TI5]Y4OV?9(RYZ
+M9K.X2F'$`AMH790K;RHWO@NTH8X,PQO?!5J-[P(M`"````1$````(`$`!$0`
+M``(!```".@```@$!``(Z```$`0``"P````0!`0`+````"`$```9:`0`(`0$`
+M!EH!`!`!```#%`$`$`$!``,4`0`@`0``!B@``"`!`0`&*```0`$```,1``!`
+M`0$`!R<``(`!```+1P,`@`$!``M'`P`&!`4!`P(@8)!04@``````!@0%`0,"
+M4F(5``````````8$!0$#`MA@GS8Y/``````&!`4!`P+88)``````````JQ&`
+MD0```````@`````````````$````JQ&`E````````@`````````````$````
+M2QN`E````````@`````````````$`````Q&")P```````@`````````````$
+M````!``````````````````````````````````````````:`@```````"$`
+M``"4K`0`8*\$`*BP!`#`L`0`Q+4$`&BS!`#@JP0`P+4$`/RS!`"PL`0`#+T$
+M`'S*!``LW`0``````,B_!`"XL`0`C,$$`)#&!`!HR@0`,,H$`!#>!`#<Y@0`
+ML.<$`&#H!`"(Z`0`,/`$`+#H!`#DM`0``````&2L!`"$R@0`3,L$`*3.!``T
+MU00``````````````````````)8P!W<L80[NNE$)F1G$;0>/]&IP-:5CZ:.5
+M9)XRB-L.I+C<>1[IU>"(V=*7*TRV";U\L7X'+;CGD1V_D&00MQWR(+!J2'&Y
+M\]Y!OH1]U-H:Z^3=;5&UU/3'A=.#5IAL$\"H:V1Z^6+][,EEBD]<`139;`9C
+M8ST/^O4-"(W((&X[7A!I3.1!8-5R<6>BT>0#/$?4!$O]A0W2:[4*I?JHM35L
+MF+)"ULF[VT#YO*SC;-@R=5S?1<\-UMQ9/=&KK##9)CH`WE&`4=?(%F'0O[7T
+MM"$CQ+-6F96ZSP^EO;B>N`(H"(@%7[+9#,8DZ0NQAWQO+Q%,:%BK'6'!/2UF
+MMI!!W'8&<=L!O"#2F"H0U>^)A;%Q'[6V!J7DOY\SU+CHHLD'>#3Y``^.J`F6
+M&)@.X;L-:G\M/6T(EVQDD0%<8^;T46MK8F%L'-@P985.`&+R[94&;'NE`1O!
+M]`B"5\0/]<;9L&50Z;<2ZKB^BWR(N?S?'=UB22W:%?-\TXQE3-3[6&&R3<Y1
+MM3IT`+RCXC"[U$&EWTK7E=@];<31I/OTUM-JZ6E#_-EN-$:(9ZW0N&#:<RT$
+M1.4=`S-?3`JJR7P-W3QQ!5"J00(G$!`+OH8@#,DEM6A7LX5O(`G49KF?Y&'.
+M#OG>7IC)V2DBF-"PM*C7QQ<]LUF!#;0N.UR]MZULNL`@@[CMMK._F@SBM@.:
+MTK%T.4?5ZJ]WTIT5)ML$@Q;<<Q(+8^.$.V24/FIM#:A::GH+SP[DG?\)DR>N
+M``JQG@=]1),/\-*C"(=H\@$>_L(&:5U78O?+9V6`<39L&><&:VYV&]3^X"O3
+MB5IZVA#,2MUG;]^Y^?GOOHY#OK<7U8ZP8.BCUM9^D]&AQ,+8.%+RWT_Q9[O1
+M9U>\IMT&M3]+-K)(VBL-V$P;"J_V2@,V8'H$0</O8-]5WV>H[XYN,7F^:4:,
+MLV'+&H-FO*#2;R4VXFA2E7<,S`-'"[NY%@(B+R8%5;X[NL4H"[VRDEJT*P1J
+MLURG_]?",<_0M8N>V2P=KMY;L,)DFR;R8^R<HVIU"I-M`JD&"9P_-@[KA6<'
+M<A-7``6"2K^5%'JXXJXKL7LX&[8,FX[2D@V^U>6W[]Q\(=_;"]32TX9"XM3Q
+M^+/=:&Z#VA_-%KZ!6R:Y]N%WL&]W1[<8YEH(B'!J#__*.P9F7`L!$?^>98]I
+MKF+XT_]K847/;!9XX@J@[M(-UU2#!$["LP,Y829GI_<68-!-1VE)VW=N/DIJ
+MT:[<6M;99@O?0/`[V#=3KKRIQ9Z[WG_/LD?I_[4P'/*]O8K"NLHPD[-3IJ.T
+M)`4VT+J3!M?-*5?>5+]GV2,N>F:SN$IAQ`(;:%V4*V\J-[X+M*&.#,,;WP5:
+MC>\"+0`@```$1````"`!``1$```"`0```CH```(!`0`".@``!`$```L````$
+M`0$`"P````@!```&6@$`"`$!``9:`0`0`0```Q0!`!`!`0`#%`$`(`$```8H
+M```@`0$`!B@``$`!```#$0``0`$!``<G``"``0``"T<#`(`!`0`+1P,`!@0%
+M`0,"(&"04%(```````8$!0$#`E)B%0`````````&!`4!`P+88)\V.3P`````
+M!@0%`0,"V&"0`````````*L1@)$```````(``````````````@```*L1@)0`
+M``````(``````````````@```$L;@)0```````(``````````````@````,1
+M,"<```````(``````````````@````,10"<```````(``````````````@``
+M``,11"<```````(``````````````@````8```````````````````#/`@``
+M`````"$```!T4@8`0%4&`(A6!@"@5@8`H%L&`$19!@#`408`G%L&`-A9!@"0
+M5@8`Z&(&`%AP!@`(@@8``````*1E!@"85@8`:&<&`&QL!@!$<`8`#'`&`.R#
+M!@"XC`8`C(T&`#R.!@!DC@8`#)8&`(R.!@#`6@8``````$12!@!@<`8`*'$&
+M`(!T!@`0>P8`````````````````_P$`````````````````````````````
+M`````````````````0`````````8`````````"P````4````\,<&`/"O!@!,
+MJP8```````````#\J08`1*H&`,RP!@``````````````````````````````
+M````````````````````_P``W$8'``````#T1@<``0````'_``#02@<`````
+M`.A*!P`!`````O\``"1+!P``````/$L'``$````#_P``Y$L'``````#\2P<`
+M`0```#7_``!L3`<``````(1,!P`!````!/\``'A0!P``````G%`'``$````%
+M_P``0%$'``````!\40<``0````;_``"P5@<`/%<'`'Q7!P``````!_\``,A=
+M!P!@7@<`T%X'```````*_P``"%\'```````@7P<``0````O_``!D7P<`````
+M`+Q?!P``````#/\``'QE!P#D90<`!&8'```````-_P``/&8'`*1F!P#$9@<`
+M``````[_``#\9@<`O&<'`/1G!P``````#_\``"QH!P"4:`<`'&D'```````0
+M_P``5&D'`,!I!P#@:0<``````!'_``"\:@<``````"AK!P``````$O\``&!K
+M!P``````>&L'```````3_P``L&L'``````#(:P<``0```#3_```,;`<`````
+M`"1L!P`!````&/\``*AL!P``````/&T'``````!"_P``8&T'``````#T;0<`
+M`````!G_``#P7P<``````$A@!P``````&O\``'Q@!P``````U&`'```````=
+M_P``&&X'``````!P;@<``````![_``"H;@<``````"1O!P`!````'_\``!1P
+M!P"0<`<`\'`'```````@_P``)%D'`+!9!P#P60<``````"'_``#@40<`````
+M`!Q2!P`!````(O\``!AJ!P``````A&H'```````C_P``"&$'``````!@80<`
+M`````"3_``"080<``````.AA!P``````)?\``!AB!P``````<&('```````I
+M_P``/%L'`/Q;!P!`7`<``````"K_``"@8@<``````"AC!P``````*_\``"AQ
+M!P!X<0<`I'$'```````L_P``R%,'```````@5`<``0```"W_``"850<`/%8'
+M`'A6!P``````+O\``(!2!P``````O%('``$````O_P``A$L'``````"<2P<`
+M`0```#?_```@4P<``````(!3!P`!````./\``"A:!P#$6@<`!%L'```````Y
+M_P``>%P'`$Q=!P"070<``````#K_``"<5`<```````15!P`!````._\``!!T
+M!P``````='4'``$````\_P``W%`'````````40<``0```#W_``#03`<`````
+M`.A,!P`!````/O\``(1-!P``````H$T'``$```!#_P``@$X'``````"<3@<`
+M`0```$3_``!\3P<``````)A/!P`!````,O\``"A'!P``````2$<'``$````S
+M_P``L$@'`,Q(!P`P20<``````&3_``#<<0<```````!R!P`!````,/\``,1R
+M!P``````9','``$```!F_P``3%@'``````"(6`<``0```&?_``"T5P<`````
+M`,Q7!P`!````_____P``````````````````````````````````````````
+M!````````````````````````````````````%2J!P#0J0<`````````````
+M````````````````````````````````````````````````````````````
+M````````!0$````````<```````````````@````^*H'`$2O!P``````(*L'
+M`$2K!P``````````````````````````````````````````````````````
+M````````````````!@`!``````````````````0````0`````````#RU!P``
+M````````````````````````````````````````````````````````````
+M````````````````````````"`$!`@````!X"P```````"````"X````C$@(
+M`(1`"``,2`@`>$D(`!Q*"`#,10@`*$8(`)!%"`!H2@@`````````````````
+M````````````````````````````````!P`````````<```````````````8
+M````=$L(``1/"```````G$L(`,!+"```````````````````````````````
+M````````````````````````````````````1T-#.B`H1TY5*2`S+C0N,B!;
+M1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=
+M(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R
+M.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@
+M*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N
+M-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E
+M94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P
+M,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```
+M1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.
+M52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR
+M(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)3
+M1%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P
+M-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#
+M.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@
+M,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&
+M<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@
+M,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X
+M``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H
+M1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT
+M+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E
+M0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P
+M-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'
+M0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5
+M*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@
+M6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$
+M72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W
+M,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z
+M("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S
+M+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R
+M965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R
+M,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@`
+M`$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'
+M3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N
+M,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"
+M4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T
+M,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#
+M0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I
+M(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;
+M1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=
+M(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R
+M.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@
+M*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N
+M-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E
+M94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P
+M,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```
+M1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.
+M52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR
+M(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)3
+M1%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P
+M-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#
+M.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@
+M,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&
+M<F5E0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@
+M,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X
+M``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```1T-#.B`H
+M1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P-#`W,C@``$=#0SH@*$=.52D@,RXT
+M+C(@6T9R965"4T1=(#(P,#0P-S(X``!'0T,Z("A'3E4I(#,N-"XR(%M&<F5E
+M0E-$72`R,#`T,#<R.```1T-#.B`H1TY5*2`S+C0N,B!;1G)E94)31%T@,C`P
+M-#`W,C@``$=#0SH@*$=.52D@,RXT+C(@6T9R965"4T1=(#(P,#0P-S(X``!'
+M0T,Z("A'3E4I(#,N-"XR(%M&<F5E0E-$72`R,#`T,#<R.```+G-Y;71A8@`N
+M<W1R=&%B`"YS:'-T<G1A8@`N<F5L+G1E>'0`+G)E;"YR;V1A=&$`+G)O9&%T
+M82YS='(Q+C0`+G)O9&%T82YS='(Q+C$`+G)E;"YD871A`"YB<W,`+F-O;6UE
+M;G0````````````````````````````````````````````````````````?
+M`````0````8`````````-````")1"`````````````0`````````&P````D`
+M`````````````/!M"0"H]0``#`````$````$````"````"D````!`````@``
+M``````!@40@`B",`````````````(``````````E````"0``````````````
+MF&,*`*A%```,`````P````0````(````,0````$````R`````````.AT"``%
+M"P`````````````$`````0```$`````!````,@````````#M?P@`<`,`````
+M`````````0````$```!3`````0````,`````````8(,(`.0>````````````
+M`"``````````3P````D``````````````$"I"@!8"0``#`````<````$````
+M"````%D````(`````P````````!@H@@`H`@`````````````(`````````!>
+M`````0``````````````8*((`&@*``````````````$`````````$0````,`
+M`````````````,BL"`!G```````````````!``````````$````"````````
+M``````!@KP@`@$L```T```!-!```!````!`````)`````P``````````````
+MX/H(`!!S``````````````$`````````````````````````````````````
+M``````````,``0`````````````````#``(``````````````````P`#````
+M``````````````,`!``````````````````#``4``````````````````P`&
+M``````````````````,`!P`````````````````#``@`````````````````
+M`P`)``````````````````,`"@`````````````````#``L`````````````
+M`````P`,``````````````````,`#0`!````H&$``)0)```"``$`(P```.BS
+M```R`````@`!`#T````0$P$`4`````(``0!5````>)```$H````"``$`>```
+M`&PF``!Q`````@`!`(8```#$"0$`#0````(``0"5````%$L!`#\!```"``$`
+MK@```"S*```L`````@`!`,@```#$"P``70````(``0#>````I+L``&0!```"
+M``$``P$``)3"```>`````@`!`!L!``!LQ0``WP````(``0`X`0``.(L``*0`
+M```"``$`7@$``*`$```0`````0`'`'0!```,R@``'P````(``0"/`0``V$0!
+M`!D````"``$`J@$``!`#```_`````@`!`+L!``#(/0$`.`````(``0#,`0``
+M/$8``/X!```"``$`Z@$``,20`0#8!````@`!``<"``#P`P``0P````(``0`=
+M`@``>-8``!0!```"``$`.`(``"2````H`0```@`!`%\"``"\1`$`&@````(`
+M`0!Y`@``#(D``!P!```"``$`FP(```Q&`0"6`````@`!`+@"``!L50$`:P``
+M``(``0#%`@``*(H```\!```"``$`YP(``+BI``";`````@`!``L#```8#@``
+MF@,```(``0`N`P``5`(``!`````"``$`00,``"0,```O`````@`!`%4#``"4
+M>```KP````(``0!T`P``)$0``!@"```"``$`C@,``(10`0#9`@```@`!`*8#
+M``"(F0``,`````(``0"\`P``A!T``($````"``$`W`,``(B;``#C`````@`!
+M`/0#```H-```9`````(``0`-!```W$@!`"T!```"``$`*@0``"!<`0"7````
+M`@`!`#X$``#LC@``(`$```(``0!?!```C-<``&4!```"``$`>`0``#R"``!V
+M`````@`!`),$``#<VP````(```(``0"J!```P'P``-L````"``$`T@0``'2E
+M```N`````@`!`.H$``"0L@``20````(``0#_!```9/<``,,"```"``$`'04`
+M`.BD```E`````@`!`#H%```@F```90$```(``0!-!0``G#4``,<````"``$`
+M:04``"CZ``"?!@```@`!`(@%```<*0$`>P<```(``0"F!0``N)$``!0$```"
+M``$`P`4``%P?``!/`````@`!`-D%````"```(@````$``P#D!0``7-0``&H`
+M```"``$``P8``'0<```-`0```@`!`!X&``"`!```$`````$`!P`Q!@``K!\`
+M`)@````"``$`4@8````^`0`X`````@`!`&,&``"TP@``IP````(``0![!@``
+M_)8``)\````"``$`C`8``&0+``!=`````@`!`*$&``!8A```V`,```(``0#`
+M!@``P`$``$0````"``$`T@8``(@!```V`````@`!`.<&``#@#```-0$```(`
+M`0#]!@``T)<``$\````"``$`&`<``,SL``!7`````@`!`#@'``#TV```60``
+M``(``0!7!P``W"`!`*L````"``$`=`<``(3>``"+`````@`!`(H'```XL```
+MX0````(``0"O!P``&*0``#T````"``$`S`<``.2?```Q`````@`!`.('``"$
+MN0``?`````(``0``"```R*,``$T````"``$`'@@``*0\`0`X`````@`!`"X(
+M``!@````@`````$`"0`T"```R&0!`&L````"``$`1`@``%1X```^`````@`!
+M`&8(``"P!```$`````$`!P!V"```U.$``+8"```"``$`D0@``*`)``#$`0``
+M`@`!`*4(``!$`0``00````(``0"U"```#$H!``8!```"``$`R`@``/`$``!C
+M`@```@`!`.<(```0LP``V`````(``0``"0``0````!P````!``D`$PD``&A0
+M`0`9`````@`!`#@)``!L0P$`,`````(``0!'"0``U`D!`'D"```"``$`7`D`
+M`+BD```N`````@`!`'H)``"XN@``Z0````(``0"."0``@`@``!X!```"``$`
+MFPD``"3M``!7`````@`!`+L)```HJ0``C0````(``0#D"0``J,```.P!```"
+M``$`^`D``%1,`0`&`````@`!`!(*``#T0P$`1P````(``0`F"@``T`<``#T`
+M```"``$`-`H``$2V```J`````@`!`%(*``"0I```)0````(``0!O"@``1"``
+M`+0%```"``$`D0H``-RR```R`````@`!`*@*``"$`@``&P````(``0"\"@``
+M@,@``/\````"``$`V0H``$1Y``"@`@```@`!`/D*``#$D```\0````(``0`8
+M"P``!`(``%`````"``$`+@L``)@P`0!<!P```@`!`$\+```T!```0`````(`
+M`0!O"P``Q($``'<````"``$`C@L``%",``",`0```@`!`*4+``#<Q@``CP``
+M``(``0#0"P``3($``'8````"``$`YPL```#L``#,`````@`!```,``!P````
+MT0````(``0`=#```C.0``,8#```"``$`-@P``+0$```\`````@`!`$P,``#(
+M``$`Y0,```(``0!G#```$-\``,$"```"``$`@`P``&!'`0!Z`0```@`!`)X,
+M``!D3`$`)@````(``0"]#```"%`!`%\````"``$`X@P``,RB``#Z`````@`!
+M`/D,``!$?P``D`````(``0`A#0``U'\``$X````"``$`2PT``)QK``!"!P``
+M`@`!`&4-``#`0P$`,P````(``0!Z#0``(#X``)P#```"``$`EPT``/R=``!T
+M`````@`!`*L-``!8R@``4P````(``0#!#0``]%T``*P#```"``$`XPT```2$
+M``!2`````@`!``P.```8H```8@$```(``0`E#@``G$,!`"(````"``$`-PX`
+M`'0H`0"H`````@`!`$\.```4M@``+@````(``0!J#@``$*4``$<````"``$`
+MAPX``-R+``!Q`````@`!`)T.``#`!```"`````$`!P"L#@``M)T``$8````"
+M``$`Q@X``+2_``!D`````@`!`.T.``#$PP``.P````(``0`/#P``-'X``!`!
+M```"``$`-@\``&S'```3`0```@`!`$P/``"P3`$`+0````(``0!I#P``C$P!
+M`"$````"``$`A@\``-@#```7`````@`!`*@/``#H)P$`BP````(``0"_#P``
+M3-L``(X````"``$`U0\``!RT``#``````@`!`/$/``#HF0``H`$```(``0`&
+M$```X"8``$4-```"``$`(Q```%BE```<`````@`!`#\0``#,E0``+P$```(`
+M`0!<$```E`<!`+(````"``$`<A```%Q,`0`&`````@`!`(P0```(.@``&`0`
+M``(``0"F$```S)<```$````"``$`O1```&0V``"D`P```@`!`-80``"4(@$`
+M6P(```(``0#V$```H`(``#8````"``$`#A$``(#)``",`````@`!`"L1``!4
+MZ```JP,```(``0!"$0``8)D!`%8````"``$`7!$``%#9``#\`0```@`!`'@1
+M``!D`@``'@````(``0"-$0``L)\``#0````"``$`HQ$```"Z``!+`````@`!
+M`+P1``!,N@``:P````(``0#/$0``%*L``,H````"``$`^!$``&2O``#4````
+M`@`!`"02``"LR@``L`D```(``0`W$@``N%8``#P````"``$`5!(``&@)`0!9
+M`````@`!`&`2``!`4@``K@````(``0!X$@``I*4``"4````"``$`CQ(``-R-
+M```/`0```@`!`+`2``!\[0``&`0```(``0#%$@``!'8``%`"```"``$`YQ(`
+M``BF```E`````@`!``$3``#T1`$`JP````(``0`9$P``4`P!`#`````"``$`
+M)Q,``%0'``!Z`````@`!`#T3``!\H0``3P$```(``0!8$P``/!\``!X````"
+M``$`>!,``#!#`0`\`````@`!`(83``!H`P``8`````(``0"<$P``X'(``'\`
+M```"``$`P!,``!C```".`````@`!`-P3````30$`"P$```(``0`!%```"!X`
+M`!0````"``$`'Q0``&1U``"@`````@`!`#X4``#,I0``.P````(``0!9%```
+MG)<``"X````"``$`<Q0``)`$```0`````0`'`(@4```<L0``]P````(``0"K
+M%```H)X```T!```"``$`P!0``-A5`0"L`````@`!`-@4``!PK0``*`$```(`
+M`0#]%```#$X!`"\!```"``$`+14``!2R``!\`````@`!`%$5``!PG@``+0``
+M``(``0!C%0``V`@!`(X````"``$`=Q4``.1[``#:`````@`!`)05``#<W0``
+MJ`````(``0"K%0``X$P!`"`````"``$`R14``%BD```X`````@`!`.<5````
+M````;0````(``0`'%@``@(\!`$0!```"``$`)!8``%`#```7`````@`!`#@6
+M```(O0``C`````(``0!5%@``1)8!`(0````"``$`<18``/!2```<`P```@`!
+M`(H6``"X7`$`_@````(``0"C%@``1&D!```%```"``$`O!8``$@(`0".````
+M`@`!`-`6``"T@@``3P$```(``0#[%@``W+0``#<!```"``$`#Q<``-P\`0`X
+M`````@`!`!\7``"8K@``S`````(``0!)%P````````0````!``D`6Q<``#1K
+M``!F`````@`!`',7``!@<P```0(```(``0"2%P``R`,``!`````"``$`JQ<`
+M`)03`0`T"````@`!`,H7``"XF0``+0````(``0#C%P``V`(``#<````"``$`
+M^1<```R0``!L`````@`!`!@8``!4#```B@````(``0`W&```<+8``!0#```"
+M``$`3A@``*1&`0"Z`````@`!`&L8```\3P$`/`````(``0"3&```,*8``/@"
+M```"``$`LQ@``,C4``"O`0```@`!`,H8``"@10$`:0````(``0#C&```'!\!
+M`,`!```"``$``1D``#Q(```$"@```@`!`!H9``"\00``:`(```(``0`Q&0``
+MG'T``)8````"``$`4AD``%2J``"]`````@`!`'@9```<'@``'P$```(``0"9
+M&0``]#@!`#(````"``$`JAD```"_``"S`````@`!`,@9``"4\0``S04```(`
+M`0#E&0``B$`!`*8"```"``$`]QD``+01``#`"@```@`!`!0:``!T!```/0``
+M``(``0`M&@``^"4``',````"``$`41H``$S&``"/`````@`!`&P:```\1`$`
+M@`````(``0"(&@``>$\!`(X````"``$`JAH``%S#``!E`````@`!`+L:```P
+MB```V@````(``0#?&@``L`0!`.$"```"``$`^QH``!`(``!M`````@`!`!$;
+M``#@R`$`10T```(``0`N&P``&+`!`)H#```"``$`41L``%1,`@"]`````@`!
+M`'@```!LR`$`<0````(``0"&````Q*L"``T````"``$`=QL``"2N`0`O````
+M`@`!`(L;``"X,P(`%`0```(``0"E&P``',$"`,`!```"``$`PQL``*1'`@`E
+M`````@`!`-H;``#XQP$`<P````(``0#^&P``;/("`%\````"``$`(QP``(!J
+M`@#_`````@`!`$`<``!`ZP(`+0$```(``0!='```9-@!`*0#```"``$`=AP`
+M`,PW`@`O`0```@`!`),<``"49`(`'@````(``0!>`0````L``!`````!``<`
+MNP$``,C?`@`X`````@`!`*L<``#$,@(`\0````(``0#*'```S#D"``$````"
+M``$`X1P``,CN`@`F`````@`!`+@"``#0]P(`:P````(``0``'0``0/0!`*X`
+M```"``$`&!T```!A`@"S`````@`!`#8=``!DF0(`PP(```(``0!4'0``W,("
+M`*L````"``$`<1T``/`*```0`````0`'`(8=```\Z@$`!`H```(``0`^!```
+M[#`"`"`!```"``$`GQT``&3O`@`+`0```@`!`,0=```,;`(`'P````(``0!X
+M!```/"0"`'8````"``$`WQT```A(`@`E`````@`!`*H$``#`'@(`VP````(`
+M`0#Y'0``N/@!`#P````"``$`%AX``$2C`0!!`````@`!`"8>```45`(`?```
+M``(``0!*'@``=,H"`*@````"``$`8AX``/#N`@`A`````@`!`'\>```(Z0(`
+MN@````(``0#9!0``/!```!\````!``,`G!X``(3^`@"7`````@`!`+`>``#<
+M5`(`,@````(``0#''@``!*0!`%`````"``$`W1X``$0A`@"0`````@`!`%(&
+M````X`(`.`````(``0`%'P``]#8#`$0!```"``$`(A\``(@]`@#C`````@`!
+M`#H?``!DK0$`70````(``0!/'P``</`"`"\!```"``$`?Q\``)3$`@!;`@``
+M`@`!`)\?``#(I0$`$`````(``0"X'P``$.<"`!D````"``$`TQ\``-"I`0`]
+M`````@`!`.$?```X4@(`X0````(``0`&(```!.@"`&D````"``$`'R```-2K
+M`@!Y`@```@`!`#0@```<P`$`'P$```(``0!5(```_#\"`'0````"``$`:2``
+M`(CB`@"F`@```@`!`'L@```0@0(`P0(```(``0`>"```I-X"`#@````"``$`
+ME"````0F`@!2`````@`!`"X(``!@`0``@`````$`"0"](```U(,"`+8"```"
+M``$`V"```-@0`P``!0```@`!`#0(``!<#`,`:P````(``0!F"```$`L``!``
+M```!``<`\2```+SC`0!H`@```@`!``@A```P*@(`V@````(``0`L(0``;.4"
+M`#`````"``$`.R$``!A"`@!B`0```@`!`%0A``!4I`$`$`````(``0!G(0``
+ML*8"`.$"```"``$`@R$``#@X`P#8!````@`!`*`A``"01@(`)0````(``0"]
+M(0``M+,!`,`*```"``$`VB$``#@M`@"D`````@`!```B``#<5@(`-P$```(`
+M`0`4(@``E+4"`#0(```"``$`,R(``'"B`0#1`````@`!`%`B``#@"@``$```
+M``$`!P!C(@``).8!`!@"```"``$`?2(``.@``P!)`````@`!`(\B``!D40(`
+MU`````(``0"[(@``#"L"`!P!```"``$`W2(``-`Y`@!/`````@`!`/@B``!4
+MJ0$`>@````(``0`.(P``5!H"`#X````"``$`,",``/3_`0"L`P```@`!`%(C
+M``!P[`(`!@$```(``0!E(P``3%P"`&L````"``$`>",``#S!`0`>`````@`!
+M`)@C```TI@$`0`````(``0"X(P``<$\"`"@!```"``$`C@D``("J`0`>`0``
+M`@`!`-TC``!$[P(`(`````(``0#[(P``S$<"`#L````"``$`%B0``-SQ`@".
+M`````@`!`#@D``#D00(`,0````(``0!.)```)(\"`%<````"``$`;B0``,Q$
+M`@#Z`````@`!`(4D```<_P(`_@````(``0">)```?$,"`$\!```"``$`N20`
+M`-Q]`@```@```@`!`-`D``#PI0$`0P````(``0#F)````%P"`$L````"``$`
+M_R0``%2*`@"K`P```@`!`!8E``"(HP$`-@````(``0`K)0``%$T"`,H````"
+M``$`5"4``'3F`@"``````@`!`'`E``"@JP$`Q`$```(``0"$)0``M&$"`&0`
+M```"``$`C@L``%`N`@",`0```@`!`*LE```PY0(`/`````(``0"Y)0``Z$8"
+M`"4````"``$`UB4``$Q]`@".`````@`!`.PE``#@K@$`-0$```(``0`")@``
+M8!4"``$"```"``$`(28``%"E`0`7`````@`!`#4F```\Z`$`_@$```(``0!3
+M)@``6$<"`!P````"``$`;R8``'#H`@"6`````@`!`"$-``#4(0(`3@````(`
+M`0",)@``6$8"`#@````"``$`JB8```".`@#,`````@`!`,,F``#`HP$`1```
+M``(``0#5)@``%.\"`"T````"``$`\B8``$3"`0"T!0```@`!`"4.``"<Y0(`
+M,P````(``0`4)P``G`T"`$('```"``$`+B<``"#@`0"<`P```@`!`$LG``"$
+MI`$`&P````(``0!?)P``V*4!`!<````"``$`@2<``#0@`@`0`0```@`!`*@G
+M```L;`(`+`````(``0#")P``M&0"`*<````"``$`VB<``!!'`@!'`````@`!
+M`/<G```HU@$`9`````(``0`0*```M"0"`$\!```"``$`.R@``(2_`0"!````
+M`@`!`%LH``"(.P(`,`````(``0!Q*```*$L"`(T````"``$`FB@``#!(`@#X
+M`@```@`!`+HH```@.@(`90$```(``0#-*```3&@"`(\````"``$`Z"@``*"D
+M`0`V`````@`!```I``#H\@(`V0(```(``0`8*0``Q&4"`#L````"``$`.BD`
+M`$0;`@"@`@```@`!`%HI``"L;`(`L`D```(``0!M*0``'%8"`,`````"``$`
+MB2D```08`@!0`@```@`!`*LI``#$K0$`70````(``0#!*0``D%0"`$D````"
+M``$`UBD``/PX`@"?`````@`!`.<I```0I0$`/P````(``0#X*0``Z%4"`#(`
+M```"``$`$BH``+A+`@";`````@`!`#8J``"4J0(`L@````(``0!4$@``:*L"
+M`%D````"``$`3"H``$18`@`J`````@`!`&HJ``#<+0(`<0````(``0"`*@``
+M"%\"`(P````"``$`G2H``)C2`@!<!P```@`!`(\2``#<+P(`#P$```(``0"^
+M*@``S(X"`%<````"``$`WBH``*1=`@!D`0```@`!``,K``"@0`(`#0$```(`
+M`0`8*P``K,$!`)@````"``$`&1,``%"N`@`P`````@`!`#DK``!L9P(`WP``
+M``(``0!6*P``X!0"`'\````"``$`>BL``+!!`@`T`````@`!`,`3```88@(`
+MC@````(``0"0*P``",`!`!0````"``$`KBL``(1;`@!\`````@`!`,PK``#$
+M(P(`=P````(``0#K*P``$%4"`-@````"``$`!"P``'2F`0`]`````@`!`!TL
+M``"84`(`S`````(``0!'+```W'\"`*@````"``$`P!0``#SX`@"L`````@`!
+M`%XL``!TO@$`#0$```(``0!Y+```\*8!`&,"```"``$`F"P``&07`@"@````
+M`@`!`+<L``"H8@(`[`$```(``0#++```T.4"`!\````"``$`X"P``)P?`@"6
+M`````@`!``$M``"@`P(`E`D```(``0`C+0``9*0!`!X````"``$`."T``-QH
+M`@"/`````@`!`&,M```<RP(`>P<```(``0"!+0``7,$!`$\````"``$`8Q4`
+M`-BJ`@".`````@`!`'<5``#D'0(`V@````(``0":+0``6&P"`%,````"``$`
+ML"T``,AV`@"O`0```@`!`,<M``"X.P(`+0````(``0#@+0``U$`#`%8````"
+M``$`^BT``'!``@`M`````@`!``PN``#(10(`30````(``0`J+@``\.4"`(,`
+M```"``$`/BX``"SG`@#8`````@`!`%8N``#`[@(`!@````(``0!P+@``&$8"
+M`#T````"``$`C2X``!"U`@!0`````@`!`*4N``!X>`(`%`$```(``0#`+@``
+M"-P!`!@$```"``$`VBX```PR`@!L`````@`!`/DN``!\CP(`&`0```(``0`.
+M+P``'%,"`/<````"``$`,2\``%@F`@#8`P```@`!`%`O```<``,`RP````(`
+M`0!5%@``N#T#`(0````"``$`8"\``+A<`@#I`````@`!`'0O``#8I`$`-P``
+M``(``0"*+P``3","`'8````"``$`H2\``&QI`@`3`0```@`!`+<O```T#0(`
+M9@````(``0"\%@``2*H"`(X````"``$`SR\``,BB`@#E`P```@`!`.HO```H
+MG`(`GP8```(``0`/%P``W-X"`#@````"``$`21<````!```$`````0`)``DP
+M``!0>P(`_`$```(``0`E,```Z#L"`*`!```"``$`.C```'!8`@`4`P```@`!
+M`%$P```D(@(`*`$```(``0!X,```M#\"`$8````"``$`DC```(QY`@!E`0``
+M`@`!`*LP``"X[@(`!@````(``0#%,```A(`"`(L````"``$`VS```%QV`@!J
+M`````@`!`/HP``!<90(`90````(``0`+,0``G#D"`"X````"``$`)3$``)0:
+M`@"O`````@`!`$0Q``!T1P(`+@````(``0!<,0``>#("`$H````"``$`?S$`
+M`!18`@`N`````@`!`)HQ``"`:P(`C`````(``0"W,0``Q.D"`'H!```"``$`
+MU3$``!"J`0!M`````@`!`.LQ``!HI0$`8`````(``0`!,@``0`$``!P````!
+M``D`%#(``/3F`@`:`````@`!`"XR``!4K@$`B@````(``0!-,@``\/0!`!P#
+M```"``$`9C(``+A&`@`N`````@`!`(0R``"TI@$`/`````(``0":,@``E),"
+M`,T%```"``$`MS(``(R&`@#&`P```@`!`-`R``#TV@(`,@````(``0#A,@``
+MH/$"`#P````"``$`"3,``)S7`0#'`````@`!`"4S``#T>@(`60````(``0!$
+M,P``S/("`!D````"``$`:3,``.C)`@"+`````@`!`(`S```H+`(`#P$```(`
+M`0"B,P```*(!`&T````"``$`PC,``'CM`@`_`0```@`!`-LS``#X9@,`@0``
+M``(``0#[,P``\#8$`!@$```"``$`$#0``"`4!`"P"0```@`!`",T``"XP@,`
+MH`(```(``0!#-```$'\#`,<````"``$`>````.!O`P!Q`````@`!`%\T``#@
+MF00`7P````(``0"&````.%,$``T````"``$`A#0``.`.!`#?`````@`!`*$T
+M```43`,`-@````(``0"Y-```.-H#`/$````"``$`V#0``$#L`P#Z`````@`!
+M`.\T```\30,`$`````(``0`(-0``\.H#`$\!```"``$`(S4``!CO`P`E````
+M`@`!`#HU```HS`,`3P$```(``0!E-0``=#4$`,P````"``$`?C4``)B-`P`8
+M`@```@`!`)@U``!(*P0`M@(```(``0"S-0``"&P$`%L"```"``$`7@$``.`0
+M```0`````0`'`+L!```\AP0`.`````(``0#3-0``B)8$`"T````"``$`\#4`
+M`!3H`P`-`0```@`!``4V``#T$@0`C`````(``0`B-@``P`\$`(\````"``$`
+M/38``$A3!`!Y`@```@`!`%(V``#0$```$`````$`!P!G-@``N)8$`"`````"
+M``$`N`(``$2?!`!K`````@`!`(4V``!<F@0`V0(```(``0"=-@``_.0#`.,`
+M```"``$`M38``(3N`P!'`````@`!`-(V``"0_0,`P`````(``0#N-@``=$D#
+M`&T````"``$`#C<``*31`P#:`````@`!`#(W``"(_P,`+@````(``0!--P``
+MN/\#`"H````"``$`:S<``"@,!`"G`````@`!`(,W``"(]`,`R@````(``0"L
+M-P``(&D#`)@````"``$`/@0``&#8`P`@`0```@`!`,TW``!\[P,`)0````(`
+M`0!X!```L,L#`'8````"``$`YS<``,0B!`#\`0```@`!`*H$```TQ@,`VP``
+M``(``0`#.```Z(T$`(`````"``$`'S@``&BG`P"L`P```@`!`$$X``!8Z0,`
+M,0````(``0!7.```?)`$`+H````"``$`V04``'08```?`````0`#`'0X``!<
+M[@,`)0````(``0"1.```%*L#`)0)```"``$`4@8``'2'!``X`````@`!`+,X
+M``!`X0,``0````(``0#*.```P`,$`&L````"``$`W3@``/BE!`"7`````@`!
+M`/$X``!D3@,`8P(```(``0`0.0``T&@#`$\````"``$`*3D``"3I`P`T````
+M`@`!`#\Y``!DG`,`'`,```(``0!8.0``.)$$`'H!```"``$`=CD``!"U`P!"
+M!P```@`!`)`Y``#80`0`PP(```(``0"N.0``[-D#`$H````"``$`T3D``'0(
+M!`"S`````@`!`!X(```8A@0`.`````(``0`N"```X`(``(`````!``D`[SD`
+M`)S3`P`/`0```@`!`!$Z```LE@0`!@````(``0`T"```D+,$`&L````"``$`
+M9@@``/`0```0`````0`'`"LZ``#(P0,`/@````(``0!-.@``^`($`'P````"
+M``$`:SH``.AQ!`"H`````@`!`(,Z``!H(@0`60````(``0"B.@``F,D#`"@!
+M```"``$`?2(``%RH!`!)`````@`!`,DZ```,^`,`S`````(``0#S.@``Z&4#
+M``T!```"``$`#CL``'C-`P!2`````@`!`#<[``#L'P0`%`$```(``0!2.P``
+MW$P#`&`````"``$`:#L``%1P`P!%#0```@`!`(4[``"`V0,`;`````(``0"D
+M.P``J$T#`$`````"``$`Q#L```A=!``T"````@`!`.,[```0QP,`E@````(`
+M`0`$/```/$H$`.4#```"``$`'SP``,1,`P`7`````@`!`#,\``!0_@,`-P$`
+M``(``0"."0``]%$#`!X!```"``$`1SP``-`=!`!J`````@`!`&8\```$[@,`
+M)0````(``0"#/```4/P#`#(````"``$`FCP``/Q*`P`V`````@`!`*\\``#(
+M,00`JP,```(``0#&/```.`T$`#L````"``$`Z#P``'B/!`!I`````@`!``$]
+M``#X)P0`BP````(``0`7/0``7/T#`#(````"``$`,3T``.A-`P`]`````@`!
+M`$H]``!`[P,`.P````(``0!E/0``/)8$`"8````"``$`A#T``(Q7`P":`P``
+M`@`!`*<]``"PD0,`!`H```(``0#`/0``N$H#`$$````"``$`T#T``,A+`P`0
+M`````@`!`.,]``!PX`,`GP````(``0#T/0``F%4#`"\````"``$`"#X``,P3
+M!`!3`````@`!`(X+``#$U0,`C`$```(``0`>/@``[)0$`#\!```"``$`-SX`
+M``3\`P!)`````@`!`$P^````(00`90$```(``0!E/@``H(X$`-@````"``$`
+M?3X``+"/`P#^`0```@`!`)L^```<"@0`[`$```(``0"O/@``V+X#`*`````"
+M``$`SCX``)@V!`!7`````@`!`.X^``#D]@,`*`$```(``0`3/P``0#8$`%<`
+M```"``$`,S\``'B_`P!0`@```@`!`%4_```\[0,`30````(``0!S/P``K/D#
+M`.$````"``$`F#\``#C+`P!W`````@`!`+<_``",[0,`/0````(``0#4/P``
+M+.,#`"T````"``$`[3\``/01!`#_`````@`!``I```!X2P,`4`````(``0`@
+M0```A%$#`&T````"``$`-D```$Q,`P`W`````@`!`"$-``!(R0,`3@````(`
+M`0!,0```V%0#`%T````"``$`84```.23!``&`0```@`!`'1```"(^P,`?```
+M``(``0"80```".@$`%8````"``$`LD```-`,!`!E`````@`!`,-```#@$`0`
+M$P$```(``0#90```9$T#`$,````"``$`[T```"1.!`#A`@```@`!`"4.```0
+MC00`,P````(``0`+00``_.(#`#`````"``$`(4$``"P$!`#I`````@`!`#5!
+M```,N`0```4```(``0!.00``*.<#`$8````"``$`:$$``#A5`P!=`````@`!
+M`'Y!```(.P0`S04```(``0";00``P,H#`'8````"``$`LD$``%QQ!`"+````
+M`@`!`,E!```44P,`Q`$```(``0#=00``9)8$`"$````"``$`^D$``&2-!`"#
+M`````@`!``Y"``"$_`,`V`````(``0`G0@``S.X#`!P````"``$`0T(``$Q-
+M`P`7`````@`!`&5"``!`F@0`&0````(``0"*0@``1.$#`$\````"``$`I4(`
+M`)Q#!`"?!@```@`!`,1"``"$7`0`4`````(``0#<0@``7.,#`*`!```"``$`
+M\4(```C"`P"O`````@`!`!!#``!0U0,`<0````(``0`F0P``"`P$`!X````"
+M``$`/D,```QZ!`!<!P```@`!`%]#``!45@,`-0$```(``0!U0P``&`4$`&0!
+M```"``$`FD,``$#?`P`O`0```@`!`+=#```TE@0`!@````(``0#10P``R/,#
+M`+T````"``$`]T,``%!J!`"K`````@`!`%02``#<4@0`60````(``0`41```
+ME(<#`)P#```"``$`CQ(``%#7`P`/`0```@`!`#%$``#@C`0`,`````(``0`9
+M$P``Q%4$`#`````"``$`0$0``#P>!`"O`0```@`!`%=$``"`T@,`'`$```(`
+M`0#`$P``C`D$`(X````"``$`>40``-CX`P#4`````@`!`*5$``!0F00`C@``
+M``(``0#'1```+.X#`"X````"``$`Y40``+2;`P"N`````@`!`/U$``#\B00`
+MI@(```(``0`/10``@!,$`!\````"``$`*D4``%`0!`"/`````@`!`%5%```P
+MBP,`:`(```(``0!L10``D*8$`/X````"``$`P!0``+"?!`"L`````@`!`(5%
+M``#H[@,`+@````(``0"=10``*`D$`&0````"``$`Q$4``)3A`P!E`0```@`!
+M`-=%``#8?P,`I`,```(``0#P10``J+0#`&8````"``$`"$8``)!R!`![!P``
+M`@`!`"9&``"0:`0`P`$```(``0!$1@``A"@$`,$"```"``$`748``'0#!`!+
+M`````@`!`'9&``"HQP,`$`$```(``0"=1@``?`8$`(P````"``$`ND8``-B6
+M!``+`0```@`!`-]&``"X:0,`M`4```(``0`!1P``:(($`#(````"``$`$D<`
+M`.27!``O`0```@`!`$)'```T2P,`1`````(``0!C%0``3%($`(X````"``$`
+M=Q4``%C%`P#:`````@`!`%1'``!0)00```(```(``0!K1P``N,@#`)`````"
+M``$`DT<``'R#`P`8!````@`!`*U'```4F00`/`````(``0#51P``4"<$`*@`
+M```"``$`[$<``,`"```<`````0`)`/]'``#X2P,`&P````(``0`32```C.D#
+M`&(!```"``$`+$@``"S;`P`4!````@`!`$9(```0X0,`+@````(``0!0+P``
+MD*<$`,L````"``$`8$@``"C>!`!$`0```@`!`%46``#LY`0`A`````(``0!]
+M2```G/(#`(T````"``$`ID@``"R@`P`\`````@`!`,-(``!4O`,`?P````(`
+M`0#G2```Y$D#`-$````"``$`!$D``&QO`P!S`````@`!`+P6``"\400`C@``
+M``(``0`H20``?&<#`!0````"``$`1DD``,`D!`".`````@`!`%Q)```H6P,`
+MP`H```(``0`/%P``4(8$`#@````"``$`>4D``*3O`P#X`@```@`!`$D7``"`
+M`@``!`````$`"0"920``Y.<#`"T````"``$`JTD``"SS`P";`````@`!`,])
+M``"TD@0`+0$```(``0#L20``"%$$`+(````"``$``DH``&B.!``:`````@`!
+M`!Q*``#,S0,`V`,```(``0`[2@``R%`#`'H````"``$`44H````N!`#&`P``
+M`@`!`&I*``!$C00`'P````(``0!_2@``I(P$`#P````"``$`C4H``"A.`P`\
+M`````@`!`*-*``!PYP,`=`````(``0"W2@``A(X$`!D````"``$`TDH``*S4
+M`P"D`````@`!`/A*``#,[0,`.`````(``0`62P``Y(\$`)8````"``$`,TL`
+M`)#Z`P#W`````@`!`%9+``#`$```$`````$`!P!I2P``U+P#``$"```"``$`
+MB$L``,A5`P"*`````@`!`*=+``"<?0,`9`````(``0#`2P``L&@#`!X````"
+M``$`X$L``)!G`P`?`0```@`!``%,``"@$P0`+`````(``0`;3```1%$#`#T`
+M```"``$`*4P``(1,`P`_`````@`!`#I,``#D_P,`%`,```(``0!13```V$L#
+M`!X````"``$`9DP``&S?!`#8!````@`!`(-,``"`\P0`-P````(``0"93```
+M0`0``!P````!``D`>````!07!0!Q`````@`!`*Q,``#D-@4`_@$```(``0"&
+M````;/H%``T````"``$`RDP``-B6!0#X`@```@`!`.I,```8-P8`E@````(`
+M`0`'30``1%P%`$('```"``$`(4T``/QH!0`^`````@`!`$--``!@F@4`FP``
+M``(``0!G30``D$$&`-D"```"``$`?TT``,@N!0"<`P```@`!`)Q-``#H0@4`
+MK@````(``0!>`0``P!8``!`````!``<`M$T``+`J!0`8!````@`!`,Y-```,
+M/@8`"P$```(``0"[`0``<"X&`#@````"``$`\TT``"SS!``;`````@`!``=.
+M``!@JP4`Z0````(``0`;3@```+L%`%,````"``$`,4X``"#'!0`4`0```@`!
+M`$Q.``!TA@4`+P$```(``0!I3@``L!8``!`````!``<`N`(``'A&!@!K````
+M`@`!`'Y.``"(8P4`?P````(``0"B3@``X*`%`.$````"``$`QTX``*C<!0#,
+M`````@`!`.!.``!$;@4`E@````(``0`!3P``5!`%`)@````"``$`(D\``&`]
+M!@`&`````@`!`#Q/``!8D`4`-`````(``0!23P``F/4$`&,"```"``$`<4\`
+M`/S\!`"*`````@`!`)!/``#L\00`00````(``0"@3P``;+0%`#L````"``$`
+MPD\``'1!!@`9`````@`!`.=/```4N`4`$P$```(``0#]3P``:#T&``8````"
+M``$`%U```&CR!`!$`````@`!`#X$``"4?P4`(`$```(``0!X!```Y'(%`'8`
+M```"``$`*5```+C/!0#!`@```@`!`$)0```XE04`)0````(``0"J!```:&T%
+M`-L````"``$`7U```,S=!0!7`````@`!`']0``"8-`8`@P````(``0"34```
+M8(H%`"T````"``$`K%```)`8!@"+`````@`!`,-0``"TN@4`'P````(``0#>
+M4```O)L%`,H````"``$`!U$``*CP!`!M`````@`!`"=1``#TJ@4`:P````(`
+M`0`Z40``B/T$`#4!```"``$`4%$``/3+!0".`````@`!`-D%``#`(```(@``
+M``$``P!F40``/+,%`!X````"``$`?E$``,1-!@#^`````@`!`%(&``"H+@8`
+M.`````(``0"740``2%(%`)0)```"``$`N5$``#P3!@!;`@```@`!`-E1```8
+MCP4`+0````(``0#K40``Q*$%`/<````"``$`#E(``'#T!``0`````@`!`"=2
+M``#,<`4`*`$```(``0!.4@``P/X$`)H#```"``$`<5(``!PU!@"``````@`!
+M`(U2``!X-`8`'P````(``0"B4@``P)`%`&(!```"``$`NU(``)"5!0`E````
+M`@`!`!X(``!,+08`.`````(``0`N"```8`0``(`````!``D`V%(``%"Q!0#L
+M`0```@`!`.Q2```\X@4`S04```(``0`T"```;%D&`&L````"``$`9@@``-`6
+M```0`````0`'``E3```XHP4`20````(``0`>4P``Q!D&`'L'```"``$`/%,`
+M`!P9!@"H`````@`!`%13``!TDP4`^@````(``0!K4P``N*,%`-@````"``$`
+MA%,``'#Q!0#E`P```@`!`)]3```LJ@4`?`````(``0"]4P``-,@%`&4!```"
+M``$`UE,``$R6!0`E`````@`!`.U3```$M`4`90````(``0#^4P``&/$$`-$`
+M```"``$`&U0``,S\!``O`````@`!`"]4``"L\@0`4`````(``0"."0``*/D$
+M`!X!```"``$`150``$0F!0#'`````@`!`&%4```P,08`I@(```(``0!S5```
+M2/,$`#8````"``$`BU0``'#%!0"O`0```@`!`*)4``"\/08`+0````(``0"_
+M5```N)4%`$<````"``$`W%0```"6!0`<`````@`!`/A4``"$HP4`,@````(`
+M`0`/50``I(<%`)\````"``$`(%4``-Q;!0!F`````@`!`#A5``#8>`4`V@``
+M``(``0!<50``@/0$`!<````"``$`?E4``+CS!``_`````@`!`(]5``"0I`4`
+M,@````(``0"I50``K&8%`%`"```"``$`RU4``,PT!0`8`@```@`!`.55``!8
+M]04`X0(```(``0"."P``^'P%`(P!```"``$``58```2$!@!$`0```@`!`!Y6
+M``"T>04`'`$```(``0!`5@``%+8%`-\````"``$`758``.P0!0"T!0```@`!
+M`']6```\^`4`L@````(``0"55@``_/<$`'H````"``$`JU8```AD!0`!`@``
+M`@`!`,I6``"<-08`&@````(``0#D5@``^,D%`/P!```"``$``%<``-QN!0`0
+M`0```@`!`"=7```<#04`#0$```(``0`A#0``?'`%`$X````"``$`0E<``"P.
+M!0"!`````@`!`&)7``"$0`8`C@````(``0"$5P``/`0&`#0(```"``$`HU<`
+M`&QR!0!W`````@`!`,)7```DW@4`&`0```(``0#75P``A'P%`'$````"``$`
+M[5<``*`6```0`````0`'``!8``!L_`0`70````(``0`66```#&8%`*`````"
+M``$`-5@``"S/!0"+`````@`!`$M8``!TB`4``0````(``0`E#@``1#0&`#,`
+M```"``$`8E@```S\!`!=`````@`!`'=8``!`(08`7`<```(``0"86```L*T%
+M`(P````"``$`M5@``&!'!0`\`````@`!`-)8``#D.`4`!`H```(``0#K6```
+MZ#D&`"T!```"``$`"%D``-0U!@#8`````@`!`"!9``"(%P4`10T```(``0`]
+M60``2$`&`#P````"``$`95D``$CZ!`#$`0```@`!`'E9```@/`8`/P$```(`
+M`0"260``^/,$`!<````"``$`IED``%SU!``\`````@`!`+Q9```8/P8`+P$`
+M``(``0#L60``>(@%`$\````"``$`!UH``(3.!0"H`````@`!`!Y:````E04`
+M.`````(``0`\6@``&*<%`!0#```"``$`4UH``##R!``V`````@`!`&A:``#$
+M#P8`P`$```(``0"&6@``N`,&`%`````"``$`GEH``/S8!0"K`P```@`!`+5:
+M``#4N@4`+`````(``0#/6@``2(\%``T!```"``$`Y%H``.2-!@!6`````@`!
+M`/Y:``!X^`0`/0````(``0`,6P``A,P%```"```"``$`(UL``*BO!0"S````
+M`@`!`$%;``#T<04`=@````(``0!86P``;($%`/$````"``$`=UL``$B%!@#8
+M!````@`!`)1;``"DC@4`=`````(``0"H6P``N/@$`&T````"``$`OEL```3%
+M!0!J`````@`!`%02```0^@4`60````(``0#=6P``C)`%`#$````"``$`\UL`
+M`,"4!0`]`````@`!`(\2``"$?@4`#P$```(``0`07```A*4%`#<!```"``$`
+M)%P``*PV!@!I`````@`!`#U<``#\F@4`O0````(``0`9$P``^/P%`#`````"
+M``$`8UP``)A#!0`<`P```@`!`'Q<```8.P8`!@$```(``0#`$P``P+`%`(X`
+M```"``$`CUP``#35!0#&`P```@`!`*A<```<E@4`+@````(``0#`7```[&\%
+M`)`````"``$`Z%P``&PX!@!Z`0```@`!``9=``!TW04`5P````(``0`F70``
+MH!8%`',````"``$`2ET``-@S!@`\`````@`!`%A=``"\I@4`+@````(``0!S
+M70``#"<%`*0#```"``$`C%T``"Q-!@"7`````@`!`*!=``!<C@4`1@````(`
+M`0"Z70``7+,%`*<````"``$`P!0``.1&!@"L`````@`!`-)=```0]`0`8```
+M``(``0#H70``0)\%`,P````"``$`$EX``-#J!0"?!@```@`!`#%>``#@>P4`
+MI`````(``0!77@``F/0$`$,````"``$`;5X``+RB!0!\`````@`!`)%>```4
+M008`7P````(``0!C%0``@/D%`(X````"``$`MEX``-"9!0"-`````@`!`-]>
+M```8G@4`*`$```(``0!W%0``C&P%`-H````"``$`!%\``#",!0#C`````@`!
+M`!Q?``!TE@4`.P````(``0`W7P``?-(%`+8"```"``$`4E\``/SR!``0````
+M`@`!`&5?``#$I`4`P`````(``0"!7P``Y`\%`!X````"``$`H5\``.QI!0"@
+M`@```@`!`,%?``"P-P8`N@````(``0#>7P``,(H%`#`````"``$`]%\``.A=
+M!@``!0```@`!``U@``"T@`4`;`````(``0!5%@``R(H&`(0````"``$`+&``
+M`'SZ!0!Y`@```@`!`$%@```<]00`/0````(``0!:8```8)4%`"X````"``$`
+M>&```)S)!0!9`````@`!`)=@``!,K`4`9`$```(``0"\8```K'0%`%(````"
+M``$`O!8``/#X!0".`````@`!`.5@```4-`8`,`````(``0`/%P``A"T&`#@`
+M```"``$`21<````$```$`````0`)`/1@``!<`@4`P`H```(``0`180``!!`%
+M`$\````"``$`*F$``%2[!0"P"0```@`!`#UA``#$#@4`'P$```(``0!>80``
+M#*`%`-0````"``$`BF$``+`.!0`4`````@`!`*AA``!@@@4`%`0```(``0#"
+M80``(($%`$H````"``$`Y6$``-!Z!0`/`0```@`!``=B``!<<P4`3P$```(`
+M`0`R8@``G$X%`*P#```"``$`5&(``-ST!`!``````@`!`'1B```HN04`_P``
+M``(``0"18@``#/,$`!X````"``$`IF(``'"4!0!-`````@`!`,1B``"$$08`
+MJP````(``0#A8@``D(H%`*`!```"``$`]F(``*BJ!0!+`````@`!``]C```H
+MN@4`C`````(``0`L8P``#.@%`,,"```"``$`2F,``(2W!0"/`````@`!`'5C
+M``"8/08`(0````(``0"28P``G"D&`#(````"``$`HV,``$2(!0`N`````@`!
+M`+UC``"PE@4`)0````(``0#78P``7+`%`&0````"``$`_F,``&0R!0!H`@``
+M`@`!`!5D```\:04`KP````(``0`T9````'4%`-@#```"``$`4V0``+@U!@`9
+M`````@`!`&YD```DD@4`3P$```(``0")9```]+8%`(\````"``$`I&0``,B(
+M!0!E`0```@`!`+=D``#0)`4`9`````(``0#09```<#T&`"8````"``$`[V0`
+M`.P]!@`@`````@`!``UE``#LI@4`*@````(``0`K90``<*D'`"T````"``$`
+M.64``+3+!@!P`````@`!`$EE``!8OP8`=P0```(``0!C90``M)('`*D'```"
+M``$`<V4``/@P!P"$`````@`!`(-E``"(!0``!`````$`"0"390``K,H&``\`
+M```"``$`J&4``'"[!@`I`````@`!`+UE``#DI@<`5P````(``0#590``E04`
+M``$````!``D`Y64``'`3!P!2`````@`!`/5E``#PI0<`]`````(``0`&9@``
+M9*4'`(D````"``$`&F8``/BA!P!,`@```@`!`#!F``"$V`8`7`$```(``0!&
+M9@``C`4```0````!``D`5&8```2E!P!@`````@`!`&QF```,?0<`00````(`
+M`0!^9@``[*4&``H!```"``$`D68``.#9!@`?`P```@`!`*EF```8F08`4```
+M``(``0"]9@``U+D&`)L!```"``$`T68``+B]!@!B`````@`!`-]F``!0L@8`
+MG0````(``0#T9@``N+<&`$T````"``$`!6<``("Q!@!&`````@`!`!QG``"6
+M!0```0````$`"0`P9P``[+X&`&H````"``$`2V<``)S'!@!2`````@`!`%]G
+M````L08`?0````(``0!O9P``H*<&`"4````"``$`>&<``'B7!@"N`````@`!
+M`)1G``!DH0<`D0````(``0"J9P``#+P&`*D!```"``$`O6<``-2,!P`\````
+M`@`!`,9G``"@J0<`+0````(``0#49P``T,,&`'H!```"``$`\&<``-!W!P#=
+M`````@`!`/MG``#@?@<`O`````(``0`1:```Y/L&`/8````"``$`(V@``)Q_
+M!P"\`````@`!`#QH``#$B`<`1@````(``0!-:```S,P&`#X````"``$`6&@`
+M`%2#!P!T`0```@`!`&EH``!`R@8`;`````(``0!^:```1*0'`+\````"``$`
+MC6@``(26!@`3````$@`!`+9H``":!0```0```!$`"0#-:``````````````0
+M````YF@`````````````$````.UH```,40@`%@```!(``0`&:0``U*<'`!H`
+M```2``$`'VD`````````````$````#1I``#`I`8`*@```!(``0!(:0``.*D'
+M`#@````2``$`66D``"B:!@"%`0``$@`!`')I``#TIP8`>@```!(``0"+:0``
+M```````````0````I6D``&RG!P!H````$@`!`,!I``!DEP8`$0```!(``0#9
+M:0``^)P&`(H````2``$`\FD`````````````$`````]J``!DI`8`60```!(`
+M`0`@:@`````````````0````)VH```2I!@"8````$@`!`#QJ```$F@8`(@``
+M`!(``0!5:@``3*0&`!<````2``$`:VH``+";!@!'`0``$@`!`(-J```HH`<`
+M/`$``!(``0"B:@``D`4```0````1``D`NVH``("=!P"2````$@`!`-=J````
+M`````````!````#N:@``@*,&`$X````2``$`!FL``-S)!@!1````$@`!`"-K
+M````?0<`"@```!(``0`_:P``;)8&`!8````2``$`7FL`````````````$```
+M`')K``#DJ`<`40```!(``0"):P``@`4```0````1``D`FVL``)B%!P`5````
+M$@`!`+9K``#XI@8`?P```!(``0#-:P``5$L(`!T````2``$`YVL``)L%```!
+M````$0`)``%L`````````````!`````+;```O($'`&<````2``$`)&P`````
+M````````$````#UL``!DI08`0@```!(``0!2;``````````````0````7&P`
+M`(0%```$````$0`)`&UL``!PJ`8`E````!(``0"';```[*0&`'@````2``$`
+MFFP``/2X!P`6````$@`!`+1L``#$=P<`"P```!(``0#.;``````````````0
+M````YVP``)!W!P`T````$@`!`/EL``"9!0```0```!$`"0`7;0``````````
+M```0````+&T`````````````$````$%M```A&````0```!$`!P!7;0``,*0&
+M`!D````2``$`?FT``+"%!P#/`@``$@`!`(YM```0I`8`(````!(``0"L;0``
+MX*H'`!8````2``$`RFT`````````````$````.1M```D@@<`7````!(``0#[
+M;0``Z*$!`!8````2``$`&FX`````````````$````#)N```4G@<`A````!(`
+M`0!/;@``@(@'`$,````2``$`96X`````````````$````'=N````````````
+M`!````"0;@``^*<'`"(````2``$`J6X`````````````$````+YN``",IP8`
+M$@```!(``0#<;@``*)@&`,,````2``$`^6X``)0%```!````$0`)``YO``"8
+ME@8`"P```!(``0`H;P``EP4```$````1``D`16\``"2.!P#U`@``$@`!`&=O
+M``#PIP<`!@```!(``0"#;P``(,@&`+P!```2``$`G&\``*26!@"7````$@`!
+M`+1O``#(IP8`*P```!(``0#/;P`````````````0````Z&\``#R7!@`H````
+M$@`!``)P`````````````!`````8<```4*,&`#`````2``$`,'```%2G!P`8
+M````$@`!`%!P``"$H08`Y````!(``0!R<``````````````0````B'``````
+M````````$````*=P``!XIP8`$P```!(``0##<```9+$'`!8````2``$`W7``
+M````````````$````/)P``!@@0<`6P```!(``0`+<0`````````````0````
+M*'$``%"G!P`!````$@`!`#UQ```,B0<`3@```!(``0!4<0``7$D#`!8````2
+M``$`<W$``$S%!@!_````$@`!`(UQ```\IP<`%````!(``0"M<0``[)@&`"D`
+M```2``$`W7$``"`8```!````$0`'`/MQ``!HH@8`YP```!(``0`4<@``>(4'
+M`!X````2``$`*W(``-"C!@`^````$@`!`$QR`````````````!````!E<@``
+M**`&`%D!```2``$`A'(``)RI!@!?````$@`!`)MR``"0\`0`%@```!(``0"Z
+M<@``$(T'`!$!```2``$`V7(``)@%```!````$0`)`/9R``#$$P<`=0```!(`
+M`0``<G(R-S(P7U-!4U](86YD;&5#;VUP;&5T961#;VUM86YD`')R,C<R,%]0
+M35]&<F5E4F5G:7-T97)3970`<G(R-S(P7T-O<F5?36]D=6QE4W1A<G0`<G(R
+M-S(P7T-O<F5?36]D=6QE16YA8FQE1&ES86)L94E240!S87-?:&%S:%]A9&1R
+M`$UA:V5!='1$979);F9O`')R,C<R,%]#871E9V]R>5]#1$)?5'EP90!R<C(W
+M,C!?1FEN9$9R965335!#;VYT97AT`')R,C<R,%]M=E]D:7-A8FQE7WAM=`!R
+M<C(W,C!?4G5N=&EM94ES<W5E4V]F=%)E<V5T0V%L;&)A8VL`<G(R-S(P7T1)
+M4T-?1V5T4F5S;W5R8V4`<G(R-S(P7U-T;W)E7T-O;F9I9U)O=71E26YF;P!R
+M<C(W,C!?57!D871E4W1A='5S5G-397-#;VYT<F]L0G5F9F5R`$%4345,7U-0
+M25]#341?-#%A7S`R,0!R<C(W,C!?0V%L8W5L871E4F]U=&5);F1E>`!R<C(W
+M,C!?4T=024]?5W)I=&5296=I<W1E<@!R<C(W,C!?359?17%U86QS`&DR8T%?
+M=W)I=&5?8GET97,`<G(R-S(P7T-O<F5?2&%N9&QE5V%I=&EN9TQI<W0`<G(R
+M-S(P7V]D:6Y?<V5T7VED;&5?<W1A;F1B>0!R<C(W,C!?359?36%P5&%R9V5T
+M240`<G(R-S(P7T1)4T-?0V%N8V5L1&ES8V]V97(`<G(R-S(P7U!O<W1-86ME
+M4V5S0V]N9FEG=7)A=&EO;E)E<75E<W0`<G(R-S(P7U-'4$E/7U)E861296=I
+M<W1E<@!R<C(W,C!?1&5V:6-E7U=R:71E4V5S0V]N=')O;$1I86<`<G(R-S(P
+M7U-'4$E/7U--4%)E<5]#86QL8F%C:P!/9&EN4U!)7U)D<'0`<G(R-S(P7T9I
+M;&Q%;F-L;W-U<F5%;&5M96YT4W1A='5S`')R,C<R,%]%>'!A;F1E<E]335!2
+M97%U97-T7T1I<V-O=F5R`')R,C<R,%]#;W)E7TUO9'5L94=E=%)E<V]U<F-E
+M475O=&$`<G(R-S(P7U1A9U])<T5M<'1Y`')R,C<R,%]M=E]R97-E=%]X;70`
+M<G(R-S(P7U!O<G1?2&%N9&QE1&5V:6-E4&QU9VEN`')R,C<R,%]035]#;W)E
+M7U)E<51I;65O=70`<G(R-S(P7T%405]#1$(R5&%S:T9I;&4`<G(R-S(P7U]?
+M8V%N8V5L7W1I;65R`')R,C<R,%]#;W)E7TEN=&5R;F%L4V5N9%)E<75E<W0`
+M<G(R-S(P7T9R965$979I8V54;U!O;VP`<G(R-S(P7T-O<F5?4F5S971#;613
+M;&]T`')R,C<R,%]335!?4T=024]?4V5T7T9A:6QL960`<G(R-S(P7T]D:6Y3
+M4$E?26YI=`!$979I8V5?36%K95!R:79A=&5396YD4V5S4F5Q=65S=`!R<C(W
+M,C!?1$E30U]'97149W1$979-87``07-S:6=N16QE;65N1&5S8W)I<'1O<DYA
+M;64`<G(R-S(P7U-!5$%?4&]R=$1E=&5C=`!$979I8V5?36%K95-E<T5L96UE
+M;G13=&%T=7-297%U97-T5&EM97(`<G(R-S(P7T=E=%-%4U-"1G)O;5!O;VP`
+M<G(R-S(P7U--4%)E<W!,96YG=&@`<G(R-S(P7U-!4U]$979I8V53=&%T94UA
+M8VAI;F4`<G(R-S(P7T9R9653051!4V-R871C:%1O4&]O;`!R<C(W,C!?7U]A
+M9&1?=&EM97(`<G(R-S(P7T-/4D5?27-S=65335!297%U97-T`')R,C<R,%]3
+M051!7T1E=FEC95-T871E36%C:&EN90!R<C(W,C!?4T%405]034EN:71297%#
+M86QL8F%C:P!R<C(W,C!?4&]R=%]!8F]R=%)E<75E<W1S`')R,C<R,%]7<FET
+M941%3%9?45]%;G1R>0!P<F]D=6-T7VED`')R,C<R,%]$25-#7T-H96-K1&ES
+M8V]V97)3=&%T90!R<C(W,C!?0V]R95]-;V1U;&53:'5T9&]W;@!R<C(W,C!?
+M4U-47U-025]#340`<G(R-S(P7U!R97!A<F5$96QI=F5R>5%U975E16YT<GD`
+M:3)C0E]W<FET95]B>71E<P!R<C(W,C!?1$E30U]3971297-O=7)C90!R<C(W
+M,C!?1V5T3D-15&%G`')R,C<R,%]M=E]E;F%B;&5?>&UT`')R,C<R,%]315-?
+M26YT97)N86Q297%#86QL8F%C:P!R<C(W,C!?5&%G7T=E=$]N90!R<C(W,C!?
+M5&%G7TEN:71?1DE&3P!R<C(W,C!?;79?<V5T7U-!4T%D9'(`<G(R-S(P7T9I
+M;F12=6YN:6YG4F5Q0GE486<`<G(R-S(P7T=E=$UI;DYE9V]T:6%T961,:6YK
+M4F%T90!R<C(W,C!?4T%405]0;W)T1&5V:6-E1&5T96-T960`<G(R-S(P7T1E
+M=FEC95])<W-U95-O9G1297-E=`!R<C(W,C!?4&]R=%]&:6YD5&=T3F\`<G(R
+M-S(P7T1E=FEC95]-86ME26YQ=6ER>51A<VM297%U97-T`')R,C<R,%]&<F5E
+M26YT97)N86Q297%4;U!O;VP`<G(R-S(P7U!R945M<'1Y1&5V:6-E`')R,C<R
+M,%]#;VUP;&5T95)E<75E<W1!;F13;&]T`')R,C<R,%]'971);G1E<FYA;%)E
+M<49R;VU0;V]L`&DR8T%?<F5A9%]B>71E<P!A:6YF;P!O9&EN7V-O<F5?=&EM
+M97(`<G(R-S(P7U-!5$%?4$U?2&%N9&QE1&5V:6-E4&QU9VEN`%=)3D)/3D1?
+M4U!)7T--1`!R<C(W,C!?57!D871E5&%R9V5T1&5V:6-E<P!R<C(W,C!?;79?
+M<F5S971?<&AY`')R,C<R,%]486=?26YI=`!R<C(W,C!?4T-325]4;U]&25,`
+M<G(R-S(P7TU67U-E=$Q"06%N9%-E8W1O<D-O=6YT`')R,C<R,%]!<W-I9VY2
+M96=I<W1E<E-E=`!R<C(W,C!?;6]D95!A9V5"=68`<G(R-S(P7U-#4TE?051!
+M7U-T87)T4W1O<%1R86YS;&%T:6]N`')R,C<R,%]"965P3V9F`')R,C<R,%]5
+M<&1A=&50:'E);F9O`')R,C<R,%]'9713051!4V-R871C:$9R;VU0;V]L`')R
+M,C<R,%]3051396YS941A=&$`;79?<&AY7W)E<V5T`')R,C<R,%]'971-87A.
+M96=O=&EA=&5D3&EN:U)A=&4`<G(R-S(P7T5X<&%N9&5R7U--4%)E<75E<W1?
+M4F5P;W)T1V5N97)A;`!R<C(W,C!?4F5M;W9E1&5V:6-E`')R,C<R,%]30U-)
+M7T%405],;W=E<E=O<F0`<G(R-S(P7W-E=%]F86EL7VQE9`!R<C(W,C!?359?
+M0U)#`')R,C<R,%]#;W)E4F5S=&]R94]R:6=I;F%L0T1"`')R,C<R,%]&<F5E
+M0V]R94-O;G1E>'14;U!O;VP`<G(R-S(P7U9E<FEF>4-O;6UA;F1"969O<F53
+M96YD:6YG`')R,C<R,%]&<F5E4F5G:7-T97)3970`<G(R-S(P7TQI<W1?1V5T
+M3&%S=`!R<C(W,C!?27-S=65?0V]N9FEG4F]U=&5);F9O`')R,C<R,%]3051!
+M7U!O<G1(86YD;&5);G1E<G)U<'0`<G(R-S(P7T-O<F5?1V5T4W5P<&]R=&5D
+M0V]U;G1S`')R,C<R,%]486=?4F5L96%S94]N90!R<C(W,C!?4T%405]034AO
+M='!L=6=297%#86QL8F%C:P!R<C(W,C!?359?36%P5&]3<&5C:69I8U1A<F=E
+M=$E$`')R,C<R,%]!<W-I9VY%;&5M96YT4VQO=$YU;6)E<@!315-?4')I=F%T
+M95)E<4-A;&QB86-K`')R,C<R,%])<W-U95]297!O<G1-86YU9F%C='5R97))
+M;F9O<FUA=&EO;@!R<C(W,C!?1FEN9$%S8VEI3G5M8F5R`')R,C<R,%]$:7-C
+M;W9E<GE#86QL0F%C:P!R<C(W,C!?4T-325]-86ME0V%C:&5#;VUM86YD`')R
+M,C<R,%]#:&5C:U1A<F=E=$-H86YG90!R<C(W,C!?359?1V5T36%P<&5D240`
+M<G(R-S(P7U-!5$%?4$U3=&%T94UA8VAI;F4`<G(R-S(P7T-H96-K1&5V:6-E
+M0VAA;F=E`')R,C<R,%]31U!)3U]335!297%U97-T7U=R:71E`')R,C<R,%]3
+M0U-)7T%405]#:&5C:T-O;F1I=&EO;@!R<C(W,C!?4T-325]!5$%?4WEN8T-A
+M8VAE5')A;G-L871I;VX`<G(R-S(P7T=E=%!O<G1&<F]M4&]O;`!R<C(W,C!?
+M07-S:6=N1&5V:6-E3W9E<F%L;$5L96UE;G1.=6UB97(`07-S:6=N4V5S3W1H
+M97)%;&5M96YT3W9E<F%L;$5L96UE;G1.=6UB97(`<G(R-S(P7TAA;F1L94-O
+M;6UA;F11=65U90!R<C(W,C!?<V5T7V9A:6Q?;&5D<P!R<C(W,C!?4T%405]0
+M35]%<G)O<DAA;F1L:6YG`')R,C<R,%]&<F5E4$U4;U!O;VP`<G(R-S(P7T9R
+M965335!#;VYT97AT`')R,C<R,%]C;W)E7VAA;F1L95]T87-K9FEL95]E<G)O
+M<@!R<C(W,C!?4&]S=$UA:V5397-%;F-L;W-U<F53=&%T=7-297%U97-T`')R
+M,C<R,%]'971$979I8V5&<F]M4&]O;`!P;W)T7W-E=%]F86EL7VQE9`!R<C(W
+M,C!?4$U?27-S=657<FET95)E9P!R<C(W,C!?0V]R95-A=F5/<FEG:6YA;$-$
+M0@!R<C(W,C!?1V5T4TU04V-R871C:$9R;VU0;V]L`')R,C<R,%]315-?4V5T
+M1F%I;$QE9`!0;W)T36%P7U)2,C<Q,0!R<C(W,C!?1G)E945X<&%N9&5R5&]0
+M;V]L`')R,C<R,%]$979I8V5?36%K95-T87)T4W1O<%5N:71297%U97-T`')R
+M,C<R,%]$25-#7T=E=$YE9V]T:6%T961,:6YK4F%T90!R<C(W,C!?4&]S=$UA
+M:V5397-%;&5M96YT4W1A='5S4F5Q=65S=`!R<C(W,C!?27-S=65?1&ES8V]V
+M97(`<G(R-S(P7U-#4TE?051!7T9I;&Q,0D%#9&(Q-@!R<C(W,C!?4T-325]!
+M5$%?1FEL;$Q"04-D8C$P`')R,C<R,%]-5E]);FET:6%L:7IE5&%R9V5T2414
+M86)L90!R<C(W,C!?4$U?27-S=65296%D4F5G`')R,C<R,%]3051!7U!O<G12
+M97-E=`!R<C(W,C!?4$U?07-S:6=N4F5G:7-T97)3970`<G(R-S(P7U]?<F5N
+M97=?=&EM97(`<G(R-S(P7U!R97!A<F5!;F1396YD0V]M;6%N9`!R<C(W,C!?
+M1G)E95--4%-C<F%T8VA4;U!O;VP`<G(R-S(P7U!O<G1?27-297%U97-T4G5N
+M;FEN9P!R<C(W,C!?1&5T96-T4&]R=%1Y<&4`<G(R-S(P7U-#4TE?051!7U5P
+M<&5R5V]R9`!R<C(W,C!?4T%405]%<G)O<DAA;F1L:6YG`')R,C<R,%]-5E]$
+M=6UP4F5G:7-T97(`<G(R-S(P7U-!4U]%<G)O<DAA;F1L:6YG`')R,C<R,%]$
+M979I8V5?4&%R<V5)9&5N=&EF>41A=&$`<G(R-S(P7TU67UIE<F]-=E)E<75E
+M<W0`<G(R-S(P7TES<W5E7U)E<&]R=%)O=71E26YF;P!R<C(W,C!?57!D871E
+M5&=T1&5V36%P`')R,C<R,%]O9&EN7W)E;6]V95]D979I8V4`<G(R-S(P7U-!
+M5$%?4&]R=$1E=FEC95)E861Y`')R,C<R,%],:7-T7T=E=$9I<G-T`')R,C<R
+M,%]&<F5E4&]R=%1O4&]O;`!R<C(W,C!?1V5T3VYE0V]M;6%N9%-L;W0`<G(R
+M-S(P7T=E=%!-1&5V:6-E`')R,C<R,%]%>'!A;F1E<E]335!297%U97-T7U)E
+M<&]R=%!(65-!5$$`<G(R-S(P7T1E=FEC95]-86ME4F5A9$-A<&%C:71Y,394
+M87-K4F5Q=65S=`!R<C(W,C!?1&ES8V]V97)Y4TT`<G(R-S(P7V1U;7!?=6YA
+M<W-O8VEA=&5D7V9I<P!-86ME1&5V26YF;P!R<C(W,C!?4T%37TAA;F1L94)2
+M1$-35`!R<C(W,C!?1G)E95-%4U-"5&]0;V]L`$1E=FEC95]-86ME4')I=F%T
+M95)E8W9397-297%U97-T`')R,C<R,%]305-?4&]R=%)E<V5T`')R,C<R,%]3
+M051!7U!-7TAA;F1L941E=FEC955N<&QU9P!R<C(W,C!?1G)E95-'0G5F9F5R
+M5&]0;V]L`')R,C<R,%]31U!)3U]);FET:6%L:7IE`&-H96-K7U-A<T%D9'(`
+M<G(R-S(P7TU67T1U;7!297%U97-T`')R,C<R,%]'971%>'!A;F1E<D9R;VU0
+M;V]L`')R,C<R,%]3051!7U!R97!A<F5#;VUM86YD5&%B;&4`<G(R-S(P7T)E
+M97!/;@!R<C(W,C!?4T=486)L95]!<'!E;F0`<G(R-S(P7T-O<F5?26YT97)R
+M=7!T4V5R=FEC95)O=71I;F4`1&5V:6-E7U1E<W15;FET4F5A9'E297%U97-T
+M`')R,C<R,%]30U-)7T%405]296%D5W)I=&54<F%N<VQA=&EO;@!R<C(W,C!?
+M0V]R95]-;V1U;&5396YD4F5Q=65S=`!R<C(W,C!?4T%405](86YD;&5$979I
+M8V50;'5G:6X`<G(R-S(P7T=E=%-'0G5F9F5R1G)O;5!O;VP`<G(R-S(P7T-O
+M<F5?1FEL;%-E;G-E1&%T80!R<C(W,C!?051-14Q?4U!)7T--1`!R<C(W,C!?
+M1&5V:6-E7TUA:V5-;V1E4V5N<V5297%U97-T`')R,C<R,%]'9710349R;VU0
+M;V]L`$]D:6Y34$E?4V5C=&]R56YP<F]T96-T`')R,C<R,%]$979I8V5?36%K
+M95)E<75E<W1487-K4F5Q=65S=`!R<C(W,C!?4T-325]!5$%?4F5A9$-A<&%C
+M:71Y5')A;G-L871I;VY#86QL8F%C:P!R<C(W,C!?1&5V:6-E7TUA:V5-;V1E
+M4V5L96-T4F5Q=65S=`!R<C(W,C!?4')E16UP='E030!'971!='1)9&5N=&EF
+M>49R86UE`%-%4U1I;65R7TEN=&5R;F%L4F5Q0V%L;&)A8VL`<G(R-S(P7U-4
+M4%]$979I8V5297-E=`!R<C(W,C!?4T-325]!5$%?1FEL;$1A=&%&:65L9`!R
+M<C(W,C!?1V5T0V]R94-O;G1E>'1&<F]M4&]O;`!R<C(W,C!?4T-325]-86ME
+M36]D95!A9V5#86-H:6YG`')R,C<R,%]O9&EN7W-E=%]S<&EN7W5P7VUO9&4`
+M<G(R-S(P7U-'5&%B;&5?26YI=`!R<C(W,C!?4G5N=&EM94ES<W5E4V]F=%)E
+M<V5T`&]D:6Y?<V5T7VAA<F1?9&ES:U]I9&5N=&EF>0!R<C(W,C!?4&]R=%](
+M86YD;&50;'5G:6X`<G(R-S(P7V]D:6Y?9FQA<VA?86-C97-S`')R,C<R,%]D
+M979I8V5?<')O8F5?9&]N90!'971$979)9&5N=&EF>49R86UE`')R,C<R,%]0
+M;W-T36%K95-E<T5L96UE;G1$97-C<FEP=&]R4F5Q=65S=`!R<C(W,C!?4&]R
+M=%]-;VYI=&]R`&DR8T)?<F5A9%]B>71E<P!R<C(W,C!?1&5V:6-E7TUA:V52
+M96%D0V%P86-I='E487-K4F5Q=65S=`!S87-?861D<F5S<U]C;W5N=`!R<C(W
+M,C!?4V5R=FEC94EN=&5R<G5P=`!R<C(W,C!?4T%405](86YD;&5$979I8V55
+M;G!L=6<`<G(R-S(P7U-'5&%B;&5?079A:6QA8FQE`')R,C<R,%]305-?26YT
+M97)N86Q297%#86QL8F%C:P!R<C(W,C!?7U]035]C86YC96Q?=&EM97(`<G(R
+M-S(P7TU67T-O<'E31U1A8FQE`')R,C<R,%]#;W)E7TUA:V5$979I8V5297-E
+M=%)E<0!R<C(W,C!?;79?9&ES86)L95]R96=I<W1E<E]S970`<G(R-S(P7T-O
+M;7!L971E4F5Q=65S=`!R<C(W,C!?4T=024]?4TU04F5Q=65S=%]296%D`')R
+M,C<R,%]30U-)7T%405]296%D0V%P86-I='E4<F%N<VQA=&EO;@!R<C(W,C!?
+M17AP86YD97)?4TU04F5Q7T-A;&QB86-K`')R,C<R,%]$25-#7T1O1&ES8V]V
+M97(`<G(R-S(P7U-'4$E/7U-E=%]&86EL;&5D`')R,C<R,%]0;W)T7U-O9G12
+M97-E=$-A;&QB86-K`')R,C<R,%]0;W)T7TAA;F1L955N<&QU9P!R<C(W,C!?
+M0V]R95]297%4:6UE;W5T`')R,C<R,%]!<W-I9VY$979I8V5%;&5M96YT3G5M
+M8F5R`')R,C<R,%]%>'!A;F1E<E]335!297%U97-T7U!H>4-O;G1R;VP`<G(R
+M-S(P7U-!5$%?4')E<&%R94-O;6UA;F1(96%D97(`<G(R-S(P7VDR8U]R97-E
+M=`!R<C(W,C!?4G5N=&EM94ES<W5E4F5A9$QO9T5X=`!R<C(W,C!?;79#:&%N
+M;F5L4W1A=&5-86-H:6YE`')R,C<R,%]O9&EN7VEO8W1L`')R,C<R,%]#;W)E
+M7TUO9'5L94EN:71I86QI>F4`<G(R-S(P7TU67U)E;6]V951A<F=E=$E$`')R
+M,C<R,%]#;W)E7W!A<W-?=&AR=5]F:6QL7W1A<VMF:6QE`')R,C<R,%])<W-U
+M95]297!O<G1'96YE<F%L`')R,C<R,%]),D-?36]D=6QE26YI=&EA;&EZ90!R
+M<C(W,C!?4T-325]!5$%?5F5R:69Y5')A;G-L871I;VX`<G(R-S(P7T9I;F14
+M9W1.;P!R<C(W,C!?1&5V:6-E7TUA:V5397-28W9$:6%G4F5Q=65S=`!R<C(W
+M,C!?57!D871E5VED95!O<G10:'E-87``<G(R-S(P7VUV7V1I<V%B;&5?:&)A
+M`')R,C<V>%]0<F5P87)E06YD4V5N9$-O;6UA;F0`<G(R-S9X7T-O<F5?36]D
+M=6QE1V5T4F5S;W5R8V51=6]T80!R<C(W-GA?17AP86YD97)?4TU04F5Q=65S
+M=%]0:'E#;VYT<F]L`')R,C<V>%]M=E]R97-E=%]X;70`<G(R-S9X7U!O<G1?
+M06)O<G1297%U97-T<P!R<C(W-GA?4&]R=%]3;V9T4F5S971#86QL8F%C:P!R
+M<C(W-GA?1G)E95-%4U-"5&]0;V]L`')R,C<V>%]#;W)E7W!A<W-?=&AR=5]F
+M:6QL7W1A<VMF:6QE`')R,C<V>%]30U-)7T%405]3>6YC0V%C:&54<F%N<VQA
+M=&EO;@!R<C(W-GA?27-S=65?0V]N9FEG4F]U=&5);F9O`')R,C<V>%]335!?
+M4T=024]?4V5T7T9A:6QL960`<G(R-S9X7U-!4U]%<G)O<DAA;F1L:6YG`')R
+M,C<V>%]0;W)T7TES4F5Q=65S=%)U;FYI;F<`<G(R-S9X7T1)4T-?1V5T4F5S
+M;W5R8V4`<G(R-S9X7T-O<F5?1V5T4W5P<&]R=&5D0V]U;G1S`')R,C<V>%]-
+M5E]$=6UP4F5G:7-T97(`<G(R-S9X7U-#4TE?051!7T-H96-K0V]N9&ET:6]N
+M`')R,C<V>%]305-?2&%N9&QE0E)$0U-4`')R,C<V>%]2=6YT:6UE27-S=652
+M96%D3&]G17AT`')R,C<V>%]305-?1&5V:6-E4W1A=&5-86-H:6YE`')R,C<V
+M>%]$979I8V5?27-S=653;V9T4F5S970`<G(R-S9X7T%4345,7U-025]#340`
+M<G(R-S9X7U!O<G1?2&%N9&QE56YP;'5G`')R,C<V>%]30U-)7T%405]296%D
+M5W)I=&54<F%N<VQA=&EO;@!R<C(W-GA?0V%L8W5L871E4F]U=&5);F1E>`!R
+M<C(W-GA?1G)E95-'0G5F9F5R5&]0;V]L`')R,C<V>%]D=6UP7W5N87-S;V-I
+M871E9%]F:7,`<G(R-S9X7U1A9U]);FET`')R,C<V>%]$979I8V5?36%K94UO
+M9&5396QE8W1297%U97-T`')R,C<V>%]035])<W-U95=R:71E4F5G`')R,C<V
+M>%]30U-)7T%405]&:6QL3$)!0V1B,3``<G(R-S9X7U-'4$E/7U--4%)E<75E
+M<W1?4F5A9`!R<C(W-GA?3V1I;E-025]);FET`')R,C<V>%]&<F5E4F5G:7-T
+M97)3970`<G(R-S9X7U1A9U]296QE87-E3VYE`')R,C<V>%]!<W-I9VY$979I
+M8V5/=F5R86QL16QE;65N=$YU;6)E<@!R<C(W-GA?;V1I;E]S971?<W!I;E]U
+M<%]M;V1E`')R,C<V>%]&<F5E1&5V:6-E5&]0;V]L`')R,C<V>%]M=E]E;F%B
+M;&5?>&UT`')R,C<V>%]30U-)7T%405]296%D0V%P86-I='E4<F%N<VQA=&EO
+M;D-A;&QB86-K`')R,C<V>%]$979I8V5?4&%R<V5)9&5N=&EF>41A=&$`<G(R
+M-S9X7U-'5&%B;&5?079A:6QA8FQE`')R,C<V>%]31U!)3U]7<FET95)E9VES
+M=&5R`')R,C<V>%]-5E]#4D,`<G(R-S9X7T1E=FEC95]-86ME26YQ=6ER>51A
+M<VM297%U97-T`')R,C<V>%]31U!)3U]3971?1F%I;&QE9`!R<C(W-GA?57!D
+M871E4&AY26YF;P!R<C(W-GA?4T%405]0<F5P87)E0V]M;6%N9$AE861E<@!R
+M<C(W-GA?1G)E95!-5&]0;V]L`')R,C<V>%]O9&EN7VEO8W1L`')R,C<V>%]#
+M:&5C:T1E=FEC94-H86YG90!R<C(W-GA?4&]S=$UA:V5397-%;F-L;W-U<F53
+M=&%T=7-297%U97-T`')R,C<V>%]5<&1A=&5487)G971$979I8V5S`')R,C<V
+M>%]D979I8V5?<')O8F5?9&]N90!R<C(W-GA?0V]R95]297%4:6UE;W5T`')R
+M,C<V>%]$979I8V5?36%K95-E<U)C=D1I86=297%U97-T`')R,C<V>%]"965P
+M3V9F`')R,C<V>%]'971$979I8V5&<F]M4&]O;`!R<C(W-GA?5&%G7TES16UP
+M='D`<G(R-S9X7U5P9&%T95=I9&50;W)T4&AY36%P`')R,C<V>%]O9&EN7W-E
+M=%]I9&QE7W-T86YD8GD`<G(R-S9X7T9R965#;W)E0V]N=&5X=%1O4&]O;`!R
+M<C(W-GA?0V]R95]-;V1U;&5);FET:6%L:7IE`')R,C<V>%]5<&1A=&53=&%T
+M=7-6<U-E<T-O;G1R;VQ"=69F97(`<G(R-S9X7U!O<G1?36]N:71O<@!R<C(W
+M-GA?4T%37TEN=&5R;F%L4F5Q0V%L;&)A8VL`<G(R-S9X7U-#4TE?36%K94-A
+M8VAE0V]M;6%N9`!R<C(W-GA?4U-47U-025]#340`<G(R-S9X7U!-7T-O<F5?
+M4F5Q5&EM96]U=`!?;V1I;E]C:&5C:U]N=G)A;0!R<C(W-GA?1&5V:6-E7TUA
+M:V5296%D0V%P86-I='DQ-E1A<VM297%U97-T`')R,C<V>%]$979I8V5?5W)I
+M=&5397-#;VYT<F]L1&EA9P!R<C(W-GA?1FEN9%)U;FYI;F=297%">51A9P!R
+M<C(W-GA?359?1'5M<%)E<75E<W0`<G(R-S9X7U-!5$%?4$U?2&%N9&QE1&5V
+M:6-E4&QU9VEN`')R,C<V>%]C;W)E7VAA;F1L95]T87-K9FEL95]E<G)O<@!R
+M<C(W-GA?4T-325]4;U]&25,`<G(R-S9X7T=E=%!-1&5V:6-E`')R,C<V>%]3
+M051!7U!R97!A<F5#;VUM86YD5&%B;&4`<G(R-S9X7TU67TUA<%1O4W!E8VEF
+M:6-487)G971)1`!R<C(W-GA?1&5V:6-E7TUA:V5297%U97-T5&%S:U)E<75E
+M<W0`<G(R-S9X7U-#4TE?051!7T9I;&Q$871A1FEE;&0`<G(R-S9X7T=E=%-'
+M0G5F9F5R1G)O;5!O;VP`<G(R-S9X7U-#4TE?051!7U9E<FEF>51R86YS;&%T
+M:6]N`')R,C<V>%]0<F5%;7!T>41E=FEC90!R<C(W-GA?1V5T36%X3F5G;W1I
+M871E9$QI;FM2871E`')R,C<V>%]'9710;W)T1G)O;5!O;VP`<G(R-S9X7V]D
+M:6Y?9FQA<VA?86-C97-S`')R,C<V>%]'971%>'!A;F1E<D9R;VU0;V]L`')R
+M,C<V>%]3051!7U!O<G1$971E8W0`<G(R-S9X7TU67TUA<%1A<F=E=$E$`')R
+M,C<V>%]'971/;F5#;VUM86YD4VQO=`!R<C(W-GA?57!D871E5&=T1&5V36%P
+M`')R,C<V>%]486=?26YI=%]&249/`')R,C<V>%]%>'!A;F1E<E]335!297%U
+M97-T7U)E<&]R=%!(65-!5$$`<G(R-S9X7TDR0U]-;V1U;&5);FET:6%L:7IE
+M`')R,C<V>%]M=E]R97-E=%]P:'D`<G(R-S9X7T1E=FEC95]-86ME4W1A<G13
+M=&]P56YI=%)E<75E<W0`<G(R-S9X7T)E97!/;@!R<C(W-GA?1G)E95-!5$%3
+M8W)A=&-H5&]0;V]L`')R,C<V>%]3051!7U!O<G1297-E=`!R<C(W-GA?;79?
+M<V5T7U-!4T%D9'(`<G(R-S9X7U-!5$%?2&%N9&QE1&5V:6-E56YP;'5G`')R
+M,C<V>%]31U1A8FQE7TEN:70`<G(R-S9X7T-O<F5?2&%N9&QE5V%I=&EN9TQI
+M<W0`<G(R-S9X7T9R965335!38W)A=&-H5&]0;V]L`')R,C<V>%]31U!)3U]3
+M35!297%?0V%L;&)A8VL`<G(R-S9X7T=E=$-O<F5#;VYT97AT1G)O;5!O;VP`
+M<G(R-S9X7T1I<V-O=F5R>4-A;&Q"86-K`')R,C<V>%]486=?1V5T3VYE`')R
+M,C<V>%]30U-)7T%405]&:6QL3$)!0V1B,38`<G(R-S9X7U9E<FEF>4-O;6UA
+M;F1"969O<F5396YD:6YG`')R,C<V>%](86YD;&5#;VUM86YD475E=64`<G(R
+M-S9X7U-!5$%?4$U?17)R;W)(86YD;&EN9P!R<C(W-GA?3&ES=%]'971,87-T
+M`')R,C<V>%]-5E]);FET:6%L:7IE5&%R9V5T241486)L90!R<C(W-GA?4&]S
+M=$UA:V5397-%;&5M96YT4W1A='5S4F5Q=65S=`!R<C(W-GA?1FEN9$9R9653
+M35!#;VYT97AT`')R,C<V>%]$25-#7U-E=%)E<V]U<F-E`')R,C<V>%]'9713
+M35!38W)A=&-H1G)O;5!O;VP`<G(R-S9X7T-O<F5?4F5S971#;613;&]T`')R
+M,C<V>%]0;W-T36%K95-E<T5L96UE;G1$97-C<FEP=&]R4F5Q=65S=`!R<C(W
+M-GA?0V]R95]);G1E<FYA;%-E;F1297%U97-T`')R,C<V>%]?7V-A;F-E;%]T
+M:6UE<@!R<C(W-GA?17AP86YD97)?4TU04F5Q=65S=%]297!O<G1'96YE<F%L
+M`')R,C<V>%]%>'!A;F1E<E]335!297%?0V%L;&)A8VL`<G(R-S9X7U]?861D
+M7W1I;65R`')R,C<V>%])<W-U95]297!O<G1'96YE<F%L`')R,C<V>%]-5E]:
+M97)O379297%U97-T`')R,C<V>%]!5$%?0T1",E1A<VM&:6QE`')R,C<V>%]$
+M25-#7T=E=$YE9V]T:6%T961,:6YK4F%T90!R<C(W-GA?4T%405]0;W)T2&%N
+M9&QE26YT97)R=7!T`')R,C<V>%]$:7-C;W9E<GE330!R<C(W-GA?4$U?07-S
+M:6=N4F5G:7-T97)3970`<G(R-S9X7U-!5$%?4$U?2&%N9&QE1&5V:6-E56YP
+M;'5G`')R,C<V>%]M=E]D:7-A8FQE7WAM=`!R<C(W-GA?4TU04F5S<$QE;F=T
+M:`!R<C(W-GA?1V5T3D-15&%G`')R,C<V>%]-5E]%<75A;',`<G(R-S9X7U!-
+M7T9R965296=I<W1E<E-E=`!R<C(W-GA?17AP86YD97)?4TU04F5Q=65S=%]$
+M:7-C;W9E<@!R<C(W-GA?1&5T96-T4&]R=%1Y<&4`<G(R-S9X7T-O<F5297-T
+M;W)E3W)I9VEN86Q#1$(`<G(R-S9X7U-%4U]3971&86EL3&5D`')R,C<V>%]2
+M=6YT:6UE27-S=653;V9T4F5S970`<G(R-S9X7U-!5$%?4$U(;W1P;'5G4F5Q
+M0V%L;&)A8VL`<G(R-S9X7T=E=$UI;DYE9V]T:6%T961,:6YK4F%T90!R<C(W
+M-GA?4G5N=&EM94ES<W5E4V]F=%)E<V5T0V%L;&)A8VL`<G(R-S9X7T=E=%!-
+M1G)O;5!O;VP`<G(R-S9X7U!R97!A<F5$96QI=F5R>5%U975E16YT<GD`<G(R
+M-S9X7U-T;W)E7T-O;F9I9U)O=71E26YF;P!R<C(W-GA?0V]R95]);G1E<G)U
+M<'1397)V:6-E4F]U=&EN90!R<C(W-GA?1G)E95!O<G14;U!O;VP`<G(R-S9X
+M7T-O<F5?36]D=6QE4V5N9%)E<75E<W0`<G(R-S9X7T-O;7!L971E4F5Q=65S
+M=$%N9%-L;W0`<G(R-S9X7T%S<VEG;D5L96UE;G13;&]T3G5M8F5R`')R,C<V
+M>%]!<W-I9VY296=I<W1E<E-E=`!R<C(W-GA?359?4F5M;W9E5&%R9V5T240`
+M<G(R-S9X7T1E=FEC95]-86ME4F5A9$-A<&%C:71Y5&%S:U)E<75E<W0`<G(R
+M-S9X7U-44%]$979I8V5297-E=`!R<C(W-GA?0V]R95]-;V1U;&53:'5T9&]W
+M;@!R<C(W-GA?359?4V5T3$)!86YD4V5C=&]R0V]U;G0`<G(R-S9X7U-!5$%?
+M2&%N9&QE1&5V:6-E4&QU9VEN`')R,C<V>%]296UO=F5$979I8V4`<G(R-S9X
+M7W-E=%]F86EL7VQE9',`<G(R-S9X7T%S<VEG;D1E=FEC945L96UE;G1.=6UB
+M97(`<G(R-S9X7U-!4U](86YD;&5#;VUP;&5T961#;VUM86YD`')R,C<V>%],
+M:7-T7T=E=$9I<G-T`')R,C<V>%])<W-U95]297!O<G1-86YU9F%C='5R97))
+M;F9O<FUA=&EO;@!R<C(W-GA?4T%405]034EN:71297%#86QL8F%C:P!R<C(W
+M-GA?5W)I=&5$14Q67U%?16YT<GD`<G(R-S9X7T9R965335!#;VYT97AT`')R
+M,C<V>%]$25-#7T1O1&ES8V]V97(`<G(R-S9X7U]?4$U?8V%N8V5L7W1I;65R
+M`')R,C<V>%]O9&EN7W)E;6]V95]D979I8V4`<G(R-S9X7U!R945M<'1Y4$T`
+M<G(R-S9X7T=E=$EN=&5R;F%L4F5Q1G)O;5!O;VP`<G(R-S9X7W-E=%]F86EL
+M7VQE9`!R<C(W-GA?4T=024]?26YI=&EA;&EZ90!R<C(W-GA?4T-325]!5$%?
+M57!P97)7;W)D`')R,C<V>%]&<F5E26YT97)N86Q297%4;U!O;VP`<G(R-S9X
+M7T-O<F5?36]D=6QE4W1A<G0`<G(R-S9X7T1)4T-?0V%N8V5L1&ES8V]V97(`
+M<G(R-S9X7U-!5$%?17)R;W)(86YD;&EN9P!R<C(W-GA?0V]R95]-86ME1&5V
+M:6-E4F5S971297$`<G(R-S9X7U-!4U]0;W)T4F5S970`<G(R-S9X7T1E=FEC
+M95]-86ME36]D95-E;G-E4F5Q=65S=`!R<C(W-GA?4T537TEN=&5R;F%L4F5Q
+M0V%L;&)A8VL`7V]D:6Y?8VAE8VM?;'!C`')R,C<V>%]3051396YS941A=&$`
+M<G(R-S9X7TU67T-O<'E31U1A8FQE`')R,C<V>%]&:6YD07-C:6E.=6UB97(`
+M<G(R-S9X7TES<W5E7T1I<V-O=F5R`')R,C<V>%]397)V:6-E26YT97)R=7!T
+M`')R,C<V>%]3051!7U!-4W1A=&5-86-H:6YE`')R,C<V>%]3051!7T1E=FEC
+M95-T871E36%C:&EN90!R<C(W-GA?4T%405]0;W)T1&5V:6-E4F5A9'D`<G(R
+M-S9X7U]?<F5N97=?=&EM97(`<G(R-S9X7T-O;7!L971E4F5Q=65S=`!R<C(W
+M-GA?4&]S=$UA:V5397-#;VYF:6=U<F%T:6]N4F5Q=65S=`!R<C(W-GA?1G)E
+M945X<&%N9&5R5&]0;V]L`')R,C<V>%]$25-#7T=E=%1G=$1E=DUA<`!R<C(W
+M-GA?4T-325]!5$%?3&]W97)7;W)D`')R,C<V>%]0;W)T7T9I;F149W1.;P!R
+M<C(W-GA?1$E30U]#:&5C:T1I<V-O=F5R4W1A=&4`<G(R-S9X7T9I;F149W1.
+M;P!R<C(W-GA?0V]R95]&:6QL4V5N<V5$871A`')R,C<V>%]0;W)T7TAA;F1L
+M941E=FEC95!L=6=I;@!R<C(W-GA?1V5T4T534T)&<F]M4&]O;`!R<C(W-GA?
+M0V]R95]-;V1U;&5%;F%B;&5$:7-A8FQE25)1`')R,C<V>%]#;W)E4V%V94]R
+M:6=I;F%L0T1"`')R,C<V>%])<W-U95]297!O<G12;W5T94EN9F\`<G(R-S9X
+M7U-'4$E/7U--4%)E<75E<W1?5W)I=&4`<G(R-S9X7VUV7V1I<V%B;&5?:&)A
+M`')R,C<V>%]31U1A8FQE7T%P<&5N9`!R<C(W-GA?;6]D95!A9V5"=68`<G(R
+M-S9X7U-'4$E/7U)E861296=I<W1E<@!R<C(W-GA?;79?9&ES86)L95]R96=I
+M<W1E<E]S970`<G(R-S9X7U!O<G1?2&%N9&QE4&QU9VEN`')R,C<V>%]'9713
+M051!4V-R871C:$9R;VU0;V]L`')R,C<V>%]-5E]'971-87!P961)1`!R<C(W
+M-GA?;79#:&%N;F5L4W1A=&5-86-H:6YE`')R,C<V>%]#:&5C:U1A<F=E=$-H
+M86YG90!R<C(W-GA?:3)C7W)E<V5T`')R,C<V>%]30U-)7T%405]296%D0V%P
+M86-I='E4<F%N<VQA=&EO;@!R<C(W-GA?0T]215])<W-U95--4%)E<75E<W0`
+M<G(R-S9X7U-!5$%?4&]R=$1E=FEC941E=&5C=&5D`')R,C<V>%]30U-)7T%4
+M05]3=&%R=%-T;W!4<F%N<VQA=&EO;@!R<C(W-GA?4$U?27-S=65296%D4F5G
+M`')R,C<V>%]&:6QL16YC;&]S=7)E16QE;65N=%-T871U<P!R<C(W-GA?4T-3
+M25]-86ME36]D95!A9V5#86-H:6YG`')R,C<V>%]#871E9V]R>5]#1$)?5'EP
+M90!R<C(W.'A?0V]R95]);G1E<FYA;%-E;F1297%U97-T`')R,C<X>%]305-?
+M4&]R=%)E<V5T`')R,C<X>%]$:7-C;W9E<GE330!R<C(W.'A?4T%405]0;W)T
+M2&%N9&QE26YT97)R=7!T`')R,C<X>%]#3U)%7TES<W5E4TU04F5Q=65S=`!R
+M<C(W.'A?4T-325]!5$%?4WEN8T-A8VAE5')A;G-L871I;VX`<G(R-SAX7U-T
+M;W)E7T-O;F9I9U)O=71E26YF;P!R<C(W.'A?359?6F5R;TUV4F5Q=65S=`!R
+M<C(W.'A?0V]R95]'9713=7!P;W)T961#;W5N=',`<G(R-SAX7T=E=%!O<G1&
+M<F]M4&]O;`!R<C(W.'A?4T=486)L95]!=F%I;&%B;&4`<G(R-SAX7T=E=$5X
+M<&%N9&5R1G)O;5!O;VP`<G(R-SAX7T9R965315-30E1O4&]O;`!R<C(W.'A?
+M4&]S=$UA:V5397-%;&5M96YT1&5S8W)I<'1O<E)E<75E<W0`<G(R-SAX7T1I
+M<V-O=F5R>4-A;&Q"86-K`')R,C<X>%]035]#;W)E7U)E<51I;65O=70`<G(R
+M-SAX7U5P9&%T951A<F=E=$1E=FEC97,`<G(R-SAX7T1E=FEC95]087)S94ED
+M96YT:69Y1&%T80!R<C(W.'A?4T-325]!5$%?1FEL;$Q"04-D8C$V`')R,C<X
+M>%]'9710349R;VU0;V]L`')R,C<X>%])<W-U95]297!O<G12;W5T94EN9F\`
+M<G(R-SAX7TES<W5E7U)E<&]R=$=E;F5R86P`<G(R-SAX7U5P9&%T95!H>4EN
+M9F\`<G(R-SAX7T%4345,7U-025]#340`<G(R-SAX7U-#4TE?051!7T9I;&Q$
+M871A1FEE;&0`<G(R-SAX7T%405]#1$(R5&%S:T9I;&4`<G(R-SAX7T9R965$
+M979I8V54;U!O;VP`<G(R-SAX7T=E=%--4%-C<F%T8VA&<F]M4&]O;`!R<C(W
+M.'A?4$U?07-S:6=N4F5G:7-T97)3970`<G(R-SAX7U-#4TE?36%K94UO9&50
+M86=E0V%C:&EN9P!R<C(W.'A?1&5V:6-E7TUA:V5397-28W9$:6%G4F5Q=65S
+M=`!R<C(W.'A?0V]R95-A=F5/<FEG:6YA;$-$0@!R<C(W.'A?0V]R95)E<W1O
+M<F5/<FEG:6YA;$-$0@!R<C(W.'A?1$E30U]3971297-O=7)C90!R<C(W.'A?
+M17AP86YD97)?4TU04F5Q=65S=%]297!O<G102%E3051!`')R,C<X>%]0<F5P
+M87)E1&5L:79E<GE1=65U945N=')Y`')R,C<X>%]&<F5E4T="=69F97)4;U!O
+M;VP`<G(R-SAX7U-!5$%?4&]R=$1E=FEC95)E861Y`')R,C<X>%]),D-?36]D
+M=6QE26YI=&EA;&EZ90!R<C(W.'A?8V]R95]H86YD;&5?=&%S:V9I;&5?97)R
+M;W(`<G(R-SAX7U!R945M<'1Y1&5V:6-E`')R,C<X>%]31U!)3U]335!297%U
+M97-T7U)E860`<G(R-SAX7T9R9653051!4V-R871C:%1O4&]O;`!R<C(W.'A?
+M4T%37TAA;F1L94-O;7!L971E9$-O;6UA;F0`<G(R-SAX7TU67T1U;7!296=I
+M<W1E<@!R<C(W.'A?1V5T4$U$979I8V4`<G(R-SAX7T]D:6Y34$E?26YI=`!R
+M<C(W.'A?359?4V5T3$)!86YD4V5C=&]R0V]U;G0`<G(R-SAX7U=R:71E1$5,
+M5E]17T5N=')Y`')R,C<X>%]&<F5E4&]R=%1O4&]O;`!R<C(W.'A?4&]R=%](
+M86YD;&50;'5G:6X`<G(R-SAX7U-'4$E/7U--4%)E<75E<W1?5W)I=&4`<G(R
+M-SAX7TAA;F1L94-O;6UA;F11=65U90!R<C(W.'A?4T%37T1E=FEC95-T871E
+M36%C:&EN90!R<C(W.'A?0V]R95]-;V1U;&5%;F%B;&5$:7-A8FQE25)1`')R
+M,C<X>%]2=6YT:6UE27-S=65296%D3&]G17AT`')R,C<X>%]&:6QL16YC;&]S
+M=7)E16QE;65N=%-T871U<P!R<C(W.'A?4T-325]!5$%?3&]W97)7;W)D`')R
+M,C<X>%]3051!7U!-7TAA;F1L941E=FEC95!L=6=I;@!R<C(W.'A?0V]M<&QE
+M=&5297%U97-T06YD4VQO=`!R<C(W.'A?4$U?27-S=657<FET95)E9P!R<C(W
+M.'A?4T%405]0;W)T1&5V:6-E1&5T96-T960`<G(R-SAX7U!O<W1-86ME4V5S
+M0V]N9FEG=7)A=&EO;E)E<75E<W0`<G(R-SAX7T1E=FEC95]-86ME4F5A9$-A
+M<&%C:71Y5&%S:U)E<75E<W0`<G(R-SAX7T-O<F5?36]D=6QE4VAU=&1O=VX`
+M<G(R-SAX7U!O<W1-86ME4V5S16YC;&]S=7)E4W1A='5S4F5Q=65S=`!R<C(W
+M.'A?1$E30U]#86YC96Q$:7-C;W9E<@!R<C(W.'A?4T=486)L95]!<'!E;F0`
+M<G(R-SAX7U!R97!A<F5!;F1396YD0V]M;6%N9`!R<C(W.'A?0V]R95]-86ME
+M1&5V:6-E4F5S971297$`<G(R-SAX7TU67TUA<%1O4W!E8VEF:6-487)G971)
+M1`!R<C(W.'A?4T%37TEN=&5R;F%L4F5Q0V%L;&)A8VL`<G(R-SAX7T%S<VEG
+M;D1E=FEC945L96UE;G1.=6UB97(`<G(R-SAX7U-!5$%?4$U3=&%T94UA8VAI
+M;F4`<G(R-SAX7U-'5&%B;&5?26YI=`!R<C(W.'A?4&]R=%]-;VYI=&]R`')R
+M,C<X>%]$25-#7T-H96-K1&ES8V]V97)3=&%T90!R<C(W.'A?1G)E94-O<F5#
+M;VYT97AT5&]0;V]L`')R,C<X>%]&<F5E4F5G:7-T97)3970`<G(R-SAX7U1A
+M9U]);FET7T9)1D\`<G(R-SAX7U5P9&%T951G=$1E=DUA<`!R<C(W.'A?1$E3
+M0U]'971.96=O=&EA=&5D3&EN:U)A=&4`<G(R-SAX7U-'4$E/7U-E=%]&86EL
+M;&5D`')R,C<X>%]0;W)T7T9I;F149W1.;P!R<C(W.'A?4$U?1G)E95)E9VES
+M=&5R4V5T`')R,C<X>%]-5E]296UO=F5487)G971)1`!R<C(W.'A?1V5T4T="
+M=69F97)&<F]M4&]O;`!R<C(W.'A?4T-325]!5$%?0VAE8VM#;VYD:71I;VX`
+M<G(R-SAX7T-O<F5?36]D=6QE1V5T4F5S;W5R8V51=6]T80!R<C(W.'A?4&]R
+M=%](86YD;&55;G!L=6<`<G(R-SAX7U1A9U]);FET`')R,C<X>%]486=?27-%
+M;7!T>0!R<C(W.'A?1V5T3D-15&%G`')R,C<X>%]M=E]R97-E=%]X;70`<G(R
+M-SAX7T9R965335!#;VYT97AT`')R,C<X>%]#871E9V]R>5]#1$)?5'EP90!R
+M<C(W.'A?4TU04F5S<$QE;F=T:`!R<C(W.'A?1$E30U]'97149W1$979-87``
+M<G(R-SAX7U-'4$E/7TEN:71I86QI>F4`<G(R-SAX7T-O<F5?2&%N9&QE5V%I
+M=&EN9TQI<W0`<G(R-SAX7U)E;6]V941E=FEC90!R<C(W.'A?4T%405](86YD
+M;&5$979I8V50;'5G:6X`<G(R-SAX7T=E=$UA>$YE9V]T:6%T961,:6YK4F%T
+M90!R<C(W.'A?1&5V:6-E7TUA:V5297%U97-T5&%S:U)E<75E<W0`<G(R-SAX
+M7T=E=$UI;DYE9V]T:6%T961,:6YK4F%T90!R<C(W.'A?4T%405]035](86YD
+M;&5$979I8V55;G!L=6<`<G(R-SAX7T=E=$EN=&5R;F%L4F5Q1G)O;5!O;VP`
+M<G(R-SAX7T1E=FEC95]-86ME26YQ=6ER>51A<VM297%U97-T`')R,C<X>%]!
+M<W-I9VY%;&5M96YT4VQO=$YU;6)E<@!R<C(W.'A?1G)E94EN=&5R;F%L4F5Q
+M5&]0;V]L`')R,C<X>%]?7U!-7V-A;F-E;%]T:6UE<@!R<C(W.'A?27-S=65?
+M0V]N9FEG4F]U=&5);F9O`')R,C<X>%]486=?4F5L96%S94]N90!R<C(W.'A?
+M;79?9&ES86)L95]H8F$`<G(R-SAX7TU67T-O<'E31U1A8FQE`')R,C<X>%]M
+M=E]E;F%B;&5?>&UT`')R,C<X>%]30U-)7U1O7T9)4P!R<C(W.'A?1&5V:6-E
+M7TUA:V5-;V1E4V5L96-T4F5Q=65S=`!R<C(W.'A?;V1I;E]R96UO=F5?9&5V
+M:6-E`')R,C<X>%]&:6YD5&=T3F\`<G(R-SAX7TES<W5E7T1I<V-O=F5R`')R
+M,C<X>%]-5E]-87!487)G971)1`!R<C(W.'A?57!D871E5VED95!O<G10:'E-
+M87``<G(R-SAX7U]?8V%N8V5L7W1I;65R`')R,C<X>%]3051396YS941A=&$`
+M<G(R-SAX7V1E=FEC95]P<F]B95]D;VYE`')R,C<X>%]&<F5E17AP86YD97)4
+M;U!O;VP`<G(R-SAX7VUV7V1I<V%B;&5?>&UT`')R,C<X>%]M=D-H86YN96Q3
+M=&%T94UA8VAI;F4`<G(R-SAX7T9I;F1!<V-I:4YU;6)E<@!R<C(W.'A?4$U?
+M27-S=65296%D4F5G`')R,C<X>%]M=E]R97-E=%]P:'D`<G(R-SAX7U-#4TE?
+M051!7T9I;&Q,0D%#9&(Q,`!R<C(W.'A?<V5T7V9A:6Q?;&5D`')R,C<X>%]!
+M<W-I9VY296=I<W1E<E-E=`!R<C(W.'A?1G)E95--4%-C<F%T8VA4;U!O;VP`
+M<G(R-SAX7TU67TEN:71I86QI>F5487)G971)1%1A8FQE`')R,C<X>%]30U-)
+M7T%405]3=&%R=%-T;W!4<F%N<VQA=&EO;@!R<C(W.'A?1FEN9%)U;FYI;F=2
+M97%">51A9P!R<C(W.'A?4T%405]$979I8V53=&%T94UA8VAI;F4`<G(R-SAX
+M7T-O<F5?36]D=6QE4W1A<G0`<G(R-SAX7U]?<F5N97=?=&EM97(`<G(R-SAX
+M7U!O<G1?2&%N9&QE1&5V:6-E4&QU9VEN`')R,C<X>%]315-?4V5T1F%I;$QE
+M9`!R<C(W.'A?1$E30U]'971297-O=7)C90!R<C(W.'A?4T%405]034AO='!L
+M=6=297%#86QL8F%C:P!R<C(W.'A?;79?<V5T7U-!4T%D9'(`<G(R-SAX7U)U
+M;G1I;65)<W-U95-O9G1297-E=$-A;&QB86-K`')R,C<X>%]0;W)T7TES4F5Q
+M=65S=%)U;FYI;F<`<G(R-SAX7U-#4TE?051!7U5P<&5R5V]R9`!R<C(W.'A?
+M17AP86YD97)?4TU04F5Q=65S=%]0:'E#;VYT<F]L`')R,C<X>%]$979I8V5?
+M27-S=653;V9T4F5S970`<G(R-SAX7U-!5$%?4$U?17)R;W)(86YD;&EN9P!R
+M<C(W.'A?0F5E<$]F9@!R<C(W.'A?1$E30U]$;T1I<V-O=F5R`')R,C<X>%]$
+M979I8V5?5W)I=&5397-#;VYT<F]L1&EA9P!R<C(W.'A?1&5V:6-E7TUA:V52
+M96%D0V%P86-I='DQ-E1A<VM297%U97-T`')R,C<X>%]30U-)7T%405]697)I
+M9GE4<F%N<VQA=&EO;@!R<C(W.'A?1V5T4T%405-C<F%T8VA&<F]M4&]O;`!R
+M<C(W.'A?4T%37TAA;F1L94)21$-35`!R<C(W.'A?;V1I;E]I;V-T;`!R<C(W
+M.'A?0V%L8W5L871E4F]U=&5);F1E>`!R<C(W.'A?27-S=65?4F5P;W)T36%N
+M=69A8W1U<F5R26YF;W)M871I;VX`<G(R-SAX7T-O<F5?4F5Q5&EM96]U=`!R
+M<C(W.'A?;V1I;E]F;&%S:%]A8V-E<W,`<G(R-SAX7T=E=%-%4U-"1G)O;5!O
+M;VP`<G(R-SAX7T1E=FEC95]-86ME4W1A<G13=&]P56YI=%)E<75E<W0`<G(R
+M-SAX7U]?861D7W1I;65R`')R,C<X>%]305-?17)R;W)(86YD;&EN9P!R<C(W
+M.'A?4V5R=FEC94EN=&5R<G5P=`!R<C(W.'A?4T%405]034EN:71297%#86QL
+M8F%C:P!R<C(W.'A?4&]R=%]3;V9T4F5S971#86QL8F%C:P!R<C(W.'A?0VAE
+M8VM$979I8V5#:&%N9V4`<G(R-SAX7T=E=$]N94-O;6UA;F13;&]T`')R,C<X
+M>%]0;W-T36%K95-E<T5L96UE;G13=&%T=7-297%U97-T`')R,C<X>%]2=6YT
+M:6UE27-S=653;V9T4F5S970`<G(R-SAX7U-#4TE?051!7U)E8617<FET951R
+M86YS;&%T:6]N`')R,C<X>%]697)I9GE#;VUM86YD0F5F;W)E4V5N9&EN9P!R
+M<C(W.'A?:3)C7W)E<V5T`')R,C<X>%]30U-)7T%405]296%D0V%P86-I='E4
+M<F%N<VQA=&EO;D-A;&QB86-K`')R,C<X>%]486=?1V5T3VYE`')R,C<X>%]3
+M051!7U!O<G1$971E8W0`<G(R-SAX7T%S<VEG;D1E=FEC94]V97)A;&Q%;&5M
+M96YT3G5M8F5R`')R,C<X>%]3051!7T5R<F]R2&%N9&QI;F<`<G(R-SAX7U-#
+M4TE?051!7U)E861#87!A8VET>51R86YS;&%T:6]N`')R,C<X>%]35%!?1&5V
+M:6-E4F5S970`<G(R-SAX7VUO9&5086=E0G5F`')R,C<X>%],:7-T7T=E=$QA
+M<W0`<G(R-SAX7T=E=$1E=FEC949R;VU0;V]L`')R,C<X>%]0;W)T7T%B;W)T
+M4F5Q=65S=',`<G(R-SAX7T-O<F5?1FEL;%-E;G-E1&%T80!R<C(W.'A?;V1I
+M;E]S971?<W!I;E]U<%]M;V1E`')R,C<X>%]%>'!A;F1E<E]335!297%U97-T
+M7U)E<&]R=$=E;F5R86P`<G(R-SAX7V1U;7!?=6YA<W-O8VEA=&5D7V9I<P!R
+M<C(W.'A?0V]R95]);G1E<G)U<'1397)V:6-E4F]U=&EN90!R<C(W.'A?4T-3
+M25]-86ME0V%C:&5#;VUM86YD`')R,C<X>%]#;W)E7W!A<W-?=&AR=5]F:6QL
+M7W1A<VMF:6QE`')R,C<X>%]#;W)E7TUO9'5L95-E;F1297%U97-T`')R,C<X
+M>%]3051!7U!O<G1297-E=`!R<C(W.'A?0V]R95]-;V1U;&5);FET:6%L:7IE
+M`')R,C<X>%]%>'!A;F1E<E]335!297%?0V%L;&)A8VL`<G(R-SAX7U!R945M
+M<'1Y4$T`<G(R-SAX7T5X<&%N9&5R7U--4%)E<75E<W1?1&ES8V]V97(`<G(R
+M-SAX7U--4%]31U!)3U]3971?1F%I;&QE9`!R<C(W.'A?1&5T96-T4&]R=%1Y
+M<&4`<G(R-SAX7U-'4$E/7U)E861296=I<W1E<@!R<C(W.'A?4T537TEN=&5R
+M;F%L4F5Q0V%L;&)A8VL`<G(R-SAX7TU67T1U;7!297%U97-T`')R,C<X>%]#
+M:&5C:U1A<F=E=$-H86YG90!R<C(W.'A?<V5T7V9A:6Q?;&5D<P!R<C(W.'A?
+M0F5E<$]N`')R,C<X>%]-5E]'971-87!P961)1`!R<C(W.'A?1G)E95!-5&]0
+M;V]L`')R,C<X>%]31U!)3U]7<FET95)E9VES=&5R`')R,C<X>%]5<&1A=&53
+M=&%T=7-6<U-E<T-O;G1R;VQ"=69F97(`<G(R-SAX7T=E=$-O<F5#;VYT97AT
+M1G)O;5!O;VP`<G(R-SAX7U-'4$E/7U--4%)E<5]#86QL8F%C:P!R<C(W.'A?
+M1&5V:6-E7TUA:V5-;V1E4V5N<V5297%U97-T`')R,C<X>%]34U1?4U!)7T--
+M1`!R<C(W.'A?4T%405](86YD;&5$979I8V55;G!L=6<`<G(R-SAX7VUV7V1I
+M<V%B;&5?<F5G:7-T97)?<V5T`')R,C<X>%]#;W)E7U)E<V5T0VUD4VQO=`!R
+M<C(W.'A?4T%405]0<F5P87)E0V]M;6%N9%1A8FQE`')R,C<X>%]3051!7U!R
+M97!A<F5#;VUM86YD2&5A9&5R`')R,C<X>%]&:6YD1G)E95--4$-O;G1E>'0`
+M<G(R-SAX7TU67T-20P!R<C(W.'A?359?17%U86QS`')R,C<X>%]#;VUP;&5T
+M95)E<75E<W0`<G(R-SAX7TQI<W1?1V5T1FER<W0`<G(R-SAX7V]D:6Y?<V5T
+M7VED;&5?<W1A;F1B>0!R<C(W,WA?359?0V]P>5-'5&%B;&4`<G(R-S-X7VUO
+M9&5086=E0G5F`')R,C<S>%]#;W)E7TAA;F1L95=A:71I;F=,:7-T`')R,C<S
+M>%]%>'!A;F1E<E]335!297%?0V%L;&)A8VL`<G(R-S-X7U-'4$E/7U--4%)E
+M<5]#86QL8F%C:P!R<C(W,WA?2&%N9&QE0V]M;6%N9%%U975E`')R,C<S>%]3
+M051!7U!-7TAA;F1L941E=FEC95!L=6=I;@!R<C(W,WA?17AP86YD97)?4TU0
+M4F5Q=65S=%]$:7-C;W9E<@!R<C(W,WA?051!7T-$0C)487-K1FEL90!R<C(W
+M,WA?4T%405]035]%<G)O<DAA;F1L:6YG`')R,C<S>%]305-?2&%N9&QE0E)$
+M0U-4`')R,C<S>%]3051!7T5R<F]R2&%N9&QI;F<`<G(R-S-X7U-#4TE?051!
+M7U)E8617<FET951R86YS;&%T:6]N`')R,C<S>%],:7-T7T=E=$QA<W0`<G(R
+M-S-X7U-!5%-E;G-E1&%T80!R<C(W,WA?1G)E95--4$-O;G1E>'0`<G(R-S-X
+M7T1)4T-?0V%N8V5L1&ES8V]V97(`<G(R-S-X7U!O<G1?27-297%U97-T4G5N
+M;FEN9P!R<C(W,WA?051-14Q?4U!)7T--1`!R<C(W,WA?0V]R95]);G1E<G)U
+M<'1397)V:6-E4F]U=&EN90!R<C(W,WA?1&5V:6-E7TUA:V5);G%U:7)Y5&%S
+M:U)E<75E<W0`<G(R-S-X7T1I<V-O=F5R>4-A;&Q"86-K`')R,C<S>%]!<W-I
+M9VY$979I8V5%;&5M96YT3G5M8F5R`')R,C<S>%]0<F5P87)E1&5L:79E<GE1
+M=65U945N=')Y`')R,C<S>%]30U-)7T%405],;W=E<E=O<F0`<G(R-S-X7T9R
+M9650;W)T5&]0;V]L`')R,C<S>%]-5E]3971,0D%A;F1396-T;W)#;W5N=`!R
+M<C(W,WA?;79?9&ES86)L95]R96=I<W1E<E]S970`<G(R-S-X7U1A9U]);FET
+M`')R,C<S>%]$25-#7T=E=$YE9V]T:6%T961,:6YK4F%T90!R<C(W,WA?4T-3
+M25]!5$%?4W1A<G13=&]P5')A;G-L871I;VX`<G(R-S-X7TES<W5E7T1I<V-O
+M=F5R`')R,C<S>%]30U-)7T%405]5<'!E<E=O<F0`<G(R-S-X7U1A9U]'971/
+M;F4`<G(R-S-X7T-H96-K1&5V:6-E0VAA;F=E`')R,C<S>%]&<F5E0V]R94-O
+M;G1E>'14;U!O;VP`<G(R-S-X7T=E=$UA>$YE9V]T:6%T961,:6YK4F%T90!R
+M<C(W,WA?<V5T7V9A:6Q?;&5D`')R,C<S>%]?7U!-7V-A;F-E;%]T:6UE<@!R
+M<C(W,WA?4$U?27-S=65296%D4F5G`')R,C<S>%]#86QC=6QA=&52;W5T94EN
+M9&5X`')R,C<S>%]%>'!A;F1E<E]335!297%U97-T7U)E<&]R=%!(65-!5$$`
+M<G(R-S-X7U-#4TE?36%K94UO9&5086=E0V%C:&EN9P!R<C(W,WA?1V5T4$U$
+M979I8V4`<G(R-S-X7VUV7W-E=%]305-!9&1R`')R,C<S>%]3051!7U!O<G12
+M97-E=`!R<C(W,WA?1$E30U]'971297-O=7)C90!R<C(W,WA?;V1I;E]F;&%S
+M:%]A8V-E<W,`<G(R-S-X7U-!4U](86YD;&5#;VUP;&5T961#;VUM86YD`')R
+M,C<S>%]$979I8V5?4&%R<V5)9&5N=&EF>41A=&$`<G(R-S-X7U!R945M<'1Y
+M4$T`<G(R-S-X7T1E=FEC95]-86ME36]D95-E;G-E4F5Q=65S=`!R<C(W,WA?
+M4T=486)L95]!=F%I;&%B;&4`<G(R-S-X7U!O<W1-86ME4V5S0V]N9FEG=7)A
+M=&EO;E)E<75E<W0`<G(R-S-X7T-O<F5?36]D=6QE1V5T4F5S;W5R8V51=6]T
+M80!R<C(W,WA?23)#7TUO9'5L94EN:71I86QI>F4`<G(R-S-X7W-E=%]F86EL
+M7VQE9',`<G(R-S-X7T=E=$1E=FEC949R;VU0;V]L`')R,C<S>%]&<F5E4T%4
+M05-C<F%T8VA4;U!O;VP`<G(R-S-X7U)E;6]V941E=FEC90!R<C(W,WA?;79#
+M:&%N;F5L4W1A=&5-86-H:6YE`')R,C<S>%]335!297-P3&5N9W1H`')R,C<S
+M>%]3051!7U!-26YI=%)E<4-A;&QB86-K`')R,C<S>%]035])<W-U95=R:71E
+M4F5G`')R,C<S>%]'9710;W)T1G)O;5!O;VP`<G(R-S-X7T%S<VEG;E)E9VES
+M=&5R4V5T`')R,C<S>%]3051!7U!-4W1A=&5-86-H:6YE`')R,C<S>%]#;VUP
+M;&5T95)E<75E<W1!;F13;&]T`')R,C<S>%]$25-#7T=E=%1G=$1E=DUA<`!R
+M<C(W,WA?1G)E95-%4U-"5&]0;V]L`')R,C<S>%]&:6YD5&=T3F\`<G(R-S-X
+M7U-#4TE?36%K94-A8VAE0V]M;6%N9`!R<C(W,WA?;79?<F5S971?>&UT`')R
+M,C<S>%]486=?4F5L96%S94]N90!R<C(W,WA?0T]215])<W-U95--4%)E<75E
+M<W0`<G(R-S-X7V]D:6Y?:6]C=&P`<G(R-S-X7TU67UIE<F]-=E)E<75E<W0`
+M<G(R-S-X7T1)4T-?1&]$:7-C;W9E<@!R<C(W,WA?4T-325]!5$%?1FEL;$Q"
+M04-D8C$V`')R,C<S>%]'971335!38W)A=&-H1G)O;5!O;VP`<G(R-S-X7T9R
+M965335!38W)A=&-H5&]0;V]L`')R,C<S>%]&<F5E4F5G:7-T97)3970`<G(R
+M-S-X7T=E=$Y#451A9P!R<C(W,WA?4V5R=FEC94EN=&5R<G5P=`!R<C(W,WA?
+M1&5V:6-E7TUA:V5397-28W9$:6%G4F5Q=65S=`!R<C(W,WA?359?26YI=&EA
+M;&EZ951A<F=E=$E$5&%B;&4`<G(R-S-X7TU67T5Q=6%L<P!R<C(W,WA?4$U?
+M1G)E95)E9VES=&5R4V5T`')R,C<S>%]3051!7U!-7TAA;F1L941E=FEC955N
+M<&QU9P!R<C(W,WA?4$U?0V]R95]297%4:6UE;W5T`')R,C<S>%]5<&1A=&57
+M:61E4&]R=%!H>4UA<`!R<C(W,WA?;V1I;E]S971?<W!I;E]U<%]M;V1E`')R
+M,C<S>%]$979I8V5?5W)I=&5397-#;VYT<F]L1&EA9P!R<C(W,WA?4W1O<F5?
+M0V]N9FEG4F]U=&5);F9O`')R,C<S>%]697)I9GE#;VUM86YD0F5F;W)E4V5N
+M9&EN9P!R<C(W,WA?1&5T96-T4&]R=%1Y<&4`<G(R-S-X7TU67T1U;7!297%U
+M97-T`')R,C<S>%]3051!7TAA;F1L941E=FEC955N<&QU9P!R<C(W,WA?4T=0
+M24]?4F5A9%)E9VES=&5R`')R,C<S>%]3051!7U!O<G1$979I8V5296%D>0!R
+M<C(W,WA?4&]S=$UA:V5397-%;&5M96YT4W1A='5S4F5Q=65S=`!R<C(W,WA?
+M0V]R95]-;V1U;&53:'5T9&]W;@!R<C(W,WA?0V]R95]);G1E<FYA;%-E;F12
+M97%U97-T`')R,C<S>%]30U-)7T%405]697)I9GE4<F%N<VQA=&EO;@!R<C(W
+M,WA?4T%37TEN=&5R;F%L4F5Q0V%L;&)A8VL`<G(R-S-X7T%S<VEG;D5L96UE
+M;G13;&]T3G5M8F5R`')R,C<S>%]305-?4&]R=%)E<V5T`')R,C<S>%]315-?
+M4V5T1F%I;$QE9`!R<C(W,WA?4U-47U-025]#340`<G(R-S-X7VUV7V1I<V%B
+M;&5?>&UT`')R,C<S>%]3051!7TAA;F1L941E=FEC95!L=6=I;@!R<C(W,WA?
+M4&]R=%]&:6YD5&=T3F\`<G(R-S-X7TU67T1U;7!296=I<W1E<@!R<C(W,WA?
+M;79?96YA8FQE7WAM=`!R<C(W,WA?4T%405]034AO='!L=6=297%#86QL8F%C
+M:P!R<C(W,WA?4G5N=&EM94ES<W5E4V]F=%)E<V5T`')R,C<S>%]D=6UP7W5N
+M87-S;V-I871E9%]F:7,`<G(R-S-X7U!O<G1?2&%N9&QE56YP;'5G`')R,C<S
+M>%]335!?4T=024]?4V5T7T9A:6QL960`<G(R-S-X7U-'4$E/7TEN:71I86QI
+M>F4`<G(R-S-X7U!R97!A<F5!;F1396YD0V]M;6%N9`!R<C(W,WA?4T-325]!
+M5$%?4F5A9$-A<&%C:71Y5')A;G-L871I;VX`<G(R-S-X7VUV7W)E<V5T7W!H
+M>0!R<C(W,WA?0V%T96=O<GE?0T1"7U1Y<&4`<G(R-S-X7U-'5&%B;&5?26YI
+M=`!R<C(W,WA?359?1V5T36%P<&5D240`<G(R-S-X7U-#4TE?051!7U)E861#
+M87!A8VET>51R86YS;&%T:6]N0V%L;&)A8VL`<G(R-S-X7T9I;F12=6YN:6YG
+M4F5Q0GE486<`<G(R-S-X7U-44%]$979I8V5297-E=`!R<C(W,WA?1V5T0V]R
+M94-O;G1E>'1&<F]M4&]O;`!R<C(W,WA?0V]M<&QE=&5297%U97-T`')R,C<S
+M>%]486=?26YI=%]&249/`')R,C<S>%]0;W)T7U-O9G1297-E=$-A;&QB86-K
+M`')R,C<S>%]#;W)E7TUO9'5L95-T87)T`')R,C<S>%]5<&1A=&549W1$979-
+M87``<G(R-S-X7T9I;F1&<F5E4TU00V]N=&5X=`!R<C(W,WA?1V5T4$U&<F]M
+M4&]O;`!R<C(W,WA?;V1I;E]R96UO=F5?9&5V:6-E`')R,C<S>%]-5E]#4D,`
+M<G(R-S-X7U-!5$%?4&]R=$1E=&5C=`!R<C(W,WA?4G5N=&EM94ES<W5E4F5A
+M9$QO9T5X=`!R<C(W,WA?1FEN9$%S8VEI3G5M8F5R`')R,C<S>%]#;W)E7T=E
+M=%-U<'!O<G1E9$-O=6YT<P!R<C(W,WA?;V1I;E]S971?:61L95]S=&%N9&)Y
+M`')R,C<S>%]&<F5E4$U4;U!O;VP`<G(R-S-X7VUV7V1I<V%B;&5?:&)A`')R
+M,C<S>%]$25-#7T-H96-K1&ES8V]V97)3=&%T90!R<C(W,WA?4')E16UP='E$
+M979I8V4`<G(R-S-X7T9R965);G1E<FYA;%)E<51O4&]O;`!R<C(W,WA?4&]R
+M=%]-;VYI=&]R`')R,C<S>%]31U!)3U]3971?1F%I;&QE9`!R<C(W,WA?17AP
+M86YD97)?4TU04F5Q=65S=%]0:'E#;VYT<F]L`')R,C<S>%]0;W)T7TAA;F1L
+M95!L=6=I;@!R<C(W,WA?4T-325]4;U]&25,`<G(R-S-X7T-H96-K5&%R9V5T
+M0VAA;F=E`')R,C<S>%]'971315-30D9R;VU0;V]L`')R,C<S>%]!<W-I9VY$
+M979I8V5/=F5R86QL16QE;65N=$YU;6)E<@!R<C(W,WA?4T=024]?4TU04F5Q
+M=65S=%]7<FET90!R<C(W,WA?1V5T36EN3F5G;W1I871E9$QI;FM2871E`')R
+M,C<S>%]#;W)E7W!A<W-?=&AR=5]F:6QL7W1A<VMF:6QE`')R,C<S>%]"965P
+M3VX`<G(R-S-X7T-O<F53879E3W)I9VEN86Q#1$(`<G(R-S-X7U-!4U]%<G)O
+M<DAA;F1L:6YG`')R,C<S>%]/9&EN4U!)7TEN:70`<G(R-S-X7T9R965%>'!A
+M;F1E<E1O4&]O;`!R<C(W,WA?1$E30U]3971297-O=7)C90!R<C(W,WA?4T=4
+M86)L95]!<'!E;F0`<G(R-S-X7T1E=FEC95]-86ME4F5A9$-A<&%C:71Y5&%S
+M:U)E<75E<W0`<G(R-S-X7U-!5$%?1&5V:6-E4W1A=&5-86-H:6YE`')R,C<S
+M>%]5<&1A=&53=&%T=7-6<U-E<T-O;G1R;VQ"=69F97(`<G(R-S-X7TU67TUA
+M<%1A<F=E=$E$`')R,C<S>%]$979I8V5?36%K94UO9&5396QE8W1297%U97-T
+M`')R,C<S>%]30U-)7T%405]3>6YC0V%C:&54<F%N<VQA=&EO;@!R<C(W,WA?
+M17AP86YD97)?4TU04F5Q=65S=%]297!O<G1'96YE<F%L`')R,C<S>%]$979I
+M8V5?36%K95)E<75E<W1487-K4F5Q=65S=`!R<C(W,WA?1G)E941E=FEC951O
+M4&]O;`!R<C(W,WA?1V5T4T="=69F97)&<F]M4&]O;`!R<C(W,WA?57!D871E
+M5&%R9V5T1&5V:6-E<P!R<C(W,WA?5&%G7TES16UP='D`<G(R-S-X7U!-7T%S
+M<VEG;E)E9VES=&5R4V5T`')R,C<S>%]3051!7U!R97!A<F5#;VUM86YD5&%B
+M;&4`<G(R-S-X7U-!5$%?4&]R=$AA;F1L94EN=&5R<G5P=`!R<C(W,WA?4T=0
+M24]?4TU04F5Q=65S=%]296%D`')R,C<S>%]?7V-A;F-E;%]T:6UE<@!R<C(W
+M,WA?9&5V:6-E7W!R;V)E7V1O;F4`<G(R-S-X7T-O<F5?36%K941E=FEC95)E
+M<V5T4F5Q`')R,C<S>%]5<&1A=&50:'E);F9O`')R,C<S>%]-5E]296UO=F54
+M87)G971)1`!R<C(W,WA?1V5T4T%405-C<F%T8VA&<F]M4&]O;`!R<C(W,WA?
+M4T%405]0;W)T1&5V:6-E1&5T96-T960`<G(R-S-X7U)U;G1I;65)<W-U95-O
+M9G1297-E=$-A;&QB86-K`')R,C<S>%]0;W-T36%K95-E<T5N8VQO<W5R95-T
+M871U<U)E<75E<W0`<G(R-S-X7T)E97!/9F8`<G(R-S-X7T-O<F5?36]D=6QE
+M26YI=&EA;&EZ90!R<C(W,WA?5W)I=&5$14Q67U%?16YT<GD`<G(R-S-X7T1I
+M<V-O=F5R>5--`')R,C<S>%]3051!7U!R97!A<F5#;VUM86YD2&5A9&5R`')R
+M,C<S>%]$979I8V5?36%K95)E861#87!A8VET>3$V5&%S:U)E<75E<W0`<G(R
+M-S-X7T-O<F5?36]D=6QE4V5N9%)E<75E<W0`<G(R-S-X7U!O<G1?06)O<G12
+M97%U97-T<P!R<C(W,WA?0V]R95]-;V1U;&5%;F%B;&5$:7-A8FQE25)1`')R
+M,C<S>%]&:6QL16YC;&]S=7)E16QE;65N=%-T871U<P!R<C(W,WA?4&]S=$UA
+M:V5397-%;&5M96YT1&5S8W)I<'1O<E)E<75E<W0`<G(R-S-X7V-O<F5?:&%N
+M9&QE7W1A<VMF:6QE7V5R<F]R`')R,C<S>%]-5E]-87!4;U-P96-I9FEC5&%R
+M9V5T240`<G(R-S-X7TES<W5E7T-O;F9I9U)O=71E26YF;P!R<C(W,WA?3&ES
+M=%]'971&:7)S=`!R<C(W,WA?1V5T26YT97)N86Q297%&<F]M4&]O;`!R<C(W
+M,WA?1&5V:6-E7TES<W5E4V]F=%)E<V5T`')R,C<S>%]?7W)E;F5W7W1I;65R
+M`')R,C<S>%]'971/;F5#;VUM86YD4VQO=`!R<C(W,WA?27-S=65?4F5P;W)T
+M4F]U=&5);F9O`')R,C<S>%]305-?1&5V:6-E4W1A=&5-86-H:6YE`')R,C<S
+M>%])<W-U95]297!O<G1-86YU9F%C='5R97));F9O<FUA=&EO;@!R<C(W,WA?
+M4T-325]!5$%?1FEL;$Q"04-D8C$P`')R,C<S>%]I,F-?<F5S970`<G(R-S-X
+M7T-O<F5?1FEL;%-E;G-E1&%T80!R<C(W,WA?1G)E95-'0G5F9F5R5&]0;V]L
+M`')R,C<S>%]$979I8V5?36%K95-T87)T4W1O<%5N:71297%U97-T`')R,C<S
+M>%]#;W)E7U)E<51I;65O=70`<G(R-S-X7U!O<G1?2&%N9&QE1&5V:6-E4&QU
+M9VEN`')R,C<S>%]315-?26YT97)N86Q297%#86QL8F%C:P!R<C(W,WA?4T=0
+M24]?5W)I=&5296=I<W1E<@!R<C(W,WA?1V5T17AP86YD97)&<F]M4&]O;`!R
+M<C(W,WA?27-S=65?4F5P;W)T1V5N97)A;`!R<C(W,WA?7U]A9&1?=&EM97(`
+M<G(R-S-X7T-O<F5?4F5S971#;613;&]T`')R,C<S>%]30U-)7T%405]#:&5C
+M:T-O;F1I=&EO;@!R<C(W,WA?4T-325]!5$%?1FEL;$1A=&%&:65L9`!R<C(W
+M,WA?0V]R95)E<W1O<F5/<FEG:6YA;$-$0@!3=V%P2'!T365T858S`&QD;5]S
+M<&EN=7!?=F1E=@!R87=?8VAE8VM?9&ES:U]D97-C<FEP=&]R`&QD;5]C:&5C
+M:U]A<G)A>0!L9&U?<F5C:&5C:U]A;&P`=F1E=E]C;&%S<U]L:7-T`')A=U]I
+M9&QE7W1I;65R7W)E<V5T`&QD;5]D96QE=&5?<&%R=&ET:6]N`&QD;5]S>6YC
+M7V-H86YG961?87)R87ES`&=R96)U:6QD;VYE<G)O<@!L9&U?<75E=65?979E
+M;G0`=')A;G-F;W)M7VYE961E9`!L9&U?8VAE8VM?=')A;G-F;W)M`&QD;5]F
+M:7AU<%]A<G)A>5]S=&%T90!C86QC7W)E8G5I;&1?<')O9W)E<W,`=F)U<U]E
+M>'1?<VEZ90!S971?=')A;G-F;W)M7W-T97!?:6YF;P!L9&U?9FEN9%]V9&5V
+M7W)A=P!L9&U?<F5P<F]B95]D979I8V4`8V%L8U]T<F%N<V9O<FU?<')O9W)E
+M<W,`;&1M7V9I;F1?=F1E=E]C;&%S<P!L9&U?86QL;V-?<&%R=&ET:6]N`&QD
+M;5]I;FET7V1I<VL`<F5F<F5S:%]R87=?9&5V7VEN9F\`7V1E;&5T95]R87=?
+M<&%R=`!R87=?<F5A9%]W<FET95]S96-T;W)S`&=I9&QE<W1A;F1B>71I;65O
+M=70`<F%W7V-H96-K7V%R<F%Y7V1E<V-R:7!T;W(`;&1M7V-R96%T95]V9&5V
+M7W)A=P!U;G!L=6=?<F%W7W9D978`0VAE8VM3=6T`8V]M<&%R95]S;&]T7W-E
+M<5]B>5]P8VEA9&1R`&QD;5]A9&1?9&ES:U]T;U]A<G)A>0!L9&U?<WEN8U]D
+M:7-K7VEN9F\`9V5T7V)I=',`4W=A<$AP=$UE=&%6-`!R87=?8V]N=F5R=%]S
+M<&%R95]T;U]L96=A8WD`9DYO=&EF>4=520!L9&U?9FQU<VA?86QL7W1A<F=E
+M=',`;&1M7W-T87)T7W)E8G5I;&0`;&1M7W-P:6YD;W=N7V%L;%]R87=D979S
+M`%]?;&1M7V9I;FES:%]C;60`241?5$]?5D1%5@!?7W9D979?<75E=65?8VUD
+M`')A=U]I9&QE7W1I;65R7V-H96-K`&=E=%]S=')I<%]I;F9O`&AP=#(W>'A?
+M;&1M7W)E9VES=&5R7VAI;5]27S9?-35?-S5?-#9?-C0`:'!T,C=X>%]G1VQO
+M8F%L3F-Q1FQA9P!H<'0R-WAX7V]S7W)E<75E<W1?=&EM97(`<W1R8W!Y`&AP
+M=#(W>'A?:6YI=%]M;V1U;&5?:F)O9`!H<'0R-WAX7V1M87!O;VQ?9V5T7W!A
+M9V4`:'!T,C=X>%]O<U]G971?<W1A;7``:'!T,C=X>%]L9&U?<W5S<&5N9`!H
+M<'0R-WAX7VQD;5]I9&QE`&AP=#(W>'A?;&1M7V=E=%]M96U?:6YF;P!H<'0R
+M-WAX7VQD;5]R96UO=F5?=&EM97(`:'!T,C=X>%]P8VEC9F=?<F5A9%]D=V]R
+M9`!H<'0R-WAX7V1M87!O;VQ?;6%K95]O<F1E<@!H<'0R-WAX7VQD;5]G971?
+M=F)U<U]E>'0`:'!T,C=X>%]L9&U?<F5L96%S95]V9&5V`&AP=#(W>'A?9G)E
+M96QI<W1?<F5S97)V95]D;6$`:'!T,C=X>%]L9&U?:6YT<@!M96UC<'D`:'!T
+M,C=X>%]L9&U?;VY?=&EM97(`:'!T,C=X>%]L9&U?9V5T7V-M9%]S:7IE`&AP
+M=#(W>'A?;&1M7V9R965?8VUD<P!H<'0R-WAX7VQD;5]C<F5A=&5?=F1E=@!H
+M<'0R-WAX7VQD;5]A9&1?<W!A<F5?=&]?87)R87D`:'!T,C=X>%]G<F5B=6EL
+M9'!R:6]R:71Y`&AP=#(W>'A?;&1M7W-Y;F-?87)R87E?:6YF;P!H<'0R-WAX
+M7V]S7VUA<%]P8VE?8F%R`&AP=#(W>'A?7U]L9&U?86QL;V-?8VUD`&AP=#(W
+M>'A?:6YI=%]M;V1U;&5?=F1E=E]R87<`:'!T,C=X>%]L9&U?<V5T7V%U=&]R
+M96)U:6QD`&AP=#(W>'A?:6YI=%]M;V1U;&5?:&EM7W)R,C<S>`!H<'0R-WAX
+M7U]?9'5M;7E?<F5G`&AP=#(W>'A?9&UA<&]O;%]A8W1I=F4`:'!T,C=X>%]V
+M8G5S7VQI<W0`:'!T,C=X>%]L9&U?<75E=65?=F)U<U]D<&,`:'!T,C=X>%]L
+M9&U?<F5S971?=F)U<P!H<'0R-WAX7VEN:71?;6]D=6QE7W)A:60U`&AP=#(W
+M>'A?9U-'4$E/4&%R=%-U<'!O<G0`7U]U;6]D9&DS`&AP=#(W>'A?;&1M7W)E
+M;&5A<V5?;&]C:P!H<'0R-WAX7V]S7W5N;6%P7W!C:5]B87(`:'!T,C=X>%]L
+M9&U?<VAU=&1O=VX`7U]U9&EV9&DS`&AP=#(W>'A?:&EM7VQI<W0`:'!T,C=X
+M>%]L9&U?<F5Q=65S=%]T:6UE<@!H<'0R-WAX7VQD;5]R97-U;64`:'!T,C=X
+M>%]I;FET7VUO9'5L95]R86ED,0!H<'0R-WAX7VQD;5]G971?9&5V:6-E7VED
+M`&AP=#(W>'A?;W-?<V-H961U;&5?=&%S:P!H<'0R-WAX7VQD;5]I;V-T;`!H
+M<'0R-WAX7V=3<&EN=7!/;F5$979%86-H5&EM90!H<'0R-WAX7V9R965L:7-T
+M7W!U=`!H<'0R-WAX7V]S7W-T86QL97AE8P!H<'0R-WAX7V=?;&5G86-Y7VUO
+M9&4`:'!T,C=X>%]L9&U?86QL;V-?8VUD<U]27S9?-35?-S5?-#9?-C0`:'!T
+M,C=X>%]L9&U?<G5N`&AP=#(W>'A?;&1M7V9R965?8VUD<U]T;U]L:7-T`&AP
+M=#(W>'A?:6YI=%]M;V1U;&5?<&%R=&ET:6]N`&AP=#(W>'A?;W-?;6%X7V-A
+M8VAE7W-I>F4`:'!T,C=X>%]V9&5V7W%U975E7V-M9`!H<'0R-WAX7VEN:71?
+M;6]D=6QE7VAI;5]R<C(W,C``:'!T,C=X>%]O<U]G971?=F)U<U]S97$`:'!T
+M,C=X>%]L9&U?<WEN8U]A<G)A>5]S=&%M<`!H<'0R-WAX7VQD;5]Q=65U95]C
+M;60`:'!T,C=X>%]O<U]P<FEN=&L`:'!T,C=X>%]F<F5E;&ES=%]R97-E<G9E
+M`&AP=#(W>'A?9&UA<&]O;%]P=71?<&%G90!H<'0R-WAX7V9R965L:7-T7V=E
+M=`!H<'0R-WAX7VQD;5]U;G)E9VES=&5R7V1E=FEC90!H<'0R-WAX7VQD;5]R
+M96=I<W1E<E]A9&%P=&5R`&AP=#(W>'A?9V%U=&]R96)U:6QD`&AP=#(W>'A?
+M;&1M7V=E=%]V8G5S7W-I>F4`:'!T,C=X>%]D96QA>5]B971W965N7W-P:6YU
+M<`!H<'0R-WAX7VQD;5]G96YE<FEC7VUE;6)E<E]F86EL960`:'!T,C=X>%]D
+M;6%P;V]L7V=E=%]P86=E7V%T`&AP=#(W>'A?;&1M7V5V96YT7VYO=&EF>0!H
+M<'0R-WAX7VQD;5]C<F5A=&5?=F)U<P!H<'0R-WAX7VAI;5]H86YD;&5?=&]?
+M=F)U<P!H<'0R-WAX7V9R965L:7-T7V=E=%]D;6$`:'!T,C=X>%]L9&U?9V5T
+M7VYE>'1?=F)U<P!H<'0R-WAX7V]S7W!C:5]W<FET96P`:'!T,C=X>%]L9&U?
+M9FEN9%]T87)G970`:'!T,C=X>%]D;6%P;V]L7W)E9VES=&5R7V-L:65N=`!H
+M<'0R-WAX7VQD;5]I;FET:6%L:7IE7W9B=7-?87-Y;F,`:'!T,C=X>%]O<U]Q
+M=65R>5]T:6UE`&AP=#(W>'A?;W-?<75E<GE?<F5M;W9E7V1E=FEC90!H<'0R
+M-WAX7VQD;5]R96=I<W1E<E]D979I8V4`:'!T,C=X>%]I;FET7VUO9'5L95]R
+M86ED,`!H<'0R-WAX7V]S7W!C:5]R96%D;`!H<'0R-WAX7VQD;5]A8W%U:7)E
+M7VQO8VL`:'!T,C=X>%]O<U]R979A;&ED871E7V1E=FEC90!H<'0R-WAX7V1M
+M87!O;VQ?:6YI=`!H<'0R-WAX7VQD;5]F:6YI<VA?8VUD`&AP=#(W>'A?:6YI
+M=%]M;V1U;&5?:&EM7W)R,C<V>`!H<'0R-WAX7VQD;5]I9&5?9FEX<W1R:6YG
+M`&AP=#(W>'A?9&UA<&]O;%]M87A?8VQA<W-?<&%G97,`:'!T,C=X>%]L9&U?
+M<F5G:7-T97)?=F1E=E]C;&%S<U]27S9?-35?-S5?-#9?-C0`:'!T,C=X>%]N
+M=6U?9')I=F5S7W!E<E]S<&EN=7``:'!T,C=X>%]L9&U?<F5L96%S95]V8G5S
+M`&AP=#(W>'A?;&1M7W%U975E7W1A<VL`:'!T,C=X>%]L9&U?86QL;V-?8VUD
+M<U]F<F]M7VQI<W0`:'!T,C=X>%]F<F5E;&ES=%]P=71?9&UA`&AP=#(W>'A?
+M;&1M7W1I;65R7W!R;V)E7V1E=FEC90!H<'0R-WAX7VQD;5]F:6YD7W-T86UP
+M`&AP=#(W>'A?:6YI=%]M;V1U;&5?:&EM7W)R,C<X>`!H<'0R-WAX7VQD;5]C
+M:&5C:U]A<G)A>5]O;FQI;F4`:'!T,C=X>%]G4')O8F5);DEN:71I86QI>FEN
+M9P!H<'0R-WAX7VQO9U]S96-T;W)?<F5P86ER`(T````";```MP````+B``#4
+M`````IH``"`!```"Y```+0$```+-```'`P```EX$`&8$```"(@``K@<```$%
+M``"S!P```HP$`,`'```!!@``Q0<```*,!`#K!P```0<``!\(```!:P0`9P@`
+M``%K!`"@"````6L$`+`(```!:P0`X`@```%K!`#N"````6L$`!D)```!:P0`
+M*`D```%K!`!:"0```H`$`&X)```!:P0`?`D```%K!`#J"0```6L$`/@)```!
+M:P0`(`H```*`!``["@```6L$`$D*```!:P0`=0H```%K!`"$"@```6L$`+8*
+M```"@`0`R@H```%K!`#8"@```6L$`"`+```!:P0`,`L```%K!`!V"P```6L$
+M`-8+```!:P0`-0P```(6``!"#````H`$`$D,```"3@``;PP```%K!`"-#```
+M`6L$`*@,```!:P0`S`P```%K!``?#0```H`$`*\-```"@`0`9PX```)\``"`
+M#@```A@``*(.```"C00`Q0X```*-!`#O#@```HT$``P/```"C00`,@\```*-
+M!`!:#P```HT$`',/```"C00`D`\```*-!`"P#P```HT$`-,/```"C00`\P\`
+M``*-!``/$````HT$`"L0```"C00`1Q````*-!`!C$````HT$`'X0```"C00`
+MFQ````*-!`"S$````HT$`-00```"7`0`\A````)<!``=$0```EP$`#P1```"
+M7`0`6Q$```)<!`!Z$0```EP$`*01```"7`0`SA(```)\``!3$P```H\$`)$3
+M```"CP0`RQ,```*/!``.%````H\$`$(4```"CP0`6Q0```*/!`!V%````H\$
+M`-H4```"CP0`+14```*/!`!^%0```H\$`-05```"CP0`/!8```*/!`!U%@``
+M`H\$`*46```"40``MQ8```*/!`#H%@```F0``/<6```"CP0`)!<```)D```S
+M%P```H\$`&`7```"9```;Q<```*/!`"<%P```F0``*L7```"CP0`#A@```),
+M``#0&@```IH$`.X:```"F@0`#!L```*:!``J&P```IH$`$0;```"F@0`7AL`
+M``*:!`"8&P```K@``/$;```"F@0`+QP```*X``#A'````K@```P=```"EP0`
+M(QT```)$```U'0```LX``$$=```"@`0`=1T```(1`0#\'0```B```!0>```"
+M,@``VQX```)-``!2'P```F4``%$C```"%```P2,```*L``#\(P```DT``*<D
+M```!`P``M"0```*%``#@)````H4```@E```"A0``,"4```*%``!S)0```BP`
+M`,`E```"4P``*B<```)W``!:)P```H`$`/<I```"N@``#"H```+3``#0*@``
+M`C```&$K```""@$`?BL```(P``!%+0```@,!`&4M```"RP``SRT```(#`0`,
+M+@```LL``"DP```"H```9#````$#```6,0```EX$`#4Q```!`P``4#$```$#
+M``#5,0```A(``.(Q```"$@``D#(```(#`0#-,@```LL``#XS```"2@``>C,`
+M``*H``"7,P```DH``*PS```"9P``R3,```)*```1-````D4``&(T```"2@``
+M>30```)%``!S-0```JL``((U```"60``LS4```*X``#$-0```EP``#<V```!
+M`0``0C8```+D``!/-@```M$``+<V```!:P0`US8```+)``#C-@```EL```DW
+M```"R0``$3<```*P```K-P```0,``$$W```"V0``7S<```+9``!]-P```D0`
+M`)XW```"`@$`NC<```)C``#>-P```D0``/@W```"`@$`$#@```)$```D.```
+M`F,``#LX```"1```<3@```+.``!].````H`$`.8X```"G````3D```(U```C
+M.0```LP``#8Y```"F```3CD```$&``!3.0```HP$`&8Y```"EP0`>3D```*7
+M!`"-.0```C,``+4Y```"N```^#D```(&`0!T.@```G@``)(Z```"Q@``N#H`
+M``(@``#?.@```O@``.<Z```"(```+3L```+&``!I.P```@(!`)0[```"N```
+MPCL```*7!`#8.P```D0``/D[```"S@``!3P```*`!``_/````D(``(4\```!
+M!0``BCP```*,!`"6/````D0``/D\```"S@``!3T```*`!`!+/0```IP``&@]
+M```"-0``BST```+,``">/0```I@``+,]```!!@``N#T```*,!`#+/0```I<$
+M`-X]```"EP0`\CT```(S```#/@```D0``!$^```"(```?3X```(/``";/@``
+M`L8``,$^```"(```XCX```+X``#J/@```B````D_```"Q@``,S\```)$``!#
+M/P```F,``&$_```"N```C#\```*7!`"@/P```D0``+4_```"S@``P3\```*`
+M!`#H/P```J<```=````"Q@``04````*X``!?0````I<$`'1````"1```B4``
+M``+.``"50````H`$`+U````"S```T$````*8``#C0````I<$`/9````"EP0`
+M"D$```(S```G00```D0``#%!```"DP``1D$```%K!`"/00```FL``)E!```"
+MN0``TT$```(Q``#[00```K@``(]"```"D```CT,```+&``#`0P```GT``-Q#
+M```"L0``$T0```*O```[1````O0``%U$```"N```[T0```*0``#X10```GT`
+M`"U&```"D@``;T8```*X``"#1@```N$```Y'```"^```ID<```+X``"V1P``
+M`JH``-I'```"^```\D<```+&```;2````D```+%(```!:P0`VD@```*`!``#
+M20```6L$`!Q)```!:P0`B$D```*`!`#Z20```OT``"-*```"\0``-4H```)K
+M``!N2@```KD``*Y*```"(P``XDH```)K``"+2P```H`$`.=+```!:P0`#DP`
+M``*`!``U3````6L$`$Y,```!:P0`ITP```*X```T30```D0``&=-```"1```
+M>4T```)K``#%30```K@``.1-```"N```!DX```)7!``H3@```LX``#1.```"
+M@`0`XTX```);```23P```LP``"A/```"F```1$\```$&``!)3P```HP$`&!/
+M```"EP0`=T\```*7!`"83P```C,``+M/```"G@``\$\```*X```84````LX`
+M`"10```"@`0`:5````+,``!_4````I@``)I0```!!@``GU````*,!`"V4```
+M`I<$`,U0```"EP0`ZU````(S```-40```KD``(M1```!:P0`M5$```*`!`#<
+M40```6L$`/51```!:P0`J%(```&$``"]4@```OP``$93```"P0``;5,```*X
+M``#F4P```KP``!)4```"0@``0U0```(^``!;5````I<$`'54```"EP0`I50`
+M``*`!`"]5````6L$`-94```!:P0`]%0```)K``#\5````A`!`#E5```"_0``
+MAU4```*X``#J50```M(``/I5```"Q```'E8```*(``!I5@```6L$`(56```!
+M:P0`FE8```+G``"M5@```O\``,56```!:P0`TU8```%K!`#A5@```6L$`.]6
+M```!:P0`3%<```%K!`!K5P```6L$`'A7```"OP``K%<```%K!`#'5P```6L$
+M`#A8```!:P0`5U@```%K!`"`6````E<$`*E8```"N```VE@```*7!`#P6```
+M`D0``!A9```";@``)%D```*`!`!.60```0$``&-9```">`0`@%D```%K!`"7
+M60```6L$`+%9```!:P0`TUD```%K!`#T60```6L$``M:```!:P0`6EH```%K
+M!`![6@```6L$`*!:```!:P0`MUH```%K!``/6P```6L$`"9;```!:P0`GUL`
+M``)7!`#36P```I<$`.9;```"1```^5L```+.```%7````H`$`"E<```!`0``
+M.UP```)X!`!B7````6L$`']<```!:P0`HEP```%K!`"^7````6L$`/E<```"
+M5P0`%5T```*X``!`70```I<$`&9=```!P0``>%T```)X!`"670```6L$`*]=
+M```!:P0`0EX```%K!`!F7@```6L$`)1>```!:P0`R%X```$%``#-7@```HP$
+M`!1?```";0``=E\```(Q``"`7P```G@``#!@```"?0``4V````+&``!Y8```
+M`K@```AA```"?0``(6$```+&``!G80```J\``(MA```";0``E&(```%K!`"Q
+M8@```6L$`,MB```!:P0`*&,```%K!`!%8P```6L$`+EC```"L0``#F0```%K
+M!``P9````6L$`&)D```!:P0`F60```)M``"N9````I4``.=D```!`P``EF4`
+M``(]``#990```EX$`)EF```"7@0`^&8```)>!``D9P```6L$`%!G```!:P0`
+MBF<```%K!`!*:````EX$`,YI```"7@0`<FH```)>!`"&:@```0,``!)K```"
+M@`0`2&L```%K!`!Y:P```6L$`+QK```!:P0`5&P```%K!`#7;````O```.QL
+M```"\```MFT```)]``#,;0```L8``'AN```"J0``TF\```+)``#>;P```EL`
+M`$QP```"#@``O'````)]``#&<````JD``-QP```"Q@``.W$```*X``"S<0``
+M`GL``/5Q```"N```AW(```*X``"T<@```EL``,IR```"(```"7,```%K!``J
+M<P```I```*YS```"5P0`OG,```*3``#E<P```K@``'AT```"6P``I'0```+,
+M``"W=````I@``-1T```!!@``V70```*,!`#L=````I<$`/]T```"EP0`&G4`
+M``(S``!(=0```6L$`)]U```"50``KW4```*7``#E=0```E8``/=U```"_P``
+M'78```*[``!Q=@```6L$`)%V```!:P0`J'8```+_``#F=@```D0``/QV```"
+MS@``"'<```*`!``Z=P```LP``%1W```"EP0`:W<```*7!`"%=P```C,``)=W
+M```!:P0`[G<```*(```H>````I<$`(AX```"B```N7@```*`!`#1>````6L$
+M`.IX```!:P0`"'D```)K```0>0```A`!`#5Y```"T@``*GH```)>!`!(>@``
+M`6L$`'!Z```!:P0`JGH```%K!`#4>@```04``-EZ```"C`0`^GH```(O```R
+M>P```6L$`$I[```!:P0`8GL```%K!`!L>P```I4``(A[```!:P0`1GP```*6
+M``!??````C\``&Y\```"60``BGP```)7!`">?````3L``+!\```">`0`W7P`
+M``)<``#Z?````FP```U]```"60``3GT```'>``!P?0```N0``()]```"S0``
+MC'T```+1``#[?0```AX``,)^```"`0$`^7X```(!`0`U?P```@\!`,:````"
+MC@``"H$```*/```]@0```@\!`)V"```"7@0`)(,```*#``!@@P```H,``*^#
+M```"@```Q8,```(Y``#T@P```@\!`#R$```"7@0`1X0```(:``#'A0```J$`
+M`-R%```")```\84```+K```&A@```I8``!V&```"5P0`,88```$[``!(A@``
+M`G@$`'&&```"N```ZH8```(^```QAP```K@``&"'```"#P$`AH<```(&`0"H
+MAP```KP``+>'```"0@``UX<```(_``#IAP```ED``!^(```"#P$`2H@```)<
+M``!GB````FP``'J(```"60``NH@```%/``#?B````N0``/&(```"S0``^X@`
+M``+1``!(B0```EP``%Z)```";```<XD```)9``"?B0```EX$`-:)```!3P``
+M^8D```+D```/B@```LT``!F*```"T0``MXL```(I```+C````BD``$&,```"
+M)@``-XT```(_``!&C0```ED``'6-```"7@0`OXT```(_``#.C0```ED``/:-
+M```"7```$XX```)L```FC@```ED``'&.```!@0``P(X```+D``#2C@```LT`
+M`-R.```"T0``!H\```)<```<CP```FP``"^/```"60``5(\```)>!`"2CP``
+M`8$``.&/```"Y```\X\```+-``#]CP```M$``(.0```!:P0`)90```+9``!#
+ME````C0``*>4```"N```D)4```+X``"AF````2\``+.8```">`0`29D```$`
+M`0!AF0```G@$`*B9```"5P0`U9D```)7!`!0F@```K@``&.:```"]```?9H`
+M``$O``"/F@```G@$`!";```"N```(YL```(Q```_FP```0`!`%>;```">`0`
+MOYL```+"```'G````GT``"Z<```">```.YP```(Q``#1G````K@``.&=```"
+M?0``*IX```)]``!3G@```@\``+.>```"+```TIX```)0```ZGP```MP``-R?
+M```"?0``*Z````(L``!*H````E```+:@```"6@``-Z$```(\``".H0```BP`
+M`*VA```"4```WJ(```(L``#]H@```E```.^C```"N```^:,```*S```!I```
+M`N$``$:D```"=@``?:0```*X``#7I````K@``#"E```"N```DZ4```*X``#Q
+MI0```K@``(VG```"N```TJ<```*K``#HIP```ED``!^H```"`@$`6*@```)"
+M``!VJ````M\``)VH```"N```[Z@```*\```'J0```JL``!FI```"60``-JD`
+M``)<``!(J0```IL``)6I```!^P``H*D```+D``"JJ0```M$``,NI```"7```
+MW:D```*;```OJ@```?L``#JJ```"Y```1*H```+1``!PJ@```EP``(:J```"
+MFP``X:H```'[``#LJ@```N0``/:J```"T0```JL```*`!``OJP```EP``$VK
+M```"FP``8*L```)9``"ZJP```?L``,6K```"Y```SZL```+1``#.K````ED`
+M`%*M```"-```8JT```)9``"HK0```EP``%*N```!`0``7:X```+D``!GK@``
+M`M$``*JN```"7```S:X```)L``#KK@```ED``#*O```!\P``/:\```+D``!+
+MKP```LT``%6O```"T0``=J\```)<``"9KP```FP``+>O```"60``!K````'S
+M```1L````N0``!^P```"S0``*;````+1``!2L````EP``'&P```";```B[``
+M``)9``#AL````?,``.^P```"Y````+$```+-```*L0```M$``#*Q```"7```
+M6+$```)L``!UL0```ED``-RQ```!\P``ZK$```+D``#WL0```LT```2R```"
+MT0``);(```)<``!6L@```H4``&>R```"60``>[(```'S``"%L@```M$``**R
+M```!`P``^K(```+W``!#LP```6L$`'"S```!:P0`D[,```%K!`##LP```6L$
+M``:T```"]P``.K0```%K!`!HM````6L$`(NT```!:P0`N+0```%K!`#VM0``
+M`LD``"2W```"/P``6[@```+1``"!N````G4``(ZX```"=@``H;@```+&```-
+MN0```@\``'BY```">```WKD```)]``#HN0```JD``/*Y```"^```%KH```)0
+M``#WN@```0<``#V[```"U```PKP```*`!`#,O````ED``-B\```"Y0``[;P`
+M``*`!`#WO````ED``!J]```"7```6+T```$7``!BO0```M$``'6]```"@`0`
+MB;T```*`!`!XO@```C\``(:^```"60``S+X```+E``#@O@```C\``.Z^```"
+M60``#[\```)<```EOP```FP``#B_```"60``@+\```$!``"+OP```N0``)J_
+M```"S0``I+\```+1``#)OP```EP```/````!\P``#<````+1```IP````EP`
+M`#O````";```5<````)9``"1P````?,``)O````"T0``Q,````)$``#PP```
+M`LX``/S````"@`0`)L$```*<``!$P0```C4``(+!```"S```F,$```*8``"S
+MP0```08``+C!```"C`0`S\$```*7!`#FP0```I<$`"G"```",P``2<(```*X
+M``"%P@```@8!`)W#```"'@``TL,```(.`0`IQ````@X!`)G$```"O@``U,0`
+M``*^```DQ0```KX``%W%```"O@``B\8```$!``#/Q@```D$``!O'```!`0``
+M7\<```)!```9R````0$``%S(```"00``*<D```$!``!<R0```D$``-')```!
+M`0```,H```)!``!QRP```@L!`.O+```"@@``-LP```*^```0S0```J(```?.
+M```"'@``+\X```(<``!&S@```AD``+S/```"#@$`C=$```*4```$T@```J(`
+M`(72```"O@``K-(```*^``!,TP```GH``,33```"O@``:-8```*^```8V```
+M`EX$`"K9```!:P0`.]D```%K!`#/V0```H`$`.;9```!:P0`^]D```%K!``S
+MV@```H`$`$K:```!:P0`8]H```%K!`"GV@```H`$`+[:```!:P0`T]H```%K
+M!``AVP```H`$`%G;```"50``;ML```(&`0"7VP```I<``,W;```"5@``^ML`
+M``*W```.W````H`$`$7<```",P``7=P```+7``"0W````H@``+3<```"5P0`
+MP-P```*3``#=W````K@```?=```"S```&MT```*8```PW0```I<$`$/=```"
+MEP0`6MT```(S``"!W0```K@``)3=```"EP``S=T```)"```9W@```K@``'7>
+M```"0@``Z-X```(>``!UWP```K@``)C?```".```V-\```(>``!VX````I<$
+M`*?@```"1```N>````+.``#%X````H`$`._@```"G```#.$```(U```UX0``
+M`LP``$CA```"F```7N$```*7!`!QX0```I<$`*#A```",P``$.(```(X```A
+MX@```HD``+GB```"'@``YN(```*7```NY````KP``%'D```"/@``>.0```(/
+M`0#>Y````K@``/_D```".```..4```(X``!MY0```C@``(#E```"'@``P>4`
+M``)7``#VY@```F(``"'G```"N```-N<```)$``!,YP```LX``%CG```"@`0`
+MBN<```+,``"=YP```I@``+?G```"EP0`SN<```*7!`#\YP```C,``"'H```"
+MG@``=>@```*&``"-Z````C@``+[H```".```[>@```(X``#[Z````E<``!+I
+M```"R@``0>D```)7``"`Z@```I<``(_K```"O```L>L```(^``#MZP```@8!
+M`!CL```".```..P```)'``"'[````B,``([L```!A```H^P```+\``"R[```
+M`K4``+SL```"(P``=^X```$%``!\[@```HP$``7O```"R@``X.\```)4``!#
+M\````80``%OP```"_```DO````$%``"7\````HP$`*GP```"!@$`VO````*7
+M```_\0```E0``%/Q```";P``A/$```(^```G\@```L0``#7R```"IP```O,`
+M``(&`0!;\P```K@``*'S```"O```QO,```)"``#J\P```CX``(OT```"Z0``
+M$/4```*X``"']0```ND``!?V```"EP0`-O8```*7!`!H]@```ND``-3V```"
+MEP0`*/<```*7!``(^````I\``!GX```"SP``+/@```)8```_^````E@``%#X
+M```"[@``8?@```*]``!R^````M8``(/X```"VP``L?@```*X``#_^````KP`
+M`"'Y```"0@``1?D```(^``"1^0```@\!`+7Y```"N```W/D```$&``#A^0``
+M`HP$`.SY```"#P$`$?H```(&`0`/^P```E8``!O[```"@`0`,/L```)6```\
+M^P```H`$`,[[```!:P0`Y/L```%K!``@_````H`$`$'\```"0@``6?P```*W
+M``!R_````K<``(;\```"@`0`JOP```%K!`#1_````6L$`.K\```!:P0`"?T`
+M``*`!``>_0```04``"/]```"C`0`1/T```$&``!)_0```HP$`/7]```"5```
+M/?X```*(``!@_@```K@``*3^```"O```R?X```)"``#M_@```CX``#'_```"
+MB```8/\```(&`0"%_P```K@``,__```"O```\?\```)"```5``$``CX``%P`
+M`0`"N```A0`!``(/`0"N``$``@8!`.P``0`!`P``1`$!``*(``!7`0$``6L$
+M`&P!`0`"I@``@`$!``*F``"4`0$``J8``*@!`0`"I@``Q`$!``*9``#@`0$`
+M`ID``/D!`0`"F0``$@(!``*9```U`@$``ID``$X"`0`"F0``8@(!``*F``!V
+M`@$``J8``(H"`0`"I@``K0(!``*9``#!`@$``J8```H#`0`"@`0`:0,!``%K
+M!`""`P$``6L$`)8#`0`"@`0`I@,!``)"``"[`P$``H`$`,<#`0`"I@``U`,!
+M``*`!`#H`P$``J8``/0#`0`"@`0`%P0!``*9```D!`$``H`$`#4$`0`"I@``
+M000!``*`!`!2!`$``J8``%X$`0`"@`0`;00!``)@``!\!`$``L4``)@$`0`"
+MF0``B@4!``(>``"I!0$``AX``!\&`0`"C0``00<!``*`!`#/!P$``H`$`.8'
+M`0`!:P0`]P<!``%K!`"/"`$``H`$`*,(`0`!:P0`M`@!``%K!``?"0$``H`$
+M`#,)`0`!:P0`1`D!``%K!`#)"0$``L````P*`0`"K0``.@H!``+J``!+"@$`
+M`L```(4*`0`!:P0`G`H!``%K!`#("@$``6L$`-\*`0`!:P0`,@L!``+=``!#
+M"P$``A,``+<+`0`"@`0`U@L!``%K!`#O"P$``6L$`+@,`0`!&P``XPP!``+H
+M```"#0$``L@``"$-`0`![P``+PT!``'O``"M#0$``6L$`,H-`0`!:P0`^PT!
+M``*`!``0#@$``6L$`$\.`0`!:P0`I@X!``%K!``%#P$``6L$`%T/`0`"@`0`
+M>`\!``%K!`"-#P$``6L$`,\/`0`"4@``V0\!``).```-$`$``H`$`'40`0`"
+M@`0`W1`!``*`!``B$0$``FX``"X1`0`"@`0`1!$!``%K!`!9$0$``6L$`+41
+M`0`"@`0`Q!$!``)K``#A$0$``A`!`.P1`0`!:P0``!(!``%K!``7$@$``6L$
+M`.02`0`!:P0`EA0!``(_``"I%`$``ED```X5`0`"/P``(14!``)9```V%0$`
+M`CX```46`0`"7@0`418!``$&``!6%@$``HP$`&\6`0`"/P``?Q8!``)9``"9
+M%@$``K@``/<6`0`"N```8Q<!``(^```!&`$``H`$`(T8`0`"@`0`Q!@!``*`
+M!`#F&`$``C\``/88`0`"60``!!D!``)Q```1&@$``H`$`$@:`0`"@`0`:AH!
+M``(_``!Z&@$``ED``(@:`0`"<0``Q!H!``*`!``4&P$``H`$`&`;`0`"@`0`
+MF1L!``(_``"I&P$``ED``+8;`0`"/@``KQP!``(_``"^'`$``ED``$H=`0`"
+M0@``7QT!``*`!`"''0$``@(!`)T=`0`"0@``[!T!``$%``#Q'0$``HP$``H>
+M`0`"L@``SAX!``(_``#;'@$``ED``/,>`0`"/P```A\!``)9```,'P$``D(`
+M`/<?`0`"/P``!B`!``)9``!-(`$``04``%(@`0`"C`0`:B`!``(S``!X(`$`
+M`@8!`(\@`0`"@`0`F2`!``)9``"D(`$``E8``+D@`0`"@`0`PR`!``)9``#-
+M(`$``CH``/T@`0`"7```82$!``'^``!M(0$``0$``'HA`0`"T0``FR$!``)<
+M``"Y(0$``FP``-,A`0`"60``)"(!``$!```R(@$``N0``$0B`0`"S0``3B(!
+M``+1``#8)`$``G0```(E`0`"7```224!``$!``!6)0$``M$``'8E`0`"7```
+MO24!``$!``#*)0$``M$``.HE`0`"7```*B8!``$!```T)@$``M$``%(F`0`"
+M7```DB8!``$!``"<)@$``M$``+HF`0`"7````B<!``$!```,)P$``M$``"HG
+M`0`"7```:B<!``$!``!T)P$``M$``)(G`0`"7```TB<!``$!``#<)P$``M$`
+M``TH`0`"7```3R@!``%#``!;*`$``7X``&@H`0`"T0``F2@!``)<``#X*`$`
+M`4,```0I`0`!?@``$2D!``+1``!%*@$``ID``*0J`0`"/P``LBH!``)9``#(
+M*@$``H@``.0J`0`!`P``_"H!``%K!``^*P$``6L$`%XK`0`!:P0`HRL!``%K
+M!`"^*P$``6L$``4L`0`!:P0`-2P!``%K!`!S+`$``H`$`)\L`0`"H`0`PRP!
+M``%K!`#B+`$``6L$`/$L`0`"H`0`92T!``*X``#$+0$``LP``-LM`0`"F```
+M]2T!``*7!``,+@$``I<$`#,N`0`",P``5RX!``%K!`!R+@$``6L$`,,N`0`"
+MN````2\!``*7``!&+P$``LX``%(O`0`"@`0`B"\!``%K!`"G+P$``6L$`#8P
+M`0`"/P``0S`!``)9``!1,`$``@8!`&\P`0`"/P``?C`!``)9``"(,`$``H@`
+M`+LQ`0`"/P``RC$!``)9``#D,0$``O$```<R`0`!`P``(S(!``%K!``^,@$`
+M`6L$`-@R`0`"NP``+C,!``)C``!,,P$``K@``'TS`0`"EP0`ES,!``)$``"M
+M,P$``LX``+DS`0`"@`0`ZC,!``(_``#W,P$``ED```LT`0`"IP``/S0!``*[
+M``"6-`$``F,``+0T`0`"N```Y30!``*7!`#_-`$``D0``!4U`0`"S@``(34!
+M``*`!`!2-0$``C\``%\U`0`"60``<S4!``*G``"8-0$``6L$`+,U`0`!:P0`
+M"38!``+.```5-@$``H`$`%`V`0`!:P0`;S8!``%K!`#(-@$``K@```8W`0`"
+MEP``AC<!``%K!`">-P$``6L$`,<W`0`"/P``UC<!``)9``#C-P$``H@``"@X
+M`0`!:P0`8CD!``*`!`"]/P$``K@```9``0`"PP``(D`!``)>!``U0`$``C<`
+M`'U!`0`"<P``CT$!``+]``""0@$``H`$`%%#`0`!"0``64,!``$)``!A0P$`
+M`DL``(1#`0`!"0``C$,!``$)``"40P$``DL``+9#`0`"<P``W$,!``$)``#C
+M0P$``0D``.M#`0`"2P``,T0!``*1``#11`$``6L$`!-%`0`!:P0`*44!``(=
+M```Y10$``AT``$E%`0`"'0``644!``(=``!I10$``AT``'E%`0`"'0``B44!
+M``(=``"610$``AT``/]%`0`"'0``@D8!``*K``"21@$``ED``,I&`0`"7```
+MW$8!``*;```Z1P$``2<``$5'`0`"Y```3T<!``+1``"*1P$``EP``*)'`0`"
+MFP``L$@!``$G``"^2`$``N0``,M(`0`"T0``#4D!``+Y```A20$``LX``"U)
+M`0`"@`0`6DD!``**``!M20$``LX``'E)`0`"@`0`E$D!``+Y``"I20$``LX`
+M`+5)`0`"@`0`_DD!``**``#82P$``JP```I,`0`!`P``44T!``*D``!M30$`
+M`J,``*9.`0`"X```&T\!``+@```O3P$``EX$`&!/`0`"BP``<T\!``':``"I
+M3P$``J0``,5/`0`"HP``4E`!``*+``!X4`$``HL``"I1`0`"T```.5$!``(-
+M`0!)40$``HP``)Q1`0`!`P``AU,!``%K!`">4P$``H`$`'54`0`!:P0`ZE0!
+M``*`!`#!50$``6L$`/)5`0`"*```.U@!``%K!`!I60$``4D``)]9`0`!:P0`
+M"5H!``'5```_6@$``6L$`*E:`0`!&P``WUH!``%K!`!U6P$``6$``*M;`0`!
+M:P0`.UP!``'5``!>7`$``1L``']<`0`!20``I5P!``%A``!G70$``M@``-]=
+M`0`!!P``[ET!``$'``#X70$``0<```)>`0`!!P``"UX!``$'```T7@$``5X`
+M`$9>`0`!7@``6UX!``%>``!V7@$``5X``*]>`0`!7@``_EX!``)8!``07P$`
+M`0<``"5?`0`!!P``+U\!``$'``!=7P$``5X``&E?`0`!!P``;U\!``%>``!U
+M7P$``0<``'M?`0`!7@``@5\!``$'``"'7P$``5X``(Y?`0`!7@``GU\!``%>
+M``"F7P$``5X``+1?`0`!7@``NU\!``%>``#(7P$``5X``,Y?`0`!7@``X5\!
+M``%>``#O7P$``0<```A@`0`!7@``#V`!``%>```=8`$``5X``"1@`0`!7@``
+M,6`!``%>```W8`$``5X``%5@`0`!!P``7V`!``$'``"M8`$``0D``+9@`0`!
+M"0``X&`!``$'``#X8`$``0<```]A`0`!!P``'V$!``$'``!$80$``5X``%9A
+M`0`!7@``=6$!``%>``"880$``5X``*QA`0`!7@``P&$!``%>```O8@$``0D`
+M`#=B`0`!"0``AV,!``)F!`"88P$``F8$`-]C`0`!!P``YV,!``$'``#Y8P$`
+M`0<```%D`0`!!P``"&0!``$'```.9`$``0<``!=D`0`!!P``)&0!``$'```J
+M9`$``0<``%9D`0`"I`0`>&0!``*<!`"J9`$``BL``+AD`0`"*P``WV0!``+.
+M````90$``E<$`!1E`0`!7P``)F4!``)X!`!%90$``ID$`&ME`0`""`$`<V4!
+M``((`0![90$``A```)1E`0`"$```J64!``(,`0"U90$``H`$`+UE`0`"QP``
+MQ64!``(V``#990$``5\``/%E`0`">`0`_&4!``(&`0`'9@$``@8!`(=F`0`"
+M2P``FV8!``*`!`"F9@$``NT``-UF`0`!!@``XF8!``*,!`!D9P$``04``*YG
+M`0`!!0``TV<!``$%``#O9P$``48``/AG`0`"4`0`$6@!``$&``#D:`$``04`
+M`.EH`0`"C`0`$VD!``)7!``D:0$``0$``#9I`0`">`0`]FH!``(U```>:P$`
+M`IP``%%K`0`"N```O6L!``*X```2;`$``I<$`)5L`0`"N```]&P!``*7!`#B
+M;0$``FH``/YM`0`"F```46\!``*\``"7;P$``K@``-AO`0`"0@``*7`!``)N
+M``!/<`$``CX``'YP`0`"N```V7`!``+I``!^<0$``D0``+!Q`0`"O```W7$!
+M``)"```2<@$``CX``)]R`0`"/P``KG(!``)9```<<P$``EP``-%T`0`"7@0`
+M"W8!``$!``!Q=@$``F8``'QV`0`"Y```C78!``+-``"L=@$``FP``/]V`0`"
+M7@0`5W<!``)>!`!V=P$``N0``(EW`0`"S0``GW<!``+1``"Q=P$``ED``"MX
+M`0`"7```17@!``)L``!:>`$``ED``(%X`0`"EP0`FG@!``)$``#<>`$``EX$
+M`.9Y`0`"9@``(WH!``$!```Q>@$``N0``$=Z`0`"S0``6'H!``+1``"2>@$`
+M`D0``*QZ`0`"@`0`M'H!``+.```,>P$``EX$`")[`0`"/P``+WL!``)9``!*
+M>P$``I<$`'Y[`0`"$0``CGL!``(1``"H>P$``LX``&..`0`!G0``Q8\!``)<
+M```0D`$``0$``!J0`0`"T0``5I`!``)$``!PD`$``H`$`'B0`0`"S@``L)`!
+M``)9```$D0$``EP``(.1`0`!`0``D)$!``+1``#.D0$``D0``.B1`0`"@`0`
+M])$!``+.```[D@$``FP``+22`0`!`0``OY(!``+D``#5D@$``LT``.*2`0`"
+MT0``'9,!``)$```TDP$``H`$`$"3`0`"S@``=Y,!``(_``",DP$``ED``)B3
+M`0`"7```LI,!``(_``"JE`$``0$``+B4`0`"Y```SI0!``+-``#;E`$``M$`
+M`!:5`0`"1```+94!``*`!``YE0$``LX``'B5`0`"/P``B94!``)9``#%E0$`
+M`I<$`->5`0`"1```[94!``*`!`#UE0$``LX``"^6`0`"EP0`=98!``(U``"=
+ME@$``IP``+N6`0`"F```#9<!``)<``!NEP$``0$``'B7`0`"T0``MI<!``)$
+M``#0EP$``H`$`-B7`0`"S@``'I@!``)9``!.F`$``0,``&.8`0`":@``KI@!
+M``+C``#:F`$``B$``.Z8`0`"Y@``PID!``)(``#5F0$``D@``.J9`0`"2```
+M_9D!``)(```WF@$``G0$`%":`0`"=`0`:)H!``)T!`"ZF@$``GP``-N:`0`"
+M?P0`]YH!``)_!``:FP$``G\$`#:;`0`"?P0`6IL!``)_!`!VFP$``G\$`)J;
+M`0`"?P0`MIL!``)_!`#EFP$``G\$``*<`0`"?P0`+)P!``)_!`!(G`$``G\$
+M`&J<`0`"?P0`AIP!``)_!`"JG`$``G\$`,:<`0`"?P0`ZIP!``)_!``&G0$`
+M`G\$`"J=`0`"?P0`1IT!``)_!`!JG0$``G\$`(:=`0`"?P0`JIT!``)_!`#&
+MG0$``G\$`.J=`0`"?P0`!IX!``)_!``JG@$``G\$`$:>`0`"?P0`:IX!``)_
+M!`"&G@$``G\$`*J>`0`"?P0`QIX!``)_!`#JG@$``G\$``:?`0`"?P0`*I\!
+M``)_!`!&GP$``G\$`'.?`0`"L00`F)\!``*Q!`##GP$``K$$`.B?`0`"L00`
+M$Z`!``*Q!``XH`$``K$$`&.@`0`"L00`B*`!``*Q!`"SH`$``K$$`-B@`0`"
+ML00``Z$!``*Q!``HH0$``K$$`%.A`0`"L00`>*$!``*Q!`"3H0$``A```*&A
+M`0`"$```J:$!``(,`0"UH0$``H`$`+VA`0`"QP``Q:$!``(V``#0H0$``A$`
+M`-NA`0`"$0``[*$!``$'``#QH0$``DT$`(VB`0`""@(`MZ(!``(5`@#4H@$`
+M`@$"`""C`0`"B0$`+:,!``(%`@`'I0$``EX$`&:F`0`">P$`KJD!``$%``"S
+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
+M:P0`3/D!``%K!`!K^0$``6L$`'CY`0`"-`$`K/D!``%K!`#'^0$``6L$`#CZ
+M`0`!:P0`5_H!``%K!`"`^@$``E<$`*GZ`0`"T`$`VOH!``*7!`#P^@$``A@!
+M`!C[`0`"<0$`)/L!``*`!`!.^P$``0$``&/[`0`">`0`@/L!``%K!`"7^P$`
+M`6L$`+'[`0`!:P0`T_L!``%K!`#T^P$``6L$``O\`0`!:P0`6OP!``%K!`![
+M_`$``6L$`*#\`0`!:P0`M_P!``%K!``/_0$``6L$`";]`0`!:P0`G_T!``)7
+M!`#3_0$``I<$`.;]`0`"&`$`^?T!``*^`0`%_@$``H`$`"G^`0`!`0``._X!
+M``)X!`!B_@$``6L$`'_^`0`!:P0`HOX!``%K!`"^_@$``6L$`/G^`0`"5P0`
+M%?\!``+0`0!`_P$``I<$`&;_`0`!*`$`>/\!``)X!`"6_P$``6L$`*__`0`!
+M:P0`0@`"``%K!`!F``(``6L$`)0``@`!:P0`R``"``$%``#-``(``HP$`!0!
+M`@`"Z0$`=@$"``*?`0"``0(``CP!`#`"`@`"/0$`4P("``(R`0!Y`@(``M`!
+M``@#`@`"/0$`(0,"``(R`0!G`P(``N(!`(L#`@`"Z0$`E`0"``%K!`"Q!`(`
+M`6L$`,L$`@`!:P0`*`4"``%K!`!%!0(``6L$`+D%`@`"'P$`#@8"``%K!``P
+M!@(``6L$`&(&`@`!:P0`F08"``+I`0"N!@(``FL!`.<&`@`!`P``E@<"``*L
+M`0#9!P(``EX$`)D(`@`"7@0`^`@"``)>!``D"0(``6L$`%`)`@`!:P0`B@D"
+M``%K!`!*"@(``EX$`,X+`@`"7@0`<@P"``)>!`"&#`(``0,``!(-`@`"@`0`
+M2`T"``%K!`!Y#0(``6L$`+P-`@`!:P0`5`X"``%K!`#7#@(``NT!`.P.`@`"
+M[0$`M@\"``(]`0#,#P(``C(!`'@0`@`"]`$`TA$"``)I`0#>$0(``L(!`$P2
+M`@`"SP$`O!("``(]`0#&$@(``O0!`-P2`@`",@$`.Q,"``+0`0"S$P(``J<!
+M`/43`@`"T`$`AQ0"``+0`0"T%`(``L(!`,H4`@`"B@$`"14"``%K!``J%0(`
+M`I0!`*X5`@`"5P0`OA4"``),`0#E%0(``M`!`'@6`@`"P@$`I!8"``*$`0"W
+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
+M:P0`8ML"``*`!`"]X0(``M`!``;B`@`"MP$`(N("``)>!``UX@(``BX!`'WC
+M`@`"W`$`C^,"``))`0""Y`(``H`$`%'E`@`!"0``6>4"``$)``!AY0(``C\!
+M`(3E`@`!"0``C.4"``$)``"4Y0(``C\!`+GE`@`"W`$`Q.4"``))`0!GY@(`
+M`LT!``GG`@`!:P0`2^<"``%K!`!AYP(``D8!`''G`@`"1@$`@><"``)&`0"1
+MYP(``D8!`*'G`@`"1@$`L><"``)&`0#!YP(``D8!`,[G`@`"1@$`8^@"``)&
+M`0#FZ`(``HL!`/;H`@`"WP$`+ND"``+;`0!`Z0(``IL!`)[I`@`!C`$`J>D"
+M``*)`0"SZ0(``L$!`.[I`@`"VP$`!NH"``*;`0`4ZP(``8P!`"+K`@`"B0$`
+M+^L"``+!`0!QZP(``CD!`(7K`@`"O@$`D>L"``*`!`"^ZP(``@,"`-'K`@`"
+MO@$`W>L"``*`!`#XZP(``CD!``WL`@`"O@$`&>P"``*`!`!B[`(``@,"`#SN
+M`@`"(`$`;NX"``$#``"U[P(``C@!`-'O`@`"D0$`"O$"``)R`0!_\0(``G(!
+M`)/Q`@`"7@0`Q/$"``(F`0#7\0(``4,!``WR`@`".`$`*?("``*1`0"V\@(`
+M`B8!`-SR`@`")@$`CO,"``(O`0"=\P(``G0!`*WS`@`"'`$``/0"``$#``#K
+M]0(``6L$``+V`@`"@`0`V?8"``%K!`!.]P(``H`$`"7X`@`!:P0`5O@"``(G
+M`0"?^@(``6L$`,W[`@`!8P$``_P"``%K!`!M_`(``2P!`*/\`@`!:P0`#?T"
+M``$B`0!#_0(``6L$`-G]`@`!50$`#_X"``%K!`"?_@(``2P!`,+^`@`!(@$`
+MX_X"``%C`0`)_P(``54!`,O_`@`"R`$`=P`#``(_`0"+``,``H`$`)8``P`"
+M\0$`!`$#``%K!``5`0,``6L$`$@!`P`!:P0`<0$#``+G`0!]`0,``0D``(0!
+M`P`!"0``B@$#``$)``"<`0,``F4!`*@!`P`!"0``KP$#``$)``"U`0,``0D`
+M`-`!`P`!"0``UP$#``$)``#=`0,``0D``.,!`P`!40$`_0$#``$)```*`@,`
+M`0D``!`"`P`!"0``)@(#``$)```R`@,``0D``#\"`P`!"0``10(#``$)``!;
+M`@,``0D``'`"`P`!"0``@0(#``$)``"8`@,``0D``*P"`P`!"0``S`(#``%1
+M`0#=`@,``0D``/0"`P`!!P``&`,#``$)```W`P,``5$!`$@#`P`!"0``7@,#
+M``$)``!T`P,``0D``(L#`P`!"0``H`,#``$)``#``P,``5$!`-$#`P`!"0``
+MZ`,#``$'```,!`,``0D``"L$`P`!40$`/`0#``$)``!2!`,``0D``(`$`P`!
+M40$`FP0#``%1`0"E!`,``0<``-L$`P`!40$`+P4#``$'```^!0,``0<``$@%
+M`P`!!P``4@4#``$'``!;!0,``0<``(0%`P`!40$`E@4#``%1`0"K!0,``5$!
+M`,8%`P`!40$`_P4#``%1`0!7!@,``E@$`&D&`P`!!P``A08#``$'``"/!@,`
+M`0<``,(&`P`!40$`SP8#``$'``#5!@,``5$!`-L&`P`!!P``X08#``%1`0#G
+M!@,``0<``.T&`P`!40$`]`8#``%1`0`%!P,``5$!``P'`P`!40$`&@<#``%1
+M`0`A!P,``5$!`"X'`P`!40$`-`<#``%1`0!/!P,``5$!`%\'`P`!!P``>@<#
+M``%1`0"0!P,``5$!`)D'`P`!40$`K`<#``%1`0##!P,``5$!`.4'`P`!!P``
+M[P<#``$'```]"`,``0D``$8(`P`!"0``<`@#``$'``"("`,``0<``)\(`P`!
+M!P``KP@#``$'``#4"`,``5$!`.8(`P`!40$`!0D#``%1`0`H"0,``5$!`#P)
+M`P`!40$`4`D#``%1`0"_"0,``0D``,<)`P`!"0``%PL#``)F!``H"P,``F8$
+M`&\+`P`!!P``=PL#``$'``")"P,``0<``)$+`P`!!P``F`L#``$'``">"P,`
+M`0<``*<+`P`!!P``M`L#``$'``"Z"P,``0<``.8+`P`"I`0`"`P#``*<!``^
+M#`,``A,!`$P,`P`"$P$`<PP#``*^`0"4#`,``E<$`*@,`P`!5`$`N@P#``)X
+M!`#9#`,``ID$`/\,`P`"7@$`!PT#``)>`0`/#0,``N`!`"@-`P`"X`$`/0T#
+M``*``0!)#0,``H`$`%$-`P`"W0$`60T#``([`0!M#0,``50!`(4-`P`">`0`
+MD`T#``(,`@";#0,``@P"`!L.`P`"/P$`+PX#``*`!``Z#@,``O$!`'$.`P`!
+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
+MXP,``I8"`/'C`P`!*`(``^0#``)X!`"$Y`,``AH#`)?D`P`"I0(`L^0#``'1
+M`@#+Y`,``G@$`#/E`P`")0(`>^4#``*8`@"BY0,``G4"`*_E`P`"I0(`1>8#
+M``(:`P!5YP,``I@"`)[G`P`"F`(`Q^<#``)[`@`GZ`,``H("`$;H`P`"XP(`
+MKN@#``+_`@!0Z0,``I@"`)_I`P`"@@(`OND#``+C`@`JZ@,``D<"`*OJ`P`"
+MU`(``NL#``*"`@`AZP,``N,"`%+L`P`"@@(`<>P#``+C`@!C[0,``AH#`&WM
+M`P`"(`(`=>T#``(-`P"Z[0,``G0"`/'M`P`"&@,`2^X#``(:`P"D[@,``AH#
+M``?O`P`"&@,`9>\#``(:`P`!\0,``AH#`$;Q`P`"L0(`7/$#``*5`@"3\0,`
+M`L`"`,SQ`P`"M0(`ZO$#``+J`@`1\@,``AH#`&/R`P`"/@(`>_(#``*Q`@"-
+M\@,``I4"`*KR`P`"D@(`O/(#``(W`@`)\P,``?T"`!3S`P`"<`(`'O,#``+Y
+M`@`_\P,``I("`%'S`P`"-P(`H_,#``']`@"N\P,``G`"`+CS`P`"^0(`Y/,#
+M``*2`@#Z\P,``C<"`%7T`P`!_0(`8/0#``)P`@!J]`,``OD"`';T`P`"@`0`
+MH_0#``*2`@#!]`,``C<"`-3T`P`"E0(`+O4#``']`@`Y]0,``G`"`$/U`P`"
+M^0(`0O8#``*5`@#&]@,``A,#`-;V`P`"E0(`'/<#``*2`@#&]P,``0$``-'W
+M`P`"<`(`V_<#``+Y`@`>^`,``I("`$'X`P`"S`(`7_@#``*5`@"F^`,``6T"
+M`+'X`P`"<`(`O_@#``)I`@#)^`,``OD"`.KX`P`"D@(`#?D#``+,`@`K^0,`
+M`I4"`'KY`P`!;0(`A?D#``)P`@"3^0,``FD"`)WY`P`"^0(`QOD#``*2`@#E
+M^0,``LP"`/_Y`P`"E0(`5?H#``%M`@!C^@,``G`"`'3Z`P`":0(`?OH#``+Y
+M`@"F^@,``I("`,SZ`P`"S`(`Z?H#``*5`@!0^P,``6T"`%[[`P`"<`(`:_L#
+M``)I`@!X^P,``OD"`)G[`P`"D@(`ROL#``+V`@#;^P,``I4"`._[`P`!;0(`
+M^?L#``+Y`@`6_`,``0,``&[\`P`"$@,`M_P#``%K!`#D_`,``6L$``?]`P`!
+M:P0`-_T#``%K!`!Z_0,``A(#`*[]`P`!:P0`W/T#``%K!`#__0,``6L$`"S^
+M`P`!:P0`:O\#``(%`P"8``0``DH"`,\!!``"^0(`]0$$``(\`@`"`@0``G0"
+M`!4"!``"00(`@0($``)[`@#L`@0``G4"`%(#!``"F`(`7`,$``*W`@!F`P0`
+M`AD#`(H#!``"XP(`:P0$``$'``"Q!`0``N\"`#8&!``"@`0`0`8$``*5`@!,
+M!@0``MX"`&$&!``"@`0`:P8$``*5`@".!@0``I("`,P&!``!O0(`U@8$``+Y
+M`@#I!@0``H`$`/T&!``"@`0`[`<$``)*`@#Z!P0``I4"`$`(!``"W@(`5`@$
+M``)*`@!B"`0``I4"`(,(!``"D@(`F0@$``+,`@"L"`0``I4"`/0(!``!`0``
+M_P@$``)P`@`."00``FD"`!@)!``"^0(`/0D$``*2`@!W"00``6T"`($)!``"
+M^0(`G0D$``*2`@"O"00``LP"`,D)!``"E0(`!0H$``%M`@`/"@0``OD"`#@*
+M!``"[@(`9`H$``+U`@!P"@0``H`$`)H*!``"N0(`N`H$``(!`P#V"@0``@@#
+M``P+!``"I`(`)PL$``$&```L"P0``HP$`$,+!``"EP0`6@L$``*7!`"="P0`
+M`C8"`+T+!``"&@,`^0L$``*J`@`1#00``A@#`$8-!``"H`(`G0T$``*@`@`-
+M#@0``AD"`$@.!``"&0(`F`X$``(9`@#1#@0``AD"`/\/!``!`0``0Q`$``(;
+M`@"/$`0``0$``-,0!``"&P(`C1$$``$!``#0$00``AL"`)T2!``!`0``T!($
+M``(;`@!%$P0``0$``'03!``"&P(`Y10$``(P`@!?%00``M`"`*H5!``"&0(`
+MA!8$``*A`@![%P0``A@#`*,7!``"SP(`NA<$``(?`@`P&00``J`"``$;!``"
+MA0(`>!L$``*A`@#Y&P0``AD"`"`<!``"&0(`P!P$``*7`@`X'00``AD"`-P?
+M!``"&0(`C"$$``)>!`">(@0``6L$`*\B!``!:P0`0R,$``*`!`!:(P0``6L$
+M`&\C!``!:P0`IR,$``*`!`"^(P0``6L$`-<C!``!:P0`&R0$``*`!``R)`0`
+M`6L$`$<D!``!:P0`E20$``*`!`#-)`0``F("`.(D!``"J@(`"R4$``+M`@!!
+M)00``L$"`&XE!``"0P(`@B4$``*`!`"Y)00``C8"`-$E!``"+@(`!"8$``)O
+M`@`H)@0``E<$`#0F!``""@,`428$``(:`P![)@0``@@#`(XF!``"I`(`I"8$
+M``*7!`"W)@0``I<$`,XF!``"-@(`]28$``(:`P`()P0``NT"`$$G!``"M0(`
+MC2<$``(:`P#I)P0``K4"`%PH!``"&`,`Z2@$``(:`P`,*00``HD"`$PI!``"
+M&`,`ZBD$``*7!``;*@0``NX"`"TJ!``"]0(`.2H$``*`!`!C*@0``KD"`(`J
+M!``"`0,`J2H$``((`P"\*@0``J0"`-(J!``"EP0`Y2H$``*7!``4*P0``C8"
+M`(0K!``"B0(`E2L$``+;`@`M+`0``A@#`%HL!``"[0(`HBT$``(^`@#%+00`
+M`E8"`.PM!``".@(`4BX$``(:`P!S+@0``HD"`*PN!``"B0(`X2X$``*)`@#T
+M+@0``A@#`#4O!``">@(`:C`$``(I`@"5,`0``AH#`*HP!``"[@(`P#`$``+U
+M`@#,,`0``H`$`/XP!``""`,`$3$$``*D`@`K,00``I<$`$(Q!``"EP0`<#$$
+M``(V`@"5,00``J@"`.DQ!``"!@,``3($``*)`@`R,@0``HD"`&$R!``"B0(`
+M;S($``)Z`@"&,@0``B0"`+4R!``">@(`]#,$``+M`@`#-00``CX"`"4U!``"
+M5@(`834$``*J`@",-00``HD"`*PU!``"<P(`^S4$``)H`@`"-@0``2<"`!<V
+M!``"QP(`)C8$``)W`@`P-@0``F@"`.LW!``!!0``\#<$``*,!`!Y.`0``B0"
+M`%0Y!``"D`(`MSD$``$G`@#/.00``L<"``8Z!``!!0``"SH$``*,!``=.@0`
+M`JH"`$XZ!``"[0(`LSH$``*0`@#'.@0``HX"`/@Z!``"5@(`FSL$``(8`@"I
+M.P0``OH"`'8\!``"J@(`SSP$``(:`P`5/00``CX"`#H]!``"M0(`7CT$``)6
+M`@#_/00``J<"`(0^!``"&@,`^SX$``*G`@"+/P0``I<$`*H_!``"EP0`W#\$
+M``*G`@!(0`0``I<$`)Q`!``"EP0`?$$$``+5`@"-000``LD"`*!!!``"DP(`
+MLT$$``*3`@#$000``F4"`-5!!``"R@(`YD$$``(/`P#W000``IX"`"5"!``"
+M&@,`<T($``(^`@"50@0``K4"`+E"!``"5@(`!4,$``(Z`@`I0P0``AH#`%!#
+M!``!!@``54,$``*,!`!@0P0``CH"`(5#!``"J@(`@T0$``+!`@"/1`0``H`$
+M`*1$!``"P0(`L$0$``*`!`!"100``6L$`%A%!``!:P0`E$4$``*`!`"U100`
+M`K4"`,U%!``"0P(`YD4$``)#`@#Z100``H`$`!Y&!``!:P0`148$``%K!`!>
+M1@0``6L$`'U&!``"@`0`DD8$``$%``"71@0``HP$`+A&!``!!@``O48$``*,
+M!`!I1P0``I`"`+%'!``";P(`U$<$``(:`P`82`0``CX"`#U(!``"M0(`84@$
+M``)6`@"E2`0``F\"`-1(!``"J@(`^4@$``(:`P!#200``CX"`&5)!``"M0(`
+MB4D$``)6`@#0200``AH#`/E)!``".@(`(DH$``*J`@!@2@0``0,``+A*!``"
+M;P(`RTH$``%K!`#@2@0``JP"`/1*!``"K`(`"$L$``*L`@`<2P0``JP"`#A+
+M!``"80(`5$L$``)A`@!M2P0``F$"`(9+!``"80(`J4L$``)A`@#"2P0``F$"
+M`-9+!``"K`(`ZDL$``*L`@#^2P0``JP"`"%,!``"80(`-4P$``*L`@!^3`0`
+M`H`$`-U,!``!:P0`]DP$``%K!``*300``H`$`!I-!``"M0(`+TT$``*`!``[
+M300``JP"`$A-!``"@`0`7$T$``*L`@!H300``H`$`(M-!``"80(`F$T$``*`
+M!`"I300``JP"`+5-!``"@`0`QDT$``*L`@#2300``H`$`.%-!``"7P(`\$T$
+M``*1`@`,3@0``F$"`/Y.!``"&`,`'4\$``(8`P"33P0``B("`+50!``"@`0`
+M0U$$``*`!`!:400``6L$`&M1!``!:P0``U($``*`!``74@0``6L$`"A2!``!
+M:P0`DU($``*`!`"G4@0``6L$`+A2!``!:P0`/5,$``+"`@"`4P0``@(#`*Y3
+M!``"^`(`OU,$``+"`@#Y4P0``6L$`!!4!``!:P0`/%0$``%K!`!35`0``6L$
+M`*94!``"Y`(`MU0$``(>`@`K500``H`$`$I5!``!:P0`8U4$``%K!``L5@0`
+M`2L"`%=6!``"T@(`=E8$``+&`@"55@0``?X"`*-6!``!_@(`(5<$``%K!``^
+M5P0``6L$`&]7!``"@`0`A%<$``%K!`##5P0``6L$`!I8!``!:P0`>5@$``%K
+M!`#16`0``H`$`.Q8!``!:P0``5D$``%K!`!#600``KP"`$U9!``"G`(`@5D$
+M``*`!`#I600``H`$`%%:!``"@`0`EEH$``)R`@"B6@0``H`$`+A:!``!:P0`
+MS5H$``%K!``I6P0``H`$`#A;!``",0(`55L$``*C`@!@6P0``6L$`'1;!``!
+M:P0`BUL$``%K!`!87`0``6L$``I>!``"2@(`'5X$``*5`@""7@0``DH"`)5>
+M!``"E0(`JEX$``)6`@!Y7P0``EX$`,5?!``!!@``RE\$``*,!`#C7P0``DH"
+M`/-?!``"E0(`#6`$``(:`P!K8`0``AH#`-=@!``"5@(`=6$$``*`!``!8@0`
+M`H`$`#AB!``"@`0`6F($``)*`@!J8@0``I4"`'AB!``"C`(`A6,$``*`!`"\
+M8P0``H`$`-YC!``"2@(`[F,$``*5`@#\8P0``HP"`#AD!``"@`0`B&0$``*`
+M!`#49`0``H`$``UE!``"2@(`'64$``*5`@`J900``E8"`"-F!``"2@(`,F8$
+M``*5`@"^9@0``K4"`--F!``"@`0`^V8$``+``@`19P0``K4"`&!G!``!!0``
+M96<$``*,!`!^9P0``BH"`$)H!``"2@(`3V@$``*5`@!G:`0``DH"`'9H!``"
+ME0(`@&@$``*U`@!K:00``DH"`'II!``"E0(`P6D$``$%``#&:00``HP$`-YI
+M!``"-@(`[&D$``*J`@`#:@0``H`$``UJ!``"E0(`&&H$``+!`@`M:@0``H`$
+M`#=J!``"E0(`06H$``+F`@!Q:@0``I("`-5J!``!V@(`X6H$``$!``#N:@0`
+M`OD"``]K!``"D@(`+6L$``+,`@!':P0``I4"`)AK!``!`0``IFL$``)P`@"X
+M:P0``FD"`,)K!``"^0(`3&X$``(7`P!V;@0``I("`+UN!``!`0``RFX$``+Y
+M`@#J;@0``I("`#%O!``!`0``/F\$``+Y`@!>;P0``I("`)YO!``!`0``J&\$
+M``+Y`@#&;P0``I("``9P!``!`0``$'`$``+Y`@`N<`0``I("`'9P!``!`0``
+M@'`$``+Y`@"><`0``I("`-YP!``!`0``Z'`$``+Y`@`&<00``I("`$9Q!``!
+M`0``4'$$``+Y`@"!<00``I("`,-Q!``!V0(`SW$$``&[`@#<<00``OD"``UR
+M!``"D@(`;'($``'9`@!X<@0``;L"`(5R!``"^0(`N7,$``)A`@`8=`0``DH"
+M`"9T!``"E0(`/'0$``)O`@!8=`0``0,``'!T!``!:P0`LG0$``%K!`#2=`0`
+M`6L$`!=U!``!:P0`,G4$``%K!`!Y=00``6L$`*EU!``!:P0`YW4$``*`!``3
+M=@0``J`$`#=V!``!:P0`5G8$``%K!`!E=@0``J`$`-EV!``"&@,`.'<$``((
+M`P!/=P0``J0"`&EW!``"EP0`@'<$``*7!`"G=P0``C8"`,MW!``!:P0`YG<$
+M``%K!``W>`0``AH#`'5X!``"[0(`NG@$``+U`@#&>`0``H`$`/QX!``!:P0`
+M&WD$``%K!`"J>00``DH"`+=Y!``"E0(`Q7D$``*J`@#C>00``DH"`/)Y!``"
+ME0(`_'D$``)O`@`O>P0``DH"`#Y[!``"E0(`6'L$``(1`P![>P0``0,``)=[
+M!``!:P0`LGL$``%K!`!,?`0``DX"`*)\!``"K0(`P'P$``(:`P#Q?`0``I<$
+M``M]!``"[@(`(7T$``+U`@`M?00``H`$`%Y]!``"2@(`:WT$``*5`@!_?00`
+M`OH"`+-]!``"3@(`"GX$``*M`@`H?@0``AH#`%E^!``"EP0`<WX$``+N`@")
+M?@0``O4"`)5^!``"@`0`QGX$``)*`@#3?@0``I4"`.=^!``"^@(`#'\$``%K
+M!``G?P0``6L$`'U_!``"]0(`B7\$``*`!`#$?P0``6L$`.-_!``!:P0`/(`$
+M``(:`P!Z@`0``NT"`/J`!``!:P0`$H$$``%K!``[@00``DH"`$J!!``"E0(`
+M5X$$``)O`@"<@00``6L$`-:"!``"@`0`,8D$``(:`P!ZB00``L0"`):)!``"
+M7@0`J8D$``)``@#QB@0``J\"``.+!``">0(`]HL$``*`!`#%C`0``0D``,V,
+M!``!"0``U8P$``),`@#XC`0``0D```"-!``!"0``"(T$``),`@`MC00``J\"
+M`#B-!``">0(`VXT$``('`P!]C@0``6L$`+^.!``!:P0`U8X$``(+`P#EC@0`
+M`@L#`/6.!``""P,`!8\$``(+`P`5CP0``@L#`"6/!``""P,`-8\$``(+`P!"
+MCP0``@L#`->/!``""P,`6I`$``*Q`@!JD`0``I4"`**0!``"D@(`M)`$``(W
+M`@`2D00``0X#`!V1!``"<`(`)Y$$``+Y`@!BD00``I("`'J1!``"-P(`B)($
+M``$.`P"6D@0``G`"`*.2!``"^0(`Y9($``)(`@#YD@0``O4"``63!``"@`0`
+M,I,$``)4`@!%DP0``O4"`%&3!``"@`0`;),$``)(`@"!DP0``O4"`(V3!``"
+M@`0`UI,$``)4`@"PE00``KX"`.*5!``!`P``*9<$``*N`@!%EP0``BT"`'Z8
+M!``",P(`\Y@$``(S`@`'F00``EX$`#B9!``"?@(`2YD$``'B`@"!F00``JX"
+M`)V9!``"+0(`*IH$``)^`@!0F@0``GX"``*;!``"WP(`$9L$``++`@`AFP0`
+M`AT"`'2;!``!`P``7YT$``%K!`!VG00``H`$`$V>!``!:P0`PIX$``*`!`"9
+MGP0``6L$`,J?!``"-`(`$Z($``%K!`!!HP0``1`#`'>C!``!:P0`X:,$``$R
+M`@`7I`0``6L$`(&D!``!*P(`MZ0$``%K!`!-I00``5X"`(.E!``!:P0`$Z8$
+M``$R`@`VI@0``2L"`%>F!``!$`,`?:8$``%>`@`_IP0``M,"`.NG!``"3`(`
+M_Z<$``*`!``*J`0``OP"`'BH!``!:P0`B:@$``%K!`"\J`0``6L$`.6H!``"
+M\`(`\:@$``$)``#XJ`0``0D``/ZH!``!"0``$*D$``)D`@`<J00``0D``".I
+M!``!"0``*:D$``$)``!$J00``0D``$NI!``!"0``4:D$``$)``!7J00``5H"
+M`'&I!``!"0``?JD$``$)``"$J00``0D``)JI!``!"0``IJD$``$)``"SJ00`
+M`0D``+FI!``!"0``SZD$``$)``#DJ00``0D``/6I!``!"0``#*H$``$)```@
+MJ@0``0D``$"J!``!6@(`4:H$``$)``!HJ@0``0<``(RJ!``!"0``JZH$``%:
+M`@"\J@0``0D``-*J!``!"0``Z*H$``$)``#_J@0``0D``!2K!``!"0``-*L$
+M``%:`@!%JP0``0D``%RK!``!!P``@*L$``$)``"?JP0``5H"`+"K!``!"0``
+MQJL$``$)``#TJP0``5H"``^L!``!6@(`&:P$``$'``!/K`0``5H"`*.L!``!
+M!P``LJP$``$'``"\K`0``0<``,:L!``!!P``SZP$``$'``#XK`0``5H"``JM
+M!``!6@(`'ZT$``%:`@`ZK00``5H"`'.M!``!6@(`PJT$``)8!`#4K00``0<`
+M`.FM!``!!P``\ZT$``$'```AK@0``5H"`"VN!``!!P``,ZX$``%:`@`YK@0`
+M`0<``#^N!``!6@(`1:X$``$'``!+K@0``5H"`%*N!``!6@(`8ZX$``%:`@!J
+MK@0``5H"`'BN!``!6@(`?ZX$``%:`@",K@0``5H"`)*N!``!6@(`I:X$``%:
+M`@"SK@0``0<``,RN!``!6@(`TZX$``%:`@#AK@0``5H"`.BN!``!6@(`]:X$
+M``%:`@#[K@0``5H"`!FO!``!!P``(Z\$``$'``!QKP0``0D``'JO!``!"0``
+MI*\$``$'``"\KP0``0<``-.O!``!!P``XZ\$``$'```(L`0``5H"`!JP!``!
+M6@(`.;`$``%:`@!<L`0``5H"`'"P!``!6@(`A+`$``%:`@#SL`0``0D``/NP
+M!``!"0``2[($``)F!`!<L@0``F8$`*.R!``!!P``J[($``$'``"]L@0``0<`
+M`,6R!``!!P``S+($``$'``#2L@0``0<``-NR!``!!P``Z+($``$'``#NL@0`
+M`0<``!JS!``"I`0`/+,$``*<!`!RLP0``G\"`("S!``"?P(`I[,$``+U`@#(
+MLP0``E<$`-RS!``!70(`[K,$``)X!``-M`0``ID$`#.T!``"^P(`.[0$``+[
+M`@!#M`0``K8"`%RT!``"M@(`<;0$``)%`@!]M`0``H`$`(6T!``"B@(`C;0$
+M``)/`@"AM`0``5T"`+FT!``">`0`Q+0$``*J`@#/M`0``JH"`$^U!``"3`(`
+M8[4$``*`!`!NM00``OP"`*6U!``!!@``JK4$``*,!``LM@0``04``':V!``!
+M!0``F[8$``$%``"WM@0``4D"`,"V!``"4`0`V;8$``$&``"LMP0``04``+&W
+M!``"C`0`V[<$``)7!`#LMP0``0$``/ZW!``">`0`OKD$``(!`P#FN00``KD"
+M`!FZ!``"&@,`A;H$``(:`P#:N@0``I<$`%V[!``"&@,`O+L$``*7!`"JO`0`
+M`L4"`,:\!``"I`(`&;X$``(^`@!?O@0``AH#`*"^!``"M0(`\;X$``)R`@`7
+MOP0``E8"`$:_!``"&@,`H;\$``*G`@!&P`0``NX"`'C`!``"/@(`I<`$``*U
+M`@#:P`0``E8"`&?!!``"2@(`=L$$``*5`@#DP00``I("`)G#!``"7@0`T\0$
+M``$!```YQ00``E`"`$3%!``"<`(`5<4$``)I`@!TQ00``LP"`,?%!``"7@0`
+M'\8$``)>!``^Q@0``G`"`%'&!``":0(`9\8$``+Y`@!YQ@0``I4"`//&!``"
+MD@(`#<<$``+,`@`BQP0``I4"`$G'!``"EP0`8L<$``+N`@"DQP0``EX$`*[(
+M!``"4`(`Z\@$``$!``#YR`0``G`"``_)!``":0(`(,D$``+Y`@!:R00``NX"
+M`'3)!``"@`0`?,D$``+U`@#4R00``EX$`.K)!``"2@(`]\D$``*5`@`2R@0`
+M`I<$`$;*!``"5P(`5LH$``)7`@!PR@0``O4"`&W>!``"D@(`N-X$``$!``#"
+MW@0``OD"`/[>!``"[@(`&-\$``*`!``@WP0``O4"`%C?!``"E0(`K-\$``*2
+M`@`KX`0``0$``#C@!``"^0(`=N`$``+N`@"0X`0``H`$`)S@!``"]0(`X^`$
+M``+,`@!<X00``0$``&?A!``"<`(`?>$$``)I`@"*X00``OD"`,7A!``"[@(`
+MW.$$``*`!`#HX00``O4"`!_B!``"2@(`-.($``*5`@!`X@0``I("`%KB!``"
+M2@(`4N,$``$!``!@XP0``G`"`';C!``":0(`@^,$``+Y`@"^XP0``NX"`-7C
+M!``"@`0`X>,$``+U`@`@Y`0``DH"`#'D!``"E0(`;>0$``*7!`!_Y`0``NX"
+M`)7D!``"@`0`G>0$``+U`@#7Y`0``I<$`!WE!``"`0,`1>4$``*Y`@!CY00`
+M`J0"`+7E!``"D@(`%N8$``$!```@Y@0``OD"`%[F!``"[@(`>.8$``*`!`"`
+MY@0``O4"`,;F!``"E0(`]N8$``$#```+YP0``L4"`%;G!``"\0(`@N<$``(;
+M`P"6YP0``O("`&KH!``"9@(`?>@$``)F`@"2Z`0``F8"`*7H!``"9@(`W^@$
+M``)T!`#XZ`0``G0$`!#I!``"=`0`8ND$``(A`@"#Z00``G\$`)_I!``"?P0`
+MPND$``)_!`#>Z00``G\$``+J!``"?P0`'NH$``)_!`!"Z@0``G\$`%[J!``"
+M?P0`C>H$``)_!`"JZ@0``G\$`-3J!``"?P0`\.H$``)_!``2ZP0``G\$`"[K
+M!``"?P0`4NL$``)_!`!NZP0``G\$`)+K!``"?P0`KNL$``)_!`#2ZP0``G\$
+M`.[K!``"?P0`$NP$``)_!``N[`0``G\$`%+L!``"?P0`;NP$``)_!`"2[`0`
+M`G\$`*[L!``"?P0`TNP$``)_!`#N[`0``G\$`!+M!``"?P0`+NT$``)_!`!2
+M[00``G\$`&[M!``"?P0`DNT$``)_!`"N[00``G\$`-+M!``"?P0`[NT$``)_
+M!``;[@0``K$$`$#N!``"L00`:^X$``*Q!`"0[@0``K$$`+ON!``"L00`X.X$
+M``*Q!``+[P0``K$$`##O!``"L00`6^\$``*Q!`"`[P0``K$$`*OO!``"L00`
+MT.\$``*Q!`#[[P0``K$$`"#P!``"L00`._`$``*V`@!)\`0``K8"`%'P!``"
+M10(`7?`$``*`!`!E\`0``HH"`&WP!``"3P(`>/`$``)7`@"#\`0``E<"`)3P
+M!``!!P``F?`$``)-!``U\00``O(#`%_Q!``"3@,`?/$$``+3`P#(\00``JH#
+M`-7Q!``"V0,`K_,$``)>!``.]00``MT#`%;X!``!!0``6_@$``*,!`!H^`0`
+M`08``&WX!``"C`0`D_@$``$'``#'^`0``6L$``_Y!``!:P0`2/D$``%K!`!8
+M^00``6L$`(CY!``!:P0`EOD$``%K!`#!^00``6L$`-#Y!``!:P0``OH$``*`
+M!``6^@0``6L$`"3Z!``!:P0`DOH$``%K!`"@^@0``6L$`,CZ!``"@`0`X_H$
+M``%K!`#Q^@0``6L$`!W[!``!:P0`+/L$``%K!`!>^P0``H`$`'+[!``!:P0`
+M@/L$``%K!`#(^P0``6L$`-C[!``!:P0`'OP$``%K!`!^_`0``6L$`-W\!``"
+MF@,`ZOP$``*`!`#Q_`0``I\#`!?]!``!:P0`-?T$``%K!`!0_00``6L$`'3]
+M!``!:P0`Q_T$``*`!`!7_@0``H`$``__!``"O`,`*/\$``)3`P!*_P0``HT$
+M`&W_!``"C00`E_\$``*-!`"T_P0``HT$`-K_!``"C00``@`%``*-!``;``4`
+M`HT$`#@`!0`"C00`6``%``*-!`![``4``HT$`)L`!0`"C00`MP`%``*-!`#3
+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
+M/`4``6L$`$\]!0`"!P0`W#T%``(`!``//@4``@`$`"$^!0`"\`,`;3X%``('
+M!`",/@4``@<$`*X^!0`"5P0`T#X%``(T`P#</@4``H`$`(L_!0`";0,`NC\%
+M``+2`P#0/P4``IX#`.P_!0`!!@``\3\%``*,!``(0`4``I<$`!]`!0`"EP0`
+M0$`%``+D`P!C0`4``M8#`)A`!0`"!P0`P$`%``(T`P#,0`4``H`$`!%!!0`"
+MT@,`)T$%``*>`P!"004``08``$=!!0`"C`0`7D$%``*7!`!U004``I<$`)-!
+M!0`"Y`,`M4$%``(Z`P`S0@4``6L$`%U"!0`"@`0`A$(%``%K!`"=0@4``6L$
+M`%!#!0`!-@,`94,%``)X`P#N0P4``B@#`!5$!0`"!P0`CD0%``)-`P"Z1`4`
+M`ML#`.M$!0`"#00``T4%``*7!``=104``I<$`$U%!0`"@`0`944%``%K!`!^
+M104``6L$`)Q%!0`"\`,`I$4%``*%`P#A104``L8#`"]&!0`"!P0`DD8%``*;
+M`P"B1@4``I<#`,9&!0`";`,`$4<%``%K!``M1P4``6L$`$)'!0`"R0,`54<%
+M``*C`P!M1P4``6L$`'M'!0`!:P0`B4<%``%K!`"71P4``6L$`/1'!0`!:P0`
+M$T@%``%K!``@2`4``J(#`%1(!0`!:P0`;T@%``%K!`#@2`4``6L$`/](!0`!
+M:P0`*$D%``)7!`!1204``@<$`())!0`"EP0`F$D%``(`!`#`204``G0#`,Q)
+M!0`"@`0`]DD%``$!```+2@4``G@$`"A*!0`!:P0`/TH%``%K!`!92@4``6L$
+M`'M*!0`!:P0`G$H%``%K!`"S2@4``6L$``)+!0`!:P0`(TL%``%K!`!(2P4`
+M`6L$`%]+!0`!:P0`MTL%``%K!`#.2P4``6L$`$=,!0`"5P0`>TP%``*7!`".
+M3`4``@`$`*%,!0`"-`,`K4P%``*`!`#13`4``0$``.-,!0`">`0`"DT%``%K
+M!``G304``6L$`$I-!0`!:P0`9DT%``%K!`"A304``E<$`+U-!0`"!P0`Z$T%
+M``*7!``.3@4``2@#`"!.!0`">`0`/DX%``%K!`!73@4``6L$`.I.!0`!:P0`
+M#D\%``%K!``\3P4``6L$`'!/!0`!!0``=4\%``*,!`"\3P4``BX#`!Y0!0`"
+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
+M8`,`404&``+#`P"V!08``F`#`,D%!@`"PP,`W@4&``(-!`"M!@8``EX$`/D&
+M!@`!!@``_@8&``*,!``7!P8``F`#`"<'!@`"PP,`00<&``('!`"?!P8``@<$
+M``L(!@`"#00`J0@&``*`!``U"08``H`$`&P)!@`"@`0`C@D&``)@`P">"08`
+M`L,#`*P)!@`"8P,`N0H&``*`!`#P"@8``H`$`!(+!@`"8`,`(@L&``+#`P`P
+M"P8``F,#`&P+!@`"@`0`O`L&``*`!``(#`8``H`$`$$,!@`"8`,`40P&``+#
+M`P!>#`8``@T$`%<-!@`"8`,`9@T&``+#`P#R#08``ML#``<.!@`"@`0`+PX&
+M``+'`P!%#@8``ML#`)0.!@`!!0``F0X&``*,!`"R#@8``E<#`'8/!@`"8`,`
+M@P\&``+#`P";#P8``F`#`*H/!@`"PP,`M`\&``+;`P"?$`8``F`#`*X0!@`"
+MPP,`]1`&``$%``#Z$`8``HP$`!(1!@`"Y`,`(!$&``)D`P`W$08``H`$`$$1
+M!@`"PP,`3!$&``()!`!A$08``H`$`&L1!@`"PP,`=1$&``*Y`P"E$08``@@$
+M``D2!@`!L@,`%1(&``$!```B$@8``O\#`$,2!@`""`0`81(&``+R`P![$@8`
+M`L,#`,P2!@`!`0``VA(&``*J`P#L$@8``MD#`/82!@`"_P,`@!4&``*X`P"J
+M%08``@@$`/$5!@`!`0``_A4&``+_`P`>%@8``@@$`&46!@`!`0``<A8&``+_
+M`P"2%@8``@@$`-(6!@`!`0``W!8&``+_`P#Z%@8``@@$`#H7!@`!`0``1!<&
+M``+_`P!B%P8``@@$`*H7!@`!`0``M!<&``+_`P#2%P8``@@$`!(8!@`!`0``
+M'!@&``+_`P`Z&`8``@@$`'H8!@`!`0``A!@&``+_`P"U&`8``@@$`/<8!@`!
+M:`,``QD&``&@`P`0&08``O\#`$$9!@`""`0`H!D&``%H`P"L&08``:`#`+D9
+M!@`"_P,`[1H&``)I`P!,&P8``F`#`%H;!@`"PP,`<!L&``)L`P",&P8``0,`
+M`*0;!@`!:P0`YAL&``%K!``&'`8``6L$`$L<!@`!:P0`9AP&``%K!`"M'`8`
+M`6L$`-T<!@`!:P0`&QT&``*`!`!''08``J`$`&L=!@`!:P0`BAT&``%K!`"9
+M'08``J`$``T>!@`"!P0`;!X&``+2`P"#'@8``IX#`)T>!@`"EP0`M!X&``*7
+M!`#;'@8``N0#`/\>!@`!:P0`&A\&``%K!`!K'P8``@<$`*D?!@`"7P,`[A\&
+M``(T`P#Z'P8``H`$`#`@!@`!:P0`3R`&``%K!`#>(`8``F`#`.L@!@`"PP,`
+M^2`&``)D`P`7(08``F`#`"8A!@`"PP,`,"$&``)L`P!C(@8``F`#`'(B!@`"
+MPP,`C"(&``*-`P"O(@8``0,``,LB!@`!:P0`YB(&``%K!`"`(P8``D\#`-8C
+M!@`"J`,`]",&``('!``E)`8``I<$`#\D!@`"``0`520&``(T`P!A)`8``H`$
+M`)(D!@`"8`,`GR0&``+#`P"S)`8``E$#`.<D!@`"3P,`/B4&``*H`P!<)08`
+M`@<$`(TE!@`"EP0`IR4&``(`!`"])08``C0#`,DE!@`"@`0`^B4&``)@`P`'
+M)@8``L,#`!LF!@`"40,`0"8&``%K!`!;)@8``6L$`+$F!@`"-`,`O28&``*`
+M!`#X)@8``6L$`!<G!@`!:P0`<"<&``('!`"N)P8``E\#`"XH!@`!:P0`1B@&
+M``%K!`!O*`8``F`#`'XH!@`"PP,`BR@&``)L`P#0*`8``6L$``HJ!@`"@`0`
+M93`&``('!`"N,`8``L0#`,HP!@`"7@0`W3`&``)#`P`E,@8``DD#`#<R!@`"
+MQ@,`*C,&``*`!`#Y,P8``0D```$T!@`!"0``"30&``)5`P`L-`8``0D``#0T
+M!@`!"0``/#0&``)5`P!A-`8``DD#`&PT!@`"Q@,`#S4&``)>`P"Q-08``6L$
+M`/,U!@`!:P0`"38&``(7!``9-@8``A<$`"DV!@`"%P0`.38&``(7!`!)-@8`
+M`A<$`%DV!@`"%P0`:38&``(7!`!V-@8``A<$``LW!@`"%P0`CC<&``)[`P">
+M-P8``L,#`-8W!@`""`0`Z#<&``)Z`P!&.`8``2(#`%$X!@`"J@,`6S@&``+_
+M`P"6.`8``@@$`*XX!@`">@,`O#D&``$B`P#*.08``JH#`-<Y!@`"_P,`&3H&
+M``+K`P`M.@8``C0#`#DZ!@`"@`0`9CH&``+/`P!Y.@8``C0#`(4Z!@`"@`0`
+MH#H&``+K`P"U.@8``C0#`,$Z!@`"@`0`"CL&``+/`P#D/`8``C$#`!8]!@`!
+M`P``73X&``(/!`!Y/@8``GD#`+(_!@`"'00`)T`&``(=!``[0`8``EX$`&Q`
+M!@`"'`0`?T`&``&L`P"U0`8``@\$`-%`!@`">0,`7D$&``(<!`"$008``AP$
+M`#9"!@`"*P,`14(&``*4`P!50@8``M\#`*A"!@`!`P``DT0&``%K!`"J1`8`
+M`H`$`(%%!@`!:P0`]D4&``*`!`#-1@8``6L$`/Y&!@`",P,`1TD&``%K!`!U
+M2@8``9D#`*M*!@`!:P0`%4L&``$R`P!+2P8``6L$`+5+!@`!*0,`ZTL&``%K
+M!`"!3`8``68#`+=,!@`!:P0`1TT&``$R`P!J308``2D#`(M-!@`!F0,`L4T&
+M``%F`P!S3@8``M@#`-A.!@`!:P0`]4X&``$)``#\3@8``0D```)/!@`!"0``
+M!T\&``$)```.3P8``0D``!1/!@`!"0``(T\&``$)```J3P8``0D``#!/!@`!
+M"0``-D\&``%B`P!03P8``0D``%U/!@`!"0``8T\&``$)``!Y3P8``0D``(5/
+M!@`!"0``DD\&``$)``"83P8``0D``*Y/!@`!"0``PT\&``$)``#43P8``0D`
+M`.M/!@`!"0```%`&``$)```@4`8``6(#`#%0!@`!"0``2%`&``$'``!L4`8`
+M`0D``(M0!@`!8@,`G%`&``$)``"R4`8``0D``,A0!@`!"0``WU`&``$)``#T
+M4`8``0D``!11!@`!8@,`)%$&``$)```[408``0<``%Y1!@`!"0``?U$&``%B
+M`P"0408``0D``*91!@`!"0``U%$&``%B`P#O408``6(#`/E1!@`!!P``+U(&
+M``%B`P"#4@8``0<``))2!@`!!P``G%(&``$'``"F4@8``0<``*]2!@`!!P``
+MV%(&``%B`P#J4@8``6(#`/]2!@`!8@,`&E,&``%B`P!34P8``6(#`*)3!@`"
+M6`0`M%,&``$'``#)4P8``0<``--3!@`!!P```50&``%B`P`-5`8``0<``!-4
+M!@`!8@,`&50&``$'```?5`8``6(#`"54!@`!!P``*U0&``%B`P`R5`8``6(#
+M`$-4!@`!8@,`2E0&``%B`P!85`8``6(#`%]4!@`!8@,`;%0&``%B`P!R5`8`
+M`6(#`(54!@`!8@,`DU0&``$'``"L5`8``6(#`+-4!@`!8@,`P50&``%B`P#(
+M5`8``6(#`-54!@`!8@,`VU0&``%B`P#Y5`8``0<```-5!@`!!P``454&``$)
+M``!:508``0D``(15!@`!!P``G%4&``$'``"S508``0<``,-5!@`!!P``Z%4&
+M``%B`P#Z508``6(#`!E6!@`!8@,`/%8&``%B`P!05@8``6(#`&16!@`!8@,`
+MTU8&``$)``#;5@8``0D``"M8!@`"9@0`/%@&``)F!`"#6`8``0<``(M8!@`!
+M!P``G5@&``$'``"E6`8``0<``*Q8!@`!!P``LE@&``$'``"[6`8``0<``,A8
+M!@`!!P``SE@&``$'``#Z6`8``J0$`!Q9!@`"G`0`3ED&``)<`P!<608``EP#
+M`(-9!@`"-`,`I%D&``)7!`"X608``64#`,I9!@`">`0`Z5D&``*9!``/6@8`
+M`OH#`!=:!@`"^@,`'UH&``*S`P`X6@8``K,#`$U:!@`"70,`65H&``*`!`!A
+M6@8``J4#`&E:!@`"U0,`?5H&``%E`P"56@8``G@$`*!:!@`"9`,`JUH&``)D
+M`P`K6P8``E4#`#];!@`"@`0`2EL&``+X`P"!6P8``08``(9;!@`"C`0`"%P&
+M``$%``!27`8``04``'=<!@`!!0``DUP&``%2`P"<7`8``E`$`+5<!@`!!@``
+MB%T&``$%``"-708``HP$`+==!@`"5P0`R%T&``$!``#:708``G@$`)I?!@`"
+MI`,`PE\&``*8`P#U7P8``@<$`&%@!@`"!P0`MF`&``*7!``Y808``@<$`)AA
+M!@`"EP0`AF(&``+W`P"B8@8``IX#`/5C!@`"30,`.V0&``('!`!\9`8``ML#
+M`,UD!@`"=`,`\V0&``(-!``B908``@<$`'UE!@`"[0,`(F8&``(`!`!49@8`
+M`DT#`(%F!@`"VP,`MF8&``(-!`!#9P8``F`#`%)G!@`"PP,`P&<&``((!`!U
+M:08``EX$`*]J!@`!`0``%6L&``([`P`@:P8``JH#`#%K!@`"V0,`4&L&``+R
+M`P"C:P8``EX$`/MK!@`"7@0`&FP&``*J`P`M;`8``MD#`$-L!@`"_P,`56P&
+M``+#`P#/;`8``@@$`.EL!@`"\@,`_FP&``+#`P`E;08``I<$`#YM!@`"``0`
+M@&T&``)>!`"*;@8``CL#`,=N!@`!`0``U6X&``*J`P#K;@8``MD#`/QN!@`"
+M_P,`-F\&``(`!`!0;P8``H`$`%AO!@`"-`,`L&\&``)>!`#&;P8``F`#`--O
+M!@`"PP,`[F\&``*7!``B<`8``@$$`#)P!@`"`00`3'`&``(T`P!)A`8``@@$
+M`)2$!@`!`0``GH0&``+_`P#:A`8``@`$`/2$!@`"@`0`_(0&``(T`P`TA08`
+M`L,#`(B%!@`""`0`!X8&``$!```4A@8``O\#`%*&!@`"``0`;(8&``*`!`!X
+MA@8``C0#`+^&!@`"\@,`.(<&``$!``!#AP8``JH#`%F'!@`"V0,`9H<&``+_
+M`P"AAP8``@`$`+B'!@`"@`0`Q(<&``(T`P#[AP8``F`#`!"(!@`"PP,`'(@&
+M``((!``VB`8``F`#`"Z)!@`!`0``/(D&``*J`P!2B08``MD#`%^)!@`"_P,`
+MFHD&``(`!`"QB08``H`$`+V)!@`"-`,`_(D&``)@`P`-B@8``L,#`$F*!@`"
+MEP0`6XH&``(`!`!QB@8``H`$`'F*!@`"-`,`LXH&``*7!`#YB@8``J0#`"&+
+M!@`"F`,`/XL&``*>`P"1BP8``@@$`/*+!@`!`0``_(L&``+_`P`ZC`8``@`$
+M`%2,!@`"@`0`7(P&``(T`P"BC`8``L,#`-*,!@`!`P``YXP&``+W`P`RC08`
+M`H<#`%Z-!@`"O0,`<HT&``+O`P!&C@8``I$#`%F.!@`"D0,`;HX&``*1`P"!
+MC@8``I$#`+N.!@`"=`0`U(X&``)T!`#LC@8``G0$`#Z/!@`"O`,`7X\&``)_
+M!`![CP8``G\$`)Z/!@`"?P0`NH\&``)_!`#>CP8``G\$`/J/!@`"?P0`'I`&
+M``)_!``ZD`8``G\$`&F0!@`"?P0`AI`&``)_!`"PD`8``G\$`,R0!@`"?P0`
+M[I`&``)_!``*D08``G\$`"Z1!@`"?P0`2I$&``)_!`!ND08``G\$`(J1!@`"
+M?P0`KI$&``)_!`#*D08``G\$`.Z1!@`"?P0`"I(&``)_!``ND@8``G\$`$J2
+M!@`"?P0`;I(&``)_!`"*D@8``G\$`*Z2!@`"?P0`RI(&``)_!`#ND@8``G\$
+M``J3!@`"?P0`+I,&``)_!`!*DP8``G\$`&Z3!@`"?P0`BI,&``)_!`"NDP8`
+M`G\$`,J3!@`"?P0`]Y,&``*Q!``<E`8``K$$`$>4!@`"L00`;)0&``*Q!`"7
+ME`8``K$$`+R4!@`"L00`YY0&``*Q!``,E08``K$$`#>5!@`"L00`7)4&``*Q
+M!`"'E08``K$$`*R5!@`"L00`UY4&``*Q!`#\E08``K$$`!>6!@`"LP,`)98&
+M``*S`P`ME@8``ET#`#F6!@`"@`0`098&``*E`P!)E@8``M4#`%26!@`"`00`
+M7Y8&``(!!`!PE@8``0<``'66!@`"300`B98&``%W!`"2E@8``7<$`)F6!@`!
+M+@0`K98&``%M!`"WE@8``I,$`,Z6!@`!;00`UY8&``%M!`!.EP8``6T$`#&8
+M!@`!;00`LY@&``(^!`#QF`8``20$`/F8!@`!)`0`!)D&``$N!``0F08``2X$
+M`":9!@`!)`0`>ID&``&!!``+F@8``20$`(B:!@`"C00`G9H&``*-!`"QF@8`
+M`20$`.&:!@`"C00`^9H&``*-!``-FP8``HT$`"6;!@`"C00`09L&``*-!`!G
+MFP8``F`$`'>;!@`"C00`@)L&``$D!`#$FP8``8$$`.6;!@`",P0``YP&``*/
+M!``?G`8``0D``"6<!@`!"0``Q)P&``)_!``WG08``D@$`':=!@`"?P0`_YT&
+M``*=!`!GG@8``CL$`(6>!@`"?P0`F9X&``)_!`#OG@8``CH$`/J>!@`!D@0`
+M$I\&``(U!`!(GP8``BL$`'N?!@`"+`0`TY\&``&!!`#?GP8``D,$`.>?!@`"
+MH@0`9Z`&``$)``""H`8``:T$`(^@!@`!E`0`J:`&``$)``"OH`8``0D``+.@
+M!@`!L@0`N:`&``$)``#!H`8``0D``,>@!@`">`0`ZJ`&``*/!`#WH`8``0$`
+M`/Z@!@`!"0``%:$&``)_!``RH08``0D``#VA!@`!"0``2:$&``$)``"_H08`
+M`20$``BB!@`"L@0`(:(&``*#!`!%H@8``H`$`$VB!@`"7P0`<Z(&``%M!`!\
+MH@8``6T$`(:B!@`!;00`O:(&``);!`#PH@8``G\$``JC!@`!)`0`BZ,&``*/
+M!`#LHP8``F<$`"BD!@`"?P0`0:0&``*P!`!;I`8``H0$`*JD!@`"@P0`@J8&
+M``(F!`"7I@8``EL$`*:F!@`"CP0`WJ8&``)_!``$IP8``H,$`$>G!@`"@P0`
+MS:<&``%M!`!-J`8``J`$`%ZH!@`"3P0`?*@&``*@!`#VJ`8``D\$``RI!@`"
+MH`0`;ZD&``*#!`"/J08``D\$`"NJ!@`!`0``3ZH&``$'``!6J@8``EH$`'2J
+M!@`"?P0`FZH&``)_!`"_J@8``I`$`!&K!@`"?P0`&ZL&``$!``!`JP8``J\$
+M`(&K!@`"1`0`FJL&``*/!`"PJP8``0$``.>K!@`"(`0`*JP&``([!`!.K`8`
+M`J($`%JL!@`!D@0`;*P&``(U!`"CK`8``2,$`,:L!@`"KP0`UZP&``)$!`#Y
+MK`8``G\$`!FM!@`"?P0`'ZT&``$!```FK08``C$$`#FM!@`!!P``*ZX&``)$
+M!`!'K@8``J@$`&JN!@`"KP0`LZ\&``*H!``CL`8``J@$`$:P!@`!`0``>[`&
+M``*O!`"^L`8``J\$`.ZP!@`!`0``2K$&``(F!`!?L08``I`$`'.Q!@`"6P0`
+M1K,&``$'``!1LP8``EH$`%JS!@`"?P0`$K0&``$'```=M`8``EH$`":T!@`"
+MCP0`M+0&``$'``"_M`8``EH$`,BT!@`"CP0`1K4&``$'``!1M08``EH$`%JU
+M!@`"CP0`1K8&``$'``!1M@8``EH$`%JV!@`"CP0`"K<&``$'```5MP8``EH$
+M`!ZW!@`"CP0`QK<&``$'``#-MP8``EH$`.ZW!@`"?P0`9;@&``(W!`#5N`8`
+M`C<$`)2Y!@`"-P0`NKD&``(W!`#@N@8``F($`#R[!@`"6P0`7KL&``(V!`")
+MNP8``EL$`(^[!@`"-@0`IKL&``$'``"MNP8``EH$`+:[!@`"CP0`R+L&``);
+M!`!RO08``CT$`*.]!@`".`0`R+T&``&!!``)O@8``D`$`"N^!@`!@00`-+X&
+M``&2!`!\O@8``C@$`)R^!@`".`0`#;\&``(B!``XOP8``B8$`$R_!@`"-@0`
+M=+\&``&!!`">OP8``C@$`+>_!@`"1`0`WK\&``(]!`#HP`8``F($`(?!!@`"
+M-@0`F\$&``);!`#AP08``C@$``S"!@`"/00`W,(&``$'``#CP@8``EH$`.S"
+M!@`"?P0`Y\,&``&!!``,Q`8``C@$`#+$!@`"/00`^,0&``$'``#_Q`8``EH$
+M``C%!@`"?P0`-,4&``)$!`!1Q@8``F($`,S&!@`"/@0`B\<&``*J!`#@QP8`
+M`B$$``7(!@`!!P``#L@&``):!``7R`8``HT$`#O(!@`!`P``1<@&``*9!`"+
+MR`8``0,``./(!@`"KP0`)<D&``*O!`!9R08``ID$`'_)!@`"CP0`ELD&``$!
+M``"MR08``J\$`,G)!@`"1`0`XLD&``$'``#LR08``7<$`/G)!@`!!P```\H&
+M``$'```1R@8``0<``!K*!@`!!P``'\H&``*L!``XR@8``F$$`&;*!@`"@@0`
+MD,H&``$!``"9R@8``H<$`,S*!@`"800`X\H&``)N!``%RP8``H($`"++!@`!
+M`P``FLL&``$!``"ERP8``H<$`.?+!@`"(`0`4<P&``)A!`!SS`8``J\$`*?,
+M!@`!`0``U,P&``%M!`#*S08``E($`.C-!@`!=P0`1LX&``*.!`!ES@8``FP$
+M`('.!@`!;00`8<\&``%M!`!:T`8``6T$`!71!@`!;00`LM0&``%M!`!2U08`
+M`6T$`*S5!@`!`P``I-8&``)!!`#LV`8``G8$`(S:!@`"=@0`"-L&``)V!`"*
+MVP8``G8$`/;;!@`"=@0`;-P&``)V!`#6W`8``G8$`&'=!@`"+00`:=X&``(M
+M!`#$WP8``BT$`*;@!@`",@0`2N$&``(M!``SX@8``C($`-WC!@`"7@0`Z^,&
+M``*J!`";Y08``EX$`*GE!@`"J@0`,>8&``))!`#)Y@8``DD$`&GG!@`"200`
+MTN<&``*)!``UZ`8``DD$`*+H!@`"B00`S>H&``(X!``$ZP8``C@$`'#K!@`"
+M.`0`HNX&``))!``.[P8``DD$`(+O!@`"200`[.\&``))!`!H\`8``DD$`-GP
+M!@`!`P``(?0&``(F!``[]`8``CP$`(#T!@`".`0`Z?0&``(X!`#U]`8``B8$
+M`!#U!@`"0`0`*?4&``);!`!3]08``F$$`)7U!@`"I@0`G?4&``)E!`"O]08`
+M`0$``,CU!@`";@0`./8&``*'!`!3]@8``G\$`%KV!@`!`0``=O8&``*O!`"3
+M]@8``HH$`*#V!@`!`0``N?8&``)N!`!$]P8``H<$`&'W!@`"?P0`:?<&``)A
+M!`#4]P8``0$``/+W!@`"KP0`,?@&``))!`"A^`8``DD$`)7Y!@`"-@0`ROD&
+M``(W!`#:^08``C8$`!'Z!@`"200`7/H&``(T!`"!^@8``B8$`)CZ!@`"-`0`
+ML_H&``(F!`!2^P8``F4$`&/[!@`"I@0`T/L&``$!``!&_`8``0$``&#\!@`"
+M?`0`:_P&``)$!`"F_`8``0$``,#\!@`"?`0`R_P&``)$!`#L_`8``0$```/]
+M!@`"?`0`??T&``$!``")_08``GT$`-3]!@`!*`0`Z?T&``)$!``@_@8``D0$
+M`$'^!@`!*`0`5OX&``)$!`",_@8``D0$`*C_!@`"1`0`&@`'``)$!``Z``<`
+M`D0$``H!!P`!`0``+@$'``)\!``^`0<``0$``%@!!P`"?`0`M0$'``$!``!)
+M`P<``GT$`&8#!P`"200`;P,'``**!`!V`P<``0$``(\#!P`";@0`LP,'``))
+M!``8!`<``H<$`#($!P`"?P0`.@0'``)A!`![!`<``0$``)X$!P`"KP0`L@0'
+M``$!``#+!`<``FX$`.T$!P`"@@0`_00'``*/!`!G!0<``H<$`(8%!P`"4P0`
+M"08'``))!`!!!@<``0,``,(&!P`",P0`#P<'``(S!`!3!P<``DD$`*T'!P`"
+M200`#0@'``)V!`!$"`<``G8$`#,*!P`!`0``KPH'``)B!`#_"@<``DD$`$H+
+M!P`"-`0`<@L'``(F!`"&"P<``EL$`.L+!P`"200`)0P'``(T!`"+#`<``F($
+M`.P,!P`")@0`"`T'``);!``,#@<``G8$`&8.!P`"*@0`0`\'``$!``#%#P<`
+M`J8$`.`/!P`"CP0`^P\'``)3!``7$`<``B\$`+L0!P`!`0``*Q$'``**!``Z
+M$0<``F4$`%D1!P`"H@0`GQ$'``$!``"Y$0<``GP$`,01!P`"1`0`^1$'``$!
+M```:$@<``GP$`"@2!P`"1`0`=Q('``$!``"1$@<``GP$`)P2!P`"1`0`S!('
+M``$!``#G$@<``GP$`/42!P`"1`0`&!,'``$)```C$P<``0D``#(3!P`!"0``
+M1!,'``$)``!,$P<``0D``&,3!P`!"0``>!,'``$)``"4$P<``0D``)L3!P`!
+M"0``J!,'``$)``"V$P<``0D``"\4!P`"*00`4!0'``))!`!M%`<``0,``.<4
+M!P`!`0```14'``)\!``,%0<``D0$`%\5!P`"1`0`U14'``)!!``#%@<``0$`
+M`!T6!P`"?`0`*!8'``)$!`!(%@<``D$$`&L6!P`!`0``A18'``)\!`"0%@<`
+M`D0$`*<6!P`"4P0`]!8'``)$!``5%P<``D0$`'07!P`"1`0`<A@'``)!!`"M
+M&`<``0$``,X8!P`"?`0`W!@'``)$!``+&0<``D$$`$(9!P`!`0``7!D'``)\
+M!`!G&0<``D0$`((9!P`"1`0`G!D'``)$!`!!&@<``0$``%L:!P`"?`0`9AH'
+M``)$!`"9&@<``0$``+,:!P`"?`0`OAH'``)$!``<&P<``D0$`#T;!P`"1`0`
+M3QL'``*B!`"3&P<``D0$`/0;!P`"H@0`$AP'``$!```K'`<``FX$`&\<!P`"
+MB@0`EAP'``)E!`"F'`<``F4$`+0<!P`"900`OQP'``$!``#8'`<``FX$`"$=
+M!P`!;00`,1T'``%M!``V'0<``JL$`(`=!P`",P0`T1T'``%M!`#N'0<``6T$
+M`#4>!P`"200`3AX'``$!``!G'@<``FX$`'L>!P`"D`0`B1X'``(U!`"8'@<`
+M`0$``+$>!P`";@0`\QX'``)$!``2'P<``0,``$8?!P`"?P0`6!\'``)A!`!?
+M'P<``0$``'@?!P`";@0`LQ\'``$!``#,'P<``FX$`!H@!P`"7@0`02`'``$!
+M``!:(`<``FX$`+`@!P`"7@0`]B`'``$!```/(0<``FX$`#HA!P`"200`;B$'
+M``)>!`"<(0<``0$``+4A!P`";@0`VB$'``))!``((@<``0$``"$B!P`";@0`
+M2R('``))!`!((P<``G\$`(,C!P`!`0``G",'``)N!`"V(P<``DD$`/0C!P`"
+M0`0`_B,'``$!```7)`<``FX$`#`D!P`"200`."0'``))!``_)`<``C\$`%,D
+M!P`!`0``:20'``)N!`"()`<``DD$``<E!P`"7@0`(R4'``)E!``M)0<``0$`
+M`$8E!P`";@0`OR4'``$!``#8)0<``FX$`.8E!P`"200`/R8'``)`!`!+)@<`
+M`0$``&0F!P`";@0`GR8'``$!``"X)@<``FX$`,8F!P`"200`FB@'``)`!`"G
+M*`<``0$``,`H!P`";@0`[B@'``%M!``T*0<``DD$`&PI!P`!`P``!"L'``)`
+M!`#`*P<``EX$`#PL!P`!`0``<BP'``)E!`".+`<``0$``*\L!P`";@0`YRP'
+M``([!``'+0<``G\$`!(M!P`!D@0`*BT'``(U!`!++0<``D0$`%TM!P`"?P0`
+M<RT'``$!``"6+0<``J\$`-@M!P`!`0``\2T'``)N!``^+@<``0$``$4N!P`"
+M,00`>RX'``$!``">+@<``J\$`*\N!P`!`0``R"X'``)N!`#X+@<``G\$`#0O
+M!P`".@0`7"\'``(K!`"/+P<``BP$`.HO!P`"0P0`\B\'``*B!`";,`<``J($
+M`+TP!P`"H@0`UC`'``*0!``*,0<``H\$`"`Q!P`!`0``4C$'``(@!`"$,0<`
+M`B,$`*$Q!P`"200`-S('``)`!`!%,@<``HH$`%PR!P`!`0``=3('``)N!`"J
+M,@<``H<$`"XS!P`!`0``23,'``)N!`"-,P<``G8$`*DS!P`"CP0`Q#,'``$!
+M``#?,P<``FX$`/@S!P`"@@0`$30'``)_!`!\-`<``60$`)`T!P`!9`0`NS0'
+M``$#``#F-`<``G\$`.XT!P`"800`"S4'``$#```O-0<``G\$`#<U!P`"800`
+M>#4'``$!``"2-0<``0$``+(U!P`"600`]S4'``$!```&-@<``H<$`.<W!P`"
+M?P0``S@'``(L!``:.`<``0$``#8X!P`"KP0`K#@'``$!``#".`<``FX$`,TX
+M!P`"1`0`XC@'``$!``#X.`<``FX$`!<Y!P`"800`'CD'``$!```X.0<``J\$
+M`'@Y!P`"I@0`A#D'``*"!`"5.0<``0$``)TY!P`"AP0`P#H'``)S!`#/.@<`
+M`F$$``8[!P`"<P0`%3L'``)A!``<.P<``0$``#4[!P`";@0`>3L'``*'!`"_
+M.P<``0$``-T[!P`"KP0`/SP'``)S!`!+/`<``F$$`%D\!P`!`0``<CP'``)N
+M!`"1/0<``H<$``0^!P`"@@0`,#X'``)S!`!6/@<``0$``'$^!P`";@0`?CX'
+M``%D!`"5/@<``60$`,$_!P`!`0``R#\'``$!``#7/P<``H<$`$)`!P`!`0``
+M8$`'``)9!``B00<``J$$`!!"!P`"800`<$('``)_!`"10@<``CP$`*)"!P`!
+M`0``NT('``)N!`#,0@<``DD$`/)"!P`!`0``"T,'``*O!``B0P<``H($`$I#
+M!P`!`0``4D,'``*'!`"80P<``DD$`-Q#!P`"200`Y4,'``*0!``:1`<``DD$
+M`#Q$!P`!`0``540'``)N!`!O1`<``3D$`)M$!P`!.00`HD0'``)+!`#%1`<`
+M`0$``-M$!P`">`0`+D4'``(E!`!I10<``3D$`+!%!P`"5P0`Q$4'``$!``#4
+M10<``G@$`.9%!P`!`0``_T4'``)N!`";1@<``0$``+1&!P`";@0`T48'``(@
+M!``'1P<``0$``!U'!P`";@0`8D<'``&!!`!J1P<``08``)I'!P`!D@0`J4<'
+M``$&``#:1P<``60$`/U'!P`!!@``+4@'``$H!``W2`<``08``&=(!P`!.00`
+M@T@'``$!``"D2`<``FX$`-9(!P`!!@``/4D'``$&``!220<``9($`%E)!P`!
+M`0``<DD'``)N!`"!20<``08``)Y)!P`!9`0`I4D'``$!``"^20<``FX$`,U)
+M!P`!!@``XDD'``$H!`#I20<``0$```)*!P`";@0`$4H'``$&```K2@<``0$`
+M`$Y*!P`"KP0`6$H'``$&``!R2@<``0$``)5*!P`"KP0`J$H'``$!``#!2@<`
+M`FX$`/Y*!P`!`0``%TL'``)N!`!B2P<``0$``'M+!P`";@0`PDL'``$!``#;
+M2P<``FX$`$E,!P`!`0``8DP'``)N!`"M3`<``0$``,9,!P`";@0`74T'``$!
+M``!V30<``FX$`%A.!P`!`0``<4X'``)N!`!43P<``0$``&U/!P`";@0`4%`'
+M``$!``!I4`<``FX$`+M0!P`!`0``T5`'``)N!``?40<``0$``#51!P`";@0`
+M9E$'``))!`"Y40<``0$``-)1!P`";@0`!E('``))!`!94@<``0$``')2!P`"
+M;@0`IE('``))!`#Y4@<``0$``!)3!P`";@0`:E,'``))!`"F4P<``0$``+]3
+M!P`";@0`[U,'``))!``X5`<``DD$`'=4!P`!`0``D%0'``)N!`#"5`<``DD$
+M`!Q5!P`"200`<U4'``$!``",50<``FX$`,95!P`!@00`"58'``))!``65@<`
+M`DD$`%Q6!P`"200`B%8'``$!``"H5@<``J\$``]7!P`"200`'%<'``))!`!<
+M5P<``DD$`(Q7!P`!`0``K%<'``*O!``F6`<``0$``#]8!P`";@0`_%@'``$!
+M```560<``FX$`(-9!P`"200`D%D'``))!`#060<``DD$``!:!P`!`0``(%H'
+M``*O!`"66@<``DD$`*-:!P`"200`Y%H'``))!``46P<``0$``#1;!P`"KP0`
+M:EL'``))!`"`6P<``DD$`,Y;!P`"200`VUL'``))!``@7`<``DD$`%!<!P`!
+M`0``<%P'``*O!`"B7`<``DD$`+M<!P`"200`'UT'``))!``L70<``DD$`'!=
+M!P`"200`H%T'``$!``#`70<``J\$`.Y=!P`"200`!%X'``))!`!$7@<``J$$
+M`&Y>!P`"200`X%X'``$!````7P<``J\$`$%?!P`!`0``6E\'``)N!`"*7P<`
+M`DD$`*!?!P`"200`VE\'``))!``68`<``DD$`"Q@!P`"200`9F`'``))!`"B
+M8`<``DD$`+A@!P`"200`\F`'``))!``N80<``DD$`$1A!P`"200`>F$'``))
+M!`"V80<``DD$`,QA!P`"200``F('``))!``^8@<``DD$`%1B!P`"200`BF('
+M``))!`#&8@<``DD$`-QB!P`"200`.6,'``))!`#]8P<``G($`#)E!P`!`0``
+M6V4'``*E!`"B90<``DD$`+AE!P`"200`\64'``))!``49@<``0$``#1F!P`"
+MKP0`8F8'``))!`!X9@<``DD$`+%F!P`"200`U&8'``$!``#T9@<``J\$`"9G
+M!P`"200`/&<'``))!`!29P<``DD$`%IG!P`"200`SF<'``))!`#69P<``DD$
+M``1H!P`!`0``)&@'``*O!`!2:`<``DD$`&AH!P`"200`IF@'``))!``L:0<`
+M`0$``$QI!P`"KP0`>FD'``))!`"0:0<``DD$`,UI!P`"200`\&D'``$!```0
+M:@<``J\$`$)J!P`"200`6&H'``))!`"4:@<``0$``+1J!P`"KP0`YFH'``))
+M!`#\:@<``DD$`#AK!P`!`0``6&L'``*O!`"(:P<``0$``*AK!P`"KP0`Z6L'
+M``$!```";`<``FX$`(1L!P`!`0``G6P'``)N!`#[;`<``DD$`!)M!P`"200`
+M2FT'``))!`"S;0<``DD$`,IM!P`"200``FX'``))!``^;@<``DD$`%1N!P`"
+M200`@&X'``$!``"@;@<``J\$`/EN!P`"200`!F\'``))!`!D;P<``DD$`,MO
+M!P`"H00`[V\'``$!```(<`<``FX$`&5P!P`"200`<G`'``))!`"\<`<``DD$
+M``!Q!P`!`0``('$'``*O!`!&<0<``DD$`%QQ!P`"200`CW$'``))!`"T<0<`
+M`0$``-1Q!P`"KP0`,W('``%M!`"9<@<``0$``+)R!P`";@0`1G,'``$!``!:
+M<P<``FX$`/AS!P`!`0``8W0'``))!`!Z=`<``DD$`$AU!P`"800`3W4'``$!
+M``!H=0<``FX$`(%U!P`"200`D'4'``*"!`"G=0<``0$``,!U!P`";@0`&W8'
+M``$!```B=@<``0$``"MV!P`"AP0`1'8'``$'``!*=@<``0<``%)V!P`!!P``
+MNW<'``*#!`"C>`<``BD$`*-Y!P`"(00`N'D'``)A!`"_>0<``0$``-AY!P`"
+M;@0`7WH'``$%``!D>@<``HP$`&]Z!P`"1`0`@7H'``$%``"&>@<``HP$`)%Z
+M!P`"1`0`I7H'``)_!`"M>@<``F$$`-%Z!P`"@@0`Z'H'``$!```!>P<``FX$
+M`%=[!P`"CP0`@GL'``$!``";>P<``FX$`*-[!P`"800`NWL'``)>!`#9>P<`
+M`0$``.=[!P`!`0``_7L'``)N!`#H?`<``0$``/%\!P`"AP0`!7T'``&2!`!O
+M?0<``G\$`'=]!P`"800`F'T'``$!``"T?0<``J\$`,5]!P`"800`#7X'``)A
+M!``:?@<``H($`#]^!P`!`0``1WX'``*'!`!U?@<``H($`+E^!P`!`0``PWX'
+M``$!``#,?@<``H<$`-9^!P`"@P0`\WX'``*/!``$?P<``08```E_!P`"C`0`
+M@'\'``)_!`"S?P<``H\$`,1_!P`!!@``R7\'``*,!`!`@`<``G\$`$."!P`!
+M2@0`7H('``*E!`!T@@<``DH$`-:#!P`"4P0`!(4'``*H!`"EA0<``J\$`-J&
+M!P`!2@0`]88'``*E!``+AP<``DH$`(6'!P`"KP0`WH<'``(G!``PB`<``H<$
+M`):(!P`"AP0`N8@'``*#!``!B0<``J\$`!J)!P`"2`0`3(D'``)S!`#,B@<`
+M`H<$`.J*!P`"?P0``8L'``*H!`!7BP<``0$```^,!P`"9P0`28P'``$!``!0
+MC`<``0$``,",!P`"AP0`5(T'``)!!`#0C0<``K4$`*".!P`"M00`T8X'``*0
+M!`"OCP<``I`$`-R0!P`"8P0`\9`'``**!``#D0<``F4$`#F1!P`"8@0`H)('
+M``)>!`#ED@<``C@$``23!P`"/00`)9,'``)"!`#5DP<``D$$`#&4!P`"000`
+M490'``**!`#`E0<``H\$``"9!P`"M00`GYD'``*U!`!`F@<``K4$`'F<!P`"
+M7@0`%9T'``)"!``CG0<``CT$`#Z=!P`".`0`;YT'``)`!`#MG0<``F4$`"Z>
+M!P`"4P0`4)X'``)3!`!=G@<``E,$`&Z>!P`"900`>IX'``)E!``VGP<``G8$
+M`/6?!P`"-`0`):$'``)$!`!5H0<``D8$`)NA!P`"=@0`L:$'``(T!`#'H0<`
+M`F,$`-ZA!P`"B@0`%J('``$#```_H@<``BP$`+ZB!P`"900`M*,'``)C!``9
+MI`<``D8$`#2D!P`"B@0`W*0'``),!``:I0<``DP$`"RE!P`"3`0`U:4'``(O
+M!`#>I0<``D8$`%2F!P`"*@0`(J<'``)E!``]IP<``88$`,2G!P`";`0`YJ<'
+M``*:!``2J`<``K$$`/NH!P`!`0``'JD'``*O!``.J@<``G\$`!RJ!P`"J`0`
+M:ZH'``)G!`"-J@<``0$``,RJ!P`!`0``U:H'``*'!`#DJ@<``0<``.FJ!P`"
+MK`0`_*H'``$'```%JP<``EH$`!:K!P`"C00`):L'``$'```NJP<``EH$`#BK
+M!P`"CP0`2*L'``$'``!1JP<``EH$`%VK!P`"?P0`EJL'``$'``"=JP<``EH$
+M`-^L!P`"?P0``ZT'``*H!``RK@<``G8$`&>N!P`"<@0`[*\'``)G!``AL`<`
+M`0$``"^P!P`"AP0`@+`'``*H!`#KL`<``F<$`!2Q!P`!`0``&[$'``$!``!%
+ML0<``H<$`&BQ!P`!!P``;;$'``*L!`"4L@<``K4$`,JR!P`"MP0`[K('``)_
+M!`#\L@<``J@$`+.S!P`"AP0`[;,'``*'!`"IM`<``0$``+:T!P`"AP0`"K4'
+M``)_!``MM0<``J@$`/JU!P`"9P0`-K8'``$!``!"M@<``H<$`(.X!P`"9P0`
+MK+@'``$!``"SN`<``0$``->X!P`"AP0`^+@'``$'``#]N`<``JP$`,RY!P`"
+M?P0`"KH'``*H!`!IN@<``H<$`+2Z!P`"?P0`PKH'``*H!`"JNP<``G\$`!.\
+M!P`"9P0`7[P'``$!``!FO`<``0$``'^\!P`"AP0`I+T'``*H!`!OO@<``F<$
+M`*:^!P`!`0``K;X'``$!``"\O@<``H<$`-N^!P`"9P0`#[\'``$!```6OP<`
+M`0$``#>_!P`"AP0`<K\'``)G!`"IOP<``0$``+"_!P`!`0``O[\'``*'!`#9
+MOP<``J@$`&_`!P`"CP0`B\`'``)2!`#'P`<``HX$`-W`!P`"?P0`=\,'``)_
+M!`"DPP<``H\$`%_&!P`"<@0`S,8'``*/!``%R`<``EX$`!O(!P`"7@0`?<@'
+M``)_!`##R`<``G\$``[)!P`"J`0`>LD'``)G!`"LR0<``0$``+_)!P`"AP0`
+MQ,L'``$'``#-RP<``EH$`#7,!P`!`0``5\P'``)N!`!VS`<``0<``'S,!P`"
+M6@0`?,\'``$!``"7SP<``ED$`,_0!P`!`0``8-$'``)L!`"/T0<``0$``+'1
+M!P`";@0`I]('``*/!`"@TP<``G\$`+_3!P`"MP0`*=0'``*W!`"=U`<``K<$
+M`,S4!P`!!P``T]0'``):!``,U0<``G\$`/+6!P`!!P``^-8'``):!`!GUP<`
+M`G\$`(K7!P`"?P0`K=@'``)G!`#UV`<``F<$`%79!P`!`0``7]D'``$!``!H
+MV0<``H<$`"??!P`"7@0`,^`'``)>!`"ZX0<``0<``,#A!P`"6@0`U^$'``$#
+M``#AXP<``0<``.?C!P`"6@0`_N,'``$#```5Y@<``0<``"?F!P`"6@0`BQT(
+M``)V!`"X'0@``G8$`)$?"``"J`0`VB`(``)V!``'(0@``G8$`-8B"``"=@0`
+M`R,(``)V!`"<)@@``0<``*<F"``"6@0`.2@(``*H!`!!*`@``FP$`%@H"``!
+M!P``8R@(``):!`"T*`@``H\$`-HH"``"?P0`J2L(``)_!`#S*P@``0<``/HK
+M"``"6@0`&BP(``)_!`!U+`@``J@$`)HP"``"9P0`XS`(``$!``#J,`@``0$`
+M`/TP"``"AP0`,#$(``$'```[,0@``EH$`(,Z"``"<@0`M3H(``)R!`#6/0@`
+M`0$``.X]"``";@0`!#X(``$'```//@@``EH$`*X^"``";`0`<$`(``)L!`"6
+M0`@``0<``)Q`"``"6@0`+4$(``*H!`!I00@``J@$``9""``"=@0`44((``*H
+M!`#F0@@``0$```%#"``"600`&$,(``$'```C0P@``EH$`$=%"``!`0``9$4(
+M``$!``!\10@``FX$`+E%"``"J`0`U44(``$'``#<10@``EH$`.I%"``"CP0`
+M-$8(``$'```[1@@``EH$``I'"``"?P0`1$<(``)_!`#\1P@``K4$`!I("``"
+ME00`<$@(``)3!`!\2`@``F4$`)M("``!!P``H4@(``):!`"K2`@``JL$`,E(
+M"``"C00`YD@(``*-!`#Z2`@``HT$``Y)"``"C00`*$D(``)@!``Y20@``HT$
+M`%=)"``"7`0`:TD(``*-!`""20@``0<``(A)"``"6@0`QDD(``*P!`#B20@`
+M`IH$`/A)"``!`0``$DH(``*>!``A2@@``0<``"I*"``"6@0`04H(``*$!`!?
+M2@@``K$$`'1*"``!!P``>TH(``):!`!92P@``0<``%]+"``!!P``9$L(``*L
+M!`!X2P@``0<``(%+"``"6@0`DDL(``*-!`"A2P@``0<``*I+"``"6@0`M$L(
+M``*/!`#$2P@``0<``,U+"``"6@0`V4L(``)_!`#]2P@``0<```1,"``"6@0`
+M?TT(``)_!`"C30@``J@$`*Q/"``"9P0`X4\(``$!``#O3P@``H<$`#E0"``"
+MJ`0`IU`(``)G!`#04`@``0$``-=0"``!`0``ZU`(``*'!``040@``0<``!51
+M"``"K`0```````$!```$`````0$```@````!`0``#`````$!```0`````0$`
+M`!0````!`0``&`````$!```<`````0$``"`````!`0``)`````$!```H````
+M`0$``"P````!`0``,`````$!```T`````0$``#@````!`0``/`````$!``!`
+M`````0$``$0````!`0``2`````$!``!,`````0$``%`````!`0``5`````$!
+M``!8`````0$``%P````!`0``8`````$!``!D`````0$``&@````!`0``;```
+M``$!``!P`````0$``'0````!`0``>`````$!``!\`````0$``(`````!`0``
+MA`````$!``"(`````0$``(P````!`0``D`````$!``"4`````0$``)@````!
+M`0``G`````$!``"@`````0$``*0````!`0``J`````$!``"L`````0$``+``
+M```!`0``M`````$!``"X`````0$``+P````!`0``P`````$!``#$`````0$`
+M`,@````!`0``S`````$!``#0`````0$``-0````!`0``V`````$!``#<````
+M`0$``.`````!`0``Y`````$!``#H`````0$``.P````!`0``\`````$!``#T
+M`````0$``/@````!`0``_`````$!`````0```0$```0!```!`0``"`$```$!
+M```,`0```0$``!`!```!`0``%`$```$!```8`0```0$``!P!```!`0``(`$`
+M``$!```D`0```0$``"@!```!`0``+`$```$!```P`0```0$``#0!```!`0``
+M.`$```$!```\`0```0$``$`!```!`0``1`$```$!``!(`0```0$``$P!```!
+M`0``4`$```$!``!4`0```0$``%@!```!`0``7`$```$!``!@`0```0$``&0!
+M```!`0``:`$```$!``!L`0```0$``'`!```!`0``=`$```$!``!X`0```0$`
+M`'P!```!`0``@`$```$!``"$`0```0$``(@!```!`0``C`$```$!``"0`0``
+M`0$``)0!```!`0``F`$```$!``"<`0```0$``*`!```!`0``I`$```$!``"H
+M`0```0$``*P!```!`0``L`$```$!``"T`0```0$``+@!```!`0``O`$```$!
+M``#``0```0$``,0!```!`0``R`$```$!``#,`0```0$``-`!```!`0``U`$`
+M``$!``#8`0```0$``-P!```!`0``X`$```$!``#D`0```0$``.@!```!`0``
+M[`$```$!``#P`0```0$``/0!```!`0``^`$```$!``#\`0```0$````"```!
+M`0``!`(```$!```(`@```0$```P"```!`0``$`(```$!```4`@```0$``!@"
+M```!`0``'`(```$!```@`@```0$``"0"```!`0``*`(```$!```L`@```0$`
+M`#`"```!`0``-`(```$!```X`@```0$``#P"```!`0``0`(```$!``!$`@``
+M`0$``$@"```!`0``3`(```$!``!0`@```0$``%0"```!`0``6`(```$!``!<
+M`@```0$``&`"```!`0``9`(```$!``!H`@```0$``&P"```!`0``<`(```$!
+M``!T`@```0$``'@"```!`0``?`(```$!``"``@```0$``(0"```!`0``B`(`
+M``$!``",`@```0$``)`"```!`0``E`(```$!``"8`@```0$``)P"```!`0``
+MH`(```$!``"D`@```0$``*@"```!`0``K`(```$!``"P`@```0$``+0"```!
+M`0``N`(```$!``"\`@```0$``,`"```!`0``Q`(```$!``#(`@```0$``,P"
+M```!`0``T`(```$!``#4`@```0$``-@"```!`0``W`(```$!``#@`@```0$`
+M`.0"```!`0``Z`(```$!``#L`@```0$``/`"```!`0``]`(```$!``#X`@``
+M`0$``/P"```!`0````,```$!```$`P```0$```@#```!`0``#`,```$!```0
+M`P```0$``!0#```!`0``&`,```$!```<`P```0$``"`#```!`0``)`,```$!
+M```H`P```0$``"P#```!`0``,`,```$!```T`P```0$``#@#```!`0``/`,`
+M``$!``!``P```0$``$0#```!`0``2`,```$!``!,`P```0$``%`#```!`0``
+M5`,```$!``!8`P```0$``%P#```!`0``8`,```$!``!D`P```0$``&@#```!
+M`0``;`,```$!``!P`P```0$``'0#```!`0``>`,```$!``!\`P```0$``(`#
+M```!`0``A`,```$!``"(`P```0$``(P#```!`0``D`,```$!``"4`P```0$`
+M`)@#```!`0``G`,```$!``"@`P```0$``*0#```!`0``J`,```$!``"L`P``
+M`0$``+`#```!`0``M`,```$!``"X`P```0$``+P#```!`0``P`,```$!``#$
+M`P```0$``,@#```!`0``S`,```$!``#0`P```0$``-0#```!`0``V`,```$!
+M``#<`P```0$``.`#```!`0``Y`,```$!``#H`P```0$``.P#```!`0``\`,`
+M``$!``#T`P```0$``/@#```!`0``_`,```$!````!````0$```0$```!`0``
+M"`0```$!```,!````0$``!`$```!`0``%`0```$!```8!````0$``!P$```!
+M`0``(`0```$!```D!````0$``"@$```!`0``+`0```$!```P!````0$``#0$
+M```!`0``.`0```$!```\!````0$``$`$```!`0``1`0```$!``!(!````0$`
+M`$P$```!`0``4`0```$!``!4!````0$``%@$```!`0``7`0```$!``!@!```
+M`0$``&0$```!`0``:`0```$!``!L!````0$``'`$```!`0``=`0```$!``!X
+M!````0$``'P$```!`0``@`0```$!``"$!````0$``(@$```!`0``C`0```$!
+M``"0!````0$``)0$```!`0``F`0```$!``"<!````0$``*`$```!`0``I`0`
+M``$!``"H!````0$``*P$```!`0``L`0```$!``"T!````0$``+@$```!`0``
+MO`0```$!``#`!````0$``,0$```!`0``R`0```$!``#,!````0$``-`$```!
+M`0``U`0```$!``#8!````0$``-P$```!`0``X`0```$!``#D!````0$``.@$
+M```!`0``[`0```$!``#P!````0$``/0$```!`0``^`0```$!``#\!````0$`
+M```%```!`0``!`4```$!```(!0```0$```P%```!`0``$`4```$!```4!0``
+M`0$``!@%```!`0``'`4```$!```@!0```0$``"0%```!`0``*`4```$!```L
+M!0```0$``#`%```!`0``-`4```$!```X!0```0$``#P%```!`0``0`4```$!
+M``!$!0```0$``$@%```!`0``3`4```$!``!0!0```0$``%0%```!`0``6`4`
+M``$!``!<!0```0$``&`%```!`0``9`4```$!``!H!0```0$``&P%```!`0``
+M<`4```$!``!T!0```0$``'@%```!`0``?`4```$!``"`!0```0$``(0%```!
+M`0``B`4```$!``",!0```0$``)`%```!`0``E`4```$!``"8!0```0$``)P%
+M```!`0``H`4```$!``"D!0```0$``*@%```!`0``K`4```$!``"P!0```0$`
+M`+0%```!`0``N`4```$!``"\!0```0$``,`%```!`0``Q`4```$!``#(!0``
+M`0$``,P%```!`0``T`4```$!``#4!0```0$``-@%```!`0``W`4```$!``#@
+M!0```0$``.0%```!`0``Z`4```$!``#L!0```0$``/`%```!`0``]`4```$!
+M``#X!0```0$``/P%```!`0````8```$!```$!@```0$```@&```!`0``#`8`
+M``$!```0!@```0$``!0&```!`0``&`8```$!```<!@```0$``"`&```!`0``
+M)`8```$!```H!@```0$``"P&```!`0``,`8```$!```T!@```0$``#@&```!
+M`0``/`8```$!``!`!@```0$``$0&```!`0``2`8```$!``!,!@```0$``%`&
+M```!`0``5`8```$!``!8!@```0$``%P&```!`0``8`8```$!``!D!@```0$`
+M`&@&```!`0``;`8```$!``!P!@```0$``'0&```!`0``>`8```$!``!\!@``
+M`0$``(`&```!`0``A`8```$!``"(!@```0$``(P&```!`0``D`8```$!``"4
+M!@```0$``)@&```!`0``G`8```$!``"@!@```0$``*0&```!`0``J`8```$!
+M``"L!@```0$``+`&```!`0``M`8```$!``"X!@```0$``+P&```!`0``P`8`
+M``$!``#$!@```0$``,@&```!`0``S`8```$!``#0!@```0$``-0&```!`0``
+MV`8```$!``#<!@```0$``.`&```!`0``Y`8```$!``#H!@```0$``.P&```!
+M`0``\`8```$!``#T!@```0$``/@&```!`0``_`8```$!````!P```0$```0'
+M```!`0``"`<```$!```,!P```0$``!`'```!`0``%`<```$!```8!P```0$`
+M`!P'```!`0``(`<```$!```D!P```0$``"@'```!`0``+`<```$!```P!P``
+M`0$``#0'```!`0``.`<```$!```\!P```0$``$`'```!`0``1`<```$!``!(
+M!P```0$``$P'```!`0``4`<```$!``!4!P```0$``%@'```!`0``7`<```$!
+M``!@!P```0$``&0'```!`0``:`<```$!``!L!P```0$``'`'```!`0``=`<`
+M``$!``!X!P```0$``'P'```!`0``@`<```$!``"$!P```0$``(@'```!`0``
+MC`<```$!``"0!P```0$``)0'```!`0``F`<```$!``"<!P```0$``*`'```!
+M`0``I`<```$!``"H!P```0$``*P'```!`0``L`<```$!``"T!P```0$``+@'
+M```!`0``O`<```$!``#`!P```0$``,0'```!`0``R`<```$!``#,!P```0$`
+M`-`'```!`0``U`<```$!``#8!P```0$``-P'```!`0``X`<```$!``#D!P``
+M`0$``.@'```!`0``[`<```$!```D"````0$``"@(```!`0``+`@```$!```P
+M"````0$``#0(```!`0``.`@```$!```\"````0$``$`(```!`0``1`@```$!
+M``!("````0$``$P(```!`0``4`@```$!``!4"````0$``%@(```!`0``7`@`
+M``$!``!@"````0$``&0(```!`0``:`@```$!``!L"````0$``'`(```!`0``
+M=`@```$!``!X"````0$``'P(```!`0``@`@```$!``"$"````0$``(@(```!
+M`0``C`@```$!``"0"````0$``)0(```!`0``F`@```$!``"<"````0$``*`(
+M```!`0``I`@```$!``"H"````0$``*P(```!`0``L`@```$!``"T"````0$`
+M`+@(```!`0``O`@```$!``#`"````0$``,0(```!`0``R`@```$!``#,"```
+M`0$``-`(```!`0``U`@```$!``#8"````0$``-P(```!`0``X`@```$!``#D
+M"````0$``.@(```!`0``[`@```$!``#P"````0$``/0(```!`0``^`@```$!
+M``#\"````0$````)```!`0``!`D```$!```("0```0$```P)```!`0``$`D`
+M``$!```4"0```0$``!@)```!`0``'`D```$!```@"0```0$``"0)```!`0``
+M*`D```$!```L"0```0$``#`)```!`0``-`D```$!```X"0```0$``#P)```!
+M`0``0`D```$!``!$"0```0$``$@)```!`0``3`D```$!``!0"0```0$``%0)
+M```!`0``6`D```$!``!<"0```0$``&`)```!`0``9`D```$!``!H"0```0$`
+M`&P)```!`0``<`D```$!``!T"0```0$``'@)```!`0``?`D```$!``"`"0``
+M`0$``(0)```!`0``B`D```$!``","0```0$``)`)```!`0``E`D```$!``"8
+M"0```0$``)P)```!`0``H`D```$!``"D"0```0$``*@)```!`0``K`D```$!
+M``"P"0```0$``+0)```!`0``N`D```$!``"\"0```0$``,`)```!`0``Q`D`
+M``$!``#("0```0$``,P)```!`0``T`D```$!``#4"0```0$``-@)```!`0``
+MW`D```$!``#@"0```0$``.0)```!`0``Z`D```$!``#L"0```0$``/`)```!
+M`0``]`D```$!``#X"0```0$``/P)```!`0````H```$!```$"@```0$```@*
+M```!`0``#`H```$!```0"@```0$``!0*```!`0``&`H```$!```<"@```0$`
+M`"`*```!`0``)`H```$!```H"@```0$``"P*```!`0``,`H```$!```T"@``
+M`0$``#@*```!`0``/`H```$!``!`"@```0$``$0*```!`0``2`H```$!``!,
+M"@```0$``%`*```!`0``5`H```$!``!8"@```0$``%P*```!`0``8`H```$!
+M``!D"@```0$``&@*```!`0``;`H```$!``!P"@```0$``'0*```!`0``>`H`
+M``$!``!\"@```0$``(`*```!`0``A`H```$!``"("@```0$``(P*```!`0``
+MD`H```$!``"4"@```0$``)@*```!`0``G`H```$!``"@"@```0$``*0*```!
+M`0``J`H```$!``"L"@```0$``+`*```!`0``M`H```$!``"X"@```0$``+P*
+M```!`0``P`H```$!``#$"@```0$``,@*```!`0``S`H```$!``#0"@```0$`
+M`-0*```!`0``V`H```$!``#<"@```0$``.`*```!`0``Y`H```$!``#H"@``
+M`0$``.P*```!`0``\`H```$!``#T"@```0$``/@*```!`0``_`H```$!````
+M"P```0$```0+```!`0``"`L```$!```,"P```0$``!`+```!`0``%`L```$!
+M```8"P```0$``!P+```!`0``(`L```$!```D"P```0$``"@+```!`0``+`L`
+M``$!```P"P```0$``#0+```!`0``.`L```$!```\"P```0$``$`+```!`0``
+M1`L```$!``!("P```0$``$P+```!`0``4`L```$!``!4"P```0$``%@+```!
+M`0``7`L```$!``!@"P```0$``&0+```!`0``:`L```$!``!L"P```0$``'`+
+M```!`0``=`L```$!``!X"P```0$``'P+```!`0``@`L```$!``"$"P```0$`
+M`(@+```!`0``C`L```$!``"0"P```0$``)0+```!`0``F`L```$!``"<"P``
+M`0$``*`+```!`0``I`L```$!``"H"P```0$``*P+```!`0``L`L```$!``"T
+M"P```0$``+@+```!`0``O`L```$!``#`"P```0$``,0+```!`0``R`L```$!
+M``#,"P```0$``-`+```!`0``U`L```$!``#8"P```0$``-P+```!`0``X`L`
+M``$!``#D"P```0$``.@+```!`0``[`L```$!``#P"P```0$``/0+```!`0``
+M^`L```$!``#\"P```0$````,```!`0``!`P```$!```(#````0$```P,```!
+M`0``$`P```$!```4#````0$``!@,```!`0``'`P```$!```@#````0$``"0,
+M```!`0``*`P```$!```L#````0$``#`,```!`0``-`P```$!```X#````0$`
+M`#P,```!`0``0`P```$!``!$#````0$``$@,```!`0``3`P```$!``!0#```
+M`0$``%0,```!`0``6`P```$!``!<#````0$``&`,```!`0``9`P```$!``!H
+M#````0$``&P,```!`0``<`P```$!``!T#````0$``'@,```!`0``?`P```$!
+M``"`#````0$``(0,```!`0``B`P```$!``",#````0$``)`,```!`0``E`P`
+M``$!``"8#````0$``)P,```!`0``H`P```$!``"D#````0$``*@,```!`0``
+MK`P```$!``"P#````0$``+0,```!`0``N`P```$!``"\#````0$``,`,```!
+M`0``Q`P```$!``#(#````0$``,P,```!`0``T`P```$!``#4#````0$``-@,
+M```!`0``W`P```$!``#@#````0$``.0,```!`0``Z`P```$!``#L#````0$`
+M`/`,```!`0``]`P```$!``#X#````0$``/P,```!`0````T```$!```$#0``
+M`0$```@-```!`0``#`T```$!```0#0```0$``!0-```!`0``&`T```$!```<
+M#0```0$``"`-```!`0``)`T```$!```H#0```0$``"P-```!`0``,`T```$!
+M```T#0```0$``#@-```!`0``/`T```$!``!`#0```0$``$0-```!`0``2`T`
+M``$!``!,#0```0$``%`-```!`0``5`T```$!``!8#0```0$``%P-```!`0``
+M8`T```$!``!D#0```0$``&@-```!`0``;`T```$!``!P#0```0$``'0-```!
+M`0``>`T```$!``!\#0```0$``(`-```!`0``A`T```$!``"(#0```0$``(P-
+M```!`0``D`T```$!``"4#0```0$``)@-```!`0``G`T```$!``"@#0```0$`
+M`*0-```!`0``J`T```$!``"L#0```0$``+`-```!`0``M`T```$!``"X#0``
+M`0$``+P-```!`0``P`T```$!``#$#0```0$``,@-```!`0``S`T```$!``#0
+M#0```0$``-0-```!`0``V`T```$!``#<#0```0$``.`-```!`0``Y`T```$!
+M``#H#0```0$``.P-```!`0``\`T```$!``#T#0```0$``/@-```!`0``_`T`
+M``$!````#@```0$```0.```!`0``"`X```$!```,#@```0$``!`.```!`0``
+M%`X```$!```8#@```0$``!P.```!`0``(`X```$!```D#@```0$``"@.```!
+M`0``+`X```$!```P#@```0$``#0.```!`0``.`X```$!```\#@```0$``$`.
+M```!`0``1`X```$!``!(#@```0$``$P.```!`0``4`X```$!``!4#@```0$`
+M`%@.```!`0``7`X```$!``!@#@```0$``&0.```!`0``:`X```$!``!L#@``
+M`0$``'`.```!`0``=`X```$!``!X#@```0$``'P.```!`0``@`X```$!``"$
+M#@```0$``(@.```!`0``C`X```$!``"0#@```0$``)0.```!`0``F`X```$!
+M``"<#@```0$``*`.```!`0``I`X```$!``"H#@```0$``*P.```!`0``L`X`
+M``$!``"T#@```0$``+@.```!`0``O`X```$!``#`#@```0$``,0.```!`0``
+MR`X```$!``#,#@```0$``-`.```!`0``U`X```$!``#8#@```0$``-P.```!
+M`0``X`X```$!``#D#@```0$``.@.```!`0``[`X```$!``#P#@```0$``/0.
+M```!`0``^`X```$!``#\#@```0$````/```!`0``!`\```$!```(#P```0$`
+M``P/```!`0``$`\```$!```4#P```0$``!@/```!`0``'`\```$!```@#P``
+M`0$``"0/```!`0``*`\```$!```L#P```0$``#`/```!`0``-`\```$!```X
+M#P```0$``#P/```!`0``0`\```$!``!$#P```0$``$@/```!`0``3`\```$!
+M``!0#P```0$``%0/```!`0``6`\```$!``!<#P```0$``&`/```!`0``9`\`
+M``$!``!H#P```0$``&P/```!`0``<`\```$!``!T#P```0$``'@/```!`0``
+M?`\```$!``"`#P```0$``(0/```!`0``B`\```$!``",#P```0$``)`/```!
+M`0``E`\```$!``"8#P```0$``)P/```!`0``H`\```$!``"D#P```0$``*@/
+M```!`0``K`\```$!``"P#P```0$``+0/```!`0``N`\```$!``"\#P```0$`
+M`,`/```!`0``Q`\```$!``#(#P```0$``,P/```!`0``T`\```$!``#4#P``
+M`0$``-@/```!`0``W`\```$!``#@#P```0$``.0/```!`0``Z`\```$!``#L
+M#P```0$``/`/```!`0``]`\```$!``#X#P```0$``/P/```!`0```!````$!
+M```$$````0$```@0```!`0``#!````$!```0$````0$``!00```!`0``&!``
+M``$!```<$````0$``"`0```!`0``)!````$!```H$````0$``"P0```!`0``
+M,!````$!```T$````0$``#@0```!`0``7!````$!``!@$````0$``&00```!
+M`0``:!````$!``!L$````0$``'`0```!`0``=!````$!``!X$````0$``'P0
+M```!`0``@!````$!``"$$````0$``(@0```!`0``C!````$!``"0$````0$`
+M`)00```!`0``F!````$!``"<$````0$``*`0```!`0``I!````$!``"H$```
+M`0$``*P0```!`0``L!````$!``"T$````0$``+@0```!`0``O!````$!``#`
+M$````0$``,00```!`0``R!````$!``#,$````0$``-`0```!`0``U!````$!
+M``#8$````0$``-P0```!`0``X!````$!``#D$````0$``.@0```!`0``[!``
+M``$!``#P$````0$``/00```!`0``^!````$!``#\$````0$````1```!`0``
+M!!$```$!```($0```0$```P1```!`0``$!$```$!```4$0```0$``!@1```!
+M`0``'!$```$!```@$0```0$``"01```!`0``*!$```$!```L$0```0$``#`1
+M```!`0``-!$```$!```X$0```0$``#P1```!`0``0!$```$!``!$$0```0$`
+M`$@1```!`0``3!$```$!``!0$0```0$``%01```!`0``6!$```$!``!<$0``
+M`0$``&`1```!`0``9!$```$!``!H$0```0$``&P1```!`0``<!$```$!``!T
+M$0```0$``'@1```!`0``?!$```$!``"`$0```0$``(01```!`0``B!$```$!
+M``",$0```0$``)`1```!`0``E!$```$!``"8$0```0$``)P1```!`0``H!$`
+M``$!``"D$0```0$``*@1```!`0``K!$```$!``"P$0```0$``+01```!`0``
+MN!$```$!``"\$0```0$``,`1```!`0``Q!$```$!``#($0```0$``,P1```!
+M`0``T!$```$!``#4$0```0$``-@1```!`0``W!$```$!``#@$0```0$``.01
+M```!`0``Z!$```$!``#L$0```0$``/`1```!`0``]!$```$!``#X$0```0$`
+M`/P1```!`0```!(```$!```$$@```0$```@2```!`0``#!(```$!```0$@``
+M`0$``!02```!`0``&!(```$!```<$@```0$``"`2```!`0``)!(```$!```H
+M$@```0$``"P2```!`0``,!(```$!```T$@```0$``#@2```!`0``/!(```$!
+M``!`$@```0$``$02```!`0``2!(```$!``!,$@```0$``%`2```!`0``5!(`
+M``$!``!8$@```0$``%P2```!`0``8!(```$!``!D$@```0$``&@2```!`0``
+M;!(```$!``!P$@```0$``'02```!`0``>!(```$!``!\$@```0$``(`2```!
+M`0``A!(```$!``"($@```0$``(P2```!`0``D!(```$!``"4$@```0$``)@2
+M```!`0``G!(```$!``"@$@```0$``*02```!`0``J!(```$!``"L$@```0$`
+M`+`2```!`0``M!(```$!``"X$@```0$``+P2```!`0``P!(```$!``#$$@``
+M`0$``,@2```!`0``S!(```$!``#0$@```0$``-02```!`0``V!(```$!``#<
+M$@```0$``.`2```!`0``Y!(```$!``#H$@```0$``.P2```!`0``\!(```$!
+M``#T$@```0$``/@2```!`0``_!(```$!````$P```0$```03```!`0``"!,`
+M``$!```,$P```0$``!`3```!`0``%!,```$!```8$P```0$``!P3```!`0``
+M(!,```$!```D$P```0$``"@3```!`0``+!,```$!```P$P```0$``#03```!
+M`0``.!,```$!```\$P```0$``$`3```!`0``1!,```$!``!($P```0$``$P3
+M```!`0``4!,```$!``!4$P```0$``%@3```!`0``7!,```$!``!@$P```0$`
+M`&03```!`0``:!,```$!``!L$P```0$``'`3```!`0``=!,```$!``!X$P``
+M`0$``'P3```!`0``@!,```$!``"$$P```0$``(@3```!`0``C!,```$!``"0
+M$P```0$``)03```!`0``F!,```$!``"<$P```0$``*`3```!`0``I!,```$!
+M``"H$P```0$``*P3```!`0``L!,```$!``"T$P```0$``+@3```!`0``O!,`
+M``$!``#`$P```0$``,03```!`0``R!,```$!``#,$P```0$``-`3```!`0``
+MU!,```$!``#8$P```0$``-P3```!`0``X!,```$!``#D$P```0$``.@3```!
+M`0``[!,```$!``#P$P```0$``/03```!`0``^!,```$!``#\$P```0$````4
+M```!`0``!!0```$!```(%````0$```P4```!`0``$!0```$!```4%````0$`
+M`!@4```!`0``'!0```$!```@%````0$``"04```!`0``*!0```$!```L%```
+M`0$``#`4```!`0``-!0```$!```X%````0$``#P4```!`0``0!0```$!``!$
+M%````0$``$@4```!`0``3!0```$!``!0%````0$``%04```!`0``6!0```$!
+M``!<%````0$``&`4```!`0``9!0```$!``!H%````0$``&P4```!`0``<!0`
+M``$!``!T%````0$``'@4```!`0``?!0```$!``"`%````0$``(04```!`0``
+MB!0```$!``",%````0$``)`4```!`0``E!0```$!``"8%````0$``)P4```!
+M`0``H!0```$!``"D%````0$``*@4```!`0``K!0```$!``"P%````0$``+04
+M```!`0``N!0```$!``"\%````0$``,`4```!`0``Q!0```$!``#(%````0$`
+M`,P4```!`0``T!0```$!``#4%````0$``-@4```!`0``W!0```$!``#@%```
+M`0$``.04```!`0``Z!0```$!``#L%````0$``/`4```!`0``]!0```$!``#X
+M%````0$``/P4```!`0```!4```$!```$%0```0$```@5```!`0``#!4```$!
+M```0%0```0$``!05```!`0``&!4```$!```<%0```0$``"`5```!`0``)!4`
+M``$!```H%0```0$``"P5```!`0``,!4```$!```T%0```0$``#@5```!`0``
+M/!4```$!``!`%0```0$``$05```!`0``2!4```$!``!,%0```0$``%`5```!
+M`0``5!4```$!``!8%0```0$``%P5```!`0``8!4```$!``!D%0```0$``&@5
+M```!`0``;!4```$!``!P%0```0$``'05```!`0``>!4```$!``!\%0```0$`
+M`(`5```!`0``A!4```$!``"(%0```0$``(P5```!`0``D!4```$!``"4%0``
+M`0$``)@5```!`0``G!4```$!``"@%0```0$``*05```!`0``J!4```$!``"L
+M%0```0$``+`5```!`0``M!4```$!``"X%0```0$``+P5```!`0``P!4```$!
+M``#$%0```0$``,@5```!`0``S!4```$!``#0%0```0$``-05```!`0``V!4`
+M``$!``#<%0```0$``.`5```!`0``Y!4```$!``#H%0```0$``.P5```!`0``
+M\!4```$!``#T%0```0$``/@5```!`0``_!4```$!````%@```0$```06```!
+M`0``"!8```$!```,%@```0$``!`6```!`0``%!8```$!```8%@```0$``!P6
+M```!`0``(!8```$!```D%@```0$``"@6```!`0``+!8```$!```P%@```0$`
+M`#06```!`0``.!8```$!```\%@```0$``$`6```!`0``1!8```$!``!(%@``
+M`0$``$P6```!`0``4!8```$!``!4%@```0$``%@6```!`0``7!8```$!``!@
+M%@```0$``&06```!`0``:!8```$!``!L%@```0$``'`6```!`0``=!8```$!
+M``!X%@```0$``'P6```!`0``@!8```$!``"$%@```0$``(@6```!`0``C!8`
+M``$!``"0%@```0$``)06```!`0``F!8```$!``"<%@```0$``*`6```!`0``
+MI!8```$!``"H%@```0$``*P6```!`0``L!8```$!``"T%@```0$``+@6```!
+M`0``O!8```$!``#`%@```0$``,06```!`0``R!8```$!``#,%@```0$``-`6
+M```!`0``U!8```$!``#8%@```0$``-P6```!`0``X!8```$!``#D%@```0$`
+M`.@6```!`0``[!8```$!``#P%@```0$``/06```!`0``^!8```$!``#\%@``
+M`0$````7```!`0``!!<```$!```(%P```0$```P7```!`0``$!<```$!```4
+M%P```0$``!@7```!`0``'!<```$!```@%P```0$``"07```!`0``*!<```$!
+M```L%P```0$``#`7```!`0``-!<```$!```X%P```0$``#P7```!`0``0!<`
+M``$!``!$%P```0$``$@7```!`0``3!<```$!``!0%P```0$``%07```!`0``
+M6!<```$!``!<%P```0$``&`7```!`0``9!<```$!``!H%P```0$``&P7```!
+M`0``<!<```$!``!T%P```0$``'@7```!`0``?!<```$!``"`%P```0$``(07
+M```!`0``B!<```$!``",%P```0$``)`7```!`0``E!<```$!``"8%P```0$`
+M`)P7```!`0``H!<```$!``"D%P```0$``*@7```!`0``K!<```$!``"P%P``
+M`0$``+07```!`0``N!<```$!``"\%P```0$``,`7```!`0``Q!<```$!``#(
+M%P```0$``,P7```!`0``T!<```$!``#4%P```0$``-@7```!`0``W!<```$!
+M``#@%P```0$``.07```!`0``Z!<```$!``#L%P```0$``/`7```!`0``]!<`
+M``$!``#X%P```0$``/P7```!`0```!@```$!```$&````0$```@8```!`0``
+M#!@```$!```0&````0$``!08```!`0``&!@```$!```<&````0$``"`8```!
+M`0``)!@```$!```H&````0$``"P8```!`0``,!@```$!```T&````0$``#@8
+M```!`0``/!@```$!``!`&````0$``$08```!`0``2!@```$!``!,&````0$`
+M`%`8```!`0``5!@```$!``!8&````0$``%P8```!`0``8!@```$!``!D&```
+M`0$``&@8```!`0``;!@```$!``!P&````0$``)08```!`0``F!@```$!``"<
+M&````0$``*`8```!`0``I!@```$!``"H&````0$``*P8```!`0``L!@```$!
+M``"T&````0$``+@8```!`0``P!@```$!``#$&````0$``,@8```!`0``S!@`
+M``$!``#0&````0$``-08```!`0``V!@```$!``#<&````0$``.`8```!`0``
+MY!@```$!``#H&````0$``.P8```!`0``\!@```$!``#T&````0$``/@8```!
+M`0``_!@```$!````&0```0$```09```!`0``"!D```$!```,&0```0$``!`9
+M```!`0``%!D```$!```8&0```0$``!P9```!`0``(!D```$!```D&0```0$`
+M`"@9```!`0``+!D```$!```P&0```0$``#09```!`0``.!D```$!```\&0``
+M`0$``$`9```!`0``1!D```$!``!(&0```0$``$P9```!`0``4!D```$!``!4
+M&0```0$``%@9```!`0``7!D```$!``!@&0```0$``&09```!`0``:!D```$!
+M``!L&0```0$``'`9```!`0``=!D```$!``!X&0```0$``'P9```!`0``@!D`
+M``$!``"$&0```0$``(@9```!`0``C!D```$!``"0&0```0$``)09```!`0``
+MF!D```$!``"<&0```0$``*`9```!`0``I!D```$!``"H&0```0$``*P9```!
+M`0``L!D```$!``"T&0```0$``+@9```!`0``O!D```$!``#`&0```0$``,09
+M```!`0``R!D```$!``#,&0```0$``-`9```!`0``U!D```$!``#8&0```0$`
+M`-P9```!`0``X!D```$!``#D&0```0$``.@9```!`0``[!D```$!``#P&0``
+M`0$``/09```!`0``^!D```$!``#\&0```0$````:```!`0``!!H```$!```(
+M&@```0$```P:```!`0``$!H```$!```4&@```0$``!@:```!`0``'!H```$!
+M```@&@```0$``"0:```!`0``*!H```$!```L&@```0$``#`:```!`0``-!H`
+M``$!```X&@```0$``#P:```!`0``0!H```$!``!$&@```0$``$@:```!`0``
+M3!H```$!``!0&@```0$``%0:```!`0``6!H```$!``!<&@```0$``&`:```!
+M`0``9!H```$!``!H&@```0$``&P:```!`0``<!H```$!``!T&@```0$``'@:
+M```!`0``?!H```$!``"`&@```0$``(0:```!`0``B!H```$!``",&@```0$`
+M`)`:```!`0``E!H```$!``"8&@```0$``)P:```!`0``H!H```$!``"D&@``
+M`0$``*@:```!`0``K!H```$!``"P&@```0$``+0:```!`0``N!H```$!``"\
+M&@```0$``,`:```!`0``Q!H```$!``#(&@```0$``,P:```!`0``T!H```$!
+M``#4&@```0$``-@:```!`0``W!H```$!``#@&@```0$``.0:```!`0``Z!H`
+M``$!``#L&@```0$``/`:```!`0``]!H```$!``#X&@```0$``/P:```!`0``
+M`!L```$!```$&P```0$```@;```!`0``#!L```$!```0&P```0$``!0;```!
+M`0``&!L```$!```<&P```0$``"`;```!`0``)!L```$!```H&P```0$``"P;
+M```!`0``,!L```$!```T&P```0$``#@;```!`0``/!L```$!``!`&P```0$`
+M`$0;```!`0``2!L```$!``!,&P```0$``%`;```!`0``5!L```$!``!8&P``
+M`0$``%P;```!`0``8!L```$!``!D&P```0$``&@;```!`0``;!L```$!``!P
+M&P```0$``'0;```!`0``>!L```$!``!\&P```0$``(`;```!`0``A!L```$!
+M``"(&P```0$``(P;```!`0``D!L```$!``"4&P```0$``)@;```!`0``G!L`
+M``$!``"@&P```0$``*0;```!`0``J!L```$!``"L&P```0$``+`;```!`0``
+MM!L```$!``"X&P```0$``+P;```!`0``P!L```$!``#$&P```0$``,@;```!
+M`0``S!L```$!``#0&P```0$``-0;```!`0``V!L```$!``#<&P```0$``.`;
+M```!`0``Y!L```$!``#H&P```0$``.P;```!`0``\!L```$!``#T&P```0$`
+M`/@;```!`0``_!L```$!````'````0$```0<```!`0``"!P```$!```,'```
+M`0$``!`<```!`0``%!P```$!```8'````0$``!P<```!`0``(!P```$!```D
+M'````0$``"@<```!`0``+!P```$!```P'````0$``#0<```!`0``.!P```$!
+M```\'````0$``$`<```!`0``1!P```$!``!('````0$``$P<```!`0``4!P`
+M``$!``!4'````0$``%@<```!`0``7!P```$!``!@'````0$``&0<```!`0``
+M:!P```$!``!L'````0$``'`<```!`0``=!P```$!``!X'````0$``'P<```!
+M`0``@!P```$!``"$'````0$``(@<```!`0``C!P```$!``"0'````0$``)0<
+M```!`0``F!P```$!``"<'````0$``*`<```!`0``I!P```$!``"H'````0$`
+M`*P<```!`0``L!P```$!``"T'````0$``+@<```!`0``O!P```$!``#`'```
+M`0$``,0<```!`0``R!P```$!``#,'````0$``-`<```!`0``U!P```$!``#8
+M'````0$``-P<```!`0``X!P```$!``#D'````0$``.@<```!`0``[!P```$!
+M``#P'````0$``/0<```!`0``^!P```$!``#\'````0$````=```!`0``!!T`
+M``$!```('0```0$```P=```!`0``$!T```$!```4'0```0$``!@=```!`0``
+M'!T```$!```@'0```0$``"0=```!`0``*!T```$!```L'0```0$``#`=```!
+M`0``-!T```$!```X'0```0$``#P=```!`0``0!T```$!``!$'0```0$``$@=
+M```!`0``3!T```$!``!0'0```0$``%0=```!`0``6!T```$!``!<'0```0$`
+M`&`=```!`0``9!T```$!``!H'0```0$``&P=```!`0``<!T```$!``!T'0``
+M`0$``'@=```!`0``?!T```$!``"`'0```0$``(0=```!`0``B!T```$!``",
+M'0```0$``)`=```!`0``E!T```$!``"8'0```0$``)P=```!`0``H!T```$!
+M``"D'0```0$``*@=```!`0``K!T```$!``"P'0```0$``+0=```!`0``N!T`
+M``$!``"\'0```0$``,`=```!`0``Q!T```$!``#('0```0$``,P=```!`0``
+MT!T```$!``#4'0```0$``-@=```!`0``W!T```$!``#@'0```0$``.0=```!
+M`0``Z!T```$!``#L'0```0$``/`=```!`0``]!T```$!``#X'0```0$``/P=
+M```!`0```!X```$!```$'@```0$```@>```!`0``#!X```$!```0'@```0$`
+M`!0>```!`0``&!X```$!```<'@```0$``"`>```!`0``)!X```$!```H'@``
+M`0$``"P>```!`0``,!X```$!```T'@```0$``#@>```!`0``/!X```$!``!`
+M'@```0$``$0>```!`0``2!X```$!``!,'@```0$``%`>```!`0``5!X```$!
+M``!8'@```0$``%P>```!`0``8!X```$!``!D'@```0$``&@>```!`0``;!X`
+M``$!``!P'@```0$``'0>```!`0``>!X```$!``!\'@```0$``(`>```!`0``
+MA!X```$!``"('@```0$``(P>```!`0``D!X```$!``"4'@```0$``)@>```!
+M`0``G!X```$!``"@'@```0$``*0>```!`0``J!X```$!``"L'@```0$``+`>
+M```!`0``M!X```$!``"X'@```0$``+P>```!`0``P!X```$!``#$'@```0$`
+M`,@>```!`0``S!X```$!``#0'@```0$``-0>```!`0``V!X```$!``#<'@``
+M`0$``.`>```!`0``Y!X```$!``#H'@```0$``.P>```!`0``\!X```$!``#T
+M'@```0$``/@>```!`0``_!X```$!````'P```0$```0?```!`0``"!\```$!
+M```,'P```0$``!`?```!`0``%!\```$!```8'P```0$``!P?```!`0``(!\`
+M``$!```D'P```0$``"@?```!`0``+!\```$!```P'P```0$``#0?```!`0``
+M.!\```$!```\'P```0$``$`?```!`0``1!\```$!``!('P```0$``$P?```!
+M`0``4!\```$!``!4'P```0$``%@?```!`0``7!\```$!``!@'P```0$``&0?
+M```!`0``:!\```$!``!L'P```0$``'`?```!`0``=!\```$!``!X'P```0$`
+M`'P?```!`0``@!\```$!``"$'P```0$``(@?```!`0``C!\```$!``"0'P``
+M`0$``)0?```!`0``F!\```$!``"<'P```0$``*`?```!`0``I!\```$!``"H
+M'P```0$``*P?```!`0``L!\```$!``"T'P```0$``+@?```!`0``O!\```$!
+M``#`'P```0$``,0?```!`0``R!\```$!``#,'P```0$``-`?```!`0``U!\`
+M``$!``#8'P```0$``-P?```!`0``X!\```$!``#D'P```0$``.@?```!`0``
+M[!\```$!``#P'P```0$``/0?```!`0``^!\```$!``#\'P```0$````@```!
+M`0``!"````$!```((````0$```P@```!`0``$"````$!```4(````0$``!@@
+M```!`0``'"````$!```@(````0$``"0@```!`0``*"````$!```L(````0$`
+M`#`@```!`0``-"````$!```X(````0$``#P@```!`0``0"````$!``!$(```
+M`0$``$@@```!`0``3"````$!``!0(````0$``%0@```!`0``6"````$!``!<
+M(````0$``&`@```!`0``9"````$!``!H(````0$``&P@```!`0``<"````$!
+M``!T(````0$``'@@```!`0``?"````$!``"`(````0$``(0@```!`0``B"``
+M``$!``",(````0$``)`@```!`0``E"````$!``"8(````0$``)P@```!`0``
+MH"````$!``"D(````0$``*@@```!`0``K"````$!``#D(````0$``.@@```!
+M`0``["````$!``#P(````0$``/0@```!`0``^"````$!``#\(````0$````A
+M```!`0``!"$```$!```((0```0$```PA```!`0``$"$```$!```4(0```0$`
+M`!@A```!`0``'"$```$!```@(0```0$``"0A```!`0``*"$```$!```L(0``
+M`0$``#`A```!`0``-"$```$!```X(0```0$``#PA```!`0``0"$```$!``!$
+M(0```0$``$@A```!`0``5"$```$!``!8(0```0$``%PA```!`0``8"$```$!
+M``!D(0```0$``&@A```!`0``;"$```$!``!P(0```0$``'0A```!`0``>"$`
+M``$!``!\(0```0$``(`A```!`0``A"$```$!``"((0```0$``(PA```!`0``
+MD"$```$!``"4(0```0$``)@A```!`0``G"$```$!``"@(0```0$``*0A```!
+M`0``J"$```$!``"L(0```0$``+`A```!`0``M"$```$!``"X(0```0$``+PA
+M```!`0``P"$```$!``#$(0```0$``,@A```!`0``S"$```$!``#0(0```0$`
+M`-0A```!`0``V"$```$!``#<(0```0$``.`A```!`0``Y"$```$!``#H(0``
+M`0$``.PA```!`0``\"$```$!``#T(0```0$``/@A```!`0``_"$```$!````
+M(@```0$```0B```!`0``""(```$!```,(@```0$``!`B```!`0``%"(```$!
+M```8(@```0$``!PB```!`0``("(```$!```D(@```0$``"@B```!`0``+"(`
+M``$!```P(@```0$``#0B```!`0``."(```$!```\(@```0$``$`B```!`0``
+M1"(```$!``!((@```0$``$PB```!`0``4"(```$!``!4(@```0$``%@B```!
+M`0``7"(```$!``!@(@```0$``&0B```!`0``:"(```$!``!L(@```0$``'`B
+M```!`0``="(```$!``!X(@```0$``'PB```!`0``@"(```$!``"$(@```0$`
+M`(@B```!`0``C"(```$!``"0(@```0$``)0B```!`0``F"(```$!``"<(@``
+M`0$``*`B```!`0``I"(```$!``"H(@```0$``*PB```!`0``L"(```$!``"T
+M(@```0$``+@B```!`0``O"(```$!``#`(@```0$``,0B```!`0``R"(```$!
+M``#,(@```0$``-`B```!`0``U"(```$!``#8(@```0$``-PB```!`0``X"(`
+M``$!``#D(@```0$``.@B```!`0``["(```$!``#P(@```0$``/0B```!`0``
+M^"(```$!``#\(@```0$````C```!`0``!",```$!```((P```0$```PC```!
+M`0``$",```$!```4(P```0$``!@C```!`0``'",```$!```@(P```0$``"0C
+M```!`0``*",```$!```L(P```0$``#`C```!`0``-",```$!```X(P```0$`
+M`#PC```!`0``0",```$!``!$(P```0$``$@C```!`0``3",```$!``!0(P``
+M`0$``%0C```!`0``6",```$!``!<(P```0$``&`C```!`0``9",```$!``!H
+M(P```0$``&PC```!`0``<",```$!``!T(P```0$``'@C```!`0``?",```$!
+M``"`(P```0$``(0C```!`0``P`4```$&``#,!0```0$``-`%```!`0``U`4`
+M``$!``#8!0```0$``-P%```!`0``X`4```$!``#D!0```0$``.@%```!`0``
+M[`4```$!``#P!0```0$``/0%```!`0``^`4```$!``#\!0```0$````&```!
+MM@``!`8```$!```(!@```0$```P&```!`0``$`8```$!```4!@```0$``!@&
+M```!`0``'`8```$!```@!@```0$``"0&```!`0``*`8```$!```L!@```0$`
+M`#`&```!`0``-`8```$!```X!@```0$``#P&```!!P$`1`8```$!``!(!@``
+M`0$``$P&```!`0``4`8```$!``!4!@```>@``*`+```!!@``K`L```$!``"P
+M"P```0$``+0+```!`0``N`L```$!``"\"P```0$``,`+```!`0``Q`L```$!
+M``#("P```0$``,P+```!`0``T`L```$!``#4"P```0$``-@+```!`0``W`L`
+M``$!``#@"P```=D!`.0+```!`0``Z`L```$!``#L"P```0$``/`+```!`0``
+M]`L```$!``#X"P```0$``/P+```!`0````P```$!```$#````0$```@,```!
+M`0``#`P```$!```0#````0$``!0,```!`0``&`P```$!```<#````4T!`"`,
+M```!`0``)`P```$!```H#````0$``"P,```!`0``,`P```$!```T#````7@!
+M`(`1```!!@``C!$```$!``"0$0```0$``)01```!`0``F!$```$!``"<$0``
+M`0$``*`1```!`0``I!$```$!``"H$0```0$``*P1```!`0``L!$```$!``"T
+M$0```0$``+@1```!`0``O!$```$!``#`$0```9\"`,01```!`0``R!$```$!
+M``#,$0```0$``-`1```!`0``U!$```$!``#8$0```0$``-P1```!`0``X!$`
+M``$!``#D$0```0$``.@1```!`0``[!$```$!``#P$0```0$``/01```!`0``
+M^!$```$!``#\$0```<X"```2```!`0``!!(```$!```($@```0$```P2```!
+M`0``$!(```$!```4$@```=("`(`7```!!@``C!<```$!``"0%P```0$``)07
+M```!`0``F!<```$!``"<%P```0$``*`7```!`0``I!<```$!``"H%P```0$`
+M`*P7```!`0``L!<```$!``"T%P```0$``+@7```!`0``O!<```$!``#`%P``
+M`;<#`,07```!`0``R!<```$!``#,%P```0$``-`7```!`0``U!<```$!``#8
+M%P```0$``-P7```!`0``X!<```$!``#D%P```0$``.@7```!`0``[!<```$!
+M``#P%P```0$``/07```!`0``^!<```$!``#\%P```78#```8```!`0``!!@`
+M``$!```(&````0$```P8```!`0``$!@```$!```4&````50#`%P8```!`0``
+M8!@```$!``!D&````0$``'`8```!`0``=!@```$!``!X&````0$``*08```!
+M`0``K!@```$!``"X&````0$``,`8```!`0``S!@```$!``#4&````0$``.`8
+M```!`0``Z!@```$!``#T&````0$``/P8```!`0``"!D```$!```0&0```0$`
+M`!P9```!`0``)!D```$!```P&0```0$``#09```!`0``.!D```$!``!$&0``
+M`0$``$@9```!`0``3!D```$!``!8&0```0$``&`9```!`0``;!D```$!``!T
+M&0```0$``(`9```!`0``A!D```$!``"(&0```0$``)09```!`0``F!D```$!
+M``"<&0```0$``*@9```!`0``K!D```$!``"P&0```0$``+P9```!`0``P!D`
+M``$!``#$&0```0$``-`9```!`0``U!D```$!``#8&0```0$``.09```!`0``
+M[!D```$!``#X&0```0$````:```!`0``#!H```$!```4&@```0$``"`:```!
+M`0``*!H```$!```T&@```0$``#P:```!`0``2!H```$!``!0&@```0$``%P:
+M```!`0``9!H```$!``!P&@```0$``'@:```!`0``A!H```$!``",&@```0$`
+M`)@:```!`0``H!H```$!``"L&@```0$``+`:```!`0``M!H```$!``#`&@``
+M`0$``,0:```!`0``R!H```$!``#4&@```0$``-P:```!`0``Z!H```$!``#P
+M&@```0$``/P:```!`0``!!L```$!```0&P```0$``!@;```!`0``)!L```$!
+M```L&P```0$``#@;```!`0``/!L```$!``!`&P```0$``$P;```!`0``5!L`
+M``$!``!@&P```0$``&0;```!`0``:!L```$!``!T&P```0$``'P;```!`0``
+MB!L```$!``",&P```0$``)`;```!`0``G!L```$!``"D&P```0$``+`;```!
+M`0``N!L```$!``#$&P```0$``,P;```!`0``V!L```$!``#<&P```0$``.`;
+M```!`0``[!L```$!``#P&P```0$``/0;```!`0```!P```$!```('````0$`
+M`!0<```!`0``'!P```$!```H'````0$``#`<```!`0``/!P```$!``!$'```
+M`0$``%`<```!`0``6!P```$!``!D'````0$``&P<```!`0``>!P```$!``"`
+M'````0$``(P<```!`0``E!P```$!``"@'````0$``*0<```!`0``J!P```$!
+M``"T'````0$``+P<```!`0``R!P```$!``#0'````0$``-P<```!`0``Y!P`
+M``$!``#P'````0$``/@<```!`0``0!T```$!``!$'0```0$``)P=```!`0``
+MH!T```$!``"D'0```94$`*@=```!`0``K!T```$!````'@```0$```0>```!
+ME00`7!X```$!``!@'@```0$``&0>```!`0``:!X```$!``!L'@```0$``'`>
+M```!`0``=!X```$!``!X'@```0$``'P>```!`0``O!X```$!``#`'@```0$`
+9`,0>```!E00`R!X```$!``#,'@```0$`````
+`
+end
diff --git a/sys/dev/hpt27xx/ldm.h b/sys/dev/hpt27xx/ldm.h
new file mode 100644
index 0000000..d3b5e61
--- /dev/null
+++ b/sys/dev/hpt27xx/ldm.h
@@ -0,0 +1,533 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+
+#ifndef _HPT_LDM_H_
+#define _HPT_LDM_H_
+
+#define VERMAGIC_LDM 75
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+
+#define __hpt_set_ver(x, v1, v2, v3, v4, v5) x ## _R_ ## v1 ## _ ## v2 ## _ ## v3 ## _ ## v4 ## _ ## v5
+#define _hpt_set_ver(x, v1, v2, v3, v4, v5) __hpt_set_ver(x, v1, v2, v3, v4, v5)
+#define hpt_set_ver(x) _hpt_set_ver(x, VERMAGIC_OSM, VERMAGIC_HIM, VERMAGIC_LDM, VERMAGIC_ARRAY, MAX_MEMBERS)
+
+#define ldm_register_him hpt_set_ver(ldm_register_him)
+#define ldm_register_vdev_class hpt_set_ver(ldm_register_vdev_class)
+#define ldm_alloc_cmds hpt_set_ver(ldm_alloc_cmds)
+
+
+#ifndef HPT_INTERFACE_VERSION
+#define HPT_INTERFACE_VERSION 0x02010000
+#endif
+
+#ifndef MAX_PARTITIONS_PER_DISK
+#define MAX_PARTITIONS_PER_DISK 4
+#endif
+
+#if defined(__MAX_PARTITIONS_PER_DISK) && MAX_PARTITIONS_PER_DISK > __MAX_PARTITIONS_PER_DISK
+#error "Please redefine MAX_PARTITIONS_PER_DISK!!!"
+#endif
+
+#define MAX(a,b) (((a)>(b))?(a):(b))
+#define MIN(a,b) (((a)<(b))?(a):(b))
+
+
+typedef char check_HPT_TIME_is_unsigned[ (HPT_TIME)(-1) > 0 ? 1 : -1 ];
+
+#define hpt_time_after_eq(a, b) ((int)(a) - (int)(b) >= 0)
+#define hpt_time_after(a, b) ((int)(a) - (int)(b) > 0)
+
+
+
+struct freelist {
+ int dma;
+ HPT_UINT alignment;
+ HPT_UINT count;
+ HPT_UINT size;
+ void * head;
+ struct freelist *next;
+#if DBG
+ char *tag;
+ HPT_UINT reserved_count;
+ #define freelist_debug_tag(list, _tag) (list)->tag = _tag
+#else
+ #define freelist_debug_tag(list, _tag)
+#endif
+};
+
+
+void freelist_reserve(struct freelist *list, void *osext, HPT_UINT size, HPT_UINT count);
+
+void *freelist_get(struct freelist *);
+void freelist_put(struct freelist *, void *p);
+
+void freelist_reserve_dma(struct freelist *list, void *osext, HPT_UINT size, HPT_UINT alignment, HPT_UINT count);
+void *freelist_get_dma(struct freelist *, BUS_ADDRESS *busaddr);
+void freelist_put_dma(struct freelist *, void *p, BUS_ADDRESS busaddr);
+
+
+#define freelist_reserve_with_tag(list, osext, size, count) \
+ do {\
+ freelist_debug_tag(list, #list " at " __FILE__);\
+ freelist_reserve(list, osext, (HPT_UINT)(size), (HPT_UINT)(count));\
+ }while(0)
+
+#define freelist_reserve_dma_with_tag(list, osext, size, alignment, count) \
+ do {\
+ freelist_debug_tag(list, #list " at " __FILE__);\
+ freelist_reserve_dma(list, osext, (HPT_UINT)(size), (HPT_UINT)(alignment), (HPT_UINT)(count));\
+ }while(0)
+
+struct lock_request {
+ HPT_U64 start, end;
+ struct lock_request *next;
+ struct list_head waiters; /* blocked commands */
+ struct tq_item callback;
+ int lock_cc;
+};
+
+#define INIT_LOCK_REQUEST(req, _start, _end, _cb, _arg, _cc) \
+ do {\
+ (req)->next = 0;\
+ (req)->start = _start;\
+ (req)->end = _end;\
+ INIT_TQ_ITEM(&(req)->callback, _cb, _arg);\
+ INIT_LIST_HEAD(&(req)->waiters);\
+ (req)->lock_cc = _cc;\
+ } while (0)
+
+struct task_queue {
+ struct tq_item *head, *tail;
+};
+
+#define TQ_EMPTY(tq) ((tq)->head==0)
+
+struct dmapool_order {
+ HPT_UINT npages;
+ struct tq_item wakeup_fn;
+ struct dmapool_order *next;
+};
+
+struct dmapool_client {
+ void * handle;
+ HPT_UINT (*shrink)(void *handle, HPT_UINT npages);
+ int (*resume)(void *handle);
+ struct dmapool_client *next;
+};
+
+typedef struct _VBUS * PVBUS;
+typedef struct _VDEV * PVDEV;
+
+
+void dmapool_register_client(PVBUS vbus, struct dmapool_client *client);
+
+
+void dmapool_active(PVBUS vbus);
+
+/* return 0 if the request is immediately satisfied, non-zero otherwise. */
+int dmapool_make_order(PVBUS vbus, struct dmapool_order *order);
+
+
+void *dmapool_get_page(PVBUS vbus, BUS_ADDRESS *busaddr);
+void *dmapool_get_page_at(PVBUS vbus, void *p, BUS_ADDRESS *busaddr);
+void dmapool_put_page(PVBUS vbus, void *p, BUS_ADDRESS busaddr);
+void dmapool_init(PVBUS vbus);
+HPT_UINT dmapool_max_class_pages(PVBUS vbus);
+
+
+struct timer_call {
+ HPT_U32 interval; /*microseconds*/
+ HPT_TIME expire_time; /*microseconds*/
+ void (*proc)(void * arg);
+ void * arg;
+ struct timer_call ** pprev;
+ struct timer_call * next;
+};
+
+#define ldm_init_timer(timer) do { (timer)->next=0; (timer)->pprev=0; } while (0)
+
+#define INIT_TIMER_CALL(timer, _interval, _proc, _arg) \
+ do { \
+ HPT_ASSERT((timer)->next==0 && (timer)->pprev==0);\
+ (timer)->interval = _interval;\
+ (timer)->proc = _proc;\
+ (timer)->arg = _arg;\
+ } while(0)
+
+void ldm_request_timer(PVBUS vbus, struct timer_call * tc);
+void ldm_remove_timer(PVBUS vbus, struct timer_call * tc);
+void ldm_on_timer(PVBUS vbus);
+
+
+typedef struct _LDM_ADAPTER
+{
+ struct _LDM_ADAPTER *next;
+ HIM *him;
+ void *him_handle;
+ PVBUS vbus;
+ struct freelist freelist_dev;
+ int devid_start;
+ struct freelist freelist_plugged_dpc;
+ HPT_BOOL master;
+}
+LDM_ADAPTER, *PLDM_ADAPTER;
+
+typedef struct _IOCTL_ARG
+{
+ struct list_head link;
+ PVBUS vbus;
+ HPT_U32 dwIoControlCode;
+ HPT_U32 nInBufferSize;
+ HPT_U32 nOutBufferSize;
+ void * lpInBuffer;
+ void * lpOutBuffer;
+ HPT_U32 *lpBytesReturned;
+ void * ioctl_cmnd;
+ void (* done)(struct _IOCTL_ARG *);
+ int result; /* HPT_IOCTL_RESULT_ */
+ struct tq_item dpc;
+} IOCTL_ARG;
+
+#define HPT_IOCTL_RESULT_OK 0
+#define HPT_IOCTL_RESULT_FAILED (-1)
+#define HPT_IOCTL_RESULT_INVALID (-2)
+#define HPT_IOCTL_RESULT_RETRY (-3)
+#define HPT_IOCTL_RESULT_WRONG_VBUS (-4)
+
+void ldm_ioctl( PVBUS vbus, IOCTL_ARG *IAPnt);
+void ldm_set_autorebuild(PVBUS vbus, int enable);
+HPT_U32 ldm_get_device_id(PVDEV vd); /* for ioctl */
+
+#ifndef __HPT_RAW_LBA
+#define __HPT_RAW_LBA HPT_RAW_LBA
+#endif
+
+#include <dev/hpt27xx/array.h>
+
+typedef struct hpt_raw_disk
+{
+#ifdef SUPPORT_ARRAY
+ PRAW_PARTITION raw_part_list;
+ __HPT_RAW_LBA max_available_capacity;
+ __HPT_RAW_LBA total_available_capacity;
+#endif
+ __HPT_RAW_LBA real_capacity;
+ __HPT_RAW_LBA head_position;
+
+ HPT_U16 max_sectors_per_cmd;
+ HPT_U8 max_queue_depth;
+ HPT_U8 user_select_mode;
+
+ HPT_UINT uninitialized : 1;
+ HPT_UINT legacy_disk : 1;
+ HPT_UINT is_spare : 1;
+ HPT_UINT v3_format : 1;
+ HPT_UINT need_sync : 1;
+ HPT_UINT temp_spare : 1;
+ HPT_UINT need_check_array : 1;
+ HPT_UINT df_user_mode_set: 1;
+
+ HPT_UINT df_read_ahead_set: 1;
+ HPT_UINT enable_read_ahead : 1;
+ HPT_UINT df_write_cache_set: 1;
+ HPT_UINT enable_write_cache : 1;
+ HPT_UINT df_tcq_set: 1;
+ HPT_UINT enable_tcq : 1;
+ HPT_UINT df_ncq_set: 1;
+ HPT_UINT enable_ncq : 1;
+
+ HIM * him;
+ int index;
+ PLDM_ADAPTER adapter;
+ void * phy_dev;
+
+ char model[40];
+
+ struct tq_item reset_dpc;
+ int reset_pending;
+
+ struct tq_item fail_dpc;
+ int fail_pending;
+}
+HPT_RAW_DISK, *PHPT_RAW_DISK;
+
+struct vdev_class
+{
+ struct vdev_class *next;
+
+ HPT_U8 __type;
+ HPT_U8 stripped; /* RAID0,3,5,6 */
+ HPT_U8 redundancy; /* RAID1-1, RAID3/5-1, RAID6-2 */
+ HPT_U8 must_init; /* RAID3,5,6 */
+ HPT_U8 docache;
+
+ HPT_UINT vbus_ext_size;
+ HPT_UINT vbus_ext_offset; /* used by LDM */
+ HPT_UINT dev_ext_size;
+ HPT_UINT cmd_ext_size;
+
+
+ void (*get_mem_info)(PVBUS vbus, void *osext, int phydev_count);
+ void (*queue_cmd)(PCOMMAND cmd);
+ void (*member_failed)(struct _VDEV * vd);
+
+
+ void (*initialize)(PVBUS vbus);
+ void (*release)(PVBUS vbus);
+ int (*add)(PVDEV vd);
+ void (*remove)(PVDEV vd);
+ void (*reset)(PVDEV vd);
+ void (*sync_stamp)(PVDEV vd);
+ int (*support_type)(int type);
+};
+
+
+#define VDEV_CLASS_CONSTRUCTOR(type, prefix) { \
+ 0, \
+ type, \
+ prefix ## _stripped, \
+ prefix ## _redundancy, \
+ prefix ## _must_init, \
+ 0, \
+ (HPT_UINT)(prefix ## _vbus_ext_size), \
+ 0, \
+ (HPT_UINT)(prefix ## _dev_ext_size), \
+ (HPT_UINT)(prefix ## _cmd_ext_size), \
+ prefix ## _get_mem_info, \
+ prefix ## _queue_cmd, \
+ prefix ## _member_failed, \
+ prefix ## _initialize, \
+ prefix ## _release, \
+ prefix ## _add, \
+ prefix ## _remove, \
+ prefix ## _reset, \
+ prefix ## _sync_stamp, \
+ 0 \
+}
+
+#define VD_RAW 1
+#define VD_PARTITION 4
+
+#define mIsArray(vdev_type) ((vdev_type)>VD_PARTITION)
+
+#define VD_RAID0 5
+#define VD_RAID1 6
+#define VD_JBOD 7
+#define VD_RAID5 8
+#define VD_RAID6 9
+#define VD_RAID3 10
+#define VD_RAID4 11
+#define VD_RAID1E 12
+
+#define MAX_VD_TYPE_ID 12
+
+struct vdev_class *ldm_find_vdev_class(HPT_U8 type);
+
+typedef struct _VDEV {
+ PVBUS vbus;
+ struct vdev_class *Class;
+ HPT_U8 type;
+ PVDEV parent;
+ void * ext;
+ HPT_U64 capacity;
+ int target_id;
+ HPT_UINT cmds_per_request;
+
+ union {
+#ifdef SUPPORT_ARRAY
+ HPT_ARRAY array;
+ HPT_PARTITION partition;
+#endif
+ HPT_RAW_DISK raw;
+ } u;
+
+ HPT_U8 vf_online : 1;
+ HPT_U8 vf_bootmark : 1;
+ HPT_U8 vf_bootable : 1;
+ HPT_U8 vf_resetting: 1;
+ HPT_U8 vf_quiesced: 1;
+ HPT_U8 vf_clslock: 1;
+
+ HPT_U8 cache_policy; /* see CACHE_POLICY_* */
+
+ HPT_UINT cq_len;
+ HPT_UINT cmds_sent;
+
+ struct list_head link;
+ struct list_head cq_wait_send;
+ struct list_head cq_sent;
+
+ HPT_U32 last_active;
+ int cq_priority;
+ struct list_head cq_wait_lock;
+ struct lock_request *locks_granted;
+ struct lock_request *locks_wait;
+ HPT_U32 ioctl_id;
+ void * cc_ext;
+}
+VDEV;
+
+#define CACHE_POLICY_NONE 0
+#define CACHE_POLICY_WRITE_THROUGH 1
+#define CACHE_POLICY_WRITE_BACK 2
+
+
+extern HIM *him_list;
+
+
+void ldm_register_him(PHIM him);
+
+
+void ldm_register_vdev_class(struct vdev_class *Class);
+
+
+HPT_BOOL ldm_register_adapter(PLDM_ADAPTER adapter);
+
+
+int init_config(void);
+
+HPT_UINT ldm_get_vbus_size(void);
+
+
+void ldm_create_vbus(PVBUS vbus, void *osext);
+
+
+void ldm_get_mem_info(PVBUS vbus, void *osext);
+
+
+void *ldm_get_vbus_ext(PVBUS vbus, struct vdev_class *Class);
+
+
+PVBUS ldm_get_next_vbus(PVBUS vbus, void **posext);
+
+#define ldm_for_each_vbus(vbus, vbus_ext) \
+ for (vbus = ldm_get_next_vbus(0, (void **)(void *)&vbus_ext); vbus; \
+ vbus = ldm_get_next_vbus(vbus, (void **)(void *)&vbus_ext))
+
+
+void ldm_initialize_vbus_async(PVBUS vbus, PLDM_ADAPTER master_adapter, void (*done)(void *osext));
+
+/* ldm_initialize_vbus is deprecated since it will hold the CPU too long. */
+#define ldm_initialize_vbus(vbus, adapter) ldm_initialize_vbus_async(vbus, adapter, 0)
+
+
+void ldm_release_vbus(PVBUS vbus);
+
+PVDEV ldm_create_vdev(PVBUS vbus, HPT_U8 type);
+void ldm_release_vdev(PVDEV vd);
+
+PVDEV ldm_find_target(PVBUS vbus, int id);
+PVDEV ldm_find_stamp(PVBUS vbus, HPT_U32 stamp, int seq);
+
+
+PCOMMAND ldm_alloc_cmds(PVBUS vbus, HPT_UINT cnt);
+void ldm_free_cmds(PCOMMAND cmd);
+
+HPT_UINT ldm_get_cmd_size(void);
+PCOMMAND ldm_alloc_cmds_from_list(PVBUS vbus, struct freelist *list, HPT_UINT cnt);
+void ldm_free_cmds_to_list(struct freelist *list, PCOMMAND cmd);
+
+
+PCOMMAND __ldm_alloc_cmd(struct freelist *list);
+
+#ifdef OS_SUPPORT_TASK
+#define CMD_SET_PRIORITY(cmd, pri) cmd->priority = (pri)
+#else
+#define CMD_SET_PRIORITY(cmd, pri)
+#endif
+
+
+#define CMD_GROUP_GET(grp, cmd) \
+ do {\
+ grp->grplist->count++;\
+ cmd = __ldm_alloc_cmd(grp->grplist);\
+ cmd->vbus = grp->vbus;\
+ cmd->grplist = grp->grplist;\
+ CMD_SET_PRIORITY(cmd, grp->priority);\
+ } while(0)
+
+#define CMD_GROUP_PUT(grp, cmd) \
+ do {\
+ freelist_put(grp->grplist, cmd);\
+ grp->grplist->count--;\
+ } while (0)
+
+
+
+
+void ldm_queue_cmd(PCOMMAND cmd);
+void vdev_queue_cmd(PCOMMAND cmd);
+void ldm_finish_cmd(PCOMMAND cmd);
+
+
+int ldm_acquire_lock(PVDEV vd, struct lock_request *req);
+void ldm_release_lock(PVDEV vd, struct lock_request *req);
+
+void ldm_queue_task(struct task_queue *tq, struct tq_item *t);
+void ldm_queue_vbus_dpc(PVBUS vbus, struct tq_item *t);
+
+HPT_BOOL ldm_intr(PVBUS vbus);
+void ldm_run(PVBUS vbus);
+int ldm_idle(PVBUS vbus);
+
+
+int ldm_reset_vbus(PVBUS vbus);
+
+
+void ldm_suspend(PVBUS vbus);
+void ldm_resume(PVBUS vbus);
+void ldm_shutdown(PVBUS vbus);/*shutdown all the controllers*/
+
+
+#define HIM_EVENT_DEVICE_REMOVED 1
+#define HIM_EVENT_DEVICE_PLUGGED 2
+#define HIM_EVENT_DEVICE_ERROR 3
+#define HIM_EVENT_RESET_REQUIRED 4
+#define HIM_EVENT_QUIESCE_DEVICE 5
+#define HIM_EVENT_UNQUIESCE_DEVICE 6
+#define HIM_EVENT_CONFIG_CHANGED 7
+
+void ldm_event_notify(HPT_U32 event, void *arg1, void *arg2);
+
+void log_sector_repair(PVDEV vd, int success, HPT_LBA lba, HPT_U16 nsectors);
+
+void ldm_register_device(PVDEV vd);
+void ldm_unregister_device(PVDEV vd);
+
+PVBUS him_handle_to_vbus(void * him_handle);
+void ldm_ide_fixstring (HPT_U8 *s, const int bytecount);
+#if defined(__cplusplus)
+}
+#endif
+#endif
diff --git a/sys/dev/hpt27xx/list.h b/sys/dev/hpt27xx/list.h
new file mode 100644
index 0000000..cae0767
--- /dev/null
+++ b/sys/dev/hpt27xx/list.h
@@ -0,0 +1,130 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+
+#ifndef _HPT_LIST_H_
+#define _HPT_LIST_H_
+
+#ifndef _LINUX_LIST_H
+
+#ifndef HPT_INLINE
+#define HPT_INLINE __inline
+#endif
+
+struct list_head {
+ struct list_head *next, *prev;
+};
+
+#define INIT_LIST_HEAD(ptr) do { (ptr)->next = (ptr); (ptr)->prev = (ptr); } while (0)
+
+static HPT_INLINE void __list_add(struct list_head * _new, struct list_head * prev, struct list_head * next)
+{
+ next->prev = _new;
+ _new->next = next;
+ _new->prev = prev;
+ prev->next = _new;
+}
+
+static HPT_INLINE void list_add(struct list_head *_new, struct list_head *head)
+{
+ __list_add(_new, head, head->next);
+}
+
+static HPT_INLINE void list_add_tail(struct list_head *_new, struct list_head *head)
+{
+ __list_add(_new, head->prev, head);
+}
+
+static HPT_INLINE void __list_del(struct list_head * prev, struct list_head * next)
+{
+ next->prev = prev;
+ prev->next = next;
+}
+
+static HPT_INLINE void list_del(struct list_head *entry)
+{
+ __list_del(entry->prev, entry->next);
+}
+
+static HPT_INLINE void list_del_init(struct list_head *entry)
+{
+ __list_del(entry->prev, entry->next);
+ INIT_LIST_HEAD(entry);
+}
+
+static HPT_INLINE int list_empty(struct list_head *head)
+{
+ HPT_ASSERT(!(head->next==head && head->prev!=head));
+ return head->next == head;
+}
+
+static HPT_INLINE void __list_splice(struct list_head *list,
+ struct list_head *head)
+{
+ struct list_head *first = list->next;
+ struct list_head *last = list->prev;
+ struct list_head *at = head->next;
+
+ first->prev = head;
+ head->next = first;
+
+ last->next = at;
+ at->prev = last;
+}
+
+static HPT_INLINE void list_splice(struct list_head *list, struct list_head *head)
+{
+ if (!list_empty(list))
+ __list_splice(list, head);
+}
+
+static HPT_INLINE void list_splice_init(struct list_head *list, struct list_head *head)
+{
+ if (!list_empty(list)) {
+ __list_splice(list, head);
+ INIT_LIST_HEAD(list);
+ }
+}
+
+#define list_entry(ptr, type, member) \
+ ((type *)((char *)(ptr)-(HPT_UPTR)(&((type *)0)->member)))
+
+#define list_for_each(pos, head) \
+ for (pos = (head)->next; pos != (head); pos = pos->next)
+
+#define list_for_each_safe(pos, n, head) \
+ for (pos = (head)->next, n = pos->next; pos != (head); \
+ pos = n, n = pos->next)
+
+#define get_first_item(attached, type, member) \
+ ((type *)((char *)((attached)->next)-(HPT_UPTR)(&((type *)0)->member)))
+
+#endif
+
+#endif
diff --git a/sys/dev/hpt27xx/os_bsd.c b/sys/dev/hpt27xx/os_bsd.c
new file mode 100644
index 0000000..43f8116
--- /dev/null
+++ b/sys/dev/hpt27xx/os_bsd.c
@@ -0,0 +1,370 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+
+#include <dev/hpt27xx/os_bsd.h>
+
+/* hardware access */
+HPT_U8 os_inb (void *port) { return inb((unsigned)(HPT_UPTR)port); }
+HPT_U16 os_inw (void *port) { return inw((unsigned)(HPT_UPTR)port); }
+HPT_U32 os_inl (void *port) { return inl((unsigned)(HPT_UPTR)port); }
+
+void os_outb (void *port, HPT_U8 value) { outb((unsigned)(HPT_UPTR)port, (value)); }
+void os_outw (void *port, HPT_U16 value) { outw((unsigned)(HPT_UPTR)port, (value)); }
+void os_outl (void *port, HPT_U32 value) { outl((unsigned)(HPT_UPTR)port, (value)); }
+
+void os_insw (void *port, HPT_U16 *buffer, HPT_U32 count)
+{ insw((unsigned)(HPT_UPTR)port, (void *)buffer, count); }
+
+void os_outsw(void *port, HPT_U16 *buffer, HPT_U32 count)
+{ outsw((unsigned)(HPT_UPTR)port, (void *)buffer, count); }
+
+HPT_U32 __dummy_reg = 0;
+
+/* PCI configuration space */
+HPT_U8 os_pci_readb (void *osext, HPT_U8 offset)
+{
+ return pci_read_config(((PHBA)osext)->pcidev, offset, 1);
+}
+
+HPT_U16 os_pci_readw (void *osext, HPT_U8 offset)
+{
+ return pci_read_config(((PHBA)osext)->pcidev, offset, 2);
+}
+
+HPT_U32 os_pci_readl (void *osext, HPT_U8 offset)
+{
+ return pci_read_config(((PHBA)osext)->pcidev, offset, 4);
+}
+
+void os_pci_writeb (void *osext, HPT_U8 offset, HPT_U8 value)
+{
+ pci_write_config(((PHBA)osext)->pcidev, offset, value, 1);
+}
+
+void os_pci_writew (void *osext, HPT_U8 offset, HPT_U16 value)
+{
+ pci_write_config(((PHBA)osext)->pcidev, offset, value, 2);
+}
+
+void os_pci_writel (void *osext, HPT_U8 offset, HPT_U32 value)
+{
+ pci_write_config(((PHBA)osext)->pcidev, offset, value, 4);
+}
+
+#if __FreeBSD_version < 500043
+/* PCI space access */
+HPT_U8 pcicfg_read_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg)
+{
+ HPT_U8 v;
+ pcicfgregs pciref;
+
+ pciref.bus = bus;
+ pciref.slot = dev;
+ pciref.func = func;
+
+ v = pci_cfgread(&pciref, reg, 1);
+ return v;
+}
+HPT_U32 pcicfg_read_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg)
+{
+ HPT_U32 v;
+ pcicfgregs pciref;
+
+ pciref.bus = bus;
+ pciref.slot = dev;
+ pciref.func = func;
+
+ v = pci_cfgread(&pciref, reg, 4);
+ return v;
+}
+void pcicfg_write_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U8 v)
+{
+ pcicfgregs pciref;
+
+ pciref.hose = -1;
+ pciref.bus = bus;
+ pciref.slot = dev;
+ pciref.func = func;
+
+ pci_cfgwrite(&pciref, reg, v, 1);
+}
+void pcicfg_write_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U32 v)
+{
+ pcicfgregs pciref;
+
+ pciref.hose = -1;
+ pciref.bus = bus;
+ pciref.slot = dev;
+ pciref.func = func;
+
+ pci_cfgwrite(&pciref, reg, v, 4);
+}/* PCI space access */
+#else
+HPT_U8 pcicfg_read_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg)
+{
+ return (HPT_U8)pci_cfgregread(bus, dev, func, reg, 1);
+}
+HPT_U32 pcicfg_read_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg)
+{
+ return (HPT_U32)pci_cfgregread(bus, dev, func, reg, 4);;
+}
+void pcicfg_write_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U8 v)
+{
+ pci_cfgregwrite(bus, dev, func, reg, v, 1);
+}
+void pcicfg_write_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U32 v)
+{
+ pci_cfgregwrite(bus, dev, func, reg, v, 4);
+}/* PCI space access */
+#endif
+
+void *os_map_pci_bar(
+ void *osext,
+ int index,
+ HPT_U32 offset,
+ HPT_U32 length
+)
+{
+ PHBA hba = (PHBA)osext;
+ HPT_U32 base;
+
+ hba->pcibar[index].rid = 0x10 + index * 4;
+ base = pci_read_config(hba->pcidev, hba->pcibar[index].rid, 4);
+
+ if (base & 1) {
+ hba->pcibar[index].type = SYS_RES_IOPORT;
+ hba->pcibar[index].res = bus_alloc_resource(hba->pcidev,
+ hba->pcibar[index].type, &hba->pcibar[index].rid, 0, ~0, length, RF_ACTIVE);
+ hba->pcibar[index].base = (void *)(unsigned long)(base & ~0x1);
+ } else {
+ hba->pcibar[index].type = SYS_RES_MEMORY;
+ hba->pcibar[index].res = bus_alloc_resource(hba->pcidev,
+ hba->pcibar[index].type, &hba->pcibar[index].rid, 0, ~0, length, RF_ACTIVE);
+ hba->pcibar[index].base = (char *)rman_get_virtual(hba->pcibar[index].res) + offset;
+ }
+
+ return hba->pcibar[index].base;
+}
+
+void os_unmap_pci_bar(void *osext, void *base)
+{
+ PHBA hba = (PHBA)osext;
+ int index;
+
+ for (index=0; index<6; index++) {
+ if (hba->pcibar[index].base==base) {
+ bus_release_resource(hba->pcidev, hba->pcibar[index].type,
+ hba->pcibar[index].rid, hba->pcibar[index].res);
+ hba->pcibar[index].base = 0;
+ return;
+ }
+ }
+}
+
+void freelist_reserve(struct freelist *list, void *osext, HPT_UINT size, HPT_UINT count)
+{
+ PVBUS_EXT vbus_ext = osext;
+
+ if (vbus_ext->ext_type!=EXT_TYPE_VBUS)
+ vbus_ext = ((PHBA)osext)->vbus_ext;
+
+ list->next = vbus_ext->freelist_head;
+ vbus_ext->freelist_head = list;
+ list->dma = 0;
+ list->size = size;
+ list->head = 0;
+#if DBG
+ list->reserved_count =
+#endif
+ list->count = count;
+}
+
+void *freelist_get(struct freelist *list)
+{
+ void * result;
+ if (list->count) {
+ HPT_ASSERT(list->head);
+ result = list->head;
+ list->head = *(void **)result;
+ list->count--;
+ return result;
+ }
+ return 0;
+}
+
+void freelist_put(struct freelist * list, void *p)
+{
+ HPT_ASSERT(list->dma==0);
+ list->count++;
+ *(void **)p = list->head;
+ list->head = p;
+}
+
+void freelist_reserve_dma(struct freelist *list, void *osext, HPT_UINT size, HPT_UINT alignment, HPT_UINT count)
+{
+ PVBUS_EXT vbus_ext = osext;
+
+ if (vbus_ext->ext_type!=EXT_TYPE_VBUS)
+ vbus_ext = ((PHBA)osext)->vbus_ext;
+
+ list->next = vbus_ext->freelist_dma_head;
+ vbus_ext->freelist_dma_head = list;
+ list->dma = 1;
+ list->alignment = alignment;
+ list->size = size;
+ list->head = 0;
+#if DBG
+ list->reserved_count =
+#endif
+ list->count = count;
+}
+
+void *freelist_get_dma(struct freelist *list, BUS_ADDRESS *busaddr)
+{
+ void *result;
+ HPT_ASSERT(list->dma);
+ result = freelist_get(list);
+ if (result)
+ *busaddr = *(BUS_ADDRESS *)((void **)result+1);
+ return result;
+}
+
+void freelist_put_dma(struct freelist *list, void *p, BUS_ADDRESS busaddr)
+{
+ HPT_ASSERT(list->dma);
+ list->count++;
+ *(void **)p = list->head;
+ *(BUS_ADDRESS *)((void **)p+1) = busaddr;
+ list->head = p;
+}
+
+HPT_U32 os_get_stamp(void)
+{
+ HPT_U32 stamp;
+ do { stamp = random(); } while (stamp==0);
+ return stamp;
+}
+
+void os_stallexec(HPT_U32 microseconds)
+{
+ DELAY(microseconds);
+}
+
+static void os_timer_for_ldm(void *arg)
+{
+ PVBUS_EXT vbus_ext = (PVBUS_EXT)arg;
+ ldm_on_timer((PVBUS)vbus_ext->vbus);
+}
+
+void os_request_timer(void * osext, HPT_U32 interval)
+{
+ PVBUS_EXT vbus_ext = osext;
+
+ HPT_ASSERT(vbus_ext->ext_type==EXT_TYPE_VBUS);
+
+ untimeout(os_timer_for_ldm, vbus_ext, vbus_ext->timer);
+ vbus_ext->timer = timeout(os_timer_for_ldm, vbus_ext, interval * hz / 1000000);
+}
+
+HPT_TIME os_query_time(void)
+{
+ return ticks * (1000000 / hz);
+}
+
+void os_schedule_task(void *osext, OSM_TASK *task)
+{
+ PVBUS_EXT vbus_ext = osext;
+
+ HPT_ASSERT(task->next==0);
+
+ if (vbus_ext->tasks==0)
+ vbus_ext->tasks = task;
+ else {
+ OSM_TASK *t = vbus_ext->tasks;
+ while (t->next) t = t->next;
+ t->next = task;
+ }
+
+ if (vbus_ext->worker.ta_context)
+ TASK_ENQUEUE(&vbus_ext->worker);
+}
+
+int os_revalidate_device(void *osext, int id)
+{
+
+ return 0;
+}
+
+int os_query_remove_device(void *osext, int id)
+{
+ PVBUS_EXT vbus_ext = (PVBUS_EXT)osext;
+ struct cam_periph *periph = NULL;
+ struct cam_path *path;
+ int status,retval = 0;
+
+ status = xpt_create_path(&path, NULL, vbus_ext->sim->path_id, id, 0);
+ if (status == CAM_REQ_CMP) {
+ if((periph = cam_periph_find(path, "da")) != NULL){
+ if(periph->refcount >= 1)
+ retval = -1;
+ }
+ xpt_free_path(path);
+ }
+
+ return retval;
+}
+
+HPT_U8 os_get_vbus_seq(void *osext)
+{
+ return ((PVBUS_EXT)osext)->sim->path_id;
+}
+
+int os_printk(char *fmt, ...)
+{
+ va_list args;
+ static char buf[512];
+
+ va_start(args, fmt);
+ vsnprintf(buf, sizeof(buf), fmt, args);
+ va_end(args);
+ return printf("%s: %s\n", driver_name, buf);
+}
+
+#if DBG
+void os_check_stack(const char *location, int size){}
+
+void __os_dbgbreak(const char *file, int line)
+{
+ printf("*** break at %s:%d ***", file, line);
+ while (1);
+}
+
+int hpt_dbg_level = 1;
+#endif
diff --git a/sys/dev/hpt27xx/os_bsd.h b/sys/dev/hpt27xx/os_bsd.h
new file mode 100644
index 0000000..3895f40
--- /dev/null
+++ b/sys/dev/hpt27xx/os_bsd.h
@@ -0,0 +1,263 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+
+#ifndef _OS_BSD_H
+#define _OS_BSD_H
+
+#ifndef DBG
+#define DBG 0
+#endif
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/cons.h>
+#if (__FreeBSD_version >= 500000)
+#include <sys/time.h>
+#include <sys/systm.h>
+#else
+#include <machine/clock.h> /*to support DELAY function under 4.x BSD versions*/
+#endif
+
+#include <sys/stat.h>
+#include <sys/malloc.h>
+#include <sys/conf.h>
+#include <sys/libkern.h>
+#include <sys/kernel.h>
+
+#if (__FreeBSD_version >= 500000)
+#include <sys/kthread.h>
+#include <sys/mutex.h>
+#include <sys/module.h>
+#endif
+
+#include <sys/eventhandler.h>
+#include <sys/bus.h>
+#include <sys/taskqueue.h>
+#include <sys/ioccom.h>
+
+#include <machine/resource.h>
+#if __FreeBSD_version >= 500043
+#include <machine/pci_cfgreg.h>
+#endif
+#include <machine/bus.h>
+#include <machine/stdarg.h>
+#include <sys/rman.h>
+
+#include <vm/vm.h>
+#include <vm/pmap.h>
+
+#if (__FreeBSD_version >= 500000)
+#include <dev/pci/pcireg.h>
+#include <dev/pci/pcivar.h>
+#else
+#include <pci/pcivar.h>
+#include <pci/pcireg.h>
+#endif
+
+#if (__FreeBSD_version <= 500043)
+#include <sys/devicestat.h>
+#endif
+
+#include <cam/cam.h>
+#include <cam/cam_ccb.h>
+#include <cam/cam_sim.h>
+#include <cam/cam_xpt_sim.h>
+#include <cam/cam_debug.h>
+#include <cam/cam_xpt_periph.h>
+#include <cam/cam_periph.h>
+#include <cam/scsi/scsi_all.h>
+#include <cam/scsi/scsi_message.h>
+
+#if (__FreeBSD_version < 500043)
+#include <sys/bus_private.h>
+#endif
+
+
+typedef struct _INQUIRYDATA {
+ u_char DeviceType : 5;
+ u_char DeviceTypeQualifier : 3;
+ u_char DeviceTypeModifier : 7;
+ u_char RemovableMedia : 1;
+ u_char Versions;
+ u_char ResponseDataFormat;
+ u_char AdditionalLength;
+ u_char Reserved[2];
+ u_char SoftReset : 1;
+ u_char CommandQueue : 1;
+ u_char Reserved2 : 1;
+ u_char LinkedCommands : 1;
+ u_char Synchronous : 1;
+ u_char Wide16Bit : 1;
+ u_char Wide32Bit : 1;
+ u_char RelativeAddressing : 1;
+ u_char VendorId[8];
+ u_char ProductId[16];
+ u_char ProductRevisionLevel[4];
+ u_char VendorSpecific[20];
+ u_char Reserved3[40];
+}
+__attribute__((packed))
+INQUIRYDATA, *PINQUIRYDATA;
+
+#endif
+
+/* private headers */
+
+#include <dev/hpt27xx/osm.h>
+#include <dev/hpt27xx/him.h>
+#include <dev/hpt27xx/ldm.h>
+
+/* driver parameters */
+extern char driver_name[];
+extern char driver_name_long[];
+extern char driver_ver[];
+extern int osm_max_targets;
+
+/*
+ * adapter/vbus extensions:
+ * each physical controller has an adapter_ext, passed to him.create_adapter()
+ * each vbus has a vbus_ext passed to ldm_create_vbus().
+ */
+#define EXT_TYPE_HBA 1
+#define EXT_TYPE_VBUS 2
+
+typedef struct _hba {
+ int ext_type;
+ LDM_ADAPTER ldm_adapter;
+ device_t pcidev;
+ PCI_ADDRESS pciaddr;
+ struct _vbus_ext *vbus_ext;
+ struct _hba *next;
+
+ struct {
+ struct resource *res;
+ int type;
+ int rid;
+ void *base;
+ }
+ pcibar[6];
+
+ struct resource *irq_res;
+ void *irq_handle;
+}
+HBA, *PHBA;
+
+typedef struct _os_cmdext {
+ struct _vbus_ext *vbus_ext;
+ struct _os_cmdext *next;
+ union ccb *ccb;
+ bus_dmamap_t dma_map;
+ SG psg[os_max_sg_descriptors];
+}
+OS_CMDEXT, *POS_CMDEXT;
+
+typedef struct _vbus_ext {
+ int ext_type;
+ struct _vbus_ext *next;
+ PHBA hba_list;
+ struct freelist *freelist_head;
+ struct freelist *freelist_dma_head;
+
+ struct cam_sim *sim; /* sim for this vbus */
+ struct cam_path *path; /* peripheral, path, tgt, lun with this vbus */
+#if (__FreeBSD_version >= 500000)
+ struct mtx lock; /* general purpose lock */
+#else
+ int hpt_splx;
+#endif
+ bus_dma_tag_t io_dmat; /* I/O buffer DMA tag */
+
+ POS_CMDEXT cmdext_list;
+
+ OSM_TASK *tasks;
+ struct task worker;
+
+ struct callout_handle timer;
+
+ eventhandler_tag shutdown_eh;
+
+ /* the LDM vbus instance continues */
+ unsigned long vbus[0] __attribute__((aligned(sizeof(unsigned long))));
+}
+VBUS_EXT, *PVBUS_EXT;
+
+#if __FreeBSD_version >= 500000
+#define hpt_lock_vbus(vbus_ext) mtx_lock(&(vbus_ext)->lock)
+#define hpt_unlock_vbus(vbus_ext) mtx_unlock(&(vbus_ext)->lock)
+#else
+static __inline void hpt_lock_vbus(PVBUS_EXT vbus_ext)
+{
+ vbus_ext->hpt_splx = splcam();
+}
+static __inline void hpt_unlock_vbus(PVBUS_EXT vbus_ext)
+{
+ splx(vbus_ext->hpt_splx);
+}
+#endif
+
+
+#define HPT_OSM_TIMEOUT (20*hz) /* timeout value for OS commands */
+
+#define HPT_DO_IOCONTROL _IOW('H', 0, HPT_IOCTL_PARAM)
+
+#define HPT_SCAN_BUS _IO('H', 1)
+
+#if __FreeBSD_version >= 501000
+#define TASK_ENQUEUE(task) taskqueue_enqueue(taskqueue_swi_giant,(task));
+#else
+#define TASK_ENQUEUE(task) taskqueue_enqueue(taskqueue_swi,(task));
+#endif
+
+#if __FreeBSD_version >= 500000
+static __inline int hpt_sleep(PVBUS_EXT vbus_ext, void *ident, int priority, const char *wmesg, int timo)
+{
+ return msleep(ident, &vbus_ext->lock, priority, wmesg, timo);
+}
+#else
+static __inline int hpt_sleep(PVBUS_EXT vbus_ext, void *ident, int priority, const char *wmesg, int timo)
+{
+ int retval = 0;
+
+ asleep(ident, priority, wmesg, timo);
+ hpt_unlock_vbus(vbus_ext);
+ retval = await(priority, timo);
+ hpt_lock_vbus(vbus_ext);
+
+ return retval;
+}
+#endif
+
+#if __FreeBSD_version < 501000
+#define READ_16 0x88
+#define WRITE_16 0x8a
+#define SERVICE_ACTION_IN 0x9e
+#endif
+
+#define HPT_DEV_MAJOR 200
diff --git a/sys/dev/hpt27xx/osm.h b/sys/dev/hpt27xx/osm.h
new file mode 100644
index 0000000..3d8a471
--- /dev/null
+++ b/sys/dev/hpt27xx/osm.h
@@ -0,0 +1,240 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+
+#ifndef _HPT_OSM_H_
+#define _HPT_OSM_H_
+
+#define VERMAGIC_OSM 6
+
+
+#define MAX_MEMBERS 64
+
+#define os_max_queue_comm 32
+#define os_max_sg_descriptors 18
+
+
+extern int os_max_cache_size;
+
+
+#define DMAPOOL_PAGE_SIZE 0x1000 /* PAGE_SIZE (i386/x86_64) */
+#define os_max_cache_pages (os_max_cache_size/DMAPOOL_PAGE_SIZE)
+
+/* data types */
+typedef unsigned int HPT_UINT, HPT_U32;
+typedef unsigned long HPT_UPTR;
+typedef unsigned short HPT_U16;
+typedef unsigned char HPT_U8;
+typedef unsigned long HPT_TIME;
+typedef unsigned long long HPT_U64;
+
+#define CPU_TO_LE64(x) (x)
+#define CPU_TO_LE32(x) (x)
+#define CPU_TO_LE16(x) (x)
+#define LE32_TO_CPU(x) (x)
+#define LE16_TO_CPU(x) (x)
+#define LE64_TO_CPU(x) (x)
+
+static __inline HPT_U64 CPU_TO_BE64(HPT_U64 x)
+{
+ HPT_U8 *p = (HPT_U8 *)&x;
+ return ((HPT_U64)p[0] << 56) |
+ ((HPT_U64)p[1] << 48) |
+ ((HPT_U64)p[2] << 40) |
+ ((HPT_U64)p[3] << 32) |
+ ((HPT_U64)p[4] << 24) |
+ ((HPT_U64)p[5] << 16) |
+ ((HPT_U64)p[6] << 8) |
+ p[7];
+}
+
+static __inline HPT_U32 CPU_TO_BE32(HPT_U32 x)
+{
+ HPT_U8 *p = (HPT_U8 *)&x;
+ return ((HPT_U32)p[0] << 24) |
+ ((HPT_U32)p[1] << 16) |
+ ((HPT_U32)p[2] << 8) | p[3];
+}
+
+static __inline HPT_U16 CPU_TO_BE16(HPT_U16 x)
+{
+ return ((HPT_U8)x << 8) | (x>>8);
+}
+
+#define BE16_TO_CPU(x) CPU_TO_BE16(x)
+#define BE32_TO_CPU(x) CPU_TO_BE32(x)
+#define BE64_TO_CPU(x) CPU_TO_BE64(x)
+
+#define FAR
+#define EXTERN_C
+
+typedef void * HPT_PTR;
+
+typedef HPT_U64 HPT_LBA;
+typedef HPT_U64 HPT_RAW_LBA;
+#define MAX_LBA_VALUE 0xffffffffffffffffull
+#define MAX_RAW_LBA_VALUE MAX_LBA_VALUE
+#define RAW_LBA(x) (x)
+#define LO_LBA(x) ((HPT_U32)(x))
+#define HI_LBA(x) (sizeof(HPT_LBA)>4? (HPT_U32)((x)>>32) : 0)
+#define LBA_FORMAT_STR "0x%llX"
+
+typedef HPT_U64 BUS_ADDRESS;
+#define LO_BUSADDR(x) ((HPT_U32)(x))
+#define HI_BUSADDR(x) (sizeof(BUS_ADDRESS)>4? (x)>>32 : 0)
+
+typedef unsigned char HPT_BOOL;
+#define HPT_TRUE 1
+#define HPT_FALSE 0
+
+typedef struct _TIME_RECORD {
+ HPT_U32 seconds:6; /* 0 - 59 */
+ HPT_U32 minutes:6; /* 0 - 59 */
+ HPT_U32 month:4; /* 1 - 12 */
+ HPT_U32 hours:6; /* 0 - 59 */
+ HPT_U32 day:5; /* 1 - 31 */
+ HPT_U32 year:5; /* 0=2000, 31=2031 */
+} TIME_RECORD;
+
+/* hardware access */
+HPT_U8 os_inb (void *port);
+HPT_U16 os_inw (void *port);
+HPT_U32 os_inl (void *port);
+void os_outb (void *port, HPT_U8 value);
+void os_outw (void *port, HPT_U16 value);
+void os_outl (void *port, HPT_U32 value);
+void os_insw (void *port, HPT_U16 *buffer, HPT_U32 count);
+void os_outsw(void *port, HPT_U16 *buffer, HPT_U32 count);
+
+extern HPT_U32 __dummy_reg; /* to avoid the compiler warning */
+
+#define os_readb(addr) (*(HPT_U8 *)&__dummy_reg = *(volatile HPT_U8 *)(addr))
+#define os_readw(addr) (*(HPT_U16 *)&__dummy_reg = *(volatile HPT_U16 *)(addr))
+#define os_readl(addr) (*(HPT_U32 *)&__dummy_reg = *(volatile HPT_U32 *)(addr))
+
+#define os_writeb(addr, val) *(volatile HPT_U8 *)(addr) = (HPT_U8)(val)
+#define os_writew(addr, val) *(volatile HPT_U16 *)(addr) = (HPT_U16)(val)
+#define os_writel(addr, val) *(volatile HPT_U32 *)(addr) = (HPT_U32)(val)
+
+/* PCI configuration space for specified device*/
+HPT_U8 os_pci_readb (void *osext, HPT_U8 offset);
+HPT_U16 os_pci_readw (void *osext, HPT_U8 offset);
+HPT_U32 os_pci_readl (void *osext, HPT_U8 offset);
+void os_pci_writeb(void *osext, HPT_U8 offset, HPT_U8 value);
+void os_pci_writew(void *osext, HPT_U8 offset, HPT_U16 value);
+void os_pci_writel(void *osext, HPT_U8 offset, HPT_U32 value);
+
+/* obsolute interface */
+#define MAX_PCI_BUS_NUMBER 0xff
+#define MAX_PCI_DEVICE_NUMBER 32
+#define MAX_PCI_FUNC_NUMBER 1
+HPT_U8 pcicfg_read_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg);
+HPT_U32 pcicfg_read_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg);
+void pcicfg_write_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U8 v);
+void pcicfg_write_dword(HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg, HPT_U32 v);
+
+
+void *os_map_pci_bar(
+ void *osext,
+ int index,
+ HPT_U32 offset,
+ HPT_U32 length
+);
+
+
+void os_unmap_pci_bar(void *osext, void *base);
+
+#define os_kmap_sgptr(psg) (psg->addr._logical)
+#define os_kunmap_sgptr(ptr)
+#define os_set_sgptr(psg, ptr) (psg)->addr._logical = (ptr)
+
+/* timer */
+void *os_add_timer(void *osext, HPT_U32 microseconds, void (*proc)(void *), void *arg);
+void os_del_timer(void *handle);
+void os_request_timer(void * osext, HPT_U32 interval);
+HPT_TIME os_query_time(void);
+
+/* task */
+#define OS_SUPPORT_TASK
+
+typedef struct _OSM_TASK {
+ struct _OSM_TASK *next;
+ void (*func)(void *vbus, void *data);
+ void *data;
+}
+OSM_TASK;
+
+void os_schedule_task(void *osext, OSM_TASK *task);
+
+/* misc */
+HPT_U32 os_get_stamp(void);
+void os_stallexec(HPT_U32 microseconds);
+
+#ifndef _SYS_LIBKERN_H_
+#define memcpy(dst, src, size) __builtin_memcpy((dst), (src), (size))
+#define memcmp(dst, src, size) __builtin_memcmp((dst), (src), (size))
+#define strcpy(dst, src) __builtin_strcpy((dst), (src))
+static __inline void * memset(void *dst, int c, unsigned long size)
+{
+ char *p;
+ for (p=(char*)dst; size; size--,p++) *p = c;
+ return dst;
+}
+#endif
+
+#define farMemoryCopy(a,b,c) memcpy((char *)(a), (char *)(b), (HPT_U32)c)
+
+
+#define os_register_device(osext, target_id)
+#define os_unregister_device(osext, target_id)
+int os_query_remove_device(void *osext, int target_id);
+int os_revalidate_device(void *osext, int target_id);
+
+HPT_U8 os_get_vbus_seq(void *osext);
+
+/* debug support */
+int os_printk(char *fmt, ...);
+
+#if DBG
+extern int hpt_dbg_level;
+#define KdPrint(x) do { if (hpt_dbg_level) os_printk x; } while (0)
+void __os_dbgbreak(const char *file, int line);
+#define os_dbgbreak() __os_dbgbreak(__FILE__, __LINE__)
+#define HPT_ASSERT(x) do { if (!(x)) os_dbgbreak(); } while (0)
+void os_check_stack(const char *location, int size);
+#define HPT_CHECK_STACK(size) os_check_stack(__FUNCTION__, (size))
+#else
+#define KdPrint(x)
+#define HPT_ASSERT(x)
+#define HPT_CHECK_STACK(size)
+#endif
+
+#define OsPrint(x) do { os_printk x; } while (0)
+
+#endif
diff --git a/sys/dev/hpt27xx/osm_bsd.c b/sys/dev/hpt27xx/osm_bsd.c
new file mode 100644
index 0000000..ac7e9d8
--- /dev/null
+++ b/sys/dev/hpt27xx/osm_bsd.c
@@ -0,0 +1,1421 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+
+#include <dev/hpt27xx/os_bsd.h>
+#include <dev/hpt27xx/hptintf.h>
+
+static int hpt_probe(device_t dev)
+{
+ PCI_ID pci_id;
+ HIM *him;
+ int i;
+ PHBA hba;
+
+ for (him = him_list; him; him = him->next) {
+ for (i=0; him->get_supported_device_id(i, &pci_id); i++) {
+ if (him->get_controller_count)
+ him->get_controller_count(&pci_id,0,0);
+ if ((pci_get_vendor(dev) == pci_id.vid) &&
+ (pci_get_device(dev) == pci_id.did)){
+ KdPrint(("hpt_probe: adapter at PCI %d:%d:%d, IRQ %d",
+ pci_get_bus(dev), pci_get_slot(dev), pci_get_function(dev), pci_get_irq(dev)
+ ));
+ device_set_desc(dev, him->name);
+ hba = (PHBA)device_get_softc(dev);
+ memset(hba, 0, sizeof(HBA));
+ hba->ext_type = EXT_TYPE_HBA;
+ hba->ldm_adapter.him = him;
+ return 0;
+ }
+ }
+ }
+
+ return (ENXIO);
+}
+
+static int hpt_attach(device_t dev)
+{
+ PHBA hba = (PHBA)device_get_softc(dev);
+ HIM *him = hba->ldm_adapter.him;
+ PCI_ID pci_id;
+ HPT_UINT size;
+ PVBUS vbus;
+ PVBUS_EXT vbus_ext;
+
+ KdPrint(("hpt_attach(%d/%d/%d)", pci_get_bus(dev), pci_get_slot(dev), pci_get_function(dev)));
+
+#if __FreeBSD_version >=440000
+ pci_enable_busmaster(dev);
+#endif
+
+ pci_id.vid = pci_get_vendor(dev);
+ pci_id.did = pci_get_device(dev);
+ pci_id.rev = pci_get_revid(dev);
+ pci_id.subsys = (HPT_U32)(pci_get_subdevice(dev)) << 16 | pci_get_subvendor(dev);
+
+ size = him->get_adapter_size(&pci_id);
+ hba->ldm_adapter.him_handle = malloc(size, M_DEVBUF, M_WAITOK);
+ if (!hba->ldm_adapter.him_handle)
+ return ENXIO;
+
+ hba->pcidev = dev;
+ hba->pciaddr.tree = 0;
+ hba->pciaddr.bus = pci_get_bus(dev);
+ hba->pciaddr.device = pci_get_slot(dev);
+ hba->pciaddr.function = pci_get_function(dev);
+
+ if (!him->create_adapter(&pci_id, hba->pciaddr, hba->ldm_adapter.him_handle, hba)) {
+ free(hba->ldm_adapter.him_handle, M_DEVBUF);
+ return -1;
+ }
+
+ os_printk("adapter at PCI %d:%d:%d, IRQ %d",
+ hba->pciaddr.bus, hba->pciaddr.device, hba->pciaddr.function, pci_get_irq(dev));
+
+ if (!ldm_register_adapter(&hba->ldm_adapter)) {
+ size = ldm_get_vbus_size();
+ vbus_ext = malloc(sizeof(VBUS_EXT) + size, M_DEVBUF, M_WAITOK);
+ if (!vbus_ext) {
+ free(hba->ldm_adapter.him_handle, M_DEVBUF);
+ return -1;
+ }
+ memset(vbus_ext, 0, sizeof(VBUS_EXT));
+ vbus_ext->ext_type = EXT_TYPE_VBUS;
+ ldm_create_vbus((PVBUS)vbus_ext->vbus, vbus_ext);
+ ldm_register_adapter(&hba->ldm_adapter);
+ }
+
+ ldm_for_each_vbus(vbus, vbus_ext) {
+ if (hba->ldm_adapter.vbus==vbus) {
+ hba->vbus_ext = vbus_ext;
+ hba->next = vbus_ext->hba_list;
+ vbus_ext->hba_list = hba;
+ break;
+ }
+ }
+ return 0;
+}
+
+/*
+ * Maybe we'd better to use the bus_dmamem_alloc to alloc DMA memory,
+ * but there are some problems currently (alignment, etc).
+ */
+static __inline void *__get_free_pages(int order)
+{
+ /* don't use low memory - other devices may get starved */
+ return contigmalloc(PAGE_SIZE<<order,
+ M_DEVBUF, M_WAITOK, BUS_SPACE_MAXADDR_24BIT, BUS_SPACE_MAXADDR, PAGE_SIZE, 0);
+}
+
+static __inline void free_pages(void *p, int order)
+{
+ contigfree(p, PAGE_SIZE<<order, M_DEVBUF);
+}
+
+static int hpt_alloc_mem(PVBUS_EXT vbus_ext)
+{
+ PHBA hba;
+ struct freelist *f;
+ HPT_UINT i;
+ void **p;
+
+ for (hba = vbus_ext->hba_list; hba; hba = hba->next)
+ hba->ldm_adapter.him->get_meminfo(hba->ldm_adapter.him_handle);
+
+ ldm_get_mem_info((PVBUS)vbus_ext->vbus, 0);
+
+ for (f=vbus_ext->freelist_head; f; f=f->next) {
+ KdPrint(("%s: %d*%d=%d bytes",
+ f->tag, f->count, f->size, f->count*f->size));
+ for (i=0; i<f->count; i++) {
+ p = (void **)malloc(f->size, M_DEVBUF, M_WAITOK);
+ if (!p) return (ENXIO);
+ *p = f->head;
+ f->head = p;
+ }
+ }
+
+ for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
+ int order, size, j;
+
+ HPT_ASSERT((f->size & (f->alignment-1))==0);
+
+ for (order=0, size=PAGE_SIZE; size<f->size; order++, size<<=1) ;
+
+ KdPrint(("%s: %d*%d=%d bytes, order %d",
+ f->tag, f->count, f->size, f->count*f->size, order));
+ HPT_ASSERT(f->alignment<=PAGE_SIZE);
+
+ for (i=0; i<f->count;) {
+ p = (void **)__get_free_pages(order);
+ if (!p) return -1;
+ for (j = size/f->size; j && i<f->count; i++,j--) {
+ *p = f->head;
+ *(BUS_ADDRESS *)(p+1) = (BUS_ADDRESS)vtophys(p);
+ f->head = p;
+ p = (void **)((unsigned long)p + f->size);
+ }
+ }
+ }
+
+ HPT_ASSERT(PAGE_SIZE==DMAPOOL_PAGE_SIZE);
+
+ for (i=0; i<os_max_cache_pages; i++) {
+ p = (void **)__get_free_pages(0);
+ if (!p) return -1;
+ HPT_ASSERT(((HPT_UPTR)p & (DMAPOOL_PAGE_SIZE-1))==0);
+ dmapool_put_page((PVBUS)vbus_ext->vbus, p, (BUS_ADDRESS)vtophys(p));
+ }
+
+ return 0;
+}
+
+static void hpt_free_mem(PVBUS_EXT vbus_ext)
+{
+ struct freelist *f;
+ void *p;
+ int i;
+ BUS_ADDRESS bus;
+
+ for (f=vbus_ext->freelist_head; f; f=f->next) {
+#if DBG
+ if (f->count!=f->reserved_count) {
+ KdPrint(("memory leak for freelist %s (%d/%d)", f->tag, f->count, f->reserved_count));
+ }
+#endif
+ while ((p=freelist_get(f)))
+ free(p, M_DEVBUF);
+ }
+
+ for (i=0; i<os_max_cache_pages; i++) {
+ p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus);
+ HPT_ASSERT(p);
+ free_pages(p, 0);
+ }
+
+ for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
+ int order, size;
+#if DBG
+ if (f->count!=f->reserved_count) {
+ KdPrint(("memory leak for dma freelist %s (%d/%d)", f->tag, f->count, f->reserved_count));
+ }
+#endif
+ for (order=0, size=PAGE_SIZE; size<f->size; order++, size<<=1) ;
+
+ while ((p=freelist_get_dma(f, &bus))) {
+ if (order)
+ free_pages(p, order);
+ else {
+ /* can't free immediately since other blocks in this page may still be in the list */
+ if (((HPT_UPTR)p & (PAGE_SIZE-1))==0)
+ dmapool_put_page((PVBUS)vbus_ext->vbus, p, bus);
+ }
+ }
+ }
+
+ while ((p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus)))
+ free_pages(p, 0);
+}
+
+static int hpt_init_vbus(PVBUS_EXT vbus_ext)
+{
+ PHBA hba;
+
+ for (hba = vbus_ext->hba_list; hba; hba = hba->next)
+ if (!hba->ldm_adapter.him->initialize(hba->ldm_adapter.him_handle)) {
+ KdPrint(("fail to initialize %p", hba));
+ return -1;
+ }
+
+ ldm_initialize_vbus((PVBUS)vbus_ext->vbus, &vbus_ext->hba_list->ldm_adapter);
+ return 0;
+}
+
+static void hpt_flush_done(PCOMMAND pCmd)
+{
+ PVDEV vd = pCmd->target;
+
+ if (mIsArray(vd->type) && vd->u.array.transform && vd!=vd->u.array.transform->target) {
+ vd = vd->u.array.transform->target;
+ HPT_ASSERT(vd);
+ pCmd->target = vd;
+ pCmd->Result = RETURN_PENDING;
+ vdev_queue_cmd(pCmd);
+ return;
+ }
+
+ *(int *)pCmd->priv = 1;
+ wakeup(pCmd);
+}
+
+/*
+ * flush a vdev (without retry).
+ */
+static int hpt_flush_vdev(PVBUS_EXT vbus_ext, PVDEV vd)
+{
+ PCOMMAND pCmd;
+ int result = 0, done;
+ HPT_UINT count;
+
+ KdPrint(("flusing dev %p", vd));
+
+ hpt_lock_vbus(vbus_ext);
+
+ if (mIsArray(vd->type) && vd->u.array.transform)
+ count = MAX(vd->u.array.transform->source->cmds_per_request,
+ vd->u.array.transform->target->cmds_per_request);
+ else
+ count = vd->cmds_per_request;
+
+ pCmd = ldm_alloc_cmds(vd->vbus, count);
+
+ if (!pCmd) {
+ hpt_unlock_vbus(vbus_ext);
+ return -1;
+ }
+
+ pCmd->type = CMD_TYPE_FLUSH;
+ pCmd->flags.hard_flush = 1;
+ pCmd->target = vd;
+ pCmd->done = hpt_flush_done;
+ done = 0;
+ pCmd->priv = &done;
+
+ ldm_queue_cmd(pCmd);
+
+ if (!done) {
+ while (hpt_sleep(vbus_ext, pCmd, PPAUSE, "hptfls", HPT_OSM_TIMEOUT)) {
+ ldm_reset_vbus(vd->vbus);
+ }
+ }
+
+ KdPrint(("flush result %d", pCmd->Result));
+
+ if (pCmd->Result!=RETURN_SUCCESS)
+ result = -1;
+
+ ldm_free_cmds(pCmd);
+
+ hpt_unlock_vbus(vbus_ext);
+
+ return result;
+}
+
+static void hpt_stop_tasks(PVBUS_EXT vbus_ext);
+static void hpt_shutdown_vbus(PVBUS_EXT vbus_ext, int howto)
+{
+ PVBUS vbus = (PVBUS)vbus_ext->vbus;
+ PHBA hba;
+ int i;
+
+ KdPrint(("hpt_shutdown_vbus"));
+
+ /* stop all ctl tasks and disable the worker taskqueue */
+ hpt_stop_tasks(vbus_ext);
+ vbus_ext->worker.ta_context = 0;
+
+ /* flush devices */
+ for (i=0; i<osm_max_targets; i++) {
+ PVDEV vd = ldm_find_target(vbus, i);
+ if (vd) {
+ /* retry once */
+ if (hpt_flush_vdev(vbus_ext, vd))
+ hpt_flush_vdev(vbus_ext, vd);
+ }
+ }
+
+ hpt_lock_vbus(vbus_ext);
+ ldm_shutdown(vbus);
+ hpt_unlock_vbus(vbus_ext);
+
+ ldm_release_vbus(vbus);
+
+ for (hba=vbus_ext->hba_list; hba; hba=hba->next)
+ bus_teardown_intr(hba->pcidev, hba->irq_res, hba->irq_handle);
+
+ hpt_free_mem(vbus_ext);
+
+ while ((hba=vbus_ext->hba_list)) {
+ vbus_ext->hba_list = hba->next;
+ free(hba->ldm_adapter.him_handle, M_DEVBUF);
+ }
+
+ free(vbus_ext, M_DEVBUF);
+ KdPrint(("hpt_shutdown_vbus done"));
+}
+
+static void __hpt_do_tasks(PVBUS_EXT vbus_ext)
+{
+ OSM_TASK *tasks;
+
+ tasks = vbus_ext->tasks;
+ vbus_ext->tasks = 0;
+
+ while (tasks) {
+ OSM_TASK *t = tasks;
+ tasks = t->next;
+ t->next = 0;
+ t->func(vbus_ext->vbus, t->data);
+ }
+}
+
+static void hpt_do_tasks(PVBUS_EXT vbus_ext, int pending)
+{
+ if(vbus_ext){
+ hpt_lock_vbus(vbus_ext);
+ __hpt_do_tasks(vbus_ext);
+ hpt_unlock_vbus(vbus_ext);
+ }
+}
+
+static void hpt_action(struct cam_sim *sim, union ccb *ccb);
+static void hpt_poll(struct cam_sim *sim);
+static void hpt_async(void * callback_arg, u_int32_t code, struct cam_path * path, void * arg);
+static void hpt_pci_intr(void *arg);
+
+static __inline POS_CMDEXT cmdext_get(PVBUS_EXT vbus_ext)
+{
+ POS_CMDEXT p = vbus_ext->cmdext_list;
+ if (p)
+ vbus_ext->cmdext_list = p->next;
+ return p;
+}
+
+static __inline void cmdext_put(POS_CMDEXT p)
+{
+ p->next = p->vbus_ext->cmdext_list;
+ p->vbus_ext->cmdext_list = p;
+}
+
+static void hpt_timeout(void *arg)
+{
+ PCOMMAND pCmd = (PCOMMAND)arg;
+ POS_CMDEXT ext = (POS_CMDEXT)pCmd->priv;
+
+ KdPrint(("pCmd %p timeout", pCmd));
+
+ ldm_reset_vbus((PVBUS)ext->vbus_ext->vbus);
+}
+
+static void os_cmddone(PCOMMAND pCmd)
+{
+ POS_CMDEXT ext = (POS_CMDEXT)pCmd->priv;
+ union ccb *ccb = ext->ccb;
+
+ KdPrint(("os_cmddone(%p, %d)", pCmd, pCmd->Result));
+
+ untimeout(hpt_timeout, pCmd, ccb->ccb_h.timeout_ch);
+
+ switch(pCmd->Result) {
+ case RETURN_SUCCESS:
+ ccb->ccb_h.status = CAM_REQ_CMP;
+ break;
+ case RETURN_BAD_DEVICE:
+ ccb->ccb_h.status = CAM_DEV_NOT_THERE;
+ break;
+ case RETURN_DEVICE_BUSY:
+ ccb->ccb_h.status = CAM_BUSY;
+ break;
+ case RETURN_INVALID_REQUEST:
+ ccb->ccb_h.status = CAM_REQ_INVALID;
+ break;
+ case RETURN_SELECTION_TIMEOUT:
+ ccb->ccb_h.status = CAM_SEL_TIMEOUT;
+ break;
+ case RETURN_RETRY:
+ ccb->ccb_h.status = CAM_BUSY;
+ break;
+ default:
+ ccb->ccb_h.status = CAM_SCSI_STATUS_ERROR;
+ break;
+ }
+
+ if (pCmd->flags.data_in) {
+ bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTREAD);
+ }
+ else if (pCmd->flags.data_out) {
+ bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTWRITE);
+ }
+
+ bus_dmamap_unload(ext->vbus_ext->io_dmat, ext->dma_map);
+
+ cmdext_put(ext);
+ ldm_free_cmds(pCmd);
+ xpt_done(ccb);
+}
+
+static int os_buildsgl(PCOMMAND pCmd, PSG pSg, int logical)
+{
+ POS_CMDEXT ext = (POS_CMDEXT)pCmd->priv;
+ union ccb *ccb = ext->ccb;
+ bus_dma_segment_t *sgList = (bus_dma_segment_t *)ccb->csio.data_ptr;
+ int idx;
+
+ if(logical) {
+ if (ccb->ccb_h.flags & CAM_DATA_PHYS)
+ panic("physical address unsupported");
+
+ if (ccb->ccb_h.flags & CAM_SCATTER_VALID) {
+ if (ccb->ccb_h.flags & CAM_SG_LIST_PHYS)
+ panic("physical address unsupported");
+
+ for (idx = 0; idx < ccb->csio.sglist_cnt; idx++) {
+ os_set_sgptr(&pSg[idx], (HPT_U8 *)(HPT_UPTR)sgList[idx].ds_addr);
+ pSg[idx].size = sgList[idx].ds_len;
+ pSg[idx].eot = (idx==ccb->csio.sglist_cnt-1)? 1 : 0;
+ }
+ }
+ else {
+ os_set_sgptr(pSg, (HPT_U8 *)ccb->csio.data_ptr);
+ pSg->size = ccb->csio.dxfer_len;
+ pSg->eot = 1;
+ }
+ return TRUE;
+ }
+
+ /* since we have provided physical sg, nobody will ask us to build physical sg */
+ HPT_ASSERT(0);
+ return FALSE;
+}
+
+static void hpt_io_dmamap_callback(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
+{
+ PCOMMAND pCmd = (PCOMMAND)arg;
+ POS_CMDEXT ext = (POS_CMDEXT)pCmd->priv;
+ PSG psg = pCmd->psg;
+ int idx;
+
+ HPT_ASSERT(pCmd->flags.physical_sg);
+
+ if (error || nsegs == 0)
+ panic("busdma error");
+
+ HPT_ASSERT(nsegs<=os_max_sg_descriptors);
+
+ for (idx = 0; idx < nsegs; idx++, psg++) {
+ psg->addr.bus = segs[idx].ds_addr;
+ psg->size = segs[idx].ds_len;
+ psg->eot = 0;
+ }
+ psg[-1].eot = 1;
+
+ if (pCmd->flags.data_in) {
+ bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_PREREAD);
+ }
+ else if (pCmd->flags.data_out) {
+ bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_PREWRITE);
+ }
+
+ ext->ccb->ccb_h.timeout_ch = timeout(hpt_timeout, pCmd, HPT_OSM_TIMEOUT);
+ ldm_queue_cmd(pCmd);
+}
+
+static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
+{
+ PVBUS vbus = (PVBUS)vbus_ext->vbus;
+ PVDEV vd;
+ PCOMMAND pCmd;
+ POS_CMDEXT ext;
+ HPT_U8 *cdb;
+
+ if (ccb->ccb_h.flags & CAM_CDB_POINTER)
+ cdb = ccb->csio.cdb_io.cdb_ptr;
+ else
+ cdb = ccb->csio.cdb_io.cdb_bytes;
+
+ KdPrint(("hpt_scsi_io: ccb %x id %d lun %d cdb %x-%x-%x",
+ ccb,
+ ccb->ccb_h.target_id, ccb->ccb_h.target_lun,
+ *(HPT_U32 *)&cdb[0], *(HPT_U32 *)&cdb[4], *(HPT_U32 *)&cdb[8]
+ ));
+
+ /* ccb->ccb_h.path_id is not our bus id - don't check it */
+ if (ccb->ccb_h.target_lun != 0 ||
+ ccb->ccb_h.target_id >= osm_max_targets ||
+ (ccb->ccb_h.flags & CAM_CDB_PHYS))
+ {
+ ccb->ccb_h.status = CAM_TID_INVALID;
+ xpt_done(ccb);
+ return;
+ }
+
+ vd = ldm_find_target(vbus, ccb->ccb_h.target_id);
+
+ if (!vd) {
+ ccb->ccb_h.status = CAM_TID_INVALID;
+ xpt_done(ccb);
+ return;
+ }
+
+ switch (cdb[0]) {
+ case TEST_UNIT_READY:
+ case START_STOP_UNIT:
+ case SYNCHRONIZE_CACHE:
+ ccb->ccb_h.status = CAM_REQ_CMP;
+ break;
+
+ case INQUIRY:
+ {
+ PINQUIRYDATA inquiryData;
+ memset(ccb->csio.data_ptr, 0, ccb->csio.dxfer_len);
+ inquiryData = (PINQUIRYDATA)ccb->csio.data_ptr;
+
+ inquiryData->AdditionalLength = 31;
+ inquiryData->CommandQueue = 1;
+ memcpy(&inquiryData->VendorId, "HPT ", 8);
+ memcpy(&inquiryData->ProductId, "DISK 0_0 ", 16);
+
+ if (vd->target_id / 10) {
+ inquiryData->ProductId[7] = (vd->target_id % 100) / 10 + '0';
+ inquiryData->ProductId[8] = (vd->target_id % 100) % 10 + '0';
+ }
+ else
+ inquiryData->ProductId[7] = (vd->target_id % 100) % 10 + '0';
+
+ memcpy(&inquiryData->ProductRevisionLevel, "4.00", 4);
+
+ ccb->ccb_h.status = CAM_REQ_CMP;
+ }
+ break;
+
+ case READ_CAPACITY:
+ {
+ HPT_U8 *rbuf = ccb->csio.data_ptr;
+ HPT_U32 cap;
+
+ if (vd->capacity>0xfffffffful)
+ cap = 0xfffffffful;
+ else
+ cap = vd->capacity - 1;
+
+ rbuf[0] = (HPT_U8)(cap>>24);
+ rbuf[1] = (HPT_U8)(cap>>16);
+ rbuf[2] = (HPT_U8)(cap>>8);
+ rbuf[3] = (HPT_U8)cap;
+ rbuf[4] = 0;
+ rbuf[5] = 0;
+ rbuf[6] = 2;
+ rbuf[7] = 0;
+
+ ccb->ccb_h.status = CAM_REQ_CMP;
+ break;
+ }
+
+ case SERVICE_ACTION_IN:
+ {
+ HPT_U8 *rbuf = ccb->csio.data_ptr;
+ HPT_U64 cap = vd->capacity - 1;
+
+ rbuf[0] = (HPT_U8)(cap>>56);
+ rbuf[1] = (HPT_U8)(cap>>48);
+ rbuf[2] = (HPT_U8)(cap>>40);
+ rbuf[3] = (HPT_U8)(cap>>32);
+ rbuf[4] = (HPT_U8)(cap>>24);
+ rbuf[5] = (HPT_U8)(cap>>16);
+ rbuf[6] = (HPT_U8)(cap>>8);
+ rbuf[7] = (HPT_U8)cap;
+ rbuf[8] = 0;
+ rbuf[9] = 0;
+ rbuf[10] = 2;
+ rbuf[11] = 0;
+
+ ccb->ccb_h.status = CAM_REQ_CMP;
+ break;
+ }
+
+ case READ_6:
+ case READ_10:
+ case READ_16:
+ case WRITE_6:
+ case WRITE_10:
+ case WRITE_16:
+ case 0x13:
+ case 0x2f:
+ case 0x8f: /* VERIFY_16 */
+ {
+ pCmd = ldm_alloc_cmds(vbus, vd->cmds_per_request);
+ if(!pCmd){
+ KdPrint(("Failed to allocate command!"));
+ ccb->ccb_h.status = CAM_BUSY;
+ break;
+ }
+
+ switch (cdb[0]) {
+ case READ_6:
+ case WRITE_6:
+ case 0x13:
+ pCmd->uCmd.Ide.Lba = ((HPT_U32)cdb[1] << 16) | ((HPT_U32)cdb[2] << 8) | (HPT_U32)cdb[3];
+ pCmd->uCmd.Ide.nSectors = (HPT_U16) cdb[4];
+ break;
+ case READ_16:
+ case WRITE_16:
+ case 0x8f: /* VERIFY_16 */
+ {
+ HPT_U64 block =
+ ((HPT_U64)cdb[2]<<56) |
+ ((HPT_U64)cdb[3]<<48) |
+ ((HPT_U64)cdb[4]<<40) |
+ ((HPT_U64)cdb[5]<<32) |
+ ((HPT_U64)cdb[6]<<24) |
+ ((HPT_U64)cdb[7]<<16) |
+ ((HPT_U64)cdb[8]<<8) |
+ ((HPT_U64)cdb[9]);
+ pCmd->uCmd.Ide.Lba = block;
+ pCmd->uCmd.Ide.nSectors = (HPT_U16)cdb[13] | ((HPT_U16)cdb[12]<<8);
+ break;
+ }
+
+ default:
+ pCmd->uCmd.Ide.Lba = (HPT_U32)cdb[5] | ((HPT_U32)cdb[4] << 8) | ((HPT_U32)cdb[3] << 16) | ((HPT_U32)cdb[2] << 24);
+ pCmd->uCmd.Ide.nSectors = (HPT_U16) cdb[8] | ((HPT_U16)cdb[7]<<8);
+ break;
+ }
+
+ switch (cdb[0]) {
+ case READ_6:
+ case READ_10:
+ case READ_16:
+ pCmd->flags.data_in = 1;
+ break;
+ case WRITE_6:
+ case WRITE_10:
+ case WRITE_16:
+ pCmd->flags.data_out = 1;
+ break;
+ }
+ pCmd->priv = ext = cmdext_get(vbus_ext);
+ HPT_ASSERT(ext);
+ ext->ccb = ccb;
+ pCmd->target = vd;
+ pCmd->done = os_cmddone;
+ pCmd->buildsgl = os_buildsgl;
+
+ pCmd->psg = ext->psg;
+
+ if (ccb->ccb_h.flags & CAM_SCATTER_VALID) {
+ int idx;
+ bus_dma_segment_t *sgList = (bus_dma_segment_t *)ccb->csio.data_ptr;
+
+ if (ccb->ccb_h.flags & CAM_SG_LIST_PHYS)
+ pCmd->flags.physical_sg = 1;
+
+ for (idx = 0; idx < ccb->csio.sglist_cnt; idx++) {
+ pCmd->psg[idx].addr.bus = sgList[idx].ds_addr;
+ pCmd->psg[idx].size = sgList[idx].ds_len;
+ pCmd->psg[idx].eot = (idx==ccb->csio.sglist_cnt-1)? 1 : 0;
+ }
+
+ ccb->ccb_h.timeout_ch = timeout(hpt_timeout, pCmd, HPT_OSM_TIMEOUT);
+ ldm_queue_cmd(pCmd);
+ }
+ else {
+ int error;
+ pCmd->flags.physical_sg = 1;
+ error = bus_dmamap_load(vbus_ext->io_dmat,
+ ext->dma_map,
+ ccb->csio.data_ptr, ccb->csio.dxfer_len,
+ hpt_io_dmamap_callback, pCmd,
+ BUS_DMA_WAITOK
+ );
+ KdPrint(("bus_dmamap_load return %d", error));
+ if (error && error!=EINPROGRESS) {
+ os_printk("bus_dmamap_load error %d", error);
+ cmdext_put(ext);
+ ldm_free_cmds(pCmd);
+ ccb->ccb_h.status = CAM_REQ_CMP_ERR;
+ xpt_done(ccb);
+ }
+ }
+ return;
+ }
+
+ default:
+ ccb->ccb_h.status = CAM_REQ_INVALID;
+ break;
+ }
+
+ xpt_done(ccb);
+ return;
+}
+
+static void hpt_action(struct cam_sim *sim, union ccb *ccb)
+{
+ PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
+
+ KdPrint(("hpt_action(fn=%d, id=%d)", ccb->ccb_h.func_code, ccb->ccb_h.target_id));
+
+ switch (ccb->ccb_h.func_code) {
+
+ case XPT_SCSI_IO:
+ hpt_lock_vbus(vbus_ext);
+ hpt_scsi_io(vbus_ext, ccb);
+ hpt_unlock_vbus(vbus_ext);
+ return;
+
+ case XPT_RESET_BUS:
+ hpt_lock_vbus(vbus_ext);
+ ldm_reset_vbus((PVBUS)vbus_ext->vbus);
+ hpt_unlock_vbus(vbus_ext);
+ break;
+
+ case XPT_GET_TRAN_SETTINGS:
+ case XPT_SET_TRAN_SETTINGS:
+ ccb->ccb_h.status = CAM_FUNC_NOTAVAIL;
+ break;
+
+ case XPT_CALC_GEOMETRY:
+ ccb->ccg.heads = 255;
+ ccb->ccg.secs_per_track = 63;
+ ccb->ccg.cylinders = ccb->ccg.volume_size / (ccb->ccg.heads * ccb->ccg.secs_per_track);
+ ccb->ccb_h.status = CAM_REQ_CMP;
+ break;
+
+ case XPT_PATH_INQ:
+ {
+ struct ccb_pathinq *cpi = &ccb->cpi;
+
+ cpi->version_num = 1;
+ cpi->hba_inquiry = PI_SDTR_ABLE;
+ cpi->target_sprt = 0;
+ cpi->hba_misc = PIM_NOBUSRESET;
+ cpi->hba_eng_cnt = 0;
+ cpi->max_target = osm_max_targets;
+ cpi->max_lun = 0;
+ cpi->unit_number = cam_sim_unit(sim);
+ cpi->bus_id = cam_sim_bus(sim);
+ cpi->initiator_id = osm_max_targets;
+ cpi->base_transfer_speed = 3300;
+
+ strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
+ strncpy(cpi->hba_vid, "HPT ", HBA_IDLEN);
+ strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
+#if (__FreeBSD_version >= 800000)
+ cpi->transport = XPORT_SPI;
+ cpi->transport_version = 2;
+ cpi->protocol = PROTO_SCSI;
+ cpi->protocol_version = SCSI_REV_2;
+#endif
+ cpi->ccb_h.status = CAM_REQ_CMP;
+ break;
+ }
+
+ default:
+ ccb->ccb_h.status = CAM_REQ_INVALID;
+ break;
+ }
+
+ xpt_done(ccb);
+ return;
+}
+
+static void hpt_pci_intr(void *arg)
+{
+ PVBUS_EXT vbus_ext = (PVBUS_EXT)arg;
+ hpt_lock_vbus(vbus_ext);
+ ldm_intr((PVBUS)vbus_ext->vbus);
+ hpt_unlock_vbus(vbus_ext);
+}
+
+static void hpt_poll(struct cam_sim *sim)
+{
+ hpt_pci_intr(cam_sim_softc(sim));
+}
+
+static void hpt_async(void * callback_arg, u_int32_t code, struct cam_path * path, void * arg)
+{
+ KdPrint(("hpt_async"));
+}
+
+static int hpt_shutdown(device_t dev)
+{
+ KdPrint(("hpt_shutdown(dev=%p)", dev));
+ return 0;
+}
+
+static int hpt_detach(device_t dev)
+{
+ /* we don't allow the driver to be unloaded. */
+ return EBUSY;
+}
+
+static void hpt_ioctl_done(struct _IOCTL_ARG *arg)
+{
+ arg->ioctl_cmnd = 0;
+ wakeup(arg);
+}
+
+static void __hpt_do_ioctl(PVBUS_EXT vbus_ext, IOCTL_ARG *ioctl_args)
+{
+ ioctl_args->result = -1;
+ ioctl_args->done = hpt_ioctl_done;
+ ioctl_args->ioctl_cmnd = (void *)1;
+
+ hpt_lock_vbus(vbus_ext);
+ ldm_ioctl((PVBUS)vbus_ext->vbus, ioctl_args);
+
+ while (ioctl_args->ioctl_cmnd) {
+ if (hpt_sleep(vbus_ext, ioctl_args, PPAUSE, "hptctl", HPT_OSM_TIMEOUT)==0)
+ break;
+ ldm_reset_vbus((PVBUS)vbus_ext->vbus);
+ __hpt_do_tasks(vbus_ext);
+ }
+
+ /* KdPrint(("ioctl %x result %d", ioctl_args->dwIoControlCode, ioctl_args->result)); */
+
+ hpt_unlock_vbus(vbus_ext);
+}
+
+static void hpt_do_ioctl(IOCTL_ARG *ioctl_args)
+{
+ PVBUS vbus;
+ PVBUS_EXT vbus_ext;
+
+ ldm_for_each_vbus(vbus, vbus_ext) {
+ __hpt_do_ioctl(vbus_ext, ioctl_args);
+ if (ioctl_args->result!=HPT_IOCTL_RESULT_WRONG_VBUS)
+ return;
+ }
+}
+
+#define HPT_DO_IOCTL(code, inbuf, insize, outbuf, outsize) ({\
+ IOCTL_ARG arg;\
+ arg.dwIoControlCode = code;\
+ arg.lpInBuffer = inbuf;\
+ arg.lpOutBuffer = outbuf;\
+ arg.nInBufferSize = insize;\
+ arg.nOutBufferSize = outsize;\
+ arg.lpBytesReturned = 0;\
+ hpt_do_ioctl(&arg);\
+ arg.result;\
+})
+
+#define DEVICEID_VALID(id) ((id) && ((HPT_U32)(id)!=0xffffffff))
+
+static int hpt_get_logical_devices(DEVICEID * pIds, int nMaxCount)
+{
+ int i;
+ HPT_U32 count = nMaxCount-1;
+
+ if (HPT_DO_IOCTL(HPT_IOCTL_GET_LOGICAL_DEVICES,
+ &count, sizeof(HPT_U32), pIds, sizeof(DEVICEID)*nMaxCount))
+ return -1;
+
+ nMaxCount = (int)pIds[0];
+ for (i=0; i<nMaxCount; i++) pIds[i] = pIds[i+1];
+ return nMaxCount;
+}
+
+static int hpt_get_device_info_v3(DEVICEID id, PLOGICAL_DEVICE_INFO_V3 pInfo)
+{
+ return HPT_DO_IOCTL(HPT_IOCTL_GET_DEVICE_INFO_V3,
+ &id, sizeof(DEVICEID), pInfo, sizeof(LOGICAL_DEVICE_INFO_V3));
+}
+
+/* not belong to this file logically, but we want to use ioctl interface */
+static int __hpt_stop_tasks(PVBUS_EXT vbus_ext, DEVICEID id)
+{
+ LOGICAL_DEVICE_INFO_V3 devinfo;
+ int i, result;
+ DEVICEID param[2] = { id, 0 };
+
+ if (hpt_get_device_info_v3(id, &devinfo))
+ return -1;
+
+ if (devinfo.Type!=LDT_ARRAY)
+ return -1;
+
+ if (devinfo.u.array.Flags & ARRAY_FLAG_REBUILDING)
+ param[1] = AS_REBUILD_ABORT;
+ else if (devinfo.u.array.Flags & ARRAY_FLAG_VERIFYING)
+ param[1] = AS_VERIFY_ABORT;
+ else if (devinfo.u.array.Flags & ARRAY_FLAG_INITIALIZING)
+ param[1] = AS_INITIALIZE_ABORT;
+ else if (devinfo.u.array.Flags & ARRAY_FLAG_TRANSFORMING)
+ param[1] = AS_TRANSFORM_ABORT;
+ else
+ return -1;
+
+ KdPrint(("SET_ARRAY_STATE(%x, %d)", param[0], param[1]));
+ result = HPT_DO_IOCTL(HPT_IOCTL_SET_ARRAY_STATE,
+ param, sizeof(param), 0, 0);
+
+ for (i=0; i<devinfo.u.array.nDisk; i++)
+ if (DEVICEID_VALID(devinfo.u.array.Members[i]))
+ __hpt_stop_tasks(vbus_ext, devinfo.u.array.Members[i]);
+
+ return result;
+}
+
+static void hpt_stop_tasks(PVBUS_EXT vbus_ext)
+{
+ DEVICEID ids[32];
+ int i, count;
+
+ count = hpt_get_logical_devices((DEVICEID *)&ids, sizeof(ids)/sizeof(ids[0]));
+
+ for (i=0; i<count; i++)
+ __hpt_stop_tasks(vbus_ext, ids[i]);
+}
+
+static d_open_t hpt_open;
+static d_close_t hpt_close;
+static d_ioctl_t hpt_ioctl;
+static void hpt_bus_scan_cb(struct cam_periph *periph, union ccb *ccb);
+static int hpt_rescan_bus(void);
+
+static struct cdevsw hpt_cdevsw = {
+ .d_open = hpt_open,
+ .d_close = hpt_close,
+ .d_ioctl = hpt_ioctl,
+ .d_name = driver_name,
+#if __FreeBSD_version>=503000
+ .d_version = D_VERSION,
+#endif
+#if (__FreeBSD_version>=503000 && __FreeBSD_version<600034)
+ .d_flags = D_NEEDGIANT,
+#endif
+#if __FreeBSD_version<600034
+#if __FreeBSD_version>501000
+ .d_maj = MAJOR_AUTO,
+#else
+ .d_maj = HPT_DEV_MAJOR,
+#endif
+#endif
+};
+
+static struct intr_config_hook hpt_ich;
+
+/*
+ * hpt_final_init will be called after all hpt_attach.
+ */
+static void hpt_final_init(void *dummy)
+{
+ int i;
+ PVBUS_EXT vbus_ext;
+ PVBUS vbus;
+ PHBA hba;
+
+ /* Clear the config hook */
+ config_intrhook_disestablish(&hpt_ich);
+
+ /* allocate memory */
+ i = 0;
+ ldm_for_each_vbus(vbus, vbus_ext) {
+ if (hpt_alloc_mem(vbus_ext)) {
+ os_printk("out of memory");
+ return;
+ }
+ i++;
+ }
+
+ if (!i) {
+ os_printk("no controller detected.");
+ return;
+ }
+
+ /* initializing hardware */
+ ldm_for_each_vbus(vbus, vbus_ext) {
+ /* make timer available here */
+ callout_handle_init(&vbus_ext->timer);
+ if (hpt_init_vbus(vbus_ext)) {
+ os_printk("fail to initialize hardware");
+ break; /* FIXME */
+ }
+ }
+
+ /* register CAM interface */
+ ldm_for_each_vbus(vbus, vbus_ext) {
+ struct cam_devq *devq;
+ struct ccb_setasync ccb;
+
+#if (__FreeBSD_version >= 500000)
+ mtx_init(&vbus_ext->lock, "hptsleeplock", NULL, MTX_DEF);
+#endif
+ if (bus_dma_tag_create(NULL,/* parent */
+ 4, /* alignment */
+ BUS_SPACE_MAXADDR_32BIT+1, /* boundary */
+ BUS_SPACE_MAXADDR, /* lowaddr */
+ BUS_SPACE_MAXADDR, /* highaddr */
+ NULL, NULL, /* filter, filterarg */
+ PAGE_SIZE * (os_max_sg_descriptors-1), /* maxsize */
+ os_max_sg_descriptors, /* nsegments */
+ 0x10000, /* maxsegsize */
+ BUS_DMA_WAITOK, /* flags */
+#if __FreeBSD_version>502000
+ busdma_lock_mutex, /* lockfunc */
+ &vbus_ext->lock, /* lockfuncarg */
+#endif
+ &vbus_ext->io_dmat /* tag */))
+ {
+ return ;
+ }
+
+ for (i=0; i<os_max_queue_comm; i++) {
+ POS_CMDEXT ext = (POS_CMDEXT)malloc(sizeof(OS_CMDEXT), M_DEVBUF, M_WAITOK);
+ if (!ext) {
+ os_printk("Can't alloc cmdext(%d)", i);
+ return ;
+ }
+ ext->vbus_ext = vbus_ext;
+ ext->next = vbus_ext->cmdext_list;
+ vbus_ext->cmdext_list = ext;
+
+ if (bus_dmamap_create(vbus_ext->io_dmat, 0, &ext->dma_map)) {
+ os_printk("Can't create dma map(%d)", i);
+ return ;
+ }
+ }
+
+ if ((devq = cam_simq_alloc(os_max_queue_comm)) == NULL) {
+ os_printk("cam_simq_alloc failed");
+ return ;
+ }
+
+#if __FreeBSD_version > 700025
+ vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
+ vbus_ext, 0, &Giant, os_max_queue_comm, /*tagged*/8, devq);
+#else
+ vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
+ vbus_ext, 0, os_max_queue_comm, /*tagged*/8, devq);
+#endif
+
+ if (!vbus_ext->sim) {
+ os_printk("cam_sim_alloc failed");
+ cam_simq_free(devq);
+ return ;
+ }
+
+#if __FreeBSD_version > 700044
+ if (xpt_bus_register(vbus_ext->sim, NULL, 0) != CAM_SUCCESS) {
+#else
+ if (xpt_bus_register(vbus_ext->sim, 0) != CAM_SUCCESS) {
+#endif
+ os_printk("xpt_bus_register failed");
+ cam_sim_free(vbus_ext->sim, /*free devq*/ TRUE);
+ vbus_ext->sim = NULL;
+ return ;
+ }
+
+ if (xpt_create_path(&vbus_ext->path, /*periph */ NULL,
+ cam_sim_path(vbus_ext->sim), CAM_TARGET_WILDCARD,
+ CAM_LUN_WILDCARD) != CAM_REQ_CMP)
+ {
+ os_printk("xpt_create_path failed");
+ xpt_bus_deregister(cam_sim_path(vbus_ext->sim));
+ cam_sim_free(vbus_ext->sim, /*free_devq*/TRUE);
+ vbus_ext->sim = NULL;
+ return ;
+ }
+
+ xpt_setup_ccb(&ccb.ccb_h, vbus_ext->path, /*priority*/5);
+ ccb.ccb_h.func_code = XPT_SASYNC_CB;
+ ccb.event_enable = AC_LOST_DEVICE;
+ ccb.callback = hpt_async;
+ ccb.callback_arg = vbus_ext;
+ xpt_action((union ccb *)&ccb);
+
+ for (hba = vbus_ext->hba_list; hba; hba = hba->next) {
+ int rid = 0;
+ if ((hba->irq_res = bus_alloc_resource(hba->pcidev,
+ SYS_RES_IRQ, &rid, 0, ~0ul, 1, RF_SHAREABLE | RF_ACTIVE)) == NULL)
+ {
+ os_printk("can't allocate interrupt");
+ return ;
+ }
+
+ if (bus_setup_intr(hba->pcidev, hba->irq_res, INTR_TYPE_CAM,
+#if __FreeBSD_version > 700025
+ NULL, hpt_pci_intr, vbus_ext, &hba->irq_handle))
+#else
+ hpt_pci_intr, vbus_ext, &hba->irq_handle))
+#endif
+ {
+ os_printk("can't set up interrupt");
+ return ;
+ }
+ hba->ldm_adapter.him->intr_control(hba->ldm_adapter.him_handle, HPT_TRUE);
+
+ }
+
+ vbus_ext->shutdown_eh = EVENTHANDLER_REGISTER(shutdown_final,
+ hpt_shutdown_vbus, vbus_ext, SHUTDOWN_PRI_DEFAULT);
+ if (!vbus_ext->shutdown_eh)
+ os_printk("Shutdown event registration failed");
+ }
+
+ ldm_for_each_vbus(vbus, vbus_ext) {
+ TASK_INIT(&vbus_ext->worker, 0, (task_fn_t *)hpt_do_tasks, vbus_ext);
+ if (vbus_ext->tasks)
+ TASK_ENQUEUE(&vbus_ext->worker);
+ }
+
+ make_dev(&hpt_cdevsw, DRIVER_MINOR, UID_ROOT, GID_OPERATOR,
+ S_IRUSR | S_IWUSR, driver_name);
+}
+
+#if defined(KLD_MODULE) && (__FreeBSD_version >= 503000)
+
+typedef struct driverlink *driverlink_t;
+struct driverlink {
+ kobj_class_t driver;
+ TAILQ_ENTRY(driverlink) link; /* list of drivers in devclass */
+};
+
+typedef TAILQ_HEAD(driver_list, driverlink) driver_list_t;
+
+struct devclass {
+ TAILQ_ENTRY(devclass) link;
+ devclass_t parent; /* parent in devclass hierarchy */
+ driver_list_t drivers; /* bus devclasses store drivers for bus */
+ char *name;
+ device_t *devices; /* array of devices indexed by unit */
+ int maxunit; /* size of devices array */
+};
+
+static void override_kernel_driver(void)
+{
+ driverlink_t dl, dlfirst;
+ driver_t *tmpdriver;
+ devclass_t dc = devclass_find("pci");
+
+ if (dc){
+ dlfirst = TAILQ_FIRST(&dc->drivers);
+ for (dl = dlfirst; dl; dl = TAILQ_NEXT(dl, link)) {
+ if(strcmp(dl->driver->name, driver_name) == 0) {
+ tmpdriver=dl->driver;
+ dl->driver=dlfirst->driver;
+ dlfirst->driver=tmpdriver;
+ break;
+ }
+ }
+ }
+}
+
+#else
+#define override_kernel_driver()
+#endif
+
+static void hpt_init(void *dummy)
+{
+ os_printk("%s %s", driver_name_long, driver_ver);
+
+ override_kernel_driver();
+ init_config();
+
+ hpt_ich.ich_func = hpt_final_init;
+ hpt_ich.ich_arg = NULL;
+ if (config_intrhook_establish(&hpt_ich) != 0) {
+ printf("%s: cannot establish configuration hook\n",
+ driver_name_long);
+ }
+
+}
+SYSINIT(hptinit, SI_SUB_CONFIGURE, SI_ORDER_FIRST, hpt_init, NULL);
+
+/*
+ * CAM driver interface
+ */
+static device_method_t driver_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, hpt_probe),
+ DEVMETHOD(device_attach, hpt_attach),
+ DEVMETHOD(device_detach, hpt_detach),
+ DEVMETHOD(device_shutdown, hpt_shutdown),
+ { 0, 0 }
+};
+
+static driver_t hpt_pci_driver = {
+ driver_name,
+ driver_methods,
+ sizeof(HBA)
+};
+
+static devclass_t hpt_devclass;
+
+#ifndef TARGETNAME
+#error "no TARGETNAME found"
+#endif
+
+/* use this to make TARGETNAME be expanded */
+#define __DRIVER_MODULE(p1, p2, p3, p4, p5, p6) DRIVER_MODULE(p1, p2, p3, p4, p5, p6)
+#define __MODULE_VERSION(p1, p2) MODULE_VERSION(p1, p2)
+#define __MODULE_DEPEND(p1, p2, p3, p4, p5) MODULE_DEPEND(p1, p2, p3, p4, p5)
+__DRIVER_MODULE(TARGETNAME, pci, hpt_pci_driver, hpt_devclass, 0, 0);
+__MODULE_VERSION(TARGETNAME, 1);
+__MODULE_DEPEND(TARGETNAME, cam, 1, 1, 1);
+
+#if __FreeBSD_version>503000
+typedef struct cdev * ioctl_dev_t;
+#else
+typedef dev_t ioctl_dev_t;
+#endif
+
+#if __FreeBSD_version >= 500000
+typedef struct thread * ioctl_thread_t;
+#else
+typedef struct proc * ioctl_thread_t;
+#endif
+
+static int hpt_open(ioctl_dev_t dev, int flags, int devtype, ioctl_thread_t td)
+{
+ return 0;
+}
+
+static int hpt_close(ioctl_dev_t dev, int flags, int devtype, ioctl_thread_t td)
+{
+ return 0;
+}
+
+static int hpt_ioctl(ioctl_dev_t dev, u_long cmd, caddr_t data, int fflag, ioctl_thread_t td)
+{
+ PHPT_IOCTL_PARAM piop=(PHPT_IOCTL_PARAM)data;
+ IOCTL_ARG ioctl_args;
+ HPT_U32 bytesReturned;
+
+ switch (cmd){
+ case HPT_DO_IOCONTROL:
+ {
+ if (piop->Magic == HPT_IOCTL_MAGIC || piop->Magic == HPT_IOCTL_MAGIC32) {
+ KdPrint(("ioctl=%x in=%p len=%d out=%p len=%d\n",
+ piop->dwIoControlCode,
+ piop->lpInBuffer,
+ piop->nInBufferSize,
+ piop->lpOutBuffer,
+ piop->nOutBufferSize));
+
+ memset(&ioctl_args, 0, sizeof(ioctl_args));
+
+ ioctl_args.dwIoControlCode = piop->dwIoControlCode;
+ ioctl_args.nInBufferSize = piop->nInBufferSize;
+ ioctl_args.nOutBufferSize = piop->nOutBufferSize;
+ ioctl_args.lpBytesReturned = &bytesReturned;
+
+ if (ioctl_args.nInBufferSize) {
+ ioctl_args.lpInBuffer = malloc(ioctl_args.nInBufferSize, M_DEVBUF, M_WAITOK);
+ if (!ioctl_args.lpInBuffer)
+ goto invalid;
+ if (copyin((void*)piop->lpInBuffer,
+ ioctl_args.lpInBuffer, piop->nInBufferSize))
+ goto invalid;
+ }
+
+ if (ioctl_args.nOutBufferSize) {
+ ioctl_args.lpOutBuffer = malloc(ioctl_args.nOutBufferSize, M_DEVBUF, M_WAITOK);
+ if (!ioctl_args.lpOutBuffer)
+ goto invalid;
+ }
+
+#if (__FreeBSD_version >= 500000)
+ mtx_lock(&Giant);
+#endif
+
+ hpt_do_ioctl(&ioctl_args);
+
+#if (__FreeBSD_version >= 500000)
+ mtx_unlock(&Giant);
+#endif
+
+ if (ioctl_args.result==HPT_IOCTL_RESULT_OK) {
+ if (piop->nOutBufferSize) {
+ if (copyout(ioctl_args.lpOutBuffer,
+ (void*)piop->lpOutBuffer, piop->nOutBufferSize))
+ goto invalid;
+ }
+ if (piop->lpBytesReturned) {
+ if (copyout(&bytesReturned,
+ (void*)piop->lpBytesReturned, sizeof(HPT_U32)))
+ goto invalid;
+ }
+ if (ioctl_args.lpInBuffer) free(ioctl_args.lpInBuffer, M_DEVBUF);
+ if (ioctl_args.lpOutBuffer) free(ioctl_args.lpOutBuffer, M_DEVBUF);
+ return 0;
+ }
+invalid:
+ if (ioctl_args.lpInBuffer) free(ioctl_args.lpInBuffer, M_DEVBUF);
+ if (ioctl_args.lpOutBuffer) free(ioctl_args.lpOutBuffer, M_DEVBUF);
+ return EFAULT;
+ }
+ return EFAULT;
+ }
+
+ case HPT_SCAN_BUS:
+ {
+ return hpt_rescan_bus();
+ }
+ default:
+ KdPrint(("invalid command!"));
+ return EFAULT;
+ }
+
+}
+
+static int hpt_rescan_bus(void)
+{
+ struct cam_path *path;
+ union ccb *ccb;
+ PVBUS vbus;
+ PVBUS_EXT vbus_ext;
+
+#if (__FreeBSD_version >= 500000)
+ mtx_lock(&Giant);
+#endif
+
+ ldm_for_each_vbus(vbus, vbus_ext) {
+ if (xpt_create_path(&path, xpt_periph, cam_sim_path(vbus_ext->sim),
+ CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP)
+ return(EIO);
+ if ((ccb = malloc(sizeof(union ccb), M_TEMP, M_WAITOK)) == NULL)
+ return(ENOMEM);
+ bzero(ccb, sizeof(union ccb));
+ xpt_setup_ccb(&ccb->ccb_h, path, 5);
+ ccb->ccb_h.func_code = XPT_SCAN_BUS;
+ ccb->ccb_h.cbfcnp = hpt_bus_scan_cb;
+ ccb->crcn.flags = CAM_FLAG_NONE;
+ xpt_action(ccb);
+ }
+
+#if (__FreeBSD_version >= 500000)
+ mtx_unlock(&Giant);
+#endif
+
+ return(0);
+}
+
+static void hpt_bus_scan_cb(struct cam_periph *periph, union ccb *ccb)
+{
+ if (ccb->ccb_h.status != CAM_REQ_CMP)
+ KdPrint(("cam_scan_callback: failure status = %x",ccb->ccb_h.status));
+ else
+ KdPrint(("Scan bus successfully!"));
+
+ xpt_free_path(ccb->ccb_h.path);
+ free(ccb, M_TEMP);
+ return;
+}
diff --git a/sys/dev/hpt27xx/wj.h b/sys/dev/hpt27xx/wj.h
new file mode 100644
index 0000000..7f2a9c9c
--- /dev/null
+++ b/sys/dev/hpt27xx/wj.h
@@ -0,0 +1,56 @@
+/*-
+ * Copyright (c) 2011 HighPoint Technologies, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <dev/hpt27xx/hpt27xx_config.h>
+/*
+ * NVRAM write journaling interface.
+ */
+
+#ifndef _WJ_H_
+#define _WJ_H_
+
+#if defined(SUPPORT_BBU) || defined(SUPPORT_NVRAM)
+
+void wj_init(PVBUS vbus, void *nvram_addr, HPT_U32 nvram_size);
+void *wj_add_entry(PVBUS vbus, PVDEV vd, HPT_LBA lba, HPT_U16 sectors);
+void *wj_get_entry(PVBUS vbus, PVDEV *vd_p, HPT_LBA *lba_p, HPT_U16 *sectors_p);
+void wj_del_entry(PVBUS vbus, void *handle);
+void wj_del_vd(PVBUS vbus, PVDEV vd);
+void wj_sync_stamp(PVBUS vbus, PVDEV vd);
+
+#else
+
+#define wj_add_entry(vbus, vd, lba, sectors) 0
+#define wj_get_entry(vbus, vd_p, lba_p, sectors_p) 0
+#define wj_del_entry(vbus, handle) 0
+#define wj_del_vd(vbus, vd) 0
+#define wj_sync_stamp(vbus, vd) 0
+
+#endif
+
+#endif
diff --git a/sys/dev/hptiop/hptiop.c b/sys/dev/hptiop/hptiop.c
index c4e2427..035cf07 100644
--- a/sys/dev/hptiop/hptiop.c
+++ b/sys/dev/hptiop/hptiop.c
@@ -1813,11 +1813,15 @@ scsi_done:
break;
case XPT_CALC_GEOMETRY:
+#if __FreeBSD_version >= 500000
+ cam_calc_geometry(&ccb->ccg, 1);
+#else
ccb->ccg.heads = 255;
ccb->ccg.secs_per_track = 63;
ccb->ccg.cylinders = ccb->ccg.volume_size /
(ccb->ccg.heads * ccb->ccg.secs_per_track);
ccb->ccb_h.status = CAM_REQ_CMP;
+#endif
break;
case XPT_PATH_INQ:
diff --git a/sys/dev/hptmv/entry.c b/sys/dev/hptmv/entry.c
index b1b4f24..4c61e65 100644
--- a/sys/dev/hptmv/entry.c
+++ b/sys/dev/hptmv/entry.c
@@ -22,9 +22,10 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD$
*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
@@ -94,7 +95,7 @@ static device_method_t driver_methods[] = {
DEVMETHOD(device_detach, hpt_detach),
DEVMETHOD(device_shutdown, hpt_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t hpt_pci_driver = {
@@ -2371,7 +2372,10 @@ hpt_action(struct cam_sim *sim, union ccb *ccb)
break;
case XPT_CALC_GEOMETRY:
- {
+#if __FreeBSD_version >= 500000
+ cam_calc_geometry(&ccb->ccg, 1);
+#else
+ {
struct ccb_calc_geometry *ccg;
u_int32_t size_mb;
u_int32_t secs_per_cylinder;
@@ -2389,9 +2393,10 @@ hpt_action(struct cam_sim *sim, union ccb *ccb)
secs_per_cylinder = ccg->heads * ccg->secs_per_track;
ccg->cylinders = ccg->volume_size / secs_per_cylinder;
ccb->ccb_h.status = CAM_REQ_CMP;
+ }
+#endif
xpt_done(ccb);
break;
- }
case XPT_PATH_INQ: /* Path routing inquiry */
{
diff --git a/sys/dev/hptrr/hptrr_osm_bsd.c b/sys/dev/hptrr/hptrr_osm_bsd.c
index 0469791..1f6b19a 100644
--- a/sys/dev/hptrr/hptrr_osm_bsd.c
+++ b/sys/dev/hptrr/hptrr_osm_bsd.c
@@ -22,9 +22,11 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD$
*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include <dev/hptrr/hptrr_config.h>
/* $Id: osm_bsd.c,v 1.27 2007/11/22 07:35:49 gmm Exp $
*
@@ -795,10 +797,14 @@ static void hpt_action(struct cam_sim *sim, union ccb *ccb)
break;
case XPT_CALC_GEOMETRY:
+#if __FreeBSD_version >= 500000
+ cam_calc_geometry(&ccb->ccg, 1);
+#else
ccb->ccg.heads = 255;
ccb->ccg.secs_per_track = 63;
ccb->ccg.cylinders = ccb->ccg.volume_size / (ccb->ccg.heads * ccb->ccg.secs_per_track);
ccb->ccb_h.status = CAM_REQ_CMP;
+#endif
break;
case XPT_PATH_INQ:
@@ -1250,7 +1256,7 @@ static device_method_t driver_methods[] = {
DEVMETHOD(device_attach, hpt_attach),
DEVMETHOD(device_detach, hpt_detach),
DEVMETHOD(device_shutdown, hpt_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t hpt_pci_driver = {
diff --git a/sys/dev/hwpmc/hwpmc_amd.c b/sys/dev/hwpmc/hwpmc_amd.c
index 268904b..9ffa62f 100644
--- a/sys/dev/hwpmc/hwpmc_amd.c
+++ b/sys/dev/hwpmc/hwpmc_amd.c
@@ -889,7 +889,6 @@ pmc_amd_initialize(void)
* field returned by CPUID for instruction family >= 6.
*/
- class = cputype = -1;
name = NULL;
switch (cpu_id & 0xF00) {
#if defined(__i386__)
@@ -906,9 +905,8 @@ pmc_amd_initialize(void)
class = PMC_CLASS_K8;
name = "K8";
break;
- }
- if ((int) cputype == -1) {
+ default:
(void) printf("pmc: Unknown AMD CPU.\n");
return NULL;
}
diff --git a/sys/dev/hwpmc/hwpmc_core.c b/sys/dev/hwpmc/hwpmc_core.c
index 01bd482..207d68b 100644
--- a/sys/dev/hwpmc/hwpmc_core.c
+++ b/sys/dev/hwpmc/hwpmc_core.c
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
#include <machine/apicvar.h>
#include <machine/cpu.h>
#include <machine/cpufunc.h>
+#include <machine/md_var.h>
#include <machine/specialreg.h>
#define CORE_CPUID_REQUEST 0xA
@@ -1479,6 +1480,10 @@ iap_event_westmere_ok_on_counter(enum pmc_event pe, int ri)
/*
* Events valid only on counter 0.
*/
+ case PMC_EV_IAP_EVENT_60H_01H:
+ case PMC_EV_IAP_EVENT_60H_02H:
+ case PMC_EV_IAP_EVENT_60H_04H:
+ case PMC_EV_IAP_EVENT_60H_08H:
case PMC_EV_IAP_EVENT_B3H_01H:
case PMC_EV_IAP_EVENT_B3H_02H:
case PMC_EV_IAP_EVENT_B3H_04H:
@@ -1488,6 +1493,10 @@ iap_event_westmere_ok_on_counter(enum pmc_event pe, int ri)
/*
* Events valid only on counter 0, 1.
*/
+ case PMC_EV_IAP_EVENT_4CH_01H:
+ case PMC_EV_IAP_EVENT_4EH_01H:
+ case PMC_EV_IAP_EVENT_4EH_02H:
+ case PMC_EV_IAP_EVENT_4EH_04H:
case PMC_EV_IAP_EVENT_51H_01H:
case PMC_EV_IAP_EVENT_51H_02H:
case PMC_EV_IAP_EVENT_51H_04H:
@@ -1545,7 +1554,7 @@ static int
iap_allocate_pmc(int cpu, int ri, struct pmc *pm,
const struct pmc_op_pmcallocate *a)
{
- int n;
+ int n, model;
enum pmc_event ev;
struct iap_event_descr *ie;
uint32_t c, caps, config, cpuflag, evsel, mask;
@@ -1565,6 +1574,16 @@ iap_allocate_pmc(int cpu, int ri, struct pmc *pm,
if (iap_architectural_event_is_unsupported(ev))
return (EOPNOTSUPP);
+ /*
+ * A small number of events are not supported in all the
+ * processors based on a given microarchitecture.
+ */
+ if (ev == PMC_EV_IAP_EVENT_0FH_01H || ev == PMC_EV_IAP_EVENT_0FH_80H) {
+ model = ((cpu_id & 0xF0000) >> 12) | ((cpu_id & 0xF0) >> 4);
+ if (core_cputype == PMC_CPU_INTEL_COREI7 && model != 0x2E)
+ return (EINVAL);
+ }
+
switch (core_cputype) {
case PMC_CPU_INTEL_COREI7:
if (iap_event_corei7_ok_on_counter(ev, ri) == 0)
@@ -1702,7 +1721,7 @@ iap_allocate_pmc(int cpu, int ri, struct pmc *pm,
if (core_cputype == PMC_CPU_INTEL_COREI7 &&
ev == PMC_EV_IAP_EVENT_BBH_01H)
return (EINVAL);
- if ( a->pm_md.pm_iap.pm_iap_rsp & ~IA_OFFCORE_RSP_MASK)
+ if (a->pm_md.pm_iap.pm_iap_rsp & ~IA_OFFCORE_RSP_MASK)
return (EINVAL);
pm->pm_md.pm_iap.pm_iap_rsp =
a->pm_md.pm_iap.pm_iap_rsp & IA_OFFCORE_RSP_MASK;
diff --git a/sys/dev/hwpmc/hwpmc_powerpc.c b/sys/dev/hwpmc/hwpmc_powerpc.c
index ce1caf6..8e97b97 100644
--- a/sys/dev/hwpmc/hwpmc_powerpc.c
+++ b/sys/dev/hwpmc/hwpmc_powerpc.c
@@ -1,4 +1,5 @@
/*-
+ * Copyright (c) 2011 Justin Hibbits
* Copyright (c) 2005, Joseph Koshy
* All rights reserved.
*
@@ -30,20 +31,297 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/pmc.h>
+#include <sys/pmckern.h>
+#include <sys/systm.h>
#include <machine/pmc_mdep.h>
+#include <machine/spr.h>
+#include <machine/cpu.h>
-struct pmc_mdep *
-pmc_md_initialize()
-{
- return NULL;
-}
+#define POWERPC_PMC_CAPS (PMC_CAP_INTERRUPT | PMC_CAP_USER | \
+ PMC_CAP_SYSTEM | PMC_CAP_EDGE | \
+ PMC_CAP_THRESHOLD | PMC_CAP_READ | \
+ PMC_CAP_WRITE | PMC_CAP_INVERT | \
+ PMC_CAP_QUALIFIER)
-void
-pmc_md_finalize(struct pmc_mdep *md)
-{
- (void) md;
-}
+#define PPC_SET_PMC1SEL(r, x) ((r & ~(SPR_MMCR0_PMC1SEL(0x3f))) | SPR_MMCR0_PMC1SEL(x))
+#define PPC_SET_PMC2SEL(r, x) ((r & ~(SPR_MMCR0_PMC2SEL(0x3f))) | SPR_MMCR0_PMC2SEL(x))
+#define PPC_SET_PMC3SEL(r, x) ((r & ~(SPR_MMCR1_PMC3SEL(0x1f))) | SPR_MMCR1_PMC3SEL(x))
+#define PPC_SET_PMC4SEL(r, x) ((r & ~(SPR_MMCR1_PMC4SEL(0x1f))) | SPR_MMCR1_PMC4SEL(x))
+#define PPC_SET_PMC5SEL(r, x) ((r & ~(SPR_MMCR1_PMC5SEL(0x1f))) | SPR_MMCR1_PMC5SEL(x))
+#define PPC_SET_PMC6SEL(r, x) ((r & ~(SPR_MMCR1_PMC6SEL(0x3f))) | SPR_MMCR1_PMC6SEL(x))
+
+/* Change this when we support more than just the 7450. */
+#define PPC_MAX_PMCS 6
+
+#define POWERPC_PMC_KERNEL_ENABLE (0x1 << 30)
+#define POWERPC_PMC_USER_ENABLE (0x1 << 31)
+
+#define POWERPC_PMC_ENABLE (POWERPC_PMC_KERNEL_ENABLE | POWERPC_PMC_USER_ENABLE)
+#define POWERPC_RELOAD_COUNT_TO_PERFCTR_VALUE(V) (0x80000000-(V))
+#define POWERPC_PERFCTR_VALUE_TO_RELOAD_COUNT(P) ((P)-0x80000000)
+#define POWERPC_PMC_HAS_OVERFLOWED(x) (powerpc_pmcn_read(x) & (0x1 << 31))
+
+
+/*
+ * This should work for every 32-bit PowerPC implementation I know of (G3 and G4
+ * specifically). PoewrPC 970 will take more work.
+ */
+
+/*
+ * Per-processor information.
+ */
+struct powerpc_cpu {
+ struct pmc_hw *pc_ppcpmcs;
+};
+
+static struct powerpc_cpu **powerpc_pcpu;
+
+struct powerpc_event_code_map {
+ enum pmc_event pe_ev; /* enum value */
+ uint8_t pe_counter_mask; /* Which counter this can be counted in. */
+ uint8_t pe_code; /* numeric code */
+};
+
+#define PPC_PMC_MASK1 0
+#define PPC_PMC_MASK2 1
+#define PPC_PMC_MASK3 2
+#define PPC_PMC_MASK4 3
+#define PPC_PMC_MASK5 4
+#define PPC_PMC_MASK6 5
+#define PPC_PMC_MASK_ALL 0x3f
+
+#define PMC_POWERPC_EVENT(id, mask, number) \
+ { .pe_ev = PMC_EV_PPC7450_##id, .pe_counter_mask = mask, .pe_code = number }
+
+static struct powerpc_event_code_map powerpc_event_codes[] = {
+ PMC_POWERPC_EVENT(CYCLE,PPC_PMC_MASK_ALL, 1),
+ PMC_POWERPC_EVENT(INSTR_COMPLETED, 0x0f, 2),
+ PMC_POWERPC_EVENT(TLB_BIT_TRANSITIONS, 0x0f, 3),
+ PMC_POWERPC_EVENT(INSTR_DISPATCHED, 0x0f, 4),
+ PMC_POWERPC_EVENT(PMON_EXCEPT, 0x0f, 5),
+ PMC_POWERPC_EVENT(PMON_SIG, 0x0f, 7),
+ PMC_POWERPC_EVENT(VPU_INSTR_COMPLETED, 0x03, 8),
+ PMC_POWERPC_EVENT(VFPU_INSTR_COMPLETED, 0x03, 9),
+ PMC_POWERPC_EVENT(VIU1_INSTR_COMPLETED, 0x03, 10),
+ PMC_POWERPC_EVENT(VIU2_INSTR_COMPLETED, 0x03, 11),
+ PMC_POWERPC_EVENT(MTVSCR_INSTR_COMPLETED, 0x03, 12),
+ PMC_POWERPC_EVENT(MTVRSAVE_INSTR_COMPLETED, 0x03, 13),
+ PMC_POWERPC_EVENT(VPU_INSTR_WAIT_CYCLES, 0x03, 14),
+ PMC_POWERPC_EVENT(VFPU_INSTR_WAIT_CYCLES, 0x03, 15),
+ PMC_POWERPC_EVENT(VIU1_INSTR_WAIT_CYCLES, 0x03, 16),
+ PMC_POWERPC_EVENT(VIU2_INSTR_WAIT_CYCLES, 0x03, 17),
+ PMC_POWERPC_EVENT(MFVSCR_SYNC_CYCLES, 0x03, 18),
+ PMC_POWERPC_EVENT(VSCR_SAT_SET, 0x03, 19),
+ PMC_POWERPC_EVENT(STORE_INSTR_COMPLETED, 0x03, 20),
+ PMC_POWERPC_EVENT(L1_INSTR_CACHE_MISSES, 0x03, 21),
+ PMC_POWERPC_EVENT(L1_DATA_SNOOPS, 0x03, 22),
+ PMC_POWERPC_EVENT(UNRESOLVED_BRANCHES, 0x01, 23),
+ PMC_POWERPC_EVENT(SPEC_BUFFER_CYCLES, 0x01, 24),
+ PMC_POWERPC_EVENT(BRANCH_UNIT_STALL_CYCLES, 0x01, 25),
+ PMC_POWERPC_EVENT(TRUE_BRANCH_TARGET_HITS, 0x01, 26),
+ PMC_POWERPC_EVENT(BRANCH_LINK_STAC_PREDICTED, 0x01, 27),
+ PMC_POWERPC_EVENT(GPR_ISSUE_QUEUE_DISPATCHES, 0x01, 28),
+ PMC_POWERPC_EVENT(CYCLES_THREE_INSTR_DISPATCHED, 0x01, 29),
+ PMC_POWERPC_EVENT(THRESHOLD_INSTR_QUEUE_ENTRIES_CYCLES, 0x01, 30),
+ PMC_POWERPC_EVENT(THRESHOLD_VEC_INSTR_QUEUE_ENTRIES_CYCLES, 0x01, 31),
+ PMC_POWERPC_EVENT(CYCLES_NO_COMPLETED_INSTRS, 0x01, 32),
+ PMC_POWERPC_EVENT(IU2_INSTR_COMPLETED, 0x01, 33),
+ PMC_POWERPC_EVENT(BRANCHES_COMPLETED, 0x01, 34),
+ PMC_POWERPC_EVENT(EIEIO_INSTR_COMPLETED, 0x01, 35),
+ PMC_POWERPC_EVENT(MTSPR_INSTR_COMPLETED, 0x01, 36),
+ PMC_POWERPC_EVENT(SC_INSTR_COMPLETED, 0x01, 37),
+ PMC_POWERPC_EVENT(LS_LM_COMPLETED, 0x01, 38),
+ PMC_POWERPC_EVENT(ITLB_HW_TABLE_SEARCH_CYCLES, 0x01, 39),
+ PMC_POWERPC_EVENT(DTLB_HW_SEARCH_CYCLES_OVER_THRESHOLD, 0x01, 40),
+ PMC_POWERPC_EVENT(L1_INSTR_CACHE_ACCESSES, 0x01, 41),
+ PMC_POWERPC_EVENT(INSTR_BKPT_MATCHES, 0x01, 42),
+ PMC_POWERPC_EVENT(L1_DATA_CACHE_LOAD_MISS_CYCLES_OVER_THRESHOLD, 0x01, 43),
+ PMC_POWERPC_EVENT(L1_DATA_SNOOP_HIT_ON_MODIFIED, 0x01, 44),
+ PMC_POWERPC_EVENT(LOAD_MISS_ALIAS, 0x01, 45),
+ PMC_POWERPC_EVENT(LOAD_MISS_ALIAS_ON_TOUCH, 0x01, 46),
+ PMC_POWERPC_EVENT(TOUCH_ALIAS, 0x01, 47),
+ PMC_POWERPC_EVENT(L1_DATA_SNOOP_HIT_CASTOUT_QUEUE, 0x01, 48),
+ PMC_POWERPC_EVENT(L1_DATA_SNOOP_HIT_CASTOUT, 0x01, 49),
+ PMC_POWERPC_EVENT(L1_DATA_SNOOP_HITS, 0x01, 50),
+ PMC_POWERPC_EVENT(WRITE_THROUGH_STORES, 0x01, 51),
+ PMC_POWERPC_EVENT(CACHE_INHIBITED_STORES, 0x01, 52),
+ PMC_POWERPC_EVENT(L1_DATA_LOAD_HIT, 0x01, 53),
+ PMC_POWERPC_EVENT(L1_DATA_TOUCH_HIT, 0x01, 54),
+ PMC_POWERPC_EVENT(L1_DATA_STORE_HIT, 0x01, 55),
+ PMC_POWERPC_EVENT(L1_DATA_TOTAL_HITS, 0x01, 56),
+ PMC_POWERPC_EVENT(DST_INSTR_DISPATCHED, 0x01, 57),
+ PMC_POWERPC_EVENT(REFRESHED_DSTS, 0x01, 58),
+ PMC_POWERPC_EVENT(SUCCESSFUL_DST_TABLE_SEARCHES, 0x01, 59),
+ PMC_POWERPC_EVENT(DSS_INSTR_COMPLETED, 0x01, 60),
+ PMC_POWERPC_EVENT(DST_STREAM_0_CACHE_LINE_FETCHES, 0x01, 61),
+ PMC_POWERPC_EVENT(VTQ_SUSPENDS_DUE_TO_CTX_CHANGE, 0x01, 62),
+ PMC_POWERPC_EVENT(VTQ_LINE_FETCH_HIT, 0x01, 63),
+ PMC_POWERPC_EVENT(VEC_LOAD_INSTR_COMPLETED, 0x01, 64),
+ PMC_POWERPC_EVENT(FP_STORE_INSTR_COMPLETED_IN_LSU, 0x01, 65),
+ PMC_POWERPC_EVENT(FPU_RENORMALIZATION, 0x01, 66),
+ PMC_POWERPC_EVENT(FPU_DENORMALIZATION, 0x01, 67),
+ PMC_POWERPC_EVENT(FP_STORE_CAUSES_STALL_IN_LSU, 0x01, 68),
+ PMC_POWERPC_EVENT(LD_ST_TRUE_ALIAS_STALL, 0x01, 70),
+ PMC_POWERPC_EVENT(LSU_INDEXED_ALIAS_STALL, 0x01, 71),
+ PMC_POWERPC_EVENT(LSU_ALIAS_VS_FSQ_WB0_WB1, 0x01, 72),
+ PMC_POWERPC_EVENT(LSU_ALIAS_VS_CSQ, 0x01, 73),
+ PMC_POWERPC_EVENT(LSU_LOAD_HIT_LINE_ALIAS_VS_CSQ0, 0x01, 74),
+ PMC_POWERPC_EVENT(LSU_LOAD_MISS_LINE_ALIAS_VS_CSQ0, 0x01, 75),
+ PMC_POWERPC_EVENT(LSU_TOUCH_LINE_ALIAS_VS_FSQ_WB0_WB1, 0x01, 76),
+ PMC_POWERPC_EVENT(LSU_TOUCH_ALIAS_VS_CSQ, 0x01, 77),
+ PMC_POWERPC_EVENT(LSU_LMQ_FULL_STALL, 0x01, 78),
+ PMC_POWERPC_EVENT(FP_LOAD_INSTR_COMPLETED_IN_LSU, 0x01, 79),
+ PMC_POWERPC_EVENT(FP_LOAD_SINGLE_INSTR_COMPLETED_IN_LSU, 0x01, 80),
+ PMC_POWERPC_EVENT(FP_LOAD_DOUBLE_COMPLETED_IN_LSU, 0x01, 81),
+ PMC_POWERPC_EVENT(LSU_RA_LATCH_STALL, 0x01, 82),
+ PMC_POWERPC_EVENT(LSU_LOAD_VS_STORE_QUEUE_ALIAS_STALL, 0x01, 83),
+ PMC_POWERPC_EVENT(LSU_LMQ_INDEX_ALIAS, 0x01, 84),
+ PMC_POWERPC_EVENT(LSU_STORE_QUEUE_INDEX_ALIAS, 0x01, 85),
+ PMC_POWERPC_EVENT(LSU_CSQ_FORWARDING, 0x01, 86),
+ PMC_POWERPC_EVENT(LSU_MISALIGNED_LOAD_FINISH, 0x01, 87),
+ PMC_POWERPC_EVENT(LSU_MISALIGN_STORE_COMPLETED, 0x01, 88),
+ PMC_POWERPC_EVENT(LSU_MISALIGN_STALL, 0x01, 89),
+ PMC_POWERPC_EVENT(FP_ONE_QUARTER_FPSCR_RENAMES_BUSY, 0x01, 90),
+ PMC_POWERPC_EVENT(FP_ONE_HALF_FPSCR_RENAMES_BUSY, 0x01, 91),
+ PMC_POWERPC_EVENT(FP_THREE_QUARTERS_FPSCR_RENAMES_BUSY, 0x01, 92),
+ PMC_POWERPC_EVENT(FP_ALL_FPSCR_RENAMES_BUSY, 0x01, 93),
+ PMC_POWERPC_EVENT(FP_DENORMALIZED_RESULT, 0x01, 94),
+ PMC_POWERPC_EVENT(L1_DATA_TOTAL_MISSES, 0x02, 23),
+ PMC_POWERPC_EVENT(DISPATCHES_TO_FPR_ISSUE_QUEUE, 0x02, 24),
+ PMC_POWERPC_EVENT(LSU_INSTR_COMPLETED, 0x02, 25),
+ PMC_POWERPC_EVENT(LOAD_INSTR_COMPLETED, 0x02, 26),
+ PMC_POWERPC_EVENT(SS_SM_INSTR_COMPLETED, 0x02, 27),
+ PMC_POWERPC_EVENT(TLBIE_INSTR_COMPLETED, 0x02, 28),
+ PMC_POWERPC_EVENT(LWARX_INSTR_COMPLETED, 0x02, 29),
+ PMC_POWERPC_EVENT(MFSPR_INSTR_COMPLETED, 0x02, 30),
+ PMC_POWERPC_EVENT(REFETCH_SERIALIZATION, 0x02, 31),
+ PMC_POWERPC_EVENT(COMPLETION_QUEUE_ENTRIES_OVER_THRESHOLD, 0x02, 32),
+ PMC_POWERPC_EVENT(CYCLES_ONE_INSTR_DISPATCHED, 0x02, 33),
+ PMC_POWERPC_EVENT(CYCLES_TWO_INSTR_COMPLETED, 0x02, 34),
+ PMC_POWERPC_EVENT(ITLB_NON_SPECULATIVE_MISSES, 0x02, 35),
+ PMC_POWERPC_EVENT(CYCLES_WAITING_FROM_L1_INSTR_CACHE_MISS, 0x02, 36),
+ PMC_POWERPC_EVENT(L1_DATA_LOAD_ACCESS_MISS, 0x02, 37),
+ PMC_POWERPC_EVENT(L1_DATA_TOUCH_MISS, 0x02, 38),
+ PMC_POWERPC_EVENT(L1_DATA_STORE_MISS, 0x02, 39),
+ PMC_POWERPC_EVENT(L1_DATA_TOUCH_MISS_CYCLES, 0x02, 40),
+ PMC_POWERPC_EVENT(L1_DATA_CYCLES_USED, 0x02, 41),
+ PMC_POWERPC_EVENT(DST_STREAM_1_CACHE_LINE_FETCHES, 0x02, 42),
+ PMC_POWERPC_EVENT(VTQ_STREAM_CANCELED_PREMATURELY, 0x02, 43),
+ PMC_POWERPC_EVENT(VTQ_RESUMES_DUE_TO_CTX_CHANGE, 0x02, 44),
+ PMC_POWERPC_EVENT(VTQ_LINE_FETCH_MISS, 0x02, 45),
+ PMC_POWERPC_EVENT(VTQ_LINE_FETCH, 0x02, 46),
+ PMC_POWERPC_EVENT(TLBIE_SNOOPS, 0x02, 47),
+ PMC_POWERPC_EVENT(L1_INSTR_CACHE_RELOADS, 0x02, 48),
+ PMC_POWERPC_EVENT(L1_DATA_CACHE_RELOADS, 0x02, 49),
+ PMC_POWERPC_EVENT(L1_DATA_CACHE_CASTOUTS_TO_L2, 0x02, 50),
+ PMC_POWERPC_EVENT(STORE_MERGE_GATHER, 0x02, 51),
+ PMC_POWERPC_EVENT(CACHEABLE_STORE_MERGE_TO_32_BYTES, 0x02, 52),
+ PMC_POWERPC_EVENT(DATA_BKPT_MATCHES, 0x02, 53),
+ PMC_POWERPC_EVENT(FALL_THROUGH_BRANCHES_PROCESSED, 0x02, 54),
+ PMC_POWERPC_EVENT(FIRST_SPECULATIVE_BRANCH_BUFFER_RESOLVED_CORRECTLY, 0x02, 55),
+ PMC_POWERPC_EVENT(SECOND_SPECULATION_BUFFER_ACTIVE, 0x02, 56),
+ PMC_POWERPC_EVENT(BPU_STALL_ON_LR_DEPENDENCY, 0x02, 57),
+ PMC_POWERPC_EVENT(BTIC_MISS, 0x02, 58),
+ PMC_POWERPC_EVENT(BRANCH_LINK_STACK_CORRECTLY_RESOLVED, 0x02, 59),
+ PMC_POWERPC_EVENT(FPR_ISSUE_STALLED, 0x02, 60),
+ PMC_POWERPC_EVENT(SWITCHES_BETWEEN_PRIV_USER, 0x02, 61),
+ PMC_POWERPC_EVENT(LSU_COMPLETES_FP_STORE_SINGLE, 0x02, 62),
+ PMC_POWERPC_EVENT(CYCLES_TWO_INSTR_COMPLETED, 0x04, 8),
+ PMC_POWERPC_EVENT(CYCLES_ONE_INSTR_DISPATCHED, 0x04, 9),
+ PMC_POWERPC_EVENT(VR_ISSUE_QUEUE_DISPATCHES, 0x04, 10),
+ PMC_POWERPC_EVENT(VR_STALLS, 0x04, 11),
+ PMC_POWERPC_EVENT(GPR_RENAME_BUFFER_ENTRIES_OVER_THRESHOLD, 0x04, 12),
+ PMC_POWERPC_EVENT(FPR_ISSUE_QUEUE_ENTRIES, 0x04, 13),
+ PMC_POWERPC_EVENT(FPU_INSTR_COMPLETED, 0x04, 14),
+ PMC_POWERPC_EVENT(STWCX_INSTR_COMPLETED, 0x04, 15),
+ PMC_POWERPC_EVENT(LS_LM_INSTR_PIECES, 0x04, 16),
+ PMC_POWERPC_EVENT(ITLB_HW_SEARCH_CYCLES_OVER_THRESHOLD, 0x04, 17),
+ PMC_POWERPC_EVENT(DTLB_MISSES, 0x04, 18),
+ PMC_POWERPC_EVENT(CANCELLED_L1_INSTR_CACHE_MISSES, 0x04, 19),
+ PMC_POWERPC_EVENT(L1_DATA_CACHE_OP_HIT, 0x04, 20),
+ PMC_POWERPC_EVENT(L1_DATA_LOAD_MISS_CYCLES, 0x04, 21),
+ PMC_POWERPC_EVENT(L1_DATA_PUSHES, 0x04, 22),
+ PMC_POWERPC_EVENT(L1_DATA_TOTAL_MISS, 0x04, 23),
+ PMC_POWERPC_EVENT(VT2_FETCHES, 0x04, 24),
+ PMC_POWERPC_EVENT(TAKEN_BRANCHES_PROCESSED, 0x04, 25),
+ PMC_POWERPC_EVENT(BRANCH_FLUSHES, 0x04, 26),
+ PMC_POWERPC_EVENT(SECOND_SPECULATIVE_BRANCH_BUFFER_RESOLVED_CORRECTLY, 0x04, 27),
+ PMC_POWERPC_EVENT(THIRD_SPECULATION_BUFFER_ACTIVE, 0x04, 28),
+ PMC_POWERPC_EVENT(BRANCH_UNIT_STALL_ON_CTR_DEPENDENCY, 0x04, 29),
+ PMC_POWERPC_EVENT(FAST_BTIC_HIT, 0x04, 30),
+ PMC_POWERPC_EVENT(BRANCH_LINK_STACK_MISPREDICTED, 0x04, 31),
+ PMC_POWERPC_EVENT(CYCLES_THREE_INSTR_COMPLETED, 0x08, 14),
+ PMC_POWERPC_EVENT(CYCLES_NO_INSTR_DISPATCHED, 0x08, 15),
+ PMC_POWERPC_EVENT(GPR_ISSUE_QUEUE_ENTRIES_OVER_THRESHOLD, 0x08, 16),
+ PMC_POWERPC_EVENT(GPR_ISSUE_QUEUE_STALLED, 0x08, 17),
+ PMC_POWERPC_EVENT(IU1_INSTR_COMPLETED, 0x08, 18),
+ PMC_POWERPC_EVENT(DSSALL_INSTR_COMPLETED, 0x08, 19),
+ PMC_POWERPC_EVENT(TLBSYNC_INSTR_COMPLETED, 0x08, 20),
+ PMC_POWERPC_EVENT(SYNC_INSTR_COMPLETED, 0x08, 21),
+ PMC_POWERPC_EVENT(SS_SM_INSTR_PIECES, 0x08, 22),
+ PMC_POWERPC_EVENT(DTLB_HW_SEARCH_CYCLES, 0x08, 23),
+ PMC_POWERPC_EVENT(SNOOP_RETRIES, 0x08, 24),
+ PMC_POWERPC_EVENT(SUCCESSFUL_STWCX, 0x08, 25),
+ PMC_POWERPC_EVENT(DST_STREAM_3_CACHE_LINE_FETCHES, 0x08, 26),
+ PMC_POWERPC_EVENT(THIRD_SPECULATIVE_BRANCH_BUFFER_RESOLVED_CORRECTLY, 0x08, 27),
+ PMC_POWERPC_EVENT(MISPREDICTED_BRANCHES, 0x08, 28),
+ PMC_POWERPC_EVENT(FOLDED_BRANCHES, 0x08, 29),
+ PMC_POWERPC_EVENT(FP_STORE_DOUBLE_COMPLETES_IN_LSU, 0x08, 30),
+ PMC_POWERPC_EVENT(L2_CACHE_HITS, 0x30, 2),
+ PMC_POWERPC_EVENT(L3_CACHE_HITS, 0x30, 3),
+ PMC_POWERPC_EVENT(L2_INSTR_CACHE_MISSES, 0x30, 4),
+ PMC_POWERPC_EVENT(L3_INSTR_CACHE_MISSES, 0x30, 5),
+ PMC_POWERPC_EVENT(L2_DATA_CACHE_MISSES, 0x30, 6),
+ PMC_POWERPC_EVENT(L3_DATA_CACHE_MISSES, 0x30, 7),
+ PMC_POWERPC_EVENT(L2_LOAD_HITS, 0x10, 8),
+ PMC_POWERPC_EVENT(L2_STORE_HITS, 0x10, 9),
+ PMC_POWERPC_EVENT(L3_LOAD_HITS, 0x10, 10),
+ PMC_POWERPC_EVENT(L3_STORE_HITS, 0x10, 11),
+ PMC_POWERPC_EVENT(L2_TOUCH_HITS, 0x30, 13),
+ PMC_POWERPC_EVENT(L3_TOUCH_HITS, 0x30, 14),
+ PMC_POWERPC_EVENT(SNOOP_RETRIES, 0x30, 15),
+ PMC_POWERPC_EVENT(SNOOP_MODIFIED, 0x10, 16),
+ PMC_POWERPC_EVENT(SNOOP_VALID, 0x10, 17),
+ PMC_POWERPC_EVENT(INTERVENTION, 0x30, 18),
+ PMC_POWERPC_EVENT(L2_CACHE_MISSES, 0x10, 19),
+ PMC_POWERPC_EVENT(L3_CACHE_MISSES, 0x10, 20),
+ PMC_POWERPC_EVENT(L2_CACHE_CASTOUTS, 0x20, 8),
+ PMC_POWERPC_EVENT(L3_CACHE_CASTOUTS, 0x20, 9),
+ PMC_POWERPC_EVENT(L2SQ_FULL_CYCLES, 0x20, 10),
+ PMC_POWERPC_EVENT(L3SQ_FULL_CYCLES, 0x20, 11),
+ PMC_POWERPC_EVENT(RAQ_FULL_CYCLES, 0x20, 16),
+ PMC_POWERPC_EVENT(WAQ_FULL_CYCLES, 0x20, 17),
+ PMC_POWERPC_EVENT(L1_EXTERNAL_INTERVENTIONS, 0x20, 19),
+ PMC_POWERPC_EVENT(L2_EXTERNAL_INTERVENTIONS, 0x20, 20),
+ PMC_POWERPC_EVENT(L3_EXTERNAL_INTERVENTIONS, 0x20, 21),
+ PMC_POWERPC_EVENT(EXTERNAL_INTERVENTIONS, 0x20, 22),
+ PMC_POWERPC_EVENT(EXTERNAL_PUSHES, 0x20, 23),
+ PMC_POWERPC_EVENT(EXTERNAL_SNOOP_RETRY, 0x20, 24),
+ PMC_POWERPC_EVENT(DTQ_FULL_CYCLES, 0x20, 25),
+ PMC_POWERPC_EVENT(BUS_RETRY, 0x20, 26),
+ PMC_POWERPC_EVENT(L2_VALID_REQUEST, 0x20, 27),
+ PMC_POWERPC_EVENT(BORDQ_FULL, 0x20, 28),
+ PMC_POWERPC_EVENT(BUS_TAS_FOR_READS, 0x20, 42),
+ PMC_POWERPC_EVENT(BUS_TAS_FOR_WRITES, 0x20, 43),
+ PMC_POWERPC_EVENT(BUS_READS_NOT_RETRIED, 0x20, 44),
+ PMC_POWERPC_EVENT(BUS_WRITES_NOT_RETRIED, 0x20, 45),
+ PMC_POWERPC_EVENT(BUS_READS_WRITES_NOT_RETRIED, 0x20, 46),
+ PMC_POWERPC_EVENT(BUS_RETRY_DUE_TO_L1_RETRY, 0x20, 47),
+ PMC_POWERPC_EVENT(BUS_RETRY_DUE_TO_PREVIOUS_ADJACENT, 0x20, 48),
+ PMC_POWERPC_EVENT(BUS_RETRY_DUE_TO_COLLISION, 0x20, 49),
+ PMC_POWERPC_EVENT(BUS_RETRY_DUE_TO_INTERVENTION_ORDERING, 0x20, 50),
+ PMC_POWERPC_EVENT(SNOOP_REQUESTS, 0x20, 51),
+ PMC_POWERPC_EVENT(PREFETCH_ENGINE_REQUEST, 0x20, 52),
+ PMC_POWERPC_EVENT(PREFETCH_ENGINE_COLLISION_VS_LOAD, 0x20, 53),
+ PMC_POWERPC_EVENT(PREFETCH_ENGINE_COLLISION_VS_STORE, 0x20, 54),
+ PMC_POWERPC_EVENT(PREFETCH_ENGINE_COLLISION_VS_INSTR_FETCH, 0x20, 55),
+ PMC_POWERPC_EVENT(PREFETCH_ENGINE_COLLISION_VS_LOAD_STORE_INSTR_FETCH, 0x20, 56),
+ PMC_POWERPC_EVENT(PREFETCH_ENGINE_FULL, 0x20, 57)
+};
+
+const size_t powerpc_event_codes_size =
+ sizeof(powerpc_event_codes) / sizeof(powerpc_event_codes[0]);
int
pmc_save_kernel_callchain(uintptr_t *cc, int maxsamples,
@@ -55,6 +333,515 @@ pmc_save_kernel_callchain(uintptr_t *cc, int maxsamples,
return (0);
}
+static pmc_value_t
+powerpc_pmcn_read(unsigned int pmc)
+{
+ switch (pmc) {
+ case 0:
+ return mfspr(SPR_PMC1);
+ break;
+ case 1:
+ return mfspr(SPR_PMC2);
+ break;
+ case 2:
+ return mfspr(SPR_PMC3);
+ break;
+ case 3:
+ return mfspr(SPR_PMC4);
+ break;
+ case 4:
+ return mfspr(SPR_PMC5);
+ break;
+ case 5:
+ return mfspr(SPR_PMC6);
+ default:
+ panic("Invalid PMC number: %d\n", pmc);
+ }
+}
+
+static void
+powerpc_pmcn_write(unsigned int pmc, uint32_t val)
+{
+ switch (pmc) {
+ case 0:
+ mtspr(SPR_PMC1, val);
+ break;
+ case 1:
+ mtspr(SPR_PMC2, val);
+ break;
+ case 2:
+ mtspr(SPR_PMC3, val);
+ break;
+ case 3:
+ mtspr(SPR_PMC4, val);
+ break;
+ case 4:
+ mtspr(SPR_PMC5, val);
+ break;
+ case 5:
+ mtspr(SPR_PMC6, val);
+ break;
+ default:
+ panic("Invalid PMC number: %d\n", pmc);
+ }
+}
+
+static int
+powerpc_allocate_pmc(int cpu, int ri, struct pmc *pm,
+ const struct pmc_op_pmcallocate *a)
+{
+ enum pmc_event pe;
+ uint32_t caps, config, counter;
+ int i;
+
+ KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
+ ("[powerpc,%d] illegal CPU value %d", __LINE__, cpu));
+ KASSERT(ri >= 0 && ri < PPC_MAX_PMCS,
+ ("[powerpc,%d] illegal row index %d", __LINE__, ri));
+
+ caps = a->pm_caps;
+
+ /*
+ * TODO: Check actual class for different generations.
+ */
+ if (a->pm_class != PMC_CLASS_PPC7450)
+ return (EINVAL);
+ pe = a->pm_ev;
+ for (i = 0; i < powerpc_event_codes_size; i++) {
+ if (powerpc_event_codes[i].pe_ev == pe) {
+ config = powerpc_event_codes[i].pe_code;
+ counter = powerpc_event_codes[i].pe_counter_mask;
+ break;
+ }
+ }
+ if (i == powerpc_event_codes_size)
+ return (EINVAL);
+
+ if ((counter & (1 << ri)) == 0)
+ return (EINVAL);
+
+ if (caps & PMC_CAP_SYSTEM)
+ config |= POWERPC_PMC_KERNEL_ENABLE;
+ if (caps & PMC_CAP_USER)
+ config |= POWERPC_PMC_USER_ENABLE;
+ if ((caps & (PMC_CAP_USER | PMC_CAP_SYSTEM)) == 0)
+ config |= POWERPC_PMC_ENABLE;
+
+ pm->pm_md.pm_powerpc.pm_powerpc_evsel = config;
+
+ PMCDBG(MDP,ALL,2,"powerpc-allocate ri=%d -> config=0x%x", ri, config);
+
+ return 0;
+}
+
+static int
+powerpc_read_pmc(int cpu, int ri, pmc_value_t *v)
+{
+ struct pmc *pm;
+ pmc_value_t tmp;
+
+ KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
+ ("[powerpc,%d] illegal CPU value %d", __LINE__, cpu));
+ KASSERT(ri >= 0 && ri < PPC_MAX_PMCS,
+ ("[powerpc,%d] illegal row index %d", __LINE__, ri));
+
+ pm = powerpc_pcpu[cpu]->pc_ppcpmcs[ri].phw_pmc;
+ tmp = powerpc_pmcn_read(ri);
+ PMCDBG(MDP,REA,2,"ppc-read id=%d -> %jd", ri, tmp);
+ if (PMC_IS_SAMPLING_MODE(PMC_TO_MODE(pm)))
+ *v = POWERPC_PERFCTR_VALUE_TO_RELOAD_COUNT(tmp);
+ else
+ *v = tmp;
+
+ return 0;
+}
+
+static int
+powerpc_write_pmc(int cpu, int ri, pmc_value_t v)
+{
+ struct pmc *pm;
+
+ KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
+ ("[powerpc,%d] illegal CPU value %d", __LINE__, cpu));
+ KASSERT(ri >= 0 && ri < PPC_MAX_PMCS,
+ ("[powerpc,%d] illegal row-index %d", __LINE__, ri));
+
+ pm = powerpc_pcpu[cpu]->pc_ppcpmcs[ri].phw_pmc;
+
+ if (PMC_IS_SAMPLING_MODE(PMC_TO_MODE(pm)))
+ v = POWERPC_RELOAD_COUNT_TO_PERFCTR_VALUE(v);
+
+ PMCDBG(MDP,WRI,1,"powerpc-write cpu=%d ri=%d v=%jx", cpu, ri, v);
+
+ powerpc_pmcn_write(ri, v);
+
+ return 0;
+}
+
+static int
+powerpc_config_pmc(int cpu, int ri, struct pmc *pm)
+{
+ struct pmc_hw *phw;
+
+ PMCDBG(MDP,CFG,1, "cpu=%d ri=%d pm=%p", cpu, ri, pm);
+
+ KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
+ ("[powerpc,%d] illegal CPU value %d", __LINE__, cpu));
+ KASSERT(ri >= 0 && ri < PPC_MAX_PMCS,
+ ("[powerpc,%d] illegal row-index %d", __LINE__, ri));
+
+ phw = &powerpc_pcpu[cpu]->pc_ppcpmcs[ri];
+
+ KASSERT(pm == NULL || phw->phw_pmc == NULL,
+ ("[powerpc,%d] pm=%p phw->pm=%p hwpmc not unconfigured",
+ __LINE__, pm, phw->phw_pmc));
+
+ phw->phw_pmc = pm;
+
+ return 0;
+}
+
+static int
+powerpc_start_pmc(int cpu, int ri)
+{
+ uint32_t config;
+ struct pmc *pm;
+ struct pmc_hw *phw;
+ register_t pmc_mmcr;
+
+ phw = &powerpc_pcpu[cpu]->pc_ppcpmcs[ri];
+ pm = phw->phw_pmc;
+ config = pm->pm_md.pm_powerpc.pm_powerpc_evsel & ~POWERPC_PMC_ENABLE;
+
+ /* Enable the PMC. */
+ switch (ri) {
+ case 0:
+ pmc_mmcr = mfspr(SPR_MMCR0);
+ pmc_mmcr = PPC_SET_PMC1SEL(pmc_mmcr, config);
+ mtspr(SPR_MMCR0, pmc_mmcr);
+ break;
+ case 1:
+ pmc_mmcr = mfspr(SPR_MMCR0);
+ pmc_mmcr = PPC_SET_PMC2SEL(pmc_mmcr, config);
+ mtspr(SPR_MMCR0, pmc_mmcr);
+ break;
+ case 2:
+ pmc_mmcr = mfspr(SPR_MMCR1);
+ pmc_mmcr = PPC_SET_PMC3SEL(pmc_mmcr, config);
+ mtspr(SPR_MMCR1, pmc_mmcr);
+ break;
+ case 3:
+ pmc_mmcr = mfspr(SPR_MMCR0);
+ pmc_mmcr = PPC_SET_PMC4SEL(pmc_mmcr, config);
+ mtspr(SPR_MMCR0, pmc_mmcr);
+ break;
+ case 4:
+ pmc_mmcr = mfspr(SPR_MMCR1);
+ pmc_mmcr = PPC_SET_PMC5SEL(pmc_mmcr, config);
+ mtspr(SPR_MMCR1, pmc_mmcr);
+ break;
+ case 5:
+ pmc_mmcr = mfspr(SPR_MMCR1);
+ pmc_mmcr = PPC_SET_PMC6SEL(pmc_mmcr, config);
+ mtspr(SPR_MMCR1, pmc_mmcr);
+ break;
+ default:
+ break;
+ }
+
+ /* The mask is inverted (enable is 1) compared to the flags in MMCR0, which
+ * are Freeze flags.
+ */
+ config = ~pm->pm_md.pm_powerpc.pm_powerpc_evsel & POWERPC_PMC_ENABLE;
+
+ pmc_mmcr = mfspr(SPR_MMCR0);
+ pmc_mmcr &= ~SPR_MMCR0_FC;
+ pmc_mmcr |= config;
+ mtspr(SPR_MMCR0, pmc_mmcr);
+
+ return 0;
+}
+
+static int
+powerpc_stop_pmc(int cpu, int ri)
+{
+ struct pmc *pm;
+ struct pmc_hw *phw;
+ register_t pmc_mmcr;
+
+ phw = &powerpc_pcpu[cpu]->pc_ppcpmcs[ri];
+ pm = phw->phw_pmc;
+
+ /*
+ * Disable the PMCs.
+ */
+ switch (ri) {
+ case 0:
+ pmc_mmcr = mfspr(SPR_MMCR0);
+ pmc_mmcr = PPC_SET_PMC1SEL(pmc_mmcr, 0);
+ mtspr(SPR_MMCR0, pmc_mmcr);
+ break;
+ case 1:
+ pmc_mmcr = mfspr(SPR_MMCR0);
+ pmc_mmcr = PPC_SET_PMC2SEL(pmc_mmcr, 0);
+ mtspr(SPR_MMCR0, pmc_mmcr);
+ break;
+ case 2:
+ pmc_mmcr = mfspr(SPR_MMCR1);
+ pmc_mmcr = PPC_SET_PMC3SEL(pmc_mmcr, 0);
+ mtspr(SPR_MMCR1, pmc_mmcr);
+ break;
+ case 3:
+ pmc_mmcr = mfspr(SPR_MMCR0);
+ pmc_mmcr = PPC_SET_PMC4SEL(pmc_mmcr, 0);
+ mtspr(SPR_MMCR0, pmc_mmcr);
+ break;
+ case 4:
+ pmc_mmcr = mfspr(SPR_MMCR1);
+ pmc_mmcr = PPC_SET_PMC5SEL(pmc_mmcr, 0);
+ mtspr(SPR_MMCR1, pmc_mmcr);
+ break;
+ case 5:
+ pmc_mmcr = mfspr(SPR_MMCR1);
+ pmc_mmcr = PPC_SET_PMC6SEL(pmc_mmcr, 0);
+ mtspr(SPR_MMCR1, pmc_mmcr);
+ break;
+ default:
+ break;
+ }
+ return 0;
+}
+
+static int
+powerpc_release_pmc(int cpu, int ri, struct pmc *pmc)
+{
+ struct pmc_hw *phw;
+
+ KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
+ ("[powerpc,%d] illegal CPU value %d", __LINE__, cpu));
+ KASSERT(ri >= 0 && ri < PPC_MAX_PMCS,
+ ("[powerpc,%d] illegal row-index %d", __LINE__, ri));
+
+ phw = &powerpc_pcpu[cpu]->pc_ppcpmcs[ri];
+ KASSERT(phw->phw_pmc == NULL,
+ ("[powerpc,%d] PHW pmc %p non-NULL", __LINE__, phw->phw_pmc));
+
+ return 0;
+}
+
+static int
+powerpc_switch_in(struct pmc_cpu *pc, struct pmc_process *pp)
+{
+ return 0;
+}
+
+static int
+powerpc_switch_out(struct pmc_cpu *pc, struct pmc_process *pp)
+{
+ return 0;
+}
+
+static int
+powerpc_intr(int cpu, struct trapframe *tf)
+{
+ int i, error, retval;
+ uint32_t config;
+ struct pmc *pm;
+ struct powerpc_cpu *pac;
+ pmc_value_t v;
+
+ KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
+ ("[powerpc,%d] out of range CPU %d", __LINE__, cpu));
+
+ PMCDBG(MDP,INT,1, "cpu=%d tf=%p um=%d", cpu, (void *) tf,
+ TRAPF_USERMODE(tf));
+
+ retval = 0;
+
+ pac = powerpc_pcpu[cpu];
+
+ /*
+ * look for all PMCs that have interrupted:
+ * - look for a running, sampling PMC which has overflowed
+ * and which has a valid 'struct pmc' association
+ *
+ * If found, we call a helper to process the interrupt.
+ */
+
+ for (i = 0; i < PPC_MAX_PMCS; i++) {
+ if ((pm = pac->pc_ppcpmcs[i].phw_pmc) == NULL ||
+ !PMC_IS_SAMPLING_MODE(PMC_TO_MODE(pm))) {
+ continue;
+ }
+
+ if (!POWERPC_PMC_HAS_OVERFLOWED(i))
+ continue;
+
+ retval = 1; /* Found an interrupting PMC. */
+
+ if (pm->pm_state != PMC_STATE_RUNNING)
+ continue;
+
+ /* Stop the PMC, reload count. */
+ v = pm->pm_sc.pm_reloadcount;
+ config = mfspr(SPR_MMCR0);
+
+ mtspr(SPR_MMCR0, config | SPR_MMCR0_FC);
+ powerpc_pmcn_write(i, v);
+
+ /* Restart the counter if logging succeeded. */
+ error = pmc_process_interrupt(cpu, pm, tf, TRAPF_USERMODE(tf));
+ mtspr(SPR_MMCR0, config);
+ if (error != 0)
+ powerpc_stop_pmc(cpu, i);
+ atomic_add_int(retval ? &pmc_stats.pm_intr_processed :
+ &pmc_stats.pm_intr_ignored, 1);
+
+ }
+
+ /* Re-enable PERF exceptions. */
+ mtspr(SPR_MMCR0, mfspr(SPR_MMCR0) | SPR_MMCR0_PMXE);
+
+ return (retval);
+}
+
+static int
+powerpc_describe(int cpu, int ri, struct pmc_info *pi, struct pmc **ppmc)
+{
+ int error;
+ struct pmc_hw *phw;
+ char powerpc_name[PMC_NAME_MAX];
+
+ KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
+ ("[powerpc,%d], illegal CPU %d", __LINE__, cpu));
+ KASSERT(ri >= 0 && ri < PPC_MAX_PMCS,
+ ("[powerpc,%d] row-index %d out of range", __LINE__, ri));
+
+ phw = &powerpc_pcpu[cpu]->pc_ppcpmcs[ri];
+ snprintf(powerpc_name, sizeof(powerpc_name), "POWERPC-%d", ri);
+ if ((error = copystr(powerpc_name, pi->pm_name, PMC_NAME_MAX,
+ NULL)) != 0)
+ return error;
+ pi->pm_class = PMC_CLASS_PPC7450;
+ if (phw->phw_state & PMC_PHW_FLAG_IS_ENABLED) {
+ pi->pm_enabled = TRUE;
+ *ppmc = phw->phw_pmc;
+ } else {
+ pi->pm_enabled = FALSE;
+ *ppmc = NULL;
+ }
+
+ return (0);
+}
+
+static int
+powerpc_get_config(int cpu, int ri, struct pmc **ppm)
+{
+ *ppm = powerpc_pcpu[cpu]->pc_ppcpmcs[ri].phw_pmc;
+
+ return 0;
+}
+
+static int
+powerpc_pcpu_init(struct pmc_mdep *md, int cpu)
+{
+ int first_ri, i;
+ struct pmc_cpu *pc;
+ struct powerpc_cpu *pac;
+ struct pmc_hw *phw;
+
+ KASSERT(cpu >= 0 && cpu < pmc_cpu_max(),
+ ("[powerpc,%d] wrong cpu number %d", __LINE__, cpu));
+ PMCDBG(MDP,INI,1,"powerpc-init cpu=%d", cpu);
+
+ powerpc_pcpu[cpu] = pac = malloc(sizeof(struct powerpc_cpu), M_PMC,
+ M_WAITOK|M_ZERO);
+ pac->pc_ppcpmcs = malloc(sizeof(struct pmc_hw) * PPC_MAX_PMCS,
+ M_PMC, M_WAITOK|M_ZERO);
+ pc = pmc_pcpu[cpu];
+ first_ri = md->pmd_classdep[PMC_MDEP_CLASS_INDEX_PPC7450].pcd_ri;
+ KASSERT(pc != NULL, ("[powerpc,%d] NULL per-cpu pointer", __LINE__));
+
+ for (i = 0, phw = pac->pc_ppcpmcs; i < PPC_MAX_PMCS; i++, phw++) {
+ phw->phw_state = PMC_PHW_FLAG_IS_ENABLED |
+ PMC_PHW_CPU_TO_STATE(cpu) | PMC_PHW_INDEX_TO_STATE(i);
+ phw->phw_pmc = NULL;
+ pc->pc_hwpmcs[i + first_ri] = phw;
+ }
+
+ /* Clear the MMCRs, and set FC, to disable all PMCs. */
+ mtspr(SPR_MMCR0, SPR_MMCR0_FC | SPR_MMCR0_PMXE | SPR_MMCR0_PMC1CE | SPR_MMCR0_PMCNCE);
+ mtspr(SPR_MMCR1, 0);
+
+ return 0;
+}
+
+static int
+powerpc_pcpu_fini(struct pmc_mdep *md, int cpu)
+{
+ uint32_t mmcr0 = mfspr(SPR_MMCR0);
+
+ mmcr0 |= SPR_MMCR0_FC;
+ mtspr(SPR_MMCR0, mmcr0);
+ free(powerpc_pcpu[cpu]->pc_ppcpmcs, M_PMC);
+ free(powerpc_pcpu[cpu], M_PMC);
+ return 0;
+}
+
+struct pmc_mdep *
+pmc_md_initialize()
+{
+ struct pmc_mdep *pmc_mdep;
+ struct pmc_classdep *pcd;
+
+ /*
+ * Allocate space for pointers to PMC HW descriptors and for
+ * the MDEP structure used by MI code.
+ */
+ powerpc_pcpu = malloc(sizeof(struct powerpc_cpu *) * pmc_cpu_max(), M_PMC,
+ M_WAITOK|M_ZERO);
+
+ /* Just one class */
+ pmc_mdep = malloc(sizeof(struct pmc_mdep) + sizeof(struct pmc_classdep),
+ M_PMC, M_WAITOK|M_ZERO);
+
+ pmc_mdep->pmd_cputype = PMC_CPU_PPC_7450;
+ pmc_mdep->pmd_nclass = 1;
+
+ pcd = &pmc_mdep->pmd_classdep[PMC_MDEP_CLASS_INDEX_PPC7450];
+ pcd->pcd_caps = POWERPC_PMC_CAPS;
+ pcd->pcd_class = PMC_CLASS_PPC7450;
+ pcd->pcd_num = PPC_MAX_PMCS;
+ pcd->pcd_ri = pmc_mdep->pmd_npmc;
+ pcd->pcd_width = 32; /* All PMCs, even in ppc970, are 32-bit */
+
+ pcd->pcd_allocate_pmc = powerpc_allocate_pmc;
+ pcd->pcd_config_pmc = powerpc_config_pmc;
+ pcd->pcd_pcpu_fini = powerpc_pcpu_fini;
+ pcd->pcd_pcpu_init = powerpc_pcpu_init;
+ pcd->pcd_describe = powerpc_describe;
+ pcd->pcd_get_config = powerpc_get_config;
+ pcd->pcd_read_pmc = powerpc_read_pmc;
+ pcd->pcd_release_pmc = powerpc_release_pmc;
+ pcd->pcd_start_pmc = powerpc_start_pmc;
+ pcd->pcd_stop_pmc = powerpc_stop_pmc;
+ pcd->pcd_write_pmc = powerpc_write_pmc;
+
+ pmc_mdep->pmd_intr = powerpc_intr;
+ pmc_mdep->pmd_switch_in = powerpc_switch_in;
+ pmc_mdep->pmd_switch_out = powerpc_switch_out;
+
+ pmc_mdep->pmd_npmc += PPC_MAX_PMCS;
+
+ return (pmc_mdep);
+}
+
+void
+pmc_md_finalize(struct pmc_mdep *md)
+{
+ free(md, M_PMC);
+}
+
int
pmc_save_user_callchain(uintptr_t *cc, int maxsamples,
struct trapframe *tf)
diff --git a/sys/dev/hwpmc/pmc_events.h b/sys/dev/hwpmc/pmc_events.h
index 9fcf926..347e833 100644
--- a/sys/dev/hwpmc/pmc_events.h
+++ b/sys/dev/hwpmc/pmc_events.h
@@ -3093,6 +3093,231 @@ __PMC_EV_ALIAS("CYCLES_UNHALTED_L3_FLL_DISABLE", UCP_EVENT_86H_01H)
#define PMC_EV_MIPS24K_FIRST PMC_EV_MIPS24K_CYCLE
#define PMC_EV_MIPS24K_LAST PMC_EV_MIPS24K_WBB_FULL_PIPELINE_STALLS
+#define __PMC_EV_PPC7450() \
+ __PMC_EV(PPC7450, CYCLE) \
+ __PMC_EV(PPC7450, INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, TLB_BIT_TRANSITIONS) \
+ __PMC_EV(PPC7450, INSTR_DISPATCHED) \
+ __PMC_EV(PPC7450, PMON_EXCEPT) \
+ __PMC_EV(PPC7450, PMON_SIG) \
+ __PMC_EV(PPC7450, VPU_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, VFPU_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, VIU1_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, VIU2_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, MTVSCR_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, MTVRSAVE_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, VPU_INSTR_WAIT_CYCLES) \
+ __PMC_EV(PPC7450, VFPU_INSTR_WAIT_CYCLES) \
+ __PMC_EV(PPC7450, VIU1_INSTR_WAIT_CYCLES) \
+ __PMC_EV(PPC7450, VIU2_INSTR_WAIT_CYCLES) \
+ __PMC_EV(PPC7450, MFVSCR_SYNC_CYCLES) \
+ __PMC_EV(PPC7450, VSCR_SAT_SET) \
+ __PMC_EV(PPC7450, STORE_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, L1_INSTR_CACHE_MISSES) \
+ __PMC_EV(PPC7450, L1_DATA_SNOOPS) \
+ __PMC_EV(PPC7450, UNRESOLVED_BRANCHES) \
+ __PMC_EV(PPC7450, SPEC_BUFFER_CYCLES) \
+ __PMC_EV(PPC7450, BRANCH_UNIT_STALL_CYCLES) \
+ __PMC_EV(PPC7450, TRUE_BRANCH_TARGET_HITS) \
+ __PMC_EV(PPC7450, BRANCH_LINK_STAC_PREDICTED) \
+ __PMC_EV(PPC7450, GPR_ISSUE_QUEUE_DISPATCHES) \
+ __PMC_EV(PPC7450, CYCLES_THREE_INSTR_DISPATCHED) \
+ __PMC_EV(PPC7450, THRESHOLD_INSTR_QUEUE_ENTRIES_CYCLES) \
+ __PMC_EV(PPC7450, THRESHOLD_VEC_INSTR_QUEUE_ENTRIES_CYCLES) \
+ __PMC_EV(PPC7450, CYCLES_NO_COMPLETED_INSTRS) \
+ __PMC_EV(PPC7450, IU2_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, BRANCHES_COMPLETED) \
+ __PMC_EV(PPC7450, EIEIO_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, MTSPR_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, SC_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, LS_LM_COMPLETED) \
+ __PMC_EV(PPC7450, ITLB_HW_TABLE_SEARCH_CYCLES) \
+ __PMC_EV(PPC7450, DTLB_HW_SEARCH_CYCLES_OVER_THRESHOLD) \
+ __PMC_EV(PPC7450, L1_INSTR_CACHE_ACCESSES) \
+ __PMC_EV(PPC7450, INSTR_BKPT_MATCHES) \
+ __PMC_EV(PPC7450, L1_DATA_CACHE_LOAD_MISS_CYCLES_OVER_THRESHOLD) \
+ __PMC_EV(PPC7450, L1_DATA_SNOOP_HIT_ON_MODIFIED) \
+ __PMC_EV(PPC7450, LOAD_MISS_ALIAS) \
+ __PMC_EV(PPC7450, LOAD_MISS_ALIAS_ON_TOUCH) \
+ __PMC_EV(PPC7450, TOUCH_ALIAS) \
+ __PMC_EV(PPC7450, L1_DATA_SNOOP_HIT_CASTOUT_QUEUE) \
+ __PMC_EV(PPC7450, L1_DATA_SNOOP_HIT_CASTOUT) \
+ __PMC_EV(PPC7450, L1_DATA_SNOOP_HITS) \
+ __PMC_EV(PPC7450, WRITE_THROUGH_STORES) \
+ __PMC_EV(PPC7450, CACHE_INHIBITED_STORES) \
+ __PMC_EV(PPC7450, L1_DATA_LOAD_HIT) \
+ __PMC_EV(PPC7450, L1_DATA_TOUCH_HIT) \
+ __PMC_EV(PPC7450, L1_DATA_STORE_HIT) \
+ __PMC_EV(PPC7450, L1_DATA_TOTAL_HITS) \
+ __PMC_EV(PPC7450, DST_INSTR_DISPATCHED) \
+ __PMC_EV(PPC7450, REFRESHED_DSTS) \
+ __PMC_EV(PPC7450, SUCCESSFUL_DST_TABLE_SEARCHES) \
+ __PMC_EV(PPC7450, DSS_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, DST_STREAM_0_CACHE_LINE_FETCHES) \
+ __PMC_EV(PPC7450, VTQ_SUSPENDS_DUE_TO_CTX_CHANGE) \
+ __PMC_EV(PPC7450, VTQ_LINE_FETCH_HIT) \
+ __PMC_EV(PPC7450, VEC_LOAD_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, FP_STORE_INSTR_COMPLETED_IN_LSU) \
+ __PMC_EV(PPC7450, FPU_RENORMALIZATION) \
+ __PMC_EV(PPC7450, FPU_DENORMALIZATION) \
+ __PMC_EV(PPC7450, FP_STORE_CAUSES_STALL_IN_LSU) \
+ __PMC_EV(PPC7450, LD_ST_TRUE_ALIAS_STALL) \
+ __PMC_EV(PPC7450, LSU_INDEXED_ALIAS_STALL) \
+ __PMC_EV(PPC7450, LSU_ALIAS_VS_FSQ_WB0_WB1) \
+ __PMC_EV(PPC7450, LSU_ALIAS_VS_CSQ) \
+ __PMC_EV(PPC7450, LSU_LOAD_HIT_LINE_ALIAS_VS_CSQ0) \
+ __PMC_EV(PPC7450, LSU_LOAD_MISS_LINE_ALIAS_VS_CSQ0) \
+ __PMC_EV(PPC7450, LSU_TOUCH_LINE_ALIAS_VS_FSQ_WB0_WB1) \
+ __PMC_EV(PPC7450, LSU_TOUCH_ALIAS_VS_CSQ) \
+ __PMC_EV(PPC7450, LSU_LMQ_FULL_STALL) \
+ __PMC_EV(PPC7450, FP_LOAD_INSTR_COMPLETED_IN_LSU) \
+ __PMC_EV(PPC7450, FP_LOAD_SINGLE_INSTR_COMPLETED_IN_LSU) \
+ __PMC_EV(PPC7450, FP_LOAD_DOUBLE_COMPLETED_IN_LSU) \
+ __PMC_EV(PPC7450, LSU_RA_LATCH_STALL) \
+ __PMC_EV(PPC7450, LSU_LOAD_VS_STORE_QUEUE_ALIAS_STALL) \
+ __PMC_EV(PPC7450, LSU_LMQ_INDEX_ALIAS) \
+ __PMC_EV(PPC7450, LSU_STORE_QUEUE_INDEX_ALIAS) \
+ __PMC_EV(PPC7450, LSU_CSQ_FORWARDING) \
+ __PMC_EV(PPC7450, LSU_MISALIGNED_LOAD_FINISH) \
+ __PMC_EV(PPC7450, LSU_MISALIGN_STORE_COMPLETED) \
+ __PMC_EV(PPC7450, LSU_MISALIGN_STALL) \
+ __PMC_EV(PPC7450, FP_ONE_QUARTER_FPSCR_RENAMES_BUSY) \
+ __PMC_EV(PPC7450, FP_ONE_HALF_FPSCR_RENAMES_BUSY) \
+ __PMC_EV(PPC7450, FP_THREE_QUARTERS_FPSCR_RENAMES_BUSY) \
+ __PMC_EV(PPC7450, FP_ALL_FPSCR_RENAMES_BUSY) \
+ __PMC_EV(PPC7450, FP_DENORMALIZED_RESULT) \
+ __PMC_EV(PPC7450, L1_DATA_TOTAL_MISSES) \
+ __PMC_EV(PPC7450, DISPATCHES_TO_FPR_ISSUE_QUEUE) \
+ __PMC_EV(PPC7450, LSU_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, LOAD_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, SS_SM_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, TLBIE_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, LWARX_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, MFSPR_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, REFETCH_SERIALIZATION) \
+ __PMC_EV(PPC7450, COMPLETION_QUEUE_ENTRIES_OVER_THRESHOLD) \
+ __PMC_EV(PPC7450, CYCLES_ONE_INSTR_DISPATCHED) \
+ __PMC_EV(PPC7450, CYCLES_TWO_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, ITLB_NON_SPECULATIVE_MISSES) \
+ __PMC_EV(PPC7450, CYCLES_WAITING_FROM_L1_INSTR_CACHE_MISS) \
+ __PMC_EV(PPC7450, L1_DATA_LOAD_ACCESS_MISS) \
+ __PMC_EV(PPC7450, L1_DATA_TOUCH_MISS) \
+ __PMC_EV(PPC7450, L1_DATA_STORE_MISS) \
+ __PMC_EV(PPC7450, L1_DATA_TOUCH_MISS_CYCLES) \
+ __PMC_EV(PPC7450, L1_DATA_CYCLES_USED) \
+ __PMC_EV(PPC7450, DST_STREAM_1_CACHE_LINE_FETCHES) \
+ __PMC_EV(PPC7450, VTQ_STREAM_CANCELED_PREMATURELY) \
+ __PMC_EV(PPC7450, VTQ_RESUMES_DUE_TO_CTX_CHANGE) \
+ __PMC_EV(PPC7450, VTQ_LINE_FETCH_MISS) \
+ __PMC_EV(PPC7450, VTQ_LINE_FETCH) \
+ __PMC_EV(PPC7450, TLBIE_SNOOPS) \
+ __PMC_EV(PPC7450, L1_INSTR_CACHE_RELOADS) \
+ __PMC_EV(PPC7450, L1_DATA_CACHE_RELOADS) \
+ __PMC_EV(PPC7450, L1_DATA_CACHE_CASTOUTS_TO_L2) \
+ __PMC_EV(PPC7450, STORE_MERGE_GATHER) \
+ __PMC_EV(PPC7450, CACHEABLE_STORE_MERGE_TO_32_BYTES) \
+ __PMC_EV(PPC7450, DATA_BKPT_MATCHES) \
+ __PMC_EV(PPC7450, FALL_THROUGH_BRANCHES_PROCESSED) \
+ __PMC_EV(PPC7450, FIRST_SPECULATIVE_BRANCH_BUFFER_RESOLVED_CORRECTLY) \
+ __PMC_EV(PPC7450, SECOND_SPECULATION_BUFFER_ACTIVE) \
+ __PMC_EV(PPC7450, BPU_STALL_ON_LR_DEPENDENCY) \
+ __PMC_EV(PPC7450, BTIC_MISS) \
+ __PMC_EV(PPC7450, BRANCH_LINK_STACK_CORRECTLY_RESOLVED) \
+ __PMC_EV(PPC7450, FPR_ISSUE_STALLED) \
+ __PMC_EV(PPC7450, SWITCHES_BETWEEN_PRIV_USER) \
+ __PMC_EV(PPC7450, LSU_COMPLETES_FP_STORE_SINGLE) \
+ __PMC_EV(PPC7450, VR_ISSUE_QUEUE_DISPATCHES) \
+ __PMC_EV(PPC7450, VR_STALLS) \
+ __PMC_EV(PPC7450, GPR_RENAME_BUFFER_ENTRIES_OVER_THRESHOLD) \
+ __PMC_EV(PPC7450, FPR_ISSUE_QUEUE_ENTRIES) \
+ __PMC_EV(PPC7450, FPU_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, STWCX_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, LS_LM_INSTR_PIECES) \
+ __PMC_EV(PPC7450, ITLB_HW_SEARCH_CYCLES_OVER_THRESHOLD) \
+ __PMC_EV(PPC7450, DTLB_MISSES) \
+ __PMC_EV(PPC7450, CANCELLED_L1_INSTR_CACHE_MISSES) \
+ __PMC_EV(PPC7450, L1_DATA_CACHE_OP_HIT) \
+ __PMC_EV(PPC7450, L1_DATA_LOAD_MISS_CYCLES) \
+ __PMC_EV(PPC7450, L1_DATA_PUSHES) \
+ __PMC_EV(PPC7450, L1_DATA_TOTAL_MISS) \
+ __PMC_EV(PPC7450, VT2_FETCHES) \
+ __PMC_EV(PPC7450, TAKEN_BRANCHES_PROCESSED) \
+ __PMC_EV(PPC7450, BRANCH_FLUSHES) \
+ __PMC_EV(PPC7450, SECOND_SPECULATIVE_BRANCH_BUFFER_RESOLVED_CORRECTLY) \
+ __PMC_EV(PPC7450, THIRD_SPECULATION_BUFFER_ACTIVE) \
+ __PMC_EV(PPC7450, BRANCH_UNIT_STALL_ON_CTR_DEPENDENCY) \
+ __PMC_EV(PPC7450, FAST_BTIC_HIT) \
+ __PMC_EV(PPC7450, BRANCH_LINK_STACK_MISPREDICTED) \
+ __PMC_EV(PPC7450, CYCLES_THREE_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, CYCLES_NO_INSTR_DISPATCHED) \
+ __PMC_EV(PPC7450, GPR_ISSUE_QUEUE_ENTRIES_OVER_THRESHOLD) \
+ __PMC_EV(PPC7450, GPR_ISSUE_QUEUE_STALLED) \
+ __PMC_EV(PPC7450, IU1_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, DSSALL_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, TLBSYNC_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, SYNC_INSTR_COMPLETED) \
+ __PMC_EV(PPC7450, SS_SM_INSTR_PIECES) \
+ __PMC_EV(PPC7450, DTLB_HW_SEARCH_CYCLES) \
+ __PMC_EV(PPC7450, SNOOP_RETRIES) \
+ __PMC_EV(PPC7450, SUCCESSFUL_STWCX) \
+ __PMC_EV(PPC7450, DST_STREAM_3_CACHE_LINE_FETCHES) \
+ __PMC_EV(PPC7450, THIRD_SPECULATIVE_BRANCH_BUFFER_RESOLVED_CORRECTLY) \
+ __PMC_EV(PPC7450, MISPREDICTED_BRANCHES) \
+ __PMC_EV(PPC7450, FOLDED_BRANCHES) \
+ __PMC_EV(PPC7450, FP_STORE_DOUBLE_COMPLETES_IN_LSU) \
+ __PMC_EV(PPC7450, L2_CACHE_HITS) \
+ __PMC_EV(PPC7450, L3_CACHE_HITS) \
+ __PMC_EV(PPC7450, L2_INSTR_CACHE_MISSES) \
+ __PMC_EV(PPC7450, L3_INSTR_CACHE_MISSES) \
+ __PMC_EV(PPC7450, L2_DATA_CACHE_MISSES) \
+ __PMC_EV(PPC7450, L3_DATA_CACHE_MISSES) \
+ __PMC_EV(PPC7450, L2_LOAD_HITS) \
+ __PMC_EV(PPC7450, L2_STORE_HITS) \
+ __PMC_EV(PPC7450, L3_LOAD_HITS) \
+ __PMC_EV(PPC7450, L3_STORE_HITS) \
+ __PMC_EV(PPC7450, L2_TOUCH_HITS) \
+ __PMC_EV(PPC7450, L3_TOUCH_HITS) \
+ __PMC_EV(PPC7450, SNOOP_MODIFIED) \
+ __PMC_EV(PPC7450, SNOOP_VALID) \
+ __PMC_EV(PPC7450, INTERVENTION) \
+ __PMC_EV(PPC7450, L2_CACHE_MISSES) \
+ __PMC_EV(PPC7450, L3_CACHE_MISSES) \
+ __PMC_EV(PPC7450, L2_CACHE_CASTOUTS) \
+ __PMC_EV(PPC7450, L3_CACHE_CASTOUTS) \
+ __PMC_EV(PPC7450, L2SQ_FULL_CYCLES) \
+ __PMC_EV(PPC7450, L3SQ_FULL_CYCLES) \
+ __PMC_EV(PPC7450, RAQ_FULL_CYCLES) \
+ __PMC_EV(PPC7450, WAQ_FULL_CYCLES) \
+ __PMC_EV(PPC7450, L1_EXTERNAL_INTERVENTIONS) \
+ __PMC_EV(PPC7450, L2_EXTERNAL_INTERVENTIONS) \
+ __PMC_EV(PPC7450, L3_EXTERNAL_INTERVENTIONS) \
+ __PMC_EV(PPC7450, EXTERNAL_INTERVENTIONS) \
+ __PMC_EV(PPC7450, EXTERNAL_PUSHES) \
+ __PMC_EV(PPC7450, EXTERNAL_SNOOP_RETRY) \
+ __PMC_EV(PPC7450, DTQ_FULL_CYCLES) \
+ __PMC_EV(PPC7450, BUS_RETRY) \
+ __PMC_EV(PPC7450, L2_VALID_REQUEST) \
+ __PMC_EV(PPC7450, BORDQ_FULL) \
+ __PMC_EV(PPC7450, BUS_TAS_FOR_READS) \
+ __PMC_EV(PPC7450, BUS_TAS_FOR_WRITES) \
+ __PMC_EV(PPC7450, BUS_READS_NOT_RETRIED) \
+ __PMC_EV(PPC7450, BUS_WRITES_NOT_RETRIED) \
+ __PMC_EV(PPC7450, BUS_READS_WRITES_NOT_RETRIED) \
+ __PMC_EV(PPC7450, BUS_RETRY_DUE_TO_L1_RETRY) \
+ __PMC_EV(PPC7450, BUS_RETRY_DUE_TO_PREVIOUS_ADJACENT) \
+ __PMC_EV(PPC7450, BUS_RETRY_DUE_TO_COLLISION) \
+ __PMC_EV(PPC7450, BUS_RETRY_DUE_TO_INTERVENTION_ORDERING) \
+ __PMC_EV(PPC7450, SNOOP_REQUESTS) \
+ __PMC_EV(PPC7450, PREFETCH_ENGINE_REQUEST) \
+ __PMC_EV(PPC7450, PREFETCH_ENGINE_COLLISION_VS_LOAD) \
+ __PMC_EV(PPC7450, PREFETCH_ENGINE_COLLISION_VS_STORE) \
+ __PMC_EV(PPC7450, PREFETCH_ENGINE_COLLISION_VS_INSTR_FETCH) \
+ __PMC_EV(PPC7450, PREFETCH_ENGINE_COLLISION_VS_LOAD_STORE_INSTR_FETCH) \
+ __PMC_EV(PPC7450, PREFETCH_ENGINE_FULL)
+
+#define PMC_EV_PPC7450_FIRST PMC_EV_PPC7450_CYCLE
+#define PMC_EV_PPC7450_LAST PMC_EV_PPC7450_PREFETCH_ENGINE_FULL
+
/*
* All known PMC events.
*
@@ -3138,6 +3363,8 @@ __PMC_EV_ALIAS("CYCLES_UNHALTED_L3_FLL_DISABLE", UCP_EVENT_86H_01H)
__PMC_EV_UCF() \
__PMC_EV_BLOCK(UCP, 0x12080) \
__PMC_EV_UCP() \
+ __PMC_EV_BLOCK(PPC7450, 0x13000) \
+ __PMC_EV_PPC7450() \
#define PMC_EVENT_FIRST PMC_EV_TSC_TSC
#define PMC_EVENT_LAST PMC_EV_UCP_LAST
diff --git a/sys/dev/ichsmb/ichsmb_pci.c b/sys/dev/ichsmb/ichsmb_pci.c
index 48d6eb6..d4fb777 100644
--- a/sys/dev/ichsmb/ichsmb_pci.c
+++ b/sys/dev/ichsmb/ichsmb_pci.c
@@ -103,9 +103,6 @@ static device_method_t ichsmb_pci_methods[] = {
DEVMETHOD(device_attach, ichsmb_pci_attach),
DEVMETHOD(device_detach, ichsmb_detach),
- /* Bus methods */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
/* SMBus methods */
DEVMETHOD(smbus_callback, ichsmb_callback),
DEVMETHOD(smbus_quick, ichsmb_quick),
@@ -118,7 +115,8 @@ static device_method_t ichsmb_pci_methods[] = {
DEVMETHOD(smbus_pcall, ichsmb_pcall),
DEVMETHOD(smbus_bwrite, ichsmb_bwrite),
DEVMETHOD(smbus_bread, ichsmb_bread),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t ichsmb_pci_driver = {
diff --git a/sys/dev/ida/ida_pci.c b/sys/dev/ida/ida_pci.c
index c33e235..e71c6d4 100644
--- a/sys/dev/ida/ida_pci.c
+++ b/sys/dev/ida/ida_pci.c
@@ -188,9 +188,7 @@ static device_method_t ida_pci_methods[] = {
DEVMETHOD(device_attach, ida_pci_attach),
DEVMETHOD(device_detach, ida_detach),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t ida_pci_driver = {
diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c
index d350e09..68b7d98 100644
--- a/sys/dev/if_ndis/if_ndis.c
+++ b/sys/dev/if_ndis/if_ndis.c
@@ -150,9 +150,9 @@ static funcptr ndis_resettask_wrap;
static funcptr ndis_inputtask_wrap;
static struct ieee80211vap *ndis_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void ndis_vap_delete (struct ieee80211vap *);
static void ndis_tick (void *);
static void ndis_ticktask (device_object *, void *);
@@ -973,10 +973,10 @@ fail:
}
static struct ieee80211vap *
-ndis_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+ndis_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct ndis_vap *nvp;
struct ieee80211vap *vap;
diff --git a/sys/dev/if_ndis/if_ndis_pccard.c b/sys/dev/if_ndis/if_ndis_pccard.c
index e7ecf2e..a5a7b5e 100644
--- a/sys/dev/if_ndis/if_ndis_pccard.c
+++ b/sys/dev/if_ndis/if_ndis_pccard.c
@@ -207,7 +207,7 @@ ndis_attach_pccard(dev)
goto fail;
}
sc->ndis_rescnt++;
- resource_list_add(&sc->ndis_rl, SYS_RES_IOPORT, rid,
+ resource_list_add(&sc->ndis_rl, SYS_RES_IOPORT, sc->ndis_io_rid,
rman_get_start(sc->ndis_res_io), rman_get_end(sc->ndis_res_io),
rman_get_size(sc->ndis_res_io));
diff --git a/sys/dev/if_ndis/if_ndis_usb.c b/sys/dev/if_ndis/if_ndis_usb.c
index b872f9a..21fac0d 100644
--- a/sys/dev/if_ndis/if_ndis_usb.c
+++ b/sys/dev/if_ndis/if_ndis_usb.c
@@ -91,11 +91,9 @@ static device_method_t ndis_methods[] = {
DEVMETHOD(device_shutdown, ndis_shutdown),
/* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
DEVMETHOD(bus_get_resource_list, ndis_get_resource_list),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t ndis_driver = {
diff --git a/sys/dev/iicbus/iicbb.c b/sys/dev/iicbus/iicbb.c
index 2bc6321..a7eb2a0 100644
--- a/sys/dev/iicbus/iicbb.c
+++ b/sys/dev/iicbus/iicbb.c
@@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$");
struct iicbb_softc {
device_t iicbus;
+ int udelay; /* signal toggle delay in usec */
};
static int iicbb_attach(device_t);
@@ -123,6 +124,7 @@ iicbb_attach(device_t dev)
sc->iicbus = device_add_child(dev, "iicbus", -1);
if (!sc->iicbus)
return (ENXIO);
+ sc->udelay = 10; /* 10 uS default */
bus_generic_attach(dev);
return (0);
@@ -184,20 +186,18 @@ iicbb_print_child(device_t bus, device_t dev)
return (retval);
}
-#define IIC_DELAY 10
-
-#define I2C_SETSDA(dev,val) do { \
+#define I2C_SETSDA(sc,dev,val) do { \
IICBB_SETSDA(device_get_parent(dev), val); \
- DELAY(IIC_DELAY); \
+ DELAY(sc->udelay); \
} while (0)
#define I2C_SETSCL(dev,val) do { \
iicbb_setscl(dev, val, 100); \
} while (0)
-#define I2C_SET(dev,ctrl,data) do { \
+#define I2C_SET(sc,dev,ctrl,data) do { \
I2C_SETSCL(dev, ctrl); \
- I2C_SETSDA(dev, data); \
+ I2C_SETSDA(sc, dev, data); \
} while (0)
#define I2C_GETSDA(dev) (IICBB_GETSDA(device_get_parent(dev)))
@@ -216,34 +216,39 @@ static int i2c_debug = 0;
static void
iicbb_setscl(device_t dev, int val, int timeout)
{
+ struct iicbb_softc *sc = device_get_softc(dev);
int k = 0;
IICBB_SETSCL(device_get_parent(dev), val);
- DELAY(IIC_DELAY);
+ DELAY(sc->udelay);
while (val && !I2C_GETSCL(dev) && k++ < timeout) {
IICBB_SETSCL(device_get_parent(dev), val);
- DELAY(IIC_DELAY);
+ DELAY(sc->udelay);
}
-
+
return;
}
static void
iicbb_one(device_t dev, int timeout)
{
- I2C_SET(dev,0,1);
- I2C_SET(dev,1,1);
- I2C_SET(dev,0,1);
+ struct iicbb_softc *sc = device_get_softc(dev);
+
+ I2C_SET(sc,dev,0,1);
+ I2C_SET(sc,dev,1,1);
+ I2C_SET(sc,dev,0,1);
return;
}
static void
iicbb_zero(device_t dev, int timeout)
{
- I2C_SET(dev,0,0);
- I2C_SET(dev,1,0);
- I2C_SET(dev,0,0);
+ struct iicbb_softc *sc = device_get_softc(dev);
+
+ I2C_SET(sc,dev,0,0);
+ I2C_SET(sc,dev,1,0);
+ I2C_SET(sc,dev,0,0);
return;
}
@@ -264,20 +269,21 @@ iicbb_zero(device_t dev, int timeout)
static int
iicbb_ack(device_t dev, int timeout)
{
+ struct iicbb_softc *sc = device_get_softc(dev);
int noack;
int k = 0;
-
- I2C_SET(dev,0,1);
- I2C_SET(dev,1,1);
+
+ I2C_SET(sc,dev,0,1);
+ I2C_SET(sc,dev,1,1);
do {
noack = I2C_GETSDA(dev);
if (!noack)
break;
- DELAY(10);
- k += 10;
+ DELAY(1);
+ k++;
} while (k < timeout);
- I2C_SET(dev,0,1);
+ I2C_SET(sc,dev,0,1);
I2C_DEBUG(printf("%c ",noack?'-':'+'));
return (noack);
@@ -302,16 +308,17 @@ iicbb_sendbyte(device_t dev, u_char data, int timeout)
static u_char
iicbb_readbyte(device_t dev, int last, int timeout)
{
+ struct iicbb_softc *sc = device_get_softc(dev);
int i;
unsigned char data=0;
-
- I2C_SET(dev,0,1);
+
+ I2C_SET(sc,dev,0,1);
for (i=7; i>=0; i--)
{
- I2C_SET(dev,1,1);
+ I2C_SET(sc,dev,1,1);
if (I2C_GETSDA(dev))
data |= (1<<i);
- I2C_SET(dev,0,1);
+ I2C_SET(sc,dev,0,1);
}
if (last) {
iicbb_one(dev, timeout);
@@ -337,13 +344,14 @@ iicbb_reset(device_t dev, u_char speed, u_char addr, u_char *oldaddr)
static int
iicbb_start(device_t dev, u_char slave, int timeout)
{
+ struct iicbb_softc *sc = device_get_softc(dev);
int error;
I2C_DEBUG(printf("<"));
- I2C_SET(dev,1,1);
- I2C_SET(dev,1,0);
- I2C_SET(dev,0,0);
+ I2C_SET(sc,dev,1,1);
+ I2C_SET(sc,dev,1,0);
+ I2C_SET(sc,dev,0,0);
/* send address */
iicbb_sendbyte(dev, slave, timeout);
@@ -364,10 +372,13 @@ error:
static int
iicbb_stop(device_t dev)
{
- I2C_SET(dev,0,0);
- I2C_SET(dev,1,0);
- I2C_SET(dev,1,1);
+ struct iicbb_softc *sc = device_get_softc(dev);
+
+ I2C_SET(sc,dev,0,0);
+ I2C_SET(sc,dev,1,0);
+ I2C_SET(sc,dev,1,1);
I2C_DEBUG(printf(">"));
+ I2C_DEBUG(printf("\n"));
return (0);
}
diff --git a/sys/dev/iicbus/iicbus.c b/sys/dev/iicbus/iicbus.c
index ca110c8..d919277 100644
--- a/sys/dev/iicbus/iicbus.c
+++ b/sys/dev/iicbus/iicbus.c
@@ -92,10 +92,16 @@ iicbus_attach(device_t dev)
unsigned char addr;
#endif
struct iicbus_softc *sc = IICBUS_SOFTC(dev);
+ int strict;
sc->dev = dev;
mtx_init(&sc->lock, "iicbus", NULL, MTX_DEF);
iicbus_reset(dev, IIC_FASTEST, 0, NULL);
+ if (resource_int_value(device_get_name(dev),
+ device_get_unit(dev), "strict", &strict) == 0)
+ sc->strict = strict;
+ else
+ sc->strict = 1;
/* device probing is meaningless since the bus is supposed to be
* hot-plug. Moreover, some I2C chips do not appreciate random
@@ -245,7 +251,6 @@ static device_method_t iicbus_methods[] = {
/* bus interface */
DEVMETHOD(bus_add_child, iicbus_add_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
DEVMETHOD(bus_print_child, iicbus_print_child),
DEVMETHOD(bus_probe_nomatch, iicbus_probe_nomatch),
DEVMETHOD(bus_read_ivar, iicbus_read_ivar),
@@ -256,7 +261,7 @@ static device_method_t iicbus_methods[] = {
/* iicbus interface */
DEVMETHOD(iicbus_transfer, iicbus_transfer),
- { 0, 0 }
+ DEVMETHOD_END
};
driver_t iicbus_driver = {
diff --git a/sys/dev/iicbus/iicbus.h b/sys/dev/iicbus/iicbus.h
index 0698d5c..92c250e 100644
--- a/sys/dev/iicbus/iicbus.h
+++ b/sys/dev/iicbus/iicbus.h
@@ -41,6 +41,8 @@ struct iicbus_softc
device_t owner; /* iicbus owner device structure */
u_char started; /* address of the 'started' slave
* 0 if no start condition succeeded */
+ u_char strict; /* deny operations that violate the
+ * I2C protocol */
struct mtx lock;
};
diff --git a/sys/dev/iicbus/iiconf.c b/sys/dev/iicbus/iiconf.c
index e59dc35..7c22b51 100644
--- a/sys/dev/iicbus/iiconf.c
+++ b/sys/dev/iicbus/iiconf.c
@@ -243,8 +243,8 @@ iicbus_write(device_t bus, const char *buf, int len, int *sent, int timeout)
{
struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
- /* a slave must have been started with the appropriate address */
- if (!sc->started || (sc->started & LSB))
+ /* a slave must have been started for writing */
+ if (sc->started == 0 || (sc->strict != 0 && (sc->started & LSB) != 0))
return (EINVAL);
return (IICBUS_WRITE(device_get_parent(bus), buf, len, sent, timeout));
@@ -261,8 +261,8 @@ iicbus_read(device_t bus, char *buf, int len, int *read, int last, int delay)
{
struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
- /* a slave must have been started with the appropriate address */
- if (!sc->started || !(sc->started & LSB))
+ /* a slave must have been started for reading */
+ if (sc->started == 0 || (sc->strict != 0 && (sc->started & LSB) == 0))
return (EINVAL);
return (IICBUS_READ(device_get_parent(bus), buf, len, read, last, delay));
diff --git a/sys/dev/iicbus/iicsmb.c b/sys/dev/iicbus/iicsmb.c
index 10229ac..27f1d2b 100644
--- a/sys/dev/iicbus/iicsmb.c
+++ b/sys/dev/iicbus/iicsmb.c
@@ -22,11 +22,11 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD$
- *
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
/*
* I2C to SMB bridge
*
@@ -106,10 +106,6 @@ static device_method_t iicsmb_methods[] = {
DEVMETHOD(device_attach, iicsmb_attach),
DEVMETHOD(device_detach, iicsmb_detach),
- /* bus interface */
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
/* iicbus interface */
DEVMETHOD(iicbus_intr, iicsmb_intr),
@@ -125,8 +121,8 @@ static device_method_t iicsmb_methods[] = {
DEVMETHOD(smbus_pcall, iicsmb_pcall),
DEVMETHOD(smbus_bwrite, iicsmb_bwrite),
DEVMETHOD(smbus_bread, iicsmb_bread),
-
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t iicsmb_driver = {
diff --git a/sys/dev/ipw/if_ipw.c b/sys/dev/ipw/if_ipw.c
index 7560430..e632451 100644
--- a/sys/dev/ipw/if_ipw.c
+++ b/sys/dev/ipw/if_ipw.c
@@ -108,9 +108,9 @@ static const struct ipw_ident ipw_ident_table[] = {
};
static struct ieee80211vap *ipw_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void ipw_vap_delete(struct ieee80211vap *);
static int ipw_dma_alloc(struct ipw_softc *);
static void ipw_release(struct ipw_softc *);
@@ -428,10 +428,10 @@ ipw_detach(device_t dev)
}
static struct ieee80211vap *
-ipw_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+ipw_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct ifnet *ifp = ic->ic_ifp;
struct ipw_softc *sc = ifp->if_softc;
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c
index 3d676ab..56fedff 100644
--- a/sys/dev/isp/isp_freebsd.c
+++ b/sys/dev/isp/isp_freebsd.c
@@ -1087,8 +1087,9 @@ static ISP_INLINE void
destroy_lun_state(ispsoftc_t *isp, tstate_t *tptr)
{
struct tslist *lhp;
- KASSERT((tptr->hold == 0), ("tptr still held"));
- ISP_GET_PC_ADDR(isp, xpt_path_path_id(tptr->owner), lun_hash[LUN_HASH_FUNC(xpt_path_lun_id(tptr->owner))], lhp);
+ KASSERT((tptr->hold != 0), ("tptr is not held"));
+ KASSERT((tptr->hold == 1), ("tptr still held (%d)", tptr->hold));
+ ISP_GET_PC_ADDR(isp, cam_sim_bus(xpt_path_sim(tptr->owner)), lun_hash[LUN_HASH_FUNC(xpt_path_lun_id(tptr->owner))], lhp);
SLIST_REMOVE(lhp, tptr, tstate, next);
xpt_free_path(tptr->owner);
free(tptr, M_DEVBUF);
@@ -1316,12 +1317,13 @@ isp_disable_lun(ispsoftc_t *isp, union ccb *ccb)
mtx_sleep(isp, &isp->isp_lock, PRIBIO, "want_isp_disable_lun", 0);
}
isp->isp_osinfo.tmbusy = 1;
+ status = CAM_REQ_INPROG;
/*
* Find the state pointer.
*/
if ((tptr = get_lun_statep(isp, bus, lun)) == NULL) {
- ccb->ccb_h.status = CAM_PATH_INVALID;
+ status = CAM_PATH_INVALID;
goto done;
}
@@ -1341,13 +1343,13 @@ isp_disable_lun(ispsoftc_t *isp, union ccb *ccb)
}
isp->isp_osinfo.rptr = &status;
- status = CAM_REQ_INPROG;
if (isp_lun_cmd(isp, RQSTYPE_ENABLE_LUN, bus, lun, 0, 0)) {
status = CAM_RESRC_UNAVAIL;
} else {
mtx_sleep(ccb, &isp->isp_lock, PRIBIO, "isp_disable_lun", 0);
}
done:
+ ccb->ccb_h.status = status;
if (status == CAM_REQ_CMP) {
xpt_print(ccb->ccb_h.path, "now disabled for target mode\n");
}
@@ -2949,23 +2951,25 @@ isp_target_mark_aborted(ispsoftc_t *isp, union ccb *ccb)
{
tstate_t *tptr;
atio_private_data_t *atp;
+ union ccb *accb = ccb->cab.abort_ccb;
- tptr = get_lun_statep(isp, XS_CHANNEL(ccb), XS_LUN(ccb));
+ tptr = get_lun_statep(isp, XS_CHANNEL(accb), XS_LUN(accb));
if (tptr == NULL) {
- tptr = get_lun_statep(isp, XS_CHANNEL(ccb), CAM_LUN_WILDCARD);
+ tptr = get_lun_statep(isp, XS_CHANNEL(accb), CAM_LUN_WILDCARD);
if (tptr == NULL) {
ccb->ccb_h.status = CAM_REQ_INVALID;
return;
}
}
- atp = isp_get_atpd(isp, tptr, ccb->atio.tag_id);
+ atp = isp_get_atpd(isp, tptr, accb->atio.tag_id);
if (atp == NULL) {
ccb->ccb_h.status = CAM_REQ_INVALID;
- return;
+ } else {
+ atp->dead = 1;
+ ccb->ccb_h.status = CAM_REQ_CMP;
}
- atp->dead = 1;
- ccb->ccb_h.status = CAM_REQ_CMP;
+ rls_lun_statep(isp, tptr);
}
static void
@@ -3166,10 +3170,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
xpt_print(atio->ccb_h.path, "[0x%x] Non-Zero Lun %d: cdb0=0x%x\n", atio->tag_id, return_lun, cdb[0]);
if (cdb[0] != INQUIRY && cdb[0] != REPORT_LUNS && cdb[0] != REQUEST_SENSE) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_ILLEGAL_REQUEST;
- atio->sense_data.add_sense_code = 0x25;
- atio->sense_data.add_sense_code_qual = 0x0;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_ILLEGAL_REQUEST;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x25;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x0;
+ atio->sense_len = SSD_MIN_SIZE;
}
return_lun = CAM_LUN_WILDCARD;
}
@@ -3193,10 +3197,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
case READ_16:
if (isptarg_rwparm(cdb, disk_data, disk_size, atio->ccb_h.ccb_data_offset, &data_ptr, &data_len, &last)) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x24;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x24;
+ atio->sense_len = SSD_MIN_SIZE;
} else {
#ifdef ISP_FORCE_TIMEOUT
{
@@ -3232,10 +3236,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
case WRITE_16:
if (isptarg_rwparm(cdb, disk_data, disk_size, atio->ccb_h.ccb_data_offset, &data_ptr, &data_len, &last)) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x24;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x24;
+ atio->sense_len = SSD_MIN_SIZE;
} else {
#ifdef ISP_FORCE_TIMEOUT
{
@@ -3269,10 +3273,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
flags |= CAM_DIR_IN;
if (cdb[1] || cdb[2] || cdb[3]) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x20;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x20;
+ atio->sense_len = SSD_MIN_SIZE;
break;
}
data_len = sizeof (iqd);
@@ -3293,10 +3297,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
if (ca) {
ca = 0;
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x28;
- atio->sense_data.add_sense_code_qual = 0x0;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x28;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x0;
+ atio->sense_len = SSD_MIN_SIZE;
}
break;
case SYNCHRONIZE_CACHE:
@@ -3311,10 +3315,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
flags |= CAM_DIR_IN;
if (cdb[2] || cdb[3] || cdb[4] || cdb[5]) {
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x24;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x24;
+ atio->sense_len = SSD_MIN_SIZE;
break;
}
if (cdb[8] & 0x1) { /* PMI */
@@ -3365,10 +3369,10 @@ isptargstart(struct cam_periph *periph, union ccb *iccb)
default:
flags |= CAM_DIR_NONE;
status = SCSI_STATUS_CHECK_COND;
- atio->sense_data.error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
- atio->sense_data.add_sense_code = 0x5;
- atio->sense_data.add_sense_code_qual = 0x20;
- atio->sense_len = sizeof (atio->sense_data);
+ SDFIXED(atio->sense_data)->error_code = SSD_ERRCODE_VALID|SSD_CURRENT_ERROR|SSD_KEY_UNIT_ATTENTION;
+ SDFIXED(atio->sense_data)->add_sense_code = 0x5;
+ SDFIXED(atio->sense_data)->add_sense_code_qual = 0x20;
+ atio->sense_len = SSD_MIN_SIZE;
break;
}
@@ -4519,7 +4523,7 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
switch (accb->ccb_h.func_code) {
#ifdef ISP_TARGET_MODE
case XPT_ACCEPT_TARGET_IO:
- isp_target_mark_aborted(isp, accb);
+ isp_target_mark_aborted(isp, ccb);
break;
#endif
case XPT_SCSI_IO:
diff --git a/sys/dev/isp/isp_freebsd.h b/sys/dev/isp/isp_freebsd.h
index 0875e64..d54defa 100644
--- a/sys/dev/isp/isp_freebsd.h
+++ b/sys/dev/isp/isp_freebsd.h
@@ -76,6 +76,13 @@
#define ISP_IFLAGS INTR_TYPE_CAM | INTR_ENTROPY | INTR_MPSAFE
#ifdef ISP_TARGET_MODE
+/* Not quite right, but there was no bump for this change */
+#if __FreeBSD_version < 225469
+#define SDFIXED(x) (&x)
+#else
+#define SDFIXED(x) ((struct scsi_sense_data_fixed *)(&x))
+#endif
+
#define ISP_TARGET_FUNCTIONS 1
#define ATPDPSIZE 4096
diff --git a/sys/dev/iwi/if_iwi.c b/sys/dev/iwi/if_iwi.c
index 73b861c..a7fd9d1 100644
--- a/sys/dev/iwi/if_iwi.c
+++ b/sys/dev/iwi/if_iwi.c
@@ -129,9 +129,9 @@ static const struct iwi_ident iwi_ident_table[] = {
};
static struct ieee80211vap *iwi_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void iwi_vap_delete(struct ieee80211vap *);
static void iwi_dma_map_addr(void *, bus_dma_segment_t *, int, int);
static int iwi_alloc_cmd_ring(struct iwi_softc *, struct iwi_cmd_ring *,
@@ -495,10 +495,10 @@ iwi_detach(device_t dev)
}
static struct ieee80211vap *
-iwi_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+iwi_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct ifnet *ifp = ic->ic_ifp;
struct iwi_softc *sc = ifp->if_softc;
diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c
index 8a02752..3786456 100644
--- a/sys/dev/iwn/if_iwn.c
+++ b/sys/dev/iwn/if_iwn.c
@@ -116,9 +116,9 @@ static int iwn5000_attach(struct iwn_softc *, uint16_t);
static void iwn_radiotap_attach(struct iwn_softc *);
static void iwn_sysctlattach(struct iwn_softc *);
static struct ieee80211vap *iwn_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void iwn_vap_delete(struct ieee80211vap *);
static int iwn_detach(device_t);
static int iwn_shutdown(device_t);
@@ -246,6 +246,7 @@ static int iwn_send_sensitivity(struct iwn_softc *);
static int iwn_set_pslevel(struct iwn_softc *, int, int, int);
static int iwn_send_btcoex(struct iwn_softc *);
static int iwn_send_advanced_btcoex(struct iwn_softc *);
+static int iwn5000_runtime_calib(struct iwn_softc *);
static int iwn_config(struct iwn_softc *);
static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int);
static int iwn_scan(struct iwn_softc *);
@@ -844,8 +845,8 @@ iwn_sysctlattach(struct iwn_softc *sc)
}
static struct ieee80211vap *
-iwn_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
+iwn_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
const uint8_t bssid[IEEE80211_ADDR_LEN],
const uint8_t mac[IEEE80211_ADDR_LEN])
{
@@ -2127,7 +2128,7 @@ iwn_newassoc(struct ieee80211_node *ni, int isnew)
plcp |= IWN_RFLAG_SGI;
} else if (ni->ni_htcap & IEEE80211_HTCAP_SHORTGI20)
plcp |= IWN_RFLAG_SGI;
- if (i > 7)
+ if (RV(ni->ni_htrates.rs_rates[i]) > 7)
plcp |= IWN_RFLAG_ANT(txant1 | txant2);
else
plcp |= IWN_RFLAG_ANT(txant1);
@@ -2505,7 +2506,8 @@ iwn5000_rx_calib_results(struct iwn_softc *sc, struct iwn_rx_desc *desc,
case IWN5000_PHY_CALIB_DC:
if ((sc->sc_flags & IWN_FLAG_INTERNAL_PA) == 0 &&
(sc->hw_type == IWN_HW_REV_TYPE_5150 ||
- sc->hw_type >= IWN_HW_REV_TYPE_6000))
+ sc->hw_type >= IWN_HW_REV_TYPE_6000) &&
+ sc->hw_type != IWN_HW_REV_TYPE_6050)
idx = 0;
break;
case IWN5000_PHY_CALIB_LO:
@@ -4996,6 +4998,19 @@ iwn_send_advanced_btcoex(struct iwn_softc *sc)
}
static int
+iwn5000_runtime_calib(struct iwn_softc *sc)
+{
+ struct iwn5000_calib_config cmd;
+
+ memset(&cmd, 0, sizeof cmd);
+ cmd.ucode.once.enable = 0xffffffff;
+ cmd.ucode.once.start = IWN5000_CALIB_DC;
+ DPRINTF(sc, IWN_DEBUG_CALIBRATE,
+ "%s: configuring runtime calibration\n", __func__);
+ return iwn_cmd(sc, IWN5000_CMD_CALIB_CONFIG, &cmd, sizeof(cmd), 0);
+}
+
+static int
iwn_config(struct iwn_softc *sc)
{
struct iwn_ops *ops = &sc->ops;
@@ -5015,6 +5030,17 @@ iwn_config(struct iwn_softc *sc)
}
}
+ if (sc->hw_type == IWN_HW_REV_TYPE_6050) {
+ /* Configure runtime DC calibration. */
+ error = iwn5000_runtime_calib(sc);
+ if (error != 0) {
+ device_printf(sc->sc_dev,
+ "%s: could not configure runtime calibration\n",
+ __func__);
+ return error;
+ }
+ }
+
/* Configure valid TX chains for >=5000 Series. */
if (sc->hw_type != IWN_HW_REV_TYPE_4965) {
txmask = htole32(sc->txchainmask);
diff --git a/sys/dev/iwn/if_iwnreg.h b/sys/dev/iwn/if_iwnreg.h
index c3079e6..062125f 100644
--- a/sys/dev/iwn/if_iwnreg.h
+++ b/sys/dev/iwn/if_iwnreg.h
@@ -739,6 +739,8 @@ struct iwn5000_wimax_coex {
struct iwn5000_calib_elem {
uint32_t enable;
uint32_t start;
+#define IWN5000_CALIB_DC (1 << 1)
+
uint32_t send;
uint32_t apply;
uint32_t reserved;
diff --git a/sys/dev/ixgbe/ixgbe.c b/sys/dev/ixgbe/ixgbe.c
index 9a709af..6277848 100644
--- a/sys/dev/ixgbe/ixgbe.c
+++ b/sys/dev/ixgbe/ixgbe.c
@@ -265,7 +265,7 @@ TUNABLE_INT("hw.ixgbe.enable_msix", &ixgbe_enable_msix);
* it can be a performance win in some workloads, but
* in others it actually hurts, its off by default.
*/
-static bool ixgbe_header_split = FALSE;
+static int ixgbe_header_split = FALSE;
TUNABLE_INT("hw.ixgbe.hdr_split", &ixgbe_header_split);
/*
@@ -313,6 +313,18 @@ static int atr_sample_rate = 20;
static int fdir_pballoc = 1;
#endif
+#ifdef DEV_NETMAP
+/*
+ * The #ifdef DEV_NETMAP / #endif blocks in this file are meant to
+ * be a reference on how to implement netmap support in a driver.
+ * Additional comments are in ixgbe_netmap.h .
+ *
+ * <dev/netma/ixgbe_netmap.h> contains functions for netmap support
+ * that extend the standard driver.
+ */
+#include <dev/netmap/ixgbe_netmap.h>
+#endif /* DEV_NETMAP */
+
/*********************************************************************
* Device identification routine
*
@@ -578,6 +590,9 @@ ixgbe_attach(device_t dev)
ixgbe_add_hw_stats(adapter);
+#ifdef DEV_NETMAP
+ ixgbe_netmap_attach(adapter);
+#endif /* DEV_NETMAP */
INIT_DEBUGOUT("ixgbe_attach: end");
return (0);
err_late:
@@ -652,6 +667,9 @@ ixgbe_detach(device_t dev)
ether_ifdetach(adapter->ifp);
callout_drain(&adapter->timer);
+#ifdef DEV_NETMAP
+ netmap_detach(adapter->ifp);
+#endif /* DEV_NETMAP */
ixgbe_free_pci_resources(adapter);
bus_generic_detach(dev);
if_free(adapter->ifp);
@@ -2813,9 +2831,20 @@ ixgbe_setup_transmit_ring(struct tx_ring *txr)
struct adapter *adapter = txr->adapter;
struct ixgbe_tx_buf *txbuf;
int i;
+#ifdef DEV_NETMAP
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_slot *slot;
+#endif /* DEV_NETMAP */
/* Clear the old ring contents */
IXGBE_TX_LOCK(txr);
+#ifdef DEV_NETMAP
+ /*
+ * (under lock): if in netmap mode, do some consistency
+ * checks and set slot to entry 0 of the netmap ring.
+ */
+ slot = netmap_reset(na, NR_TX, txr->me, 0);
+#endif /* DEV_NETMAP */
bzero((void *)txr->tx_base,
(sizeof(union ixgbe_adv_tx_desc)) * adapter->num_tx_desc);
/* Reset indices */
@@ -2832,6 +2861,26 @@ ixgbe_setup_transmit_ring(struct tx_ring *txr)
m_freem(txbuf->m_head);
txbuf->m_head = NULL;
}
+#ifdef DEV_NETMAP
+ /*
+ * In netmap mode, set the map for the packet buffer.
+ * NOTE: Some drivers (not this one) also need to set
+ * the physical buffer address in the NIC ring.
+ * Slots in the netmap ring (indexed by "si") are
+ * kring->nkr_hwofs positions "ahead" wrt the
+ * corresponding slot in the NIC ring. In some drivers
+ * (not here) nkr_hwofs can be negative. When computing
+ * si = i + kring->nkr_hwofs make sure to handle wraparounds.
+ */
+ if (slot) {
+ int si = i + na->tx_rings[txr->me].nkr_hwofs;
+
+ if (si >= na->num_tx_desc)
+ si -= na->num_tx_desc;
+ netmap_load_map(txr->txtag, txbuf->map,
+ NMB(slot + si), na->buff_size);
+ }
+#endif /* DEV_NETMAP */
/* Clear the EOP index */
txbuf->eop_index = -1;
}
@@ -3017,7 +3066,7 @@ ixgbe_free_transmit_buffers(struct tx_ring *txr)
*
**********************************************************************/
-static boolean_t
+static bool
ixgbe_tx_ctx_setup(struct tx_ring *txr, struct mbuf *mp)
{
struct adapter *adapter = txr->adapter;
@@ -3135,7 +3184,7 @@ ixgbe_tx_ctx_setup(struct tx_ring *txr, struct mbuf *mp)
* adapters using advanced tx descriptors
*
**********************************************************************/
-static boolean_t
+static bool
ixgbe_tso_setup(struct tx_ring *txr, struct mbuf *mp, u32 *paylen)
{
struct adapter *adapter = txr->adapter;
@@ -3299,7 +3348,7 @@ ixgbe_atr(struct tx_ring *txr, struct mbuf *mp)
* tx_buffer is put back on the free queue.
*
**********************************************************************/
-static boolean_t
+static bool
ixgbe_txeof(struct tx_ring *txr)
{
struct adapter *adapter = txr->adapter;
@@ -3310,6 +3359,29 @@ ixgbe_txeof(struct tx_ring *txr)
mtx_assert(&txr->tx_mtx, MA_OWNED);
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_adapter *na = NA(ifp);
+
+ /*
+ * In netmap mode, all the work is done in the context
+ * of the client thread. Interrupt handlers only wake up
+ * clients, which may be sleeping on individual rings
+ * or on a global resource for all rings.
+ * When the driver has separate locks, we need to
+ * release and re-acquire txlock to avoid deadlocks.
+ * XXX see if we can find a better way.
+ */
+ selwakeuppri(&na->tx_rings[txr->me].si, PI_NET);
+ IXGBE_TX_UNLOCK(txr);
+ IXGBE_CORE_LOCK(adapter);
+ selwakeuppri(&na->tx_rings[na->num_queues + 1].si, PI_NET);
+ IXGBE_CORE_UNLOCK(adapter);
+ IXGBE_TX_LOCK(txr);
+ return FALSE;
+ }
+#endif /* DEV_NETMAP */
+
if (txr->tx_avail == adapter->num_tx_desc) {
txr->queue_status = IXGBE_QUEUE_IDLE;
return FALSE;
@@ -3698,6 +3770,10 @@ ixgbe_setup_receive_ring(struct rx_ring *rxr)
bus_dma_segment_t pseg[1], hseg[1];
struct lro_ctrl *lro = &rxr->lro;
int rsize, nsegs, error = 0;
+#ifdef DEV_NETMAP
+ struct netmap_adapter *na = NA(rxr->adapter->ifp);
+ struct netmap_slot *slot;
+#endif /* DEV_NETMAP */
adapter = rxr->adapter;
ifp = adapter->ifp;
@@ -3705,6 +3781,10 @@ ixgbe_setup_receive_ring(struct rx_ring *rxr)
/* Clear the ring contents */
IXGBE_RX_LOCK(rxr);
+#ifdef DEV_NETMAP
+ /* same as in ixgbe_setup_transmit_ring() */
+ slot = netmap_reset(na, NR_RX, rxr->me, 0);
+#endif /* DEV_NETMAP */
rsize = roundup2(adapter->num_rx_desc *
sizeof(union ixgbe_adv_rx_desc), DBA_ALIGN);
bzero((void *)rxr->rx_base, rsize);
@@ -3721,6 +3801,29 @@ ixgbe_setup_receive_ring(struct rx_ring *rxr)
struct mbuf *mh, *mp;
rxbuf = &rxr->rx_buffers[j];
+#ifdef DEV_NETMAP
+ /*
+ * In netmap mode, fill the map and set the buffer
+ * address in the NIC ring, considering the offset
+ * between the netmap and NIC rings (see comment in
+ * ixgbe_setup_transmit_ring() ). No need to allocate
+ * an mbuf, so end the block with a continue;
+ */
+ if (slot) {
+ int sj = j + na->rx_rings[rxr->me].nkr_hwofs;
+ void *addr;
+
+ if (sj >= na->num_rx_desc)
+ sj -= na->num_rx_desc;
+ addr = NMB(slot + sj);
+ netmap_load_map(rxr->ptag,
+ rxbuf->pmap, addr, na->buff_size);
+ /* Update descriptor */
+ rxr->rx_base[j].read.pkt_addr =
+ htole64(vtophys(addr));
+ continue;
+ }
+#endif /* DEV_NETMAP */
/*
** Don't allocate mbufs if not
** doing header split, its wasteful
@@ -3913,6 +4016,35 @@ ixgbe_initialize_receive_units(struct adapter *adapter)
/* Setup the HW Rx Head and Tail Descriptor Pointers */
IXGBE_WRITE_REG(hw, IXGBE_RDH(i), 0);
+#ifdef DEV_NETMAP
+ /*
+ * In netmap mode, we must preserve the buffers made
+ * available to userspace before the if_init()
+ * (this is true by default on the TX side, because
+ * init makes all buffers available to userspace).
+ *
+ * netmap_reset() and the device specific routines
+ * (e.g. ixgbe_setup_receive_rings()) map these
+ * buffers at the end of the NIC ring, so here we
+ * must set the RDT (tail) register to make sure
+ * they are not overwritten.
+ *
+ * In this driver the NIC ring starts at RDH = 0,
+ * RDT points to the first 'busy' slot, so RDT = 0
+ * means the whole ring is available, and
+ * RDT = (num_rx_desc - X) means X slots are available.
+ * Computations are done modulo the ring size.
+ */
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_adapter *na = NA(adapter->ifp);
+ struct netmap_kring *kring = &na->rx_rings[i];
+ int t = na->num_rx_desc - kring->nr_hwavail;
+
+ if (t >= na->num_rx_desc)
+ t -= adapter->num_rx_desc;
+ IXGBE_WRITE_REG(hw, IXGBE_RDT(i), t);
+ } else
+#endif /* DEV_NETMAP */
IXGBE_WRITE_REG(hw, IXGBE_RDT(i), 0);
}
@@ -4148,6 +4280,22 @@ ixgbe_rxeof(struct ix_queue *que, int count)
IXGBE_RX_LOCK(rxr);
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ /*
+ * Same as the txeof routine, only wakeup clients
+ * and make sure there are no deadlocks.
+ */
+ struct netmap_adapter *na = NA(ifp);
+
+ selwakeuppri(&na->rx_rings[rxr->me].si, PI_NET);
+ IXGBE_RX_UNLOCK(rxr);
+ IXGBE_CORE_LOCK(adapter);
+ selwakeuppri(&na->rx_rings[na->num_queues + 1].si, PI_NET);
+ IXGBE_CORE_UNLOCK(adapter);
+ return (FALSE);
+ }
+#endif /* DEV_NETMAP */
for (i = rxr->next_to_check; count != 0;) {
struct mbuf *sendmp, *mh, *mp;
u32 rsc, ptype;
diff --git a/sys/dev/ixgbe/ixgbe_osdep.h b/sys/dev/ixgbe/ixgbe_osdep.h
index 03ea5b5..19dbf6b 100644
--- a/sys/dev/ixgbe/ixgbe_osdep.h
+++ b/sys/dev/ixgbe/ixgbe_osdep.h
@@ -95,7 +95,9 @@ typedef uint16_t u16;
typedef uint32_t u32;
typedef int32_t s32;
typedef uint64_t u64;
+#ifndef __bool_true_false_are_defined
typedef boolean_t bool;
+#endif
#define le16_to_cpu
diff --git a/sys/dev/ixgbe/ixv.c b/sys/dev/ixgbe/ixv.c
index e52a527..eaf05d2 100644
--- a/sys/dev/ixgbe/ixv.c
+++ b/sys/dev/ixgbe/ixv.c
@@ -207,7 +207,7 @@ TUNABLE_INT("hw.ixv.flow_control", &ixv_flow_control);
* it can be a performance win in some workloads, but
* in others it actually hurts, its off by default.
*/
-static bool ixv_header_split = FALSE;
+static int ixv_header_split = FALSE;
TUNABLE_INT("hw.ixv.hdr_split", &ixv_header_split);
/*
@@ -2374,7 +2374,7 @@ ixv_free_transmit_buffers(struct tx_ring *txr)
*
**********************************************************************/
-static boolean_t
+static bool
ixv_tx_ctx_setup(struct tx_ring *txr, struct mbuf *mp)
{
struct adapter *adapter = txr->adapter;
@@ -2497,7 +2497,7 @@ ixv_tx_ctx_setup(struct tx_ring *txr, struct mbuf *mp)
* adapters using advanced tx descriptors
*
**********************************************************************/
-static boolean_t
+static bool
ixv_tso_setup(struct tx_ring *txr, struct mbuf *mp, u32 *paylen)
{
struct adapter *adapter = txr->adapter;
@@ -2586,7 +2586,7 @@ ixv_tso_setup(struct tx_ring *txr, struct mbuf *mp, u32 *paylen)
* tx_buffer is put back on the free queue.
*
**********************************************************************/
-static boolean_t
+static bool
ixv_txeof(struct tx_ring *txr)
{
struct adapter *adapter = txr->adapter;
diff --git a/sys/dev/lge/if_lge.c b/sys/dev/lge/if_lge.c
index c4ddef8..6f69a0a 100644
--- a/sys/dev/lge/if_lge.c
+++ b/sys/dev/lge/if_lge.c
@@ -170,16 +170,12 @@ static device_method_t lge_methods[] = {
DEVMETHOD(device_detach, lge_detach),
DEVMETHOD(device_shutdown, lge_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, lge_miibus_readreg),
DEVMETHOD(miibus_writereg, lge_miibus_writereg),
DEVMETHOD(miibus_statchg, lge_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t lge_driver = {
diff --git a/sys/dev/malo/if_malo.c b/sys/dev/malo/if_malo.c
index 6a7a786..7305d12 100644
--- a/sys/dev/malo/if_malo.c
+++ b/sys/dev/malo/if_malo.c
@@ -125,10 +125,10 @@ enum {
static MALLOC_DEFINE(M_MALODEV, "malodev", "malo driver dma buffers");
-static struct ieee80211vap *malo_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+static struct ieee80211vap *malo_vap_create(struct ieee80211com *,
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void malo_vap_delete(struct ieee80211vap *);
static int malo_dma_setup(struct malo_softc *);
static int malo_setup_hwdma(struct malo_softc *);
@@ -344,10 +344,10 @@ bad:
}
static struct ieee80211vap *
-malo_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+malo_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct ifnet *ifp = ic->ic_ifp;
struct malo_vap *mvp;
diff --git a/sys/dev/mca/mca_bus.c b/sys/dev/mca/mca_bus.c
index d3f9313..2b4a0b5 100644
--- a/sys/dev/mca/mca_bus.c
+++ b/sys/dev/mca/mca_bus.c
@@ -507,7 +507,6 @@ static device_method_t mca_methods[] = {
DEVMETHOD(bus_probe_nomatch, mca_probe_nomatch),
DEVMETHOD(bus_read_ivar, mca_read_ivar),
DEVMETHOD(bus_write_ivar, bus_generic_write_ivar),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
@@ -520,7 +519,7 @@ static device_method_t mca_methods[] = {
DEVMETHOD(bus_activate_resource,bus_generic_activate_resource),
DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t mca_driver = {
diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c
index 35d5832..8ff52a9 100644
--- a/sys/dev/md/md.c
+++ b/sys/dev/md/md.c
@@ -105,9 +105,11 @@ static MALLOC_DEFINE(M_MD, "md_disk", "Memory Disk");
static MALLOC_DEFINE(M_MDSECT, "md_sectors", "Memory Disk Sectors");
static int md_debug;
-SYSCTL_INT(_debug, OID_AUTO, mddebug, CTLFLAG_RW, &md_debug, 0, "");
+SYSCTL_INT(_debug, OID_AUTO, mddebug, CTLFLAG_RW, &md_debug, 0,
+ "Enable md(4) debug messages");
static int md_malloc_wait;
-SYSCTL_INT(_vm, OID_AUTO, md_malloc_wait, CTLFLAG_RW, &md_malloc_wait, 0, "");
+SYSCTL_INT(_vm, OID_AUTO, md_malloc_wait, CTLFLAG_RW, &md_malloc_wait, 0,
+ "Allow malloc to wait for memory allocations");
#if defined(MD_ROOT) && defined(MD_ROOT_SIZE)
/*
diff --git a/sys/dev/mfi/mfi_pci.c b/sys/dev/mfi/mfi_pci.c
index 8de2e12..952ab1a 100644
--- a/sys/dev/mfi/mfi_pci.c
+++ b/sys/dev/mfi/mfi_pci.c
@@ -93,9 +93,8 @@ static device_method_t mfi_methods[] = {
DEVMETHOD(device_detach, mfi_pci_detach),
DEVMETHOD(device_suspend, mfi_pci_suspend),
DEVMETHOD(device_resume, mfi_pci_resume),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t mfi_pci_driver = {
diff --git a/sys/dev/mii/acphy.c b/sys/dev/mii/acphy.c
index 58e546e..c61c05b 100644
--- a/sys/dev/mii/acphy.c
+++ b/sys/dev/mii/acphy.c
@@ -87,7 +87,7 @@ static device_method_t acphy_methods[] = {
DEVMETHOD(device_attach, acphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t acphy_devclass;
diff --git a/sys/dev/mii/amphy.c b/sys/dev/mii/amphy.c
index c5f5f5c..bd90ccf 100644
--- a/sys/dev/mii/amphy.c
+++ b/sys/dev/mii/amphy.c
@@ -66,7 +66,7 @@ static device_method_t amphy_methods[] = {
DEVMETHOD(device_attach, amphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t amphy_devclass;
diff --git a/sys/dev/mii/atphy.c b/sys/dev/mii/atphy.c
index b5cf14f..cca8813 100644
--- a/sys/dev/mii/atphy.c
+++ b/sys/dev/mii/atphy.c
@@ -59,7 +59,7 @@ static device_method_t atphy_methods[] = {
DEVMETHOD(device_attach, atphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { NULL, NULL }
+ DEVMETHOD_END
};
static devclass_t atphy_devclass;
diff --git a/sys/dev/mii/axphy.c b/sys/dev/mii/axphy.c
index 7e83f4b..78f3901 100644
--- a/sys/dev/mii/axphy.c
+++ b/sys/dev/mii/axphy.c
@@ -56,7 +56,7 @@ static device_method_t axphy_methods[] = {
DEVMETHOD(device_attach, axphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t axphy_devclass;
diff --git a/sys/dev/mii/bmtphy.c b/sys/dev/mii/bmtphy.c
index 84933b7..81c2bd2 100644
--- a/sys/dev/mii/bmtphy.c
+++ b/sys/dev/mii/bmtphy.c
@@ -91,8 +91,7 @@ static device_method_t bmtphy_methods[] = {
DEVMETHOD(device_attach, bmtphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
-
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t bmtphy_devclass;
diff --git a/sys/dev/mii/brgphy.c b/sys/dev/mii/brgphy.c
index 2c14ea5..cf924cf 100644
--- a/sys/dev/mii/brgphy.c
+++ b/sys/dev/mii/brgphy.c
@@ -82,7 +82,7 @@ static device_method_t brgphy_methods[] = {
DEVMETHOD(device_attach, brgphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t brgphy_devclass;
@@ -139,6 +139,9 @@ static const struct mii_phydesc brgphys[] = {
MII_PHY_DESC(BROADCOM2, BCM5754),
MII_PHY_DESC(BROADCOM2, BCM5761),
MII_PHY_DESC(BROADCOM2, BCM5784),
+#ifdef notyet /* better handled by ukphy(4) until WARs are implemented */
+ MII_PHY_DESC(BROADCOM2, BCM5785),
+#endif
MII_PHY_DESC(BROADCOM3, BCM5717C),
MII_PHY_DESC(BROADCOM3, BCM5719C),
MII_PHY_DESC(BROADCOM3, BCM5720C),
diff --git a/sys/dev/mii/ciphy.c b/sys/dev/mii/ciphy.c
index 2133c76..87d0d81 100644
--- a/sys/dev/mii/ciphy.c
+++ b/sys/dev/mii/ciphy.c
@@ -67,7 +67,7 @@ static device_method_t ciphy_methods[] = {
DEVMETHOD(device_attach, ciphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t ciphy_devclass;
diff --git a/sys/dev/mii/e1000phy.c b/sys/dev/mii/e1000phy.c
index e657592..91ae44d 100644
--- a/sys/dev/mii/e1000phy.c
+++ b/sys/dev/mii/e1000phy.c
@@ -71,7 +71,7 @@ static device_method_t e1000phy_methods[] = {
DEVMETHOD(device_attach, e1000phy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t e1000phy_devclass;
diff --git a/sys/dev/mii/gentbi.c b/sys/dev/mii/gentbi.c
index bf5319b..05209cf 100644
--- a/sys/dev/mii/gentbi.c
+++ b/sys/dev/mii/gentbi.c
@@ -95,7 +95,7 @@ static device_method_t gentbi_methods[] = {
DEVMETHOD(device_attach, gentbi_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- {0, 0}
+ DEVMETHOD_END
};
static devclass_t gentbi_devclass;
diff --git a/sys/dev/mii/icsphy.c b/sys/dev/mii/icsphy.c
index 90ec374..6330d9e 100644
--- a/sys/dev/mii/icsphy.c
+++ b/sys/dev/mii/icsphy.c
@@ -89,7 +89,7 @@ static device_method_t icsphy_methods[] = {
DEVMETHOD(device_attach, icsphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t icsphy_devclass;
diff --git a/sys/dev/mii/ip1000phy.c b/sys/dev/mii/ip1000phy.c
index 566b5b0..b7fb515 100644
--- a/sys/dev/mii/ip1000phy.c
+++ b/sys/dev/mii/ip1000phy.c
@@ -63,7 +63,7 @@ static device_method_t ip1000phy_methods[] = {
DEVMETHOD(device_attach, ip1000phy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t ip1000phy_devclass;
@@ -324,7 +324,8 @@ ip1000phy_mii_phy_auto(struct mii_softc *sc, int media)
PHY_WRITE(sc, IP1000PHY_MII_ANAR, reg | IP1000PHY_ANAR_CSMA);
reg = IP1000PHY_1000CR_1000T | IP1000PHY_1000CR_1000T_FDX;
- reg |= IP1000PHY_1000CR_MASTER;
+ if (sc->mii_mpd_model != MII_MODEL_xxICPLUS_IP1001)
+ reg |= IP1000PHY_1000CR_MASTER;
PHY_WRITE(sc, IP1000PHY_MII_1000CR, reg);
PHY_WRITE(sc, IP1000PHY_MII_BMCR, (IP1000PHY_BMCR_FDX |
IP1000PHY_BMCR_AUTOEN | IP1000PHY_BMCR_STARTNEG));
diff --git a/sys/dev/mii/jmphy.c b/sys/dev/mii/jmphy.c
index 1e3eb55..14fdf7e 100644
--- a/sys/dev/mii/jmphy.c
+++ b/sys/dev/mii/jmphy.c
@@ -62,7 +62,7 @@ static device_method_t jmphy_methods[] = {
DEVMETHOD(device_attach, jmphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { NULL, NULL }
+ DEVMETHOD_END
};
static devclass_t jmphy_devclass;
diff --git a/sys/dev/mii/lxtphy.c b/sys/dev/mii/lxtphy.c
index f223ec6..d7059fb 100644
--- a/sys/dev/mii/lxtphy.c
+++ b/sys/dev/mii/lxtphy.c
@@ -91,7 +91,7 @@ static device_method_t lxtphy_methods[] = {
DEVMETHOD(device_attach, lxtphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t lxtphy_devclass;
diff --git a/sys/dev/mii/mii.c b/sys/dev/mii/mii.c
index 2c99bc0..f85c579 100644
--- a/sys/dev/mii/mii.c
+++ b/sys/dev/mii/mii.c
@@ -82,7 +82,6 @@ static device_method_t miibus_methods[] = {
/* bus interface */
DEVMETHOD(bus_print_child, miibus_print_child),
DEVMETHOD(bus_read_ivar, miibus_read_ivar),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
DEVMETHOD(bus_child_pnpinfo_str, miibus_child_pnpinfo_str),
DEVMETHOD(bus_child_location_str, miibus_child_location_str),
DEVMETHOD(bus_hinted_child, miibus_hinted_child),
@@ -94,7 +93,7 @@ static device_method_t miibus_methods[] = {
DEVMETHOD(miibus_linkchg, miibus_linkchg),
DEVMETHOD(miibus_mediainit, miibus_mediainit),
- { 0, 0 }
+ DEVMETHOD_END
};
devclass_t miibus_devclass;
@@ -500,7 +499,7 @@ mii_attach(device_t dev, device_t *miibus, struct ifnet *ifp,
free(children, M_TEMP);
if (first != 0) {
- rv = device_probe(*miibus);
+ rv = device_set_driver(*miibus, &miibus_driver);
if (rv != 0)
goto fail;
bus_enumerate_hinted_children(*miibus);
@@ -512,7 +511,7 @@ mii_attach(device_t dev, device_t *miibus, struct ifnet *ifp,
rv = ENXIO;
goto fail;
}
- rv = device_attach(*miibus);
+ rv = bus_generic_attach(dev);
if (rv != 0)
goto fail;
@@ -627,7 +626,7 @@ mii_down(struct mii_data *mii)
static unsigned char
mii_bitreverse(unsigned char x)
{
- unsigned const char const nibbletab[16] = {
+ static unsigned const char const nibbletab[16] = {
0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15
};
diff --git a/sys/dev/mii/miidevs b/sys/dev/mii/miidevs
index d069c68..3e85261 100644
--- a/sys/dev/mii/miidevs
+++ b/sys/dev/mii/miidevs
@@ -1,5 +1,5 @@
$FreeBSD$
-/*$NetBSD: miidevs,v 1.99 2011/01/26 18:39:04 bouyer Exp $*/
+/*$NetBSD: miidevs,v 1.104 2011/11/12 11:10:49 sekiya Exp $*/
/*-
* Copyright (c) 1998, 1999 The NetBSD Foundation, Inc.
@@ -146,6 +146,7 @@ model xxBROADCOM BCM5214 0x0028 BCM5214 Quad 10/100 media interface
model xxBROADCOM BCM5221 0x001e BCM5221 10/100 media interface
model xxBROADCOM BCM5222 0x0032 BCM5222 Dual 10/100 media interface
model xxBROADCOM BCM4401 0x0036 BCM4401 10/100 media interface
+model xxBROADCOM BCM5365 0x0037 BCM5365 10/100 5-port PHY switch
model BROADCOM BCM5400 0x0004 BCM5400 1000BASE-T media interface
model BROADCOM BCM5401 0x0005 BCM5401 1000BASE-T media interface
model BROADCOM BCM5411 0x0007 BCM5411 1000BASE-T media interface
@@ -164,12 +165,14 @@ model BROADCOM BCM54K2 0x002e BCM54K2 1000BASE-T media interface
model BROADCOM BCM5714 0x0034 BCM5714 1000BASE-T media interface
model BROADCOM BCM5780 0x0035 BCM5780 1000BASE-T media interface
model BROADCOM BCM5708C 0x0036 BCM5708C 1000BASE-T media interface
+model BROADCOM2 BCM5325 0x0003 BCM5325 10/100 5-port PHY switch
model BROADCOM2 BCM5906 0x0004 BCM5906 10/100baseTX media interface
model BROADCOM2 BCM5481 0x000a BCM5481 1000BASE-T media interface
model BROADCOM2 BCM5482 0x000b BCM5482 1000BASE-T media interface
model BROADCOM2 BCM5755 0x000c BCM5755 1000BASE-T media interface
model BROADCOM2 BCM5754 0x000e BCM5754/5787 1000BASE-T media interface
model BROADCOM2 BCM5708S 0x0015 BCM5708S 1000/2500baseSX PHY
+model BROADCOM2 BCM5785 0x0016 BCM5785 1000BASE-T media interface
model BROADCOM2 BCM5709CAX 0x002c BCM5709CAX 10/100/1000baseT PHY
model BROADCOM2 BCM5722 0x002d BCM5722 1000BASE-T media interface
model BROADCOM2 BCM5784 0x003a BCM5784 10/100/1000baseT PHY
@@ -218,6 +221,10 @@ model yyINTEL I82562ET 0x0033 i82562ET 10/100 media interface
model yyINTEL I82553 0x0035 i82553 10/100 media interface
model yyINTEL I82566 0x0039 i82566 10/100/1000 media interface
model INTEL I82577 0x0005 i82577 10/100/1000 media interface
+model INTEL I82579 0x0009 i82579 10/100/1000 media interface
+model xxMARVELL I82563 0x000a i82563 10/100/1000 media interface
+
+model yyINTEL IGP01E1000 0x0038 Intel IGP01E1000 Gigabit PHY
/* Jato Technologies PHYs */
model xxJATO BASEX 0x0000 Jato 1000baseX media interface
@@ -246,18 +253,24 @@ model xxMARVELL E3082 0x0008 Marvell 88E3082 10/100 Fast Ethernet PHY
model xxMARVELL E1112 0x0009 Marvell 88E1112 Gigabit PHY
model xxMARVELL E1149 0x000b Marvell 88E1149 Gigabit PHY
model xxMARVELL E1111 0x000c Marvell 88E1111 Gigabit PHY
+model xxMARVELL E1145 0x000d Marvell 88E1145 Quad Gigabit PHY
model xxMARVELL E1116 0x0021 Marvell 88E1116 Gigabit PHY
model xxMARVELL E1116R 0x0024 Marvell 88E1116R Gigabit PHY
model xxMARVELL E1118 0x0022 Marvell 88E1118 Gigabit PHY
model xxMARVELL E1149R 0x0025 Marvell 88E1149R Quad Gigabit PHY
model xxMARVELL E3016 0x0026 Marvell 88E3016 10/100 Fast Ethernet PHY
model xxMARVELL PHYG65G 0x0027 Marvell PHYG65G Gigabit PHY
+model xxMARVELL E1116R_29 0x0029 Marvell 88E1116R Gigabit PHY
model MARVELL E1000 0x0005 Marvell 88E1000 Gigabit PHY
model MARVELL E1011 0x0002 Marvell 88E1011 Gigabit PHY
model MARVELL E1000_3 0x0003 Marvell 88E1000 Gigabit PHY
model MARVELL E1000_5 0x0005 Marvell 88E1000 Gigabit PHY
model MARVELL E1111 0x000c Marvell 88E1111 Gigabit PHY
+/* Myson Technology PHYs */
+model xxMYSON MTD972 0x0000 MTD972 10/100 media interface
+model MYSON MTD803 0x0000 MTD803 3-in-1 media interface
+
/* National Semiconductor PHYs */
model xxNATSEMI DP83840 0x0000 DP83840 10/100 media interface
model xxNATSEMI DP83843 0x0001 DP83843 10/100 media interface
diff --git a/sys/dev/mii/mlphy.c b/sys/dev/mii/mlphy.c
index 3708b4a..f9b1962 100644
--- a/sys/dev/mii/mlphy.c
+++ b/sys/dev/mii/mlphy.c
@@ -84,7 +84,7 @@ static device_method_t mlphy_methods[] = {
DEVMETHOD(device_attach, mlphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t mlphy_devclass;
diff --git a/sys/dev/mii/nsgphy.c b/sys/dev/mii/nsgphy.c
index cd18acf..988e5c2 100644
--- a/sys/dev/mii/nsgphy.c
+++ b/sys/dev/mii/nsgphy.c
@@ -83,7 +83,7 @@ static device_method_t nsgphy_methods[] = {
DEVMETHOD(device_attach, nsgphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t nsgphy_devclass;
diff --git a/sys/dev/mii/nsphy.c b/sys/dev/mii/nsphy.c
index 86a69b6..01cd31d 100644
--- a/sys/dev/mii/nsphy.c
+++ b/sys/dev/mii/nsphy.c
@@ -90,7 +90,7 @@ static device_method_t nsphy_methods[] = {
DEVMETHOD(device_attach, nsphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t nsphy_devclass;
diff --git a/sys/dev/mii/nsphyter.c b/sys/dev/mii/nsphyter.c
index facdebb..316117d 100644
--- a/sys/dev/mii/nsphyter.c
+++ b/sys/dev/mii/nsphyter.c
@@ -93,7 +93,7 @@ static device_method_t nsphyter_methods[] = {
DEVMETHOD(device_attach, nsphyter_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t nsphyter_devclass;
diff --git a/sys/dev/mii/pnaphy.c b/sys/dev/mii/pnaphy.c
index 0e77c4f..29f2c78 100644
--- a/sys/dev/mii/pnaphy.c
+++ b/sys/dev/mii/pnaphy.c
@@ -69,7 +69,7 @@ static device_method_t pnaphy_methods[] = {
DEVMETHOD(device_attach, pnaphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t pnaphy_devclass;
diff --git a/sys/dev/mii/qsphy.c b/sys/dev/mii/qsphy.c
index a504504..a649e5c 100644
--- a/sys/dev/mii/qsphy.c
+++ b/sys/dev/mii/qsphy.c
@@ -91,7 +91,7 @@ static device_method_t qsphy_methods[] = {
DEVMETHOD(device_attach, qsphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t qsphy_devclass;
diff --git a/sys/dev/mii/rdcphy.c b/sys/dev/mii/rdcphy.c
index cf5db88..6f7f98d 100644
--- a/sys/dev/mii/rdcphy.c
+++ b/sys/dev/mii/rdcphy.c
@@ -65,7 +65,7 @@ static device_method_t rdcphy_methods[] = {
DEVMETHOD(device_attach, rdcphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static devclass_t rdcphy_devclass;
diff --git a/sys/dev/mii/rgephy.c b/sys/dev/mii/rgephy.c
index 6d54542..d5dbbc8 100644
--- a/sys/dev/mii/rgephy.c
+++ b/sys/dev/mii/rgephy.c
@@ -68,7 +68,7 @@ static device_method_t rgephy_methods[] = {
DEVMETHOD(device_attach, rgephy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t rgephy_devclass;
diff --git a/sys/dev/mii/rlphy.c b/sys/dev/mii/rlphy.c
index b285f7f..ddf8d73 100644
--- a/sys/dev/mii/rlphy.c
+++ b/sys/dev/mii/rlphy.c
@@ -66,7 +66,7 @@ static device_method_t rlphy_methods[] = {
DEVMETHOD(device_attach, rlphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t rlphy_devclass;
diff --git a/sys/dev/mii/rlswitch.c b/sys/dev/mii/rlswitch.c
index 67c4ec3..b158fd4 100644
--- a/sys/dev/mii/rlswitch.c
+++ b/sys/dev/mii/rlswitch.c
@@ -70,7 +70,7 @@ static device_method_t rlswitch_methods[] = {
DEVMETHOD(device_attach, rlswitch_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t rlswitch_devclass;
diff --git a/sys/dev/mii/smcphy.c b/sys/dev/mii/smcphy.c
index b04a919..fbeaddf 100644
--- a/sys/dev/mii/smcphy.c
+++ b/sys/dev/mii/smcphy.c
@@ -62,8 +62,7 @@ static device_method_t smcphy_methods[] = {
DEVMETHOD(device_attach, smcphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
-
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t smcphy_devclass;
@@ -207,8 +206,7 @@ smcphy_auto(struct mii_softc *sc, int media)
{
uint16_t anar;
- anar = BMSR_MEDIA_TO_ANAR(sc->mii_capabilities) |
- ANAR_CSMA;
+ anar = BMSR_MEDIA_TO_ANAR(sc->mii_capabilities) | ANAR_CSMA;
if ((media & IFM_FLOW) != 0 || (sc->mii_flags & MIIF_FORCEPAUSE) != 0)
anar |= ANAR_FC;
PHY_WRITE(sc, MII_ANAR, anar);
diff --git a/sys/dev/mii/tdkphy.c b/sys/dev/mii/tdkphy.c
index 83868ad..d07327c 100644
--- a/sys/dev/mii/tdkphy.c
+++ b/sys/dev/mii/tdkphy.c
@@ -71,7 +71,7 @@ static device_method_t tdkphy_methods[] = {
DEVMETHOD(device_attach, tdkphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t tdkphy_devclass;
diff --git a/sys/dev/mii/tlphy.c b/sys/dev/mii/tlphy.c
index c99c754..ac5cff3 100644
--- a/sys/dev/mii/tlphy.c
+++ b/sys/dev/mii/tlphy.c
@@ -97,7 +97,7 @@ static device_method_t tlphy_methods[] = {
DEVMETHOD(device_attach, tlphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t tlphy_devclass;
diff --git a/sys/dev/mii/truephy.c b/sys/dev/mii/truephy.c
index 86480f1..df17b24 100644
--- a/sys/dev/mii/truephy.c
+++ b/sys/dev/mii/truephy.c
@@ -72,7 +72,7 @@ static device_method_t truephy_methods[] = {
DEVMETHOD(device_attach, truephy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static const struct mii_phydesc truephys[] = {
diff --git a/sys/dev/mii/ukphy.c b/sys/dev/mii/ukphy.c
index 9697176..9d52eb5 100644
--- a/sys/dev/mii/ukphy.c
+++ b/sys/dev/mii/ukphy.c
@@ -86,7 +86,7 @@ static device_method_t ukphy_methods[] = {
DEVMETHOD(device_attach, ukphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t ukphy_devclass;
diff --git a/sys/dev/mii/xmphy.c b/sys/dev/mii/xmphy.c
index 75d3e27..328d34a 100644
--- a/sys/dev/mii/xmphy.c
+++ b/sys/dev/mii/xmphy.c
@@ -66,7 +66,7 @@ static device_method_t xmphy_methods[] = {
DEVMETHOD(device_attach, xmphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t xmphy_devclass;
diff --git a/sys/dev/mlx/mlx_pci.c b/sys/dev/mlx/mlx_pci.c
index b39a6b8..00d0fe2 100644
--- a/sys/dev/mlx/mlx_pci.c
+++ b/sys/dev/mlx/mlx_pci.c
@@ -61,9 +61,7 @@ static device_method_t mlx_methods[] = {
DEVMETHOD(device_suspend, mlx_suspend),
DEVMETHOD(device_resume, mlx_resume),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t mlx_pci_driver = {
diff --git a/sys/dev/mps/mps_pci.c b/sys/dev/mps/mps_pci.c
index 2c57286..9b27488 100644
--- a/sys/dev/mps/mps_pci.c
+++ b/sys/dev/mps/mps_pci.c
@@ -78,9 +78,8 @@ static device_method_t mps_methods[] = {
DEVMETHOD(device_detach, mps_pci_detach),
DEVMETHOD(device_suspend, mps_pci_suspend),
DEVMETHOD(device_resume, mps_pci_resume),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t mps_pci_driver = {
diff --git a/sys/dev/mps/mps_sas.c b/sys/dev/mps/mps_sas.c
index cf4757a..c253ee0 100644
--- a/sys/dev/mps/mps_sas.c
+++ b/sys/dev/mps/mps_sas.c
@@ -937,6 +937,7 @@ mpssas_action(struct cam_sim *sim, union ccb *ccb)
cpi->transport_version = 0;
cpi->protocol = PROTO_SCSI;
cpi->protocol_version = SCSI_REV_SPC;
+ cpi->maxio = MAXPHYS;
cpi->ccb_h.status = CAM_REQ_CMP;
break;
}
diff --git a/sys/dev/msk/if_msk.c b/sys/dev/msk/if_msk.c
index 36407a2..aa08f51 100644
--- a/sys/dev/msk/if_msk.c
+++ b/sys/dev/msk/if_msk.c
@@ -334,11 +334,7 @@ static device_method_t mskc_methods[] = {
DEVMETHOD(device_resume, mskc_resume),
DEVMETHOD(device_shutdown, mskc_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
- { NULL, NULL }
+ DEVMETHOD_END
};
static driver_t mskc_driver = {
@@ -356,16 +352,12 @@ static device_method_t msk_methods[] = {
DEVMETHOD(device_detach, msk_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, msk_miibus_readreg),
DEVMETHOD(miibus_writereg, msk_miibus_writereg),
DEVMETHOD(miibus_statchg, msk_miibus_statchg),
- { NULL, NULL }
+ DEVMETHOD_END
};
static driver_t msk_driver = {
@@ -656,8 +648,8 @@ msk_rx_fill(struct msk_if_softc *sc_if, int jumbo)
if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0 &&
(sc_if->msk_ifp->if_capenable & IFCAP_RXCSUM) != 0) {
/* Wait until controller executes OP_TCPSTART command. */
- for (i = 10; i > 0; i--) {
- DELAY(10);
+ for (i = 100; i > 0; i--) {
+ DELAY(100);
idx = CSR_READ_2(sc_if->msk_softc,
Y2_PREF_Q_ADDR(sc_if->msk_rxq,
PREF_UNIT_GET_IDX_REG));
diff --git a/sys/dev/mvs/mvs_pci.c b/sys/dev/mvs/mvs_pci.c
index 36dd93d..7379522 100644
--- a/sys/dev/mvs/mvs_pci.c
+++ b/sys/dev/mvs/mvs_pci.c
@@ -179,7 +179,7 @@ mvs_detach(device_t dev)
struct mvs_controller *ctlr = device_get_softc(dev);
/* Detach & delete all children */
- device_delete_all_children(dev);
+ device_delete_children(dev);
/* Free interrupt. */
if (ctlr->irq.r_irq) {
diff --git a/sys/dev/mvs/mvs_soc.c b/sys/dev/mvs/mvs_soc.c
index 670bfec..9c5c479 100644
--- a/sys/dev/mvs/mvs_soc.c
+++ b/sys/dev/mvs/mvs_soc.c
@@ -175,7 +175,7 @@ mvs_detach(device_t dev)
struct mvs_controller *ctlr = device_get_softc(dev);
/* Detach & delete all children */
- device_delete_all_children(dev);
+ device_delete_children(dev);
/* Free interrupt. */
if (ctlr->irq.r_irq) {
diff --git a/sys/dev/mwl/if_mwl.c b/sys/dev/mwl/if_mwl.c
index 5af96ba..bc1a15e 100644
--- a/sys/dev/mwl/if_mwl.c
+++ b/sys/dev/mwl/if_mwl.c
@@ -83,9 +83,9 @@ __FBSDID("$FreeBSD$");
#define SM(v,x) (((v) << x##_S) & x)
static struct ieee80211vap *mwl_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void mwl_vap_delete(struct ieee80211vap *);
static int mwl_setupdma(struct mwl_softc *);
static int mwl_hal_reset(struct mwl_softc *sc);
@@ -601,10 +601,10 @@ reclaim_address(struct mwl_softc *sc, uint8_t mac[IEEE80211_ADDR_LEN])
}
static struct ieee80211vap *
-mwl_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac0[IEEE80211_ADDR_LEN])
+mwl_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac0[IEEE80211_ADDR_LEN])
{
struct ifnet *ifp = ic->ic_ifp;
struct mwl_softc *sc = ifp->if_softc;
diff --git a/sys/dev/mxge/if_mxge.c b/sys/dev/mxge/if_mxge.c
index 23af286..a33d03f 100644
--- a/sys/dev/mxge/if_mxge.c
+++ b/sys/dev/mxge/if_mxge.c
@@ -2827,7 +2827,7 @@ mxge_media_init(mxge_softc_t *sc)
}
for (i = 0; i < 3; i++, ptr++) {
- ptr = index(ptr, '-');
+ ptr = strchr(ptr, '-');
if (ptr == NULL) {
device_printf(sc->dev,
"only %d dashes in PC?!?\n", i);
diff --git a/sys/dev/netmap/if_em_netmap.h b/sys/dev/netmap/if_em_netmap.h
index 0e220e7..d75e924 100644
--- a/sys/dev/netmap/if_em_netmap.h
+++ b/sys/dev/netmap/if_em_netmap.h
@@ -9,7 +9,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -25,9 +25,12 @@
/*
* $FreeBSD$
- * $Id: if_em_netmap.h 9662 2011-11-16 13:18:06Z luigi $
+ * $Id: if_em_netmap.h 9802 2011-12-02 18:42:37Z luigi $
*
* netmap changes for if_em.
+ *
+ * For structure and details on the individual functions please see
+ * ixgbe_netmap.h
*/
#include <net/netmap.h>
@@ -58,12 +61,7 @@ em_netmap_attach(struct adapter *adapter)
na.nm_rxsync = em_netmap_rxsync;
na.nm_lock = em_netmap_lock_wrapper;
na.nm_register = em_netmap_reg;
- /*
- * adapter->rx_mbuf_sz is set by SIOCSETMTU, but in netmap mode
- * we allocate the buffers on the first register. So we must
- * disallow a SIOCSETMTU when if_capenable & IFCAP_NETMAP is set.
- */
- na.buff_size = MCLBYTES;
+ na.buff_size = NETMAP_BUF_SIZE;
netmap_attach(&na, adapter->num_queues);
}
@@ -78,7 +76,7 @@ em_netmap_lock_wrapper(void *_a, int what, u_int queueid)
ASSERT(queueid < adapter->num_queues);
switch (what) {
- case NETMAP_CORE_LOCK:
+ case NETMAP_CORE_LOCK:
EM_CORE_LOCK(adapter);
break;
case NETMAP_CORE_UNLOCK:
@@ -100,6 +98,7 @@ em_netmap_lock_wrapper(void *_a, int what, u_int queueid)
}
+// XXX do we need to block/unblock the tasks ?
static void
em_netmap_block_tasks(struct adapter *adapter)
{
@@ -162,9 +161,6 @@ em_netmap_reg(struct ifnet *ifp, int onoff)
if (onoff) {
ifp->if_capenable |= IFCAP_NETMAP;
- /* save if_transmit for later restore.
- * XXX also if_start and if_qflush ?
- */
na->if_transmit = ifp->if_transmit;
ifp->if_transmit = netmap_start;
@@ -179,15 +175,13 @@ fail:
ifp->if_transmit = na->if_transmit;
ifp->if_capenable &= ~IFCAP_NETMAP;
em_init_locked(adapter); /* also enable intr */
-
}
em_netmap_unblock_tasks(adapter);
return (error);
}
/*
- * Reconcile hardware and user view of the transmit ring, see
- * ixgbe.c for details.
+ * Reconcile hardware and user view of the transmit ring.
*/
static int
em_netmap_txsync(void *a, u_int ring_nr, int do_lock)
@@ -197,13 +191,13 @@ em_netmap_txsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(adapter->ifp);
struct netmap_kring *kring = &na->tx_rings[ring_nr];
struct netmap_ring *ring = kring->ring;
- int j, k, n, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n = 0, lim = kring->nkr_num_slots - 1;
/* generate an interrupt approximately every half ring */
int report_frequency = kring->nkr_num_slots >> 1;
k = ring->cur;
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
+ if (k > lim)
return netmap_ring_reinit(kring);
if (do_lock)
@@ -211,35 +205,20 @@ em_netmap_txsync(void *a, u_int ring_nr, int do_lock)
bus_dmamap_sync(txr->txdma.dma_tag, txr->txdma.dma_map,
BUS_DMASYNC_POSTREAD);
- /* record completed transmissions TODO
- *
- * instead of using TDH, we could read the transmitted status bit.
+ /* check for new packets to send.
+ * j indexes the netmap ring, l indexes the nic ring, and
+ * j = kring->nr_hwcur, l = E1000_TDT (not tracked),
+ * j == (l + kring->nkr_hwofs) % ring_size
*/
- j = E1000_READ_REG(&adapter->hw, E1000_TDH(ring_nr));
- if (j >= kring->nkr_num_slots) { /* XXX can happen */
- D("TDH wrap %d", j);
- j -= kring->nkr_num_slots;
- }
- int delta = j - txr->next_to_clean;
- if (delta) {
- /* new transmissions were completed, increment
- ring->nr_hwavail. */
- if (delta < 0)
- delta += kring->nkr_num_slots;
- txr->next_to_clean = j;
- kring->nr_hwavail += delta;
- }
-
- /* update avail to what the hardware knows */
- ring->avail = kring->nr_hwavail;
-
j = kring->nr_hwcur;
if (j != k) { /* we have packets to send */
- n = 0;
+ l = j - kring->nkr_hwofs;
+ if (l < 0)
+ l += lim + 1;
while (j != k) {
struct netmap_slot *slot = &ring->slot[j];
- struct e1000_tx_desc *curr = &txr->tx_base[j];
- struct em_buffer *txbuf = &txr->tx_buffers[j];
+ struct e1000_tx_desc *curr = &txr->tx_base[l];
+ struct em_buffer *txbuf = &txr->tx_buffers[l];
int flags = ((slot->flags & NS_REPORT) ||
j == 0 || j == report_frequency) ?
E1000_TXD_CMD_RS : 0;
@@ -254,42 +233,61 @@ em_netmap_txsync(void *a, u_int ring_nr, int do_lock)
slot->flags &= ~NS_REPORT;
curr->upper.data = 0;
curr->lower.data =
- htole32(
- adapter->txd_cmd |
- (E1000_TXD_CMD_EOP | flags) |
- slot->len);
+ htole32(adapter->txd_cmd | len |
+ (E1000_TXD_CMD_EOP | flags) );
if (slot->flags & NS_BUF_CHANGED) {
curr->buffer_addr = htole64(vtophys(addr));
- /* buffer has changed, unload and reload map */
+ /* buffer has changed, reload map */
netmap_reload_map(txr->txtag, txbuf->map,
- addr, na->buff_size);
+ addr, na->buff_size);
slot->flags &= ~NS_BUF_CHANGED;
}
bus_dmamap_sync(txr->txtag, txbuf->map,
BUS_DMASYNC_PREWRITE);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
- kring->nr_hwcur = ring->cur;
+ kring->nr_hwcur = k;
/* decrease avail by number of sent packets */
- ring->avail -= n;
- kring->nr_hwavail = ring->avail;
+ kring->nr_hwavail -= n;
bus_dmamap_sync(txr->txdma.dma_tag, txr->txdma.dma_map,
- BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
- E1000_WRITE_REG(&adapter->hw, E1000_TDT(txr->me),
- ring->cur);
+ E1000_WRITE_REG(&adapter->hw, E1000_TDT(txr->me), l);
}
+
+ if (n == 0 || kring->nr_hwavail < 1) {
+ int delta;
+
+ /* record completed transmissions using THD. */
+ l = E1000_READ_REG(&adapter->hw, E1000_TDH(ring_nr));
+ if (l >= kring->nkr_num_slots) { /* XXX can happen */
+ D("TDH wrap %d", l);
+ l -= kring->nkr_num_slots;
+ }
+ delta = l - txr->next_to_clean;
+ if (delta) {
+ /* some completed, increment hwavail. */
+ if (delta < 0)
+ delta += kring->nkr_num_slots;
+ txr->next_to_clean = l;
+ kring->nr_hwavail += delta;
+ }
+ }
+ /* update avail to what the hardware knows */
+ ring->avail = kring->nr_hwavail;
+
if (do_lock)
EM_TX_UNLOCK(txr);
return 0;
}
/*
- * Reconcile kernel and user view of the receive ring, see ixgbe.c
+ * Reconcile kernel and user view of the receive ring.
*/
static int
em_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
@@ -299,10 +297,10 @@ em_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(adapter->ifp);
struct netmap_kring *kring = &na->rx_rings[ring_nr];
struct netmap_ring *ring = kring->ring;
- int j, k, n, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n, lim = kring->nkr_num_slots - 1;
k = ring->cur;
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
+ if (k > lim)
return netmap_ring_reinit(kring);
if (do_lock)
@@ -311,36 +309,52 @@ em_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
- /* acknowledge all the received packets. */
- j = rxr->next_to_check;
+ /* import newly received packets into the netmap ring.
+ * j is an index in the netmap ring, l in the NIC ring, and
+ * j = (kring->nr_hwcur + kring->nr_hwavail) % ring_size
+ * l = rxr->next_to_check;
+ * and
+ * j == (l + kring->nkr_hwofs) % ring_size
+ */
+ l = rxr->next_to_check;
+ j = l + kring->nkr_hwofs;
+ /* here nkr_hwofs can be negative so must check for j < 0 */
+ if (j < 0)
+ j += lim + 1;
+ else if (j > lim)
+ j -= lim + 1;
for (n = 0; ; n++) {
- struct e1000_rx_desc *curr = &rxr->rx_base[j];
+ struct e1000_rx_desc *curr = &rxr->rx_base[l];
if ((curr->status & E1000_RXD_STAT_DD) == 0)
break;
ring->slot[j].len = le16toh(curr->length);
- bus_dmamap_sync(rxr->tag, rxr->rx_buffers[j].map,
+ bus_dmamap_sync(rxr->rxtag, rxr->rx_buffers[l].map,
BUS_DMASYNC_POSTREAD);
j = (j == lim) ? 0 : j + 1;
+ /* make sure next_to_refresh follows next_to_check */
+ rxr->next_to_refresh = l; // XXX
+ l = (l == lim) ? 0 : l + 1;
}
if (n) {
- rxr->next_to_check = j;
+ rxr->next_to_check = l;
kring->nr_hwavail += n;
}
- /* skip past packets that userspace has already processed:
- * making them available for reception.
- * advance nr_hwcur and issue a bus_dmamap_sync on the
- * buffers so it is safe to write to them.
- * Also increase nr_hwavail
- */
+ /* skip past packets that userspace has already processed */
j = kring->nr_hwcur;
if (j != k) { /* userspace has read some packets. */
n = 0;
+ l = j - kring->nkr_hwofs; /* NIC ring index */
+ /* here nkr_hwofs can be negative so check for l > lim */
+ if (l < 0)
+ l += lim + 1;
+ else if (l > lim)
+ l -= lim + 1;
while (j != k) {
struct netmap_slot *slot = &ring->slot[j];
- struct e1000_rx_desc *curr = &rxr->rx_base[j];
- struct em_buffer *rxbuf = &rxr->rx_buffers[j];
+ struct e1000_rx_desc *curr = &rxr->rx_base[l];
+ struct em_buffer *rxbuf = &rxr->rx_buffers[l];
void *addr = NMB(slot);
if (addr == netmap_buffer_base) { /* bad buf */
@@ -352,28 +366,29 @@ em_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
curr->status = 0;
if (slot->flags & NS_BUF_CHANGED) {
curr->buffer_addr = htole64(vtophys(addr));
- /* buffer has changed, unload and reload map */
+ /* buffer has changed, reload map */
netmap_reload_map(rxr->rxtag, rxbuf->map,
- addr, na->buff_size);
+ addr, na->buff_size);
slot->flags &= ~NS_BUF_CHANGED;
}
bus_dmamap_sync(rxr->rxtag, rxbuf->map,
- BUS_DMASYNC_PREREAD);
+ BUS_DMASYNC_PREREAD);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
kring->nr_hwavail -= n;
- kring->nr_hwcur = ring->cur;
+ kring->nr_hwcur = k;
bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
- BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
/*
* IMPORTANT: we must leave one free slot in the ring,
- * so move j back by one unit
+ * so move l back by one unit
*/
- j = (j == 0) ? lim : j - 1;
- E1000_WRITE_REG(&adapter->hw, E1000_RDT(rxr->me), j);
+ l = (l == 0) ? lim : l - 1;
+ E1000_WRITE_REG(&adapter->hw, E1000_RDT(rxr->me), l);
}
/* tell userspace that there are new packets */
ring->avail = kring->nr_hwavail ;
diff --git a/sys/dev/netmap/if_igb_netmap.h b/sys/dev/netmap/if_igb_netmap.h
index 0c14706..5e41742 100644
--- a/sys/dev/netmap/if_igb_netmap.h
+++ b/sys/dev/netmap/if_igb_netmap.h
@@ -25,7 +25,7 @@
/*
* $FreeBSD$
- * $Id: if_igb_netmap.h 9662 2011-11-16 13:18:06Z luigi $
+ * $Id: if_igb_netmap.h 9802 2011-12-02 18:42:37Z luigi $
*
* netmap modifications for igb
* contribured by Ahmed Kooli
@@ -58,12 +58,7 @@ igb_netmap_attach(struct adapter *adapter)
na.nm_rxsync = igb_netmap_rxsync;
na.nm_lock = igb_netmap_lock_wrapper;
na.nm_register = igb_netmap_reg;
- /*
- * adapter->rx_mbuf_sz is set by SIOCSETMTU, but in netmap mode
- * we allocate the buffers on the first register. So we must
- * disallow a SIOCSETMTU when if_capenable & IFCAP_NETMAP is set.
- */
- na.buff_size = MCLBYTES;
+ na.buff_size = NETMAP_BUF_SIZE;
netmap_attach(&na, adapter->num_queues);
}
@@ -111,7 +106,7 @@ igb_netmap_reg(struct ifnet *ifp, int onoff)
struct netmap_adapter *na = NA(ifp);
int error = 0;
- if (!na)
+ if (na == NULL)
return EINVAL;
igb_disable_intr(adapter);
@@ -144,21 +139,6 @@ fail:
/*
* Reconcile kernel and user view of the transmit ring.
- *
- * Userspace has filled tx slots up to cur (excluded).
- * The last unused slot previously known to the kernel was nr_hwcur,
- * and the last interrupt reported nr_hwavail slots available
- * (using the special value -1 to indicate idle transmit ring).
- * The function must first update avail to what the kernel
- * knows, subtract the newly used slots (cur - nr_hwcur)
- * from both avail and nr_hwavail, and set nr_hwcur = cur
- * issuing a dmamap_sync on all slots.
- *
- * Check parameters in the struct netmap_ring.
- * We don't use avail, only check for bogus values.
- * Make sure cur is valid, and same goes for buffer indexes and lengths.
- * To avoid races, read the values once, and never use those from
- * the ring afterwards.
*/
static int
igb_netmap_txsync(void *a, u_int ring_nr, int do_lock)
@@ -168,54 +148,39 @@ igb_netmap_txsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(adapter->ifp);
struct netmap_kring *kring = &na->tx_rings[ring_nr];
struct netmap_ring *ring = kring->ring;
- int j, k, n, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n = 0, lim = kring->nkr_num_slots - 1;
/* generate an interrupt approximately every half ring */
int report_frequency = kring->nkr_num_slots >> 1;
- k = ring->cur; /* ring is not protected by any lock */
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
+ k = ring->cur;
+ if (k > lim)
return netmap_ring_reinit(kring);
if (do_lock)
IGB_TX_LOCK(txr);
bus_dmamap_sync(txr->txdma.dma_tag, txr->txdma.dma_map,
- BUS_DMASYNC_POSTREAD);
-
- /* record completed transmissions. TODO
- *
- * Instead of reading from the TDH register, we could and try to check
- * the status bit of descriptor packets.
- */
- j = E1000_READ_REG(&adapter->hw, E1000_TDH(ring_nr));
- if (j >= kring->nkr_num_slots) /* XXX can it happen ? */
- j -= kring->nkr_num_slots;
- int delta = j - txr->next_to_clean;
- if (delta) {
- /* new tx were completed */
- if (delta < 0)
- delta += kring->nkr_num_slots;
- txr->next_to_clean = j;
- kring->nr_hwavail += delta;
- }
+ BUS_DMASYNC_POSTREAD);
/* update avail to what the hardware knows */
ring->avail = kring->nr_hwavail;
- j = kring->nr_hwcur;
+ j = kring->nr_hwcur; /* netmap ring index */
if (j != k) { /* we have new packets to send */
u32 olinfo_status = 0;
- n = 0;
+ l = j - kring->nkr_hwofs; /* NIC ring index */
+ if (l < 0)
+ l += lim + 1;
/* 82575 needs the queue index added */
if (adapter->hw.mac.type == e1000_82575)
olinfo_status |= txr->me << 4;
while (j != k) {
struct netmap_slot *slot = &ring->slot[j];
- struct igb_tx_buffer *txbuf = &txr->tx_buffers[j];
+ struct igb_tx_buffer *txbuf = &txr->tx_buffers[l];
union e1000_adv_tx_desc *curr =
- (union e1000_adv_tx_desc *)&txr->tx_base[j];
+ (union e1000_adv_tx_desc *)&txr->tx_base[l];
void *addr = NMB(slot);
int flags = ((slot->flags & NS_REPORT) ||
j == 0 || j == report_frequency) ?
@@ -229,6 +194,7 @@ igb_netmap_txsync(void *a, u_int ring_nr, int do_lock)
}
slot->flags &= ~NS_REPORT;
+ // XXX do we need to set the address ?
curr->read.buffer_addr = htole64(vtophys(addr));
curr->read.olinfo_status =
htole32(olinfo_status |
@@ -239,7 +205,7 @@ igb_netmap_txsync(void *a, u_int ring_nr, int do_lock)
E1000_ADVTXD_DCMD_DEXT |
E1000_ADVTXD_DCMD_EOP | flags);
if (slot->flags & NS_BUF_CHANGED) {
- /* buffer has changed, unload and reload map */
+ /* buffer has changed, reload map */
netmap_reload_map(txr->txtag, txbuf->map,
addr, na->buff_size);
slot->flags &= ~NS_BUF_CHANGED;
@@ -248,22 +214,40 @@ igb_netmap_txsync(void *a, u_int ring_nr, int do_lock)
bus_dmamap_sync(txr->txtag, txbuf->map,
BUS_DMASYNC_PREWRITE);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
kring->nr_hwcur = k;
/* decrease avail by number of sent packets */
- ring->avail -= n;
- kring->nr_hwavail = ring->avail;
+ kring->nr_hwavail -= n;
+ ring->avail = kring->nr_hwavail;
- /* Set the watchdog */
+ /* Set the watchdog XXX ? */
txr->queue_status = IGB_QUEUE_WORKING;
txr->watchdog_time = ticks;
bus_dmamap_sync(txr->txdma.dma_tag, txr->txdma.dma_map,
- BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
- E1000_WRITE_REG(&adapter->hw, E1000_TDT(txr->me), k);
+ E1000_WRITE_REG(&adapter->hw, E1000_TDT(txr->me), l);
+ }
+ if (n == 0 || kring->nr_hwavail < 1) {
+ int delta;
+
+ /* record completed transmission using TDH */
+ l = E1000_READ_REG(&adapter->hw, E1000_TDH(ring_nr));
+ if (l >= kring->nkr_num_slots) /* XXX can it happen ? */
+ l -= kring->nkr_num_slots;
+ delta = l - txr->next_to_clean;
+ if (delta) {
+ /* new tx were completed */
+ if (delta < 0)
+ delta += kring->nkr_num_slots;
+ txr->next_to_clean = l;
+ kring->nr_hwavail += delta;
+ ring->avail = kring->nr_hwavail;
+ }
}
if (do_lock)
IGB_TX_UNLOCK(txr);
@@ -273,15 +257,6 @@ igb_netmap_txsync(void *a, u_int ring_nr, int do_lock)
/*
* Reconcile kernel and user view of the receive ring.
- *
- * Userspace has read rx slots up to cur (excluded).
- * The last unread slot previously known to the kernel was nr_hwcur,
- * and the last interrupt reported nr_hwavail slots available.
- * We must subtract the newly consumed slots (cur - nr_hwcur)
- * from nr_hwavail, clearing the descriptors for the next
- * read, tell the hardware that they are available,
- * and set nr_hwcur = cur and avail = nr_hwavail.
- * issuing a dmamap_sync on all slots.
*/
static int
igb_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
@@ -291,10 +266,10 @@ igb_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(adapter->ifp);
struct netmap_kring *kring = &na->rx_rings[ring_nr];
struct netmap_ring *ring = kring->ring;
- int j, k, n, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n, lim = kring->nkr_num_slots - 1;
- k = ring->cur; /* ring is not protected by any lock */
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
+ k = ring->cur;
+ if (k > lim)
return netmap_ring_reinit(kring);
if (do_lock)
@@ -304,9 +279,12 @@ igb_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
- j = rxr->next_to_check;
+ l = rxr->next_to_check;
+ j = l + kring->nkr_hwofs;
+ if (j > lim)
+ j -= lim + 1;
for (n = 0; ; n++) {
- union e1000_adv_rx_desc *curr = &rxr->rx_base[j];
+ union e1000_adv_rx_desc *curr = &rxr->rx_base[l];
uint32_t staterr = le32toh(curr->wb.upper.status_error);
if ((staterr & E1000_RXD_STAT_DD) == 0)
@@ -314,15 +292,13 @@ igb_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
ring->slot[j].len = le16toh(curr->wb.upper.length);
bus_dmamap_sync(rxr->ptag,
- rxr->rx_buffers[j].pmap, BUS_DMASYNC_POSTREAD);
+ rxr->rx_buffers[l].pmap, BUS_DMASYNC_POSTREAD);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
}
if (n) {
- rxr->next_to_check = j;
+ rxr->next_to_check = l;
kring->nr_hwavail += n;
- if (kring->nr_hwavail >= lim - 10) {
- ND("rx ring %d almost full %d", ring_nr, kring->nr_hwavail);
- }
}
/* skip past packets that userspace has already processed,
@@ -332,12 +308,15 @@ igb_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
* Also increase nr_hwavail
*/
j = kring->nr_hwcur;
+ l = kring->nr_hwcur - kring->nkr_hwofs;
+ if (l < 0)
+ l += lim + 1;
if (j != k) { /* userspace has read some packets. */
n = 0;
while (j != k) {
struct netmap_slot *slot = ring->slot + j;
- union e1000_adv_rx_desc *curr = &rxr->rx_base[j];
- struct igb_rx_buf *rxbuf = rxr->rx_buffers + j;
+ union e1000_adv_rx_desc *curr = &rxr->rx_base[l];
+ struct igb_rx_buf *rxbuf = rxr->rx_buffers + l;
void *addr = NMB(slot);
if (addr == netmap_buffer_base) { /* bad buf */
@@ -358,6 +337,7 @@ igb_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
BUS_DMASYNC_PREREAD);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
kring->nr_hwavail -= n;
@@ -365,10 +345,10 @@ igb_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
/* IMPORTANT: we must leave one free slot in the ring,
- * so move j back by one unit
+ * so move l back by one unit
*/
- j = (j == 0) ? lim : j - 1;
- E1000_WRITE_REG(&adapter->hw, E1000_RDT(rxr->me), j);
+ l = (l == 0) ? lim : l - 1;
+ E1000_WRITE_REG(&adapter->hw, E1000_RDT(rxr->me), l);
}
/* tell userspace that there are new packets */
ring->avail = kring->nr_hwavail ;
diff --git a/sys/dev/netmap/if_lem_netmap.h b/sys/dev/netmap/if_lem_netmap.h
index a8f3498..ae64cd6 100644
--- a/sys/dev/netmap/if_lem_netmap.h
+++ b/sys/dev/netmap/if_lem_netmap.h
@@ -25,9 +25,12 @@
/*
* $FreeBSD$
- * $Id: if_lem_netmap.h 9662 2011-11-16 13:18:06Z luigi $
+ * $Id: if_lem_netmap.h 9802 2011-12-02 18:42:37Z luigi $
*
* netmap support for if_lem.c
+ *
+ * For structure and details on the individual functions please see
+ * ixgbe_netmap.h
*/
#include <net/netmap.h>
@@ -59,7 +62,7 @@ lem_netmap_attach(struct adapter *adapter)
na.nm_rxsync = lem_netmap_rxsync;
na.nm_lock = lem_netmap_lock_wrapper;
na.nm_register = lem_netmap_reg;
- na.buff_size = MCLBYTES;
+ na.buff_size = NETMAP_BUF_SIZE;
netmap_attach(&na, 1);
}
@@ -94,7 +97,61 @@ lem_netmap_lock_wrapper(void *_a, int what, u_int ringid)
/*
- * Reconcile kernel and user view of the transmit ring. see ixgbe.c
+ * Register/unregister routine
+ */
+static int
+lem_netmap_reg(struct ifnet *ifp, int onoff)
+{
+ struct adapter *adapter = ifp->if_softc;
+ struct netmap_adapter *na = NA(ifp);
+ int error = 0;
+
+ if (na == NULL)
+ return EINVAL;
+
+ lem_disable_intr(adapter);
+
+ /* Tell the stack that the interface is no longer active */
+ ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+
+ /* lem_netmap_block_tasks(adapter); */
+#ifndef EM_LEGACY_IRQ // XXX do we need this ?
+ taskqueue_block(adapter->tq);
+ taskqueue_drain(adapter->tq, &adapter->rxtx_task);
+ taskqueue_drain(adapter->tq, &adapter->link_task);
+#endif /* !EM_LEGCY_IRQ */
+ if (onoff) {
+ ifp->if_capenable |= IFCAP_NETMAP;
+
+ /* save if_transmit to restore it when exiting.
+ * XXX what about if_start and if_qflush ?
+ */
+ na->if_transmit = ifp->if_transmit;
+ ifp->if_transmit = netmap_start;
+
+ lem_init_locked(adapter);
+ if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) == 0) {
+ error = ENOMEM;
+ goto fail;
+ }
+ } else {
+fail:
+ /* restore non-netmap mode */
+ ifp->if_transmit = na->if_transmit;
+ ifp->if_capenable &= ~IFCAP_NETMAP;
+ lem_init_locked(adapter); /* also enables intr */
+ }
+
+#ifndef EM_LEGACY_IRQ
+ taskqueue_unblock(adapter->tq); // XXX do we need this ?
+#endif /* !EM_LEGCY_IRQ */
+
+ return (error);
+}
+
+
+/*
+ * Reconcile kernel and user view of the transmit ring.
*/
static int
lem_netmap_txsync(void *a, u_int ring_nr, int do_lock)
@@ -103,13 +160,13 @@ lem_netmap_txsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(adapter->ifp);
struct netmap_kring *kring = &na->tx_rings[0];
struct netmap_ring *ring = kring->ring;
- int j, k, n, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n = 0, lim = kring->nkr_num_slots - 1;
/* generate an interrupt approximately every half ring */
int report_frequency = kring->nkr_num_slots >> 1;
k = ring->cur;
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
+ if (k > lim)
return netmap_ring_reinit(kring);
if (do_lock)
@@ -117,33 +174,18 @@ lem_netmap_txsync(void *a, u_int ring_nr, int do_lock)
bus_dmamap_sync(adapter->txdma.dma_tag, adapter->txdma.dma_map,
BUS_DMASYNC_POSTREAD);
- /* record completed transmissions TODO
- *
- * instead of using TDH, we could read the transmitted status bit.
- */
- j = E1000_READ_REG(&adapter->hw, E1000_TDH(0));
- if (j >= kring->nkr_num_slots) { /* can it happen ? */
- D("bad TDH %d", j);
- j -= kring->nkr_num_slots;
- }
- int delta = j - adapter->next_tx_to_clean;
- if (delta) {
- if (delta < 0)
- delta += kring->nkr_num_slots;
- adapter->next_tx_to_clean = j;
- kring->nr_hwavail += delta;
- }
-
/* update avail to what the hardware knows */
ring->avail = kring->nr_hwavail;
- j = kring->nr_hwcur;
+ j = kring->nr_hwcur; /* points into the netmap ring */
if (j != k) { /* we have new packets to send */
- n = 0;
+ l = j - kring->nkr_hwofs; /* points into the NIC ring */
+ if (l < 0)
+ l += lim + 1;
while (j != k) {
struct netmap_slot *slot = &ring->slot[j];
- struct e1000_tx_desc *curr = &adapter->tx_desc_base[j];
- struct em_buffer *txbuf = &adapter->tx_buffer_area[j];
+ struct e1000_tx_desc *curr = &adapter->tx_desc_base[l];
+ struct em_buffer *txbuf = &adapter->tx_buffer_area[l];
void *addr = NMB(slot);
int flags = ((slot->flags & NS_REPORT) ||
j == 0 || j == report_frequency) ?
@@ -156,34 +198,54 @@ lem_netmap_txsync(void *a, u_int ring_nr, int do_lock)
return netmap_ring_reinit(kring);
}
+ slot->flags &= ~NS_REPORT;
curr->upper.data = 0;
- /* always interrupt. XXX make it conditional */
curr->lower.data =
htole32( adapter->txd_cmd | len |
(E1000_TXD_CMD_EOP | flags) );
if (slot->flags & NS_BUF_CHANGED) {
curr->buffer_addr = htole64(vtophys(addr));
- /* buffer has changed, unload and reload map */
+ /* buffer has changed, reload map */
netmap_reload_map(adapter->txtag, txbuf->map,
- addr, na->buff_size);
+ addr, na->buff_size);
slot->flags &= ~NS_BUF_CHANGED;
}
bus_dmamap_sync(adapter->txtag, txbuf->map,
- BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREWRITE);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
- kring->nr_hwcur = ring->cur;
+ kring->nr_hwcur = k;
/* decrease avail by number of sent packets */
- ring->avail -= n;
- kring->nr_hwavail = ring->avail;
+ kring->nr_hwavail -= n;
+ ring->avail = kring->nr_hwavail;
bus_dmamap_sync(adapter->txdma.dma_tag, adapter->txdma.dma_map,
- BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
- E1000_WRITE_REG(&adapter->hw, E1000_TDT(0), ring->cur);
+ E1000_WRITE_REG(&adapter->hw, E1000_TDT(0), l);
+ }
+
+ if (n == 0 || kring->nr_hwavail < 1) {
+ int delta;
+
+ /* record completed transmissions using TDH */
+ l = E1000_READ_REG(&adapter->hw, E1000_TDH(0));
+ if (l >= kring->nkr_num_slots) { /* can it happen ? */
+ D("bad TDH %d", l);
+ l -= kring->nkr_num_slots;
+ }
+ delta = l - adapter->next_tx_to_clean;
+ if (delta) {
+ if (delta < 0)
+ delta += kring->nkr_num_slots;
+ adapter->next_tx_to_clean = l;
+ kring->nr_hwavail += delta;
+ ring->avail = kring->nr_hwavail;
+ }
}
if (do_lock)
EM_TX_UNLOCK(adapter);
@@ -192,7 +254,7 @@ lem_netmap_txsync(void *a, u_int ring_nr, int do_lock)
/*
- * Reconcile kernel and user view of the receive ring. see ixgbe.c
+ * Reconcile kernel and user view of the receive ring.
*/
static int
lem_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
@@ -201,10 +263,10 @@ lem_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(adapter->ifp);
struct netmap_kring *kring = &na->rx_rings[0];
struct netmap_ring *ring = kring->ring;
- int j, k, n, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n, lim = kring->nkr_num_slots - 1;
k = ring->cur;
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
+ if (k > lim)
return netmap_ring_reinit(kring);
if (do_lock)
@@ -213,40 +275,45 @@ lem_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
bus_dmamap_sync(adapter->rxdma.dma_tag, adapter->rxdma.dma_map,
BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
- /* acknowldge all the received packets. */
- j = adapter->next_rx_desc_to_check;
+ /* import newly received packets into the netmap ring */
+ l = adapter->next_rx_desc_to_check; /* points into the NIC ring */
+ j = l + kring->nkr_hwofs; /* points into the netmap ring */
+ if (j > lim)
+ j -= lim + 1;
for (n = 0; ; n++) {
- struct e1000_rx_desc *curr = &adapter->rx_desc_base[j];
- int len = le16toh(adapter->rx_desc_base[j].length) - 4; // CRC
+ struct e1000_rx_desc *curr = &adapter->rx_desc_base[l];
+ int len;
if ((curr->status & E1000_RXD_STAT_DD) == 0)
break;
+ len = le16toh(curr->length) - 4; // CRC
if (len < 0) {
D("bogus pkt size at %d", j);
len = 0;
}
ring->slot[j].len = len;
- bus_dmamap_sync(adapter->rxtag, adapter->rx_buffer_area[j].map,
- BUS_DMASYNC_POSTREAD);
+ bus_dmamap_sync(adapter->rxtag, adapter->rx_buffer_area[l].map,
+ BUS_DMASYNC_POSTREAD);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
}
if (n) {
- adapter->next_rx_desc_to_check = j;
+ adapter->next_rx_desc_to_check = l;
kring->nr_hwavail += n;
}
- /* skip past packets that userspace has already processed,
- * making them available for reception. We don't need to set
- * the length as it is the same for all slots.
- */
- j = kring->nr_hwcur;
+ /* skip past packets that userspace has already processed */
+ j = kring->nr_hwcur; /* netmap ring index */
if (j != k) { /* userspace has read some packets. */
n = 0;
+ l = j - kring->nkr_hwofs; /* NIC ring index */
+ if (l < 0)
+ l += lim + 1;
while (j != k) {
struct netmap_slot *slot = &ring->slot[j];
- struct e1000_rx_desc *curr = &adapter->rx_desc_base[j];
- struct em_buffer *rxbuf = &adapter->rx_buffer_area[j];
+ struct e1000_rx_desc *curr = &adapter->rx_desc_base[l];
+ struct em_buffer *rxbuf = &adapter->rx_buffer_area[l];
void *addr = NMB(slot);
if (addr == netmap_buffer_base) { /* bad buf */
@@ -254,32 +321,32 @@ lem_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
EM_RX_UNLOCK(adapter);
return netmap_ring_reinit(kring);
}
- curr = &adapter->rx_desc_base[j];
curr->status = 0;
if (slot->flags & NS_BUF_CHANGED) {
curr->buffer_addr = htole64(vtophys(addr));
- /* buffer has changed, unload and reload map */
+ /* buffer has changed, and reload map */
netmap_reload_map(adapter->rxtag, rxbuf->map,
- addr, na->buff_size);
+ addr, na->buff_size);
slot->flags &= ~NS_BUF_CHANGED;
}
bus_dmamap_sync(adapter->rxtag, rxbuf->map,
- BUS_DMASYNC_PREREAD);
+ BUS_DMASYNC_PREREAD);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
kring->nr_hwavail -= n;
- kring->nr_hwcur = ring->cur;
+ kring->nr_hwcur = k;
bus_dmamap_sync(adapter->rxdma.dma_tag, adapter->rxdma.dma_map,
- BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
/*
* IMPORTANT: we must leave one free slot in the ring,
- * so move j back by one unit
+ * so move l back by one unit
*/
- j = (j == 0) ? lim : j - 1;
- E1000_WRITE_REG(&adapter->hw, E1000_RDT(0), j);
+ l = (l == 0) ? lim : l - 1;
+ E1000_WRITE_REG(&adapter->hw, E1000_RDT(0), l);
}
/* tell userspace that there are new packets */
@@ -290,55 +357,3 @@ lem_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
}
-/*
- * Register/unregister routine
- */
-static int
-lem_netmap_reg(struct ifnet *ifp, int onoff)
-{
- struct adapter *adapter = ifp->if_softc;
- struct netmap_adapter *na = NA(ifp);
- int error = 0;
-
- if (!na)
- return EINVAL;
-
- lem_disable_intr(adapter);
-
- /* Tell the stack that the interface is no longer active */
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
-
- /* lem_netmap_block_tasks(adapter); */
-#ifndef EM_LEGACY_IRQ
- taskqueue_block(adapter->tq);
- taskqueue_drain(adapter->tq, &adapter->rxtx_task);
- taskqueue_drain(adapter->tq, &adapter->link_task);
-#endif /* !EM_LEGCY_IRQ */
- if (onoff) {
- ifp->if_capenable |= IFCAP_NETMAP;
-
- /* save if_transmit to restore it when exiting.
- * XXX what about if_start and if_qflush ?
- */
- na->if_transmit = ifp->if_transmit;
- ifp->if_transmit = netmap_start;
-
- lem_init_locked(adapter);
- if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) == 0) {
- error = ENOMEM;
- goto fail;
- }
- } else {
-fail:
- /* restore non-netmap mode */
- ifp->if_transmit = na->if_transmit;
- ifp->if_capenable &= ~IFCAP_NETMAP;
- lem_init_locked(adapter); /* also enables intr */
- }
-
-#ifndef EM_LEGACY_IRQ
- taskqueue_unblock(adapter->tq);
-#endif /* !EM_LEGCY_IRQ */
-
- return (error);
-}
diff --git a/sys/dev/netmap/if_re_netmap.h b/sys/dev/netmap/if_re_netmap.h
index efccf3a..105660c 100644
--- a/sys/dev/netmap/if_re_netmap.h
+++ b/sys/dev/netmap/if_re_netmap.h
@@ -25,7 +25,7 @@
/*
* $FreeBSD$
- * $Id: if_re_netmap.h 9662 2011-11-16 13:18:06Z luigi $
+ * $Id: if_re_netmap.h 9802 2011-12-02 18:42:37Z luigi $
*
* netmap support for if_re
*/
@@ -56,7 +56,7 @@ re_netmap_attach(struct rl_softc *sc)
na.nm_rxsync = re_netmap_rxsync;
na.nm_lock = re_netmap_lock_wrapper;
na.nm_register = re_netmap_reg;
- na.buff_size = MCLBYTES;
+ na.buff_size = NETMAP_BUF_SIZE;
netmap_attach(&na, 1);
}
@@ -99,7 +99,7 @@ re_netmap_reg(struct ifnet *ifp, int onoff)
struct netmap_adapter *na = NA(ifp);
int error = 0;
- if (!na)
+ if (na == NULL)
return EINVAL;
/* Tell the stack that the interface is no longer active */
ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
@@ -109,9 +109,8 @@ re_netmap_reg(struct ifnet *ifp, int onoff)
if (onoff) {
ifp->if_capenable |= IFCAP_NETMAP;
- /* save if_transmit and restore it */
+ /* save if_transmit to restore it later */
na->if_transmit = ifp->if_transmit;
- /* XXX if_start and if_qflush ??? */
ifp->if_transmit = netmap_start;
re_init_locked(adapter);
@@ -127,23 +126,12 @@ fail:
ifp->if_capenable &= ~IFCAP_NETMAP;
re_init_locked(adapter); /* also enables intr */
}
- return (error);
-
+ return (error);
}
/*
* Reconcile kernel and user view of the transmit ring.
- *
- * Userspace has filled tx slots up to cur (excluded).
- * The last unused slot previously known to the kernel was nr_hwcur,
- * and the last interrupt reported nr_hwavail slots available
- * (using the special value -1 to indicate idle transmit ring).
- * The function must first update avail to what the kernel
- * knows (translating the -1 to nkr_num_slots - 1),
- * subtract the newly used slots (cur - nr_hwcur)
- * from both avail and nr_hwavail, and set nr_hwcur = cur
- * issuing a dmamap_sync on all slots.
*/
static int
re_netmap_txsync(void *a, u_int ring_nr, int do_lock)
@@ -153,10 +141,10 @@ re_netmap_txsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(sc->rl_ifp);
struct netmap_kring *kring = &na->tx_rings[ring_nr];
struct netmap_ring *ring = kring->ring;
- int j, k, n, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n, lim = kring->nkr_num_slots - 1;
k = ring->cur;
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
+ if (k > lim)
return netmap_ring_reinit(kring);
if (do_lock)
@@ -167,17 +155,18 @@ re_netmap_txsync(void *a, u_int ring_nr, int do_lock)
sc->rl_ldata.rl_tx_list_map,
BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
+ /* XXX move after the transmissions */
/* record completed transmissions */
- for (n = 0, j = sc->rl_ldata.rl_tx_considx;
- j != sc->rl_ldata.rl_tx_prodidx;
- n++, j = RL_TX_DESC_NXT(sc, j)) {
+ for (n = 0, l = sc->rl_ldata.rl_tx_considx;
+ l != sc->rl_ldata.rl_tx_prodidx;
+ n++, l = RL_TX_DESC_NXT(sc, l)) {
uint32_t cmdstat =
- le32toh(sc->rl_ldata.rl_tx_list[j].rl_cmdstat);
+ le32toh(sc->rl_ldata.rl_tx_list[l].rl_cmdstat);
if (cmdstat & RL_TDESC_STAT_OWN)
break;
}
if (n > 0) {
- sc->rl_ldata.rl_tx_considx = j;
+ sc->rl_ldata.rl_tx_considx = l;
sc->rl_ldata.rl_tx_free += n;
kring->nr_hwavail += n;
}
@@ -185,13 +174,13 @@ re_netmap_txsync(void *a, u_int ring_nr, int do_lock)
/* update avail to what the hardware knows */
ring->avail = kring->nr_hwavail;
- /* we trust prodidx, not hwcur */
- j = kring->nr_hwcur = sc->rl_ldata.rl_tx_prodidx;
+ j = kring->nr_hwcur;
if (j != k) { /* we have new packets to send */
n = 0;
+ l = sc->rl_ldata.rl_tx_prodidx;
while (j != k) {
struct netmap_slot *slot = &ring->slot[j];
- struct rl_desc *desc = &sc->rl_ldata.rl_tx_list[j];
+ struct rl_desc *desc = &sc->rl_ldata.rl_tx_list[l];
int cmd = slot->len | RL_TDESC_CMD_EOF |
RL_TDESC_CMD_OWN | RL_TDESC_CMD_SOF ;
void *addr = NMB(slot);
@@ -200,10 +189,11 @@ re_netmap_txsync(void *a, u_int ring_nr, int do_lock)
if (addr == netmap_buffer_base || len > NETMAP_BUF_SIZE) {
if (do_lock)
RL_UNLOCK(sc);
+ // XXX what about prodidx ?
return netmap_ring_reinit(kring);
}
- if (j == lim) /* mark end of ring */
+ if (l == lim) /* mark end of ring */
cmd |= RL_TDESC_CMD_EOR;
if (slot->flags & NS_BUF_CHANGED) {
@@ -212,17 +202,19 @@ re_netmap_txsync(void *a, u_int ring_nr, int do_lock)
desc->rl_bufaddr_hi = htole32(RL_ADDR_HI(paddr));
/* buffer has changed, unload and reload map */
netmap_reload_map(sc->rl_ldata.rl_tx_mtag,
- txd[j].tx_dmamap, addr, na->buff_size);
+ txd[l].tx_dmamap, addr, na->buff_size);
slot->flags &= ~NS_BUF_CHANGED;
}
slot->flags &= ~NS_REPORT;
desc->rl_cmdstat = htole32(cmd);
bus_dmamap_sync(sc->rl_ldata.rl_tx_mtag,
- txd[j].tx_dmamap, BUS_DMASYNC_PREWRITE);
+ txd[l].tx_dmamap, BUS_DMASYNC_PREWRITE);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
- sc->rl_ldata.rl_tx_prodidx = kring->nr_hwcur = ring->cur;
+ sc->rl_ldata.rl_tx_prodidx = l;
+ kring->nr_hwcur = k;
/* decrease avail by number of sent packets */
ring->avail -= n;
@@ -243,15 +235,6 @@ re_netmap_txsync(void *a, u_int ring_nr, int do_lock)
/*
* Reconcile kernel and user view of the receive ring.
- *
- * Userspace has read rx slots up to cur (excluded).
- * The last unread slot previously known to the kernel was nr_hwcur,
- * and the last interrupt reported nr_hwavail slots available.
- * We must subtract the newly consumed slots (cur - nr_hwcur)
- * from nr_hwavail, clearing the descriptors for the next
- * read, tell the hardware that they are available,
- * and set nr_hwcur = cur and avail = nr_hwavail.
- * issuing a dmamap_sync on all slots.
*/
static int
re_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
@@ -261,10 +244,10 @@ re_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(sc->rl_ifp);
struct netmap_kring *kring = &na->rx_rings[ring_nr];
struct netmap_ring *ring = kring->ring;
- int j, k, n, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n, lim = kring->nkr_num_slots - 1;
k = ring->cur;
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
+ if (k > lim)
return netmap_ring_reinit(kring);
if (do_lock)
@@ -280,9 +263,10 @@ re_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
* cleared (all buffers could have it cleared. The easiest one
* is to limit the amount of data reported up to 'lim'
*/
- j = sc->rl_ldata.rl_rx_prodidx;
+ l = sc->rl_ldata.rl_rx_prodidx; /* next pkt to check */
+ j = l + kring->nkr_hwofs;
for (n = kring->nr_hwavail; n < lim ; n++) {
- struct rl_desc *cur_rx = &sc->rl_ldata.rl_rx_list[j];
+ struct rl_desc *cur_rx = &sc->rl_ldata.rl_rx_list[l];
uint32_t rxstat = le32toh(cur_rx->rl_cmdstat);
uint32_t total_len;
@@ -294,11 +278,12 @@ re_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
kring->ring->slot[j].len = total_len;
/* sync was in re_newbuf() */
bus_dmamap_sync(sc->rl_ldata.rl_rx_mtag,
- rxd[j].rx_dmamap, BUS_DMASYNC_POSTREAD);
- j = RL_RX_DESC_NXT(sc, j);
+ rxd[l].rx_dmamap, BUS_DMASYNC_POSTREAD);
+ j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
}
if (n != kring->nr_hwavail) {
- sc->rl_ldata.rl_rx_prodidx = j;
+ sc->rl_ldata.rl_rx_prodidx = l;
sc->rl_ifp->if_ipackets += n - kring->nr_hwavail;
kring->nr_hwavail = n;
}
@@ -312,9 +297,12 @@ re_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
j = kring->nr_hwcur;
if (j != k) { /* userspace has read some packets. */
n = 0;
+ l = kring->nr_hwcur - kring->nkr_hwofs;
+ if (l < 0)
+ l += lim + 1;
while (j != k) {
struct netmap_slot *slot = ring->slot + j;
- struct rl_desc *desc = &sc->rl_ldata.rl_rx_list[j];
+ struct rl_desc *desc = &sc->rl_ldata.rl_rx_list[l];
int cmd = na->buff_size | RL_RDESC_CMD_OWN;
void *addr = NMB(slot);
@@ -324,7 +312,7 @@ re_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
return netmap_ring_reinit(kring);
}
- if (j == lim) /* mark end of ring */
+ if (l == lim) /* mark end of ring */
cmd |= RL_RDESC_CMD_EOR;
desc->rl_cmdstat = htole32(cmd);
@@ -334,12 +322,13 @@ re_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
desc->rl_bufaddr_lo = htole32(RL_ADDR_LO(paddr));
desc->rl_bufaddr_hi = htole32(RL_ADDR_HI(paddr));
netmap_reload_map(sc->rl_ldata.rl_rx_mtag,
- rxd[j].rx_dmamap, addr, na->buff_size);
+ rxd[l].rx_dmamap, addr, na->buff_size);
slot->flags &= ~NS_BUF_CHANGED;
}
bus_dmamap_sync(sc->rl_ldata.rl_rx_mtag,
- rxd[j].rx_dmamap, BUS_DMASYNC_PREREAD);
+ rxd[l].rx_dmamap, BUS_DMASYNC_PREREAD);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
kring->nr_hwavail -= n;
@@ -351,18 +340,22 @@ re_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD);
}
/* tell userspace that there are new packets */
- ring->avail = kring->nr_hwavail ;
+ ring->avail = kring->nr_hwavail;
if (do_lock)
RL_UNLOCK(sc);
return 0;
}
+/*
+ * Additional routines to init the tx and rx rings.
+ * In other drivers we do that inline in the main code.
+ */
static void
re_netmap_tx_init(struct rl_softc *sc)
{
struct rl_txdesc *txd;
struct rl_desc *desc;
- int i;
+ int i, n;
struct netmap_adapter *na = NA(sc->rl_ifp);
struct netmap_slot *slot = netmap_reset(na, NR_TX, 0, 0);
@@ -372,11 +365,20 @@ re_netmap_tx_init(struct rl_softc *sc)
/* in netmap mode, overwrite addresses and maps */
txd = sc->rl_ldata.rl_tx_desc;
desc = sc->rl_ldata.rl_tx_list;
+ n = sc->rl_ldata.rl_tx_desc_cnt;
+
+ /* l points in the netmap ring, i points in the NIC ring */
+ for (i = 0; i < n; i++) {
+ void *addr;
+ uint64_t paddr;
+ struct netmap_kring *kring = &na->tx_rings[0];
+ int l = i + kring->nkr_hwofs;
- for (i = 0; i < sc->rl_ldata.rl_tx_desc_cnt; i++) {
- void *addr = NMB(slot+i);
- uint64_t paddr = vtophys(addr);
+ if (l >= n)
+ l -= n;
+ addr = NMB(slot + l);
+ paddr = vtophys(addr);
desc[i].rl_bufaddr_lo = htole32(RL_ADDR_LO(paddr));
desc[i].rl_bufaddr_hi = htole32(RL_ADDR_HI(paddr));
netmap_load_map(sc->rl_ldata.rl_tx_mtag,
@@ -387,26 +389,39 @@ re_netmap_tx_init(struct rl_softc *sc)
static void
re_netmap_rx_init(struct rl_softc *sc)
{
- /* slot is NULL if we are not in netmap mode */
struct netmap_adapter *na = NA(sc->rl_ifp);
struct netmap_slot *slot = netmap_reset(na, NR_RX, 0, 0);
struct rl_desc *desc = sc->rl_ldata.rl_rx_list;
uint32_t cmdstat;
- int i;
+ int i, n;
if (!slot)
return;
-
- for (i = 0; i < sc->rl_ldata.rl_rx_desc_cnt; i++) {
- void *addr = NMB(slot+i);
- uint64_t paddr = vtophys(addr);
-
+ n = sc->rl_ldata.rl_rx_desc_cnt;
+ for (i = 0; i < n; i++) {
+ void *addr;
+ uint64_t paddr;
+ struct netmap_kring *kring = &na->rx_rings[0];
+ int l = i + kring->nkr_hwofs;
+
+ if (l >= n)
+ l -= n;
+
+ addr = NMB(slot + l);
+ paddr = vtophys(addr);
desc[i].rl_bufaddr_lo = htole32(RL_ADDR_LO(paddr));
desc[i].rl_bufaddr_hi = htole32(RL_ADDR_HI(paddr));
- cmdstat = slot[i].len = na->buff_size; // XXX
- if (i == sc->rl_ldata.rl_rx_desc_cnt - 1)
+ cmdstat = na->buff_size;
+ if (i == n - 1)
cmdstat |= RL_RDESC_CMD_EOR;
- desc[i].rl_cmdstat = htole32(cmdstat | RL_RDESC_CMD_OWN);
+ /*
+ * userspace knows that hwavail packets were ready before the
+ * reset, so we need to tell the NIC that last hwavail
+ * descriptors of the ring are still owned by the driver.
+ */
+ if (i < n - 1 - kring->nr_hwavail) // XXX + 1 ?
+ cmdstat |= RL_RDESC_CMD_OWN;
+ desc[i].rl_cmdstat = htole32(cmdstat);
netmap_reload_map(sc->rl_ldata.rl_rx_mtag,
sc->rl_ldata.rl_rx_desc[i].rx_dmamap,
diff --git a/sys/dev/netmap/ixgbe_netmap.h b/sys/dev/netmap/ixgbe_netmap.h
index a4d5491..fdf15d8 100644
--- a/sys/dev/netmap/ixgbe_netmap.h
+++ b/sys/dev/netmap/ixgbe_netmap.h
@@ -25,25 +25,48 @@
/*
* $FreeBSD$
- * $Id: ixgbe_netmap.h 9662 2011-11-16 13:18:06Z luigi $
+ * $Id: ixgbe_netmap.h 9802 2011-12-02 18:42:37Z luigi $
*
* netmap modifications for ixgbe
+ *
+ * This file is meant to be a reference on how to implement
+ * netmap support for a network driver.
+ * This file contains code but only static or inline functions
+ * that are used by a single driver. To avoid replication of
+ * code we just #include it near the beginning of the
+ * standard driver.
*/
#include <net/netmap.h>
#include <sys/selinfo.h>
-// #include <vm/vm.h>
-// #include <vm/pmap.h> /* vtophys ? */
+/*
+ * Some drivers may need the following headers. Others
+ * already include them by default
+
+#include <vm/vm.h>
+#include <vm/pmap.h>
+
+ */
+
#include <dev/netmap/netmap_kern.h>
+/*
+ * prototypes for the new API calls that are used by the
+ * *_netmap_attach() routine.
+ */
static int ixgbe_netmap_reg(struct ifnet *, int onoff);
static int ixgbe_netmap_txsync(void *, u_int, int);
static int ixgbe_netmap_rxsync(void *, u_int, int);
static void ixgbe_netmap_lock_wrapper(void *, int, u_int);
-SYSCTL_NODE(_dev, OID_AUTO, ixgbe, CTLFLAG_RW, 0, "ixgbe card");
-
+/*
+ * The attach routine, called near the end of ixgbe_attach(),
+ * fills the parameters for netmap_attach() and calls it.
+ * It cannot fail, in the worst case (such as no memory)
+ * netmap mode will be disabled and the driver will only
+ * operate in standard mode.
+ */
static void
ixgbe_netmap_attach(struct adapter *adapter)
{
@@ -52,7 +75,7 @@ ixgbe_netmap_attach(struct adapter *adapter)
bzero(&na, sizeof(na));
na.ifp = adapter->ifp;
- na.separate_locks = 1;
+ na.separate_locks = 1; /* this card has separate rx/tx locks */
na.num_tx_desc = adapter->num_tx_desc;
na.num_rx_desc = adapter->num_rx_desc;
na.nm_txsync = ixgbe_netmap_txsync;
@@ -60,17 +83,18 @@ ixgbe_netmap_attach(struct adapter *adapter)
na.nm_lock = ixgbe_netmap_lock_wrapper;
na.nm_register = ixgbe_netmap_reg;
/*
+ * XXX where do we put this comment ?
* adapter->rx_mbuf_sz is set by SIOCSETMTU, but in netmap mode
* we allocate the buffers on the first register. So we must
* disallow a SIOCSETMTU when if_capenable & IFCAP_NETMAP is set.
*/
- na.buff_size = MCLBYTES;
+ na.buff_size = NETMAP_BUF_SIZE;
netmap_attach(&na, adapter->num_queues);
}
/*
- * wrapper to export locks to the generic code
+ * wrapper to export locks to the generic netmap code.
*/
static void
ixgbe_netmap_lock_wrapper(void *_a, int what, u_int queueid)
@@ -102,8 +126,8 @@ ixgbe_netmap_lock_wrapper(void *_a, int what, u_int queueid)
/*
- * support for netmap register/unregisted. We are already under core lock.
- * only called on the first init or the last unregister.
+ * Netmap register/unregister. We are already under core lock.
+ * Only called on the first register or the last unregister.
*/
static int
ixgbe_netmap_reg(struct ifnet *ifp, int onoff)
@@ -112,7 +136,7 @@ ixgbe_netmap_reg(struct ifnet *ifp, int onoff)
struct netmap_adapter *na = NA(ifp);
int error = 0;
- if (!na)
+ if (!na) /* probably, netmap_attach() failed */
return EINVAL;
ixgbe_disable_intr(adapter);
@@ -120,23 +144,28 @@ ixgbe_netmap_reg(struct ifnet *ifp, int onoff)
/* Tell the stack that the interface is no longer active */
ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
- if (onoff) {
+ if (onoff) { /* enable netmap mode */
ifp->if_capenable |= IFCAP_NETMAP;
- /* save if_transmit to restore it later */
+ /* save if_transmit and replace with our routine */
na->if_transmit = ifp->if_transmit;
ifp->if_transmit = netmap_start;
+ /*
+ * reinitialize the adapter, now with netmap flag set,
+ * so the rings will be set accordingly.
+ */
ixgbe_init_locked(adapter);
if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) == 0) {
error = ENOMEM;
goto fail;
}
- } else {
+ } else { /* reset normal mode (explicit request or netmap failed) */
fail:
/* restore if_transmit */
ifp->if_transmit = na->if_transmit;
ifp->if_capenable &= ~IFCAP_NETMAP;
+ /* initialize the card, this time in standard mode */
ixgbe_init_locked(adapter); /* also enables intr */
}
return (error);
@@ -145,21 +174,23 @@ fail:
/*
* Reconcile kernel and user view of the transmit ring.
+ * This routine might be called frequently so it must be efficient.
+ *
+ * Userspace has filled tx slots up to ring->cur (excluded).
+ * The last unused slot previously known to the kernel was kring->nkr_hwcur,
+ * and the last interrupt reported kring->nr_hwavail slots available.
*
- * Userspace has filled tx slots up to cur (excluded).
- * The last unused slot previously known to the kernel was nr_hwcur,
- * and the last interrupt reported nr_hwavail slots available
- * (using the special value -1 to indicate idle transmit ring).
- * The function must first update avail to what the kernel
- * knows, subtract the newly used slots (cur - nr_hwcur)
- * from both avail and nr_hwavail, and set nr_hwcur = cur
+ * This function runs under lock (acquired from the caller or internally).
+ * It must first update ring->avail to what the kernel knows,
+ * subtract the newly used slots (ring->cur - kring->nkr_hwcur)
+ * from both avail and nr_hwavail, and set ring->nkr_hwcur = ring->cur
* issuing a dmamap_sync on all slots.
*
- * Check parameters in the struct netmap_ring.
- * We don't use avail, only check for bogus values.
- * Make sure cur is valid, and same goes for buffer indexes and lengths.
- * To avoid races, read the values once, and never use those from
- * the ring afterwards.
+ * Since ring comes from userspace, its content must be read only once,
+ * and validated before being used to update the kernel's structures.
+ * (this is also true for every use of ring in the kernel).
+ *
+ * ring->avail is never used, only checked for bogus values.
*/
static int
ixgbe_netmap_txsync(void *a, u_int ring_nr, int do_lock)
@@ -169,42 +200,96 @@ ixgbe_netmap_txsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(adapter->ifp);
struct netmap_kring *kring = &na->tx_rings[ring_nr];
struct netmap_ring *ring = kring->ring;
- int j, k, n = 0, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n = 0, lim = kring->nkr_num_slots - 1;
- /* generate an interrupt approximately every half ring */
+ /*
+ * ixgbe can generate an interrupt on every tx packet, but it
+ * seems very expensive, so we interrupt once every half ring,
+ * or when requested with NS_REPORT
+ */
int report_frequency = kring->nkr_num_slots >> 1;
- k = ring->cur; /* ring is not protected by any lock */
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
- return netmap_ring_reinit(kring);
-
if (do_lock)
IXGBE_TX_LOCK(txr);
+ /* take a copy of ring->cur now, and never read it again */
+ k = ring->cur;
+ l = k - kring->nr_hwcur;
+ if (l < 0)
+ l += lim + 1;
+ /* if cur is invalid reinitialize the ring. */
+ if (k > lim || l > kring->nr_hwavail) {
+ if (do_lock)
+ IXGBE_TX_UNLOCK(txr);
+ return netmap_ring_reinit(kring);
+ }
+
bus_dmamap_sync(txr->txdma.dma_tag, txr->txdma.dma_map,
BUS_DMASYNC_POSTREAD);
- /* update avail to what the hardware knows */
- ring->avail = kring->nr_hwavail;
-
+ /*
+ * Process new packets to send. j is the current index in the
+ * netmap ring, l is the corresponding index in the NIC ring.
+ * The two numbers differ because upon a *_init() we reset
+ * the NIC ring but leave the netmap ring unchanged.
+ * For the transmit ring, we have
+ *
+ * j = kring->nr_hwcur
+ * l = IXGBE_TDT (not tracked in the driver)
+ * and
+ * j == (l + kring->nkr_hwofs) % ring_size
+ *
+ * In this driver kring->nkr_hwofs >= 0, but for other
+ * drivers it might be negative as well.
+ */
j = kring->nr_hwcur;
if (j != k) { /* we have new packets to send */
+ l = j - kring->nkr_hwofs;
+ if (l < 0) /* wraparound */
+ l += lim + 1;
+
while (j != k) {
+ /*
+ * Collect per-slot info.
+ * Note that txbuf and curr are indexed by l.
+ *
+ * In this driver we collect the buffer address
+ * (using the NMB() macro) because we always
+ * need to rewrite it into the NIC ring.
+ * Many other drivers preserve the address, so
+ * we only need to access it if NS_BUF_CHANGED
+ * is set.
+ */
struct netmap_slot *slot = &ring->slot[j];
- struct ixgbe_tx_buf *txbuf = &txr->tx_buffers[j];
- union ixgbe_adv_tx_desc *curr = &txr->tx_base[j];
+ struct ixgbe_tx_buf *txbuf = &txr->tx_buffers[l];
+ union ixgbe_adv_tx_desc *curr = &txr->tx_base[l];
void *addr = NMB(slot);
+ // XXX type for flags and len ?
int flags = ((slot->flags & NS_REPORT) ||
j == 0 || j == report_frequency) ?
IXGBE_TXD_CMD_RS : 0;
int len = slot->len;
+ /*
+ * Quick check for valid addr and len.
+ * NMB() returns netmap_buffer_base for invalid
+ * buffer indexes (but the address is still a
+ * valid one to be used in a ring). slot->len is
+ * unsigned so no need to check for negative values.
+ */
if (addr == netmap_buffer_base || len > NETMAP_BUF_SIZE) {
+ring_reset:
if (do_lock)
IXGBE_TX_UNLOCK(txr);
return netmap_ring_reinit(kring);
}
slot->flags &= ~NS_REPORT;
+ /*
+ * Fill the slot in the NIC ring.
+ * In this driver we need to rewrite the buffer
+ * address in the NIC ring. Other drivers do not
+ * need this.
+ */
curr->read.buffer_addr = htole64(vtophys(addr));
curr->read.olinfo_status = 0;
curr->read.cmd_type_len =
@@ -212,6 +297,10 @@ ixgbe_netmap_txsync(void *a, u_int ring_nr, int do_lock)
(IXGBE_ADVTXD_DTYP_DATA |
IXGBE_ADVTXD_DCMD_IFCS |
IXGBE_TXD_CMD_EOP | flags) );
+ /* If the buffer has changed, unload and reload map
+ * (and possibly the physical address in the NIC
+ * slot, but we did it already).
+ */
if (slot->flags & NS_BUF_CHANGED) {
/* buffer has changed, unload and reload map */
netmap_reload_map(txr->txtag, txbuf->map,
@@ -219,69 +308,89 @@ ixgbe_netmap_txsync(void *a, u_int ring_nr, int do_lock)
slot->flags &= ~NS_BUF_CHANGED;
}
+ /* make sure changes to the buffer are synced */
bus_dmamap_sync(txr->txtag, txbuf->map,
BUS_DMASYNC_PREWRITE);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
- kring->nr_hwcur = k;
+ kring->nr_hwcur = k; /* the saved ring->cur */
/* decrease avail by number of sent packets */
- ring->avail -= n;
- kring->nr_hwavail = ring->avail;
+ kring->nr_hwavail -= n;
+ /* synchronize the NIC ring */
bus_dmamap_sync(txr->txdma.dma_tag, txr->txdma.dma_map,
BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
-
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_TDT(txr->me), k);
+ /* (re)start the transmitter up to slot l (excluded) */
+ IXGBE_WRITE_REG(&adapter->hw, IXGBE_TDT(txr->me), l);
}
+ /*
+ * If no packets are sent, or there is no room in the tx ring,
+ * Check whether there are completed transmissions.
+ * Because this is expensive (we need a register etc.)
+ * we only do it if absolutely necessary, i.e. there is no room
+ * in the tx ring, or where were no completed transmissions
+ * (meaning that probably the caller really wanted to check
+ * for completed transmissions).
+ */
if (n == 0 || kring->nr_hwavail < 1) {
- /* record completed transmissions. TODO
+ int delta;
+
+ /*
+ * Record completed transmissions.
+ * We (re)use the driver's txr->next_to_clean to keep
+ * track of the most recently completed transmission.
*
* The datasheet discourages the use of TDH to find out the
- * number of sent packets; the right way to do so, is to check
- * the DD bit inside the status of a packet descriptor. On the
- * other hand, we avoid to set the `report status' bit for
- * *all* outgoing packets (kind of interrupt mitigation),
- * consequently the DD bit is not guaranteed to be set for all
- * the packets: thats way, for the moment we continue to use
- * TDH.
+ * number of sent packets. We should rather check the DD
+ * status bit in a packet descriptor. However, we only set
+ * the "report status" bit for some descriptors (a kind of
+ * interrupt mitigation), so we can only check on those.
+ * For the time being we use TDH, as we do it infrequently
+ * enough not to pose performance problems.
*/
- j = IXGBE_READ_REG(&adapter->hw, IXGBE_TDH(ring_nr));
- if (j >= kring->nkr_num_slots) { /* XXX can happen */
- D("TDH wrap %d", j);
- j -= kring->nkr_num_slots;
+ l = IXGBE_READ_REG(&adapter->hw, IXGBE_TDH(ring_nr));
+ if (l >= kring->nkr_num_slots) { /* XXX can happen */
+ D("TDH wrap %d", l);
+ l -= kring->nkr_num_slots;
}
- int delta = j - txr->next_to_clean;
+ delta = l - txr->next_to_clean;
if (delta) {
- /* new transmissions were completed, increment
- ring->nr_hwavail. */
+ /* some tx completed, increment avail */
if (delta < 0)
delta += kring->nkr_num_slots;
- txr->next_to_clean = j;
+ txr->next_to_clean = l;
kring->nr_hwavail += delta;
- ring->avail = kring->nr_hwavail;
+ if (kring->nr_hwavail > lim)
+ goto ring_reset;
}
}
+ /* update avail to what the kernel knows */
+ ring->avail = kring->nr_hwavail;
if (do_lock)
IXGBE_TX_UNLOCK(txr);
return 0;
+
}
/*
* Reconcile kernel and user view of the receive ring.
+ * Same as for the txsync, this routine must be efficient and
+ * avoid races in accessing the shared regions.
+ *
+ * When called, userspace has read data from slots kring->nr_hwcur
+ * up to ring->cur (excluded).
*
- * Userspace has read rx slots up to cur (excluded).
- * The last unread slot previously known to the kernel was nr_hwcur,
- * and the last interrupt reported nr_hwavail slots available.
+ * The last interrupt reported kring->nr_hwavail slots available
+ * after kring->nr_hwcur.
* We must subtract the newly consumed slots (cur - nr_hwcur)
- * from nr_hwavail, clearing the descriptors for the next
- * read, tell the hardware that they are available,
- * and set nr_hwcur = cur and avail = nr_hwavail.
- * issuing a dmamap_sync on all slots.
+ * from nr_hwavail, make the descriptors available for the next reads,
+ * and set kring->nr_hwcur = ring->cur and ring->avail = kring->nr_hwavail.
*/
static int
ixgbe_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
@@ -291,86 +400,124 @@ ixgbe_netmap_rxsync(void *a, u_int ring_nr, int do_lock)
struct netmap_adapter *na = NA(adapter->ifp);
struct netmap_kring *kring = &na->rx_rings[ring_nr];
struct netmap_ring *ring = kring->ring;
- int j, k, n, lim = kring->nkr_num_slots - 1;
+ int j, k, l, n, lim = kring->nkr_num_slots - 1;
- k = ring->cur; /* ring is not protected by any lock */
- if ( (kring->nr_kflags & NR_REINIT) || k > lim)
+ k = ring->cur; /* cache and check value, same as in txsync */
+ n = k - kring->nr_hwcur;
+ if (n < 0)
+ n += lim + 1;
+ if (k > lim || n > kring->nr_hwavail) /* userspace is cheating */
return netmap_ring_reinit(kring);
if (do_lock)
IXGBE_RX_LOCK(rxr);
+ if (n < 0)
+ n += lim + 1;
/* XXX check sync modes */
bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
- j = rxr->next_to_check;
+ /*
+ * First part, import newly received packets into the netmap ring.
+ *
+ * j is the index of the next free slot in the netmap ring,
+ * and l is the index of the next received packet in the NIC ring,
+ * and they may differ in case if_init() has been called while
+ * in netmap mode. For the receive ring we have
+ *
+ * j = (kring->nr_hwcur + kring->nr_hwavail) % ring_size
+ * l = rxr->next_to_check;
+ * and
+ * j == (l + kring->nkr_hwofs) % ring_size
+ *
+ * rxr->next_to_check is set to 0 on a ring reinit
+ */
+ l = rxr->next_to_check;
+ j = rxr->next_to_check + kring->nkr_hwofs;
+ if (j > lim)
+ j -= lim + 1;
+
for (n = 0; ; n++) {
- union ixgbe_adv_rx_desc *curr = &rxr->rx_base[j];
+ union ixgbe_adv_rx_desc *curr = &rxr->rx_base[l];
uint32_t staterr = le32toh(curr->wb.upper.status_error);
if ((staterr & IXGBE_RXD_STAT_DD) == 0)
break;
ring->slot[j].len = le16toh(curr->wb.upper.length);
bus_dmamap_sync(rxr->ptag,
- rxr->rx_buffers[j].pmap, BUS_DMASYNC_POSTREAD);
+ rxr->rx_buffers[l].pmap, BUS_DMASYNC_POSTREAD);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
}
- if (n) {
- rxr->next_to_check = j;
+ if (n) { /* update the state variables */
+ rxr->next_to_check = l;
kring->nr_hwavail += n;
- if (kring->nr_hwavail >= lim - 10) {
- ND("rx ring %d almost full %d", ring_nr, kring->nr_hwavail);
- }
}
- /* skip past packets that userspace has already processed,
- * making them available for reception.
- * advance nr_hwcur and issue a bus_dmamap_sync on the
- * buffers so it is safe to write to them.
- * Also increase nr_hwavail
+ /*
+ * Skip past packets that userspace has already processed
+ * (from kring->nr_hwcur to ring->cur excluded), and make
+ * the buffers available for reception.
+ * As usual j is the index in the netmap ring, l is the index
+ * in the NIC ring, and j == (l + kring->nkr_hwofs) % ring_size
*/
j = kring->nr_hwcur;
if (j != k) { /* userspace has read some packets. */
n = 0;
+ l = kring->nr_hwcur - kring->nkr_hwofs;
+ if (l < 0)
+ l += lim + 1;
while (j != k) {
- struct netmap_slot *slot = ring->slot + j;
- union ixgbe_adv_rx_desc *curr = &rxr->rx_base[j];
- struct ixgbe_rx_buf *rxbuf = rxr->rx_buffers + j;
+ /* collect per-slot info, with similar validations
+ * and flag handling as in the txsync code.
+ *
+ * NOTE curr and rxbuf are indexed by l.
+ * Also, this driver needs to update the physical
+ * address in the NIC ring, but other drivers
+ * may not have this requirement.
+ */
+ struct netmap_slot *slot = &ring->slot[j];
+ union ixgbe_adv_rx_desc *curr = &rxr->rx_base[l];
+ struct ixgbe_rx_buf *rxbuf = &rxr->rx_buffers[l];
void *addr = NMB(slot);
- if (addr == netmap_buffer_base) { /* bad buf */
- if (do_lock)
- IXGBE_RX_UNLOCK(rxr);
- return netmap_ring_reinit(kring);
- }
+ if (addr == netmap_buffer_base) /* bad buf */
+ goto ring_reset;
curr->wb.upper.status_error = 0;
curr->read.pkt_addr = htole64(vtophys(addr));
if (slot->flags & NS_BUF_CHANGED) {
netmap_reload_map(rxr->ptag, rxbuf->pmap,
- addr, na->buff_size);
+ addr, na->buff_size);
slot->flags &= ~NS_BUF_CHANGED;
}
bus_dmamap_sync(rxr->ptag, rxbuf->pmap,
- BUS_DMASYNC_PREREAD);
+ BUS_DMASYNC_PREREAD);
j = (j == lim) ? 0 : j + 1;
+ l = (l == lim) ? 0 : l + 1;
n++;
}
kring->nr_hwavail -= n;
- kring->nr_hwcur = ring->cur;
+ kring->nr_hwcur = k;
bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
- BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+ BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
/* IMPORTANT: we must leave one free slot in the ring,
- * so move j back by one unit
+ * so move l back by one unit
*/
- j = (j == 0) ? lim : j - 1;
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_RDT(rxr->me), j);
+ l = (l == 0) ? lim : l - 1;
+ IXGBE_WRITE_REG(&adapter->hw, IXGBE_RDT(rxr->me), l);
}
/* tell userspace that there are new packets */
ring->avail = kring->nr_hwavail ;
if (do_lock)
IXGBE_RX_UNLOCK(rxr);
return 0;
+
+ring_reset:
+ if (do_lock)
+ IXGBE_RX_UNLOCK(rxr);
+ return netmap_ring_reinit(kring);
}
+/* end of file */
diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c
index 7645a4e..5c960ac 100644
--- a/sys/dev/netmap/netmap.c
+++ b/sys/dev/netmap/netmap.c
@@ -1,15 +1,15 @@
/*
* Copyright (C) 2011 Matteo Landi, Luigi Rizzo. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -25,7 +25,7 @@
/*
* $FreeBSD$
- * $Id: netmap.c 9662 2011-11-16 13:18:06Z luigi $
+ * $Id: netmap.c 9795 2011-12-02 11:39:08Z luigi $
*
* This module supports memory mapped access to network devices,
* see netmap(4).
@@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$");
#include <sys/module.h>
#include <sys/errno.h>
#include <sys/param.h> /* defines used in kernel.h */
+#include <sys/jail.h>
#include <sys/kernel.h> /* types used in module initialization */
#include <sys/conf.h> /* cdevsw struct */
#include <sys/uio.h> /* uio struct */
@@ -70,6 +71,7 @@ __FBSDID("$FreeBSD$");
#include <sys/malloc.h>
#include <sys/mman.h> /* PROT_EXEC */
#include <sys/poll.h>
+#include <sys/proc.h>
#include <vm/vm.h> /* vtophys */
#include <vm/pmap.h> /* vtophys */
#include <sys/socket.h> /* sockaddrs */
@@ -78,6 +80,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sysctl.h>
#include <net/if.h>
#include <net/bpf.h> /* BIOCIMMEDIATE */
+#include <net/vnet.h>
#include <net/netmap.h>
#include <dev/netmap/netmap_kern.h>
#include <machine/bus.h> /* bus_dmamap_* */
@@ -572,7 +575,13 @@ netmap_mmap(__unused struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
/*
- * handler for synchronization of the queues from/to the host
+ * Handlers for synchronization of the queues from/to the host.
+ *
+ * netmap_sync_to_host() passes packets up. We are called from a
+ * system call in user process context, and the only contention
+ * can be among multiple user threads erroneously calling
+ * this routine concurrently. In principle we should not even
+ * need to lock.
*/
static void
netmap_sync_to_host(struct netmap_adapter *na)
@@ -580,15 +589,20 @@ netmap_sync_to_host(struct netmap_adapter *na)
struct netmap_kring *kring = &na->tx_rings[na->num_queues];
struct netmap_ring *ring = kring->ring;
struct mbuf *head = NULL, *tail = NULL, *m;
- u_int n, lim = kring->nkr_num_slots - 1;
+ u_int k, n, lim = kring->nkr_num_slots - 1;
- na->nm_lock(na->ifp->if_softc, NETMAP_CORE_LOCK, 0);
+ k = ring->cur;
+ if (k > lim) {
+ netmap_ring_reinit(kring);
+ return;
+ }
+ // na->nm_lock(na->ifp->if_softc, NETMAP_CORE_LOCK, 0);
/* Take packets from hwcur to cur and pass them up.
* In case of no buffers we give up. At the end of the loop,
* the queue is drained in all cases.
*/
- for (n = kring->nr_hwcur; n != ring->cur;) {
+ for (n = kring->nr_hwcur; n != k;) {
struct netmap_slot *slot = &ring->slot[n];
n = (n == lim) ? 0 : n + 1;
@@ -607,9 +621,9 @@ netmap_sync_to_host(struct netmap_adapter *na)
tail = m;
m->m_nextpkt = NULL;
}
- kring->nr_hwcur = ring->cur;
+ kring->nr_hwcur = k;
kring->nr_hwavail = ring->avail = lim;
- na->nm_lock(na->ifp->if_softc, NETMAP_CORE_UNLOCK, 0);
+ // na->nm_lock(na->ifp->if_softc, NETMAP_CORE_UNLOCK, 0);
/* send packets up, outside the lock */
while ((m = head) != NULL) {
@@ -623,6 +637,10 @@ netmap_sync_to_host(struct netmap_adapter *na)
}
/*
+ * rxsync backend for packets coming from the host stack.
+ * They have been put in the queue by netmap_start() so we
+ * need to protect access to the kring using a lock.
+ *
* This routine also does the selrecord if called from the poll handler
* (we know because td != NULL).
*/
@@ -631,24 +649,29 @@ netmap_sync_from_host(struct netmap_adapter *na, struct thread *td)
{
struct netmap_kring *kring = &na->rx_rings[na->num_queues];
struct netmap_ring *ring = kring->ring;
- int delta;
+ int error = 1, delta;
+ u_int k = ring->cur, lim = kring->nkr_num_slots;
na->nm_lock(na->ifp->if_softc, NETMAP_CORE_LOCK, 0);
-
- /* skip past packets processed by userspace,
- * and then sync cur/avail with hwcur/hwavail
- */
- delta = ring->cur - kring->nr_hwcur;
+ if (k >= lim) /* bad value */
+ goto done;
+ delta = k - kring->nr_hwcur;
if (delta < 0)
- delta += kring->nkr_num_slots;
+ delta += lim;
kring->nr_hwavail -= delta;
- kring->nr_hwcur = ring->cur;
- ring->avail = kring->nr_hwavail;
- if (ring->avail == 0 && td)
+ if (kring->nr_hwavail < 0) /* error */
+ goto done;
+ kring->nr_hwcur = k;
+ error = 0;
+ k = ring->avail = kring->nr_hwavail;
+ if (k == 0 && td)
selrecord(td, &kring->si);
- if (ring->avail && (netmap_verbose & NM_VERB_HOST))
- D("%d pkts from stack", ring->avail);
+ if (k && (netmap_verbose & NM_VERB_HOST))
+ D("%d pkts from stack", k);
+done:
na->nm_lock(na->ifp->if_softc, NETMAP_CORE_UNLOCK, 0);
+ if (error)
+ netmap_ring_reinit(kring);
}
@@ -678,6 +701,13 @@ get_ifp(const char *name, struct ifnet **ifp)
* Error routine called when txsync/rxsync detects an error.
* Can't do much more than resetting cur = hwcur, avail = hwavail.
* Return 1 on reinit.
+ *
+ * This routine is only called by the upper half of the kernel.
+ * It only reads hwcur (which is changed only by the upper half, too)
+ * and hwavail (which may be changed by the lower half, but only on
+ * a tx ring and only to increase it, so any error will be recovered
+ * on the next call). For the above, we don't strictly need to call
+ * it under lock.
*/
int
netmap_ring_reinit(struct netmap_kring *kring)
@@ -717,29 +747,10 @@ netmap_ring_reinit(struct netmap_kring *kring)
ring->avail, kring->nr_hwavail);
ring->cur = kring->nr_hwcur;
ring->avail = kring->nr_hwavail;
- ring->flags |= NR_REINIT;
- kring->na->flags |= NR_REINIT;
}
return (errors ? 1 : 0);
}
-/*
- * Clean the reinit flag for our rings.
- * XXX at the moment, clear for all rings
- */
-static void
-netmap_clean_reinit(struct netmap_adapter *na)
-{
- //struct netmap_kring *kring;
- u_int i;
-
- na->flags &= ~NR_REINIT;
- D("--- NR_REINIT reset on %s", na->ifp->if_xname);
- for (i = 0; i < na->num_queues + 1; i++) {
- na->tx_rings[i].ring->flags &= ~NR_REINIT;
- na->rx_rings[i].ring->flags &= ~NR_REINIT;
- }
-}
/*
* Set the ring ID. For devices with a single queue, a request
@@ -801,7 +812,7 @@ netmap_set_ringid(struct netmap_priv_d *priv, u_int ringid)
*/
static int
netmap_ioctl(__unused struct cdev *dev, u_long cmd, caddr_t data,
- __unused int fflag, __unused struct thread *td)
+ __unused int fflag, struct thread *td)
{
struct netmap_priv_d *priv = NULL;
struct ifnet *ifp;
@@ -812,9 +823,13 @@ netmap_ioctl(__unused struct cdev *dev, u_long cmd, caddr_t data,
u_int i;
struct netmap_if *nifp;
+ CURVNET_SET(TD_TO_VNET(td));
+
error = devfs_get_cdevpriv((void **)&priv);
- if (error != ENOENT && error != 0)
+ if (error != ENOENT && error != 0) {
+ CURVNET_RESTORE();
return (error);
+ }
error = 0; /* Could be ENOENT */
switch (cmd) {
@@ -836,8 +851,10 @@ netmap_ioctl(__unused struct cdev *dev, u_long cmd, caddr_t data,
break;
case NIOCREGIF:
- if (priv != NULL) /* thread already registered */
- return netmap_set_ringid(priv, nmr->nr_ringid);
+ if (priv != NULL) { /* thread already registered */
+ error = netmap_set_ringid(priv, nmr->nr_ringid);
+ break;
+ }
/* find the interface and a reference */
error = get_ifp(nmr->nr_name, &ifp); /* keep reference */
if (error)
@@ -927,8 +944,10 @@ error:
break;
case NIOCUNREGIF:
- if (priv == NULL)
- return (ENXIO);
+ if (priv == NULL) {
+ error = ENXIO;
+ break;
+ }
/* the interface is unregistered inside the
destructor of the private data. */
@@ -937,22 +956,21 @@ error:
case NIOCTXSYNC:
case NIOCRXSYNC:
- if (priv == NULL)
- return (ENXIO);
+ if (priv == NULL) {
+ error = ENXIO;
+ break;
+ }
ifp = priv->np_ifp; /* we have a reference */
na = NA(ifp); /* retrieve netmap adapter */
adapter = ifp->if_softc; /* shorthand */
- if (na->flags & NR_REINIT)
- netmap_clean_reinit(na);
-
if (priv->np_qfirst == na->num_queues) {
/* queues to/from host */
if (cmd == NIOCTXSYNC)
netmap_sync_to_host(na);
else
netmap_sync_from_host(na, NULL);
- return error;
+ break;
}
for (i = priv->np_qfirst; i < priv->np_qlast; i++) {
@@ -999,6 +1017,7 @@ error:
}
}
+ CURVNET_RESTORE();
return (error);
}
@@ -1020,7 +1039,7 @@ netmap_poll(__unused struct cdev *dev, int events, struct thread *td)
struct netmap_adapter *na;
struct ifnet *ifp;
struct netmap_kring *kring;
- u_int i, check_all, want_tx, want_rx, revents = 0;
+ u_int core_lock, i, check_all, want_tx, want_rx, revents = 0;
void *adapter;
if (devfs_get_cdevpriv((void **)&priv) != 0 || priv == NULL)
@@ -1039,13 +1058,6 @@ netmap_poll(__unused struct cdev *dev, int events, struct thread *td)
adapter = ifp->if_softc;
na = NA(ifp); /* retrieve netmap adapter */
- /* pending reinit, report up as a poll error. Pending
- * reads and writes are lost.
- */
- if (na->flags & NR_REINIT) {
- netmap_clean_reinit(na);
- revents |= POLLERR;
- }
/* how many queues we are scanning */
i = priv->np_qfirst;
if (i == na->num_queues) { /* from/to host */
@@ -1104,27 +1116,26 @@ netmap_poll(__unused struct cdev *dev, int events, struct thread *td)
* LOCKED_CL core lock is set, so we need to release it.
*/
enum {NO_CL, NEED_CL, LOCKED_CL };
- int core_lock = (check_all || !na->separate_locks) ?
- NEED_CL:NO_CL;
+ core_lock = (check_all || !na->separate_locks) ? NEED_CL:NO_CL;
/*
* We start with a lock free round which is good if we have
* data available. If this fails, then lock and call the sync
* routines.
*/
- for (i = priv->np_qfirst; want_rx && i < priv->np_qlast; i++) {
- kring = &na->rx_rings[i];
- if (kring->ring->avail > 0) {
- revents |= want_rx;
- want_rx = 0; /* also breaks the loop */
+ for (i = priv->np_qfirst; want_rx && i < priv->np_qlast; i++) {
+ kring = &na->rx_rings[i];
+ if (kring->ring->avail > 0) {
+ revents |= want_rx;
+ want_rx = 0; /* also breaks the loop */
+ }
}
- }
- for (i = priv->np_qfirst; want_tx && i < priv->np_qlast; i++) {
- kring = &na->tx_rings[i];
- if (kring->ring->avail > 0) {
- revents |= want_tx;
- want_tx = 0; /* also breaks the loop */
+ for (i = priv->np_qfirst; want_tx && i < priv->np_qlast; i++) {
+ kring = &na->tx_rings[i];
+ if (kring->ring->avail > 0) {
+ revents |= want_tx;
+ want_tx = 0; /* also breaks the loop */
+ }
}
- }
/*
* If we to push packets out (priv->np_txpoll) or want_tx is
@@ -1234,7 +1245,7 @@ netmap_attach(struct netmap_adapter *na, int num_queues)
buf = malloc(size, M_DEVBUF, M_NOWAIT | M_ZERO);
if (buf) {
- ifp->if_pspare[0] = buf;
+ WNA(ifp) = buf;
na->tx_rings = (void *)((char *)buf + sizeof(*na));
na->rx_rings = na->tx_rings + n;
bcopy(na, buf, sizeof(*na));
@@ -1264,31 +1275,30 @@ netmap_detach(struct ifnet *ifp)
knlist_destroy(&na->rx_rings[i].si.si_note);
}
bzero(na, sizeof(*na));
- ifp->if_pspare[0] = NULL;
+ WNA(ifp) = NULL;
free(na, M_DEVBUF);
}
/*
- * intercept packets coming from the network stack and present
- * them to netmap as incoming packets on a separate ring.
+ * Intercept packets from the network stack and pass them
+ * to netmap as incoming packets on the 'software' ring.
* We are not locked when called.
*/
int
netmap_start(struct ifnet *ifp, struct mbuf *m)
{
struct netmap_adapter *na = NA(ifp);
- u_int i, len, n = na->num_queues;
- int error = EBUSY;
- struct netmap_kring *kring = &na->rx_rings[n];
+ struct netmap_kring *kring = &na->rx_rings[na->num_queues];
+ u_int i, len = m->m_pkthdr.len;
+ int error = EBUSY, lim = kring->nkr_num_slots - 1;
struct netmap_slot *slot;
- len = m->m_pkthdr.len;
if (netmap_verbose & NM_VERB_HOST)
D("%s packet %d len %d from the stack", ifp->if_xname,
kring->nr_hwcur + kring->nr_hwavail, len);
na->nm_lock(ifp->if_softc, NETMAP_CORE_LOCK, 0);
- if (kring->nr_hwavail >= (int)kring->nkr_num_slots - 1) {
+ if (kring->nr_hwavail >= lim) {
D("stack ring %s full\n", ifp->if_xname);
goto done; /* no space */
}
@@ -1299,8 +1309,8 @@ netmap_start(struct ifnet *ifp, struct mbuf *m)
/* compute the insert position */
i = kring->nr_hwcur + kring->nr_hwavail;
- if (i >= kring->nkr_num_slots)
- i -= kring->nkr_num_slots;
+ if (i > lim)
+ i -= lim + 1;
slot = &kring->ring->slot[i];
m_copydata(m, 0, len, NMB(slot));
slot->len = len;
@@ -1326,24 +1336,6 @@ done:
* netmap_reset() is called by the driver routines when reinitializing
* a ring. The driver is in charge of locking to protect the kring.
* If netmap mode is not set just return NULL.
- * Otherwise set NR_REINIT (in the ring and in na) to signal
- * that a ring has been reinitialized,
- * set cur = hwcur = 0 and avail = hwavail = num_slots - 1 .
- * IT IS IMPORTANT to leave one slot free even in the tx ring because
- * we rely on cur=hwcur only for empty rings.
- * These are good defaults but can be overridden later in the device
- * specific code if, after a reinit, the ring does not start from 0
- * (e.g. if_em.c does this).
- *
- * XXX we shouldn't be touching the ring, but there is a
- * race anyways and this is our best option.
- *
- * XXX setting na->flags makes the syscall code faster, as there is
- * only one place to check. On the other hand, we will need a better
- * way to notify multiple threads that rings have been reset.
- * One way is to increment na->rst_count at each ring reset.
- * Each thread in its own priv structure will keep a matching counter,
- * and on a reset will acknowledge and clean its own rings.
*/
struct netmap_slot *
netmap_reset(struct netmap_adapter *na, enum txrx tx, int n,
@@ -1351,8 +1343,7 @@ netmap_reset(struct netmap_adapter *na, enum txrx tx, int n,
{
struct netmap_kring *kring;
struct netmap_ring *ring;
- struct netmap_slot *slot;
- u_int i;
+ int new_hwofs, lim;
if (na == NULL)
return NULL; /* no netmap support here */
@@ -1360,74 +1351,26 @@ netmap_reset(struct netmap_adapter *na, enum txrx tx, int n,
return NULL; /* nothing to reinitialize */
kring = tx == NR_TX ? na->tx_rings + n : na->rx_rings + n;
ring = kring->ring;
- if (tx == NR_TX) {
- /*
- * The last argument is the new value of next_to_clean.
- *
- * In the TX ring, we have P pending transmissions (from
- * next_to_clean to nr_hwcur) followed by nr_hwavail free slots.
- * Generally we can use all the slots in the ring so
- * P = ring_size - nr_hwavail hence (modulo ring_size):
- * next_to_clean == nr_hwcur + nr_hwavail
- *
- * If, upon a reset, nr_hwavail == ring_size and next_to_clean
- * does not change we have nothing to report. Otherwise some
- * pending packets may be lost, or newly injected packets will.
- */
- /* if hwcur does not change, nothing to report.
- * otherwise remember the change so perhaps we can
- * shift the block at the next reinit
- */
- if (new_cur == kring->nr_hwcur &&
- kring->nr_hwavail == kring->nkr_num_slots - 1) {
- /* all ok */
- D("+++ NR_REINIT ok on %s TX[%d]", na->ifp->if_xname, n);
- } else {
- D("+++ NR_REINIT set on %s TX[%d]", na->ifp->if_xname, n);
- }
- ring->flags |= NR_REINIT;
- na->flags |= NR_REINIT;
- ring->avail = kring->nr_hwavail = kring->nkr_num_slots - 1;
- ring->cur = kring->nr_hwcur = new_cur;
- } else {
- /*
- * The last argument is the next free slot.
- * In the RX ring we have nr_hwavail full buffers starting
- * from nr_hwcur.
- * If nr_hwavail == 0 and nr_hwcur does not change we are ok
- * otherwise we might be in trouble as the buffers are
- * changing.
- */
- if (new_cur == kring->nr_hwcur && kring->nr_hwavail == 0) {
- /* all ok */
- D("+++ NR_REINIT ok on %s RX[%d]", na->ifp->if_xname, n);
- } else {
- D("+++ NR_REINIT set on %s RX[%d]", na->ifp->if_xname, n);
- }
- ring->flags |= NR_REINIT;
- na->flags |= NR_REINIT;
- ring->avail = kring->nr_hwavail = 0; /* no data */
- ring->cur = kring->nr_hwcur = new_cur;
- }
+ lim = kring->nkr_num_slots - 1;
+
+ if (tx == NR_TX)
+ new_hwofs = kring->nr_hwcur - new_cur;
+ else
+ new_hwofs = kring->nr_hwcur + kring->nr_hwavail - new_cur;
+ if (new_hwofs > lim)
+ new_hwofs -= lim + 1;
+
+ /* Alwayws set the new offset value and realign the ring. */
+ kring->nkr_hwofs = new_hwofs;
+ if (tx == NR_TX)
+ kring->nr_hwavail = kring->nkr_num_slots - 1;
+ D("new hwofs %d on %s %s[%d]",
+ kring->nkr_hwofs, na->ifp->if_xname,
+ tx == NR_TX ? "TX" : "RX", n);
- slot = ring->slot;
/*
- * Check that buffer indexes are correct. If we find a
- * bogus value we are a bit in trouble because we cannot
- * recover easily. Best we can do is (probably) persistently
- * reset the ring.
- */
- for (i = 0; i < kring->nkr_num_slots; i++) {
- if (slot[i].buf_idx >= netmap_total_buffers) {
- D("invalid buf_idx %d at slot %d", slot[i].buf_idx, i);
- slot[i].buf_idx = 0; /* XXX reset */
- }
- /* XXX we don't really need to set the length */
- slot[i].len = 0;
- }
- /* wakeup possible waiters, both on the ring and on the global
- * selfd. Perhaps a bit early now but the device specific
- * routine is locked so hopefully we won't have a race.
+ * We do the wakeup here, but the ring is not yet reconfigured.
+ * However, we are under lock so there are no races.
*/
selwakeuppri(&kring->si, PI_NET);
selwakeuppri(&kring[na->num_queues + 1 - n].si, PI_NET);
@@ -1624,7 +1567,7 @@ netmap_memory_init(void)
nm_buf_pool.base += netmap_mem_d->nm_buf_start;
netmap_buffer_base = nm_buf_pool.base;
D("netmap_buffer_base %p (offset %d)",
- netmap_buffer_base, netmap_mem_d->nm_buf_start);
+ netmap_buffer_base, (int)netmap_mem_d->nm_buf_start);
/* number of buffers, they all start as free */
netmap_total_buffers = nm_buf_pool.total_buffers =
@@ -1632,7 +1575,7 @@ netmap_memory_init(void)
nm_buf_pool.bufsize = NETMAP_BUF_SIZE;
D("Have %d MB, use %dKB for rings, %d buffers at %p",
- (sz >> 20), (netmap_mem_d->nm_size >> 10),
+ (sz >> 20), (int)(netmap_mem_d->nm_size >> 10),
nm_buf_pool.total_buffers, nm_buf_pool.base);
/* allocate and initialize the bitmap. Entry 0 is considered
@@ -1673,7 +1616,7 @@ netmap_memory_fini(void)
TAILQ_REMOVE(&netmap_mem_d->nm_molist, mem_obj, nmo_next);
if (mem_obj->nmo_used == 1) {
printf("netmap: leaked %d bytes at %p\n",
- mem_obj->nmo_size,
+ (int)mem_obj->nmo_size,
mem_obj->nmo_data);
}
free(mem_obj, M_NETMAP);
@@ -1704,7 +1647,7 @@ netmap_init(void)
return (error);
}
printf("netmap: loaded module with %d Mbytes\n",
- netmap_mem_d->nm_totalsize >> 20);
+ (int)(netmap_mem_d->nm_totalsize >> 20));
netmap_dev = make_dev(&netmap_cdevsw, 0, UID_ROOT, GID_WHEEL, 0660,
"netmap");
diff --git a/sys/dev/netmap/netmap_kern.h b/sys/dev/netmap/netmap_kern.h
index 5434609..8fa95fa 100644
--- a/sys/dev/netmap/netmap_kern.h
+++ b/sys/dev/netmap/netmap_kern.h
@@ -1,15 +1,15 @@
/*
* Copyright (C) 2011 Matteo Landi, Luigi Rizzo. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -25,7 +25,7 @@
/*
* $FreeBSD$
- * $Id: netmap_kern.h 9662 2011-11-16 13:18:06Z luigi $
+ * $Id: netmap_kern.h 9795 2011-12-02 11:39:08Z luigi $
*
* The header contains the definitions of constants and function
* prototypes used only in kernelspace.
@@ -68,7 +68,7 @@ struct netmap_kring {
u_int nr_kflags;
u_int nkr_num_slots;
- u_int nkr_hwofs; /* offset between NIC and netmap ring */
+ int nkr_hwofs; /* offset between NIC and netmap ring */
struct netmap_adapter *na; // debugging
struct selinfo si; /* poll/select wait queue */
};
@@ -94,7 +94,7 @@ struct netmap_adapter {
u_int num_rx_desc;
u_int buff_size;
- u_int flags; /* NR_REINIT */
+ u_int flags;
/* tx_rings and rx_rings are private but allocated
* as a contiguous chunk of memory. Each array has
* N+1 entries, for the adapter queues and for the host queue.
@@ -196,9 +196,13 @@ enum { /* verbose flags */
};
/*
- * return a pointer to the struct netmap adapter from the ifp
+ * NA returns a pointer to the struct netmap adapter from the ifp,
+ * WNA is used to write it.
*/
-#define NA(_ifp) ((struct netmap_adapter *)(_ifp)->if_pspare[0])
+#ifndef WNA
+#define WNA(_ifp) (_ifp)->if_pspare[0]
+#endif
+#define NA(_ifp) ((struct netmap_adapter *)WNA(_ifp))
/*
diff --git a/sys/dev/nfe/if_nfe.c b/sys/dev/nfe/if_nfe.c
index 3c36fe7..f4c5bed 100644
--- a/sys/dev/nfe/if_nfe.c
+++ b/sys/dev/nfe/if_nfe.c
@@ -165,16 +165,12 @@ static device_method_t nfe_methods[] = {
DEVMETHOD(device_resume, nfe_resume),
DEVMETHOD(device_shutdown, nfe_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, nfe_miibus_readreg),
DEVMETHOD(miibus_writereg, nfe_miibus_writereg),
DEVMETHOD(miibus_statchg, nfe_miibus_statchg),
- { NULL, NULL }
+ DEVMETHOD_END
};
static driver_t nfe_driver = {
diff --git a/sys/dev/nge/if_nge.c b/sys/dev/nge/if_nge.c
index 3d7ad63..05eec99 100644
--- a/sys/dev/nge/if_nge.c
+++ b/sys/dev/nge/if_nge.c
@@ -223,16 +223,12 @@ static device_method_t nge_methods[] = {
DEVMETHOD(device_suspend, nge_suspend),
DEVMETHOD(device_resume, nge_resume),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, nge_miibus_readreg),
DEVMETHOD(miibus_writereg, nge_miibus_writereg),
DEVMETHOD(miibus_statchg, nge_miibus_statchg),
- { NULL, NULL }
+ DEVMETHOD_END
};
static driver_t nge_driver = {
diff --git a/sys/dev/nve/if_nve.c b/sys/dev/nve/if_nve.c
index 1428662..5c53239 100644
--- a/sys/dev/nve/if_nve.c
+++ b/sys/dev/nve/if_nve.c
@@ -184,15 +184,11 @@ static device_method_t nve_methods[] = {
DEVMETHOD(device_detach, nve_detach),
DEVMETHOD(device_shutdown, nve_shutdown),
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, nve_miibus_readreg),
DEVMETHOD(miibus_writereg, nve_miibus_writereg),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t nve_driver = {
diff --git a/sys/dev/ofw/ofw_console.c b/sys/dev/ofw/ofw_console.c
index 62dbe51..e71d5c1 100644
--- a/sys/dev/ofw/ofw_console.c
+++ b/sys/dev/ofw/ofw_console.c
@@ -74,6 +74,8 @@ static cn_init_t ofw_cninit;
static cn_term_t ofw_cnterm;
static cn_getc_t ofw_cngetc;
static cn_putc_t ofw_cnputc;
+static cn_grab_t ofw_cngrab;
+static cn_ungrab_t ofw_cnungrab;
CONSOLE_DRIVER(ofw);
@@ -192,6 +194,16 @@ ofw_cnterm(struct consdev *cp)
{
}
+static void
+ofw_cngrab(struct consdev *cp)
+{
+}
+
+static void
+ofw_cnungrab(struct consdev *cp)
+{
+}
+
static int
ofw_cngetc(struct consdev *cp)
{
diff --git a/sys/dev/ofw/ofw_fdt.c b/sys/dev/ofw/ofw_fdt.c
index 806f17c..7b3b0e9 100644
--- a/sys/dev/ofw/ofw_fdt.c
+++ b/sys/dev/ofw/ofw_fdt.c
@@ -392,6 +392,8 @@ ofw_fdt_finddevice(ofw_t ofw, const char *device)
int offset;
offset = fdt_path_offset(fdtp, device);
+ if (offset < 0)
+ return (-1);
return (fdt_offset_phandle(offset));
}
@@ -420,7 +422,7 @@ ofw_fdt_fixup(ofw_t ofw)
ssize_t len;
int i;
- if ((root = ofw_fdt_finddevice(ofw, "/")) == 0)
+ if ((root = ofw_fdt_finddevice(ofw, "/")) == -1)
return (ENODEV);
if ((len = ofw_fdt_getproplen(ofw, root, "model")) <= 0)
diff --git a/sys/dev/ofw/ofw_iicbus.c b/sys/dev/ofw/ofw_iicbus.c
index 875e4dd..906a49f 100644
--- a/sys/dev/ofw/ofw_iicbus.c
+++ b/sys/dev/ofw/ofw_iicbus.c
@@ -68,7 +68,7 @@ static device_method_t ofw_iicbus_methods[] = {
DEVMETHOD(ofw_bus_get_node, ofw_bus_gen_get_node),
DEVMETHOD(ofw_bus_get_type, ofw_bus_gen_get_type),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
struct ofw_iicbus_devinfo {
diff --git a/sys/dev/ofw/openfirm.c b/sys/dev/ofw/openfirm.c
index 9ff72df..af6ee80 100644
--- a/sys/dev/ofw/openfirm.c
+++ b/sys/dev/ofw/openfirm.c
@@ -131,7 +131,7 @@ OF_init(void *cookie)
rv = OFW_INIT(ofw_obj, cookie);
- if ((chosen = OF_finddevice("/chosen")) > 0)
+ if ((chosen = OF_finddevice("/chosen")) != -1)
if (OF_getprop(chosen, "stdout", &stdout, sizeof(stdout)) == -1)
stdout = -1;
diff --git a/sys/dev/pccard/pccardvar.h b/sys/dev/pccard/pccardvar.h
index 1cfcd58..f98bcc8 100644
--- a/sys/dev/pccard/pccardvar.h
+++ b/sys/dev/pccard/pccardvar.h
@@ -106,7 +106,7 @@ typedef int (*pccard_product_match_fn) (device_t dev,
* make this inline so that we don't have to worry about dangling references
* to it in the modules or the code.
*/
-static __inline const struct pccard_product *
+static inline const struct pccard_product *
pccard_product_lookup(device_t dev, const struct pccard_product *tab,
size_t ent_size, pccard_product_match_fn matchfn)
{
@@ -150,31 +150,31 @@ pccard_product_lookup(device_t dev, const struct pccard_product *tab,
/* Convenience functions */
-static __inline int
+static inline int
pccard_cis_scan(device_t dev, pccard_scan_t fct, void *arg)
{
return (CARD_CIS_SCAN(device_get_parent(dev), dev, fct, arg));
}
-static __inline int
+static inline int
pccard_attr_read_1(device_t dev, uint32_t offset, uint8_t *val)
{
return (CARD_ATTR_READ(device_get_parent(dev), dev, offset, val));
}
-static __inline int
+static inline int
pccard_attr_write_1(device_t dev, uint32_t offset, uint8_t val)
{
return (CARD_ATTR_WRITE(device_get_parent(dev), dev, offset, val));
}
-static __inline int
+static inline int
pccard_ccr_read_1(device_t dev, uint32_t offset, uint8_t *val)
{
return (CARD_CCR_READ(device_get_parent(dev), dev, offset, val));
}
-static __inline int
+static inline int
pccard_ccr_write_1(device_t dev, uint32_t offset, uint8_t val)
{
return (CARD_CCR_WRITE(device_get_parent(dev), dev, offset, val));
@@ -199,7 +199,7 @@ enum {
};
#define PCCARD_ACCESSOR(A, B, T) \
-__inline static int \
+static inline int \
pccard_get_ ## A(device_t dev, T *t) \
{ \
return BUS_READ_IVAR(device_get_parent(dev), dev, \
diff --git a/sys/dev/pccbb/pccbb_isa.c b/sys/dev/pccbb/pccbb_isa.c
index fb45e64..fa990e0 100644
--- a/sys/dev/pccbb/pccbb_isa.c
+++ b/sys/dev/pccbb/pccbb_isa.c
@@ -211,7 +211,6 @@ static device_method_t cbb_methods[] = {
DEVMETHOD(device_resume, cbb_resume),
/* bus methods */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_read_ivar, cbb_read_ivar),
DEVMETHOD(bus_write_ivar, cbb_write_ivar),
DEVMETHOD(bus_alloc_resource, cbb_alloc_resource),
@@ -232,7 +231,7 @@ static device_method_t cbb_methods[] = {
DEVMETHOD(power_enable_socket, cbb_power_enable_socket),
DEVMETHOD(power_disable_socket, cbb_power_disable_socket),
- {0,0}
+ DEVMETHOD_END
};
static driver_t cbb_isa_driver = {
diff --git a/sys/dev/pccbb/pccbb_pci.c b/sys/dev/pccbb/pccbb_pci.c
index 6cdc4e4..eca5ed7 100644
--- a/sys/dev/pccbb/pccbb_pci.c
+++ b/sys/dev/pccbb/pccbb_pci.c
@@ -822,7 +822,6 @@ static device_method_t cbb_methods[] = {
DEVMETHOD(device_resume, cbb_resume),
/* bus methods */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_read_ivar, cbb_read_ivar),
DEVMETHOD(bus_write_ivar, cbb_write_ivar),
DEVMETHOD(bus_alloc_resource, cbb_alloc_resource),
@@ -849,7 +848,7 @@ static device_method_t cbb_methods[] = {
DEVMETHOD(pcib_write_config, cbb_write_config),
DEVMETHOD(pcib_route_interrupt, cbb_route_interrupt),
- {0,0}
+ DEVMETHOD_END
};
static driver_t cbb_driver = {
diff --git a/sys/dev/pci/eisa_pci.c b/sys/dev/pci/eisa_pci.c
index 61027a1..98fa270 100644
--- a/sys/dev/pci/eisa_pci.c
+++ b/sys/dev/pci/eisa_pci.c
@@ -55,7 +55,6 @@ static device_method_t eisab_methods[] = {
DEVMETHOD(device_resume, bus_generic_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource),
DEVMETHOD(bus_release_resource, bus_generic_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
@@ -63,7 +62,7 @@ static device_method_t eisab_methods[] = {
DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t eisab_driver = {
diff --git a/sys/dev/pci/isa_pci.c b/sys/dev/pci/isa_pci.c
index be3f3ac..7819b7e 100644
--- a/sys/dev/pci/isa_pci.c
+++ b/sys/dev/pci/isa_pci.c
@@ -67,7 +67,7 @@ static device_method_t isab_methods[] = {
DEVMETHOD(device_resume, bus_generic_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
+ DEVMETHOD(bus_add_child, bus_generic_add_child),
DEVMETHOD(bus_alloc_resource, isab_pci_alloc_resource),
DEVMETHOD(bus_release_resource, isab_pci_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
@@ -75,7 +75,7 @@ static device_method_t isab_methods[] = {
DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
- { 0, 0 }
+ DEVMETHOD_END
};
struct isab_pci_resource {
diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c
index fa14816..d624104 100644
--- a/sys/dev/pci/pci_pci.c
+++ b/sys/dev/pci/pci_pci.c
@@ -67,7 +67,6 @@ static device_method_t pcib_methods[] = {
DEVMETHOD(device_resume, pcib_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_read_ivar, pcib_read_ivar),
DEVMETHOD(bus_write_ivar, pcib_write_ivar),
DEVMETHOD(bus_alloc_resource, pcib_alloc_resource),
@@ -95,7 +94,7 @@ static device_method_t pcib_methods[] = {
DEVMETHOD(pcib_map_msi, pcib_map_msi),
DEVMETHOD(pcib_power_for_sleep, pcib_power_for_sleep),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t pcib_devclass;
diff --git a/sys/dev/pci/pcireg.h b/sys/dev/pci/pcireg.h
index 216882c..7951d13 100644
--- a/sys/dev/pci/pcireg.h
+++ b/sys/dev/pci/pcireg.h
@@ -715,6 +715,7 @@
#define PCIM_AER_COR_BAD_DLLP 0x00000080
#define PCIM_AER_COR_REPLAY_ROLLOVER 0x00000100
#define PCIM_AER_COR_REPLAY_TIMEOUT 0x00001000
+#define PCIM_AER_COR_ADVISORY_NF_ERROR 0x00002000
#define PCIR_AER_COR_MASK 0x14 /* Shares bits with COR_STATUS */
#define PCIR_AER_CAP_CONTROL 0x18
#define PCIM_AER_FIRST_ERROR_PTR 0x0000001f
diff --git a/sys/dev/pcn/if_pcn.c b/sys/dev/pcn/if_pcn.c
index 2ebd35c..de072ad 100644
--- a/sys/dev/pcn/if_pcn.c
+++ b/sys/dev/pcn/if_pcn.c
@@ -173,16 +173,12 @@ static device_method_t pcn_methods[] = {
DEVMETHOD(device_detach, pcn_detach),
DEVMETHOD(device_shutdown, pcn_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, pcn_miibus_readreg),
DEVMETHOD(miibus_writereg, pcn_miibus_writereg),
DEVMETHOD(miibus_statchg, pcn_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t pcn_driver = {
diff --git a/sys/dev/ppbus/lpbb.c b/sys/dev/ppbus/lpbb.c
index 6cf747e..0c85620 100644
--- a/sys/dev/ppbus/lpbb.c
+++ b/sys/dev/ppbus/lpbb.c
@@ -245,9 +245,6 @@ static device_method_t lpbb_methods[] = {
DEVMETHOD(device_probe, lpbb_probe),
DEVMETHOD(device_attach, lpbb_attach),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
/* iicbb interface */
DEVMETHOD(iicbb_callback, lpbb_callback),
DEVMETHOD(iicbb_setsda, lpbb_setsda),
@@ -256,7 +253,7 @@ static device_method_t lpbb_methods[] = {
DEVMETHOD(iicbb_getscl, lpbb_getscl),
DEVMETHOD(iicbb_reset, lpbb_reset),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t lpbb_driver = {
diff --git a/sys/dev/ppbus/lpt.c b/sys/dev/ppbus/lpt.c
index 18d46ae..3a28efd2 100644
--- a/sys/dev/ppbus/lpt.c
+++ b/sys/dev/ppbus/lpt.c
@@ -447,10 +447,9 @@ lptout(void *arg)
{
struct lpt_data *sc = arg;
device_t dev = sc->sc_dev;
-#if defined(INVARIANTS) || defined(LPT_DEBUG)
- device_t ppbus = device_get_parent(dev);
-#endif
+ device_t ppbus;
+ ppbus = device_get_parent(dev);
ppb_assert_locked(ppbus);
lprintf(("T %x ", ppb_rstr(ppbus)));
if (sc->sc_state & OPEN) {
diff --git a/sys/dev/ppbus/ppb_base.c b/sys/dev/ppbus/ppb_base.c
index 62769b0..256d7a4 100644
--- a/sys/dev/ppbus/ppb_base.c
+++ b/sys/dev/ppbus/ppb_base.c
@@ -60,7 +60,7 @@ ppb_poll_bus(device_t bus, int max,
int i, j, error;
char r;
- mtx_assert(ppb->ppc_lock, MA_OWNED);
+ ppb_assert_locked(bus);
/* try at least up to 10ms */
for (j = 0; j < ((how & PPB_POLL) ? max : 1); j++) {
@@ -96,12 +96,9 @@ ppb_poll_bus(device_t bus, int max,
int
ppb_get_epp_protocol(device_t bus)
{
-#ifdef INVARIANTS
- struct ppb_data *ppb = DEVTOSOFTC(bus);
-#endif
uintptr_t protocol;
- mtx_assert(ppb->ppc_lock, MA_OWNED);
+ ppb_assert_locked(bus);
BUS_READ_IVAR(device_get_parent(bus), bus, PPC_IVAR_EPP_PROTO, &protocol);
return (protocol);
@@ -117,7 +114,7 @@ ppb_get_mode(device_t bus)
struct ppb_data *ppb = DEVTOSOFTC(bus);
/* XXX yet device mode = ppbus mode = chipset mode */
- mtx_assert(ppb->ppc_lock, MA_OWNED);
+ ppb_assert_locked(bus);
return (ppb->mode);
}
@@ -132,7 +129,7 @@ ppb_set_mode(device_t bus, int mode)
struct ppb_data *ppb = DEVTOSOFTC(bus);
int old_mode = ppb_get_mode(bus);
- mtx_assert(ppb->ppc_lock, MA_OWNED);
+ ppb_assert_locked(bus);
if (PPBUS_SETMODE(device_get_parent(bus), mode))
return (-1);
@@ -150,11 +147,8 @@ ppb_set_mode(device_t bus, int mode)
int
ppb_write(device_t bus, char *buf, int len, int how)
{
-#ifdef INVARIANTS
- struct ppb_data *ppb = DEVTOSOFTC(bus);
-#endif
- mtx_assert(ppb->ppc_lock, MA_OWNED);
+ ppb_assert_locked(bus);
return (PPBUS_WRITE(device_get_parent(bus), buf, len, how));
}
@@ -166,11 +160,8 @@ ppb_write(device_t bus, char *buf, int len, int how)
int
ppb_reset_epp_timeout(device_t bus)
{
-#ifdef INVARIANTS
- struct ppb_data *ppb = DEVTOSOFTC(bus);
-#endif
- mtx_assert(ppb->ppc_lock, MA_OWNED);
+ ppb_assert_locked(bus);
return(PPBUS_RESET_EPP(device_get_parent(bus)));
}
@@ -182,11 +173,8 @@ ppb_reset_epp_timeout(device_t bus)
int
ppb_ecp_sync(device_t bus)
{
-#ifdef INVARIANTS
- struct ppb_data *ppb = DEVTOSOFTC(bus);
-#endif
- mtx_assert(ppb->ppc_lock, MA_OWNED);
+ ppb_assert_locked(bus);
return (PPBUS_ECP_SYNC(device_get_parent(bus)));
}
@@ -198,12 +186,9 @@ ppb_ecp_sync(device_t bus)
int
ppb_get_status(device_t bus, struct ppb_status *status)
{
-#ifdef INVARIANTS
- struct ppb_data *ppb = DEVTOSOFTC(bus);
-#endif
register char r;
- mtx_assert(ppb->ppc_lock, MA_OWNED);
+ ppb_assert_locked(bus);
r = status->status = ppb_rstr(bus);
diff --git a/sys/dev/ppbus/ppb_msq.c b/sys/dev/ppbus/ppb_msq.c
index 6de67ce..8aba5ec 100644
--- a/sys/dev/ppbus/ppb_msq.c
+++ b/sys/dev/ppbus/ppb_msq.c
@@ -117,13 +117,10 @@ mode2xfer(device_t bus, struct ppb_device *ppbdev, int opcode)
int
ppb_MS_init(device_t bus, device_t dev, struct ppb_microseq *loop, int opcode)
{
-#ifdef INVARIANTS
- struct ppb_data *ppb = device_get_softc(bus);
-#endif
struct ppb_device *ppbdev = (struct ppb_device *)device_get_ivars(dev);
struct ppb_xfer *xfer = mode2xfer(bus, ppbdev, opcode);
- mtx_assert(ppb->ppc_lock, MA_OWNED);
+ ppb_assert_locked(bus);
xfer->loop = loop;
return (0);
diff --git a/sys/dev/ppbus/ppbconf.c b/sys/dev/ppbus/ppbconf.c
index 858e5b2..65a26e0 100644
--- a/sys/dev/ppbus/ppbconf.c
+++ b/sys/dev/ppbus/ppbconf.c
@@ -429,7 +429,7 @@ ppbus_detach(device_t dev)
return (error);
/* detach & delete all children */
- device_delete_all_children(dev);
+ device_delete_children(dev);
return (0);
}
diff --git a/sys/dev/ppbus/vpo.c b/sys/dev/ppbus/vpo.c
index 02bc9b3..9c9054f 100644
--- a/sys/dev/ppbus/vpo.c
+++ b/sys/dev/ppbus/vpo.c
@@ -298,11 +298,8 @@ static void
vpo_action(struct cam_sim *sim, union ccb *ccb)
{
struct vpo_data *vpo = (struct vpo_data *)sim->softc;
-#ifdef INVARIANTS
- device_t ppbus = device_get_parent(vpo->vpo_dev);
- ppb_assert_locked(ppbus);
-#endif
+ ppb_assert_locked(device_get_parent(vpo->vpo_dev));
switch (ccb->ccb_h.func_code) {
case XPT_SCSI_IO:
{
diff --git a/sys/dev/ppc/ppc.c b/sys/dev/ppc/ppc.c
index ef505d8..5da180c 100644
--- a/sys/dev/ppc/ppc.c
+++ b/sys/dev/ppc/ppc.c
@@ -1857,7 +1857,7 @@ ppc_detach(device_t dev)
}
/* detach & delete all children */
- device_delete_all_children(dev);
+ device_delete_children(dev);
if (ppc->res_irq != 0) {
bus_teardown_intr(dev, ppc->res_irq, ppc->intr_cookie);
diff --git a/sys/dev/puc/puc_pccard.c b/sys/dev/puc/puc_pccard.c
index 63d5787..370c6af 100644
--- a/sys/dev/puc/puc_pccard.c
+++ b/sys/dev/puc/puc_pccard.c
@@ -85,8 +85,8 @@ static device_method_t puc_pccard_methods[] = {
DEVMETHOD(bus_print_child, puc_bus_print_child),
DEVMETHOD(bus_child_pnpinfo_str, puc_bus_child_pnpinfo_str),
DEVMETHOD(bus_child_location_str, puc_bus_child_location_str),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t puc_pccard_driver = {
diff --git a/sys/dev/puc/puc_pci.c b/sys/dev/puc/puc_pci.c
index 8c14717..4ad1e3a 100644
--- a/sys/dev/puc/puc_pci.c
+++ b/sys/dev/puc/puc_pci.c
@@ -135,8 +135,8 @@ static device_method_t puc_pci_methods[] = {
DEVMETHOD(bus_print_child, puc_bus_print_child),
DEVMETHOD(bus_child_pnpinfo_str, puc_bus_child_pnpinfo_str),
DEVMETHOD(bus_child_location_str, puc_bus_child_location_str),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t puc_pci_driver = {
diff --git a/sys/dev/qlxgb/qla_misc.c b/sys/dev/qlxgb/qla_misc.c
index c616d4f..fd86e2a 100644
--- a/sys/dev/qlxgb/qla_misc.c
+++ b/sys/dev/qlxgb/qla_misc.c
@@ -407,7 +407,7 @@ qla_crb_init(qla_host_t *ha)
addr_val_t *addr_val_map, *avmap;
qla_rd_flash32(ha, 0, &sig);
- QL_DPRINT2((ha->pci_dev, "%s: val[0] = 0x%08x\n", __func__, val));
+ QL_DPRINT2((ha->pci_dev, "%s: val[0] = 0x%08x\n", __func__, sig));
qla_rd_flash32(ha, 4, &val);
QL_DPRINT2((ha->pci_dev, "%s: val[4] = 0x%08x\n", __func__, val));
diff --git a/sys/dev/quicc/quicc_bfe_fdt.c b/sys/dev/quicc/quicc_bfe_fdt.c
index e1fd2d5..382b2a1 100644
--- a/sys/dev/quicc/quicc_bfe_fdt.c
+++ b/sys/dev/quicc/quicc_bfe_fdt.c
@@ -59,10 +59,8 @@ static device_method_t quicc_fdt_methods[] = {
DEVMETHOD(bus_read_ivar, quicc_bus_read_ivar),
DEVMETHOD(bus_setup_intr, quicc_bus_setup_intr),
DEVMETHOD(bus_teardown_intr, quicc_bus_teardown_intr),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t quicc_fdt_driver = {
diff --git a/sys/dev/ral/rt2560.c b/sys/dev/ral/rt2560.c
index 6064707..9fdc157 100644
--- a/sys/dev/ral/rt2560.c
+++ b/sys/dev/ral/rt2560.c
@@ -85,9 +85,9 @@ __FBSDID("$FreeBSD$");
#endif
static struct ieee80211vap *rt2560_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode,
+ int, const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void rt2560_vap_delete(struct ieee80211vap *);
static void rt2560_dma_map_addr(void *, bus_dma_segment_t *, int,
int);
@@ -373,10 +373,10 @@ rt2560_detach(void *xsc)
}
static struct ieee80211vap *
-rt2560_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+rt2560_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct ifnet *ifp = ic->ic_ifp;
struct rt2560_vap *rvp;
diff --git a/sys/dev/ral/rt2661.c b/sys/dev/ral/rt2661.c
index 372fcff..c4e8fe7 100644
--- a/sys/dev/ral/rt2661.c
+++ b/sys/dev/ral/rt2661.c
@@ -82,9 +82,9 @@ __FBSDID("$FreeBSD$");
#endif
static struct ieee80211vap *rt2661_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode,
+ int, const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void rt2661_vap_delete(struct ieee80211vap *);
static void rt2661_dma_map_addr(void *, bus_dma_segment_t *, int,
int);
@@ -368,10 +368,10 @@ rt2661_detach(void *xsc)
}
static struct ieee80211vap *
-rt2661_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+rt2661_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct ifnet *ifp = ic->ic_ifp;
struct rt2661_vap *rvp;
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c
index 3ade04c..92fbbfe 100644
--- a/sys/dev/re/if_re.c
+++ b/sys/dev/re/if_re.c
@@ -294,6 +294,11 @@ static void re_set_rxmode (struct rl_softc *);
static void re_reset (struct rl_softc *);
static void re_setwol (struct rl_softc *);
static void re_clrwol (struct rl_softc *);
+static void re_set_linkspeed (struct rl_softc *);
+
+#ifdef DEV_NETMAP /* see ixgbe.c for details */
+#include <dev/netmap/if_re_netmap.h>
+#endif /* !DEV_NETMAP */
#ifdef RE_DIAG
static int re_diag (struct rl_softc *);
@@ -313,16 +318,12 @@ static device_method_t re_methods[] = {
DEVMETHOD(device_resume, re_resume),
DEVMETHOD(device_shutdown, re_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, re_miibus_readreg),
DEVMETHOD(miibus_writereg, re_miibus_writereg),
DEVMETHOD(miibus_statchg, re_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t re_driver = {
@@ -1405,13 +1406,18 @@ re_attach(device_t dev)
RL_FLAG_AUTOPAD | RL_FLAG_MACSLEEP;
break;
case RL_HWREV_8401E:
- case RL_HWREV_8402:
case RL_HWREV_8105E:
case RL_HWREV_8105E_SPIN1:
sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PHYWAKE_PM |
RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
RL_FLAG_FASTETHER | RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD;
break;
+ case RL_HWREV_8402:
+ sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PHYWAKE_PM |
+ RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
+ RL_FLAG_FASTETHER | RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD |
+ RL_FLAG_CMDSTOP_WAIT_TXQ;
+ break;
case RL_HWREV_8168B_SPIN1:
case RL_HWREV_8168B_SPIN2:
sc->rl_flags |= RL_FLAG_WOLRXENB;
@@ -1428,22 +1434,28 @@ re_attach(device_t dev)
/* FALLTHROUGH */
case RL_HWREV_8168CP:
case RL_HWREV_8168D:
- case RL_HWREV_8168DP:
sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PAR |
RL_FLAG_DESCV2 | RL_FLAG_MACSTAT | RL_FLAG_CMDSTOP |
- RL_FLAG_AUTOPAD | RL_FLAG_JUMBOV2;
+ RL_FLAG_AUTOPAD | RL_FLAG_JUMBOV2 | RL_FLAG_WOL_MANLINK;
+ break;
+ case RL_HWREV_8168DP:
+ sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PAR |
+ RL_FLAG_DESCV2 | RL_FLAG_MACSTAT | RL_FLAG_AUTOPAD |
+ RL_FLAG_JUMBOV2 | RL_FLAG_WAIT_TXPOLL | RL_FLAG_WOL_MANLINK;
break;
case RL_HWREV_8168E:
sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PHYWAKE_PM |
RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
- RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD | RL_FLAG_JUMBOV2;
+ RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD | RL_FLAG_JUMBOV2 |
+ RL_FLAG_WOL_MANLINK;
break;
case RL_HWREV_8168E_VL:
case RL_HWREV_8168F:
case RL_HWREV_8411:
sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PAR |
RL_FLAG_DESCV2 | RL_FLAG_MACSTAT | RL_FLAG_CMDSTOP |
- RL_FLAG_AUTOPAD | RL_FLAG_JUMBOV2;
+ RL_FLAG_AUTOPAD | RL_FLAG_JUMBOV2 |
+ RL_FLAG_CMDSTOP_WAIT_TXQ | RL_FLAG_WOL_MANLINK;
break;
case RL_HWREV_8169_8110SB:
case RL_HWREV_8169_8110SBL:
@@ -1594,6 +1606,7 @@ re_attach(device_t dev)
if (pci_find_cap(sc->rl_dev, PCIY_PMG, &reg) == 0)
ifp->if_capabilities |= IFCAP_WOL;
ifp->if_capenable = ifp->if_capabilities;
+ ifp->if_capenable &= ~(IFCAP_WOL_UCAST | IFCAP_WOL_MCAST);
/*
* Don't enable TSO by default. It is known to generate
* corrupted TCP segments(bad TCP options) under certain
@@ -1611,6 +1624,9 @@ re_attach(device_t dev)
*/
ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header);
+#ifdef DEV_NETMAP
+ re_netmap_attach(sc);
+#endif /* DEV_NETMAP */
#ifdef RE_DIAG
/*
* Perform hardware diagnostic on the original RTL8169.
@@ -1806,6 +1822,9 @@ re_detach(device_t dev)
bus_dma_tag_destroy(sc->rl_ldata.rl_stag);
}
+#ifdef DEV_NETMAP
+ netmap_detach(ifp);
+#endif /* DEV_NETMAP */
if (sc->rl_parent_tag)
bus_dma_tag_destroy(sc->rl_parent_tag);
@@ -1980,6 +1999,9 @@ re_tx_list_init(struct rl_softc *sc)
sc->rl_ldata.rl_tx_desc_cnt * sizeof(struct rl_desc));
for (i = 0; i < sc->rl_ldata.rl_tx_desc_cnt; i++)
sc->rl_ldata.rl_tx_desc[i].tx_m = NULL;
+#ifdef DEV_NETMAP
+ re_netmap_tx_init(sc);
+#endif /* DEV_NETMAP */
/* Set EOR. */
desc = &sc->rl_ldata.rl_tx_list[sc->rl_ldata.rl_tx_desc_cnt - 1];
desc->rl_cmdstat |= htole32(RL_TDESC_CMD_EOR);
@@ -2007,6 +2029,9 @@ re_rx_list_init(struct rl_softc *sc)
if ((error = re_newbuf(sc, i)) != 0)
return (error);
}
+#ifdef DEV_NETMAP
+ re_netmap_rx_init(sc);
+#endif /* DEV_NETMAP */
/* Flush the RX descriptors */
@@ -2063,6 +2088,12 @@ re_rxeof(struct rl_softc *sc, int *rx_npktsp)
RL_LOCK_ASSERT(sc);
ifp = sc->rl_ifp;
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ selwakeuppri(&NA(ifp)->rx_rings->si, PI_NET);
+ return 0;
+ }
+#endif /* DEV_NETMAP */
if (ifp->if_mtu > RL_MTU && (sc->rl_flags & RL_FLAG_JUMBOV2) != 0)
jumbo = 1;
else
@@ -2304,6 +2335,12 @@ re_txeof(struct rl_softc *sc)
return;
ifp = sc->rl_ifp;
+#ifdef DEV_NETMAP
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ selwakeuppri(&NA(ifp)->tx_rings[0].si, PI_NET);
+ return;
+ }
+#endif /* DEV_NETMAP */
/* Invalidate the TX descriptor list */
bus_dmamap_sync(sc->rl_ldata.rl_tx_list_tag,
sc->rl_ldata.rl_tx_list_map,
@@ -2822,6 +2859,21 @@ re_start_locked(struct ifnet *ifp)
sc = ifp->if_softc;
+#ifdef DEV_NETMAP
+ /* XXX is this necessary ? */
+ if (ifp->if_capenable & IFCAP_NETMAP) {
+ struct netmap_kring *kring = &NA(ifp)->tx_rings[0];
+ if (sc->rl_ldata.rl_tx_prodidx != kring->nr_hwcur) {
+ /* kick the tx unit */
+ CSR_WRITE_1(sc, sc->rl_txstart, RL_TXSTART_START);
+#ifdef RE_TX_MODERATION
+ CSR_WRITE_4(sc, RL_TIMERCNT, 1);
+#endif
+ sc->rl_watchdog_timer = 5;
+ }
+ return;
+ }
+#endif /* DEV_NETMAP */
if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
IFF_DRV_RUNNING || (sc->rl_flags & RL_FLAG_LINK) == 0)
return;
@@ -3197,14 +3249,14 @@ re_init_locked(struct rl_softc *sc)
if (sc->rl_testmode)
return;
- mii_mediachg(mii);
-
CSR_WRITE_1(sc, RL_CFG1, CSR_READ_1(sc, RL_CFG1) | RL_CFG1_DRVLOAD);
ifp->if_drv_flags |= IFF_DRV_RUNNING;
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
sc->rl_flags &= ~RL_FLAG_LINK;
+ mii_mediachg(mii);
+
sc->rl_watchdog_timer = 0;
callout_reset(&sc->rl_stat_callout, hz, re_tick, sc);
}
@@ -3459,10 +3511,42 @@ re_stop(struct rl_softc *sc)
callout_stop(&sc->rl_stat_callout);
ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
- if ((sc->rl_flags & RL_FLAG_CMDSTOP) != 0)
+ /*
+ * Disable accepting frames to put RX MAC into idle state.
+ * Otherwise it's possible to get frames while stop command
+ * execution is in progress and controller can DMA the frame
+ * to already freed RX buffer during that period.
+ */
+ CSR_WRITE_4(sc, RL_RXCFG, CSR_READ_4(sc, RL_RXCFG) &
+ ~(RL_RXCFG_RX_ALLPHYS | RL_RXCFG_RX_INDIV | RL_RXCFG_RX_MULTI |
+ RL_RXCFG_RX_BROAD));
+
+ if ((sc->rl_flags & RL_FLAG_WAIT_TXPOLL) != 0) {
+ for (i = RL_TIMEOUT; i > 0; i--) {
+ if ((CSR_READ_1(sc, sc->rl_txstart) &
+ RL_TXSTART_START) == 0)
+ break;
+ DELAY(20);
+ }
+ if (i == 0)
+ device_printf(sc->rl_dev,
+ "stopping TX poll timed out!\n");
+ CSR_WRITE_1(sc, RL_COMMAND, 0x00);
+ } else if ((sc->rl_flags & RL_FLAG_CMDSTOP) != 0) {
CSR_WRITE_1(sc, RL_COMMAND, RL_CMD_STOPREQ | RL_CMD_TX_ENB |
RL_CMD_RX_ENB);
- else
+ if ((sc->rl_flags & RL_FLAG_CMDSTOP_WAIT_TXQ) != 0) {
+ for (i = RL_TIMEOUT; i > 0; i--) {
+ if ((CSR_READ_4(sc, RL_TXCFG) &
+ RL_TXCFG_QUEUE_EMPTY) != 0)
+ break;
+ DELAY(100);
+ }
+ if (i == 0)
+ device_printf(sc->rl_dev,
+ "stopping TXQ timed out!\n");
+ }
+ } else
CSR_WRITE_1(sc, RL_COMMAND, 0x00);
DELAY(1000);
CSR_WRITE_2(sc, RL_IMR, 0x0000);
@@ -3588,6 +3672,74 @@ re_shutdown(device_t dev)
}
static void
+re_set_linkspeed(struct rl_softc *sc)
+{
+ struct mii_softc *miisc;
+ struct mii_data *mii;
+ int aneg, i, phyno;
+
+ RL_LOCK_ASSERT(sc);
+
+ mii = device_get_softc(sc->rl_miibus);
+ mii_pollstat(mii);
+ aneg = 0;
+ if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) ==
+ (IFM_ACTIVE | IFM_AVALID)) {
+ switch IFM_SUBTYPE(mii->mii_media_active) {
+ case IFM_10_T:
+ case IFM_100_TX:
+ return;
+ case IFM_1000_T:
+ aneg++;
+ break;
+ default:
+ break;
+ }
+ }
+ miisc = LIST_FIRST(&mii->mii_phys);
+ phyno = miisc->mii_phy;
+ LIST_FOREACH(miisc, &mii->mii_phys, mii_list)
+ PHY_RESET(miisc);
+ re_miibus_writereg(sc->rl_dev, phyno, MII_100T2CR, 0);
+ re_miibus_writereg(sc->rl_dev, phyno,
+ MII_ANAR, ANAR_TX_FD | ANAR_TX | ANAR_10_FD | ANAR_10 | ANAR_CSMA);
+ re_miibus_writereg(sc->rl_dev, phyno,
+ MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG);
+ DELAY(1000);
+ if (aneg != 0) {
+ /*
+ * Poll link state until re(4) get a 10/100Mbps link.
+ */
+ for (i = 0; i < MII_ANEGTICKS_GIGE; i++) {
+ mii_pollstat(mii);
+ if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID))
+ == (IFM_ACTIVE | IFM_AVALID)) {
+ switch (IFM_SUBTYPE(mii->mii_media_active)) {
+ case IFM_10_T:
+ case IFM_100_TX:
+ return;
+ default:
+ break;
+ }
+ }
+ RL_UNLOCK(sc);
+ pause("relnk", hz);
+ RL_LOCK(sc);
+ }
+ if (i == MII_ANEGTICKS_GIGE)
+ device_printf(sc->rl_dev,
+ "establishing a link failed, WOL may not work!");
+ }
+ /*
+ * No link, force MAC to have 100Mbps, full-duplex link.
+ * MAC does not require reprogramming on resolved speed/duplex,
+ * so this is just for completeness.
+ */
+ mii->mii_media_status = IFM_AVALID | IFM_ACTIVE;
+ mii->mii_media_active = IFM_ETHER | IFM_100_TX | IFM_FDX;
+}
+
+static void
re_setwol(struct rl_softc *sc)
{
struct ifnet *ifp;
@@ -3607,9 +3759,13 @@ re_setwol(struct rl_softc *sc)
CSR_WRITE_1(sc, RL_GPIO,
CSR_READ_1(sc, RL_GPIO) & ~0x01);
}
- if ((ifp->if_capenable & IFCAP_WOL) != 0 &&
- (sc->rl_flags & RL_FLAG_WOLRXENB) != 0)
- CSR_WRITE_1(sc, RL_COMMAND, RL_CMD_RX_ENB);
+ if ((ifp->if_capenable & IFCAP_WOL) != 0) {
+ re_set_rxmode(sc);
+ if ((sc->rl_flags & RL_FLAG_WOL_MANLINK) != 0)
+ re_set_linkspeed(sc);
+ if ((sc->rl_flags & RL_FLAG_WOLRXENB) != 0)
+ CSR_WRITE_1(sc, RL_COMMAND, RL_CMD_RX_ENB);
+ }
/* Enable config register write. */
CSR_WRITE_1(sc, RL_EECMD, RL_EE_MODE);
@@ -3626,12 +3782,9 @@ re_setwol(struct rl_softc *sc)
v |= RL_CFG3_WOL_MAGIC;
CSR_WRITE_1(sc, RL_CFG3, v);
- /* Config register write done. */
- CSR_WRITE_1(sc, RL_EECMD, RL_EEMODE_OFF);
-
v = CSR_READ_1(sc, RL_CFG5);
- v &= ~(RL_CFG5_WOL_BCAST | RL_CFG5_WOL_MCAST | RL_CFG5_WOL_UCAST);
- v &= ~RL_CFG5_WOL_LANWAKE;
+ v &= ~(RL_CFG5_WOL_BCAST | RL_CFG5_WOL_MCAST | RL_CFG5_WOL_UCAST |
+ RL_CFG5_WOL_LANWAKE);
if ((ifp->if_capenable & IFCAP_WOL_UCAST) != 0)
v |= RL_CFG5_WOL_UCAST;
if ((ifp->if_capenable & IFCAP_WOL_MCAST) != 0)
@@ -3640,6 +3793,9 @@ re_setwol(struct rl_softc *sc)
v |= RL_CFG5_WOL_LANWAKE;
CSR_WRITE_1(sc, RL_CFG5, v);
+ /* Config register write done. */
+ CSR_WRITE_1(sc, RL_EECMD, RL_EEMODE_OFF);
+
if ((ifp->if_capenable & IFCAP_WOL) != 0 &&
(sc->rl_flags & RL_FLAG_PHYWAKE_PM) != 0)
CSR_WRITE_1(sc, RL_PMCH, CSR_READ_1(sc, RL_PMCH) & ~0x80);
diff --git a/sys/dev/rt/if_rt.c b/sys/dev/rt/if_rt.c
index edaf95e..a1667e5 100644
--- a/sys/dev/rt/if_rt.c
+++ b/sys/dev/rt/if_rt.c
@@ -2588,17 +2588,14 @@ static device_method_t rt_dev_methods[] =
DEVMETHOD(device_suspend, rt_suspend),
DEVMETHOD(device_resume, rt_resume),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
#ifdef IF_RT_PHY_SUPPORT
/* MII interface */
DEVMETHOD(miibus_readreg, rt_miibus_readreg),
DEVMETHOD(miibus_writereg, rt_miibus_writereg),
DEVMETHOD(miibus_statchg, rt_miibus_statchg),
#endif
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t rt_driver =
diff --git a/sys/dev/safe/safe.c b/sys/dev/safe/safe.c
index 00c00ea..a8fbbbb 100644
--- a/sys/dev/safe/safe.c
+++ b/sys/dev/safe/safe.c
@@ -99,16 +99,12 @@ static device_method_t safe_methods[] = {
DEVMETHOD(device_resume, safe_resume),
DEVMETHOD(device_shutdown, safe_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* crypto device methods */
DEVMETHOD(cryptodev_newsession, safe_newsession),
DEVMETHOD(cryptodev_freesession,safe_freesession),
DEVMETHOD(cryptodev_process, safe_process),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t safe_driver = {
"safe",
diff --git a/sys/dev/scc/scc_bfe_ebus.c b/sys/dev/scc/scc_bfe_ebus.c
index 6c944f7..2b71a67 100644
--- a/sys/dev/scc/scc_bfe_ebus.c
+++ b/sys/dev/scc/scc_bfe_ebus.c
@@ -84,9 +84,8 @@ static device_method_t scc_ebus_methods[] = {
DEVMETHOD(bus_read_ivar, scc_bus_read_ivar),
DEVMETHOD(bus_setup_intr, scc_bus_setup_intr),
DEVMETHOD(bus_teardown_intr, scc_bus_teardown_intr),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t scc_ebus_driver = {
diff --git a/sys/dev/scc/scc_bfe_macio.c b/sys/dev/scc/scc_bfe_macio.c
index 1d7bf82..042788d 100644
--- a/sys/dev/scc/scc_bfe_macio.c
+++ b/sys/dev/scc/scc_bfe_macio.c
@@ -80,9 +80,8 @@ static device_method_t scc_macio_methods[] = {
DEVMETHOD(bus_read_ivar, scc_bus_read_ivar),
DEVMETHOD(bus_setup_intr, scc_bus_setup_intr),
DEVMETHOD(bus_teardown_intr, scc_bus_teardown_intr),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t scc_macio_driver = {
diff --git a/sys/dev/scc/scc_bfe_quicc.c b/sys/dev/scc/scc_bfe_quicc.c
index f92aa52..c7e97f3 100644
--- a/sys/dev/scc/scc_bfe_quicc.c
+++ b/sys/dev/scc/scc_bfe_quicc.c
@@ -88,9 +88,8 @@ static device_method_t scc_quicc_methods[] = {
DEVMETHOD(bus_read_ivar, scc_bus_read_ivar),
DEVMETHOD(bus_setup_intr, scc_bus_setup_intr),
DEVMETHOD(bus_teardown_intr, scc_bus_teardown_intr),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t scc_quicc_driver = {
diff --git a/sys/dev/scc/scc_bfe_sbus.c b/sys/dev/scc/scc_bfe_sbus.c
index 8eb963f..ba6b25a 100644
--- a/sys/dev/scc/scc_bfe_sbus.c
+++ b/sys/dev/scc/scc_bfe_sbus.c
@@ -80,9 +80,8 @@ static device_method_t scc_sbus_methods[] = {
DEVMETHOD(bus_read_ivar, scc_bus_read_ivar),
DEVMETHOD(bus_setup_intr, scc_bus_setup_intr),
DEVMETHOD(bus_teardown_intr, scc_bus_teardown_intr),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t scc_sbus_driver = {
diff --git a/sys/dev/sec/sec.c b/sys/dev/sec/sec.c
index 36fc9ce..3b8c103 100644
--- a/sys/dev/sec/sec.c
+++ b/sys/dev/sec/sec.c
@@ -135,16 +135,12 @@ static device_method_t sec_methods[] = {
DEVMETHOD(device_resume, sec_resume),
DEVMETHOD(device_shutdown, sec_shutdown),
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* Crypto methods */
DEVMETHOD(cryptodev_newsession, sec_newsession),
DEVMETHOD(cryptodev_freesession,sec_freesession),
DEVMETHOD(cryptodev_process, sec_process),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t sec_driver = {
"sec",
diff --git a/sys/dev/sf/if_sf.c b/sys/dev/sf/if_sf.c
index e919f55..251f310 100644
--- a/sys/dev/sf/if_sf.c
+++ b/sys/dev/sf/if_sf.c
@@ -212,16 +212,12 @@ static device_method_t sf_methods[] = {
DEVMETHOD(device_suspend, sf_suspend),
DEVMETHOD(device_resume, sf_resume),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, sf_miibus_readreg),
DEVMETHOD(miibus_writereg, sf_miibus_writereg),
DEVMETHOD(miibus_statchg, sf_miibus_statchg),
- { NULL, NULL }
+ DEVMETHOD_END
};
static driver_t sf_driver = {
diff --git a/sys/dev/sfxge/common/efsys.h b/sys/dev/sfxge/common/efsys.h
index 3e83d24..18456d5 100644
--- a/sys/dev/sfxge/common/efsys.h
+++ b/sys/dev/sfxge/common/efsys.h
@@ -25,14 +25,13 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#ifndef _SYS_EFSYS_H
#define _SYS_EFSYS_H
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/sys/dev/sfxge/common/efx.h b/sys/dev/sfxge/common/efx.h
index 18c248b..a0f2025 100644
--- a/sys/dev/sfxge/common/efx.h
+++ b/sys/dev/sfxge/common/efx.h
@@ -21,6 +21,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#ifndef _SYS_EFX_H
diff --git a/sys/dev/sfxge/common/efx_bootcfg.c b/sys/dev/sfxge/common/efx_bootcfg.c
index 1a6a79c..d770a5c 100644
--- a/sys/dev/sfxge/common/efx_bootcfg.c
+++ b/sys/dev/sfxge/common/efx_bootcfg.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_ev.c b/sys/dev/sfxge/common/efx_ev.c
index 2203bc1..1ce8218 100644
--- a/sys/dev/sfxge/common/efx_ev.c
+++ b/sys/dev/sfxge/common/efx_ev.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_filter.c b/sys/dev/sfxge/common/efx_filter.c
index e915e9c..fa17ae3 100644
--- a/sys/dev/sfxge/common/efx_filter.c
+++ b/sys/dev/sfxge/common/efx_filter.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_impl.h b/sys/dev/sfxge/common/efx_impl.h
index 5858e96..31681f2 100644
--- a/sys/dev/sfxge/common/efx_impl.h
+++ b/sys/dev/sfxge/common/efx_impl.h
@@ -21,6 +21,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#ifndef _SYS_EFX_IMPL_H
diff --git a/sys/dev/sfxge/common/efx_intr.c b/sys/dev/sfxge/common/efx_intr.c
index 77780b1..556728d 100644
--- a/sys/dev/sfxge/common/efx_intr.c
+++ b/sys/dev/sfxge/common/efx_intr.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_mac.c b/sys/dev/sfxge/common/efx_mac.c
index 6852584..5b868ed 100644
--- a/sys/dev/sfxge/common/efx_mac.c
+++ b/sys/dev/sfxge/common/efx_mac.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_mcdi.c b/sys/dev/sfxge/common/efx_mcdi.c
index 7d01e9b..20c5bc6 100644
--- a/sys/dev/sfxge/common/efx_mcdi.c
+++ b/sys/dev/sfxge/common/efx_mcdi.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_mcdi.h b/sys/dev/sfxge/common/efx_mcdi.h
index ef0ba90..cc3a6de 100644
--- a/sys/dev/sfxge/common/efx_mcdi.h
+++ b/sys/dev/sfxge/common/efx_mcdi.h
@@ -21,6 +21,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#ifndef _SYS_EFX_MCDI_H
diff --git a/sys/dev/sfxge/common/efx_mon.c b/sys/dev/sfxge/common/efx_mon.c
index 0d3221a..5d397c3 100644
--- a/sys/dev/sfxge/common/efx_mon.c
+++ b/sys/dev/sfxge/common/efx_mon.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_nic.c b/sys/dev/sfxge/common/efx_nic.c
index 07ce009..fdbe5a2 100644
--- a/sys/dev/sfxge/common/efx_nic.c
+++ b/sys/dev/sfxge/common/efx_nic.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_nvram.c b/sys/dev/sfxge/common/efx_nvram.c
index d4cf741..2df9bb9 100644
--- a/sys/dev/sfxge/common/efx_nvram.c
+++ b/sys/dev/sfxge/common/efx_nvram.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_phy.c b/sys/dev/sfxge/common/efx_phy.c
index 0b098ec..0300e04 100644
--- a/sys/dev/sfxge/common/efx_phy.c
+++ b/sys/dev/sfxge/common/efx_phy.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_port.c b/sys/dev/sfxge/common/efx_port.c
index cbb0b3b..0b67d06 100644
--- a/sys/dev/sfxge/common/efx_port.c
+++ b/sys/dev/sfxge/common/efx_port.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_regs.h b/sys/dev/sfxge/common/efx_regs.h
index c31c33e..6426ae7 100644
--- a/sys/dev/sfxge/common/efx_regs.h
+++ b/sys/dev/sfxge/common/efx_regs.h
@@ -21,6 +21,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#ifndef _SYS_EFX_REGS_H
diff --git a/sys/dev/sfxge/common/efx_regs_ef10.h b/sys/dev/sfxge/common/efx_regs_ef10.h
index 62c0372..ef62b58 100644
--- a/sys/dev/sfxge/common/efx_regs_ef10.h
+++ b/sys/dev/sfxge/common/efx_regs_ef10.h
@@ -21,6 +21,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#ifndef _SYS_EFX_EF10_REGS_H
diff --git a/sys/dev/sfxge/common/efx_regs_mcdi.h b/sys/dev/sfxge/common/efx_regs_mcdi.h
index 720770c..8246f89 100644
--- a/sys/dev/sfxge/common/efx_regs_mcdi.h
+++ b/sys/dev/sfxge/common/efx_regs_mcdi.h
@@ -21,10 +21,10 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
-/*! \cidoxg_firmware_mc_cmd */
-
#ifndef _SIENA_MC_DRIVER_PCOL_H
#define _SIENA_MC_DRIVER_PCOL_H
@@ -2783,4 +2783,3 @@
#define MC_CMD_TCM_TXQ_INIT_OUT_LEN 0
#endif /* _SIENA_MC_DRIVER_PCOL_H */
-/*! \cidoxg_end */
diff --git a/sys/dev/sfxge/common/efx_regs_pci.h b/sys/dev/sfxge/common/efx_regs_pci.h
index cb5efab..3a3a827 100644
--- a/sys/dev/sfxge/common/efx_regs_pci.h
+++ b/sys/dev/sfxge/common/efx_regs_pci.h
@@ -21,6 +21,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#ifndef _SYS_EFX_REGS_PCI_H
diff --git a/sys/dev/sfxge/common/efx_rx.c b/sys/dev/sfxge/common/efx_rx.c
index 7d3d7c1..5b52d86 100644
--- a/sys/dev/sfxge/common/efx_rx.c
+++ b/sys/dev/sfxge/common/efx_rx.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_sram.c b/sys/dev/sfxge/common/efx_sram.c
index 16a3229..f081adf 100644
--- a/sys/dev/sfxge/common/efx_sram.c
+++ b/sys/dev/sfxge/common/efx_sram.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_tx.c b/sys/dev/sfxge/common/efx_tx.c
index 0dc347c..56a47fa 100644
--- a/sys/dev/sfxge/common/efx_tx.c
+++ b/sys/dev/sfxge/common/efx_tx.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_types.h b/sys/dev/sfxge/common/efx_types.h
index d691482..9fbaea1 100644
--- a/sys/dev/sfxge/common/efx_types.h
+++ b/sys/dev/sfxge/common/efx_types.h
@@ -23,6 +23,8 @@
* SUCH DAMAGE.
*
* Ackowledgement to Fen Systems Ltd.
+ *
+ * $FreeBSD$
*/
#ifndef _SYS_EFX_TYPES_H
diff --git a/sys/dev/sfxge/common/efx_vpd.c b/sys/dev/sfxge/common/efx_vpd.c
index 699e890..399c056 100644
--- a/sys/dev/sfxge/common/efx_vpd.c
+++ b/sys/dev/sfxge/common/efx_vpd.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/efx_wol.c b/sys/dev/sfxge/common/efx_wol.c
index 74f11de..89a80c7 100644
--- a/sys/dev/sfxge/common/efx_wol.c
+++ b/sys/dev/sfxge/common/efx_wol.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/siena_flash.h b/sys/dev/sfxge/common/siena_flash.h
index 7df3995..1378b91 100644
--- a/sys/dev/sfxge/common/siena_flash.h
+++ b/sys/dev/sfxge/common/siena_flash.h
@@ -21,9 +21,10 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
-
#ifndef _SYS_SIENA_FLASH_H
#define _SYS_SIENA_FLASH_H
diff --git a/sys/dev/sfxge/common/siena_impl.h b/sys/dev/sfxge/common/siena_impl.h
index b566adb..9d02808 100644
--- a/sys/dev/sfxge/common/siena_impl.h
+++ b/sys/dev/sfxge/common/siena_impl.h
@@ -21,6 +21,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#ifndef _SYS_SIENA_IMPL_H
diff --git a/sys/dev/sfxge/common/siena_mac.c b/sys/dev/sfxge/common/siena_mac.c
index 7facf1c..e5c8f3c 100644
--- a/sys/dev/sfxge/common/siena_mac.c
+++ b/sys/dev/sfxge/common/siena_mac.c
@@ -22,6 +22,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_impl.h"
diff --git a/sys/dev/sfxge/common/siena_mon.c b/sys/dev/sfxge/common/siena_mon.c
index de9a1df..de7b793 100644
--- a/sys/dev/sfxge/common/siena_mon.c
+++ b/sys/dev/sfxge/common/siena_mon.c
@@ -22,6 +22,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_impl.h"
diff --git a/sys/dev/sfxge/common/siena_nic.c b/sys/dev/sfxge/common/siena_nic.c
index 9eb0db2..e52503b 100644
--- a/sys/dev/sfxge/common/siena_nic.c
+++ b/sys/dev/sfxge/common/siena_nic.c
@@ -22,6 +22,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_impl.h"
diff --git a/sys/dev/sfxge/common/siena_nvram.c b/sys/dev/sfxge/common/siena_nvram.c
index 9cdd3ad..e883ce1 100644
--- a/sys/dev/sfxge/common/siena_nvram.c
+++ b/sys/dev/sfxge/common/siena_nvram.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/common/siena_phy.c b/sys/dev/sfxge/common/siena_phy.c
index 7eb8468..4189e23 100644
--- a/sys/dev/sfxge/common/siena_phy.c
+++ b/sys/dev/sfxge/common/siena_phy.c
@@ -22,6 +22,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_impl.h"
diff --git a/sys/dev/sfxge/common/siena_sram.c b/sys/dev/sfxge/common/siena_sram.c
index 64fce98..9c13e1d 100644
--- a/sys/dev/sfxge/common/siena_sram.c
+++ b/sys/dev/sfxge/common/siena_sram.c
@@ -22,6 +22,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_impl.h"
diff --git a/sys/dev/sfxge/common/siena_vpd.c b/sys/dev/sfxge/common/siena_vpd.c
index 5c44608..cd643c8 100644
--- a/sys/dev/sfxge/common/siena_vpd.c
+++ b/sys/dev/sfxge/common/siena_vpd.c
@@ -23,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include "efsys.h"
#include "efx.h"
#include "efx_types.h"
diff --git a/sys/dev/sfxge/sfxge.c b/sys/dev/sfxge/sfxge.c
index 380215a..18428cf 100644
--- a/sys/dev/sfxge/sfxge.c
+++ b/sys/dev/sfxge/sfxge.c
@@ -757,11 +757,7 @@ static device_method_t sfxge_methods[] = {
DEVMETHOD(device_attach, sfxge_attach),
DEVMETHOD(device_detach, sfxge_detach),
- /* Bus interface. */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t sfxge_devclass;
diff --git a/sys/dev/sge/if_sge.c b/sys/dev/sge/if_sge.c
index c56760d..68679fe 100644
--- a/sys/dev/sge/if_sge.c
+++ b/sys/dev/sge/if_sge.c
@@ -158,16 +158,12 @@ static device_method_t sge_methods[] = {
DEVMETHOD(device_resume, sge_resume),
DEVMETHOD(device_shutdown, sge_shutdown),
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, sge_miibus_readreg),
DEVMETHOD(miibus_writereg, sge_miibus_writereg),
DEVMETHOD(miibus_statchg, sge_miibus_statchg),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t sge_driver = {
diff --git a/sys/dev/siba/siba.c b/sys/dev/siba/siba.c
index b2c49fb..ebe7190 100644
--- a/sys/dev/siba/siba.c
+++ b/sys/dev/siba/siba.c
@@ -632,7 +632,7 @@ static device_method_t siba_methods[] = {
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
DEVMETHOD(bus_write_ivar, siba_write_ivar),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t siba_driver = {
diff --git a/sys/dev/siba/siba_bwn.c b/sys/dev/siba/siba_bwn.c
index a778d49..43c52bd 100644
--- a/sys/dev/siba/siba_bwn.c
+++ b/sys/dev/siba/siba_bwn.c
@@ -410,7 +410,7 @@ static device_method_t siba_bwn_methods[] = {
DEVMETHOD(pci_release_msi, siba_bwn_release_msi),
DEVMETHOD(pci_msi_count, siba_bwn_msi_count),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t siba_bwn_driver = {
"siba_bwn",
diff --git a/sys/dev/siba/siba_cc.c b/sys/dev/siba/siba_cc.c
index 67af696..d74e809b 100644
--- a/sys/dev/siba/siba_cc.c
+++ b/sys/dev/siba/siba_cc.c
@@ -141,7 +141,7 @@ static device_method_t siba_cc_methods[] = {
DEVMETHOD(device_attach, siba_cc_attach),
DEVMETHOD(device_probe, siba_cc_probe),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t siba_cc_driver = {
diff --git a/sys/dev/siba/siba_core.c b/sys/dev/siba/siba_core.c
index 61652ad..4c7dfee 100644
--- a/sys/dev/siba/siba_core.c
+++ b/sys/dev/siba/siba_core.c
@@ -215,7 +215,7 @@ int
siba_core_detach(struct siba_softc *siba)
{
/* detach & delete all children */
- device_delete_all_children(siba->siba_dev);
+ device_delete_children(siba->siba_dev);
return (0);
}
diff --git a/sys/dev/siba/siba_pcib.c b/sys/dev/siba/siba_pcib.c
index d6ddeb6..6236aed 100644
--- a/sys/dev/siba/siba_pcib.c
+++ b/sys/dev/siba/siba_pcib.c
@@ -403,7 +403,6 @@ static device_method_t siba_pcib_methods[] = {
DEVMETHOD(device_probe, siba_pcib_probe),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_read_ivar, siba_pcib_read_ivar),
DEVMETHOD(bus_write_ivar, siba_pcib_write_ivar),
DEVMETHOD(bus_setup_intr, siba_pcib_setup_intr),
@@ -419,7 +418,7 @@ static device_method_t siba_pcib_methods[] = {
DEVMETHOD(pcib_write_config, siba_pcib_write_config),
DEVMETHOD(pcib_route_interrupt, siba_pcib_route_interrupt),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t siba_pcib_driver = {
diff --git a/sys/dev/siis/siis.c b/sys/dev/siis/siis.c
index 40c17cb..17c1a39 100644
--- a/sys/dev/siis/siis.c
+++ b/sys/dev/siis/siis.c
@@ -207,7 +207,7 @@ siis_detach(device_t dev)
struct siis_controller *ctlr = device_get_softc(dev);
/* Detach & delete all children */
- device_delete_all_children(dev);
+ device_delete_children(dev);
/* Free interrupts. */
if (ctlr->irq.r_irq) {
diff --git a/sys/dev/sio/sio.c b/sys/dev/sio/sio.c
index 7e2054e..d389f45 100644
--- a/sys/dev/sio/sio.c
+++ b/sys/dev/sio/sio.c
@@ -2293,6 +2293,8 @@ static cn_init_t sio_cninit;
static cn_term_t sio_cnterm;
static cn_getc_t sio_cngetc;
static cn_putc_t sio_cnputc;
+static cn_grab_t sio_cngrab;
+static cn_ungrab_t sio_cnungrab;
CONSOLE_DRIVER(sio);
@@ -2512,6 +2514,16 @@ sio_cnterm(cp)
comconsole = -1;
}
+static void
+sio_cngrab(struct consdev *cp)
+{
+}
+
+static void
+sio_cnungrab(struct consdev *cp)
+{
+}
+
static int
sio_cngetc(struct consdev *cd)
{
diff --git a/sys/dev/sis/if_sis.c b/sys/dev/sis/if_sis.c
index 630281d..ba8106e 100644
--- a/sys/dev/sis/if_sis.c
+++ b/sys/dev/sis/if_sis.c
@@ -2393,16 +2393,12 @@ static device_method_t sis_methods[] = {
DEVMETHOD(device_suspend, sis_suspend),
DEVMETHOD(device_resume, sis_resume),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, sis_miibus_readreg),
DEVMETHOD(miibus_writereg, sis_miibus_writereg),
DEVMETHOD(miibus_statchg, sis_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t sis_driver = {
diff --git a/sys/dev/sk/if_sk.c b/sys/dev/sk/if_sk.c
index 4d2abb8..b217784 100644
--- a/sys/dev/sk/if_sk.c
+++ b/sys/dev/sk/if_sk.c
@@ -296,11 +296,7 @@ static device_method_t skc_methods[] = {
DEVMETHOD(device_resume, skc_resume),
DEVMETHOD(device_shutdown, skc_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t skc_driver = {
@@ -318,16 +314,12 @@ static device_method_t sk_methods[] = {
DEVMETHOD(device_detach, sk_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, sk_miibus_readreg),
DEVMETHOD(miibus_writereg, sk_miibus_writereg),
DEVMETHOD(miibus_statchg, sk_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t sk_driver = {
diff --git a/sys/dev/smbus/smbus.c b/sys/dev/smbus/smbus.c
index 1c17f6d..a111332 100644
--- a/sys/dev/smbus/smbus.c
+++ b/sys/dev/smbus/smbus.c
@@ -55,11 +55,10 @@ static device_method_t smbus_methods[] = {
DEVMETHOD(device_attach, smbus_attach),
DEVMETHOD(device_detach, smbus_detach),
- /* bus interface */
+ /* bus interface */
DEVMETHOD(bus_add_child, bus_generic_add_child),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- { 0, 0 }
+ DEVMETHOD_END
};
driver_t smbus_driver = {
diff --git a/sys/dev/sound/isa/gusc.c b/sys/dev/sound/isa/gusc.c
index ef211c6..58ac346 100644
--- a/sys/dev/sound/isa/gusc.c
+++ b/sys/dev/sound/isa/gusc.c
@@ -644,7 +644,6 @@ static device_method_t gusc_methods[] = {
DEVMETHOD(device_resume, bus_generic_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_alloc_resource, gusc_alloc_resource),
DEVMETHOD(bus_release_resource, gusc_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
@@ -652,7 +651,7 @@ static device_method_t gusc_methods[] = {
DEVMETHOD(bus_setup_intr, gusc_setup_intr),
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t gusc_driver = {
diff --git a/sys/dev/sound/isa/sbc.c b/sys/dev/sound/isa/sbc.c
index 3df2738..aa6003b 100644
--- a/sys/dev/sound/isa/sbc.c
+++ b/sys/dev/sound/isa/sbc.c
@@ -790,7 +790,6 @@ static device_method_t sbc_methods[] = {
/* Bus interface */
DEVMETHOD(bus_read_ivar, sbc_read_ivar),
DEVMETHOD(bus_write_ivar, sbc_write_ivar),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_alloc_resource, sbc_alloc_resource),
DEVMETHOD(bus_release_resource, sbc_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
@@ -798,7 +797,7 @@ static device_method_t sbc_methods[] = {
DEVMETHOD(bus_setup_intr, sbc_setup_intr),
DEVMETHOD(bus_teardown_intr, sbc_teardown_intr),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t sbc_driver = {
diff --git a/sys/dev/sound/pci/csa.c b/sys/dev/sound/pci/csa.c
index 28eae75..04ea4ec 100644
--- a/sys/dev/sound/pci/csa.c
+++ b/sys/dev/sound/pci/csa.c
@@ -1076,7 +1076,6 @@ static device_method_t csa_methods[] = {
DEVMETHOD(device_resume, csa_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_alloc_resource, csa_alloc_resource),
DEVMETHOD(bus_release_resource, csa_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
@@ -1084,7 +1083,7 @@ static device_method_t csa_methods[] = {
DEVMETHOD(bus_setup_intr, csa_setup_intr),
DEVMETHOD(bus_teardown_intr, csa_teardown_intr),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t csa_driver = {
diff --git a/sys/dev/sound/pci/emu10k1.c b/sys/dev/sound/pci/emu10k1.c
index 4c02fa4..cbf89a0 100644
--- a/sys/dev/sound/pci/emu10k1.c
+++ b/sys/dev/sound/pci/emu10k1.c
@@ -32,7 +32,7 @@
#include <dev/sound/pcm/sound.h>
#include <dev/sound/pcm/ac97.h>
-#include "emu10k1-alsa%diked.h"
+#include <dev/sound/pci/emuxkireg.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcivar.h>
@@ -66,12 +66,94 @@ SND_DECLARE_FILE("$FreeBSD$");
#define ENABLE 0xffffffff
#define DISABLE 0x00000000
-#define ENV_ON DCYSUSV_CHANNELENABLE_MASK
+#define ENV_ON EMU_CHAN_DCYSUSV_CHANNELENABLE_MASK
#define ENV_OFF 0x00 /* XXX: should this be 1? */
-#define A_IOCFG_GPOUT_A 0x40 /* Analog Output */
-#define A_IOCFG_GPOUT_D 0x04 /* Digital Output */
-#define A_IOCFG_GPOUT_AD (A_IOCFG_GPOUT_A|A_IOCFG_GPOUT_D) /* A_IOCFG_GPOUT0 */
+#define EMU_A_IOCFG_GPOUT_A 0x40
+#define EMU_A_IOCFG_GPOUT_D 0x04
+#define EMU_A_IOCFG_GPOUT_AD (EMU_A_IOCFG_GPOUT_A|EMU_A_IOCFG_GPOUT_D) /* EMU_A_IOCFG_GPOUT0 */
+
+#define EMU_HCFG_GPOUT1 0x00000800
+
+/* instruction set */
+#define iACC3 0x06
+#define iMACINT0 0x04
+#define iINTERP 0x0e
+
+#define C_00000000 0x40
+#define C_00000001 0x41
+#define C_00000004 0x44
+#define C_40000000 0x4d
+/* Audigy constants */
+#define A_C_00000000 0xc0
+#define A_C_40000000 0xcd
+
+/* GPRs */
+#define FXBUS(x) (0x00 + (x))
+#define EXTIN(x) (0x10 + (x))
+#define EXTOUT(x) (0x20 + (x))
+
+#define GPR(x) (EMU_FXGPREGBASE + (x))
+#define A_EXTIN(x) (0x40 + (x))
+#define A_FXBUS(x) (0x00 + (x))
+#define A_EXTOUT(x) (0x60 + (x))
+#define A_GPR(x) (EMU_A_FXGPREGBASE + (x))
+
+/* FX buses */
+#define FXBUS_PCM_LEFT 0x00
+#define FXBUS_PCM_RIGHT 0x01
+#define FXBUS_MIDI_LEFT 0x04
+#define FXBUS_MIDI_RIGHT 0x05
+#define FXBUS_MIDI_REVERB 0x0c
+#define FXBUS_MIDI_CHORUS 0x0d
+
+/* Inputs */
+#define EXTIN_AC97_L 0x00
+#define EXTIN_AC97_R 0x01
+#define EXTIN_SPDIF_CD_L 0x02
+#define EXTIN_SPDIF_CD_R 0x03
+#define EXTIN_TOSLINK_L 0x06
+#define EXTIN_TOSLINK_R 0x07
+#define EXTIN_COAX_SPDIF_L 0x0a
+#define EXTIN_COAX_SPDIF_R 0x0b
+/* Audigy Inputs */
+#define A_EXTIN_AC97_L 0x00
+#define A_EXTIN_AC97_R 0x01
+
+/* Outputs */
+#define EXTOUT_AC97_L 0x00
+#define EXTOUT_AC97_R 0x01
+#define EXTOUT_TOSLINK_L 0x02
+#define EXTOUT_TOSLINK_R 0x03
+#define EXTOUT_AC97_CENTER 0x04
+#define EXTOUT_AC97_LFE 0x05
+#define EXTOUT_HEADPHONE_L 0x06
+#define EXTOUT_HEADPHONE_R 0x07
+#define EXTOUT_REAR_L 0x08
+#define EXTOUT_REAR_R 0x09
+#define EXTOUT_ADC_CAP_L 0x0a
+#define EXTOUT_ADC_CAP_R 0x0b
+#define EXTOUT_ACENTER 0x11
+#define EXTOUT_ALFE 0x12
+/* Audigy Outputs */
+#define A_EXTOUT_FRONT_L 0x00
+#define A_EXTOUT_FRONT_R 0x01
+#define A_EXTOUT_CENTER 0x02
+#define A_EXTOUT_LFE 0x03
+#define A_EXTOUT_HEADPHONE_L 0x04
+#define A_EXTOUT_HEADPHONE_R 0x05
+#define A_EXTOUT_REAR_L 0x06
+#define A_EXTOUT_REAR_R 0x07
+#define A_EXTOUT_AFRONT_L 0x08
+#define A_EXTOUT_AFRONT_R 0x09
+#define A_EXTOUT_ACENTER 0x0a
+#define A_EXTOUT_ALFE 0x0b
+#define A_EXTOUT_AREAR_L 0x0e
+#define A_EXTOUT_AREAR_R 0x0f
+#define A_EXTOUT_AC97_L 0x10
+#define A_EXTOUT_AC97_R 0x11
+#define A_EXTOUT_ADC_CAP_L 0x16
+#define A_EXTOUT_ADC_CAP_R 0x17
struct emu_memblk {
SLIST_ENTRY(emu_memblk) link;
@@ -247,9 +329,9 @@ emu_rdptr(struct sc_info *sc, int chn, int reg)
{
u_int32_t ptr, val, mask, size, offset;
- ptr = ((reg << 16) & sc->addrmask) | (chn & PTR_CHANNELNUM_MASK);
- emu_wr(sc, PTR, ptr, 4);
- val = emu_rd(sc, DATA, 4);
+ ptr = ((reg << 16) & sc->addrmask) | (chn & EMU_PTR_CHNO_MASK);
+ emu_wr(sc, EMU_PTR, ptr, 4);
+ val = emu_rd(sc, EMU_DATA, 4);
if (reg & 0xff000000) {
size = (reg >> 24) & 0x3f;
offset = (reg >> 16) & 0x1f;
@@ -265,23 +347,23 @@ emu_wrptr(struct sc_info *sc, int chn, int reg, u_int32_t data)
{
u_int32_t ptr, mask, size, offset;
- ptr = ((reg << 16) & sc->addrmask) | (chn & PTR_CHANNELNUM_MASK);
- emu_wr(sc, PTR, ptr, 4);
+ ptr = ((reg << 16) & sc->addrmask) | (chn & EMU_PTR_CHNO_MASK);
+ emu_wr(sc, EMU_PTR, ptr, 4);
if (reg & 0xff000000) {
size = (reg >> 24) & 0x3f;
offset = (reg >> 16) & 0x1f;
mask = ((1 << size) - 1) << offset;
data <<= offset;
data &= mask;
- data |= emu_rd(sc, DATA, 4) & ~mask;
+ data |= emu_rd(sc, EMU_DATA, 4) & ~mask;
}
- emu_wr(sc, DATA, data, 4);
+ emu_wr(sc, EMU_DATA, data, 4);
}
static void
emu_wrefx(struct sc_info *sc, unsigned int pc, unsigned int data)
{
- pc += sc->audigy ? A_MICROCODEBASE : MICROCODEBASE;
+ pc += sc->audigy ? EMU_A_MICROCODEBASE : EMU_MICROCODEBASE;
emu_wrptr(sc, 0, pc, data);
}
@@ -294,8 +376,8 @@ emu_rdcd(kobj_t obj, void *devinfo, int regno)
{
struct sc_info *sc = (struct sc_info *)devinfo;
- emu_wr(sc, AC97ADDRESS, regno, 1);
- return emu_rd(sc, AC97DATA, 2);
+ emu_wr(sc, EMU_AC97ADDR, regno, 1);
+ return emu_rd(sc, EMU_AC97DATA, 2);
}
static int
@@ -303,8 +385,8 @@ emu_wrcd(kobj_t obj, void *devinfo, int regno, u_int32_t data)
{
struct sc_info *sc = (struct sc_info *)devinfo;
- emu_wr(sc, AC97ADDRESS, regno, 1);
- emu_wr(sc, AC97DATA, data, 2);
+ emu_wr(sc, EMU_AC97ADDR, regno, 1);
+ emu_wr(sc, EMU_AC97DATA, data, 2);
return 0;
}
@@ -346,7 +428,7 @@ emu_settimer(struct sc_info *sc)
}
RANGE(rate, 48, 9600);
sc->timerinterval = 48000 / rate;
- emu_wr(sc, TIMER, sc->timerinterval & 0x03ff, 2);
+ emu_wr(sc, EMU_TIMER, sc->timerinterval & 0x03ff, 2);
return sc->timerinterval;
}
@@ -357,15 +439,15 @@ emu_enatimer(struct sc_info *sc, int go)
u_int32_t x;
if (go) {
if (sc->timer++ == 0) {
- x = emu_rd(sc, INTE, 4);
- x |= INTE_INTERVALTIMERENB;
- emu_wr(sc, INTE, x, 4);
+ x = emu_rd(sc, EMU_INTE, 4);
+ x |= EMU_INTE_INTERTIMERENB;
+ emu_wr(sc, EMU_INTE, x, 4);
}
} else {
sc->timer = 0;
- x = emu_rd(sc, INTE, 4);
- x &= ~INTE_INTERVALTIMERENB;
- emu_wr(sc, INTE, x, 4);
+ x = emu_rd(sc, EMU_INTE, 4);
+ x &= ~EMU_INTE_INTERTIMERENB;
+ emu_wr(sc, EMU_INTE, x, 4);
}
return 0;
}
@@ -373,7 +455,7 @@ emu_enatimer(struct sc_info *sc, int go)
static void
emu_enastop(struct sc_info *sc, char channel, int enable)
{
- int reg = (channel & 0x20) ? SOLEH : SOLEL;
+ int reg = (channel & 0x20) ? EMU_SOLEH : EMU_SOLEL;
channel &= 0x1f;
reg |= 1 << 24;
reg |= channel << 16;
@@ -568,49 +650,49 @@ emu_vwrite(struct sc_info *sc, struct emu_voice *v)
r = v->ismaster ? 0 : r;
}
- emu_wrptr(sc, v->vnum, CPF, v->stereo ? CPF_STEREO_MASK : 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CPF, v->stereo ? EMU_CHAN_CPF_STEREO_MASK : 0);
val = v->stereo ? 28 : 30;
val *= v->b16 ? 1 : 2;
start = sa + val;
if (sc->audigy) {
- emu_wrptr(sc, v->vnum, A_FXRT1, v->fxrt1);
- emu_wrptr(sc, v->vnum, A_FXRT2, v->fxrt2);
- emu_wrptr(sc, v->vnum, A_SENDAMOUNTS, 0);
+ emu_wrptr(sc, v->vnum, EMU_A_CHAN_FXRT1, v->fxrt1);
+ emu_wrptr(sc, v->vnum, EMU_A_CHAN_FXRT2, v->fxrt2);
+ emu_wrptr(sc, v->vnum, EMU_A_CHAN_SENDAMOUNTS, 0);
}
else
- emu_wrptr(sc, v->vnum, FXRT, v->fxrt1 << 16);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_FXRT, v->fxrt1 << 16);
- emu_wrptr(sc, v->vnum, PTRX, (x << 8) | r);
- emu_wrptr(sc, v->vnum, DSL, ea | (y << 24));
- emu_wrptr(sc, v->vnum, PSST, sa | (l << 24));
- emu_wrptr(sc, v->vnum, CCCA, start | (v->b16 ? 0 : CCCA_8BITSELECT));
+ emu_wrptr(sc, v->vnum, EMU_CHAN_PTRX, (x << 8) | r);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_DSL, ea | (y << 24));
+ emu_wrptr(sc, v->vnum, EMU_CHAN_PSST, sa | (l << 24));
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CCCA, start | (v->b16 ? 0 : EMU_CHAN_CCCA_8BITSELECT));
- emu_wrptr(sc, v->vnum, Z1, 0);
- emu_wrptr(sc, v->vnum, Z2, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_Z1, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_Z2, 0);
silent_page = ((u_int32_t)(sc->mem.silent_page_addr) << 1)
- | MAP_PTI_MASK;
- emu_wrptr(sc, v->vnum, MAPA, silent_page);
- emu_wrptr(sc, v->vnum, MAPB, silent_page);
-
- emu_wrptr(sc, v->vnum, CVCF, CVCF_CURRENTFILTER_MASK);
- emu_wrptr(sc, v->vnum, VTFT, VTFT_FILTERTARGET_MASK);
- emu_wrptr(sc, v->vnum, ATKHLDM, 0);
- emu_wrptr(sc, v->vnum, DCYSUSM, DCYSUSM_DECAYTIME_MASK);
- emu_wrptr(sc, v->vnum, LFOVAL1, 0x8000);
- emu_wrptr(sc, v->vnum, LFOVAL2, 0x8000);
- emu_wrptr(sc, v->vnum, FMMOD, 0);
- emu_wrptr(sc, v->vnum, TREMFRQ, 0);
- emu_wrptr(sc, v->vnum, FM2FRQ2, 0);
- emu_wrptr(sc, v->vnum, ENVVAL, 0x8000);
-
- emu_wrptr(sc, v->vnum, ATKHLDV,
- ATKHLDV_HOLDTIME_MASK | ATKHLDV_ATTACKTIME_MASK);
- emu_wrptr(sc, v->vnum, ENVVOL, 0x8000);
-
- emu_wrptr(sc, v->vnum, PEFE_FILTERAMOUNT, 0x7f);
- emu_wrptr(sc, v->vnum, PEFE_PITCHAMOUNT, 0);
+ | EMU_CHAN_MAP_PTI_MASK;
+ emu_wrptr(sc, v->vnum, EMU_CHAN_MAPA, silent_page);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_MAPB, silent_page);
+
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CVCF, EMU_CHAN_CVCF_CURRFILTER_MASK);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_VTFT, EMU_CHAN_VTFT_FILTERTARGET_MASK);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_ATKHLDM, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_DCYSUSM, EMU_CHAN_DCYSUSM_DECAYTIME_MASK);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_LFOVAL1, 0x8000);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_LFOVAL2, 0x8000);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_FMMOD, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_TREMFRQ, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_FM2FRQ2, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_ENVVAL, 0x8000);
+
+ emu_wrptr(sc, v->vnum, EMU_CHAN_ATKHLDV,
+ EMU_CHAN_ATKHLDV_HOLDTIME_MASK | EMU_CHAN_ATKHLDV_ATTACKTIME_MASK);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_ENVVOL, 0x8000);
+
+ emu_wrptr(sc, v->vnum, EMU_CHAN_PEFE_FILTERAMOUNT, 0x7f);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_PEFE_PITCHAMOUNT, 0);
if (v->slave != NULL)
emu_vwrite(sc, v->slave);
@@ -631,29 +713,29 @@ emu_vtrigger(struct sc_info *sc, struct emu_voice *v, int go)
sample = v->b16 ? 0x00000000 : 0x80808080;
for (i = 0; i < cs; i++)
- emu_wrptr(sc, v->vnum, CD0 + i, sample);
- emu_wrptr(sc, v->vnum, CCR_CACHEINVALIDSIZE, 0);
- emu_wrptr(sc, v->vnum, CCR_READADDRESS, cra);
- emu_wrptr(sc, v->vnum, CCR_CACHEINVALIDSIZE, ccis);
-
- emu_wrptr(sc, v->vnum, IFATN, 0xff00);
- emu_wrptr(sc, v->vnum, VTFT, 0xffffffff);
- emu_wrptr(sc, v->vnum, CVCF, 0xffffffff);
- emu_wrptr(sc, v->vnum, DCYSUSV, 0x00007f7f);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CD0 + i, sample);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CCR_CACHEINVALIDSIZE, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CCR_READADDRESS, cra);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CCR_CACHEINVALIDSIZE, ccis);
+
+ emu_wrptr(sc, v->vnum, EMU_CHAN_IFATN, 0xff00);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_VTFT, 0xffffffff);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CVCF, 0xffffffff);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_DCYSUSV, 0x00007f7f);
emu_enastop(sc, v->vnum, 0);
pitch_target = emu_rate_to_linearpitch(v->speed);
initial_pitch = emu_rate_to_pitch(v->speed) >> 8;
- emu_wrptr(sc, v->vnum, PTRX_PITCHTARGET, pitch_target);
- emu_wrptr(sc, v->vnum, CPF_CURRENTPITCH, pitch_target);
- emu_wrptr(sc, v->vnum, IP, initial_pitch);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_PTRX_PITCHTARGET, pitch_target);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CPF_PITCH, pitch_target);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_IP, initial_pitch);
} else {
- emu_wrptr(sc, v->vnum, PTRX_PITCHTARGET, 0);
- emu_wrptr(sc, v->vnum, CPF_CURRENTPITCH, 0);
- emu_wrptr(sc, v->vnum, IFATN, 0xffff);
- emu_wrptr(sc, v->vnum, VTFT, 0x0000ffff);
- emu_wrptr(sc, v->vnum, CVCF, 0x0000ffff);
- emu_wrptr(sc, v->vnum, IP, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_PTRX_PITCHTARGET, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CPF_PITCH, 0);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_IFATN, 0xffff);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_VTFT, 0x0000ffff);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_CVCF, 0x0000ffff);
+ emu_wrptr(sc, v->vnum, EMU_CHAN_IP, 0);
emu_enastop(sc, v->vnum, 1);
}
if (v->slave != NULL)
@@ -666,7 +748,7 @@ emu_vpos(struct sc_info *sc, struct emu_voice *v)
int s, ptr;
s = (v->b16 ? 1 : 0) + (v->stereo ? 1 : 0);
- ptr = (emu_rdptr(sc, v->vnum, CCCA_CURRADDR) - (v->start >> s)) << s;
+ ptr = (emu_rdptr(sc, v->vnum, EMU_CHAN_CCCA_CURRADDR) - (v->start >> s)) << s;
return ptr & ~0x0000001f;
}
@@ -875,27 +957,27 @@ emurchan_init(kobj_t obj, void *devinfo, struct snd_dbuf *b,
ch->num = sc->rnum;
switch(sc->rnum) {
case 0:
- ch->idxreg = sc->audigy ? A_ADCIDX : ADCIDX;
- ch->basereg = ADCBA;
- ch->sizereg = ADCBS;
- ch->setupreg = ADCCR;
- ch->irqmask = INTE_ADCBUFENABLE;
+ ch->idxreg = sc->audigy ? EMU_A_ADCIDX : EMU_ADCIDX;
+ ch->basereg = EMU_ADCBA;
+ ch->sizereg = EMU_ADCBS;
+ ch->setupreg = EMU_ADCCR;
+ ch->irqmask = EMU_INTE_ADCBUFENABLE;
break;
case 1:
- ch->idxreg = FXIDX;
- ch->basereg = FXBA;
- ch->sizereg = FXBS;
- ch->setupreg = FXWC;
- ch->irqmask = INTE_EFXBUFENABLE;
+ ch->idxreg = EMU_FXIDX;
+ ch->basereg = EMU_FXBA;
+ ch->sizereg = EMU_FXBS;
+ ch->setupreg = EMU_FXWC;
+ ch->irqmask = EMU_INTE_EFXBUFENABLE;
break;
case 2:
- ch->idxreg = MICIDX;
- ch->basereg = MICBA;
- ch->sizereg = MICBS;
+ ch->idxreg = EMU_MICIDX;
+ ch->basereg = EMU_MICBA;
+ ch->sizereg = EMU_MICBS;
ch->setupreg = 0;
- ch->irqmask = INTE_MICBUFENABLE;
+ ch->irqmask = EMU_INTE_MICBUFENABLE;
break;
}
sc->rnum++;
@@ -967,27 +1049,27 @@ emurchan_trigger(kobj_t obj, void *data, int go)
switch(sc->bufsz) {
case 4096:
- sz = ADCBS_BUFSIZE_4096;
+ sz = EMU_RECBS_BUFSIZE_4096;
break;
case 8192:
- sz = ADCBS_BUFSIZE_8192;
+ sz = EMU_RECBS_BUFSIZE_8192;
break;
case 16384:
- sz = ADCBS_BUFSIZE_16384;
+ sz = EMU_RECBS_BUFSIZE_16384;
break;
case 32768:
- sz = ADCBS_BUFSIZE_32768;
+ sz = EMU_RECBS_BUFSIZE_32768;
break;
case 65536:
- sz = ADCBS_BUFSIZE_65536;
+ sz = EMU_RECBS_BUFSIZE_65536;
break;
default:
- sz = ADCBS_BUFSIZE_4096;
+ sz = EMU_RECBS_BUFSIZE_4096;
}
snd_mtxlock(sc->lock);
@@ -997,23 +1079,23 @@ emurchan_trigger(kobj_t obj, void *data, int go)
emu_wrptr(sc, 0, ch->sizereg, sz);
if (ch->num == 0) {
if (sc->audigy) {
- val = A_ADCCR_LCHANENABLE;
+ val = EMU_ADCCR_LCHANENABLE;
if (AFMT_CHANNEL(ch->fmt) > 1)
- val |= A_ADCCR_RCHANENABLE;
+ val |= EMU_ADCCR_RCHANENABLE;
val |= audigy_recval(ch->spd);
} else {
- val = ADCCR_LCHANENABLE;
+ val = EMU_ADCCR_LCHANENABLE;
if (AFMT_CHANNEL(ch->fmt) > 1)
- val |= ADCCR_RCHANENABLE;
+ val |= EMU_ADCCR_RCHANENABLE;
val |= emu_recval(ch->spd);
}
emu_wrptr(sc, 0, ch->setupreg, 0);
emu_wrptr(sc, 0, ch->setupreg, val);
}
- val = emu_rd(sc, INTE, 4);
+ val = emu_rd(sc, EMU_INTE, 4);
val |= ch->irqmask;
- emu_wr(sc, INTE, val, 4);
+ emu_wr(sc, EMU_INTE, val, 4);
break;
case PCMTRIG_STOP:
@@ -1022,9 +1104,9 @@ emurchan_trigger(kobj_t obj, void *data, int go)
emu_wrptr(sc, 0, ch->sizereg, 0);
if (ch->setupreg)
emu_wrptr(sc, 0, ch->setupreg, 0);
- val = emu_rd(sc, INTE, 4);
+ val = emu_rd(sc, EMU_INTE, 4);
val &= ~ch->irqmask;
- emu_wr(sc, INTE, val, 4);
+ emu_wr(sc, EMU_INTE, val, 4);
break;
case PCMTRIG_EMLDMAWR:
@@ -1122,9 +1204,9 @@ emu_midiattach(struct sc_info *sc)
{
int i;
- i = emu_rd(sc, INTE, 4);
- i |= INTE_MIDIRXENABLE;
- emu_wr(sc, INTE, i, 4);
+ i = emu_rd(sc, EMU_INTE, 4);
+ i |= EMU_INTE_MIDIRXENABLE;
+ emu_wr(sc, EMU_INTE, i, 4);
sc->mpu = mpu401_init(&emu_mpu_class, sc, emu_intr2, &sc->mpu_intr);
}
@@ -1139,52 +1221,52 @@ emu_intr(void *data)
snd_mtxlock(sc->lock);
while (1) {
- stat = emu_rd(sc, IPR, 4);
+ stat = emu_rd(sc, EMU_IPR, 4);
if (stat == 0)
break;
ack = 0;
/* process irq */
- if (stat & IPR_INTERVALTIMER)
- ack |= IPR_INTERVALTIMER;
+ if (stat & EMU_IPR_INTERVALTIMER)
+ ack |= EMU_IPR_INTERVALTIMER;
- if (stat & (IPR_ADCBUFFULL | IPR_ADCBUFHALFFULL))
- ack |= stat & (IPR_ADCBUFFULL | IPR_ADCBUFHALFFULL);
+ if (stat & (EMU_IPR_ADCBUFFULL | EMU_IPR_ADCBUFHALFFULL))
+ ack |= stat & (EMU_IPR_ADCBUFFULL | EMU_IPR_ADCBUFHALFFULL);
- if (stat & (IPR_EFXBUFFULL | IPR_EFXBUFHALFFULL))
- ack |= stat & (IPR_EFXBUFFULL | IPR_EFXBUFHALFFULL);
+ if (stat & (EMU_IPR_EFXBUFFULL | EMU_IPR_EFXBUFHALFFULL))
+ ack |= stat & (EMU_IPR_EFXBUFFULL | EMU_IPR_EFXBUFHALFFULL);
- if (stat & (IPR_MICBUFFULL | IPR_MICBUFHALFFULL))
- ack |= stat & (IPR_MICBUFFULL | IPR_MICBUFHALFFULL);
+ if (stat & (EMU_IPR_MICBUFFULL | EMU_IPR_MICBUFHALFFULL))
+ ack |= stat & (EMU_IPR_MICBUFFULL | EMU_IPR_MICBUFHALFFULL);
- if (stat & IPR_PCIERROR) {
- ack |= IPR_PCIERROR;
+ if (stat & EMU_PCIERROR) {
+ ack |= EMU_PCIERROR;
device_printf(sc->dev, "pci error\n");
/* we still get an nmi with ecc ram even if we ack this */
}
- if (stat & IPR_SAMPLERATETRACKER) {
- ack |= IPR_SAMPLERATETRACKER;
+ if (stat & EMU_IPR_RATETRCHANGE) {
+ ack |= EMU_IPR_RATETRCHANGE;
#ifdef EMUDEBUG
device_printf(sc->dev,
"sample rate tracker lock status change\n");
#endif
}
- if (stat & IPR_MIDIRECVBUFEMPTY)
+ if (stat & EMU_IPR_MIDIRECVBUFE)
if (sc->mpu_intr) {
(sc->mpu_intr)(sc->mpu);
- ack |= IPR_MIDIRECVBUFEMPTY | IPR_MIDITRANSBUFEMPTY;
+ ack |= EMU_IPR_MIDIRECVBUFE | EMU_IPR_MIDITRANSBUFE;
}
if (stat & ~ack)
device_printf(sc->dev, "dodgy irq: %x (harmless)\n",
stat & ~ack);
- emu_wr(sc, IPR, stat, 4);
+ emu_wr(sc, EMU_IPR, stat, 4);
if (ack) {
snd_mtxunlock(sc->lock);
- if (ack & IPR_INTERVALTIMER) {
+ if (ack & EMU_IPR_INTERVALTIMER) {
x = 0;
for (i = 0; i < sc->nchans; i++) {
if (sc->pch[i].run) {
@@ -1197,15 +1279,15 @@ emu_intr(void *data)
}
- if (ack & (IPR_ADCBUFFULL | IPR_ADCBUFHALFFULL)) {
+ if (ack & (EMU_IPR_ADCBUFFULL | EMU_IPR_ADCBUFHALFFULL)) {
if (sc->rch[0].channel)
chn_intr(sc->rch[0].channel);
}
- if (ack & (IPR_EFXBUFFULL | IPR_EFXBUFHALFFULL)) {
+ if (ack & (EMU_IPR_EFXBUFFULL | EMU_IPR_EFXBUFHALFFULL)) {
if (sc->rch[1].channel)
chn_intr(sc->rch[1].channel);
}
- if (ack & (IPR_MICBUFFULL | IPR_MICBUFHALFFULL)) {
+ if (ack & (EMU_IPR_MICBUFFULL | EMU_IPR_MICBUFHALFFULL)) {
if (sc->rch[2].channel)
chn_intr(sc->rch[2].channel);
}
@@ -1378,12 +1460,12 @@ audigy_initefx(struct sc_info *sc)
audigy_addefxop(sc, 0x0f, 0x0c0, 0x0c0, 0x0cf, 0x0c0, &pc);
for (i = 0; i < 512; i++)
- emu_wrptr(sc, 0, A_FXGPREGBASE + i, 0x0);
+ emu_wrptr(sc, 0, EMU_A_FXGPREGBASE + i, 0x0);
pc = 16;
/* stop fx processor */
- emu_wrptr(sc, 0, A_DBG, A_DBG_SINGLE_STEP);
+ emu_wrptr(sc, 0, EMU_A_DBG, EMU_A_DBG_SINGLE_STEP);
/* Audigy 2 (EMU10K2) DSP Registers:
FX Bus
@@ -1518,7 +1600,7 @@ audigy_initefx(struct sc_info *sc)
A_C_00000000, A_EXTIN(A_EXTIN_AC97_R), &pc);
/* resume normal operations */
- emu_wrptr(sc, 0, A_DBG, 0);
+ emu_wrptr(sc, 0, EMU_A_DBG, 0);
}
static void
@@ -1534,7 +1616,7 @@ emu_initefx(struct sc_info *sc)
}
for (i = 0; i < 256; i++)
- emu_wrptr(sc, 0, FXGPREGBASE + i, 0);
+ emu_wrptr(sc, 0, EMU_FXGPREGBASE + i, 0);
/* FX-8010 DSP Registers:
FX Bus
@@ -1654,7 +1736,7 @@ emu_initefx(struct sc_info *sc)
C_00000000, EXTIN(EXTIN_AC97_R), &pc);
/* resume normal operations */
- emu_wrptr(sc, 0, DBG, 0);
+ emu_wrptr(sc, 0, EMU_DBG, 0);
}
/* Probe and attach the card */
@@ -1665,69 +1747,69 @@ emu_init(struct sc_info *sc)
if (sc->audigy) {
/* enable additional AC97 slots */
- emu_wrptr(sc, 0, AC97SLOT, AC97SLOT_CNTR | AC97SLOT_LFE);
+ emu_wrptr(sc, 0, EMU_AC97SLOT, EMU_AC97SLOT_CENTER | EMU_AC97SLOT_LFE);
}
/* disable audio and lock cache */
- emu_wr(sc, HCFG,
- HCFG_LOCKSOUNDCACHE | HCFG_LOCKTANKCACHE_MASK | HCFG_MUTEBUTTONENABLE,
+ emu_wr(sc, EMU_HCFG,
+ EMU_HCFG_LOCKSOUNDCACHE | EMU_HCFG_LOCKTANKCACHE_MASK | EMU_HCFG_MUTEBUTTONENABLE,
4);
/* reset recording buffers */
- emu_wrptr(sc, 0, MICBS, ADCBS_BUFSIZE_NONE);
- emu_wrptr(sc, 0, MICBA, 0);
- emu_wrptr(sc, 0, FXBS, ADCBS_BUFSIZE_NONE);
- emu_wrptr(sc, 0, FXBA, 0);
- emu_wrptr(sc, 0, ADCBS, ADCBS_BUFSIZE_NONE);
- emu_wrptr(sc, 0, ADCBA, 0);
+ emu_wrptr(sc, 0, EMU_MICBS, EMU_RECBS_BUFSIZE_NONE);
+ emu_wrptr(sc, 0, EMU_MICBA, 0);
+ emu_wrptr(sc, 0, EMU_FXBS, EMU_RECBS_BUFSIZE_NONE);
+ emu_wrptr(sc, 0, EMU_FXBA, 0);
+ emu_wrptr(sc, 0, EMU_ADCBS, EMU_RECBS_BUFSIZE_NONE);
+ emu_wrptr(sc, 0, EMU_ADCBA, 0);
/* disable channel interrupt */
- emu_wr(sc, INTE,
- INTE_INTERVALTIMERENB | INTE_SAMPLERATETRACKER | INTE_PCIERRORENABLE,
+ emu_wr(sc, EMU_INTE,
+ EMU_INTE_INTERTIMERENB | EMU_INTE_SAMPLERATER | EMU_INTE_PCIERRENABLE,
4);
- emu_wrptr(sc, 0, CLIEL, 0);
- emu_wrptr(sc, 0, CLIEH, 0);
- emu_wrptr(sc, 0, SOLEL, 0);
- emu_wrptr(sc, 0, SOLEH, 0);
+ emu_wrptr(sc, 0, EMU_CLIEL, 0);
+ emu_wrptr(sc, 0, EMU_CLIEH, 0);
+ emu_wrptr(sc, 0, EMU_SOLEL, 0);
+ emu_wrptr(sc, 0, EMU_SOLEH, 0);
/* wonder what these do... */
if (sc->audigy) {
- emu_wrptr(sc, 0, SPBYPASS, 0xf00);
- emu_wrptr(sc, 0, AC97SLOT, 0x3);
+ emu_wrptr(sc, 0, EMU_SPBYPASS, 0xf00);
+ emu_wrptr(sc, 0, EMU_AC97SLOT, 0x3);
}
/* init envelope engine */
for (ch = 0; ch < NUM_G; ch++) {
- emu_wrptr(sc, ch, DCYSUSV, ENV_OFF);
- emu_wrptr(sc, ch, IP, 0);
- emu_wrptr(sc, ch, VTFT, 0xffff);
- emu_wrptr(sc, ch, CVCF, 0xffff);
- emu_wrptr(sc, ch, PTRX, 0);
- emu_wrptr(sc, ch, CPF, 0);
- emu_wrptr(sc, ch, CCR, 0);
-
- emu_wrptr(sc, ch, PSST, 0);
- emu_wrptr(sc, ch, DSL, 0x10);
- emu_wrptr(sc, ch, CCCA, 0);
- emu_wrptr(sc, ch, Z1, 0);
- emu_wrptr(sc, ch, Z2, 0);
- emu_wrptr(sc, ch, FXRT, 0xd01c0000);
-
- emu_wrptr(sc, ch, ATKHLDM, 0);
- emu_wrptr(sc, ch, DCYSUSM, 0);
- emu_wrptr(sc, ch, IFATN, 0xffff);
- emu_wrptr(sc, ch, PEFE, 0);
- emu_wrptr(sc, ch, FMMOD, 0);
- emu_wrptr(sc, ch, TREMFRQ, 24); /* 1 Hz */
- emu_wrptr(sc, ch, FM2FRQ2, 24); /* 1 Hz */
- emu_wrptr(sc, ch, TEMPENV, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_DCYSUSV, ENV_OFF);
+ emu_wrptr(sc, ch, EMU_CHAN_IP, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_VTFT, 0xffff);
+ emu_wrptr(sc, ch, EMU_CHAN_CVCF, 0xffff);
+ emu_wrptr(sc, ch, EMU_CHAN_PTRX, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_CPF, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_CCR, 0);
+
+ emu_wrptr(sc, ch, EMU_CHAN_PSST, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_DSL, 0x10);
+ emu_wrptr(sc, ch, EMU_CHAN_CCCA, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_Z1, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_Z2, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_FXRT, 0xd01c0000);
+
+ emu_wrptr(sc, ch, EMU_CHAN_ATKHLDM, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_DCYSUSM, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_IFATN, 0xffff);
+ emu_wrptr(sc, ch, EMU_CHAN_PEFE, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_FMMOD, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_TREMFRQ, 24); /* 1 Hz */
+ emu_wrptr(sc, ch, EMU_CHAN_FM2FRQ2, 24); /* 1 Hz */
+ emu_wrptr(sc, ch, EMU_CHAN_TEMPENV, 0);
/*** these are last so OFF prevents writing ***/
- emu_wrptr(sc, ch, LFOVAL2, 0);
- emu_wrptr(sc, ch, LFOVAL1, 0);
- emu_wrptr(sc, ch, ATKHLDV, 0);
- emu_wrptr(sc, ch, ENVVOL, 0);
- emu_wrptr(sc, ch, ENVVAL, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_LFOVAL2, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_LFOVAL1, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_ATKHLDV, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_ENVVOL, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_ENVVAL, 0);
if (sc->audigy) {
/* audigy cards need this to initialize correctly */
@@ -1736,9 +1818,9 @@ emu_init(struct sc_info *sc)
emu_wrptr(sc, ch, 0x4e, 0);
emu_wrptr(sc, ch, 0x4f, 0);
/* set default routing */
- emu_wrptr(sc, ch, A_FXRT1, 0x03020100);
- emu_wrptr(sc, ch, A_FXRT2, 0x3f3f3f3f);
- emu_wrptr(sc, ch, A_SENDAMOUNTS, 0);
+ emu_wrptr(sc, ch, EMU_A_CHAN_FXRT1, 0x03020100);
+ emu_wrptr(sc, ch, EMU_A_CHAN_FXRT2, 0x3f3f3f3f);
+ emu_wrptr(sc, ch, EMU_A_CHAN_SENDAMOUNTS, 0);
}
sc->voice[ch].vnum = ch;
@@ -1769,13 +1851,13 @@ emu_init(struct sc_info *sc)
* AN = 0 (Audio data)
* P = 0 (Consumer)
*/
- spcs = SPCS_CLKACCY_1000PPM | SPCS_SAMPLERATE_48 |
- SPCS_CHANNELNUM_LEFT | SPCS_SOURCENUM_UNSPEC |
- SPCS_GENERATIONSTATUS | 0x00001200 | 0x00000000 |
- SPCS_EMPHASIS_NONE | SPCS_COPYRIGHT;
- emu_wrptr(sc, 0, SPCS0, spcs);
- emu_wrptr(sc, 0, SPCS1, spcs);
- emu_wrptr(sc, 0, SPCS2, spcs);
+ spcs = EMU_SPCS_CLKACCY_1000PPM | EMU_SPCS_SAMPLERATE_48 |
+ EMU_SPCS_CHANNELNUM_LEFT | EMU_SPCS_SOURCENUM_UNSPEC |
+ EMU_SPCS_GENERATIONSTATUS | 0x00001200 | 0x00000000 |
+ EMU_SPCS_EMPHASIS_NONE | EMU_SPCS_COPYRIGHT;
+ emu_wrptr(sc, 0, EMU_SPCS0, spcs);
+ emu_wrptr(sc, 0, EMU_SPCS1, spcs);
+ emu_wrptr(sc, 0, EMU_SPCS2, spcs);
if (!sc->audigy)
emu_initefx(sc);
@@ -1786,8 +1868,8 @@ emu_init(struct sc_info *sc)
u_int32_t tmp;
/* Setup SRCMulti_I2S SamplingRate */
- tmp = emu_rdptr(sc, 0, A_SPDIF_SAMPLERATE) & 0xfffff1ff;
- emu_wrptr(sc, 0, A_SPDIF_SAMPLERATE, tmp | 0x400);
+ tmp = emu_rdptr(sc, 0, EMU_A_SPDIF_SAMPLERATE) & 0xfffff1ff;
+ emu_wrptr(sc, 0, EMU_A_SPDIF_SAMPLERATE, tmp | 0x400);
/* Setup SRCSel (Enable SPDIF, I2S SRCMulti) */
emu_wr(sc, 0x20, 0x00600000, 4);
@@ -1816,13 +1898,13 @@ emu_init(struct sc_info *sc)
for (i = 0; i < EMUMAXPAGES; i++)
sc->mem.ptb_pages[i] = tmp | i;
- emu_wrptr(sc, 0, PTB, (sc->mem.ptb_pages_addr));
- emu_wrptr(sc, 0, TCB, 0); /* taken from original driver */
- emu_wrptr(sc, 0, TCBS, 0); /* taken from original driver */
+ emu_wrptr(sc, 0, EMU_PTB, (sc->mem.ptb_pages_addr));
+ emu_wrptr(sc, 0, EMU_TCB, 0); /* taken from original driver */
+ emu_wrptr(sc, 0, EMU_TCBS, 0); /* taken from original driver */
for (ch = 0; ch < NUM_G; ch++) {
- emu_wrptr(sc, ch, MAPA, tmp | MAP_PTI_MASK);
- emu_wrptr(sc, ch, MAPB, tmp | MAP_PTI_MASK);
+ emu_wrptr(sc, ch, EMU_CHAN_MAPA, tmp | EMU_CHAN_MAP_PTI_MASK);
+ emu_wrptr(sc, ch, EMU_CHAN_MAPB, tmp | EMU_CHAN_MAP_PTI_MASK);
}
/* emu_memalloc(sc, EMUPAGESIZE); */
@@ -1850,19 +1932,19 @@ emu_init(struct sc_info *sc)
*/
if (sc->audigy) {
- tmp = HCFG_AUTOMUTE | HCFG_JOYENABLE;
+ tmp = EMU_HCFG_AUTOMUTE | EMU_HCFG_JOYENABLE;
if (sc->audigy2) /* Audigy 2 */
- tmp = HCFG_AUDIOENABLE | HCFG_AC3ENABLE_CDSPDIF |
- HCFG_AC3ENABLE_GPSPDIF;
- emu_wr(sc, HCFG, tmp, 4);
+ tmp = EMU_HCFG_AUDIOENABLE | EMU_HCFG_AC3ENABLE_CDSPDIF |
+ EMU_HCFG_AC3ENABLE_GPSPDIF;
+ emu_wr(sc, EMU_HCFG, tmp, 4);
audigy_initefx(sc);
/* from ALSA initialization code: */
/* enable audio and disable both audio/digital outputs */
- emu_wr(sc, HCFG, emu_rd(sc, HCFG, 4) | HCFG_AUDIOENABLE, 4);
- emu_wr(sc, A_IOCFG, emu_rd(sc, A_IOCFG, 4) & ~A_IOCFG_GPOUT_AD,
+ emu_wr(sc, EMU_HCFG, emu_rd(sc, EMU_HCFG, 4) | EMU_HCFG_AUDIOENABLE, 4);
+ emu_wr(sc, EMU_A_IOCFG, emu_rd(sc, EMU_A_IOCFG, 4) & ~EMU_A_IOCFG_GPOUT_AD,
4);
if (sc->audigy2) { /* Audigy 2 */
/* Unmute Analog.
@@ -1870,27 +1952,27 @@ emu_init(struct sc_info *sc)
* init Alice3 I2SOut beyond 48kHz.
* So, sequence is important.
*/
- emu_wr(sc, A_IOCFG,
- emu_rd(sc, A_IOCFG, 4) | A_IOCFG_GPOUT_A, 4);
+ emu_wr(sc, EMU_A_IOCFG,
+ emu_rd(sc, EMU_A_IOCFG, 4) | EMU_A_IOCFG_GPOUT_A, 4);
}
} else {
/* EMU10K1 initialization code */
- tmp = HCFG_AUDIOENABLE | HCFG_LOCKTANKCACHE_MASK
- | HCFG_AUTOMUTE;
+ tmp = EMU_HCFG_AUDIOENABLE | EMU_HCFG_LOCKTANKCACHE_MASK
+ | EMU_HCFG_AUTOMUTE;
if (sc->rev >= 6)
- tmp |= HCFG_JOYENABLE;
+ tmp |= EMU_HCFG_JOYENABLE;
- emu_wr(sc, HCFG, tmp, 4);
+ emu_wr(sc, EMU_HCFG, tmp, 4);
/* TOSLink detection */
sc->tos_link = 0;
- tmp = emu_rd(sc, HCFG, 4);
- if (tmp & (HCFG_GPINPUT0 | HCFG_GPINPUT1)) {
- emu_wr(sc, HCFG, tmp | HCFG_GPOUT1, 4);
+ tmp = emu_rd(sc, EMU_HCFG, 4);
+ if (tmp & (EMU_HCFG_GPINPUT0 | EMU_HCFG_GPINPUT1)) {
+ emu_wr(sc, EMU_HCFG, tmp | EMU_HCFG_GPOUT1, 4);
DELAY(50);
- if (tmp != (emu_rd(sc, HCFG, 4) & ~HCFG_GPOUT1)) {
+ if (tmp != (emu_rd(sc, EMU_HCFG, 4) & ~EMU_HCFG_GPOUT1)) {
sc->tos_link = 1;
- emu_wr(sc, HCFG, tmp, 4);
+ emu_wr(sc, EMU_HCFG, tmp, 4);
}
}
}
@@ -1903,42 +1985,42 @@ emu_uninit(struct sc_info *sc)
{
u_int32_t ch;
- emu_wr(sc, INTE, 0, 4);
+ emu_wr(sc, EMU_INTE, 0, 4);
for (ch = 0; ch < NUM_G; ch++)
- emu_wrptr(sc, ch, DCYSUSV, ENV_OFF);
+ emu_wrptr(sc, ch, EMU_CHAN_DCYSUSV, ENV_OFF);
for (ch = 0; ch < NUM_G; ch++) {
- emu_wrptr(sc, ch, VTFT, 0);
- emu_wrptr(sc, ch, CVCF, 0);
- emu_wrptr(sc, ch, PTRX, 0);
- emu_wrptr(sc, ch, CPF, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_VTFT, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_CVCF, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_PTRX, 0);
+ emu_wrptr(sc, ch, EMU_CHAN_CPF, 0);
}
if (sc->audigy) { /* stop fx processor */
- emu_wrptr(sc, 0, A_DBG, A_DBG_SINGLE_STEP);
+ emu_wrptr(sc, 0, EMU_A_DBG, EMU_A_DBG_SINGLE_STEP);
}
/* disable audio and lock cache */
- emu_wr(sc, HCFG,
- HCFG_LOCKSOUNDCACHE | HCFG_LOCKTANKCACHE_MASK | HCFG_MUTEBUTTONENABLE,
+ emu_wr(sc, EMU_HCFG,
+ EMU_HCFG_LOCKSOUNDCACHE | EMU_HCFG_LOCKTANKCACHE_MASK | EMU_HCFG_MUTEBUTTONENABLE,
4);
- emu_wrptr(sc, 0, PTB, 0);
+ emu_wrptr(sc, 0, EMU_PTB, 0);
/* reset recording buffers */
- emu_wrptr(sc, 0, MICBS, ADCBS_BUFSIZE_NONE);
- emu_wrptr(sc, 0, MICBA, 0);
- emu_wrptr(sc, 0, FXBS, ADCBS_BUFSIZE_NONE);
- emu_wrptr(sc, 0, FXBA, 0);
- emu_wrptr(sc, 0, FXWC, 0);
- emu_wrptr(sc, 0, ADCBS, ADCBS_BUFSIZE_NONE);
- emu_wrptr(sc, 0, ADCBA, 0);
- emu_wrptr(sc, 0, TCB, 0);
- emu_wrptr(sc, 0, TCBS, 0);
+ emu_wrptr(sc, 0, EMU_MICBS, EMU_RECBS_BUFSIZE_NONE);
+ emu_wrptr(sc, 0, EMU_MICBA, 0);
+ emu_wrptr(sc, 0, EMU_FXBS, EMU_RECBS_BUFSIZE_NONE);
+ emu_wrptr(sc, 0, EMU_FXBA, 0);
+ emu_wrptr(sc, 0, EMU_FXWC, 0);
+ emu_wrptr(sc, 0, EMU_ADCBS, EMU_RECBS_BUFSIZE_NONE);
+ emu_wrptr(sc, 0, EMU_ADCBA, 0);
+ emu_wrptr(sc, 0, EMU_TCB, 0);
+ emu_wrptr(sc, 0, EMU_TCBS, 0);
/* disable channel interrupt */
- emu_wrptr(sc, 0, CLIEL, 0);
- emu_wrptr(sc, 0, CLIEH, 0);
- emu_wrptr(sc, 0, SOLEL, 0);
- emu_wrptr(sc, 0, SOLEH, 0);
+ emu_wrptr(sc, 0, EMU_CLIEL, 0);
+ emu_wrptr(sc, 0, EMU_CLIEH, 0);
+ emu_wrptr(sc, 0, EMU_SOLEL, 0);
+ emu_wrptr(sc, 0, EMU_SOLEH, 0);
/* init envelope engine */
if (!SLIST_EMPTY(&sc->mem.blocks))
@@ -1997,7 +2079,7 @@ emu_pci_attach(device_t dev)
sc->audigy = sc->type == EMU10K2_PCI_ID || sc->type == EMU10K3_PCI_ID;
sc->audigy2 = (sc->audigy && sc->rev == 0x04);
sc->nchans = sc->audigy ? 8 : 4;
- sc->addrmask = sc->audigy ? A_PTR_ADDRESS_MASK : PTR_ADDRESS_MASK;
+ sc->addrmask = sc->audigy ? EMU_A_PTR_ADDR_MASK : EMU_PTR_ADDR_MASK;
data = pci_read_config(dev, PCIR_COMMAND, 2);
data |= (PCIM_CMD_PORTEN | PCIM_CMD_BUSMASTEREN);
diff --git a/sys/dev/sound/pci/emuxkireg.h b/sys/dev/sound/pci/emuxkireg.h
new file mode 100644
index 0000000..c743c8e
--- /dev/null
+++ b/sys/dev/sound/pci/emuxkireg.h
@@ -0,0 +1,689 @@
+/* $FreeBSD$ */
+/* $NetBSD: emuxkireg.h,v 1.8 2008/04/28 20:23:54 martin Exp $ */
+
+/*-
+ * Copyright (c) 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Yannick Montulet.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _DEV_PCI_EMUXKIREG_H_
+#define _DEV_PCI_EMUXKIREG_H_
+
+/*
+ * Register values for Creative EMU10000. The register values have been
+ * taken from GPLed SBLive! header file published by Creative. The comments
+ * have been stripped to avoid GPL pollution in kernel. The Creative version
+ * including comments is available in Linux 2.4.* kernel as file
+ * drivers/sound/emu10k1/8010.h
+ */
+
+/*
+ * Audigy specific registers contain an '_A_'
+ * Audigy2 specific registers contain an '_A2_'
+ */
+
+#define EMU_MKSUBREG(sz, idx, reg) (((sz) << 24) | ((idx) << 16) | (reg))
+
+#define EMU_PTR 0x00
+#define EMU_PTR_CHNO_MASK 0x0000003f
+#define EMU_PTR_ADDR_MASK 0x07ff0000
+#define EMU_A_PTR_ADDR_MASK 0x0fff0000
+
+#define EMU_DATA 0x04
+
+#define EMU_IPR 0x08
+#define EMU_IPR_RATETRCHANGE 0x01000000
+#define EMU_IPR_FXDSP 0x00800000
+#define EMU_IPR_FORCEINT 0x00400000
+#define EMU_PCIERROR 0x00200000
+#define EMU_IPR_VOLINCR 0x00100000
+#define EMU_IPR_VOLDECR 0x00080000
+#define EMU_IPR_MUTE 0x00040000
+#define EMU_IPR_MICBUFFULL 0x00020000
+#define EMU_IPR_MICBUFHALFFULL 0x00010000
+#define EMU_IPR_ADCBUFFULL 0x00008000
+#define EMU_IPR_ADCBUFHALFFULL 0x00004000
+#define EMU_IPR_EFXBUFFULL 0x00002000
+#define EMU_IPR_EFXBUFHALFFULL 0x00001000
+#define EMU_IPR_GPSPDIFSTCHANGE 0x00000800
+#define EMU_IPR_CDROMSTCHANGE 0x00000400
+#define EMU_IPR_INTERVALTIMER 0x00000200
+#define EMU_IPR_MIDITRANSBUFE 0x00000100
+#define EMU_IPR_MIDIRECVBUFE 0x00000080
+#define EMU_IPR_A_MIDITRANSBUFE2 0x10000000
+#define EMU_IPR_A_MIDIRECBUFE2 0x08000000
+#define EMU_IPR_CHANNELLOOP 0x00000040
+#define EMU_IPR_CHNOMASK 0x0000003f
+
+#define EMU_INTE 0x0c
+
+#define EMU_INTE_VSB_MASK 0xc0000000
+#define EMU_INTE_VSB_220 0x00000000
+#define EMU_INTE_VSB_240 0x40000000
+#define EMU_INTE_VSB_260 0x80000000
+#define EMU_INTE_VSB_280 0xc0000000
+
+#define EMU_INTE_VMPU_MASK 0x30000000
+#define EMU_INTE_VMPU_300 0x00000000
+#define EMU_INTE_VMPU_310 0x10000000
+#define EMU_INTE_VMPU_320 0x20000000
+#define EMU_INTE_VMPU_330 0x30000000
+#define EMU_INTE_MDMAENABLE 0x08000000
+#define EMU_INTE_SDMAENABLE 0x04000000
+#define EMU_INTE_MPICENABLE 0x02000000
+#define EMU_INTE_SPICENABLE 0x01000000
+#define EMU_INTE_VSBENABLE 0x00800000
+#define EMU_INTE_ADLIBENABLE 0x00400000
+#define EMU_INTE_MPUENABLE 0x00200000
+#define EMU_INTE_FORCEINT 0x00100000
+#define EMU_INTE_MRHANDENABLE 0x00080000
+#define EMU_INTE_SAMPLERATER 0x00002000
+#define EMU_INTE_FXDSPENABLE 0x00001000
+#define EMU_INTE_PCIERRENABLE 0x00000800
+#define EMU_INTE_VOLINCRENABLE 0x00000400
+#define EMU_INTE_VOLDECRENABLE 0x00000200
+#define EMU_INTE_MUTEENABLE 0x00000100
+#define EMU_INTE_MICBUFENABLE 0x00000080
+#define EMU_INTE_ADCBUFENABLE 0x00000040
+#define EMU_INTE_EFXBUFENABLE 0x00000020
+#define EMU_INTE_GPSPDIFENABLE 0x00000010
+#define EMU_INTE_CDSPDIFENABLE 0x00000008
+#define EMU_INTE_INTERTIMERENB 0x00000004
+#define EMU_INTE_MIDITXENABLE 0x00000002
+#define EMU_INTE_MIDIRXENABLE 0x00000001
+#define EMU_INTE_A_MIDITXENABLE2 0x00020000
+#define EMU_INTE_A_MIDIRXENABLE2 0x00010000
+
+#define EMU_WC 0x10
+#define EMU_WC_SAMPLECOUNTER_MASK 0x03FFFFC0
+#define EMU_WC_SAMPLECOUNTER EMU_MKSUBREG(20, 6, EMU_WC)
+#define EMU_WC_CURRENTCHANNEL 0x0000003F
+
+#define EMU_HCFG 0x14
+#define EMU_HCFG_LEGACYFUNC_MASK 0xe0000000
+#define EMU_HCFG_LEGACYFUNC_MPU 0x00000000
+#define EMU_HCFG_LEGACYFUNC_SB 0x40000000
+#define EMU_HCFG_LEGACYFUNC_AD 0x60000000
+#define EMU_HCFG_LEGACYFUNC_MPIC 0x80000000
+#define EMU_HCFG_LEGACYFUNC_MDMA 0xa0000000
+#define EMU_HCFG_LEGACYFUNC_SPCI 0xc0000000
+#define EMU_HCFG_LEGACYFUNC_SDMA 0xe0000000
+#define EMU_HCFG_IOCAPTUREADDR 0x1f000000
+#define EMU_HCFG_LEGACYWRITE 0x00800000
+#define EMU_HCFG_LEGACYWORD 0x00400000
+#define EMU_HCFG_LEGACYINT 0x00200000
+
+#define EMU_HCFG_CODECFMT_MASK 0x00070000
+#define EMU_HCFG_CODECFMT_AC97 0x00000000
+#define EMU_HCFG_CODECFMT_I2S 0x00010000
+#define EMU_HCFG_GPINPUT0 0x00004000
+#define EMU_HCFG_GPINPUT1 0x00002000
+#define EMU_HCFG_GPOUTPUT_MASK 0x00001c00
+#define EMU_HCFG_JOYENABLE 0x00000200
+#define EMU_HCFG_PHASETRACKENABLE 0x00000100
+#define EMU_HCFG_AC3ENABLE_MASK 0x000000e0
+#define EMU_HCFG_AC3ENABLE_ZVIDEO 0x00000080
+#define EMU_HCFG_AC3ENABLE_CDSPDIF 0x00000040
+#define EMU_HCFG_AC3ENABLE_GPSPDIF 0x00000020
+#define EMU_HCFG_AUTOMUTE 0x00000010
+#define EMU_HCFG_LOCKSOUNDCACHE 0x00000008
+#define EMU_HCFG_LOCKTANKCACHE_MASK 0x00000004
+#define EMU_HCFG_LOCKTANKCACHE EMU_MKSUBREG(1, 2, EMU_HCFG)
+#define EMU_HCFG_MUTEBUTTONENABLE 0x00000002
+#define EMU_HCFG_AUDIOENABLE 0x00000001
+
+#define EMU_MUDATA 0x18
+#define EMU_MUCMD 0x19
+#define EMU_MUCMD_RESET 0xff
+#define EMU_MUCMD_ENTERUARTMODE 0x3f
+
+#define EMU_MUSTAT EMU_MUCMD
+#define EMU_MUSTAT_IRDYN 0x80
+#define EMU_MUSTAT_ORDYN 0x40
+
+#define EMU_A_IOCFG 0x18
+#define EMU_A_GPINPUT_MASK 0xff00
+#define EMU_A_GPOUTPUT_MASK 0x00ff
+#define EMU_A_IOCFG_GPOUT0 0x0040
+#define EMU_A_IOCFG_GPOUT1 0x0004
+
+#define EMU_TIMER 0x1a
+#define EMU_TIMER_RATE_MASK 0x000003ff
+#define EMU_TIMER_RATE EMU_MKSUBREG(10, 0, EMU_TIMER)
+
+#define EMU_AC97DATA 0x1c
+#define EMU_AC97ADDR 0x1e
+#define EMU_AC97ADDR_RDY 0x80
+#define EMU_AC97ADDR_ADDR 0x7f
+
+#define EMU_A2_PTR 0x20
+#define EMU_A2_DATA 0x24
+
+#define EMU_A2_SRCSEL 0x600000
+#define EMU_A2_SRCSEL_ENABLE_SPDIF 0x00000004
+#define EMU_A2_SRCSEL_ENABLE_SRCMULTI 0x00000010
+#define EMU_A2_SRCMULTI 0x6e0000
+#define EMU_A2_SRCMULTI_ENABLE_INPUT 0xff00ff00
+
+/* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
+
+#define EMU_CHAN_CPF 0x00
+
+#define EMU_CHAN_CPF_PITCH_MASK 0xffff0000
+#define EMU_CHAN_CPF_PITCH EMU_MKSUBREG(16, 16, EMU_CHAN_CPF)
+#define EMU_CHAN_CPF_STEREO_MASK 0x00008000
+#define EMU_CHAN_CPF_STEREO EMU_MKSUBREG(1, 15, EMU_CHAN_CPF)
+#define EMU_CHAN_CPF_STOP_MASK 0x00004000
+#define EMU_CHAN_CPF_FRACADDRESS_MASK 0x00003fff
+
+
+#define EMU_CHAN_PTRX 0x01
+#define EMU_CHAN_PTRX_PITCHTARGET_MASK 0xffff0000
+#define EMU_CHAN_PTRX_PITCHTARGET EMU_MKSUBREG(16, 16, EMU_CHAN_PTRX)
+#define EMU_CHAN_PTRX_FXSENDAMOUNT_A_MASK 0x0000ff00
+#define EMU_CHAN_PTRX_FXSENDAMOUNT_A EMU_MKSUBREG(8, 8, EMU_CHAN_PTRX)
+#define EMU_CHAN_PTRX_FXSENDAMOUNT_B_MASK 0x000000ff
+#define EMU_CHAN_PTRX_FXSENDAMOUNT_B EMU_MKSUBREG(8, 0, EMU_CHAN_PTRX)
+
+#define EMU_CHAN_CVCF 0x02
+#define EMU_CHAN_CVCF_CURRVOL_MASK 0xffff0000
+#define EMU_CHAN_CVCF_CURRVOL EMU_MKSUBREG(16, 16, EMU_CHAN_CVCF)
+#define EMU_CHAN_CVCF_CURRFILTER_MASK 0x0000ffff
+#define EMU_CHAN_CVCF_CURRFILTER EMU_MKSUBREG(16, 0, EMU_CHAN_CVCF)
+
+#define EMU_CHAN_VTFT 0x03
+#define EMU_CHAN_VTFT_VOLUMETARGET_MASK 0xffff0000
+#define EMU_CHAN_VTFT_VOLUMETARGET EMU_MKSUBREG(16, 16, EMU_CHAN_VTFT)
+#define EMU_CHAN_VTFT_FILTERTARGET_MASK 0x0000ffff
+#define EMU_CHAN_VTFT_FILTERTARGET EMU_MKSUBREG(16, 0, EMU_CHAN_VTFT)
+
+#define EMU_CHAN_Z1 0x05
+#define EMU_CHAN_Z2 0x04
+
+#define EMU_CHAN_PSST 0x06
+#define EMU_CHAN_PSST_FXSENDAMOUNT_C_MASK 0xff000000
+#define EMU_CHAN_PSST_FXSENDAMOUNT_C EMU_MKSUBREG(8, 24, EMU_CHAN_PSST)
+#define EMU_CHAN_PSST_LOOPSTARTADDR_MASK 0x00ffffff
+#define EMU_CHAN_PSST_LOOPSTARTADDR EMU_MKSUBREG(24, 0, EMU_CHAN_PSST)
+
+#define EMU_CHAN_DSL 0x07
+#define EMU_CHAN_DSL_FXSENDAMOUNT_D_MASK 0xff000000
+#define EMU_CHAN_DSL_FXSENDAMOUNT_D EMU_MKSUBREG(8, 24, EMU_CHAN_DSL)
+#define EMU_CHAN_DSL_LOOPENDADDR_MASK 0x00ffffff
+#define EMU_CHAN_DSL_LOOPENDADDR EMU_MKSUBREG(24, 0, EMU_CHAN_DSL)
+
+#define EMU_CHAN_CCCA 0x08
+#define EMU_CHAN_CCCA_RESONANCE 0xf0000000
+#define EMU_CHAN_CCCA_INTERPROMMASK 0x0e000000
+#define EMU_CHAN_CCCA_INTERPROM_0 0x00000000
+#define EMU_CHAN_CCCA_INTERPROM_1 0x02000000
+#define EMU_CHAN_CCCA_INTERPROM_2 0x04000000
+#define EMU_CHAN_CCCA_INTERPROM_3 0x06000000
+#define EMU_CHAN_CCCA_INTERPROM_4 0x08000000
+#define EMU_CHAN_CCCA_INTERPROM_5 0x0a000000
+#define EMU_CHAN_CCCA_INTERPROM_6 0x0c000000
+#define EMU_CHAN_CCCA_INTERPROM_7 0x0e000000
+#define EMU_CHAN_CCCA_8BITSELECT 0x01000000
+#define EMU_CHAN_CCCA_CURRADDR_MASK 0x00ffffff
+#define EMU_CHAN_CCCA_CURRADDR EMU_MKSUBREG(24, 0, EMU_CHAN_CCCA)
+
+#define EMU_CHAN_CCR 0x09
+#define EMU_CHAN_CCR_CACHEINVALIDSIZE_MASK 0xfe000000
+#define EMU_CHAN_CCR_CACHEINVALIDSIZE EMU_MKSUBREG(7, 25, EMU_CHAN_CCR)
+#define EMU_CHAN_CCR_CACHELOOPFLAG 0x01000000
+#define EMU_CHAN_CCR_INTERLEAVEDSAMPLES 0x00800000
+#define EMU_CHAN_CCR_WORDSIZEDSAMPLES 0x00400000
+#define EMU_CHAN_CCR_READADDRESS_MASK 0x003f0000
+#define EMU_CHAN_CCR_READADDRESS EMU_MKSUBREG(6, 16, EMU_CHAN_CCR)
+#define EMU_CHAN_CCR_LOOPINVALSIZE 0x0000fe00
+#define EMU_CHAN_CCR_LOOPFLAG 0x00000100
+#define EMU_CHAN_CCR_CACHELOOPADDRHI 0x000000ff
+
+#define EMU_CHAN_CLP 0x0a
+#define EMU_CHAN_CLP_CACHELOOPADDR 0x0000ffff
+
+#define EMU_CHAN_FXRT 0x0b
+#define EMU_CHAN_FXRT_CHANNELA 0x000f0000
+#define EMU_CHAN_FXRT_CHANNELB 0x00f00000
+#define EMU_CHAN_FXRT_CHANNELC 0x0f000000
+#define EMU_CHAN_FXRT_CHANNELD 0xf0000000
+
+#define EMU_CHAN_MAPA 0x0c
+#define EMU_CHAN_MAPB 0x0d
+
+#define EMU_CHAN_MAP_PTE_MASK 0xffffe000
+#define EMU_CHAN_MAP_PTI_MASK 0x00001fff
+
+
+#define EMU_CHAN_ENVVOL 0x10
+#define EMU_CHAN_ENVVOL_MASK 0x0000ffff
+
+
+#define EMU_CHAN_ATKHLDV 0x11
+#define EMU_CHAN_ATKHLDV_PHASE0 0x00008000
+#define EMU_CHAN_ATKHLDV_HOLDTIME_MASK 0x00007f00
+#define EMU_CHAN_ATKHLDV_ATTACKTIME_MASK 0x0000007f
+
+
+#define EMU_CHAN_DCYSUSV 0x12
+#define EMU_CHAN_DCYSUSV_PHASE1_MASK 0x00008000
+#define EMU_CHAN_DCYSUSV_SUSTAINLEVEL_MASK 0x00007f00
+#define EMU_CHAN_DCYSUSV_CHANNELENABLE_MASK 0x00000080
+#define EMU_CHAN_DCYSUSV_DECAYTIME_MASK 0x0000007f
+
+
+#define EMU_CHAN_LFOVAL1 0x13
+#define EMU_CHAN_LFOVAL_MASK 0x0000ffff
+
+#define EMU_CHAN_ENVVAL 0x14
+#define EMU_CHAN_ENVVAL_MASK 0x0000ffff
+
+#define EMU_CHAN_ATKHLDM 0x15
+#define EMU_CHAN_ATKHLDM_PHASE0 0x00008000
+#define EMU_CHAN_ATKHLDM_HOLDTIME 0x00007f00
+#define EMU_CHAN_ATKHLDM_ATTACKTIME 0x0000007f
+
+#define EMU_CHAN_DCYSUSM 0x16
+#define EMU_CHAN_DCYSUSM_PHASE1_MASK 0x00008000
+#define EMU_CHAN_DCYSUSM_SUSTAINLEVEL_MASK 0x00007f00
+#define EMU_CHAN_DCYSUSM_DECAYTIME_MASK 0x0000007f
+
+#define EMU_CHAN_LFOVAL2 0x17
+#define EMU_CHAN_LFOVAL2_MASK 0x0000ffff
+
+#define EMU_CHAN_IP 0x18
+#define EMU_CHAN_IP_MASK 0x0000ffff
+#define EMU_CHAN_IP_UNITY 0x0000e000
+
+#define EMU_CHAN_IFATN 0x19
+#define EMU_CHAN_IFATN_FILTERCUTOFF_MASK 0x0000ff00
+#define EMU_CHAN_IFATN_FILTERCUTOFF EMU_MKSUBREG(8, 8, EMU_CHAN_IFATN)
+#define EMU_CHAN_IFATN_ATTENUATION_MASK 0x000000ff
+#define EMU_CHAN_IFATN_ATTENUATION EMU_MKSUBREG(8, 0, EMU_CHAN_IFATN)
+
+#define EMU_CHAN_PEFE 0x1a
+#define EMU_CHAN_PEFE_PITCHAMOUNT_MASK 0x0000ff00
+#define EMU_CHAN_PEFE_PITCHAMOUNT EMU_MKSUBREG(8, 8, EMU_CHAN_PEFE)
+#define EMU_CHAN_PEFE_FILTERAMOUNT_MASK 0x000000ff
+#define EMU_CHAN_PEFE_FILTERAMOUNT EMU_MKSUBREG(8, 0, EMU_CHAN_PEFE)
+
+#define EMU_CHAN_FMMOD 0x1b
+#define EMU_CHAN_FMMOD_MODVIBRATO 0x0000ff00
+#define EMU_CHAN_FMMOD_MOFILTER 0x000000ff
+
+#define EMU_CHAN_TREMFRQ 0x1c
+#define EMU_CHAN_TREMFRQ_DEPTH 0x0000ff00
+
+#define EMU_CHAN_FM2FRQ2 0x1d
+#define EMU_CHAN_FM2FRQ2_DEPTH 0x0000ff00
+#define EMU_CHAN_FM2FRQ2_FREQUENCY 0x000000ff
+
+#define EMU_CHAN_TEMPENV 0x1e
+#define EMU_CHAN_TEMPENV_MASK 0x0000ffff
+
+#define EMU_CHAN_CD0 0x20
+#define EMU_CHAN_CD1 0x21
+#define EMU_CHAN_CD2 0x22
+#define EMU_CHAN_CD3 0x23
+#define EMU_CHAN_CD4 0x24
+#define EMU_CHAN_CD5 0x25
+#define EMU_CHAN_CD6 0x26
+#define EMU_CHAN_CD7 0x27
+#define EMU_CHAN_CD8 0x28
+#define EMU_CHAN_CD9 0x29
+#define EMU_CHAN_CDA 0x2a
+#define EMU_CHAN_CDB 0x2b
+#define EMU_CHAN_CDC 0x2c
+#define EMU_CHAN_CDD 0x2d
+#define EMU_CHAN_CDE 0x2e
+#define EMU_CHAN_CDF 0x2f
+
+/* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
+
+#define EMU_PTB 0x40
+#define EMU_PTB_MASK 0xfffff000
+
+#define EMU_TCB 0x41
+#define EMU_TCB_MASK 0xfffff000
+
+#define EMU_ADCCR 0x42
+#define EMU_ADCCR_RCHANENABLE 0x00000010
+#define EMU_A_ADCCR_RCHANENABLE 0x00000020
+#define EMU_ADCCR_LCHANENABLE 0x00000008
+#define EMU_A_ADCCR_LCHANENABLE 0x00000010
+#define EMU_ADCCR_SAMPLERATE_MASK 0x00000007
+#define EMU_A_ADCCR_SAMPLERATE_MASK 0x0000000f
+#define EMU_ADCCR_SAMPLERATE_48 0x00000000
+#define EMU_ADCCR_SAMPLERATE_44 0x00000001
+#define EMU_ADCCR_SAMPLERATE_32 0x00000002
+#define EMU_ADCCR_SAMPLERATE_24 0x00000003
+#define EMU_ADCCR_SAMPLERATE_22 0x00000004
+#define EMU_ADCCR_SAMPLERATE_16 0x00000005
+#define EMU_A_ADCCR_SAMPLERATE_12 0x00000006
+#define EMU_ADCCR_SAMPLERATE_11 0x00000006
+#define EMU_A_ADCCR_SAMPLERATE_11 0x00000007
+#define EMU_ADCCR_SAMPLERATE_8 0x00000007
+#define EMU_A_ADCCR_SAMPLERATE_8 0x00000008
+
+#define EMU_FXWC 0x43
+#define EMU_TCBS 0x44
+#define EMU_TCBS_MASK 0x00000007
+#define EMU_TCBS_BUFFSIZE_16K 0x00000000
+#define EMU_TCBS_BUFFSIZE_32K 0x00000001
+#define EMU_TCBS_BUFFSIZE_64K 0x00000002
+#define EMU_TCBS_BUFFSIZE_128K 0x00000003
+#define EMU_TCBS_BUFFSIZE_256K 0x00000004
+#define EMU_TCBS_BUFFSIZE_512K 0x00000005
+#define EMU_TCBS_BUFFSIZE_1024K 0x00000006
+#define EMU_TCBS_BUFFSIZE_2048K 0x00000007
+
+#define EMU_MICBA 0x45
+#define EMU_ADCBA 0x46
+#define EMU_FXBA 0x47
+#define EMU_RECBA_MASK 0xfffff000
+
+#define EMU_MICBS 0x49
+#define EMU_ADCBS 0x4a
+#define EMU_FXBS 0x4b
+#define EMU_RECBS_BUFSIZE_NONE 0x00000000
+#define EMU_RECBS_BUFSIZE_384 0x00000001
+#define EMU_RECBS_BUFSIZE_448 0x00000002
+#define EMU_RECBS_BUFSIZE_512 0x00000003
+#define EMU_RECBS_BUFSIZE_640 0x00000004
+#define EMU_RECBS_BUFSIZE_768 0x00000005
+#define EMU_RECBS_BUFSIZE_896 0x00000006
+#define EMU_RECBS_BUFSIZE_1024 0x00000007
+#define EMU_RECBS_BUFSIZE_1280 0x00000008
+#define EMU_RECBS_BUFSIZE_1536 0x00000009
+#define EMU_RECBS_BUFSIZE_1792 0x0000000a
+#define EMU_RECBS_BUFSIZE_2048 0x0000000b
+#define EMU_RECBS_BUFSIZE_2560 0x0000000c
+#define EMU_RECBS_BUFSIZE_3072 0x0000000d
+#define EMU_RECBS_BUFSIZE_3584 0x0000000e
+#define EMU_RECBS_BUFSIZE_4096 0x0000000f
+#define EMU_RECBS_BUFSIZE_5120 0x00000010
+#define EMU_RECBS_BUFSIZE_6144 0x00000011
+#define EMU_RECBS_BUFSIZE_7168 0x00000012
+#define EMU_RECBS_BUFSIZE_8192 0x00000013
+#define EMU_RECBS_BUFSIZE_10240 0x00000014
+#define EMU_RECBS_BUFSIZE_12288 0x00000015
+#define EMU_RECBS_BUFSIZE_14366 0x00000016
+#define EMU_RECBS_BUFSIZE_16384 0x00000017
+#define EMU_RECBS_BUFSIZE_20480 0x00000018
+#define EMU_RECBS_BUFSIZE_24576 0x00000019
+#define EMU_RECBS_BUFSIZE_28672 0x0000001a
+#define EMU_RECBS_BUFSIZE_32768 0x0000001b
+#define EMU_RECBS_BUFSIZE_40960 0x0000001c
+#define EMU_RECBS_BUFSIZE_49152 0x0000001d
+#define EMU_RECBS_BUFSIZE_57344 0x0000001e
+#define EMU_RECBS_BUFSIZE_65536 0x0000001f
+
+#define EMU_CDCS 0x50
+#define EMU_GPSCS 0x51
+
+#define EMU_DBG 0x52
+#define EMU_DBG_ZC 0x80000000
+#define EMU_DBG_SATURATION_OCCURRED 0x02000000
+#define EMU_DBG_SATURATION_ADDR 0x01ff0000
+#define EMU_DBG_SINGLE_STEP 0x00008000
+#define EMU_DBG_STEP 0x00004000
+#define EMU_DBG_CONDITION_CODE 0x00003e00
+#define EMU_DBG_SINGLE_STEP_ADDR 0x000001ff
+
+#define EMU_A_DBG 0x53
+#define EMU_A_DBG_SINGLE_STEP 0x00020000
+#define EMU_A_DBG_ZC 0x40000000
+#define EMU_A_DBG_STEP_ADDR 0x000003ff
+#define EMU_A_DBG_SATURATION_OCCRD 0x20000000
+#define EMU_A_DBG_SATURATION_ADDR 0x0ffc0000
+
+#define EMU_SPCS0 0x54
+#define EMU_SPCS1 0x55
+#define EMU_SPCS2 0x56
+#define EMU_SPCS_CLKACCYMASK 0x30000000
+#define EMU_SPCS_CLKACCY_1000PPM 0x00000000
+#define EMU_SPCS_CLKACCY_50PPM 0x10000000
+#define EMU_SPCS_CLKACCY_VARIABLE 0x20000000
+#define EMU_SPCS_SAMPLERATEMASK 0x0f000000
+#define EMU_SPCS_SAMPLERATE_44 0x00000000
+#define EMU_SPCS_SAMPLERATE_48 0x02000000
+#define EMU_SPCS_SAMPLERATE_32 0x03000000
+#define EMU_SPCS_CHANNELNUMMASK 0x00f00000
+#define EMU_SPCS_CHANNELNUM_UNSPEC 0x00000000
+#define EMU_SPCS_CHANNELNUM_LEFT 0x00100000
+#define EMU_SPCS_CHANNELNUM_RIGHT 0x00200000
+#define EMU_SPCS_SOURCENUMMASK 0x000f0000
+#define EMU_SPCS_SOURCENUM_UNSPEC 0x00000000
+#define EMU_SPCS_GENERATIONSTATUS 0x00008000
+#define EMU_SPCS_CATEGORYCODEMASK 0x00007f00
+#define EMU_SPCS_MODEMASK 0x000000c0
+#define EMU_SPCS_EMPHASISMASK 0x00000038
+#define EMU_SPCS_EMPHASIS_NONE 0x00000000
+#define EMU_SPCS_EMPHASIS_50_15 0x00000008
+#define EMU_SPCS_COPYRIGHT 0x00000004
+#define EMU_SPCS_NOTAUDIODATA 0x00000002
+#define EMU_SPCS_PROFESSIONAL 0x00000001
+
+#define EMU_CLIEL 0x58
+#define EMU_CLIEH 0x59
+#define EMU_CLIPL 0x5a
+#define EMU_CLIPH 0x5b
+#define EMU_SOLEL 0x5c
+#define EMU_SOLEH 0x5d
+
+#define EMU_SPBYPASS 0x5e
+#define EMU_SPBYPASS_ENABLE 0x00000001
+#define EMU_SPBYPASS_24_BITS 0x00000f00
+
+#define EMU_AC97SLOT 0x5f
+#define EMU_AC97SLOT_CENTER 0x00000010
+#define EMU_AC97SLOT_LFE 0x00000020
+
+#define EMU_CDSRCS 0x60
+#define EMU_GPSRCS 0x61
+#define EMU_ZVSRCS 0x62
+#define EMU_SRCS_SPDIFLOCKED 0x02000000
+#define EMU_SRCS_RATELOCKED 0x01000000
+#define EMU_SRCS_ESTSAMPLERATE 0x0007ffff
+
+#define EMU_MICIDX 0x63
+#define EMU_A_MICIDX 0x64
+#define EMU_ADCIDX 0x64
+#define EMU_A_ADCIDX 0x63
+#define EMU_FXIDX 0x65
+#define EMU_RECIDX_MASK 0x0000ffff
+#define EMU_RECIDX(idxreg) (0x10000000|(idxreg))
+/*
+#define EMU_MICIDX_IDX 0x10000063
+#define EMU_ADCIDX_IDX 0x10000064
+#define EMU_FXIDX_IDX 0x10000065
+*/
+
+#define EMU_A_MUDATA1 0x70
+#define EMU_A_MUCMD1 0x71
+#define EMU_A_MUSTAT1 EMU_A_MUCMD1
+#define EMU_A_MUDATA2 0x72
+#define EMU_A_MUCMD2 0x73
+#define EMU_A_MUSTAT2 EMU_A_MUCMD2
+#define EMU_A_FXWC1 0x74
+#define EMU_A_FXWC2 0x75
+#define EMU_A_SPDIF_SAMPLERATE 0x76
+#define EMU_A_SPDIF_48000 0x00000080
+#define EMU_A_SPDIF_44100 0x00000000
+#define EMU_A_SPDIF_96000 0x00000040
+#define EMU_A2_SPDIF_SAMPLERATE EMU_MKSUBREG(3, 9, EMU_A_SPDIF_SAMPLERATE)
+#define EMU_A2_SPDIF_MASK 0x00000e00
+#define EMU_A2_SPDIF_UNKNOWN 0x2
+
+#define EMU_A_CHAN_FXRT2 0x7c
+#define EMU_A_CHAN_FXRT_CHANNELE 0x0000003f
+#define EMU_A_CHAN_FXRT_CHANNELF 0x00003f00
+#define EMU_A_CHAN_FXRT_CHANNELG 0x003f0000
+#define EMU_A_CHAN_FXRT_CHANNELH 0x3f000000
+#define EMU_A_CHAN_SENDAMOUNTS 0x7d
+#define EMU_A_CHAN_FXSENDAMOUNTS_E_MASK 0xff000000
+#define EMU_A_CHAN_FXSENDAMOUNTS_F_MASK 0x00ff0000
+#define EMU_A_CHAN_FXSENDAMOUNTS_G_MASK 0x0000ff00
+#define EMU_A_CHAN_FXSENDAMOUNTS_H_MASK 0x000000ff
+#define EMU_A_CHAN_FXRT1 0x7e
+#define EMU_A_CHAN_FXRT_CHANNELA 0x0000003f
+#define EMU_A_CHAN_FXRT_CHANNELB 0x00003f00
+#define EMU_A_CHAN_FXRT_CHANNELC 0x003f0000
+#define EMU_A_CHAN_FXRT_CHANNELD 0x3f000000
+
+#define EMU_FXGPREGBASE 0x100
+#define EMU_A_FXGPREGBASE 0x400
+
+#define EMU_TANKMEMDATAREGBASE 0x200
+#define EMU_TANKMEMDATAREG_MASK 0x000fffff
+
+#define EMU_TANKMEMADDRREGBASE 0x300
+#define EMU_TANKMEMADDRREG_ADDR_MASK 0x000fffff
+#define EMU_TANKMEMADDRREG_CLEAR 0x00800000
+#define EMU_TANKMEMADDRREG_ALIGN 0x00400000
+#define EMU_TANKMEMADDRREG_WRITE 0x00200000
+#define EMU_TANKMEMADDRREG_READ 0x00100000
+
+#define EMU_MICROCODEBASE 0x400
+#define EMU_A_MICROCODEBASE 0x600
+#define EMU_DSP_LOWORD_OPX_MASK 0x000ffc00
+#define EMU_DSP_LOWORD_OPY_MASK 0x000003ff
+#define EMU_DSP_HIWORD_OPCODE_MASK 0x00f00000
+#define EMU_DSP_HIWORD_RESULT_MASK 0x000ffc00
+#define EMU_DSP_HIWORD_OPA_MASK 0x000003ff
+#define EMU_A_DSP_LOWORD_OPX_MASK 0x007ff000
+#define EMU_A_DSP_LOWORD_OPY_MASK 0x000007ff
+#define EMU_A_DSP_HIWORD_OPCODE_MASK 0x0f000000
+#define EMU_A_DSP_HIWORD_RESULT_MASK 0x007ff000
+#define EMU_A_DSP_HIWORD_OPA_MASK 0x000007ff
+
+#define EMU_DSP_OP_MACS 0x0
+#define EMU_DSP_OP_MACS1 0x1
+#define EMU_DSP_OP_MACW 0x2
+#define EMU_DSP_OP_MACW1 0x3
+#define EMU_DSP_OP_MACINTS 0x4
+#define EMU_DSP_OP_MACINTW 0x5
+#define EMU_DSP_OP_ACC3 0x6
+#define EMU_DSP_OP_MACMV 0x7
+#define EMU_DSP_OP_ANDXOR 0x8
+#define EMU_DSP_OP_TSTNEG 0x9
+#define EMU_DSP_OP_LIMIT 0xA
+#define EMU_DSP_OP_LIMIT1 0xB
+#define EMU_DSP_OP_LOG 0xC
+#define EMU_DSP_OP_EXP 0xD
+#define EMU_DSP_OP_INTERP 0xE
+#define EMU_DSP_OP_SKIP 0xF
+
+
+#define EMU_DSP_FX(num) (num)
+
+#define EMU_DSP_IOL(base, num) (base + (num << 1))
+#define EMU_DSP_IOR(base, num) (EMU_DSP_IOL(base, num) + 1)
+
+#define EMU_DSP_INL_BASE 0x010
+#define EMU_DSP_INL(num) (EMU_DSP_IOL(EMU_DSP_INL_BASE, num))
+#define EMU_DSP_INR(num) (EMU_DSP_IOR(EMU_DSP_INL_BASE, num))
+#define EMU_A_DSP_INL_BASE 0x040
+#define EMU_A_DSP_INL(num) (EMU_DSP_IOL(EMU_A_DSP_INL_BASE, num))
+#define EMU_A_DSP_INR(num) (EMU_DSP_IOR(EMU_A_DSP_INL_BASE, num))
+#define EMU_DSP_IN_AC97 0
+#define EMU_DSP_IN_CDSPDIF 1
+#define EMU_DSP_IN_ZOOM 2
+#define EMU_DSP_IN_TOSOPT 3
+#define EMU_DSP_IN_LVDLM1 4
+#define EMU_DSP_IN_LVDCOS 5
+#define EMU_DSP_IN_LVDLM2 6
+#define EMU_DSP_IN_UNKNOWN 7
+
+#define EMU_DSP_OUTL_BASE 0x020
+#define EMU_DSP_OUTL(num) (EMU_DSP_IOL(EMU_DSP_OUTL_BASE, num))
+#define EMU_DSP_OUTR(num) (EMU_DSP_IOR(EMU_DSP_OUTL_BASE, num))
+#define EMU_DSP_OUT_A_FRONT 0
+#define EMU_DSP_OUT_D_FRONT 1
+#define EMU_DSP_OUT_D_CENTER 2
+#define EMU_DSP_OUT_DRIVE_HP 3
+#define EMU_DSP_OUT_AD_REAR 4
+#define EMU_DSP_OUT_ADC 5
+#define EMU_DSP_OUTL_MIC 6
+
+#define EMU_A_DSP_OUTL_BASE 0x060
+#define EMU_A_DSP_OUTL(num) (EMU_DSP_IOL(EMU_A_DSP_OUTL_BASE, num))
+#define EMU_A_DSP_OUTR(num) (EMU_DSP_IOR(EMU_A_DSP_OUTL_BASE, num))
+#define EMU_A_DSP_OUT_D_FRONT 0
+#define EMU_A_DSP_OUT_D_CENTER 1
+#define EMU_A_DSP_OUT_DRIVE_HP 2
+#define EMU_A_DSP_OUT_DREAR 3
+#define EMU_A_DSP_OUT_A_FRONT 4
+#define EMU_A_DSP_OUT_A_CENTER 5
+#define EMU_A_DSP_OUT_A_REAR 7
+#define EMU_A_DSP_OUT_ADC 11
+
+#define EMU_DSP_CST_BASE 0x40
+#define EMU_A_DSP_CST_BASE 0xc0
+#define EMU_DSP_CST(num) (EMU_DSP_CST_BASE + num)
+#define EMU_A_DSP_CST(num) (EMU_A_DSP_CST_BASE + num)
+/*
+00 = 0x00000000
+01 = 0x00000001
+02 = 0x00000002
+03 = 0x00000003
+04 = 0x00000004
+05 = 0x00000008
+06 = 0x00000010
+07 = 0x00000020
+08 = 0x00000100
+09 = 0x00010000
+0A = 0x00080000
+0B = 0x10000000
+0C = 0x20000000
+0D = 0x40000000
+0E = 0x80000000
+0F = 0x7FFFFFFF
+10 = 0xFFFFFFFF
+11 = 0xFFFFFFFE
+12 = 0xC0000000
+13 = 0x4F1BBCDC
+14 = 0x5A7EF9DB
+15 = 0x00100000
+*/
+
+#define EMU_DSP_HWR_ACC 0x056
+#define EMU_DSP_HWR_CCR 0x057
+#define EMU_DSP_HWR_CCR_S 0x04
+#define EMU_DSP_HWR_CCR_Z 0x03
+#define EMU_DSP_HWR_CCR_M 0x02
+#define EMU_DSP_HWR_CCR_N 0x01
+#define EMU_DSP_HWR_CCR_B 0x00
+#define EMU_DSP_HWR_NOISE0 0x058
+#define EMU_DSP_HWR_NOISE1 0x059
+#define EMU_DSP_HWR_INTR 0x05A
+#define EMU_DSP_HWR_DBAC 0x05B
+
+#define EMU_DSP_GPR(num) (EMU_FXGPREGBASE + num)
+#define EMU_A_DSP_GPR(num) (EMU_A_FXGPREGBASE + num)
+
+#endif /* _DEV_PCI_EMUXKIREG_H_ */
diff --git a/sys/dev/sound/pci/fm801.c b/sys/dev/sound/pci/fm801.c
index 9f00652..ccfef36 100644
--- a/sys/dev/sound/pci/fm801.c
+++ b/sys/dev/sound/pci/fm801.c
@@ -276,7 +276,7 @@ fm801_wrcd(kobj_t obj, void *devinfo, int regno, u_int32_t data)
static kobj_method_t fm801_ac97_methods[] = {
KOBJMETHOD(ac97_read, fm801_rdcd),
KOBJMETHOD(ac97_write, fm801_wrcd),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
AC97_DECLARE(fm801_ac97);
@@ -530,7 +530,7 @@ static kobj_method_t fm801ch_methods[] = {
KOBJMETHOD(channel_trigger, fm801ch_trigger),
KOBJMETHOD(channel_getptr, fm801ch_getptr),
KOBJMETHOD(channel_getcaps, fm801ch_getcaps),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
CHANNEL_DECLARE(fm801ch);
@@ -749,12 +749,12 @@ static device_method_t fm801_methods[] = {
DEVMETHOD(device_resume, bus_generic_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_alloc_resource, fm801_alloc_resource),
DEVMETHOD(bus_release_resource, fm801_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource),
- { 0, 0}
+
+ DEVMETHOD_END
};
static driver_t fm801_driver = {
diff --git a/sys/dev/sound/pci/hda/hdac.c b/sys/dev/sound/pci/hda/hdac.c
index 66aa162..a190e0b 100644
--- a/sys/dev/sound/pci/hda/hdac.c
+++ b/sys/dev/sound/pci/hda/hdac.c
@@ -4971,6 +4971,30 @@ hdac_vendor_patch_parse(struct hdac_devinfo *devinfo)
if (w != NULL)
w->connsenable[0] = 0;
break;
+ case HDA_CODEC_VT1708S_0:
+ case HDA_CODEC_VT1708S_1:
+ case HDA_CODEC_VT1708S_2:
+ case HDA_CODEC_VT1708S_3:
+ case HDA_CODEC_VT1708S_4:
+ case HDA_CODEC_VT1708S_5:
+ case HDA_CODEC_VT1708S_6:
+ case HDA_CODEC_VT1708S_7:
+ /*
+ * These codecs have hidden mic boost controls.
+ */
+ w = hdac_widget_get(devinfo, 26);
+ if (w != NULL)
+ w->param.inamp_cap =
+ (40 << HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_SHIFT) |
+ (3 << HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_SHIFT) |
+ (0 << HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_SHIFT);
+ w = hdac_widget_get(devinfo, 30);
+ if (w != NULL)
+ w->param.inamp_cap =
+ (40 << HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_SHIFT) |
+ (3 << HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_SHIFT) |
+ (0 << HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_SHIFT);
+ break;
}
}
@@ -6458,7 +6482,7 @@ hdac_audio_commit(struct hdac_devinfo *devinfo)
struct hdac_softc *sc = devinfo->codec->sc;
struct hdac_widget *w;
nid_t cad;
- uint32_t gdata, gmask, gdir;
+ uint32_t id, gdata, gmask, gdir;
int commitgpio, numgpio;
int i;
@@ -6467,6 +6491,24 @@ hdac_audio_commit(struct hdac_devinfo *devinfo)
if (sc->pci_subvendor == APPLE_INTEL_MAC)
hdac_command(sc, HDA_CMD_12BIT(cad, devinfo->nid,
0x7e7, 0), cad);
+ id = hdac_codec_id(devinfo->codec);
+ switch (id) {
+ case HDA_CODEC_VT1708S_0:
+ case HDA_CODEC_VT1708S_1:
+ case HDA_CODEC_VT1708S_2:
+ case HDA_CODEC_VT1708S_3:
+ case HDA_CODEC_VT1708S_4:
+ case HDA_CODEC_VT1708S_5:
+ case HDA_CODEC_VT1708S_6:
+ case HDA_CODEC_VT1708S_7:
+ /* Enable Mic Boost Volume controls. */
+ hdac_command(sc, HDA_CMD_12BIT(cad, devinfo->nid,
+ 0xf98, 0x01), cad);
+ /* Don't bypass mixer. */
+ hdac_command(sc, HDA_CMD_12BIT(cad, devinfo->nid,
+ 0xf88, 0xc0), cad);
+ break;
+ }
/* Commit controls. */
hdac_audio_ctl_commit(devinfo);
@@ -7768,10 +7810,6 @@ hdac_attach2(void *arg)
);
hdac_audio_parse(devinfo);
HDA_BOOTHVERBOSE(
- device_printf(sc->dev, "Parsing Ctls...\n");
- );
- hdac_audio_ctl_parse(devinfo);
- HDA_BOOTHVERBOSE(
device_printf(sc->dev, "Parsing vendor patch...\n");
);
hdac_vendor_patch_parse(devinfo);
@@ -7779,6 +7817,10 @@ hdac_attach2(void *arg)
devinfo->function.audio.quirks &= ~quirks_off;
HDA_BOOTHVERBOSE(
+ device_printf(sc->dev, "Parsing Ctls...\n");
+ );
+ hdac_audio_ctl_parse(devinfo);
+ HDA_BOOTHVERBOSE(
device_printf(sc->dev, "Disabling nonaudio...\n");
);
hdac_audio_disable_nonaudio(devinfo);
diff --git a/sys/dev/sound/usb/uaudio.c b/sys/dev/sound/usb/uaudio.c
index 0445572..7d97a42 100644
--- a/sys/dev/sound/usb/uaudio.c
+++ b/sys/dev/sound/usb/uaudio.c
@@ -31,6 +31,9 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
/*
* USB audio specs: http://www.usb.org/developers/devclass_docs/audio10.pdf
* http://www.usb.org/developers/devclass_docs/frmts10.pdf
@@ -522,8 +525,8 @@ static device_method_t uaudio_methods[] = {
DEVMETHOD(device_suspend, bus_generic_suspend),
DEVMETHOD(device_resume, bus_generic_resume),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- {0, 0}
+
+ DEVMETHOD_END
};
static driver_t uaudio_driver = {
@@ -762,7 +765,17 @@ uaudio_detach(device_t dev)
{
struct uaudio_softc *sc = device_get_softc(dev);
- if (bus_generic_detach(dev)) {
+ /*
+ * Stop USB transfers early so that any audio applications
+ * will time out and close opened /dev/dspX.Y device(s), if
+ * any.
+ */
+ if (sc->sc_play_chan.valid)
+ usbd_transfer_unsetup(sc->sc_play_chan.xfer, UAUDIO_NCHANBUFS);
+ if (sc->sc_rec_chan.valid)
+ usbd_transfer_unsetup(sc->sc_rec_chan.xfer, UAUDIO_NCHANBUFS);
+
+ if (bus_generic_detach(dev) != 0) {
DPRINTF("detach failed!\n");
}
sbuf_delete(&sc->sc_sndstat);
diff --git a/sys/dev/sound/usb/uaudio.h b/sys/dev/sound/usb/uaudio.h
index 622cb3b..10c10de 100644
--- a/sys/dev/sound/usb/uaudio.h
+++ b/sys/dev/sound/usb/uaudio.h
@@ -27,6 +27,9 @@
/* prototypes from "uaudio.c" used by "uaudio_pcm.c" */
+#ifndef _UAUDIO_H_
+#define _UAUDIO_H_
+
struct uaudio_chan;
struct uaudio_softc;
struct snd_dbuf;
@@ -63,3 +66,5 @@ extern uint32_t uaudio_mixer_setrecsrc(struct uaudio_softc *sc, uint32_t src);
int uaudio_get_vendor(device_t dev);
int uaudio_get_product(device_t dev);
int uaudio_get_release(device_t dev);
+
+#endif /* _UAUDIO_H_ */
diff --git a/sys/dev/speaker/spkr.c b/sys/dev/speaker/spkr.c
index 2d52519..94d4792 100644
--- a/sys/dev/speaker/spkr.c
+++ b/sys/dev/speaker/spkr.c
@@ -130,7 +130,9 @@ rest(int centisecs)
* except possibly at physical block boundaries.
*/
+#ifndef __bool_true_false_are_defined
typedef int bool;
+#endif
#define TRUE 1
#define FALSE 0
diff --git a/sys/dev/spibus/spibus.c b/sys/dev/spibus/spibus.c
index 9491734..43b4e7e 100644
--- a/sys/dev/spibus/spibus.c
+++ b/sys/dev/spibus/spibus.c
@@ -173,7 +173,6 @@ static device_method_t spibus_methods[] = {
/* Bus interface */
DEVMETHOD(bus_add_child, spibus_add_child),
DEVMETHOD(bus_print_child, spibus_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
DEVMETHOD(bus_probe_nomatch, spibus_probe_nomatch),
DEVMETHOD(bus_read_ivar, spibus_read_ivar),
DEVMETHOD(bus_child_pnpinfo_str, spibus_child_pnpinfo_str),
@@ -183,7 +182,7 @@ static device_method_t spibus_methods[] = {
/* spibus interface */
DEVMETHOD(spibus_transfer, spibus_transfer_impl),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t spibus_driver = {
diff --git a/sys/dev/spibus/spibusvar.h b/sys/dev/spibus/spibusvar.h
index 543fcfe..c035be1 100644
--- a/sys/dev/spibus/spibusvar.h
+++ b/sys/dev/spibus/spibusvar.h
@@ -18,7 +18,7 @@ enum {
};
#define SPIBUS_ACCESSOR(A, B, T) \
-__inline static int \
+static inline int \
spibus_get_ ## A(device_t dev, T *t) \
{ \
return BUS_READ_IVAR(device_get_parent(dev), dev, \
diff --git a/sys/dev/ste/if_ste.c b/sys/dev/ste/if_ste.c
index a6fc00b..03e4eaa 100644
--- a/sys/dev/ste/if_ste.c
+++ b/sys/dev/ste/if_ste.c
@@ -161,16 +161,12 @@ static device_method_t ste_methods[] = {
DEVMETHOD(device_suspend, ste_suspend),
DEVMETHOD(device_resume, ste_resume),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, ste_miibus_readreg),
DEVMETHOD(miibus_writereg, ste_miibus_writereg),
DEVMETHOD(miibus_statchg, ste_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t ste_driver = {
diff --git a/sys/dev/stge/if_stge.c b/sys/dev/stge/if_stge.c
index b18da27..28e9584 100644
--- a/sys/dev/stge/if_stge.c
+++ b/sys/dev/stge/if_stge.c
@@ -214,7 +214,7 @@ static device_method_t stge_methods[] = {
DEVMETHOD(miibus_writereg, stge_miibus_writereg),
DEVMETHOD(miibus_statchg, stge_miibus_statchg),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t stge_driver = {
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
index 3928d91..4910914 100644
--- a/sys/dev/syscons/syscons.c
+++ b/sys/dev/syscons/syscons.c
@@ -185,6 +185,7 @@ static void scshutdown(void *, int);
static void scsuspend(void *);
static void scresume(void *);
static u_int scgetc(sc_softc_t *sc, u_int flags);
+static void sc_puts(scr_stat *scp, u_char *buf, int len, int kernel);
#define SCGETC_CN 1
#define SCGETC_NONBLOCK 2
static void sccnupdate(scr_stat *scp);
@@ -228,6 +229,8 @@ static cn_init_t sc_cninit;
static cn_term_t sc_cnterm;
static cn_getc_t sc_cngetc;
static cn_putc_t sc_cnputc;
+static cn_grab_t sc_cngrab;
+static cn_ungrab_t sc_cnungrab;
CONSOLE_DRIVER(sc);
@@ -1608,6 +1611,58 @@ sc_cnterm(struct consdev *cp)
}
static void
+sc_cngrab(struct consdev *cp)
+{
+ scr_stat *scp;
+
+ if (!cold &&
+ sc_console->sc->cur_scp->index != sc_console->index &&
+ sc_console->sc->cur_scp->smode.mode == VT_AUTO &&
+ sc_console->smode.mode == VT_AUTO)
+ sc_switch_scr(sc_console->sc, sc_console->index);
+
+ scp = sc_console->sc->cur_scp;
+
+ if (scp->sc->kbd == NULL)
+ return;
+
+ if (scp->grabbed++ > 0)
+ return;
+
+ /*
+ * Make sure the keyboard is accessible even when the kbd device
+ * driver is disabled.
+ */
+ kbdd_enable(scp->sc->kbd);
+
+ /* we shall always use the keyboard in the XLATE mode here */
+ scp->kbd_prev_mode = scp->kbd_mode;
+ scp->kbd_mode = K_XLATE;
+ (void)kbdd_ioctl(scp->sc->kbd, KDSKBMODE, (caddr_t)&scp->kbd_mode);
+
+ kbdd_poll(scp->sc->kbd, TRUE);
+}
+
+static void
+sc_cnungrab(struct consdev *cp)
+{
+ scr_stat *scp;
+
+ scp = sc_console->sc->cur_scp; /* XXX */
+ if (scp->sc->kbd == NULL)
+ return;
+
+ if (--scp->grabbed > 0)
+ return;
+
+ kbdd_poll(scp->sc->kbd, FALSE);
+
+ scp->kbd_mode = scp->kbd_prev_mode;
+ (void)kbdd_ioctl(scp->sc->kbd, KDSKBMODE, (caddr_t)&scp->kbd_mode);
+ kbdd_disable(scp->sc->kbd);
+}
+
+static void
sc_cnputc(struct consdev *cd, int c)
{
u_char buf[1];
@@ -1662,7 +1717,6 @@ sc_cngetc(struct consdev *cd)
static int fkeycp;
scr_stat *scp;
const u_char *p;
- int cur_mode;
int s = spltty(); /* block sckbdevent and scrn_timer while we poll */
int c;
@@ -1686,25 +1740,7 @@ sc_cngetc(struct consdev *cd)
return -1;
}
- /*
- * Make sure the keyboard is accessible even when the kbd device
- * driver is disabled.
- */
- kbdd_enable(scp->sc->kbd);
-
- /* we shall always use the keyboard in the XLATE mode here */
- cur_mode = scp->kbd_mode;
- scp->kbd_mode = K_XLATE;
- (void)kbdd_ioctl(scp->sc->kbd, KDSKBMODE, (caddr_t)&scp->kbd_mode);
-
- kbdd_poll(scp->sc->kbd, TRUE);
c = scgetc(scp->sc, SCGETC_CN | SCGETC_NONBLOCK);
- kbdd_poll(scp->sc->kbd, FALSE);
-
- scp->kbd_mode = cur_mode;
- (void)kbdd_ioctl(scp->sc->kbd, KDSKBMODE, (caddr_t)&scp->kbd_mode);
- kbdd_disable(scp->sc->kbd);
- splx(s);
switch (KEYFLAGS(c)) {
case 0: /* normal char */
@@ -2603,7 +2639,7 @@ exchange_scr(sc_softc_t *sc)
mark_all(scp);
}
-void
+static void
sc_puts(scr_stat *scp, u_char *buf, int len, int kernel)
{
int need_unlock = 0;
diff --git a/sys/dev/syscons/syscons.h b/sys/dev/syscons/syscons.h
index 79f531b..e88ac43 100644
--- a/sys/dev/syscons/syscons.h
+++ b/sys/dev/syscons/syscons.h
@@ -301,7 +301,9 @@ typedef struct scr_stat {
void *ts;
int status; /* status (bitfield) */
+ int grabbed;
int kbd_mode; /* keyboard I/O mode */
+ int kbd_prev_mode; /* keyboard I/O mode */
int cursor_pos; /* cursor buffer position */
int cursor_oldpos; /* cursor old buffer position */
@@ -562,7 +564,6 @@ void sc_save_font(scr_stat *scp, int page, int size, int width,
void sc_show_font(scr_stat *scp, int page);
void sc_touch_scrn_saver(void);
-void sc_puts(scr_stat *scp, u_char *buf, int len, int kernel);
void sc_draw_cursor_image(scr_stat *scp);
void sc_remove_cursor_image(scr_stat *scp);
void sc_set_cursor_image(scr_stat *scp);
diff --git a/sys/dev/ti/if_ti.c b/sys/dev/ti/if_ti.c
index d57be53..ead6901 100644
--- a/sys/dev/ti/if_ti.c
+++ b/sys/dev/ti/if_ti.c
@@ -1562,7 +1562,6 @@ ti_newbuf_jumbo(struct ti_softc *sc, int idx, struct mbuf *m_old)
struct mbuf *m[3] = {NULL, NULL, NULL};
struct ti_rx_desc_ext *r;
vm_page_t frame;
- static int color;
/* 1 extra buf to make nobufs easy*/
struct sf_buf *sf[3] = {NULL, NULL, NULL};
int i;
@@ -1605,7 +1604,7 @@ ti_newbuf_jumbo(struct ti_softc *sc, int idx, struct mbuf *m_old)
"failed -- packet dropped!\n");
goto nobufs;
}
- frame = vm_page_alloc(NULL, color++,
+ frame = vm_page_alloc(NULL, 0,
VM_ALLOC_INTERRUPT | VM_ALLOC_NOOBJ |
VM_ALLOC_WIRED);
if (frame == NULL) {
diff --git a/sys/dev/tl/if_tl.c b/sys/dev/tl/if_tl.c
index b5ffc2c..4ab97e4 100644
--- a/sys/dev/tl/if_tl.c
+++ b/sys/dev/tl/if_tl.c
@@ -348,16 +348,12 @@ static device_method_t tl_methods[] = {
DEVMETHOD(device_detach, tl_detach),
DEVMETHOD(device_shutdown, tl_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, tl_miibus_readreg),
DEVMETHOD(miibus_writereg, tl_miibus_writereg),
DEVMETHOD(miibus_statchg, tl_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t tl_driver = {
diff --git a/sys/dev/tsec/if_tsec_fdt.c b/sys/dev/tsec/if_tsec_fdt.c
index b320a25..55132eb 100644
--- a/sys/dev/tsec/if_tsec_fdt.c
+++ b/sys/dev/tsec/if_tsec_fdt.c
@@ -88,15 +88,12 @@ static device_method_t tsec_methods[] = {
DEVMETHOD(device_suspend, tsec_suspend),
DEVMETHOD(device_resume, tsec_resume),
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, tsec_miibus_readreg),
DEVMETHOD(miibus_writereg, tsec_miibus_writereg),
DEVMETHOD(miibus_statchg, tsec_miibus_statchg),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t tsec_fdt_driver = {
diff --git a/sys/dev/twa/tw_osl.h b/sys/dev/twa/tw_osl.h
index 1cc40fb..8927c76 100644
--- a/sys/dev/twa/tw_osl.h
+++ b/sys/dev/twa/tw_osl.h
@@ -153,7 +153,7 @@ struct twa_softc {
struct mtx sim_lock_handle;/* sim lock shared with cam */
struct mtx *sim_lock;/* ptr to sim lock */
- struct callout watchdog_callout[2]; /* For command timout */
+ struct callout watchdog_callout[2]; /* For command timeout */
TW_UINT32 watchdog_index;
#ifdef TW_OSL_DEBUG
diff --git a/sys/dev/twa/tw_osl_freebsd.c b/sys/dev/twa/tw_osl_freebsd.c
index 5651b7f..0d018b6 100644
--- a/sys/dev/twa/tw_osl_freebsd.c
+++ b/sys/dev/twa/tw_osl_freebsd.c
@@ -25,10 +25,11 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD$
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
/*
* AMCC'S 3ware driver for 9000 series storage controllers.
*
@@ -195,9 +196,7 @@ static device_method_t twa_methods[] = {
DEVMETHOD(device_detach, twa_detach),
DEVMETHOD(device_shutdown, twa_shutdown),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t twa_pci_driver = {
diff --git a/sys/dev/twe/twe_freebsd.c b/sys/dev/twe/twe_freebsd.c
index a7b9c91..29dab58 100644
--- a/sys/dev/twe/twe_freebsd.c
+++ b/sys/dev/twe/twe_freebsd.c
@@ -25,10 +25,11 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD$
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
/*
* FreeBSD-specific code.
*/
@@ -135,9 +136,7 @@ static device_method_t twe_methods[] = {
DEVMETHOD(device_suspend, twe_suspend),
DEVMETHOD(device_resume, twe_resume),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t twe_pci_driver = {
diff --git a/sys/dev/tws/tws.c b/sys/dev/tws/tws.c
index 750f878..2a2384a 100644
--- a/sys/dev/tws/tws.c
+++ b/sys/dev/tws/tws.c
@@ -30,10 +30,10 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
-*/
+ */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
#include <dev/tws/tws.h>
#include <dev/tws/tws_services.h>
@@ -685,6 +685,7 @@ tws_init_reqs(struct tws_softc *sc, u_int32_t dma_mem_size)
{
if (bus_dmamap_create(sc->data_tag, 0, &sc->reqs[i].dma_map)) {
/* log a ENOMEM failure msg here */
+ mtx_unlock(&sc->q_lock);
return(FAILURE);
}
sc->reqs[i].cmd_pkt = &cmd_buf[i];
@@ -882,9 +883,7 @@ static device_method_t tws_methods[] = {
DEVMETHOD(device_suspend, tws_suspend),
DEVMETHOD(device_resume, tws_resume),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t tws_driver = {
diff --git a/sys/dev/tws/tws.h b/sys/dev/tws/tws.h
index cf9f727..6d0f6ad 100644
--- a/sys/dev/tws/tws.h
+++ b/sys/dev/tws/tws.h
@@ -205,7 +205,11 @@ struct tws_init_connect_info {
/* ------------ boolean types ------------------- */
+#ifndef __bool_true_false_are_defined
typedef enum _boolean { false, true } boolean;
+#else
+#define boolean bool
+#endif
enum err { SUCCESS, FAILURE };
/* ----------- per instance data ---------------- */
diff --git a/sys/dev/uart/uart_bus_fdt.c b/sys/dev/uart/uart_bus_fdt.c
index f8204b1..8bb62ea 100644
--- a/sys/dev/uart/uart_bus_fdt.c
+++ b/sys/dev/uart/uart_bus_fdt.c
@@ -155,11 +155,11 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
/*
* Retrieve /chosen/std{in,out}.
*/
- if ((chosen = OF_finddevice("/chosen")) == 0)
+ if ((chosen = OF_finddevice("/chosen")) == -1)
return (ENXIO);
if (OF_getprop(chosen, "stdin", buf, sizeof(buf)) <= 0)
return (ENXIO);
- if ((node = OF_finddevice(buf)) == 0)
+ if ((node = OF_finddevice(buf)) == -1)
return (ENXIO);
if (OF_getprop(chosen, "stdout", buf, sizeof(buf)) <= 0)
return (ENXIO);
@@ -186,7 +186,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
di->bas.chan = 0;
di->bas.regshft = (u_int)shift;
- di->baudrate = 0;
+ di->baudrate = br;
di->bas.rclk = (u_int)rclk;
di->ops = uart_getops(class);
di->databits = 8;
diff --git a/sys/dev/uart/uart_bus_pci.c b/sys/dev/uart/uart_bus_pci.c
index 7c5b8b3..d308ce9 100644
--- a/sys/dev/uart/uart_bus_pci.c
+++ b/sys/dev/uart/uart_bus_pci.c
@@ -111,6 +111,11 @@ static struct pci_id pci_ns8250_ids[] = {
{ 0x1415, 0x950b, 0xffff, 0, "Oxford Semiconductor OXCB950 Cardbus 16950 UART",
0x10, 16384000 },
{ 0x151f, 0x0000, 0xffff, 0, "TOPIC Semiconductor TP560 56k modem", 0x10 },
+{ 0x8086, 0x1c3d, 0xffff, 0, "Intel AMT - KT Controller", 0x10 },
+{ 0x8086, 0x8811, 0xffff, 0, "Intel EG20T Serial Port 0", 0x10 },
+{ 0x8086, 0x8812, 0xffff, 0, "Intel EG20T Serial Port 1", 0x10 },
+{ 0x8086, 0x8813, 0xffff, 0, "Intel EG20T Serial Port 2", 0x10 },
+{ 0x8086, 0x8814, 0xffff, 0, "Intel EG20T Serial Port 3", 0x10 },
{ 0x9710, 0x9820, 0x1000, 1, "NetMos NM9820 Serial Port", 0x10 },
{ 0x9710, 0x9835, 0x1000, 1, "NetMos NM9835 Serial Port", 0x10 },
{ 0x9710, 0x9865, 0xa000, 0x1000, "NetMos NM9865 Serial Port", 0x10 },
diff --git a/sys/dev/uart/uart_cpu_sparc64.c b/sys/dev/uart/uart_cpu_sparc64.c
index 582e919..6cbfbe2 100644
--- a/sys/dev/uart/uart_cpu_sparc64.c
+++ b/sys/dev/uart/uart_cpu_sparc64.c
@@ -71,7 +71,7 @@ uart_cpu_channel(char *dev)
if ((aliases = OF_finddevice("/aliases")) != -1)
(void)OF_getprop(aliases, dev, alias, sizeof(alias));
len = strlen(alias);
- if ((p = rindex(alias, ':')) == NULL)
+ if ((p = strrchr(alias, ':')) == NULL)
return (0);
p++;
if (p - alias == len - 1 && (*p == 'a' || *p == 'b'))
diff --git a/sys/dev/uart/uart_subr.c b/sys/dev/uart/uart_subr.c
index 6b32c24..5a3f16f 100644
--- a/sys/dev/uart/uart_subr.c
+++ b/sys/dev/uart/uart_subr.c
@@ -56,13 +56,13 @@ static struct uart_class *uart_classes[] = {
static size_t uart_nclasses = sizeof(uart_classes) / sizeof(uart_classes[0]);
static bus_addr_t
-uart_parse_addr(__const char **p)
+uart_parse_addr(const char **p)
{
return (strtoul(*p, (char**)(uintptr_t)p, 0));
}
static struct uart_class *
-uart_parse_class(struct uart_class *class, __const char **p)
+uart_parse_class(struct uart_class *class, const char **p)
{
struct uart_class *uc;
const char *nm;
@@ -84,13 +84,13 @@ uart_parse_class(struct uart_class *class, __const char **p)
}
static long
-uart_parse_long(__const char **p)
+uart_parse_long(const char **p)
{
return (strtol(*p, (char**)(uintptr_t)p, 0));
}
static int
-uart_parse_parity(__const char **p)
+uart_parse_parity(const char **p)
{
if (!strncmp(*p, "even", 4)) {
*p += 4;
@@ -116,7 +116,7 @@ uart_parse_parity(__const char **p)
}
static int
-uart_parse_tag(__const char **p)
+uart_parse_tag(const char **p)
{
int tag;
@@ -192,7 +192,7 @@ out:
int
uart_getenv(int devtype, struct uart_devinfo *di, struct uart_class *class)
{
- __const char *spec;
+ const char *spec;
bus_addr_t addr = ~0U;
int error;
diff --git a/sys/dev/uart/uart_tty.c b/sys/dev/uart/uart_tty.c
index 2170108..97ee08d 100644
--- a/sys/dev/uart/uart_tty.c
+++ b/sys/dev/uart/uart_tty.c
@@ -54,6 +54,8 @@ static cn_init_t uart_cninit;
static cn_term_t uart_cnterm;
static cn_getc_t uart_cngetc;
static cn_putc_t uart_cnputc;
+static cn_grab_t uart_cngrab;
+static cn_ungrab_t uart_cnungrab;
CONSOLE_DRIVER(uart);
@@ -108,6 +110,16 @@ uart_cnterm(struct consdev *cp)
}
static void
+uart_cngrab(struct consdev *cp)
+{
+}
+
+static void
+uart_cnungrab(struct consdev *cp)
+{
+}
+
+static void
uart_cnputc(struct consdev *cp, int c)
{
diff --git a/sys/dev/ubsec/ubsec.c b/sys/dev/ubsec/ubsec.c
index 49e9dad..eda14c0 100644
--- a/sys/dev/ubsec/ubsec.c
+++ b/sys/dev/ubsec/ubsec.c
@@ -123,17 +123,13 @@ static device_method_t ubsec_methods[] = {
DEVMETHOD(device_resume, ubsec_resume),
DEVMETHOD(device_shutdown, ubsec_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* crypto device methods */
DEVMETHOD(cryptodev_newsession, ubsec_newsession),
DEVMETHOD(cryptodev_freesession,ubsec_freesession),
DEVMETHOD(cryptodev_process, ubsec_process),
DEVMETHOD(cryptodev_kprocess, ubsec_kprocess),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t ubsec_driver = {
"ubsec",
diff --git a/sys/dev/usb/controller/at91dci.c b/sys/dev/usb/controller/at91dci.c
index f831115..d325812 100644
--- a/sys/dev/usb/controller/at91dci.c
+++ b/sys/dev/usb/controller/at91dci.c
@@ -1461,16 +1461,16 @@ at91dci_uninit(struct at91dci_softc *sc)
USB_BUS_UNLOCK(&sc->sc_bus);
}
-void
+static void
at91dci_suspend(struct at91dci_softc *sc)
{
- return;
+ /* TODO */
}
-void
+static void
at91dci_resume(struct at91dci_softc *sc)
{
- return;
+ /* TODO */
}
static void
@@ -2306,6 +2306,26 @@ at91dci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc,
}
}
+static void
+at91dci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
+{
+ struct at91dci_softc *sc = AT9100_DCI_BUS2SC(bus);
+
+ switch (state) {
+ case USB_HW_POWER_SUSPEND:
+ at91dci_suspend(sc);
+ break;
+ case USB_HW_POWER_SHUTDOWN:
+ at91dci_uninit(sc);
+ break;
+ case USB_HW_POWER_RESUME:
+ at91dci_resume(sc);
+ break;
+ default:
+ break;
+ }
+}
+
struct usb_bus_methods at91dci_bus_methods =
{
.endpoint_init = &at91dci_ep_init,
@@ -2316,4 +2336,5 @@ struct usb_bus_methods at91dci_bus_methods =
.clear_stall = &at91dci_clear_stall,
.roothub_exec = &at91dci_roothub_exec,
.xfer_poll = &at91dci_do_poll,
+ .set_hw_power_sleep = &at91dci_set_hw_power_sleep,
};
diff --git a/sys/dev/usb/controller/at91dci.h b/sys/dev/usb/controller/at91dci.h
index a1603aa..b079eb5 100644
--- a/sys/dev/usb/controller/at91dci.h
+++ b/sys/dev/usb/controller/at91dci.h
@@ -235,8 +235,6 @@ struct at91dci_softc {
usb_error_t at91dci_init(struct at91dci_softc *sc);
void at91dci_uninit(struct at91dci_softc *sc);
-void at91dci_suspend(struct at91dci_softc *sc);
-void at91dci_resume(struct at91dci_softc *sc);
void at91dci_interrupt(struct at91dci_softc *sc);
void at91dci_vbus_interrupt(struct at91dci_softc *sc, uint8_t is_on);
diff --git a/sys/dev/usb/controller/at91dci_atmelarm.c b/sys/dev/usb/controller/at91dci_atmelarm.c
index ee3feb8..da9ba36 100644
--- a/sys/dev/usb/controller/at91dci_atmelarm.c
+++ b/sys/dev/usb/controller/at91dci_atmelarm.c
@@ -77,7 +77,6 @@ __FBSDID("$FreeBSD$");
static device_probe_t at91_udp_probe;
static device_attach_t at91_udp_attach;
static device_detach_t at91_udp_detach;
-static device_shutdown_t at91_udp_shutdown;
struct at91_udp_softc {
struct at91dci_softc sc_dci; /* must be first */
@@ -271,7 +270,7 @@ at91_udp_detach(device_t dev)
device_delete_child(dev, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(dev);
+ device_delete_children(dev);
/* disable Transceiver */
AT91_UDP_WRITE_4(&sc->sc_dci, AT91_UDP_TXVC, AT91_UDP_TXVC_DIS);
@@ -324,38 +323,22 @@ at91_udp_detach(device_t dev)
return (0);
}
-static int
-at91_udp_shutdown(device_t dev)
-{
- struct at91_udp_softc *sc = device_get_softc(dev);
- int err;
-
- err = bus_generic_shutdown(dev);
- if (err)
- return (err);
-
- at91dci_uninit(&sc->sc_dci);
-
- return (0);
-}
-
static device_method_t at91_udp_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, at91_udp_probe),
DEVMETHOD(device_attach, at91_udp_attach),
DEVMETHOD(device_detach, at91_udp_detach),
- DEVMETHOD(device_shutdown, at91_udp_shutdown),
-
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t at91_udp_driver = {
- "at91_udp",
- at91_udp_methods,
- sizeof(struct at91_udp_softc),
+ .name = "at91_udp",
+ .methods = at91_udp_methods,
+ .size = sizeof(struct at91_udp_softc),
};
static devclass_t at91_udp_devclass;
diff --git a/sys/dev/usb/controller/atmegadci.c b/sys/dev/usb/controller/atmegadci.c
index ad53fc3..7db3bdb 100644
--- a/sys/dev/usb/controller/atmegadci.c
+++ b/sys/dev/usb/controller/atmegadci.c
@@ -1352,16 +1352,16 @@ atmegadci_uninit(struct atmegadci_softc *sc)
USB_BUS_UNLOCK(&sc->sc_bus);
}
-void
+static void
atmegadci_suspend(struct atmegadci_softc *sc)
{
- return;
+ /* TODO */
}
-void
+static void
atmegadci_resume(struct atmegadci_softc *sc)
{
- return;
+ /* TODO */
}
static void
@@ -2126,6 +2126,26 @@ atmegadci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc
}
}
+static void
+atmegadci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
+{
+ struct atmegadci_softc *sc = ATMEGA_BUS2SC(bus);
+
+ switch (state) {
+ case USB_HW_POWER_SUSPEND:
+ atmegadci_suspend(sc);
+ break;
+ case USB_HW_POWER_SHUTDOWN:
+ atmegadci_uninit(sc);
+ break;
+ case USB_HW_POWER_RESUME:
+ atmegadci_resume(sc);
+ break;
+ default:
+ break;
+ }
+}
+
struct usb_bus_methods atmegadci_bus_methods =
{
.endpoint_init = &atmegadci_ep_init,
@@ -2136,4 +2156,5 @@ struct usb_bus_methods atmegadci_bus_methods =
.clear_stall = &atmegadci_clear_stall,
.roothub_exec = &atmegadci_roothub_exec,
.xfer_poll = &atmegadci_do_poll,
+ .set_hw_power_sleep = &atmegadci_set_hw_power_sleep,
};
diff --git a/sys/dev/usb/controller/atmegadci.h b/sys/dev/usb/controller/atmegadci.h
index 68613af..91ba030 100644
--- a/sys/dev/usb/controller/atmegadci.h
+++ b/sys/dev/usb/controller/atmegadci.h
@@ -278,8 +278,6 @@ struct atmegadci_softc {
usb_error_t atmegadci_init(struct atmegadci_softc *sc);
void atmegadci_uninit(struct atmegadci_softc *sc);
-void atmegadci_suspend(struct atmegadci_softc *sc);
-void atmegadci_resume(struct atmegadci_softc *sc);
void atmegadci_interrupt(struct atmegadci_softc *sc);
#endif /* _ATMEGADCI_H_ */
diff --git a/sys/dev/usb/controller/atmegadci_atmelarm.c b/sys/dev/usb/controller/atmegadci_atmelarm.c
index 8d033909..6c380b6 100644
--- a/sys/dev/usb/controller/atmegadci_atmelarm.c
+++ b/sys/dev/usb/controller/atmegadci_atmelarm.c
@@ -62,7 +62,6 @@ __FBSDID("$FreeBSD$");
static device_probe_t atmegadci_probe;
static device_attach_t atmegadci_attach;
static device_detach_t atmegadci_detach;
-static device_shutdown_t atmegadci_shutdown;
struct atmegadci_super_softc {
struct atmegadci_softc sc_otg; /* must be first */
@@ -164,7 +163,7 @@ atmegadci_detach(device_t dev)
device_delete_child(dev, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(dev);
+ device_delete_children(dev);
if (sc->sc_otg.sc_irq_res && sc->sc_otg.sc_intr_hdl) {
/*
@@ -193,38 +192,22 @@ atmegadci_detach(device_t dev)
return (0);
}
-static int
-atmegadci_shutdown(device_t dev)
-{
- struct atmegadci_super_softc *sc = device_get_softc(dev);
- int err;
-
- err = bus_generic_shutdown(dev);
- if (err)
- return (err);
-
- atmegadci_uninit(&sc->sc_otg);
-
- return (0);
-}
-
static device_method_t atmegadci_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, atmegadci_probe),
DEVMETHOD(device_attach, atmegadci_attach),
DEVMETHOD(device_detach, atmegadci_detach),
- DEVMETHOD(device_shutdown, atmegadci_shutdown),
-
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t atmegadci_driver = {
- "atmegadci",
- atmegadci_methods,
- sizeof(struct atmegadci_super_softc),
+ .name = "atmegadci",
+ .methods = atmegadci_methods,
+ .size = sizeof(struct atmegadci_super_softc),
};
static devclass_t atmegadci_devclass;
diff --git a/sys/dev/usb/controller/avr32dci.c b/sys/dev/usb/controller/avr32dci.c
index 26785a3..9494c30 100644
--- a/sys/dev/usb/controller/avr32dci.c
+++ b/sys/dev/usb/controller/avr32dci.c
@@ -265,7 +265,7 @@ avr32dci_set_address(struct avr32dci_softc *sc, uint8_t addr)
{
DPRINTFN(5, "addr=%d\n", addr);
- avr32dci_mod_ctrl(sc, AVR32_UDADDR_ADDEN | addr, 0);
+ avr32dci_mod_ctrl(sc, AVR32_CTRL_DEV_FADDR_EN | addr, 0);
}
static uint8_t
@@ -501,7 +501,7 @@ repeat:
}
/* allocate FIFO bank */
- AVR32_WRITE_4(sc, AVR32_EPTCLRSTA(td->ep_no), AVR32_EPTSTA_TX_BK_RDY);
+ AVR32_WRITE_4(sc, AVR32_EPTCTL(td->ep_no), AVR32_EPTCTL_TX_PK_RDY);
/* check remainder */
if (td->remainder == 0) {
@@ -754,7 +754,7 @@ avr32dci_setup_standard_chain(struct usb_xfer *xfer)
uint8_t need_sync;
DPRINTFN(9, "addr=%d endpt=%d sumlen=%d speed=%d\n",
- xfer->address, UE_GET_ADDR(xfer->endpoint),
+ xfer->address, UE_GET_ADDR(xfer->endpointno),
xfer->sumlen, usbd_get_speed(xfer->xroot->udev));
temp.max_frame_size = xfer->max_frame_size;
@@ -773,7 +773,7 @@ avr32dci_setup_standard_chain(struct usb_xfer *xfer)
temp.did_stall = !xfer->flags_int.control_stall;
sc = AVR32_BUS2SC(xfer->xroot->bus);
- ep_no = (xfer->endpoint & UE_ADDR);
+ ep_no = (xfer->endpointno & UE_ADDR);
/* check if we should prepend a setup message */
@@ -798,7 +798,7 @@ avr32dci_setup_standard_chain(struct usb_xfer *xfer)
}
if (x != xfer->nframes) {
- if (xfer->endpoint & UE_DIR_IN) {
+ if (xfer->endpointno & UE_DIR_IN) {
temp.func = &avr32dci_data_tx;
need_sync = 1;
} else {
@@ -872,7 +872,7 @@ avr32dci_setup_standard_chain(struct usb_xfer *xfer)
* Send a DATA1 message and invert the current
* endpoint direction.
*/
- if (xfer->endpoint & UE_DIR_IN) {
+ if (xfer->endpointno & UE_DIR_IN) {
temp.func = &avr32dci_data_rx;
need_sync = 0;
} else {
@@ -913,7 +913,8 @@ avr32dci_start_standard_chain(struct usb_xfer *xfer)
/* poll one time - will turn on interrupts */
if (avr32dci_xfer_do_fifo(xfer)) {
- uint8_t ep_no = xfer->endpoint & UE_ADDR_MASK;
+ uint8_t ep_no = xfer->endpointno & UE_ADDR;
+ struct avr32dci_softc *sc = AVR32_BUS2SC(xfer->xroot->bus);
avr32dci_mod_ien(sc, AVR32_INT_EPT_INT(ep_no), 0);
@@ -1012,7 +1013,7 @@ avr32dci_standard_done(struct usb_xfer *xfer)
usb_error_t err = 0;
DPRINTFN(13, "xfer=%p pipe=%p transfer done\n",
- xfer, xfer->pipe);
+ xfer, xfer->endpoint);
/* reset scanner */
@@ -1064,10 +1065,10 @@ avr32dci_device_done(struct usb_xfer *xfer, usb_error_t error)
USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED);
DPRINTFN(9, "xfer=%p, pipe=%p, error=%d\n",
- xfer, xfer->pipe, error);
+ xfer, xfer->endpoint, error);
if (xfer->flags_int.usb_mode == USB_MODE_DEVICE) {
- ep_no = (xfer->endpoint & UE_ADDR);
+ ep_no = (xfer->endpointno & UE_ADDR);
/* disable endpoint interrupt */
avr32dci_mod_ien(sc, 0, AVR32_INT_EPT_INT(ep_no));
@@ -1080,7 +1081,7 @@ avr32dci_device_done(struct usb_xfer *xfer, usb_error_t error)
static void
avr32dci_set_stall(struct usb_device *udev, struct usb_xfer *xfer,
- struct usb_endpoint *ep, uint8_t *did_stall)
+ struct usb_endpoint *pipe, uint8_t *did_stall)
{
struct avr32dci_softc *sc;
uint8_t ep_no;
@@ -1166,7 +1167,7 @@ avr32dci_clear_stall_sub(struct avr32dci_softc *sc, uint8_t ep_no,
}
static void
-avr32dci_clear_stall(struct usb_device *udev, struct usb_endpoint *ep)
+avr32dci_clear_stall(struct usb_device *udev, struct usb_endpoint *pipe)
{
struct avr32dci_softc *sc;
struct usb_endpoint_descriptor *ed;
@@ -1226,8 +1227,7 @@ avr32dci_init(struct avr32dci_softc *sc)
AVR32_INT_ENDRESET, 0);
/* reset all endpoints */
-/**INDENT** Warning@1207: Extra ) */
- AVR32_WRITE_4(sc, AVR32_EPTRST, (1 << AVR32_EP_MAX) - 1));
+ AVR32_WRITE_4(sc, AVR32_EPTRST, (1 << AVR32_EP_MAX) - 1);
/* disable all endpoints */
for (n = 0; n != AVR32_EP_MAX; n++) {
@@ -1262,8 +1262,7 @@ avr32dci_uninit(struct avr32dci_softc *sc)
avr32dci_mod_ien(sc, 0, 0xFFFFFFFF);
/* reset all endpoints */
-/**INDENT** Warning@1242: Extra ) */
- AVR32_WRITE_4(sc, AVR32_EPTRST, (1 << AVR32_EP_MAX) - 1));
+ AVR32_WRITE_4(sc, AVR32_EPTRST, (1 << AVR32_EP_MAX) - 1);
/* disable all endpoints */
for (n = 0; n != AVR32_EP_MAX; n++) {
@@ -1284,16 +1283,16 @@ avr32dci_uninit(struct avr32dci_softc *sc)
USB_BUS_UNLOCK(&sc->sc_bus);
}
-void
+static void
avr32dci_suspend(struct avr32dci_softc *sc)
{
- return;
+ /* TODO */
}
-void
+static void
avr32dci_resume(struct avr32dci_softc *sc)
{
- return;
+ /* TODO */
}
static void
@@ -1369,10 +1368,10 @@ avr32dci_device_isoc_fs_enter(struct usb_xfer *xfer)
uint8_t ep_no;
DPRINTFN(6, "xfer=%p next=%d nframes=%d\n",
- xfer, xfer->pipe->isoc_next, xfer->nframes);
+ xfer, xfer->endpoint->isoc_next, xfer->nframes);
/* get the current frame index */
- ep_no = xfer->endpoint & UE_ADDR_MASK;
+ ep_no = xfer->endpointno & UE_ADDR;
nframes = (AVR32_READ_4(sc, AVR32_FNUM) / 8);
nframes &= AVR32_FRAME_MASK;
@@ -1381,9 +1380,9 @@ avr32dci_device_isoc_fs_enter(struct usb_xfer *xfer)
* check if the frame index is within the window where the frames
* will be inserted
*/
- temp = (nframes - xfer->pipe->isoc_next) & AVR32_FRAME_MASK;
+ temp = (nframes - xfer->endpoint->isoc_next) & AVR32_FRAME_MASK;
- if ((xfer->pipe->is_synced == 0) ||
+ if ((xfer->endpoint->is_synced == 0) ||
(temp < xfer->nframes)) {
/*
* If there is data underflow or the pipe queue is
@@ -1391,15 +1390,15 @@ avr32dci_device_isoc_fs_enter(struct usb_xfer *xfer)
* of the current frame position. Else two isochronous
* transfers might overlap.
*/
- xfer->pipe->isoc_next = (nframes + 3) & AVR32_FRAME_MASK;
- xfer->pipe->is_synced = 1;
- DPRINTFN(3, "start next=%d\n", xfer->pipe->isoc_next);
+ xfer->endpoint->isoc_next = (nframes + 3) & AVR32_FRAME_MASK;
+ xfer->endpoint->is_synced = 1;
+ DPRINTFN(3, "start next=%d\n", xfer->endpoint->isoc_next);
}
/*
* compute how many milliseconds the insertion is ahead of the
* current frame position:
*/
- temp = (xfer->pipe->isoc_next - nframes) & AVR32_FRAME_MASK;
+ temp = (xfer->endpoint->isoc_next - nframes) & AVR32_FRAME_MASK;
/*
* pre-compute when the isochronous transfer will be finished:
@@ -1409,7 +1408,7 @@ avr32dci_device_isoc_fs_enter(struct usb_xfer *xfer)
xfer->nframes;
/* compute frame number for next insertion */
- xfer->pipe->isoc_next += xfer->nframes;
+ xfer->endpoint->isoc_next += xfer->nframes;
/* setup TDs */
avr32dci_setup_standard_chain(xfer);
@@ -1832,7 +1831,7 @@ tr_handle_clear_port_feature:
AVR32_WRITE_4(sc, AVR32_EPTCLRSTA(0), AVR32_EPTSTA_FRCESTALL);
/* configure */
- AVR32_WRITE_4(sc, AVR32_EPTCFG(0), AVR32_EPTCFG_TYPE_CONTROL |
+ AVR32_WRITE_4(sc, AVR32_EPTCFG(0), AVR32_EPTCFG_TYPE_CTRL |
AVR32_EPTCFG_NBANK(1) | AVR32_EPTCFG_EPSIZE(6));
temp = AVR32_READ_4(sc, AVR32_EPTCFG(0));
@@ -1974,7 +1973,7 @@ avr32dci_xfer_setup(struct usb_setup_params *parm)
/*
* compute maximum number of TDs
*/
- if ((xfer->pipe->edesc->bmAttributes & UE_XFERTYPE) == UE_CONTROL) {
+ if ((xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE) == UE_CONTROL) {
ntd = xfer->nframes + 1 /* STATUS */ + 1 /* SYNC 1 */
+ 1 /* SYNC 2 */ ;
@@ -1997,7 +1996,7 @@ avr32dci_xfer_setup(struct usb_setup_params *parm)
/*
* get profile stuff
*/
- ep_no = xfer->endpoint & UE_ADDR;
+ ep_no = xfer->endpointno & UE_ADDR;
avr32dci_get_hw_ep_profile(parm->udev, &pf, ep_no);
if (pf == NULL) {
@@ -2045,7 +2044,7 @@ avr32dci_xfer_unsetup(struct usb_xfer *xfer)
static void
avr32dci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc,
- struct usb_endpoint *ep)
+ struct usb_endpoint *pipe)
{
struct avr32dci_softc *sc = AVR32_BUS2SC(udev->bus);
@@ -2072,6 +2071,26 @@ avr32dci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc,
}
}
+static void
+avr32dci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
+{
+ struct avr32dci_softc *sc = AVR32_BUS2SC(bus);
+
+ switch (state) {
+ case USB_HW_POWER_SUSPEND:
+ avr32dci_suspend(sc);
+ break;
+ case USB_HW_POWER_SHUTDOWN:
+ avr32dci_uninit(sc);
+ break;
+ case USB_HW_POWER_RESUME:
+ avr32dci_resume(sc);
+ break;
+ default:
+ break;
+ }
+}
+
struct usb_bus_methods avr32dci_bus_methods =
{
.endpoint_init = &avr32dci_ep_init,
@@ -2082,4 +2101,5 @@ struct usb_bus_methods avr32dci_bus_methods =
.clear_stall = &avr32dci_clear_stall,
.roothub_exec = &avr32dci_roothub_exec,
.xfer_poll = &avr32dci_do_poll,
+ .set_hw_power_sleep = &avr32dci_set_hw_power_sleep,
};
diff --git a/sys/dev/usb/controller/avr32dci.h b/sys/dev/usb/controller/avr32dci.h
index 6672fa7..2d80344 100644
--- a/sys/dev/usb/controller/avr32dci.h
+++ b/sys/dev/usb/controller/avr32dci.h
@@ -166,6 +166,7 @@ struct avr32dci_td {
uint32_t offset;
uint32_t remainder;
uint16_t max_packet_size;
+ uint8_t bank_shift;
uint8_t error:1;
uint8_t alt_next:1;
uint8_t short_pkt:1;
@@ -246,8 +247,6 @@ struct avr32dci_softc {
usb_error_t avr32dci_init(struct avr32dci_softc *sc);
void avr32dci_uninit(struct avr32dci_softc *sc);
-void avr32dci_suspend(struct avr32dci_softc *sc);
-void avr32dci_resume(struct avr32dci_softc *sc);
void avr32dci_interrupt(struct avr32dci_softc *sc);
void avr32dci_vbus_interrupt(struct avr32dci_softc *sc, uint8_t is_on);
diff --git a/sys/dev/usb/controller/ehci.c b/sys/dev/usb/controller/ehci.c
index 7e682f4..f59c801 100644
--- a/sys/dev/usb/controller/ehci.c
+++ b/sys/dev/usb/controller/ehci.c
@@ -188,7 +188,7 @@ ehci_reset(ehci_softc_t *sc)
EOWRITE4(sc, EHCI_USBCMD, EHCI_CMD_HCRESET);
for (i = 0; i < 100; i++) {
- usb_pause_mtx(NULL, hz / 1000);
+ usb_pause_mtx(NULL, hz / 128);
hcr = EOREAD4(sc, EHCI_USBCMD) & EHCI_CMD_HCRESET;
if (!hcr) {
if (sc->sc_flags & (EHCI_SCFLG_SETMODE | EHCI_SCFLG_BIGEMMIO)) {
@@ -212,7 +212,7 @@ ehci_reset(ehci_softc_t *sc)
return (0);
}
}
- device_printf(sc->sc_bus.bdev, "reset timeout\n");
+ device_printf(sc->sc_bus.bdev, "Reset timeout\n");
return (USB_ERR_IOERROR);
}
@@ -224,7 +224,7 @@ ehci_hcreset(ehci_softc_t *sc)
EOWRITE4(sc, EHCI_USBCMD, 0); /* Halt controller */
for (i = 0; i < 100; i++) {
- usb_pause_mtx(NULL, hz / 1000);
+ usb_pause_mtx(NULL, hz / 128);
hcr = EOREAD4(sc, EHCI_USBSTS) & EHCI_STS_HCH;
if (hcr)
break;
@@ -237,7 +237,60 @@ ehci_hcreset(ehci_softc_t *sc)
*/
device_printf(sc->sc_bus.bdev, "stop timeout\n");
- return ehci_reset(sc);
+ return (ehci_reset(sc));
+}
+
+static int
+ehci_init_sub(struct ehci_softc *sc)
+{
+ struct usb_page_search buf_res;
+ uint32_t cparams;
+ uint32_t hcr;
+ uint8_t i;
+
+ cparams = EREAD4(sc, EHCI_HCCPARAMS);
+
+ DPRINTF("cparams=0x%x\n", cparams);
+
+ if (EHCI_HCC_64BIT(cparams)) {
+ DPRINTF("HCC uses 64-bit structures\n");
+
+ /* MUST clear segment register if 64 bit capable */
+ EWRITE4(sc, EHCI_CTRLDSSEGMENT, 0);
+ }
+
+ usbd_get_page(&sc->sc_hw.pframes_pc, 0, &buf_res);
+ EOWRITE4(sc, EHCI_PERIODICLISTBASE, buf_res.physaddr);
+
+ usbd_get_page(&sc->sc_hw.async_start_pc, 0, &buf_res);
+ EOWRITE4(sc, EHCI_ASYNCLISTADDR, buf_res.physaddr | EHCI_LINK_QH);
+
+ /* enable interrupts */
+ EOWRITE4(sc, EHCI_USBINTR, sc->sc_eintrs);
+
+ /* turn on controller */
+ EOWRITE4(sc, EHCI_USBCMD,
+ EHCI_CMD_ITC_1 | /* 1 microframes interrupt delay */
+ (EOREAD4(sc, EHCI_USBCMD) & EHCI_CMD_FLS_M) |
+ EHCI_CMD_ASE |
+ EHCI_CMD_PSE |
+ EHCI_CMD_RS);
+
+ /* Take over port ownership */
+ EOWRITE4(sc, EHCI_CONFIGFLAG, EHCI_CONF_CF);
+
+ for (i = 0; i < 100; i++) {
+ usb_pause_mtx(NULL, hz / 128);
+ hcr = EOREAD4(sc, EHCI_USBSTS) & EHCI_STS_HCH;
+ if (!hcr) {
+ break;
+ }
+ }
+ if (hcr) {
+ device_printf(sc->sc_bus.bdev, "Run timeout\n");
+ return (USB_ERR_IOERROR);
+ }
+ return (USB_ERR_NORMAL_COMPLETION);
}
usb_error_t
@@ -246,8 +299,6 @@ ehci_init(ehci_softc_t *sc)
struct usb_page_search buf_res;
uint32_t version;
uint32_t sparams;
- uint32_t cparams;
- uint32_t hcr;
uint16_t i;
uint16_t x;
uint16_t y;
@@ -279,15 +330,6 @@ ehci_init(ehci_softc_t *sc)
DPRINTF("sparams=0x%x\n", sparams);
sc->sc_noport = EHCI_HCS_N_PORTS(sparams);
- cparams = EREAD4(sc, EHCI_HCCPARAMS);
- DPRINTF("cparams=0x%x\n", cparams);
-
- if (EHCI_HCC_64BIT(cparams)) {
- DPRINTF("HCC uses 64-bit structures\n");
-
- /* MUST clear segment register if 64 bit capable */
- EWRITE4(sc, EHCI_CTRLDSSEGMENT, 0);
- }
sc->sc_bus.usbrev = USB_REV_2_0;
/* Reset the controller */
@@ -464,9 +506,6 @@ ehci_init(ehci_softc_t *sc)
[i & (EHCI_VIRTUAL_FRAMELIST_COUNT - 1)]->itd_self;
}
}
- /* setup sync list pointer */
- EOWRITE4(sc, EHCI_PERIODICLISTBASE, buf_res.physaddr);
-
usbd_get_page(&sc->sc_hw.async_start_pc, 0, &buf_res);
if (1) {
@@ -511,35 +550,8 @@ ehci_init(ehci_softc_t *sc)
}
#endif
- /* setup async list pointer */
- EOWRITE4(sc, EHCI_ASYNCLISTADDR, buf_res.physaddr | EHCI_LINK_QH);
-
-
- /* enable interrupts */
- EOWRITE4(sc, EHCI_USBINTR, sc->sc_eintrs);
-
- /* turn on controller */
- EOWRITE4(sc, EHCI_USBCMD,
- EHCI_CMD_ITC_1 | /* 1 microframes interrupt delay */
- (EOREAD4(sc, EHCI_USBCMD) & EHCI_CMD_FLS_M) |
- EHCI_CMD_ASE |
- EHCI_CMD_PSE |
- EHCI_CMD_RS);
-
- /* Take over port ownership */
- EOWRITE4(sc, EHCI_CONFIGFLAG, EHCI_CONF_CF);
-
- for (i = 0; i < 100; i++) {
- usb_pause_mtx(NULL, hz / 1000);
- hcr = EOREAD4(sc, EHCI_USBSTS) & EHCI_STS_HCH;
- if (!hcr) {
- break;
- }
- }
- if (hcr) {
- device_printf(sc->sc_bus.bdev, "run timeout\n");
- return (USB_ERR_IOERROR);
- }
+ /* finial setup */
+ err = ehci_init_sub(sc);
if (!err) {
/* catch any lost interrupts */
@@ -573,137 +585,28 @@ ehci_detach(ehci_softc_t *sc)
usb_callout_drain(&sc->sc_tmo_poll);
}
-void
+static void
ehci_suspend(ehci_softc_t *sc)
{
- uint32_t cmd;
- uint32_t hcr;
- uint8_t i;
-
- USB_BUS_LOCK(&sc->sc_bus);
-
- for (i = 1; i <= sc->sc_noport; i++) {
- cmd = EOREAD4(sc, EHCI_PORTSC(i));
- if (((cmd & EHCI_PS_PO) == 0) &&
- ((cmd & EHCI_PS_PE) == EHCI_PS_PE)) {
- EOWRITE4(sc, EHCI_PORTSC(i),
- cmd | EHCI_PS_SUSP);
- }
- }
-
- sc->sc_cmd = EOREAD4(sc, EHCI_USBCMD);
-
- cmd = sc->sc_cmd & ~(EHCI_CMD_ASE | EHCI_CMD_PSE);
- EOWRITE4(sc, EHCI_USBCMD, cmd);
-
- for (i = 0; i < 100; i++) {
- hcr = EOREAD4(sc, EHCI_USBSTS) &
- (EHCI_STS_ASS | EHCI_STS_PSS);
-
- if (hcr == 0) {
- break;
- }
- usb_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000);
- }
-
- if (hcr != 0) {
- device_printf(sc->sc_bus.bdev, "reset timeout\n");
- }
- cmd &= ~EHCI_CMD_RS;
- EOWRITE4(sc, EHCI_USBCMD, cmd);
-
- for (i = 0; i < 100; i++) {
- hcr = EOREAD4(sc, EHCI_USBSTS) & EHCI_STS_HCH;
- if (hcr == EHCI_STS_HCH) {
- break;
- }
- usb_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000);
- }
+ DPRINTF("stopping the HC\n");
- if (hcr != EHCI_STS_HCH) {
- device_printf(sc->sc_bus.bdev,
- "config timeout\n");
- }
- USB_BUS_UNLOCK(&sc->sc_bus);
+ /* reset HC */
+ ehci_hcreset(sc);
}
-void
+static void
ehci_resume(ehci_softc_t *sc)
{
- struct usb_page_search buf_res;
- uint32_t cmd;
- uint32_t hcr;
- uint8_t i;
-
- USB_BUS_LOCK(&sc->sc_bus);
-
- /* restore things in case the bios doesn't */
- EOWRITE4(sc, EHCI_CTRLDSSEGMENT, 0);
-
- usbd_get_page(&sc->sc_hw.pframes_pc, 0, &buf_res);
- EOWRITE4(sc, EHCI_PERIODICLISTBASE, buf_res.physaddr);
+ /* reset HC */
+ ehci_hcreset(sc);
- usbd_get_page(&sc->sc_hw.async_start_pc, 0, &buf_res);
- EOWRITE4(sc, EHCI_ASYNCLISTADDR, buf_res.physaddr | EHCI_LINK_QH);
-
- EOWRITE4(sc, EHCI_USBINTR, sc->sc_eintrs);
-
- hcr = 0;
- for (i = 1; i <= sc->sc_noport; i++) {
- cmd = EOREAD4(sc, EHCI_PORTSC(i));
- if (((cmd & EHCI_PS_PO) == 0) &&
- ((cmd & EHCI_PS_SUSP) == EHCI_PS_SUSP)) {
- EOWRITE4(sc, EHCI_PORTSC(i),
- cmd | EHCI_PS_FPR);
- hcr = 1;
- }
- }
-
- if (hcr) {
- usb_pause_mtx(&sc->sc_bus.bus_mtx,
- USB_MS_TO_TICKS(USB_RESUME_WAIT));
-
- for (i = 1; i <= sc->sc_noport; i++) {
- cmd = EOREAD4(sc, EHCI_PORTSC(i));
- if (((cmd & EHCI_PS_PO) == 0) &&
- ((cmd & EHCI_PS_SUSP) == EHCI_PS_SUSP)) {
- EOWRITE4(sc, EHCI_PORTSC(i),
- cmd & ~EHCI_PS_FPR);
- }
- }
- }
- EOWRITE4(sc, EHCI_USBCMD, sc->sc_cmd);
-
- for (i = 0; i < 100; i++) {
- hcr = EOREAD4(sc, EHCI_USBSTS) & EHCI_STS_HCH;
- if (hcr != EHCI_STS_HCH) {
- break;
- }
- usb_pause_mtx(&sc->sc_bus.bus_mtx, hz / 1000);
- }
- if (hcr == EHCI_STS_HCH) {
- device_printf(sc->sc_bus.bdev, "config timeout\n");
- }
-
- USB_BUS_UNLOCK(&sc->sc_bus);
-
- usb_pause_mtx(NULL,
- USB_MS_TO_TICKS(USB_RESUME_WAIT));
+ /* setup HC */
+ ehci_init_sub(sc);
/* catch any lost interrupts */
ehci_do_poll(&sc->sc_bus);
}
-void
-ehci_shutdown(ehci_softc_t *sc)
-{
- DPRINTF("stopping the HC\n");
-
- if (ehci_hcreset(sc)) {
- DPRINTF("reset failed!\n");
- }
-}
-
#ifdef USB_DEBUG
static void
ehci_dump_regs(ehci_softc_t *sc)
@@ -3908,8 +3811,24 @@ ehci_device_suspend(struct usb_device *udev)
}
USB_BUS_UNLOCK(udev->bus);
+}
- return;
+static void
+ehci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
+{
+ struct ehci_softc *sc = EHCI_BUS2SC(bus);
+
+ switch (state) {
+ case USB_HW_POWER_SUSPEND:
+ case USB_HW_POWER_SHUTDOWN:
+ ehci_suspend(sc);
+ break;
+ case USB_HW_POWER_RESUME:
+ ehci_resume(sc);
+ break;
+ default:
+ break;
+ }
}
static void
@@ -3955,6 +3874,7 @@ struct usb_bus_methods ehci_bus_methods =
.device_resume = ehci_device_resume,
.device_suspend = ehci_device_suspend,
.set_hw_power = ehci_set_hw_power,
+ .set_hw_power_sleep = ehci_set_hw_power_sleep,
.roothub_exec = ehci_roothub_exec,
.xfer_poll = ehci_do_poll,
};
diff --git a/sys/dev/usb/controller/ehci.h b/sys/dev/usb/controller/ehci.h
index a8aa514..b8b6985 100644
--- a/sys/dev/usb/controller/ehci.h
+++ b/sys/dev/usb/controller/ehci.h
@@ -333,8 +333,6 @@ typedef struct ehci_softc {
uint32_t sc_terminate_self; /* TD short packet termination pointer */
uint32_t sc_eintrs;
- uint32_t sc_cmd; /* shadow of cmd register during
- * suspend */
uint16_t sc_intr_stat[EHCI_VIRTUAL_FRAMELIST_COUNT];
uint16_t sc_id_vendor; /* vendor ID for root hub */
@@ -445,9 +443,6 @@ usb_bus_mem_cb_t ehci_iterate_hw_softc;
usb_error_t ehci_reset(ehci_softc_t *sc);
usb_error_t ehci_init(ehci_softc_t *sc);
void ehci_detach(struct ehci_softc *sc);
-void ehci_suspend(struct ehci_softc *sc);
-void ehci_resume(struct ehci_softc *sc);
-void ehci_shutdown(ehci_softc_t *sc);
void ehci_interrupt(ehci_softc_t *sc);
#endif /* _EHCI_H_ */
diff --git a/sys/dev/usb/controller/ehci_ixp4xx.c b/sys/dev/usb/controller/ehci_ixp4xx.c
index 8ea133f..45113d9 100644
--- a/sys/dev/usb/controller/ehci_ixp4xx.c
+++ b/sys/dev/usb/controller/ehci_ixp4xx.c
@@ -78,9 +78,6 @@ struct ixp_ehci_softc {
static device_attach_t ehci_ixp_attach;
static device_detach_t ehci_ixp_detach;
-static device_shutdown_t ehci_ixp_shutdown;
-static device_suspend_t ehci_ixp_suspend;
-static device_resume_t ehci_ixp_resume;
static uint8_t ehci_bs_r_1(void *, bus_space_handle_t, bus_size_t);
static void ehci_bs_w_1(void *, bus_space_handle_t, bus_size_t, u_int8_t);
@@ -90,45 +87,6 @@ static uint32_t ehci_bs_r_4(void *, bus_space_handle_t, bus_size_t);
static void ehci_bs_w_4(void *, bus_space_handle_t, bus_size_t, uint32_t);
static int
-ehci_ixp_suspend(device_t self)
-{
- ehci_softc_t *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_suspend(self);
- if (err)
- return (err);
- ehci_suspend(sc);
- return (0);
-}
-
-static int
-ehci_ixp_resume(device_t self)
-{
- ehci_softc_t *sc = device_get_softc(self);
-
- ehci_resume(sc);
-
- bus_generic_resume(self);
-
- return (0);
-}
-
-static int
-ehci_ixp_shutdown(device_t self)
-{
- ehci_softc_t *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_shutdown(self);
- if (err)
- return (err);
- ehci_shutdown(sc);
-
- return (0);
-}
-
-static int
ehci_ixp_probe(device_t self)
{
@@ -257,7 +215,7 @@ ehci_ixp_detach(device_t self)
device_delete_child(self, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(self);
+ device_delete_children(self);
if (sc->sc_irq_res && sc->sc_intr_hdl) {
/*
@@ -335,14 +293,11 @@ static device_method_t ehci_methods[] = {
DEVMETHOD(device_probe, ehci_ixp_probe),
DEVMETHOD(device_attach, ehci_ixp_attach),
DEVMETHOD(device_detach, ehci_ixp_detach),
- DEVMETHOD(device_suspend, ehci_ixp_suspend),
- DEVMETHOD(device_resume, ehci_ixp_resume),
- DEVMETHOD(device_shutdown, ehci_ixp_shutdown),
-
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t ehci_driver = {
diff --git a/sys/dev/usb/controller/ehci_mv.c b/sys/dev/usb/controller/ehci_mv.c
index bbfb6a7..a47e253 100644
--- a/sys/dev/usb/controller/ehci_mv.c
+++ b/sys/dev/usb/controller/ehci_mv.c
@@ -81,9 +81,6 @@ __FBSDID("$FreeBSD$");
static device_attach_t mv_ehci_attach;
static device_detach_t mv_ehci_detach;
-static device_shutdown_t mv_ehci_shutdown;
-static device_suspend_t mv_ehci_suspend;
-static device_resume_t mv_ehci_resume;
static int err_intr(void *arg);
@@ -103,45 +100,6 @@ static void *ih_err;
#define MV_USB_DEVICE_UNDERFLOW (1 << 3)
static int
-mv_ehci_suspend(device_t self)
-{
- ehci_softc_t *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_suspend(self);
- if (err)
- return (err);
- ehci_suspend(sc);
- return (0);
-}
-
-static int
-mv_ehci_resume(device_t self)
-{
- ehci_softc_t *sc = device_get_softc(self);
-
- ehci_resume(sc);
-
- bus_generic_resume(self);
-
- return (0);
-}
-
-static int
-mv_ehci_shutdown(device_t self)
-{
- ehci_softc_t *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_shutdown(self);
- if (err)
- return (err);
- ehci_shutdown(sc);
-
- return (0);
-}
-
-static int
mv_ehci_probe(device_t self)
{
@@ -289,7 +247,7 @@ mv_ehci_detach(device_t self)
device_delete_child(self, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(self);
+ device_delete_children(self);
/*
* disable interrupts that might have been switched on in mv_ehci_attach
@@ -372,14 +330,11 @@ static device_method_t ehci_methods[] = {
DEVMETHOD(device_probe, mv_ehci_probe),
DEVMETHOD(device_attach, mv_ehci_attach),
DEVMETHOD(device_detach, mv_ehci_detach),
- DEVMETHOD(device_suspend, mv_ehci_suspend),
- DEVMETHOD(device_resume, mv_ehci_resume),
- DEVMETHOD(device_shutdown, mv_ehci_shutdown),
-
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t ehci_driver = {
diff --git a/sys/dev/usb/controller/ehci_pci.c b/sys/dev/usb/controller/ehci_pci.c
index 6abb193..e293ec8 100644
--- a/sys/dev/usb/controller/ehci_pci.c
+++ b/sys/dev/usb/controller/ehci_pci.c
@@ -77,6 +77,7 @@ __FBSDID("$FreeBSD$");
#include <dev/usb/usb_pci.h>
#include <dev/usb/controller/ehci.h>
#include <dev/usb/controller/ehcireg.h>
+#include "usb_if.h"
#define PCI_EHCI_VENDORID_ACERLABS 0x10b9
#define PCI_EHCI_VENDORID_AMD 0x1022
@@ -92,54 +93,10 @@ __FBSDID("$FreeBSD$");
#define PCI_EHCI_VENDORID_NVIDIA2 0x10DE
#define PCI_EHCI_VENDORID_VIA 0x1106
-static void ehci_pci_takecontroller(device_t self);
-
static device_probe_t ehci_pci_probe;
static device_attach_t ehci_pci_attach;
static device_detach_t ehci_pci_detach;
-static device_suspend_t ehci_pci_suspend;
-static device_resume_t ehci_pci_resume;
-static device_shutdown_t ehci_pci_shutdown;
-
-static int
-ehci_pci_suspend(device_t self)
-{
- ehci_softc_t *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_suspend(self);
- if (err)
- return (err);
- ehci_suspend(sc);
- return (0);
-}
-
-static int
-ehci_pci_resume(device_t self)
-{
- ehci_softc_t *sc = device_get_softc(self);
-
- ehci_pci_takecontroller(self);
- ehci_resume(sc);
-
- bus_generic_resume(self);
-
- return (0);
-}
-
-static int
-ehci_pci_shutdown(device_t self)
-{
- ehci_softc_t *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_shutdown(self);
- if (err)
- return (err);
- ehci_shutdown(sc);
-
- return (0);
-}
+static usb_take_controller_t ehci_pci_take_controller;
static const char *
ehci_pci_match(device_t self)
@@ -418,7 +375,7 @@ ehci_pci_attach(device_t self)
sc->sc_intr_hdl = NULL;
goto error;
}
- ehci_pci_takecontroller(self);
+ ehci_pci_take_controller(self);
/* Undocumented quirks taken from Linux */
@@ -498,7 +455,7 @@ ehci_pci_detach(device_t self)
device_delete_child(self, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(self);
+ device_delete_children(self);
pci_disable_busmaster(self);
@@ -530,8 +487,8 @@ ehci_pci_detach(device_t self)
return (0);
}
-static void
-ehci_pci_takecontroller(device_t self)
+static int
+ehci_pci_take_controller(device_t self)
{
ehci_softc_t *sc = device_get_softc(self);
uint32_t cparams;
@@ -573,24 +530,25 @@ ehci_pci_takecontroller(device_t self)
usb_pause_mtx(NULL, hz / 100); /* wait 10ms */
}
}
+ return (0);
}
-static driver_t ehci_driver =
-{
+static device_method_t ehci_pci_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, ehci_pci_probe),
+ DEVMETHOD(device_attach, ehci_pci_attach),
+ DEVMETHOD(device_detach, ehci_pci_detach),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
+ DEVMETHOD(usb_take_controller, ehci_pci_take_controller),
+
+ DEVMETHOD_END
+};
+
+static driver_t ehci_driver = {
.name = "ehci",
- .methods = (device_method_t[]){
- /* device interface */
- DEVMETHOD(device_probe, ehci_pci_probe),
- DEVMETHOD(device_attach, ehci_pci_attach),
- DEVMETHOD(device_detach, ehci_pci_detach),
- DEVMETHOD(device_suspend, ehci_pci_suspend),
- DEVMETHOD(device_resume, ehci_pci_resume),
- DEVMETHOD(device_shutdown, ehci_pci_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
- {0, 0}
- },
+ .methods = ehci_pci_methods,
.size = sizeof(struct ehci_softc),
};
diff --git a/sys/dev/usb/controller/musb_otg.c b/sys/dev/usb/controller/musb_otg.c
index be32b2b..d463052 100644
--- a/sys/dev/usb/controller/musb_otg.c
+++ b/sys/dev/usb/controller/musb_otg.c
@@ -1910,16 +1910,16 @@ musbotg_uninit(struct musbotg_softc *sc)
USB_BUS_UNLOCK(&sc->sc_bus);
}
-void
+static void
musbotg_suspend(struct musbotg_softc *sc)
{
- return;
+ /* TODO */
}
-void
+static void
musbotg_resume(struct musbotg_softc *sc)
{
- return;
+ /* TODO */
}
static void
@@ -2776,6 +2776,26 @@ musbotg_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc,
}
}
+static void
+musbotg_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
+{
+ struct musbotg_softc *sc = MUSBOTG_BUS2SC(bus);
+
+ switch (state) {
+ case USB_HW_POWER_SUSPEND:
+ musbotg_suspend(sc);
+ break;
+ case USB_HW_POWER_SHUTDOWN:
+ musbotg_uninit(sc);
+ break;
+ case USB_HW_POWER_RESUME:
+ musbotg_resume(sc);
+ break;
+ default:
+ break;
+ }
+}
+
struct usb_bus_methods musbotg_bus_methods =
{
.endpoint_init = &musbotg_ep_init,
@@ -2786,4 +2806,5 @@ struct usb_bus_methods musbotg_bus_methods =
.clear_stall = &musbotg_clear_stall,
.roothub_exec = &musbotg_roothub_exec,
.xfer_poll = &musbotg_do_poll,
+ .set_hw_power_sleep = &musbotg_set_hw_power_sleep,
};
diff --git a/sys/dev/usb/controller/musb_otg.h b/sys/dev/usb/controller/musb_otg.h
index e8eafca..3b889a9 100644
--- a/sys/dev/usb/controller/musb_otg.h
+++ b/sys/dev/usb/controller/musb_otg.h
@@ -398,8 +398,6 @@ struct musbotg_softc {
usb_error_t musbotg_init(struct musbotg_softc *sc);
void musbotg_uninit(struct musbotg_softc *sc);
-void musbotg_suspend(struct musbotg_softc *sc);
-void musbotg_resume(struct musbotg_softc *sc);
void musbotg_interrupt(struct musbotg_softc *sc);
void musbotg_vbus_interrupt(struct musbotg_softc *sc, uint8_t is_on);
diff --git a/sys/dev/usb/controller/musb_otg_atmelarm.c b/sys/dev/usb/controller/musb_otg_atmelarm.c
index 8a48264..bb3e60a 100644
--- a/sys/dev/usb/controller/musb_otg_atmelarm.c
+++ b/sys/dev/usb/controller/musb_otg_atmelarm.c
@@ -1,4 +1,3 @@
-/* $FreeBSD$ */
/*-
* Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
*
@@ -24,6 +23,9 @@
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/param.h>
@@ -60,7 +62,6 @@
static device_probe_t musbotg_probe;
static device_attach_t musbotg_attach;
static device_detach_t musbotg_detach;
-static device_shutdown_t musbotg_shutdown;
struct musbotg_super_softc {
struct musbotg_softc sc_otg; /* must be first */
@@ -187,7 +188,7 @@ musbotg_detach(device_t dev)
device_delete_child(dev, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(dev);
+ device_delete_children(dev);
if (sc->sc_otg.sc_irq_res && sc->sc_otg.sc_intr_hdl) {
/*
@@ -216,38 +217,22 @@ musbotg_detach(device_t dev)
return (0);
}
-static int
-musbotg_shutdown(device_t dev)
-{
- struct musbotg_super_softc *sc = device_get_softc(dev);
- int err;
-
- err = bus_generic_shutdown(dev);
- if (err)
- return (err);
-
- musbotg_uninit(&sc->sc_otg);
-
- return (0);
-}
-
static device_method_t musbotg_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, musbotg_probe),
DEVMETHOD(device_attach, musbotg_attach),
DEVMETHOD(device_detach, musbotg_detach),
- DEVMETHOD(device_shutdown, musbotg_shutdown),
-
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t musbotg_driver = {
- "musbotg",
- musbotg_methods,
- sizeof(struct musbotg_super_softc),
+ .name = "musbotg",
+ .methods = musbotg_methods,
+ .size = sizeof(struct musbotg_super_softc),
};
static devclass_t musbotg_devclass;
diff --git a/sys/dev/usb/controller/ohci.c b/sys/dev/usb/controller/ohci.c
index fa2d607..93c2bb2 100644
--- a/sys/dev/usb/controller/ohci.c
+++ b/sys/dev/usb/controller/ohci.c
@@ -166,7 +166,7 @@ ohci_iterate_hw_softc(struct usb_bus *bus, usb_bus_mem_sub_cb_t *cb)
}
static usb_error_t
-ohci_controller_init(ohci_softc_t *sc)
+ohci_controller_init(ohci_softc_t *sc, int do_suspend)
{
struct usb_page_search buf_res;
uint32_t i;
@@ -233,6 +233,11 @@ reset:
}
#endif
+ if (do_suspend) {
+ OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_SUSPEND);
+ return (USB_ERR_NORMAL_COMPLETION);
+ }
+
/* The controller is now in SUSPEND state, we have 2ms to finish. */
/* set up HC registers */
@@ -415,13 +420,12 @@ ohci_init(ohci_softc_t *sc)
sc->sc_bus.usbrev = USB_REV_1_0;
- if (ohci_controller_init(sc)) {
+ if (ohci_controller_init(sc, 0) != 0)
return (USB_ERR_INVAL);
- } else {
- /* catch any lost interrupts */
- ohci_do_poll(&sc->sc_bus);
- return (USB_ERR_NORMAL_COMPLETION);
- }
+
+ /* catch any lost interrupts */
+ ohci_do_poll(&sc->sc_bus);
+ return (USB_ERR_NORMAL_COMPLETION);
}
/*
@@ -445,75 +449,32 @@ ohci_detach(struct ohci_softc *sc)
usb_callout_drain(&sc->sc_tmo_rhsc);
}
-/* NOTE: suspend/resume is called from
- * interrupt context and cannot sleep!
- */
-void
+static void
ohci_suspend(ohci_softc_t *sc)
{
- uint32_t ctl;
-
- USB_BUS_LOCK(&sc->sc_bus);
+ DPRINTF("\n");
#ifdef USB_DEBUG
- DPRINTF("\n");
- if (ohcidebug > 2) {
+ if (ohcidebug > 2)
ohci_dumpregs(sc);
- }
#endif
- ctl = OREAD4(sc, OHCI_CONTROL) & ~OHCI_HCFS_MASK;
- if (sc->sc_control == 0) {
- /*
- * Preserve register values, in case that APM BIOS
- * does not recover them.
- */
- sc->sc_control = ctl;
- sc->sc_intre = OREAD4(sc, OHCI_INTERRUPT_ENABLE);
- }
- ctl |= OHCI_HCFS_SUSPEND;
- OWRITE4(sc, OHCI_CONTROL, ctl);
-
- usb_pause_mtx(&sc->sc_bus.bus_mtx,
- USB_MS_TO_TICKS(USB_RESUME_WAIT));
-
- USB_BUS_UNLOCK(&sc->sc_bus);
+ /* reset HC and leave it suspended */
+ ohci_controller_init(sc, 1);
}
-void
+static void
ohci_resume(ohci_softc_t *sc)
{
- uint32_t ctl;
+ DPRINTF("\n");
#ifdef USB_DEBUG
- DPRINTF("\n");
- if (ohcidebug > 2) {
+ if (ohcidebug > 2)
ohci_dumpregs(sc);
- }
#endif
- /* some broken BIOSes never initialize the Controller chip */
- ohci_controller_init(sc);
-
- USB_BUS_LOCK(&sc->sc_bus);
- if (sc->sc_intre) {
- OWRITE4(sc, OHCI_INTERRUPT_ENABLE,
- sc->sc_intre & (OHCI_ALL_INTRS | OHCI_MIE));
- }
- if (sc->sc_control)
- ctl = sc->sc_control;
- else
- ctl = OREAD4(sc, OHCI_CONTROL);
- ctl |= OHCI_HCFS_RESUME;
- OWRITE4(sc, OHCI_CONTROL, ctl);
- usb_pause_mtx(&sc->sc_bus.bus_mtx,
- USB_MS_TO_TICKS(USB_RESUME_DELAY));
- ctl = (ctl & ~OHCI_HCFS_MASK) | OHCI_HCFS_OPERATIONAL;
- OWRITE4(sc, OHCI_CONTROL, ctl);
- usb_pause_mtx(&sc->sc_bus.bus_mtx,
- USB_MS_TO_TICKS(USB_RESUME_RECOVERY));
- sc->sc_control = sc->sc_intre = 0;
- USB_BUS_UNLOCK(&sc->sc_bus);
+ /* some broken BIOSes never initialize the Controller chip */
+ ohci_controller_init(sc, 0);
/* catch any lost interrupts */
ohci_do_poll(&sc->sc_bus);
@@ -2713,6 +2674,24 @@ ohci_device_suspend(struct usb_device *udev)
}
static void
+ohci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
+{
+ struct ohci_softc *sc = OHCI_BUS2SC(bus);
+
+ switch (state) {
+ case USB_HW_POWER_SUSPEND:
+ case USB_HW_POWER_SHUTDOWN:
+ ohci_suspend(sc);
+ break;
+ case USB_HW_POWER_RESUME:
+ ohci_resume(sc);
+ break;
+ default:
+ break;
+ }
+}
+
+static void
ohci_set_hw_power(struct usb_bus *bus)
{
struct ohci_softc *sc = OHCI_BUS2SC(bus);
@@ -2756,6 +2735,7 @@ struct usb_bus_methods ohci_bus_methods =
.device_resume = ohci_device_resume,
.device_suspend = ohci_device_suspend,
.set_hw_power = ohci_set_hw_power,
+ .set_hw_power_sleep = ohci_set_hw_power_sleep,
.roothub_exec = ohci_roothub_exec,
.xfer_poll = ohci_do_poll,
};
diff --git a/sys/dev/usb/controller/ohci.h b/sys/dev/usb/controller/ohci.h
index d85c2c9..9d8ac7d 100644
--- a/sys/dev/usb/controller/ohci.h
+++ b/sys/dev/usb/controller/ohci.h
@@ -241,8 +241,6 @@ typedef struct ohci_softc {
bus_space_handle_t sc_io_hdl;
uint32_t sc_eintrs; /* enabled interrupts */
- uint32_t sc_control; /* Preserved during suspend/standby */
- uint32_t sc_intre;
uint16_t sc_intr_stat[OHCI_NO_EDS];
uint16_t sc_id_vendor;
@@ -260,8 +258,6 @@ usb_bus_mem_cb_t ohci_iterate_hw_softc;
usb_error_t ohci_init(ohci_softc_t *sc);
void ohci_detach(struct ohci_softc *sc);
-void ohci_suspend(ohci_softc_t *sc);
-void ohci_resume(ohci_softc_t *sc);
void ohci_interrupt(ohci_softc_t *sc);
#endif /* _OHCI_H_ */
diff --git a/sys/dev/usb/controller/ohci_atmelarm.c b/sys/dev/usb/controller/ohci_atmelarm.c
index 9a39740..643b4d1 100644
--- a/sys/dev/usb/controller/ohci_atmelarm.c
+++ b/sys/dev/usb/controller/ohci_atmelarm.c
@@ -174,7 +174,7 @@ ohci_atmelarm_detach(device_t dev)
device_delete_child(dev, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(dev);
+ device_delete_children(dev);
/*
* Put the controller into reset, then disable clocks and do
@@ -221,18 +221,17 @@ static device_method_t ohci_methods[] = {
DEVMETHOD(device_probe, ohci_atmelarm_probe),
DEVMETHOD(device_attach, ohci_atmelarm_attach),
DEVMETHOD(device_detach, ohci_atmelarm_detach),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
- {0, 0}
+ DEVMETHOD_END
};
static driver_t ohci_driver = {
- "ohci",
- ohci_methods,
- sizeof(struct at91_ohci_softc),
+ .name = "ohci",
+ .methods = ohci_methods,
+ .size = sizeof(struct at91_ohci_softc),
};
static devclass_t ohci_devclass;
diff --git a/sys/dev/usb/controller/ohci_pci.c b/sys/dev/usb/controller/ohci_pci.c
index 9ff6e31..864376b 100644
--- a/sys/dev/usb/controller/ohci_pci.c
+++ b/sys/dev/usb/controller/ohci_pci.c
@@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$");
#include <dev/usb/usb_pci.h>
#include <dev/usb/controller/ohci.h>
#include <dev/usb/controller/ohcireg.h>
+#include "usb_if.h"
#define PCI_OHCI_VENDORID_ACERLABS 0x10b9
#define PCI_OHCI_VENDORID_AMD 0x1022
@@ -92,28 +93,13 @@ __FBSDID("$FreeBSD$");
static device_probe_t ohci_pci_probe;
static device_attach_t ohci_pci_attach;
static device_detach_t ohci_pci_detach;
-static device_suspend_t ohci_pci_suspend;
-static device_resume_t ohci_pci_resume;
+static usb_take_controller_t ohci_pci_take_controller;
static int
-ohci_pci_suspend(device_t self)
+ohci_pci_take_controller(device_t self)
{
- ohci_softc_t *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_suspend(self);
- if (err) {
- return (err);
- }
- ohci_suspend(sc);
- return (0);
-}
-
-static int
-ohci_pci_resume(device_t self)
-{
- ohci_softc_t *sc = device_get_softc(self);
- uint32_t reg, int_line;
+ uint32_t reg;
+ uint32_t int_line;
if (pci_get_powerstate(self) != PCI_POWERSTATE_D0) {
device_printf(self, "chip is in D%d mode "
@@ -124,9 +110,6 @@ ohci_pci_resume(device_t self)
pci_write_config(self, PCI_CBMEM, reg, 4);
pci_write_config(self, PCIR_INTLINE, int_line, 4);
}
- ohci_resume(sc);
-
- bus_generic_resume(self);
return (0);
}
@@ -348,7 +331,7 @@ ohci_pci_detach(device_t self)
device_delete_child(self, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(self);
+ device_delete_children(self);
pci_disable_busmaster(self);
@@ -381,23 +364,22 @@ ohci_pci_detach(device_t self)
return (0);
}
-static driver_t ohci_driver =
-{
+static device_method_t ohci_pci_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, ohci_pci_probe),
+ DEVMETHOD(device_attach, ohci_pci_attach),
+ DEVMETHOD(device_detach, ohci_pci_detach),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
+ DEVMETHOD(usb_take_controller, ohci_pci_take_controller),
+
+ DEVMETHOD_END
+};
+
+static driver_t ohci_driver = {
.name = "ohci",
- .methods = (device_method_t[]){
- /* device interface */
- DEVMETHOD(device_probe, ohci_pci_probe),
- DEVMETHOD(device_attach, ohci_pci_attach),
- DEVMETHOD(device_detach, ohci_pci_detach),
- DEVMETHOD(device_suspend, ohci_pci_suspend),
- DEVMETHOD(device_resume, ohci_pci_resume),
- DEVMETHOD(device_shutdown, bus_generic_shutdown),
-
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
- {0, 0}
- },
+ .methods = ohci_pci_methods,
.size = sizeof(struct ohci_softc),
};
diff --git a/sys/dev/usb/controller/ohci_s3c24x0.c b/sys/dev/usb/controller/ohci_s3c24x0.c
index 11b2579..225a2d2 100644
--- a/sys/dev/usb/controller/ohci_s3c24x0.c
+++ b/sys/dev/usb/controller/ohci_s3c24x0.c
@@ -156,7 +156,7 @@ ohci_s3c24x0_detach(device_t dev)
device_delete_child(dev, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(dev);
+ device_delete_children(dev);
/*
* Put the controller into reset, then disable clocks and do
@@ -198,18 +198,17 @@ static device_method_t ohci_methods[] = {
DEVMETHOD(device_probe, ohci_s3c24x0_probe),
DEVMETHOD(device_attach, ohci_s3c24x0_attach),
DEVMETHOD(device_detach, ohci_s3c24x0_detach),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
- {0, 0}
+ DEVMETHOD_END
};
static driver_t ohci_driver = {
- "ohci",
- ohci_methods,
- sizeof(struct ohci_softc),
+ .name = "ohci",
+ .methods = ohci_methods,
+ .size = sizeof(struct ohci_softc),
};
static devclass_t ohci_devclass;
diff --git a/sys/dev/usb/controller/uhci.c b/sys/dev/usb/controller/uhci.c
index c365e01..d9091c9 100644
--- a/sys/dev/usb/controller/uhci.c
+++ b/sys/dev/usb/controller/uhci.c
@@ -373,9 +373,10 @@ done_1:
done_2:
- /* reload the configuration */
- UWRITE2(sc, UHCI_FRNUM, sc->sc_saved_frnum);
- UWRITE1(sc, UHCI_SOF, sc->sc_saved_sof);
+ /* reset frame number */
+ UWRITE2(sc, UHCI_FRNUM, 0);
+ /* set default SOF value */
+ UWRITE1(sc, UHCI_SOF, 0x40);
USB_BUS_UNLOCK(&sc->sc_bus);
@@ -463,9 +464,6 @@ uhci_init(uhci_softc_t *sc)
uhci_dumpregs(sc);
}
#endif
- sc->sc_saved_sof = 0x40; /* default value */
- sc->sc_saved_frnum = 0; /* default frame number */
-
/*
* Setup QH's
*/
@@ -658,24 +656,16 @@ uhci_init(uhci_softc_t *sc)
return (0);
}
-/* NOTE: suspend/resume is called from
- * interrupt context and cannot sleep!
- */
-
-void
+static void
uhci_suspend(uhci_softc_t *sc)
{
- USB_BUS_LOCK(&sc->sc_bus);
-
#ifdef USB_DEBUG
if (uhcidebug > 2) {
uhci_dumpregs(sc);
}
#endif
- /* save some state if BIOS doesn't */
- sc->sc_saved_frnum = UREAD2(sc, UHCI_FRNUM);
- sc->sc_saved_sof = UREAD1(sc, UHCI_SOF);
+ USB_BUS_LOCK(&sc->sc_bus);
/* stop the controller */
@@ -685,13 +675,10 @@ uhci_suspend(uhci_softc_t *sc)
UHCICMD(sc, UHCI_CMD_EGSM);
- usb_pause_mtx(&sc->sc_bus.bus_mtx,
- USB_MS_TO_TICKS(USB_RESUME_WAIT));
-
USB_BUS_UNLOCK(&sc->sc_bus);
}
-void
+static void
uhci_resume(uhci_softc_t *sc)
{
USB_BUS_LOCK(&sc->sc_bus);
@@ -704,21 +691,17 @@ uhci_resume(uhci_softc_t *sc)
UHCICMD(sc, UHCI_CMD_FGR);
- usb_pause_mtx(&sc->sc_bus.bus_mtx,
- USB_MS_TO_TICKS(USB_RESUME_DELAY));
-
/* and start traffic again */
uhci_start(sc);
+ USB_BUS_UNLOCK(&sc->sc_bus);
+
#ifdef USB_DEBUG
- if (uhcidebug > 2) {
+ if (uhcidebug > 2)
uhci_dumpregs(sc);
- }
#endif
- USB_BUS_UNLOCK(&sc->sc_bus);
-
/* catch lost interrupts */
uhci_do_poll(&sc->sc_bus);
}
@@ -3179,6 +3162,24 @@ uhci_device_suspend(struct usb_device *udev)
}
static void
+uhci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
+{
+ struct uhci_softc *sc = UHCI_BUS2SC(bus);
+
+ switch (state) {
+ case USB_HW_POWER_SUSPEND:
+ case USB_HW_POWER_SHUTDOWN:
+ uhci_suspend(sc);
+ break;
+ case USB_HW_POWER_RESUME:
+ uhci_resume(sc);
+ break;
+ default:
+ break;
+ }
+}
+
+static void
uhci_set_hw_power(struct usb_bus *bus)
{
struct uhci_softc *sc = UHCI_BUS2SC(bus);
@@ -3225,6 +3226,7 @@ struct usb_bus_methods uhci_bus_methods =
.device_resume = uhci_device_resume,
.device_suspend = uhci_device_suspend,
.set_hw_power = uhci_set_hw_power,
+ .set_hw_power_sleep = uhci_set_hw_power_sleep,
.roothub_exec = uhci_roothub_exec,
.xfer_poll = uhci_do_poll,
};
diff --git a/sys/dev/usb/controller/uhci.h b/sys/dev/usb/controller/uhci.h
index 0878e79..8a6ce44 100644
--- a/sys/dev/usb/controller/uhci.h
+++ b/sys/dev/usb/controller/uhci.h
@@ -230,13 +230,11 @@ typedef struct uhci_softc {
uint32_t sc_loops; /* number of QHs that wants looping */
uint16_t sc_intr_stat[UHCI_IFRAMELIST_COUNT];
- uint16_t sc_saved_frnum;
uint8_t sc_addr; /* device address */
uint8_t sc_conf; /* device configuration */
uint8_t sc_isreset; /* bits set if a root hub is reset */
uint8_t sc_isresumed; /* bits set if a port was resumed */
- uint8_t sc_saved_sof;
uint8_t sc_hub_idata[1];
char sc_vendor[16]; /* vendor string for root hub */
@@ -245,8 +243,6 @@ typedef struct uhci_softc {
usb_bus_mem_cb_t uhci_iterate_hw_softc;
usb_error_t uhci_init(uhci_softc_t *sc);
-void uhci_suspend(uhci_softc_t *sc);
-void uhci_resume(uhci_softc_t *sc);
void uhci_reset(uhci_softc_t *sc);
void uhci_interrupt(uhci_softc_t *sc);
diff --git a/sys/dev/usb/controller/uhci_pci.c b/sys/dev/usb/controller/uhci_pci.c
index 3192aac..454b904 100644
--- a/sys/dev/usb/controller/uhci_pci.c
+++ b/sys/dev/usb/controller/uhci_pci.c
@@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$");
#include <dev/usb/usb_pci.h>
#include <dev/usb/controller/uhci.h>
#include <dev/usb/controller/uhcireg.h>
+#include "usb_if.h"
#define PCI_UHCI_VENDORID_INTEL 0x8086
#define PCI_UHCI_VENDORID_VIA 0x1106
@@ -83,33 +84,13 @@ __FBSDID("$FreeBSD$");
static device_probe_t uhci_pci_probe;
static device_attach_t uhci_pci_attach;
static device_detach_t uhci_pci_detach;
-static device_suspend_t uhci_pci_suspend;
-static device_resume_t uhci_pci_resume;
+static usb_take_controller_t uhci_pci_take_controller;
static int
-uhci_pci_suspend(device_t self)
+uhci_pci_take_controller(device_t self)
{
- uhci_softc_t *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_suspend(self);
- if (err) {
- return (err);
- }
- uhci_suspend(sc);
- return (0);
-}
-
-static int
-uhci_pci_resume(device_t self)
-{
- uhci_softc_t *sc = device_get_softc(self);
-
pci_write_config(self, PCI_LEGSUP, PCI_LEGSUP_USBPIRQDEN, 2);
- uhci_resume(sc);
-
- bus_generic_resume(self);
return (0);
}
@@ -406,7 +387,7 @@ uhci_pci_detach(device_t self)
device_delete_child(self, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(self);
+ device_delete_children(self);
/*
* disable interrupts that might have been switched on in
@@ -446,23 +427,22 @@ uhci_pci_detach(device_t self)
return (0);
}
-static driver_t uhci_driver =
-{
+static device_method_t uhci_pci_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, uhci_pci_probe),
+ DEVMETHOD(device_attach, uhci_pci_attach),
+ DEVMETHOD(device_detach, uhci_pci_detach),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
+ DEVMETHOD(usb_take_controller, uhci_pci_take_controller),
+
+ DEVMETHOD_END
+};
+
+static driver_t uhci_driver = {
.name = "uhci",
- .methods = (device_method_t[]){
- /* device interface */
- DEVMETHOD(device_probe, uhci_pci_probe),
- DEVMETHOD(device_attach, uhci_pci_attach),
- DEVMETHOD(device_detach, uhci_pci_detach),
-
- DEVMETHOD(device_suspend, uhci_pci_suspend),
- DEVMETHOD(device_resume, uhci_pci_resume),
- DEVMETHOD(device_shutdown, bus_generic_shutdown),
-
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- {0, 0}
- },
+ .methods = uhci_pci_methods,
.size = sizeof(struct uhci_softc),
};
diff --git a/sys/dev/usb/controller/usb_controller.c b/sys/dev/usb/controller/usb_controller.c
index 7ff0bc0..0f942e1 100644
--- a/sys/dev/usb/controller/usb_controller.c
+++ b/sys/dev/usb/controller/usb_controller.c
@@ -61,12 +61,16 @@
#include <dev/usb/usb_controller.h>
#include <dev/usb/usb_bus.h>
#include <dev/usb/usb_pf.h>
+#include "usb_if.h"
/* function prototypes */
static device_probe_t usb_probe;
static device_attach_t usb_attach;
static device_detach_t usb_detach;
+static device_suspend_t usb_suspend;
+static device_resume_t usb_resume;
+static device_shutdown_t usb_shutdown;
static void usb_attach_sub(device_t, struct usb_bus *);
@@ -83,7 +87,12 @@ SYSCTL_INT(_hw_usb_ctrl, OID_AUTO, debug, CTLFLAG_RW, &usb_ctrl_debug, 0,
static int usb_no_boot_wait = 0;
TUNABLE_INT("hw.usb.no_boot_wait", &usb_no_boot_wait);
SYSCTL_INT(_hw_usb, OID_AUTO, no_boot_wait, CTLFLAG_RDTUN, &usb_no_boot_wait, 0,
- "No device enumerate waiting at boot.");
+ "No USB device enumerate waiting at boot.");
+
+static int usb_no_shutdown_wait = 0;
+TUNABLE_INT("hw.usb.no_shutdown_wait", &usb_no_shutdown_wait);
+SYSCTL_INT(_hw_usb, OID_AUTO, no_shutdown_wait, CTLFLAG_RW|CTLFLAG_TUN, &usb_no_shutdown_wait, 0,
+ "No USB device waiting at system shutdown.");
static devclass_t usb_devclass;
@@ -91,9 +100,9 @@ static device_method_t usb_methods[] = {
DEVMETHOD(device_probe, usb_probe),
DEVMETHOD(device_attach, usb_attach),
DEVMETHOD(device_detach, usb_detach),
- DEVMETHOD(device_suspend, bus_generic_suspend),
- DEVMETHOD(device_resume, bus_generic_resume),
- DEVMETHOD(device_shutdown, bus_generic_shutdown),
+ DEVMETHOD(device_suspend, usb_suspend),
+ DEVMETHOD(device_resume, usb_resume),
+ DEVMETHOD(device_shutdown, usb_shutdown),
{0, 0}
};
@@ -113,6 +122,7 @@ DRIVER_MODULE(usbus, xhci, usb_driver, usb_devclass, 0, 0);
DRIVER_MODULE(usbus, at91_udp, usb_driver, usb_devclass, 0, 0);
DRIVER_MODULE(usbus, musbotg, usb_driver, usb_devclass, 0, 0);
DRIVER_MODULE(usbus, uss820, usb_driver, usb_devclass, 0, 0);
+DRIVER_MODULE(usbus, octusb, usb_driver, usb_devclass, 0, 0);
/*------------------------------------------------------------------------*
* usb_probe
@@ -182,12 +192,12 @@ usb_detach(device_t dev)
usb_root_mount_rel(bus);
USB_BUS_LOCK(bus);
- if (usb_proc_msignal(&bus->explore_proc,
- &bus->detach_msg[0], &bus->detach_msg[1])) {
- /* ignore */
- }
- /* Wait for detach to complete */
+ /* Queue detach job */
+ usb_proc_msignal(&bus->explore_proc,
+ &bus->detach_msg[0], &bus->detach_msg[1]);
+
+ /* Wait for detach to complete */
usb_proc_mwait(&bus->explore_proc,
&bus->detach_msg[0], &bus->detach_msg[1]);
@@ -213,6 +223,84 @@ usb_detach(device_t dev)
}
/*------------------------------------------------------------------------*
+ * usb_suspend
+ *------------------------------------------------------------------------*/
+static int
+usb_suspend(device_t dev)
+{
+ struct usb_bus *bus = device_get_softc(dev);
+
+ DPRINTF("\n");
+
+ if (bus == NULL) {
+ /* was never setup properly */
+ return (0);
+ }
+
+ USB_BUS_LOCK(bus);
+ usb_proc_msignal(&bus->explore_proc,
+ &bus->suspend_msg[0], &bus->suspend_msg[1]);
+ USB_BUS_UNLOCK(bus);
+
+ return (0);
+}
+
+/*------------------------------------------------------------------------*
+ * usb_resume
+ *------------------------------------------------------------------------*/
+static int
+usb_resume(device_t dev)
+{
+ struct usb_bus *bus = device_get_softc(dev);
+
+ DPRINTF("\n");
+
+ if (bus == NULL) {
+ /* was never setup properly */
+ return (0);
+ }
+
+ USB_BUS_LOCK(bus);
+ usb_proc_msignal(&bus->explore_proc,
+ &bus->resume_msg[0], &bus->resume_msg[1]);
+ USB_BUS_UNLOCK(bus);
+
+ return (0);
+}
+
+/*------------------------------------------------------------------------*
+ * usb_shutdown
+ *------------------------------------------------------------------------*/
+static int
+usb_shutdown(device_t dev)
+{
+ struct usb_bus *bus = device_get_softc(dev);
+
+ DPRINTF("\n");
+
+ if (bus == NULL) {
+ /* was never setup properly */
+ return (0);
+ }
+
+ device_printf(bus->bdev, "Controller shutdown\n");
+
+ USB_BUS_LOCK(bus);
+ usb_proc_msignal(&bus->explore_proc,
+ &bus->shutdown_msg[0], &bus->shutdown_msg[1]);
+ if (usb_no_shutdown_wait == 0) {
+ /* wait for shutdown callback to be executed */
+ usb_proc_mwait(&bus->explore_proc,
+ &bus->shutdown_msg[0], &bus->shutdown_msg[1]);
+ }
+ USB_BUS_UNLOCK(bus);
+
+ device_printf(bus->bdev, "Controller shutdown complete\n");
+
+ return (0);
+}
+
+/*------------------------------------------------------------------------*
* usb_bus_explore
*
* This function is used to explore the device tree from the root.
@@ -226,6 +314,9 @@ usb_bus_explore(struct usb_proc_msg *pm)
bus = ((struct usb_bus_msg *)pm)->bus;
udev = bus->devices[USB_ROOT_HUB_ADDR];
+ if (bus->no_explore != 0)
+ return;
+
if (udev && udev->hub) {
if (bus->do_probe) {
@@ -296,6 +387,153 @@ usb_bus_detach(struct usb_proc_msg *pm)
bus->bdev = NULL;
}
+/*------------------------------------------------------------------------*
+ * usb_bus_suspend
+ *
+ * This function is used to suspend the USB contoller.
+ *------------------------------------------------------------------------*/
+static void
+usb_bus_suspend(struct usb_proc_msg *pm)
+{
+ struct usb_bus *bus;
+ struct usb_device *udev;
+ usb_error_t err;
+
+ bus = ((struct usb_bus_msg *)pm)->bus;
+ udev = bus->devices[USB_ROOT_HUB_ADDR];
+
+ if (udev == NULL || bus->bdev == NULL)
+ return;
+
+ USB_BUS_UNLOCK(bus);
+
+ bus_generic_shutdown(bus->bdev);
+
+ usbd_enum_lock(udev);
+
+ err = usbd_set_config_index(udev, USB_UNCONFIG_INDEX);
+ if (err)
+ device_printf(bus->bdev, "Could not unconfigure root HUB\n");
+
+ USB_BUS_LOCK(bus);
+ bus->hw_power_state = 0;
+ bus->no_explore = 1;
+ USB_BUS_UNLOCK(bus);
+
+ if (bus->methods->set_hw_power != NULL)
+ (bus->methods->set_hw_power) (bus);
+
+ if (bus->methods->set_hw_power_sleep != NULL)
+ (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SUSPEND);
+
+ usbd_enum_unlock(udev);
+
+ USB_BUS_LOCK(bus);
+}
+
+/*------------------------------------------------------------------------*
+ * usb_bus_resume
+ *
+ * This function is used to resume the USB contoller.
+ *------------------------------------------------------------------------*/
+static void
+usb_bus_resume(struct usb_proc_msg *pm)
+{
+ struct usb_bus *bus;
+ struct usb_device *udev;
+ usb_error_t err;
+
+ bus = ((struct usb_bus_msg *)pm)->bus;
+ udev = bus->devices[USB_ROOT_HUB_ADDR];
+
+ if (udev == NULL || bus->bdev == NULL)
+ return;
+
+ USB_BUS_UNLOCK(bus);
+
+ usbd_enum_lock(udev);
+#if 0
+ DEVMETHOD(usb_take_controller, NULL); /* dummy */
+#endif
+ USB_TAKE_CONTROLLER(device_get_parent(bus->bdev));
+
+ USB_BUS_LOCK(bus);
+ bus->hw_power_state =
+ USB_HW_POWER_CONTROL |
+ USB_HW_POWER_BULK |
+ USB_HW_POWER_INTERRUPT |
+ USB_HW_POWER_ISOC |
+ USB_HW_POWER_NON_ROOT_HUB;
+ bus->no_explore = 0;
+ USB_BUS_UNLOCK(bus);
+
+ if (bus->methods->set_hw_power_sleep != NULL)
+ (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_RESUME);
+
+ if (bus->methods->set_hw_power != NULL)
+ (bus->methods->set_hw_power) (bus);
+
+ /* restore USB configuration to index 0 */
+ err = usbd_set_config_index(udev, 0);
+ if (err)
+ device_printf(bus->bdev, "Could not configure root HUB\n");
+
+ /* probe and attach */
+ err = usb_probe_and_attach(udev, USB_IFACE_INDEX_ANY);
+ if (err) {
+ device_printf(bus->bdev, "Could not probe and "
+ "attach root HUB\n");
+ }
+
+ usbd_enum_unlock(udev);
+
+ USB_BUS_LOCK(bus);
+}
+
+/*------------------------------------------------------------------------*
+ * usb_bus_shutdown
+ *
+ * This function is used to shutdown the USB contoller.
+ *------------------------------------------------------------------------*/
+static void
+usb_bus_shutdown(struct usb_proc_msg *pm)
+{
+ struct usb_bus *bus;
+ struct usb_device *udev;
+ usb_error_t err;
+
+ bus = ((struct usb_bus_msg *)pm)->bus;
+ udev = bus->devices[USB_ROOT_HUB_ADDR];
+
+ if (udev == NULL || bus->bdev == NULL)
+ return;
+
+ USB_BUS_UNLOCK(bus);
+
+ bus_generic_shutdown(bus->bdev);
+
+ usbd_enum_lock(udev);
+
+ err = usbd_set_config_index(udev, USB_UNCONFIG_INDEX);
+ if (err)
+ device_printf(bus->bdev, "Could not unconfigure root HUB\n");
+
+ USB_BUS_LOCK(bus);
+ bus->hw_power_state = 0;
+ bus->no_explore = 1;
+ USB_BUS_UNLOCK(bus);
+
+ if (bus->methods->set_hw_power != NULL)
+ (bus->methods->set_hw_power) (bus);
+
+ if (bus->methods->set_hw_power_sleep != NULL)
+ (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SHUTDOWN);
+
+ usbd_enum_unlock(udev);
+
+ USB_BUS_LOCK(bus);
+}
+
static void
usb_power_wdog(void *arg)
{
@@ -374,8 +612,6 @@ usb_bus_attach(struct usb_proc_msg *pm)
return;
}
- USB_BUS_UNLOCK(bus);
-
/* default power_mask value */
bus->hw_power_state =
USB_HW_POWER_CONTROL |
@@ -384,13 +620,15 @@ usb_bus_attach(struct usb_proc_msg *pm)
USB_HW_POWER_ISOC |
USB_HW_POWER_NON_ROOT_HUB;
+ USB_BUS_UNLOCK(bus);
+
/* make sure power is set at least once */
if (bus->methods->set_hw_power != NULL) {
(bus->methods->set_hw_power) (bus);
}
- /* Allocate the Root USB device */
+ /* allocate the Root USB device */
child = usb_alloc_device(bus->bdev, bus, NULL, 0, 0, 1,
speed, USB_MODE_HOST);
@@ -456,6 +694,21 @@ usb_attach_sub(device_t dev, struct usb_bus *bus)
bus->attach_msg[1].hdr.pm_callback = &usb_bus_attach;
bus->attach_msg[1].bus = bus;
+ bus->suspend_msg[0].hdr.pm_callback = &usb_bus_suspend;
+ bus->suspend_msg[0].bus = bus;
+ bus->suspend_msg[1].hdr.pm_callback = &usb_bus_suspend;
+ bus->suspend_msg[1].bus = bus;
+
+ bus->resume_msg[0].hdr.pm_callback = &usb_bus_resume;
+ bus->resume_msg[0].bus = bus;
+ bus->resume_msg[1].hdr.pm_callback = &usb_bus_resume;
+ bus->resume_msg[1].bus = bus;
+
+ bus->shutdown_msg[0].hdr.pm_callback = &usb_bus_shutdown;
+ bus->shutdown_msg[0].bus = bus;
+ bus->shutdown_msg[1].hdr.pm_callback = &usb_bus_shutdown;
+ bus->shutdown_msg[1].bus = bus;
+
/* Create USB explore and callback processes */
if (usb_proc_create(&bus->giant_callback_proc,
@@ -477,10 +730,8 @@ usb_attach_sub(device_t dev, struct usb_bus *bus)
} else {
/* Get final attach going */
USB_BUS_LOCK(bus);
- if (usb_proc_msignal(&bus->explore_proc,
- &bus->attach_msg[0], &bus->attach_msg[1])) {
- /* ignore */
- }
+ usb_proc_msignal(&bus->explore_proc,
+ &bus->attach_msg[0], &bus->attach_msg[1]);
USB_BUS_UNLOCK(bus);
/* Do initial explore */
@@ -602,4 +853,3 @@ usb_bus_mem_free_all(struct usb_bus *bus, usb_bus_mem_cb_t *cb)
mtx_destroy(&bus->bus_mtx);
}
-
diff --git a/sys/dev/usb/controller/uss820dci.c b/sys/dev/usb/controller/uss820dci.c
index b98043e..612bc81 100644
--- a/sys/dev/usb/controller/uss820dci.c
+++ b/sys/dev/usb/controller/uss820dci.c
@@ -1513,16 +1513,16 @@ uss820dci_uninit(struct uss820dci_softc *sc)
USB_BUS_UNLOCK(&sc->sc_bus);
}
-void
+static void
uss820dci_suspend(struct uss820dci_softc *sc)
{
- return;
+ /* TODO */
}
-void
+static void
uss820dci_resume(struct uss820dci_softc *sc)
{
- return;
+ /* TODO */
}
static void
@@ -2360,6 +2360,26 @@ uss820dci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc
}
}
+static void
+uss820dci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
+{
+ struct uss820dci_softc *sc = USS820_DCI_BUS2SC(bus);
+
+ switch (state) {
+ case USB_HW_POWER_SUSPEND:
+ uss820dci_suspend(sc);
+ break;
+ case USB_HW_POWER_SHUTDOWN:
+ uss820dci_uninit(sc);
+ break;
+ case USB_HW_POWER_RESUME:
+ uss820dci_resume(sc);
+ break;
+ default:
+ break;
+ }
+}
+
struct usb_bus_methods uss820dci_bus_methods =
{
.endpoint_init = &uss820dci_ep_init,
@@ -2370,4 +2390,5 @@ struct usb_bus_methods uss820dci_bus_methods =
.clear_stall = &uss820dci_clear_stall,
.roothub_exec = &uss820dci_roothub_exec,
.xfer_poll = &uss820dci_do_poll,
+ .set_hw_power_sleep = uss820dci_set_hw_power_sleep,
};
diff --git a/sys/dev/usb/controller/uss820dci.h b/sys/dev/usb/controller/uss820dci.h
index e158c1c..8a27f15 100644
--- a/sys/dev/usb/controller/uss820dci.h
+++ b/sys/dev/usb/controller/uss820dci.h
@@ -349,8 +349,6 @@ struct uss820dci_softc {
usb_error_t uss820dci_init(struct uss820dci_softc *sc);
void uss820dci_uninit(struct uss820dci_softc *sc);
-void uss820dci_suspend(struct uss820dci_softc *sc);
-void uss820dci_resume(struct uss820dci_softc *sc);
void uss820dci_interrupt(struct uss820dci_softc *sc);
#endif /* _USS820_DCI_H_ */
diff --git a/sys/dev/usb/controller/uss820dci_atmelarm.c b/sys/dev/usb/controller/uss820dci_atmelarm.c
index a8bd197..7fd83a2 100644
--- a/sys/dev/usb/controller/uss820dci_atmelarm.c
+++ b/sys/dev/usb/controller/uss820dci_atmelarm.c
@@ -63,23 +63,17 @@ __FBSDID("$FreeBSD$");
static device_probe_t uss820_atmelarm_probe;
static device_attach_t uss820_atmelarm_attach;
static device_detach_t uss820_atmelarm_detach;
-static device_suspend_t uss820_atmelarm_suspend;
-static device_resume_t uss820_atmelarm_resume;
-static device_shutdown_t uss820_atmelarm_shutdown;
static device_method_t uss820dci_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, uss820_atmelarm_probe),
DEVMETHOD(device_attach, uss820_atmelarm_attach),
DEVMETHOD(device_detach, uss820_atmelarm_detach),
- DEVMETHOD(device_suspend, uss820_atmelarm_suspend),
- DEVMETHOD(device_resume, uss820_atmelarm_resume),
- DEVMETHOD(device_shutdown, uss820_atmelarm_shutdown),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
- {0, 0}
+ DEVMETHOD_END
};
static driver_t uss820dci_driver = {
@@ -96,47 +90,6 @@ MODULE_DEPEND(uss820, usb, 1, 1, 1);
static const char *const uss820_desc = "USS820 USB Device Controller";
static int
-uss820_atmelarm_suspend(device_t dev)
-{
- struct uss820dci_softc *sc = device_get_softc(dev);
- int err;
-
- err = bus_generic_suspend(dev);
- if (err == 0) {
- uss820dci_suspend(sc);
- }
- return (err);
-}
-
-static int
-uss820_atmelarm_resume(device_t dev)
-{
- struct uss820dci_softc *sc = device_get_softc(dev);
- int err;
-
- uss820dci_resume(sc);
-
- err = bus_generic_resume(dev);
-
- return (err);
-}
-
-static int
-uss820_atmelarm_shutdown(device_t dev)
-{
- struct uss820dci_softc *sc = device_get_softc(dev);
- int err;
-
- err = bus_generic_shutdown(dev);
- if (err)
- return (err);
-
- uss820dci_uninit(sc);
-
- return (0);
-}
-
-static int
uss820_atmelarm_probe(device_t dev)
{
device_set_desc(dev, uss820_desc);
@@ -224,7 +177,7 @@ uss820_atmelarm_detach(device_t dev)
device_delete_child(dev, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(dev);
+ device_delete_children(dev);
if (sc->sc_irq_res && sc->sc_intr_hdl) {
/*
diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c
index 9bc7d21..c20e3bd 100644
--- a/sys/dev/usb/controller/xhci.c
+++ b/sys/dev/usb/controller/xhci.c
@@ -550,24 +550,27 @@ xhci_uninit(struct xhci_softc *sc)
sx_destroy(&sc->sc_cmd_sx);
}
-void
-xhci_suspend(struct xhci_softc *sc)
-{
- /* XXX TODO */
-}
-
-void
-xhci_resume(struct xhci_softc *sc)
-{
- /* XXX TODO */
-}
-
-void
-xhci_shutdown(struct xhci_softc *sc)
+static void
+xhci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
{
- DPRINTF("Stopping the XHCI\n");
+ struct xhci_softc *sc = XHCI_BUS2SC(bus);
- xhci_halt_controller(sc);
+ switch (state) {
+ case USB_HW_POWER_SUSPEND:
+ DPRINTF("Stopping the XHCI\n");
+ xhci_halt_controller(sc);
+ break;
+ case USB_HW_POWER_SHUTDOWN:
+ DPRINTF("Stopping the XHCI\n");
+ xhci_halt_controller(sc);
+ break;
+ case USB_HW_POWER_RESUME:
+ DPRINTF("Starting the XHCI\n");
+ xhci_start_controller(sc);
+ break;
+ default:
+ break;
+ }
}
static usb_error_t
@@ -3928,4 +3931,5 @@ struct usb_bus_methods xhci_bus_methods = {
.set_address = xhci_set_address,
.clear_stall = xhci_ep_clear_stall,
.device_state_change = xhci_device_state_change,
+ .set_hw_power_sleep = xhci_set_hw_power_sleep,
};
diff --git a/sys/dev/usb/controller/xhci.h b/sys/dev/usb/controller/xhci.h
index 81f392a..14afcaf 100644
--- a/sys/dev/usb/controller/xhci.h
+++ b/sys/dev/usb/controller/xhci.h
@@ -494,9 +494,6 @@ usb_error_t xhci_halt_controller(struct xhci_softc *);
usb_error_t xhci_init(struct xhci_softc *, device_t);
usb_error_t xhci_start_controller(struct xhci_softc *);
void xhci_interrupt(struct xhci_softc *);
-void xhci_resume(struct xhci_softc *);
-void xhci_shutdown(struct xhci_softc *);
-void xhci_suspend(struct xhci_softc *);
void xhci_uninit(struct xhci_softc *);
#endif /* _XHCI_H_ */
diff --git a/sys/dev/usb/controller/xhci_pci.c b/sys/dev/usb/controller/xhci_pci.c
index 40358bf..80877ac 100644
--- a/sys/dev/usb/controller/xhci_pci.c
+++ b/sys/dev/usb/controller/xhci_pci.c
@@ -58,27 +58,24 @@ __FBSDID("$FreeBSD$");
#include <dev/usb/usb_pci.h>
#include <dev/usb/controller/xhci.h>
#include <dev/usb/controller/xhcireg.h>
+#include "usb_if.h"
static device_probe_t xhci_pci_probe;
static device_attach_t xhci_pci_attach;
static device_detach_t xhci_pci_detach;
-static device_suspend_t xhci_pci_suspend;
-static device_resume_t xhci_pci_resume;
-static device_shutdown_t xhci_pci_shutdown;
-static void xhci_pci_takecontroller(device_t);
+static usb_take_controller_t xhci_pci_take_controller;
static device_method_t xhci_device_methods[] = {
/* device interface */
DEVMETHOD(device_probe, xhci_pci_probe),
DEVMETHOD(device_attach, xhci_pci_attach),
DEVMETHOD(device_detach, xhci_pci_detach),
- DEVMETHOD(device_suspend, xhci_pci_suspend),
- DEVMETHOD(device_resume, xhci_pci_resume),
- DEVMETHOD(device_shutdown, xhci_pci_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
+ DEVMETHOD(device_suspend, bus_generic_suspend),
+ DEVMETHOD(device_resume, bus_generic_resume),
+ DEVMETHOD(device_shutdown, bus_generic_shutdown),
+ DEVMETHOD(usb_take_controller, xhci_pci_take_controller),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t xhci_driver = {
@@ -92,45 +89,6 @@ static devclass_t xhci_devclass;
DRIVER_MODULE(xhci, pci, xhci_driver, xhci_devclass, 0, 0);
MODULE_DEPEND(xhci, usb, 1, 1, 1);
-static int
-xhci_pci_suspend(device_t self)
-{
- struct xhci_softc *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_suspend(self);
- if (err)
- return (err);
- xhci_suspend(sc);
- return (0);
-}
-
-static int
-xhci_pci_resume(device_t self)
-{
- struct xhci_softc *sc = device_get_softc(self);
-
- xhci_pci_takecontroller(self);
- xhci_resume(sc);
-
- bus_generic_resume(self);
-
- return (0);
-}
-
-static int
-xhci_pci_shutdown(device_t self)
-{
- struct xhci_softc *sc = device_get_softc(self);
- int err;
-
- err = bus_generic_shutdown(self);
- if (err)
- return (err);
- xhci_shutdown(sc);
-
- return (0);
-}
static const char *
xhci_pci_match(device_t self)
@@ -211,7 +169,7 @@ xhci_pci_attach(device_t self)
sc->sc_intr_hdl = NULL;
goto error;
}
- xhci_pci_takecontroller(self);
+ xhci_pci_take_controller(self);
err = xhci_halt_controller(sc);
@@ -244,7 +202,7 @@ xhci_pci_detach(device_t self)
device_delete_child(self, bdev);
}
/* during module unload there are lots of children leftover */
- device_delete_all_children(self);
+ device_delete_children(self);
pci_disable_busmaster(self);
@@ -270,8 +228,8 @@ xhci_pci_detach(device_t self)
return (0);
}
-static void
-xhci_pci_takecontroller(device_t self)
+static int
+xhci_pci_take_controller(device_t self)
{
struct xhci_softc *sc = device_get_softc(self);
uint32_t cparams;
@@ -314,4 +272,5 @@ xhci_pci_takecontroller(device_t self)
usb_pause_mtx(NULL, hz / 100); /* wait 10ms */
}
}
+ return (0);
}
diff --git a/sys/dev/usb/controller/xhcireg.h b/sys/dev/usb/controller/xhcireg.h
index 8be502e..b14dabc 100644
--- a/sys/dev/usb/controller/xhcireg.h
+++ b/sys/dev/usb/controller/xhcireg.h
@@ -115,7 +115,7 @@
#define XHCI_PS_PR 0x00000010 /* RW - port reset */
#define XHCI_PS_PLS_GET(x) (((x) >> 5) & 0xF) /* RW - port link state */
#define XHCI_PS_PLS_SET(x) (((x) & 0xF) << 5) /* RW - port link state */
-#define XHCI_PS_PP 0x00000100 /* RW - port power */
+#define XHCI_PS_PP 0x00000200 /* RW - port power */
#define XHCI_PS_SPEED_GET(x) (((x) >> 10) & 0xF) /* RO - port speed */
#define XHCI_PS_PIC_GET(x) (((x) >> 14) & 0x3) /* RW - port indicator */
#define XHCI_PS_PIC_SET(x) (((x) & 0x3) << 14) /* RW - port indicator */
diff --git a/sys/dev/usb/input/ukbd.c b/sys/dev/usb/input/ukbd.c
index 688f17b..eb7e1d9 100644
--- a/sys/dev/usb/input/ukbd.c
+++ b/sys/dev/usb/input/ukbd.c
@@ -198,7 +198,6 @@ struct ukbd_softc {
int sc_mode; /* input mode (K_XLATE,K_RAW,K_CODE) */
int sc_state; /* shift/lock key state */
int sc_accents; /* accent key index (> 0) */
- int sc_poll_tick_last;
int sc_led_size;
int sc_kbd_size;
@@ -227,7 +226,6 @@ struct ukbd_softc {
uint8_t sc_id_events;
uint8_t sc_kbd_id;
- uint8_t sc_poll_detected;
uint8_t sc_buffer[UKBD_BUFFER_SIZE];
};
@@ -247,6 +245,33 @@ struct ukbd_softc {
SCAN_PREFIX_CTL | SCAN_PREFIX_SHIFT)
#define SCAN_CHAR(c) ((c) & 0x7f)
+#define UKBD_LOCK() mtx_lock(&Giant)
+#define UKBD_UNLOCK() mtx_unlock(&Giant)
+
+#ifdef INVARIANTS
+
+/*
+ * Assert that the lock is held in all contexts
+ * where the code can be executed.
+ */
+#define UKBD_LOCK_ASSERT() mtx_assert(&Giant, MA_OWNED)
+
+/*
+ * Assert that the lock is held in the contexts
+ * where it really has to be so.
+ */
+#define UKBD_CTX_LOCK_ASSERT() \
+ do { \
+ if (!kdb_active && panicstr == NULL) \
+ mtx_assert(&Giant, MA_OWNED); \
+ } while (0)
+#else
+
+#define UKBD_LOCK_ASSERT() (void)0
+#define UKBD_CTX_LOCK_ASSERT() (void)0
+
+#endif
+
struct ukbd_mods {
uint32_t mask, key;
};
@@ -339,8 +364,6 @@ static int ukbd_ioctl(keyboard_t *, u_long, caddr_t);
static int ukbd_enable(keyboard_t *);
static int ukbd_disable(keyboard_t *);
static void ukbd_interrupt(struct ukbd_softc *);
-static int ukbd_is_polling(struct ukbd_softc *);
-static int ukbd_polls_other_thread(struct ukbd_softc *);
static void ukbd_event_keyinput(struct ukbd_softc *);
static device_probe_t ukbd_probe;
@@ -370,7 +393,8 @@ ukbd_start_timer(struct ukbd_softc *sc)
static void
ukbd_put_key(struct ukbd_softc *sc, uint32_t key)
{
- mtx_assert(&Giant, MA_OWNED);
+
+ UKBD_CTX_LOCK_ASSERT();
DPRINTF("0x%02x (%d) %s\n", key, key,
(key & KEY_RELEASE) ? "released" : "pressed");
@@ -388,52 +412,32 @@ ukbd_put_key(struct ukbd_softc *sc, uint32_t key)
}
static void
-ukbd_yield(void)
-{
- struct thread *td = curthread;
- uint32_t old_prio;
-
- DROP_GIANT();
-
- thread_lock(td);
-
- /* get current priority */
- old_prio = td->td_base_pri;
-
- /* set new priority */
- sched_prio(td, td->td_user_pri);
-
- /* cause a task switch */
- mi_switch(SW_INVOL | SWT_RELINQUISH, NULL);
-
- /* restore priority */
- sched_prio(td, old_prio);
-
- thread_unlock(td);
-
- PICKUP_GIANT();
-}
-
-static void
ukbd_do_poll(struct ukbd_softc *sc, uint8_t wait)
{
- DPRINTFN(2, "polling\n");
- /* update stats about last polling event */
- sc->sc_poll_tick_last = ticks;
- sc->sc_poll_detected = 1;
+ UKBD_CTX_LOCK_ASSERT();
+ KASSERT((sc->sc_flags & UKBD_FLAG_POLLING) != 0,
+ ("ukbd_do_poll called when not polling\n"));
+ DPRINTFN(2, "polling\n");
- if (kdb_active == 0) {
+ if (!kdb_active && !SCHEDULER_STOPPED()) {
+ /*
+ * In this context the kernel is polling for input,
+ * but the USB subsystem works in normal interrupt-driven
+ * mode, so we just wait on the USB threads to do the job.
+ * Note that we currently hold the Giant, but it's also used
+ * as the transfer mtx, so we must release it while waiting.
+ */
while (sc->sc_inputs == 0) {
-
- /* give USB threads a chance to run */
- ukbd_yield();
-
- /* check if we should wait */
+ /*
+ * Give USB threads a chance to run. Note that
+ * kern_yield performs DROP_GIANT + PICKUP_GIANT.
+ */
+ kern_yield(PRI_UNCHANGED);
if (!wait)
break;
}
- return; /* Only poll if KDB is active */
+ return;
}
while (sc->sc_inputs == 0) {
@@ -441,7 +445,6 @@ ukbd_do_poll(struct ukbd_softc *sc, uint8_t wait)
usbd_transfer_poll(sc->sc_xfer, UKBD_N_TRANSFER);
/* Delay-optimised support for repetition of keys */
-
if (ukbd_any_key_pressed(sc)) {
/* a key is pressed - need timekeeping */
DELAY(1000);
@@ -462,16 +465,16 @@ ukbd_get_key(struct ukbd_softc *sc, uint8_t wait)
{
int32_t c;
- mtx_assert(&Giant, MA_OWNED);
+ UKBD_CTX_LOCK_ASSERT();
+ KASSERT((!kdb_active && !SCHEDULER_STOPPED())
+ || (sc->sc_flags & UKBD_FLAG_POLLING) != 0,
+ ("not polling in kdb or panic\n"));
if (sc->sc_inputs == 0) {
/* start transfer, if not already started */
usbd_transfer_start(sc->sc_xfer[UKBD_INTR_DT]);
}
- if (ukbd_polls_other_thread(sc))
- return (-1);
-
if (sc->sc_flags & UKBD_FLAG_POLLING)
ukbd_do_poll(sc, wait);
@@ -499,6 +502,8 @@ ukbd_interrupt(struct ukbd_softc *sc)
uint8_t i;
uint8_t j;
+ UKBD_CTX_LOCK_ASSERT();
+
if (sc->sc_ndata.keycode[0] == KEY_ERROR)
return;
@@ -584,7 +589,9 @@ ukbd_event_keyinput(struct ukbd_softc *sc)
{
int c;
- if (ukbd_is_polling(sc))
+ UKBD_CTX_LOCK_ASSERT();
+
+ if ((sc->sc_flags & UKBD_FLAG_POLLING) != 0)
return;
if (sc->sc_inputs == 0)
@@ -608,7 +615,7 @@ ukbd_timeout(void *arg)
{
struct ukbd_softc *sc = arg;
- mtx_assert(&Giant, MA_OWNED);
+ UKBD_LOCK_ASSERT();
sc->sc_time_ms += 25; /* milliseconds */
@@ -656,6 +663,8 @@ ukbd_intr_callback(struct usb_xfer *xfer, usb_error_t error)
uint8_t id;
int len;
+ UKBD_LOCK_ASSERT();
+
usbd_xfer_status(xfer, &len, NULL, NULL, NULL);
pc = usbd_xfer_get_frame(xfer, 0);
@@ -842,6 +851,8 @@ ukbd_set_leds_callback(struct usb_xfer *xfer, usb_error_t error)
uint8_t any;
int len;
+ UKBD_LOCK_ASSERT();
+
#ifdef USB_DEBUG
if (ukbd_no_leds)
return;
@@ -972,6 +983,7 @@ ukbd_probe(device_t dev)
int error;
uint16_t d_len;
+ UKBD_LOCK_ASSERT();
DPRINTFN(11, "\n");
if (sw == NULL) {
@@ -998,7 +1010,7 @@ ukbd_probe(device_t dev)
if (error)
return (ENXIO);
- /*
+ /*
* NOTE: we currently don't support USB mouse and USB keyboard
* on the same USB endpoint.
*/
@@ -1165,6 +1177,8 @@ ukbd_attach(device_t dev)
uint16_t n;
uint16_t hid_len;
+ UKBD_LOCK_ASSERT();
+
kbd_init_struct(kbd, UKBD_DRIVER_NAME, KB_OTHER, unit, 0, 0, 0);
kbd->kb_data = (void *)sc;
@@ -1241,14 +1255,10 @@ ukbd_attach(device_t dev)
/* ignore if SETIDLE fails, hence it is not crucial */
usbd_req_set_idle(sc->sc_udev, NULL, sc->sc_iface_index, 0, 0);
- mtx_lock(&Giant);
-
ukbd_ioctl(kbd, KDSETLED, (caddr_t)&sc->sc_state);
KBD_INIT_DONE(kbd);
- mtx_unlock(&Giant);
-
if (kbd_register(kbd) < 0) {
goto detach;
}
@@ -1266,15 +1276,10 @@ ukbd_attach(device_t dev)
if (bootverbose) {
genkbd_diag(kbd, bootverbose);
}
- /* lock keyboard mutex */
-
- mtx_lock(&Giant);
/* start the keyboard */
-
usbd_transfer_start(sc->sc_xfer[UKBD_INTR_DT]);
- mtx_unlock(&Giant);
return (0); /* success */
detach:
@@ -1288,9 +1293,9 @@ ukbd_detach(device_t dev)
struct ukbd_softc *sc = device_get_softc(dev);
int error;
- DPRINTF("\n");
+ UKBD_LOCK_ASSERT();
- mtx_lock(&Giant);
+ DPRINTF("\n");
sc->sc_flags |= UKBD_FLAG_GONE;
@@ -1318,8 +1323,6 @@ ukbd_detach(device_t dev)
}
sc->sc_kbd.kb_flags = 0;
- mtx_unlock(&Giant);
-
usbd_transfer_unsetup(sc->sc_xfer, UKBD_N_TRANSFER);
usb_callout_drain(&sc->sc_callout);
@@ -1335,12 +1338,10 @@ ukbd_resume(device_t dev)
{
struct ukbd_softc *sc = device_get_softc(dev);
- mtx_lock(&Giant);
+ UKBD_LOCK_ASSERT();
ukbd_clear_state(&sc->sc_kbd);
- mtx_unlock(&Giant);
-
return (0);
}
@@ -1400,15 +1401,11 @@ ukbd_lock(keyboard_t *kbd, int lock)
static int
ukbd_enable(keyboard_t *kbd)
{
- if (!mtx_owned(&Giant)) {
- /* XXX cludge */
- int retval;
- mtx_lock(&Giant);
- retval = ukbd_enable(kbd);
- mtx_unlock(&Giant);
- return (retval);
- }
+
+ UKBD_LOCK();
KBD_ACTIVATE(kbd);
+ UKBD_UNLOCK();
+
return (0);
}
@@ -1416,44 +1413,24 @@ ukbd_enable(keyboard_t *kbd)
static int
ukbd_disable(keyboard_t *kbd)
{
- if (!mtx_owned(&Giant)) {
- /* XXX cludge */
- int retval;
- mtx_lock(&Giant);
- retval = ukbd_disable(kbd);
- mtx_unlock(&Giant);
- return (retval);
- }
+
+ UKBD_LOCK();
KBD_DEACTIVATE(kbd);
+ UKBD_UNLOCK();
+
return (0);
}
/* check if data is waiting */
+/* Currently unused. */
static int
ukbd_check(keyboard_t *kbd)
{
struct ukbd_softc *sc = kbd->kb_data;
- if (!KBD_IS_ACTIVE(kbd))
- return (0);
+ UKBD_CTX_LOCK_ASSERT();
- if (sc->sc_flags & UKBD_FLAG_POLLING) {
- if (!mtx_owned(&Giant)) {
- /* XXX cludge */
- int retval;
- mtx_lock(&Giant);
- retval = ukbd_check(kbd);
- mtx_unlock(&Giant);
- return (retval);
- }
- } else {
- /* XXX the keyboard layer requires Giant */
- if (!mtx_owned(&Giant))
- return (0);
- }
-
- /* check if key belongs to this thread */
- if (ukbd_polls_other_thread(sc))
+ if (!KBD_IS_ACTIVE(kbd))
return (0);
if (sc->sc_flags & UKBD_FLAG_POLLING)
@@ -1472,30 +1449,13 @@ ukbd_check(keyboard_t *kbd)
/* check if char is waiting */
static int
-ukbd_check_char(keyboard_t *kbd)
+ukbd_check_char_locked(keyboard_t *kbd)
{
struct ukbd_softc *sc = kbd->kb_data;
- if (!KBD_IS_ACTIVE(kbd))
- return (0);
+ UKBD_CTX_LOCK_ASSERT();
- if (sc->sc_flags & UKBD_FLAG_POLLING) {
- if (!mtx_owned(&Giant)) {
- /* XXX cludge */
- int retval;
- mtx_lock(&Giant);
- retval = ukbd_check_char(kbd);
- mtx_unlock(&Giant);
- return (retval);
- }
- } else {
- /* XXX the keyboard layer requires Giant */
- if (!mtx_owned(&Giant))
- return (0);
- }
-
- /* check if key belongs to this thread */
- if (ukbd_polls_other_thread(sc))
+ if (!KBD_IS_ACTIVE(kbd))
return (0);
if ((sc->sc_composed_char > 0) &&
@@ -1505,39 +1465,34 @@ ukbd_check_char(keyboard_t *kbd)
return (ukbd_check(kbd));
}
+static int
+ukbd_check_char(keyboard_t *kbd)
+{
+ int result;
+
+ UKBD_LOCK();
+ result = ukbd_check_char_locked(kbd);
+ UKBD_UNLOCK();
+
+ return (result);
+}
/* read one byte from the keyboard if it's allowed */
+/* Currently unused. */
static int
ukbd_read(keyboard_t *kbd, int wait)
{
struct ukbd_softc *sc = kbd->kb_data;
int32_t usbcode;
-
#ifdef UKBD_EMULATE_ATSCANCODE
uint32_t keycode;
uint32_t scancode;
#endif
- if (!KBD_IS_ACTIVE(kbd))
- return (-1);
- if (sc->sc_flags & UKBD_FLAG_POLLING) {
- if (!mtx_owned(&Giant)) {
- /* XXX cludge */
- int retval;
- mtx_lock(&Giant);
- retval = ukbd_read(kbd, wait);
- mtx_unlock(&Giant);
- return (retval);
- }
- } else {
- /* XXX the keyboard layer requires Giant */
- if (!mtx_owned(&Giant))
- return (-1);
- }
+ UKBD_CTX_LOCK_ASSERT();
- /* check if key belongs to this thread */
- if (ukbd_polls_other_thread(sc))
+ if (!KBD_IS_ACTIVE(kbd))
return (-1);
#ifdef UKBD_EMULATE_ATSCANCODE
@@ -1574,38 +1529,19 @@ ukbd_read(keyboard_t *kbd, int wait)
/* read char from the keyboard */
static uint32_t
-ukbd_read_char(keyboard_t *kbd, int wait)
+ukbd_read_char_locked(keyboard_t *kbd, int wait)
{
struct ukbd_softc *sc = kbd->kb_data;
uint32_t action;
uint32_t keycode;
int32_t usbcode;
-
#ifdef UKBD_EMULATE_ATSCANCODE
uint32_t scancode;
-
#endif
- if (!KBD_IS_ACTIVE(kbd))
- return (NOKEY);
-
- if (sc->sc_flags & UKBD_FLAG_POLLING) {
- if (!mtx_owned(&Giant)) {
- /* XXX cludge */
- int retval;
- mtx_lock(&Giant);
- retval = ukbd_read_char(kbd, wait);
- mtx_unlock(&Giant);
- return (retval);
- }
- } else {
- /* XXX the keyboard layer requires Giant */
- if (!mtx_owned(&Giant))
- return (NOKEY);
- }
+ UKBD_CTX_LOCK_ASSERT();
- /* check if key belongs to this thread */
- if (ukbd_polls_other_thread(sc))
+ if (!KBD_IS_ACTIVE(kbd))
return (NOKEY);
next_code:
@@ -1782,39 +1718,32 @@ errkey:
return (ERRKEY);
}
+/* Currently wait is always false. */
+static uint32_t
+ukbd_read_char(keyboard_t *kbd, int wait)
+{
+ uint32_t keycode;
+
+ UKBD_LOCK();
+ keycode = ukbd_read_char_locked(kbd, wait);
+ UKBD_UNLOCK();
+
+ return (keycode);
+}
+
/* some useful control functions */
static int
-ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
+ukbd_ioctl_locked(keyboard_t *kbd, u_long cmd, caddr_t arg)
{
struct ukbd_softc *sc = kbd->kb_data;
int i;
-
#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \
defined(COMPAT_FREEBSD4) || defined(COMPAT_43)
int ival;
#endif
- if (!mtx_owned(&Giant)) {
- /*
- * XXX big problem: If scroll lock is pressed and "printf()"
- * is called, the CPU will get here, to un-scroll lock the
- * keyboard. But if "printf()" acquires the "Giant" lock,
- * there will be a locking order reversal problem, so the
- * keyboard system must get out of "Giant" first, before the
- * CPU can proceed here ...
- */
- switch (cmd) {
- case KDGKBMODE:
- case KDSKBMODE:
- /* workaround for Geli */
- mtx_lock(&Giant);
- i = ukbd_ioctl(kbd, cmd, arg);
- mtx_unlock(&Giant);
- return (i);
- default:
- return (EINVAL);
- }
- }
+
+ UKBD_LOCK_ASSERT();
switch (cmd) {
case KDGKBMODE: /* get keyboard mode */
@@ -1839,7 +1768,7 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
case K_RAW:
case K_CODE:
if (sc->sc_mode != *(int *)arg) {
- if (ukbd_is_polling(sc) == 0)
+ if ((sc->sc_flags & UKBD_FLAG_POLLING) == 0)
ukbd_clear_state(kbd);
sc->sc_mode = *(int *)arg;
}
@@ -1943,19 +1872,44 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
return (0);
}
+static int
+ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
+{
+ int result;
+
+ /*
+ * XXX KDGKBSTATE, KDSKBSTATE and KDSETLED can be called from any
+ * context where printf(9) can be called, which among other things
+ * includes interrupt filters and threads with any kinds of locks
+ * already held. For this reason it would be dangerous to acquire
+ * the Giant here unconditionally. On the other hand we have to
+ * have it to handle the ioctl.
+ * So we make our best effort to auto-detect whether we can grab
+ * the Giant or not. Blame syscons(4) for this.
+ */
+ switch (cmd) {
+ case KDGKBSTATE:
+ case KDSKBSTATE:
+ case KDSETLED:
+ if (!mtx_owned(&Giant) && !SCHEDULER_STOPPED())
+ return (EDEADLK); /* best I could come up with */
+ /* FALLTHROUGH */
+ default:
+ UKBD_LOCK();
+ result = ukbd_ioctl_locked(kbd, cmd, arg);
+ UKBD_UNLOCK();
+ return (result);
+ }
+}
+
+
/* clear the internal state of the keyboard */
static void
ukbd_clear_state(keyboard_t *kbd)
{
struct ukbd_softc *sc = kbd->kb_data;
- if (!mtx_owned(&Giant)) {
- /* XXX cludge */
- mtx_lock(&Giant);
- ukbd_clear_state(kbd);
- mtx_unlock(&Giant);
- return;
- }
+ UKBD_CTX_LOCK_ASSERT();
sc->sc_flags &= ~(UKBD_FLAG_COMPOSE | UKBD_FLAG_POLLING);
sc->sc_state &= LOCK_MASK; /* preserve locking key state */
@@ -1986,43 +1940,11 @@ ukbd_set_state(keyboard_t *kbd, void *buf, size_t len)
}
static int
-ukbd_is_polling(struct ukbd_softc *sc)
-{
- int delta;
-
- if (sc->sc_flags & UKBD_FLAG_POLLING)
- return (1); /* polling */
-
- delta = ticks - sc->sc_poll_tick_last;
- if ((delta < 0) || (delta >= hz)) {
- sc->sc_poll_detected = 0;
- return (0); /* not polling */
- }
-
- return (sc->sc_poll_detected);
-}
-
-static int
-ukbd_polls_other_thread(struct ukbd_softc *sc)
-{
- return (ukbd_is_polling(sc) &&
- (sc->sc_poll_thread != curthread));
-}
-
-static int
ukbd_poll(keyboard_t *kbd, int on)
{
struct ukbd_softc *sc = kbd->kb_data;
- if (!mtx_owned(&Giant)) {
- /* XXX cludge */
- int retval;
- mtx_lock(&Giant);
- retval = ukbd_poll(kbd, on);
- mtx_unlock(&Giant);
- return (retval);
- }
-
+ UKBD_LOCK();
if (on) {
sc->sc_flags |= UKBD_FLAG_POLLING;
sc->sc_poll_thread = curthread;
@@ -2030,6 +1952,8 @@ ukbd_poll(keyboard_t *kbd, int on)
sc->sc_flags &= ~UKBD_FLAG_POLLING;
ukbd_start_timer(sc); /* start timer */
}
+ UKBD_UNLOCK();
+
return (0);
}
@@ -2038,6 +1962,8 @@ ukbd_poll(keyboard_t *kbd, int on)
static void
ukbd_set_leds(struct ukbd_softc *sc, uint8_t leds)
{
+
+ UKBD_LOCK_ASSERT();
DPRINTF("leds=0x%02x\n", leds);
sc->sc_leds = leds;
diff --git a/sys/dev/usb/net/if_aue.c b/sys/dev/usb/net/if_aue.c
index a14f233..fdee6b7 100644
--- a/sys/dev/usb/net/if_aue.c
+++ b/sys/dev/usb/net/if_aue.c
@@ -254,15 +254,12 @@ static device_method_t aue_methods[] = {
DEVMETHOD(device_attach, aue_attach),
DEVMETHOD(device_detach, aue_detach),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
/* MII interface */
DEVMETHOD(miibus_readreg, aue_miibus_readreg),
DEVMETHOD(miibus_writereg, aue_miibus_writereg),
DEVMETHOD(miibus_statchg, aue_miibus_statchg),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t aue_driver = {
diff --git a/sys/dev/usb/net/if_axe.c b/sys/dev/usb/net/if_axe.c
index 0d18f2b..02bb358 100644
--- a/sys/dev/usb/net/if_axe.c
+++ b/sys/dev/usb/net/if_axe.c
@@ -151,6 +151,7 @@ static const STRUCT_USB_HOST_ID axe_devs[] = {
AXE_DEV(ASIX, AX88772, AXE_FLAG_772),
AXE_DEV(ASIX, AX88772A, AXE_FLAG_772A),
AXE_DEV(ASIX, AX88772B, AXE_FLAG_772B),
+ AXE_DEV(ASIX, AX88772B_1, AXE_FLAG_772B),
AXE_DEV(ATEN, UC210T, 0),
AXE_DEV(BELKIN, F5D5055, AXE_FLAG_178),
AXE_DEV(BILLIONTON, USB2AR, 0),
@@ -251,15 +252,12 @@ static device_method_t axe_methods[] = {
DEVMETHOD(device_attach, axe_attach),
DEVMETHOD(device_detach, axe_detach),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
/* MII interface */
DEVMETHOD(miibus_readreg, axe_miibus_readreg),
DEVMETHOD(miibus_writereg, axe_miibus_writereg),
DEVMETHOD(miibus_statchg, axe_miibus_statchg),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t axe_driver = {
diff --git a/sys/dev/usb/net/if_mos.c b/sys/dev/usb/net/if_mos.c
index 11cb962..7dd889e 100644
--- a/sys/dev/usb/net/if_mos.c
+++ b/sys/dev/usb/net/if_mos.c
@@ -220,15 +220,12 @@ static device_method_t mos_methods[] = {
DEVMETHOD(device_attach, mos_attach),
DEVMETHOD(device_detach, mos_detach),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
/* MII interface */
DEVMETHOD(miibus_readreg, mos_miibus_readreg),
DEVMETHOD(miibus_writereg, mos_miibus_writereg),
DEVMETHOD(miibus_statchg, mos_miibus_statchg),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t mos_driver = {
diff --git a/sys/dev/usb/net/if_rue.c b/sys/dev/usb/net/if_rue.c
index e4fd035..a870676 100644
--- a/sys/dev/usb/net/if_rue.c
+++ b/sys/dev/usb/net/if_rue.c
@@ -186,15 +186,12 @@ static device_method_t rue_methods[] = {
DEVMETHOD(device_attach, rue_attach),
DEVMETHOD(device_detach, rue_detach),
- /* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
/* MII interface */
DEVMETHOD(miibus_readreg, rue_miibus_readreg),
DEVMETHOD(miibus_writereg, rue_miibus_writereg),
DEVMETHOD(miibus_statchg, rue_miibus_statchg),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t rue_driver = {
diff --git a/sys/dev/usb/net/if_udav.c b/sys/dev/usb/net/if_udav.c
index 3fa3d15..8160a3b 100644
--- a/sys/dev/usb/net/if_udav.c
+++ b/sys/dev/usb/net/if_udav.c
@@ -145,15 +145,12 @@ static device_method_t udav_methods[] = {
DEVMETHOD(device_attach, udav_attach),
DEVMETHOD(device_detach, udav_detach),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
-
/* MII interface */
DEVMETHOD(miibus_readreg, udav_miibus_readreg),
DEVMETHOD(miibus_writereg, udav_miibus_writereg),
DEVMETHOD(miibus_statchg, udav_miibus_statchg),
- {0, 0}
+ DEVMETHOD_END
};
static driver_t udav_driver = {
diff --git a/sys/dev/usb/net/ruephy.c b/sys/dev/usb/net/ruephy.c
index 64150a5..839c022 100644
--- a/sys/dev/usb/net/ruephy.c
+++ b/sys/dev/usb/net/ruephy.c
@@ -61,7 +61,7 @@ static device_method_t ruephy_methods[] = {
DEVMETHOD(device_attach, ruephy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t ruephy_devclass;
diff --git a/sys/dev/usb/quirk/usb_quirk.c b/sys/dev/usb/quirk/usb_quirk.c
index b0d7a7d..03ab038 100644
--- a/sys/dev/usb/quirk/usb_quirk.c
+++ b/sys/dev/usb/quirk/usb_quirk.c
@@ -248,6 +248,7 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRKS_MAX] = {
USB_QUIRK(MICROTECH, DPCM, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_CBI,
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_TEST_UNIT_READY,
UQ_MSC_NO_START_STOP),
+ USB_QUIRK(MICRON, REALSSD, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE),
USB_QUIRK(MICROTECH, SCSIDB25, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
UQ_MSC_FORCE_PROTO_SCSI),
USB_QUIRK(MICROTECH, SCSIHD50, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
diff --git a/sys/dev/usb/serial/usb_serial.c b/sys/dev/usb/serial/usb_serial.c
index a3e6ffb..e63a0aa 100644
--- a/sys/dev/usb/serial/usb_serial.c
+++ b/sys/dev/usb/serial/usb_serial.c
@@ -1308,6 +1308,8 @@ static cn_init_t ucom_cninit;
static cn_term_t ucom_cnterm;
static cn_getc_t ucom_cngetc;
static cn_putc_t ucom_cnputc;
+static cn_grab_t ucom_cngrab;
+static cn_ungrab_t ucom_cnungrab;
CONSOLE_DRIVER(ucom);
@@ -1332,6 +1334,16 @@ ucom_cnterm(struct consdev *cp)
{
}
+static void
+ucom_cngrab(struct consdev *cp)
+{
+}
+
+static void
+ucom_cnungrab(struct consdev *cp)
+{
+}
+
static int
ucom_cngetc(struct consdev *cd)
{
diff --git a/sys/dev/usb/template/usb_template.c b/sys/dev/usb/template/usb_template.c
index 209016a..b929665 100644
--- a/sys/dev/usb/template/usb_template.c
+++ b/sys/dev/usb/template/usb_template.c
@@ -260,7 +260,7 @@ usb_make_endpoint_desc(struct usb_temp_setup *temp,
ed->bInterval = 1; /* 1 ms */
break;
default:
- ed->bInterval = 8; /* 8*125 us */
+ ed->bInterval = 4; /* 1 ms */
break;
}
break;
diff --git a/sys/dev/usb/template/usb_template_kbd.c b/sys/dev/usb/template/usb_template_kbd.c
index 8928c06..6295825 100644
--- a/sys/dev/usb/template/usb_template_kbd.c
+++ b/sys/dev/usb/template/usb_template_kbd.c
@@ -89,9 +89,9 @@ static const struct usb_temp_packet_size keyboard_intr_mps = {
};
static const struct usb_temp_interval keyboard_intr_interval = {
- .bInterval[USB_SPEED_LOW] = 2, /* ms */
- .bInterval[USB_SPEED_FULL] = 2,
- .bInterval[USB_SPEED_HIGH] = 2 * 8,
+ .bInterval[USB_SPEED_LOW] = 2, /* 2 ms */
+ .bInterval[USB_SPEED_FULL] = 2, /* 2 ms */
+ .bInterval[USB_SPEED_HIGH] = 5, /* 2 ms */
};
/* The following HID descriptor was dumped from a HP keyboard. */
diff --git a/sys/dev/usb/template/usb_template_modem.c b/sys/dev/usb/template/usb_template_modem.c
index 6e0f940..abc6f26 100644
--- a/sys/dev/usb/template/usb_template_modem.c
+++ b/sys/dev/usb/template/usb_template_modem.c
@@ -98,9 +98,9 @@ static const struct usb_temp_packet_size modem_intr_mps = {
};
static const struct usb_temp_interval modem_intr_interval = {
- .bInterval[USB_SPEED_LOW] = 10,
- .bInterval[USB_SPEED_FULL] = 10,
- .bInterval[USB_SPEED_HIGH] = 10 * 8,
+ .bInterval[USB_SPEED_LOW] = 8, /* 8ms */
+ .bInterval[USB_SPEED_FULL] = 8, /* 8ms */
+ .bInterval[USB_SPEED_HIGH] = 7, /* 8ms */
};
static const struct usb_temp_endpoint_desc modem_ep_0 = {
diff --git a/sys/dev/usb/template/usb_template_mouse.c b/sys/dev/usb/template/usb_template_mouse.c
index 3ff0fb0..628c9a5 100644
--- a/sys/dev/usb/template/usb_template_mouse.c
+++ b/sys/dev/usb/template/usb_template_mouse.c
@@ -101,9 +101,9 @@ static const struct usb_temp_packet_size mouse_intr_mps = {
};
static const struct usb_temp_interval mouse_intr_interval = {
- .bInterval[USB_SPEED_LOW] = 2,
- .bInterval[USB_SPEED_FULL] = 2,
- .bInterval[USB_SPEED_HIGH] = 2 * 8,
+ .bInterval[USB_SPEED_LOW] = 2, /* 2ms */
+ .bInterval[USB_SPEED_FULL] = 2, /* 2ms */
+ .bInterval[USB_SPEED_HIGH] = 5, /* 2ms */
};
static const struct usb_temp_endpoint_desc mouse_ep_0 = {
diff --git a/sys/dev/usb/usb_bus.h b/sys/dev/usb/usb_bus.h
index 1dd9d6a..07207cf 100644
--- a/sys/dev/usb/usb_bus.h
+++ b/sys/dev/usb/usb_bus.h
@@ -69,6 +69,9 @@ struct usb_bus {
struct usb_bus_msg explore_msg[2];
struct usb_bus_msg detach_msg[2];
struct usb_bus_msg attach_msg[2];
+ struct usb_bus_msg suspend_msg[2];
+ struct usb_bus_msg resume_msg[2];
+ struct usb_bus_msg shutdown_msg[2];
/*
* This mutex protects the USB hardware:
*/
@@ -98,7 +101,8 @@ struct usb_bus {
enum usb_revision usbrev; /* USB revision. See "USB_REV_XXX". */
uint8_t devices_max; /* maximum number of USB devices */
- uint8_t do_probe; /* set if USB BUS should be re-probed */
+ uint8_t do_probe; /* set if USB should be re-probed */
+ uint8_t no_explore; /* don't explore USB ports */
/*
* The scratch area can only be used inside the explore thread
diff --git a/sys/dev/usb/usb_controller.h b/sys/dev/usb/usb_controller.h
index 6b15dab..4ffc041 100644
--- a/sys/dev/usb/usb_controller.h
+++ b/sys/dev/usb/usb_controller.h
@@ -66,7 +66,7 @@ struct usb_bus_methods {
void (*device_suspend) (struct usb_device *);
void (*device_resume) (struct usb_device *);
void (*set_hw_power) (struct usb_bus *);
-
+ void (*set_hw_power_sleep) (struct usb_bus *, uint32_t);
/*
* The following flag is set if one or more control transfers are
* active:
@@ -92,6 +92,18 @@ struct usb_bus_methods {
* are present on the given USB bus:
*/
#define USB_HW_POWER_NON_ROOT_HUB 0x10
+ /*
+ * The following flag is set if we are suspending
+ */
+#define USB_HW_POWER_SUSPEND 0x20
+ /*
+ * The following flag is set if we are resuming
+ */
+#define USB_HW_POWER_RESUME 0x40
+ /*
+ * The following flag is set if we are shutting down
+ */
+#define USB_HW_POWER_SHUTDOWN 0x60
/* USB Device mode only - Mandatory */
diff --git a/sys/dev/usb/usb_hub.c b/sys/dev/usb/usb_hub.c
index 8652661..168e9eb 100644
--- a/sys/dev/usb/usb_hub.c
+++ b/sys/dev/usb/usb_hub.c
@@ -707,6 +707,13 @@ uhub_explore(struct usb_device *udev)
DPRINTF("Device is suspended!\n");
return (0);
}
+
+ /*
+ * Make sure we don't race against user-space applications
+ * like LibUSB:
+ */
+ usbd_enum_lock(udev);
+
for (x = 0; x != hub->nports; x++) {
up = hub->ports + x;
portno = x + 1;
@@ -784,6 +791,8 @@ uhub_explore(struct usb_device *udev)
up->restartcnt = 0;
}
+ usbd_enum_unlock(udev);
+
/* initial status checked */
sc->sc_flags |= UHUB_FLAG_DID_EXPLORE;
diff --git a/sys/dev/usb/usb_if.m b/sys/dev/usb/usb_if.m
index 926a237..b24fc2b 100644
--- a/sys/dev/usb/usb_if.m
+++ b/sys/dev/usb/usb_if.m
@@ -54,3 +54,13 @@ METHOD int handle_request {
uint16_t offset; /* data offset */
uint8_t *pstate; /* set if transfer is complete, see USB_HR_XXX */
};
+
+# Take controller from BIOS
+#
+# Return values:
+# 0: Success
+# Else: Failure
+#
+METHOD int take_controller {
+ device_t dev;
+};
diff --git a/sys/dev/usb/usb_msctest.c b/sys/dev/usb/usb_msctest.c
index 7f33014..a6b01b8 100644
--- a/sys/dev/usb/usb_msctest.c
+++ b/sys/dev/usb/usb_msctest.c
@@ -477,7 +477,7 @@ bbb_command_start(struct bbb_transfer *sc, uint8_t dir, uint8_t lun,
sc->cmd_len = cmd_len;
memset(&sc->cbw.CBWCDB, 0, sizeof(sc->cbw.CBWCDB));
memcpy(&sc->cbw.CBWCDB, cmd_ptr, cmd_len);
- DPRINTFN(1, "SCSI cmd = %*D\n", (int)cmd_len, &sc->cbw.CBWCDB, ":");
+ DPRINTFN(1, "SCSI cmd = %*D\n", (int)cmd_len, (char *)sc->cbw.CBWCDB, ":");
mtx_lock(&sc->mtx);
usbd_transfer_start(sc->xfer[sc->state]);
diff --git a/sys/dev/usb/usb_transfer.c b/sys/dev/usb/usb_transfer.c
index 6f4b678..4a5cfbd 100644
--- a/sys/dev/usb/usb_transfer.c
+++ b/sys/dev/usb/usb_transfer.c
@@ -2150,7 +2150,7 @@ usbd_callback_wrapper(struct usb_xfer_queue *pq)
struct usb_xfer_root *info = xfer->xroot;
USB_BUS_LOCK_ASSERT(info->bus, MA_OWNED);
- if (!mtx_owned(info->xfer_mtx)) {
+ if (!mtx_owned(info->xfer_mtx) && !SCHEDULER_STOPPED()) {
/*
* Cases that end up here:
*
@@ -3119,14 +3119,14 @@ usbd_transfer_poll(struct usb_xfer **ppxfer, uint16_t max)
/* make sure that the BUS mutex is not locked */
drop_bus = 0;
- while (mtx_owned(&xroot->udev->bus->bus_mtx)) {
+ while (mtx_owned(&xroot->udev->bus->bus_mtx) && !SCHEDULER_STOPPED()) {
mtx_unlock(&xroot->udev->bus->bus_mtx);
drop_bus++;
}
/* make sure that the transfer mutex is not locked */
drop_xfer = 0;
- while (mtx_owned(xroot->xfer_mtx)) {
+ while (mtx_owned(xroot->xfer_mtx) && !SCHEDULER_STOPPED()) {
mtx_unlock(xroot->xfer_mtx);
drop_xfer++;
}
diff --git a/sys/dev/usb/usb_transfer.h b/sys/dev/usb/usb_transfer.h
index 71157ca..f035240 100644
--- a/sys/dev/usb/usb_transfer.h
+++ b/sys/dev/usb/usb_transfer.h
@@ -28,6 +28,120 @@
#define _USB_TRANSFER_H_
/*
+ * Definition of internal USB transfer states:
+ * ===========================================
+ *
+ * The main reason there are many USB states is that we are allowed to
+ * cancel USB transfers, then start the USB transfer again and that
+ * this state transaction cannot always be done in a single atomic
+ * operation without blocking the calling thread. One reason for this
+ * is that the USB hardware sometimes needs to wait for DMA
+ * controllers to finish which is done asynchronously and grows the
+ * statemachine.
+ *
+ * When extending the following statemachine there are basically two
+ * things you should think about: Which states should be executed or
+ * modified in case of USB transfer stop and which states should be
+ * executed or modified in case of USB transfer start. Also respect
+ * the "can_cancel_immed" flag which basically tells if you can go
+ * directly from a wait state to the cancelling states.
+ */
+
+enum {
+ /* XFER start execute state */
+
+ /* USB_ST_SETUP = 0 (already defined) */
+
+ /* XFER transferred execute state */
+
+ /* USB_ST_TRANSFERRED = 1 (already defined) */
+
+ /* XFER error execute state */
+
+ /* USB_ST_ERROR = 2 (already defined) */
+
+ /* XFER restart after error execute state */
+
+ USB_ST_RESTART = 8,
+
+ /* XFER transfer idle state */
+
+ USB_ST_WAIT_SETUP,
+
+ /* Other XFER execute states */
+
+ USB_ST_PIPE_OPEN = 16,
+ USB_ST_PIPE_OPEN_ERROR,
+ USB_ST_PIPE_OPEN_RESTART,
+
+ USB_ST_BDMA_LOAD,
+ USB_ST_BDMA_LOAD_ERROR,
+ USB_ST_BDMA_LOAD_RESTART,
+
+ USB_ST_IVAL_DLY,
+ USB_ST_IVAL_DLY_ERROR,
+ USB_ST_IVAL_DLY_RESTART,
+
+ USB_ST_PIPE_STALL,
+ USB_ST_PIPE_STALL_ERROR,
+ USB_ST_PIPE_STALL_RESTART,
+
+ USB_ST_ENTER,
+ USB_ST_ENTER_ERROR,
+ USB_ST_ENTER_RESTART,
+
+ USB_ST_START,
+ USB_ST_START_ERROR,
+ USB_ST_START_RESTART,
+
+ USB_ST_PIPE_CLOSE,
+ USB_ST_PIPE_CLOSE_ERROR,
+ USB_ST_PIPE_CLOSE_RESTART,
+
+ USB_ST_BDMA_DLY,
+ USB_ST_BDMA_DLY_ERROR,
+ USB_ST_BDMA_DLY_RESTART,
+
+ /* XFER transfer wait states */
+
+ USB_ST_WAIT_PIPE_OPEN = 64,
+ USB_ST_WAIT_PIPE_OPEN_ERROR,
+ USB_ST_WAIT_PIPE_OPEN_RESTART,
+
+ USB_ST_WAIT_BDMA_LOAD,
+ USB_ST_WAIT_BDMA_LOAD_ERROR,
+ USB_ST_WAIT_BDMA_LOAD_RESTART,
+
+ USB_ST_WAIT_IVAL_DLY,
+ USB_ST_WAIT_IVAL_DLY_ERROR,
+ USB_ST_WAIT_IVAL_DLY_RESTART,
+
+ USB_ST_WAIT_PIPE_STALL,
+ USB_ST_WAIT_PIPE_STALL_ERROR,
+ USB_ST_WAIT_PIPE_STALL_RESTART,
+
+ USB_ST_WAIT_ENTER,
+ USB_ST_WAIT_ENTER_ERROR,
+ USB_ST_WAIT_ENTER_RESTART,
+
+ USB_ST_WAIT_START,
+ USB_ST_WAIT_START_ERROR,
+ USB_ST_WAIT_START_RESTART,
+
+ USB_ST_WAIT_PIPE_CLOSE,
+ USB_ST_WAIT_PIPE_CLOSE_ERROR,
+ USB_ST_WAIT_PIPE_CLOSE_RESTART,
+
+ USB_ST_WAIT_BDMA_DLY,
+ USB_ST_WAIT_BDMA_DLY_ERROR,
+ USB_ST_WAIT_BDMA_DLY_RESTART,
+
+ USB_ST_WAIT_TRANSFERRED,
+ USB_ST_WAIT_TRANSFERRED_ERROR,
+ USB_ST_WAIT_TRANSFERRED_RESTART,
+};
+
+/*
* The following structure defines the messages that is used to signal
* the "done_p" USB process.
*/
diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs
index 4e3af74..0ca5b65 100644
--- a/sys/dev/usb/usbdevs
+++ b/sys/dev/usb/usbdevs
@@ -317,6 +317,7 @@ vendor ACTLABS 0x061c Act Labs
vendor ALARIS 0x0620 Alaris
vendor APEX 0x0624 Apex
vendor CREATIVE3 0x062a Creative Labs
+vendor MICRON 0x0634 Micron Technology
vendor VIVITAR 0x0636 Vivitar
vendor GUNZE 0x0637 Gunze Electronics USA
vendor AVISION 0x0638 Avision
@@ -1049,6 +1050,7 @@ product ASIX AX88178 0x1780 AX88178
product ASIX AX88772 0x7720 AX88772
product ASIX AX88772A 0x772a AX88772A USB 2.0 10/100 Ethernet
product ASIX AX88772B 0x772b AX88772B USB 2.0 10/100 Ethernet
+product ASIX AX88772B_1 0x7e2b AX88772B USB 2.0 10/100 Ethernet
/* ASUS products */
product ASUS2 USBN11 0x0b05 USB-N11
@@ -2226,6 +2228,9 @@ product MSI RT3070_7 0x899a RT3070
product MSI RT2573_3 0xa861 RT2573
product MSI RT2573_4 0xa874 RT2573
+/* Micron products */
+product MICRON REALSSD 0x0655 Real SSD eUSB
+
/* Microsoft products */
product MICROSOFT SIDEPREC 0x0008 SideWinder Precision Pro
product MICROSOFT INTELLIMOUSE 0x0009 IntelliMouse
diff --git a/sys/dev/usb/wlan/if_rum.c b/sys/dev/usb/wlan/if_rum.c
index 8cf9f47..a809819 100644
--- a/sys/dev/usb/wlan/if_rum.c
+++ b/sys/dev/usb/wlan/if_rum.c
@@ -152,9 +152,9 @@ static usb_callback_t rum_bulk_write_callback;
static usb_error_t rum_do_request(struct rum_softc *sc,
struct usb_device_request *req, void *data);
static struct ieee80211vap *rum_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode,
+ int, const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void rum_vap_delete(struct ieee80211vap *);
static void rum_tx_free(struct rum_tx_data *, int);
static void rum_setup_tx_list(struct rum_softc *);
@@ -580,10 +580,10 @@ rum_do_request(struct rum_softc *sc,
}
static struct ieee80211vap *
-rum_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+rum_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct rum_softc *sc = ic->ic_ifp->if_softc;
struct rum_vap *rvp;
diff --git a/sys/dev/usb/wlan/if_run.c b/sys/dev/usb/wlan/if_run.c
index ad6c736..8461330 100644
--- a/sys/dev/usb/wlan/if_run.c
+++ b/sys/dev/usb/wlan/if_run.c
@@ -315,9 +315,9 @@ static usb_callback_t run_bulk_tx_callback5;
static void run_bulk_tx_callbackN(struct usb_xfer *xfer,
usb_error_t error, unsigned int index);
static struct ieee80211vap *run_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN], const uint8_t
- mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void run_vap_delete(struct ieee80211vap *);
static void run_cmdq_cb(void *, int);
static void run_setup_tx_list(struct run_softc *,
@@ -748,8 +748,8 @@ run_detach(device_t self)
}
static struct ieee80211vap *
-run_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
+run_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
const uint8_t bssid[IEEE80211_ADDR_LEN],
const uint8_t mac[IEEE80211_ADDR_LEN])
{
@@ -2720,7 +2720,6 @@ run_bulk_tx_callbackN(struct usb_xfer *xfer, usb_error_t error, unsigned int ind
struct run_endpoint_queue *pq = &sc->sc_epq[index];
struct mbuf *m;
usb_frlength_t size;
- unsigned int len;
int actlen;
int sumlen;
@@ -2750,7 +2749,8 @@ tr_setup:
STAILQ_REMOVE_HEAD(&pq->tx_qh, next);
m = data->m;
- if (m->m_pkthdr.len > RUN_MAX_TXSZ) {
+ if ((m->m_pkthdr.len +
+ sizeof(data->desc) + 3 + 8) > RUN_MAX_TXSZ) {
DPRINTF("data overflow, %u bytes\n",
m->m_pkthdr.len);
@@ -2765,6 +2765,14 @@ tr_setup:
size = sizeof(data->desc);
usbd_copy_in(pc, 0, &data->desc, size);
usbd_m_copy_in(pc, size, m, 0, m->m_pkthdr.len);
+ size += m->m_pkthdr.len;
+ /*
+ * Align end on a 4-byte boundary, pad 8 bytes (CRC +
+ * 4-byte padding), and be sure to zero those trailing
+ * bytes:
+ */
+ usbd_frame_zero(pc, size, ((-size) & 3) + 8);
+ size += ((-size) & 3) + 8;
vap = data->ni->ni_vap;
if (ieee80211_radiotap_active_vap(vap)) {
@@ -2783,13 +2791,10 @@ tr_setup:
ieee80211_radiotap_tx(vap, m);
}
- /* align end on a 4-bytes boundary */
- len = (size + IEEE80211_CRC_LEN + m->m_pkthdr.len + 3) & ~3;
-
- DPRINTFN(11, "sending frame len=%u xferlen=%u @ index %d\n",
- m->m_pkthdr.len, len, index);
+ DPRINTFN(11, "sending frame len=%u/%u @ index %d\n",
+ m->m_pkthdr.len, size, index);
- usbd_xfer_set_frame_len(xfer, 0, len);
+ usbd_xfer_set_frame_len(xfer, 0, size);
usbd_xfer_set_priv(xfer, data);
usbd_transfer_submit(xfer);
diff --git a/sys/dev/usb/wlan/if_uath.c b/sys/dev/usb/wlan/if_uath.c
index 8bc821b..cfa8494 100644
--- a/sys/dev/usb/wlan/if_uath.c
+++ b/sys/dev/usb/wlan/if_uath.c
@@ -254,9 +254,9 @@ static const struct usb_config uath_usbconfig[UATH_N_XFERS] = {
};
static struct ieee80211vap *uath_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void uath_vap_delete(struct ieee80211vap *);
static int uath_alloc_cmd_list(struct uath_softc *, struct uath_cmd [],
int, int);
@@ -1065,10 +1065,10 @@ uath_free_tx_data_list(struct uath_softc *sc)
}
static struct ieee80211vap *
-uath_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+uath_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct uath_vap *uvp;
struct ieee80211vap *vap;
diff --git a/sys/dev/usb/wlan/if_upgt.c b/sys/dev/usb/wlan/if_upgt.c
index 78ac2d9..678e9c0 100644
--- a/sys/dev/usb/wlan/if_upgt.c
+++ b/sys/dev/usb/wlan/if_upgt.c
@@ -138,9 +138,9 @@ static void upgt_scan_start(struct ieee80211com *);
static void upgt_scan_end(struct ieee80211com *);
static void upgt_set_channel(struct ieee80211com *);
static struct ieee80211vap *upgt_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void upgt_vap_delete(struct ieee80211vap *);
static void upgt_update_mcast(struct ifnet *);
static uint8_t upgt_rx_rate(struct upgt_softc *, const int);
@@ -1014,10 +1014,10 @@ upgt_set_chan(struct upgt_softc *sc, struct ieee80211_channel *c)
}
static struct ieee80211vap *
-upgt_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+upgt_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct upgt_vap *uvp;
struct ieee80211vap *vap;
diff --git a/sys/dev/usb/wlan/if_ural.c b/sys/dev/usb/wlan/if_ural.c
index a72da83..945789f 100644
--- a/sys/dev/usb/wlan/if_ural.c
+++ b/sys/dev/usb/wlan/if_ural.c
@@ -131,9 +131,9 @@ static usb_callback_t ural_bulk_write_callback;
static usb_error_t ural_do_request(struct ural_softc *sc,
struct usb_device_request *req, void *data);
static struct ieee80211vap *ural_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode,
+ int, const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void ural_vap_delete(struct ieee80211vap *);
static void ural_tx_free(struct ural_tx_data *, int);
static void ural_setup_tx_list(struct ural_softc *);
@@ -568,10 +568,10 @@ ural_do_request(struct ural_softc *sc,
}
static struct ieee80211vap *
-ural_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+ural_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct ural_softc *sc = ic->ic_ifp->if_softc;
struct ural_vap *uvp;
diff --git a/sys/dev/usb/wlan/if_urtw.c b/sys/dev/usb/wlan/if_urtw.c
index 2a52a8c..1259b2d 100644
--- a/sys/dev/usb/wlan/if_urtw.c
+++ b/sys/dev/usb/wlan/if_urtw.c
@@ -649,9 +649,9 @@ static const struct usb_config urtw_8187l_usbconfig[URTW_8187L_N_XFERS] = {
};
static struct ieee80211vap *urtw_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode,
+ int, const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void urtw_vap_delete(struct ieee80211vap *);
static void urtw_init(void *);
static void urtw_stop(struct ifnet *, int);
@@ -993,10 +993,10 @@ urtw_free_data_list(struct urtw_softc *sc, struct urtw_data data[], int ndata,
}
static struct ieee80211vap *
-urtw_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+urtw_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct urtw_vap *uvp;
struct ieee80211vap *vap;
@@ -1053,10 +1053,10 @@ urtw_init_locked(void *arg)
if (!(sc->sc_flags & URTW_INIT_ONCE)) {
ret = urtw_alloc_rx_data_list(sc);
- if (error != 0)
+ if (ret != 0)
goto fail;
ret = urtw_alloc_tx_data_list(sc);
- if (error != 0)
+ if (ret != 0)
goto fail;
sc->sc_flags |= URTW_INIT_ONCE;
}
diff --git a/sys/dev/usb/wlan/if_zyd.c b/sys/dev/usb/wlan/if_zyd.c
index 835cdc5..7e2cee9 100644
--- a/sys/dev/usb/wlan/if_zyd.c
+++ b/sys/dev/usb/wlan/if_zyd.c
@@ -118,9 +118,9 @@ static usb_callback_t zyd_bulk_read_callback;
static usb_callback_t zyd_bulk_write_callback;
static struct ieee80211vap *zyd_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void zyd_vap_delete(struct ieee80211vap *);
static void zyd_tx_free(struct zyd_tx_data *, int);
static void zyd_setup_tx_list(struct zyd_softc *);
@@ -456,10 +456,10 @@ zyd_detach(device_t dev)
}
static struct ieee80211vap *
-zyd_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+zyd_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct zyd_vap *zvp;
struct ieee80211vap *vap;
@@ -686,7 +686,7 @@ zyd_intr_read_callback(struct usb_xfer *xfer, usb_error_t error)
memcpy(rqp->odata, cmd->data, rqp->olen);
DPRINTF(sc, ZYD_DEBUG_CMD,
"command %p complete, data = %*D \n",
- rqp, rqp->olen, rqp->odata, ":");
+ rqp, rqp->olen, (char *)rqp->odata, ":");
wakeup(rqp); /* wakeup caller */
break;
}
diff --git a/sys/dev/vge/if_vge.c b/sys/dev/vge/if_vge.c
index f4ce30a..a49af27 100644
--- a/sys/dev/vge/if_vge.c
+++ b/sys/dev/vge/if_vge.c
@@ -173,6 +173,7 @@ static __inline void
static void vge_freebufs(struct vge_softc *);
static void vge_ifmedia_sts(struct ifnet *, struct ifmediareq *);
static int vge_ifmedia_upd(struct ifnet *);
+static int vge_ifmedia_upd_locked(struct vge_softc *);
static void vge_init(void *);
static void vge_init_locked(struct vge_softc *);
static void vge_intr(void *);
@@ -180,7 +181,6 @@ static void vge_intr_holdoff(struct vge_softc *);
static int vge_ioctl(struct ifnet *, u_long, caddr_t);
static void vge_link_statchg(void *);
static int vge_miibus_readreg(device_t, int, int);
-static void vge_miibus_statchg(device_t);
static int vge_miibus_writereg(device_t, int, int, int);
static void vge_miipoll_start(struct vge_softc *);
static void vge_miipoll_stop(struct vge_softc *);
@@ -190,6 +190,7 @@ static void vge_reset(struct vge_softc *);
static int vge_rx_list_init(struct vge_softc *);
static int vge_rxeof(struct vge_softc *, int);
static void vge_rxfilter(struct vge_softc *);
+static void vge_setmedia(struct vge_softc *);
static void vge_setvlan(struct vge_softc *);
static void vge_setwol(struct vge_softc *);
static void vge_start(struct ifnet *);
@@ -211,16 +212,11 @@ static device_method_t vge_methods[] = {
DEVMETHOD(device_resume, vge_resume),
DEVMETHOD(device_shutdown, vge_shutdown),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, vge_miibus_readreg),
DEVMETHOD(miibus_writereg, vge_miibus_writereg),
- DEVMETHOD(miibus_statchg, vge_miibus_statchg),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t vge_driver = {
@@ -1099,10 +1095,11 @@ vge_attach(device_t dev)
goto fail;
}
+ vge_miipoll_start(sc);
/* Do MII setup */
error = mii_attach(dev, &sc->vge_miibus, ifp, vge_ifmedia_upd,
vge_ifmedia_sts, BMSR_DEFCAPMASK, sc->vge_phyaddr, MII_OFFSET_ANY,
- 0);
+ MIIF_DOPAUSE);
if (error != 0) {
device_printf(dev, "attaching PHYs failed\n");
goto fail;
@@ -1660,30 +1657,41 @@ vge_link_statchg(void *xsc)
{
struct vge_softc *sc;
struct ifnet *ifp;
- struct mii_data *mii;
+ uint8_t physts;
sc = xsc;
ifp = sc->vge_ifp;
VGE_LOCK_ASSERT(sc);
- mii = device_get_softc(sc->vge_miibus);
- mii_pollstat(mii);
- if ((sc->vge_flags & VGE_FLAG_LINK) != 0) {
- if (!(mii->mii_media_status & IFM_ACTIVE)) {
+ physts = CSR_READ_1(sc, VGE_PHYSTS0);
+ if ((physts & VGE_PHYSTS_RESETSTS) == 0) {
+ if ((physts & VGE_PHYSTS_LINK) == 0) {
sc->vge_flags &= ~VGE_FLAG_LINK;
if_link_state_change(sc->vge_ifp,
LINK_STATE_DOWN);
- }
- } else {
- if (mii->mii_media_status & IFM_ACTIVE &&
- IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) {
+ } else {
sc->vge_flags |= VGE_FLAG_LINK;
if_link_state_change(sc->vge_ifp,
LINK_STATE_UP);
+ CSR_WRITE_1(sc, VGE_CRC2, VGE_CR2_FDX_TXFLOWCTL_ENABLE |
+ VGE_CR2_FDX_RXFLOWCTL_ENABLE);
+ if ((physts & VGE_PHYSTS_FDX) != 0) {
+ if ((physts & VGE_PHYSTS_TXFLOWCAP) != 0)
+ CSR_WRITE_1(sc, VGE_CRS2,
+ VGE_CR2_FDX_TXFLOWCTL_ENABLE);
+ if ((physts & VGE_PHYSTS_RXFLOWCAP) != 0)
+ CSR_WRITE_1(sc, VGE_CRS2,
+ VGE_CR2_FDX_RXFLOWCTL_ENABLE);
+ }
if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
vge_start_locked(ifp);
}
}
+ /*
+ * Restart MII auto-polling because link state change interrupt
+ * will disable it.
+ */
+ vge_miipoll_start(sc);
}
#ifdef DEVICE_POLLING
@@ -2028,6 +2036,7 @@ vge_init_locked(struct vge_softc *sc)
*/
vge_stop(sc);
vge_reset(sc);
+ vge_miipoll_start(sc);
/*
* Initialize the RX and TX descriptors and mbufs.
@@ -2099,9 +2108,16 @@ vge_init_locked(struct vge_softc *sc)
vge_rxfilter(sc);
vge_setvlan(sc);
- /* Enable flow control */
-
- CSR_WRITE_1(sc, VGE_CRS2, 0x8B);
+ /* Initialize pause timer. */
+ CSR_WRITE_2(sc, VGE_TX_PAUSE_TIMER, 0xFFFF);
+ /*
+ * Initialize flow control parameters.
+ * TX XON high threshold : 48
+ * TX pause low threshold : 24
+ * Disable hald-duplex flow control
+ */
+ CSR_WRITE_1(sc, VGE_CRC2, 0xFF);
+ CSR_WRITE_1(sc, VGE_CRS2, VGE_CR2_XON_ENABLE | 0x0B);
/* Enable jumbo frame reception (if desired) */
@@ -2129,7 +2145,7 @@ vge_init_locked(struct vge_softc *sc)
CSR_WRITE_1(sc, VGE_CRS3, VGE_CR3_INT_GMSK);
sc->vge_flags &= ~VGE_FLAG_LINK;
- mii_mediachg(mii);
+ vge_ifmedia_upd_locked(sc);
ifp->if_drv_flags |= IFF_DRV_RUNNING;
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
@@ -2143,14 +2159,28 @@ static int
vge_ifmedia_upd(struct ifnet *ifp)
{
struct vge_softc *sc;
- struct mii_data *mii;
int error;
sc = ifp->if_softc;
VGE_LOCK(sc);
+ error = vge_ifmedia_upd_locked(sc);
+ VGE_UNLOCK(sc);
+
+ return (error);
+}
+
+static int
+vge_ifmedia_upd_locked(struct vge_softc *sc)
+{
+ struct mii_data *mii;
+ struct mii_softc *miisc;
+ int error;
+
mii = device_get_softc(sc->vge_miibus);
+ LIST_FOREACH(miisc, &mii->mii_phys, mii_list)
+ PHY_RESET(miisc);
+ vge_setmedia(sc);
error = mii_mediachg(mii);
- VGE_UNLOCK(sc);
return (error);
}
@@ -2179,13 +2209,11 @@ vge_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
}
static void
-vge_miibus_statchg(device_t dev)
+vge_setmedia(struct vge_softc *sc)
{
- struct vge_softc *sc;
struct mii_data *mii;
struct ifmedia_entry *ife;
- sc = device_get_softc(dev);
mii = device_get_softc(sc->vge_miibus);
ife = mii->mii_media.ifm_cur;
@@ -2219,7 +2247,7 @@ vge_miibus_statchg(device_t dev)
}
break;
default:
- device_printf(dev, "unknown media type: %x\n",
+ device_printf(sc->vge_dev, "unknown media type: %x\n",
IFM_SUBTYPE(ife->ifm_media));
break;
}
@@ -2772,6 +2800,9 @@ vge_setlinkspeed(struct vge_softc *sc)
break;
}
}
+ /* Clear forced MAC speed/duplex configuration. */
+ CSR_CLRBIT_1(sc, VGE_DIAGCTL, VGE_DIAGCTL_MACFORCE);
+ CSR_CLRBIT_1(sc, VGE_DIAGCTL, VGE_DIAGCTL_FDXFORCE);
vge_miibus_writereg(sc->vge_dev, sc->vge_phyaddr, MII_100T2CR, 0);
vge_miibus_writereg(sc->vge_dev, sc->vge_phyaddr, MII_ANAR,
ANAR_TX_FD | ANAR_TX | ANAR_10_FD | ANAR_10 | ANAR_CSMA);
diff --git a/sys/dev/viawd/viawd.c b/sys/dev/viawd/viawd.c
new file mode 100644
index 0000000..d56b677
--- /dev/null
+++ b/sys/dev/viawd/viawd.c
@@ -0,0 +1,248 @@
+/*-
+ * Copyright (c) 2011 Fabien Thomas <fabient@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <machine/bus.h>
+#include <sys/rman.h>
+#include <machine/resource.h>
+#include <sys/watchdog.h>
+
+#include <isa/isavar.h>
+#include <dev/pci/pcivar.h>
+
+#include "viawd.h"
+
+#define viawd_read_4(sc, off) bus_read_4((sc)->wd_res, (off))
+#define viawd_write_4(sc, off, val) \
+ bus_write_4((sc)->wd_res, (off), (val))
+
+static struct viawd_device viawd_devices[] = {
+ { DEVICEID_VT8251, "VIA VT8251 watchdog timer" },
+ { DEVICEID_CX700, "VIA CX700 watchdog timer" },
+ { DEVICEID_VX800, "VIA VX800 watchdog timer" },
+ { DEVICEID_VX855, "VIA VX855 watchdog timer" },
+ { DEVICEID_VX900, "VIA VX900 watchdog timer" },
+ { 0, NULL },
+};
+
+static devclass_t viawd_devclass;
+
+static void
+viawd_tmr_state(struct viawd_softc *sc, int enable)
+{
+ uint32_t reg;
+
+ reg = viawd_read_4(sc, VIAWD_MEM_CTRL);
+ if (enable)
+ reg |= VIAWD_MEM_CTRL_TRIGGER | VIAWD_MEM_CTRL_ENABLE;
+ else
+ reg &= ~VIAWD_MEM_CTRL_ENABLE;
+ viawd_write_4(sc, VIAWD_MEM_CTRL, reg);
+}
+
+static void
+viawd_tmr_set(struct viawd_softc *sc, unsigned int timeout)
+{
+
+ /* Keep value in range. */
+ if (timeout < VIAWD_MEM_COUNT_MIN)
+ timeout = VIAWD_MEM_COUNT_MIN;
+ else if (timeout > VIAWD_MEM_COUNT_MAX)
+ timeout = VIAWD_MEM_COUNT_MAX;
+
+ viawd_write_4(sc, VIAWD_MEM_COUNT, timeout);
+ sc->timeout = timeout;
+}
+
+/*
+ * Watchdog event handler - called by the framework to enable or disable
+ * the watchdog or change the initial timeout value.
+ */
+static void
+viawd_event(void *arg, unsigned int cmd, int *error)
+{
+ struct viawd_softc *sc = arg;
+ unsigned int timeout;
+
+ /* Convert from power-of-two-ns to second. */
+ cmd &= WD_INTERVAL;
+ timeout = ((uint64_t)1 << cmd) / 1000000000;
+ if (cmd) {
+ if (timeout != sc->timeout)
+ viawd_tmr_set(sc, timeout);
+ viawd_tmr_state(sc, 1);
+ *error = 0;
+ } else
+ viawd_tmr_state(sc, 0);
+}
+
+/* Look for a supported VIA south bridge. */
+static struct viawd_device *
+viawd_find(device_t dev)
+{
+ struct viawd_device *id;
+
+ if (pci_get_vendor(dev) != VENDORID_VIA)
+ return (NULL);
+ for (id = viawd_devices; id->desc != NULL; id++)
+ if (pci_get_device(dev) == id->device)
+ return (id);
+ return (NULL);
+}
+
+static void
+viawd_identify(driver_t *driver, device_t parent)
+{
+
+ if (viawd_find(parent) == NULL)
+ return;
+
+ if (device_find_child(parent, driver->name, -1) == NULL)
+ BUS_ADD_CHILD(parent, 0, driver->name, 0);
+}
+
+static int
+viawd_probe(device_t dev)
+{
+ struct viawd_device *id;
+
+ id = viawd_find(device_get_parent(dev));
+ KASSERT(id != NULL, ("parent should be a valid VIA SB"));
+ device_set_desc(dev, id->desc);
+ return (BUS_PROBE_GENERIC);
+}
+
+static int
+viawd_attach(device_t dev)
+{
+ device_t sb_dev;
+ struct viawd_softc *sc;
+ uint32_t pmbase, reg;
+
+ sc = device_get_softc(dev);
+ sc->dev = dev;
+
+ sb_dev = device_get_parent(dev);
+ if (sb_dev == NULL) {
+ device_printf(dev, "Can not find watchdog device.\n");
+ goto fail;
+ }
+ sc->sb_dev = sb_dev;
+
+ /* Get watchdog memory base. */
+ pmbase = pci_read_config(sb_dev, VIAWD_CONFIG_BASE, 4);
+ if (pmbase == 0) {
+ device_printf(dev,
+ "Watchdog disabled in BIOS or hardware\n");
+ goto fail;
+ }
+
+ /* Allocate I/O register space. */
+ sc->wd_rid = 0;
+ sc->wd_res = bus_alloc_resource(dev, SYS_RES_MEMORY, &sc->wd_rid,
+ pmbase, pmbase + VIAWD_MEM_LEN - 1, VIAWD_MEM_LEN,
+ RF_ACTIVE | RF_SHAREABLE);
+ if (sc->wd_res == NULL) {
+ device_printf(dev, "Unable to map watchdog memory\n");
+ goto fail;
+ }
+
+ /* Check if watchdog fired last boot. */
+ reg = viawd_read_4(sc, VIAWD_MEM_CTRL);
+ if (reg & VIAWD_MEM_CTRL_FIRED) {
+ device_printf(dev,
+ "ERROR: watchdog rebooted the system\n");
+ /* Reset bit state. */
+ viawd_write_4(sc, VIAWD_MEM_CTRL, reg);
+ }
+
+ /* Register the watchdog event handler. */
+ sc->ev_tag = EVENTHANDLER_REGISTER(watchdog_list, viawd_event, sc, 0);
+
+ return (0);
+fail:
+ if (sc->wd_res != NULL)
+ bus_release_resource(dev, SYS_RES_MEMORY,
+ sc->wd_rid, sc->wd_res);
+ return (ENXIO);
+}
+
+static int
+viawd_detach(device_t dev)
+{
+ struct viawd_softc *sc;
+ uint32_t reg;
+
+ sc = device_get_softc(dev);
+
+ /* Deregister event handler. */
+ if (sc->ev_tag != NULL)
+ EVENTHANDLER_DEREGISTER(watchdog_list, sc->ev_tag);
+ sc->ev_tag = NULL;
+
+ /*
+ * Do not stop the watchdog on shutdown if active but bump the
+ * timer to avoid spurious reset.
+ */
+ reg = viawd_read_4(sc, VIAWD_MEM_CTRL);
+ if (reg & VIAWD_MEM_CTRL_ENABLE) {
+ viawd_tmr_set(sc, VIAWD_TIMEOUT_SHUTDOWN);
+ viawd_tmr_state(sc, 1);
+ device_printf(dev,
+ "Keeping watchog alive during shutdown for %d seconds\n",
+ VIAWD_TIMEOUT_SHUTDOWN);
+ }
+
+ if (sc->wd_res != NULL)
+ bus_release_resource(sc->dev, SYS_RES_MEMORY,
+ sc->wd_rid, sc->wd_res);
+
+ return (0);
+}
+
+static device_method_t viawd_methods[] = {
+ DEVMETHOD(device_identify, viawd_identify),
+ DEVMETHOD(device_probe, viawd_probe),
+ DEVMETHOD(device_attach, viawd_attach),
+ DEVMETHOD(device_detach, viawd_detach),
+ DEVMETHOD(device_shutdown, viawd_detach),
+ {0,0}
+};
+
+static driver_t viawd_driver = {
+ "viawd",
+ viawd_methods,
+ sizeof(struct viawd_softc),
+};
+
+DRIVER_MODULE(viawd, isab, viawd_driver, viawd_devclass, NULL, NULL);
diff --git a/sys/dev/viawd/viawd.h b/sys/dev/viawd/viawd.h
new file mode 100644
index 0000000..d311b88
--- /dev/null
+++ b/sys/dev/viawd/viawd.h
@@ -0,0 +1,73 @@
+/*-
+ * Copyright (c) 2011 Fabien Thomas <fabient@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _VIAWD_H_
+#define _VIAWD_H_
+
+struct viawd_device {
+ uint16_t device;
+ char *desc;
+};
+
+struct viawd_softc {
+ device_t dev;
+ device_t sb_dev;
+
+ int wd_rid;
+ struct resource *wd_res;
+
+ eventhandler_tag ev_tag;
+ unsigned int timeout;
+};
+
+#define VENDORID_VIA 0x1106
+#define DEVICEID_VT8251 0x3287
+#define DEVICEID_CX700 0x8324
+#define DEVICEID_VX800 0x8353
+#define DEVICEID_VX855 0x8409
+#define DEVICEID_VX900 0x8410
+
+#define VIAWD_CONFIG_BASE 0xE8
+
+#define VIAWD_MEM_LEN 8
+
+#define VIAWD_MEM_CTRL 0x00
+#define VIAWD_MEM_CTRL_TRIGGER 0x000000080
+#define VIAWD_MEM_CTRL_DISABLE 0x000000008
+#define VIAWD_MEM_CTRL_POWEROFF 0x000000004
+#define VIAWD_MEM_CTRL_FIRED 0x000000002
+#define VIAWD_MEM_CTRL_ENABLE 0x000000001
+
+#define VIAWD_MEM_COUNT 0x04
+
+#define VIAWD_MEM_COUNT_MIN 1
+#define VIAWD_MEM_COUNT_MAX 1023
+
+#define VIAWD_TIMEOUT_SHUTDOWN (5 * 60)
+
+#endif
diff --git a/sys/dev/virtio/balloon/virtio_balloon.c b/sys/dev/virtio/balloon/virtio_balloon.c
index ef7aca9..61ae4b1 100644
--- a/sys/dev/virtio/balloon/virtio_balloon.c
+++ b/sys/dev/virtio/balloon/virtio_balloon.c
@@ -475,7 +475,6 @@ vtballoon_update_size(struct vtballoon_softc *sc)
virtio_write_dev_config_4(sc->vtballoon_dev,
offsetof(struct virtio_balloon_config, actual),
htole32(sc->vtballoon_current_npages));
-
}
static int
diff --git a/sys/dev/virtio/balloon/virtio_balloon.h b/sys/dev/virtio/balloon/virtio_balloon.h
index cea84ba..1a52733 100644
--- a/sys/dev/virtio/balloon/virtio_balloon.h
+++ b/sys/dev/virtio/balloon/virtio_balloon.h
@@ -1,7 +1,30 @@
-/*
+/*-
* This header is BSD licensed so anyone can use the definitions to implement
* compatible drivers/servers.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of IBM nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
* $FreeBSD$
*/
diff --git a/sys/dev/virtio/block/virtio_blk.c b/sys/dev/virtio/block/virtio_blk.c
index 09783a8..dca19ba 100644
--- a/sys/dev/virtio/block/virtio_blk.c
+++ b/sys/dev/virtio/block/virtio_blk.c
@@ -87,9 +87,7 @@ struct vtblk_softc {
struct taskqueue *vtblk_tq;
struct task vtblk_intr_task;
- int vtblk_sector_size;
int vtblk_max_nsegs;
- int vtblk_unit;
int vtblk_request_count;
struct vtblk_request vtblk_dump_request;
@@ -185,7 +183,6 @@ TUNABLE_INT("hw.vtblk.no_ident", &vtblk_no_ident);
mtx_init(VTBLK_MTX((_sc)), (_name), \
"VTBLK Lock", MTX_DEF)
#define VTBLK_LOCK(_sc) mtx_lock(VTBLK_MTX((_sc)))
-#define VTBLK_TRYLOCK(_sc) mtx_trylock(VTBLK_MTX((_sc)))
#define VTBLK_UNLOCK(_sc) mtx_unlock(VTBLK_MTX((_sc)))
#define VTBLK_LOCK_DESTROY(_sc) mtx_destroy(VTBLK_MTX((_sc)))
#define VTBLK_LOCK_ASSERT(_sc) mtx_assert(VTBLK_MTX((_sc)), MA_OWNED)
@@ -281,7 +278,6 @@ vtblk_attach(device_t dev)
sc = device_get_softc(dev);
sc->vtblk_dev = dev;
- sc->vtblk_unit = device_get_unit(dev);
VTBLK_LOCK_INIT(sc, device_get_nameunit(dev));
@@ -299,13 +295,8 @@ vtblk_attach(device_t dev)
sc->vtblk_flags |= VTBLK_FLAG_READONLY;
/* Get local copy of config. */
- if (virtio_with_feature(dev, VIRTIO_BLK_F_TOPOLOGY) == 0) {
- bzero(&blkcfg, sizeof(struct virtio_blk_config));
- virtio_read_device_config(dev, 0, &blkcfg,
- offsetof(struct virtio_blk_config, physical_block_exp));
- } else
- virtio_read_device_config(dev, 0, &blkcfg,
- sizeof(struct virtio_blk_config));
+ virtio_read_device_config(dev, 0, &blkcfg,
+ sizeof(struct virtio_blk_config));
/*
* With the current sglist(9) implementation, it is not easy
@@ -498,12 +489,6 @@ vtblk_dump(void *arg, void *virtual, vm_offset_t physical, off_t offset,
if ((sc = dp->d_drv1) == NULL)
return (ENXIO);
- if (VTBLK_TRYLOCK(sc) == 0) {
- device_printf(sc->vtblk_dev,
- "softc already locked, cannot dump...\n");
- return (EBUSY);
- }
-
if ((sc->vtblk_flags & VTBLK_FLAG_DUMPING) == 0) {
vtblk_prepare_dump(sc);
sc->vtblk_flags |= VTBLK_FLAG_DUMPING;
@@ -622,7 +607,7 @@ vtblk_alloc_disk(struct vtblk_softc *sc, struct virtio_blk_config *blkcfg)
dp->d_ioctl = vtblk_ioctl;
dp->d_strategy = vtblk_strategy;
dp->d_name = VTBLK_DISK_NAME;
- dp->d_unit = sc->vtblk_unit;
+ dp->d_unit = device_get_unit(dev);
dp->d_drv1 = sc;
if ((sc->vtblk_flags & VTBLK_FLAG_READONLY) == 0)
@@ -632,10 +617,9 @@ vtblk_alloc_disk(struct vtblk_softc *sc, struct virtio_blk_config *blkcfg)
dp->d_mediasize = blkcfg->capacity * 512;
if (virtio_with_feature(dev, VIRTIO_BLK_F_BLK_SIZE))
- sc->vtblk_sector_size = blkcfg->blk_size;
+ dp->d_sectorsize = blkcfg->blk_size;
else
- sc->vtblk_sector_size = 512;
- dp->d_sectorsize = sc->vtblk_sector_size;
+ dp->d_sectorsize = 512;
/*
* The VirtIO maximum I/O size is given in terms of segments.
@@ -905,9 +889,10 @@ vtblk_get_ident(struct vtblk_softc *sc)
VTBLK_LOCK(sc);
error = vtblk_poll_request(sc, req);
- vtblk_enqueue_request(sc, req);
VTBLK_UNLOCK(sc);
+ vtblk_enqueue_request(sc, req);
+
if (error) {
device_printf(sc->vtblk_dev,
"error getting device identifier: %d\n", error);
diff --git a/sys/dev/virtio/block/virtio_blk.h b/sys/dev/virtio/block/virtio_blk.h
index 4fb32e0..f26c649 100644
--- a/sys/dev/virtio/block/virtio_blk.h
+++ b/sys/dev/virtio/block/virtio_blk.h
@@ -1,7 +1,30 @@
-/*
+/*-
* This header is BSD licensed so anyone can use the definitions to implement
* compatible drivers/servers.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of IBM nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
* $FreeBSD$
*/
@@ -39,16 +62,6 @@ struct virtio_blk_config {
/* block size of device (if VIRTIO_BLK_F_BLK_SIZE) */
uint32_t blk_size;
-
- /* the next 4 entries are guarded by VIRTIO_BLK_F_TOPOLOGY */
- /* exponent for physical block per logical block. */
- uint8_t physical_block_exp;
- /* alignment offset in logical blocks. */
- uint8_t alignment_offset;
- /* minimum I/O size without performance penalty in logical blocks. */
- uint16_t min_io_size;
- /* optimal sustained I/O size in logical blocks. */
- uint32_t opt_io_size;
} __packed;
/*
diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c
index 22becb1..ca57aec 100644
--- a/sys/dev/virtio/network/if_vtnet.c
+++ b/sys/dev/virtio/network/if_vtnet.c
@@ -317,8 +317,20 @@ vtnet_attach(device_t dev)
if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_VQ)) {
sc->vtnet_flags |= VTNET_FLAG_CTRL_VQ;
- if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_RX))
+ if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_RX)) {
+ sc->vtnet_mac_filter = malloc(
+ sizeof(struct vtnet_mac_filter), M_DEVBUF,
+ M_NOWAIT | M_ZERO);
+ if (sc->vtnet_mac_filter == NULL) {
+ device_printf(dev,
+ "cannot allocate mac filter table\n");
+ error = ENOMEM;
+ goto fail;
+ }
+
sc->vtnet_flags |= VTNET_FLAG_CTRL_RX;
+ }
+
if (virtio_with_feature(dev, VIRTIO_NET_F_CTRL_VLAN))
sc->vtnet_flags |= VTNET_FLAG_VLAN_FILTER;
}
@@ -505,7 +517,12 @@ vtnet_detach(device_t dev)
sc->vtnet_vlan_detach = NULL;
}
- if (ifp) {
+ if (sc->vtnet_mac_filter != NULL) {
+ free(sc->vtnet_mac_filter, M_DEVBUF);
+ sc->vtnet_mac_filter = NULL;
+ }
+
+ if (ifp != NULL) {
if_free(ifp);
sc->vtnet_ifp = NULL;
}
@@ -742,17 +759,11 @@ vtnet_update_link_status(struct vtnet_softc *sc)
if (link && ((sc->vtnet_flags & VTNET_FLAG_LINK) == 0)) {
sc->vtnet_flags |= VTNET_FLAG_LINK;
- if (bootverbose)
- device_printf(dev, "Link is up\n");
-
if_link_state_change(ifp, LINK_STATE_UP);
if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
vtnet_start_locked(ifp);
} else if (!link && (sc->vtnet_flags & VTNET_FLAG_LINK)) {
sc->vtnet_flags &= ~VTNET_FLAG_LINK;
- if (bootverbose)
- device_printf(dev, "Link is down\n");
-
if_link_state_change(ifp, LINK_STATE_DOWN);
}
}
@@ -1105,7 +1116,7 @@ vtnet_alloc_rxbuf(struct vtnet_softc *sc, int nbufs, struct mbuf **m_tailp)
KASSERT(sc->vtnet_flags & VTNET_FLAG_LRO_NOMRG,
("chained Rx mbuf requested without LRO_NOMRG"));
- for (i = 0; i < nbufs - 1; i++) {
+ for (i = 1; i < nbufs; i++) {
m = m_getjcl(M_DONTWAIT, MT_DATA, 0, clsize);
if (m == NULL)
goto fail;
@@ -1143,9 +1154,8 @@ vtnet_replace_rxbuf(struct vtnet_softc *sc, struct mbuf *m0, int len0)
clsize = sc->vtnet_rx_mbuf_size;
nreplace = 0;
- if (m->m_next != NULL)
- KASSERT(sc->vtnet_flags & VTNET_FLAG_LRO_NOMRG,
- ("chained Rx mbuf without LRO_NOMRG"));
+ KASSERT(sc->vtnet_flags & VTNET_FLAG_LRO_NOMRG ||
+ m->m_next == NULL, ("chained Rx mbuf without LRO_NOMRG"));
/*
* Since LRO_NOMRG mbuf chains are so large, we want to avoid
@@ -1275,8 +1285,8 @@ vtnet_enqueue_rxbuf(struct vtnet_softc *sc, struct mbuf *m)
int offset, error;
VTNET_LOCK_ASSERT(sc);
- if ((sc->vtnet_flags & VTNET_FLAG_LRO_NOMRG) == 0)
- KASSERT(m->m_next == NULL, ("chained Rx mbuf"));
+ KASSERT(sc->vtnet_flags & VTNET_FLAG_LRO_NOMRG ||
+ m->m_next == NULL, ("chained Rx mbuf without LRO_NOMRG"));
sglist_init(&sg, VTNET_MAX_RX_SEGS, segs);
@@ -1688,7 +1698,8 @@ vtnet_rxeof(struct vtnet_softc *sc, int count, int *rx_npktsp)
break;
}
- virtqueue_notify(vq);
+ if (deq > 0)
+ virtqueue_notify(vq);
if (rx_npktsp != NULL)
*rx_npktsp = rx_npkts;
@@ -1946,9 +1957,14 @@ vtnet_encap(struct vtnet_softc *sc, struct mbuf **m_head)
struct mbuf *m;
int error;
+ m = *m_head;
+
txhdr = uma_zalloc(vtnet_tx_header_zone, M_NOWAIT | M_ZERO);
- if (txhdr == NULL)
+ if (txhdr == NULL) {
+ *m_head = NULL;
+ m_freem(m);
return (ENOMEM);
+ }
/*
* Always use the non-mergeable header to simplify things. When
@@ -1957,21 +1973,22 @@ vtnet_encap(struct vtnet_softc *sc, struct mbuf **m_head)
* the correct header size to the host.
*/
hdr = &txhdr->vth_uhdr.hdr;
- m = *m_head;
-
- error = ENOBUFS;
if (m->m_flags & M_VLANTAG) {
m = ether_vlanencap(m, m->m_pkthdr.ether_vtag);
- if ((*m_head = m) == NULL)
+ if ((*m_head = m) == NULL) {
+ error = ENOBUFS;
goto fail;
+ }
m->m_flags &= ~M_VLANTAG;
}
if (m->m_pkthdr.csum_flags != 0) {
m = vtnet_tx_offload(sc, m, hdr);
- if ((*m_head = m) == NULL)
+ if ((*m_head = m) == NULL) {
+ error = ENOBUFS;
goto fail;
+ }
}
error = vtnet_enqueue_txbuf(sc, m_head, txhdr);
@@ -2387,6 +2404,7 @@ vtnet_rx_filter_mac(struct vtnet_softc *sc)
uint8_t ack;
ifp = sc->vtnet_ifp;
+ filter = sc->vtnet_mac_filter;
ucnt = 0;
mcnt = 0;
promisc = 0;
@@ -2397,19 +2415,6 @@ vtnet_rx_filter_mac(struct vtnet_softc *sc)
KASSERT(sc->vtnet_flags & VTNET_FLAG_CTRL_RX,
("CTRL_RX feature not negotiated"));
- /*
- * Allocate the MAC filtering table. Note we could do this
- * at attach time, but it is probably not worth keeping it
- * around for an infrequent occurrence.
- */
- filter = malloc(sizeof(struct vtnet_mac_filter), M_DEVBUF,
- M_NOWAIT | M_ZERO);
- if (filter == NULL) {
- device_printf(sc->vtnet_dev,
- "cannot allocate MAC address filtering table\n");
- return;
- }
-
/* Unicast MAC addresses: */
if_addr_rlock(ifp);
TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
@@ -2481,8 +2486,6 @@ vtnet_rx_filter_mac(struct vtnet_softc *sc)
if_printf(ifp, "error setting host MAC filter table\n");
out:
- free(filter, M_DEVBUF);
-
if (promisc)
if (vtnet_set_promisc(sc, 1) != 0)
if_printf(ifp, "cannot enable promiscuous mode\n");
diff --git a/sys/dev/virtio/network/if_vtnetvar.h b/sys/dev/virtio/network/if_vtnetvar.h
index 613b2b0..184870e 100644
--- a/sys/dev/virtio/network/if_vtnetvar.h
+++ b/sys/dev/virtio/network/if_vtnetvar.h
@@ -99,6 +99,7 @@ struct vtnet_softc {
#define VTNET_MEDIATYPE (IFM_ETHER | IFM_1000_T | IFM_FDX)
char vtnet_hwaddr[ETHER_ADDR_LEN];
+ struct vtnet_mac_filter *vtnet_mac_filter;
/*
* During reset, the host's VLAN filtering table is lost. The
* array below is used to restore all the VLANs configured on
diff --git a/sys/dev/virtio/network/virtio_net.h b/sys/dev/virtio/network/virtio_net.h
index 7361aa1..058f29f 100644
--- a/sys/dev/virtio/network/virtio_net.h
+++ b/sys/dev/virtio/network/virtio_net.h
@@ -1,7 +1,30 @@
-/*
+/*-
* This header is BSD licensed so anyone can use the definitions to implement
* compatible drivers/servers.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of IBM nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
* $FreeBSD$
*/
diff --git a/sys/dev/virtio/pci/virtio_pci.h b/sys/dev/virtio/pci/virtio_pci.h
index 6ebfdd5..d8daa31 100644
--- a/sys/dev/virtio/pci/virtio_pci.h
+++ b/sys/dev/virtio/pci/virtio_pci.h
@@ -1,4 +1,4 @@
-/*
+/*-
* Copyright IBM Corp. 2007
*
* Authors:
@@ -7,6 +7,29 @@
* This header is BSD licensed so anyone can use the definitions to implement
* compatible drivers/servers.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of IBM nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
* $FreeBSD$
*/
diff --git a/sys/dev/virtio/virtio.h b/sys/dev/virtio/virtio.h
index ebd3c74..00d2d5f 100644
--- a/sys/dev/virtio/virtio.h
+++ b/sys/dev/virtio/virtio.h
@@ -1,7 +1,30 @@
-/*
+/*-
* This header is BSD licensed so anyone can use the definitions to implement
* compatible drivers/servers.
*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of IBM nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
* $FreeBSD$
*/
diff --git a/sys/dev/virtio/virtio_ring.h b/sys/dev/virtio/virtio_ring.h
index 124cb4d..b0ab946 100644
--- a/sys/dev/virtio/virtio_ring.h
+++ b/sys/dev/virtio/virtio_ring.h
@@ -1,10 +1,34 @@
-/*
- * This header is BSD licensed so anyone can use the definitions
- * to implement compatible drivers/servers.
- *
+/*-
* Copyright Rusty Russell IBM Corporation 2007.
+ *
+ * This header is BSD licensed so anyone can use the definitions to implement
+ * compatible drivers/servers.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of IBM nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
-/* $FreeBSD$ */
#ifndef VIRTIO_RING_H
#define VIRTIO_RING_H
diff --git a/sys/dev/vr/if_vr.c b/sys/dev/vr/if_vr.c
index 0bcef0e..6d99216 100644
--- a/sys/dev/vr/if_vr.c
+++ b/sys/dev/vr/if_vr.c
@@ -217,16 +217,12 @@ static device_method_t vr_methods[] = {
DEVMETHOD(device_suspend, vr_suspend),
DEVMETHOD(device_resume, vr_resume),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, vr_miibus_readreg),
DEVMETHOD(miibus_writereg, vr_miibus_writereg),
DEVMETHOD(miibus_statchg, vr_miibus_statchg),
- { NULL, NULL }
+ DEVMETHOD_END
};
static driver_t vr_driver = {
@@ -309,20 +305,20 @@ vr_miibus_statchg(device_t dev)
(ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
return;
- sc->vr_link = 0;
+ sc->vr_flags &= ~(VR_F_LINK | VR_F_TXPAUSE);
if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) ==
(IFM_ACTIVE | IFM_AVALID)) {
switch (IFM_SUBTYPE(mii->mii_media_active)) {
case IFM_10_T:
case IFM_100_TX:
- sc->vr_link = 1;
+ sc->vr_flags |= VR_F_LINK;
break;
default:
break;
}
}
- if (sc->vr_link != 0) {
+ if ((sc->vr_flags & VR_F_LINK) != 0) {
cr0 = CSR_READ_1(sc, VR_CR0);
cr1 = CSR_READ_1(sc, VR_CR1);
mfdx = (cr1 & VR_CR1_FULLDUPLEX) != 0;
@@ -346,7 +342,6 @@ vr_miibus_statchg(device_t dev)
CSR_WRITE_1(sc, VR_CR1, cr1);
}
fc = 0;
-#ifdef notyet
/* Configure flow-control. */
if (sc->vr_revid >= REV_ID_VT6105_A0) {
fc = CSR_READ_1(sc, VR_FLOWCR1);
@@ -355,8 +350,10 @@ vr_miibus_statchg(device_t dev)
IFM_ETH_RXPAUSE) != 0)
fc |= VR_FLOWCR1_RXPAUSE;
if ((IFM_OPTIONS(mii->mii_media_active) &
- IFM_ETH_TXPAUSE) != 0)
+ IFM_ETH_TXPAUSE) != 0) {
fc |= VR_FLOWCR1_TXPAUSE;
+ sc->vr_flags |= VR_F_TXPAUSE;
+ }
CSR_WRITE_1(sc, VR_FLOWCR1, fc);
} else if (sc->vr_revid >= REV_ID_VT6102_A) {
/* No Tx puase capability available for Rhine II. */
@@ -367,7 +364,6 @@ vr_miibus_statchg(device_t dev)
fc |= VR_MISCCR0_RXPAUSE;
CSR_WRITE_1(sc, VR_MISC_CR0, fc);
}
-#endif
vr_rx_start(sc);
vr_tx_start(sc);
} else {
@@ -770,7 +766,8 @@ vr_attach(device_t dev)
else
phy = CSR_READ_1(sc, VR_PHYADDR) & VR_PHYADDR_MASK;
error = mii_attach(dev, &sc->vr_miibus, ifp, vr_ifmedia_upd,
- vr_ifmedia_sts, BMSR_DEFCAPMASK, phy, MII_OFFSET_ANY, 0);
+ vr_ifmedia_sts, BMSR_DEFCAPMASK, phy, MII_OFFSET_ANY,
+ sc->vr_revid >= REV_ID_VT6102_A ? MIIF_DOPAUSE : 0);
if (error != 0) {
device_printf(dev, "attaching PHYs failed\n");
goto fail;
@@ -825,7 +822,7 @@ vr_detach(device_t dev)
/* These should only be active if attach succeeded. */
if (device_is_attached(dev)) {
VR_LOCK(sc);
- sc->vr_detach = 1;
+ sc->vr_flags |= VR_F_DETACHED;
vr_stop(sc);
VR_UNLOCK(sc);
callout_drain(&sc->vr_stat_callout);
@@ -1400,6 +1397,17 @@ vr_rxeof(struct vr_softc *sc)
}
if (prog > 0) {
+ /*
+ * Let controller know how many number of RX buffers
+ * are posted but avoid expensive register access if
+ * TX pause capability was not negotiated with link
+ * partner.
+ */
+ if ((sc->vr_flags & VR_F_TXPAUSE) != 0) {
+ if (prog >= VR_RX_RING_CNT)
+ prog = VR_RX_RING_CNT - 1;
+ CSR_WRITE_1(sc, VR_FLOWCR0, prog);
+ }
sc->vr_cdata.vr_rx_cons = cons;
bus_dmamap_sync(sc->vr_cdata.vr_rx_ring_tag,
sc->vr_cdata.vr_rx_ring_map,
@@ -1546,7 +1554,7 @@ vr_tick(void *xsc)
mii = device_get_softc(sc->vr_miibus);
mii_tick(mii);
- if (sc->vr_link == 0)
+ if ((sc->vr_flags & VR_F_LINK) == 0)
vr_miibus_statchg(sc->vr_dev);
vr_watchdog(sc);
callout_reset(&sc->vr_stat_callout, hz, vr_tick, sc);
@@ -1656,7 +1664,7 @@ vr_intr(void *arg)
VR_LOCK(sc);
- if (sc->vr_suspended != 0)
+ if ((sc->vr_flags & VR_F_SUSPENDED) != 0)
goto done_locked;
status = CSR_READ_2(sc, VR_ISR);
@@ -1937,7 +1945,7 @@ vr_start_locked(struct ifnet *ifp)
VR_LOCK_ASSERT(sc);
if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
- IFF_DRV_RUNNING || sc->vr_link == 0)
+ IFF_DRV_RUNNING || (sc->vr_flags & VR_F_LINK) == 0)
return;
for (enq = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) &&
@@ -2075,14 +2083,32 @@ vr_init_locked(struct vr_softc *sc)
/* Set flow-control parameters for Rhine III. */
if (sc->vr_revid >= REV_ID_VT6105_A0) {
- /* Rx buffer count available for incoming packet. */
- CSR_WRITE_1(sc, VR_FLOWCR0, VR_RX_RING_CNT);
/*
- * Tx pause low threshold : 16 free receive buffers
- * Tx pause XON high threshold : 48 free receive buffers
+ * Configure Rx buffer count available for incoming
+ * packet.
+ * Even though data sheet says almost nothing about
+ * this register, this register should be updated
+ * whenever driver adds new RX buffers to controller.
+ * Otherwise, XON frame is not sent to link partner
+ * even if controller has enough RX buffers and you
+ * would be isolated from network.
+ * The controller is not smart enough to know number
+ * of available RX buffers so driver have to let
+ * controller know how many RX buffers are posted.
+ * In other words, this register works like a residue
+ * counter for RX buffers and should be initialized
+ * to the number of total RX buffers - 1 before
+ * enabling RX MAC. Note, this register is 8bits so
+ * it effectively limits the maximum number of RX
+ * buffer to be configured by controller is 255.
+ */
+ CSR_WRITE_1(sc, VR_FLOWCR0, VR_RX_RING_CNT - 1);
+ /*
+ * Tx pause low threshold : 8 free receive buffers
+ * Tx pause XON high threshold : 24 free receive buffers
*/
CSR_WRITE_1(sc, VR_FLOWCR1,
- VR_FLOWCR1_TXLO16 | VR_FLOWCR1_TXHI48 | VR_FLOWCR1_XONXOFF);
+ VR_FLOWCR1_TXLO8 | VR_FLOWCR1_TXHI24 | VR_FLOWCR1_XONXOFF);
/* Set Tx pause timer. */
CSR_WRITE_2(sc, VR_PAUSETIMER, 0xffff);
}
@@ -2107,12 +2133,12 @@ vr_init_locked(struct vr_softc *sc)
if (sc->vr_revid > REV_ID_VT6102_A)
CSR_WRITE_2(sc, VR_MII_IMR, 0);
- sc->vr_link = 0;
- mii_mediachg(mii);
-
ifp->if_drv_flags |= IFF_DRV_RUNNING;
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ sc->vr_flags &= ~(VR_F_LINK | VR_F_TXPAUSE);
+ mii_mediachg(mii);
+
callout_reset(&sc->vr_stat_callout, hz, vr_tick, sc);
}
@@ -2132,6 +2158,7 @@ vr_ifmedia_upd(struct ifnet *ifp)
mii = device_get_softc(sc->vr_miibus);
LIST_FOREACH(miisc, &mii->mii_phys, mii_list)
PHY_RESET(miisc);
+ sc->vr_flags &= ~(VR_F_LINK | VR_F_TXPAUSE);
error = mii_mediachg(mii);
VR_UNLOCK(sc);
@@ -2181,7 +2208,7 @@ vr_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
(IFF_PROMISC | IFF_ALLMULTI))
vr_set_filter(sc);
} else {
- if (sc->vr_detach == 0)
+ if ((sc->vr_flags & VR_F_DETACHED) == 0)
vr_init_locked(sc);
}
} else {
@@ -2269,7 +2296,7 @@ vr_watchdog(struct vr_softc *sc)
if (sc->vr_cdata.vr_tx_cnt == 0)
return;
- if (sc->vr_link == 0) {
+ if ((sc->vr_flags & VR_F_LINK) == 0) {
if (bootverbose)
if_printf(sc->vr_ifp, "watchdog timeout "
"(missed link)\n");
@@ -2447,7 +2474,7 @@ vr_suspend(device_t dev)
VR_LOCK(sc);
vr_stop(sc);
vr_setwol(sc);
- sc->vr_suspended = 1;
+ sc->vr_flags |= VR_F_SUSPENDED;
VR_UNLOCK(sc);
return (0);
@@ -2468,7 +2495,7 @@ vr_resume(device_t dev)
if (ifp->if_flags & IFF_UP)
vr_init_locked(sc);
- sc->vr_suspended = 0;
+ sc->vr_flags &= ~VR_F_SUSPENDED;
VR_UNLOCK(sc);
return (0);
diff --git a/sys/dev/vr/if_vrreg.h b/sys/dev/vr/if_vrreg.h
index 5e2b6b8..2445bab 100644
--- a/sys/dev/vr/if_vrreg.h
+++ b/sys/dev/vr/if_vrreg.h
@@ -720,20 +720,21 @@ struct vr_softc {
void *vr_intrhand;
device_t vr_miibus;
uint8_t vr_revid; /* Rhine chip revision */
- uint8_t vr_flags; /* See VR_F_* below */
-#define VR_F_RESTART 0x01 /* Restart unit on next tick */
+ int vr_flags; /* See VR_F_* below */
+#define VR_F_RESTART 0x0001 /* Restart unit on next tick */
+#define VR_F_TXPAUSE 0x0010
+#define VR_F_SUSPENDED 0x2000
+#define VR_F_DETACHED 0x4000
+#define VR_F_LINK 0x8000
int vr_if_flags;
struct vr_chain_data vr_cdata;
struct vr_ring_data vr_rdata;
struct vr_statistics vr_stat;
struct callout vr_stat_callout;
struct mtx vr_mtx;
- int vr_suspended; /* if 1, sleeping/detaching */
int vr_quirks;
- int vr_link;
int vr_watchdog_timer;
int vr_txthresh;
- int vr_detach;
#ifdef DEVICE_POLLING
int rxcycles;
#endif
diff --git a/sys/dev/vte/if_vte.c b/sys/dev/vte/if_vte.c
index 5e49154..7865ff2 100644
--- a/sys/dev/vte/if_vte.c
+++ b/sys/dev/vte/if_vte.c
@@ -151,7 +151,7 @@ static device_method_t vte_methods[] = {
DEVMETHOD(miibus_writereg, vte_miibus_writereg),
DEVMETHOD(miibus_statchg, vte_miibus_statchg),
- KOBJMETHOD_END
+ DEVMETHOD_END
};
static driver_t vte_driver = {
@@ -1621,14 +1621,12 @@ static void
vte_init_locked(struct vte_softc *sc)
{
struct ifnet *ifp;
- struct mii_data *mii;
bus_addr_t paddr;
uint8_t *eaddr;
VTE_LOCK_ASSERT(sc);
ifp = sc->vte_ifp;
- mii = device_get_softc(sc->vte_miibus);
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
return;
diff --git a/sys/dev/vxge/vxge-osdep.h b/sys/dev/vxge/vxge-osdep.h
index cc1dbd6..f358c91 100644
--- a/sys/dev/vxge/vxge-osdep.h
+++ b/sys/dev/vxge/vxge-osdep.h
@@ -161,7 +161,9 @@ typedef uint16_t u16;
typedef int32_t s32;
typedef uint32_t u32;
typedef unsigned long long int u64;
+#ifndef __bool_true_false_are_defined
typedef boolean_t bool;
+#endif
typedef bus_addr_t dma_addr_t;
typedef struct mtx spinlock_t;
typedef struct resource *pci_irq_h;
diff --git a/sys/dev/wb/if_wb.c b/sys/dev/wb/if_wb.c
index daac022..9c5cd95 100644
--- a/sys/dev/wb/if_wb.c
+++ b/sys/dev/wb/if_wb.c
@@ -212,15 +212,12 @@ static device_method_t wb_methods[] = {
DEVMETHOD(device_detach, wb_detach),
DEVMETHOD(device_shutdown, wb_shutdown),
- /* bus interface, for miibus */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, wb_miibus_readreg),
DEVMETHOD(miibus_writereg, wb_miibus_writereg),
DEVMETHOD(miibus_statchg, wb_miibus_statchg),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static driver_t wb_driver = {
diff --git a/sys/dev/wi/if_wi.c b/sys/dev/wi/if_wi.c
index c31ad7b..d31bdba 100644
--- a/sys/dev/wi/if_wi.c
+++ b/sys/dev/wi/if_wi.c
@@ -108,10 +108,10 @@ __FBSDID("$FreeBSD$");
#include <dev/wi/if_wireg.h>
#include <dev/wi/if_wivar.h>
-static struct ieee80211vap *wi_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+static struct ieee80211vap *wi_vap_create(struct ieee80211com *,
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void wi_vap_delete(struct ieee80211vap *vap);
static void wi_stop_locked(struct wi_softc *sc, int disable);
static void wi_start_locked(struct ifnet *);
@@ -507,10 +507,10 @@ wi_detach(device_t dev)
}
static struct ieee80211vap *
-wi_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+wi_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct wi_softc *sc = ic->ic_ifp->if_softc;
struct wi_vap *wvp;
diff --git a/sys/dev/wpi/if_wpi.c b/sys/dev/wpi/if_wpi.c
index 38ebb7e..fc6f9b1 100644
--- a/sys/dev/wpi/if_wpi.c
+++ b/sys/dev/wpi/if_wpi.c
@@ -157,9 +157,9 @@ static const struct wpi_ident wpi_ident_table[] = {
};
static struct ieee80211vap *wpi_vap_create(struct ieee80211com *,
- const char name[IFNAMSIZ], int unit, int opmode,
- int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN]);
+ const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+ const uint8_t [IEEE80211_ADDR_LEN],
+ const uint8_t [IEEE80211_ADDR_LEN]);
static void wpi_vap_delete(struct ieee80211vap *);
static int wpi_dma_contig_alloc(struct wpi_softc *, struct wpi_dma_info *,
void **, bus_size_t, bus_size_t, int);
@@ -760,10 +760,10 @@ wpi_detach(device_t dev)
}
static struct ieee80211vap *
-wpi_vap_create(struct ieee80211com *ic,
- const char name[IFNAMSIZ], int unit, int opmode, int flags,
- const uint8_t bssid[IEEE80211_ADDR_LEN],
- const uint8_t mac[IEEE80211_ADDR_LEN])
+wpi_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+ enum ieee80211_opmode opmode, int flags,
+ const uint8_t bssid[IEEE80211_ADDR_LEN],
+ const uint8_t mac[IEEE80211_ADDR_LEN])
{
struct wpi_vap *wvp;
struct ieee80211vap *vap;
diff --git a/sys/dev/xen/console/console.c b/sys/dev/xen/console/console.c
index 5a14623..6a845ca 100644
--- a/sys/dev/xen/console/console.c
+++ b/sys/dev/xen/console/console.c
@@ -50,6 +50,8 @@ static cn_init_t xc_cninit;
static cn_term_t xc_cnterm;
static cn_getc_t xc_cngetc;
static cn_putc_t xc_cnputc;
+static cn_grab_t xc_cngrab;
+static cn_ungrab_t xc_cnungrab;
#define XC_POLLTIME (hz/10)
@@ -126,6 +128,16 @@ xc_cnterm(struct consdev *cp)
{
}
+static void
+xc_cngrab(struct consdev *cp)
+{
+}
+
+static void
+xc_cnungrab(struct consdev *cp)
+{
+}
+
static int
xc_cngetc(struct consdev *dev)
{
diff --git a/sys/dev/xen/netback/netback.c b/sys/dev/xen/netback/netback.c
index f1af844..6dfb1e9 100644
--- a/sys/dev/xen/netback/netback.c
+++ b/sys/dev/xen/netback/netback.c
@@ -530,7 +530,7 @@ make_tx_response(netif_t *netif,
#endif
}
-inline static void
+static inline void
net_tx_action_dealloc(void)
{
gnttab_unmap_grant_ref_t *gop;
diff --git a/sys/dev/xen/pcifront/pcifront.c b/sys/dev/xen/pcifront/pcifront.c
index e6c498b..cdc8f9c 100644
--- a/sys/dev/xen/pcifront/pcifront.c
+++ b/sys/dev/xen/pcifront/pcifront.c
@@ -516,14 +516,14 @@ static device_method_t xpcife_methods[] = {
DEVMETHOD(device_suspend, bus_generic_suspend),
DEVMETHOD(device_resume, bus_generic_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource),
DEVMETHOD(bus_release_resource, bus_generic_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource),
DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
- {0, 0}
+
+ DEVMETHOD_END
};
static driver_t xpcife_driver = {
@@ -647,7 +647,7 @@ xpcib_route_interrupt(device_t pcib, device_t dev, int pin)
static device_method_t xpcib_methods[] = {
/* Device interface */
- DEVMETHOD(device_probe, xpcib_probe),
+ DEVMETHOD(device_probe, xpcib_probe),
DEVMETHOD(device_attach, xpcib_attach),
DEVMETHOD(device_detach, bus_generic_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
@@ -655,7 +655,6 @@ static device_method_t xpcib_methods[] = {
DEVMETHOD(device_resume, bus_generic_resume),
/* Bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_read_ivar, xpcib_read_ivar),
DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
@@ -669,7 +668,8 @@ static device_method_t xpcib_methods[] = {
DEVMETHOD(pcib_read_config, xpcib_read_config),
DEVMETHOD(pcib_write_config, xpcib_write_config),
DEVMETHOD(pcib_route_interrupt, xpcib_route_interrupt),
- { 0, 0 }
+
+ DEVMETHOD_END
};
static devclass_t xpcib_devclass;
diff --git a/sys/dev/xl/if_xl.c b/sys/dev/xl/if_xl.c
index b774e7f..7a913f4 100644
--- a/sys/dev/xl/if_xl.c
+++ b/sys/dev/xl/if_xl.c
@@ -310,17 +310,13 @@ static device_method_t xl_methods[] = {
DEVMETHOD(device_suspend, xl_suspend),
DEVMETHOD(device_resume, xl_resume),
- /* bus interface */
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- DEVMETHOD(bus_driver_added, bus_generic_driver_added),
-
/* MII interface */
DEVMETHOD(miibus_readreg, xl_miibus_readreg),
DEVMETHOD(miibus_writereg, xl_miibus_writereg),
DEVMETHOD(miibus_statchg, xl_miibus_statchg),
DEVMETHOD(miibus_mediainit, xl_miibus_mediainit),
- { 0, 0 }
+ DEVMETHOD_END
};
static driver_t xl_driver = {
diff --git a/sys/dev/xl/xlphy.c b/sys/dev/xl/xlphy.c
index e5ac9fc..2fe9e0d 100644
--- a/sys/dev/xl/xlphy.c
+++ b/sys/dev/xl/xlphy.c
@@ -86,7 +86,7 @@ static device_method_t xlphy_methods[] = {
DEVMETHOD(device_attach, xlphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
- { 0, 0 }
+ DEVMETHOD_END
};
static devclass_t xlphy_devclass;
OpenPOWER on IntegriCloud