kernel-power v47 -> kernel-bfs
authorDennis Groenen <dennis_groenen@hotmail.com>
Fri, 13 May 2011 15:10:39 +0000 (17:10 +0200)
committerDennis Groenen <dennis_groenen@hotmail.com>
Fri, 13 May 2011 15:10:39 +0000 (17:10 +0200)
28 files changed:
kernel-bfs-2.6.28/debian/changelog
kernel-bfs-2.6.28/debian/control
kernel-bfs-2.6.28/debian/fbcon.diff [deleted file]
kernel-bfs-2.6.28/debian/joikuspot/JoikuSpot_Bouncer.c [deleted file]
kernel-bfs-2.6.28/debian/joikuspot/Makefile [deleted file]
kernel-bfs-2.6.28/debian/kernel-bfs-modules.postinst.in
kernel-bfs-2.6.28/debian/madde.patch [new file with mode: 0644]
kernel-bfs-2.6.28/debian/mmc.diff [deleted file]
kernel-bfs-2.6.28/debian/patches/arm-proc-v7.diff [new file with mode: 0644]
kernel-bfs-2.6.28/debian/patches/armthumb.diff
kernel-bfs-2.6.28/debian/patches/board-rx51-peripherals.patch [new file with mode: 0644]
kernel-bfs-2.6.28/debian/patches/bq24150-sniff.diff [deleted file]
kernel-bfs-2.6.28/debian/patches/bq27x00_battery.patch [new file with mode: 0644]
kernel-bfs-2.6.28/debian/patches/bq_matan.diff [deleted file]
kernel-bfs-2.6.28/debian/patches/issue_12309_0.diff [deleted file]
kernel-bfs-2.6.28/debian/patches/joikuspot.diff [new file with mode: 0644]
kernel-bfs-2.6.28/debian/patches/kexec.diff [deleted file]
kernel-bfs-2.6.28/debian/patches/l2cap_parent.patch [new file with mode: 0644]
kernel-bfs-2.6.28/debian/patches/leds-lp5523.diff [deleted file]
kernel-bfs-2.6.28/debian/patches/madde.patch [new file with mode: 0644]
kernel-bfs-2.6.28/debian/patches/minstrel-aziwoqpa.diff [deleted file]
kernel-bfs-2.6.28/debian/patches/series
kernel-bfs-2.6.28/debian/patches/usbwhitelist.diff [deleted file]
kernel-bfs-2.6.28/debian/rules
kernel-bfs-2.6.28/debian/rx51power_defconfig
kernel-bfs-2.6.28/debian/u-boot.bin.gz.b64 [deleted file]
kernel-bfs-2.6.28/debian/usbdbg.diff [deleted file]
kernel-bfs-2.6.28/debian/usbhost.diff [deleted file]

index 55c15f2..0b52704 100644 (file)
@@ -1,10 +1,21 @@
+kernel-bfs (1:2.6.28-10bfs6) fremantle; urgency=low
+
+  * Update BFS scheduler to bfs401
+  * Add kernel-power 2.6.28-maemo47 changes to kernel-bfs
+  * Include patch for notification of free swap pages
+  * Include patch to add cache_file option to the nandsim module
+  * Disable bluetooth mice patch from kernel-power 2.6.28-maemo46
+  * Add Reiser4 filesystem support
+
+ -- Dennis Groenen <dennis_groenen@hotmail.com>  Fri,  13 May 2011 14:35:00 +0200
+
 kernel-bfs (2.6.28-bfs5) fremantle; urgency=low
 
   * Updated kernel-bfs to reflect changes kernel-power 2.6.28-maemo46
   * Updated BFS scheduler to bfs363
   * Tidied up bfs-350-to-357.patch file
 
- -- Dennis Groenen <dennis_groenen@hotmail.com>  Mon,  03 Jan 2010 16:30:00 +0100
+ -- Dennis Groenen <dennis_groenen@hotmail.com>  Mon,  03 Jan 2011 16:30:00 +0100
 
 kernel-bfs (2.6.28-bfs4) fremantle; urgency=low
 
index 79fc42d..ee2e176 100644 (file)
@@ -1,9 +1,9 @@
 Source: kernel-bfs
 Section: utils
 Priority: optional
-Maintainer: Thomas Tanner <maemo@tannerlab.com>
+Maintainer: Pali Rohár <pali.rohar@gmail.com>
 XSBC-Bugtracker: https://garage.maemo.org/tracker/?group_id=1886
-Build-Depends: debhelper (>= 4.0.0), quilt, sdk-fiasco-gen, libncurses5-dev, sharutils, uboot-mkimage
+Build-Depends: debhelper (>= 4.0.0), quilt, sdk-fiasco-gen, libncurses5-dev, sharutils
 Standards-Version: 3.8.0
 
 Package: kernel-bfs-flasher
@@ -18,9 +18,9 @@ Provides: kernel-feature-netfilter, kernel-feature-ipv6, kernel-feature-ext4, ke
   kernel-feature-unionfs, kernel-feature-crypto, kernel-feature-dmloop, kernel-feature-utf8, kernel-feature-mousejoy,
   kernel-feature-usbip, kernel-feature-ppp, kernel-feature-qos, kernel-feature-block2mtd, kernel-feature-kexec,
   kernel-feature-overclock, kernel-feature-joikuspot, kernel-feature-slip, kernel-feature-battery, kernel-feature-pptp,
-  kernel-feature-wlan-monitor, kernel-feature-radiords, kernel-feature-ioacct, kernel-feature-usbhost
-XB-Maemo-Display-Name: Enhanced Linux kernel for power users
-Description: Linux kernel updater for an enhanced Maemo 5 kernel 2.6.28.10
+  kernel-feature-wlan-monitor, kernel-feature-radiords, kernel-feature-ioacct, kernel-feature-usbhost, kernel-feature-framebuffer
+XB-Maemo-Display-Name: Linux kernel for power user
+Description: Linux kernel updater for kernel bfs 2.6.28.10
  This package will flash the kernel image upon installation.
  After the installation, you need to unplug the USB cable,
  completely shutdown your device, and boot again to activate the kernel.
@@ -115,29 +115,107 @@ XB-Maemo-Icon-26:
 Package: kernel-bfs
 Architecture: armel
 Conflicts: kernel-maemo
-Description: Flashable Linux kernel
+Description: Flashable Linux kernel for kernel bfs 2.6.28.10
  This package provides a flashable kernel image.
- Use the kernel-flasher-maemo package to automatically flash it.
+ .
+ Install package kernel-bfs-flasher to automatically flash it.
 
 Package: kernel-bfs-bootimg
+Section: user/system
 Architecture: armel
-Description: Linux kernel boot image
- This package provides a bootable and flashable kernel image for kexec and
- flashing via USB cable in /boot.
- This package is optional and only useful for multiboot or experts.
+Depends: kernel-bfs-modules (= ${binary:Version})
+Conflicts: multiboot-kernel-bfs
+Recommends: multiboot, kernel-bfs-flasher, kernel-power-settings, usbip, iptables, mtd-utils, kexec-tools
+Provides: kernel-feature-netfilter, kernel-feature-ipv6, kernel-feature-ext4, kernel-feature-xfs, kernel-feature-reiserfs,
+  kernel-feature-ntfs-read, kernel-feature-udf, kernel-feature-cifs, kernel-feature-automounter, kernel-feature-squashfs, 
+  kernel-feature-unionfs, kernel-feature-crypto, kernel-feature-dmloop, kernel-feature-utf8, kernel-feature-mousejoy,
+  kernel-feature-usbip, kernel-feature-ppp, kernel-feature-qos, kernel-feature-block2mtd, kernel-feature-kexec,
+  kernel-feature-overclock, kernel-feature-joikuspot, kernel-feature-slip, kernel-feature-battery, kernel-feature-pptp,
+  kernel-feature-wlan-monitor, kernel-feature-radiords, kernel-feature-ioacct, kernel-feature-usbhost, kernel-feature-framebuffer
+XB-Maemo-Display-Name: Linux kernel for bfs user (boot image)
+Description: Linux kernel boot image for kernel bfs 2.6.28.10
+ This package provides a bootable kernel image and config file for multiboot.
+XB-Maemo-Icon-26:
+ iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QAAAAA
+ AAD5Q7t/AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAwAAAAMADO
+ 7oxXAAAK60lEQVRo3sWZf2yU933HX997nnvuB2efz9g+E2M72IADxqAZI5IU
+ BiWzkrYRdbpNESyNupJGk1aVsZYt2qZJHVsbpZsR2ZooS0q7ZDTZJFdhVgLp
+ pk7NCq6CHZPMccAXjB3bwBkfPp/x/X6ez/7wHTmf7WB7TvlIH92P5/t9f9/v
+ z/fz/fnAZ2ONwA+ATmACsIBxoAP4O2DdZ9Tu/9v8wOuACUi+a5omfr9fdF1P
+ AT8CSu404VxzA91zEc96QUGBPPnkk7J7925xuVwCfAjcdaeJZ+3gp5EHxOPx
+ SE1NjXg8HrHZbNn/2wHtTpMH+OXtBMzjJvDAnSYPEALEZrNJUVGRaJo2i6xS
+ StasWSM+ny//2U+X2qhaJvIakPJ4PGrXrl2YpkkwGOT8+fOICD6fj3379lFV
+ VcXIyAi9vb2cOXOGeDyerT8MrAUSdyT0gA7I008/LZcuXZJQKCSHDx++NfO0
+ t7dLJBKRQCAgkUhEjh8/njsGsmlUfqfIZ818+eWXZf369XLkyBF55513xOv1
+ ypo1a8Q0TXnsscekrq5OWltbxTRNqa2tzRdQtpRGbcso4Obk5CQDAwN0nD2D
+ NvkrWu6P8MWmMaLX3ub999/n4sWLHDt2DMuycLvduXWTGV+0LdcYALh86NCh
+ uwv1Cerdx9m2Ae5eV8BAIE5xaYp3+3RePW3S/JXv0bD9ETZu3IhlWbn164C+
+ ZeSzaOts3mLIYNsKsc4h0olId61Ipy7SaRN5t0Lk3bvEfMcm//1DQwx91nT6
+ taU0umwppGuM/vmjSSqrplAKwA7W6DQ3bQ3YXFwfvUFXl0VDbRKHPl1PqVtJ
+ 8PAdFZA2Gf15l4fAh5BOA6RAJrHEzcjQGB+cv0QqGad+I/yqZz03EwqHw0FL
+ Swt1dXUopb4ArFpsu8u5hH9p1caHG92u9YQHL6HbLSYnIRhM4i1M4HJqBOPN
+ 3Cg4grv2AOfOnWNkZASv10tTUxOXL1+2x+NxC/jPOyHAAbTu2LmzaM8jf8yH
+ Q07S44OQtojHXQyF7ydW/j1qd/wFlWsbqaiooLy8nLa2NoaGhujr62NychJg
+ K3ASGF3GwN7WFNCqaZqcPHlSksmknD17Vl566SV58cUX5Y033pBAICDJZFJy
+ zTRNOXDgwFx7o27A85sU8C3AOnTokFiWJSIisVhMent7pbe3V27cuHHr/3z7
+ 6KOPxOl0ziXiBL+hHeofAKn6+nqZmpqaFWHTNOXTzLIs2bt373y71O9+1uR3
+ AlEye6DFWCqVklgsJvF4XE6fPi1KqbkEpIHHb0dCXyL5EuBfAVdxcTEOh4OB
+ gQGqqqqw2Wwkk0k+/vhjPB4Pfr//1lwfDofp7+9neHiYaDSKpmls376d++67
+ j46ODpRSuauzBjwHfAB0LXf0X8hGraWlRbq7u2VycnJGrs+XPslkUkKhkFy4
+ cEFOnTolr7zyirS1tYlhGFJZWSmrV6/O75Eepo+ry2YbbDZbsry8XIqLi6Wn
+ p2dR6ZNr6XRaAoGAnDp1Svbv3y+AeL1e8Xq9+en0t8sp4J/9fr94PB45duzY
+ ksnn2sTEhHR2dorT6ZSamhopKiqSlStX5gqIAtXLQb7EbrdPVVVVSVNTk8Ri
+ sWURkLWdO3feOo5u2rQp/9Dz3FyEFrsX+qMVK1a4Q6EQBw8exOl0zllIRJYU
+ nd27dxMOhzFNk0gkgsPhyH38Vea4R1qMgDLgYCqVQilFc3PzvAUHBweXJKCx
+ sfHW9/Hx8fzzggfYu1QBCvgHu91eUlFRQWNjI2Vlc58ARYSRkZElCSgqKpqB
+ k0ql8ovsWaqAPcA+TdNwOBxs3rw5dx8/w9Lp9JJTKBezsrJyLpy1SxWwA9AS
+ iQRKKVwu17wFTdOcV9xCTdd1EonEXAJmXbssaCVe6aX7zx6H7fXCCyc/Ihb7
+ 7U8tv9QeuHr1Kn6/n8LCQq5du0Z1dTWGYaBpGhcuXAD4xaJBC1y4/vdH6qy8
+ WyzSfbeY51zyV0+45JlnnpFUKjXn4nT27NlFTZ+p/u9IqmuT9L1eIW6nbda+
+ qK6uTlp2282GWvWFRZF32tGe+xYvSpdX5L3fEnlvq8j5ejHP6XJgr5KHHnpI
+ hoeHZxEaHx9fMHkznZSpjnUi5zdK8E2/qDl2pk/u1UTO18uHP6u4mM9x1hhw
+ O3BuWk1dy73se+GbtP/h76snsPk+Kaqc2PRVHDsMN4ZO09jYSFtb24y0yZ1N
+ bpdql/sDhIKjkO5j7EqQR7aCkUlslwFffwB+cMgB5hDFhTFfPsaM0fZ7n+PR
+ 1u/wbLlflSkFygaa7gatBpSRU9KEdD/9QxGavgrhm4r9+/dz9OhRSktLF9zD
+ 8Xic/3rrDapCj7N5S5SJcbjYAwMfw2QUVpXBtns1Slf5QblJJOOJB75xZceZ
+ 963OOXtg51Yerqxyl9nddeiue9AcG0Bfl0ceQAOtkprVBs8/BQrhxIkT7Nix
+ g3A4vGABuq7jcBhMhMGywOuDzU3Q/CB85XfhgQeh9K4q0FaBzYvD6Xe8fqzm
+ 9J4m/dZ1/AwBoTEGkCRggHKDcjHvyU45Qavk0QdtPPHl6b8CgQCBQGDBAmw2
+ G1dGhohOJkhlLhadbgNfqRNfsYHD5QWbd0adkmLvylPPb3jz6Ld93/cVKt+M
+ abRnkCEREyU3QfkWwKAIpJTWbwdxle5h266v09DQsGABHR0dfP9v/pLnv2Fi
+ WYAqAv1uQIGY0zk8RwANwzD+5PGap760M/jlGT1Q4sOulJ6J/ELDuJIVLjt/
+ /VgPv7Orcd4NXq5Fo1FaW1tpbm7Go8Ks8IBu10AryxC2gbJzu3P9+ER6LNsD
+ CjB2b+fz0z8tpmewhayoGiid4hWj/Pr0wwSb/o2GLVtnrMYiQiQSoauri/b2
+ dk6cOMH169cBWOsHTyFougOwL6A9i2vByes//PfrR599deLZrAADcG1vYBuk
+ IB34ZAwox3S+Y2SikjfzKg1QiECRvZ8//dq9XIrVUl1djdPpJBQKEQwGGR4e
+ JpGY/QKmthwMB5n7VDPvqYCkgTRmOkpfIBL8p9ciz738Vvr4zThjQELPMNIB
+ /XArR57az3fLfOm7dD2C3Yhgd4DDAXbDhm43ULZCUB5QOoiAhEHixKKQjEOl
+ z+TUe3309S3sprzYA8kExKbiuD3BzKDVgCSWOUXsZoz+S4nos69Zx199m59M
+ JRhj+l2CHUjpn0iFn73NW+1n6Kgs5p715TTW+LmndhXrqv1U+UutwuKSuFpZ
+ GsdTOIphKFCCWDB1E64MwbURuBYmBVwErgExpjdgsZzvGlDI9Cul6tAE1eNj
+ GA6nRWHROA5HGEsUNyMWo1fhrTP8+h/f5O+vTnA5gzEjr7M/DMCVcWfOpxNw
+ GhqeskJW11ew5XMb2Na4no2lJTidmbEenYKrI6R++ktee72bk2mLwcxAym9L
+ y8F1AI4da9l58It8s7gEm9MFmgbpFIxdJ/kvv+DH/3GeV02LaE4Q4pnPKJBQ
+ OeD2XNLZBjJuZJ7rgFbgpKBhNQ0Nq9mysoBVsQQTP++h7YMrdGeinABS2Z7N
+ 4NsyOLmYulLYGyvZum0N9xe6KQbMq2EG/6eP0wMhApl0SWSI53oCsPKnGS0D
+ bOQRv0U+QyRbTzKRNpm+SUtniCdz3MrUNXI8H1NlPItn5WDl4mWDk84GZ755
+ MruC6Hlum0NA9i1j1lM5YrJplO2BXOL5AVFz4OUGJYs347Cx0KOTmsOzlm10
+ FvgC8GwLwPtUzP8D2ZiyXz3Y3nwAAAAldEVYdGNyZWF0ZS1kYXRlADIwMTAt
+ MDItMDZUMTk6Mjk6MjMrMDE6MDBL9SgPAAAAJXRFWHRtb2RpZnktZGF0ZQAy
+ MDA5LTA5LTI3VDA5OjM1OjM0KzAyOjAwrPojkwAAAABJRU5ErkJggg==
 
 Package: kernel-bfs-headers
 Architecture: armel
 Depends: ${shlibs:Depends}
 Conflicts: kernel-headers-maemo
-Description: Linux kernel headers
+Description: Linux kernel headers for kernel bfs2.6.28.10
  This package provides kernel headers.
 
 Package: linux-kernel-bfs-headers
 Architecture: armel
 Depends: ${shlibs:Depends}
-Conflicts: linux-kernel-headers-maemo
-Description: Linux Kernel Headers for development
+Conflicts: linux-kernel-headers-maemo, linux-kernel-headers
+Description: Linux Kernel Headers for development from kernel bfs 2.6.28.10
  This package provides headers from the Linux kernel. These headers
  are used by the installed headers for GNU glibc and other system libraries.
 
@@ -145,5 +223,5 @@ Package: kernel-bfs-modules
 Architecture: armel
 Conflicts: kernel-modules-maemo
 Depends: module-init-tools (>= 3.3), kernel-bfs (= ${binary:Version}) | kernel-bfs-bootimg (= ${binary:Version})
-Description: Linux kernel modules
- This package provides kernel modules for the BFS enhanced Maemo 5 kernel 2.6.28.10
+Description: Linux kernel modules for kernel bfs 2.6.28.10
+ This package provides kernel modules.
diff --git a/kernel-bfs-2.6.28/debian/fbcon.diff b/kernel-bfs-2.6.28/debian/fbcon.diff
deleted file mode 100644 (file)
index e1d78b0..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
---- rx51power_defconfig        2010-05-16 13:57:30.000000000 +0200
-+++ rx51power_defconfig.orig   2010-05-16 13:57:01.000000000 +0200
-@@ -1530,7 +1530,12 @@
- #
- # CONFIG_VGA_CONSOLE is not set
- CONFIG_DUMMY_CONSOLE=y
--# CONFIG_FRAMEBUFFER_CONSOLE is not set
-+CONFIG_FRAMEBUFFER_CONSOLE=y
-+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-+# CONFIG_FONTS is not set
-+CONFIG_FONT_8x8=y
-+CONFIG_FONT_8x16=y
- # CONFIG_LOGO is not set
- CONFIG_SOUND=y
- # CONFIG_SOUND_OSS_CORE is not set
diff --git a/kernel-bfs-2.6.28/debian/joikuspot/JoikuSpot_Bouncer.c b/kernel-bfs-2.6.28/debian/joikuspot/JoikuSpot_Bouncer.c
deleted file mode 100644 (file)
index 8ff74a8..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/* 
- * Implementation of JoikuSpotBouncer module
- * JoikuSpot_Bouncer.c
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the license, or ( at your option ) any later version
- */
-
-#include <linux/module.h>         /* needed by all kernel modules          */
-#include <linux/init.h>           /* needed for custom init/exit functions */
-#include <linux/kernel.h>         /* needed for KERN_ALERT macro           */
-#include <linux/netfilter.h>      /* Hook register/unregister              */
-#include <linux/netfilter_ipv4.h> /* nf_hook_priorities                    */
-#include <linux/ip.h>             /* Ip header                             */
-#include <linux/tcp.h>            /* Tcp Header                            */
-#include <linux/udp.h>            /* Udp Header                            */
-#include <net/inet_hashtables.h>  /* __inet_lookup()                       */
-#include <net/inet_sock.h>        /* struct inet_sock                      */
-
-
-/* Special macro to indicate license (to avoid tainting the kernel) */
-
-MODULE_LICENSE( "Dual MIT/GPL" );
-MODULE_AUTHOR ( "JoikuSoft Oy Ltd <info@joikusoft.com>" );
-
-extern struct inet_hashinfo tcp_hashinfo;
-extern struct proto udp_prot;
-extern struct rwlock_t udp_hash_lock;
-
-static struct sock *__udp4_lib_lookup( struct net *net ,
-    unsigned long int saddr ,
-    unsigned short int sport ,
-    unsigned long int daddr ,
-    unsigned short int dport ,
-    int dif ,
-    struct hlist_head udptable[] )
-    {
-    struct sock *sk , *result = NULL;
-    struct hlist_node *node;
-    unsigned short int hnum = ntohs( dport );
-    int badness = -1;
-
-    read_lock( &udp_hash_lock );
-
-    sk_for_each ( sk , node , &udptable[ udp_hashfn ( net , hnum ) ] )
-        {
-        struct inet_sock *inet = inet_sk( sk );
-
-        if ( net_eq ( sock_net( sk ) , net ) && sk->sk_hash == hnum &&
-            !ipv6_only_sock( sk ) )
-            {
-
-            int score = ( sk->sk_family == PF_INET ? 1 : 0 );
-
-            if ( inet->rcv_saddr )
-                {
-                if ( inet->rcv_saddr != daddr )
-                    {
-                    continue;
-                    }
-                score += 2;
-                }
-            if ( inet->daddr )
-                {
-                if ( inet->daddr != saddr )
-                    {
-                    continue;
-                    }
-                score += 2;
-                }
-            if ( inet->dport )
-                {
-                if ( inet->dport != sport )
-                    {
-                    continue;
-                    }
-                score += 2;
-                }
-            if ( sk->sk_bound_dev_if )
-                {
-                if ( sk->sk_bound_dev_if != dif )
-                    {
-                    continue;
-                    }
-                score += 2;
-                }
-            if ( score == 9 )
-                {
-                result = sk;
-                break;
-                }
-                else if ( score > badness )
-                {
-                result  = sk;
-                badness = score;
-                }
-            }
-        }
-    if ( result )
-        {
-        sock_hold ( result );
-        }
-    read_unlock ( &udp_hash_lock );
-    return result;
-    }
-
-
-static unsigned int joikuspot_nf_hook ( unsigned int hook ,
-    struct sk_buff *pskb ,
-    const struct net_device *in ,
-    const struct net_device *out ,
-    int ( *okfn ) ( struct sk_buff * ) )
-    {
-    struct sock *sk;
-    struct iphdr *iph = ipip_hdr ( pskb );
-
-    if ( iph->protocol == 6 )
-        {
-        struct tcphdr *th, tcph;
-
-        th = skb_header_pointer (
-            pskb , iph->ihl << 2 , sizeof( tcph ) , &tcph );
-
-        sk = __inet_lookup( dev_net ( pskb->dst->dev ) , &tcp_hashinfo , 
-            iph->saddr , th->source , iph->daddr , th->dest , inet_iif ( pskb ) );
-
-        if( !sk )
-            {
-            return NF_DROP;
-            }
-        else
-            {
-            return NF_ACCEPT;
-            }
-        }
-
-    if ( iph->protocol == 17 )
-        {
-        struct udphdr *uh, udph;
-
-        uh = skb_header_pointer (
-            pskb , iph->ihl << 2 , sizeof( udph ) , &udph );
-
-        sk = __udp4_lib_lookup( dev_net ( pskb->dst->dev ) , iph->saddr , uh->source ,
-            iph->daddr , uh->dest , inet_iif ( pskb ) , udp_prot.h.udp_hash );
-
-        if ( sk != NULL )
-            {
-            return NF_ACCEPT;
-            }
-        else
-            {
-            return NF_DROP;
-            }
-        }
-
-    return NF_ACCEPT;
-    }
-
-
-static struct nf_hook_ops joikuspot_ops =
-    {
-    .hook     = joikuspot_nf_hook,
-    .owner    = THIS_MODULE,
-    .pf       = PF_INET,
-    .hooknum  = NF_INET_LOCAL_IN,
-    .priority = NF_IP_PRI_FIRST
-    };
-
-static int joikuspot_init( void )
-    {
-    int retval = 0;
-
-    printk( KERN_DEBUG "JoikuSpot Bouncer Kernel Module init\n" );
-
-    retval = nf_register_hook( &joikuspot_ops );
-
-    if ( retval < 0 )
-        {
-        return retval;
-        }
-
-    return retval;
-    }
-
-static void joikuspot_exit( void ) 
-    {
-    nf_unregister_hook ( &joikuspot_ops );
-    printk( KERN_DEBUG "JoikuSpot Bouncer Kernel Module exit\n" );
-    }
-
-module_init( joikuspot_init ); 
-module_exit( joikuspot_exit );
-
diff --git a/kernel-bfs-2.6.28/debian/joikuspot/Makefile b/kernel-bfs-2.6.28/debian/joikuspot/Makefile
deleted file mode 100644 (file)
index 4e53dd3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-obj-m := JoikuSpot_Bouncer.o
index fbc5c33..3eb624c 100644 (file)
@@ -16,5 +16,8 @@ if grep -q "MODULE_PATH=/lib/modules/current" /sbin/preinit; then
     mv /sbin/preinit.tmp /sbin/preinit
 fi
 
+dpkg-divert --local --divert /lib/modules/2.6.28-omap1/JoikuSpot_Bouncer.ko --rename --add /usr/bin/JoikuSpot_Bouncer.ko || :
+ln -sf /lib/modules/current/JoikuSpot_Bouncer.ko /usr/bin/JoikuSpot_Bouncer.ko || :
+
 #DEBHELPER#
 
diff --git a/kernel-bfs-2.6.28/debian/madde.patch b/kernel-bfs-2.6.28/debian/madde.patch
new file mode 100644 (file)
index 0000000..e466d8f
--- /dev/null
@@ -0,0 +1,66 @@
+diff --git kernel-power-2.6.28/debian/control kernel-power-2.6.28/debian/control
+index f178559..6ae60c1 100644
+--- kernel-power-2.6.28/debian/control
++++ kernel-power-2.6.28/debian/control
+@@ -3,7 +3,7 @@ Section: utils
+ Priority: optional
+ Maintainer: Pali Rohár <pali.rohar@gmail.com>
+ XSBC-Bugtracker: https://garage.maemo.org/tracker/?group_id=1528
+-Build-Depends: debhelper (>= 4.0.0), quilt, sdk-fiasco-gen, libncurses5-dev, sharutils
++Build-Depends: debhelper (>= 4.0.0), quilt, libncurses5-dev, sharutils
+ Standards-Version: 3.8.0
+ Package: kernel-power-flasher
+diff --git kernel-power-2.6.28/debian/patches/series kernel-power-2.6.28/debian/patches/series
+index 4ae2339..93a7c2d 100644
+--- kernel-power-2.6.28/debian/patches/series
++++ kernel-power-2.6.28/debian/patches/series
+@@ -35,3 +35,4 @@ l2cap_parent.patch
+ wl12xx-rx-fix.diff
+ vanilla-2.6.28-anti-io-stalling.patch
+ joikuspot.diff
++madde.patch
+diff --git kernel-power-2.6.28/debian/rules kernel-power-2.6.28/debian/rules
+index 3f5cb4e..e0b7a44 100755
+--- kernel-power-2.6.28/debian/rules
++++ kernel-power-2.6.28/debian/rules
+@@ -102,7 +102,10 @@ install-kernel:
+       dh_installdirs
+       install -d -m 755 $(CURDIR)/debian/$(KERNEL_PACKAGE)/boot
+-      fiasco-gen -o $(CURDIR)/debian/$(KERNEL_PACKAGE)/boot/zImage-$(RELEASE).fiasco -g \
++      test -f sdk-fiasco-gen_2.8.2.0.1+0m5_i386.deb || wget http://repository.maemo.org/pool/fremantle/non-free/s/sdk-fiasco-gen/sdk-fiasco-gen_2.8.2.0.1+0m5_i386.deb
++      ar x sdk-fiasco-gen_2.8.2.0.1+0m5_i386.deb data.tar.gz
++      tar -xf data.tar.gz ./usr/bin/fiasco-gen -O > fiasco-gen; chmod +x fiasco-gen
++      ./fiasco-gen -o $(CURDIR)/debian/$(KERNEL_PACKAGE)/boot/zImage-$(RELEASE).fiasco -g \
+                       -k $(BUILDTMP)/arch/arm/boot/zImage -v $(RELEASE)
+       chmod 644 $(CURDIR)/debian/$(KERNEL_PACKAGE)/boot/zImage-$(RELEASE).fiasco
+@@ -136,12 +139,12 @@ install-headers:
+       dh_installdirs
+       install -d -m755 $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/
+-      install -p -o root -g root -m 644 $(BUILDTMP)/.config  $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/
+-      install -p -o root -g root -m 644 $(KSRC)/Makefile $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/
+-      install -p -o root -g root -m 644 $(BUILDTMP)/Module.symvers $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/
+-      cd $(BUILDTMP) && install -p -o root -g root -m 644 -D include/config/auto.conf \
++      install -p -m 644 $(BUILDTMP)/.config  $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/
++      install -p -m 644 $(KSRC)/Makefile $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/
++      install -p -m 644 $(BUILDTMP)/Module.symvers $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/
++      cd $(BUILDTMP) && install -p -m 644 -D include/config/auto.conf \
+               $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/include/config/auto.conf
+-      cd $(BUILDTMP) && install -p -o root -g root -m 644 -D include/config/kernel.release \
++      cd $(BUILDTMP) && install -p -m 644 -D include/config/kernel.release \
+               $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/include/config/kernel.release
+       cd $(KSRC) && \
+               find arch/$(ARCH) $(foreach dir,$(INCLUDE_HEADERS),include/$(dir)) -name '*.h' \
+@@ -240,9 +243,6 @@ endif
+       dh_installchangelogs -s
+       dh_installdocs -s
+       dh_install -s
+-ifeq ($(ARCH),arm)
+-      dh_strip -p$(HEADERS_PACKAGE)
+-endif
+       dh_compress -s
+       dh_fixperms -s --exclude /usr/src/kernel-headers
+       dh_installdeb -s
diff --git a/kernel-bfs-2.6.28/debian/mmc.diff b/kernel-bfs-2.6.28/debian/mmc.diff
deleted file mode 100644 (file)
index 01476d0..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
---- rx51power_defconfig        2010-05-16 13:59:55.000000000 +0200
-+++ rx51power_defconfig.orig   2010-05-13 13:52:17.000000000 +0200
-@@ -1813,15 +1835,15 @@
- CONFIG_USB_IP_COMMON=m
- CONFIG_USB_IP_VHCI_HCD=m
- # CONFIG_USB_IP_HOST is not set
--CONFIG_MMC=m
-+CONFIG_MMC=y
- # CONFIG_MMC_DEBUG is not set
- CONFIG_MMC_UNSAFE_RESUME=y
- #
- # MMC/SD/SDIO Card Drivers
- #
--CONFIG_MMC_BLOCK=m
--#CONFIG_MMC_BLOCK_BOUNCE=y
-+CONFIG_MMC_BLOCK=y
-+CONFIG_MMC_BLOCK_BOUNCE=y
- # CONFIG_SDIO_UART is not set
- # CONFIG_MMC_TEST is not set
-@@ -1829,7 +1851,7 @@
- # MMC/SD/SDIO Host Controller Drivers
- #
- # CONFIG_MMC_SDHCI is not set
--CONFIG_MMC_OMAP_HS=m
-+CONFIG_MMC_OMAP_HS=y
- # CONFIG_MMC_SPI is not set
- # CONFIG_MEMSTICK is not set
- # CONFIG_ACCESSIBILITY is not set
diff --git a/kernel-bfs-2.6.28/debian/patches/arm-proc-v7.diff b/kernel-bfs-2.6.28/debian/patches/arm-proc-v7.diff
new file mode 100644 (file)
index 0000000..9e5c7e3
--- /dev/null
@@ -0,0 +1,11 @@
+--- kernel-power-2.6.28.orig/arch/arm/mm/proc-v7.S
++++ kernel-power-2.6.28/arch/arm/mm/proc-v7.S
+@@ -85,7 +85,7 @@
+ #ifdef CONFIG_MMU
+       mov     r2, #0
+       ldr     r1, [r1, #MM_CONTEXT_ID]        @ get mm->context.id
+-      orr     r0, r0, #TTB_RGN_OC_WB          @ mark PTWs outer cacheable, WB
++      orr     r0, r0, #TTB_RGN_OC_WB
+       mcr     p15, 0, r2, c13, c0, 1          @ set reserved context ID
+       isb
+ 1:    mcr     p15, 0, r0, c2, c0, 0           @ set TTB 0
index 32b3055..2ca096e 100644 (file)
@@ -1,8 +1,6 @@
-Index: kernel-2.6.28/arch/arm/Kconfig
-===================================================================
---- kernel-2.6.28.orig/arch/arm/Kconfig
-+++ kernel-2.6.28/arch/arm/Kconfig
-@@ -722,6 +722,22 @@ source "drivers/pci/Kconfig"
+--- kernel-power-2.6.28.orig/arch/arm/Kconfig
++++ kernel-power-2.6.28/arch/arm/Kconfig
+@@ -722,6 +722,22 @@
  
  source "drivers/pcmcia/Kconfig"
  
@@ -25,21 +23,21 @@ Index: kernel-2.6.28/arch/arm/Kconfig
  endmenu
  
  menu "Kernel Features"
-Index: kernel-2.6.28/arch/arm/mm/proc-v7.S
-===================================================================
---- kernel-2.6.28.orig/arch/arm/mm/proc-v7.S
-+++ kernel-2.6.28/arch/arm/mm/proc-v7.S
-@@ -91,6 +91,9 @@ ENTRY(cpu_v7_switch_mm)
+--- kernel-power-2.6.28.orig/arch/arm/mm/proc-v7.S
++++ kernel-power-2.6.28/arch/arm/mm/proc-v7.S
+@@ -90,7 +90,10 @@
+ #ifdef CONFIG_MMU
        mov     r2, #0
        ldr     r1, [r1, #MM_CONTEXT_ID]        @ get mm->context.id
-       orr     r0, r0, #TTB_RGN_OC_WB          @ mark PTWs outer cacheable, WB
+-      orr     r0, r0, #TTB_RGN_OC_WB
++      orr     r0, r0, #TTB_RGN_OC_WB          @ mark PTWs outer cacheable, WB
 +#ifdef CONFIG_ARM_ERRATA_430973
 +      mcr     p15, 0, r2, c7, c5, 6           @ flush BTAC/BTB
 +#endif
        mcr     p15, 0, r2, c13, c0, 1          @ set reserved context ID
        isb
  1:    mcr     p15, 0, r0, c2, c0, 0           @ set TTB 0
-@@ -171,6 +174,11 @@ __v7_setup:
+@@ -171,6 +174,11 @@
        stmia   r12, {r0-r5, r7, r9, r11, lr}
        bl      v7_flush_dcache_all
        ldmia   r12, {r0-r5, r7, r9, r11, lr}
diff --git a/kernel-bfs-2.6.28/debian/patches/board-rx51-peripherals.patch b/kernel-bfs-2.6.28/debian/patches/board-rx51-peripherals.patch
new file mode 100644 (file)
index 0000000..92e0619
--- /dev/null
@@ -0,0 +1,12 @@
+--- kernel-power-2.6.28/arch/arm/mach-omap2/board-rx51-peripherals.c   2011-01-23 03:53:13.000000000 +0100
++++ kernel-power-2.6.28/arch/arm/mach-omap2/board-rx51-peripherals.c   2011-01-23 04:02:21.000000000 +0100
+@@ -572,6 +580,9 @@ static struct i2c_board_info __initdata 
+               I2C_BOARD_INFO("tsl2563", 0x29),
+               .platform_data = &rx51_tsl2563_platform_data,
+       },
++      {
++              I2C_BOARD_INFO("bq27200", 0x55),
++      },
+ };
+ static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_3[] = {
diff --git a/kernel-bfs-2.6.28/debian/patches/bq24150-sniff.diff b/kernel-bfs-2.6.28/debian/patches/bq24150-sniff.diff
deleted file mode 100644 (file)
index 78d6c80..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
---- kernel-power-2.6.28.orig/drivers/i2c/i2c-core.c
-+++ kernel-power-2.6.28/drivers/i2c/i2c-core.c
-@@ -1042,7 +1042,26 @@
-                               (msgs[ret].flags & I2C_M_RECV_LEN) ? "+" : "");
-               }
- #endif
--
-+              // inserted
-+              int i;
-+              if (msgs[0].addr == 0x6b) {
-+                printk("%s ", dev_name(&adap->dev));
-+                for (ret = 0; ret < num; ret++) { // nr of messages in this call
-+                  if (!(msgs[ret].flags & I2C_M_RD)) {
-+                    printk("(W):");
-+                    for (i = 0; i < msgs[ret].len; i++) {
-+                      printk(" 0x%02x", msgs[ret].buf[i]);
-+                    }
-+                  }
-+                  else {
-+                    printk("(R) %d bytes", msgs[ret].len);
-+                  }
-+                  printk(", ");
-+                }
-+                printk("\n");
-+              }
-+              // end inserted
-+              
-               if (in_atomic() || irqs_disabled()) {
-                       ret = mutex_trylock(&adap->bus_lock);
-                       if (!ret)
-@@ -1054,7 +1073,20 @@
-               ret = adap->algo->master_xfer(adap,msgs,num);
-               mutex_unlock(&adap->bus_lock);
--
-+              
-+              // inserted
-+              int j;
-+              for (i = 0; i < num; i++) {
-+                if (msgs[i].addr == 0x6b && (msgs[i].flags & I2C_M_RD)) {
-+                  printk("i2c_read: ");
-+                  for (j = 0; j < msgs[i].len; j++) {
-+                    printk(" 0x%02x", msgs[i].buf[j]);
-+                  }
-+                  printk("\n");
-+                }
-+              }
-+              // end inserted
-+              
-               return ret;
-       } else {
-               dev_dbg(&adap->dev, "I2C level transfers not supported\n");
diff --git a/kernel-bfs-2.6.28/debian/patches/bq27x00_battery.patch b/kernel-bfs-2.6.28/debian/patches/bq27x00_battery.patch
new file mode 100644 (file)
index 0000000..b46ed98
--- /dev/null
@@ -0,0 +1,974 @@
+--- kernel-power-2.6.28/drivers/power/bq27x00_battery.c        2011-05-01 01:48:44.000000000 +0200
++++ kernel-power-2.6.28/drivers/power/bq27x00_battery.c        2011-05-01 01:51:12.000000000 +0200
+@@ -3,6 +3,8 @@
+  *
+  * Copyright (C) 2008 Rodolfo Giometti <giometti@linux.it>
+  * Copyright (C) 2008 Eurotech S.p.A. <info@eurotech.it>
++ * Copyright (C) 2010-2011 Lars-Peter Clausen <lars@metafoo.de>
++ * Copyright (C) 2011 Pali Rohár <pali.rohar@gmail.com>
+  *
+  * Based on a previous work by Copyright (C) 2008 Texas Instruments, Inc.
+  *
+@@ -15,6 +17,13 @@
+  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+  *
+  */
++
++/*
++ * Datasheets:
++ * http://focus.ti.com/docs/prod/folders/print/bq27000.html
++ * http://focus.ti.com/docs/prod/folders/print/bq27500.html
++ */
++
+ #include <linux/module.h>
+ #include <linux/param.h>
+ #include <linux/jiffies.h>
+@@ -24,144 +33,407 @@
+ #include <linux/power_supply.h>
+ #include <linux/idr.h>
+ #include <linux/i2c.h>
++#include <linux/slab.h>
+ #include <asm/unaligned.h>
+-#define DRIVER_VERSION                        "1.0.0"
++#define CONFIG_BATTERY_BQ27X00_I2C
++
++struct bq27000_platform_data {
++      const char *name;
++      int (*read)(struct device *dev, unsigned int);
++};
++
++#define DRIVER_VERSION                        "1.2.0"
+ #define BQ27x00_REG_TEMP              0x06
+ #define BQ27x00_REG_VOLT              0x08
+-#define BQ27x00_REG_RSOC              0x0B /* Relative State-of-Charge */
+ #define BQ27x00_REG_AI                        0x14
+ #define BQ27x00_REG_FLAGS             0x0A
++#define BQ27x00_REG_TTE                       0x16
++#define BQ27x00_REG_TTF                       0x18
++#define BQ27x00_REG_TTECP             0x26
++#define BQ27x00_REG_NAC                       0x0C /* Nominal available capaciy */
++#define BQ27x00_REG_LMD                       0x12 /* Last measured discharge */
++#define BQ27x00_REG_CYCT              0x2A /* Cycle count total */
++#define BQ27x00_REG_AE                        0x22 /* Available enery */
++
++#define BQ27000_REG_RSOC              0x0B /* Relative State-of-Charge */
++#define BQ27000_REG_ILMD              0x76 /* Initial last measured discharge */
++#define BQ27000_FLAG_CHGS             BIT(7)
++#define BQ27000_FLAG_FC                       BIT(5)
++
++#define BQ27500_REG_SOC                       0x2C
++#define BQ27500_REG_DCAP              0x3C /* Design capacity */
++#define BQ27500_FLAG_DSC              BIT(0)
++#define BQ27500_FLAG_FC                       BIT(9)
+-/* If the system has several batteries we need a different name for each
+- * of them...
+- */
+-static DEFINE_IDR(battery_id);
+-static DEFINE_MUTEX(battery_mutex);
++#define BQ27000_RS                    20 /* Resistor sense */
+ struct bq27x00_device_info;
+ struct bq27x00_access_methods {
+-      int (*read)(u8 reg, int *rt_value, int b_single,
+-              struct bq27x00_device_info *di);
++      int (*read)(struct bq27x00_device_info *di, u8 reg, bool single);
++};
++
++enum bq27x00_chip { BQ27000, BQ27500 };
++
++struct bq27x00_reg_cache {
++      int temperature;
++      int time_to_empty;
++      int time_to_empty_avg;
++      int time_to_full;
++      int charge_full;
++      int capacity;
++      int flags;
++
++      int current_now;
+ };
+ struct bq27x00_device_info {
+       struct device           *dev;
+       int                     id;
+-      int                     voltage_uV;
+-      int                     current_uA;
+-      int                     temp_C;
+-      int                     charge_rsoc;
+-      struct bq27x00_access_methods   *bus;
++      enum bq27x00_chip       chip;
++
++      struct bq27x00_reg_cache cache;
++      int charge_design_full;
++
++      unsigned long last_update;
++      struct delayed_work work;
++
+       struct power_supply     bat;
+-      struct i2c_client       *client;
++      struct bq27x00_access_methods bus;
++
++      struct mutex lock;
+ };
+ static enum power_supply_property bq27x00_battery_props[] = {
++      POWER_SUPPLY_PROP_STATUS,
+       POWER_SUPPLY_PROP_PRESENT,
+       POWER_SUPPLY_PROP_VOLTAGE_NOW,
+       POWER_SUPPLY_PROP_CURRENT_NOW,
+       POWER_SUPPLY_PROP_CAPACITY,
+       POWER_SUPPLY_PROP_TEMP,
++      POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
++      POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG,
++      POWER_SUPPLY_PROP_TIME_TO_FULL_NOW,
++      POWER_SUPPLY_PROP_TECHNOLOGY,
++      POWER_SUPPLY_PROP_CHARGE_FULL,
++      POWER_SUPPLY_PROP_CHARGE_NOW,
++      POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
+ };
++static unsigned int poll_interval = 360;
++module_param(poll_interval, uint, 0644);
++MODULE_PARM_DESC(poll_interval, "battery poll interval in seconds - " \
++                              "0 disables polling");
++
+ /*
+  * Common code for BQ27x00 devices
+  */
+-static int bq27x00_read(u8 reg, int *rt_value, int b_single,
+-                      struct bq27x00_device_info *di)
++static inline int bq27x00_read(struct bq27x00_device_info *di, u8 reg,
++              bool single)
+ {
+-      int ret;
++      return di->bus.read(di, reg, single);
++}
++
++/*
++ * Return the battery Relative State-of-Charge
++ * Or < 0 if something fails.
++ */
++static int bq27x00_battery_read_rsoc(struct bq27x00_device_info *di)
++{
++      int rsoc;
+-      ret = di->bus->read(reg, rt_value, b_single, di);
+-      *rt_value = be16_to_cpu(*rt_value);
++      if (di->chip == BQ27500)
++              rsoc = bq27x00_read(di, BQ27500_REG_SOC, false);
++      else
++              rsoc = bq27x00_read(di, BQ27000_REG_RSOC, true);
+-      return ret;
++      if (rsoc < 0)
++              dev_err(di->dev, "error reading relative State-of-Charge\n");
++
++      return rsoc;
+ }
+ /*
+- * Return the battery temperature in Celcius degrees
++ * Return a battery charge value in µAh
+  * Or < 0 if something fails.
+  */
+-static int bq27x00_battery_temperature(struct bq27x00_device_info *di)
++static int bq27x00_battery_read_charge(struct bq27x00_device_info *di, u8 reg)
+ {
+-      int ret;
+-      int temp = 0;
++      int charge;
+-      ret = bq27x00_read(BQ27x00_REG_TEMP, &temp, 0, di);
+-      if (ret) {
+-              dev_err(di->dev, "error reading temperature\n");
+-              return ret;
++      charge = bq27x00_read(di, reg, false);
++      if (charge < 0) {
++              dev_err(di->dev, "error reading nominal available capacity\n");
++              return charge;
+       }
+-      return (temp >> 2) - 273;
++      if (di->chip == BQ27500)
++              charge *= 1000;
++      else
++              charge = charge * 3570 / BQ27000_RS;
++
++      return charge;
+ }
+ /*
+- * Return the battery Voltage in milivolts
++ * Return the battery Nominal available capaciy in µAh
+  * Or < 0 if something fails.
+  */
+-static int bq27x00_battery_voltage(struct bq27x00_device_info *di)
++static inline int bq27x00_battery_read_nac(struct bq27x00_device_info *di)
+ {
+-      int ret;
+-      int volt = 0;
++      return bq27x00_battery_read_charge(di, BQ27x00_REG_NAC);
++}
+-      ret = bq27x00_read(BQ27x00_REG_VOLT, &volt, 0, di);
+-      if (ret) {
+-              dev_err(di->dev, "error reading voltage\n");
+-              return ret;
++/*
++ * Return the battery Last measured discharge in µAh
++ * Or < 0 if something fails.
++ */
++static inline int bq27x00_battery_read_lmd(struct bq27x00_device_info *di)
++{
++      return bq27x00_battery_read_charge(di, BQ27x00_REG_LMD);
++}
++
++/*
++ * Return the battery Initial last measured discharge in µAh
++ * Or < 0 if something fails.
++ */
++static int bq27x00_battery_read_ilmd(struct bq27x00_device_info *di)
++{
++      int ilmd;
++
++      if (di->chip == BQ27500)
++              ilmd = bq27x00_read(di, BQ27500_REG_DCAP, false);
++      else
++              ilmd = bq27x00_read(di, BQ27000_REG_ILMD, true);
++
++      if (ilmd < 0) {
++              dev_err(di->dev, "error reading initial last measured discharge\n");
++              return ilmd;
+       }
+-      return volt;
++      if (di->chip == BQ27500)
++              ilmd *= 1000;
++      else
++              ilmd = ilmd * 256 * 3570 / BQ27000_RS;
++
++      return ilmd;
+ }
+ /*
+- * Return the battery average current
+- * Note that current can be negative signed as well
+- * Or 0 if something fails.
++ * Return the battery Cycle count total
++ * Or < 0 if something fails.
+  */
+-static int bq27x00_battery_current(struct bq27x00_device_info *di)
++static int bq27x00_battery_read_cyct(struct bq27x00_device_info *di)
+ {
+-      int ret;
+-      int curr = 0;
+-      int flags = 0;
++      int cyct;
+-      ret = bq27x00_read(BQ27x00_REG_AI, &curr, 0, di);
+-      if (ret) {
+-              dev_err(di->dev, "error reading current\n");
+-              return 0;
++      cyct = bq27x00_read(di, BQ27x00_REG_CYCT, false);
++      if (cyct < 0)
++              dev_err(di->dev, "error reading cycle count total\n");
++
++      return cyct;
++}
++
++/*
++ * Read a time register.
++ * Return < 0 if something fails.
++ */
++static int bq27x00_battery_read_time(struct bq27x00_device_info *di, u8 reg)
++{
++      int tval;
++
++      tval = bq27x00_read(di, reg, false);
++      if (tval < 0) {
++              dev_err(di->dev, "error reading register %02x: %d\n", reg, tval);
++              return tval;
+       }
+-      ret = bq27x00_read(BQ27x00_REG_FLAGS, &flags, 0, di);
+-      if (ret < 0) {
+-              dev_err(di->dev, "error reading flags\n");
++
++      if (tval == 65535)
+               return 0;
++
++      return tval * 60;
++}
++
++static void bq27x00_update(struct bq27x00_device_info *di)
++{
++      struct bq27x00_reg_cache cache = {0, };
++      bool is_bq27500 = di->chip == BQ27500;
++
++      cache.flags = bq27x00_read(di, BQ27x00_REG_FLAGS, is_bq27500);
++      if (cache.flags >= 0) {
++              cache.capacity = bq27x00_battery_read_rsoc(di);
++              cache.temperature = bq27x00_read(di, BQ27x00_REG_TEMP, false);
++              cache.time_to_empty = bq27x00_battery_read_time(di, BQ27x00_REG_TTE);
++              cache.time_to_empty_avg = bq27x00_battery_read_time(di, BQ27x00_REG_TTECP);
++              cache.time_to_full = bq27x00_battery_read_time(di, BQ27x00_REG_TTF);
++              cache.charge_full = bq27x00_battery_read_lmd(di);
++
++              if (!is_bq27500)
++                      cache.current_now = bq27x00_read(di, BQ27x00_REG_AI, false);
++
++              /* We only have to read charge design full once */
++              if (di->charge_design_full <= 0)
++                      di->charge_design_full = bq27x00_battery_read_ilmd(di);
+       }
+-      if ((flags & (1 << 7)) != 0) {
+-              dev_dbg(di->dev, "negative current!\n");
+-              return -curr;
++
++      /* Ignore current_now which is a snapshot of the current battery state
++       * and is likely to be different even between two consecutive reads */
++      if (memcmp(&di->cache, &cache, sizeof(cache) - sizeof(int)) != 0) {
++              di->cache = cache;
++              power_supply_changed(&di->bat);
++      }
++
++      di->last_update = jiffies;
++}
++
++static void bq27x00_battery_poll(struct work_struct *work)
++{
++      struct bq27x00_device_info *di =
++              container_of(work, struct bq27x00_device_info, work.work);
++
++      bq27x00_update(di);
++
++      if (poll_interval > 0) {
++              schedule_delayed_work(&di->work, poll_interval * HZ);
+       }
+-      return curr;
+ }
++
+ /*
+- * Return the battery Relative State-of-Charge
++ * Return the battery temperature in tenths of degree Celsius
+  * Or < 0 if something fails.
+  */
+-static int bq27x00_battery_rsoc(struct bq27x00_device_info *di)
++static int bq27x00_battery_temperature(struct bq27x00_device_info *di,
++      union power_supply_propval *val)
+ {
+-      int ret;
+-      int rsoc = 0;
++      if (di->cache.temperature < 0)
++              return di->cache.temperature;
+-      ret = bq27x00_read(BQ27x00_REG_RSOC, &rsoc, 1, di);
+-      if (ret) {
+-              dev_err(di->dev, "error reading relative State-of-Charge\n");
+-              return ret;
++      if (di->chip == BQ27500)
++              val->intval = di->cache.temperature - 2731;
++      else
++              val->intval = ((di->cache.temperature * 5) - 5463) / 2;
++
++      return 0;
++}
++
++/*
++ * Return the battery average current in µA
++ * Note that current can be negative signed as well
++ * Or 0 if something fails.
++ */
++static int bq27x00_battery_current(struct bq27x00_device_info *di,
++      union power_supply_propval *val)
++{
++      int curr;
++
++      if (di->chip == BQ27500)
++          curr = bq27x00_read(di, BQ27x00_REG_AI, false);
++      else
++          curr = di->cache.current_now;
++
++      if (curr < 0)
++              return curr;
++
++      if (di->chip == BQ27500) {
++              /* bq27500 returns signed value */
++              val->intval = (int)((s16)curr) * 1000;
++      } else {
++              if (di->cache.flags & BQ27000_FLAG_CHGS) {
++                      dev_dbg(di->dev, "negative current!\n");
++                      curr = -curr;
++              }
++
++              val->intval = curr * 3570 / BQ27000_RS;
+       }
+-      return rsoc >> 8;
++      return 0;
++}
++
++static int bq27x00_battery_status(struct bq27x00_device_info *di,
++      union power_supply_propval *val)
++{
++      int status;
++
++      if (di->chip == BQ27500) {
++              if (di->cache.flags & BQ27500_FLAG_FC)
++                      status = POWER_SUPPLY_STATUS_FULL;
++              else if (di->cache.flags & BQ27500_FLAG_DSC)
++                      status = POWER_SUPPLY_STATUS_DISCHARGING;
++              else
++                      status = POWER_SUPPLY_STATUS_CHARGING;
++      } else {
++              if (di->cache.flags & BQ27000_FLAG_FC)
++                      status = POWER_SUPPLY_STATUS_FULL;
++              else if (di->cache.flags & BQ27000_FLAG_CHGS)
++                      status = POWER_SUPPLY_STATUS_CHARGING;
++              else if (power_supply_am_i_supplied(&di->bat))
++                      status = POWER_SUPPLY_STATUS_NOT_CHARGING;
++              else
++                      status = POWER_SUPPLY_STATUS_DISCHARGING;
++      }
++
++      val->intval = status;
++
++      return 0;
++}
++
++/*
++ * Return the battery Voltage in milivolts
++ * Or < 0 if something fails.
++ */
++static int bq27x00_battery_voltage(struct bq27x00_device_info *di,
++      union power_supply_propval *val)
++{
++      int volt;
++
++      volt = bq27x00_read(di, BQ27x00_REG_VOLT, false);
++      if (volt < 0)
++              return volt;
++
++      val->intval = volt * 1000;
++
++      return 0;
++}
++
++/*
++ * Return the battery Available energy in µWh
++ * Or < 0 if something fails.
++ */
++static int bq27x00_battery_energy(struct bq27x00_device_info *di,
++      union power_supply_propval *val)
++{
++      int ae;
++
++      ae = bq27x00_read(di, BQ27x00_REG_AE, false);
++      if (ae < 0) {
++              dev_err(di->dev, "error reading available energy\n");
++              return ae;
++      }
++
++      if (di->chip == BQ27500)
++              ae *= 1000;
++      else
++              ae = ae * 29200 / BQ27000_RS;
++
++      val->intval = ae;
++
++      return 0;
++}
++
++
++static int bq27x00_simple_value(int value,
++      union power_supply_propval *val)
++{
++      if (value < 0)
++              return value;
++
++      val->intval = value;
++
++      return 0;
+ }
+ #define to_bq27x00_device_info(x) container_of((x), \
+@@ -171,89 +443,161 @@ static int bq27x00_battery_get_property(
+                                       enum power_supply_property psp,
+                                       union power_supply_propval *val)
+ {
++      int ret = 0;
+       struct bq27x00_device_info *di = to_bq27x00_device_info(psy);
++      mutex_lock(&di->lock);
++      if (time_is_before_jiffies(di->last_update + 5 * HZ)) {
++              cancel_delayed_work_sync(&di->work);
++              bq27x00_battery_poll(&di->work.work);
++      }
++      mutex_unlock(&di->lock);
++
++      if (psp != POWER_SUPPLY_PROP_PRESENT && di->cache.flags < 0)
++              return -ENODEV;
++
+       switch (psp) {
++      case POWER_SUPPLY_PROP_STATUS:
++              ret = bq27x00_battery_status(di, val);
++              break;
+       case POWER_SUPPLY_PROP_VOLTAGE_NOW:
++              ret = bq27x00_battery_voltage(di, val);
++              break;
+       case POWER_SUPPLY_PROP_PRESENT:
+-              val->intval = bq27x00_battery_voltage(di);
+-              if (psp == POWER_SUPPLY_PROP_PRESENT)
+-                      val->intval = val->intval <= 0 ? 0 : 1;
++              val->intval = di->cache.flags < 0 ? 0 : 1;
+               break;
+       case POWER_SUPPLY_PROP_CURRENT_NOW:
+-              val->intval = bq27x00_battery_current(di);
++              ret = bq27x00_battery_current(di, val);
+               break;
+       case POWER_SUPPLY_PROP_CAPACITY:
+-              val->intval = bq27x00_battery_rsoc(di);
++              ret = bq27x00_simple_value(di->cache.capacity, val);
+               break;
+       case POWER_SUPPLY_PROP_TEMP:
+-              val->intval = bq27x00_battery_temperature(di);
++              ret = bq27x00_battery_temperature(di, val);
++              break;
++      case POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW:
++              ret = bq27x00_simple_value(di->cache.time_to_empty, val);
++              break;
++      case POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG:
++              ret = bq27x00_simple_value(di->cache.time_to_empty_avg, val);
++              break;
++      case POWER_SUPPLY_PROP_TIME_TO_FULL_NOW:
++              ret = bq27x00_simple_value(di->cache.time_to_full, val);
++              break;
++      case POWER_SUPPLY_PROP_TECHNOLOGY:
++              val->intval = POWER_SUPPLY_TECHNOLOGY_LION;
++              break;
++      case POWER_SUPPLY_PROP_CHARGE_NOW:
++              ret = bq27x00_simple_value(bq27x00_battery_read_nac(di), val);
++              break;
++      case POWER_SUPPLY_PROP_CHARGE_FULL:
++              ret = bq27x00_simple_value(di->cache.charge_full, val);
++              break;
++      case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
++              ret = bq27x00_simple_value(di->charge_design_full, val);
++              break;
++      case POWER_SUPPLY_PROP_ENERGY_NOW:
++              ret = bq27x00_battery_energy(di, val);
+               break;
+       default:
+               return -EINVAL;
+       }
+-      return 0;
++      return ret;
+ }
+-static void bq27x00_powersupply_init(struct bq27x00_device_info *di)
++static void bq27x00_external_power_changed(struct power_supply *psy)
+ {
++      struct bq27x00_device_info *di = to_bq27x00_device_info(psy);
++
++      cancel_delayed_work_sync(&di->work);
++      schedule_delayed_work(&di->work, 0);
++}
++
++static int bq27x00_powersupply_init(struct bq27x00_device_info *di)
++{
++      int ret;
++
+       di->bat.type = POWER_SUPPLY_TYPE_BATTERY;
+       di->bat.properties = bq27x00_battery_props;
+       di->bat.num_properties = ARRAY_SIZE(bq27x00_battery_props);
+       di->bat.get_property = bq27x00_battery_get_property;
+-      di->bat.external_power_changed = NULL;
++      di->bat.external_power_changed = bq27x00_external_power_changed;
++
++      INIT_DELAYED_WORK(&di->work, bq27x00_battery_poll);
++      mutex_init(&di->lock);
++
++      ret = power_supply_register(di->dev, &di->bat);
++      if (ret) {
++              dev_err(di->dev, "failed to register battery: %d\n", ret);
++              return ret;
++      }
++
++      dev_info(di->dev, "support ver. %s enabled\n", DRIVER_VERSION);
++
++      bq27x00_update(di);
++
++      return 0;
+ }
+-/*
+- * BQ27200 specific code
++static void bq27x00_powersupply_unregister(struct bq27x00_device_info *di)
++{
++      cancel_delayed_work_sync(&di->work);
++
++      power_supply_unregister(&di->bat);
++
++      mutex_destroy(&di->lock);
++}
++
++
++/* i2c specific code */
++#ifdef CONFIG_BATTERY_BQ27X00_I2C
++
++/* If the system has several batteries we need a different name for each
++ * of them...
+  */
++static DEFINE_IDR(battery_id);
++static DEFINE_MUTEX(battery_mutex);
+-static int bq27200_read(u8 reg, int *rt_value, int b_single,
+-                      struct bq27x00_device_info *di)
++static int bq27x00_read_i2c(struct bq27x00_device_info *di, u8 reg, bool single)
+ {
+-      struct i2c_client *client = di->client;
+-      struct i2c_msg msg[1];
++      struct i2c_client *client = to_i2c_client(di->dev);
++      struct i2c_msg msg[2];
+       unsigned char data[2];
+-      int err;
++      int ret;
+       if (!client->adapter)
+               return -ENODEV;
+-      msg->addr = client->addr;
+-      msg->flags = 0;
+-      msg->len = 1;
+-      msg->buf = data;
+-
+-      data[0] = reg;
+-      err = i2c_transfer(client->adapter, msg, 1);
+-
+-      if (err >= 0) {
+-              if (!b_single)
+-                      msg->len = 2;
+-              else
+-                      msg->len = 1;
++      msg[0].addr = client->addr;
++      msg[0].flags = 0;
++      msg[0].buf = &reg;
++      msg[0].len = sizeof(reg);
++      msg[1].addr = client->addr;
++      msg[1].flags = I2C_M_RD;
++      msg[1].buf = data;
++      if (single)
++              msg[1].len = 1;
++      else
++              msg[1].len = 2;
+-              msg->flags = I2C_M_RD;
+-              err = i2c_transfer(client->adapter, msg, 1);
+-              if (err >= 0) {
+-                      if (!b_single)
+-                              *rt_value = get_unaligned_be16(data);
+-                      else
+-                              *rt_value = data[0];
++      ret = i2c_transfer(client->adapter, msg, ARRAY_SIZE(msg));
++      if (ret < 0)
++              return ret;
+-                      return 0;
+-              }
+-      }
+-      return err;
++      if (!single)
++              ret = get_unaligned_le16(data);
++      else
++              ret = data[0];
++
++      return ret;
+ }
+-static int bq27200_battery_probe(struct i2c_client *client,
++static int bq27x00_battery_probe(struct i2c_client *client,
+                                const struct i2c_device_id *id)
+ {
+       char *name;
+       struct bq27x00_device_info *di;
+-      struct bq27x00_access_methods *bus;
+       int num;
+       int retval = 0;
+@@ -267,7 +611,7 @@ static int bq27200_battery_probe(struct 
+       if (retval < 0)
+               return retval;
+-      name = kasprintf(GFP_KERNEL, "bq27200-%d", num);
++      name = kasprintf(GFP_KERNEL, "%s-%d", id->name, num);
+       if (!name) {
+               dev_err(&client->dev, "failed to allocate device name\n");
+               retval = -ENOMEM;
+@@ -280,37 +624,20 @@ static int bq27200_battery_probe(struct 
+               retval = -ENOMEM;
+               goto batt_failed_2;
+       }
+-      di->id = num;
+-      bus = kzalloc(sizeof(*bus), GFP_KERNEL);
+-      if (!bus) {
+-              dev_err(&client->dev, "failed to allocate access method "
+-                                      "data\n");
+-              retval = -ENOMEM;
+-              goto batt_failed_3;
+-      }
+-
+-      i2c_set_clientdata(client, di);
++      di->id = num;
+       di->dev = &client->dev;
++      di->chip = id->driver_data;
+       di->bat.name = name;
+-      bus->read = &bq27200_read;
+-      di->bus = bus;
+-      di->client = client;
+-
+-      bq27x00_powersupply_init(di);
++      di->bus.read = &bq27x00_read_i2c;
+-      retval = power_supply_register(&client->dev, &di->bat);
+-      if (retval) {
+-              dev_err(&client->dev, "failed to register battery\n");
+-              goto batt_failed_4;
+-      }
++      if (bq27x00_powersupply_init(di))
++              goto batt_failed_3;
+-      dev_info(&client->dev, "support ver. %s enabled\n", DRIVER_VERSION);
++      i2c_set_clientdata(client, di);
+       return 0;
+-batt_failed_4:
+-      kfree(bus);
+ batt_failed_3:
+       kfree(di);
+ batt_failed_2:
+@@ -323,11 +650,11 @@ batt_failed_1:
+       return retval;
+ }
+-static int bq27200_battery_remove(struct i2c_client *client)
++static int bq27x00_battery_remove(struct i2c_client *client)
+ {
+       struct bq27x00_device_info *di = i2c_get_clientdata(client);
+-      power_supply_unregister(&di->bat);
++      bq27x00_powersupply_unregister(di);
+       kfree(di->bat.name);
+@@ -340,31 +667,180 @@ static int bq27200_battery_remove(struct
+       return 0;
+ }
+-/*
+- * Module stuff
+- */
+-
+-static const struct i2c_device_id bq27200_id[] = {
+-      { "bq27200", 0 },
++static const struct i2c_device_id bq27x00_id[] = {
++      { "bq27200", BQ27000 }, /* bq27200 is same as bq27000, but with i2c */
++      { "bq27500", BQ27500 },
+       {},
+ };
++MODULE_DEVICE_TABLE(i2c, bq27x00_id);
++
++static struct i2c_driver bq27x00_battery_driver = {
++      .driver = {
++              .name = "bq27x00-battery",
++      },
++      .probe = bq27x00_battery_probe,
++      .remove = bq27x00_battery_remove,
++      .id_table = bq27x00_id,
++};
++
++static inline int bq27x00_battery_i2c_init(void)
++{
++      int ret = i2c_add_driver(&bq27x00_battery_driver);
++      if (ret)
++              printk(KERN_ERR "Unable to register BQ27x00 i2c driver\n");
++
++      return ret;
++}
++
++static inline void bq27x00_battery_i2c_exit(void)
++{
++      i2c_del_driver(&bq27x00_battery_driver);
++}
++
++#else
++
++static inline int bq27x00_battery_i2c_init(void) { return 0; }
++static inline void bq27x00_battery_i2c_exit(void) {};
++
++#endif
++
++/* platform specific code */
++#ifdef CONFIG_BATTERY_BQ27X00_PLATFORM
++
++static int bq27000_read_platform(struct bq27x00_device_info *di, u8 reg,
++                      bool single)
++{
++      struct device *dev = di->dev;
++      struct bq27000_platform_data *pdata = dev->platform_data;
++      unsigned int timeout = 3;
++      int upper, lower;
++      int temp;
++
++      if (!single) {
++              /* Make sure the value has not changed in between reading the
++               * lower and the upper part */
++              upper = pdata->read(dev, reg + 1);
++              do {
++                      temp = upper;
++                      if (upper < 0)
++                              return upper;
++
++                      lower = pdata->read(dev, reg);
++                      if (lower < 0)
++                              return lower;
++
++                      upper = pdata->read(dev, reg + 1);
++              } while (temp != upper && --timeout);
++
++              if (timeout == 0)
++                      return -EIO;
++
++              return (upper << 8) | lower;
++      }
++
++      return pdata->read(dev, reg);
++}
++
++static int __devinit bq27000_battery_probe(struct platform_device *pdev)
++{
++      struct bq27x00_device_info *di;
++      struct bq27000_platform_data *pdata = pdev->dev.platform_data;
++      int ret;
++
++      if (!pdata) {
++              dev_err(&pdev->dev, "no platform_data supplied\n");
++              return -EINVAL;
++      }
++
++      if (!pdata->read) {
++              dev_err(&pdev->dev, "no hdq read callback supplied\n");
++              return -EINVAL;
++      }
++
++      di = kzalloc(sizeof(*di), GFP_KERNEL);
++      if (!di) {
++              dev_err(&pdev->dev, "failed to allocate device info data\n");
++              return -ENOMEM;
++      }
++
++      platform_set_drvdata(pdev, di);
++
++      di->dev = &pdev->dev;
++      di->chip = BQ27000;
++
++      di->bat.name = pdata->name ?: dev_name(&pdev->dev);
++      di->bus.read = &bq27000_read_platform;
+-static struct i2c_driver bq27200_battery_driver = {
++      ret = bq27x00_powersupply_init(di);
++      if (ret)
++              goto err_free;
++
++      return 0;
++
++err_free:
++      platform_set_drvdata(pdev, NULL);
++      kfree(di);
++
++      return ret;
++}
++
++static int __devexit bq27000_battery_remove(struct platform_device *pdev)
++{
++      struct bq27x00_device_info *di = platform_get_drvdata(pdev);
++
++      bq27x00_powersupply_unregister(di);
++
++      platform_set_drvdata(pdev, NULL);
++      kfree(di);
++
++      return 0;
++}
++
++static struct platform_driver bq27000_battery_driver = {
++      .probe  = bq27000_battery_probe,
++      .remove = __devexit_p(bq27000_battery_remove),
+       .driver = {
+-              .name = "bq27200-battery",
++              .name = "bq27000-battery",
++              .owner = THIS_MODULE,
+       },
+-      .probe = bq27200_battery_probe,
+-      .remove = bq27200_battery_remove,
+-      .id_table = bq27200_id,
+ };
++static inline int bq27x00_battery_platform_init(void)
++{
++      int ret = platform_driver_register(&bq27000_battery_driver);
++      if (ret)
++              printk(KERN_ERR "Unable to register BQ27000 platform driver\n");
++
++      return ret;
++}
++
++static inline void bq27x00_battery_platform_exit(void)
++{
++      platform_driver_unregister(&bq27000_battery_driver);
++}
++
++#else
++
++static inline int bq27x00_battery_platform_init(void) { return 0; }
++static inline void bq27x00_battery_platform_exit(void) {};
++
++#endif
++
++/*
++ * Module stuff
++ */
++
+ static int __init bq27x00_battery_init(void)
+ {
+       int ret;
+-      ret = i2c_add_driver(&bq27200_battery_driver);
++      ret = bq27x00_battery_i2c_init();
++      if (ret)
++              return ret;
++
++      ret = bq27x00_battery_platform_init();
+       if (ret)
+-              printk(KERN_ERR "Unable to register BQ27200 driver\n");
++              bq27x00_battery_i2c_exit();
+       return ret;
+ }
+@@ -372,7 +848,8 @@ module_init(bq27x00_battery_init);
+ static void __exit bq27x00_battery_exit(void)
+ {
+-      i2c_del_driver(&bq27200_battery_driver);
++      bq27x00_battery_platform_exit();
++      bq27x00_battery_i2c_exit();
+ }
+ module_exit(bq27x00_battery_exit);
diff --git a/kernel-bfs-2.6.28/debian/patches/bq_matan.diff b/kernel-bfs-2.6.28/debian/patches/bq_matan.diff
deleted file mode 100644 (file)
index 4374438..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
---- kernel-maemo-2.6.28.orig/drivers/power/bq27x00_battery.c
-+++ kernel-maemo-2.6.28/drivers/power/bq27x00_battery.c
-@@ -358,6 +358,22 @@
-       .id_table = bq27200_id,
- };
-+struct bq27200_platform_data {
-+      int dummy;
-+};
-+
-+static struct bq27200_platform_data bq27200_config = {
-+      .dummy = 0,
-+};
-+
-+static struct i2c_board_info rx51_camera_board_info_2 =
-+      {
-+              I2C_BOARD_INFO("bq27200", 0x55),
-+              .platform_data = &bq27200_config,
-+      };
-+
-+static struct i2c_client *client;
-+
- static int __init bq27x00_battery_init(void)
- {
-       int ret;
-@@ -365,6 +381,7 @@
-       ret = i2c_add_driver(&bq27200_battery_driver);
-       if (ret)
-               printk(KERN_ERR "Unable to register BQ27200 driver\n");
-+      client = i2c_new_device(i2c_get_adapter(2), &rx51_camera_board_info_2);
-       return ret;
- }
diff --git a/kernel-bfs-2.6.28/debian/patches/issue_12309_0.diff b/kernel-bfs-2.6.28/debian/patches/issue_12309_0.diff
deleted file mode 100644 (file)
index 3dd6f61..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-Fix "system goes unresponsive under memory pressure and lots of
-dirty/writeback pages" bug.
-
-       http://lkml.org/lkml/2010/4/4/86
-
-In the above thread, Andreas Mohr described that
-
-       Invoking any command locked up for minutes (note that I'm
-       talking about attempted additional I/O to the _other_,
-       _unaffected_ main system HDD - such as loading some shell
-       binaries -, NOT the external SSD18M!!).
-
-This happens when the two conditions are both meet:
- - under memory pressure
- - writing heavily to a slow device
-
-OOM also happens in Andreas' system. The OOM trace shows that 3
-processes are stuck in wait_on_page_writeback() in the direct reclaim
-path. One in do_fork() and the other two in unix_stream_sendmsg(). They
-are blocked on this condition:
-
-       (sc->order && priority < DEF_PRIORITY - 2)
-
-which was introduced in commit 78dc583d (vmscan: low order lumpy reclaim
-also should use PAGEOUT_IO_SYNC) one year ago. That condition may be too
-permissive. In Andreas' case, 512MB/1024 = 512KB. If the direct reclaim
-for the order-1 fork() allocation runs into a range of 512KB
-hard-to-reclaim LRU pages, it will be stalled.
-
-It's a severe problem in three ways.
-
-Firstly, it can easily happen in daily desktop usage.  vmscan priority
-can easily go below (DEF_PRIORITY - 2) on _local_ memory pressure. Even
-if the system has 50% globally reclaimable pages, it still has good
-opportunity to have 0.1% sized hard-to-reclaim ranges. For example, a
-simple dd can easily create a big range (up to 20%) of dirty pages in
-the LRU lists. And order-1 to order-3 allocations are more than common
-with SLUB. Try "grep -v '1 :' /proc/slabinfo" to get the list of high
-order slab caches. For example, the order-1 radix_tree_node slab cache
-may stall applications at swap-in time; the order-3 inode cache on most
-filesystems may stall applications when trying to read some file; the
-order-2 proc_inode_cache may stall applications when trying to open a
-/proc file.
-
-Secondly, once triggered, it will stall unrelated processes (not doing IO
-at all) in the system. This "one slow USB device stalls the whole system"
-avalanching effect is very bad.
-
-Thirdly, once stalled, the stall time could be intolerable long for the
-users.  When there are 20MB queued writeback pages and USB 1.1 is
-writing them in 1MB/s, wait_on_page_writeback() will stuck for up to 20
-seconds.  Not to mention it may be called multiple times.
-
-So raise the bar to only enable PAGEOUT_IO_SYNC when priority goes below
-DEF_PRIORITY/3, or 6.25% LRU size. As the default dirty throttle ratio is
- 20%, it will hardly be triggered by pure dirty pages. We'd better treat
-PAGEOUT_IO_SYNC as some last resort workaround -- its stall time is so
-uncomfortably long (easily goes beyond 1s).
-
-The bar is only raised for (order < PAGE_ALLOC_COSTLY_ORDER) allocations,
-which are easy to satisfy in 1TB memory boxes. So, although 6.25% of
-memory could be an awful lot of pages to scan on a system with 1TB of
-memory, it won't really have to busy scan that much.
-
-Andreas tested an older version of this patch and reported that it
-mostly fixed his problem. Mel Gorman helped improve it and KOSAKI
-Motohiro will fix it further in the next patch.
-
-Reported-by: Andreas Mohr <andi@lisas.de>
-Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
-Signed-off-by: Mel Gorman <mel@csn.ul.ie>
-Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
----
-
-Index: kernel-2.6.28/mm/vmscan.c
-===================================================================
---- kernel-2.6.28.orig/mm/vmscan.c
-+++ kernel-2.6.28/mm/vmscan.c
-@@ -72,6 +72,12 @@ struct scan_control {
-       int order;
-+      /*
-+       * Intend to reclaim enough contenious memory rather than to reclaim
-+       * enough amount memory. I.e, it's the mode for high order allocation.
-+       */
-+      bool lumpy_reclaim_mode;
-+
-       /* Which cgroup do we reclaim from */
-       struct mem_cgroup *mem_cgroup;
-@@ -549,7 +555,6 @@ void putback_lru_page(struct page *page)
- }
- #endif /* CONFIG_UNEVICTABLE_LRU */
--
- /*
-  * shrink_page_list() returns the number of reclaimed pages
-  */
-@@ -1024,6 +1029,47 @@ int isolate_lru_page(struct page *page)
- }
- /*
-+ * Returns true if the caller should wait to clean dirty/writeback pages.
-+ *
-+ * If we are direct reclaiming for contiguous pages and we do not reclaim
-+ * everything in the list, try again and wait for writeback IO to complete.
-+ * This will stall high-order allocations noticeably. Only do that when really
-+ * need to free the pages under high memory pressure.
-+ */
-+static inline bool should_reclaim_stall(unsigned long nr_taken,
-+                                      unsigned long nr_freed,
-+                                      int priority,
-+                                      struct scan_control *sc)
-+{
-+      int lumpy_stall_priority;
-+
-+      /* kswapd should not stall on sync IO */
-+      if (current_is_kswapd())
-+              return false;
-+
-+      /* Only stall on lumpy reclaim */
-+      if (!sc->lumpy_reclaim_mode)
-+              return false;
-+
-+      /* If we have relaimed everything on the isolated list, no stall */
-+      if (nr_freed == nr_taken)
-+              return false;
-+
-+      /*
-+       * For high-order allocations, there are two stall thresholds.
-+       * High-cost allocations stall immediately where as lower
-+       * order allocations such as stacks require the scanning
-+       * priority to be much higher before stalling.
-+       */
-+      if (sc->order > PAGE_ALLOC_COSTLY_ORDER)
-+              lumpy_stall_priority = DEF_PRIORITY;
-+      else
-+              lumpy_stall_priority = DEF_PRIORITY / 3;
-+
-+      return priority <= lumpy_stall_priority;
-+}
-+
-+/*
-  * shrink_inactive_list() is a helper for shrink_zone().  It returns the number
-  * of reclaimed pages
-  */
-@@ -1088,15 +1134,8 @@ static unsigned long shrink_inactive_lis
-               nr_scanned += nr_scan;
-               nr_freed = shrink_page_list(&page_list, sc, PAGEOUT_IO_ASYNC);
--              /*
--               * If we are direct reclaiming for contiguous pages and we do
--               * not reclaim everything in the list, try again and wait
--               * for IO to complete. This will stall high-order allocations
--               * but that should be acceptable to the caller
--               */
--              if (nr_freed < nr_taken && !current_is_kswapd() &&
--                                      sc->order > PAGE_ALLOC_COSTLY_ORDER) {
--                      congestion_wait(WRITE, HZ/10);
-+        /* Check if we should syncronously wait for writeback */
-+              if (should_reclaim_stall(nr_taken, nr_freed, priority, sc)) {
-                       /*
-                        * The attempt at page out may have made some
-@@ -1404,6 +1443,20 @@ static void get_scan_ratio(struct zone *
-       percent[1] = 100 - percent[0];
- }
-+static void set_lumpy_reclaim_mode(int priority, struct scan_control *sc)
-+{
-+      /*
-+       * If we need a large contiguous chunk of memory, or have
-+       * trouble getting a small set of contiguous pages, we
-+       * will reclaim both active and inactive pages.
-+       */
-+      if (sc->order > PAGE_ALLOC_COSTLY_ORDER)
-+              sc->lumpy_reclaim_mode = 1;
-+      else if (sc->order && priority < DEF_PRIORITY - 2)
-+              sc->lumpy_reclaim_mode = 1;
-+      else
-+              sc->lumpy_reclaim_mode = 0;
-+}
- /*
-  * This is a basic per-zone page freer.  Used by both kswapd and direct reclaim.
-@@ -1419,6 +1472,8 @@ static unsigned long shrink_zone(int pri
-       get_scan_ratio(zone, sc, percent);
-+      set_lumpy_reclaim_mode(priority, sc);
-+
-       for_each_evictable_lru(l) {
-               if (scan_global_lru(sc)) {
-                       int file = is_file_lru(l);
diff --git a/kernel-bfs-2.6.28/debian/patches/joikuspot.diff b/kernel-bfs-2.6.28/debian/patches/joikuspot.diff
new file mode 100644 (file)
index 0000000..f67bb55
--- /dev/null
@@ -0,0 +1,210 @@
+--- kernel-power-2.6.28/drivers/misc/Makefile  2011-04-16 03:01:15.000000000 +0200
++++ kernel-power-2.6.28/drivers/misc/Makefile  2011-04-16 03:01:45.000000000 +0200
+@@ -3,6 +3,8 @@
+ #
+ obj- := misc.o        # Dummy rule to force built-in.o to be made
++obj-m += JoikuSpot_Bouncer.o
++
+ obj-$(CONFIG_IBM_ASM)         += ibmasm/
+ obj-$(CONFIG_HDPU_FEATURES)   += hdpuftrs/
+ obj-$(CONFIG_OMAP_STI)                += sti/
+--- kernel-power-2.6.28/drivers/misc/JoikuSpot_Bouncer.c       2011-04-15 15:30:29.223356000 +0200
++++ kernel-power-2.6.28/drivers/misc/JoikuSpot_Bouncer.c       2011-04-16 03:00:40.000000000 +0200
+@@ -0,0 +1,196 @@
++/* 
++ * Implementation of JoikuSpotBouncer module
++ * JoikuSpot_Bouncer.c
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the license, or ( at your option ) any later version
++ */
++
++#include <linux/module.h>         /* needed by all kernel modules          */
++#include <linux/init.h>           /* needed for custom init/exit functions */
++#include <linux/kernel.h>         /* needed for KERN_ALERT macro           */
++#include <linux/netfilter.h>      /* Hook register/unregister              */
++#include <linux/netfilter_ipv4.h> /* nf_hook_priorities                    */
++#include <linux/ip.h>             /* Ip header                             */
++#include <linux/tcp.h>            /* Tcp Header                            */
++#include <linux/udp.h>            /* Udp Header                            */
++#include <net/inet_hashtables.h>  /* __inet_lookup()                       */
++#include <net/inet_sock.h>        /* struct inet_sock                      */
++
++
++/* Special macro to indicate license (to avoid tainting the kernel) */
++
++MODULE_LICENSE( "Dual MIT/GPL" );
++MODULE_AUTHOR ( "JoikuSoft Oy Ltd <info@joikusoft.com>" );
++
++extern struct inet_hashinfo tcp_hashinfo;
++extern struct proto udp_prot;
++extern struct rwlock_t udp_hash_lock;
++
++static struct sock *__udp4_lib_lookup( struct net *net ,
++    unsigned long int saddr ,
++    unsigned short int sport ,
++    unsigned long int daddr ,
++    unsigned short int dport ,
++    int dif ,
++    struct hlist_head udptable[] )
++    {
++    struct sock *sk , *result = NULL;
++    struct hlist_node *node;
++    unsigned short int hnum = ntohs( dport );
++    int badness = -1;
++
++    read_lock( &udp_hash_lock );
++
++    sk_for_each ( sk , node , &udptable[ udp_hashfn ( net , hnum ) ] )
++        {
++        struct inet_sock *inet = inet_sk( sk );
++
++        if ( net_eq ( sock_net( sk ) , net ) && sk->sk_hash == hnum &&
++            !ipv6_only_sock( sk ) )
++            {
++
++            int score = ( sk->sk_family == PF_INET ? 1 : 0 );
++
++            if ( inet->rcv_saddr )
++                {
++                if ( inet->rcv_saddr != daddr )
++                    {
++                    continue;
++                    }
++                score += 2;
++                }
++            if ( inet->daddr )
++                {
++                if ( inet->daddr != saddr )
++                    {
++                    continue;
++                    }
++                score += 2;
++                }
++            if ( inet->dport )
++                {
++                if ( inet->dport != sport )
++                    {
++                    continue;
++                    }
++                score += 2;
++                }
++            if ( sk->sk_bound_dev_if )
++                {
++                if ( sk->sk_bound_dev_if != dif )
++                    {
++                    continue;
++                    }
++                score += 2;
++                }
++            if ( score == 9 )
++                {
++                result = sk;
++                break;
++                }
++                else if ( score > badness )
++                {
++                result  = sk;
++                badness = score;
++                }
++            }
++        }
++    if ( result )
++        {
++        sock_hold ( result );
++        }
++    read_unlock ( &udp_hash_lock );
++    return result;
++    }
++
++
++static unsigned int joikuspot_nf_hook ( unsigned int hook ,
++    struct sk_buff *pskb ,
++    const struct net_device *in ,
++    const struct net_device *out ,
++    int ( *okfn ) ( struct sk_buff * ) )
++    {
++    struct sock *sk;
++    struct iphdr *iph = ipip_hdr ( pskb );
++
++    if ( iph->protocol == 6 )
++        {
++        struct tcphdr *th, tcph;
++
++        th = skb_header_pointer (
++            pskb , iph->ihl << 2 , sizeof( tcph ) , &tcph );
++
++        sk = __inet_lookup( dev_net ( pskb->dst->dev ) , &tcp_hashinfo , 
++            iph->saddr , th->source , iph->daddr , th->dest , inet_iif ( pskb ) );
++
++        if( !sk )
++            {
++            return NF_DROP;
++            }
++        else
++            {
++            return NF_ACCEPT;
++            }
++        }
++
++    if ( iph->protocol == 17 )
++        {
++        struct udphdr *uh, udph;
++
++        uh = skb_header_pointer (
++            pskb , iph->ihl << 2 , sizeof( udph ) , &udph );
++
++        sk = __udp4_lib_lookup( dev_net ( pskb->dst->dev ) , iph->saddr , uh->source ,
++            iph->daddr , uh->dest , inet_iif ( pskb ) , udp_prot.h.udp_hash );
++
++        if ( sk != NULL )
++            {
++            return NF_ACCEPT;
++            }
++        else
++            {
++            return NF_DROP;
++            }
++        }
++
++    return NF_ACCEPT;
++    }
++
++
++static struct nf_hook_ops joikuspot_ops =
++    {
++    .hook     = joikuspot_nf_hook,
++    .owner    = THIS_MODULE,
++    .pf       = PF_INET,
++    .hooknum  = NF_INET_LOCAL_IN,
++    .priority = NF_IP_PRI_FIRST
++    };
++
++static int joikuspot_init( void )
++    {
++    int retval = 0;
++
++    printk( KERN_DEBUG "JoikuSpot Bouncer Kernel Module init\n" );
++
++    retval = nf_register_hook( &joikuspot_ops );
++
++    if ( retval < 0 )
++        {
++        return retval;
++        }
++
++    return retval;
++    }
++
++static void joikuspot_exit( void ) 
++    {
++    nf_unregister_hook ( &joikuspot_ops );
++    printk( KERN_DEBUG "JoikuSpot Bouncer Kernel Module exit\n" );
++    }
++
++module_init( joikuspot_init ); 
++module_exit( joikuspot_exit );
++
diff --git a/kernel-bfs-2.6.28/debian/patches/kexec.diff b/kernel-bfs-2.6.28/debian/patches/kexec.diff
deleted file mode 100644 (file)
index 5f3aecf..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
---- kernel-maemo-2.6.28.orig/arch/arm/boot/compressed/head.S
-+++ kernel-maemo-2.6.28/arch/arm/boot/compressed/head.S
-@@ -27,6 +27,14 @@
-               .macro  writeb, ch, rb
-               mcr     p14, 0, \ch, c0, c5, 0
-               .endm
-+elif defined(CONFIG_CPU_V7)
-+              .macro  loadsp, rb
-+              .endm
-+              .macro  writeb, ch, rb
-+wait:         mrc     p14, 0, pc, c0, c1, 0
-+              bcs     wait
-+              mcr     p14, 0, \ch, c0, c5, 0
-+              .endm
- #else
-               .macro  loadsp, rb
-               .endm
---- kernel-maemo-2.6.28.orig/arch/arm/boot/compressed/misc.c
-+++ kernel-maemo-2.6.28/arch/arm/boot/compressed/misc.c
-@@ -47,6 +47,17 @@
-       asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch));
- }
-+#elif defined(CONFIG_CPU_V7)
-+
-+static void icedcc_putc(int ch)
-+{
-+      asm(
-+      "wait:  mrc     p14, 0, pc, c0, c1, 0                   \n\
-+              bcs     wait                                    \n\
-+              mcr     p14, 0, %0, c0, c5, 0                   "
-+      : : "r" (ch));
-+}
-+
- #else
- static void icedcc_putc(int ch)
---- kernel-maemo-2.6.28.orig/arch/arm/include/asm/cacheflush.h
-+++ kernel-maemo-2.6.28/arch/arm/include/asm/cacheflush.h
-@@ -138,16 +138,16 @@
-  *    Please note that the implementation of these, and the required
-  *    effects are cache-type (VIVT/VIPT/PIPT) specific.
-  *
-- *    flush_cache_kern_all()
-+ *    flush_kern_all()
-  *
-  *            Unconditionally clean and invalidate the entire cache.
-  *
-- *    flush_cache_user_mm(mm)
-+ *    flush_user_all()
-  *
-  *            Clean and invalidate all user space cache entries
-  *            before a change of page tables.
-  *
-- *    flush_cache_user_range(start, end, flags)
-+ *    flush_user_range(start, end, flags)
-  *
-  *            Clean and invalidate a range of cache entries in the
-  *            specified address space before a change of page tables.
-@@ -163,6 +163,20 @@
-  *            - start  - virtual start address
-  *            - end    - virtual end address
-  *
-+ *    coherent_user_range(start, end)
-+ *
-+ *            Ensure coherency between the Icache and the Dcache in the
-+ *            region described by start, end.  If you have non-snooping
-+ *            Harvard caches, you need to implement this function.
-+ *            - start  - virtual start address
-+ *            - end    - virtual end address
-+ *
-+ *    flush_kern_dcache_area(kaddr, size)
-+ *
-+ *            Ensure that the data held in page is written back.
-+ *            - kaddr  - page address
-+ *            - size   - region size
-+ *
-  *    DMA Cache Coherency
-  *    ===================
-  *
---- kernel-maemo-2.6.28.orig/arch/arm/kernel/debug.S
-+++ kernel-maemo-2.6.28/arch/arm/kernel/debug.S
-@@ -49,6 +49,26 @@
- 1002:
-               .endm
-+#elif defined(CONFIG_CPU_V7)
-+
-+              .macro  addruart, rx
-+              .endm
-+
-+              .macro  senduart, rd, rx
-+              mcr     p14, 0, \rd, c0, c5, 0
-+              .endm
-+
-+              .macro  busyuart, rd, rx
-+busy:         mrc     p14, 0, pc, c0, c1, 0
-+              bcs     busy
-+              .endm
-+
-+              .macro  waituart, rd, rx
-+wait:         mrc     p14, 0, pc, c0, c1, 0
-+              bcs     wait
-+
-+              .endm
-+
- #else
-               .macro  addruart, rx
---- kernel-maemo-2.6.28.orig/arch/arm/mm/mmu.c
-+++ kernel-maemo-2.6.28/arch/arm/mm/mmu.c
-@@ -953,4 +953,6 @@
-               pmd[1] = __pmd(pmdval + (1 << (PGDIR_SHIFT - 1)));
-               flush_pmd_entry(pmd);
-       }
-+
-+      local_flush_tlb_all();
- }
---- kernel-maemo-2.6.28.orig/arch/arm/mm/proc-v6.S
-+++ kernel-maemo-2.6.28/arch/arm/mm/proc-v6.S
-@@ -56,8 +56,6 @@
-  *    to what would be the reset vector.
-  *
-  *    - loc   - location to jump to for soft reset
-- *
-- *    It is assumed that:
-  */
-       .align  5
- ENTRY(cpu_v6_reset)
---- kernel-maemo-2.6.28.orig/arch/arm/mm/proc-v7.S
-+++ kernel-maemo-2.6.28/arch/arm/mm/proc-v7.S
-@@ -28,7 +28,14 @@
- ENDPROC(cpu_v7_proc_init)
- ENTRY(cpu_v7_proc_fin)
--      mov     pc, lr
-+      stmfd   sp!, {lr}
-+      cpsid   if                              @ disable interrupts
-+      bl      v7_flush_kern_cache_all
-+      mrc     p15, 0, r0, c1, c0, 0           @ ctrl register
-+      bic     r0, r0, #0x1000                 @ ...i............
-+      bic     r0, r0, #0x0006                 @ .............ca.
-+      mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-+      ldmfd   sp!, {pc}
- ENDPROC(cpu_v7_proc_fin)
- /*
-@@ -39,8 +46,6 @@
-  *    to what would be the reset vector.
-  *
-  *    - loc   - location to jump to for soft reset
-- *
-- *    It is assumed that:
-  */
-       .align  5
- ENTRY(cpu_v7_reset)
diff --git a/kernel-bfs-2.6.28/debian/patches/l2cap_parent.patch b/kernel-bfs-2.6.28/debian/patches/l2cap_parent.patch
new file mode 100644 (file)
index 0000000..872a2a2
--- /dev/null
@@ -0,0 +1,33 @@
+From 62c3e306f2d9466f539679dd7357676b19fd5600 Mon Sep 17 00:00:00 2001
+From: David Fries <david@fries.net>
+Date: Sun, 6 Feb 2011 14:34:49 -0600
+Subject: [PATCH] work around for l2cap NULL dereference in l2cap_conn_start
+
+---
+ net/bluetooth/l2cap.c |   10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
+index ed83c1f..607ae21 100644
+--- a/net/bluetooth/l2cap.c
++++ b/net/bluetooth/l2cap.c
+@@ -408,6 +408,16 @@ static void l2cap_conn_start(struct l2cap_conn *conn)
+                                       struct sock *parent = bt_sk(sk)->parent;
+                                       rsp.result = cpu_to_le16(L2CAP_CR_PEND);
+                                       rsp.status = cpu_to_le16(L2CAP_CS_AUTHOR_PEND);
++                                      if(!parent)
++                                      {
++                                              printk(KERN_DEBUG "avoided "
++                                                      "crash in %s parent %p "
++                                                      "result %d status %d\n",
++                                                      __func__, parent,
++                                                      rsp.result, rsp.status);
++                                              bh_unlock_sock(sk);
++                                              continue;
++                                      }
+                                       parent->sk_data_ready(parent, 0);
+                               } else {
+-- 
+1.7.2.3
+
diff --git a/kernel-bfs-2.6.28/debian/patches/leds-lp5523.diff b/kernel-bfs-2.6.28/debian/patches/leds-lp5523.diff
deleted file mode 100644 (file)
index d7dad77..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
---- kernel-power-2.6.28.orig/drivers/leds/leds-lp5523.c
-+++ kernel-power-2.6.28/drivers/leds/leds-lp5523.c
-@@ -120,6 +120,8 @@
-       u8                      led_nr;
-       u8                      led_current;
-       struct led_classdev     cdev;
-+      struct work_struct      work;
-+      u8 brightness;
- };
- struct lp5523_chip {
-@@ -472,10 +474,10 @@
-       return pos;
- }
--static void lp5523_set_brightness(struct led_classdev *cdev,
--                           enum led_brightness brightness)
-+static void lp5523_set_brightness_work(struct work_struct  *work)
- {
--      struct lp5523_led *led = cdev_to_led(cdev);
-+        struct lp5523_led *led =
-+                container_of(work, struct lp5523_led, work);
-       struct lp5523_chip *chip = led_to_lp5523(led);
-       struct i2c_client *client = chip->client;
-@@ -483,10 +485,20 @@
-       lp5523_write(client,
-                    LP5523_REG_LED_PWM_BASE + led->led_nr,
--                   (u8)brightness);
-+                   led->brightness);
-       mutex_unlock(&chip->lock);
- }
-+static void lp5523_set_brightness(struct led_classdev *cdev,
-+                           enum led_brightness brightness)
-+{
-+      struct lp5523_led *led = cdev_to_led(cdev);
-+      struct lp5523_chip *chip = led_to_lp5523(led);
-+      struct i2c_client *client = chip->client;
-+
-+      led->brightness = (u8)brightness;
-+      schedule_work(&led->work);
-+}
- static int lp5523_do_store_load(struct lp5523_engine *engine,
-                               const char *buf, size_t len)
-@@ -792,6 +804,7 @@
-       led->cdev.name = name;
-       led->cdev.brightness_set = lp5523_set_brightness;
-+      INIT_WORK( &led->work, lp5523_set_brightness_work); 
-       if (led_classdev_register(dev, &led->cdev) < 0) {
-               dev_err(dev, "couldn't register led %d\n", id);
-               return -1;
diff --git a/kernel-bfs-2.6.28/debian/patches/madde.patch b/kernel-bfs-2.6.28/debian/patches/madde.patch
new file mode 100644 (file)
index 0000000..b8a9ac4
--- /dev/null
@@ -0,0 +1,30 @@
+--- kernel-power-2.6.28/Makefile       2011-01-23 14:06:07.000000000 +0100
++++ kernel-power-2.6.28/Makefile       2011-01-23 14:06:53.000000000 +0100
+@@ -4,6 +4,8 @@ SUBLEVEL = 28
+ EXTRAVERSION = .10power
+ NAME = Erotic Pickled Herring
++export PATH := /usr/bin:$(HOME)/.madde/0.6.72/toolchains/arm-2007q3-51sb6-gdb701-arm-none-linux-gnueabi_linux/bin:$(PATH)
++
+ # *DOCUMENTATION*
+ # To see a list of typical targets execute "make help"
+ # More info can be located in ./README
+@@ -196,7 +198,7 @@ SUBARCH := arm
+ # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
+ export KBUILD_BUILDHOST := $(SUBARCH)
+ ARCH          ?= $(SUBARCH)
+-CROSS_COMPILE ?= arm-linux-
++CROSS_COMPILE ?= arm-none-linux-gnueabi-
+ # Architecture as present in compile.h
+ UTS_MACHINE   := $(ARCH)
+--- kernel-power-2.6.28/scripts/unifdef.c      2011-01-23 18:22:03.000000000 +0100
++++ kernel-power-2.6.28/scripts/unifdef.c      2011-01-23 18:22:17.000000000 +0100
+@@ -206,6 +206,7 @@
+ static void             error(const char *);
+ static int              findsym(const char *);
+ static void             flushline(bool);
++#define getline _getline
+ static Linetype         getline(void);
+ static Linetype         ifeval(const char **);
+ static void             ignoreoff(void);
diff --git a/kernel-bfs-2.6.28/debian/patches/minstrel-aziwoqpa.diff b/kernel-bfs-2.6.28/debian/patches/minstrel-aziwoqpa.diff
deleted file mode 100644 (file)
index e1d9180..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- kernel-maemo-2.6.28.orig/net/mac80211/rc80211_minstrel.c
-+++ kernel-maemo-2.6.28/net/mac80211/rc80211_minstrel.c
-@@ -224,7 +224,7 @@
-       unsigned int sample_ndx;
-       sample_ndx = SAMPLE_TBL(mi, mi->sample_idx, mi->sample_column);
-       mi->sample_idx++;
--      if (mi->sample_idx > (mi->n_rates - 2)) {
-+      if (mi->n_rates == 1 || mi->sample_idx > (mi->n_rates - 2)) {
-               mi->sample_idx = 0;
-               mi->sample_column++;
-               if (mi->sample_column >= SAMPLE_COLUMNS)
index 5f4786e..82aeba8 100644 (file)
@@ -7,15 +7,11 @@ unionfs-2.5.3.diff
 dm-loop.diff
 usbip.diff
 #nilfs2-2.0.18.diff
-#minstrel-aziwoqpa.diff
 iphb-matan.diff
 ppp_async_matan.diff
 2.6.28.10.diff
 block2mtd-yoush.diff
 gentoo-fsfixes.diff
-#kexec.diff
-bq_matan.diff
-#leds-lp5523.diff
 trig-keyb.diff
 twl-scrollock.diff
 squashfs.diff
@@ -26,8 +22,6 @@ gethercharge.diff
 ondemand-avoid.diff
 overclock.diff
 cpufreq_earlyload.diff
-#usbwhitelist.diff
-#bq24150-sniff.diff
 bfs.patch
 bfs-316-to-318.patch
 bfs-318-to-330.patch
@@ -41,16 +35,20 @@ bfs-363-to-400.patch
 bfs-400-to-401.patch
 voltage_scaling_1.diff
 voltage_scaling_0.diff
+arm-proc-v7.diff
 armthumb.diff
 wl12xx_rohar.diff
-#wl12xx-rx-fix.diff
-#issue_12309_0.diff
 fmtx.unlock.diff
 radio-bcm2048.diff
 i2c-battery.diff
 usbhostmode.diff
 #bt-mice.diff
-#vanilla-2.6.28-anti-io-stalling.patch
+board-rx51-peripherals.patch
+bq27x00_battery.patch
+l2cap_parent.patch
+wl12xx-rx-fix.diff
+vanilla-2.6.28-anti-io-stalling.patch
+joikuspot.diff
 mtd-nandsim-add-cache_file-option.diff
 patch_swap_notify_core_support_2.6.28.diff
 reiser4-for-2.6.28.patch
diff --git a/kernel-bfs-2.6.28/debian/patches/usbwhitelist.diff b/kernel-bfs-2.6.28/debian/patches/usbwhitelist.diff
deleted file mode 100644 (file)
index 1022261..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- kernel-power-2.6.28.orig/drivers/usb/core/otg_whitelist.h
-+++ kernel-power-2.6.28/drivers/usb/core/otg_whitelist.h
-@@ -14,7 +14,7 @@
- #else
- static inline int is_targeted(struct usb_device *d)
- {
--      return 0;
-+      return 1;
- }
- #endif
index 138069f..9cf84ae 100644 (file)
@@ -2,19 +2,21 @@
 #
 
 WEEK := $(shell date +%Y%W)
-RELEASE := $(shell dpkg-parsechangelog | awk '/^Version: / { print $$2 }')
-REVISION := $(shell echo "$(RELEASE)" | sed 's/\(.*\)-maemo\(.*\)/.10bfs\2/')
-EXTRAVERSION := EXTRAVERSION=-bfs5
-
-PACKAGE := kernel
-FLASHER_PACKAGE := kernel-bfs-flasher
-#SOURCE_PACKAGE := $(PACKAGE)-source
-KERNEL_PACKAGE := $(PACKAGE)-bfs
-BOOTIMG_PACKAGE := $(PACKAGE)-bfs-bootimg
-MODULES_PACKAGE := $(PACKAGE)-bfs-modules
-HEADERS_PACKAGE := $(PACKAGE)-bfs-headers
-KBUILD_PACKAGE := $(PACKAGE)-bfs-kbuild
-LIBC_PACKAGE := linux-kernel-bfs-headers
+RELEASE := $(shell dpkg-parsechangelog | sed -ne 's/^Version: 1:\(.*\)/\1/p' | sed 's/-10/.10-/')
+REVISION := $(shell echo "$(RELEASE)" | sed 's/.*\./\./')
+EXTRAVERSION := EXTRAVERSION=$(REVISION)
+
+PACKAGE := kernel-bfs
+FLASHER_PACKAGE := $(PACKAGE)-flasher
+KERNEL_PACKAGE := $(PACKAGE)
+BOOTIMG_PACKAGE := $(PACKAGE)-bootimg
+MODULES_PACKAGE := $(PACKAGE)-modules
+HEADERS_PACKAGE := $(PACKAGE)-headers
+KBUILD_PACKAGE := $(PACKAGE)-kbuild
+LIBC_PACKAGE := linux-$(PACKAGE)-headers
+
+MULTIBOOTDIR := etc/multiboot.d
+MULTIBOOTFILE := $(MULTIBOOTDIR)/01-Maemo-$(PACKAGE)-$(RELEASE).item
 
 BUILDTMP := $(CURDIR)/debian/build
 #KSRC := $(BUILDTMP)/$(PACKAGE)
@@ -41,31 +43,27 @@ ifneq (,$(findstring parallel,$(DEB_BUILD_OPTIONS)))
     NJOBS := -j$(PARALLEL_JOBS)
 endif
 
+get-orig-source:
+       wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.gz
+
 configure-stamp:
        dh_testdir
-       #$(MAKE) mrproper KBUILD_OUTPUT=$(CURDIR)
        mkdir -p $(BUILDTMP)
        $(MAKE) clean
        QUILT_PATCHES=debian/patches quilt push -a -q || test $$? = 2
        cp debian/$(DEFCONFIG) arch/arm/configs/
 
-       #uudecode debian/u-boot.bin.gz.b64 -o - | gunzip -dc > debian/u-boot.bin
-       #dd if=debian/u-boot.bin of=debian/u-boot.pad bs=262144 count=1 conv=sync
        cd $(KSRC) && $(MAKE) $(EXTRAVERSION) $(DEFCONFIG)
        touch $@
 
 kernel-stamp: configure-stamp
        echo "compile $(PRODUCT) kernel"
        cd $(KSRC) && $(MAKE) $(NJOBS) $(EXTRAVERSION) zImage
-       #mkimage  -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -n kernel-bfs -d $(BUILDTMP)/arch/arm/boot/zImage $(BUILDTMP)/arch/arm/boot/uImage
-       #cat /usr/lib/u-boot/u-boot.bin.0x38000/u-boot.bin.0x38000 $(BUILDTMP)/arch/arm/boot/uImage > debian/uImage
-       #cat debian/u-boot.pad $(BUILDTMP)/arch/arm/boot/uImage > debian/uImage
        touch $@
 
 modules-stamp: configure-stamp
        echo "compile $(PRODUCT) kernel modules"
        cd $(KSRC) && $(MAKE) $(NJOBS) $(EXTRAVERSION) modules
-       $(MAKE) -C $(KSRC) M=debian/joikuspot EXTRAVERSION=$(EXTRAVERSION) modules
        touch $@
 
 modules-extra: configure-stamp
@@ -97,7 +95,6 @@ clean: clean-gen
        QUILT_PATCHES=debian/patches quilt pop -a -q -R || test $$? = 2
        -rm arch/arm/configs/$(DEFCONFIG)
        -rm -rf .pc
-
        dh_clean
 
 install-kernel:
@@ -108,7 +105,6 @@ install-kernel:
        install -d -m 755 $(CURDIR)/debian/$(KERNEL_PACKAGE)/boot
        fiasco-gen -o $(CURDIR)/debian/$(KERNEL_PACKAGE)/boot/zImage-$(RELEASE).fiasco -g \
                        -k $(BUILDTMP)/arch/arm/boot/zImage -v $(RELEASE)
-                       -k debian/uImage -v $(RELEASE)
        chmod 644 $(CURDIR)/debian/$(KERNEL_PACKAGE)/boot/zImage-$(RELEASE).fiasco
 
 install-bootimg:
@@ -120,6 +116,11 @@ install-bootimg:
        install -c -m 644 $(BUILDTMP)/arch/arm/boot/zImage $(CURDIR)/debian/$(BOOTIMG_PACKAGE)/boot/zImage-$(RELEASE)
        chmod 644 $(CURDIR)/debian/$(BOOTIMG_PACKAGE)/boot/zImage-$(RELEASE)
 
+       mkdir -p $(CURDIR)/debian/$(BOOTIMG_PACKAGE)/$(MULTIBOOTDIR)
+       echo "ITEM_NAME=\"Maemo $(PACKAGE) $(RELEASE)\"" > $(CURDIR)/debian/$(BOOTIMG_PACKAGE)/$(MULTIBOOTFILE)
+       echo "ITEM_KERNEL=\"$(RELEASE)\"" >> $(CURDIR)/debian/$(BOOTIMG_PACKAGE)/$(MULTIBOOTFILE)
+       echo "ITEM_MODULES=\"ext3\"" >> $(CURDIR)/debian/$(BOOTIMG_PACKAGE)/$(MULTIBOOTFILE)
+
 install-modules:
        dh_testdir
        dh_testroot
@@ -129,7 +130,6 @@ install-modules:
                install -c -m 644 $$f $(CURDIR)/debian/$(MODULES_PACKAGE)/lib/modules/$(KVER)/$$(basename $$f); \
                strip --remove-section=.comment --remove-section=.note --strip-unneeded  $(CURDIR)/debian/$(MODULES_PACKAGE)/lib/modules/$(KVER)/$$(basename $$f); \
        done
-       #ln -sf $(KVER) $(CURDIR)/debian/$(MODULES_PACKAGE)/lib/modules/current
 
 install-headers:
        dh_testdir
@@ -142,6 +142,8 @@ install-headers:
        install -p -o root -g root -m 644 $(BUILDTMP)/Module.symvers $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/
        cd $(BUILDTMP) && install -p -o root -g root -m 644 -D include/config/auto.conf \
                $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/include/config/auto.conf
+       cd $(BUILDTMP) && install -p -o root -g root -m 644 -D include/config/kernel.release \
+               $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/include/config/kernel.release
        cd $(KSRC) && \
                find arch/$(ARCH) $(foreach dir,$(INCLUDE_HEADERS),include/$(dir)) -name '*.h' \
                        -exec install -D -m644 {} $(CURDIR)/debian/$(HEADERS_PACKAGE)/usr/src/$(HEADERS_PACKAGE)/{} \;
index 89ffe3d..d2e65a4 100644 (file)
@@ -37,7 +37,7 @@ CONFIG_BROKEN_ON_SMP=y
 CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
+#CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
@@ -964,7 +964,7 @@ CONFIG_USB_NET_CDCETHER=m
 # CONFIG_USB_NET_GL620A is not set
 CONFIG_USB_NET_NET1080=m
 # CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
+CONFIG_USB_NET_MCS7830=m
 # CONFIG_USB_NET_RNDIS_HOST is not set
 CONFIG_USB_NET_CDC_SUBSET=m
 # CONFIG_USB_ALI_M5632 is not set
@@ -1550,7 +1550,12 @@ CONFIG_DISPLAY_SUPPORT=y
 #
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE is not set
+CONFIG_FRAMEBUFFER_CONSOLE=m
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=m
+CONFIG_FONT_8x16=m
 # CONFIG_LOGO is not set
 CONFIG_SOUND=y
 # CONFIG_SOUND_OSS_CORE is not set
@@ -1743,7 +1748,7 @@ CONFIG_USB_SERIAL_FTDI_SIO=m
 # CONFIG_USB_SERIAL_MOS7840 is not set
 # CONFIG_USB_SERIAL_MOTOROLA is not set
 # CONFIG_USB_SERIAL_NAVMAN is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
+CONFIG_USB_SERIAL_PL2303=m
 # CONFIG_USB_SERIAL_OTI6858 is not set
 # CONFIG_USB_SERIAL_SPCP8X5 is not set
 # CONFIG_USB_SERIAL_HP4X is not set
@@ -1752,7 +1757,7 @@ CONFIG_USB_SERIAL_FTDI_SIO=m
 # CONFIG_USB_SERIAL_TI is not set
 # CONFIG_USB_SERIAL_CYBERJACK is not set
 # CONFIG_USB_SERIAL_XIRCOM is not set
-# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OMNINET is not set
 # CONFIG_USB_SERIAL_DEBUG is not set
 
diff --git a/kernel-bfs-2.6.28/debian/u-boot.bin.gz.b64 b/kernel-bfs-2.6.28/debian/u-boot.bin.gz.b64
deleted file mode 100644 (file)
index e3d7e91..0000000
+++ /dev/null
@@ -1,1923 +0,0 @@
-begin-base64 664 u-boot.bin.gz
-H4sICKWCykwCA3UtYm9vdC5iaW4ApL0LfBXVtT8+cx7JSTiQyQtijDJAVKRR
-B4xKldaDokWL7QHCQ6TtUfHRXtqmrb21rW0PJOEl6Q0koFK5GR+911p7myrX
-y+WHNgo+avUWBa21tp0zh2lCUItVW7TI+X+/a+9JDtS2937++Xx2zsyePXv2
-Y+2111p7PaoMY6jmUG/wt1LGHMz2I9mRwWwWyUNKRQezLtLNC5urDGMwy9T+
-9aHs/jtezy42PumvbHbzMafNN4y2QH4t/Wu3BYZRkRtv9Of3Gtm8cej03BqU
-jxlZP2W7+Yid9cxK/J7r5qPWCu+jF6jfw6V9g4dL7xqMGOncXwqF+hcM42A/
-3mu3xgcm8koNo3y9PT5Y74wPIvbFHus57p1X+gyULU35WSPlJ/ek/NI9z+V3
-Im8n6jDwbcPOSl1sC78ROzQ+2HYS++bmx1Uk3qitKH3Dqqh8I1Leny9F+yNo
-f2RUNm9VmG+M6Xdzh9GmpOfmxhxyc3hnODU+j+/+8gp/zZ4rfMPrDAzvk7kY
-fqv3uPnRhz6bq5B3+nKz8bwwvnOwZQLKn3aRv8a+yE8aGwdnG51+c7rTH2O5
-uQqjY3A06ownjINh/THWa3QG603VvzXon+FlMc78Dn+3BrE9nX5Y/7b/Rf37
-S0fq3/9/bH/NxH9c/66i+me98H+r/6b/Rf13F9V/7/+x/n3/i/pXFNUf2/t/
-q7950j+uf1FR/cv+j/X3/C/qn11UP9dug/EvfskZbt5EGcNe+VfrjTDdapxx
-4OVUL+CpPTDS3YGZjvumsSCP5+W708i3OoJ+/todwU787rTV9XZcb9fX23C9
-TV/fhOub9HUrrluLrm/U13Okvk1B1F6Z530pcQa/bxy7xo5rT/3xz1uNRwbZ
-h8mxwWzGML5wI1KkpMRYjt+yyrLK8eNrzFZcG1cYs1NMlyPNMWbHDMNIfdyY
-HeHvXGN2ujwSrduDNvV3BlzznzExjv1bg3DdH0LBIwU7dRTlgZOMOJKJ9J6+
-LtX3Hcfdfwv/kviN6vu3j7svP+7+6/gHxGvE9P2X8N1xRc/nmMfes/4Tiu7Z
-nuRx7Sm+fw//phWVZ/1nHVd/8f1h4GL2/1vH9WvbP+h32I6wnhv/Qb9XIpUV
-vY/JNUYhlfytfh/Xr23/oN8X4p9T9D7rH3dc/R/U717cjCnK/7fj+nn8/YP4
-Zx03nsm/c997XL/+0T3rn3Bce5LHtaf4vve4fv2j+7DfLxf1i/PSV9TuMj1+
-ZUXPXy76bvi8uuh+sa4363Dde3nSC3XOxUI3JEL6wXLzCU1TLDV6g6Us62SD
-BPbt4t8Lxxx7H/5O5q+FX4vvrQgS1gq/+LdGvt0WnFw4K3ejYd44u9G8sVAw
-gBBwbRjL515Y+Ub0grZ86fS2/NwLzTcc3FtOW97BdSWup+K6Etd8PwGcnHSw
-RzjA2/iN9rt5BzSEBTxmI7UamVwEeemKD78Riar7qCHl5J0E9m3W0yxt7wLe
-m58/AvzGPKk/dcaBVVHjoM02G+l8A/Bm1HbNOtzXYWzKje4DR2zB9flE9pHB
-xtyB7BSke587kD0LvyboHgt1RNC2OSgfx9i+GDEOMp95M3TeHuTZqANjn2vC
-N+KOm9+LvEbsB434VqPBsWwP9hUKBxscdW3hewZwqIVkI81OTZ19//1EpFNn
-L1gA+Md3/4Q6jJSbK+A3ivYDfOqt1COD3y4UhkCL5VHH02/h2Xh1XWcYLfL7
-z/gOy30P5VjPfl3PM8gfRDqI+z0YlxPixsF38Tug68fX6+/A82vPNQ4uQx9M
-Z77/PsbzT6DdvmhwnFT9rHtL1Bg6In3pDrJGdf5tXEcstxp7ZNSwsd/IntQW
-OAKf3UFc31v6PnzeL/DkyjX2MT+h4fkBye8OapDn6u9EjPncb8/v0fdrOK79
-XUGNsRI03tLce3h2M8Y/YsxFfRuDiHOttxz3bY5r8t1lRm8H4GJFRsrMzy3V
-94v1fYu+T+v7Ofp+Nr4zG3mzuSaQbxruiojhbiCMtX7Zkb2wKTt1tmVMmz0Z
-v9Mvx0geuiySucAwsjvWm09zszj3C+bkSUQOjWbfSfg98b+M1KeeNFrQF4x9
-DvAUBc4rB25YN0vnAXfXJ8B/TNf3UZQhLd+k72O4x9ZTjzRkYr5Q65DBX6xT
-to3f4jfYBraHcHtoloLnp7/UGzxt9gq+sDVM75zZCxrCZVtyUeTX6/z7ru4N
-YkX5NTq/Z25vUKLzRyN/jM6PF+WV6bzw/VHIi+m80qK8AmgF1lWB6yifoR/Y
-Zw8234X1dFw+9n95v1y/D7jL/wF5ybA/NmHXzQ/pOsO8Qxg3MDEH40V51VO9
-vIe8l42Rd8fj3V8j7+mivAPIewl55UXvXoi855F3b1E5rv1nkddjHNuWp5DX
-flze48i76bi8R5AXK/rGYrR5O/JKi/IIHw8h770Kzucjgz8yjSErDRSMZDCB
-PrMuV7jFSBmzTz9aiNbgnvjG+ATykYxP4hepUIgahz5xxoE64OJ9pNdcN5cA
-DkhYnf4i/B6Kq/Zx7BPO1mATyvD31biskXyJRb6U82ts4Vx08nnX1uAHXZgX
-DZdrdF4v60d5Iw04wjt3xhWuzHK8zlHf6TqlF1Pk5tuQ13S0cDCaApyVlXoG
-aFezdXVV6TTSrEvyRp/aA6KZrAd0WR6z3dxi3dYS1PlP+luzUd/0c1SdX+DY
-oo3TUc7CszjacDXyJhfdow/5pYQlZ3NQg/wTdf8WcQ6mfW/A0GVHIW+e1Lc5
-eC3Wi/0RsIm8K5D3Ku45LoRRrsfZ+rtP63Joa/5i5EX0PtKH/BjyP8o89V4O
-45a7HfkfLiq3Jqb618z6UOYWfc82n1VU7kbkAw/np7Ccri+Bdk5H/in63Sb9
-LteTzfWk96+6RrSxuTeYhDzs50OXcRyxN1yCMT58NvZN8ErEveUWx/8UWZus
-j2M+Rn+PeeE3y5D3bNF7Jwp9ot5jeznOhl6T4bhynP9iqLxwXDnOf9J54diW
-o69vIq+1qH6WT460K89xHzRGxkbyUSZvHDvWzP/tceXYx18hr2FXb9CQ78U+
-sxVzD37G3hocmtYLHme5NwN41osomIjqNfysoWDv2Yng86Zxnbj5XyDvu+8X
-DtYRJ16U9bgGCG8P4F20Mf9TPHdxXafhELg+v4P91e3hM9b5n8jr0ddx1b98
-H/Lai/L47g85LkV5hBHQtQeXRhQMMq8SeXchb3ZRnoW8OymrcXqC5qL3TdCU
-m3V+Q1H+BuSVTds0kNR1cP7WG4T3nuCwxsecv9UG8UZPsA15NXoNgF85eK85
-MnaExW9xDjQsrp/QG9wytRf0hXHwR0cKqHNrILgjlfXYjjvNkXaQPilFO9ab
-I+34nG7HzUXtuM4oXhM9QR2egec9aJkjeI7tuMoYWRNHsPeTvvk08n4WtgP0
-VDSNecQ7DabQlTL3V+i5T6LtpG1YR1rGbVNwxBhp78XS3p6B14yR9n5U2rsp
-CPcitvfDx7R3U9CHZ83Iu884tr1nFbW3C+3lHgGy42CXLpdAuQLKnWKovXOW
-MYw7cjbyluP+RPzWgaY+9N1HBlOfd2aTtoldhr0CtEojf8H72+T/5xbJAT6u
-ZAGUk6QOJx5LYU9JYX+ZjeezmPBeCimGfagRaRZSKqX2qjXV5JfSQmOSXiGt
-aqS8fM1FXk7ouseezVU/th7XWaGX5Tn4ASO1EeMfw7bdkiNNzH7zudm/3o+C
-DvyTknFIXkxo/26hh+Y0Ys+rsN6oMCzyDWZSP7PH9JGmi7JM7G5ntqXpy5vx
-bLxh+EbSFX5izdeHsma5m+c16X3+VgBP2GPcYX4DNKimpV1sYW43+Qrmv438
-mMqv5rfC/DdG8ruR3yb5ul38Nus9NNGYHba1NGn4dkx9j/nTUUdWt7d01Pz8
-zene+Gjgauy966K4B99YD/58qBrXGTzDdfk4XIPOrG9JEzcZQ2nKkfBLedJ+
-3X7Az6ZZqd4OY2b3bT9BXrMjvE7OmNrmEd9b+N5kwMwDJyn+aTrazfG9AHzT
-JUgppMuRPom07+cHsi34XYjEOXTI96WArwF/EzVt+M55xsHFqG9VNddP2q9A
-++bgm3Mo67K6lXzc0L/4Nun7qNE5yHebQJd//wJZJ7ka1LGhRl2Tx2tH+xzA
-NGHhG/h+Hea3EWkFrjeyPXpcpxbNDce23TA+72C9dEWjXhbf/Hyz+m4Cdbad
-Sxok6gmNbXjf4TxyDP6IcXIBKzMcA3AIuME8TTKzOQWD4NHRhhTq5X6K+azF
-d2vRz6rsaLeSdfHZfs2rtqLOVzEf0bQLEAc/k2LfjPJnM5gz8mZc686qoN9W
-eIbr/lx8X9H/q4I+4p4mxVfdhzJNWj5QLjhe8ViRBGG4cJD97EE/21Eum0Ff
-l63C81XBzRhX18Z940o/Zq0MyEvdJ/V0BMtwzTGJ4Trk38DT+cW/TNMc7lGr
-hH/YYShawjBWxVsxFthnPr8bCXzP52s4LsAzs/C7wjBid6QWR0w/Zjy5bev9
-42opVRH5a/5h8LSterw3o+3L2XeMjfCH6JcJmtTIuG2A83UaH+Z/gHKbkHi/
-lmOUYfnbg8gE8DJsJ675rC6FOcL+YqRuDzbJWG4KImbWbzDaAzvDsxk3z3ZT
-PmDov59+Gm1pxV5A/rzfjbYaGTNqLMpj7ZY7Fc4bpc2Wf88Fbg64FayDm7/f
-Xuc5VW6u1DJ98qlVhrHD+nHqDY7hprNK37DG4x0bPccYeqne4K6ZNV7NZ76Y
-e7kV1/88zouBrj7hP9flxj14a27hT0vfMLuu9IFz7jdbF/l/xm/EXeeXg0fF
-On6G32Pdm35c+sZP//WRwVKM26NHOQ7p/Fh8l7KZiJbNAE8MfZAsJmL8tdxl
-TFbV9UNdV3S4rl3/oK7+D6wLLIhR+A5H8zi5NRJ53y80KvgibDcQtpyVQaP+
-tfhrbQzIC1U0PIb5XhlM1s9uOFoYIs4+NPOMA9FWzrkr66gO/DHLm5jrCGDh
-U0c51z3BqctZpiMgzXBhpsSP4Zo0QiqzCjRrR0Cao6K11E/i2sJ16U2rgAc7
-ghpcf2sMYAnXda0dwaGZjwzOxreJF6LEnZQnTM0KvqsCPBk1am1QzmbUdA/L
-NrDOo4CDKPZn4KGJPvEFzxBDedbfS/xWDLjphAbj4FGskX7gNu4Nhn27wDf6
-nbfT3UGdszFoMIhXOrwxDYqeJq5Moo3fala8J3H5EN4frBjKsl4pj7Jcf8Sv
-D4Jet/B79MQR2dkfUd5dZRrv4ZfvJIE7kijT2DBS5jD2AdM/kOX6TWEPoFxl
-NL7Ns81fVCrcMBpzkuB6ztweNBm9LwI0XhmteV/iLhv7RALrkfNiaByYAn7n
-ukygbgNMNfv9Gs9iUMZcfbFvZ2f7Ie+cQF1LzjUONtrIs9egjtsBSwpPtJxL
-3uj2YBtxp70SNOoakUGxHtCd4AOv9e7U8k/wu0PNgv/T+Vi6w6c4fivmmntx
-PNU9QFkZ6ZBlrGscZTPdcv64brxx8LQJoMNJf6VvD55Bvz96Dse9I+g+0zj4
-EJ6NxZj9aZpxkDTidJR7TI9NjHwuxstCe397bijXbAsuP8M4CBpqaBZosNlI
-LmC+cepQthLjcfa4oexSXPNsVmisihHZK9cD9385pwNNSxqfa5LX1wKPHi4U
-XgllrIJzMS+vES9ijhTd0oH8RwYPhDgZz/fr57+X50/I8xzllaCbXte/bxXU
-2vgVytglLmk4gXXAXh7vD/F3SJfZwzLmSBm15yrai9+Ucz98N1YJOtro9LMY
-mzKMjYM5m2Fh3tCfJlxPt3sC9s0j/cw1ncaaBfxORplGPLORR3nPzcjj2m7Q
-79bhGdc36e4vEd5xndTPElJnT3A7nn0Oz0yzNr8Ea/cbWMORSG3+YsetvtZx
-oxXXxH0T9wstt/qfKR81FgLeOoNleO8TlvvQFyz3niV4P4W6Wvp7gxbuw0Z1
-Pmm5leBRzTXoVwr3452oH52a9QgTSdut5Ll21qnmOgkux/tr9DqY/izoHMz9
-p5BWIP0EKYf0JtLl9UPZ/UcOZN/xFS3GNXrgXLVGKddd6xhDNXn1jOPKdX72
-iQov3K3lyocwN03HlZmiy9yhywygzGnHlZmgy3TpMr9FmQuPK1Ony6zWZV5E
-mcuOK1Ohy3xbl3kWZRYcV6ZEl/mqLrMLZa47rsz79arMcl1mB8p8HWWKeYZ7
-sZZuDM9bgKf5/nZ7V648pdYOr3k2MHgO50/R4dvtvTlzShX2d6PcTLX47xQK
-U0xZZy1855nt1t4ccepv6skXjtTNukinLsZ6Te8yjFv2KxxeDtzD/eoX+MYc
-LRefTblg6oVc1Il5PPegHNhML/DfHv7WgnyJfOsF8Cq9weP1hOtjvxXien5v
-fNIw7tmvcLdd1I+EMY+4u67B2it7Jt/7EdqBPg3xPbbvPuJa0k2A3+3T9pIW
-ypkpNzoR/f9xQe2t5Dm3T9iVywK2d87blbsFbdo2cVduyzlqTW1P781F0rV+
-HP34jX6HbeX34pgvysHD+20T94JWxp4KHM061qIOoe8wJ/+D37rwTIF9wDfD
-94r7G20vFDjG9icMYxl4deISvJ9bWtkrNAt1XSJGujI9gfJn8lPp3Bj8ziKv
-DxxMvPb5emOI+QnSeshvQ/43P2scLMmkQYcalxewzjEvr1DGMI56RFf3BjVT
-1diyD5GyKtJO5Wwr+0H5wEL05RD5Mmn/JhnzPjxLyziBHj1dlSVMkK/jnHPu
-dxvsA+gOtInvzEL5+/Q89k0APBpVcn5EuHiT/LH+ZsmNWk422831TdqVOxX3
-/EYj7rdduyu3nekijvmu3Hi+g3Fk/U2o/ysY61nHwZSh53m6htMI+EWR/2PP
-JG4ijZAFR5rKnW38HPDGM4rX8Vt1pFAI4X50cCDLdRfhuRbXq0X62thC/tCq
-J67yhLcHbxjHeohH5Sg8nef6SyEPqZZ79Azhi8CPVIJnTW0IuP7I4/EMi2dy
-pGe+I/uUK+vuQwHp+pLZbIdhl842jNLZbAfbTBm5ibUgcp8+8PxdWwPSJsDP
-uaWY36ETjIOfEHn3Ws9Mzs8XWs2NWBPdc9DuFJ77eH4pz3IAA3H31wMHhObc
-LPPM8WoEnO3U42wSHxlW/nTCBspwv29o3SXj+95R9Qz5tcivbnB31VKGhGeV
-ZgZ7S8atfgJ03J6iNRzB3I+VuQc8nu5G8Q3zadeNEm7Bewm8bMc7dxbNpeku
-8fk90PLl7UV1GRgD8Ln127DOzVHV+T+IrAX9zrj5P6Bti4vraF0tdch+p/tZ
-AP1MGQTPTreeoOgbzsNJmj+j7MkEPVVmLMg9VCjsMHTedMzNp5Bk7a4qFCg7
-+lagaM7DlxbNDfgj2x2Zm1u4LvGd+TI3646Zm7mYmwyefxPPP47nizE3bXpe
-Qnw1u2hevqfH/iw9L6T5OS+fbTbknXCsT8NYf1SP6zX6WYiD3s5wLFXZGpQF
-Hq2Xszd8g9971VZ4MYtvJfCtmuJvOXuDuPOzgSt0nSEuiOlvfey4b60Jv+Xs
-zSWdau5D9VHyvnq+2Ndl/8v5Iq0+FeM0S8/XT46q+Tq8Ss1XOebrP/R8MS9s
-2+PYJ4rnzsTcEfeGc5cAvV0nMlDwKMZKj/uPCf44C5ovfwNofazLbOdVhi2y
-1JQv+GBm9wDX7B+4T/AcgusXuO8q7segfaJKFjOU0O8YZvfAl4ueHda0ZbLo
-OeXC/FZY5k88O7fZ15m+7AfmxgHi/YVhPZYqU65lNYQ98pOYi/pG4R9m+hHU
-yzPQywy195rpS/w48mJ6/7i4qK7XQho6o+ohv8Z9nDK3QHDUSwNmqt0nH/Au
-5pG4lO+9qftCvuyHejwoo4oYI3yXYUQuI61/S78n8mKOYWmKcpn+wE71B8n+
-fsBJf8D7pN0PfNMfJHR+od/0Z9a4uYJl+gbuY5YqY6Os6DCwXsBP+C7raQf/
-zfso+IkkyyEl8Ow7KMcyBbuoTlvXiTKkt2qcPYENWhfbQblhjeSZYZ6xR+UZ
-zFPyUc4P+0wZOedodZ0xtDEIab3bg5tJL4Nmf1vONXsCyrrfJI7FNWlw8jIZ
-LQ8/iOsa5LeQpiMtgWvSd5yDGRr2fepxIN/B/e/In+CastBXZfzBS+D6+jpN
-U2OM7kZb/gNpG1I/0jNIe5F+HSh6S9Ebco6dO5u8GWXZwGeEh0hKeJ9nCC+3
-1xrgjbplP2BbY+k2f+nZhsizSqh7Qj2FOvLps/w4z+QMxYcRJowUaJKUW016
-/8I6RfcShqp/fyB7AZIxA/PRZPj2jLZcpLktV0hQztyWU3LJrF8sZyCsNYwx
-DhL+7pokvCnoHbea7Y4MHMhmRcaXrhY4w3rIpLpF5kC4t/HtCozLttP43u0B
-eehQfl+Od5NGV/BrwPQRrj/wdm9h353c3+lXGOsHm3nugr5+xPhNMKPvN+Dh
-tgazWrcG01NbgybgfAd7Mnm8faew7qvkLERocFyfinaAYRoqMVqYV/8q6f9x
-1A8whvbh+r1xakzKiE9s8MLT0bdTDTnr2U75h9PuUTb0GMrV4R2ev7zOd5xO
-X3QbasF3Yszrpmpe3dkaxzsG3omDtC4nvfvgOD5bxHVdHgcN85XTFC3DdhH+
-RuHbL4/j+RfWCfJI436/6J1SjNP1p1EHoYX00BTSgyWij+K1AaevI7wd+cQj
-g5bm2S/GeM5Dug7ps0grkfYWzQ/HVmRglF8Czi4gjZDpDiZin4mBp+DcjXYU
-HJlyZtfp/4xjy3mgnFXKkw9akG/gfusCLrvcfLl520A7xsF01/llXVkvbizJ
-mV1rfeDdHWWoayL2kUgfyrqAyy7RHRhiORu4pMx5ZiCGfYjlE9ZtQZmxzqth
-XX23+gnjtuALUymzuioH/L4jpsfo66PVmE93sYZdtzKTUmuT8NY+TsFbHcaN
-a4QwR7zOs+MQ9o6AvvgTxoV8cQG/HJfkxcChrpI7red6y6h9hnLEZ9CGQ5He
-4PRTeea2JD84rffFdurdprpfRJteiaGdfI/r9KZpSveK3/nzqVq+hjF84EG0
-FX1v6bo1SCOJDBtzceMphshUsZfVs/1d+M58gYGeoBZruX1ab9De9T2lDwSY
-uBnPG8YpOJpkkB9x87/R3zn7VDUuctaDclXjWLeXPwHluMft1eVWynq5Mj+K
-fAzPcfVaqCx6n2e+UzVsUr5r4f7oWCmXfwzlTrL2id4VeSWe+546jjplXn4H
-6wCvcgb3MpR9GPcnO/tEd6Sc8izFu5ZTbg/+qh7vD+2coPSNBMc5K/0mtI/r
-gXm/Bt3RCjotbagzhbdx3yLXxtAaOcPdHJRK+7387ygTu1rBQcxYJTYUWwlL
-IgdeFcxyVlF/Kb/hVMIU+Eu8Oxt1/Bn9+ie8fyvyy7gXo44W0lVoY5PZGx8n
-69fNvd+o5kpkymZvLdZx/cnOi6J78CnnyWA8rpfitwG/n8bvU2hryukAPdHm
-zcG3LWNT4B4lD7U5WIw+sH6ONcZl6N/HqvNcG9d1xuZgM8p9ynkpyKAcxw7j
-Vs1xAxk85ALWMXZDn8bzuB7HZc4qnzKqG/FLnEi9pVKMQ4ktOlP5/lOG57ac
-e+Ctai6FlhRaBWM1O90WrLHVuQfXyDbwQrMHD4g88ZP4XXhC/LQV+O1Gug9p
-16DCNc/jN/aNoewh/FYeOJBtRmpB+hrS95AOgV4nrDcAv4MOzXGP4752E3jv
-EuovYI3F3Da/tka1kXx3sqsL+/2VhK96rQOSM+1ZPtdxFdbFKZq3WkOdE+BE
-9GMH5ipoH6tk3D+rNg42EO6dtbk1GPtP2y8FFnhxG3VG5nYP2AKLxjMR3JcK
-X3Rl/hy9Z6RwPQF5Wfw6yJtMXh54P6HON/JJ/C7GOEeN7kHiy6jRNjg7swp7
-1ubBK8hPoH9cm4RD4r9SpS+TO4e0C/bl9UZv7YmaF/tbZUCz1FbJHvC3y5Rr
-Ov1jY6kvZgxte69wsBLfL9My/mPLq3PXBp73g17PYE45v/2Yn6dBkw7hNzl0
-IDsFKeR9p2O+oil9joI5MoEfI5jHZvTfErwHvGt1+sR7506lDBb7BPaS82Wv
-mF/NcZ2E67jay0S/hnQKdXS+jjn8Otp8fD55LsLAlzDuWfTn6aspv1VjbxaN
-PfXBjhl/h+PfPfj6++r9kwzjftNoFViK4BdjWT9Lr2m2ZyLWDnER1lP9jYCb
-p2p5xoF9Gde7cd0KfLD6FKWHV9y+NR9VNEQUdcaEx76K+2J5C9pagneaCSsb
-eoNPOb8KiONOLirzcZSJof6fjRqB88NWb7D+LNJ0Mp/1L2MtWqlOf79FuXC3
-4Lyhs5W+Iuf0paTScZyC71BnNoN1dCv6HLPaFd9iXOKfrWXmgOGhBH4XoB+f
-tn8V3E6d3at5VrGQ9MZwu05BuzIp6rvsC746iWX3yfky6ea+Wo6Bl5+lcfLX
-8a24pXTAyhw5s8ufSzoRZS74gPGa8VGF16ZrPRPC3GWAsTakZ5D2If0S6ddD
-Cg734/croCOrJis6tx9tyNRyT90cnM4zGLsmaE7P8infusxyq8+0qBNblf+k
-g2uHsvZ52Gc6B+c77kO4v6ddeM0O/9uo4xYt1wDO5F5a34r7VkPpG/wznlN3
-Plb0PO1w3+G4dwdfwHPKlxJFzx3cO1J/d3B9reiK5s+UtvYEpDv3ar2UW0Dr
-tr8O/hfp2Q1D2dYLh7IPjAa+nIV11gp6inIMrK1S9Jf4x8T8lMzdAhzl7koA
-R1EWupTnzeC7Beawv/C8BvcAbfYZuITfNV4UXYK3KGMAPooZC3MHhUdX9CTb
-V1Kr+JRD7Yrn0PzIXkXHdAfhudtFDuk+wpMHGLnWI61PvBC1L/JbNV6I4v3I
-m723gdYemv3hwWwGqR3pXqQ7QS9UaDiP/MSNUhbJvSapv0GccTq/gXV8E3Xi
-RgndkIsfV8ZGGSvdE7Ac6afRxz2vc7SOaZ86J6sBTmL5KuZ3CS81dGmVcXCF
-lpEnI71x0PPlyzXeSqB8Kcu2qv2SOK3rUtXupNFJWXD9qyZhAOUA06/VKHj+
-POpbbhDf7RGcQlkc6anzNX3zAN55EGXfEt19dRbM7y1HnQf1eucexH2Fexv4
-9FwS9RHPZfT3qXcL3FSL55XEDU3YI7mvL8a+KWebKLv2zJGy3Nspe+T6exzf
-3odvJ/UZn5HpDNS6ZX+xD6Dcf1NvhvjK7D3m2UM1XOtbqdOam6Lb8rah5K6Z
-i9Q9x2W/MTIu3Ge+j/fGKrovd+0l1C1OUy/mfta9k/I/PB8j83Al1uiVlWWu
-O3WUxhfBxVw/ac6x2K+yveuNY9vVife/ju//K/r1Nfxy/ZJ/M/raggxwJuma
-dpTJAHeSNyPu/B7o8RaNO1ePUrDfqnERz0pnvnEgezlSxx8OZH+IdD2uv817
-pB1IQ0gVyD8LaSnS1j8qeujLuF7xB4W3IlgHb81SvHs0rfj3H1QaBy8Q/Asc
-rmHt82cVw9mm4E96jGJC+2+SceQ4za/hmTfp3w+GL84DzyDrNSxOEJwxAmMx
-wNi8sxT+jBktojfPubwx1VubTG2K/+clag6X6jk9OHNkTufIWG0anlOnRtHK
-HMtqvpeSOS2n/ON0PKvFPPwG81F9kaInjwCvtGNc7kd6+Q8jY/cKEvHNn6kj
-kRb5/jMP8PyvRs3JaceN1cSzRuQcHKsf8tutaR98dbxUaLeisUkdOzY8a99b
-rcam8gPGZtRZikcr1XTS5JH+l7PvJXrvopzyEOqhrC6NfewocOAn3gRd+6bq
-X/ebfz337NcevOdXyzcoOz6mX6+deSwMfFXDgPtB/TpuzrNcQ+wX6j3hA/r1
-4plqzML5/mPq2H6Fc0q51g7dL8JH0tgUbwK96evyin81yinD6asemddHi/r+
-5ptqfuv/qOj7GMaB9H04Djz3JC5y8f4oPQY1egx+eNwYNI/ginrq5S7Tc0eZ
-es1x45HQ4/Ea2vs297miMajBGPQcNwY/Sam6jx8Dnu9/Hd/ZL3Jfl2MgeLP9
-TNJXLZRr5LAPVnJtqrrV81tYP/UhcU/cszrFtraKbKOEZfGNmL1J8BVpB+Kx
-z+A7z1B2TFkt8BTHfwnypgNPlWs89SXQz00aT32qXK2JkFY/848j4/4lXN+J
-9OQfR+gm6maZ/cCDHmAZdXJtEuebVsajHH1mJe2YO4Nu0/TGcJ9B2w5YwMWk
-S0CP3XLTUPa/Pv/rh/+eTNAwxoscljL8pLZHMgwP5LPSn2Q++YSovWfgTMBC
-XOiUNs809oJGSvlaR3aXqmuekgFgb0pgLt+UeVQ6HtTdCmXrkYziE/U45WOt
-bf56S8EozyiS/V1qfxD7g0t9jjn18w+tEN2SHPWyPmYB9qYNCe6hfJLt+rmW
-kRLXHa5S63SMoWSt5VrWGjlT4QjBD5QZV6l18FO+CxzI9tfo+RrQzyjTfOrt
-A9nfIL37ttaL0jLkqw8XhuXzHKu4xhuGXi9jhD4aoWv8MxRdI7Jf2ugA3n5z
-hlo3vL5H9BrVmuG3qbdD26BRFuUa6j3C9B5dj+hA8CwAeT9HHtce6TviuoJR
-7hupzmDyu4p3Yt/Y7pVVah1K3Vj/9e8oGTvh95t63ApGzH/3z8Pv1TfqMbmb
-76ba/SzWEs+hSHveUDUiIz8bdV32juI12f+bpvIMYx74zL2BFes+cCN5der6
-AK4joO3qNnQH4OFeMTOV/gnUcdZ6UcQfyf7OYPMZSt7HvEKr4XOMNpyh5pDX
-tG0iHkj2b+VZSX0SY9ZfYRz8iPByV4muFccrrGPlGYp+pDzIAt0Yz7g/sTLu
-PeGeUS460Z0+1/crnNs+BRPbqG+Efp6s+XbKjT9TpfZQlh9l7R3g3r1Ejw/l
-nCXGVbk/g04nr3JKldDElJUNl7edmf6nFV25hTROg8wLeYLeYHaVkpWWaBkp
-x3k0v5e+XmyoflEoPCP6EdSda92FsW2Tc7C6DW0YX637/42hLNcI5/eTSAuQ
-Hj1pKPvGkQPZN3w9R/h+nZ4PE/Mx3d1K+4F6F/NkdlX5yQzmLQ0c39od8NyB
-58+EezRZ5mcuxrpMj62sK+SffsZIXiHDOdsSNJ6h+ABeD1EW0HrsnM1HPZfp
-c7LJtC1xO/3SKsUTx7XMgzIiwvNNh0fg2UDZ/6lUPCz3lF1yntkiZwbcNyY0
-uKan6aEI8sFvx5FqJ9S55h/wHvf0GyYN6+UJ7xxLd1jUMfg14Hs86uWeYuk9
-7o9NhtTPuo0k7VFVvaKTkVDfZDvu4hmzvTW4SXDqvNxowSuKVi8xju3Pr/Q6
-M7XcZ0ulOvdgO6jLVKPnOZnBPKfbMBdtQV3RHF+Feb0G6RakNqR1SBuQ1ncN
-ZTe9o/aRCOfXI27oFFwU7hffwvoJ9YCLy5hFZW7SZUgPkJ+NOReJfnYN4Saj
-ZEdjeG4xTLNsCe5rGsFzat1uCe5pCtftluCzhIEuWVv1HI+9Y2j/TB5wyzCu
-vK2J62tBvsJ4jnrd1UJHFD3/lyYFU2NCu1m0O1zH5BMqsM5WFo0tcdjFlbTx
-7g2+0KTXafoSn+vpDepZY4xr9N7McTs8xTDY54imgfgtoYNa5ZuvFOP15cX9
-FZi/LbihSeEaXp9xtDBMC5GPug39DemAZNE5w5ImyqvStK2caqXdSVHA1nuf
-dKMxkSveNszHp/VYluizrnKxKwLeSncGDxT1mfi+pFLtY1PxDs/TiQ9kLtGv
-Gq13SX2C4/t0XnGfXPZpczCtKVzHm4PD74/MIeu/Bn2aLHO4ebiOUznO9iUC
-J4R92nqX2Cs97jEVbFcr/bWo+RO7FMxhOHek9b6OvlRg7Ul/tK0x5q3qo6ej
-XurrUn6ZudSn7Ot1mcMWoak5109bal+Kiuy9N+De+EdLjUU4z/+BsbgW6RXq
-HNt7gikYE9ArlcX05zsfMsT+ns+pW8YyY8ReaaTMax/imUpLvs/YY2IfTMRE
-R6krzmtT6ysZxp64wDDP2/V7v8V77TPZby9fHesXWoN4WWQcRfB29xTjYN9P
-5Fws98DVvcE1PGuTs5XNQmt+a4rCYVcJDtscbJb7JblFcr8oH8tslvOMD1HH
-TOv2chweKyi5Np+tnaLoEOavmqJsb0pJD9ruVOCrCcL/T+GaXJgvebP3NvJ2
-rR8fzN6CtAapC8lF6kMC7Yw5cc8mjgrPlXntVoB+U3kck73I31V0vwv3e9W9
-lwvLct7+Fe0U2ka3ewvuw3bImc+cwayF1IDUhDQDac4c5ddK1bcgF9oF6Xsv
-bJN+dg/uHyq6L2qb3Be1Te4fwv09vE9kVvmjjIVsU73se4C1xRr2+Hz92UPZ
-RqQvHD6QjWl6Nap5Meq79Iym7KSbfhdy3xpN29WsyHxLtByO8uvX0JfYFSq9
-Okel8JqyLsprknYPZUVDxfek3T+HsaKOK9sV1e0K54fw1oF2ZRwDbOJ82q9G
-aFP3HdxfiPuUkRU+wND2q6JzBPo/Yu0ZEPsgY27+PeojNbm5iRe2eRcaUTmz
-tor8QSQo79a+RhZjv6rROoXkF2J2d9w0Ho/heTx8Tvo6fD8pvia6g1Cfgs9J
-9yTFp0Sb1FNHPX78NhR9g2VqkMf36/gt/DYc1w7OQyrVq8aJbcF87KQeiNMj
-3xO+B/1tpNwce7jo5spZhfL7EZazdLsaRcZ/xoHJqW6ZB/bTTM3ym8Ar/WuF
-8rvxLnBUWF7sOrSOkOhA4Z2eCuKnF4d1hDi21HXdDnpsNH0fgI86w94lY+NY
-3cFk9KcJ95MwF434/ZjdRnuk3KV2W6R9Zm/gYFyddE/Q7LT78fS1QjuKnVPG
-3ZsCvv82bdDSC/w5zu4gBj78AozBBJ13BfJAH0fPRd65zr6AebZzsV9wov5k
-jAHP+T+BMiUocwbKnGfsC6iDzT01JX4sFuSbjN3BJ1GmFGUaUWZ6UT1nIP8M
-lEvjN4HnDXj+Yf28EXmT8GwufsvwrBbPPqHbNQ955RnlZ2OqrfLm27uDUVqu
-Qv9YLSjT7vTWTrTd6gX2rlobvwvx+2l7ZVUS5RbhejESaP/qpYABzutsvGO3
-rkbbVvmUs1+G+8tbdwdX0vatdRVtvfMfR95lRrs/O/1U8GH2FeVs7ANnoN2z
-jacwhqu82XzuPBlcln5SbIjaqWON+aYe0Jzib+G9ieCV5TsYpw/RJi9NPbN2
-n9+Zk0YZwiPKzTE4VvsCrmHOyyfwTHSXdd3u/6L+cz+g/sQ/qH9BUf2HUP/F
-v73Cpy++i07u9Hn+zH09aa3wLxrT6Tc2g/ZtJH2Q9uMp16RsZrTo6nR4tA+K
-pNq9SLrD68befdGZnX4SMEubIPNE8NGkwe20PxqwCRrlGeL0ptjW4LKJQoPk
-biTuqlC8Kb+VRJsvn6hwWdrqDW6ZqHgF7lk954E2uKrTj+nzrGa8+/YY5S+B
-exhlKaPAj5DeIC3457h6txk0gflr0AVYb++NGsrOmjeYnfDuiDyYa7t7jBHS
-VvWh/jJx+OoxxhD37WSsN5gcysswNrtj+qxkrhsVHXG973unKzqKtEGi9fbg
-D0J7jdBNL59OvYsW8bExKP5jNg/Tfs+fruS1vpy/ttC/jNgT9UR7gx1oXxd+
-H0aZRGpN8KN3CgezuH8Q95/Gs9FoyxE5v9ocLK/uDa6drM4sKOMKz/8Wo/x9
-Y9R5+wrAx39pvozPUnh2F57NOLs3mDGpl+c3aG9b0IzrBHgTG9fEU2cITnLz
-k/uAn/p2BcRNa0AD/4vQ/V7+yDTw08BVwE/B9DFK/yIifnMUzqOe5zTkF7AP
-eYaVp9zrU3h+BvJ4T3r0Stzbmcv9QqbEL8P+yznJHlV49Kv4nRiW7TIA3/Qt
-sjWw+y7yC32j/Ejfx/2Iu86LGN/Ml+G3Ge+ODcv3cS80yqvCe7Rhhujvdgaj
-wzzb8Kk/RdxY7t7qRVFHeYObmzB+nXehZfo21oSJPeNM1EtcZ+N7xJv89mcw
-jxsu+JBX7q70eK5yePTId2hrMcu4UnhR2lfymy2iy7w1oL7OfKXXUE/dGsfY
-GMzup90kfV88tj8JvO9YK5G/8hS2x8Q3qTP3e6yn3xV9g7rg5dyvf4y2uuW+
-rW1NSZu+iHIFw/BHa1lcCejQkj7QvGgDz3Seox5CRtlxsC2iU4b3Fh5VNMZv
-8HsR8j/Cd/Ee328DDqF+Ge1Yd40ObYeN8h2jle8b6peVAz6XGUvE1o6yGsLe
-3ecChl11jkZ5FvX7Ihh/Xj9L2SHKnAD+gjYTcjYdJxx9Nb89I7Ye9aENNc8j
-3sa3qCsd03o2hOc/sC3pVdRFzIfriDQm5TWDo+k3pTfYj/WRaF0T/Prtgui4
-e7hfj2cn6nXE/k/WvHgp1vxk9JWy2VlG94GSzEUe6OshnkddBjxCm4hvEp8g
-9SPJngAabv0Vx+IZnkMVcN/43oHsRe9pPRu08Re/u0L4nRKhGbz8pULrdfrP
-je/0zwY+nfDRTn/LeDW+1xnGDupEJzjWoCGptzV50WA2TDuLUqYoOfdsDSYA
-t5e7qz2Ob/OkrcFp6HPz2VsD6iuWp9wJJuC53G0TfcA68P1jRQ+9wy/JLPMo
-u7kN5SmLj2l9AdrNUJ7WPVrxXpzPqZ/o9KfQXk3pCglN/2/ghd7WcsaNwJtO
-dCt9ZAzFwfN4+ozf0PqM3Hc59suwll5Zyj7PFZx8JvaDi/GdcvKogJ0JuL4X
-7xIHhO+T7ibv9OHRxLFX5uu1nwWeX45TvruGynE9RvavK6lTUW50PRM0OLcL
-nblYy3SIr2o1PNM/A+G47cJO8PhLcl6hcL6Cv2d49ovxIu21JL+xULif+8Yv
-fqf4TwtM1JffG5H5k1doXz8otCHPDMNzl2nRET0vnptMZT9spSNAWpC+1Mh/
-ij1yyq2Ws0dj0/B+8uXJSl5AvYipeh5uVHygyO1+kxxZl/uSel2Cv26czHW5
-QNaladwkem3UjbBHa/0P2nvqffRE5DWEMskU8Dqe/fI91ScfvyV/UTBN+KZM
-RXyYZZTOKs9WKeeeW67k9WG7x+L7Nyq/CKBblc50aWvWI49TMVn5uSrV8g/x
-X0G9S/tykdUwn20ttVd6ccDjW0nO90ItE+4Z/sb71N9NZ4NQf2I71uWiI+pc
-M6HOFo6Ri7yJ8nXaZpd8iqV1TX6dHNHVZx236Dqoh0oZGemBhcfV9dvTKDdY
-IOd8c9GuRBEN8MvT2F7Q63g2R9o88mzPaZzDBTJ32IO1fGjk+dOnKR0ME/Mb
-1/q5n9NzfIqWc44yllQCx7/iyVnG5T7lLvdLmSuFX6cu0tN2r9jTco7vSSoa
-SmyMKQe32/bHKcuxeD9f/PYRt/I7lOvEMlupTzZk2JuDUqwX4leufZ7nUI/6
-X1DuEt0ms2ttJKp1WeYnFWxRVh5vXe2Bppa9Nqr0Xs4X+6/UsgdjKe8urjkj
-fZ3/FHXNgYMjlcDxVmegbB87xV4+hnEAXzfUfUTpBu9ECpAOHaGd2KEVEa2j
-z/kJdfR/XKZ4cvrsub1M0bQOcOqIjHNz8MXTjj2D4dx97jRFy5TJ+lug6ETw
-ibTrjuj7PmdfjvcG6O335ax2geA0jq3SzeEZw8b9xLOGst8uf0+/f3y5B60X
-vOPLFT83rRf+qh5T+7+gLOLQx9Q5DXHioY89MvilshFZxJIyRWeOPabfm4Kp
-6GN7RsmiwnyexRitm4Mp4Zh0qTHh2YuR2Rw0nqbmubR1nVWSWWsRj9AG6Xej
-1FwfWs32YF6d2+LYs+MxLVfvc35pGs4va/ucJ/H7ZC39DMUUTHi0X+N7XGsT
-31eylT/reZSzLu7LmMsZRX06RfcJ6+Kh2ehXMc39l1OxrueGuGZTEa7ZHLwt
-+s8Kn8bTWU/1bXPwxqlyLi0620onA/Nt3xZQp597RL2mG0mjEAcRJz3PPmNd
-nih63i2ks+r77F/m+pwXc+FZAd+h70GRbdm/DKgbxmclWl+Az8P6HtH1lck+
-vEqND/isEiOd+xV9vCs+QmCP/i+5v83S+0VK+VKtnNFPG6qFedp7ks7hOk06
-rvlvoxQfIGOp8drZGOt/QvoB0iDS75D2v6/W1oeahrKv4zqEq6g+K9D2L1sI
-Yy8nOB+bZG09llD8h8jWVj/ycjGc3Xaqxv0azghjcs7U1R10ic57i9Jf1WcD
-yaL9bg11vkEDi54t7eBa18XVWc3CfF/rM6bR+kxtCWlk2o0BLt8pgqU/i8xf
-9E9yk13BdeU/RDupt5D4kjoXyxi3HRgleHSL9ONfRvrxULPA1ZYgPAO7TmDn
-toBwQ7qT+DQ9iu1fmO83euOGtUnD+8L8Ntz3WS+afUZvrWG9WHvpKOUj7NGG
-EZ0P4hfCmfKfujc4g/4bpS0tpPXLZR93rq8CDWbSP0hO60IsEzze6c/k2IEX
-atF0TJnop2CMjI6RMTKeQLefqGWdJekOaw/qOLoq9Gnl5jNGG31kDW3X509j
-jh7I1hxVZ4zh2dPfO3f6/v/i3OlOXYb7524XbcVcK19s8/I8O05mtgRWaov4
-aadeipxnf+KRwRTgy+yq9KtkTG6T+Tktodc95qdB5ue24fl5nzr0qCuCPbEk
-k/Visg+PPH/nFMWri88O9P3tK0MblE7xm7pp2aniS4vr8aZJijaow7pK0tdQ
-eiXaqHTvE5pP4Jh1na382Yj8D8+EDkL/PmeTHlgoe0pE2ydQhjQqQTgeOf/Z
-gza99xk33xWPe9Rb/kr5sFyinPQldSWW0T7rFEXrtdhcx+nc27J/uvI8tE2T
-b2n6BA9fec2i3UZ3sLRR+fCqE9+0C4Qn3cf5T5OOXkC/Ow/F5Zx9Qf5DWkbB
-tv3glFDn081dl1Lj7iq9d4HZ28VnSpvwYN8tH7Fha5fvbg4+qr87Vn+Xe97S
-IvofHbyfZ+TpcrV3iA0lypUXtWEN2jBZ02i21ucljfZlrYOj9j9lv7mt1Bga
-Zw5lezAnDfg9C2kP0sVIS5GK/UjcjjKHi+xEiUs/gjZViI+Idr9E99to3Rc0
-icx3UY68Eff6t2VtKtsQlmkUPQVFcxsZT3jpw/Svo+0qiH9o00XajXoHkcRC
-6gTeH/I+NRVKB+qwPndgnb8sqDM58D93lbBsF/XnjaGyihB/7B6oZFtB25ca
-C7D2O7yY0+H9SeBiAe2Fq0374lruKzxDO7Vc6TiQXzqsZV/g/yt/SxlS2hMf
-obQT/qWp5PahT26O9Ti8++2KY+0KH5gxlP2DqWSVAvsZpaMTSbRQp+9+jiHn
-5Tf6W+xbaCfiFvS5Zqadrt93cO6eGUP5IvZUXb4k5Va+ofWzOccFnqXRbxLP
-PLq0jQrwzM4xauymEvdleoKP0N8s6nlkktJHXB7trZ1MG4KzewPyknJe0efl
-Q59oste2rsa8/lJg8i9aFhC3PufRbzf1RmLsT5plXlT2Ca1u5R91uZrq3qBd
-6x0IXUzZJfK+Mylcx9lIXOcfquoNvj5SFmsi60eUjOiZlyNqr95ZptbCD7lH
-WT3BljJV/l3RE78qr/aknuAB1HU963LSfgNlTGJn3KP0ozAuOxq1XSDwa/tE
-4NwJGweAF3NxrddVoujI+uURZecIPneIvxncf69M+SW9DXUk+tYE3z1UODgH
-9924v7BsRPZo6jFTNlILsI4uWWk4T2ySMdXPcC+6IRF9H9EwyzF/R2hn+ulk
-mStZzyvKjxRwQ9qt5Hv3YH5vEL8aHcPj/xex0X8xMGm7RVpR9JcWyBk6aJUV
-l2FcItTb78v6pWbPwCW45/d4zluGdTyqL+vR9vE7P1znF368Djz9dV45xma5
-2fvEVp4987zIemkgbrd5lEdErScGOGa0846Ij6b5ecBZ1LZArzzWMyB8svU4
-1sqrA3KWTBmG5QfvyRi1+bR/Eh06lPki5dc816vsDf40Uc3tWbJv9wRvA2++
-OVHRHyeRP8D8JVIoi/1HZEXYw8W2lTQx9n/OdapRyfn4LN6SFRvEZIo6mfu0
-7m17lbY1oG5EfXwGaOcZbblCU9wXHcLFcf+UljbhBWPA5cqurydYjrb8z0TF
-L5UKPu4RPM99dBK+mdY4WXCk8lmVt/S+mIwMZYlfL8bvZUhppEVI9AdW89yB
-7OciI3K09bjeETnWN5b4jqB+agl1aJUdNvXv3z9aGBrPsz7agVBvh+NuzBV6
-IwFekfYASq7yvPiFj9L/vdAOmDPghdG0DzhaOEidgdihrfsfx3edlLKlmvk7
-ZTNBvnFiidKD5975JGW2dhq44jmhqXjO0YixeR20F89CqIP73AlqTnlPf2kv
-Am/M/F2n7wBvTQEd/bOIsiUhD1un9U9M7Ac1qeeC04R3WDRsR0faZLG2sQIM
-PwS6+B4jo2zD1o0GTWJ3+iXOSo9zamFOTbfdrzEuDpTOFnUZxJbkGYyP/42E
-4mkIG+XAp6+L7Ee+9Qz1LEyBu06/NaFsY27A7/xEqGPs0T6svpxyCbxTmgIN
-KuXd3I1aVrZHeBI3V6f1D81QFqTtZdDPajPjVtdy/VuKPtopup3AqWn3J9gn
-doS+/L+dUHaphL+SL20Z4HxRR6RP7xWhLgj3s68klM5IaENDvTqhr9CGPRjr
-IwXTeDOi6LJQT3WOpX2Xsj/WSqGLUshLaL3V38b/b3qrd8SNoadvez27BzTg
-nYD181LqW8LzUM8F37lScH0HYHFfEPZBfBUbe4Pw3P6j1BOZyTG7SNYwaLfH
-MA67RI6G73wnPqIvSppoFuokvU9+SfzPAqbbrS7RD5iq/d8Rx1Ne6+jxOi2h
-+ErK9W2dN5F5qRafMpnf672Z/WN/psWHsp9Cqpt9xgHGb7gZ36PPhjCeSXVC
-nd9xrrL4tpZTDH+f62SOljUlUHa6pvl4/h9NtXuk5yjLEd/B6EPCyfpJo3uQ
-voKxR5kHNG1bt+aRwXCMV6M9p1Qp2oTn8TWGqtMGffKH0hF5HcvyzE9ou1bx
-sTBMEwOeXzGMDSI/2Kjhap/wbT2izzNqOF7DyqBc9PcX5RMaN3Nv7tDvUCZ0
-p7at2YNv16Bsl+5jQvwTbpJYFzyzAE8oPl8YL8rMYD+xN3Lu8on0St8xNg3G
-sR8BhnnGukVs2TT/saNU2ZCTjhQfMa30467KRsXmtTdYqfstZWxlD/FAUV4v
-xozj8Z/4/RVSgMSzTcrJis82CWtYELLPFss0fzBR6b3Rh/fmUvIzs/yEtcpv
-BA6ynU7/+yEdB5pwMWmsqb1BI/cejgHg7U70lb5/nP6NQY0NnpD9tkl7bByM
-kF4wWsxxtxCHdsq5jyExJGhrs8GL23d7CastUHojbQIfkVSPF01/3zv/AZGV
-ii3n8WVF5kM9atxTr4T2XXsyalx5VsqxJcyGsJoQG6+tYsfpMC4K2vHUQiUf
-5XkceZyk7G+bgwb6liD/24r9pqtT6pyFulin1Id9gjz4jRr2Lyuln5lV0vZS
-e6P31IX3eJa9KqgBXJDfaMB3S7vWeqZ7uR/tu9UrRf+e+sz35XzheazJRu2D
-wgbsnFuqYl2EZ1RH9dxWlAxlT0WagfSLs0bmN3Xc/H4+Rht6JT87E2P0jj0i
-h7gTtMhefc+zCMvujAv/6dA3cWdQLCttnKh0y0ArBZVoE+GBcDEDMDEd42Nr
-/E6Y+CTlVNQ/zijfb7SJuxO/ddhznK7uYAZgZexnla5yDe2GJxiiaytrkLqa
-mc54Y6azlrC05A7KEjqDs9EH+n5X89n9V/M56gPmc37RfPIsBkj+YAnG+kmM
-9Xi95gHPAf1tyfcN+mXtFNqStEVza2et09oZZx1zjpvvEuxzz/xU7CLl7J5+
-Q36O+stR/yjAKuVWjE9go03Mi9orJb+kdbVndl3mJ23SMVfmf4b5nix+cbYG
-jZjvHaiDvFpKz/d8zO/ikpE5vxHp20VzTpqiBninzugKFtP+08h6wifxzFfR
-AcAPmwKRn4iMKF0t8rhW7NGtKm7Ndszp5/Hdk6jzlNok+4SRWubHUmXe9C7M
-LX15ok1vAFb4rXSmM5hBn5y4NrAeZuF6DvBdi9sZpFo7h2NRlIbjBbjAeruf
-eWl8a0WJ0te4WcP2P5cq3udyrZtPH343o0xN16YA/GDu9I1urgywN1Hg+Cqx
-3Y5yb7X2Baa9DziX+yzWJfJiYhu6jz5IgxL8kjYsNagXg7WLX+pwl+G3jrgH
-v8RBo/BrG6Qj9wWN+B2N38n4HYPfJvxW4NfBL3H/PLTLot5x68d80kevYP6o
-E3sS8uvSm4Kyi1Z535+rdGLjRgvo0xbs1S1BidOi29gi/qdiQrO2SDsj+GU7
-gRelnbTjmF7C+VqQT+Bbr2mes0mP15RSJdNdrGFkI+DhR0jPIv0WaWop6JJS
-RU+3pobPB+Rc5LPREVzwx/HHnn9QZjtlgtJzUzrCiu6jnc/P9Lm04/TGsbZQ
-XXecOIO0TUPok557CGPliA85ReeQh5+v4ZfwSv8nrUU46miceqqrgDdm+cuB
-S27E+ht9dASXrKbtyjX0J0hcspnz5N/pdgfLgUNu7NsaXGbTv8EW2WPGfUXZ
-Di4vVW2tk/FWPg5u0HkNKq9+H2Dsd6T9Ul7+WeDBzwk+2Bw49hbQKLdyX8Fa
-2jDYDNi74EE39+EFyr6MMUqoR9E/nvzYlflIl/tQFLxIxEibWHMriLOuQF1S
-j7Z9mIp3M1cr3/BcA/Rl0C9052bBZ9li3MIzFvp/KXp/woIRPMbz+dF6XyIN
-+PiFxHed9MUQTE51Bk1pXneBPupU/gZsZRcansvfje9yHdUJPbo5WNaPva2/
-U+ybub/xOzW4P35/q+nfGmwzemvJSzTod/lO1uocFL2i48rTl4aPsnXG1qAB
-uI1tPU/vNaQTW3V7vo32hPsffQ2NMq7M/Rh0PW2Dvxanj6etwRdK6DNka7Ac
-v6TdSYNyjXxRxnCZH9oNX12q4OxL+J2cGMpuwu+PmYc0UKpw51H8jk8o/El6
-UXxqZOZJ3NlYqk3sERtM5VsgqWHezFwaiaXaIwnkz4srvWqux1mA1xTg9er3
-R+D1XNpfO5wj5QufcHtnpjuY1bU1SAFet44nvG4OTNfN198DvKb8DdFP/dAD
-reH+dtsx+1u5nmfmY4+WPXM25pd6gpz32caEIIG5T+q5H639l43A0uZhWPpu
-ywgs0WfTyXG1Zz2D8S+zb/WUL+oW8NAvesBtO8g32BjzmriiL2frsT4TY9ic
-UON9SUKNJcf079kqhnJX+lfdWR3aQYN3rtb+e4Bz9gNuJgnv3hPQB9zL2qYR
-9HptTNsp/K56GI7q6Yfi0ZiyWzC0bgDL7NZl7gWd/6dCoZy+jij7Al1XSxlc
-CvXvFf2JtA/8LfE4ZlF2makJYsJjoS7ciywHdX8/xrN88gYdfktJeBZBX7/q
-3I58F/fNGzC/8cxu8YtIXvYCyxjW1d8ZV3ibNDr997xUPiS+e9bgdwvS/Ujb
-kZ4uH7GLjMw81gcE8fRj40dsIKm78KPYSKwy6jLeC9q3IHUo283QT7fobIgP
-GdGDf1l82NWQTrtIYD99MttKvxJp+m2oJswT9s0+NxrHmIgeAsbNq+4NLjlZ
-je9rcl4Bfgh5KZ03oPP6kXfBySP0JvP6kHeuzot20abCqAcOzVP/D7B6/x6Z
-x54gi3JNutzP9Ti/JDKTK7Xvlp4ggzKTTh6x/SK/Nvtk+jvD3uO6Zyd0XTNQ
-7gRdbrsu99GTlfwY67Ca+yx5q1J3Sw7vRZl3n8z1AsZqEvsLlV9edbeWk71W
-hbUaftttF3/J/BZlt0dPGmnDOl2+H+UPnzRizx+WfeukkXZ8R9q7JbgdZV8/
-aVguMVx2UOeh3r0ov+sruvxylM+dVGwDp8q/ijz3x27us7rcbJT7Jct1pX36
-mdF2R3mWXzJe2fyRNizX/jcWjFc2KMirxveii3Q9MdTzhK5n1HH1zP6Aei5m
-Pe4Sj328VNexG3vutr/RlvM+oI5pI225B/XwjFbqyaKeu08K/YKg7/p8jfWc
-EtI3RfXYI/XsQj17J+p6ZqCerr/RnuoPaM+YkXpkLixdD/0GfVvXc9Jx9Zgf
-UM+Rk4freQj13PNBsBjTsBg5DhaxfvJcryWZz3qG9nFdNrPdq6WOCH0AglYm
-P2e63xBYNI1vFNn09AR1aOv8k5SsdwJl6TyL71I+/9cCn9+K9F2kDUg9SP99
-+EB2O9JOpH9H+hHSNqR7kJ5A+gHSo4ePjTuxKnps3Il39Z5LmvTmadqWGLwK
-Y6TJWRlou3PEjnaR6FRtFNw3ohew8mTKI2QMcrfKOe/Is2+eTBy9SOlUdSmd
-qmKdgq+crOQapKFbK/Wegz1opvbxx332NezxV7LNoClpEzOpaWWu0BD1zUb8
-To/6k5pX5p6doOKSPm2qPYn1nV81sicxttps1JHBvJ3svCL+rO5FWeCj+vHp
-VwJpowP4c9y9cmYn/pG0Lwnxnfe9YDreTxN3aB+PpMXpD4t6hPxeUn9vsdkb
-z2N/a8GzD+lnL4qNkPjXPJ++Hk5BPn001WWUTR772iDyZNBklWrM6B+jUfuc
-AZIVXtBQMCf2GDzLDX2ekZa0oopPJW1XBz73B4CjKv2cPrES+jn9cTbgOb91
-ttaBYF/oy5PxeuMYf+qfPqB1et+LKD1f+gehnsxTuGeMKtax3lL+CJMTFA3G
-54ffLRy8yeqVNgiNM0HFUOPzN9+VGENyLhjaVIs+WZfYzQ7xzIH7cE1y6Bgf
-evSX9zHkFfvSW43725C2I+1BegOJPjwrRg9la5Co+zm96Fz53xoIp6Ln8Uos
-lfUi4P/O1HoeJq6v0XY4tchL2r2bsI7bonM33hbXvvGbnhuJkUBftpbdI3o9
-D2I8muV8tif4cYQyyJ4ghDvSat+MGKLH/fWIku23RhRvTTuH76Gd30fqG61s
-pyIpdbZkGy3V9FORwBjyPJF+WyKiY0s9PeD+FP1EUScF104sQnic7vTWoj21
-4AEErs1Uox8Zjt3FMhILOWHJmc2dwitEZij65JpSY2jwGyr+hfgMx3idqfE0
-2zRHw4nR+jkrotfXvAYlf2oAfuq58nSP88p4BEnR9VVjRB7jQw3H7rGzGtQZ
-PulgOTegv0PQdehb7pDQdgtZj6l0btVZeA3pXbE/o7/Zq72Lp7q57kjEA704
-RJ8c9M1BvxzEYw19nT5juMS6vid6TvSNSF+KifT3amXsWt3qORwf1DHGafNL
-nV15e8+oILrnCm90WsnPOV/RuzoGGtx1vj6jpS7mDrP1Ur9a7HF7gK83ypn8
-wIl6bJyeJ2J2zxPkmQy7/YmY0/6E6a57vBT8E+nWN+XceInaMwjzrWqdhXKL
-dwuFV6jPzzEs7xLf1sA1mwYs4N89Otao8lPMcVyifNXguToPUPE9af8usYZb
-V/v8ZgnG+XV+lzGO9pwouqMx7Z+FOuJthRG7/4+J3Wq76F9M1r6N/mIqHzpS
-n/ieX8T4NjuUf8SPy/p9nmtttDoP6NH1xQCLdU62lntMum1QYJvnc+/QbzR+
-36Iv6dDXNHEXYBD1Dl0axb6GxPPA/pjal7ZjLkX26WwMCJd19KkIHJyqUXJ+
-yg+SmgdrP1Hb3pjqDO8HvO9L+3Hn1v6amMJnZmb+ExyPS/isWcX3MyV2297A
-Bj1eZsyrfk/0SuYR55XfBLwcm7pS2w8eWxZlqtW6nCdn+Cq+yLzh2BWW6I/v
-Cniuo2wfW3JhfbGMazaSXz+7N16u7bqqAPsNqL8VeVgbkeVOZ/xS8r9WdUBZ
-f0kl2oE10zJJ7XfUffio0CItms5cCNyxsFrp4y8UX443gU8/s2ie6/oZD36p
-gkO0iW2YRptMyllxHdoO3AR+tgbPed7GPZnnoze5W0VOxfX9sRDuu0ZwwhUn
-qv2cuOC+L/NsiONxW8CyZeAZKwxjh8INt4lN+riGEV3/SrSXfTSdVX5rVe8T
-6OtTPINjrBaWZ98pn2oALLZMIw+6KDeg43Ww7SUT2gY0zVXP8ejAe9O1j0DW
-v51nBjPbvNlGTTDpRMag3xpYaCP3Avb3ZORR5xR7/CuNrdzjF1FuJLKqcXjW
-hLYRn5C3jPa/NBA1fjnA2OpR2T/axN6n1Grz6J/EdG/wGKculqkKRMYLPK1i
-by7JT+deW9QWA3WXuxk5a5jKb6NdJdT1RrtkrNCXD3HeSHd0rfKi7lrvfZQd
-le7YQ3+E1KWn/+tXDBVHI2rvG4jaSk8iblFvYr7EHD4c+jd03ErDUvqdJVoX
-1pQ4qheDH58r5/t8V8rLGdzjgLXPej8zhv1t1/N7j0rsVrTJbQso5492rfUs
-aWNbQLqF9MTP6hU8UN/yyXp9Bo6+fSKl6InHkFfqYvyddd4Vyt/oK7QV+g/U
-Tbz2AGPopm7wuK6oawke8KDMtdE98H2DcpJ20WUP8whLBzDOlKMw1jBlVN/T
-sZHvCOPAah2J7Zr+cMYMZQdvUb6dXsP+x73ksZOAf5AY503ZFM+Vc+TxKt4N
-faauoww/XFOOlu2ATtieEX0MrMe5bQOKVmthfh3HusG+PWgCXhW7F4nHtylI
-2Mqug89sPEsin9eNupxlrRS/3DW6HM8i+Uv/mC93DmZfEj32tPJPaXi7gHOf
-lthJU7sHmorsvFn+b5Wb/DfKsQy/bUzdOED9D/t/Wa7xuHLJYfv0NsZ8FtnT
-4LeUHmBM6wHyPqFt1EObcuZVGGccCP22m2K/viYI5Scxxqo0qrWOpug0DC0Y
-4L55bH4/9xbki08mHf9O6z3WJ0WXTWygyg+F+xeuB3S8V/o3iBnt4nci9Mmk
-2n57oPzoq+8Qtvrwnbn6+8c/e4h2v7oN2u95brvmGaRupyuIpmqIi8zhmL5K
-v1Zk+vj4jojEyZI1/8xr+nwvouVr3EPnU49L29A6On7CZb+7wuf6p/yTtGTs
-JCX/4v0+1DFa+6q4TOvJcLz57sd/R/lrp//Jszr96ZWKlm+c0Bm83TAiP9st
-PiPc3Mf5bmrEvz7bTp+U1DFZ4yjdRepiETfTTuVh7T/hJvEJu8LPMV4pfegV
-VJycWFF5xja6X5efpctTr4fX9+KXOgyJovKOpie20s+PLs/7pxlTDWud8Pix
-MUo+ugy/y5HWIW1EknVXqWJexfQ6rMN9ncTOVvdWZa+s0SR+eR+uUWOCWqN3
-vqP8f5Anu+MdFVOVcYg2v1MQHknZKLv5W9B20XkWvWQ3f3NB+QsW/z+4v0lg
-UZ37RHUs5/tAB39B+xfhvhIV3UU334X8G8P4rVpeIXUi/xrtm0TvjQKL/O4h
-0W1S/CTL8tsHj6pvRvS6YXt/jzzGfozouI+rC4Vhfd+3Tx/M7kGiftmyKYPZ
-O5Fu6hoc1jX7McZ0DOCptQie4md0it7VjCKY+kyD4h/Fpw3yBo8W5DyScMUz
-sqSGq38Em1cUwea3fv/BsNmkcRFhLMKzWdAlWO/nE4ZM8dXXtgnjsQFlN3At
-ia+9byn92u2pXomvGct0B9HMk/mSdMY7+ukOvwK0ceHTT+Qr0k/kzSWX+Gb5
-AuoVS8wfxkThO1EHezfqP1HotOv8V9WZHP30it+bl3U5w77Wq1C05yuJmh6J
-t2kYV3spkd+sEH8b4fizfEnmOuqg5amb2KDjqtOXRyR9nZdMq9hiYflbmkFT
-674Qt7SKX52a4Mhc+rXvzyecWX4ENEMisymI9W9Q9ED/s8Rhfo20G/udvZ76
-8fUJq0Z4MfqrRBu9JM9nrGyQQBtNC7BitQX3MvaksyJINm8Quwh8b3rPVMZp
-7xZfCD8QfAV827+CfaomnZZI1QQJjGfUWUYaykuk6Ee6JZdMd9cSFybT7bWJ
-VEdtMrXCi6UwPkYN6GzVtiTKSx1ouzOTe8tS6gMAx69HO9YHyf62IIHE8Saf
-k0S5hLUB+Svwu17aLe1B2yN22wDaWxdJkicwpryM8b97AmAL71xkCk+erzHW
-51ZOQDsMvr8x4JnH3THCXzo/MepumG5kN4Lm3VIjfoSyG8G7bWnhsxJ3wxdw
-D5y+ZUFFOn93qbvha7gHHG65xeoVOJxY5m74NoirW5C/tL83yM5c71GGHMOc
-iC2cfWeQGm7HSqHxYsb6oFT0lTdIOaUnyLHvJ69CGvD8pL1B9HNETwdzk3BW
-BsWw0Y7fFgzaVzE3lAXsPqdXbHS1L8r6hLYZ+KxpiF3MDaaxY1Qq648F3rBS
-7l7KPEtTu/PfrhD98ylr8P69lW5uxdQ2j/6oo2q91WtdM7mPWCsi0ygbtLvQ
-rq4ghr0waa8AfO3KE+/OQp/urenLoR6zWvo0N99YjfG1VujxnZu/CtdqfPFs
-LMYX92p85+bvHYfxxT3H90gzeYe5ucYTML4Wxhf5+3f3BiseW4/23SlnuTG0
-I2o/no8ABiuou2vNfLxMdDXn55OOtPH7GLvvYwy/H3GyLn3o07dAEn35g+gX
-r/C7WqjT2OEnjI0BYyG2CL/eJX2K9rPepUoW5WS9JOaA8wAeU/zzJCRW+Po8
-eADC7ADX/CiTdOtSwjieU2/S2BHFu5wbFZMXMIsykeR8yt2nxLCG75nq5i5+
-THRc8+OeXQXY7Qja5nZ4CQd0ZjpLfT/gFHzP6Aia0O97WghDC/KT5mNs0x16
-bBfkr8K1Gls8W4ixxb0a2wX5exZhbHHPsXV3EUctyE26EmObxtgif821vUHH
-l1Z5if7bAJtLFew6m4NL5up2LWgT26RYepWC3f47pZzAbvrOIAqcSj/yArvO
-nYBZtLuf7caaNtoE381EP62zwRtGAavgb5MoD95tXdKoFliLWo/l2xzOD+4x
-N38Bf39oo+hD5VZsWOtRl4U+48Tm0MUcuc/ky9OcowXELa/snsZ62wLOlcwR
-YTTFdvQF8XTbQBK4IwEcEs7jyBx2yLxQhmUoe5odN+u6yo+bO4Eru0/Vod9h
-zKdSbXNIvj9qjM0nWldX0V8+ZblRoxKw9KxJelXph9Tup00S4DUCPrRc9Xk+
-9UbWGUrWKfbCyh52hR+Oyf9DfbQ9e3Wqats+0DKJzMYg5m5WY6HXwTVYA9tQ
-JtGzMWim/0rj63mLsqHW1V7h26urKtC2wrefqq5ofaqafPOko2qPY9tob11u
-r/IiEj/UmNI6tVfsjy9lHCzxabogxz3EtFZjL2kTfxNzkF+OuhMqBh/1g4Op
-wtN/HfTKCqtpam/ctK+xEi1tcYx5balT6yeca6ui6Q6rtLXDizo3sF0+2uWj
-XXm0K1/a2uaxbUfeV207Fe0SXwgG9kvumza+j/GXOJHUDcN32U76Yom1dgSU
-CVWA/wYf3R1zOjaNBdwTnpPu5X4pxspkLGJnHXiTVUGcepTY91k+FsIEyieM
-Vf5JGJsbadPmbAymY++gvfd0Z2UHYxzP0PczcD9bx1JgvAXBHXousI5eaZI4
-fO154hjw7HmRZXAPTgE/OO1YH1lfwZ6KPUj8fovG71oPnrHV6YtlR0L53FxH
-nwHZo4WhUa1Zv0Lh9O6x4PutVndvaetTuyyj3S8F3fS1o8qv7hla3+4vH1c+
-IxLpS2nfVm66s3zDWeaXu5RZlHsJjE+5c520PeaMBWyt6yoHjaL6BBrGRvvt
-dejjOlkX4gdFrw2Wl3FNdwBPlAT/g7mjDVGMNsHy/g1Sb0JkIR2ejAXwBJ9z
-DOTd1tU5zt9P32f8yA7Rkw/9ExRORl+xHgonP5ZnHO4K4IuHSZtwrZQr3k2f
-Z5Yn7JQfMyzAqwW46K9OGKkq8W/o9KMdKz3OE2Py8VlMPxvmV4XuUP5DeDZz
-8/cGs8uRMkgtSIybkaxRtlDNuG7GOigR2Rx4GuRHRXYxV+h7ysNTlsJ/xToF
-4T5O3Q6BYZF9dwebTcOLtW4KyoTGV/aQSA+dLnRqC/3Kl8ds0HRYI9z7SAsS
-74rtQNqN0t8AY4MSj5XS37d9kd8ImmAcYKaavt4c8Xe5RWJTyZlWdv+JzLfa
-iTdpu7KFsBkz2nzSV43yThbX2Tju4wmnLcJ3KX8C77WfZciDiUwV+Q/pOEyH
-Na1Cesei7lH/Sg/77QEDNBjL/WCsMcT+h7qYhG+j1X0oYbKfyl8AbVqfeh8w
-nuH3a4Ox5KW6HstbGcB45sldJcaVuUTfJX6Z697lYW9/bVJvUObcij1so+wt
-4n9ecDdoBLsN8Mr1WiW2fhHHrTxB6LNuKcuxLHNXevRvaaVoJ7GEsUt2lLvX
-eyV9t3pdZ2MNu+vyMffWINFHWK8NqNshMJvBnp2JB78Sn19LcsBP3wcu+D7w
-E35Xfv+/JXZPZf5bQjfXCl02KgW6GXQi9zzKjsvcFR7bQd9MM9gGice0JHch
-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
-dxEMr8Hze/C8HM+vRx2fVGcR+Wt1fVXahpa+iKl7cPshJeu+a8SXff0c5G88
-xFisXv514Cb6Z/qu3Lv5ufQh4LwUxPVZ0Em4pp5BTPRQlFzkSt3eUi0f/6r4
-SlU+Fdn2JOq9kL4KdPs/LjSKinO0Xd5V1/91lL5RjCHqW30B7/F85ETZD1Zy
-PvMX6u8oXyFufgr9MVg94gN3wyF1/k35SQzrcjTjQcl3jKExhviy1Of0naKv
-F+vaqniArtW1oKFqy7ragJo7auWcHW1hXKoyiWOyWeKDrR2lfEOulrPBtNCL
-5FWw/oc+PWEo+zXAceirqdhH04+R/wzS76vUnqfxrdqnGZ/D2RPYck41X/tc
-kbPG8pi5YsTfSlE5PNf+VlTMlJA3594Ym7pioET7kBa/K6AJSV8nte+p2YcU
-TuLau7d2xBevxK9Jtz0OuN4V+uRtf70gOkKn/34ETnjOTNvycw8VRNeDc3/f
-XwrDMaLCuElhLAT6y6HvHeZJDASl05t7ifb4WHu7/qBgM1cki/mtxsF/KWMs
-EZHFbLkpCloDZX+Jb3b8WMlNCGebdHwajif1g5/E89O0DTx4pmCp+BCfKHw7
-+bzy/vme2e9WX0Cevp8+FpcqWbzFsoz12lZFGYJh7xIfanJGa+0VOYPiIzol
-PvA+fJf7laF8luZ5bk76xbxT2W6Qhrrkp53i7592ffR1Xs5YXPxG60v76WuZ
-cTmXUlaAdqBNUbYV11G2Kab3iQzbpssvZawhvF8rcvi5hOfypfTvCvr7NNYj
-uMsUH1cl4OEYbySWcStTIkcNZRJ8PlfFUXaVrJR6eo2tbj4lPo8W5b9pLKoO
-5RcoY4I3in5YzgUY64gxPH++f5qcxRhDp6P8t1A+1u+ZJf3rDbwnZx6UN5je
-vgHT6x+g7gVjSNcYnYxZs+OlX2BcrPUe9Ztm3TOT/O5gV1DQvhK3Do6yVKwd
-6rub/TMD+iUv798zYPapsxOMTzX5PdZLOXSFnEOofSoch/B8qETH+GMfT2ul
-jjB9Tf18P+vks5iK6ThUXI56icKXybcWVHfps9ioyGHI+/681uz6ePySik7/
-ifGdPue9rKDO7MXfe3RrUP26sgsTG6XqraIn+tk/qDUTkzP5RfzuKz98TZ0j
-jhM77M1Bj9CTyl47YtSKHJK+YD6Ed9+mj5N0Rz7UO6BfsScu7PRnaL1ixkhJ
-ZDYHQ28Uhv1Okg4BPvBEd54yEecV5fOD/m9st/pj6FtC5Ggt5GVM8QuD9nD9
-vfQ7xbvsqh3hT/7FUrrX0VYtk0qN6FSQhq3DN04X2elXA+Knk4XGMoao+/oe
-20VdCMYNZSwKXHMfAV36jMggZf1vlvfou40xGkslllCbd1C/Sz9lCdHtUTEL
-VHyjVRLT5NdvKJ1D2skznmtMxxd59a++e5u+Xh2EcVoy4A+WIRVmib+QvPg+
-zSgf/+WtKtbMLxPK1xvX/1Ook/JMwsq/4rqQNvxyrNcqfZbGuHG1wksuUPIV
-/DJOG+Vytbgep8/SRqvnMkbjdP53dNy7iRqPz6IOtLM7uP8N4u7rvY8PxwV5
-MiDP8zHaxqHM3WyTnJFc7FMezutSPb6G6OJ0Bi/Qn5rE4OwUXb8E/TmhH2uF
-l9k6PJ8/ox82vd9QR/cJ/V74Dt/ne9/UfjgewXO+/z7lVNg/wLfka4Zjpe8W
-nNkutG4n2+b/TJ9dJ1Nba2OpVdaPCId4n/6NSmm3ZGS9L+j+hHOe0GdJzBMd
-FJ33Kc57evf+pPS9jW0L7kB76J9pIZ5tJs+ldet/BVjmXFM3kPOdsJQOs+E8
-FnyHPGuXshm88p3CwY1oI32WfHb/yP7G/e61dwsHqSd+rc4HXoiGNDZlMj8q
-U36QueaX7Fe0MGUQosPnuA+JHCojcQPKb9f78jVvKP5CZCPAUxVvKB/QrLdE
-+qf2OPJ45DHI080vYwztRaJ/YqZm+S26rk+yvPNVOSfT39zLbw6Kngp4kTeG
-fZ4M02//hT59X+vHvoox2o8UAe3yBn4ZS7xy7FDWcVJ+wY76ZeLbTfkGuRp5
-pAsXGamNvJ+p7wGXbeepvFxI25OfeF37to5JHPl9wYGQL4pkXdDv94U8vOhA
-h7FyuhSOni80TlZ8/Rj6bIa62EbfHpGhYn+NrpX9Miv2S15hRA8hi+85zscZ
-+ywffbP3tm+jvv0vDmbfRoq9NJitQdr+y8Fso/5txu8spBakKPokuoQZlzHd
-h8J7+gMdK/hc3QP/cf0PxfV9VMcgDHUx4xkde1o/LxUfoCPvJzLa56K+L5M4
-JW7e6fu4Tz3EgjNK2l9wDT+C+adt/6id4vs//3H8Vv8/N9dEOZwziv7OxDfq
-GuNEmeeZFScKTk3pc+A79NicTx0Od53HuFAFt1zq5fMN+vk0PqcsGmWizVlP
-2lFUbrWOSThZl2N+tPlWKafs5zqDbw/7Q9xK/bQdo8K6+N2i+gzts5zvfUm/
-g/HcwXhy5W7Wixs/GwjLmsM6tAsk3hbfWTbCY+8od70c32P5ctraZzzSzENm
-xlO+z3RcTOqjT8IDkasVyaOoj8/f3RtC32dpn/44R2kadwbWzMAhxQeXaBnV
-DKz9PzIGjdHuJ6wOnzzD2yVK/js91B8FTTDD6a1tTnXXlqu9Yqg5PcunLTb5
-wdrSEd0W2tPUCD3QkntH4mIqfSHS0l1oF9tGvv2lYTj3hG+3xWY660+3u4Pp
-VlvQDJzY7GSD6XZWbGlCv8esg21i7FvG52m225hQrk14KPq+5fnmoy+Abvkw
-+pVp92fY6jySuK4LbaXvW47jQ+hnO+oZM1f5UrzFUfIjntPfxOt0Z+Dgejmu
-eZa/B20urutbqKtF1+Wirjn6fdY1S7/PumhrxnpYx0+1D6aUPhtlf9xVpkF/
-S6EfptA30wnAX09jXT+LtAfpEPUTQ/qhn/vcUspJy881lH8R6ic6wJ3kZ008
-n5ma459An7T96zcW+pMbbxbfkdmIBZyD5/ud1jmAtVKf5cqo++O6babrdseV
-r9o24LLu8q4e8WF1NcrGgbdBt66LyPeWMJ5dZaLo2aLUnI3ke0I/VOeh3hLl
-O/n+zZec4jFW2RjN99UIrJB23Su+Hy2Bq6U50kKCH9HWEuHLUR4wVE59aMY6
-S+0Ruu9xKUM/nitrjfQK0VU9pHU6+Uv70VLqZju9mxJGb4dhdt/GtdH+3IHs
-hLEqHrOy0+8NGhu7g8m7eQ7WGdQ1douPTfDiyrbQkDN7swH5dnN38P3XVBzm
-lzFv56Ces5A+PFbiA+RufE3pTStdXYUXqRvHuF/s18deG/blWW/rNUJeYKbO
-x3pLTJfrJ6Q/XH+EjVIdS7aUMfHkDHBvENqLkpcO2yP+6FJqDwJuK9+W6g1q
-mnuEtuJZHPjnNcQ/dTw3Qh3Pa53y8P654+5/dtz9E/o+oe8fO+7+kePu//u4
-e+pLU5dcdGOalY5/s+YDjhQK9ye0/7fLS40h9qdrT9T4Cvqz9CKsn+YiewpH
-9CylTlefHzioT3ANaJSmi8Kx6pGxCvcNniGXOr8JiIcjWl5BepZj86acVVFm
-I7pt5XX4fU30noyhhmalm9+Ab1AmZut7G/c3ko7lfWaV6EZH6QsV+b+R+rz8
-Z7S/+V+JLexIu78s8m4vzzgAqyi3BS2cLFV+ylmutVLsioPP6bZfrtse2upk
-efZ6gVttNdMGvd2PNbcrHWC8K33Hu1fpdy/Q78bpcxN0LfufmImxblZ7kfg3
-5ljpb16h36OO6uTjxt2zVJlZRWO6E3BW1rgvSDTvwz4+0Sto/cO06F17Eq85
-rMeK9cSjtmsqPfp236rpCfrpax3vj8L7PD/i2QT19SPUG7aeF10vjK0Xne7m
-Jk0Xe+3cbLQDa2dHeePzQUFo73mg871q5W+PZ0XesL/QWwBndWjjZCv0H7k3
-qNHtJ39zN+jHEN5ym4ayPlIeydukZT+uijXKOGCUp8bAa26g/kqz0nuoAT79
-IvrzNeTNK6j9lfKLOdN6g0Tj3iBZw1iV83JT2Tbx17rSSzbuCmqAU5yaNnnG
-8WrW9dFe26KvITznNyLoO2U99cZc8ZcW0dfUVYw6vFb+ME05Q7vYt5pXBHto
-U9q8YVhPKgJ+1DTSKJvOY18u7wPNxe9TlnYZv12j/DDS74QVwx7cSH869LE3
-D3vdiuz0RvpEuiZrNbZ1UNfZtGb6Bcv0+bwUPHyjtmcJ4Zu2G1NEF/mmfJPM
-9U2UidZPn9uryoiuwN6gj7Fkm2mfIHHD6yfXbNJ6BHOlnostt7rWcqP/Rhkr
-ynGN1TV3BIcpU2W5lDqrYNmtR1WMG9r8NjWqOLxPpzHvf6PODcfVaWYW+t8t
-FKYonXPj/vXibxBwlLo1QL8D+vG/GfU1NSs9B86FtWyT8In01w3a+CclGfcu
-8cOMb94ZNw5aKFvaer0Xda73LHwjhvsS0JAlXWu9kkybF1vWETSKLbrIuvYC
-PnY1NSobIcqz2OZlRXZThNO3wO+nZvYq2xue66QniU0a8arV0h5MBi5owq/T
-0i5+GbCni77WxdQxxLM65Dcg2UiNSNORmpGukLlQuublrW414Lo62bw7jndN
-6nhS/3PLUcULkU/eSf9GzXuH/bE+gDUWi9Hv4R6xhY3F2gPu5bczzj1jIb+v
-cD9xdVbPE9cn14IVawuETzG+Kr6vQ9/qi53eFw3b3Zvm+m1se5H84uMY18k1
-PXotHzunDTKnPXpORZcbMPhVJefF/P4P5ze9TmQQR9rVePI8O7l5KGvfVWow
-1kZEeB/xa5gjb5n+sjM7pv0FkIao2axoWMZQfm+8m+9GZZ8Hrdms45dyz5is
-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
-FfOMuWu9BzMv5gzzVwNm+kXSN6BzrXzzJWzTdd4dEgOPssa5oImNKWb6SFCr
-62Ee7s/BvcN2GGkvX5vejfcyXnOK565bgxL6QWrNeJTRA1dtmY6xiLfe4FH/
-LWlv7QAN33FkXm/Heu4nYqu8BLjwMp8ykkbcR1CuLMPyWcZ7ncKYOPSnVUo/
-462HZJ8zWw8GlJ+VOW1exP6sFzWu8ygfPEfsLJbkbLzXiO+W9K3zRvXdILTY
-qL6sx7pHGe6EtwqFKRH7Bo/wHNZNubvZ+heBb/WNPOOOiH4a6RHQ3Dl+D/vW
-FO6zbHtJ669E3s84U2arJ2XLpU2f836F/a0c/eA32ZeX+N7f6cvPxbfgHtBA
-lOs8EURwHcFv1DmEFAT0G8ZzL/BF64h35opMQc11RPaTPODyxTj9v10uuJM+
-qxl751DctC+KmJl8PMIYaa0XS5wnM53yawDfd2PcqBMd6dsTmF17pE2jetbm
-ftK1K0e/cBEtQ63BeHYYqzzS+5QR/SQzP0e95UL6yeipyzpMqYf96rrS/0lG
-dCkYi7O+w+F5VZXIVBsFR+Ibdj5gDIcU4E584BKOjN0yTsbc1Ro+fynwuYg2
-eNgfyftRV7MunQ2oD2KkVwbjpI6xqg6uket3g29Y5ZVM6JB1V3L1i7LuJqAO
-G+XCesBfVGfTvfGDhUI56RTxhdCl7ArBe06NSixdVfauuaAv+6/zOipnek0Y
-AzO93qefdDPd5jPOKt+Np1f58f7lHmNmmc+u9kWO7VzrqdgiXr565u7cDGsl
-8MvKIKXpsqnAk59Euq5O6RCvAQ58APiBftAcS53f3Eg97ZSbfyi1QsbTDm3D
-tPyaMaTaxJ/z5tya1k5/hbXa63t8ruzBbEPf4zNz5D/fRn/uQ/8qeK7cf0ew
-BnTyCmed1zdtfi7U/yUvxnOcmlBP2JrrU+5dB9o6Jefd3xP7Ge4RMQP7v/U4
-6JnHkbcroBztwf7Hc/dhzKjXJbEGnFuH7XJOBp25JtPpt6VWeX0XteT0+aPY
-oVv4PuHrRjw/uWsV+TLRT3vQ/WWuPfUNL2kal9M2qgzr6F3t71ls21OtHJuz
-aTsO2lnsEE1T8SyzU53+jpueyzW0tvsPuvtyD3b9KVfurvW2ubtz1CkoNVpy
-h7VvcOoAOxibdqyBhzN3SCx10nQco1UZjNFNC3OrRb97tf+fqXW5vpsuFVo9
-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
-Bjc3hvo2hrHuZJFzG1tazu0Nbo4oH1Q3Ci5WOGEp2hvGRaNu0S1skzFX2mQV
-zb2p22SNpS++Er/NWuGdetIKv896XvjcFVa711f6WI51/5ueuxu5f6Bd3im9
-p7TZK22ejXDceL79oDVPeMbwPdZRRZoXffkzvnOj4C037wCGW3A9G+NLGdZy
-9G+O0E/K7moObRHwrJr0O8b4Zh3rl2tk+Tm9tRdEuAduDSrZb702lqHPGfEf
-v9KjDcDX0f8W0V3z8lVne7k5/T1yLka7jia8K3YuTokXnbree9DYm+PZaJww
-IX55xIe8fybHzZkn41atx41xpyqUTdO6YZhF2Uks26/KNuiy5EsjaozPJ6zH
-09d6K5x20ffqK92VuxFz/kk5e06LP6/i+ipkzuYdN2fkfVWdb4vMdW4+rHeq
-4OgSn/U/eu5e7KMrfa63COYM9ORQJb5Rd9w3/mT+9Teix31D1ijqZX2EAfoL
-qSiqI/iAOko/oI7voI5RrONarnXKpK71DB0npLGfcRdWepTzUjd2/dnH4g2e
-Od9o9Qj/vsLQ43dev4wfeTg+a5RYG3NzKzgumPcTAXe7jhTKy4rgjbBGmAvh
-LWF1DhLOKBsjzGUAQ795dwTWEmf31oIXqV+O+jL4Rgu+0Yy60kI7uHngvGC6
-xMVT9UQ07BMWf15Uz+5pvbXfRT1Vuj/OCC94jFzGnUa91EV54KgVgK8tjLUW
-7hfFe0WS+wz9b6HNXzxcOJjs3xKQNyQ+Ig8Yax3hA1ceKah1QLlaFOsA/aD8
-k3JynlMmw3UwYYWcFUWnPj/QhGc8L6JOXiP4tOE10b/e/yzn21l6zJrg2VGT
-oeI+sV76rj2k4q/Vcz2G307hWarom/z+2dOyXtRc4fG7lN0+6OzJcZ3yPK+R
-/Kqx0mPM7OI2zP6ANlCv5txruOfyHOoajzAVtunc5Vwjy70UcMU47E1n4H0b
-7TN1nIfTTZ6fVecbp/bWNmKeKDuYzdi2er5mF/GgpFcqi/aqU8y/pleAW3Ma
-358v514Tn5Q9KGK3ebNJjwP2wnVbo7+xuGiO0sVzZKvxinCOOE4Tnh8YHiNn
-j+CsRhUvbXh8jL8xR+NvBVVdN5R9COl2pKeQPKRX9x3Ivo3fQsEwSk8Yyp6M
-gWnE76t7wev/5kB2Nq6vRvom0m1ItKG+Tp/b8fzuR8h7HInjfcioEhjg3LO/
-0qfIcXNvq7mfNinrRdCnCPpE/YIHbfTLLp77tr+a+5/J2enSY/ZXmftrqfPJ
-ub8W+J9ndVXDuLHPGV/7H5TtAyYqsLfW0u9qP+dV7R1/b35/ZPzv5ndW0fzO
-KprfJpG1bkUe9ybAuvNPHm1ZUlPHd6zFHjJWzz/PLjbSFhFtn0Xa3f4n0DVz
-c6A/NoH+2JS0ru4CDbaFMl36GmEdk62ejoh9bTZqXdPVDNqcMGZa12QZR1Zi
-s9juBOaNwvUoXFPXlPTKqL5rtM3C8wOkb6LGswPK1meenC0KrILeEf4NOKUK
-a4a+qr/4F9I5V2HPBf+AMqSVzL6Pi94q5VTEbwvFh+swXSrjeV7ReF5p/H3a
-jv1n32sER87L0xdBDfBdA9uE6wYdW5p8p2FdI3I88iXkN2zZR9Z7s95k/DwV
-q5K6L3PfG6H5rRE5hXlqg2sWmiKRkoYVRmFGSSRirzCizSuNOsxVidi6zGcc
-uOjkvs446EiTfNPb08aLLK14fzod43LCcEx2VX9d2EYtlz+exh33D8ahQceQ
-pz7dsrPHH/O90ZwHzffUO9rfH/Ib+juD0KcX951w75jMubIVLkzax+4lJToO
-0Dg8uxzwaGHcJwtMLM1dKucMW4LwTIF6fI3WJrH9tlnO2BJUVeq4nNjrmo0O
-nqEBhjeFvtDqG+1Nch5TCTrXcTqCyXYH6LCOwGrdIutiMp4brUo/JGlt4Tnw
-+c0G37nGG/uW9lnH8jyfRr18Fslc62k/UlNN6waPeIL69+UoX9K6yCO/yrpU
-PTd4PMuN4pnTiu+jDn6/QtfH70edVcJDqPbx+aYAZePMi2ZWOU2ZjnOiEhdJ
-jXMUNOU5EvNhaxDD+FiZLUE0fZ2X0GMXB5wmMF+E4WTmeq+kCIZLNAwrOFko
-/v6TYdw9a4u25brer5NYB6pf3Kf+ReIfGEP/+u4ILCeNnkHZcy2uffoud6NY
-6/ks+DORdeJb8fRm8eeRZjxHtCGMgxcril1KeUqDjnMUs71og63giLGXeNZK
-Wjujzw4PzT7jgGN0DcZpb9eq4u0afW6b0e+2YdzXUZ7+9qk6jnefm9tsRL1R
-ttgY5SKpFi+afsILbSVMRfuILUTE3gjceA/msgv03V2enDFl9lJX9yF84564
-xKSYZ+J+kpkpmcaxe1Ps60BnGi304X1+WL/R9z3P7H/Au8vqy2Uo0890iR3p
-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
-W9cb3Ly5K+hP9AbTnU5/7LOd/k/stlyf251bar0abJgyxXtgMuZE9Efd3INu
-W87FO1farwYsN72Bsbmxn1hefsPdEz18s+rTxvO1n7KerzVqVlgTJq60bkJ5
-lqXsZfaMzpE1mNkXnIV9eKmxsBp4oBp0SBTruXzqI+hn363i740xsL/zhsS+
-y937PmjlW34jfoaU7fiCfMONvbWRtFv9F9MoJ5yx3H+/r9ce1t2SMzr96WIf
-t9Jb/jnaG2b9ksytopNpavx6FsZqqY73Rt1OZW+0IN9/A2O7uIJr7K7OYNt/
-9UrcwTpX6TpT17ixtTOYnOkMpn6kU2wO6sB79Vl7c+tPA17X7dhnGjuyH+sN
-bmK8IYw7eYE51q6g1mkBjFeTdsG6rc5/ljQY8oiXr8f1gm9hHFpX+9MBuzNQ
-H23YqjMtAWP9XEa9EbRxIml3vEObb6t/ay3oiiqrv7P2DOYnO/052h9IjYVn
-1oqqGquzljGOPinylpbh807Wdb9p1L9a0hvUiO0T9ZE7g959KhYRbeTukTjt
-C2TsKc9+i+ed9K0LHEdf7KPwuwRtnow2l2t/Eh26nSfodgIefbb1PueFQPZX
-fL9J+Gllq8WY23zvLKy/FrTlO/h+o/ZZM1F0EFAOdE8N9umYVSN63zb97qPs
-TShLO7QQfkbpNkx6YyTe5wKsJeZzDZ1UFJurkTrBtH8SeT7lzK/ImF5H2Wyr
-4n3rwLOJrQjGgX0lHVACnnlbLXgrd5b44VhFnxQztsreQj96U68AXKBcn7Mv
-x3ivjJtN32ucU8Y/PhFjSNih7UGfvS93yNmbo2xuI2hhgTVc34C9k/rCPL+p
-A064FvcLnqOd8Xq/wtgxWGE8gLQFab3sve8eUf2aTJmSxIJB+136unlyoNxd
-pWBfYnS/cgzsM64a+T3qCIhco9+NUm+A+LiuVcdnlH23tIrjhDUQL3WVnM3Q
-42Po2G0cMws47M7m3iBcgw85G3PTm7YGy2O9wmMuea4zkm3sjU/vXx95MH0n
-yAW3Or7YNen7gTHpa/o6A55tNLtqnYVrrA9jNF3j81mNin5ayrXmpv01GNvm
-Wb3BF3Ssn/iJXAOPBYR17utcV7U2110V4wdh3VXlrxZdmGrGNCivxrO5gGHK
-tSmP5Prjd16d1Cvr7p/e134WtM5uuPbAq9THf85vvarWm4H1ZmSragy1Fmcf
-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
-WFaihu/dsX5bglWTqZHW2ZrQStZzJc4AIT/8EuUHXai7X/bqQA2V+mRWUV0X
-Ed+wfaiUtc2RstWw7SPrBljdCh0QwIVS3hX16kf92tkCG9ryvJPvZjbSel8T
-iv0w3KvCnfnPpxBvoYh7IaDt3v8OtBKtyzifTiBYUJTWTD6zMOKepT6IdQwS
-nqB5oGcdWDbQnaNxn+Ma2KCCbg0ln8f1ZkWcnTzwmNA/At0ciKNoOjjUfDfi
-QA/+ZKOI2/GYaFei0thH2Kb/xI2wFMXe1kN52+320XcLOd/F1H9Gehbt95bR
-Rv01dliHvc8wcbf/LtCEVA7uHd7N9u4cbSfp/QF6d9L7cXrfINbhtrfpfbOM
-/xa9I+5DRqED4Aj1F/JbJcMPdsIWgqNttQyHTRzc949Wxb3oPbRGEa3Rtse4
-iu+57HjoK1w4UwLj6LuIo92N0Zxe6moOVar53oxK8fTShlqIvNuPb6jfQ1Lv
-Jo3Jvh1S5y/usD/O8tXVrDtyK5V/qBlybutalebWs7rm4Fa2CdV80H21sBXQ
-trv5oAt7yt/TXNKZ3nMXpDS6XzEh3qtu3Ldk3UTqSfde9aRrt+mkK+wDqeOI
-vuHu6mdsR/0Qx81RThJMGdvEXqqAJcD/YzRusM3m2O9z32hqhx39EEsuZWIP
-pZjG8b5hQkexb7+pXfQbdFrb5Z2tTqJnFVrrYuX92X4mYfNlkPE9eh5012Cd
-hq5GildD8bQ+3CH7EbQZn2FQH/9Lr5zXZCLh/176Q6T/G+kHHGzCnTRas5EH
-YNhM/dbJ9PQqnKG57ESb3BqhnK8lvIL29kBc+8u1uBcMvdt22BChuu4bdKLn
-3gEndCt7VjsPqK/2fFF9VXe1hLWXdYTbZR9hzYrKpTVlNvpms3uP0kDrsrEV
-a9XPVLYd99KJD8mitUm1bYSOGOxzDAu35TulvpC3auSaWkNrPtayqcT3xah8
-Xxq8XRNs6wKXfapTztspbhb0StjudWbZqt21SJsCm6Sb+Lyf66BSHdRVow3q
-qoF71NXEB4hx0yVXe/T/Yz+S5bUjCQcQ3l9C+MqgZLUB3tIhq07vlG810bCb
-7DRutVRmFtVLpXphHaOw0dC5RvXVB44l2qDBBPopxSRs5Cny/vu1rKemjts8
-kGUq6tzrqMwexH+jnkZ1TWvQgGrnbtMJF/bFsc8enOToOZDcbtPBnuDlaQ3o
-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
-Yg/+3/Yd8h6NvXRPnkQf6JyHgnSOPf1kP/5b9uOeLvpRNWW0qs15rTQGqQnB
-jtk9o+ypCb3EePiGzZZhswPCCOemGns7Zpv6rUw1ynEMYjh2tEE/blCKsPew
-m9bK58i9SO5lco+Se4zck+SeJvcMuez4iaWlFeooU4JphGlMvMk05obr4xeO
-ScjNS7g+Ib6gqKximRo7K59i3MCR1HjVlDg2IXHs6OuHggKoayOel1wjuSfJ
-/Y3cXnIvkTtI7k1yx8l9QO4zcmfJfUPuX+Q6yYV/fs7eg9xl5K4iN4jccHKj
-yN1ALoXcFHIzyd1Cbj45C7licpWfg5bTfkHTFJ/fqRHtnjB1hG+83/dLjG+3
-NxOStw8mDyFjZTM53EQ/qIP2MqXzd/xCfiXehQA/4VDlrss67H8i9xi53eT2
-k3uD3Aly35GD8dXCyzvs8bDJo/Q3TlTzTTUpT5iP5Jy16VcO3XBT0+Jd6179
-23vvuL75R0IvY1D5qIwBz2bUT/xXWUveDZtiqv+45/btL5/ceqjz+0/b8gal
-JaohuugvCl6veDx9ddadT9z8bOzqiIav3e/+uOO19e9njim7tudlprAPlvyz
-sOGWvZPnPn/Xn6/YknTvZ/+6cHbbB/tfPzzVPWfNoj9XpehzY4JiByYde/Or
-Dx849/d/T72v6CHDX4a/8OPtp256/q7Nd/6hr9kwemyvYb98fOboK/999Pyy
-R+bcf+NLff/6pPXe5Z9Pf23egLjg5Jyo1H7PfPWnX758++1Phv0t8uVF66dt
-27LiuZL37/hhZu/xo0bMvtrWvbHzwDeffPbzu1e+MvbvtzVW/al2w19WvrXr
-fFPUe/GvzvxHqctubFIOmtrUEPPglMm2hTkvVD+46b/bP9oz7lC/k/e03fH9
-rqC6Xt8PODHquonRGUvzbinrePboE0813Le65MdZ7rj3u73WmnhokCN6ZUhh
-xZSCQVmh6R//+T/PP3Tvvi0Lzq7411WvJ39w8trvxmwI23nZrYVLlvSZnHjL
-9A+L3+z+75Hn3njo3H1rX/jrX9LnWKaGVQ1Z1Bzj0q9K2h5799F5H084f/V/
-/33/6Ude+uvDL1XelHX79Xdedtc/DMf77hm2ceyIX3p8Zf1kxttPv3z/39q3
-vbn+2uXh1oJ5k6Y/llwd5+z3atQ134zvnP/u8s8e+fuLr3z4p58aLy8ZsyJ7
-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
-3mXWnJIalJYxzZw1K4ODfLwI1QpN5U7JvOgL4njHLNPfd9vMNHUyIWat7xWR
-lqqfMW3mFGXSzHTzLIouQ9XZ2anTp02eNilDmZU1dVKGmmmeRHX35KdyZ2Fj
-Mn3BLPMkKF6RnpvFMzObUsxMpzTsTZs+KxNxpnm2ucvEWWiBpYrxG8Va4G3u
-gqzbzJO88MdiacCEjFy9uoW6TqY15X+Wauq09P9ZgoxJ5lkZv1KIuM5RUli0
-kBvY1bwaMUJlVYATDEpZbhHW9kxsL1jVgUBA+bmVCxcREuzsrIENxrZ2+7zt
-7fasq9rtjw9rt1esa7cn0rvjsnb7/oh2u0Lv9VfQez/N/kj4VPpjf9st9HXq
-pIMeTzh8s37lDQsKCCv3CTMGhP3RJ0wNCLvHJywlICzvC2+YPSBs1k/n2M4I
-lzet3e4blu0TljTVPyz8rDfMluYfdjulC9LqOcU/bL5PnukBYTk+6X6e7B+W
-/5NP2wPKK6KwUBm2aKJ/WJtP26cHhE2jdNr4nE71D0Pfb5f1+bN8/kXWfb98
-/k3WaZd87pX57ZPPl+TzgKzfQfl8jZ6wFfOmfGpjBn2VeP/eLdLxr8S/XjWG
-Dk+YtfjifgjRbOD8wT+slNJpYSml/mGVBmFrBr85Vf5hDyjesMOV/mF/pHRB
-mv2cgDA7hRk12zxW/zDttzyxww5XI9066eql2yrd49LtkG6vdPulOyzdMelO
-SXdGus+l+1K6H6T7WbqQ64SLki5aun7SDZIuTrpE6ZKlS5duunRZ0s2TrkA6
-q3QV0i2Xrka6ddLVS7dVusel2yHdXun2S3dYumPSnZLujHSfS/eldD9I97N0
-IWOEi5IuWrp+0g2SLk66ROmSpUuXbrp0WdLNk65AOqt0FdItl65GunXS1Uu3
-VbrHpdsh3V7p9kt3WLpj0p2S7ox0n0v3pXQ/SPezdCHXCxclXbR0/aQbJF2c
-dInSJUuXLt106bKkmyddgXRW6SqkWy5djXTrpKuXbqt0j0u3Q7q90u2X7rB0
-x6Q7Jd0Z6T6X7kvpfpDuZ+lCkoSLki5aun7SDZIuTrpE6ZKlS5duunRZ0s2T
-rkA6q3QV0gl9vUG8CkqVWeOKiP8tzmdW7kYwfCUQWIecNV+Ppkji1EmGIcD3
-IyTxfBNUMg/jE5nyRnwZE1+wVSY+FRYJ12WQV5hm3GiPhs1xCQnXjTKZNIGb
-caxQaxKEfz2is2Nv5I8sKW4py2fNUtmUv7xCzcwwtg3knvQIb/TK8jxvdPJU
-VCy7RExiz7wxIS5jEfzUyMWWZawvzyeu7ACKzIJYvLOUmS7uOpZbSyt8omrN
-1+LKw3ghMg12EXIzIxRRtXH5BfkLcvOLxa3AceAYxc1A7ZXINfFqqaDKjpOX
-vji2OuiP9OnuG73fwGBf9JFykB8V0ZVaJvl8Yon+vFF2NIpQRAf6RhJV9Ysk
-+s43En3xi6GJ/YwzVSXRYOOnFFssC0shkqUl9CjW9AfTcZpaI8C0iWqvZXY3
-pxhBsRSf2Nz1GZViT8n7XYorUhYjRoy4Ubu67JOZ4oV1/xLHjvYrs1KKCAoY
-EMVpajv9y2BQ0Rp5o9QV6FuiBhz+mfhLUnmlN25UZT8JSY9Bf/QTk7r7Ri1/
-P8mqu5muWCHs36m/48c0XU9BH4XoFWViT0GfJJGb0lPQMaCBpvcUtBASzKZ3
-jXbMovcwZBJDdBC9w4wErOHeQe96+T45iHCkIgj3AvoeoYhMF9K7Qeaj/ax9
-RN5L6Xl3H1GXanquJQf7ABvouYVcT3rfRs8VX59jnBhIK9VEizZtoOeWaJHP
-Nno2RYs2/ZWeT0SLNv2dnnujRR1foOcBct3p/RA934kW9fmQnp9Gi7a20bOD
-HOwR/JOeP0eLdodQfaL6iPdo+Y4+iKHnVX1Eu5+J7LBf20e0O56eo8lF0vsN
-9EztI+i/mfS8VbYxh56FfTq6bGN9b1HWn789Z3+st6jnHnru7y3a+xo9j/UW
-bfyQnp/1Fm3/lp4/9RZtGUv9Fyb7qhs9Y6JFnYfTc3S0qHM6PWdEizrn0vPO
-6IvrM4LyGy3LTaHn5N4iz1vpOU+Wa6XnH2R9VtJzdW//fPSqXvGFyzSCm2nk
-zOT+UGqL0yu55UsLChcuunOx1TJC6abcVZVftiSvpJhiS7MGyjL5rJTPIvlM
-uME0Tq8MGz5qYPyC2KHX9h89gdIrg5TEkfMGDCFG4joZb4x8Xi+fSfLpUZAR
-i5/+op/D6P8L8fzkh1T+6br4ifCJ/Avq4odQ/W/Z4gwsP/Cn6/qnfQ+6xM+o
-vfja81SaI6aC9wL8sNkYchFiqiuAZcwj6lwFcwhz5DJylwsUoVyhwIC9olxJ
-rh+5q8jBUOM15K4lN4RcLDkYTh0GOCQXh7kCGCM3Uo7R9XJsbgAMk7uRXDK5
-ceTGk5tAbjJwGDlsLsDw6U3STOl0cjMwz8DLk7sFcAo+jtxt4MXJzSU3D7w3
-uTvILYBdUXILwS/7wNX/139Bcn3oJZ8D5HOUfE6Uzwz5zJPPMvmMvgT8dAUr
-XcFFVzDw///+3wlHwRJnBEl4Cpa4IUjCVbDEAUESvoLlXA+SsPN74ej///1/
-F47+t3lqP/1U0CySZt1pmErLYXDXqVasfGLlypcfWrlyhfR3ftzZeehsZ+cK
-D617gX7Lk7QtP8WYtNzXG5OcfPbs2ZiYZI9/BSX2+kWUGMVrMajz7CEU4LEC
-lFw4cWJhsjf80EMvv/zQIRl+dfe+o6qO0a9KkZHplxxDBQj/hNETwLfZvnUK
-/z359+TTb+HZL5pl4TEfJ59N/ljGtzc7v/3pwk/fOpsFfRoU1v3q8RfGX909
-LMhT/ZiYmBVahZVC8aOnzP/jjz/+45X4iY3OIzlJ1iNHrElRR5b79Cq6LCC/
-Fb5+/LTq8c9bIH2KuhAV45OZKedCjsl3zJqbmy/4eGOtF6yxXq8xKWn58gsX
-fOqyfHmSd7wCfjQ2yaiMrA81dZB/BCvlzk7UdvmRg83Lw8LWHFmuteDgkagY
-U86RNZIStVqTlpyh8Voi6m4y5fhlR3H5FxMlGxcTxb8YbwsLkzuTC32r6B1t
-n28+CZQLXbTLkyIoDPWT461gtFpaMGIyXlKVHAG5c31ERD9yweMPSw4LC9OG
-N6pfsvXYBarw1bJoGoyffcKTcsh/hH7Sf4HSizZr+VGQTzjeV1D6qCq/mvs0
-WPq15nL1qNfCvFOY/2s/DkMcT/5RPuPLHz799NMzzcs1aKEOuYAKCf/PBAHL
-AfE/a/PtILWw+aCcoMpPVjEhrD/J9hXmLapalJNXeMHPn5PzrU/6T48cKRwr
-/CiJi5PlJcsJoOGLqxkavPP9CyqqqooK/UL4v83hn6e8I19fuNDik9+RL/55
-4dN3vH7ua5/+5vbleOsnw1s+XR7V3ROONn7hCc9JigrzpF+x4na/+h4JyF/6
-rNqE48xbWi58bdX8VpqNy61a/QQ68+Z34cgaDN5BDf6STfKn4VPCYLakfh58
-lRwlf8naaF7aqJ2Ybhd9r4pa7pmvijMnp4qH2IvOlh8hANDa149Ksh7zxufw
-Cz7hY0aZqlBfDzwrSxD92PIoHlLK37qk0Nu/BJdJvv0ZFqZ0D+NfIYMcxRcA
-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
-B69ByRq64M/FJiuCs2m27N576FBW1l8S3hrWUJft5SXRuGG7ZyWMcP7t+Tf2
-/sj8KgJ9+PP62Cm8gsj6NUhuOy7/pSc+eGtPsaQ2PdQwthcadjR//M03j7Xz
-hgSla/Dlz21+/HlDtkapN/34yivMXmTHyaVQbN5gs6AujrgWH46+K/68iUcn
-zpfbZuZfbliKIwHGb8widMXR+/LnHjJQ8tPgtgFIhH2wQ8rZtXh2u8UOgZbC
-jz/XyXsFfeM77EPJXUcujdxt5ArJrSBXR+4JcvvIvU2uldw/yRlGdNgHkbuO
-XDq5eeQWkqskV0NuIzkHuZ3kXiX3LrmPyLWT+4d8/kIuYmSHPYbcEHI3kLuZ
-3G3kFpLrT+WU0XMZOTu5WeTuJVdHronc38i9TO4tcifIucj9w+3Vu7B/eLv9
-J7e/rgqjDKuKa7dbyH/fF15dDtr9uqmmc/ZzX3jT9TrvTRdyXbs9hvw3nhdh
-jX06POUZ49vt6V950xV+de6SYbu/8uqqqLm+3f6iT9gn//GWZ01qtzsp7Eep
-g8P0tVePxZcUdt3X3nTff+PV+ZCY3G7/D/nVb0XYSnpqApv9bmi3ryX/bhn2
-wXfesMQJ7fbP4P9ehD32vTdP03j/PJ/63tuGeePa7TvJf1KmG/mDtw17U9rt
-ieTP+kGEZbn8w577wduGt38UdWF9Iqnt9vfI7/xRhB3z0UFRO73dfoL8/5L6
-MQb995xHX8TOOe32YeSf+V8RtvG/5zx6Jgoy2u0Pkv8NGfbHf/uHDfnZG+ar
-h2R/bru974Vz9qEXLtZD8iCFzaDvSy9crGukgsLW+YTN99HLYVvQbv8bfX9V
-hn1+wRsWPb/dfpb838uw6E5v2OcUFkP+IZ1ePStaWN1t7fbJ9H2uDNva6a1L
-4u3t9ibyv9x5sQ6WfvPa7XEKzT9yCt878t5draJ0VeTfJMP2KR2ePOvz2u0H
-yH9GhlXqOjx5Rue325eRv1YnwroFe/WLFFja7X3Ir4375GCvvg/zne32meRf
-FCzS1Qd3eOBl6+J2+zbyvyDDDgZ5dYF8XtRujw/psE8JEWHNId50zcfa7YfJ
-/6UMK9B7w+Ks7XYr+e/Ri7CrIr11+faudvsg8t8Y2eHRWaKlS/9ju30Lfd8l
-w16M9IYlUliz/I7fxz5hyRTm9Amb1NeLQ3bc026/EOntl6u6dXjG9hiFXUv+
-yd1E2r8avXlmPdVu30P+k0YR9n8BdAQJWYR5AgA=
-====
diff --git a/kernel-bfs-2.6.28/debian/usbdbg.diff b/kernel-bfs-2.6.28/debian/usbdbg.diff
deleted file mode 100644 (file)
index c546134..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- rx51power_defconfig.usb    2010-05-28 15:38:07.000000000 +0200
-+++ rx51power_defconfig        2010-06-01 09:26:48.000000000 +0200
-@@ -1625,7 +1624,7 @@
- CONFIG_USB_ARCH_HAS_OHCI=y
- CONFIG_USB_ARCH_HAS_EHCI=y
- CONFIG_USB=y
--CONFIG_USB_DEBUG=y
-+# CONFIG_USB_DEBUG is not set
- CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
- #
-@@ -1778,7 +1777,7 @@
- # CONFIG_USB_ISIGHTFW is not set
- # CONFIG_USB_VST is not set
- CONFIG_USB_GADGET=m
--CONFIG_USB_GADGET_DEBUG=y
-+# CONFIG_USB_GADGET_DEBUG is not set
- # CONFIG_USB_GADGET_DEBUG_FILES is not set
- # CONFIG_USB_GADGET_DEBUG_FS is not set
- CONFIG_USB_GADGET_VBUS_DRAW=2
diff --git a/kernel-bfs-2.6.28/debian/usbhost.diff b/kernel-bfs-2.6.28/debian/usbhost.diff
deleted file mode 100644 (file)
index 10729b7..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
---- rx51power_defconfig.old    2010-11-10 08:37:57.000000000 +0100
-+++ rx51power_defconfig        2010-11-10 09:44:58.000000000 +0100
-@@ -1,7 +1,7 @@
- #
- # Automatically generated make config: don't edit
- # Linux kernel version: 2.6.28.10power-omap1
--# Tue Nov  9 20:27:06 2010
-+# Wed Nov 10 09:44:58 2010
- #
- CONFIG_ARM=y
- CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-@@ -957,7 +957,24 @@
- # CONFIG_USB_KAWETH is not set
- # CONFIG_USB_PEGASUS is not set
- # CONFIG_USB_RTL8150 is not set
--# CONFIG_USB_USBNET is not set
-+CONFIG_USB_USBNET=m
-+CONFIG_USB_NET_AX8817X=m
-+CONFIG_USB_NET_CDCETHER=m
-+# CONFIG_USB_NET_DM9601 is not set
-+# CONFIG_USB_NET_SMSC95XX is not set
-+# CONFIG_USB_NET_GL620A is not set
-+CONFIG_USB_NET_NET1080=m
-+# CONFIG_USB_NET_PLUSB is not set
-+# CONFIG_USB_NET_MCS7830 is not set
-+# CONFIG_USB_NET_RNDIS_HOST is not set
-+CONFIG_USB_NET_CDC_SUBSET=m
-+# CONFIG_USB_ALI_M5632 is not set
-+# CONFIG_USB_AN2720 is not set
-+CONFIG_USB_BELKIN=y
-+CONFIG_USB_ARMLINUX=y
-+# CONFIG_USB_EPSON2888 is not set
-+# CONFIG_USB_KC2190 is not set
-+CONFIG_USB_NET_ZAURUS=m
- # CONFIG_WAN is not set
- CONFIG_PPP=m
- # CONFIG_PPP_MULTILINK is not set
-@@ -1612,8 +1629,8 @@
- CONFIG_USB_ARCH_HAS_OHCI=y
- CONFIG_USB_ARCH_HAS_EHCI=y
- CONFIG_USB=y
--# CONFIG_USB_DEBUG is not set
--# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-+CONFIG_USB_DEBUG=y
-+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
- #
- # Miscellaneous USB options
-@@ -1623,7 +1640,7 @@
- CONFIG_USB_DYNAMIC_MINORS=y
- CONFIG_USB_SUSPEND=y
- CONFIG_USB_OTG=y
--CONFIG_USB_OTG_WHITELIST=y
-+# CONFIG_USB_OTG_WHITELIST is not set
- # CONFIG_USB_OTG_BLACKLIST_HUB is not set
- CONFIG_USB_MON=y
- # CONFIG_USB_WUSB is not set
-@@ -1786,7 +1803,7 @@
- # CONFIG_USB_GADGET_DUMMY_HCD is not set
- CONFIG_USB_GADGET_DUALSPEED=y
- CONFIG_USB_ZERO=m
--# CONFIG_USB_ZERO_HNPTEST is not set
-+CONFIG_USB_ZERO_HNPTEST=y
- CONFIG_USB_ETH=m
- CONFIG_USB_ETH_RNDIS=y
- # CONFIG_USB_GADGETFS is not set
-@@ -1794,7 +1811,7 @@
- CONFIG_USB_FILE_STORAGE_TEST=y
- CONFIG_USB_G_SERIAL=m
- # CONFIG_USB_MIDI_GADGET is not set
--# CONFIG_USB_G_PRINTER is not set
-+CONFIG_USB_G_PRINTER=m
- # CONFIG_USB_CDC_COMPOSITE is not set
- CONFIG_USB_G_NOKIA=m
- CONFIG_USB_G_SOFTUPD=m
-@@ -1808,7 +1825,7 @@
- CONFIG_TWL4030_USB=y
- CONFIG_USB_IP_COMMON=m
- CONFIG_USB_IP_VHCI_HCD=m
--# CONFIG_USB_IP_HOST is not set
-+CONFIG_USB_IP_HOST=m
- CONFIG_MMC=m
- # CONFIG_MMC_DEBUG is not set
- CONFIG_MMC_UNSAFE_RESUME=y