Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751308AbdHAEbC (ORCPT ); Tue, 1 Aug 2017 00:31:02 -0400 Received: from mga02.intel.com ([134.134.136.20]:35395 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750716AbdHAEbA (ORCPT ); Tue, 1 Aug 2017 00:31:00 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,305,1498546800"; d="gz'50?scan'50,208,50";a="1201313303" Date: Tue, 1 Aug 2017 12:29:04 +0800 From: kbuild test robot To: Ashish Kalra Cc: kbuild-all@01.org, gregkh@linuxfoundation.org, wsa@the-dreams.de, driverdev-devel@linuxdriverproject.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, joe@perches.com, eashishkalra@gmail.com Subject: Re: [PATCH] staging: ks7010: fix styling WARNINGs Message-ID: <201708011214.W4IWn734%fengguang.wu@intel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="fUYQa+Pmc3FrFX/N" Content-Disposition: inline In-Reply-To: <1501470921-1947-1-git-send-email-eashishkalra@gmail.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: fengguang.wu@intel.com X-SA-Exim-Scanned: No (on bee); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 67519 Lines: 987 --fUYQa+Pmc3FrFX/N Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Ashish, [auto build test ERROR on staging/staging-testing] [also build test ERROR on v4.13-rc3 next-20170731] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Ashish-Kalra/staging-ks7010-fix-styling-WARNINGs/20170801-121331 config: i386-randconfig-x008-201731 (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=i386 All error/warnings (new ones prefixed by >>): drivers/staging/ks7010/ks7010_sdio.c: In function 'ks7010_sdio_readb': >> drivers/staging/ks7010/ks7010_sdio.c:77:12: error: invalid storage class for function 'ks7010_sdio_readb' static int ks7010_sdio_readb(struct ks_wlan_private *priv, unsigned int address, ^~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:77:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static int ks7010_sdio_readb(struct ks_wlan_private *priv, unsigned int address, ^~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:89:12: error: invalid storage class for function 'ks7010_sdio_read' static int ks7010_sdio_read(struct ks_wlan_private *priv, unsigned int address, ^~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:98:12: error: invalid storage class for function 'ks7010_sdio_writeb' static int ks7010_sdio_writeb(struct ks_wlan_private *priv, ^~~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:110:12: error: invalid storage class for function 'ks7010_sdio_write' static int ks7010_sdio_write(struct ks_wlan_private *priv, unsigned int address, ^~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:118:13: error: invalid storage class for function 'ks_wlan_hw_sleep_doze_request' static void ks_wlan_hw_sleep_doze_request(struct ks_wlan_private *priv) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:144:13: error: invalid storage class for function 'ks_wlan_hw_sleep_wakeup_request' static void ks_wlan_hw_sleep_wakeup_request(struct ks_wlan_private *priv) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:191:13: error: invalid storage class for function '_ks_wlan_hw_power_save' static void _ks_wlan_hw_power_save(struct ks_wlan_private *priv) ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:252:12: error: invalid storage class for function 'enqueue_txdev' static int enqueue_txdev(struct ks_wlan_private *priv, unsigned char *p, ^~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:290:12: error: invalid storage class for function 'write_to_device' static int write_to_device(struct ks_wlan_private *priv, unsigned char *buffer, ^~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:320:13: error: invalid storage class for function 'tx_device_task' static void tx_device_task(struct ks_wlan_private *priv) ^~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:379:13: error: invalid storage class for function 'rx_event_task' static void rx_event_task(unsigned long dev) ^~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:396:13: error: invalid storage class for function 'ks_wlan_hw_rx' static void ks_wlan_hw_rx(struct ks_wlan_private *priv, uint16_t size) ^~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:452:13: error: invalid storage class for function 'ks7010_rw_function' static void ks7010_rw_function(struct work_struct *work) ^~~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:522:13: error: invalid storage class for function 'ks_sdio_interrupt' static void ks_sdio_interrupt(struct sdio_func *func) ^~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:593:12: error: invalid storage class for function 'trx_device_init' static int trx_device_init(struct ks_wlan_private *priv) ^~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:609:13: error: invalid storage class for function 'trx_device_exit' static void trx_device_exit(struct ks_wlan_private *priv) ^~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:625:12: error: invalid storage class for function 'ks7010_sdio_update_index' static int ks7010_sdio_update_index(struct ks_wlan_private *priv, u32 index) ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:652:12: error: invalid storage class for function 'ks7010_sdio_data_compare' static int ks7010_sdio_data_compare(struct ks_wlan_private *priv, u32 address, ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/staging/ks7010/ks7010_sdio.c:680:12: error: invalid storage class for function 'ks7010_upload_firmware' static int ks7010_upload_firmware(struct ks_sdio_card *card) ^~~~~~~~~~~~~~~~~~~~~~ -- drivers/staging//ks7010/ks7010_sdio.c:1100:11: error: initializer element is not constant .probe = ks7010_sdio_probe, ^~~~~~~~~~~~~~~~~ drivers/staging//ks7010/ks7010_sdio.c:1100:11: note: (near initialization for 'ks7010_sdio_driver.probe') drivers/staging//ks7010/ks7010_sdio.c:1101:12: error: initializer element is not constant .remove = ks7010_sdio_remove, ^~~~~~~~~~~~~~~~~~ drivers/staging//ks7010/ks7010_sdio.c:1101:12: note: (near initialization for 'ks7010_sdio_driver.remove') In file included from include/linux/mmc/card.h:13:0, from drivers/staging//ks7010/ks7010_sdio.c:13: drivers/staging//ks7010/ks7010_sdio.c:1104:15: error: invalid storage class for function 'ks7010_sdio_driver_init' module_driver(ks7010_sdio_driver, sdio_register_driver, sdio_unregister_driver); ^ include/linux/device.h:1471:19: note: in definition of macro 'module_driver' static int __init __driver##_init(void) \ ^~~~~~~~ In file included from include/linux/printk.h:5:0, from include/linux/kernel.h:13, from include/asm-generic/bug.h:15, from arch/x86/include/asm/bug.h:81, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/firmware.h:6, from drivers/staging//ks7010/ks7010_sdio.c:12: drivers/staging//ks7010/ks7010_sdio.c:1104:15: error: initializer element is not constant module_driver(ks7010_sdio_driver, sdio_register_driver, sdio_unregister_driver); ^ include/linux/init.h:166:58: note: in definition of macro '__define_initcall' __attribute__((__section__(".initcall" #id ".init"))) = fn; ^~ include/linux/init.h:200:24: note: in expansion of macro 'device_initcall' #define __initcall(fn) device_initcall(fn) ^~~~~~~~~~~~~~~ include/linux/module.h:85:24: note: in expansion of macro '__initcall' #define module_init(x) __initcall(x); ^~~~~~~~~~ include/linux/device.h:1475:1: note: in expansion of macro 'module_init' module_init(__driver##_init); \ ^~~~~~~~~~~ drivers/staging//ks7010/ks7010_sdio.c:1104:1: note: in expansion of macro 'module_driver' module_driver(ks7010_sdio_driver, sdio_register_driver, sdio_unregister_driver); ^~~~~~~~~~~~~ In file included from include/linux/mmc/card.h:13:0, from drivers/staging//ks7010/ks7010_sdio.c:13: drivers/staging//ks7010/ks7010_sdio.c:1104:15: error: invalid storage class for function 'ks7010_sdio_driver_exit' module_driver(ks7010_sdio_driver, sdio_register_driver, sdio_unregister_driver); ^ include/linux/device.h:1476:20: note: in definition of macro 'module_driver' static void __exit __driver##_exit(void) \ ^~~~~~~~ include/linux/device.h:1476:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static void __exit __driver##_exit(void) \ ^ drivers/staging//ks7010/ks7010_sdio.c:1104:1: note: in expansion of macro 'module_driver' module_driver(ks7010_sdio_driver, sdio_register_driver, sdio_unregister_driver); ^~~~~~~~~~~~~ In file included from include/linux/printk.h:5:0, from include/linux/kernel.h:13, from include/asm-generic/bug.h:15, from arch/x86/include/asm/bug.h:81, from include/linux/bug.h:4, from include/linux/mmdebug.h:4, from include/linux/gfp.h:4, from include/linux/firmware.h:6, from drivers/staging//ks7010/ks7010_sdio.c:12: drivers/staging//ks7010/ks7010_sdio.c:1104:15: error: initializer element is not constant module_driver(ks7010_sdio_driver, sdio_register_driver, sdio_unregister_driver); ^ include/linux/init.h:203:50: note: in definition of macro '__exitcall' static exitcall_t __exitcall_##fn __exit_call = fn ^~ include/linux/device.h:1480:1: note: in expansion of macro 'module_exit' module_exit(__driver##_exit); ^~~~~~~~~~~ drivers/staging//ks7010/ks7010_sdio.c:1104:1: note: in expansion of macro 'module_driver' module_driver(ks7010_sdio_driver, sdio_register_driver, sdio_unregister_driver); ^~~~~~~~~~~~~ In file included from include/linux/module.h:18:0, from drivers/staging//ks7010/ks_wlan.h:19, from drivers/staging//ks7010/ks7010_sdio.c:18: include/linux/moduleparam.h:27:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] struct __UNIQUE_ID(name) {} ^ include/linux/module.h:160:32: note: in expansion of macro '__MODULE_INFO' #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) ^~~~~~~~~~~~~ include/linux/module.h:204:32: note: in expansion of macro 'MODULE_INFO' #define MODULE_AUTHOR(_author) MODULE_INFO(author, _author) ^~~~~~~~~~~ drivers/staging//ks7010/ks7010_sdio.c:1105:1: note: in expansion of macro 'MODULE_AUTHOR' MODULE_AUTHOR("Sang Engineering, Qi-Hardware, KeyStream"); ^~~~~~~~~~~~~ In file included from include/uapi/linux/stddef.h:1:0, from include/linux/stddef.h:4, from include/uapi/linux/posix_types.h:4, from include/uapi/linux/types.h:13, from include/linux/types.h:5, from include/linux/firmware.h:4, from drivers/staging//ks7010/ks7010_sdio.c:12: >> include/linux/compiler-gcc.h:188:45: error: expected declaration or statement at end of input #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^ include/linux/compiler.h:52:23: note: in definition of macro '___PASTE' #define ___PASTE(a,b) a##b ^ include/linux/compiler-gcc.h:188:29: note: in expansion of macro '__PASTE' #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^~~~~~~ include/linux/compiler.h:53:22: note: in expansion of macro '___PASTE' #define __PASTE(a,b) ___PASTE(a,b) ^~~~~~~~ include/linux/compiler-gcc.h:188:37: note: in expansion of macro '__PASTE' #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^~~~~~~ include/linux/moduleparam.h:27:10: note: in expansion of macro '__UNIQUE_ID' struct __UNIQUE_ID(name) {} ^~~~~~~~~~~ include/linux/module.h:160:32: note: in expansion of macro '__MODULE_INFO' #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) ^~~~~~~~~~~~~ include/linux/module.h:258:36: note: in expansion of macro 'MODULE_INFO' #define MODULE_FIRMWARE(_firmware) MODULE_INFO(firmware, _firmware) ^~~~~~~~~~~ drivers/staging//ks7010/ks7010_sdio.c:1108:1: note: in expansion of macro 'MODULE_FIRMWARE' MODULE_FIRMWARE(ROM_FILE); ^~~~~~~~~~~~~~~ >> include/linux/compiler-gcc.h:188:45: warning: no return statement in function returning non-void [-Wreturn-type] #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^ include/linux/compiler.h:52:23: note: in definition of macro '___PASTE' #define ___PASTE(a,b) a##b ^ include/linux/compiler-gcc.h:188:29: note: in expansion of macro '__PASTE' #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^~~~~~~ include/linux/compiler.h:53:22: note: in expansion of macro '___PASTE' #define __PASTE(a,b) ___PASTE(a,b) ^~~~~~~~ include/linux/compiler-gcc.h:188:37: note: in expansion of macro '__PASTE' #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ^~~~~~~ include/linux/moduleparam.h:27:10: note: in expansion of macro '__UNIQUE_ID' struct __UNIQUE_ID(name) {} ^~~~~~~~~~~ include/linux/module.h:160:32: note: in expansion of macro '__MODULE_INFO' #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) ^~~~~~~~~~~~~ include/linux/module.h:258:36: note: in expansion of macro 'MODULE_INFO' #define MODULE_FIRMWARE(_firmware) MODULE_INFO(firmware, _firmware) ^~~~~~~~~~~ drivers/staging//ks7010/ks7010_sdio.c:1108:1: note: in expansion of macro 'MODULE_FIRMWARE' MODULE_FIRMWARE(ROM_FILE); ^~~~~~~~~~~~~~~ At top level: drivers/staging//ks7010/ks7010_sdio.c:348:5: warning: 'ks_wlan_hw_tx' defined but not used [-Wunused-function] int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size, ^~~~~~~~~~~~~ drivers/staging//ks7010/ks7010_sdio.c:246:5: warning: 'ks_wlan_hw_power_save' defined but not used [-Wunused-function] int ks_wlan_hw_power_save(struct ks_wlan_private *priv) ^~~~~~~~~~~~~~~~~~~~~ drivers/staging//ks7010/ks7010_sdio.c:69:12: warning: 'ks7010_sdio_readb' defined but not used [-Wunused-function] static int ks7010_sdio_readb(struct ks_wlan_private *priv, unsigned int address, ^~~~~~~~~~~~~~~~~ vim +/ks7010_sdio_readb +77 drivers/staging/ks7010/ks7010_sdio.c 08aac40f0 Ashish Kalra 2017-07-31 67 08aac40f0 Ashish Kalra 2017-07-31 68 /* Read single byte from device address into byte (CMD52) */ 08aac40f0 Ashish Kalra 2017-07-31 69 static int ks7010_sdio_readb(struct ks_wlan_private *priv, unsigned int address, 08aac40f0 Ashish Kalra 2017-07-31 70 unsigned char *byte) 08aac40f0 Ashish Kalra 2017-07-31 71 { 08aac40f0 Ashish Kalra 2017-07-31 72 struct sdio_func *func = priv->ks_sdio_card->func; 08aac40f0 Ashish Kalra 2017-07-31 73 int ret; 08aac40f0 Ashish Kalra 2017-07-31 74 08aac40f0 Ashish Kalra 2017-07-31 75 *byte = sdio_readb(func, address, &ret); f1e79f4b9 Tobin C. Harding 2017-04-18 76 /* Read single byte from device address into byte (CMD52) */ f1e79f4b9 Tobin C. Harding 2017-04-18 @77 static int ks7010_sdio_readb(struct ks_wlan_private *priv, unsigned int address, f1e79f4b9 Tobin C. Harding 2017-04-18 78 unsigned char *byte) 4c0d46d2c Wolfram Sang 2016-06-17 79 { f1e79f4b9 Tobin C. Harding 2017-04-18 80 struct sdio_func *func = priv->ks_sdio_card->func; 1770ae9d3 Tobin C. Harding 2017-03-21 81 int ret; 4c0d46d2c Wolfram Sang 2016-06-17 82 f1e79f4b9 Tobin C. Harding 2017-04-18 83 *byte = sdio_readb(func, address, &ret); 4c0d46d2c Wolfram Sang 2016-06-17 84 1770ae9d3 Tobin C. Harding 2017-03-21 85 return ret; 1770ae9d3 Tobin C. Harding 2017-03-21 86 } 4c0d46d2c Wolfram Sang 2016-06-17 87 f1e79f4b9 Tobin C. Harding 2017-04-18 88 /* Read length bytes from device address into buffer (CMD53) */ f1e79f4b9 Tobin C. Harding 2017-04-18 @89 static int ks7010_sdio_read(struct ks_wlan_private *priv, unsigned int address, f1e79f4b9 Tobin C. Harding 2017-04-18 90 unsigned char *buffer, int length) f1e79f4b9 Tobin C. Harding 2017-04-18 91 { f1e79f4b9 Tobin C. Harding 2017-04-18 92 struct sdio_func *func = priv->ks_sdio_card->func; f1e79f4b9 Tobin C. Harding 2017-04-18 93 f1e79f4b9 Tobin C. Harding 2017-04-18 94 return sdio_memcpy_fromio(func, buffer, address, length); 4c0d46d2c Wolfram Sang 2016-06-17 95 } 4c0d46d2c Wolfram Sang 2016-06-17 96 f1e79f4b9 Tobin C. Harding 2017-04-18 97 /* Write single byte to device address (CMD52) */ f1e79f4b9 Tobin C. Harding 2017-04-18 @98 static int ks7010_sdio_writeb(struct ks_wlan_private *priv, f1e79f4b9 Tobin C. Harding 2017-04-18 99 unsigned int address, unsigned char byte) 4c0d46d2c Wolfram Sang 2016-06-17 100 { f1e79f4b9 Tobin C. Harding 2017-04-18 101 struct sdio_func *func = priv->ks_sdio_card->func; 1770ae9d3 Tobin C. Harding 2017-03-21 102 int ret; 4c0d46d2c Wolfram Sang 2016-06-17 103 f1e79f4b9 Tobin C. Harding 2017-04-18 104 sdio_writeb(func, byte, address, &ret); 4c0d46d2c Wolfram Sang 2016-06-17 105 1770ae9d3 Tobin C. Harding 2017-03-21 106 return ret; 1770ae9d3 Tobin C. Harding 2017-03-21 107 } 4c0d46d2c Wolfram Sang 2016-06-17 108 f1e79f4b9 Tobin C. Harding 2017-04-18 109 /* Write length bytes to device address from buffer (CMD53) */ f1e79f4b9 Tobin C. Harding 2017-04-18 @110 static int ks7010_sdio_write(struct ks_wlan_private *priv, unsigned int address, f1e79f4b9 Tobin C. Harding 2017-04-18 111 unsigned char *buffer, int length) f1e79f4b9 Tobin C. Harding 2017-04-18 112 { f1e79f4b9 Tobin C. Harding 2017-04-18 113 struct sdio_func *func = priv->ks_sdio_card->func; f1e79f4b9 Tobin C. Harding 2017-04-18 114 f1e79f4b9 Tobin C. Harding 2017-04-18 115 return sdio_memcpy_toio(func, address, buffer, length); 4c0d46d2c Wolfram Sang 2016-06-17 116 } 4c0d46d2c Wolfram Sang 2016-06-17 117 4433459a4 Sergio Paracuellos 2016-09-27 @118 static void ks_wlan_hw_sleep_doze_request(struct ks_wlan_private *priv) 13a9930d1 Wolfram Sang 2016-05-31 119 { 1770ae9d3 Tobin C. Harding 2017-03-21 120 int ret; 13a9930d1 Wolfram Sang 2016-05-31 121 13a9930d1 Wolfram Sang 2016-05-31 122 DPRINTK(4, "\n"); 13a9930d1 Wolfram Sang 2016-05-31 123 13a9930d1 Wolfram Sang 2016-05-31 124 /* clear request */ 13a9930d1 Wolfram Sang 2016-05-31 125 atomic_set(&priv->sleepstatus.doze_request, 0); 13a9930d1 Wolfram Sang 2016-05-31 126 13a9930d1 Wolfram Sang 2016-05-31 127 if (atomic_read(&priv->sleepstatus.status) == 0) { f1e79f4b9 Tobin C. Harding 2017-04-18 128 ret = ks7010_sdio_writeb(priv, GCR_B, GCR_B_DOZE); 1770ae9d3 Tobin C. Harding 2017-03-21 129 if (ret) { f1e79f4b9 Tobin C. Harding 2017-04-18 130 DPRINTK(1, " error : GCR_B\n"); f283dd690 Tobin C. Harding 2017-03-21 131 goto set_sleep_mode; 13a9930d1 Wolfram Sang 2016-05-31 132 } 13a9930d1 Wolfram Sang 2016-05-31 133 DPRINTK(3, "sleep_mode=SLP_SLEEP\n"); 13a9930d1 Wolfram Sang 2016-05-31 134 atomic_set(&priv->sleepstatus.status, 1); 13a9930d1 Wolfram Sang 2016-05-31 135 priv->last_doze = jiffies; cdf6ecc5e Wolfram Sang 2016-05-31 136 } else { 13a9930d1 Wolfram Sang 2016-05-31 137 DPRINTK(1, "sleep_mode=%d\n", priv->sleep_mode); 13a9930d1 Wolfram Sang 2016-05-31 138 } 13a9930d1 Wolfram Sang 2016-05-31 139 f283dd690 Tobin C. Harding 2017-03-21 140 set_sleep_mode: 13a9930d1 Wolfram Sang 2016-05-31 141 priv->sleep_mode = atomic_read(&priv->sleepstatus.status); 13a9930d1 Wolfram Sang 2016-05-31 142 } 13a9930d1 Wolfram Sang 2016-05-31 143 4433459a4 Sergio Paracuellos 2016-09-27 @144 static void ks_wlan_hw_sleep_wakeup_request(struct ks_wlan_private *priv) 13a9930d1 Wolfram Sang 2016-05-31 145 { 1770ae9d3 Tobin C. Harding 2017-03-21 146 int ret; 13a9930d1 Wolfram Sang 2016-05-31 147 13a9930d1 Wolfram Sang 2016-05-31 148 DPRINTK(4, "\n"); 13a9930d1 Wolfram Sang 2016-05-31 149 13a9930d1 Wolfram Sang 2016-05-31 150 /* clear request */ 13a9930d1 Wolfram Sang 2016-05-31 151 atomic_set(&priv->sleepstatus.wakeup_request, 0); 13a9930d1 Wolfram Sang 2016-05-31 152 13a9930d1 Wolfram Sang 2016-05-31 153 if (atomic_read(&priv->sleepstatus.status) == 1) { f1e79f4b9 Tobin C. Harding 2017-04-18 154 ret = ks7010_sdio_writeb(priv, WAKEUP, WAKEUP_REQ); 1770ae9d3 Tobin C. Harding 2017-03-21 155 if (ret) { f1e79f4b9 Tobin C. Harding 2017-04-18 156 DPRINTK(1, " error : WAKEUP\n"); f283dd690 Tobin C. Harding 2017-03-21 157 goto set_sleep_mode; 13a9930d1 Wolfram Sang 2016-05-31 158 } f1e79f4b9 Tobin C. Harding 2017-04-18 159 DPRINTK(4, "wake up : WAKEUP\n"); 13a9930d1 Wolfram Sang 2016-05-31 160 atomic_set(&priv->sleepstatus.status, 0); 13a9930d1 Wolfram Sang 2016-05-31 161 priv->last_wakeup = jiffies; 13a9930d1 Wolfram Sang 2016-05-31 162 ++priv->wakeup_count; cdf6ecc5e Wolfram Sang 2016-05-31 163 } else { 13a9930d1 Wolfram Sang 2016-05-31 164 DPRINTK(1, "sleep_mode=%d\n", priv->sleep_mode); 13a9930d1 Wolfram Sang 2016-05-31 165 } 13a9930d1 Wolfram Sang 2016-05-31 166 f283dd690 Tobin C. Harding 2017-03-21 167 set_sleep_mode: 13a9930d1 Wolfram Sang 2016-05-31 168 priv->sleep_mode = atomic_read(&priv->sleepstatus.status); 13a9930d1 Wolfram Sang 2016-05-31 169 } 13a9930d1 Wolfram Sang 2016-05-31 170 feedcf1a5 Wolfram Sang 2016-05-31 171 void ks_wlan_hw_wakeup_request(struct ks_wlan_private *priv) 13a9930d1 Wolfram Sang 2016-05-31 172 { 1770ae9d3 Tobin C. Harding 2017-03-21 173 int ret; 13a9930d1 Wolfram Sang 2016-05-31 174 13a9930d1 Wolfram Sang 2016-05-31 175 DPRINTK(4, "\n"); 13a9930d1 Wolfram Sang 2016-05-31 176 if (atomic_read(&priv->psstatus.status) == PS_SNOOZE) { f1e79f4b9 Tobin C. Harding 2017-04-18 177 ret = ks7010_sdio_writeb(priv, WAKEUP, WAKEUP_REQ); 1770ae9d3 Tobin C. Harding 2017-03-21 178 if (ret) f1e79f4b9 Tobin C. Harding 2017-04-18 179 DPRINTK(1, " error : WAKEUP\n"); f1e79f4b9 Tobin C. Harding 2017-04-18 180 else f1e79f4b9 Tobin C. Harding 2017-04-18 181 DPRINTK(4, "wake up : WAKEUP\n"); 53638cef8 sayli karnik 2016-09-18 182 13a9930d1 Wolfram Sang 2016-05-31 183 priv->last_wakeup = jiffies; 13a9930d1 Wolfram Sang 2016-05-31 184 ++priv->wakeup_count; cdf6ecc5e Wolfram Sang 2016-05-31 185 } else { cdf6ecc5e Wolfram Sang 2016-05-31 186 DPRINTK(1, "psstatus=%d\n", cdf6ecc5e Wolfram Sang 2016-05-31 187 atomic_read(&priv->psstatus.status)); 13a9930d1 Wolfram Sang 2016-05-31 188 } 13a9930d1 Wolfram Sang 2016-05-31 189 } 13a9930d1 Wolfram Sang 2016-05-31 190 fa740a9e2 Tobin C. Harding 2017-04-10 @191 static void _ks_wlan_hw_power_save(struct ks_wlan_private *priv) 13a9930d1 Wolfram Sang 2016-05-31 192 { f1e79f4b9 Tobin C. Harding 2017-04-18 193 unsigned char byte; f71724871 Tobin C. Harding 2017-04-10 194 int ret; 13a9930d1 Wolfram Sang 2016-05-31 195 8fb8e05cc Tobin C. Harding 2017-04-27 196 if (priv->reg.power_mgmt == POWER_MGMT_ACTIVE) fa740a9e2 Tobin C. Harding 2017-04-10 197 return; 13a9930d1 Wolfram Sang 2016-05-31 198 482c03c7b Tobin C. Harding 2017-04-10 199 if (priv->reg.operation_mode != MODE_INFRASTRUCTURE) 482c03c7b Tobin C. Harding 2017-04-10 200 return; 482c03c7b Tobin C. Harding 2017-04-10 201 0e24eb8ab Tobin C. Harding 2017-04-27 202 if (!is_connect_status(priv->connect_status)) fa740a9e2 Tobin C. Harding 2017-04-10 203 return; d5f1db31f Tobin C. Harding 2017-02-27 204 d5f1db31f Tobin C. Harding 2017-02-27 205 if (priv->dev_state != DEVICE_STATE_SLEEP) fa740a9e2 Tobin C. Harding 2017-04-10 206 return; d5f1db31f Tobin C. Harding 2017-02-27 207 3188bc092 Tobin C. Harding 2017-02-27 208 if (atomic_read(&priv->psstatus.status) == PS_SNOOZE) fa740a9e2 Tobin C. Harding 2017-04-10 209 return; 3188bc092 Tobin C. Harding 2017-02-27 210 cdf6ecc5e Wolfram Sang 2016-05-31 211 DPRINTK(5, "\npsstatus.status=%d\npsstatus.confirm_wait=%d\npsstatus.snooze_guard=%d\ncnt_txqbody=%d\n", 13a9930d1 Wolfram Sang 2016-05-31 212 atomic_read(&priv->psstatus.status), 13a9930d1 Wolfram Sang 2016-05-31 213 atomic_read(&priv->psstatus.confirm_wait), 13a9930d1 Wolfram Sang 2016-05-31 214 atomic_read(&priv->psstatus.snooze_guard), 13a9930d1 Wolfram Sang 2016-05-31 215 cnt_txqbody(priv)); 13a9930d1 Wolfram Sang 2016-05-31 216 fa740a9e2 Tobin C. Harding 2017-04-10 217 if (atomic_read(&priv->psstatus.confirm_wait) || fa740a9e2 Tobin C. Harding 2017-04-10 218 atomic_read(&priv->psstatus.snooze_guard) || fa740a9e2 Tobin C. Harding 2017-04-10 219 cnt_txqbody(priv)) { 18bd6dd1f Tobin C. Harding 2017-04-18 220 queue_delayed_work(priv->wq, &priv->rw_dwork, 0); fa740a9e2 Tobin C. Harding 2017-04-10 221 return; fa740a9e2 Tobin C. Harding 2017-04-10 222 } fa740a9e2 Tobin C. Harding 2017-04-10 223 f1e79f4b9 Tobin C. Harding 2017-04-18 224 ret = ks7010_sdio_readb(priv, INT_PENDING, &byte); f71724871 Tobin C. Harding 2017-04-10 225 if (ret) { f1e79f4b9 Tobin C. Harding 2017-04-18 226 DPRINTK(1, " error : INT_PENDING\n"); f8641485f Tobin C. Harding 2017-04-10 227 goto queue_delayed_work; 13a9930d1 Wolfram Sang 2016-05-31 228 } f1e79f4b9 Tobin C. Harding 2017-04-18 229 if (byte) f8641485f Tobin C. Harding 2017-04-10 230 goto queue_delayed_work; fa740a9e2 Tobin C. Harding 2017-04-10 231 f1e79f4b9 Tobin C. Harding 2017-04-18 232 ret = ks7010_sdio_writeb(priv, GCR_B, GCR_B_DOZE); f71724871 Tobin C. Harding 2017-04-10 233 if (ret) { f1e79f4b9 Tobin C. Harding 2017-04-18 234 DPRINTK(1, " error : GCR_B\n"); f8641485f Tobin C. Harding 2017-04-10 235 goto queue_delayed_work; 13a9930d1 Wolfram Sang 2016-05-31 236 } 9f9d7030e Tobin C. Harding 2017-02-27 237 atomic_set(&priv->psstatus.status, PS_SNOOZE); dad5980e3 Tobin C. Harding 2017-02-27 238 DPRINTK(3, "psstatus.status=PS_SNOOZE\n"); 13a9930d1 Wolfram Sang 2016-05-31 239 fa740a9e2 Tobin C. Harding 2017-04-10 240 return; f8641485f Tobin C. Harding 2017-04-10 241 f8641485f Tobin C. Harding 2017-04-10 242 queue_delayed_work: 18bd6dd1f Tobin C. Harding 2017-04-18 243 queue_delayed_work(priv->wq, &priv->rw_dwork, 1); 13a9930d1 Wolfram Sang 2016-05-31 244 } 13a9930d1 Wolfram Sang 2016-05-31 245 feedcf1a5 Wolfram Sang 2016-05-31 246 int ks_wlan_hw_power_save(struct ks_wlan_private *priv) 13a9930d1 Wolfram Sang 2016-05-31 247 { 18bd6dd1f Tobin C. Harding 2017-04-18 248 queue_delayed_work(priv->wq, &priv->rw_dwork, 1); 13a9930d1 Wolfram Sang 2016-05-31 249 return 0; 13a9930d1 Wolfram Sang 2016-05-31 250 } 13a9930d1 Wolfram Sang 2016-05-31 251 cdf6ecc5e Wolfram Sang 2016-05-31 @252 static int enqueue_txdev(struct ks_wlan_private *priv, unsigned char *p, cdf6ecc5e Wolfram Sang 2016-05-31 253 unsigned long size, 055da4f9b Tobin C. Harding 2017-04-18 254 void (*complete_handler)(struct ks_wlan_private *priv, 055da4f9b Tobin C. Harding 2017-04-18 255 struct sk_buff *skb), 055da4f9b Tobin C. Harding 2017-04-18 256 struct sk_buff *skb) 13a9930d1 Wolfram Sang 2016-05-31 257 { 13a9930d1 Wolfram Sang 2016-05-31 258 struct tx_device_buffer *sp; 1770ae9d3 Tobin C. Harding 2017-03-21 259 int ret; 13a9930d1 Wolfram Sang 2016-05-31 260 13a9930d1 Wolfram Sang 2016-05-31 261 if (priv->dev_state < DEVICE_STATE_BOOT) { 1770ae9d3 Tobin C. Harding 2017-03-21 262 ret = -EPERM; aa6ca807b Tobin C. Harding 2017-03-14 263 goto err_complete; 13a9930d1 Wolfram Sang 2016-05-31 264 } 13a9930d1 Wolfram Sang 2016-05-31 265 13a9930d1 Wolfram Sang 2016-05-31 266 if ((TX_DEVICE_BUFF_SIZE - 1) <= cnt_txqbody(priv)) { 13a9930d1 Wolfram Sang 2016-05-31 267 DPRINTK(1, "tx buffer overflow\n"); 1770ae9d3 Tobin C. Harding 2017-03-21 268 ret = -EOVERFLOW; aa6ca807b Tobin C. Harding 2017-03-14 269 goto err_complete; 13a9930d1 Wolfram Sang 2016-05-31 270 } 13a9930d1 Wolfram Sang 2016-05-31 271 13a9930d1 Wolfram Sang 2016-05-31 272 sp = &priv->tx_dev.tx_dev_buff[priv->tx_dev.qtail]; 13a9930d1 Wolfram Sang 2016-05-31 273 sp->sendp = p; 13a9930d1 Wolfram Sang 2016-05-31 274 sp->size = size; 13a9930d1 Wolfram Sang 2016-05-31 275 sp->complete_handler = complete_handler; 055da4f9b Tobin C. Harding 2017-04-18 276 sp->skb = skb; 13a9930d1 Wolfram Sang 2016-05-31 277 inc_txqtail(priv); 13a9930d1 Wolfram Sang 2016-05-31 278 13a9930d1 Wolfram Sang 2016-05-31 279 return 0; aa6ca807b Tobin C. Harding 2017-03-14 280 aa6ca807b Tobin C. Harding 2017-03-14 281 err_complete: aa6ca807b Tobin C. Harding 2017-03-14 282 kfree(p); aa6ca807b Tobin C. Harding 2017-03-14 283 if (complete_handler) 055da4f9b Tobin C. Harding 2017-04-18 284 (*complete_handler)(priv, skb); aa6ca807b Tobin C. Harding 2017-03-14 285 1770ae9d3 Tobin C. Harding 2017-03-21 286 return ret; 13a9930d1 Wolfram Sang 2016-05-31 287 } 13a9930d1 Wolfram Sang 2016-05-31 288 :::::: The code at line 77 was first introduced by commit :::::: f1e79f4b96c1fa21dfbfda48d511cc88c84e875f staging: ks7010: refactor SDIO read/write helpers :::::: TO: Tobin C. Harding :::::: CC: Greg Kroah-Hartman --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --fUYQa+Pmc3FrFX/N Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 H4sICJwBgFkAAy5jb25maWcAlFxLcyM3kr7Pr2B49jBzsLv16J7e2NABhUKRGNarARQl6lIh q9m2wmqxV6Rm7H+/mUAVC0Al6FmHw1ZlJt6JzC8TAP/6l78u2Ntx/+3h+PT48Pz8x+KX3cvu 9eG4+7L4+vS8+59F3izqxixELs1PIFw+vbz9/u7p6tPHxfVPF1c/vf/x9fFysd69vuyeF3z/ 8vXplzco/rR/+ctfQZw3dSGX/cfrTJrF02Hxsj8uDrvjXwb63aeP/dXlzR/e9/Qha21Ux41s 6j4XvMmFmphNZ9rO9EWjKmZuftg9f726/BG79cMowRRfQbnCfd788PD6+Ou73z99fPdoe3mw g+i/7L6671O5suHrXLS97tq2UWZqUhvG10YxLua8quqmD9tyVbG2V3Xew8h1X8n65tM5Pru7 ufhIC/Cmapn503oCsaC6Woi818s+r1hfinppVlNfl6IWSvJeaob8OSPrlnPi6lbI5crEQ2bb fsU2om95X+R84qpbLar+jq+WLM97Vi4bJc2qmtfLWSkzxYyAhSvZNqp/xXTP265XwLujeIyv RF/KGhZI3otJwnZKC9O1fSuUrYMp4Q3WztDIElUGX4VU2vR81dXrhFzLloIWcz2SmVA1s+rb NlrLrBSRiO50K2DpEuxbVpt+1UErbQULuII+UxJ28lhpJU2Zzdqwqqr7pjWygmnJYWPBHMl6 mZLMBSy6HR4rYTcE2xO2a6+rdkYr2f22X+pUlV2rmkx47ELe9YKpcgvffSU8XWiXhsFcgKZu RKlvLkf6aSvDCmvY8u+en35+923/5e15d3j3X13NKoGaIZgW736K9rRUn/vbRnlLlHWyzGFC RC/uXHs62NBmBQqCU1U08J/eMI2FrU1bWgv5jHbs7TtQTuZKml7UGxg5drGS5ubq1HmuYInt FpWwzD/8MJnGgdYboSkLCfPPyo1QGtQIyxHknnWmiZR9Daonyn55L1uakwHnkmaV974d8Dl3 96kSifbL+2tgnMbq9cofasy3fSPmIuxfXOru/lyd0MXz7GuiQVA51pWwBxttUL9ufvjby/5l 93dv+fRWb2TLicKwqUHHq8+d6Lxt61OxMDelPxanJ7AfGrXtmQGPsyKqLlaszq25OBXstADT SciyDjx3tDp2b1oG9gA2ubdt01SwNoavYqJRQow7A7bZ4vD28+GPw3H3bdoZJx8Du9DaAcL9 AEuvmluaI4pCAA7AnhcFuBm9nsuhIQWbhvJ0JZVcKmuNPYQB5LypmCRpYMHBrsJUbUmutZIh B9AIB/vqbEdgYHXLlBbpztnKCs8+coQhuumgQjfveRPba18kZ4bRhTfgUnP0qCVDR7XlJTH9 1hBuZst+cstYH5jj2uizzD5TDcs5NHReDFBMz/J/dqRc1aC7wC6PamWevu1eD5RmGcnXfVML UB1fx+/RR8sml9zfInWDHAkbh7QElk1soBUgHXAs2k6S0mOnAAG8Mw+H3xZH6N3i4eXL4nB8 OB4WD4+P+7eX49PLL1E3LergvOlq41Tj1DIqgF2BiU32MNM57h8uwESAqCGF0FMBUjXa59oe K94tNDGHsIF74HlwjQMIuoMp9MFvIGHLRCRsd14PdKUs0clV/sZDjkOlYskz688DXsFqAPie /5yIgAtY4YFbW1XDM5zfyL0DFq4vPfgi10MsMKPYaZ3IZYM1FGCRZGFuLv7h03EZAV77/FMv WyVrs+41K0Rcx1VggDsIbRzoAMSau71BQbsMdz4IdDWifAB3fVF22rPBfKmartW+NoHz4LT+ OGHXJqHoA7uVeVDfQFYQHZyrtQCVuBfqnMgAUKmmW/BfJmgWVwT7MvDS/c3FRnJB9BgKJnfJ OFahinTNWVsQ1VpTTRTSDW7yQSY0xyvB120DuoF2xDQ+jEdYAc6Bi2DwHRjJWpM9B7CRYsE8 qRQPZzJknUIaAwy/caeTCCrtYMjqwFUUGCi0SnCw1DkphHHalmgyK9e4ahYxq9wP+OGbVVCx 810e3lV5hGWBMELYqb3cYkOiReBY7BqK0ojQsig0yPkphkJPb5UH0w91pH2RGIailLqM2G/c 9DUgeVk3uR8lOWMh8wsvLeIKgoHmorXBpU1JRGVarts1dLFkBvvoGUar08PHychPKoRtEb2t AAZL1C+vH7CZEYr1M9jglGMi+1qDXR84Scx8crQjRgdhva0ISh81MNEz3ZQdoB4YINgBKpgY RTMIGK2qIsD0gLq15fF3X1fS9zKBHxdlAZ5OUas9X4/Jq2P7RUfORwFD8DIdom2CeZbLmpWF t4PszPkEC7h8Aqw/sWArF4Gf+sQkvTdYvpFajBWkrZANmwrKybRc9p87qdaxz8qYUjLhP2xG JiedltN2aLGP8aklQmf6TRWlMVp+8f56xHFD6rLdvX7dv357eHncLcS/di+A5BhgOo5YDsDn BJfItoaMSbLFTeWK9BbfOeWedkXZZXOvEiQIMK+n1rQlLhnlUbHSsJEmS5aH+VdLMYa7aTH0 8QjWegXxZ1MlBLtsSI8pI1mZch9GVNZN9huA6oXkNjSjXZdqCllGoHicHMX0ym46zziIO8Ej mlWTxtXkkUcKbmu3efw5+2dXtRA2ZYIexJDTInm2PZv1BhMF2xQdKkfgnlJhCHEll6giXR2W iHAh6heiW4gSICC4ZXF+R8K4ESxC5+Kwfx0n4RxVCUMywIvRBRwV4q6+oHxPYCKnfIMVXTXN OmJiVhq+jVx2TUfElxoWAYO2IayOs6xMo5c1stiOqGEuAPhxyKkQIBtgzBZQGEbB1pvZM4eo j0oswafUuTsDGBamZ208UF5SowO5OFtgeatb2NWCOWgY8Sp5BxowsbXtQ4wMEPDB8nWqhhgI 5kD6Djo2jcTCrJjKMfawsNYIbgZYQ1VCtD8aPDXMS95VsTraaZ420mxxnL64kIlXLZ4RxDUM u8EtjE1Lx7PuyrmkaIKXN10iwY6A2mVnxjQrMQItONrhHoyFCUBQgm5LLgEKtmW3lCG+9sgp awASdkZxE9tViQBmyKSxaigD+lHHMDWSgAXuSpaI4GbSsBwNaZLNCrM7MGkAp2KFcbMurYhT mUJhABTbsHlCJGFRakysieGYJFSNqsm7EswUGkxEZorQPu041pvNT4zm53SRgLjDBChllsJS n8LFbdrteL5gykA1pmahbytyJfCgLuus8aHWvYRlBkjJ17ewtb3+NmWOeHE4cbqaMRgfUqPT kreYWPEcU1Gc8XW20xsctV1XGj2iTGODFlaOmXd1e/f/EqZQyszeG3Acxivkbdg0Ky7uFGiQ 8YLawurkDLK7syHebH78+eGw+7L4zQHL76/7r0/PLh3omYBmM/Th3Dis2AhRAsTu7MvgIZ0H XQncCF6EDCPA8MHfXTbW0IhOby489O12ChX2DXvI5vtK8N1dG4Qu6DsokM/CBEhX2yNHaLqF jd/VRLrrdFLITIO+WFXeWYAdhysMoKO5rX1T6w6XE0xsKcU7wSl7GJNbMZs4n0TSnLiwuqWL TvTTrBGZMqsb7ev+cXc47F8Xxz++u5Ty193D8e1154Uf97i/g4P62WlsIRggAuFSSxELzwBG Pp44RvyqtZ7Q7y2SMzAcVUss9BKsRyH9hCRAFdxXOeDeuBZxZ8D04AH6EAWT+x4lXSVlq2mD gyKsmuoZUoBE/2Sji77KPNgzUmJAhnWedHA4fyuYLDs/ihjOuqWSRMIM1NY4d9ZbxCYov7za AmaCGBoc6LITftobJp5tZJiNGWlnosOTyElHqVwHxJ9jc1OuZFMNcWvCrpe2iCt4vu0zhxex aJTqBgeTNY2J0g/V9aePZIvVhzMMo3mSV1W0l6k+pioEN2lkV0n5J+zzfFrHR+41zV0nurT+ R4L+iTLdXHW6CbZyZX25SITZ1a2sAbS1PNH6wL6ic72VKFmi3qVocrG8uzjD7cvE8vCtknfJ Sd5Ixq/6yzQzMWGYG0iUQveTNDqDw01cZLN7HhO4w0Ukd/LzwRcpL9I8UN/Q0vCq2UTmWday 6ioLzQoIWcvtzbXPt9uZm7LSQcAwnBkiaBel4ORZCtQI5s9Z3qnRkWyXIbipN3LADhPioN6s U3OGReyVMIysq6t4QF+1wpyyMgMt92PY2l7EQnwd2WJdUYN0vMqb5pGC2d0mnDIhqtbYqIky ZwN705Rg8pjNK8RlzxSzhjJcWhu7IqiPlEA2IzHQRCVUg+ltPGDIVLMWtbWjGDlRDsAqD5/5 dSDhMWUpAP5vk1oPUk4v0hUPahB66NqFDRXpmceCGAfpFcCISNNtm/8UNhPj0JGXoP22f3k6 7l+DM3Y/0eHwQ1eHOcC5hGJteY7P8SA9mDVfxkKQ5jaRs7aLaicWwqKEk0kyTAMGIqPPW+Un OrpyaoFaUMi7riXhvORgCsBCBV5hJM4XmZCBQZ+r2IaT1hAWjNA3nZ4r2MiSqrpu8AJGBBAG 0jWNiQbuxwR7U+m2BKx29WdsDD+JHo0Cl8Hhz0SNi81ELmiEtITZgxhbmJv3v3967/4J56hl 1FayoUgBWBjG3IuaEfdMLapPs61XGFEvxHy+C5AlanE5Ylq8T9SJm/dTAuxM2bFTFas7Fp4E nnrkeNTZlysc1tZb/+rKeWHPVB3uWN+GumSqqLIQdwbkodJZKn2Mr5ddG81YLjVnKicqHiYC EH7J4oyKrXSAu+5mKTZMOSqrJq2xnbMe7jqqP8MDprD2geTOi3h8mjK62hPT67J3MW4ydKst WLg8V71J3t532L/BdNRU21p7SzZeoLTpMHfrK1c31+//O7zqng68/BNCj0MbTSIdmE4tudS/ WbU9HqLQSc9SgBNDvEbNpB+Dw8cpoJyKj8SCssXIhb4yfXO6XnTfNo23e+6zLnCq91cFWFei qns9O+Ec7lDDtLfRZbNR2O4UKqQflN5ezh5Pk1LJGlhfoVSYnLfXOPwW7eGN5eAR0DoRINpz etupKCdhb8/0GQTueKanujbUXpufgD2FEWY1qskk6IqH4oA4IAjHhNbtzcdrT8eMomJ2O2SX I47yBcHMTImLqg0yhqKgMrXDyUFgH+77i/fvaZd2319+SLKuwlJBde89o3Z/g4QQ/K4U3k70 9i+ennqaBHZAIjSFlVHomS4GxzTwlUDkagavMmVJx5S6TTkm8J+9AWgr0ESD9twHGryMHOEK 1rrsbNRw7rx8k2v6DgOvcpuLBKVJgJ0mx9PEMjfUTRUHRvf/3r0uAIw+/LL7tns52mQd461c 7L/j26eDn+wdcu50CqWiFI77B4v4NSJJO896ysT6Glrhi5whGY9FWv8FjqUMp+4Ws9qdBlVN L5km88jH88plAtu6+gHxFXqOgH0ZJTZ9swETIXPhv3IJaxL8jJ20EiweSsYMgJFtTO2MCd2Y JW+g9SZVdcHmBXI6rW15NvZW4nPfBkfz44y4OPsUONBsmZdJ5qwzsq3o9EdUKVsuFWgJfR5o Zc1KqMo/IXUD6rRpqj7XoO9F/Dolljh3WuHasH6nawFS5PEYYx6hcWcGyiVeYkm9Imyr+f0N 1/kGAnTY78lZGe2JbOJA222ajM6OurKJm4/+tFXCrJozYuA+O3w1gGfxt4AI+qYuqVuT085m rZjdsBjpwyF/2AQyyA7krSnOxLAtnsQ0LahV6m7OOMXwdyKLrEPvN96dXxSvu/992708/rE4 PD48B6H8uMXCDJHddMtmg89iMJNlEuz4rvmJiXsyPuC0jBGlYmnvUiftPchCOIMa1uE/L4K3 Juy93/+8SFPngMVq8uo2JQ88xDnjvcbzlVsw0BlJRWLB9Ia3XkmJcTbIRpODpwTHISeX+k9G mBzZSQ2/xmq4+PL69C9348+vz01Yyvo43NfO0kXWMnE+VpA+zRo8SyzkV4OzWje3/dq7Cxwy /pFkjJAizGbfWWhSJYyTRbgtQDQADS6lq2RNQ6pQVJJv1kIZ7adxbWev3dEQ9Cbu5zj7tX1e RT0MdAnUeqm6Oi6M5BVoebLfYtLX+ZHs4deH190XD9SRgyllFjc7Me1jZXzjARGwjUVINZRf nnehAQwxwkixGl1CFB16uoBdiZpGxtZTI+jWUwHedG2Z8GJOq+MHU7bP2dthnJXF38A1L3bH x5/+7mVjeaBu6LyXDcZwtJ+x7Kpyn2dEcqlE4kWHE2hK+i2mZbLaA4xIwg6FFNdASBv7FVKx paisfReo43HzOrt8Xwp36znVdYEgPOvS01Np2oPbhtOnwxzxhYv3XerPvutIymrTUZeJVyZ8 uYiiuFlLYR81D5MT1CSbTbKVVqXH0jJNpoFtk8MNwlkoiAoYa2i+Ozz98nIL+3eBbL6HP/Tb 9+/7V2hxiOKA/uv+cFw87l+Or/vnZ4jpJut/EhEvX77vn16OvkfA7kBMZ5Oi8+gQCh3+/XR8 /JWuOZzyW/hXGr4ygj6+Hi58EXMy/GbDcA/VL0AefmEkHV5bQMpKOeBMFBlU/FQAv/u75uID FE2EJKW8Iyqqhfnw4f3FpEBL4W88PEips1CDML1KNqFgtHnieYK1vFtdZLMlEb/vHt+ODz8/ 7+zPmizsUdLxsHi3EN/enh8i857JuqgM3g2cOgkf4XHSIKS5ku3sgTW+XowlSWIl/WNfbCG8 RDtkM67it/rDNSnZBDmoWpzOy+rd8d/7198Q0czcF0CvtQjunuA3GD/mGbmulkEaC7+tCOWA C/+NEX7ZX/mISLrLwNmWkm8jhstAi2Ac/VpsZwRP0vNSgvYIQMfffMBMW8UUFdBjra0Bv1wy rWURtmfLtqut3R6A7Ko2uIYKEvGl3xMpvlw0MVi+QeTsXxc1VfABVq72ZkIbb3kr5X1kSubL YCYcpd9ADcOFZDrXagU+vb+8+BwcYJ2o/XKjqNtenkS1UUHqMhe8Jh9plmVgQuCTAnAyzJjC 53CbggraDfNv2eNDQtYChhnIXiV5Tuf17y4/UD1lrffbKe2qqf0tIoUQOPQPwQ9aTNS+Loc/ 7KM6UJnakMdaXhF8Meq3UTF+asLTUBvAjNv689vubQeb+p1+/HX35S0MnAfpnmefZ1WAE88I YuGbn5HqdNLfSJaMlyQSuwjZ9o0g0bDy1X0kgpGmiERxIz6XBDUr5sQl2VSucfvP6fB//3jx JK7UnFh9Hm6IxDO9ataCmqvPBRXInYoN56SzYsVnxztTlpqj1YqYjVaSPUPElLKXbgLmF6wd aHl+OByevj49jj/v5ZXjpQ47AARM/Us+JxsuIay/mzOK2zmtuwqe+A6k5MPtgT1fcOQovWnj GRnp9D2MU8/K5jaxJMh2r76JCWgLYpQlxptzeoVv/aP3rMgTlnG2e4y80zVyZU1sikIWnjrn 3NuNeY2PjXSDvy/kuRswCgwPcDeByzlRxz83RE88qZoniqdPADbOTgaBFR49y+bEokdfyno9 gprpdKctyWc32r9S3nrarAr7axv+vYa78BcXhkf/Fk3QJtKTcFgjWhGFvyeht334vjeLDR+q zvDTUiHKWxx3h/AnR1asUiy3JsvFJA+Pv+2OC/Xw5WmPbxKO+8f9cxCMMNotcubnUmGxFLsN Bg+kjFPHWMhZ3o4dgC+Iyf719Lhb5ESGDTWHJ26QWuZdxPV4uuThIQ4SARckK3PXnt2tcTKw Ujkb+y1fc0ZPmFQl2SWpMAXtQQeorQeDqsI6iZNCKzn8ih3e1C914maCFbSX+ckTa8seMahr 8eXrK6ayfsT4d/HFrUMU62qp5pxTjcZse5AYK8z3L79AHPV/jD1Jl+M2zn+ljskhL5bkRT7M gZZlm21tLcq2XBe9SrpmUu+rXl5V5U3n3w9AUhJJgfZ36KQMgIu4gAAIgO+DRt0zj7LYm4ar VPAJDB1QQE2bwJv0iHf4A3j07Ch5HoXA1xWKEt54k6rtPimcs+Vs5i+55/WGZ5O+5EkVBuGM qA893DZpdsQUUL5K4QtBtTZqlWO2uzHAhUgwl6DZ0IUXm7KQmQhpfxflJOjie8Uhx8xSSV9r 37GMu82cM8E9dZw5c6k3nvDwpk5h6qQbFlXThWNqPvPGtIdgWIgBhV9O6LYE2fl5NIgb7tHJ bo+ys2FjUAJ5IMNc8tK8jOxpkQOkWYn5HC+sxoyINlvvyZIU44t1iHpXFh4znVGtulep7tJN jrwpkdKDWIbhmVsyd87QTdz1xH3+QIDDRjaW8Y2koN0hlFYSEE33KLxakxGLMjOSzL05G+c5 N5N1yp+aAcsMj6bzdr07cjIPBh5+a0fAWldaCpiAHe07YdzO4wO/b+VbQDTU5BwgJvYkLGtV sSNtzoKBrOEYNfjO4iXZpTkVhcfpdov52jzeZyBPwLLMXKkb+oxc0FQprzJKbURo46hzEI+J LV/+1OCH0jUbnVQOi0OaVaZkaIGBBTQHI3EPNNzk1c7aWD2sy9EP3sNPWLFlmeN9P9oHa9Um MKdc3pnLfF/EOO1AXiqZc1sylAIW7g3ChL1Ss4HU+KKhShX5PozGWD1FAKd1lm0Y7VeSoVyH hgzD/meMlhRWgNuRnHWQZWoz2E9BkfXpksA+8tK+JcUjeIxHI8d5SMpXnW6ISyYVXi84OR6B cVlGSvW742ZqNg0TpuOThuW5ucX7wuZ1BNrAZXbcLWZc29mzgchdWiTK+5BeTjKA1k4cNdxy qQPb2AXwv2ISky+zlam4AJqJNtTqLC2+VO7Qxtp4EsECFhrJdbrNEaiTV1gw9LK1DtsRpm/m Rrg1kuWus6xe8DvfmsOPvXAqkLc9TiVafbRg6Ac2zelseK2pPAx2Xm0foLNvJnoo7DdOWt3G Yo7mayDg6EzdMCCN3QuSw2ssa+N4tV5OKw3CeD6FFqXufg8vKuuH3rw5zBbbp0PCycrQQUZi fbEvKfKX9z+N9Tpu9LSADS4wb3KUnWchtRTZdhEu4GCuStsXcATjhqUvfQwaUXkcjU55fsVl Qqszm7xjgo67qw6s8MXkiT1eNCZ0GCWIbLkvHRdPxDoKxdy8kwIekZUCA6PRp4Q7GfkOwHMy T1KsaivWIAcx0rDARRauZzMj44KChIZjbj9BDWAWCwKxOQSrFQGXTa9nlvH8kCfLaEGHN25F sIwpA3wDWhpLVovAsrZVaC48kFfCIALpe8tuJ9h6Hhu9y1jTwPh1aVJF4/Vw33VQ8ew2xptU XxLsJLSZgPoNiwrqYnUXBnLM1EVfilxyqpcqeMea0NiRI3AxASqP2wkYpNdlvJqSr6OkXZrf NcDbdk4bFzUF3zZdvD5UqaBjYJPNKphNFrJKjPv88+kddPv3j7e/v8qcZdph5ePt6du7VPVf X76BtgmM4eUH/mnmpO3seHCTS7h7XbbGXj+e354edtWePfz75e3rf/Fu/cv3/357/f705UFl Yh/rZ3j/xFCQqyyTpnaR9zgkDlj4d4egaWmKs5LtzjnhFMC/fTy/PsBxKY92JecO5o+E7wjw uawI6FjRAR0IfMjk6e0L1YyX/vuPIQmE+Hj6eH7IRx/zX5JS5L+6Qjv2b6iuHwJMWN7VTuRH mhw8HvFtNnHTt5Bsd+rFyNKn1AIZnYBcZfTZDlYQkQjem0Em2xSRneMDJmG+7LMSqW29JMHu JBznVTXmaZo+BNF6/vDL7uXt+QL/fjW6Y+oKKZoq6Lo1Eo50Qbnsgn4M67UUBz16ds5DBhJj fgIdSKSbhjIkKiVUn0SGlmfbR+TRas3z5xPL+COpLWDxJmXOtRdCZOwelcDbJqhBZduCfM8t g6tD488OaBMymdQdtSJPmlmbHLWqDctc39xxPPGC2tR9E5EmTjfhLxBNPRnA0wYN8N6eIFL6 k9fwBzm8oM13ZzlFMo+/bTg8pw19jaMvM7x+DFnu876u3Vv3EdXk/aKbXuQxYEHjEUE5vKKV o2nomHCJFOganzkuzybBQRhqgoS41poU4xEsdcPWNXAcQaPalnUXJaUlNJzh+E/p47K5VoeS jH006mNbVjX22tAgGee046TUaFawT+34xLQJosDj+zQUylhSc2jkYLG3jANj96VmHoo2qRvZ khbcI5Cro7chA6/MSnP2aHrKWyiLBcPPOAiCzreCK1yHES1zondXu994QjE1UudTSyg1y+wW sLai4Yzuc53QcFxnpcV7WZN5OttktBUUEZ5PAIxvHuglavbtVJc15a4nmQjbpk5yaeBp1Blr 1Kg4uL1dNnNaRdokOdpuaA6yKVp6jBLfumv4viwib2X0YKigNJTnfQV9d9vjBydOPNGm8A2p LpOwMz/l5GpJDmkmbCuABnUNvTQGND3II/pMuSyYTXORWA17d3jSdph3ndbxaEcso53t5FSE gyvjlMuXWUobkMeGstCTkhhEBM8hbdQHsk+WWprrJg3v9j19xCRE1iBJSFdU6EJRAGNG16vO XdZETS2zTHgi9HiVntv9nU852GG8VUDG4xoF+jQ740fQRVI7gFf+TN3f3eFixkzzvXU5AT/t dTdigPFSBgvkx1YNkkFvEzp/NJ/P7owOj8NFa030p/xOEdDqz6ntCpOfc5/bb44iF+s2HiPR 0ZMGQByvlCnE7Ab0gRWl1fc8a+ewuuiOIM7V1E3s4iZWXG6idz4XpL63PKntVXUUcTynmTii FjQ/UyhokZaEj+IRam1dp3u6P+VktxZJGH9a0qHsgGzDOWBp9C5lWXFHxioYiD12CKQG0Uex iKM4vLNb4c+6LMo8JQ+MOFrPbHYaHu8PTnHmW26lSFSPRzkS1rRgeXQiaw6dT7jCwFOfQKVd vtNiz+28wAeQCmHSyAqvKd5U7fgd6fpzVu7tSNrPGYvalhYAPmdegeJz5tm60FibFp23HPlU gNlD0JC1k85YKGErYKdeE3aPPzGPqPIZakRvvTsyLMbjNOnRFkdp9TcOonXiRzWl5wWTOFiu 73WiSAUT5IKut9bc1cvZ/M4GqdELryYrEywHccCyQwl5ntxd6CJNP9NV8sx29xLJOpxFlIOC VcrO2cnF2sNmABWs73wxpvepd/DPvlHd0esR4Hj/m9xTS0UurKFPK574MoIg7ToIPEI1Iuf3 +JpoJIu2vqDJpV3q7uScnMxGVXXNU99rD7AAUvpwTtAZsvDwZk6922J0okkPp8bihgpyp5Rd AuNu4eBlHptQQ/v4GfWdbTaOPlP1gXscFxCLPkcJbyiDoVHthT8q28hQVkG6y8K3JAYCOh+M OX3XoqxA87LE+UvStdne4V/j8bTdeqYJPYo3KIlSRjmQ2cYXukwg6J543Z2bqT0UgjcbZkba KOgJxPuTLYkZ8G5fkY63Fg16EtSpWzOWdEAHji5xqdW36nBVcb79or5U8mFIdfPK+QP8nHr3 WYYOpJh2sbdpdJX50CRr4lnU2jAYshWcohNgvCKA6pTvOz3qWNo84HZm3JEctGnm6WuCL20U fVfHpQPq9K06txVIWfPYU6nELlf2F+zk+xcWiCdVBjNpw+R1UHthV7dP6NWYNsEsCBJPu1nb 2JVprYMGBrO924QSuL1fPci/nvYlHiVTt171aDSb1NzLGUaZ/oxWMoVbER4DnkpEA8pjazge oMkQlgxPhFvLmTepEKmnohaf5oH9B1sgrPG/xtCp8QF9Yr1emOnSqsxWCqrK88qcY5SQGwov 3H57f/ny/HASm/7KRlI9P3/BZ+u/v0lM7xrPvjz9+Hh+oy53Lg5zl7jLS87aB7wQen1+f3/Y vH1/+vIH5ncaPSvUTfM3GU5qduLjO1TzrGtAxMTN92JLLtB+noIeQIzrYWtHzuFv9L33kCIK j+1xkCW0NymZsF09qdc3ARLpxAUYqgcPZzM4SujDiBUtLQ5UCZxPPtl1x2qokT6CoDNkJrVN YSw6/KVC0TJuBlIacXfjZdwUt2PHNLMNKCMSmPKy3oURddIZZDnQzD/NZ55akiRckKKZ2dJ2 twrnoa8GFoeBR0c+feKNOHWed6m42BJ3od9+/P3hvZLlRWXGLcufXZaaj4soGD7NnOa2l7fC 4MUZCAG2GwAiVN7OY84o26MiyVlT8/aoPAhld0/vz2+vuCFf8Gm2fz9Z3nm6EF6qki32GHTP PVG2BIdMAAsDTbP9VzAL57dprv9aLWOb5FN5Vb2woOmZ7Fp6dlySjcmZOOxaJY/pdVMy8ynN HgILKSGh1WJheiDZmDj2YtYUpjluqLY/w/G7snaBgQqDJbUHBoqtjt6ql/GCqDs70m3a0pwF lsswpQo1CVvOgyXZU8DF8yAmd9NApBbprc/J8jgKI7IFREXRrcJwnKyixZosnSfkiw8DuqqD MCC+uUgvTq68AVVWqUydTbOQgUyr9rda798HmTyYOFbSlBd2YVeyI1A9zPKtBkBfrVKiWkyL MCdnOoI13NIznYddU56SA0Buf3nb3OkWCnadfcsy4lgFajuttw9ETkQdxcRu4IHtCMzq6WVv MhOfpVwqiHTrY0kKKgCtDRtUvAKJ8x7VgRUgCNCBFgbZcdMw+nrBIKrSPROe2BtNpvx/QfYA bYR6wld/PU6yYtqG/DsC0dEaH8blpuONiY/jKo+Xs5bGsq1YxXOLm9joVbyiH6aYkFFWPIuo hmMp0K70dDVNjv5y5CWqRXcC/sjbxAwWM/GbE0gcQUQjUcnBd4l4UsRREHuIrnHS5PsgmPn6 mlybRlQ+n90p5bz3hLpR29zrtkzRCvJRNZNyy9azRUh/IbriV3VJIw8sr8SBm55bJjpNG+7B 7FnGPEtN4fSy9w2EFgnvfNi+LLfc0wyI0jD7ra+B/al49FjPzL4em10YhKs7/UgtHy4b4xla ud27Szwz3bmnBDd2CRywQRDP6PswizARC9rSZVHlIgjm3sbSbMcEaMcVxaIsSvnDMyd5uzxl +tUYsh1Qf1rSKGY1cVwFnuUMUkBuP1RizQami20W7czL6OTfNcZ33OmD/PtiexRaeN6xPIoW bdeQcRgm7SnZBHPzztz6op7Bkc1cto20pDkMg6LM16vWs1cQN1v4cb7RlrjI1zc8/zAVVCl4 c4855kkQrWIPq5Z/c5C+fXiRSHbi2WqABp2/dVxQpxTzW0jP6CjkyrsKFLrjHi8Ak7bOOzIp hEkjeGa922njxC12IZog9Hi72WT57n43bAnWQp3kKyqRHRZnUbTxcuEb60osF7OVZ5k+ps0y DD2L4FHeRXuO8TLjm5p3593Ce5DX5SFXEkNIu4NpMZaT27nO+fRkl0B6Z0qUHTkoIfnGgezM KJwe4q52CQ+3OhzCpTcDzDUkdCHRbAKZTz5lt7CMasqy+fT2RQZV8N/LBzTCGIq+00sids6h kD87Hs/moQuE/7ox4gqRNHGYrALqeFMEFauV2u0UrBJeCcqZRqFhxQDa7YZKJGKBtOcqQQwg NOpNm4aR6Jy2XYpqc5tA5jVklaCMUCdnWPcsT+1gpB7SFWKxiAl4Zs3+AE7zUzA70iLHQLTL HalEma//enp7+hON2pPo1KaxbffU2YuZ/NZxVzX2BaB+YwDBnpkE1aooCxWbXVvLQHoANF4v zuSaZGzrMSjkZcvURU7mc/BCCszi1XgI0GTsjQDpkbnnkkGju73H/b58LD3eQ1yQd8297X74 vReWp4kMRIYzxtPfwWjSkHfE2/RsPYsEv48KoMJrnt9enl6nNw96/uSzLonp9a0RcWgHHg5A aKCq0dsU3ziVb6oImk7FsVp7q0ftcHopc4RJlKjQDE8nrCdvzVbNcGQTof07CUxRSyce41Ul E1vjI6Z5eoukf8mWrj5nBWZyqu2MVSYFk+mhu7PrSkSQyrh2HV9N1rVN8UF2b2it9WXCE0Nl zpSgwqetBi++rtRNGMeUFdQkyqx3M6xx45OTZUABA/DXi0Ho+ingfhcU37/9hiWBWm4HeT1H 3ADqGkD/i2gPXIugnXQcZxBzDxEd71H9uvZXPlAOCzNwKGxx2wAam8Zt/5OgknJppEiSoqW2 q0Lc77NIgiUXqC6RfRvQZBN9UVqem5BZsp3GwhbdpPWWkZ+uxYhPDdvf3mKaEIkmLRg4nH61 oV12YBJt2Gkrk9MGwSI0XywiaO+OL9+1y3Y5Iz4OPT69PoiaRl/KV+IuJYhPt9B15ZPqAAm8 ArYzOXgj6sYKhV/ApAtMPLznoFd4kpD0WxAVkyCictRpCryLs96iM+BJU2d4oLqCL6Y1q2o4 nsh37GuZfWmsMKump1RVWVd8h3OiL5hHmA7wmxTFp33QRL7NTGoJ3eK/1H2rU6IqVnCdbISW SmR56XM1PsVJGcORTvBJ/ZgK2Ud+wVyU23I/7RQmtSx3VMHDZfJ62gBSucd5aUk0I9Z5jnhE WM8Oj2D5mDSFOJsxYybYDkk0+lWZ4UHn2gyZraP10pLpMf8wOkDRy7csrh6X4vxCB1CqzOzO XWaVxKto+dOBYt44DRm9Nioy9gUW2l49pue8qdwke/t7JYCLqXldwSmLhi5hWyo0ENi8uoeg URwghRPdaOKL07lsPBGwSFfQRsFkPzRqkffNeetLaiosBjFnGCW8HGqv0y8RTRQ9VmZ2CRdj ZzyaYEXluLJm8kEUWgOwVVBg99nV4nw9RKUYUo4EcNhOnTtC92U1HPH+ySeDJwFU3kzis6XW 5geEylFP8yJE48tWZDI1xCqnTuVF+ffrx8uP1+efoNhib5O/Xn5QQptcT/VGXerLnLlpQYZo 6fonG2SE5yf6IranyJpkHs2WN+quErZezAN7qEbET6pdGN0bNeZZm1TZ1i2o84i573cYFCJX a2CYbvb6n+9vLx9/fX23Zlzm5t84j3RqcJWQvH/AMrP+wWCFCTLe3cc1HqA/APe/sOE0zoNF RHuaDfilx5zY49sb+Hy7WtCJWDQaI5y9eO67HZJI4UnQrJC5f29UnLd02KjkfNMXjyy84GKx WPvHDPDLiPYT0+j10r/+z9zzALnCAR+cGKbkE5ieCRZJTiRkQab0z/vH89eHPzDZmir68MtX WDSv/zw8f/3j+Qs6df6uqX4Dve5PYAu/2gs6QVZnH4wI3qaC7wuZDsbWUhykoT1aXTZIJrkO fISV52kUh2zDrk3NOO0hibTpPpz5102ap2fyIYVwKg5Ijj7x5zEXYcK8Q1C1/kUAuJufWx8j /+oSPHdevDGQSn/pWU368+P57Rto8YD6XTGVJ+3U61lrOtWa73t1IrYM7ef2omgYOu6cBztC +fGXOox0u8YiddvUPj/djYyeWq5jvlBaHJY76wwzw3mDREcSZNZ3SOg3hWxdu3+W0wblTCit SBkcYcvnT+84G8nI5SeeilhQacB2Zazl8v9DJKKBm4SCCP3IK+g02dUGj8kSrM73G85SPxFz 8cRoaqSddRKB7rZCWJavZl2WURcHiJZasBU0ooGTUS5h3fDi6tYPOyz0uIqN6BsfgmZ5HYFr QEUSxHAyzEK3uQYO+IzvMKcjfZ4hUYuBk572hn1rwB6vxee86vafxZipENdMn89QLx47Y2El FwUtNcqeZukybGfuB/h3j/C9onsgbfiVneEfft7IGFw0FVJMDjeE/fn6ohKzuZI3VgmDjbkK jo4+ZqCyrfU+lIGZZsYccXqpDp34Dyb2ffr4/jaV0poKuvj9z/8jOghfFSziWL3LaNw3VHG0 nM/sABSbGNePF3c8G5om9tTaIeXOOcelkG+/iK0Loc3bXtyKsRHl8VEw4cB01tpB+Xj++v3t n4evTz9+gLwhw8kIRi9LruatCiajr2+q4SLzBj7fVvTpLtHbC6voM0Ki8WqDWLQSt2vwfzPb y8784OGo99Wwr11WJ8HcwxMkMrsW7eQxPJMgT4vHIFw5c5CXiXrI3K4Nn133KOgSf27jBWUH lEhbdqhgTf+mJxWv1Z2JtUZuFcRxO/3uJqa9NVVXb40KICMnRHeQemVHnn/+ePr2ZdqViRe+ CbWz7WpMMR1F6TVOXmqM6LB1Z0RBiTakPhtNx0fD3Rsom2QXL1ZuU03FkzAOhtSd+W77/xgV M2pBQWv+WBbMgQ5+ms46reJVRF1RDdjFcjEpVSeLZhFTLvpqmrULj11Iu5r7Cin3nHg5GRQA h9KH1qnukrmB+DaB9nzzE1zyOFp4lwNg1+v5sG1ApJjMxYSFeTVmSbBpYo/solZa9j/KrmQ5 cptJv4qOMwdHcCdrInxAkawqWmSRTbAW9aVCvyzbHdNuOdT2LG8/mQBZBMBMquegbim/JPYl AeRyq9qVycPJICNY3TAM5M2nj/S624o8DBgLed1xLVqu1kR8WxRQPqg/7AJ+Qp/djem30j5N HoZZxnZIV8nWDEqkF7deQCcbakwX3xwpF/+WE84u/Z/++8t4S0MIW/CRluiVGUtLjdiZpZBB lAVm/jPiXxoKMKWRsSTy6/N/vbqFUMLbDZ21UVvTnUFabwV3MhbM1Cy0gYwF0Ha2QBeUDIcf cp8mDGCb+VhQSA8Hm4e+w7J5srUWAo408ejSpZnHlS7NKBcaJkdWehH59fZTkHrM2qNehm7i TJ02NdaX0jZGMcg3IcM0oK/ATDbG/t9lwV8H68HS5KiHPNjYu4YJj99+kI0WXugMNHZ/LDOe lMpt2w43O07NyE1iOlWM9lI/Lcur6WuBodHEH1np5WmUFEWRY4g2mMS0QZTeUZYJjbAKP9HZ 0e7G5EwTmntyE5aDSEEdqSfcHd8m3R7eFkKNboshoD6tyz0I3Gdq859Y7FDgE9VVEp/ocmuc RPBtZI8dZhInTpxVVyqJEbBfb1ywGG4n6GbohNvx3JCtomSktVYRGz8mGxQNJlJOHHGYqBym ei8tqSYEZMbYS8JwiajhYRZqAiC/bONRPTVxoIBnHkImunvgmVNEh4LU2L6nCGJeEvvLJLHy UZwSmWmNrXZkSeKE/DhNkw1ReVXHTbYEoNsjPyYaUgG2izITCmLKIsfkSMOYTBWkW48Yyc02 jFJqzOzFaV/qNTZam4uT/iOVRj/EHmkrO2XfD5sotiT4w6Uh/S4pQUOYb9KagHfrkNQRVWHH dRq6rBYwnuXPhlbPxN5SD2YTeOkrZZp4G/rKvlKaOKZgYfv2jE45utulYmw7qS92ouq1juBK IcwPVEgi2QnbrSzFOe7bdd3mYmBUc6bv+KKQrD9WT+TE61/1z0r1FtUicKcyVN3RH6lyvEK9 uMNKmQTGkJnv05UDGpV8XouG9mOALLLNYUmWcOaRO/c1ymKYM5mf1IAjjLzrA75G/Glp95oF QZbpc/ryXxcWwycvuYi9fzFFDPUfh+IG7ZvIx/YinqzA93dIKz7dlHBTHnGWWG/edz51ebc4 01ye/37549e331eCisp2N9yTIRtE74Akj9nzIan3NA6KlY/1wZr41AK0MUd1rIZcMD43L7CP o30aJZ9rGWzZM6MOIJX956rqUWxfKfr4nEKkW1zINPtjPCR+tt7eGD0lvF7XmfpyOK0VTeSf Thh0AdrDLIAozuKIztXdhpo56qpBHYNVhtT3fKap8YLQyxYZyw49st2GnLFN2GLMqaHL6aFy 5ytPfUsVf5q7WzhhjVnfSXDC7s2ZtcNQlnbpqiT0vFJu2UpXZYI9wqFQLa5EQ5b6wc4pExDd Ihy6te6UuR/ca+Y+ldI5oyocHMzdb45ntxNGAATMq11M6JQsTLwFMYVzvZts3p34IaNcbI33 vKtMYbpNddOQLOgYkJngUNAgPezcYgE9S9Md/9VmROcKomfXz4uWhvFZdtdbHq6Pz2O1QY90 XAWOVZ56OP/J4qDyrgj8Me/pivGnfz1/f/11XsoxXI61gqNdWb5aKkiwIwL93JPs3l///vLn 69s/fz/s32CD+PbmXH5Ni3AHy07VlLBVocBAjVN0QdFKWW3niL7y7duXl+8P8svXLy9v3x62 zy//+dfXZzPMkpTm8y8GzcKgTzYJKqAC9hipL1Gry4C8jUJ1C7rtq4JUflOZFVXrJm2lMjHQ wxYZqprTM0Z4ccNgYjpiEBRSWSpwRbDZ+Jw0G3PPs80bsegd5brt5e3Ph+9/vb58+e3Ly4No tmLuG/zIOD9jErqx8oroCwu3ziZ3QJLulhU+19JJcaoXul3NmyODOudTjbltPytR/vbPtxcM 3sqGm252xUK7V9FkzCnhISzyIYPzFf2wqRhkmNKhgkcwMO6Ou0bJmc6jjuIUQ5ClniNUKkT5 M9nV5dWJcTGDhzovaKMG5IGmizce8zChErl2gcfZpqg2ujv3WRLtKxkTcNR7Vd1RgiRfo+6o 6WoEUxsFVicxA+G8ndxZqHfTCUyI3JJwQfNjp7vQ44B1UWUQqbJOEN/GhyqJYLvorMimhwF1 t2SVWxfsSIWEupp2WYSp6XPPp5PoH+8aciQzGgJz79yIsXqe9xMclvgHWG75YbjwPaWZ0VRO qT78CB+niIdsv4jjZ1hcWjaAAvA8lk1HhlBGUF3TeU6va2JMEK0LPdXh82WYPRDUPVdAXyPO DBmlgD3Dm5BMN4uoi6IRzjYeVZpswzi7vOMb6rpsRrNFokMSbmgFAgWXx13gbxt6LJSflR45 daug1pbxJtQg4eHJpiwvUifK6BzQkLZGOrPJji/M5Max9taq8EFyimoaxns9pyr61X2R0yMc wrhk9CHUTkeWOVlkWUVpcl0JuYE8Tcw84Sr08SmDcU1dcOuPTd0tsb3GnruliS3andLEdnD6 dtIz0KLn0Hx5eX97/fr68vf7KIYirqJJKq+YhA4mMriOTTSR9nylcnXes5BmeeRxRhHidRdu IvodU8NZmnF9OKBa5clNsRM1HHapW8BOJr4X286plG4F4yF18ovCZT/rZVgF0PQNv1SNmhvc 8oDVUsoni5actU6WqS2WE0XPGK39O8OGqbvBsC4q3Jn4cQEssCWElv7BcKkjL1xGq51h1GEh Z+Ol9oM05L5Uo6YJ43CxHMyGwFw5ly4fFZnT30OQUzBT8qGrb2QQl+LfBFgav1rSjtLaNBdT jdDEvq2WO1FJpywaxD1p+QnuRWz9AOZUhUY49BfiGcXCDw99L+lWT91VLhrprns00vpyj3fx lvudieQqpM+Adhl/butB7EuKAa09T9ruWJ60xq1x6Thx4VOCekm48xE1nNkXopEDJV5KYXiS ysxJb0BFHJovfAZyhP86utjjkWm1rHpjIVMeh2ldtP4aDqIr6hYwReBVNWamxeM+wbN8mGaY EmrrdVhCchCJTWCryDoYdYY1hpo4wjE5JrvPPavPiD7UrCasWc5xSPZSJetN6JG5ApQEqS8o DBbOxFbcNDDYqVNawnGYPuoP9bZO7ao2C18Q2AWpNddhsdUzDVCv8+sJ4GN9mlBtRJ1QbDQm TyEWT5ZEGzaBLGGintlccC75MJuNeS3gQPTKsVQoMLDxNG4LoTZu+RO0ITgykRCce3yfbo3p oLFa0W53+lzq5YpK4pxlHulB3OHJ1hJgxDmD60Ib9c8chG4wxaUPJh9xcdoNM4sMmk54TLsi KBmVXIMrbrI0WR9lINzFfhKSPWtI3CQWhAnT5lqGZnwCumwpLeO6bBmtAOyw+eH6TmGI2wwW cfWdhOCluIE+R+iGYFWxLRYtE81iF0YKUap9jmmjOg/u35//+gNPgYTBvNhTNwjnvUAz+rno IwEXC9jFTvJnPzEeqACUl2rIMZgydTtQ9KZTsr5BB7fVrbAdjCC96G7idKXcAthsypiHNDUz YTje1zvUNLQzf2zkaDG/pO+2JLTboqOYuxoIBbbnsldKJD/7poMfZMDg9DfooQLk0L5Bk0Om 4PuyuakXA6Z0HDYbpaJc/vrt5e3X1/eHt/eHP16//gW/oVm0cdbHT7T3hdQzVZUnuqxqP4mW dPT+NIAItLFNYRDuRcH5zUBYNAWMmsXAFHn38G/in1+/vD3kb93728vr9+9v7/+OxqK/ffn9 n/dnfKgwRyumdWxP51Kc2LyqjU/JCqqd9mXjlvzcXPY7ej1RXdKImDkOIXwqaK0MVWnm7UxN gL3YByvp5lXfn+TtEww5pi59LnpUuDgUzWIafWLC6yC2bfMD7WxRtYZ2R+R0lsHQiWN5V0Aq vnz/6+vz/z50z99evzoDTDHe6rMZDGamy6rpzBe0GamOx7ZGHxleuvmcC4rll6ICec1Lvab0 YisKspGBjkABp5aNF5EcNYB7kOtCCoR/hWzRmdL5fPW9nRdGR1veWGYlkzI8CGozIXkzIbgE YfnrbvUn3/N7X1496lyw4JZeFA5+XZqOzs32xji1FZzKhzTNNmebRz8UU9/dEau/53vE7fuX X39/dboe2g7DvF7hl2uamY8/anU+NVu1ZRRmDD21TsJgwUC/beEucA36Hz1UHfrEKboriqT7 8rbNYu8c3nYXtxlxoeqGYxgxYrWuH65ZN9ikk4DrM1gI4acCDmcEAXHjBYtVcGjlodoKfa9E y1GKrboNuy7yveUSK4pzGvs+C8D2WJgmrBYcOkN5Xh2WxJs4bKnEJrgKJAWLPu/2J7feKigi 1Jx5qlA9eJU7yneSbo/jkyUijIRRTNhWFOIFWfjJ2dm1m9pFrxQr63vvB7ToPa7SKyslj0lx FqTihSpktZ2dnqlptXt//vP14V///PYbekdw3fburJBjkwSh5AkiBxBg8qaw45sB7dgO1c5q GSAWzFs4QErz8lxKUqg0soKfXVXXfZkPVn4I5G33BCUVC6BqoHW2te1laMR6jL9VXctawk5w 2z6RLu2BTz5JOmcEyJwR4HLu+vZcwWqwLwf883RsRNeVeEVb0r2M9YYzcbU/woIFsjelGTyV su2kVZCi3JV9D6mbk0sJnvlpK5ySSVgpYcRwhWgEvt2S7luwF0X+6HgywW/gg1GMlE5uQ1Wr 5oFptlQfsYbpH5N/J0LfGLtSyS9cqbuGvjHCD5+2ZR/QcTQAhvXHKbKARRranxa11GCTAwtC 4zJWojgKcPyzXzqYMdUi+24De5ZZRwAiA2oZ3e8Xk/6E+ZUOEc+l2VdnFqtSxjIHsLrMvDil l0M11lwTUCtT/gSAvTQ8cQutRjlI0jcCiCwWWQut2NHHrdzYrmULK0TFLouPTz0Tm3J7C7lt BrNs26Jt6dsXhAcQMdiKDiCDcYp2akrQvsLVPGMThdNDw0WiBlh5y6SHJGzzt/11iGJT8MZP CNsc1drqZYUdVCUKpm3DlqTZQtswOlm4xGHQYnkoSbeW2Dqn9vbobzx3Bk10bp0ZYXcm63ML M1clzFVbdQSpTerThnTj2nyr82LaZecGRWJeCynnENn3VBGro53nBVEwkEZtiqORICLtd+aj gKIP5zD2Pp1tKiyim8B0+TARQ1P2ReJQtEHU2LTzfh9EYSAim0x5DlO1TcokbKimVwV0jmxI g2NTmGx2ezuk0FjN2PMfd2w7HK5ZGBsPbXPDO+27wGc3MPccjV5TT86rHduZRu8zeel/YsbQ XSw9FYxkm2wT+bdLXVIC4MwnBZwMBZOPVq1c/R54ssw2prWg1KPTnvS8PqoGf9NvZKSfLqky qKcrT7DQhum3Lovjj8rGqRLPqZyh9dK6o/PYFonv0YpdRtX6/Jof6R0T5BI5CFL2RTm1dUS4 EXKvguAQTtVCtqejGZ8A/7y1Urru2i06KsHDfKlM/XQrlWPh+g5GUpc3C8KtrIslsSrzjRkj BelFI7Tvt2U6svy0mLlI78WlAdnIJv5i+XCYKGOoIctFt9RVxptem9jAmaRHaFlyTby3ukGG BfAExaclkYlPtRrVTYAfeqJNMZYg6onC/t32Tnnwfh629kL+HAZWc+n95QZ7NKwxTvPA6Se/ 7ZyUzmW/bTG0O4A8ht7RndI5TgEn0vQR1VTX/nTk7QUww7tfQXt03OR+e9otRsYJ7dN6YsCc mubJLcCdH3uM7Sn8fOyNyRSWKSty4hDUbtjd3NquDtUVALCxmQFTRDEZLCLfpDe8KcvdHMYQ 5sx3joGCSqrwM/t13IZrGTI31SMccf49NF7FUUyLvgqX1YFRY1bwUFVXJjrPHVZHWsbFOjKd sozReptgRs94ghlPuQq+MPGjEPs8hCFz7EF8i1EFWTQXnu/Rp1MFNxWn2K3G0PUJ5Bf+axkF Gd8rACecd8njaAvCt4k2FVHXhzzPcN3xpS9EX4uVToFVdQ2uxdPq5zp52kPTPXke1snzeNMe mXA6aifhsTI/tCFtzYZwdSwqxnnrDK+0uWYofvkwBb7npyR4jrXgZQa+ugCOPCuZHKUfpnwH a3ylENLfhPzERDjh4UXoNQs9FJJfsBDkVyoQZ3znuLjEVwaeMvrIrny7TAx8ER7bfu8HK2Wo 25ofwPU1iZKIieamBZRSwomfvpcYBS02Lg3AxyZgXLXr3e16YCLFoGxYdUNVMHaEiDclE7pz RDd8zgplFBO1VMAoZiuwkqnn81uweok8V9uVdl27JFISVCUy1l/wjH+wk6rLnFbyK8z5GjBq nog+NTvKIvdQ/KSUACwHDWqujMH/OOkYPVX1pdK6gDb8XP6cRE7DkTrIuklzRz6ENJRQZYcJ GpHJ9cXaiaRVoQLQKmshYSnjQ8cE1N6QZvfvVbD0aCHf8getJ/Hb2/vD7v319fvL89fXh7w7 fZ/89eZvf/759s1gffsL1Se+E5/8h9vSUh0AahDGuJhPBpMUK42qOWS1bBvt3LqodgsBfARL J+EFU9Vc8U2SC8yh1rdAoqJs4HtuOy7S2i+LCESVQnXkMe2whCjbXj0p1zX0NPCsZ60bgs1H o5ZrFCufSg74HN7qGE5H9M4jFucAxa2MALdXvHRKA3+D58MNXocJZfC/3tr3b/sh2GQ//MHT kCt1RXQE/f/+JvZ/9Bv5WKuogsnigxUbKFjecRY+q/mxcGs9ZXAddt0eDTasc/3n620oSO/m U7nwHV4vOtPLrjqgEQE3zfVmOsS5WCFOt9NQ1cRqhJifmpoeNnJlkcSnhsmEcVH3XDbp3iBM aOp5AYE8Rr4Z9tugxzFNT0zfmiY9ItOPQ9Nb7p1e53ESEAlth5vM2yU9l2Fch0QOGgipttNQ tNJsmiOmP46CmvSCZ3HERH+OwMJkz4I/TploNgWkTGWjICHD7BkM5nWtRSfHnkY+GHkjk2Mv bqLXa8YaJRl8YUSZAcwMcViHRPHhIAsicbwElK4MM4NLmfohMbxLmYU+0e5IDzKObptGORg5 IfdDk3hkm6OOHYZg8ULKbmHiUntFTE1chWxMb4kWkhAt2Mgm2/jJ7ZIXKqbjIOolE8hUfpKR RUYo3fCGZy7fquSHXNAFmWByUtgHQ/LOxgxKwGM/+J8fKbDiWy9wX8NCRqwCuGdSYwnpIdmQ iKSpm92CTe6HOqbVMO4s1b4RcJxd5j4h9Ji9o30Jv5Cf9zutfMZNrUmOdMmyCRJqBxoBep5M IF1Y2UTQYAQwCMtFvkmPiQkghwok58VLAUKDkEG8dnbUPKxBg8mT+pSdlcUREKUbdmKTpRsC qM9h4Ikqp/ZRA+T2IZPlozF35w39lZOqzfkBnwxFEKT8kR+ZLk0Wkza0JgNVfaRnRGMCPfWJ yYp0aoFHOjW5FT2lWhWRiL+BmlhIOxKLga5VSm3hik4sNUDPqE1C07lxMaLrqx4aunikIIII aeJlMRArAdLTiEsypTwPmAwZKcZ9VufSTdKRmsQT11GcsjjyqASOHzxR3HmCNUFz6ATIzZ5w q610VtSzIHmgmGESkPmJAPXyvO9Fd5hQ59VkxqcUmKJfTdnduILRd0NVsTyoHexw8PDn7EJ7 6MvjfjgQeQFbLy5zViedjJGIE/dHom+w56+qDIszHPKLCL0yukURec/cUCiU1fBQqCRDryno hFdddoG3Zf1oXiIgDa2w+ieXVsFfDrHr26J6LJ+kW4FcmZMxxcifur40n8GRCA27b499ZT/v ztSbHf3Zyq1Es6sVuC6d8Mkm+BnK7/Zhs616t2N3pno5UuC7oT0tO+/xiVK6QOQiam1hb6b7 1DsGYUit0EOqm3A18L0+XKrjgdQh1kU9ygrGtJtNnTsO9BWxLFzCsT23Dq0FAZwYuRP9Zj8R URzwR2c0xp2+s673kNyfmm1ddqIIbmQMcOTZbyKP+PRyKFERnA4dXuFjwr7Km/YkF63diKdd LSR9kaQYKvS+1u7IaNiVesKD9aR8WiR8qodKjRw26ePAhJMDrO2HkorbrOajOKJX5bq1V1OD vDZPuhKOVE9HSvpTMCwAde6MjZHomBiYyF1dic935ISf9axxaC6Wmq6G2qFlUk4/beh1qoJj JZO4FDDuHu1qjUZWDrErS7SLcHkHHGKw6pfOkgYpdPXJIfa2gpVaAvqyPArJrpeyEf3wS/s0 JjZvkgadH+FD5c5dWINk6U7y4QALxP9xdm3NbeNK+n1/hWqeZqo2O+JV1EMeKIqSGPEWgro4 LyyPrXFUsS2vLJ8Tn1+/aICk0GDDk9qHlKPuJgCCuHQD3V9nOq3asFp3nFGpjZpmBB7ZwAbZ lMzRX3IXmlLYC26SZAXprAbcfZJn2jt8i6sCd25HGTTp282c76c4A7zoVr4oAijGhgoqEttl WqKE16QiIZJnq1rAhs2aYhUlDQRBcOVHBndg/sBXF4gCqHsVsmYVodnLeUQDNxK8tWsfCEHD FC2jp5ff31+Pd1wLSW/f6ay2orAV7UGfF6Xg76M4oeOpgSsz580MARt1uNoW+ovg58P5Mh7G nYvmn/4tgpoeodnvo9vn+1H9/nL4FFFvUt+UcdRsIkYvoFDVJhV5XiklabNDyxj/2exWNKxc pqIMZZHutFbuKvDiiqXcdSWW5KEP+HVSg9K7oRMBQT1tMLpEY82iP9n8T3hktIJE6GSK3L5o eJzNje/T7GYMDTxRXbLI+ENkU4HfuewbitThOTPIpj0x4YdlIvU3ry4zhAGCxIa/QuJXRWou pAuiNKJWcpmspjbRjKuSdaK6enaU/gMr+TzZ5Xj3g4C/7R7Z5CxcxJCdaZPF1KO/8tG6wsSX yOj51Qt9EUpJ3jiBAcOtE6y8KWVo5vGu22Q7JYr/km7uFK0RKpLGmVWw3edcxW9WO0BiyJdi txGvBS7ngx4Tjw3BPWVpUeajQ+0r1dOpGmSloAkv+zFFRHtUR/Zd+hRN8PO4drW0gyp7Vw1q l/krbZqqJZMVLB3gSbYLEA8pu73nenoVael5AnYny/DW13NJsKgrl+gdTvY/6B3wiycjzTsu OtZvB1G8hWSGSTqoTfSRZ+xrYPuOPlh0XDhB1KGOW2Jk2S4bB57+bXbZoC09cIqpNbO5HWBo PUFu75mZa5PH4LJfasebDjubCK/AAi1wkqnYOgoB5kZ7uTqNvKmFgwFlaS2E0wdfl08Z76eZ X9QmNArBXtdz2yfXHNlTzLEWqWNN9S/aMuz9friCCL+Uvx6Pzz9+t/4QukK1nI3aoJY3SKxJ HcCMfr/qu3+oS638kqDg04qq4A+zB6tcgPcb9C0kLwhmw0S90ND6fHx40JZ8+aX4IrqknbDD KIoBPz7hGqZydBHzId3wQQqO/SyqNjONdVU6+5qATlRQ1RHOLA8EPt5cP7CCltOXATyxFxAF zbNQRlggu+VKNaDMc4FhEDv46kvHqWu7gNbjLvJ9Jo/Vo0ng4tzeQCkU80D4DM1VnH45YxNO 89ERL6Q1gmZR4+IrX2TBBuCFZ8uMUtyuEkpbdlDgEDy4pZM1dc/QUMcrtmlkFX0vRjJBPIJr Yjc5V5H2+utcu0jDO+r7vanCZK6UPtssOg8xxTEFSl8kKM/ETlCVE9rNfp4wbrgroxcAm/Dp wtx1J+rdyJqNLTXVqvzdiDE9/snXQo0h0qp97mNYokW4tOzAd5VxfaXxd6vjz/a4HwcZ9FSU JA1uVG35a4R23YLZqD/Bi0u2SiNXhegYD5OlgsRVM8YQtKjkyuycLe+33xTjxOClDfPhgwgO Cc/TfcXt8cy/H2VItTA+9EhrmTPwm1TPFFu6iIoaUCGnPUns4Caa61ohNWVwv3o9/X0Zrbi9 d/60HT28HbjCTGCQrbjZV9HWqWQBlHRJI2qwOuSjW7Hd+GSN58hukRRjfFHPlvnt+LwQvqTN esZHlBt8IMa3XVVyPKgyS1hEfU1dLmHhr4hB8pFfEAtsz2tIdIJWYC3/alsBgBFAIoN5RKSJ Tvh4fb3cPhyfH/RDivDu7sDNn9PT4YLMgpCvEpZvq15qHckZkqYDkttnfw+fbx9PD6MLH+rH h+OFKwR3p2feBD1bdTif+GPKo4UztOyvnBJYBlFramuiNk7FrTaqa9Ffx0/3x/NBplZBzeuL qSfI7acl6FZ2R9b8RuR73r7c3vHqnu8Oxt5Q3kPVpcVvG/2euH6/H4im8z+yQPb+fPl+eD2i 8qaBg57nv93r8/LBh3c+5+9OLwfe5ufX03A4jP3+q+aHy79P5x+iI9//czj/9yh5ejnci5eL yDfimrbT65HHh++XYS01S+2fk5/9yOHf41+H0eH5cH54H4kRCiM4idRi44m8B1c+AZAoi01y ArUbgDDFhEB1amwJ+j14R9YuwEWrq8Pr6RE05F8Y8TYzAJUCyzIp9ZJpDUd1p9GOPsF0f77n Y1ykrFJXCZZpjgUqc78cvg9X429/vL3AO/AXO0DOpcPdd+SDLlfxZnDx2E61+/PpeI/1oFUW U7eCCbaX+U9Q+uuYa3CxAVwaZKKw2ooEX7qUKrPa5GshoNcgcRkNxXfvNivoK/DuEK6H27oq jMuc1iSXrAEPZdAuTBtBBs1K180+zffwn923ij4HBIAR8hYsK1RFEn5pqSiSrIlk8PT1s3Ba Hte7oqLO54CrBZ+v5lkzTzIbU5An1hpiY5SVbFnFNzN8l9KSGnPEYScBXVaR18mdRAewNagQ XxR0RA1eqSdrST17clHCldoH9Xd3uoNnq3D3wWPbZFbp6Wv7lxYgfnP9kuD/d0YvsM9mxV7g EJB9XSYuieqwD/weEaQhLMswiqvVnL7hBL+IJg3LuqBmJzcWUsgunRSqAQlE+QiaVFK2CALD 2rjYfElqbowNaxuIiPzNhqvRUlj6NO4NZL1MqjiNDQHnZY8++UEj4AxkXYbzQRqobt0RN2QM oqRwemlpJWdxnhY7c2d/2ECostll9AE93FDWYfVh29sz/lndVIt1Ykht20mt+AuYmxFl5Udp taJVLRIgOwv6yqY9M8jr8XhsN1tj/i8pJ5xOtqZAOymzndV03HVbleFl2gzMWWROOwTQS1VN d9a+sLwm5usbjQbV46GaP0on8tVwwyM8l5qlKfxKtr8ygN62h6lw6c0peRzRYuWWj/3ko+8J HZQYvjjbVAvIzsFtdYdbaHVtACTr5D4Uaqvb5EltrDBL+eZaplekI7q6JI1DwKugpim8D5z7 oYW7Uwnoi86eXSalsk9FK76zxX1TmM4p2HU51Bl8xqLNvUtN2CJxI3O6ZaUldfrYcfknqIvB Y+uZcAOh3Uo6wXQNeNp8q1xvVHcryEoNGk1ZxSXan6/aTqf2t6GQ0ePp7oeELQRLQ93FFA2J JZ5jwKfAUhYdd42FDDHpilA0j+KJAddBEzNlnFPFGIAl8kH4j237IAEA8NsETP9UTG4A41BE TIkRVJE9fRiriiSRIRhbEdpGdAetdtyu4vsb1rTkABCDgp3ezlTyU14oq/gCE9iqazSnxtta p4qfDVSCJGd8Oegkr2uniAAuE0OA9kqiAPG97B8EsnpjiBPoJOqMhkaPW6QhCESg17IwSWcG 5IeEd/nGmF+gOjydLoeX8+mOUhirGJyDAEZo+ODL0+vgPAkCNH9n76+Xw9Oo4JP4+/Hlj2ua 3jkW7vP4QtizVtDxf7K9Rld2gHyfNKwKyYBO8KXGQT3g5G1w4CyFMruoSKieeA/bXbcuxT8v kAta3o5Q/gJSHJIvCoQqY4HDTGMtXb+Absm9kuO4U+rUqxVTMt0MGI6j5jS60rXcMS2jqoPp xBm2j2WepwbotOTOCUmxN/moUb2YE5WZwPH1ZrFQHduutCaaYfJ6kSwEE5PbSzrYjoiy5H9V 5CvlmYGoSAbGt1GYgK2IrYqw3QCtrCVfS/yH09R96rjKF2gJ2FbuiCjOaZaFlnoVw3/bNvod Wd5Ymis0FVeCONrp5TzUzkp7uoNQzbkeOMdYjpJERWcKDs7IJfqubpvghHsD2Ot6z+ZUiet9 9GVtjdUY44zvNqqjSZaFE9dD0R4tyZSauOXibH6c6Pu42MDF4I+cNPUMCojkGbJl7iN3PDak pN1Hvk2mzGJR6KCUCaxeB45lY8Is9H719L0feTKuD+zrOlRH5MT2ffx7amm/0YHqxJ1g+Yn2 /ER7fjJF9wmTIJig31Mb86c442MUWbxDLFh0KW0UnJL0bLgy0TVfsehn4nwbp0UJV2I1N3Tw ocwqCVyH+jKrPQoaAwSq/V6vOa0j252QbjrAQf4wQJgqXQGr+9jWCJaWRkvSDOkhOc/xyczJ 4X7qq63PotKxUapnTnDVDO9ZnDffrCBo37Cl5uFmEqgbBKSTnUfjwIqGNIeQc9nYtnSyZVtO MCCOA2YNq7LsgCGHo5bsW8y30YolGLwIMt2MZE6m6h2MpAV+oLVFpstF/QApItLI9VzlXbYL 3xq3YnJmPr08cqVIm4eB4/f3OtH3w5NwHmaD65g6Dfl+tWqPifCEYAGZ5DAJv+r+DttvwZTy 8hLbYpfevj2IwsfHhETX6tXxvm2wuHeU1pzitA03z6wvVu5NUnVkZfdg/xDeM1jZPkc7jrf7 Ci6a5qF1XuO1b9raom/PF0Ur7a7K+Hp6K1dWejn1xj66RfK01GlAIbdaznBttEJ6rutrv9GN ledN7Yrb5CweUDWCoxHGrtYk33YrQ1AnrEc+vkL0/AA3bOJ5+DfGKxEU+l7O03cFB98yBwFK jFMWtY6Zk/m2Q6aC44ubZ+Fl0wtsvNi5ExUdAghTG+3ycvJqHlv91fr929PTe2unDMasDMMU 2KWDhxfnw/++HZ7v3vs72//A7d18zv4s07SHhhI27xKuQW8vp/Of8+Pr5Xz8661Nr9V30lQ6 jopnyu+3r4dPKX/wcD9KT6eX0e+8xD9Gf/c1vio1qqUsXOeqPXx0M6x8V3E3bBjOwLMcdJct ST4eG8JrgAwK5mpxxVwP6bxLyx/81vVcQcMKXblxxih3sSTo17vtgrC8qYqhftrJ1Eu+R/Y9 tTrcPl6+Kyt1Rz1fRtXt5TDKTs/HC17EF7Hr4gBpSaLmCNhw4+FuDzR7MK5Wb0/H++Plnfxa me1YtN45X9WGI6YVbLgGTPBVzWzSn3lVb9R5xpLJWEWzh992338JH90X8BZ9Oty+vp0PT4fn y+iNd9nACcEdDwaTiw2kRBscyXVw9K1uqfRit872PlLmtjBSfDFSsIWOWKRloUpQu07KMn/O 9iY6uYt1vEF50B3YfVSlXi1l0gkDX8yEKen/Ov/CTQUt/2uYOoDnQImXczZ18KgVtKkht9ds ZdG4B8BQv3KUObYVWJjgoEWbUxyb0nc5wx97mqjve6TWpCg6LfJ9VShfa1naYcnHcTgeY2i8 TglhqT0dWyQyARJRwywEBSEWfWEhwHqqNVRlNaYDCbqC+0iLfg+vPHUf5euH6yJzsihr/rUU kZJXa48xjSWWpZ5lcJPTcbCFX0fMcS1qHROciWqwto0F3x9PzektCAEmuB6Gxdkwzwpsyi9j G+UpfrdtnKX+WMXG2Ka+PFqRLo+3D8+Hizy6GQ0doNYt8oT6W1V31uPpVLWh2nOWLFwilxaF bFgwVAm8e4VLPvHQcUTkeLaabKNdH8SzYuOiWRA4+QGb16qz++voLPK4BWxkDABDNDblMJW9 PV6OL4+Hn9pxqrAUNkPf/eT57vH4PPhQv+YBBYV2SPDt4R19Zt7hM1absqYkFbka1gVwDlGO A7EuccMWjCoEKVkvpwvf9I6Dw0NupQaqOgwarBtYOkHVcbkGazmajuuphLpMx9J8JpvA+07d eNOsnFrjq7JTng+vsEkT02RWjv2xis45y0obb8/wW9fVBG2wnXUL7yys0K67Ksl8MVzTtixV kRe/cVUtTVMLU0c+eFWtmOeTVjQwnMlg3mioGiqV3MElB7Wi9lz1K69Ke+wrD34rQ76/+QMC Lr4jKiiWYpt/BsfJ4ddizlRAG7Zf9fTz+ARqI/gQ3R9fpavq4Kk0mYN/SFLHzVZdyKsFAhLa Tz288YNAMBj99eHpBQwbPJxUHTfJGoBQyIqo2JhCd7N0Px379I6TlShPsvitfMGaz051exO/ bRSNm9d09PQ2iw2X/Ch5EP8hlwBMakc3JkJYzKJG/gRATkvIR2KIqb0KEH4MioyI21MPGUXD eH+oBzvVV0jVqmxskEY5EdiATV59tnrBEpKwaK58wkuSLy5RQkfdAVRDCE40RYQgBPlsiGu4 iamrIk3xAip5Yb2a0BDbkj+LqzShXUGkwDLOkpzuPymQZHs66Y9kp2VkBQZgMymRxczgjCL5 PfDvBzKsiMA39CMJgYP7AR/uRj/gA5DdII5Ok/l2k9Po/m0R8bIKm1mZUd58CzU6n/9oFuE6 1pxQgMx3w20SUuDgwN1VsLzEcPGc4eKuPi1y0VrdjNjbX6/ixvm6RnWI35yNxmeUNesiD+HK 0jbCLnA6+Dg0dpBnzYollJaGZKA0NGM5U149mHAXhJ9oRDorZxEK7OA/zcH0nKc58shOOZz/ Pp2fxPL9JM8dhugZFYYzrFebfA5JftKhi8DVhbtbFPJ5VWAYr5bUzBIoxuhzNSexYHK+kqqA 7DX+0af+UUis2FRRLG5vixTnJbpyV3FY1bM4pDyV5K16jWCUOpoh9qpnLw2PMRK6rGdnbEPX ZnDq6AXoWE2xUkSn57+PD298B4XYFaZ/ZZBRJhAgY1fxEoFeCWK2rCA/hTvW74R77j7hC6wJ mlVI6YnIw5TrzwDyz0eDdn8wYIm968pvKyshXZPc9vtjiwVLqDC0BRtaFovj+UmkuZ3rnkLx HA1e/rMpSBifPmMzH6AI7lR4IlezjUKJ5jM8p+ZZQqZ5BthhTSEQpCjMBR46BOTlRd7Ei4Qv n2k6kxnQruOCRSxpktmi5u3LDZEBuyZaLGU1pBdisUxj1V++f7JlwVcREZDCT3rgp/wP4gXt Cd4K885sJ67wK5eZv2nHpwVE7W2bMoR5ElaMMKDqw8P5dvR397H7g/h2DEDMitgeVJsq4t0c NzuA5ZIx3cp8ADd+luw5Q1FR4j14T6mfrKM0M/Aia3Ci6IS/GpBRdGPGF0lw878x8HlZcR5V NyVGpVuwPgF413ydkEjCIAh+EUoGMQK+bgr1ql/8hPAPCMKXpi942aJtDRLGtYJ80ORamule TkqYIjYlt65iZTn4usjqZmvpBFtrXlQrHyTc1MWCuSj13WIDaIVoDkacRLay2HKVMeSfYpiw I7q9+46SuDMxXFDHShLEB9WGXMWtxIqrfcWS9lXrZDqAm8HDxexLHHHlM2HDXbl8Pbzdn/i4 fzwMxvc1KaDy9ThprXunq0zQC9UeFkSI3AU8vUR6QqgsvlCl8ypWRuo6rnKUbhAvctzUGPyk 5ppk7MO6VvERN0s+OGdqAS1JtPFKlX94AaqoCOaFWSfjyRROUUEMeCd+XXjEPNRGx7Uzhcc1 pcnI+Cm6qjwqtVo4BbqAr++guidLfU4hsYRbTelw1ZBMyMs0pObwj6ixYHaTU/tCW1jGd515 QTyYk9cCkhfva6lUdtQU/+jCrz//dnw9BYE3/WQpQfUgAIDhYsC5zoSqRhXRwJUxb0LfcCGh wBAHqQmRWE1YxMOvqXAmJo56Q6VxLONrBQYIIE2I9jjThKijEk3E+6AhlB+qJjI1vOHU8U0c z9QrU3y1g3lkVgjcGAwaDbyEFTAEG+pmBj1r2d7YWDdnUqeEICMgLEy10tesqoT5S3cS1BGo yndxX3Zkjyb7NHlCk6fGFzMPvl7ENPR6Aa2J6yIJmkqvUVA3hqIAqaUqMhX8sSNHcVonEUXn Os8GHzT3vKoI64TE+O1FbqokTamCl2Gc4jzkPYcrQXTAVyfBTbI0zCkbopfIN0k9rFS8fEK9 f72p1okKHAeMTb0IOgNrfTg/Hx5H32/vfhyfH5To/AqirpLq6yINl0zBNBJPvZyPz5cf8uj4 6fD6MISnkfmGRRwD2qyFGZCCXbDl1m63R0z6nVsCsAwlXPXcsai78gX2DH320KZepq3p6PT0 wlWpT5fj02HE9b+7H6/ibe4k/ay80LVEkRs5yRf0mV6cC1sIdGUuCjm4wzqmzbVWNNuwGjDA yeiBBVciZWmfrbHtXk9DKm5EhwwOmVVto4rDuTTdmHKcssm5QjwH0VmRYgURernY5eQ9l3xT pHzx4sFrXrQWWb1ClHG9FaLrueKVhXVEnYvoIrKjijxVDBuBzLoLud0h374shGmi6vwqXbXP RYMLOAbaxeFaePdHpWKvC/xpUFGrrySxR4uR3+bz+KdFSckzbb1i0ISFQ/5/XYEnR/PDX28P D2hSiU7nihOghKs2nywFuCJB4rB/e1Y3dMx5rUUdvIMgKDlfDj55z2nyomF81agNx6JYGEB/ jQOlKrihGzYanJVgSZOGDd+oZfAOTRfwID2Hkej/NXZku3HkuF9pzNMOMJukbSfIPORBVaVy Ka7LdbhtvxQcpzduYGMb3W3Mzt8vSdWhg+oJMIMkJEtSSxQvSWQKAvQXyOi4lzfkbUI39UGA rIl7Yv9fIAWuA6YDMdcjewbnayK31/LL2ohq5n3ke5vTXsTnlSPjFbLIgd/9+Z0wwUHg8cTV 0NupsMby74Xf3k2Bld3JTw02CTRN5Dc21JekRJx9jhmYRxKdWY7pVCOCHeqXRyCSlcd4owCA zWtGaoypo9+PYYE0rzaMRDPRoUWg34Ez7YnFGRie/0yRKNJH8igrVniD8+1VK6Ls4fmHeQwL fmBfm68UJk6p0s5HLofnokkcNH8VC3Qq1sQszAZr9333PxIPNyLv5ZKPTfcJrnuJuanbK3OV tLidUbRvsY7mekkOt3S0kFE/SztBknEoxqbaXINuAc2TVJzXrT8CBVVZsT0LPLdpIaeBz8Nu YeUTP8yjwUH7gdChPa+/1XtWlklID+NQrqSsncCCvhqAF4tnpbT61+F194yXjQ9/rH6+Hbf/ 28JftsfHd+/e/W6ETrWA78BW6eStmXh/5OLx7a4LX8idEW42GgcirtpgnDe4QSjOOunD2aqE LekHRRAAJpcNIPnpjsuj1OApm2cuZe2PeexvELWa9RW3SNQr7DAwuuWkDRfum384o/FYo9vY 5LjuhLRaRAMKJgjTX0uZAH804D0Ekv+PWkGrnuCcw/83eCzYejoBg5KejFUT2BWefKhYIylG rU6r6LiRWCJbOfdS9UvkuGdtK2INQBqRRXspJksZ9Dloh9RbIUSYnzCzhCSoVWBBYN6njX+2 NvHTOhkged26eevH3XA9Gq2NY65OkzTIpqkaEBpftflsjrdKweo/Rc9HLPGAhSW3jxJQOM/d skuVg39Txnd8nh88mzD41q/EQAo07UvtFRBRE8Lq2lQszeTmpc60M8hho7oMD0Rdg2BEF2S3 0ZxaRYmQBKPltORISe6H20g8fqhbMZiQ2o5tIYlAlChMqmA9GJ/r357JV+22h6PtqMtWHxmA MrZbIkzrZAFYNP6yNCCQggwf4dmNs4PI+QJVODA4LUk/XcxizvjROJ5M3iZ9UfvjBL+2RD8z r/l8qkR1BWSdeSOboBQLSB1gpLpC+P30PXtIS7gGTNKMTjTdQevc++bpCubUovIj6/M/Lyh3 L1qhvEjD9Mh1OKspdcGdzeqJoXOa0Ge9Tr67eLSysCed/I1yIAcN2BMvuDpipBX4aCnoaGgb 9zKx7qngv5kPZru+j8C11O4lZl2FnWN+Pbv5EyG4omUfyCxFFKf6AnkGv3pQLRkLG7PeDjIV mJ+awuDfKoTB8+lRAZJl2VsMJEWT342RJ3aslDatQ/4OJ4ZaaE7ovw1/9SypemBOz/N3jcA8 SvOeLRUyJgfpnLJwuM6YIDggqmG+iM2o6Mvw4fbzh8XWdXEw/Wse1zt5om1sWZXyy7lx62HC YnfsL5nx0rrdMSP6cGxwpsFeWWNo1H/mEJffNdpKFIZE18M+gq7Dp+EVbL4CNwQYzcoNz+hW weppAgFNbT0V6nTMBPlrDIfVXMBcZ8lCMW1XWmm3j297vA/shXLHuoPT9yCeQdvAOBGBQttA Rgv5IsWwipWkMn6ckBnvQIwElpCRd0OSwaRJXbmPNxhbGfeN6oC0kC1dWqStfZKWD08SKnX3 Bd1ALGF4aNHEVX2nfRJheeEe0QkUhdbaWlhCGKxAutKhr7Jx4wNnRsXUSFElUutJy0Pw0XSP 5stv7w/fds/v3w7b/c+X79t/P23/+7rd/+by+jKPwnC4XCxmRp8YHZdtTnAe7/9+Pb6sHl/2 29XLfqU7MZI1ETFM3aUwr8Fb4DMfLkXCAn3SKL+KVZ2Zc+Ji/I8yq6aOAfRJGytx+QxjCeeI njf04Eiu6pr5+XFV1PYrt7GPNpCTS6MTvuDhiJVxwqmGEVuIUlwyszjC/UGOl5BY6iFRLYU4 yWP2qC7T9dnnos89BBoDLNDvvqY/PTDGdq972UsPQ3/4XFUE4KLvMmnWVBjhrSrmEg3i7fiE L2keH47b7yv5/Ih7AS9o/rU7Pq3E4fDyuCNU8nB88PZEHBf+zDCwOBPw39mHusrv1ufm49pp SPJa3XhQCR+BrpnvUEf0wBwlwcEfSuT/0LjzlzdmFlOaqZxGWN5smAVjOrm1jwimTSHvsNKT 5wtlD4en0C8ohN96VtjpA6ZOYSSnNspNwaQASHY/wAPz+23i8zOuE43Ql3vDu46oGFYFKExY zu0RQHbrD4lKfeZhxZrBNu4Yi4Q7pJ+RPqeBh5cJTEyr/MluimRNz1s9oQUI9sn/gj/7+Ilr 79xMgTUxeybWHJBrAsAf1/70AvjcA3aXjVNUYJIoNbThnyPvXp/srISTkvJ3CMB0rjof/PGz P2qEl0pzjo8s+0gxXTTxhQeMwCtKFcMSE2IpXuawmChknivBsbVou0DCy4WAuzY0qSjJbfiU /gx/dZWJe8YiaEXeCo5HNJyd3UmaMlJUMj3IppZlxwx5xAxtK8+wo/DgOyl8bttU7MqMcKaq nEPg9DjfbcA3m1bGkHneUwzb+ZL6vvJgny+4fZDfnxAWgMzmFD/Nw/P3l5+r8u3nt+1+SmnC DUqUrQK/iTOxkiai/FM9j8k4ca8xTsjGxIFKO8GZQOE1+VVhyXr0zSzb3jCBBmG/pHBQNJ5w pzNZG7JiZwpulmYkazBj13TsxIwvC6UVvysKiY4UeWHo/vpshjk8/kNGz4EKxB12P5710066 UKOjlIvvpUs7RDnlE25n7zEUd7qyT6HHo2B1L4Lx6EiVohnjM6k33Hz3bf+w/3u1f3k77p5N 0yFSXSOxUo9dmnwOfi14LkBK4zGvhEyv0cAPLWNw99KmKhwr2STJZRnAlrIb+k6Z92onFD4E wZChjnP6eCw/pCrrCcuECoIX2BxaSwVmCcAy6nWubKaMwW6FTWGB1p9sCt8+gX66frC/sg0f tHiM0LHBr4TJVSyjO+4ap0VwwXwqmo0I5IXVFJHiVY+tUmOz1KOKZsNvITBTJPaJ6qY5Nsek ETTR6OSJmYhlMTzVs+dlRIGIpu/teB5C8SWVC7/HtDAgCGwNQFBPL4BCYFpGKNcyyX2W/oKl v71HsPtvjF15MHo8WVuTN2KUYO81j1jRFF5bAOuyvog8RFvDUnjQKP7qwdxLTtNvGy7vVc0i IkCcsZjbe38fMsEl67jF4K22rWIF4ofkVCOsmBO+H7Ai2xqEcd3B2v8UQS8sEw/PK0pMcFEF yh9M1SBdgmkL1H2B1zCqNKUDQGNz1D3Y89bDumtDcpa5/QgEj9NMDyNJ7GQbzTV6NfyxQYt3 E/JQEm98k1tx/tgs+oCEHGdGKlIpPYqwL0hQOoUcSuAtfV3x/zqEGzOSnwEA --fUYQa+Pmc3FrFX/N--